Node.js 를 시작하면서 제일 먼저, 혹은 많이 듣게 되는 이야기가 콜백지옥이다. 그런 상태로 노드를 접하고 사용하기 시작하니 혼란을 부르는 부분이 있는데 이번에 콜백(callback)을 대해 정리를 하는 시간을 갖도록 해본다. 언어든 기술이든 기초가 중요하고 기초를 탄탄히 하면 콜백지옥에서 어느순간 자연스럽게 벗어날 수 있지 않을까? 노드(정확히는 자바스크립트)에서 함수는 일급 객체로 취급된다. 위키백과를 참고하면 일급 객체가 되기 위해서는 아래 조건이 충족되어야 한다.변수나 데이터 구조안에 담을 수 있다.파라미터로 전달 할 수 있다.반환값(return value)으로 사용할 수 있다.할당에 사용된 이름과 관계없이 고유한 구별이 가능하다.동적으로 프로퍼티 할당이 가능하다.이 말을 이해하기 위해서 아..
AWS 오로라팀의 사내 방문이 있었다. 오로라의 기술적인 내용에 대한 질의응답이 있었고 새로운 기능에 대한 가이드까지 완벽한 시간을 갖을 수 있었다. 통역까지 지원된 기술 이야기는 처음 들어본 듯. 통역 하시는 분이 관련 기술에 미흡해서 완벽하지는 않았지만 AWS 다른 직원분의 보충 설명이 이어져서 어렵지 않게 오로라의 내부 구조를 들여다 볼 수 있었다. 당장 (내가) 오로라를 어디에 사용할 일은 없지만 귀동냥으로 듣게 되는 것들이 배경지식을 풍성하게 만드는데 얼마나 큰 도움이 되는지 잘 알고 있기 때문에 매우 흡족한 시간이 되었다. 그나저나 AWS 개인 계정은 언제 만드나... 다른 일로 매일 미루고 있는데 올해는 꼭 만들고 여러가지 정리하는 시간을 갖아야겠다.
회사에 구내식당이 있으면 안좋은 이유가 한가지 있다. 바로.. 밖에 나갈 일이 없어진다는 점. 햇빛을 직접 받을 일이 없어진다. 포유류에게 광합성은 필수가 아니던가. 더욱이 삼시세끼가 무료로 제공되는 곳이라면 마치 사육(?) 당하는 느낌으로 아침 먹고 일하고 점심 먹고 일하고 (...) 행복한 투정을 부리게 된다. 사실 매일 점심 뭐먹을지 정하는 것도 직장인들의 고충이라면 고충이거덩. 딱 우리 회사가 그렇다. 삼시세끼 무료 제공. 한편 구내식당이 있어서 좋은점은 밖에 날씨와 무관하게 맛점을 할 수 있다는게 있겠다. :-) 특히 요즘처럼 미세먼지가 극성인 날은 돌아다니지 않는게 최선이니까. 햇빛을 직접 받을 일이 없다는 것 이외에 내가 사내 구내식당에 갖는 유일한 불만은.. 식판이 너무 작아서 담을..
아방이를 탄지 햇수로 8년정도 된 것 같은데 워셔액을 직접 갈아본 적이 없다. 항상 때가 되면 부모님이 리필을 해주셨던 이유인데 어느날 갑자기 나오지 않는 워셔액... 당황스러웠지만 다행히 꼭 필요한 상황은 아니라 주차장에서 갈아보았다. 마침 트렁크에 여분의 워셔액이 있었다. 일단 워셔액 넣으려면 보닛(본네트)을 열어줘야 하는데 운전석에 관련 스위치를 당겨주면 덜컹 하는 소리와 함께 보닛이 반쯤 열린다. 보닛 중앙에 손을 넣고 레버를 살짝 눌러줘야 완전히 들어 올릴 수 있는데 열어서 보면 아래와 같은 구성을 확인할 수 있다. 여기서 워셔액은 좌측 모퉁이에 파란 뚜껑의 주입구를 통해 넣을 수 있다. 어렵지 않게 찾을 수 있을 것이다. (다음에 세차할 때 조금 더 신경 써야겠다. 너무 더럽네..) 아..
티스토리 이벤트가 당첨되서 굿즈가 배송되었다. 노트와 볼펜을 포함해서 스티커 뭉치. 스티커의 일부는 홀로그램. 당연히 스티커는 바로 소진되었다 (...) 나머지 아이템은 꽤 고급스러운데 특히 볼펜이 올블랙에 묵직한 느낌이라 꽤 귀티난다. 하지만 모나미 같다는 점... 아무튼 이벤트 당첨이라니. 올해 중으로 블로그 이전을 하려는 계획을 엿들었나? ;-) 향간에 티스토리는 카카오에서 버려진 서비스라는 이야기가 많이 돌고 있는데 블로거들의 여러가지 피드백을 잘 듣고 현주소에 맞는 양질의 서비스가 제공되기를 바라본다. 솔직히 지금은 타 블로그에 비해 장점은 찾기 힘들고 오히려 단점이 많이 보이잖아? 화이팅!!
본격적으로 맥 유저가 된지 어느덧 8개월쯤 된 것 같다. 맥을 선택한 이유는 여러가지가 있지만 아래와 같이 압축할 수 있겠다. - 터미널(프롬프트)의 필요성 (feat. 개발자) - 휴대성 (feat. 개발자) - 간지 사실 굳이 맥이 아니더라도 우분투 등의 *NIX 기반 시스템이면 뭐든 상관은 없었다. 특별히 애플제품을 잔뜩 소유하고 있다거나 애플빠도 아니니 결국 간지 때문에 맥을 선택한듯. 아무튼 맥프레(맥북 프로 레티나)를 구입하기로 결정하고나서 가장 큰 고민이 13인치 vs 15인치였다. 난 결국 휴대성 등을 고려해서 13인치를 선택했고 현재 회사에서는 15인치를 사용하고 있기 때문에 누군가를 위해 주관적이지만 객관적인(응?) 조언을 할 수 있겠다. 우선 혹여라도 휴대성 때문에 15인치를 포..
pm2 에서 관리되는 모듈은 대부분이 데몬 형태이고 각각은 메모리에 항상 상주해야 하는 서비스일 것이다. 운영중에 죽는 모듈은 pm2 에 의해서 자동으로 재시작되겠지만 시스템이 재부팅된다면 어떨까? 당연히 답은 No 다. 아직 우리는 pm2 에게 그런 일을 시키지 않았으니까.리눅스의 부팅 시스템 init.d 같은 곳에 스크립트를 만들어 넣는 등의 방법으로 부팅시에 우리 모듈을 시작시킬 수 있다. 하지만 이런 귀찮은 절차를 이미 pm2 에서는 자동으로 제공해주고 있다. 옵션 하나만 입력하면 된다. 바로 아래서 살펴보도록 하자. 시스템에는 우리의 모듈 server 가 돌고 있는 상황이다.현재 돌고 있는 서비스에 대해서 부팅 시스템에 등록하는 방법은 매우 간단하다. pm2 에 startup 옵션을 넘겨주면 된..
지금 대한민국을 대표하는 키워드 중 하나. 미투운동이 한참이다. 연예인부터 정치인, 예술계까지 온통 난리다. 그간 감춰져있던 더러운 음지가 서서히 드러나고 있는 듯한 느낌이다. 사실 처음부터 미투가 이렇게 핫하게 진행된 것은 아니다. 피해자중 극소수의 큰 용기들이 모여서 사회를 강타했다. 커뮤니티에 성추행을 했다고 고발된 명단만 벌써 스무명 이상 되는 듯. 이중 대부분이 사실로 확인되고 있지만 사회적 분위기를 타서 거짓이나 과장되는 경우도 심심치 않게 발견된다. 사회가 이렇게 많은 관심을 갖고 추악한 면모를 모두 청소하려는 시점에 미투운동의 본질이 훼손되서는 안되겠다. 아무튼 소수의 용기있는 작은 몸짓이 사회를 움직이는 모습에 큰 감격. 우리 아이가 살아갈 대한민국은 훨씬 더 좋은 모습이기를. 모든 미..
Google Cloud Platform (GCP) 를 현업에서 이용하는 케이스가 아니면 대부분 퍼블릭 클라우드를 공부하는 목적으로 이용하는 경우가 많을 것이다. 이 경우에는 1년동안 사용할 수 있는 $300 크레딧으로 클라우드를 충분히 즐길 수 있다. 1년이 지난다고 계정이 (유료로) 자동 전환되지 않기 때문에 필요 시에 유료 계정으로 전환해줘야 한다. 그대로 방치하는 경우에는 사용하던 모든 기능이 잠기기 때문에 아차하는 순간 소중한 데이터를 놓칠 수 있게 된다. 또한 1년이 지날 때 공식적으로는 유로로 자동 전환이 되지 않는다고 되어 있지만 아주 간혹 청구되는 경우가 있을 수 있다고 한다. - 고객센터에 연결해서 이런저런 과정을 거치면 환급받을 수 있겠지만 여간 귀찮은 일이 아닐 수 없겠다.아무튼 이런..
노드를 더 우아하게 해주는 주변 프로그램인 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 ..
- Total
- Today
- Yesterday