내가 리눅스로 뭘 하고 있는지 로그 남기기 (파이썬)

지난번 포스팅에서 맥에서 내가 컴퓨터로 무엇을 하고 있는지 기록하는 스크립트를 어떻게 만들었는지에 대해 이야기했었다. 요번엔 리눅스다. 지난번 스크립트는 애플스크립트로 작성되어 맥에서만 동작했지만, 이번엔 리눅스에서 동작할 수 있도록 파이썬으로 작성할 것이다. 이 스크립트의 전체 소스코드는 여기서 받을 수 있다. 만들기 일단 현재 사용중인 윈도를 얻어야 한다. 나는 wnck 모듈을 사용했다. 그냥 쓰기 쉬워보여서. import wnck def … 내가 리눅스로 뭘 하고 있는지 로그 남기기 (파이썬) 계속 읽기

내가 맥으로 뭘 하고 있는지 로그 남기기 (애플스크립트)

예전부터 내가 컴퓨터로 뭘 하고 있는지 기록하는 스크립트를 꼭 만들고 싶었는데 어째 쉽지가 않아 차일피일 미루다가, 작년에 OSX를 처음 쓰면서 애플스크립트로 하나 만들었다. 애플스크립트는 이걸 만들면서 처음 써 봤는데, 전혀 적응이 되지 않아서 결국 이게 처음이자 마지막이 되었다. 이 스크립트의 전체 소스코드는 여기서 받을 수 있다. 만들기 내가 원하는 것은 매우 간단하다. 매 분 내가 … 내가 맥으로 뭘 하고 있는지 로그 남기기 (애플스크립트) 계속 읽기

가장 만족하는 IDE

내가 여태껏 써 본 IDE 중 가장 만족하는 것은 Visual Basic이다. 아직도 내 방의 서랍장 위엔 Visual Basic 5.0 Professional Edition 아카데믹이 놓여 있다. 고등학생이었던 98년 2월에 구입한 것인데, 당시 가격 26만원으로 지금껏 돈 주고(내 돈은 아니었지만) 산 소프트웨어 중에서 제일 비싸다. 아마 회사 돈으로 산 것 까지 포함해도 그럴 것이다. 97년에 학교에서 4.0을 써보면서 … 가장 만족하는 IDE 계속 읽기

웹서비스에 한글 아이디를 허용하게 되면 난감해지는 HTTP적인 이유

그건 Basic Authentication 때문이다. 웹서비스에 한글 아이디를 허용하면 Basic Authentication을 적용하기 어려워진다. 뭐가 문제인가 HTTP의 Basic Authentication은 매우 단순한 인증 체계이다. 클라이언트가 사용자의 아이디와 비밀번호를 "아이디:비밀번호" 꼴로 만들어 base64 인코딩하여 전송하면, 서버가 확인 후 틀렸으면 401 Unauthorized를 돌려주고 맞았으면 요청을 적절히 처리한다. 보통 웹브라우저로 사이트에 들어가는데 팝업이 짠 뜨면서 로그인을 요구하면 대개 이 Basic Authentication이라고 … 웹서비스에 한글 아이디를 허용하게 되면 난감해지는 HTTP적인 이유 계속 읽기

git으로 특정 기능이 언제 도입되었는지 찾기

답: 커뮤니티에 물어보거나 릴리즈 노트를 검색하면 된다. 하지만 다른 방법을 원한다면 다음을 읽도록 하자. 기술적인 문제에 대한 글을 쓰다 보면, 오픈소스 프로젝트에서 특정 기능이 언제 도입된 것인지 정확하게 알아야 할 때가 있다. 예를 들어, 내가 만든 소프트웨어가 운영 체제의 특정 기능 때문에 동작하지 않게 되었다면, 그 기능이 어떤 버전에 들어있는지 확인해서 고객들에게 그 버전은 사용하지 … git으로 특정 기능이 언제 도입되었는지 찾기 계속 읽기

깔끔하게 커밋하기

흔히 말하길, 좋은 커밋이란 단 한가지 고침만을 담고 있는(atomic한) 커밋이라고 한다. 그러나 코드를 작성하다 보면 여러가지 작업이 섞이는 것을 피하기 어렵다. 리팩토링을 하다가 오타를 발견하면 고치게 되고, 버그를 잡다가 잘못된 들여쓰기를 바로잡기도 한다. atomic한 커밋을 위해 눈 앞에 뻔히 보이는 잘못을 방치하는 것도 이상하지 않은가. 몇몇 (나처럼) 깔끔한 커밋에 집착하는 사람들은 이렇게 여러가지 종류의 수정이 … 깔끔하게 커밋하기 계속 읽기

개인위키를 10년간 쓰면서 배운 것 한 가지

오늘로 개인위키를 쓰기 시작한지 정확히 10년이 되었다. 10년간 꾸준히 써온 소감을 길게 쓰려다 다 지우고 단 한 가지에 대해서만 적어본다. 쓰는 것이 읽는 것 보다 중요하다 내가 위키를 계속 사용해오면서 깨달은 것은, 쓰는 것이 읽는 것 보다 중요하다라는 점이었다. 쓴 것을 읽어봐야겠다는 생각이 들 때는 시간을 들여서도 찾아서 읽어보게 되지만, 써야 하는 순간을 놓치게 되면 … 개인위키를 10년간 쓰면서 배운 것 한 가지 계속 읽기

git pull 할 때 인자 안줘도 알아서 되게 하기

요약 master 브랜치에서 작업중 git pull 명령을 실행했을 때 저장소와 브랜치를 명시하라는 에러를 만나면 .git/config에 다음과 같이 설정하라. [branch "master"] remote = origin merge = refs/heads/master 설명 git pull을 실행했을 때, 어떤 경우엔 군말없이 merge까지 잘 끝내지만, 어떤 경우엔 다음과 같은 메시지를 뱉으면서 실패하기도 한다. You asked me to pull without telling me which branch … git pull 할 때 인자 안줘도 알아서 되게 하기 계속 읽기

HelloWorld 세미나: "Git Internal" 준비해 본 소감

시간 구성 loose object(commit, tree, blob) 20분 commit 기능 만들기 라이브 코딩 20분 pack 10분 라이브 코딩 생각보다 할만했다. 시간관계상 불가능하리라 보고 포기하고 있었는데, 전날 발표자료를 준비하다가 라이브 코딩이 없으면 너무 지루할 것 같아서 약간 무리해서 집어넣었다. 발표시간을 40분에서 50분으로 10분 늘리고, 청중 입장에서 그다지 흥미롭지 않을 것으로 보이는 pack의 구조와 다루는 방법에 대한 설명 … HelloWorld 세미나: "Git Internal" 준비해 본 소감 계속 읽기

"HTTP/1.1 200" 은 틀리고 "HTTP/1.1 200 " 은 맞는 이유

HTTP 응답은 항상 다음과 같은 Status-Line 으로 시작한다. HTTP/1.1 200 OK 왼쪽부터 순서대로 HTTP-Version, Status-Code, Reason-Phrase가 온다. 그런데 만약 응답을 해줘야 하는 HTTP 서버가, 적절한 이유구문을 결정하지 못해 Reason-Phrase 없이 응답을 보내려면 어떻게 해야 할까? 그냥 "HTTP/1.1 200" 로 보내면 될 것 같지만, 정답은 "HTTP/1.1 200 "이다. 끝에 공백문자를 하나 넣어줘야 한다. 이유가 뭘까? RFC … "HTTP/1.1 200" 은 틀리고 "HTTP/1.1 200 " 은 맞는 이유 계속 읽기