본문 바로가기

전체 글

(519)
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 모델링을 다시하고 구조를 수정하기 위해서는 제품의 컨셉을 재점검 해야할 필요도 있고 이런것들이 사상 자체를 뒤흔들수도 있다. 한마디로..
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 를 인식하지 못해서 빨간색의 오류로 출력되지만 정상적으로 빌드되고 실행된다.
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..