싱글톤

지난 포스트에서 가상 환경 친화적 앱이 어떤 특성을 가져야 하는지 설명했다. 그 글에서 마지막에 소개한 Application Singleton을 이제 구현해보려고 한다.

싱글톤을 만드는 방법부터 시작하자.

Read more...

역사는 수메르에서 시작되었다

역사는 수메르에서 시작되었다 - 8점
새뮤얼 노아 크레이머 지음, 박성식 옮김/가람기획

기원전 2333년. 단군이 고조선을 건국했다고 믿고 있는 해다. 이 당시의 사람들은 어떤 생각을 하면서 살았을지 궁금했다. 비슷했겠지? 고작 4천 년 동안 사람이라는 동물이 뭐 그리 많이 달라졌을까? 동물로서의 사람은 그대로일지 몰라도 문화는 다를 수도 있지 않을까? 그 시절에 남겨놓은 기록이 없으니 궁금해도 참고 살 수밖에요.

하지만 비슷한 시기에 지금의 이라크 남부 지역에서는 수메르인들이 쐐기문자로 점토판에 기록을 남기고 있었습니다. 수메르인들이 이곳에 살기 시작한 지는 훨씬 더 오래되었지만, 대략 기원전 3,000년쯤부터 상형문자를 쓰기 시작했고, 기원전 2,500~2,000년쯤에는 표음문자 체계로 넘어옵니다. 일단 표음문자가 되면 해독이 비교적 쉬워집니다. 그래서 고조선 사람들과 비슷한 시기에 살고 있던 수메르인들의 생각을 엿볼 수 있게 됩니다. 평생 수메르에 매달린 학자가 이 점토들에서 발견된 생각들을 39개의 주제로 나누어 소개하고 있습니다. 잘 알려진 길가메시 이야기도 있지만, 제가 제일 좋아하는 부분은 처음 세 가지입니다. <학교>, <촌지>, <청소년 문제>입니다. 그 당시에도 "요즘 젊은것들은...", "선생님 저희 아이 좀 잘 부탁합니다" 가 있었다는 내용인데, 듣기만 해도 웃음이 나옵니다.

소위 세계 4대 문명 중 메소포타미아 문명을 가장 오래된 것으로 보고 있고, 이 책이 사방에서 <최초>라는 단어를 사용하는 것은 그 때문입니다. 하지만 모르는 일이지요, 아마 더 앞선 문명들의 증거는 또 등장할 겁니다. 하지만 그 문명들이 이처럼 상세한 기록을 남겨두었을지는 의문입니다. 그러니 기록으로만 따지면 계속 최초를 유지할 수 있을지도 모르겠습니다.

이 책이 처음 번역되어 출간된 것은 2000년이고, 제가 읽은 것도 그 근방일 겁니다. 원서(History Begins at Sumer: Thirty-Nine Firsts in Recorded History)는 더 오래되었는데, 초판이 나온 것이 1956년, 이 번역본이 원전으로 삼고 있는 3판이 나온 것이 1981년입니다. 그런데 얼마 전 도서관에 가니 새로 들어온 책 전시대에 놓여 있더군요. 서지 정보를 보니 올해 개정판이 나왔다네요. 가진 책과 대조해보았습니다. 그런데 도대체 뭘 개정했다는 건가? 내용에서는 차이점을 찾지 못했습니다. 과거에는 "역사 명저 시리즈" 의 1권으로 나왔으나, 이번 책은 그런 시리즈에 속하지는 않았습니다. ISBN이 바뀌었고, 표지가 좀 달라졌고, 가격이 20% 올랐습니다.

나이트 플라이어

나이트플라이어 (일러스트 에디션) - 6점
조지 R. R. 마틴 지음, 김상훈 옮김/은행나무

가늠도 되지 않는 먼 미래를 배경으로 하는 판타지 호러. 곁들여진 컬러 삽화로 그래픽 노블의 느낌을 가미한 중편. 재킷 주머니에 넣고 다니며 하루나 이틀만에 끝내기에 적당한 판형과 분량.

<조지 R. R. 마틴> 이라는 이름 때문에 집어든 책이지만, 1980년에 처음 나온 책이 지금 번역되어 나온 이유는, 아마도 Syfy 에서 드라마로 만들기 때문이 아닐까? 전에 만들어진 영화는 망했다는 것 같은데, <익스팬스> 만큼만 만들어주면 볼만 할 수도.

이 작품의 중심 키워드는 <호러>인데, <샤이닝>과 비교하는 서평이 붙어있기도 하지만, 그 정도에는 미치지 못한다. 중편이라 캐릭터를 깊이 파고들지도 못한다. 초능력이 등장하는 작품에 SF 라는 단어를 붙이는 것은 늘 불편하다. 그냥 판타지라고 하면 격이 떨어지나?

가상 환경 친화적 앱

Rule 0 - 응용 프로그램은 가상 환경에서 실행된다

좀 오래 묵은 글이지만 파이썬의 가상 환경의 장점에 대해서는 이미 소개한바있다.

그래서 일단 가상 환경을 쓰기로했다고 가정해보자. 그러면 거꾸로 응용 프로그램을 만들 때, 이 가상 환경에 좀 더 친화적이고, 가상 환경이 주는 혜택을 좀 더 끌어낼 수 있도록 만드는 방법이 있을까?

이 질문에 답하는 것이 이 글의 목적이다.

Read more...

데이비드 코퍼필드

디킨스 번역판들을 연대순으로 훑고 있다. <올리버 트위스트> 와 <오래된 골동품 상점> 를 거쳐 이제 막 <데이비드 코퍼필드> 를 마쳤다. 원래 한 권짜리 동서문화사 판을 사뒀는데, 결국 읽은 것은 도서관에서 빌린 비꽃에서 나온 세권짜리다.

디킨스 작품과 코드가 맞는 편이라 재미있게 보기는 했지만, 그래도 좀 지친다. 자전적 소설이라고 알려진만큼, 디킨스 자신의 인생 행보와 묘하게 겹치는 장면이 많다.

지금 생각해보니 두 가지 의문이 남는다. 하나는 작품속에 드러나는 사회가 상당히 계급화되어 있는데, 이 작품만으로는 충분히 감이 잡히지 않는다. 그 당시 영국의 계급 사회에 대해 딴 책을 한 권 찾아읽어야하겠다. 둘째는, 술에 관한 것이다. 작품 초반에 코퍼필드가 런던 공장에서 일할 때, 모은 돈으로 술집에 가서 맥주를 시키는 장면이 나온다. 이 때의 주인공 나이가 8세(11세인가?). 이런식으로 어린 아이들이 술을 찾아다니는 장면은 쥘 베른의 <십오소년 표류기> 에도 등장한다. 난파선에서 탈출한 후에 다시 돌아가 생필품들을 챙겨오는데, 처음 찾아 다니는 것이 브랜디 상자다. 옛날 유럽이 알콜 중독 상태였다는 말이 빈말은 아닌듯.

트레이스백 들여다보기

파이썬은 처리되지 않은 예외를 만날 때 트레이스백을 인쇄합니다. 문제를 파악하는데 결정적인 정보가 포함된 경우가 많습니다. 하지만 예외가 발생했을 때 제공되는 트레이스백 객체에는 이렇게 인쇄되는 내용보다 더 많은 정보가 포함되어 있습니다.

트레이스백 객체를 들여다보는 방법을 설명하려고 합니다.

Read more...

데이터 클래스

파이썬 3.7 의 안정판 출시를 앞두고 있는 시점이라 한글 도큐멘테이션을 그에 맞추어 업데이트하느라 꽤 시간과 노력을 들이고 있습니다. 어떤 변화가 있는지는 파이썬 3.7 의 새로운 기능은? 에 정리되어 있습니다.

모든 변경이 중요하겠지만, 그중 눈에 띄는 것은 새로 추가된 dataclasses 모듈입니다. 쓰기도 쉽고 그 용도도 광범위합니다. 3.6 버전을 위한 백포트도 제공되는데 이렇게 설치하면 됩니다:

pip install dataclasses

아쉽지만, 변수 어노테이션을 필요로 하는 모듈이기 때문에, 파이썬 3.5 나 그 이전 버전에서는 지원할 방법이 없습니다.

자 이제 어떤 녀석인지 조금 더 들여다봅시다.

Read more...

The Annotated Python Language Reference #3

2. 구문 분석

2.1. 줄 구조(Line structure)

2.1.7. 빈 줄

스페이스, 탭, 폼 피드(formfeed) 와 주석만으로 구성된 논리적인 줄은 무시된다. (즉 NEWLINE 토큰이 만들어지지 않는다.) 대화형으로 문장이 입력되는 도중에는 빈 줄의 처리가 REPL 구현에 따라 달라질 수 있다. 표준 대화형 인터프리터에서는, 완전히 빈 줄(즉 공백이나 주석조차 없는 것)은 다중 행 문장을 종료시킨다.

APLR

스페이스(space)는 ' ' 문자를 가리킬 때 사용합니다. 반면 공백(whitespace)은 스페이스, 탭, 폼피드 문자들을 통칭할 때 사용합니다.

APLR

REPL 은 Read-Eval-Print Loop 의 약자입니다. 문장을 입력받고 실행한 후 결과를 출력하는 것을 반복하는 대화형 환경의 인터페이스를 뜻합니다.

Read more...

파이썬 한국어 선택기

http://docs.python.org 사이트에서는 언어 선택 옵션으로 English, French, Japanese 를 제공해왔습니다. 오늘 부터 네번째 언어로 Korean 이 추가되었습니다. 지금 당장은 3.7 버전 이상에서만 등장하는데, 일단 3.7 버전에서 Korean 을 선택한 후에, 3.6 버전으로 바꾸면 3.6 버전의 한글판이 나옵니다. 곧 3.6 버전에서도 자연스럽게 선택할 수 있으리라 봅니다.

좋은 소식이 하나 더 있습니다.

파이썬 한글 번역팀에 식구가 늘었습니다. 그래서 파이썬 한국어 번역 에 간단한 공동 번역 가이드라인도 추가했습니다. 차츰 살을 더 붙여나가겠습니다.

The Annotated Python Language Reference #2

2. 구문 분석

파이썬 프로그램은 파서(parser) 에 의해 읽힌다. 파서의 입력은 구문 분석기(lexical analyzer) 가 만들어내는 토큰(token) 들의 스트림이다. 이 장에서는 구문 분석기가 어떻게 파일을 토큰들로 분해하는지 설명한다.

APLR

구문 분석기가 만들어내는 토큰들의 목록은 token 모듈에서 제공됩니다. tokenize 모듈로 파이썬 소스 파일의 구문 분석을 수행할 수도 있습니다.

파이썬은 프로그램 텍스트를 유니코드 코드값으로 읽는다; 소스 파일의 인코딩은 인코딩 선언을 통해 지정될 수 있고, 기본값은 UTF-8이다. 자세한 내용은 PEP 3120 에 나온다. 소스 파일을 디코딩할 수 없을 때는 SyntaxError 가 발생한다.

Read more...