2010. 6. 17. 12:32

내가 다니는 학교 POSTECH은 기숙사 학교기 때문에, 배달 음식을 시켜먹는 일이 잦다.
근데 요즘 돈도 없었고 먹을 일도 잘 없어 배달음식을 자주 안시켜먹었더니, 뭐가 맛있고 뭐가 괜찮은지 모르는 상황에 이르렀다.
그래서 랜덤으로 배달메뉴를 고르는 프로그램을 만들어야겠다는 결론에 도달했다.

루비로 짰는데, CGI로 짤려고 했더니 매번 호출때마다 파싱해 오는게 너무 느려서 standalone web server로 만들었다.

웹서버 코드는 웹서핑 해서 나온 코드를 대충 때려박아 넣었다.

핵심인 배달업체 페이지 분석에서 학교 홈페이지가 공개되면 여러모로 곤란해질듯 하여 그 부분은 X로 마스킹 했으니, 그냥 켜면 절대 돌아가지 않는다.

'프로그래밍 > Ruby' 카테고리의 다른 글

WebSocket Servlet for WEBrick  (0) 2014.03.27
POVIS 자동화 라이브러리  (0) 2010.10.06
Fortune Delivery  (0) 2010.06.17
Ruby-GNOME2-0.19.4 for Windows  (1) 2010.04.27
ruby 동영상 플레이어 라이브러리 with DirectShow  (0) 2010.04.18
Ruby-GTK2 0.19.3 for Windows  (0) 2010.04.13
2009. 11. 16. 15:14
리눅스 쓰다 보면 폰트가 참 별게 없다는 생각이 많이 든다. 그래서 며칠 전에 쓸려고 공짜 폰트를 뒤져봤는데, 생각보다 공짜 - 돈을 안내는 것만 - 인 폰트가 꽤 많았다. 근데 너무 흩어져있어서 -_-;; 한번에 받을 수 있는 스크립트를 짜봤다.

짜다보니 지쳐서 뒤로 갈수록 상태가 안좋아지는 문제가 있긴 한데 -_-;; 그래도 일단 당장에 쓰는데는 문제가 없을거다.

사용한 gem은 rubyzip (ZIP 파일로 압축된 폰트를 풀 때 쓴다), archive-tar-minitar(tar.gz나 tgz파일), highline (프롬프트), open-uri (Net::HTTP로 하나하나 받으려니 귀찮아서 사용 - open 함수로 간단하게 URL을 열 수 있게 해주는 젬), hpricot(HTML 파서)가 추가로 설치해야하는 젬들이고, 나머지는 유명하거나 stdlib으로 포함되어 있으니까 패스.

소스는 첨부된 것을 참조하면 된다.

여기서 재활용이 가능한 코드는, NForgeDownloader와 TarGzDistribution, ZipDistribution 정도이다. NForgeDownloader를 mixin해 넣고 initialize_downloader로 사이트 주소와 프로젝트명을 넣으면 download 함수를 호출함으로써 최신 버전을 받을 수 있다. xxxDistribution을 mixin하면 @downloaded에 지정된 파일을 클래스 이름에 해당하는 서브디렉토리를 만들어서 그 안에 풀어주는데, 저 변수는 NForgeDownloader의 download에서 설정되기 때문에 딱히 손을 안대도 알아서 받아서 풀어주는 메서드가 생긴다. get_preferred_item 함수를 통해서 받고싶은 파일의 이름을 지정할 수 있는데, 역시 Distribution 시리즈에서 자동으로 확장자가 자기가 처리할 수 있는 것을 받도록 한다.

rb 파일은 소스파일, exe파일은 이전에 올린바 있는 rubyscript2exe로 만든 패킹된 Self Extract 프로그램이다.