#!/usr/bin/env ruby ################################################################################ # # # Fortune Delivery; Random Delivery Menu # # # # Programmed by gwangyi(gwangyi@postech.ac.kr) # # # # This program is available under # # the Creative Commons-Attribution-Noncommercial-Share Alike 2.0 Korea license # # or any later. # # # ################################################################################ require 'socket' require 'delivery' $logfile = open('fortune_delivery.log', 'a') # Override puts for logging to file def puts(x) x = '[%s] %s' % [Time.now.strftime('%a, %d %b %Y %H:%M:%S %z'), x] $stdout.puts x $logfile.puts x end # PNG Background WHATDOIEAT_PNG = "\211PNG\r\n\032\n\000\000\000\rIHDR\000\000\002X\000\000\001h\002\003\000\000\000\366\232m" + "\177\000\000\000\001sRGB\000\256\316\034\351\000\000\000\tPLTE\377\377\377\314\252f\377\356\314\320" + "\026\244rX\3071\214>\313\217\217 \255\3254W\020\326j\232+\376V\347s\233" + "\365g\267\271jk\275\336\177\252\021\235\346\252\2667\347\230\266\342\016sU\326\372\342\231\002\177\264\233+" + "\356+KwX\323vs\255\370\214\245W\322j.\273\265{.Y\223Vs}gZ\273\355\262\335^" + "\333\326J>YQ\213\271\343\301Y\355\366\253\245\347\212\031\231\325\243\301l\254\344\224%\232\3666\326\342" + "\275X3\346jL\210\037\274\262V\376\2648\355\233\323\356m.\351o\253\344\225eTd>3\270o" + "m\265\212\314+H\037\334\262V^Y\016\302Z\326\\_^\267#\271e\t\357\236\213\275 ::\274" + "V\232\377\233\nW\207\340/\210\306\363N\3177\365x\301\334s\355\235F\236\312\232q\366\\G\247\333" + "\242\216_\366u\335v\353o5/\276;\274\330\017g\253T\253\214~q\203\223\353\230\374\251\321D/" + "{d-\262:[\213\365\270\262\234\216\353\227\337\347L\242\366\277*\223\230\345u\266\224\0327e\316\375" + "|Y\022\337\034YJu\312\232/\253l\211\261\r\346(\241\245(\325/\271II\242r_Vb\177" + "rM\224\034\331`\t-\212\245\265\364\261\024^\226\222\265\375\301\334\356\255\310\210\345G\316\326\003-\212" + "\204\0263\345\233\334\332\354\232\267\331\314fI\311H\026\257\223h\334l\305\264(\226\264\320|\020\221K" + "\245y\225\217\345UX\245y\261V\231\2265\362\r\t)\212\202\264\320\342\271|UJe6[22" + "Oy\232\227\207\2418}\352j>9\300\335\177#\213\020tJ\273\255\254\220#\326\363*G\v\223\221" + "\3715\242B\326\242\220\265\234\314\305z|Y\202\024\305)\355\266\226n#qMN\225\255%\331\262\374" + "\372\256\2207v\333A\256!\350\206N\022\277\221\260lJ\324\222\234\273\371UVf\316\347\350\035\327\236" + "\224D\273k:k)\301wd\316(\315L\221\255\3427\306\356\206\250\315iI4\377}\265 S\244" + "\363\207\363jK\263\e\224\353\247\272\363\213h!2\036\266\370N\323\231\a\001\235\264\3315\344\350\3302" + "E\321\310\242\205\310\036-#\253`\225\233-\261\264\205h>:\266LQ\324\223bD\v\221\355\264l" + "\036\362gY\245D\272\275Xv\vY\205\226c]\210\216^\357\231\324\331\023\025\332\335\246g\354SX" + "M\254\307\272\020\331/z\"\335B\250\264\312\336\354\331>\352\323\031\325\247\361\006\203u]\236c\322@" + "/t\325\021\325\301\237\211\272\022\212\333g\213h\211\311\005D\236\026\205\217\234\260Y\224\376!\3511P" + "7\235'\211\226\307\346\224(\350S\365\246\220%\326Y\313\0244\332z\364\270\345\312\212\350S\315L\351" + "\003ttnE\036\267^{\262\325-k\364Y1\362\270u\234tgA\022R\211T\246m\3774\226" + "\254\016n\231,\254[\217\331\274h\366\333\207\2421\233\371\243\317\212j=w\236\2674}\276\341EX" + "\a\267\270W\a\267\330e\365r\213m\365s\213m\365s\213OV/\267\370d\365r\213m\rp\213" + "\355$\202[\340\026\270\005n\201[\340\026\270\005n\201[\340\026\270\005n\201[\340\026\270\005n\201[" + "\340\026\270\005n\201[\340\026\270\005n\201[\340\026\270\005n\201[\340\026\270\005n\201[\340\026\270\005" + "n\201[\340\026\270\005n\201[\340\026\270\005n\201[\340\026\270\005n\201[\340\026\270\005n\201[\340" + "\026\270\005n\201[\340\026\270\005n\201[\340\026\270\005n\201[\340\026\270\005n\201[\340\026\270\005n" + "\201[\340\026\270\005n\201[\340\026\270\005n\201[\340\026\270\005n\201[\340\026\270\005n\201[\340\026" + "\270\005n\201[\340\026\270\005n\201[\340\026\270\005n\201[\340\026\270\005n\201[\340\026\270\005n\201" + "[\340\026\270\005n\201[\005+\362@d\205\311\255'\217[/a\310\372\345q\353-\fY\211\307\255" + "\257@d\325\334\232\026\254\bD\326\017\217[\2470d\025J\266{\235\255\202\025\2070d\025JvF" + "V\301\n\025\206\254B\311E\226\217\242`\305&\fY\205\222\263\221E6\224yMK\233\eYdC" + "\271eQ\233\223\r\r\241$\252=\331\320 \212\342#\265\371)\230f\276,\317\333f!\n\241$\356" + "\314\e\025LQL\250\222\262\020\235\203)\211V\326\317`\212bi\255O\332@\207P\0245A\337\333" + "h\301*\353B\257C4-\002\030\311\036\034\202F\316\226rO\211'\351l\351\a\277\254Uir\351" + "t9\001t\\\027\327\344\347@:.O\307)\214\216Kw[/^)b\277\206\320\374|sK\021" + "\3775\304\312+\316\017a\230\353\354\3613\016\302\\S_\205n\241\271\315\245\255E\207\n\025\202\271\264" + "\265\350P\261\t\301\\Z\003\355\373~\006`.c\255\317\346\266\276\a`\255\367\306|\306[\026\265\002" + "\347\313'\2619s\367\\Sc-\331h\242Y{.c\357\223lv:\214\r\275\356\371|\005\206\031" + "|\323bric\347\343\246I\215\273&\313~\276{\347 \214\271\270\356\347O\3336k\231KK6" + "v\305\207]\273\271\255\271X\354\025\331\317n\224\345\312\\\f7]\277w\177ve.\336\220\276\344\312" + "\\\254\321\325\355\360F\263\343#\346\342\213\246\255E\220\326\252\313bP\326\252{\256\240\254E\312\022_" + "\310\316\213K\316\370\034(LL\321Q\216\271\255%{n\305\371\3428\330\365\260D\347\224\232pZ\353" + "upVc\211\236\221\3761\244r\030\002\273\006&T.{}\363*\340\316\305p\370\256\350\267\200\210" + "\205\205\205\205\205\365\237\\\377\000:b\201\v\376d+\230\000\000\000\000IEND\256B`\202" # favicon.ico from IconArchive (http://www.iconarchive.com) FAVICON = "\000\000\001\000\002\000 \000\000\001\000\b\000\250\b\000\000&\000\000\000\020\020\000\000\001\000\b\000h\005" + "\000\000\316\b\000\000(\000\000\000 \000\000\000@\000\000\000\001\000\b\000\000\000\000\000\000\004\000\000\000\000" + "\000\000\000\000\000\000\000\001\000\000\000\000\000\000\377\377\377\000\313\376\377\000\231\376\377\000e\376\377\0003\376" + "\377\000\000\375\375\000\376\313\377\000\313\313\377\000\231\313\377\000e\313\377\0003\314\377\000\000\313\375\000\376\231" + "\377\000\313\231\377\000\231\231\377\000e\230\377\0003\230\377\000\000\230\375\000\376e\377\000\313e\377\000\230e" + "\377\000ee\377\0003e\377\000\000e\375\000\3763\377\000\3133\377\000\2303\377\000e3\377\00033" + "\377\000\0002\375\000\375\000\375\000\313\000\375\000\230\000\375\000e\000\375\0002\000\375\000\000\000\375\000\377\377" + "\313\000\313\377\313\000\231\377\314\000e\377\313\0003\377\314\000\000\375\313\000\377\313\313\000\314\314\314\000\230\313" + "\313\000f\313\314\0002\313\313\000\000\313\314\000\377\231\313\000\313\230\313\000\230\230\313\000f\230\314\0002\230" + "\313\000\000\231\314\000\377e\313\000\313f\314\000\230f\314\000ff\314\0002e\313\000\000e\314\000\3773" + "\313\000\3132\313\000\2302\313\000e2\313\00022\313\000\0002\314\000\375\000\313\000\313\000\314\000\230\000" + "\314\000e\000\314\0002\000\314\000\000\000\314\000\377\377\231\000\313\377\231\000\231\377\231\000e\377\230\0003\377" + "\231\000\000\375\230\000\377\314\231\000\313\313\230\000\230\313\230\000f\314\231\0002\313\230\000\000\314\231\000\377\231" + "\231\000\313\230\230\000\231\231\231\000e\230\230\0003\230\231\000\000\227\230\000\377e\230\000\314f\230\000\230e" + "\230\000ee\230\0003e\231\000\000e\230\000\3773\230\000\3132\230\000\2303\231\000e3\231\00033" + "\231\000\0002\230\000\375\000\230\000\314\000\230\000\227\000\230\000e\000\230\0002\000\230\000\000\000\230\000\377\377" + "e\000\313\377e\000\230\377e\000e\377e\0003\377f\000\000\375e\000\377\313e\000\314\314f\000\230\314" + "f\000f\314f\0002\313e\000\000\314f\000\377\230e\000\314\231f\000\230\230e\000e\230e\0003\231" + "f\000\000\230e\000\377ee\000\314ff\000\230ee\000fff\0002ee\000\000ef\000\3773" + "e\000\3132e\000\2313e\000e2e\00022e\000\0002f\000\375\000e\000\314\000e\000\230\000" + "e\000e\000f\0002\000f\000\000\000f\000\377\3773\000\314\3773\000\230\3773\000f\3773\0003\377" + "3\000\000\3752\000\377\3143\000\313\3132\000\230\3132\000e\3132\0002\3132\000\000\3143\000\377\231" + "3\000\313\2302\000\231\2313\000e\2313\0003\2313\000\000\2302\000\377f3\000\313e2\000\231f" + "3\000ee2\0002e2\000\000f3\000\37733\000\31322\000\23133\000e22\00033" + "3\000\00012\000\375\0002\000\314\0002\000\230\0002\000f\0002\0001\0002\000\000\0002\000\375\375" + "\000\000\313\375\000\000\230\375\000\000e\375\000\0002\375\000\000\000\375\000\000\375\313\000\000\314\314\000\000\231\314" + "\000\000e\314\000\0003\314\000\000\000\314\000\000\375\230\000\000\314\231\000\000\230\230\000\000e\230\000\0002\230" + "\000\000\000\230\000\000\375e\000\000\314f\000\000\230e\000\000ff\000\0002f\000\000\000f\000\000\3752" + "\000\000\3143\000\000\2302\000\000f3\000\00022\000\000\0002\000\000\375\000\000\000\314\000\000\000\230\000" + "\000\000f\000\000\0002\000\000\000\000\000\356\000\000\000\334\000\000\000\272\000\000\000\252\000\000\000\210\000\000\000" + "v\000\000\000T\000\000\000D\000\000\000\"\000\000\000\020\000\000\356\000\000\000\334\000\000\000\272\000\000\000\252" + "\000\000\000\210\000\000\000v\000\000\000T\000\000\000D\000\000\000\"\000\000\000\020\000\000\356\000\000\000\334\000" + "\000\000\272\000\000\000\252\000\000\000\210\000\000\000v\000\000\000T\000\000\000D\000\000\000\"\000\000\000\020\000" + "\000\000\356\356\356\000\335\335\335\000\273\273\273\000\252\252\252\000\210\210\210\000www\000UUU\000DD" + "D\000\"\"\"\000\021\021\021\000\000\000\000\000\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377,344" + "3,\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377,,44:4433^" + "___3\377\377\377\377\377\377\377\377\377\377\377\377\377\377,4:;:43\t\b\b\b\b\b\b" + "::___^,\377\377\377\377\377\377\377\377\377,444-\b\b\b\002\b\b\b\b\b\t\b" + "44:::__^,\377\377\377\377\377\377\377;3\b\002\002\002\b\b\002\b\b\b\b\t\t\b" + "44:444:__^,\377\377\377\377\377;4\002\002\002\002\b\b\002\b\b\b\b\t\t\b" + "44:4444:__^3\377\377\377\37744\002\002\002\002\002\002\002\002\b\b\b\t\t\b" + "44:4444444^^,\377\377\37744\002\b\b\002\002\002\002\002\b\b\b\t\t\b" + "44:44444444:3\377\377\37744\002\002\002\002\002\b\b\002\002\b\b\b\t\t" + "44:44::4444:3\377\377\37743\002\002\002\002\002\002\b\002\002\b\b\b\b-" + "44:44::4444:3\377\377\37743\002\002\b\b\002\002\002\b\b\002\b\b\b-" + "44:44::4444:3\377\377\37744\002\002\b\b\b\002\002\b\002\002\b\b\b3" + "44:44::4444:4\377\377\37744\002\002\002\b\b\002\002\002\002\002\002\b\b\t" + "44:44:;:444:4\377\377\37743\002\002\002\002\002\002\002\002\002\002\b\b\b\b" + "44:44;;;;4::3\377\377\377:3\002\002\002\002\002\002\002\002\002\002\b\b\b\b" + "4;;;;;;;;;;_3\377\377\377;-\b\b\b\b\002\002\002\002\002\002\002\b\002\b" + "4;_;;;;;;;__3\377\377\3774\b\b\b\b\b\002\002\002\002\002\002\002\002\002\b" + ":;_;;;;;;___3\377\377\3774\b\b\b\b\b\002\002\b\b\002\002\b\002\002\b" + ";__;;;;;;___3\377\377\3774\b\b\b\b\b\b\002\b\b\002\002\b\002\002\b" + ";___;;;;____,\377\377\3774\b\b\t\b\b\b\b\002\b\002\002\002\002\b\b" + ";_____;;____,\377\377\3774\b\b\b\b\b\b\b\002\002\002\002\b\b\b\b" + ";______;____\a\377\377\3774,\b\b\b\b\b\b\b\002\002\b\b\b\b3" + "____________\377\377\377\37744\b\t\t\b\b\b\b\b\b\b\b\b,:" + "_ee________:\377\377\377\377\a;3\b\t\t\t\t\b\b\b\b\b,:_" + "_eeeee_____,\377\377\377\377\3773;3\b\b\t\t\b\b\b\b,^__" + "ee_ee_____:\377\377\377\377\377\377\3773_^333333^^___" + "__^^^_____,\377\377\377\377\377\377\377\377\377^________e__" + "_^^^____3\a\377\377\377\377\377\377\377\377\377\377\377\3773^____eeee" + "eeee_^2,\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\a23^^^^" + "^33,\a\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377" + "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\374\017\377\377\000\003\377\360\000\000\177\300\000" + "\000\037\300\000\000\a\300\000\000\003\300\000\000\001\300\000\000\001\300\000\000\001\300\000\000\001\300\000\000\001\300\000" + "\000\001\300\000\000\001\300\000\000\001\300\000\000\001\300\000\000\001\300\000\000\001\300\000\000\001\300\000\000\001\300\000" + "\000\001\300\000\000\001\300\000\000\003\300\000\000\003\300\000\000\003\340\000\000\a\360\000\000\a\374\000\000\017\377\000" + "\000?\377\340\001\377\377\377\377\377\377\377\377\377(\000\000\000\020\000\000\000 \000\000\000\001\000\b\000\000\000" + "\000\000\000\001\000\000\000\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000\377\377\377\000\313\376\377\000\231\376" + "\377\000e\376\377\0003\376\377\000\000\375\375\000\376\313\377\000\313\313\377\000\231\313\377\000e\313\377\0003\314" + "\377\000\000\313\375\000\376\231\377\000\313\231\377\000\231\231\377\000e\230\377\0003\230\377\000\000\230\375\000\376e" + "\377\000\313e\377\000\230e\377\000ee\377\0003e\377\000\000e\375\000\3763\377\000\3133\377\000\2303" + "\377\000e3\377\00033\377\000\0002\375\000\375\000\375\000\313\000\375\000\230\000\375\000e\000\375\0002\000" + "\375\000\000\000\375\000\377\377\313\000\313\377\313\000\231\377\314\000e\377\313\0003\377\314\000\000\375\313\000\377\313" + "\313\000\314\314\314\000\230\313\313\000f\313\314\0002\313\313\000\000\313\314\000\377\231\313\000\313\230\313\000\230\230" + "\313\000f\230\314\0002\230\313\000\000\231\314\000\377e\313\000\313f\314\000\230f\314\000ff\314\0002e" + "\313\000\000e\314\000\3773\313\000\3132\313\000\2302\313\000e2\313\00022\313\000\0002\314\000\375\000" + "\313\000\313\000\314\000\230\000\314\000e\000\314\0002\000\314\000\000\000\314\000\377\377\231\000\313\377\231\000\231\377" + "\231\000e\377\230\0003\377\231\000\000\375\230\000\377\314\231\000\313\313\230\000\230\313\230\000f\314\231\0002\313" + "\230\000\000\314\231\000\377\231\231\000\313\230\230\000\231\231\231\000e\230\230\0003\230\231\000\000\227\230\000\377e" + "\230\000\314f\230\000\230e\230\000ee\230\0003e\231\000\000e\230\000\3773\230\000\3132\230\000\2303" + "\231\000e3\231\00033\231\000\0002\230\000\375\000\230\000\314\000\230\000\227\000\230\000e\000\230\0002\000" + "\230\000\000\000\230\000\377\377e\000\313\377e\000\230\377e\000e\377e\0003\377f\000\000\375e\000\377\313" + "e\000\314\314f\000\230\314f\000f\314f\0002\313e\000\000\314f\000\377\230e\000\314\231f\000\230\230" + "e\000e\230e\0003\231f\000\000\230e\000\377ee\000\314ff\000\230ee\000fff\0002e" + "e\000\000ef\000\3773e\000\3132e\000\2313e\000e2e\00022e\000\0002f\000\375\000" + "e\000\314\000e\000\230\000e\000e\000f\0002\000f\000\000\000f\000\377\3773\000\314\3773\000\230\377" + "3\000f\3773\0003\3773\000\000\3752\000\377\3143\000\313\3132\000\230\3132\000e\3132\0002\313" + "2\000\000\3143\000\377\2313\000\313\2302\000\231\2313\000e\2313\0003\2313\000\000\2302\000\377f" + "3\000\313e2\000\231f3\000ee2\0002e2\000\000f3\000\37733\000\31322\000\2313" + "3\000e22\000333\000\00012\000\375\0002\000\314\0002\000\230\0002\000f\0002\0001\000" + "2\000\000\0002\000\375\375\000\000\313\375\000\000\230\375\000\000e\375\000\0002\375\000\000\000\375\000\000\375\313" + "\000\000\314\314\000\000\231\314\000\000e\314\000\0003\314\000\000\000\314\000\000\375\230\000\000\314\231\000\000\230\230" + "\000\000e\230\000\0002\230\000\000\000\230\000\000\375e\000\000\314f\000\000\230e\000\000ff\000\0002f" + "\000\000\000f\000\000\3752\000\000\3143\000\000\2302\000\000f3\000\00022\000\000\0002\000\000\375\000" + "\000\000\314\000\000\000\230\000\000\000f\000\000\0002\000\000\000\000\000\356\000\000\000\334\000\000\000\272\000\000\000" + "\252\000\000\000\210\000\000\000v\000\000\000T\000\000\000D\000\000\000\"\000\000\000\020\000\000\356\000\000\000\334" + "\000\000\000\272\000\000\000\252\000\000\000\210\000\000\000v\000\000\000T\000\000\000D\000\000\000\"\000\000\000\020" + "\000\000\356\000\000\000\334\000\000\000\272\000\000\000\252\000\000\000\210\000\000\000v\000\000\000T\000\000\000D\000" + "\000\000\"\000\000\000\020\000\000\000\356\356\356\000\335\335\335\000\273\273\273\000\252\252\252\000\210\210\210\000ww" + "w\000UUU\000DDD\000\"\"\"\000\021\021\021\000\000\000\000\00043\002\002\002\002\002\002\002\002" + "\002\002\b\b\b\b:3\002\002\002\002\002\002\002\002\002\002\b\b\b\b;-\b\b\b\b\002\002\002\002" + "\002\002\002\b\002\b4\b\b\b\b\b\002\002\002\002\002\002\002\002\002\b4\b\b\b\b\b\002\002\b\b" + "\002\002\b\002\002\b4\b\b\b\b\b\b\002\b\b\002\002\b\002\002\b4\b\b\t\b\b\b\b\002\b" + "\002\002\002\002\b\b4\b\b\b\b\b\b\b\002\002\002\002\b\b\b\b4,\b\b\b\b\b\b\b\002" + "\002\b\b\b\b344\b\t\t\b\b\b\b\b\b\b\b\b,:\a;3\b\t\t\t\t\b\b" + "\b\b\b,:_\3773;3\b\b\t\t\b\b\b\b,^__\377\3773_^33333" + "3^^___\377\377\377\377^________e__\377\377\377\377\377\3773^__" + "__eeee\377\377\377\377\377\377\377\377\377\a23^^^^\000\000\000\000\000\000\000\000\000\000" + "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000\000" + "\000\000\200\000\000\000\300\000\000\000\360\000\000\000\374\000\000\000\377\200\000\000" # add randomly choosing method class Delivery def random cat = self.categories[rand self.categories.length] shop = cat.shops[rand cat.shops.length] menu_cat = shop.menu_entries.keys[rand shop.menu_entries.keys.length] menu = shop.menu_entries[menu_cat][rand shop.menu_entries[menu_cat].length] [menu, menu_cat, shop, cat] end end # escape some special characters def escapeXML(x) x.gsub('&', '&'). gsub("'", '''). gsub('"', '"'). gsub('<', '<'). gsub('>', '>') end # fortune_delivery.css def css_output <DIV, .whatdoieat>div { position: absolute; left: 50px; top: 110px; width: 500px; height: 200px; line-height: 2em; } .whatdoieat .menu { position: absolute; left: 280px; top: 50px; font-size: 32px; } .price { font-weight: bold; color: green; } .good { font-weight: bold; color: blue; } .bad { font-weight: bold; color: red; } .shop { font-weight: bold; font-size: 1.1em; } .category, .key { font-weight: bold; color: purple; } .tel { font-weight: bold; color: gray; text-decoration: underline } .note { color: gray; } .button { text-decoration: none; display: block; color: black; border: outset 2px; position: absolute; right: 70px; bottom: 50px; width: 8em; height: 1.2em; text-align: center; padding: 0.2em; background: #ddd; } a.button:hover { border: inset 2px; background: #eee; } END_OF_CSS end # fortune_delivery.xsl def xsl_output < Fortune :: Delivery
자세한 설명이 붙어있어!
가격은 , 점수는 /, 강추! 평가가 없네... 반대가 거의 없어! 꽤 괜찮은거 같아! 그럭저럭인데? 이건 안되겠구만! 애매한데...
에서 팔아. 종류는 야.
시키려면 으로 콜~
자세한 내용은 기자회 배달 페이지에서 확인해봐☆
딴 거 먹을래!
END_OF_XSL end $delivery_catalog = Delivery.new # common randomly choosing routine def get_result ok = false for category in $delivery_catalog.categories if category.shops.any? {|shop| shop.status == 0 } ok = true break end end if ok result = $delivery_catalog.random while result[2].status != 0 result = $delivery_catalog.random end result else nil end end # index.html def html_output out = StringIO.new result = get_result if result.nil? # if there're no opened shops < Fortune :: Delivery
전부 문을 닫아서 시킬 수가 없어요 :(
END_OF_HTML else out.puts < Fortune :: Delivery
#{escapeXML result[0].name}
END_OF_HTML if not (result[0].note.nil? or result[0].note.gsub(/^\s+|\s+$/, '').empty?) out.puts '자세한 설명이 붙어있어! %s
' % escapeXML(result[0].note) end out.puts <₩#{result[0].price}, 점수는 #{result[0].good}/#{result[0].bad}, END_OF_HTML comment = case when result[0].good > 80 '강추!' when result[0].bad < 5 case when result[0].good < 5 '평가가 없네...' else '반대가 거의 없어!' end when result[0].good / result[0].bad > 2 '꽤 괜찮은거 같아!' when result[0].good.to_f / result[0].bad > 0.8 '그럭저럭인데?' when result[0].bad < 10 '이건 안되겠구만!' else '애매한데...' end out.puts comment + '
' out.puts <#{escapeXML result[2].name}에서 팔아. 종류는 #{escapeXML result[3].name} #{escapeXML result[1]}야.
시키려면 #{result[2].phone}으로 콜~
자세한 내용은 기자회 배달 페이지에서 확인해봐☆
딴 거 먹을래!
END_OF_HTML out.string end end # index.xml def xml_output result = get_result if result.nil? ' ' else < #{escapeXML result[3].name} #{escapeXML result[3].href} #{escapeXML result[2].name} #{escapeXML result[2].phone} #{result[2].status} #{escapeXML result[2].href} #{escapeXML result[1]} #{escapeXML result[0].name} #{result[0].price} #{result[0].good} #{result[0].bad} #{result[0].note} END_OF_HTML end end # refreshing thread Thread.new do begin while true puts 'Now refreshing...' delivery_catalog = Delivery.new delivery_catalog.categories.each do |category| category.shops.each do |shop| shop.menu_entries.each do |kind, entries| entries.each {|entry| entry.note} end end end $delivery_catalog = delivery_catalog puts 'done!' sleep 600 end rescue puts $!.class.to_s + ': ' + $!.message $!.backtrace.each {|bt| puts bt } end end # main loop webserver = TCPServer.new('0.0.0.0', 3087) while((session = webserver.accept)) begin request = session.gets trimmedrequest = request.gsub(/GET\ \//, '').gsub(/\ HTTP.*/, '') filename = trimmedrequest.chomp puts (' -- %d.%d.%d.%d ' % session.getpeername.unpack('SSCCCC')[2..-1]) + filename case filename when 'favicon.ico' session.print "HTTP/1.1 200/OK\r\nContent-type:image/ico\r\n\r\n" session.print FAVICON when 'whatdoieat.png' session.print "HTTP/1.1 200/OK\r\nContent-type:image/png\r\n\r\n" session.print WHATDOIEAT_PNG when 'fortune_delivery.xsl' session.print "HTTP/1.1 200/OK\r\nContent-type:text/xsl\r\n\r\n" session.print xsl_output when 'fortune_delivery.css' session.print "HTTP/1.1 200/OK\r\nContent-type:text/css\r\n\r\n" session.print css_output when '?xml' session.print "HTTP/1.1 200/OK\r\nContent-type:text/xml\r\n\r\n" session.print xml_output else session.print "HTTP/1.1 200/OK\r\nContent-type:text/html\r\n\r\n" session.print html_output end rescue puts $!.class.to_s + ': ' + $!.message $!.backtrace.each {|bt| puts bt } ensure session.close end end