MDB. IF, SWITCH, DECODE

(DB) MDB 2017. 11. 27. 22:14

[ MDB. IF, SWITCH, DECODE ]

 

1. IF문은 IIF 로 명기 됨

    - 예)

  

 

   - IIF문 사용시 연속가능횟수

      IIF (비교문1, TRUE, (IIF(비교문2, TRUE, (IIF ... ) )))

      위와 같이 연속으로 IIF문장은 최대  9번 가능

 

2. SWITCH

    - 예)    

    

 

   - SWITCH 내부 비교연산자 연속가능횟수 최대는 15회 까지 가능

 

3. DECODE

    - DECODE는 별도로 없고 SWITCH 문장으로 가능

Posted by 농부지기
,

[ MDB. 여러개 JOIN하기 ]

 

1. 정의

    - MDB에서 inner join을 여러개 사용하려면 오류가 발생한다.

      아래처럼 () 괄호를 활용해서 하면 가능하다.

 

2. 예제

   

Posted by 농부지기
,

[Nexa.Dataset] 컬럼정보 복사

 

1. 정의

    . A라는 Dataset의 컬럼정보를 B라는 Dataset에 복사하기

 

2. 종류1

    . copyData() 함수를 이용

    . columnInfo라는 속성을 이용하면 속도가 느릴 수 있음.

      그래서 copyData()라는 함수를 이용해서 컬럼정보를 복사

      이때 filter를 이용해서 A.dataset의 레코드는 모두 숨긴 후 copyData()를 수행

    . 단점 : 원본 Dataset에 filter 함수를 사용해야 됨

    . 장점 : 속도가 빠름

 

3. 종류2

    .  getColCount()와 getColumnInfo()함수를 이용해서  컬럼ID 등을 얻은 후

       target Dataset에 addColumn()함수 방식으로 컬럼을 추가 하기

    . 단점 : 속도가 느림

    . 장점 : filter()함수를 사용하지 않음.

 

4. 소스 - copyData()함수 방식   

   

 

5. 소스 - getColumnInfo()함수 방식

'Nexacro-Dataset > Copy' 카테고리의 다른 글

Nexacro.Dataset - copy 기본문법  (0) 2017.06.30
Nexacro Dataset - rowCopy(), rowData() - 복사  (0) 2017.01.22
Posted by 농부지기
,

[ Hot deploy,  DynamicLoading, java,class 자동반영 ]

 

 

1. 정의

    . Tomcat 실행 중 java 소스가 변경 시 Tomcat을 restart하지 않고 java소스가 바로 반영

 

2. 방법

    . springloaded-1.2.8.RELEASE.jar  (2018.08.27일 최신)

       - 파일을 down받은 후 특정 폴더 위치시킴

 

    . Eclipse > Tomcat > double click

      -> Open launch configuration  클릭

      -> [Arguments] Tab

      -> VM arguments에 아래 속성 추가

          -javaagent:c:/GDMiStudio/springloaded-1.2.5.RELEASE.jar -noverify

      -> [OK]

 

      -> [Publishing]

           (o) Automatically publish when reosurce change   를 선택

      -> [저장]

 

      참고] VM arguments 전체 예문

            -Dserver.name=LocalTomcat
            -DinstanceNumber=01
            -Dspring.profiles.active=local
            -XX:+TieredCompilation 
            -XX:TieredStopAtLevel=1
            -Xverify:none
            -javaagent:C:\PJT\server\bin\spring\lib\springloaded-1.2.8.RELEASE.jar
            -noverify

 

3. 추가적용예

    -> VM arguments에 추가 속성 정의

         -Ddynamicloading=verbose;onDemand;inclusions=aaa.bbb.ccc..*,aaa.bbb.ddd..*

 

파라미터 초기값 Description

onDemand

false 요청이 있을 때에만 동작 하도록 할 것인지 여부
(설정이 되어 있으면 Watcher 쓰레드를 기동하지 않음.)
scanInterval 1100 모니터링 주기 (milliseconds)
onDemand 옵션이 true 일 경우 무시됨(0으로 설정)
inclusions 포함시킬 패키지 패턴 명
(설정되어 있지 않으면 모든 패키지를 포함함 – 기본제외패키지는 제외)
exclusions 제외시킬 패키지 패턴 명
verbose false Verbose 모드
explain false 재로딩 실패 시 원인을 로그로 출력할 것인지 여부

 

  

 

Controller/Servlet 설정

remote 환경에서 클래스 dynamic loading 요청을 받기 위해 Controller 또는 Servlet이 필요하다. (둘 중 선택)

Spring Controller

아래와 같이 DynamicLoadingManager와 관련 Controller bean 설정을 추가한다.
여기서 ”/dynamicloading/execute”와 ”/dynamicloading/state”는 관련 요청을 받는 URL이 된다.  

 

 

Servlet

제공되는 서블릿에 @WebServlet 설정이 내장되어 있으므로, Servlet3.0을 지원하는 WAS의 경우 별도의 Servlet 설정이 필요없다.
제공되는 URL은 위 Controller와 동일하다.

 

 

참조 : https://github.com/spring-projects/spring-loaded

Posted by 농부지기
,

[ mdb 암호 확인하기 ]

 

1. mdb 암호를 알아내기

 

2. 첨부파일   accesspv-apxkfwhgdk.zip  를 down받은 후

    압축을 해제하고 [accesspv.exe]파일을 실행

 

3. 그러면 아래와 같은 창이 나온다.

   

 

4. 위 창으로 원하는.mdb 파일을 drag & drop해서 옮겨 놓으면

    창 내부에 암호가 보인다.

Posted by 농부지기
,

[ Dataset 튜닝4 - alasql ]

 

1. 정의

    . alasql이라는 library를 사용해서 dataset의 filter()함수를 사용하지 않고,

      json객체, alasql library를 이용해서 구현할 수 있다.

 

2. 장점 : dataset의 filter()함수를 사용하면 속도가 느리기(?)때문에 
              json 객체와 alasql이라는 기능을 사용해서 속도를 향상시킨다.

 

3. 단점 : dataset정보가 변경 시 json객체의 값도 동기화 시켜줘야 된다.

 

4. nexa에서 alasql library사용방법

    a. [alasql.min.json]과 [[alasql.min.js] 파일 2개를 웹에서  다운로드 받아 아래 경로에 위치시킴

         - C:\HCG\workspace\gdmi\src\main\nxui\nexacro14lib\component

    b. Edti TypeDefinition > [Modules] Tab

        - [alasql.min.json] 명칭추가

        - [...] 눌러  'alasql.min.json' 파일을 연결 시킴

 

9. 소스

    

 

 

'Nexacro-이론 및 튜닝 > dataset.grid.튜닝' 카테고리의 다른 글

Grid 튜닝5 - refreshBody  (0) 2017.12.05
Dataset 튜닝3 - set,get  (1) 2017.11.15
Dataset 튜닝2 - Hashmap방식  (0) 2017.11.15
Dataset 튜닝1 - 정의  (0) 2017.11.15
Posted by 농부지기
,

[ Dataset 튜닝3 - set,get ]

 

 

1. 정의

    . 한 Action으로 get, set을 수백,수천번이상을 수행해야 되는 경우가 존재할 경우

      nexa의 ds.getColumn(), ds.setColumn()함수를 사용한다면 속도가 너무 오래 소요된다.

     

2. 개선방법 - 종류 1

    1. ds.getColumn(), ds.setColumn()함수를 꼭 사용해야 된다면

        함수를 호출할 때 column id를 호출하는게 아니고, column Index로 호출한다.

        nexa특성상 column id보다 column index를 넘기게 되면 속도가 향상된다.

     2. nexa core 속성  _index를 사용

         예) var nColId = ds.getColumnInfo("컬럼명")._index;

               ds.getColumn(0, nColId);

     3. 컬럼index정보를 위 방식이 아닌 자료조회 후 hashmap을 생성해서 index정보를 활용하기

         예) //dataset에 대한 컬럼정보를 hashmap생성

             

              //hashmap정보를 이용해서 dataset에서 값을 get, set하기

              this.ds_detail.getColumn(0, this.oDetailColIdx["컬럼명"] );

              this.ds_detail.setColumn(0, this.oDetailColIdx["컬럼명"], "값1" );

 

2. 개선방법 - 종류 2

    1. 사용자에 의해 값 변경등으로 dataset의 get, set을 상당히 많이(?약 몇천번)을 수행해야 된다면

        ds.getColumn(), ds.setColumn()함수가 아닌,

        -> _rawRecords, _viewRecords 인 nexa core함수를 사용한다.

    2. 이슈 : 아래 saveXML() 함수결과를 보면 값이 변경 되지 않았다.- 아쉽다.

                 하지만 transaction처리 후 서버에서보면 변경된 컬럼값을 받아 볼 수 있다.

                    -> 이건 내가 직접테스트해보지는 못했음.

       

'Nexacro-이론 및 튜닝 > dataset.grid.튜닝' 카테고리의 다른 글

Grid 튜닝5 - refreshBody  (0) 2017.12.05
Dataset 튜닝4 - alasql  (0) 2017.11.15
Dataset 튜닝2 - Hashmap방식  (0) 2017.11.15
Dataset 튜닝1 - 정의  (0) 2017.11.15
Posted by 농부지기
,

[ Dataset 튜닝2 - Hashmap방식 ]

 

1. 정의

    1. dataset의 findRow()함수를 사용하지 않고

        -> pk형태로 javascript의 Hashmap기능을 이용해서 row Hashmap을 생성한다.

            그런후 row를 찾을 때  Hashmap에서 row를 찾아 온다.


2. 이유

    . 특정 로직등에서 dataset의 findRow()함수를 사용해야 될경우

       data 수가 적을 경우에는 문제가 없지만 상당히 많은 data가 존재하고

사용자에 의해 값 변경등으로 dataset의 findRow()함수를 아주 많이(?약 몇백번) 수행해야 된다면

       findRow()를 사용하지 않고

       -> pk형태로 javascript의 Hashmap기능을 이용해서 row Hashmap을 생성한다.

            그런후 row를 찾을 때  Hashmap에서 row를 찾아 온다.

 

 

3. 개발방법

    1. 서버에서 dataset을 조회

    2. callback()함수에서 아래 script처럼 pk기준으로 Hashmap을 만든다.

    3. 그런 후 ds.findRow()함수를 사용하지 않고, Hashmap의 객체를 생성한다.

    4. 계산등을 수행하기 위해 findRow()를 사용할 때 Hashmap객체를 이용해서 row를 찾아 온다.

4. Hashmap 생성 script

    

 

5. row를 얻는 예제

    즉, 조회한 dataset의 자료가 시도별, 구를 관리하는 레코드인 경우

     Hashmap에 '대한민국,서울,구로구' 와 같이 입력을 하면 바로 row를 찾아 온다.

    

 

6. 참고

    서버에서 자료를 조회 후 5만건 이상이여도 Hashmap을 만드는 시간을 극히 잛은 시간이 소요된다.

    하시만 경험상으로 상당히 많은 findRow()함수를 이용해서 개발할 때 약30초 걸리던 시간이

    Hashmap을 이용해서 row를 찾아 오게 되니 약 0.3초 정도 시간이 소요 됐다.

'Nexacro-이론 및 튜닝 > dataset.grid.튜닝' 카테고리의 다른 글

Grid 튜닝5 - refreshBody  (0) 2017.12.05
Dataset 튜닝4 - alasql  (0) 2017.11.15
Dataset 튜닝3 - set,get  (1) 2017.11.15
Dataset 튜닝1 - 정의  (0) 2017.11.15
Posted by 농부지기
,

[ Dataset 튜닝1 - 정의 ]

 

1. 정의

    . 레코드가 많고(약 5만건), 화면에서 계산이 엄청(?)많을 경우 Dataset의 처리 속도가 너무 느리다.

    . tobe제품이 개발하기는 너무 좋지만 대용량처리에 많은 이슈가 있다.

    . 그래서, tobe의 component만 사용하고 속도를 위해서는 tobe core함수,속성 및 순수javascript문법을 사용해서 개발해야 된다.

 

2. 속도 개선 종류

    1. 사용자에 의해 값 변경등으로 dataset의 findRow()함수를 상당히 많이(?약 몇백번) 수행해야 된다면

        findRow()를 사용하지 않고

        -> pk형태로 javascript의 Hashmap기능을 이용해서 row Hashmap을 생성한다.

            그런후 row를 찾을 때  Hashmap에서 row를 찾아 온다.

 

    2. 사용자에 의해 값 변경등으로 dataset의 get, set을 상당히 많이(?약 몇천번)을 수행해야 된다면

        ds.getColumn(), ds.setColumn()함수가 아닌,

        -> _rawRecords, _viewRecords 인 nexa core함수를 사용한다.

 

    3. 상당히 많은 Row(약 5만 row이상)일 때 set_filterstr()함수를 사용하면 약 1~2초 정도

        grid를 그리는데 소요되므로 set_filterstr()함수를 사용하지 말고

        -> alasql이라는 기능을 사용하여 dataset의 일정 구간을 가져와 handling한다.

             이 alasql은 json객체를 만들어서 사용해야 된다.

 

 

'Nexacro-이론 및 튜닝 > dataset.grid.튜닝' 카테고리의 다른 글

Grid 튜닝5 - refreshBody  (0) 2017.12.05
Dataset 튜닝4 - alasql  (0) 2017.11.15
Dataset 튜닝3 - set,get  (1) 2017.11.15
Dataset 튜닝2 - Hashmap방식  (0) 2017.11.15
Posted by 농부지기
,

[Nexa] Explorer 띄우기. JSP호출하기

 

 

1. ActiveX 컴포넌트에 MSIE를 연결하여 익스플러러 창 띄우기

   - ActiveX00.Navigate("about:blank");

   - ActiveX00.Navigate("javascript:window.open('http://daum.net','MISHelp','width=1024,height=768,scrollbars=1')");

 

Posted by 농부지기
,