728x90

 

너무 간단해서 결과부터 확인하고 방법은 밑에서 설명하겠습니다.

 

CMD(명평 프롬프트) 창을 열고 명령어를 > slmgr -xpr 입력 후 엔터를 치면 아래와 같은 알람창을 확인할 수 있습니다. 

 

 

 

# CMD(명평 프롬프트) 실행방법

    - 단축키 : Windows Key + R 실행

    - 윈도우 하단 검색입력 항목에 cmd 라고 입력하여 실행   

 

    - 하단 Windows Key 마우스 우클릭 > 실행 > cmd 입력하여 실행

 

 

만료기간 확인하고 기간내에 정품인증 받고 잘 사용하세요.

 

참고로 정품인증 방법은 아래와 같이 2가지가 있으니 참고하여 잘 해결하세요.

 

1. 정품 라이센스 구매

2. 크랙 이용하여 재인증

 

 

728x90
반응형

'UI > 참고정보' 카테고리의 다른 글

아이패드 모델(세대) 식별하기  (0) 2022.11.21
국내은행별 계좌번호 체계  (0) 2022.10.11
728x90

 

C:\sqlite\sqlite3.exe 를 관리자 권한으로 실행하면 아래와 같이 Command 창을 확인할 수 있다.

 

도움말을 보고 싶다면 .help 명령어를 사용한다.

sqlite> .help 

 

신규 설치하였으니 현재 만들어진 데이터베이스가 없다.

 

.open 명령어를 사용하여 데이터베이스를 접근해야하지만 없으니 내가 생성할 데이터베이스명을 입력하면

자동생성되고 접근이 가능하다.

나는 sealove3904.db 를 생성하고 접근해보겠다. 

 

sqlite> .open sealove3904.db

 

위 그림을 보면 sealove3904.db 파일이 생성된 걸 확인 할 수 있다.

 

내가 현재 연결된 데이터베이스를 확인할려면 

sqlite> .database

 

내가 연결된 데이터베이스에 테이블 목록을 확인하려면

sqlite> .tables

 

쉽죠..

 

테이블 생성(CREATE)

CREATE TABLE NEW_TBL (
	 SEQ INTEGER PRIMARY KEY
	,USER_NAME TEXT NOT NULL
	,USER_ID TEXT NOT NULL UNIQUE
	,EMAIL TEXT NOT NULL UNIQUE
);

생성된 데이블에 데이터 입력(INSERT).

INSERT INTO NEW_TBL (SEQ, USER_NAME, USER_ID, EMAIL)VALUES(1, '홍길동', 'hong', 'hong@gmail.com');
INSERT INTO NEW_TBL (SEQ, USER_NAME, USER_ID, EMAIL)VALUES(2, '김길동', 'kim', 'kim@gmail.com');

테이블 데이터 조회(SELECT)

SELECT * FROM NEW_TBL;

 

최종 결과를 확인해볼께요..

 

SQLite 종료는 

sqlite> .exit 

 

이상입니다. 

 

생각보다 너무 쉽네요..

 

 

728x90
반응형

'IT 인터넷 > SQLite' 카테고리의 다른 글

SQLite 다운로드 및 설치하기  (0) 2023.10.19
728x90

넥사크로 N 에서 SQLite 접속 후 조회할 일이 있어 사용하게 되었다.

 

다운로드는 아래 링크 참고..

 

SQLite Download Page

 

SQLite Download Page

Templates (1) and (2) are used for source-code products. Template (1) is used for generic source-code products and templates (2) is used for source-code products that are generally only useful on unix-like platforms. Template (3) is used for precompiled bi

www.sqlite.org

 

 

1. 아래 이미지와 같이   Precompiled Binaries for Windows > sqlite-tools-win32.....zip 파일을 다운로드한다.

 

2. 다운로드한 파일을 아래 경로와 같이 압축을 푼다.

 

3. sqlite3.exe 관리자 권한으로 실행하면 아래와 같이 확인이 가능하다.

 

 

간단하네요..

 

다음엔

데이터베이스 생성(CREATE), 테이블 생성(CREATE), 데이터 입력(INSERT), 데이터 조회(SELECT) 까지 알아볼께요.

728x90
반응형
728x90

 

### 소수점을 버리고 3자리 콤마단위, 값이 없을 경우 0 으로 표시하는 방법

 

> 샘플데이터 : 123456789.987

> 출력데이터 : 123,456,789
> dataset column type 이 STRING, BIGDECIMAL, FLOAT 일 경우

<Cell displaytype="mask" edittype="none" text="bind:stringValue" maskeditformat="###,##0"/>

 

> 샘플데이터 : 123456789

> 출력데이터 : 123,456,789
> dataset column type 이 INT 일 경우

<Cell displaytype="mask" edittype="none" text="bind:stringValue" maskeditformat="###,##0"/>

 

### [수정모드] 소수점을 버리고 3자리 콤마단위, 값이 없을 경우 0 으로 표시하는 방법

 

> 샘플데이터 : 123456789

> 출력데이터 : 123,456,789
> dataset column type 이 STRING, INT, BIGDECIMAL, FLOAT 일 경우


<Cell displaytype="mask" edittype="mask" text="bind:bigValue" maskeditformat="###,##0" maskedittype="number"/>

 

728x90
반응형

'Nexacro(넥사크로) > - Component(Grid)' 카테고리의 다른 글

Nexacro Grid Cell - 달력, 날짜  (0) 2022.12.16
Nexacro Grid Cell - 이미지  (0) 2022.12.16
728x90


<Cell displaytype="calendarcontrol" edittype="date" text="bind:calendar" calendardateformat="yyyy-MM-dd"/>
<Cell displaytype="date" edittype="date" text="bind:date" calendardateformat="yyyy-MM-dd"/>
<Cell displaytype="date" edittype="date" text="bind:date" calendardateformat="yyyy-MM-dd ddd"/>

 

728x90
반응형

'Nexacro(넥사크로) > - Component(Grid)' 카테고리의 다른 글

Nexacro Grid Cell - 숫자 표현  (0) 2022.12.21
Nexacro Grid Cell - 이미지  (0) 2022.12.16
728x90


Grid Cell Tag : 

<Cell displaytype="imagecontrol" text="bind:img" imagestretch="fixaspectratio"/>
<!-- [Cell 참고 옵션] Action > edittype : none -->
728x90
반응형

'Nexacro(넥사크로) > - Component(Grid)' 카테고리의 다른 글

Nexacro Grid Cell - 숫자 표현  (0) 2022.12.21
Nexacro Grid Cell - 달력, 날짜  (0) 2022.12.16
728x90

넥사크로 스튜디오에서 작성하는 기본 코드를 공유한다.

 

 

/**
 * @file XXXXXXXXF00.xfdl
 * @author XXX
 * @since 2022.11.04
 * @description XXXXXXXXXXXXXXXXX
 ************** 소스 수정 이력 ***********************************************
 *  date            Modifier                Description
 *******************************************************************************
 *  2022.11.04      XXX                     최초 생성
 *
 *******************************************************************************
**/

/************************************************************************************************
 * include 영역(업무화면에서 꼭 필요한 경우에만 사용, 미사용 시 include 영역 제거)
************************************************************************************************/

/************************************************************************************************
 * FORM 변수 선언 영역
************************************************************************************************/
this.XXXXXX = 0;

/************************************************************************************************
 * FORM EVENT 영역(onload, onbeforeclose 등)
************************************************************************************************/
/**
 * @description 화면 onload시 처리내역(필수)
**/
this.form_onload = function(obj:nexacro.Form,e:nexacro.LoadEventInfo)
{
    // 폼 공통기능 초기화
    this.gfnInitForm();
    
    // 공통코드 바인딩
    // 폼초기화
};

/**
 * @description 폼 초기화
**/
this.fnInitForm = function ()
{
    // 조회조건 영역 기본설정
    this.dsSearch.setColumn(0, "USE_YN", "Y");
    
    // dataset validation ruleset
    this.gfnSetValidRule(this.dsForm, "CONTENTS" , "내용"       , "required, maxlengthbyte:4000");
    this.gfnSetValidRule(this.dsForm, "FILE_SIZE", "파일사이즈" , "required");
    
    // 조회
    this.fnTransaction('조회(search)');

};

/************************************************************************************************
 * CRUD 및 TRANSACTION 서비스 호출 처리
************************************************************************************************/
/**
 * @description 트랜잭션
**/
this.fnTransaction = function (svcId)
{
    let sSvcId    = svcId;
    let sSvcUrl   = "app/service/" + svcId;
    let sInDS     = "";
    let sOutDS    = "";
    let sArg      = "";
    let sCallback = "fnCallbackTransaction";
    
    switch (sSvcId) {            
        case "상세조회(search)" : 
            sInDS     = "dsSearch";
            sOutDS    = "dsList";
            break;
            
        case "조회(search)" : 
            
            // 업로드 가능파일 초기화
            this.fnExtGridInit();
            this.dsOrg.clearData();
            this.dsUser.clearData();
            
            sInDS     = "dsSearch";
            sOutDS    = "dsForm dsUpldExtn dsOrgUser";
            break;
            
        case "저장(save)" : 
            sInDS     = "dsForm dsUpldExtn dsOrgUser dsOrg dsUser ";
            sOutDS    = "";
            break;
            
        default :
            break;
    }
    
    // 서비스 트랜잭션 호출
    this.gfnTransaction(sSvcId, sSvcUrl, sInDS, sOutDS, sArg, sCallback, true);
    
};

/************************************************************************************************
 * CALLBACK 처리부분 (C/R/U/D Transaction, Common Code, Popup, Message, Excel Export/Import)
************************************************************************************************/
/**
 * @description gfnTransaction CallBack 함수
**/
this.fnCallbackTransaction = function(serviceId, responseCode, responseMessage)
{
    // 에러 시 화면 처리 내역
    if (responseCode != 0) {
        this.gfnAlert(responseMessage);
        return;
    }

    switch (serviceId)     {
        case "상세조회(search)" : 
            // TODO
            break;
        
        case "조회(search)" : 
            // TODO
            break;
            
        case "저장(save)" : 
            this.gfnAlert('save.success');
            // TODO
            break;
    
        default :
            break;
    }
};

/**
 * @description Message CallBack 함수
**/
this.fnCallbackMessage = function(messageId, resultValue)
{
    switch (messageId) {
        case "btnSearch" : 
            if (resultValue) {
                // TODO
            }
            break;
            
        case "btnNew" : 
            if (resultValue) {
                // TODO
            }
            break;
            
        case "btnDel" : 
            if (resultValue) {
                // TODO
            }
            break;
            
        case "btnSave" : 
            if (resultValue) {
                // TODO
            }
            break;

        case "XXXXXXX" : 
            if (resultValue) {}
            break;
            
        default :
            break;
    }
};

/**
 * @description fnOpenPopup CallBack 함수
**/
this.fnCallbackPopup = function(popupId, resultValue)
{
    switch (popupId) {
    
        case "부서팝업" : 
            if ( !this.gfnIsEmpty(resultValue) ) {
            
                let aResultLength  = resultValue.cuscOrgNo.length;
                
                for(let i=0 ; i<aResultLength; i++){
                    let sOrgNo = resultValue.orgNo[i];
                    let sOrgNm = resultValue.orgNm[i];

                    if(this.dsOrgUser.getCaseCount("ORG_NO == '"+sOrgNo+"'") < 1){
                        let nAddRow = this.dsOrgUser.addRow();
                        this.dsOrgUser.setColumn(nAddRow,"ORG_NO",sOrgNo);
                        this.dsOrgUser.setColumn(nAddRow,"ORG_NM",sOrgNm);
                    }
                } // end for
            }
            break;
            
        case "사용자팝업" : 
            
            if ( !this.gfnIsEmpty(resultValue) ) {
                let nAddRow = this.dsOrgUser.addRow();
                this.dsOrgUser.setColumn(nAddRow,"USER_ID",resultValue.userId);
                this.dsOrgUser.setColumn(nAddRow,"USER_NM",resultValue.userNm);
            }
            break;
            
        case "XXXXXXXXX" :    // XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
            break;
            
        default :
            break;
    }
};



/************************************************************************************************
 * 사용자 FUNCTION 영역
************************************************************************************************/
/**
 * @description 입력폼 초기화
**/ 
this.fnFormInit = function(){
};

/**
 * @description 업로드 가능파일 그리드 초기화
**/ 
this.fnExtGridInit = function(){
};

/**
 * @description 입력폼 생성.
**/ 
this.fnNewForm = function(){
};

/**
 * @description 총건수
**/

/**
 * @description 팝업호출
**/
this.fnOpenPopup = function (popupId, param)
{
    let sPopupId  = popupId;
    let sUrl      = "business::sys/" + sPopupId + ".xfdl";
    let oArgument = param;
    let sCallback = "fnCallbackPopup";
    let oOption   = {};
    
    switch (sPopupId) {
        case "부서" : 
            oOption = {title : "조직팝업", width : 710, height : 550};
            break;
        case "사용자" :
            oOption = {title : "상담사조회팝업", width : 800, height : 550};
            break;

        default :
            break;
    }
    
    this.gfnOpenPopup(sPopupId, sUrl, oArgument, sCallback, oOption);
};

/************************************************************************************************
 * 각 COMPONENT 별 EVENT 영역
************************************************************************************************/
/**
 * @description DATASET CANROWPOSITION 변경 이벤트
**/
this.dsList_canrowposchange = function(obj:nexacro.NormalDataset,e:nexacro.DSRowPosChangeEventInfo)
{
    let boardNo = this.dsList.getColumn(e.newrow, "BOARD_NO");  //템플릿번호

    if ( !this.gfnIsEmpty(boardNo) ) {
        this.dsSearch.setColumn(0, "BOARD_NO", boardNo);        
    }
    
    if ( this.gfnIsUpdated(this.dsForm) || this.gfnIsUpdated(this.dsOrgUser) ) {

            return this.gfnEventConfirm(e, "process.nosave", ["폼(FORM)"]
                                         , function(id,response) {
                                                if(response){
                                                    this.fnTransaction('조회(search)');
                                                }
                                           }
                                         , "dummyArgv");
            
    }else{
        this.fnTransaction('조회(search)');
    }

};

/**
 * @description DATASET ROWPOSITION 변경 이벤트
**/
this.dsList_onrowposchanged = function(obj:nexacro.NormalDataset,e:nexacro.DSRowPosChangeEventInfo)
{
    console.log('######################## dsList_onrowposchanged e.newrow/oldrow :: ' + e.newrow + '/' + e.oldrow);
    if( e.newrow == 0 && e.oldrow == -1 ){
        
        let boardNo = this.dsList.getColumn(e.newrow, "BOARD_NO"); 
        
        if ( !this.gfnIsEmpty(boardNo) ) {
            this.dsSearch.setColumn(0, "BOARD_NO", boardNo);
            this.fnTransaction('조회(search)');
        }        
    }
};

/**
 * @description 그리드 Row Click 이벤트
**/

/**
 * @description 신규버튼 클릭 이벤트
**/

/**
 * @description 저장버튼 클릭 이벤트
**/

/**
 * @description [검색영역] 조회 이벤트
**/

/**
 * @description [검색영역] 초기화 이벤트
**/

/**
 * @description [알림대상] 사용자추가 이벤트
**/

/**
 * @description [알림대상] 부서추가 이벤트
**/

/**
 * @description [알림대상] 삭제 이벤트
**/
728x90
반응형
728x90

위 이미지는 공식 페이지에서 캡쳐해온 것이며 제품 상세는 아래 링크를 참고하길 바란다.

https://support.apple.com/ko-kr/HT201471

 

iPad 모델 식별하기

사용 중인 iPad 모델을 확인합니다.

support.apple.com

 

위에서 식별한 모델번호로 아래 표를 참고하여 나의 모델을 확인해보자.

 

참고정보로 아래는 아이패드 세대별로 구분해놓은 표이다.

 

아이패드 기종을 세대별로 얘기하면 머리가 복잡해지던데 나를 위해 정리한 표이니 참고하실 분들은 자주 오세요. 

 

더 자세한 모델 스펙은 애플공식사이트를 이용하시면 됩니다.

 

https://www.apple.com/kr/ipad/

 

iPad

iPad의 세상을 경험해보세요. 완전히 새로운 iPad와 iPad Pro, 강력한 성능을 갖춘 iPad Air와 iPad mini까지.

www.apple.com

 

728x90
반응형
728x90

현재 진행중인 프로젝트에서 공통프로젝트가 있고 각 업무시스템이 별도로 있는 상태이다.
그림으로 그려보면 아래와 같다.

개발환경 구성시에는 아래 그림과 같이 하면된다.

((STEP1)) Java Build Path > Projects > Add... 버튼을 통해 [공통프로젝트]를 추가 해준다.

((STEP2)) Deployment Assembly > Add... 버튼을 통해 [공통프로젝트]를 추가해준다.

Prject References 에 [공통프로젝트] 에 체크가 되어 있는지 확인해본다. 안되어 있음 체크하도록...

끝~

너무 쉽다...

 

하지만 같이 개발하는 사람이 많다면 오류가 날 수 있는 경우가 있는데..

나와 같은 경우엔 누군가 수정한 소스를 내려받았는데 Method를 찾지 못해 오류가 발생되어 봤더니 동일한 Class 파일이 다른 jar 파일에 있어 오류가 발생된 경우였다.

소스를 참조해야하는 순서를 변경하는 옵션이 이클립스에 있어 변경하여 처리하였다.

 

이상 끝~

 

728x90
반응형

'IT 인터넷 > Java' 카테고리의 다른 글

String.format() 사용방법  (0) 2022.10.12

+ Recent posts