기업은행의 개편된 앱을 보니..

2013년 12월 28일 at 12:31 pm

허접한 회사 데리고 우리 회사 앱 만들면서 인내심의 한계까지 느꼈고, 좀비가 되는 느낌으로 버텨냈다….만 기업은행 원뱅킹 앱을 보면.. 우리보다 더 힘들지 않았을까 싶다. 이 앱 만든 팀장은 안녕하신지..

앱 관련 수상…

2013년 11월 13일 at 12:28 pm

이럴수가.. 지난 여름에 앱 만든 걸로 팀장이 안전행정부 장관상을 탄댄다.. 이 자랑스러운 앱이 난 왜 이리 부끄럽기 그지없…아니 그지같아!!

이게 산출물이야 공유 버튼이야?

2013년 8월 24일 at 12:21 pm

개발업체에서 인쇄 들어갈테니 내일까지 확인해달라며 산출물을 들고 왔다. 이제 나는 팀을 옮겼지만 그 전 팀 도와주는 의미에서 한 번 보는데.. “티스토리 블로그 운영 방법이 어쩌고 저쩌고.. 블로그의 효율적인 운영을 위해서 어쩌고 저쩌고..” 아놔 어디서 베꼈길래 우리 회사 사이트 운영하는데 블로그 얘기가 나오냐. 정말 해도 해도..

공개SW 도입사례 – [공개SW 활용 성공사례 92] 한국주택금융공사 – 공개SW 기반 모바일 앱 개발

2013년 7월 17일 at 12:18 pm

사실 인터뷰는 내가 함

http://www.oss.kr/86967

* 공개SW 도입사례 – [공개SW 활용 성공사례 92] 한국주택금융공사 – 공개SW 기반 모바일 앱 개발www.oss.kr주택마련 금융상품의 장기적이고 안정적인 공급을 통해 복지증진과 국민경제 발전에 이바지해온 주택금융공사는 주택저당 채권과 주택금융 신용보증 업무까지 수행하면서 주택으로 인한 경제 불안감을 해소하고자 노력해 왔다. 특히 스마트폰을 활용한 주택금융 거래 및…

앱 오픈..

2013년 7월 2일 at 12:17 pm

.. 그랬답니다. 결국 일정은 맞췄답니다…. 이제부터 품질 높이기가 까마득하답니다.

http://media.daum.net/economic/finance/newsview?newsid=20130701103808339

L4 Load Balancer와 웹서버의 IP Listening

2013년 6월 1일 at 4:00 am

며칠 전 회사에서 도메인 네임을 신청했다. app.회사이름을 A 와 B 라는 이중화된 서버로 할당해달라는 것.

이를 위해 시스템팀에서는 Z 라는 이름을 Virtual IP 를 L4 장비에 할당하여 Load Balancing 하게 하였다. (아래 그림 참조)

서버에는 도메인 네임

서버에는 도메인 네임

문제는 app.회사이름으로 연결이 되지 않는다고 앱 개발실에서 연락이 온 것.

확인해보니 Z 의 IP 로 웹서버가 연결되지 않았다.

시스템팀에 내려가니 하필 아무도 없어 SM 들에게 직접 문제의 해결을 요청했다.

SM들이 작업을 하는데 옆에 붙어서 계속 지켜보았다. 어떤 이유인지 쉽게 되지 않아 헤매는 듯 하였다.

이때 최근까지 WAS 및 네트워크를 담당하다가 보안팀으로 옮겨간 동기가 나타나서 무척 반가운 마음에 붙잡고 문제의 해결을 요청했다.

그런데 문제가 해결되지 않자 원인을 엉뚱한 곳으로 돌린 것.

“웹 서버에서 IP 를 지정해주는 게 있는데 그게 IP A 나 B 만 지정해준 것 같으니 Z에 대해서도 열리게 * 로 지정해줘요.”

“아니, 그건 서버에서 bind할 IP(and port)를 지정하는 부분이고, 여기서 필요한 건 그게 아니잖아.”

“뭘 안다 그래요 내가 전 WAS 담당자인데 내 말이 맞으니까 그렇게 해요.”

여기에서 그 동기가 말한 설정 부분은 IIS를 비롯한 거의 모든 웹서버에 있는, 어떤 IP에 대한 특정 포트를 listen할 것인가에 대한 이야기였다.

그리고 A, B 서버는 모두 각각 하나씩 유일하게 할당되어있는 IP에 대해 그 특정 포트를 listening 하고 있다.

Network Server Programming

이외에도 Virtual Host 를 결정해주는 부분도 웹서버에 있는데, 각 IP 에 특정한 호스트 이름으로 들어온 요청들을 별개의 가상 서버인 것처럼 서비스해주는 것.

Virtual Host

하지만 이마저도 Z의 IP를 지정할 필요가 없고 * 혹은 A, B 가 각자의 IP를 지정하기만 하면 되는 것이다.

실제로 웹서버가 받는 메시지는 GET http://app.회사이름/index.html HTTP/1.1 과 같은 형태의 도메인 네임을 가진 메시지이고,

IP 는 Network Layer 에서 붙인 헤더에 있는데, L4 장비가 Z의 IP로 들어온 세그먼트를 까다가

Network Layer에서 나온 IP의 Z를 A, B로 바꿔치기하여 패킷을 재작성하고 A, B로 보내는 것이다.

그러므로 A, B 가 받는 패킷에는 Z 의 IP가 존재하지 않는다.

이미 Network Layer 의 목적지 IP 가 A, B 로 치환되었기 때문이다.

IP는 L3

IP는 L3

이후 IP 가 나올 수 있는 부분이 Application Layer 의 HTTP Header 에서 다시 한 번 있기는 한데, 이는 Virtual Host 에 대한 부분이며, 이 또한 현 상황에서는 IP 주소가 아닌 app.회사이름의 도메인명이 넘어오기 때문에 역시나 관계없는 이야기가 되겠다.

내가 SM에게 해당 부분을 지웠다가 다시 설정해달라고 하여 해결은 하였으나, 속 터질 뻔 했다.

뭐 사실 우리 회사에서는 흔한 일이다.

1. L4 에서 IP 를 변경해주는 것은 Network Layer(Layer 3)의 내용이다.

2. 웹서버는 자신이 bind할 IP와 port 를 지정한다.

3. 웹서버가 받는 받는 패킷의 Application Layer 는 URL 이 도메인 네임을 이용했을 경우 도메인 네임을 받는다.

4. 전산 전공이면 OSI 7 Layer 는 좀 달달 외우자!

0 == false

2013년 4월 4일 at 8:24 pm

요새는 삼성SDS멀티캠퍼스에 가서 자바스크립트 교육을 받고 있다. 강사는 나름 깊이 있는 지식을 습득하고 있는 것으로 보였다.

교육내용 중 자바스크립트 객체나 값의 존재 여부를 확인하는 방법에 대하여 교재(일본인이 쓴 책의 번역서)에는 이렇게 나와있었다.

function test(arg1) {
  if (arg1 == undefined) {
    arg1 = {};
  }
}

하지만, 강사의 설명은, 이와 같이 넘어올 경우 null 을 포함한 모든 경우를 체크해주지 못한다며, 다음과 같이 써야 한다는 것이었다.

function test(arg1) {
  if (!arg1) {
    arg1 = {};
  }
}

하지만 이와 같이 코딩할 경우 arg1 이 0 으로 넘어올 경우에도 없는 것으로 if  에 걸려 초기값으로 셋팅해버린다는 문제점이 있다. 처음에는 강사가 객체 또는 객체의 인스턴스를 받을 경우에만 저렇게 설명하는 것이겠지 하였으나 숫자로 넘어온 값도 마찬가지로 if (!arg1) 의 방법으로 존재 여부를 확인하고 있었다.

“저렇게 체크하면.. 0 이 넘어와도 객체를 못 받은 것으로 판단해버리지 않습니까?”

“아닙니다. 값이 존재여부로 판단해서 값을 넘겨받지 못했을 경우에만 블럭을 수행합니다.”

“0 이 넘어오면 0 도 false 로 판단하여 블럭을 수행할텐데요.”

“그럼 어디 해볼까요..”

결과는.. 0 이 넘어와도 블럭은 수행됐고, 강사는 책의 설명이 맞다며, 잘못 알고 있었다고 얘기했다. 저런 걸 모를 실력의 강사가 아닌데…

그 의문은 다음날 풀어졌다. 현대자동차 연구소에 다니고 있는 신동진과 수요일 저녁 사당역에서 만나 한 잔 하면서였다. 내가 받는 교육에 대해서 얘기하면서 강사의 실수에 대해서도 얘기했다. 그러자 동진이가 하는 말,

“자바에서는 0 이 false 가 아니니까 그렇지..”

“응? 자바도 0 이 false 아님? 아, 아, 맞다. 자바는 boolean 타입이 따로 있었지..!”

“그치, 0 이 false 가 되는 것은 C 언어나 그렇지..”

그렇다. C가 mother tongue 이었던 나는 당연하게도 0 ==  false 라고 알고 있었지만, 자바나 C# 으로 경력을 시작한 프로그래머라면 당연히 if 문 안에 들어가는 것은 논리판단이며, 0 == false 따위의 #define 에 대해서는 알 필요가 없었던 것이다.

이건 그 강사의 잘못도 아니고, 신-구 패러다임의 사이에서 양쪽의 특징을 조금씩 갖고 있는 과도기성의 문제랄까?

사실, 자바스크립트가 저런 문법을 허용하지 않았더라면 모호성이 사라져 더욱 좋았을 것이다.

엄청나게 바빴던 일주일

2013년 3월 31일 at 11:08 pm
일에 치이다

항복 ㅠㅠ

지난 한 주는 내가 견뎌낸 것이 신기한 일주일이었다. 2007년 이래 계속 유동화 업무만 하면서 업무 범위도 점점 넓어지고 힘든 일만 맡아 왔다. u가 생겨 세간의 관심이 덜해져 잠시 편했던 2011년을 제외하고는 업무에 만족한 적이 없었던 듯 하다. 2012년부터는 u보금자리론 업무를 맡게 되면서 엄청나게 바빠졌고, 왜인지 모르겠지만 우리팀에서 계속 스마트폰 어플 개발을 진행하면서 엎친 데 덮친 격이 되어왔다. 사후관리 업무는 점점 폭증하고, 시스템은 제대로 개발되어있지 않고, 지사의 문의나 요청은 폭주하고..

회사에서 밤 10 시 이전에 퇴근하는 일이 별로 없지만, 지난주에는 11시 이전에 귀가할 수가 없었다. 11시까지도 너무 많은 업무에 어깨가 망가지는 느낌으로 일해왔다. 스마트폰 어플 개발은 시작되었고, u 업무가 계속해서 폭주하는 마당에 은행연합회 신용정보 점검 마감 시기가 도래하고..

어떤 업무든 다른 일을 할 수 있다면.. 부장님이 신입사원 모집에 대해 얘기하시면서 “CISSP 가진 사람을 뽑을 게 아니라 그냥 기존 직원이 배워서 하면 안 되나?” 하셨다. 잠시 생각해보니 4학년때 컴퓨터 보안 과목에서 사용했던 교재가 “CISSP Certification”. 일단 그 책을 비롯하여 각종 보안/해킹 책은 회사에서 갖다두고, 앞으로 CISSP 공부를 해볼까 고민해본다.

 

공사 클라우드(데스크탑 가상화) 사용기

2013년 3월 23일 at 1:07 pm

공사에서는 작년말 클라우드 도입했다. 현재 운영중이긴 한데, 사실 실사용자는 나 혼자뿐인 듯. 시스템/보안팀의 이동건 대리가 클라우드를 테스트하는 것을 보고 나도 사용하게 해달라니까 담당자가 정연준 주임이라고 알려줬다. 정연준 주임은 준비가 모두 끝나면 사용 가능하게 해주겠다고 하였으나, 내가 거의 떼를 써서 먼저 사용하게 되었다. 그러고서 꽤나 긴 시간이 흘렀고, 클라우드를 전직원 차원으로 확대하지는 못하겠고 SM개발자들이나 콜센터 직원들 정도가 쓸 수 있게 할까 생각중이라고 듣긴 하였으나, 어쨌거나 지금까지도 나 혼자 사용하고 있는 것 같다.

성능으로 보면 코어 2개, 램 3GB, 디스크 공간 40GB 정도로 보잘 것 없다. 그러나 가장 큰 장점은 윈도우 7이라는 것이다. 지금까지 공사는 보안 솔루션이 모두 XP용인 관계로 XP만 사용 가능하였으나 클라우드 서버에도 XP를 설치하기는 너무 시도착오적이어서 설치할 수는 없어 윈도우 7 용 보안 솔루션을 도입했다. 윈도우 7 의 무엇보다도 큰 장점은 리소스 관리가 XP에 비해 훨씬 훌륭하다는 것이다. 이제 어지간히 프로그램 많이 띄워도 텍스트 없는 팝업창이 뜬다거나 하지 않는다. 속도도 미세한 지연은 느껴지지만 그렇게 느리지도 않다. 하드디스크가 40GB인 것은 너무 부족하여 사실 나는 내 데스크탑에 sshdrive 로 연결하여 My Documents 를 공유하여 사용한다. 뭐, 이 정도면 만족한다.

공사에서 도입한 클라우드(데스크탑 가상화)의

장점

  1. 외부에서 원격접속시 윈도우 원격 데스크탑에 비해 훨씬 빠르다.
  2. PC를 켜놓지 않아도 외부에서 작업이 가능하다.
  3. Windows 7 (그외 공사 모든 PC는 기본적으로 XP)
  4. 노트북 사용시 노트북을 덮고 이동하여도 작업하던 내용은 그대로 있다.

단점

  1. 외부에서 접속하여 대화면(2560*1600) 사용시 느리다.
  2. 하드디스크 용량이 40GB로 턱없이 부족하다.
  3. 코어/메모리가 고정적(static)이라 효율성이 떨어진다.
  4. 공사 포탈 접속시 제대로 뜨지 않는 페이지가 일부 있다(이건 경영지원팀에서 포탈을 조금만 수정하면 될 것 같다).

안드로이드용 A사 백신과 I사 백신의 멀웨어 탐지능력 비교

2013년 3월 21일 at 9:35 pm

이번 공사 스마트폰 앱에 탑재할 백신에 대한 성능 테스트를 위해 A사 백신과 I사 백신을 비교해보았다.

테스트 대상은 Android Malware Genome Project 의 49 가지 분류에 대한 백신 샘플 1 개씩을 세진이에게서 받은 것.

아무리 A사 백신이 세계 시장에 내놓기 꿀린다 해도.. 이 정도는 해주는구나.

 

Malware Name B*앱에 탑재된 A사 백신 W*앱에 탑재된 I사 엔진
ADRD O X
AnserverBot O O
Asroot O X
BaseBridge O O
Beanbot O X
Bgserv O O
Coin Pirates O X
CruiseWin O X
DogWars O O
DroidCoupon O X
DroidDeluxe O O
DroidDream O O
DroidDreamLight O X
DroidKungFu1 O X
DroidKungFu2 O X
DroidKungFu3 O X
DroidKungFu4 O X
DroidKungFuSapp O X
DroidKungFuUpdate O X
Endofday O O
FakeNetFlix O O
FakePlayer O O
GamblerSMS O X
Geinimi O X
GGTracker O O
GingerMaster O X
GoldlDream O X
Gone60 O X
GPSMSSpy O X
HippoSMS O X
Jifake O O
jSMSHider O X
KMin O O
LoveTrap O O
NickyBot O X
NickySpy O X
Pjapps O X
Plankton O X
RogueLemon O X
RogueSPPush O O
SMSReplicator O O
SndApps O X
Spitmo O O
Tapsnake O X
Walkinwat O O
YZHC O X
zHash O X
Zitmo O O
Zsone O X