1. 이미지 팝업조회의 사용 용도

   : 데이타 처리를 할 때 제품코드는 계속 변하는데 그 제품코드에 대한 이미지을 바로 조회하고 싶을 경우 사용가능하다.

     그 제품코드가 조회가능한 인터넷 URL이 있어야 가능하긴 하다.

     제품분석 시 옆의 입고수량, 판매수량, 판매율 등의 데이터와 이미지를 같이 보고자 할 경우 사용할 수 있다.


2. 구현방법

   1) 먼저 두개정도의 의류회사 쇼핑몰(SSF, LF)에서 이미지의 URL을 살펴본다.

      - 이미지 오른쪽 클릭 후 "이미지 주소 복사"를 한 후 notepad를 열어 주소를 붙여넣어본다.



위 주소를 복사하여 정리한 내용은 아래와 같다.

SSF샵

http://img.ssfshop.com/cmd/LB_477x630/src/http://img.ssfshop.com/goods/ORBR/18/09/10/GPD118091057263_0_ORGINL.jpg

http://img.ssfshop.com/cmd/LB_477x630/src/http://img.ssfshop.com/goods/ORBR/18/09/10/GPD118091057264_0_ORGINL.jpg

http://img.ssfshop.com/cmd/LB_477x630/src/http://img.ssfshop.com/goods/ORBR/18/09/10/GPD118091057194_0_ORGINL.jpg

http://img.ssfshop.com/cmd/LB_477x630/src/http://img.ssfshop.com/goods/ORBR/18/09/10/GPD118091057188_0_ORGINL.jpg


LF몰

http://img.lfmall.co.kr/file/product/prd/C384/2018/320/CNTS8FL12BK_00.jpg?1535421972000

http://img.lfmall.co.kr/file/product/prd/C096/2018/320/CNTS8FR15BK_00.jpg?1534744997000

http://img.lfmall.co.kr/file/product/prd/C015/2018/320/ATTS8B107WT_00.jpg?1523840718000

http://img.lfmall.co.kr/file/product/prd/DL/2018/320/DLTS8B393BK_00.jpg?1523844122000



오늘은 URL 전체를 붙여넣어 이미지 팝업 띄우는 기능만 구현하겠음.

아래와 같이 제품 이미지 URL을 엑셀에 붙여넣는다.


  2) 클릭이벤트 캐치를 위해 엑셀파일의 개발도구 > Visual Basic 을 클릭하여 VBA편집메뉴로 들어간다. (이전 게시물 참조)

      그런다음 클릭 이벤트 함수생성을 위해 worksheet 선택 --> SelectionChange 를 선택하면 자동으로 

      함수의 기본형태가 나타난다.

      함수의 형태가 나타나면 우리가 만들 모듈 內 사용자지정 함수을 호출하는 구문을 넣어준다.

      

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

      Call Worksheet_SelectionChange1(Target)  ' 이 구문을 추가해준다. 아래쪽에서 이 명칭으로 Module에 만들 예정임.

End Sub 


 


  3) UserForm과 Module 을 하나씩 만든다.



  4) Module을 더블클릭하면 Form이 나오는데 마우스로 사이즈를 적당히 조절하자.

      그런다음 웹브라우저 모듈을 붙여넣어야 하는데...기본 도구상자에 없다.

      기본도구상자에 없으면 아래 이미지를 참고하여 웹브라우저 모듈을 추가하고, Form1에 브라우저모듈을 추가해본다.

    


  5) Module1을 클릭하여 Module 내 위에서 사용하기로 한 함수명으로 함수를 만든다.     

Sub Worksheet_SelectionChange1(ByVal Target As Range)  '함수는 sub로 시작하여 end sub로 끝난다.


   Application.DisplayAlerts = False


    'URL이 없는데 팝업이 뜨는것을 방지하기 위한 설정을 앞부분에 처리함.

    If Selection.Cells.Count > 1 Then Exit Sub  '두 컬럼 이상 선택된 경우는 실행 안한다.

    If Len(RTrim(Target.Value)) = 0 Then Exit Sub  '값없으면 실행안함.    


      UserForm1.Show 0  '만들어진 UserForm1 보이게 된다.

      

      prdtUrl = Target.Value  ' 마우스 클릭한 위치가 Target이다.

      

      UserForm1.WebBrowser1.Navigate (prdtUrl) 'UserForm1 의 브래우저 모듈에 클릭한 이미지 Url을 설정한다.


      UserForm1.Move 700 ' 팝업이미지가 적절한 위치에 보이게 하기위해 움직여준다.(오른쪽으로 이동)


End Sub


3. 그럼 테스트를 해보자.

   : 엑셀의 URL컬럼을 클릭 시 오른쪽에 팝업으로 해당 URL의 이미지가 조회된다.



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

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



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

+ Recent posts