Development2017.07.04 22:54

맥 환경에서 Mongo DB 를 설치하는 방법은 여러가지 입니다. 직접 압축된 Mongo DB 를 다운로드 받아 설치하는 것도 방법이지만, 이왕이면 패키지 매니저를 이용하여 설치하는 것이 여러가지로 간편합니다. 맥에서 가장 널리 사용되는 brew 를 이용하여 손쉽게 Mongo DB 를 설치할 수 있습니다.


$ brew install mongodb


brew 를 이용하여 설치한 경우 환경 설정 파일이 별도로 저장됩니다. Mongo DB 의 데이터 파일은 아래 경로에 위치한 mongod.conf 파일에 지정된 dbpath 경로를 따르게 됩니다. 단, 이 파일의 정보를 이용하는 경우는 brew 를 이용하여 Mongo DB 서비스를 시작하는 경우이고, mongod 를 통해 데몬을 실행하는 경우는 로그인한 사용자 경로의 ~/data/db 경로가 기본 데이터 파일의 위치가 됩니다. 실행 방법에 따라 데이터 파일의 위치를 적절히 지정하시기 바랍니다.


/usr/local/etc/mongod.conf


systemLog:

  destination: file

  path: /usr/local/var/log/mongodb/mongo.log

  logAppend: true

storage:

  dbPath: /Users/nopd/dev/data/db

net:

  bindIp: 127.0.0.1


conf 파일에 dbpath 위치를 적절히 수정했으면 brew 를 이용하여 Mongo DB 를 서비스 형태로 실행해 보도록 하겠습니다.


$ brew services start mongodb

==> Tapping homebrew/services

Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-services'...

remote: Counting objects: 12, done.

remote: Compressing objects: 100% (8/8), done.

remote: Total 12 (delta 0), reused 7 (delta 0), pack-reused 0

Unpacking objects: 100% (12/12), done.

Tapped 0 formulae (40 files, 53.8KB)

==> Successfully started `mongodb` (label: homebrew.mxcl.mongodb)


프로세스에 Mongo DB 가 잘 실행되어 있는지 확인해 보겠습니다.


$ ps -ef | grep mongo

  501  3609     1   0 10:44PM ??         0:01.75 /usr/local/opt/mongodb/bin/mongod --config /usr/local/etc/mongod.conf

  501  3648   924   0 10:52PM ttys001    0:00.00 grep mongo


Mongo DB 프로세스를 종료하기 위해서는 마찬가지로 brew 를 이용하면 됩니다.


$ brew services stop mongodb

Stopping `mongodb`... (might take a while)

==> Successfully stopped `mongodb` (label: homebrew.mxcl.mongodb)


- NoPD -

저작자 표시 비영리
신고
Posted by 노피디
HTTP 2.02016.07.04 16:02

웹 컨텐츠 전송을 위한 프로토콜의 대세가 h2 혹은 http/2 로 자리잡아 가면서 맥(Mac)의 쉘에서도 http/2를 테스트 해야하시는 분들이 많이 늘었을 것으로 생각됩니다. 알려진 내용에 따르면 curl 의 7.34.1 버전 이후에는 --http2 옵션을 통해 http2 로 서버와 통신을 하도록 강제할 수 있지만 환경에 따라서 안되는 경우가 많습니다. curl 은 http/2 를 지원하기 위해 nghttp2 라이브러리를 이용하고 있기 때문에 우선은 nghttp2 를 설치해야 합니다.




nghttp2 가 설치되면 이를 이용해서 curl 을 다시 build 하거나 설치해야 합니다. 홈브루(Homebrew)를 이용하면 간단하게 새로운 버전으로 빌드를 하면서 설치할 수 있으니 아래의 커맨드를 참고해서 설치를 진행하도록 합시다. 아래와 같이 설치한 후 brew info curl 명령을 통해 nghttp2 에 초록색 체크박스가 잘 들어왔다면 일단 설치는 제대로 잘 된거라 봐도 되겠습니다.





그런데 여기까지 하고나서도 curl 을 --http2 옵션으로 실행했을 때 지원하지 않는 프로토콜이라고 에러가 떨어진다면 심볼릭 링크를 한번 교체해줄 필요가 있습니다. 환경 설정에 따라, 사용자 계정에 따라 sudo 를 통해서 권한 상승을 해야 할 필요도 있으니 상황에 따라 적절한 옵션으로 심볼릭 링크를 교체해 주시면 되겠습니다. 




여기까지 해서 마무리가 잘 되었다면 curl --http2 옵션으로 http2 가 활성화된 사이트들, 예를 들어서 아카마이의 https://http2.akamai.com 이라던가 구글 메인 페이지 (https://www.google.com) 쪽으로 요청을 던져볼 수 있게 되셨을 겁니다. 일단 개인적으로 여기까지 해서 문제는 없었습니다만 다른 문제를 겪는 분이 계시다면 댓글로 남겨주시면 한번 살펴보도록 하겠습니다!



- NoPD -




저작자 표시 비영리
신고
Posted by 노피디
Development/node.js2016.04.12 16:42

CentOS 환경에서 NPM (node package manager) 와 node.js 를 설치하는 방법을 정리해 봅니다. 환경 셋업을 자주 하지 않다보니 필요할때마다 겪는 시행착오를 줄이기 위해서 블로그에 적어둡니다 ^^;; 주기적으로 디지털 오션을 통해서 서비스 받고 있는 뉴욕 가상머신과 싱가폴 가상머신을 깨끗하게 정리하곤 합니다. 왠지 대청소를 하는 기분이라... 이렇게 해놓고 나면 바로 밀려오는 것이 패키지 설치에 대한 귀차니즘이죠.


간단한 테스트를 할일이 있어 DNS 셋업을 하고보니 가상머신에 아무런 패키지도 설치되지 않은 클린 설치라는 것을 발견했습니다. 이미지를 구워 놓아도 되련만, 그 이미지 조차도 왠지 찜찜해서 종종 하는 작업이 왠지 모르게 아깝게 느껴집니다. 오늘 정리하는 내용은 CentOS 에서 (버전은 6.7 입니다) yum repository 를 업데이트하고 nodejs, npm 을 설치하는 방법입니다.


# sudo yum install epel-release


yum 에 설정된 기본 repository 에는 nodejs 와 npm 이 존재하지 않습니다. 대신 epel repository 에 존재하는데요, epel repository 를 사용하기 위해서 위의 명령으로 epel 을 이용할 수 있도록 해봤습니다.


# yum install nodejs npm --enablerepo=epel


yum 명령으로 nodejs 와 npm 을 한번에 설치해 보겠습니다. 새롭게 준비한 epel repository 를 이용하기 위해서는 yum 옵션으로 --enablerepo=[repository이름] 을 지정해 주셔야 합니다. 위의 커맨드처럼 입력하시면 되겠죠? 약간의 시간이면 두 패키지와 종속된 패키지들이 모두 설치가 완료됩니다. 중간중간 인터렉티브하게 물어보는 질의에는 y 를 눌러주시면 됩니다. 


# npm install -g n


간편한 nodejs 버전 관리를 위해서는 n 을 설치해 주어야겠지요? 이제 npm 이 생겼으니 npm install -g n 명령으로 n 을 설치해 줍니다. 다른 지역의 가상머신과 node.js 버전을 맞춰주기 위해서 4.4.2 버전을 설치했습니다. 


# n 4.4.2


     install : node-v4.4.2

       mkdir : /usr/local/n/versions/node/4.4.2

       fetch : https://nodejs.org/dist/v4.4.2/node-v4.4.2-linux-x64.tar.gz

######################################################################## 100.0%

   installed : v4.4.2


간단한 테스트를 해보기 위해서는 node.js 의 핵심 패키지가 필요하겠죠. express 패키지가 그나마 익숙해서 요것까지 설치를 했습니다. 


# npm install -g express


- NoPD -

저작자 표시 비영리
신고
Posted by 노피디
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 노피디
Cloud & Dev. Story2015.04.28 10:00

미국시간으로 4월 29일 부터 3일간 샌프란시스코에서 마이크로소프트의 개발자 컨퍼런스인 빌드(Build) 2015가 개최됩니다. 예년의 행사가 그러했듯 이번 행사도 다양한 주제로 마이크로소프트의 기술을 비롯하여 업계의 동향을 알아볼 수 있는 알찬 세션들이 준비된 것 같습니다. 직접 현장에서 참석하지 못하는 아쉬움은 채널9 등 여러 채널을 통해서 달래야 할 것 같습니다. 너무 많은 주제가 다루어지기 때문에 무턱대고 세션 제목만 보고 뛰어들기 보다는 마이크로소프트가 가이드하는 난이도에 따라 세션을 선택하면 좋을 것 같습니다.





워낙 다양한 주제가 다루어지기 때문에 어떤 특정한 주제가 핵심이다라고 말하긴 힘들겠습니다만 여러 사업들 중에서 가장 순항을 하고 있는 애져(Azure)와 곧 출시될 윈도10(Windows 10)이 많은 주제들의 중심에 서 있는 건 확실해 보입니다. 두가지 주제가 아무래도 개발자들이나 IT 종사자들 사이에서 가장 관심있는 주제가 될 수 밖에 없나 봅니다. 마이크로소프트 입장에서도 강한 녀석들이 더 강해질 수 있도록 지원사격 하는 것이 당연한 이치일 것이겠구요!



한편 너무 많은 세션들을 어떻게 골라서 들어야 할지 모르겠다 싶으시다면 빌드 모바일 앱을 이용해서 알람도 미리 받고 스케쥴링도 해보시면 도움이 많이 된다고 합니다. 저도 아직 써보지는 않았지만 빌드 컨퍼런스 참여하는 분들에서부터 원격으로 듣는 분들까지 스케쥴링을 위해서는 필수적으로 쓰면 좋은 앱이라고 하니 한번 이용해 보시기 바랍니다!


채널9에서 빌드 컨퍼런스 일정 등 자세히 살펴보기 [바로가기]

빌드 2015 공식 웹사이트 [바로가기]

빌드 공식 모바일 앱 다운로드 [바로가기]



저작자 표시 비영리
신고
Posted by 노피디
Cloud & Dev. Story2015.03.23 17:47

인터넷과 네트워크의 속도는 점점 빨라지고 있습니다. 유선망은 물론이고 무선망 역시 엄청난 비율로 대역폭과 전송속도가 빨라지고 있습니다. 하지만 이에 발맞추어 웹 기반의 컨텐츠들은 점점 더 사이즈가 커지고 있을뿐만 아니라 동영상, 이미지, 동적인 구성으로 리치(Rich)해지고 있으며 여러 서비스들이 서로 Open API 등으로 얽히면서 성능을 최적화 하는 것이 점점 어려워지고 있습니다. 필요해 의해 기능구성이 끝난 웹 사이트가 보다 최적의 속도를 낼 수 있도록 하려면 만들어진 산출물을 잘 분석하는 것이 중요합니다.


야후(Yahoo)를 비롯한 유수의 IT 기업들은 웹 사이트를 최적화 하기 위한 여러가지 방법들을 제시하고 있습니다. 각 브라우저가 제공 가능한 최대 동시 접속 도메인의 수를 활용하는 도메인 샤딩(Domain Sharding)을 제안하고 자바스크립트나 CSS 를 가능한 범위에서 인라인(Inline)처리하고 미니피케이션(Minification)을 적용하는 것이 대표적입니다. 하지만 이런 최적화 작업이 서드 파티(3rd Party) 플러그 인이라던가 라이브러리에 적용되어야 하는 경우를 먼저 발라내는 것이 중요합니다.





리퀘스트 맵 제너레이터(Request Map Generator)는 현재 웹 사이트가 어떤 컨텐츠들을 어떠한 도메인과 서비스에서 연동하고 있는지를 분석해주는 도구입니다. 단순히 텍스트를 중심으로 분석해주는 것이 아니라 분석된 결과를 미려하고 인터렉티브한 결과 페이지로 제공하기 때문에 분석의 재미까지 더해주는 도구입니다. 대표적인 웹 사이트 성능측정 도구인 웹페이지테스트(Webpagetest.org)를 근간으로 만들어진 서비스이기 때문에 분석 결과는 무척 신뢰할만합니다.


단순히 웹 사이트를 워터폴 차트(Water-fall) 만으로 분석하고 최적화 할 포인트를 찾아내는 것이 지루했다면 리퀘스트 맵 제너레이터를 이용해서 재미있는 분석을 해보시는 건 어떨까요? 분석 결과를 적절히 캡쳐해서 분석 보고서에 활용한다면 주변 분들이나 보스에게도 사랑받는 개발자, 운영자가 될 수 있을 것만 같습니다. 웹 사이트 성능 분석~ 어렵지 않아요!





naver.com 분석결과



리퀘스트 맵 제너레이터로 웹 사이트 분석해보기 [바로가기]



저작자 표시 비영리
신고
Posted by 노피디
Cloud & Dev. Story2014.04.16 15:24
요즘 웹 업계가 난리입니다. 사실상 표준처럼 사용되고 있는 오픈소스 라이브러리인 OpenSSL 에서 취약점이 발견되면서 SSL 터널링과 관계 없이 사용자의 민감한 정보가 노출될 수 있는 문제가 확인되었기 때문입니다. OpenSSL 라이브러리에 대한 패치와 기존에 발급된 인증서 갱신도 중요하지만 Heartbleed 가 왜 이리 큰 이슈가 되는지 아는 것도 중요해 보입니다.

워낙 관련된 문서들이 많이 나왔고 테크 블로그나 IT 전문 매체에서도 잘 다루어 준 덕분에 이해하기 어렵지 않지만 누군가에게 이걸 다시 설명하라고 하면 구차하고 잡다한 이야기를 늘어놓게 되지요. 간단하게 정리된 웹 사이트가 있어서 소개해 드리면서 해당 사이트가 그림으로 이해하기 쉽게 그려둔 그림을 공유해 봅니다. 이해가 아주 깔끔하게 되네요!

출처 : Forumsys (http://www.forumsys.com/api-security/how-to-fix-openssl-heartbleed-security-flaw/)

 
평상시 사용자들이 브라우저로 TLS/SSL (쉽게 말해 HTTPS 요청이라고 생각하시면 됩니다) 터널링을 맺고 나면 OpenSSL 라이브러리는 생성된 세션이 유효함을 확인하기 위해 5바이트의 HELLO 메세지를 전송하는 Heartbeat (심장박동?) 를 전달하게 됩니다. 클라이언트 (보통 브라우저겠죠) 와 서버는 지속적으로 이 행위(?)를 반복하며 채널을 유지합니다.

출처 : Forumsys (http://www.forumsys.com/api-security/how-to-fix-openssl-heartbleed-security-flaw/)


그런데 이번에 발견된 OpenSSL 의 문제점은 Heartbeat 를 5바이트 이상으로 전송하더라도 이에 대해서 서버가 같은 바이트 크기만큼 메모리의 정보를 읽어서 응답하는 데에 있습니다. 악의적인 사용자가 서버의 메모리에 저장된 특정한 주소의 정보들을 쉽게 추출해낼 수 있는 방법이 생긴 것이지요. 이의 해결을 위해서는 OpenSSL 라이브러리를 갱신하고 발급된 인증서를 재발급 받는 등의 절차가 필요합니다. 보다 자세한 내용은 원문을 참고하시기 바랍니다!





저작자 표시
신고
Posted by 노피디
요즘 QR Code 를 비롯하여 Google Goggles 와 같은 이미지, 코드 인식 어플이 참 많습니다.
사실 개인 개발자들이 이런 구현을 하기란 쉽지 않은데요 (특히 이미지 인식)
MoodStocks SAS 라는 회사에서 iPhone 용 이미지 인식 SDK 를 내놓았습니다.
물론 무료는 아니지만 사용하는 동안만 월단위로 과금하는 방식이라고 합니다.
금액은... 문의 해봐야 할듯 ^^


이 SDK 를 이용한 Moodstocks Contacts 어플이나 Moodstocks Notes 앱을 받아보시면
Moodstocks SDK 가 어떤 역할을 하는지 쉽게 확인하실 수 있습니다.
이미지 인식 기능에 목말라 하시던 분들께 좋은 소식이 아닐까 싶네요!


- NoPD -

신고
Posted by 노피디
Development2010.12.20 14:23
트위터를 보고 있으면 정말 주옥같은 트윗들이 참 많이 올라옵니다. 시간내서 찾으려고 해도 찾기 힘든 소중한 정보들을 필터링해서 올려주시는 여러 전문가들의 자발적인 트윗은 정말 큰 힘이됩니다! 오늘 소개해드리는 링크들도 아마 여러 분들이 좋아하실 것 같습니다!

이 세상 대부분 Mobile 기기들의 에뮬레이터!

첫번째 소개해드리는 사이트는 Mobile Web Programming 이라는 블로그입니다. 오라일리에서 나온 Mobile Web 이라는 책을 쓴 저자의 블로그 이기도 합니다. 넘쳐나는 모바일 기기들을 하나하나 구입하는 건 사실상 불가능한 일. 에뮬레이터와 시뮬레이터로 기기 없이 왠만한 것은 테스트가 가능한 시대이지요! 하지만 그걸 찾는것도 번거롭다면 아래 링크를 참조해 보세요!



개발자와 디자이너를 위한 바탕화면 8종

포토샵, jQuery... 개발자와 디자이너라면 다들 한번씩 들어 봤음직한 이름들입니다. 이 도구들은 여러 전문 서적이나 레퍼런스를 통해서 배우고 사용할 수 있지만 단축키, 정리된 API 문서가 있으면 더욱 힘을 발휘하곤 합니다. 이런 정보를 바탕화면에 깔아두고 작업한다면 더욱 편리하겠지요? 개발자와 디자이너를 위한 바탕화면 8종 셋트는 바로 여러분을 위한 자료들입니다!


>>> 바로가기 : http://bit.ly/i1mBmn

- NoPD -
신고
Posted by 노피디

티스토리 툴바