노드를 더 우아하게 해주는 주변 프로그램인 npm 을 이해하도록 해보자. npm 은 Node.js Package Manager 로 단어 그대로 패키지 관리를 돕는다. 언뜻보면 python 의 pip 와 그 형상이 비슷해보이기도 한다. 하지만 npm 은 pip 처럼 패키지를 설치하는 기능을 포함하는 것으로 이해하는게 맞다. 이 장황한 이야기를 풀어내기 위해 API 서버를 노드 프로그램으로 만들어가며 이야기 하도록 하자. 우선 노드 프로젝트를 시작할 때 server.js 부터 만드는게 아니라 npm 을 이용해서 프로젝트를 생성한다. $ npm init 이렇게하면 몇가지 문답을 거친후 디렉터리에 package.json 파일이 생성된다. 대략 가볍게 훑어보고 적당한 값을 입력하자. 빈 값으로 엔터를 입력하게되면..
이번에는 노드를 더 우아하게 사용할 수 있도록 돕는 PM2 에 대해 이야기를 해본다. PM2 는 Process Manager 의 약자로 이미 단어에서 모든게 설명 되는데 노드 프로세스를 관리해주는 역할을 한다. 아래에서 간단한 노드 프로그램을 기반으로 PM2 를 차근차근 이해하도록 하자. 보통 서버에 데몬 형태의 application 을 개발하게 되면 여러가지 것들을 신경써야 했다. 이를테면 application 에서 남기는 로그에 대한 처리( filesystem 을 이용해서 남기는 방법, 날짜 포함, rotate, etc ), 프로세스가 죽었을 때에 대한 처리( restart ), 부팅시에 자동 실행 등 무수히 많은 것들이 있다. 이런 귀찮은 것들을 몽땅 관리해주는 프로세스가 있다면 얼마나 편할까? (..
crontab 은 어떤 주기적인 처리를 꽤 영리하게 도와주는 Linux 시스템에 없어서는 안될 스케줄러이다. 특정시간에 파일시스템을 정리한다던가 주기적으로 알람을 발송한다던가 또는 시스템 자원을 모니터링한다던가 등등 많은 활용분야가 있겠다.이렇게 편한 크론탭을 사용할 때 잊어서는 안되는 중요한 사실이 있다. 바로 스케줄러에 의해 실행되는 job 은 [cron] 권한으로 실행된다는 점인데 그렇기 때문에 우리는 아래 두가지 사항을 항상 체크해야 한다.스케줄링 하려는 명령어의 PATH (환경변수)가 cron 에게 있는지.스케줄링 하려는 명령어를 cron 이 실행시킬 수 있는지 ( = 권한이 있는지 )첫번째 내용의 경우에는 그냥 습관처럼 명령어의 절대경로를 써주면 해결된다. 극단적인 예를들어 리눅스의 date ..
Redis 데이터 타입에 대한 글은 인터넷에 널리고 널렸다. 당장 그 이론을 한번 더 언급하는 것은 괜한 비용 낭비로 생각되니 실전 운영에 필요한 기초 예제 몇 가지를 공유해본다. 이번 글에서는 List 와 Hash 에 대해 집중적으로 다룬다.List리스트 형태로 데이터를 관리할 때 용이하게 사용되는 데이터 타입이다. 데이터는 LPUSH, RPUSH 로 적재하고 LPOP, RPOP 으로 꺼낼 수 있다. 한편 조회는 LRANGE, LLEN 을 사용한다. 아래에서 데이터를 확인하며 구체적으로 알아보자.이러한 리스트가 있을 때 LPUSH, LPOP 은 배열의 좌측에 있는 데이터를 제어할 수 있다. 즉, LPUSH 로 새로운 데이터 8을 넣게 되면 아래와 같이 데이터가 들어간다. 이때 LPOP 도 마찬가지로 좌..
그간 Low-Level language 만 다루다보니 개발툴로 vim 이외에는 관심이 없었다. 오로지 vim 과 emacs 의 전쟁에만 관심이 있을 뿐 visual studio (VS), eclipse, pycharm 같은 툴에는 관심이 있을리가. vim 으로 python 까지는 여차저차 해볼만 했는데 더 위쪽에 위치한 High-Level language 로 올라오니 여간 벅찬게 아니다. 잠깐 소스 확인 정도는 무난한데 개발하려면 여러가지 의식해야 하는 것들이 많다. 제일 빡센건 역시 ctags 의 부재로 인한 함수 찾기가 녹록지 않다는 점.아무튼 그래서 고급언어에서 적당히 사용할만한 툴을 찾던 중 atom 이 눈에 들어왔다. vim 모드로 사용할 수 있도록 Plug-in (vim-mode-plus) 까..
한빛미디어 기계학습 첫걸음 계보에 또 한권의 책이 추가되었다. 보통 기계학습이라고 하면 비지도학습, 지도학습, 강화학습, 이렇게 세 가지로 구분해서 이 야기한다. 이번책은 "강화학습"에 대한 이야기를 풀어내는 강화학습 첫걸음이다. 그간 첫 걸음 시리즈를 무척 유익하게 봐왔었기 때문에 이번책에 대한 기대 또한 상당했는데 역시 만족스러웠다.위에 책 사진만 보면 상당히 얇기 때문에 거부감이 없겠다. 하지만 이 책은 "강화학습"에 대한 첫걸음이지 기계학습에 대한 첫걸음 책이 아니기 때문에 다양한 사전지식을 필요로 한다. 기본적으로 python, TensorFlow, 기계학습, 약간의 수학적 지식에 대한 부분은 어느정도 감이 있는 상태에서 시작하는 것을 권한다. 아래는 이러한 부분을 채워줄 수 있는 한빛미디어에서..
@퇴사자의 글입니다. 시간이 지남에 따라 현실과 글의 내용이 다를 수 있다는 점을 참고하십시오. :-) WITHINNOVATION: WITHCALEY @이 글은 회사의 입장과는 상관 없는 글쓴이의 개인적인 견해입니다. 현재 서비스플랫폼팀에서 소프트웨어 엔지니어로 일하고 있기 때문에 infra/Backend 에 초점을 맞췄으며 회사에는 당연히(!) 진리의 팀by팀, 부서by부서가 존재할 것입니다. 모든 팀에 해당하는 내용이 아님을 감안하고 읽어주십시오. 또한 개인 블로그의 글이기 때문에 반말체인 것도 양해 말씀 드립니다. (+젊은이는 위드이노베이션 내에서 직원을 지칭하는 용어입니다.) 극성인 미세먼지 덕분에 예년보다 따뜻한 겨울이었지만 내게는 유독 추웠던 겨울. 칼리(caley)라는 이름으로 위드이노베이션..
@아래 내용은 TPU quota 가 신청되어 있어야 사용 가능한 부분입니다. 참고 하시기 바랍니다.TPU 가 일반에 공개된 것과 비슷한 시기에 Google Compute Engine (GCE) 에도 TPU 메뉴가 생성되었다. 와우, 이제 우리의 인스턴스 내에서 TensorFlow 를 통해 기계학습을 진행할 때 TPU 를 지정해서 사용할 수 있게 된 것이다. 이 부분은 CloudML 과는 전혀 상관이 없으므로 오해하지 않도록 한다. Google Cloud Platform (GCP) 의 모든 기능이 그러하듯이 Cloud TPU 도 API 사용 설정을 통해 기능을 활성화시켜야 사용할 수 있다. 기능을 활성화하면 잠시 후 아래와 같은 메뉴를 볼 수 있다. 일단 TPU 노드를 생성해보자. (빠른 시작 사용을 통해..
구글클라우드 안에서 우리는 CPU, GPU, TPU를 사용할 수 있다는 이야기를 항상 들어왔다. 이세돌 9단과 알파고의 경기때부터 TPU는 놀라운 성능을 보여줬지만 정작 일반에 공개되어 있지 않았기 때문에 기계학습을 다루는 분들께는 사실 그림의 떡이나 마찬가지였다.- 일부 기업은 별도의 신청 프로세스를 통해 이미 사용할 수 있었다. 아무튼, 그러던 TPU가 드디어 일반에 공개되었다. AutoML과 마찬가지로 다소 까다로울 수 있는 심사 과정이 있지만 사용해볼 수 있다는 사실에 많은 엔지니어가 벅차오를 것으로 기대된다. 자세한 설명은 아래 링크로 대체한다. https://cloud.google.com/tpu/ 제일 해보고 싶은 것이 TF 예제를 TPU로 돌렸을 때 K80, P100 대비 얼마나 차이나는지 ..
매직마우스2에 이어서 결국 매직키보드2도 구매. 키보드도 마우스와 마찬가지로 1, 2의 차이는 배터리인지 usb-c type 충전식인지 차이만 있다. 포장을 뜯고 키보드를 만져보니 생각보다 훨씬(!) 가볍다. 무게를 고려했을 때 미끄러짐이 예상되지만 장패드의 영향 때문인지 전혀 그렇지 않다. 전체적인 두께도 얇아서 마치 노트북 자판을 타이핑하는 듯한 착각이 든다. 자판에 글자가 각인되어 있지 않은 무각 버전도 있는듯 하지만 아직 여러가지 키에 익숙하지 않기 때문에 간지(!)는 잠시 포기하도록 한다. 내가 선택한 모델은 키보드 우측에 키패드가 없는 텐키리스 모델인데 처음에는 상당히 어색하게 느껴졌다. 아마도 텐키리스는 처음이라 그런듯. 하지만 점점 익숙해지고 숫자키가 있는 위치에 마..
윈도우에 질려 리눅스로 넘어온 대부분의 사용자들이 가장 불편하게 느끼는 부분이 바로 터미널에 대한 높은 의존도일 것이다. 리눅스의 높은 진입장벽은 그렇게 만들어진다. 사실 요즘 세상이 좋아져서 리눅스도 윈도우 뺨치는 GUI 가 많이 등장했지만 우리가 리눅스를 사용하는 근본적인 이유는 시스템의 모든 것을 스마트하게 제어할 수 있는 터미널의 존재 때문이니 GUI 는 중요하지 않다. (윈도우에는 command 가 터미널의 역할을 수행한다고 할 수 있다.) 어느정도 터미널을 익숙하게 사용할 수 있게되면 그때부터는 그 매력에서 빠져나오지 못할 것이다. 터미널을 사용한다는 것은 다양한 shell 을 통해 시스템의 환경을 설정하고 조작하는 것을 의미하겠다. shell 은 시스템 제어와 모니터링을 위한 다양한 명령어를..
기다리던 매직마우스2가 내손에 들어왔다. 내 경우에는 맥북프로+듀얼모니터로 작업을 하다보니 노트북은 자연스럽게 받침대에 두고 써야하는 상황이었다. 노트북 받침대를 쓰기위에 마우스 지름이라니.. 언뜻 이해가 안되지만 회사가 꽤 건조해서 하루종일 노트북에 직접 손을두고 사용하자니 뭔가 전기인간이 되어가는 듯한 괜한 기분이... 여튼 그렇게 매직마우스2를 구매하게 됐다. 마우스를 애플 제품으로 살때는 선택의 폭이 없다. 1 아니면 2. 1은 배터리를 넣고 동작시키는 형태고 2는 충전 케이블이 제공된다. 아이폰7+를 사용하고 있던터라 충전 케이블은 핸드폰 케이블을 그대로 사용하면 된다. 마우스에 동봉되어있는 케이블은 뜯을 필요도 없다. 한번 완충하면 대략 한달은 간다고 한다. 배터리 사용량도 상단 상태바..
일단 노드를 시작한지 얼마 안되서 관련 지식은 대부분 인터넷으로 접하고 있는데 여기 널린 글들에 문제점이 많다. 노드라고 하는 언어가 javascript 를 server-side 에서 동작하도록 지원하면서 백만명의 프론트 개발자를 백엔드에 설 수 있게 해줬다. 한편 웹 프레임웍 자체의 진입장벽이 다른 언어에 비해 상대적으로 낮은데 각설하고 이게 뭐가 문제냐하면 아무리 자바스크립트가 ES6 까지 진화하고 뭣했다고 해도 콜백 지옥에서 광명을 찾았다는 글을 찾기가 힘들다는 것이다. 대부분이 허덕이고 있으며 그나마 이해했다고 싸질러놓은 글도 의심스럽기짝이 없다. 대부분의 백/프론트엔드 개발자가 하나같이 두리뭉실한 지식을 인터넷에 써 놓고, 그걸 또 많은 사람들이 퍼나르고.. 여튼 제대로 된 지식이나 먹음직스럽게..
이전 편까지 우리는 CloudML 이 무엇인지 살펴보고 모델을 클라우드에 던지고 결과를 받는 등 CloudML 전체 시나리오에 대한 이야기만 했다. 이번 글에서는 ML job 의 분산학습 아키텍처를 살펴보고 이해하도록 한다. 함께보면 좋은 글CloudML - 개념 CloudML - 기본 CloudML - 실전 심화Scale tierCloudML 은 training 을 돌릴 서버의 사양을 조정할 수 있는 Scale-tier 옵션을 제공하는데 그 안에는 BASIC, STANDARD_1, PREMIUM_1, BASIC_GPU 그리고 CUSTOM 까지 총 다섯가지 종류가 있다. CUSTOM 을 알아보기 전에 다른 네 가지 방식의 사양을 보자. Cloud ML Engine scale tier Compute Eng..
상세보기: http://www.tistory.com/thankyou/2017/tistory/4107322016년 결산에서 맛집 블로그라는 오점을 남겼었는데 이번에는 만회한듯 하다. 올해는 글을 작성할 때 웬만하면 "주제"를 선택했더니 정상적인 IT 블로그로 돌아왔다. 결산에 있는 몇 가지 항목을 살펴보는 시간을 갖도록 하자.우선 1년동안 111개의 글을 쓰는 부지런함을 보였다. 봄부터 초여름까지 글이 집중적으로 몰려있는 이유는 아무래도 올해 가장 큰 흥미를 느꼈던 Google Cloud Platform 을 공부하기 시작하면서 글을 기록했기 때문이겠다. 키워드는 무난하게 IT 쪽 용어들이 차지했다. 의외로 올해 가장 많은 부분 글을 작성한 GCP 단어 자체에 대한 것이 없다. 그렇다는 이야기는 신빙성이 약..
국내 콘퍼런스는 관심도 없다가 유독 해외에서 진행되는 콘퍼런스는 기를쓰고 참석하시는 분들. 대개는 실무와 크게 관련없는 높으신분들인 경우가 많다. 경비를 회사에서 다 지원해주니 해외 야유회라도 가는 마음일까? 오케이. 백번 양보해서 짬밥에 따라 견문이 (혹시라도) 넓을 수 있으니 인정. 그럼 회사가 비싼 돈으로 보내줬으니 다녀와서 최소한의 내용은 공유하시는게 어떤지? 이것도 못하면 둘중 하나다. 가서 알아들은 내용이 없거나 제대로 집중해서 듣지 않은 경우. 행사장 한바퀴 돌면서 대충 사진 몇 장 찍으며 액션 취하고 술마시러 가는 부류지. 설마 돌아와서 “별거 없더라”로 퉁치고 끝내는거면 레알 그건 회사의 돈을 축내는 벼룩이니 엄벌에 처해야 한다고 생각한다. 그를 벌할 수 없는 회사도 안타깝기는 마찬가지...
앞에서 CloudML 에 대한 이야기를 많이 했는데 사실 일반 VM instance (Compute Engine) 로 머신러닝을 이용하는 것에 비해 무엇이 좋은지 자세히 다루지 않았다. 이번 글을 통해 몇 가지 장점을 살펴보도록 하자. 비용아마도 가장 큰 장점이 되겠다. 다른 작업은 몰라도 머신러닝/딥러닝은 고사양 시스템을 필요로 하며 프로젝트에 따라 훈련시간이 굉장히 오래걸리기도 한다. GCE 는 사용하지 않을 때 중지하는 것이 비용을 절약할 수 있는 방법인데 딥러닝 training 이 언제 끝날지 알 수 없기 때문에 인스턴스를 무작정 켜놓을 수밖에 없다. 고사양 시스템으로 설정된 인스턴스를, 그것도 GPU 가 장착된 머신이라면 가격은 생각보다 끔찍할 수 있다. 반면 CloudML 은 인스턴스 없이 t..
2017년을 한 문장으로 요약하면 클라우드로 시작해서 클라우드로 끝난 한 해가 되겠다.가자, 클라우드로 2017년 1월에 개인 서버를 사용하기 위해 IDC와 AWS 사이에서 많은 고민을 했었다. 사실 그땐 AWS에 A도 모르던 시절인데 결국 난 Google Cloud 로 흘러왔다. 사실 지금도 여전히 AWS에 무지하지만, GCP는 20% 정도는 이해한 것 같다. 나머지 80%는 2018년도에 가능할까? 글쎄. 콘퍼런스 참석봄에 AWSomDay 를 시작으로 Google Cloud OnBoard, Google I/O Extended, Google 재야의고수, Google 판교, pycon2017, Devfest, 데이터야놀자, GDG송년회, withGCP2017 까지 각종 콘퍼런스와 행사를 누볐다. 콘퍼런스..
- Total
- Today
- Yesterday