전체 글 514

트레일화 갈아타기.

아디다스 테렉스에서 아식스 젤-후지트라부코로 갈아 탐. 둘 다 고어텍스 재질에 테렉스는 22만원정도, 후지트라부코는 14.9만원. 15만원 아래로 제대로 된 고어텍스 트래킹화라니 믿을수가 없다. 아디다스 테렉스 시리즈는 밑창에 노브가 큼직하게 달려서 접지력이 좋을듯 한데 의외로 내구성이 약해서 데일리로 신고 다닐 경우 빨리 닳는편이다. 사실 접지력도 썩 마음에 드는건 아니다. 사람 발바닥이 평면이 아니듯이 노브도 시간이 가면서 바닥창 전체가 골고루 닳는것이 아니라 걸을때 바닥에 먼저 닿는 부분부터 닳기 때문에 노브가 큼직하고 내구성이 약한 테렉스 같은 경우는 울퉁불퉁하게 닳아서 보기에도 좋지 않고 걸을때 불편할때도 있다. 반면 젤-후지트라부코는 큼지막한 노브 대신에 잘 설계된 패턴창이 전체적으로 적용되어..

잡담/신변잡기 2017.04.11

GPKI 라이브러리를 이용한 암복호화 구현하기.

관공서에서 시스템 연계를 위해서는 개인정보 관련 문제때문에 데이터를 GPKI 를 이용해서 암복호화를 해야한다. 주무관을 통해서 요청하면 해당 api 와 도큐먼트를 받을 수 있는데 내용이 좀 부실하다. 구글링을 해도 gpki 성격상 자료가 많지 않거니와 연계 담당자도 처음부터 끝까지 자세히 알려주지 않는다. 어느정도 진행되면 조금 더 알려주고 또 어느정도 개발이 진행되면 조금 더 알려주고.. 하는 식이다. xx행정쪽으로는 미리 우리의 ~.cer, ~.key 파일정보를 보내주었다. xxx시청에서 xx행정시스템과 연계 테스트를 하면서 gpki 를 이용한 암복호화를 테스트했는데 진행 방법을 정리한다. 목적 :xxx시청 xxx 시스템이 xx행정시스템과 연계하기 위해서 데이터를 gpki 로 암복호화. 1. JNI ..

Data 설계와 처리방법의 중요성.

예전에 제품 퍼포먼스에 문제가 심각했었는데 서버쪽에서라도 문제의 일부를 해결해보자고 판단해서 서버를 새로 만들기로 결정했다. 퍼포먼스가 문제라면 차라리 c++ 로 구현할까 아니면 netty 로 구현할까 한참을 고민하다가 netty 의 성능이 꽤 좋다는 의견들이 많고 개발기간이 촉박해서 netty 로 구현했는데 중간중간 테스트에서도 만족할만한 성능을 보여줬다. 하지만 문제의 가장 근본이었던 database 구조를 수정하지 않았고 제품에서는 그 구조의 data 를 그대로 사용하다보니 data 가 커지기 시작하면서 다시 예전의 퍼포먼스 문제가 동일하게 발생했다. database 모델링을 다시하고 구조를 수정하기 위해서는 제품의 컨셉을 재점검 해야할 필요도 있고 이런것들이 사상 자체를 뒤흔들수도 있다. 한마디로..

Development 2016.11.25

Erwin 에서 논리모델 <--> 물리모델 컬럼 정렬하기.

Erwin 에서 논리모델로 컬럼을 추가한뒤 물리모델로 가서 reset 하면 새로 추가된 컬럼이 논리모델에서의 순서대로 맞춰 보여지는데, 실제 스크립트 파일로 생성하면 논리모델에서 정렬한 컬럼 순서가 아닌 추가된 순서로 정렬되어 있다. Tools > Forwawrd Engineer > Schema Generation 메뉴에서 좌측의 Colmun 을 선택한 뒤 Physical Order 항목의 체크를 해제한다. 다시 스크립트 파일을 생성하면 논리모델에서 정렬한 순서대로 컬럼들이 정렬된 것을 확인할 수 있다.

PayPal 결제 연동 PDT / IPN 정의와 비교.

* PDT 방식.(Payment Data Transfer) sync. 결제 완료 후 즉시 실행된다. 1. 쇼핑몰 서버에 접속한 고객이 paypal 을 통해서 결제를 한다. - 결제 버튼을 클릭하면 paypal 사이트로 이동한다. 2. 결제가 완료되면 paypal 에서 쇼핑몰 서버로 transaction id 를 보내준다. - transaction id, amount 등등 몇가지 정보를 보내주지만 transaction id 만 필요하다. 3. 서버에서 받은 transaction id 와 판매자의 auth token 을 다시 paypal 로 보낸다. - paypal 보안설정때문에 서버쪽 jdk 는 최신버전이어야 한다. 4. paypal 에서는 받은 데이터로 결제 상세정보를 다시 서버로 보내준다. - 서버쪽 ..

외부 인터넷이 연결되지 않은 경우 application-context 설정하기.

관공서 등과 같이 외부 인터넷이 안되는 환경인 경우 spring application 을 실행할때 schemaLocation 오류가 발생한다. 이때는 xsd 를 url 이 아닌 classpath 를 통해서 가져오도록 수정한다. 물론 처음 빌드는 인터넷이 되는 환경에서 모든 maven 라이브러리들을 다운로드 받은 상태여야 한다. Intellij 에서는 schemaLocation 의 classpath syntax 를 인식하지 못해서 빨간색의 오류로 출력되지만 정상적으로 빌드되고 실행된다.

Development/Spring 2016.07.08

Oracle 테이블 Index 삭제후 새로 생성하기.

오라클에서 작업하다보면 테이블 index 가 깨져서 데이터 추가/삭제가 안되는 경우가 가끔 발생한다. 주로 대용량 데이터를 입력하는 과정에서 그런 경우가 많았다. 그럴때는 index rebuild 가 안되서 일반적으로 테이블을 삭제했다가 새로 생성하고 데이터를 밀어넣는 불편한 방법을 사용하곤 했는데 sql developer 를 이용해서 깨진 index 를 삭제하고 새로 생성하는데 성공했다. (toad 로는 안되고 sql developer 로만 성공했다. 혹시 다른 툴로도 가능한지는 모르겠다.) 1. sql developer 를 실행한다. 2. 좌측의 database 목록에서 원하는 항목을 선택한다. 3. 테이블을 선택한다. 4. 가운데 테이블 정보화면이 출력된다. 5. 테이블 정보의 '인덱스' 탭을 선택..

Blocking, Non-Blocking, Synchronous, Asynchronous

많이 들었으면서도 자주 헷갈리는 개념들. 일단 결론부터 정리하자면, Blocking / Non-Blocking 방식은 Server 에서 Client 를 처리하는 Socket 동작 방식이고, 동기 / 비동기 방식은 프로세스를 처리하는 방식이다. * Blocking and Non-Blocking 방식. 1. Blocking 방식. - single thread 방식. server, client 작동 방식. request 를 받고 server 에서 처리 후 response 를 던져줄때까지 처리결과를 알 수 없었다. server 의 프로세스를 한번에 한개의 (자식)thread 가 사용한다는 의미. 임의의 A 메소드를 호출하는 뒤의 요청은 앞의 요청이 끝날때까지 기다려야 한다는 뜻. 이런 방식은 thread 의 b..

Thinkpad X1 Carbon 조도센서 키보드 백라이트.

2015년 4월형 x1 을 업무용으로 사용중이다. xx모직에 프로젝트 투입되었다 종료하고 나오면서 노트북을 포맷했는데 복구영역까지 모두 날리는 바람에 윈도우7을 설치했다. 얼마뒤 다시 윈도우10으로 업그레이드 했는데, 조도센서가 작동하지 않는지 어두워져도 키보드 백라이트가 자동으로 들어오지 않아서 'fn + space' 키로 켜줘야 했다. 집에서 사용중인 x1 은 어두워지면 자동으로 잘 들어오는데 이건 왜....? 찾아보니, 윈도우7 에서 업그레이드한 경우는 조도센서가 작동하지 않는다. (아직까진)해결방법도 없다. 그러고보니 집에서 사용중인 x1 은 윈도우8.1에서 10으로 업그레이드 한 경우라서 상관이 없었나 보다. https://support.lenovo.com/kr/ko/documents/ht103..

Oracle Sql Loader 를 이용해서 xml 포멧의 데이터 insert 하기.

xml 포멧으로 된 데이터 파일을 oracle 테이블에 입력해달라는 요구사항이 들어왔다. sql developer 같은 툴에서는 불가하고 database server 에 원격으로 붙어서 작업한다. 1. oracle server 에 접속 후 작업 할 임의의 디렉토리를 생성한다. - C:\temp_data 2. 디렉토리 하위에 data 로 사용 할 xml 파일을 위치시킨다. - C:\temp_data\relation.xml 3. 디렉토리 하위에 control 파일을 위치시킨다. - sql loader 를 제어하는 파일. - C:\temp_data\relation.ctl 예) 파일내용. LOAD DATA INFILE 'C:\temp_data\relation.xml' INTO TABLE TBL_RELATION_..