728x90

터미널에서 로그파일을 핸들링하면서 자주쓰이는 명령들이 있습니다. 전체 파일을 출력하기 위해서 cat 명령을 사용하고 특정한 컬럼의 값만 출력하기 위해서 파이프로 연결된 awk 명령을 쓸 때가 많습니다. 그런데, 컬럼이 아주 많은 경우에 특정한 컬럼만 제외하고 나머지를 출력할 수 있는 방법이 있을까요? 컬럼이 적은 경우에는 필요한 필드를 나열하는 것도 괜찮지만, 수십개, 수백개의 컬럼이 있다면 그다지 좋은 방법이 될 수가 없습니다.


예를 들어 temp.txt 파일에 아래와 같이 스페이스로 구분된 10개의 컬럼이 있다고 해보겠습니다. 이 파일의 정보들 중에서 특정한 컬럼의 값만 추출하고 싶다면 awk 명령을 이용해서 print 예약어를 이용할 수 있을 겁니다. 


$ cat temp.txt

C1 C2 C3 C4 C5 C6 C7 C8 C9 C10

$ cat temp.txt | awk '{print $3, $5}'

C3 C5


이 데이터 파일에서 거꾸로 3번 컬럼과 5번 컬럼의 값을 제외한 나머지 컬럼의 값을 추출하려면 어떻게 해야 할까요? print 구문의 파라메터로 $3 과 $5 만 빼고 나열해도 되겠지만, 아래와 같이 명령을 입력하면 훨씬 빠르고 쉽게 특정한 컬럼만을 제외하고 데이터를 정제할 수 있게 됩니다.


$ cat temp.txt | awk '{$3=$5=""; print $0}'

C1 C2  C4  C6 C7 C8 C9 C10


동일한 결과물을 얻어내는 방법이 여러가지 있다면 그중에서 가장 간편한 방법을 택하는 것이 누가 뭐라해도 진리일 겁니다. 작업시간을 절약하고 더 집중해야 하는 것들에 몰입하는 하루 되시길 바랍니다!



728x90
728x90

간밤에 Node.js 의 v4.2.4 (LTS) 버전이 새롭게 업데이트 되었습니다. 이번 버전 업데이트에서도 정말 많은 버그들이 Fix 가 되었습니다. 자세한 업데이트 내역은 Node 공식 사이트에 등록된 릴리즈 노트를 확인해 보시기 바랍니다. 복기를 위해 간만에 개발용 리눅스 머신에 LTS 버전을 업데이트 하면서 사용했던 커맨드를 기록삼아 남겨둡니다. 혹시나 "Node.js 는 어떻게 업데이트 해야 하나요?" 하시는 분들을 위해 도움이 되었으면 합니다.


Node.js 는 두가지 버전으로 나뉘어져 출시(?)가 되고 있습니다. 짝수 버전에 해당하는 LTS 와 홀수 버전에 해당하는 Stable 이 바로 그것입니다. LTS 는 Long Term Support 의 약자로 Node.js 에서만 사용하는 용어는 아니고 말 그대로 "오랫동안 지원되는" 버전으로 안정성, 호환성에 포커스를 맞춘 버전입니다. 반면 Stable 버전은 용어의 의미와 다소 다르게 새로운 기능들이 적극적으로 반영되는 버전이니 (=이슈가 많을 수 있는?) 사용시 이를 감안해야 하겠습니다.




Node.js v4.2.4 (LTS) 버전 릴리즈 노트 확인하기 [바로가기]


Node.js 에서 사용하는 패키지들은 NPM 을 통해서 다들 관리를 하고 계실겁니다. 그런데 NPM 은 Node.js 자체의 버전을 관리해 주지는 않습니다. Node.js 의 버전을 관리하기 위해서는 NPM 을 이용하여 n 을 먼저 설치해야 합니다. n 은 Node.js 를 관리하기 위한 전용 도구로 이를 통해서 설치한 버전들은 특정한 경로에 저장되어 손쉽게 Node.js 의 버전을 변경해 가면서 활용할 수 있게 해줍니다. 참 편하쥬?




작업을 시작하기 전 노드의 버전을 확인해보면 v0.10.28 입니다. 오랫동안 쓸일이 없었던 가상머신이라 간만에 확인했더니 버전이 무척 낮습니다 ^^ 혹시나 하는 마음에 캐시를 비워주고 우선 n 으 설치했습니다. n 의 사용법은 무척 간단한데요 설치하려는 버전을 파라메터로 전달해 주면 됩니다. 새로 릴리즈된 버전이 4.2.4 이니 파라메터로 4.2.4 를 전달하면 알아서 새로운 버전을 다운로드 받아 설치를 진행합니다. 이렇게 다운로드 된 버전은 환경에 따라 다소 다를 수 있겠지만 설치 과정에 나온 "mkdir" 항목에 나온 경로에 저장되게 됩니다.


새로운 버전을 돌려보니 좀 이슈가 있다? 그러면 간단히 "n 0.10.28" 의 식으로 다시 버전을 변경하면 됩니다. 스샷에 보이는 것처럼 이미 로컬에 다운로드 되어 있기 때문에 별도로 다운로드 되는 과정 없이 버전이 변경됩니다. Node.js 를 이용한 개발도 편하지만 관리도 편한것이 사람들에게 지속적으로 사랑받는 이유가 아닐까 싶습니다!



728x90
728x90

대규모의 사용자 트레픽을 소화하기 위해서는 고민해야 할 것들이 많습니다. 서비스 오리진(Origin) 인프라의 유연함과 적절한 스토리지(Storage)을 확보해야 하는 것은 물론이고 갑작스런 사용자 폭주에 대비하여 충분한 대역폭(Bandwidth)도 갖추어야 합니다. 큰 규모의 기업이라면 그나마 이러한 준비를 하기 위한 투자(CapEx)가 가능하겠지만 작은 규모의 기업(SMB, SOHO)이나 스타트업(Start-up)이라면 열악한 인프라를 이용하여 서비스를 시작하는 경우가 많습니다.


하지만 충분한 재원을 이용하여 인프라를 증식(?)하는 방법은 한계가 있습니다. 가장 단적인 예는 "충분한 대역폭" 에서 찾을 수 있습니다. 갑작스런 서비스의 인기몰이나 이슈가 생겼을 때 폭주하는 사용자 트레픽은 그 규모를 가늠하기가 힘듭니다. 또한 일시적으로 발생하는 이런 스파이크(Spike)를 대비한다고 평상시에 이용되지 않는 대역폭을 계약하여 사용하는 것은 운영 비용(OpEx) 관점에서 효과적이지 않습니다. 그렇다면 이런 문제는 어떻게 해결할 수 있는 것일까요?





흔히 컨텐츠 전송 네트워크(Content Delivery Network, CDN)이라 불리우는 서비스들이 그 해답이 될 수 있습니다. 글로벌 1위 사업자인 아카마이(Akamai)를 비롯하여 최근에는 아마존(Amazon)이나 마이크로소프트 애져(Azure) 등 클라우드 서비스들도 필수적으로 CDN 서비스를 제공하고 있습니다. CDN 전문 사업자들 뿐만 아니라 클라우드 인프라를 제공하는 사업자들까지 CDN 상품을 내놓고 있다는 것은 인프라와 전송 네트워크의 조합이 대규모의 사용자 트레픽을 소화하기 위해서 필수라는 의미로 해석해도 크게 틀리지 않다는 이야기입니다.


아카마이는 최근 마이리틀텔레비전의 컨셉으로 마이리틀CDN 이라는 인터렉티브 세션을 운영하고 있습니다. 다음주 화요일인 9월 22일 오후에 한시간동안 CDN 의 기본적인 동작 원리와 어떻게 활용하면 도움이 될지에 대한 프로그램이 방송될 예정이라고 합니다. CDN 서비스를 제공하는 사업자들 별로 저마다의 특징과 차별화 포인트를 가지고 있지만 기저에 깔려 있는 기본적인 스킴은 어느정도 비슷하기 때문에 CDN 에 대한 기본적인 소양을 쌓고 글로벌에서 성공할 미래의 내 서비스를 위해 지식의 폭을 넓힐 수 있는 기회가 될 수 있을거란 생각이 듭니다!


아카마이 마이리틀CDN - "CDN의 원리와 활용 기본" 무료 사전등록 [바로가기]



728x90
728x90
애플이 얼마전 끝난 WWDC (World Wide Developer Conference) 에서 새로운 언어인 Swift 를 발표했습니다. Swift 는 기존의 Objective-C 와 마찬가지로 Apple Foundation Framework 에 기반하고 있는 언어입니다. Xcode 6 에서부터 지원이 되며 Objective-C 와 혼용하여 개발이 가능한 스크립트 스타일의 언어라고 보면 될 것 같습니다.

Swift 는 이제 막 발표된 언어이기 때문에 공부를 하기 위한 자료가 많지 않습니다. 이럴때는 공식 자료로 배포되고 있는 것을 찾아보는게 좋은데요, 역시 애플이 아이북스(iBooks)에 공식 튜토리얼을 올려두었습니다. 영문 버전으로만 배포되고 있어서 조금 아쉽지만 일단 가장 기본이 되는 레퍼런스로 쓰면 좋을 것 같습니다.


애플 스위프트(Swift) 공식 문서 다운로드 받기 [바로가기]


영어로 공부하는 것이 가장 좋습니다만 부담되시는 분들은 한글로 번역작업이 진행된 스위트프(Swift) 언어 개발문서 페이지를 참고하시면 좋을 것 같습니다. 아직 자세히 살펴보지는 못했으나 OSX Dev 의 멤버분들이 의기투합하여 공동 프로젝트로 진행한 번역 산출물로 퀄리티가 괜찮을 것 같습니다. 


스위트프 언어 개발문서 한글화 프로젝트 살펴보기 [바로가기]


이제 스위프트에 푹 빠져볼 시간입니다. 첫장을 펼치고 공부를 시작해 볼까요 -_-;; 

- NoPD -

 
728x90

+ Recent posts