Daybreakin Things

Posted
Filed under 컴퓨터

결국 집에 와서 만들어야 할 shell은 안 만들고 mail box rotator나 만들고 앉아있다. orz

그래도, mutt로 스팍스 메일함 확인할 때마다 수천 통이 넘는 메일을 읽느라 느려지는 게 계속 신경쓰여서 결국 python으로 삽질해가며 만들어내고 말았다.

가장 삽질이었던 부분은, for line in file 형태로 파일을 읽어나가면, seek 등의 다른 파일 조작 함수를 혼용할 수 없다는 사실이었다. (저런 for-in 루프로 읽으면 자체적으로 버퍼링을 하기 때문에 seek 등이 오동작을 일으킨다) python documentation을 자세히 읽어본 뒤에야 그 사실을 알 수 있었다. orz

그것 말고 또 한참 삽질하게 만든 것은, string concatenation이 매우 비효율적이라는 점이었다. (python의 string도 java처럼 immutable string이니까, 매번 새로운 string 개체를 생성해서 복사하니 느릴 수밖에 없다) 그래서 가급적 불필요한 concatenation을 없애고 파일에 기록하는 것은 바로 파일에 쓰는 방식으로 했다. 그리고 ''.join(sequence)라는 구문이 있었으니... 오, 나의 구세주여. -_-; (구글에서 검색해본 결과 ''.join이 상당히 빠르다는 사실을 알 수 있었다.)

어쨌든, 그 결과물은 여기서 볼 수 있다. BSD License이니 쓰실 분은 맘대로 쓰셔도 좋으나 메일 분실, 데이터 손실 등에 대한 책임은 지지 않는다. 자, 이제 슬슬 shell을 짜야지...