2012년 12월 26일 수요일

Objective-C 에 관한 잡담

그렇게 오래는 아니지만 어쨌든 Objective-C를 수 년 간 이용해 왔다. 이제는 익숙해졌기 때문에 처음 봤을 때의 인상에 비해 호감이 가는 언어가 되었다. 심심해서 이 언어에 대한 썰을 한번 풀어본다.

이하 Objective-C는 한글로 '옵씨'로 줄여서 표현한다. 그리고 옵씨에 대한 설명이 아니다 보니 옵씨를 이제 시작하는 분들에게는 별 의미 없는 글일 것 같다.


2012년 12월 24일 월요일

[Python] 데이터를 예쁘게(?) 찍어주기

제목을 정확히 쓰자면 'Data Pretty Print' 이다. Python에 기본적으로 포함되어 있는 pprint 모듈에 대해 간단히 소개하고자 한다.

pprint는 말 그대로 Pretty Print 이긴 한데 이름 만으론 잘 감이 안 올 수도 있다. 이 모듈은 복잡한 자료구조의 내용을 조금 더 알기 쉽게 표시해 주는 역활이다.

[Python] 특정 디렉토리(폴더)의 모든 파일 이름 알아내기

이전에는 os.listdir이나 glob 같은걸 써서 재귀호출(recursive call)로 특정 디렉토리 아래의 모든 폴더를 순환하며 파일 이름을 모으는 코드를 만들곤 했었는데, 이는 순전히 무식해서 고생한 거였다. Python의 기본 모듈인 os.walk가 이런 역활을 하도록 이미 구축되어 있었다.

2012년 12월 10일 월요일

[Python] Nested 문법?

개인적으로 Python 언어로 코딩을 하면서 자주 안쓰게 되는 문법이 있다. 이 문법을 정확히 어떤 용어로 표현해야 하는지 몰라서 일단 'Nested 문법' 이라고 적었는데 틀린 표현 같지만 제목이 필요하기에 어거지로 썼다.

C에 익숙했던 (비영어권) 사람이라면 아마도 Python이나 기타 스크립트 언어들 특유의 문법에 간혹 놀라기도 혹은 질리기도 한다. 스크립트 언어들의 독특한 문법 중 하나는 프로그래밍 언어를 마치 사람의 언어처럼 표현하기도 하거나 이 코드의 내용을 마구 줄여버리는 것이다.

참고로 이 글은 Python을 어느 정도 공부한 사람이라면 읽을 필요가 없다.

2012년 12월 6일 목요일

변화를 거부하고 도전을 싫어하는 개발자

변화를 거부하거나 도전을 싫어하는 사람은 물론 있다. 많을 것이다. 이런 사람들의 태도가 무조건 잘못된 것이라고 평가하는 것은 좋지 못 하지만, 이런 사람들을 위해 하고 싶은 말이 참 많기도 하다.

나 조차도 변화나 도전은 좀 겁을 내는 경향이 있다. 하지만 어느 순간 약간씩 도전해 보면서 얻기도 하고 성취하기도 하고 보람을 느끼기도 하고 실패하기도 한다.

별 의미는 없겠지만 이런 저런 불평불만을 글로 한번 남겨볼까 한다.

2012년 12월 5일 수요일

추억 속의 컴퓨터 이야기 IQ-2000

내 나이대도 이제는 젊다고 하기에는 힘든(?) 수준으로 치닫고 있다. 세월의 흐름이 너무 빨라서 아쉽고 벅차고 숨차기는 하지만, 이럴 때 일 수록 추억을 떠올려 보면 나름 재미있는 세월을 보냈구나 생각이 든다.

이참에 옛날 옛적에 쓰던 구식 컴퓨터에 대한 이야기를 한번 써 볼 까 한다. 이 글은 이 중 IQ-2000이라는 고물(?)에 대한 이야기다.

2012년 12월 4일 화요일

[Python] parse

간단한 문자열 파싱을 할 때는 대체로 정규표현식(re) 모듈을 많이 활용한다. 하지만 단순한 패턴을 읽어 낼 때는 정규표현식은 귀찮은게 많다. 이럴때는 간단하게 파싱 할 수 있게 도와주는 parse 모듈을 사용 할 수도 있다. 이 모듈의 설명은 아래 한줄이면 충분하다.

parse() is the opposite of format()

앞서 소개했던 str.format() 과는 반대되는 기능을 제공한다는 의미이다. 이걸로 대충 설명은 끝나는 것 같다. :-)

[Python] str.format()

파이썬에선 기본적으로 C 스타일의 문자열 포맷 방법을 제공한다. printf나 sprintf 처럼 % 문자를 사용해서 문자열을 대체하는 것 말이다. 우연찮은 기회에 이 방법이 아닌 다른 방법으로 문자열을 포매팅 하는 방법(str.format)을 알게 되어서 이에 대해 가장 기본적인 사항을 포스팅을 해 본다.

우선 이 기능은 Python 2.6 부터 동작하며 일부는 2.7에서 추가된 기능도 있을 수 있다.

2012년 12월 3일 월요일

[프로그래머 유머] C Perl GNOME Java

왠만한 프로그래머라면 고전 유머로 이해될 만한 내용이겠지만, 이 글은 비 프로그래머 일반인 혹은 현대적인(?) 프로그래머를 위해 그냥 풀어보는 썰이다. ;-)

2012년 11월 30일 금요일

스마트폰 관련 뉴스를 볼 때 마다 화가 난다

스마트폰 붐을 타면서 아이부터 어른까지 스마트폰을 사용하고 있다. 그러면서 나오는 문제들은 보안과 중독성에 관한 것이고 시간이 가면 갈 수록 더욱 크게 이슈가 되고 있다. 지금 하려는 이야기는 이 중 보안과 관련된 뉴스들에 대한 이야기이다.

2012년 11월 20일 화요일

[Python] 인터프리터 테스트는 다르다

특정 모둘을 만들고 이 모듈을 파이썬 인터프리터로 테스트 할 때 간혹 문제가 생기는 케이스가 있다. 특히 PYTHONPATH와 함께 발생 할 수 있는 import 문제가 있다.

약간의 신중하지 못한 (혹은 무식한) 점이 이틀 간의 삽질로 나를 이끌었다. 아직도 명확한 원인은 모른다. 애초에 이런 디자인은 좋지 않다는 것을 되세기며 이번 포스팅을 기록으로 남긴다.

2012년 11월 19일 월요일

Emacs 24.x S-SPC 키보드 먹통 문제

Emacs가 버전 24로 올라오더니 OS X에서 S-SPC(Shift-Space) 키 입력을 인식하지 못 하는 문제가 생겼다. 그리고 24.2 버전이 되면서 구름 입력기를 이용 도중에 S-SPC를 누를 경우 키보드가 먹통이 되는 문제로 진화(?)되었다.

2012년 11월 13일 화요일

[Python] logging 의 중복 로그 현상

logging 을 사용해서 로그 찍는 루틴을 만들었는데, 로그를 찍을 때 마다 동일한 로그가 계속 하나씩 더 찍히는 현상을 경험했다. 로그1, 로그2, 로그2, 로그3, 로그3, 로그3, ... 이런 식이었다.

사실 현상이라기 보단 코딩을 잘못해서 나타난 문제이다. 하지만 이 문제 해결을 위해 너무나 귀찮은 짓을 다 해 봤기에 기억하자는 의미로 글을 남긴다.

2012년 11월 12일 월요일

[OS X] 한글 입력 상태에서 특정 키가 동작하지 않는 증상

OS X에서 한글 입력 상태에서 특정 키, 예를 들자면 Emacs 키맵과 비슷한 Ctrl-A, Ctrl-E 같은 키가 제동작을 하지 않는 증상이 있었다. 이 문제 해결을 위해 굉장히 단순한 포스팅을 한다. ;-)

2012년 11월 9일 금요일

스크린세이버, 과연 필요한가?

스크린세이버(Screen Saver). 이름 처럼 화면을 보호하기 위해 만들어진 기능이다. 하지만 이 기능이 지금에 와서야 정말 필요한건가 의문이 든다.

2012년 10월 22일 월요일

윈도우 사용자를 위한 맥 및 OSX 용어

개인적으로 윈도우를 오랫동안 사용하다 맥을 처음 사용했을 때 용어나 각 앱의 이름이 뭔지 몰라서 막막했던 시절이 있었다. 그 때를 회상하며 약간 헷갈리거나 알 수 없는 용어들을 한번 정리해 볼까 한다.

2012년 10월 18일 목요일

[Emacs] jump-char.el

이번 글은 아주 간단하다면 간단한 네비게이션용 확장인 jump-char의 소개글이다. 기능은 많지만 중요한 것을 하나 꼽자면 바로 Vim의 f 키 기능과 비슷한 기능을 하는 확장이다.

2012년 10월 11일 목요일

[Vim] 파일 저장 시 뭔가를 하고싶다

어떻게 보면 광범위한 제목이 될 지도 모르겠지만, 이 글은 Vim에서 특정 파일을 편집하다 저장 했을 때 특정한 일을 실행 하기에 관한 내용이다.

2012년 10월 6일 토요일

[OSX] 사파리의 탭 자동 리로드 문제 해결(?)

OS X에서 사파리(Safari)를 사용하다 종종 버리곤(?) 했었는데 굉장히 단순하면서도 치명적인 이유가 있어서 였다. 여기 블로거에 글을 작성하는 도중에 참고 문서를 찾기 위해 새 탭을 띄워 구글링을 하다 다시 글을 작성하던 탭으로 돌아오면 탭이 리로딩 되면서 그 동안 써 놓은 글이 싹 날아가 버리는 어이없는 문제를 몇 번 겪어서이다.

2012년 10월 5일 금요일

[Emacs] YASnippet용 템플릿 만들기

YASnippet에 관한 글은 별도로 적지 않았는데 Emacs에서 YASnippet은 워낙 유명하다 보니 소개에 관해서는 생략. 이 포스트는 YASnippet용 템플릿과 관련한 가장 기본적인 내용을 다룬다.

2012년 9월 28일 금요일

[iOS] 시스템 아이콘 추출기 UIKit Artwork Extractor

아이폰이나 아이패드 등 iOS용 앱을 개발 할 때 함께 일하는 디자이너가 없다면 앱 디자인 때문에 골머리를 썩힌다. 특히 아이콘은 가장 단순하면서도 필수적인 것인데 이걸 구하는 것도 힘든 일이다. 특히 기존의 아이폰 앱 등과 비슷한 모양을 만들어야 할 때는 시스템 아이콘을 쓰고 싶기도 한데 가끔 제약이 따른다.

2012년 9월 26일 수요일

[Emacs] Speedbar를 메인 윈도우에 넣기: sr-speedbar.el

Emacs의 내장 Speedbar는 별도의 윈도우가 뜨면서 동작한다. 개인적으론 좀 불편하다고 생각되어서 메인 윈도우 안에다 집어넣는 방법을 찾고 있었는데 누군가 이미 비슷한 목적으로 만들어 놓은 것을 찾았다.

[Emacs] Speedbar에서 특정 파일이 보이지 않는 경우

최신 Emacs에는 Speedbar가 포함되어 있으니 (정확히는 CEDET) 설치는 생략. 아는 사람은 알다싶이, Speedbar는 파일 목록을 띄워주는 Emacs용 확장이다. 사용법도 간단해서 그냥 M-x speedbar 로 띄우는 것이 가능하다.

그런데 이 Speedbar가 모든 파일을 표시해 주는 것은 아니다. 기본 설정 상태에서는 제한적인 파일만 표시해 준다.

2012년 9월 22일 토요일

[Emacs] expand-region.el

expand-region.el 은 선택 영역을 확장(Expand)해주는 확장(Extension)이다. 아래의 github 저장소 링크에서 확인 할 수 있다.

[Cocoa] 창이 다 닫기면 앱 종료하기

처음으로 써 보는 코코아 관련 메모. 기본적으로 코코아 앱은 멀티 윈도우를 지원하는 경우 창을 다 닫아도 앱 자체가 종료되지 않는다. 만약 윈도우(MS-Windows) 처럼 창이 다 닫기면 애플리케이션이 종료되길 원한다면 AppDelegate에 다음 코드를 넣는다.

2012년 9월 20일 목요일

[Emacs] Javascript와 CSS가 포함된 HTML 파일 편집

Emacs는 다양한 메이저모드(Major mode)를 가지고 있고 특정 파일을 편집 할 때 특정한 모드가 매핑되어 편집이 편하도록 도와주는 것이 일종의 메카니즘이다. 하지만 이런 정책(?)이 방해되는 케이스가 있으니 바로 웹 개발, 특히 자바스크립트와 CSS가 포함되어 있는 HTML을 편집하는 경우이다.

2012년 9월 14일 금요일

아이폰5, 그놈의 혁신 타령 궁시렁...

몇 일 전, 애플이 아이폰5를 발표 하자마자 바로 국내 언론사의 기사가 떴다. 또 '혁신은 없었다' 라는 기사다. TV 공중파 뉴스에서도 혁신은 없었다 라고 평가절하하는 내용이 주류를 이루고 있다. 도데체 왜 혁신이 없다고 하는 걸까?

2012년 9월 12일 수요일

첫 애드센스 수익금을 지급받았습니다

사이트 모양이 조잡해 짐에도 억지로 광고를 욱여넣었던 것이 결국 1년 6개월 만에 빛을 보았습니다. AdSense 수익금 집계가 $100을 넘어서 지급 받을 수 있게 된 것이지요.

2012년 9월 5일 수요일

Emacs 24의 새로운 기능: theme

예전부터 Emacs에서 색상 문법 강조(Syntax Highlighting)을 위해서 color-theme 라는 확장을 주로 이용해 왔었다. 어떻게 보면 Emacs에서 가장 필수적인(?) 확장이 아니었을까 생각된다.

Emacs 24부터는 이런 color-theme 기능을 흡수하여 theme라는 기능으로 아예 built-in이 되어버렸다. 더이상은 color-theme를 사용할 이유가 없어진 것이다. (하지만 API가 흡수된 것이 아니라 기능이 흡수되었기 때문에 호환되지 않는다는 점을 주의하자)

2012년 8월 13일 월요일

[Python] fileDownloader.py

제목 만으로도 알 수 있겠지만, 그냥 웹 상의 파일을 다운로드 받을 수 있는 모듈이다. 물론 이 모듈 없이도 urllib과 httplib 등으로 받을 순 있지만 귀찮다. -_-;;;

2012년 7월 26일 목요일

Objective-C 2.0에서 property / synthesize

Objective-C의 OOP에서 특별한 문법이 있다면 바로 property와 synthesize라고 생각한다. 멤버변수(인스턴스)로의 접근 권한을 설정하고 이 멤버에 값을 세팅하는 규칙을 표준적인 방법으로 정의해 둠으로써 클래스의 사용 방법을 인터페이스(interface, 헤더의 역활?)화 해 준다.

2012년 7월 17일 화요일

NSException 디버깅

XCode에서 디버깅 모드로 테스트 중인 앱이 뭔가의 오류로 죽었다. 그런데 죽은 곳을 알 수가 없을 때가 있다. 디버거의 트레이스는 main을 가리키고 있는 경우가 많다. 이 경우 로그창의 메시지를 이용해 간접적으로 원인을 알 수도 있지만 실제 원인은 알 수 없는 경우도 많다.

MKMapView를 사용하는 앱이 자주 죽는 경우...

맵뷰(MKMapView)를 사용한 앱이 자꾸 죽는 문제가 있었다. 에러의 원인은 sent message to deallocated object, 즉 메모리 상에서 해제되어 버린 오브젝트의 무언가를 호출하려 했기 때문에 죽는다는 것이었다.

2012년 7월 12일 목요일

[Emacs] 커서 위치의 단어 검색

Emacs에서 순차검색(isearch. 단축키는 C-s) 시 현재 커서 위치에 있는 단어(Word)를 검색하려면 검색어 입력 시 C-w를 입력하면 자동으로 검색어로 입력된다.

2012년 7월 3일 화요일

Emacs 24에 내장된 Package System

ELPA라는 Emacs용 Lisp 패키지 관리 시스템이 있다. 개인적으로 별로 쓸 만한 확장이 없고 대부분 EmacsWiki에 있는 것을 auto-install 로 설치해서 쓰는 편이어서 그다지 쓸 일이 없었다.

2012년 6월 22일 금요일

Emacs 24에 추가된 electric-pair-mode

electric-pair-mode는 Emacs 24 버전에서 추가된 마이너 모드이다. 기능은 pair 라는 이름에서 auto-pair-mode 와 비슷하다고 느낄 수 있는데 그 기능이 맞다.

앱스토어 판매 가능 국가 32개 추가

오늘 애플 개발자 뉴스레터로 애플 앱스토어의 새로운 판매 가능 국가 소식이 전해졌다. 해당 국가는 아래와 같다. (잘못 보시는 분들이 많은가 본데 '앱'스토어이지 '애플'스토어가 아니다 ㅇㅅㅇ)

2012년 6월 21일 목요일

iPad와 Surface 발표 비교 영상?

잡스의 키노트(주. Keynote는 애플의 프리젠테이션 소프트웨어 상품 명이기도 하지만 원래의 의미는 '기조연설' 등 프리젠테이션과 비슷하다)와 서페이스 발표회의 영상을 서로 비교해 놓은 영상.

2012년 6월 19일 화요일

Xcode Storyboard, 약인가 독인가

스토리보드도 Xcode 4 버전에 들어서 새롭게 지원되기 시작한 개발 도구이다. 뷰 디자인과 흐름을 시각화 시켜서 직관적인 개발이 가능하게 도와준다는 점에서 편하게 개발 할 수 있다. 이 글은 이 스토리보드에 관한 감상 일 뿐이지 상세한 설명을 위한 글이 아님을 먼저 밝힌다.

제목이 '약이냐 독이냐' 라고 지었다면 역시 결론은 나온다. 잘 쓰면 약이고 못 쓰면 독이다. 다만 잘 써야 한다는 것은 잘 사용해야 한다는 의미가 아니라 용도에 맞게 사용해야 한다는 점이다.

2012년 6월 18일 월요일

Objective-C의 레퍼런스 카운트는 왜 필요한 건가

다른 언어를 사용하던 이가 Objective-C 를 접했을 때 가장 생소해하며 혹은 헷갈려 하는 부분이 바로 레퍼런스 카운트 개념이다. 이 글은 레퍼런스 카운트 개념이 왜 필요한지에 대한 것이다. 다만 도움이 될지 이해가 될지 잘 모르겠다. ;-)

Xcode ARC, 약인가 독인가

ARC(Automatic Reference Counting)라는 기능은 XCode 4 들어서 보여준 새로운 기능이다. Objective-C에 정의된 요소이긴 하지만 사실상 Objective-C를 사용하게 되는 곳은 현재로썬 Xcode 뿐인 것 같으니 그려러니 생각하자.

무료 Git/SVN/Hg 프론트엔드 SourceTree

소스트리(SourceTree)는 Git, Mercurial(hg), SVN 등을 지원하는 맥 OS X용 GUI 프론트엔드이다. 프론트엔드(front-end)란 간략히 설명해서 커맨드라인(CUI) 유틸리티를 GUI로 쓰기 편하게 만든 어플리케이션이라는 말이다. 다른 말로는 클라이언트 라고도 표현하기도 하지만...

2012년 6월 16일 토요일

블로거 게시물 관리 기능에 절망하였습니다.

태그 관리가 잘 안되어 있어서 이 참에 조금씩 태그를 글 하나하나 지우고 만들고 하고 있습니다. 그런데 블로거 게시물 관리 기능에 일괄적으로 태그를 붙이는 기능이 있는 것을 발견하고 기뻐했습니다.

그래서 블로거의 게시물 관리 기능으로 일괄적으로 태그를 붙이고 있었습니다. 하나하나 검색해서 말이지요.

그런데 큰 문제가 있었습니다.

  1. 특정 단어 검색
  2. 태그 붙이기 위해 선택 한 후 태그 지정
  3. 다른 단어 검색
  4. 앞에서 선택했던 게시물 중 일부도 검색됨
  5. 문제는 체크했던 게시물은 계속 체크가 되어있음

문제가 무엇이냐면, 체크된 것을 언체크 해도 눈에 안보이는, 즉 이전에 체크했던 게시물은 그대로 계속 체크가 되어 있다는 점입니다. 일괄 언체크를 해도 눈에 보이는 것들 중에서만 언체크가 됩니다.

결과적으로 계속 검색 해 가며 일괄 태그 적용 기능을 이용하면 지금까지 체크 했던 글 모두 해당 태그가 붙어버리게 됩니다.

...

급좌절. 결국 하나하나 문제가 생긴 태그를 수정하고 있습니다만 이것도 언제 끝날지 장담 할 수 없군요. 300개가 넘는단 말입니다! 어휴!

이 문제를 회피하려면 검색 할 때 마다 관리 페이지가 아닌 다른 페이지로 이동 후 다시 관리 페이지로 접속해야 합니다. 관리 페이지는 전체적으로 자바스크립트로 계속 메모리가 관리되기 때문이지요.

블로거 너무하는데 이거...

2012년 6월 14일 목요일

Python용 PostgreSQL 인터페이스 psycopg2

psycopg2는 Python에서 PostgreSQL을 다루기 위한 인터페이스 모듈이다. 즉, PostgreSQL 서버에 접속하거나 쿼리를 보내거나 데이터를 읽어 오는 등의 기능을 Python으로 하기 위한 모듈 중 하나이다. 이번에는 이 psycopg2 모듈을 간단히 소개한다.


2012년 6월 12일 화요일

카카오톡/보이스톡, 페이스타임 그리고 이통사

얼마전 카카오톡에서 지원되기 시작한 음성통화(m-VOIP) 기능 때문에 이통사에서 불만이 많았습니다. 자신들이 차려놓은 밥상에 공짜로 숟가락 얹어 놓았다고 말이지요. 그리고 이제는 iOS6의 페이스타임이 이동통신망을 통해 서비스가 시작된다는 것도 동일하게 말이 많습니다.

얼핏 보면 이통사의 이런 주장에 일부 일리는 있습니다. 자기네들의 수익 기반, 문자(SMS)라던가 통화 수익을 갉아먹는 요소임에는 틀림이 없지요. 페이스타임은 또한 영상통화라는 수익 기반을 갉아먹는 요소는 맞습니다.

하지만 그들의 주장에는 납득 할 수 없는 요소가 있습니다. 바로 자신들이 깔아놓은 망에 무임승차 한다는 주장입니다.

2012년 6월 11일 월요일

게시물 보기에 약간 오류가 있습니다. (수정완료)

미리 죄송하다는 말씀을 드립니다.

프로그래머 특유의 귀차니즘이 발동하여서 블로그 템플릿을 좀 뜯어 고치고 있습니다. 이 과정에서 수동 삽입한 광고와 템플릿으로 자동으로 삽입되는 광고가 중첩되어서 글 보는데 지장을 줄 정도로 광고가 표시되는 경우가 있습니다.

현재 포스트를 하나하나 들여다보며 문제를 수정하고 있는 중입니다. 그 전 까진 불편을 드리게 될 것 같습니다.

이 글 포함 총 311개의 글을 하나하나 뜯어 고쳤습니다. 헥헥 힘들어요. 살려주세요. 팔이 아파요.

글 중간에 삽입된 광고를 모조리 제거하였습니다. 과연 광고 수익에 영향을 얼마나 끼칠지는 알 수 없지만 애초에 광고비도 쥐꼬리였기 때문에 줄어봤자겠지요. 하하 ;ㅅ;

2012년 6월 4일 월요일

[Emacs] bash의 PATH 환경변수 eshell로 가져오기

개인적인 경우겠지만, bash를 기본 쉘로 이용하고 .bashrc에 개인적으로 이용하는 몇 가지 경로를 PATH에 추가해서 사용하고 있다. 이럴 때 Emacs를 쉘에서 띄우지 않은 경우 - 즉 OSX의 경우 Emacs를 GUI로 바로 실행한 경우 등 - 에는 PATH 정보가 틀리게 된다.