Development/node.js2016.04.04 08:58

Node 의 새로운 버전이 릴리즈 되었습니다. Node 는 새로운 버전이 발표될 때마다 LTS (Long Term Support) 버전과 Stable 버전으로 나누어 공개하곤 합니다. 이번에 발표된 버전은 v4.4.2 (LTS) 버전과 v5.10.0 (Stable) 버전입니다. 아시는 분들은 아시겠습니다만 Stable 버전의 경우 이름의 뜻과는 달리 실험적인 기능들을 비롯한 덜 안정적인 기능들이 많이 들어간 버전이며 LTS 버전이 안정적인 버전이라고 생각하시면 되겠습니다.


Node 의 버전을 업데이트 하는 방법은 여러가지 있겠습니다만 개인적으로 추천드리는 방법은 n 을 이용하여 업데이트 하는 방법입니다. n 을 설치하고 사용하는 방법인 예전 포스팅에서 찾아보실 수 있습니다 (관련글 : http://ondemand.tistory.com/220) . n 은 여느 Node 패키지와 마찬가지로 NPM 을 이용하여 설치할 수 있습니다. 




간만에 또 한번 싱가폴에서 열심히 놀고 있는 서버에 접속을 했습니다. 업데이트를 하기 전 n 을 이용하여 현재 설치되어 있는 버전을 확인해 보았습니다. n 명령을 실행하면 현재 설치되어 있는 버전이 열거되며 활성화 되어 있는 버전은 특별히 밝은 색상과 o 표시가 되어 있어 식별이 쉽습니다. 




현재 설치되어 있는 버전이 두가지 이고 활성화된 버전은 4.2.4 로 확인됩니다. 새로 출시된 버전이 4.4.2 버전이니 n 명령을 이용해서 새로운 버전의 LTS 버전을 다운로드 받아 활성화 해보도록 하겠습니다. 명령은 무척 간단해서 n 뒤에 파라메터로 버전명을 기술해 주면 됩니다. 






약간의 시간동안 다운로드를 받고 설치하는 과정이 끝나면 준비 완료입니다. 다시 한번 n 명령을 이용해서 버전을 확인해보면 새로운 버전이 추가된 것을 확인할 수 있고 활성화까지 된것을 볼 수 있습니다. 느낌이 오셨겠지만 n 을 이용하면 현재 머신에서 어떤 버전을 활성화 해서 사용할 것인지도 쉽게 선택할 수 있습니다. 설치된 버전 목록에서 버전 넘버를 확인한 후, 다시 한번 n 명령 뒤에 해당 버전을 기술해 주면 됩니다. 저는 0.10.28 버전으로 다시한번 전환해 봤습니다.




네, 참 쉽습니다 ;-) 


Nodejs.org 공식 웹사이트에서 새로운 릴리즈 확인해보기 [바로가기]






저작자 표시 비영리
신고
Posted by 노피디
Development2016.03.17 17:07

터미널에서 다량의 로그, 텍스트 파일을 핸들링 할때 awk 명령을 파이프로 연결하여 작업하는 경우가 많습니다. 예를 들어 텍스트 파일의 첫번째 컬럼이 "A" 인 행의 세번째 필드를 출력하는 방법은 대략 아래와 같을겁니다.


$ cat sample.txt | awk '$1=="A" {print $3}'


그런데 가끔은 특정한 조건을 만족하는 행의 모든 내용을 출력하고 싶을 때가 있습니다. 컬럼이 몇 개 안된다고 하면 print 명령으로 모든 컬럼을 지정하면 되겠지만 컬럼이 많다면 쉽지 않습니다. 이때는 print 의 파라메터로 $0 을 넘기면 모든 컬럼이 출력되게 됩니다.


$ cat sample.txt | awk '$1=="A" {print $0}'


자주 사용하지 않으면 잊어버리기 때문에 기억을 위해 남겨둡니다.


- NoPD -

저작자 표시 비영리
신고
Posted by 노피디
Development2016.02.22 15:59

윈도 환경에서는 그렇게 많이 사용되지 않지만 맥이나 리눅스 등의 환경에서는 컬(curl) 명령이 무척 자주 사용됩니다. curl 명령을 이용해서 간단한 HTTP 요청을 쉽게 만들고 요청(Request), 응답(Response) 헤더는 물론이고 전달되는 데이터까지 쉽게 살펴볼 수 있기 때문입니다. 하지만 curl 명령을 이용해서 큰 사이즈의 JSON 응답을 내려주는 API 를 조회하는 경우 그 내용을 살펴보기가 다소 쉽지 않다는 단점이 있습니다. 때문에 JSON Formatter 나 유사한 기능을 제공하는 편집기로 본문을 가공하여 확인해야만 했습니다. 


오늘 소개해드리는 커맨드라인 툴인 jq 는 이런 불편을 제거해주기 위한 훌륭한 도구가 될 것 같습니다. Github 에 소스코드가 공개되어 있는 jq 는 awk 나 grep 처럼 파이프(Pipe)를 이용하여 응답 컨텐츠에 포함된 JSON 형태의 데이터를 전달, 가공하여 리턴해주는 역할을 하게 됩니다. 이를 통해 번거롭게 JSON 형태의 데이터를 재가공할 필요 없이 터미널 상에서 curl 명령을 약간 바꾸는 것만으로 쉽게 JSON 을 확인할 수 있게 됩니다. 백문이 불여일견이니 한번 사용예를 보도록 하겠습니다. 



시험용 서버가 준비되지 않아 쉽게 쓸 수 있는 블로그스팟의 피드를 JSON 형태로 받아보기로 하겠습니다. 개인의 블로그에 영향을 주지 않도록 구글블로그의 공식 채널을 이용해봤습니다. 복사해서 붙여넣기 쉽도록 위의 명령을 다시 적어드리면 curl -v "https://googleblog.blogspot.kr/feeds/posts/default?alt=json" | head -n 10 이 되겠습니다. 캡쳐에서는 빠졌습니다만 less 도 연결해 주시는 것이 정신 건강에 좋습니다. jq 를 이용하지 않았기 때문에 원본 서버가 전달해주는 컨텐츠를 그대로 표현하게 되겠죠?



네, 상당히 사람 프랜들리하지 않은 결과가 나왔습니다. 180k 바이트가 넘는 컨텐츠이기 때문에 한줄로 연결된 데이터를 보는 것은 사실상 불가능하고 외부 JSON Pretty Formatter 를 이용하거나 편집기를 이용해서 보기 좋게 바꿔야 합니다. 하지만 매번 그렇게 하는 것도 참 번거로울 거라는 생각이 딱 들죠? 이럴때 유용한 커맨드라인 툴이 바로 jq 입니다. 이제 파이프를 이용하여 jq 로 응답 결과를 전달해서 간편하게 데이터를 가공해 보도록 하겠습니다. 



여기서도 친절하게 명령을 다시 적어드려 보겠습니다. curl -v "https://googleblog.blogspot.kr/feeds/posts/default?alt=json" | jq '.' | head -n 10 이 바로 명령입니다. 앞선 명령과의 차이는 파이프로 연결된 jq '.' 가 추가된 정도입니다. 하지만 결과는 정말 아릅답게 출력이 된 모습을 볼 수 있습니다. curl 명령을 이용해서 디버깅을 하거나 테스트를 수행하는 경우에 정말 간편하게 응답을 해석할 수 있게 된 것입니다. jq 는 다양한 운영체제용으로 준비되어 있어 공식 웹사이트나 github 에서 필요한 환경에 맞는 소스코드/실행파일을 다운로드 받으실 수 있습니다. 




커맨드라인 JSON Pretty Formatter - jq 공식 웹사이트 방문하기 [바로가기]



저작자 표시 비영리
신고
Posted by 노피디

마이크로소프트는 최근 비주얼 스튜디오 2015 버전을 공개하면서 ASP.NET 5 와 크로스플랫폼 런타임 환경인 .NET CLR Core 을 공개했습니다. 새로운 버전의 공개에 맞추어 지난 20일 마이크로소프트 닷넷 개발자 블로그 포스팅을 통해 버그 혹은 취약점을 발견하는 이들에게 최대 15,000달러의 포상금을 지급하는 프로그램이 시작됨을 알렸습니다. 버그와 취약점에 대한 리포트는 새롭게 공개된 ASP.NET 5 와 .NET CLR Core 에 대해 적용되며 아직까지 개발이 진행중인 네트워크 스택(Network Stack)은 이번 프로그램에서 일단은 제외된다고 합니다.


마이크로소프트가 이번과 같은 프로그램을 운영했던 적이 있는지 찾아보지는 못했습니다만 근래 메신저 서비스인 텔레그램(Telegram)의 보안 취약점 관련 프로그램이나 라인(LINE)의 버그 바운티(Bug Bounty) 처럼 보다 적극적으로 취약점을 찾고 보완하여 크로스플랫폼 시장에서의 존재감을 만들어 나가겠다는 적극성이 물씬 느껴지는 듯 합니다. 시간이 되시는 분들이나 관심 있으신 분들은 닷넷 코어의 크로스플랫폼 버전에 대해서 심도 있는 지식도 쌓고 포상 프로그램을 통해 금전적인 혜택도 받아볼 수 있는 기회로 만들면 더할나위 없이 좋은 기회일 것 같습니다.




포상금은 취약점 타입별로 몇 가지 등급으로 나뉘어져 있습니다. 단순한 크로스 사이트 스크립트(XSS)와 같은 케이스는 심각도에 따라 500 달러에서 최대 2,000 달러까지 지급되며, 원격 코드 실행(Remote Code Execution)과 같은 심각한 케이스에 대해서는 최대 15,000 달러까지 포상금이 책정되어 있습니다. 보안 취약점을 찾아내어 증명하기 쉬운 것과 어려운 것에 차별점을 두어 보다 심각한 오류, 버그에 대해서는 충분히 그 보상을 해주겠다는 의미로 해석됩니다.



소프트웨어, 어플리케이션을 개발하다 보면 다양한 입력감 검증이나 변수 핸들링, 체계적으로 제한된 위임등을 통해 가능한 불필요한 코드의 영향을 줄이고 테스트 케이스들을 통해 이들이 정상적으로 동작하는지 검증하는 일들을 늘 하게 됩니다. 하지만 사람이 하는 모든 일들이 그렇듯 모든 예외 케이스나 특정한 상황을 다 찾아내어 테스트 하는 것은 거의 불가능합니다. 그래서 늘 패치(Patch)가 존재하고 버그 픽스(Bug Fix)가 필요할 수 밖에 없습니다. 쟁쟁한 사람들이 모여 만들고 테스트하여 출시하는 마이크로소프트에서도 버그 포상 프로그램을 통해 보다 완벽한 환경을 만들고자 하는 것을 보면 창과 방패의 관계처럼 완벽을 "추구"하는 코드와 버그와의 전쟁은 앞으로도 계속 될것만 같습니다!


닷넷 코어 CLR 및 ASP.NET 5 버그 포상 프로그램 포스팅 살펴보기 [바로가기]

버그 포상 프로그램 상세 시상(?) 내역 및 범위 살펴보기 [바로가기]


저작자 표시 비영리
신고
Posted by 노피디
Cloud & Dev. Story2014.12.05 09:35

개발자로 일을 하다보면 개인적으로 사용할 수 있는 테스트 서버가 필요할 때가 많습니다. 회사에서 제공되는 개발 머신이 있는 경우가 많겠지만 왠지 좀 비밀스러운 일도 하고 재미있는 구성들을 해보기 위해서 별도로 서버를 준비하고 싶을때가 많지요. DDNS(Dynamic DNS) 서비스를 이용해서 집에 PC 나 소규모 서버를 구성하는 것도 방법이겠습니다만 전기세나 DDNS 의 잘못된 동작, 행여나 있을지 모르는 대역폭(Bandwidth) 이슈가 걱정되는게 사실입니다.


하지만 아마존 EC2 와 같은 클라우드는 좋긴 하지만 가격이 생각외로 좀 쎈편이라 (게다가 콘솔이 온통 영어고 해외 사용료 결재 등이 왠지 또 찜찜한 분들도 계실거구요) 저렴한 웹 호스팅을 쓰는 경우가 생기곤 합니다. 하지만 호스팅은 서버 전체를 제어할 필요가 있는 경우, 혹은 특정한 모듈, 설정을 하고자 할때 그닥 좋지가 않죠. 하지만 물리 장비를 이용한 서버 호스팅은 가격이 만만치 않은게 현실입니다.




이런 생각을 똑같이 하시고 계시던 분이 있다면 가비아(gabia)가 12월 한달동안 진행하는 클라우드 서버 기본상품(g클라우드 베이직?) 70% 할인행사를 이용해 보시면 어떨까 싶습니다. 1vCore 에 메모리도 고작 1GB, 스토리지도 100GB 밖에 안된다고 생각할 수 있지만 공인IP 를 확보할 수 있고 트레픽도 가상머신당 1TB 까지 별도 과금이 없으니 간단하게 서버를 구성하고 돌리는데 무리가 없어 보입니다.


행사 내용을 살펴보면 12월 한달간 가입하는 신규 고객에 한정되고 1인당 2개의 가상머신까지만 혜택을 받을 수 있다고 합니다. 그리고 70% 할인된 금액으로 과금되는 것은 2개월 적용되고 이후에는 다시 원래의 가격 25,000원/월 로 전환되는 것으로 보이네요. 제약조건이 있긴 하지만 클라우드 서비스들에 비해 단기 사용을 생각하면 무척 좋은 가격입니다. 부가가치세 별도라는 조항이 있지만 두달동안 16,500원으로 가상머신을 쓸 수 있는 기회이니 필요하신 분들은 이용하시면 좋을 것 같네요!




가비아(gabia)의 클라우드 호스팅 70% 할인행사 자세히 살펴보기 [바로가기]


저작자 표시 비영리
신고
Posted by 노피디
Development2014.07.24 08:56
맥(Mac) 계열의 환경에서 작업을 하다 윈도 환경으로 작업 환경을 옮겼을때 장단점이 여럿 있습니다. 그 중, 가장 눈에 띄는 단점이 하나 있으니 그것은 바로 커맨드라인에서 사용할 수 있는 curl 도구가 없다는 것이지요. 운좋게 시그윈이 설치되어있다면 curl 커맨드를 어찌저찌 쓸수야 있겠지만 불편한건 매 한가지. 그런데 역시나 우리의 훌륭한 개발자 분들께서는 윈도 환경에서 사용할 수 있는 curl 커맨드라인 명령어 도구를 이미 만들어 두셨더군요!


윈도 환경에서 간단하게 msi 설치파일을 실행만하면 사용 준비 완료! 사용중인 커맨드라인 창을 모두 닫고 다시 실행하면 사용준비가 끝납니다. 커맨드 라인에서 curl http://www.naver.com -o NULL -v 라고 명령을 해보니 정상적으로 동작하는 curl 명령을 볼 수 있었습니다.


윈도용 curl 커맨드라인 명령도구 다운로드 받으러 가기 [바로가기]





 


저작자 표시 비영리
신고
Posted by 노피디
Development2014.02.08 08:44
파이썬은 2.x 대와 3.x 대가 있는데, 서로 호환성이 없음
일반적으로 많이 사용되는 2.x 대를 설치

- 설치안내 : http://python.org/download/releases/2.7.6/


파이썬 패키지 관리도구 : easy_install, pip
pip 는 easy_install 을 먼저 설치하고 난 뒤 easy_install 을 이용해서 설치

- 설치안내 : https://pypi.python.org/pypi/setuptools
- 설치방법 : $ wget https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py -O - | python
- PIP 설치방법 : $ easy_install pip

환경 구성파일은 사용자 계정 루트의 .bash 혹은 .bash_profile 에 추가하면 됨.
윈도와 다르게 세미콜론이 아니라 콜론으로 경로들을 구분하는 점에 주의
wget 설치를 위해서는 homebrew 등의 도구 사용 (참고 : 2013/07/19 - Mac OS 에는 왜 apt-get 이나 yum 명령어가 없을까?)

파이썬에서의 웹 개발 프레임워크는 django 가 많이 사용됨

- 설치방법 : $ pip install django

개발도구는 Aptana 를 사용하는 것으로!

- NoPD -
저작자 표시
신고
Posted by 노피디
유튜브에 올라온 iPhone Tutorial 중 쓸만한 것을 찾는게 요즘의 일상중 하나입니다.
제가 준비하는 방식이 맞는지는 모르겠지만, Objective-C, xcode 에 맛을 들이고 나서는
디립다 예제를 죽도록 눈에 익도록 하는게 방법이라고 생각하고 있습니다.

UITableView 를 이용해서 만들어 보는 간단한 예제 Tutorial 입니다.
보고 있으면 딱 드는 생각이, " 참 쉽죠잉~? " 이군요 ㅎㅎ





- NoPD -
신고
Posted by 노피디
Development/Database2009.05.08 23:09
Last night, I have got request from my customer. He wanted to know how many XML nodes are there in XML log table placed in Oracle. I tried to find sufficient oracle function but couldn`t. So I make slightly dirty SQL query but it was very helpful to reduce manual job. Let`s see SQL query first.

SELECT xml_seq, 
       to_char((length(xml_recv)-length(replace(xml_recv,'<ITEM>',''))) / length('<ITEM>')) as item_count
  FROM tbl_xml_log
Look above SQL carefully. It looks dirty calculation about length of column but very simple. You can change <ITEM> to string that you want to count on specific column. It would be helpful for guys who want to count repeated character in specific column.

- NoPD -
신고
Posted by 노피디

티스토리 툴바