nacyot profile image

도커(Docker) 튜토리얼 : 깐 김에 배포까지

시스템 프로그래밍 2014년 01월 27일 발행

도커(Docker)는 2013년에 등장한 새로운 컨테이너 기반 가상화 도구입니다. 도커는 계층화된 파일시스템(AUFS, BTRFS 등)을 사용해 가상화된 컨테이너의 변경사항을 모두 추적하고 관리합니다. 이를 통해서 컨테이너의 특정 상태를 항상 보존해두고, 필요할 때 언제 어디서나(단, Docker가 설치만 되어있다면) 이를 실행할 수 있도록 도와주는 도구입니다. 이 글은 Docker 입문자를 위한 튜토리얼로, 도커의 기본 개념들과 사용법에 대해서 소개합니다.

계속 읽기

기억장치로서 뇌의 확장 도구 Memex는 도래했는가: 정보 과잉의 극복과 개인 정보 관리 도구

소프트웨어 이야기 2016년 05월 20일 발행

버니바 부시의 Memex는 인간의 기억을 확장하는 도구이다. 하지만 동시에 Memex는 인간의 사고를 확장하는 도구이다. 거칠게 정리해보자면, 이 도구를 통해 연구자는 1. 많은 데이터를 저장할 수 있고, 2. 빠르게 저장된 데이터를 탐색할 수 있으며, 3. 저장된 데이터를 연결할 수 있다. Memex에 관심이 생겼다면 버니바 부시의 As We May Think(1945)의 전문을 읽어보길 바란다.

이 아이디어는 테드 넬슨에 의해 발전되고 팀 버너스 리에 의해 결실을 맺은 하이퍼링크의 원조 정도로 여겨진다. 하지만 흥미로운 복수의 데이터를 연결한다는 개념은 국소적인 지역보다는 훨씬 더 광역적인 범위에서 발전해왔다. 인터넷은 처음에 Web이라는 이름으로 불렸던 것처럼, 거미줄처럼 오밀조밀하게 연결되어있다.

계속 읽기

Headless CMS, 머리가 없는 컨텐츠 관리 시스템

에디터 이야기 2016년 05월 19일 발행

Headless CMS 이야기. 한국에는 잘 알려져 있지 않지만 흥미로운 서비스 중에 Contentful이나 Prismic.io 같은 서비스군이 있다. 특히 Contentful은 스스로를 Headless CMS라고 포지셔닝하고, 이 단어를 밀어붙이고 있다. CMS. 즉, Content Management System. 일반적으로 CMS는 컨텐츠를 관리하는 부분과 더불어 컨텐츠의 출력까지 포함한다. 예를 들어 지금 내가 글을 쓰고 있는 텀블러라는 CMS에서는 대시보드와 사람들에게 보여주는(즉 출력되는) 블로그 환경이 나눠져있다. 대시보드에서는 글을 쓰고 글의 목록을 관리한다. 글이 블로그에 언제 출간될 지를 결정하고 다른 알림들을 관리할 수 있다. 반면에 블로그는 순수히 글을 읽기 위한 환경이다. 블로거는 대시보드에서 컨텐츠를 관리하고 독자는 블로그에서 글을 읽는다.

계속 읽기

증분검색을 통한 텍스트 필터링 도구 페코(Peco) - 명령어 히스토리를 비롯한 셸(shell) 어디서나 증분검색하기

소프트웨어 2015년 12월 09일 발행

셸(shell)은 매력적인 도구이지만, 많은 사람들에게 원시적인 도구로 오해받곤 한다. CLI의 대표적인 원시성으로는 각각의 프로그램들이 개별적으로 사용자와 대화하는 대신, 셸을 통해서만 명령이 가능하다는 점을 들 수 있다. 하지만 이러한 점은 커다란 장점이 되기도 한다. 예를 들어 프로그램들이 STDINSTDOUT만으로 데이터를 주고받을 수 있다. 또한 셸 인터페이스의 개선이 모든 프로그램의 사용성 개선과 직결되기도 한다. 애플리케이션의 단절을 전제로 하는 GUI에서는 이러한 장점을 누리기 어렵다.

페코(Peco)는 특히 인터페이스를 개선해주는 후자에 해당하는 도구이다. 페코는 개별적으로 사용가능한 인터렉티브 데이터 필터링 도구인 동시에, 셸과 함께 사용하면 셸의 사용성을 개선할 수 있다. 이 글에서는 페코의 기본적인 사용법과 셸의 히스토리 검색과 결합해서 사용하는 방법에 대해서 알아본다.

계속 읽기

루비와 익명 함수 - 블록(block), Proc(절차, procedure) 객체와 람다(lambda) 함수의 차이 이해하기

프로그래밍 2015년 12월 08일 발행

루비 Advent Calendar 2015 7일차로 참석합니다.

루비에서 가장 특징적이고 많이 사용되는 문법이 바로 블록입니다. 루비에서는 블록 문법을 통해서 하나의 익명 함수를 손쉽게 함수에 넘겨줄 수 있습니다. 대부분의 반복문을 비롯해 인터페이스로도 자주 사용되기 때문에 익명 함수 개념을 이해하는 것은 매우 중요합니다. 블록을 사용하지 않더라도 루비에서는 명시적으로 익명 함수 객체를 생성할 수 있습니다. 익명 함수를 만드는 두 가지 대표적인 방법이 바로 Proc 객체와 lambda문을 사용하는 것입니다. 이 글에서는 루비에서의 익명 함수와 Proc 객체와 lambda문으로 생성된 익명 함수의 차이점을 살펴보겠습니다.

계속 읽기

프로그래밍은 왜 어려운가 - 벤 프라이(Ben Fry)의 Distellamap으로 생각해보는 다익스트라의 'GOTO문은 해롭다(Go To Statement Considered Harmful)'

이야기 2015년 12월 03일 발행

최근에 현대카드 디자인 라이브러리에서 열린 Designing with Data 전시를 보고 왔는데 그 중에서 Ben Fry의 Distellamap이라는 작품이 유독 인상깊었습니다.

이 작품은 Atari 2600 게임 코드(어셈블리) 전체를 한 평면에 놓고 코드가 점프하는 지점들을 연결한 작품입니다. 얼핏 봐도 알 수 있지만 프로그램 내에서도 아주 많은 선들로 연결되어있습니다. 프로그램은 선형적으로 실행되지 않는다는 걸 노골적으로 보여주고 있죠.

계속 읽기

기계의 한계를 결정짓는 요소. CPU 클럭 혹은 인간의 욕망

이야기 2015년 11월 22일 발행

"미래는 이미 와있다. 단지 널리 퍼져있지 않을 뿐이다." - 윌리엄 깁슨


지인과 이야기하다가 발전 사관에 대한 이야기가 나왔다. 발전사관은 인류의 본성이 아니냐고 할 만큼 사람들의 마음 안에 강하게 자리잡고 있다. 이것은 사회 문화와 역사에 대해서만 그런 것은 아니다. 기술 역시 발전한다. 적어도 나는 사회 / 문화 / 역사의 발전사관은 처음부터 잘못되었을 가능성이 아주 높다고 생각하는 사람 중 하나이다. 그런 것들은 단지 놓여진 상황이 변할 뿐이지, 명확한 지표도 없는 것을 '발전'으로 묘사하는 것부터가 이미 이데올로기적이다. 그런데 기술은 어떤가. 기술이 CPU의 클럭 속도나 단위시간당 생산량 따위로 치환해서 설명될 수 있다면 기술은 분명 발전해왔다고 말할 수 있을 것이다. 적어도 그 말에는 동의하지 않을 수 없다.

계속 읽기

패커(Packer)로 도커(Docker) 이미지 빌드 및 AMI 자동 빌드 시스템 구축

소프트웨어 시스템 2015년 09월 30일 발행

패커(Packer)는 범용적 머신/컨테이너 이미지 생성기이다. 이미지는 일반적으로 가상머신의 특정한 상태를 그대로 저장해서 만들어진다. Packer에서는 Builder 컴포넌트를 통해 다양한 플랫폼을 지원하고, Provisioner 컴포넌트를 통해 다양한 도구로 이미지를 빌드할 수 있다. 이 글은 2015년 9월 5일 네번째 Docker Seoul Meetup에서 발표한 내용을 기반으로 작성되었으며, Packer에 대한 기본적인 기능들과 간단한 사용법에 대해서 소개한다.

계속 읽기

마크다운(Markdown) 기반 OSX 프레젠테이션 도구 덱셋(Deckset)

소프트웨어 에디터 2015년 08월 29일 발행

Deckset은 Markdown 기반 프레젠테이션 도구이다. Deckset은 따로 에디터 기능을 가지고 있지 않으면 자신이 선호하는 에디터로 Plain Text 포맷의 일종인 Markdown으로 문서를 작성하면 이를 슬라이드 형식이나 보여주거나 PDF로 변환할 수 있도록 도와주는 도구이다. 이를 통해 슬라이드 한 장 한 장의 디자인에 신경쓰기보다는 프레젠테이션의 내용에만 집중해서 슬라이드를 작성할 수 있게 도와준다.

계속 읽기

Serverspec(서버스펙)을 통한 도커 이미지 테스트 자동화

프로그래밍 시스템 2015년 07월 07일 발행

Immutable Infrastructure와 컨테이너로 대표되는 도커(Docker)와 함께 서버 분야에 많은 변화를 가져온 것은 Configuration Management 도구들이었다. 쉐프(Chef), 퍼펫(Puppet), 앤서블(Ansible)로 대표되는 CM 툴들은 독자적인 DSL을 통해서 서버의 이상적인 상태와 그에 다다르는 과정을 선언적으로 기록한다. 그리고 이 기록을 통해서 원하는 서버의 특정 상태를 재현하게 도와준다. 이러한 흐름을 Infrastructure as Code라고 표현하기도 한다. 서버의 코드화, 여기서 한 단계 더 나아가면 또 다른 흥미로운 아이디어를 만나게된다. 서버가 코드라면 소프트웨어를 검증하는 기법들을 똑같이 적용할 수 있지 않을까?

서버스펙(Serverspec)은 바로 이 질문에 대한 답을 보여주는 도구이다. 이 글에서는 Serverspec을 통해서 도커 이미지를 테스트하는 방법에 대해서 다룬다.

계속 읽기

엘라스틱서치(elasticsearch)에 한글 형태소 분석기 은전한잎(eunjeon) 적용하기

프로그래밍 2015년 06월 13일 발행

엘라스틱(elastic)에서 개발한 엘라스틱서치(elasticsearch)는 루씬 기반의 검색 서버이다. 설치도 간편하며 기본 설정으로 사용해도 충분히 강력하지만 기본적으로 한국어 분석을 지원하지 않는다. 예를 들어 "아버지가 방에 들어간다"라는 한국어 문장을 인덱스해도 "아버지"로는 검색이 안 되고, 반드시 "아버지가"로 검색해야만 결과에 출력된다. 이는 엘라스틱서치의 기본 토크나이저가 공백이나 특수문자만으로 단어들을 분리하기 때문이다. 이러한 문제를 해결하기 위해서는 n-gram 분석이나, 형태소 분석과 같은 인덱스를 추가로 지원해야한다. 이 글에서는 일본어 형태소 분석기 mecab를 한국어에 맞춰 수정한 은전한잎(mecab-ko)을 통해 엘라스틱서치에서 한국어를 인덱스하는 방법에 대해서 다룬다.

계속 읽기