1. 최초 등록, 최종 수정에 대한 정보관리

  : 프로그램을 처리하다보면 데이타의 최초 등록자/등록일자와 최종 수정자/수정일자를 관리해야만 할일이 많다.

    이럴때 Axboot에서는 자동으로 관리할 수 있도록 이미 구현해 놓은 BaseJpaModel class를 사용하기만 하면 된다.


2. 처리방법

   1) 제품테이블에 컬럼 생성

     : 먼저 등록/수정정보를 관리할 수 있는 컬럼을 대상테이블에 만든다. 여기서는 기존에 만들었던 제품테이블에 

       만들도록 한다. 쉽게 만들기를 원한다면 기존에 기본적으로 만들어져있는 menu_m 테이블에 있는

       4개의 컬럼인 CREATED_AT(등록일시), CREATED_BY(등록자), UPDATED_AT(수정일시), UPDATED_BY(수정자)을 

       열복사 후 제품테이블에 붙여넣으면 된다.


- menu_m테이블에서 복사


- 제품정보 붙어넣기


3. Product.java 수정

package com.dasdes.shopmng.domain.prdt;


import com.chequer.axboot.core.annotations.ColumnPosition;

import com.dasdes.shopmng.domain.SimpleJpaModel;

import lombok.*;

import org.apache.ibatis.type.Alias;

import org.hibernate.annotations.DynamicInsert;

import org.hibernate.annotations.DynamicUpdate;

import com.chequer.axboot.core.annotations.Comment;

import javax.persistence.*;

import javax.validation.constraints.NotNull;

import com.dasdes.shopmng.domain.BaseJpaModel;  //BaseJpaModel 추가



@Setter

@Getter

@DynamicInsert

@DynamicUpdate

@Entity

@EqualsAndHashCode(callSuper = true)

@Table(name = "prdt_base")

@Comment(value = "")

@Alias("product")

//기존에 SimpleJpaModel로 되어있던 부분을 BaseJpaModel 로 수정한다.

public class Product extends BaseJpaModel<String> {   


@Id

@Column(name = "prdt_cd", length = 50, nullable = false)

@NotNull(message = "제품코드를 입력하세요")   //pk이므로 not null 체크 추가

@Comment(value = "제품코드")

private String prdtCd;


@Column(name = "prdt_nm", length = 50, nullable = false)

@Comment(value = "제품명")

private String prdtNm;


@Column(name = "origin", length = 50, nullable = false)

@Comment(value = "원산지")

private String origin;


@Column(name = "purchase_price", precision = 10, nullable = false)

@Comment(value = "매입가격")

private Integer purchasePrice;


@Column(name = "sales_price", precision = 10, nullable = false)

@Comment(value = "판매가격")

private Integer salesPrice;



    @Override

    public String getId() {

        return prdtCd;

    }



4. 결과

  1) 화면에서 원산지 수정 및 신규제품을 추가해본다.


  2) 테이블에서 확인해본다.

     : 이미 BaseJpaModel 에 모두 구현되어있어 별다른 손을 대지 않고도 아래와 같이 생성 또는 수정정보가 정상적으로

       갱신되고 있는것을 볼 수 있다.


       

만족하셨나요? ~~~~~~~

1. 구글 애드센스 가입

   1) 일단 코드를 삽입할 수 있는 tistory나 가상서버에 컨텐츠를 운영할 수 있도록 준비한다.

       * 중요 : 구글 애드센스 신청을 하기 전에는 무조건 게시물 3000자 이상되는 게시물을 15개 이상 올려놓아야

                  신청시 승인가능성이 높아진다.(저의 경우)


   2) 준비가 다 되었을 경우 애드센스에 접속하여 가입한다.

       - 접속주소 : http://www.google.co.kr/adsense/start

       - "지금 가입하기"를 눌러 가입정보를 입력한다.


- 가입정보 입력 : 본인 사이트의 URL, 이메일 주소, 아래 원하는 옵션을 선택하고 "저장하고 계속하기" 버튼을 누른다.



      3) 주소입력,약관동의 등을 하고나면 본인이 입력한 이메일 주소로 아래와 같은 메일로도 발송되며, 

          애드센스 사이트 로긴시 "애드센스에 사이트 연결 부분"에서 아래에 적힌 연결코드가 표시됩니다.

 



   4) 진짜 본인의 사이트인지를 확인하기 위해 메일에 첨부된 "사이트와 애드센스 연결" 하단의 script를 본인 홈페이지

       초기화면의 <head> </head>사이에 붙여넣는다.

      - tistory에서는 관리자 메뉴 왼쪽의 꾸미기>스킨편집을 클릭하면 오른쪽 상단에 html편집 버튼을 클릭하면 됨.

       

 <head>

   <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>

    <script>
     (adsbygoogle = window.adsbygoogle || []).push({
     google_ad_client: "ca-pub-1234567890111213",  //이 코드는 본인의 코드 입력
     enable_page_level_ads: true
     });
    </script>
</head>


   5) 코드를 본인사이트에 붙여넣었으면 아래와 같이 "코드를 사이트에 붙여넣었습니다." 체크 후 완료버튼을 클릭한다.

       여기까지만 하고 사이트 승인을 대기하면 된다.



2. 조금 더 승인확율을 높게 하기 위한 활동

  1) 구글 애널리틱스 연결 

   a) 주소 : https://analytics.google.com/ 

    b) 추적코드 생성 : 설정 > 계정만들기 버튼을 클릭하고 아래와 같이 본인의 사이트 정보를 입력한 후 추적코드 ID가져오기를 클릭한다.

   c) 본인만의 추적코드가 나오면 위 4번과 같이 본인 사이트의 <head> </head> html코드 사이에 입력한다.

      

 <head>

<!-- Global site tag (gtag.js) - Google Analytics -->

<script async src="https://www.googletagmanager.com/gtag/js?id=UA-1223456789-1"></script> //코드예시임

<script>

  window.dataLayer = window.dataLayer || [];

  function gtag(){dataLayer.push(arguments);}

  gtag('js', new Date());


  gtag('config', 'UA-123456789-1');  //코드예시임.

</script>

</head>


  2) google search console 에 속성추가 및 sitemap 등록

    a) google search console 주소 : https://www.google.com/webmasters/tools/home?hl=ko

    b) 속성에 본인 사이트 주소를 입력한 후 "추가"버튼 클릭

   c) 크롤링 > sitemaps 에서 site-map.xml 을 등록

      - site-map 생성방법

        : http://www.web-site-map.com/ 에 접속하여 우측에 본인의 사이트 주소를 입력하고 "Get Free XML MAP"

          버튼 클릭 후 다음 화면에서 1,2항목만 입력하고 "Create free XML Sitemap"을 클릭하면 

          sitemap.xml을 다운로드 받을 수 있다. 


                           다음화면


      - 본인 사이트에 sitemap.xml 파일을 서버에 등록한다. (tistory의 경우 새글에 비공개로 파일을 등록해놓는다.)

      - 등록된 파일의 URL을 확인한다. (아래는 tistory 예제)

  

    - 다시 google search console에서 위에서 만든 본인 사이트 주소로 들어가 크롤링 > sitemaps 에서 

       "SITEMAP 추가/테스트"버튼을 클릭한 팝업창이 뜨면 복사된 링크주소 중 본인의 URL을 제외한 나머지 부분을 

       아래 입력란에 입력하고 "제출"버튼을 클릭하면 된다.

       이렇게 입력을 하면 구글에서 검색이 잘 될 수 있도록 만들어준다.


       


   - 이 사이트맵은 네이버 검색노출도 잘 되게 하기 위한 "네이버웹마스터도구"에서도 그대로 등록가능하다.

     URL : https://webmastertool.naver.com/

     등록방법 : 먼저 본인 사이트를 등록한 후 등록된 사이트 클릭 > 요청 > 사이트맵 제출에서 위와 동일하게 처리하면 됨.


3. "계정활성화하기"가 무한 승인대기 될 경우 

    1) 아래사항에 걸리지 않는지 체크해본다.


- 콘텐츠 불충분

- 콘텐츠 품질 문제

      스크랩한 콘텐츠 

      자체 제작 콘텐츠가 거의 또는 전혀 없음

- 트래픽 소스의 문제

- 지원되지 않는 언어

- 콘텐츠 정책 위반

      성인용 콘텐츠

      가족용 콘텐츠에 포함된 성인 대상 주제의 내용

      위험하거나 경멸적인 콘텐츠 

      기분전환용 약물 및 마약 관련 콘텐츠

      주류 관련 콘텐츠

      담배 관련 콘텐츠

      도박 및 게임 관련 콘텐츠

      의료 관련 콘텐츠

      해킹 및 크래킹 관련 콘텐츠

      보상 프로그램을 제공하는 페이지

      부정확한 정보를 전달하는 콘텐츠

      충격적인 콘텐츠

 - 무기 관련 콘텐츠

 - 부정 행위를 돕는 콘텐츠

 - 불법 콘텐츠

- 사이트 탐색 문제 : sitemap


    2) 가능한한 글자수를 많이 차지할 수 있는 게시물을 추가한다.

    3) 위 sitemap 설정이 잘 되어있는지 체크한다.

    4) 그래도 계속 승인되지 않으면, 구글 애드센스 계정을 해지하고 다시 신청해본다. 

       : 설정>계정>계정정보


애드센스 등록은 여기까지 하겠습니다. 좋은결과 나오시길 바라겠습니다.



만족하셨나요? ~~~~~~~




1. 가상화폐 채굴 어렵지 않아요.(채굴방법)

   1) Minergate 사이트 접속 후 회원가입

      - Minergate는 검증된 유명한 무료채굴사이트이다. 

      - Minergate의 수익구조 : 사이트광고, 채굴시 사용자가 획득한 가상화폐에서 1% 또는 1.5%를 수수료로 가져간다.

        (채굴한다고 해서 사용자에게 추가적인 돈을 요구하지는 않는다.)

      - 주소 : https://minergate.com/



   - 간단히 이메일주소와 사용할 패스워드만 입력하면 가입가능




   2) 로긴 후 상단의 "Download"메뉴 클릭 후 본인에 맞는 설치버전을 다운로드 받는다.



  3) 다운로드 후 실행


  4) 마침을 클릭하고 실행하면 e-mail 입력창이 뜬다.

      : 회원가입시 입력했던 e-mail을 입력하고 Start mining을 클릭한다.


  

   -  실행된 화면 : 채굴을 원하는 가상화폐 옆에 Start mining 버튼을 클릭하면 됨

      (CPU 와 그래픽카드를 사용하는 GPU 로 동시에 채굴이 가능하다. - Start mining표시가 되어있으면 채굴가능)


   5) 채굴현황 확인하기

    - 웹사이트의 상단메뉴 "Dashboard"를 클릭하면 현재 채굴현황을 확인할 수 있다.

    - 채굴되고 있으면 연두색으로 표시

    - 가상화폐마다 본인계정으로 확정되어 넘어오는 단위가 다르다. 

       (Unconfirmed 옆 물음표에 마우스를 올리면 확정단위가 나옴)




만족하셨나요? ~~~~~~~


1. 시작일과 종료일 사이의 날짜를 계산하는 함수

   : 일반적으로 엑셀에서 날짜를 계산하기 위해서는 날짜 형식만 계산이 가능하다.

     텍스트형식(예. 20181231)으로 입력했을 경우는 일일이 년,월,일을 잘라서 날짜형식으로 만들어줘야한다.

     일반적인 업무에서는 날짜형식보다 텍스트형식이 많다.

     이럴때 나만의 날짜계산함수를 만들어 사용하면 편하게 해결할 수 있다.


2. 결과물

   : 먼저 결과물을 봐야 감이온다. 결과물은 다음과 같다.

3. 나만의 함수 만드는 순서

   1) 탐색기에서 마우스 오른쪽 클릭한 후 엑셀파일을 새로만든다.


   2) 생성된 엑셀파일을 열고 개발도구>Visual Basic > Microsoft Excel개체 오른쪽클릭 > 삽입 > 모듈 로

       새로운 모듈을 생성한다.


   3) 함수작성

      : 생성된 모듈에 아래를 작성한다.

'datedif1 : FROM 당일포함, TO포함한 날짜계산하는 함수 

' 함수명은 본인이 원하는대로 하면 된다.

' 두개의 입력값 :  시작일과 종료일

' <--홑땅옴표는 VB에서 주석으로 프로그램돌아갈때 실제프로그램에 영향을 주지 않는 주석을 표현할 때 사용한다.

' 함수는 Function으로 시작하는 구문을 사용하고, 끝에 End Function으로 닫는다. 그 사이에 원하는 프로그램을 구현하면 된다.

 Function datedif1(date2 As Variant, date1 As Variant)  


    '시작일자 date1의 길이가 8자이면 텍스트형태(예.20181231)로 입력한것으로 간주하고

    ' "-"(대시)가 들어간 날짜형태로 바꿔준다.

    If Len(date1) = 8 Then

       date1 = Mid(date1, 1, 4) & "-" & Mid(date1, 5, 2) & "-" & Right(date1, 2)

    End If

    

     '종료일자 date2의 길이가 8자이면 텍스트형태(예.20181231)로 입력한것으로 간주하고

    ' "-"(대시)가 들어간 날짜형태로 바꿔준다.

    If Len(date2) = 8 Then

       date2 = Mid(date2, 1, 4) & "-" & Mid(date2, 5, 2) & "-" & Right(date2, 2)

    End If


    '엑셀VBA에 있는 함수인 datediff 를 사용하여 두 날짜를 계산한다.

    '기본적으로 VBA의 datediff 함수만 사용하면 당일은 미포함하여 계산된다.

    getDate = datediff("d", date1, date2) + 1

        

    ' 중요 : 함수명인 datedif1 에 위에서 계산된 getDate를 리턴해주면 됨. 

    ' "일"자를 붙여도 되고 안붙이고싶으면 빼면 됨.

    datedif1 = getDate & "일"

        

End Function


'datedif2 : FROM 당일 미포함(다음날부터), TO포함 날짜계산

'내용은 위와 같은데 아래 getDate식에서 datediff 기본 VBA함수만으로 계산함.

Function datedif2(date2 As Variant, date1 As Variant)


    If Len(date1) = 8 Then

       date1 = Mid(date1, 1, 4) & "-" & Mid(date1, 5, 2) & "-" & Right(date1, 2)

    End If

    

    If Len(date2) = 8 Then

       date2 = Mid(date2, 1, 4) & "-" & Mid(date2, 5, 2) & "-" & Right(date2, 2)

    End If

     

    getDate = datediff("d", date1, date2)

        

    datedif2 = Int(getDate)

        

End Function


실제 사용할때는 동일파일 內 어디든지 일반 내장함수(예. sum, if 등)와 동일한 방식으로 사용이 가능하다.


FROM

TO

계산결과

수식

비고

2018-10-25

2018-10-30

6일

=DATEDIF1(C4,B4)

날짜형식입력 예시

20181022

20181031

10일

=DATEDIF1(C5,B5)

텍스트형식 입력, 당일포함 예시1

20181023

20181031

9일

=DATEDIF1(C6,B6)

텍스트형식 입력, 당일포함 예시2

20181024

20181031

8일

=DATEDIF1(C7,B7)

텍스트형식 입력, 당일포함 예시3

20181025

20181031

6

=DATEDIF2(C8,B8)

텍스트형식 입력, 당일이후 예시1

20171228

20180108

11

=DATEDIF2(C9,B9)

텍스트형식 입력, 당일이후 예시2



만족하셨나요? ~~~~~~~

1. VBA란 무엇인가?

  : 엑셀에 복잡한 프로그래밍(Visual Basic기반)을 적용하고자 할 때 사용합니다. 대신 이 VBA가 적용되어있는 엑셀은 

   다른이름으로 저장해서 확장자를 xlsm (통합매크로확장자)로 저장해야됩니다. (이전에는 바로 저장해도 사용가능했지만..)


2. 장점

  - 아주 복잡한 프로그램을 간단하고 가볍게 만든다. 

  - 수천,수십만 라인에서 관련된 수식을 잘못건드리면 연관된 수식이 작동해서 컴퓨터가 뻗어버린다.(자동계산시)

    VBA는 프로그래밍 코드만 저장되면 되므로 엑셀 內에 따로 수식이 들어갈 필요가 없다.

  - 수십만 라인이 있을 경우 일반적으로 가로 합계만 계산한다고 해도 수십만 컬럼에 동일한 수식이 들어가 있게 된다.

    이렇게 되면 수식Text를 모두 저장해야 가능하기에 파일용량이 매우 커진다.

     그러나 VBA를 사용하면 수식을 일일이 컬럼에 넣을필요가 없어 파일 용량이 작아진다.


3. VBA 추가기능 설치하기

   - 엑셀의 파일메뉴 > 옵션 > 팝업화면에서 추가기능 > 오른쪽하단 Excel추가기능 선택 후 "이동"버튼 클릭

     > 추가기능 창에서 "분석도구 -VBA" 선택 > 확인클릭

   - 이렇게 하면 엑셀 메뉴 상단에 "개발도구"메뉴가 생기는데 VBA를 편집할 수 있는 tool을 이용할 수 있다.


다음시간에는 나만의 Excel함수를 만들어 보도록 하겠습니다.



만족하셨나요? ~~~~~~~

+ Recent posts