<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-16145282</id><updated>2011-04-22T06:20:54.115+08:00</updated><category term='linux'/><category term='ruby'/><category term='haml'/><category term='yahoo'/><category term='activerecord'/><category term='hobix'/><category term='randomize'/><category term='html_parser'/><category term='select'/><category term='tools'/><category term='Website'/><category term='sms'/><category term='in place editing'/><category term='documentation'/><category term='php'/><category term='security'/><category term='programming'/><category term='gtk'/><category term='twrug portal'/><category term='hemidemi'/><category term='中文化'/><category term='rubygems'/><category term='api'/><category term='regular expression'/><category term='sample'/><category term='library'/><category term='array'/><category term='lecture'/><category term='gui_toolkit'/><category term='wxwidgets'/><category term='lifetype'/><category term='Taiwan'/><category term='plaintext'/><category term='rails'/><category term='error message'/><category term='video'/><category term='error'/><category term='account'/><category term='ide'/><category term='Offical Website'/><category term='html tag'/><category term='generator'/><category term='google'/><category term='screencast'/><title type='text'>CFC on Rails</title><subtitle type='html'>火車請別撞我</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>60</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-16145282.post-482248407300059164</id><published>2008-07-03T03:16:00.000+08:00</published><updated>2008-07-03T03:17:22.445+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>HTTP Response 500!?</title><content type='html'>&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;剛剛在解決一個小Bug&lt;br /&gt;用瀏覽器瀏覽某個會丟301的網站時，在Ruby或Telnet都會丟500回來&lt;br /&gt;什麼鬼.. 怎麼會這樣？&lt;br /&gt;&lt;br /&gt;其實這是因為沒有User-Agent的關係啦&lt;br /&gt;有些Web Server可能會Reject一些Header中沒有User-Agent的Request&lt;br /&gt;所以這時候只要在丟request時加上User-Agent這個Header即可&lt;br /&gt;原本的原始碼：&lt;br /&gt;&lt;blockquote&gt;response = Net::HTTP.get_response(URI.parse(uri_str))&lt;br /&gt;&lt;/blockquote&gt; 改成：&lt;br /&gt;&lt;blockquote&gt;uri = URI.parse(uri_str)&lt;br /&gt;http = Net::HTTP.new(uri.host)&lt;br /&gt;response = http.send_request('GET', uri.request_uri, {"User-Agent" =&gt; "Mozilla/5.0"})&lt;br /&gt;&lt;/blockquote&gt; 這樣一來不管是301、302，還是最該死的404都沒問題啦XD&lt;br /&gt;&lt;br /&gt;(( 因為這篇是工作上的心得，所以只好擺在Rails啦XD&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-1447561-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-482248407300059164?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.pixnet.net/zusocfc/post/19431582' title='HTTP Response 500!?'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/482248407300059164/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=482248407300059164' title='4 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/482248407300059164'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/482248407300059164'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2008/07/http-response-500.html' title='HTTP Response 500!?'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-5663196836044742816</id><published>2008-06-24T01:05:00.002+08:00</published><updated>2008-06-24T02:31:31.470+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='error message'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='中文化'/><title type='text'>修改error_messages_for，讓表單錯誤資訊中文化更完整</title><content type='html'>今天摸會了Git，就順便應用上了&lt;br /&gt;error_messages_for大家都用過，也都知道這個不管再怎樣中文化，欄位名稱一樣都會出現給你看！&lt;br /&gt;這真的是令人又愛(英語體系者愛)又恨(非英語體系者恨)的功能啊..&lt;br /&gt;沒辦法，只好自己動手了...&lt;br /&gt;我剛剛發了Git pull給Rails團隊，他們接受不接受我不知道，所以在這邊教大家如何自己搞定這一切&lt;br /&gt;首先，先打開Rails這部份的原始碼&lt;br /&gt;假設我Ruby安裝在C:\&lt;br /&gt;所以路徑就是：C:\ruby\lib\ruby\gems\1.8\gems\actionpack-2.1.0\lib\action_view\helpers\active_record_helper.rb&lt;br /&gt;接 著，跳到error_messages_for那段程式碼，在options = params.extract_options!.symbolize_keys底下加入：fields = options[:fields].nil? ? {} : options[:fields]&lt;br /&gt;然後把error_messages = objects.sum {|object| object.errors.full_messages.map {|msg| content_tag(:li, msg) } }.join這行註解，改為：&lt;br /&gt;&lt;blockquote&gt;error_messages = objects.sum {|object| object.errors.full_messages.map {|msg|&lt;br /&gt;              unless fields[msg.split(" ")[0].downcase.to_sym].nil?&lt;br /&gt;                msg = msg.split(" ")&lt;br /&gt;                field_name = msg.shift.downcase!&lt;br /&gt;                msg = msg.reverse.push(fields[field_name.to_sym]).reverse.join(" ")&lt;br /&gt;              end&lt;br /&gt;              content_tag(:li, msg)&lt;br /&gt;} }.join&lt;/blockquote&gt;存檔離開，然後這樣用：&lt;br /&gt;&lt;blockquote&gt;error_messages_for(:project, :fields =&gt; {:name =&gt; "專案名稱", :summary =&gt; "專案摘要"})&lt;br /&gt;&lt;/blockquote&gt;而content_tag產生出來的就會是&lt;br /&gt;&lt;blockquote&gt;&lt;li&gt;專案名稱 can't be blank&lt;/li&gt;&lt;!-- 或其他的錯誤訊息 //--&gt;&lt;br /&gt;&lt;li&gt;專案摘要 can't be blank&lt;/li&gt;&lt;!-- 或其他的錯誤訊息 //--&gt;&lt;br /&gt;&lt;/blockquote&gt;很簡單吧:P?&lt;br /&gt;注意，只能夠傳小寫的symbol進去&lt;br /&gt;沒辦法，我功力太差了=_=|||&lt;br /&gt;可以參考這邊：&lt;a href="http://github.com/cfc/rails/commit/9e38903fd10a2de9ae9c2ca53623469f3575b43c" target="_blank"&gt;http://github.com/cfc/rails/commit/9e38903fd10a2de9ae9c2ca53623469f3575b43c&lt;/a&gt;&lt;br /&gt;有任何問題歡迎提出，也可以在github上commit給我&lt;br /&gt;多謝多謝:P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-5663196836044742816?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.pixnet.net/zusocfc/post/19057429' title='修改error_messages_for，讓表單錯誤資訊中文化更完整'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/5663196836044742816/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=5663196836044742816' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/5663196836044742816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/5663196836044742816'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2008/06/errormessagesfor.html' title='修改error_messages_for，讓表單錯誤資訊中文化更完整'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-2015112806700003782</id><published>2008-04-17T00:50:00.000+08:00</published><updated>2008-04-17T00:52:20.153+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='api'/><category scheme='http://www.blogger.com/atom/ns#' term='yahoo'/><category scheme='http://www.blogger.com/atom/ns#' term='lifetype'/><title type='text'>Yahoo-LifeType-API (Yahoo!奇摩生活+ Ruby API)</title><content type='html'>今天剛看到生活+釋出API(其實早就釋出了，API網址：&lt;a href="http://tw.developer.yahoo.com/lifestyle_api.html"&gt;http://tw.developer.yahoo.com/lifestyle_api.html&lt;/a&gt;)後，就開始把NetBeans打開來寫程式了XD&lt;br /&gt;現在RubyForge的專案還沒開，倒是GoogleCode的已經開了(網址：&lt;a href="http://code.google.com/p/yahoo-lifetype-api/"&gt;http://code.google.com/p/yahoo-lifetype-api/&lt;/a&gt;)&lt;br /&gt;程式是BSD授權，忘記怎樣包裝Gem檔，等到哪天想起來再包XD&lt;br /&gt;程式使用範例(列出生活+的分類)：&lt;br /&gt;&lt;blockquote&gt;&lt;pre class="prettyprint"&gt;&lt;a id="Example_(Traditional_Chinese)"&gt;#!/usr/bin/env ruby&lt;br /&gt;APPID = &amp;quot;NhYX9XjV34FPxdq7zD8T7wwc4QGI5VWu_48NHh03zbPYUfPpcWrpZzhcVDKFQsH9dQ--&amp;quot;&lt;br /&gt;require 'lifetype'&lt;br /&gt;require 'rexml/document'&lt;br /&gt;include REXML&lt;br /&gt;&lt;br /&gt;puts &amp;quot;獲取生活+類別中... 請稍後&amp;quot;&lt;br /&gt;doc = Document.new(LifeType::Class.new(APPID).listClasses)&lt;br /&gt;puts &amp;quot;獲取類別結束&amp;quot;&lt;br /&gt;puts &amp;quot;類別總數： &amp;quot; + doc.get_elements(&amp;quot;//rsp/ClassList&amp;quot;)[0].attribute(&amp;quot;count&amp;quot;).to_s&lt;br /&gt;puts &amp;quot;列出類別中... 請稍後&amp;quot;&lt;br /&gt;doc.elements.each(&amp;quot;//rsp/ClassList/Class&amp;quot;) do |ele|&lt;br /&gt;  puts &amp;quot;ID: #{ele.attributes[&amp;quot;id&amp;quot;]} -- #{ele.get_elements(&amp;quot;Title&amp;quot;)[0].text}&amp;quot;&lt;br /&gt;end&lt;br /&gt;puts &amp;quot;列出類別結束&amp;quot;&lt;br /&gt;&lt;/a&gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;pre class="prettyprint"&gt;很簡單的就可以使用了，還有doc喔！&lt;br /&gt;有Bug可以丟到GoogleCode的Issues或者丟到我信箱內&lt;br /&gt;謝謝^^&lt;/pre&gt;&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-1447561-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-2015112806700003782?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.pixnet.net/zusocfc/post/16637964' title='Yahoo-LifeType-API (Yahoo!奇摩生活+ Ruby API)'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/2015112806700003782/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=2015112806700003782' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/2015112806700003782'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/2015112806700003782'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2008/04/yahoo-lifetype-api-yahoo-ruby-api.html' title='Yahoo-LifeType-API (Yahoo!奇摩生活+ Ruby API)'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-5285702348061624425</id><published>2007-09-13T22:04:00.000+08:00</published><updated>2007-09-13T22:08:00.703+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='sample'/><title type='text'>偵測DNS是否還活著.. 用Ruby</title><content type='html'>有鑒於某台主機的DNS常常掛掉.. 所以就寫了這個小程式..&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;while true&lt;br /&gt;&amp;nbsp; `ps aux | grep named`.split(&amp;quot;\n&amp;quot;).each{|line|&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; user, pid, cpu, mem, vsz, rss, tty, stat, start, time, *command = line.split(&amp;quot;\s&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; flag = true if command[0] == &amp;quot;/usr/sbin/named&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; `/etc/init.d/named start` unless flag&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; sleep 300&lt;br /&gt;end&lt;/blockquote&gt;&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-1447561-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-5285702348061624425?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.pixnet.net/zusocfc/post/8781913' title='偵測DNS是否還活著.. 用Ruby'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/5285702348061624425/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=5285702348061624425' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/5285702348061624425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/5285702348061624425'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/09/dns-ruby.html' title='偵測DNS是否還活著.. 用Ruby'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-7594046505425708538</id><published>2007-09-10T08:52:00.000+08:00</published><updated>2007-09-10T08:55:21.578+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='regular expression'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>線上Ruby Regular Expression Editor</title><content type='html'>Ruby/Rails寫到一半.. 忽然需要用到RegExp來驗證某個東西(Ex: E-mail)，卻臨時找不到工具可以測試自己寫的RegExp是否正確該怎辦？&lt;br /&gt;沒關係！這邊有個網站：&lt;a href="http://www.rubular.com/"&gt;http://www.rubular.com/&lt;/a&gt;&lt;br /&gt;這個網站可以讓您線上測試RegExp是否正確唷:)&lt;br /&gt;可以試試看！&lt;br /&gt;&lt;br /&gt;資料來源：China on Rails &lt;a href="http://chinaonrails.com/topic/view/723/1.html"&gt;http://chinaonrails.com/topic/view/723/1.html&lt;/a&gt;&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-1447561-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-7594046505425708538?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.pixnet.net/zusocfc/post/8649344' title='線上Ruby Regular Expression Editor'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/7594046505425708538/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=7594046505425708538' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/7594046505425708538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/7594046505425708538'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/09/ruby-regular-expression-editor.html' title='線上Ruby Regular Expression Editor'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-8177163684523873877</id><published>2007-07-30T13:56:00.000+08:00</published><updated>2007-07-30T13:58:35.655+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='wxwidgets'/><category scheme='http://www.blogger.com/atom/ns#' term='gui_toolkit'/><title type='text'>WxWidgets初體驗</title><content type='html'>最近無聊想寫點小程式.. 可是不想用Visual Basic寫，用Ruby + GUI Toolkit寫&lt;br /&gt;可是該選哪套GUI Toolkit? 說真的.. GTK+好難用喔ˊˋ.. Qt完完全全不想用&lt;br /&gt;WindowsAPI? 那我乾脆用VB就好了=..=&lt;br /&gt;選來選去看來看去.. 乾脆就看了godfat的建議，去玩wxWidgets&lt;br /&gt;wxWidgets在Ruby上的binding叫做WxRuby，我們先來做準備吧。&lt;br /&gt;首先，我們要安裝wxWidgets跟WxRuby&lt;br /&gt;連線到&lt;a _fcksavedurl="http://www.wxwidgets.org/" href="http://www.wxwidgets.org/"&gt;http://www.wxwidgets.org/&lt;/a&gt;下載wxWidgets&lt;br /&gt;接著打開命令提示字元，輸入gem i wxruby -y&lt;br /&gt;一切搞定後，就可以開始先來寫個"哈囉握的"&lt;br /&gt;開啟irb，輸入以下程式碼&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;require 'rubygems'&lt;br /&gt;require 'wx'&lt;br /&gt;include Wx # =&gt; 我比較懶XD&lt;br /&gt;&lt;br /&gt;class HelloWorld &lt;&gt; on_init override&lt;br /&gt; helloframe = Frame.new(nil, -1, "HelloWorld")&lt;br /&gt; StaticText.new(helloframe, -1, "Wa ha ha")&lt;br /&gt; helloframe.show&lt;br /&gt;end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;HelloWorld.new.main_loop&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;在wxWidgets中，每個視窗都是一個Frame，而StaticText則是Label(在VB中就叫做Label，SWT我不知道XD)&lt;br /&gt;Okok.. 可以動對不對？ 不能動那就.. (( 當作沒看到&lt;br /&gt;&lt;br /&gt;繼續...&lt;br /&gt;或許各位會認為很奇怪，為什麼要自己慢慢寫.. 不要用視覺化的開發工具呢？&lt;br /&gt;現在來跟各位介紹，在GTK中有所謂的Glade，那在wxWidgets呢？當然有wxGlade！&lt;br /&gt;如果不喜歡wxGlade，這邊也有列表：[&lt;a _fcksavedurl="http://zh.wikipedia.org/wiki/WxWidgets#.E6.95.B4.E5.90.88.E9.96.8B.E7.99.BC.E7.92.B0.E5.A2.83.EF.BC.88IDE.EF.BC.89.E8.88.87.E5.BF.AB.E9.80.9F.E9.96.8B.E7.99.BC.E5.B7.A5.E5.85.B7.EF.BC.88RAD_tools.EF.BC.89" href="http://zh.wikipedia.org/wiki/WxWidgets#.E6.95.B4.E5.90.88.E9.96.8B.E7.99.BC.E7.92.B0.E5.A2.83.EF.BC.88IDE.EF.BC.89.E8.88.87.E5.BF.AB.E9.80.9F.E9.96.8B.E7.99.BC.E5.B7.A5.E5.85.B7.EF.BC.88RAD_tools.EF.BC.89"&gt;網址太長請點我&lt;/a&gt;]&lt;br /&gt;在wxWidgets中，支援一種叫做XRC(XML Resource)的格式檔案，很多視覺化工具，如wxGlade都支援輸出這種檔案。&lt;br /&gt;這種檔案的好處是不管是哪種開發工具或者程式語言，都可以藉由這個XRC檔案來產生一樣的介面。&lt;br /&gt;各位可以到&lt;a _fcksavedurl="http://wxglade.sourceforge.net/" href="http://wxglade.sourceforge.net/"&gt;http://wxglade.sourceforge.net/&lt;/a&gt;下載wxGlade，安裝後就可以開始拖拉了。&lt;br /&gt;弄好一個介面後，我們選擇產生XRC檔案。&lt;br /&gt;接著在同個目錄下，新增一個.rb檔案。&lt;br /&gt;假設我們有一個Frame與一個Button&lt;br /&gt;Frame: MainFrame&lt;br /&gt;Button: btnButton&lt;br /&gt;程式碼如下&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;require 'rubygems'&lt;br /&gt;require 'wx'&lt;br /&gt;include Wx&lt;br /&gt;&lt;br /&gt;class MainFrame &lt; btn =" find_window_by_id(xrcid('btnButton'))" xml =" XmlResource.get" xrc_file =" File.join(File.dirname(__FILE__)," main =" MainFrame.new"&gt;&lt;br /&gt;OK，大致上就這樣囉..&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-1447561-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-8177163684523873877?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.pixnet.net/zusocfc/post/6863502' title='WxWidgets初體驗'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/8177163684523873877/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=8177163684523873877' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/8177163684523873877'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/8177163684523873877'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/07/wxwidgets.html' title='WxWidgets初體驗'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-885409460094744129</id><published>2007-06-29T03:07:00.000+08:00</published><updated>2007-06-29T03:08:01.113+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='select'/><title type='text'>Rails中實做下拉式選單</title><content type='html'>太久沒有寫文章了.. 最近接到一個案子.. 剛好讓我重溫Select的使用方法..&lt;br /&gt;嗯.. 結果卡在multiple，不知道是我太想睡還是怎樣.. 居然傻了..&lt;br /&gt;跑去#rubyonrails問，一位名為carpet_the_walls的網友給了我他寫的文章，網址是：&lt;br /&gt;&lt;a href="http://shiningthrough.co.uk/Select+helper+methods+in+Ruby+on+Rails"&gt;http://shiningthrough.co.uk/Select+helper+methods+in+Ruby+on+Rails&lt;/a&gt;&lt;br /&gt;在此先謝謝&lt;font color="#ff0000"&gt;carpet_the_walls (Thank you, carpet_the_walls)&lt;/font&gt;！&lt;br /&gt;&lt;br /&gt;來做個Memo.. 不然又忘記了..&lt;br /&gt;在Rails中真的有一堆Select helper可以用.. 不只carpet_the_walls混淆，連我也模糊不清！&lt;br /&gt;常見的有三個..&lt;br /&gt;select, select_tag, collection_select(其餘的什麼select_date那些不談)&lt;br /&gt;我們先來看看一個基本的下拉式選單骨架&lt;br /&gt;&lt;blockquote&gt;&amp;lt;select name=&amp;quot;selection&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;option value=&amp;quot;1&amp;quot;&amp;gt;Opt1&amp;lt;/option&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;option value=&amp;quot;2&amp;quot;&amp;gt;Opt2&amp;lt;/option&amp;gt;&lt;br /&gt;&amp;lt;/select&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;在一個下拉式選單中，有一些是必備的資訊，像是&amp;quot;name&amp;quot;、&amp;quot;value&amp;quot;與&amp;quot;text&amp;quot;三個，在回傳資訊給Server時，&amp;quot;name&amp;quot;將是接收資訊用的，而&amp;quot;value&amp;quot;會傳回被選的值，而&amp;quot;text&amp;quot;則是使用者會看到的字，依上面的例子來講，Opt1、Opt2這兩個就是屬於&amp;quot;text&amp;quot;&lt;br /&gt;&lt;br /&gt;開始講講那三種Select helper&lt;br /&gt;&lt;br /&gt;&lt;font size="5"&gt;select:&lt;/font&gt;&lt;br /&gt;&amp;nbsp; select(object, method, choices, options = {}, html_options = {})&lt;br /&gt;&amp;nbsp; 在ActionView::Helpers::FormOptionsHelper中定義&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;object是一個實體化變數，這裡很明顯的就是要擺上model物件嘛！&lt;/li&gt;&lt;li&gt;method則是object的一個屬性，也是資料表中的對應欄位&lt;/li&gt;&lt;li&gt;choices就是要被選的選項，可以是陣列或者是雜湊(Hash)&lt;/li&gt;&lt;li&gt;options與html_options則是一些選項&lt;/li&gt;&lt;/ul&gt;在這邊來舉個例子吧&lt;br /&gt;&lt;blockquote&gt;&amp;lt;%= select(&amp;quot;project&amp;quot;, &amp;quot;teacher_id&amp;quot;, @teachers.collect{|t| [t.name, t.id]}, { :include_blank =&amp;gt; false }) %&amp;gt;&lt;br /&gt;&amp;lt;%= select(&amp;quot;project&amp;quot;, &amp;quot;student_id&amp;quot;, {&amp;quot;CFC&amp;quot; =&amp;gt; '1', &amp;quot;EF&amp;quot; =&amp;gt; '2'}) %&amp;gt;&lt;br /&gt;第一個例子中，@teachers在Controller是這樣的&lt;br /&gt;@teachers = Teacher.find(:all, :select =&amp;gt; 'id, name')&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;font size="5"&gt;select_tag:&lt;/font&gt;&lt;br /&gt;&amp;nbsp; select_tag(name, option_tags = nil, options = {})&lt;br /&gt;&amp;nbsp; 在ActionView::Helpers::FormTagHelper中定義&lt;br /&gt;&lt;br /&gt;如果你很喜歡手動打option的話.. 那用select_tag準沒錯啦！&lt;br /&gt;在select_tag中，name將會是params所接收值所用的鍵&lt;br /&gt;直接看範例&lt;br /&gt;&lt;blockquote&gt;&amp;lt;%= select_tag 'user', &amp;quot;&amp;lt;option&amp;gt;CFC&amp;lt;/option&amp;gt;&amp;quot; %&amp;gt;&lt;br /&gt;這時在Controller中將會用params[:user]來接收傳過來的值&lt;br /&gt;但是select_tag也可以搭配options_for_select或者options_from_collection_for_select一起使用.. 來看一個範例吧&lt;br /&gt;&amp;lt;%= select_tag('sid[]', options_from_collection_for_select(@students, 'id', 'name'), :multiple =&amp;gt; true)%&amp;gt;&lt;br /&gt;因為加上了:multiple，所以可以接受多值選擇，這時在Controller接收到的sid將會是一個陣列，這也是我所卡住的地方.. (( 真丟臉&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;font size="5"&gt;collection_select:&lt;/font&gt;&lt;br /&gt;&amp;nbsp; collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {})&lt;br /&gt;&amp;nbsp; 在ActionView::Helpers::FormOptionsHelper中定義&lt;br /&gt;&lt;br /&gt;如果資料來源是從資料庫來的話，可以使用這個來做下拉式選單。&lt;br /&gt;這個Object不用我說，就是你的model&lt;br /&gt;method呢？當然就是欄位啦&lt;br /&gt;其實嚴格說起來，這只是select+options_from_collection_for_select的組合啦！&lt;br /&gt;範例：&lt;br /&gt;&lt;blockquote&gt;&amp;lt;%= collection_select(:payment, :id, @payments, :id, :name, options ={:prompt =&amp;gt; &amp;quot;-Select a continent&amp;quot;}, :class =&amp;gt;&amp;quot;payment&amp;quot;) %&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;再次謝謝原作者&lt;font color="#ff0000"&gt;carpet_the_walls&lt;/font&gt;:)&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-1447561-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-885409460094744129?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.pixnet.net/zusocfc/post/5574050' title='Rails中實做下拉式選單'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/885409460094744129/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=885409460094744129' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/885409460094744129'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/885409460094744129'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/06/rails.html' title='Rails中實做下拉式選單'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-5419273613031563986</id><published>2007-06-16T00:11:00.000+08:00</published><updated>2007-06-16T15:29:28.415+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='library'/><category scheme='http://www.blogger.com/atom/ns#' term='sms'/><title type='text'>Ruby library -- SMS</title><content type='html'>這個Library搭配&lt;a href="http://www.twsms.com"&gt;http://www.twsms.com&lt;/a&gt;才可以使用喔！&lt;br /&gt;有任何問題可以直接回這篇文章，或者寫信問我，我信箱是Gmail的，帳號跟我的這個部落格帳號一樣&lt;br /&gt;&lt;br /&gt;我先說用法好了：&lt;br /&gt;&lt;blockquote&gt;require 'twsms'&lt;br /&gt;sms = TWSMS.new(username, password) # 帳號密碼&lt;br /&gt;sms.sendSMS(mobile, message) # mobile: 目標手機號碼&amp;nbsp; message: 要傳的訊息&lt;br /&gt;&lt;/blockquote&gt;原始碼：&lt;br /&gt;&lt;blockquote&gt;=begin&lt;br /&gt;&amp;nbsp; == Information ==&lt;br /&gt;&amp;nbsp; === Copyright: Apache 2.0&lt;br /&gt;&amp;nbsp; === Author: CFC &amp;lt; zusocfc@gmail.com &amp;gt;&lt;br /&gt;&amp;nbsp; === Prog. Name: TWSMS lib&lt;br /&gt;&amp;nbsp; === Version: 0.1&lt;br /&gt;&amp;nbsp; == Introduction ==&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TWSMS(Taiwan SMS)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; TWSMS is a SMS sender, it must use with http://www.twsms.com.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; There has no any library for the SMS system in Taiwan. So, I just coded this and release this version.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; This version just support for sending SMS.&lt;br /&gt;&amp;nbsp; == Featured ==&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp; == Using TWSMS ==&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; It just support for standalone class now.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; require it before you use.&lt;br /&gt;&amp;nbsp; === Using TWSMS by standalone class&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; require 'twsms'&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sms = TWSMS.new('username', 'password')&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sms.sendSMS('09xxxxxxxx', 'Hi, there! TWSMS library is so easy to use!')&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sms.sendSMS('09xxxxxxxx', 'Send SMS with options',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :popup =&amp;gt; 1,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :type =&amp;gt; &amp;quot;now&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :mo =&amp;gt; &amp;quot;Y&amp;quot;)&lt;br /&gt;=end&lt;br /&gt;&lt;br /&gt;%w|uri cgi net/http|.each{|r| require r}&lt;br /&gt;&lt;br /&gt;class TWSMS&lt;br /&gt;&amp;nbsp; def initialize(username, password)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @uname, @upwd = username, password&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @options = {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :type =&amp;gt; &amp;quot;now&amp;quot;, # Sending type: now, vld&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :popup =&amp;gt; &amp;quot;&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :mo =&amp;gt; &amp;quot;Y&amp;quot;.upcase,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :vldtime =&amp;gt; &amp;quot;86400&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :modate =&amp;gt; &amp;quot;&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :dlvtime =&amp;gt; &amp;quot;&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :wapurl =&amp;gt; &amp;quot;&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :encoding =&amp;gt; &amp;quot;big5&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @errors = {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -1.to_s.to_sym =&amp;gt; &amp;quot;Send failed&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -2.to_s.to_sym =&amp;gt; &amp;quot;Username or password is invalid&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -3.to_s.to_sym =&amp;gt; &amp;quot;Popup tag error&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -4.to_s.to_sym =&amp;gt; &amp;quot;Mo tag error&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -5.to_s.to_sym =&amp;gt; &amp;quot;Encoding tag error&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -6.to_s.to_sym =&amp;gt; &amp;quot;Mobile tag error&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -7.to_s.to_sym =&amp;gt; &amp;quot;Message tag error&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -8.to_s.to_sym =&amp;gt; &amp;quot;vldtime tag error&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -9.to_s.to_sym =&amp;gt; &amp;quot;dlvtime tag error&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -10.to_s.to_sym =&amp;gt; &amp;quot;You have no point&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -11.to_s.to_sym =&amp;gt; &amp;quot;Your account has been blocked&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -12.to_s.to_sym =&amp;gt; &amp;quot;Type tag error&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -13.to_s.to_sym =&amp;gt; &amp;quot;You can't send SMS message by dlvtime tag if you use wap push&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -14.to_s.to_sym =&amp;gt; &amp;quot;Source IP has no permission&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; -99.to_s.to_sym =&amp;gt; &amp;quot;System error!! Please contact the administrator, thanks!!&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @args = []&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @url ||= &amp;quot;http://api.twsms.com/send_sms.php?&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @url += &amp;quot;username=&amp;quot; + @uname&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @url += &amp;quot;&amp;amp;password=&amp;quot; + @upwd&lt;br /&gt;&amp;nbsp; end&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; def sendSMS(mobile, message, opt={})&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @options[:mobile], @options[:message] = mobile, message&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @options.merge!(opt).each{|k, v| @args &amp;lt;&amp;lt; k.to_s + &amp;quot;=&amp;quot; + CGI::escape(v.to_s)}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @url += &amp;quot;&amp;amp;&amp;quot; + @args.join(&amp;quot;&amp;amp;&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.chk_val&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; chk_errors(Net::HTTP.get(URI.parse(@url)))&lt;br /&gt;&amp;nbsp; end&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; def chk_val&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @options[:dlvtime] = &amp;quot;&amp;quot; unless @options[:type] == &amp;quot;dlv&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; @options[:wapurl] = &amp;quot;&amp;quot; if @options[:type] != (&amp;quot;push&amp;quot; &amp;amp;&amp;amp; &amp;quot;upush&amp;quot;)&lt;br /&gt;&amp;nbsp; end&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; def chk_errors(resp)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; resp = resp.split(&amp;quot;=&amp;quot;)[1]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if @errors.has_key?(resp.to_s.to_sym)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; puts &amp;quot;==========&amp;quot;, &amp;quot;Error!! Message: &amp;quot;, @errors[resp.to_s.to_sym]&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; puts &amp;quot;==========&amp;quot;, &amp;quot;Message has been send! Your message id is: &amp;quot; + resp.to_s&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end&lt;br /&gt;&amp;nbsp; end&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; protected :chk_val&lt;br /&gt;end&lt;br /&gt;&lt;/blockquote&gt;晚點丟到Google Code Hosting上去...&lt;br /&gt;&lt;br /&gt;Updated:&lt;br /&gt;TWSMS on Google Code Hosting: &lt;a href="http://code.google.com/p/twsms/"&gt;http://code.google.com/p/twsms/&lt;/a&gt;&lt;br /&gt;SMSender on RubyForge: &lt;a href="http://rubyforge.org/projects/smsender/"&gt;http://rubyforge.org/projects/smsender/&lt;/a&gt;&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-1447561-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-5419273613031563986?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.pixnet.net/zusocfc/post/5303219' title='Ruby library -- SMS'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/5419273613031563986/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=5419273613031563986' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/5419273613031563986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/5419273613031563986'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/06/ruby-library-sms.html' title='Ruby library -- SMS'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-3338721677177178640</id><published>2007-06-12T11:42:00.000+08:00</published><updated>2007-06-19T23:29:32.742+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='activerecord'/><category scheme='http://www.blogger.com/atom/ns#' term='randomize'/><title type='text'>find_by_randomize -- 讓ActiveRecord可以亂數取資料</title><content type='html'>請在model內加入：&lt;br /&gt;&lt;blockquote&gt;def self.find_by_randomize&lt;br /&gt;&amp;nbsp; ids = self.find(:all, :select =&amp;gt; [id])&lt;br /&gt;&amp;nbsp; self.find(ids[rand(ids.size)][&amp;quot;id&amp;quot;].to_i)&lt;br /&gt;end&lt;br /&gt;&lt;/blockquote&gt;這樣一來，就可以取亂數選取資料了！&lt;br /&gt;&lt;br /&gt;請參考這篇：&lt;a href="http://lightyror.thegiive.net/2006/10/active-record-find.html"&gt;為你的 Active Record 做出多采多姿的 find&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;當然囉.. thegiive那個就是我修改的範本:P&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-1447561-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-3338721677177178640?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.pixnet.net/zusocfc/post/5224383' title='find_by_randomize -- 讓ActiveRecord可以亂數取資料'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/3338721677177178640/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=3338721677177178640' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/3338721677177178640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/3338721677177178640'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/06/findbyrandomize-activerecord.html' title='find_by_randomize -- 讓ActiveRecord可以亂數取資料'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-212766778622206165</id><published>2007-05-15T13:35:00.001+08:00</published><updated>2007-05-15T13:47:44.844+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='html tag'/><category scheme='http://www.blogger.com/atom/ns#' term='plaintext'/><title type='text'>具有破壞版面功用的HTML標籤：plaintext</title><content type='html'>剛剛寫程式寫到一半忽然想到這個破壞力極大的標籤&lt;br /&gt;雖然這個標籤不會造成多大的危害，但是在某些網站上，還是可以造成一定程度的破壞&lt;br /&gt;所以請各位Web Developers注意，過濾掉這個標籤：&amp;lt;plaintext&amp;gt;&lt;br /&gt;另外，HTML的註解標籤也請過濾，也就是：&amp;lt;!--&lt;br /&gt;這兩個都可以破壞版面！&lt;br /&gt;結果請看這邊：&lt;br /&gt;&lt;a target="_blank" href="http://willh.org/cfc/cfc_priv/plaintext.htm"&gt;http://willh.org/cfc/cfc_priv/plaintext.htm&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;解決方式：&lt;br /&gt;如果是使用黑名單來擋HTML標籤，請把plaintext給加入&lt;br /&gt;如果沒有使用檔標籤的套件，請盡快使用&lt;br /&gt;如果沒有辦法使用檔標籤的套件，請透過Regular Expression幹掉它！&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-1447561-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-212766778622206165?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.pixnet.net/zusocfc/post/4610171' title='具有破壞版面功用的HTML標籤：plaintext'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/212766778622206165/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=212766778622206165' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/212766778622206165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/212766778622206165'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/05/htmlplaintext.html' title='具有破壞版面功用的HTML標籤：plaintext'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-4930763161044628389</id><published>2007-05-13T02:24:00.000+08:00</published><updated>2007-05-13T02:27:00.500+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='activerecord'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>php+ruby(with ActiveRecord)又一新範例 -- RSS聯撥器</title><content type='html'>上個例子，我們用PHP + Ruby 搭配ActiveRecord的方式來寫資料新增的程式&lt;br /&gt;今天我們就來延伸應用一下，要做什麼呢？ RSS聯撥器！&lt;br /&gt;有鑒於GoogleReader的RSS聯撥器產生出來的東西太醜(只能修改一兩個小地方.. 我總覺得那好胖=&amp;nbsp; =)，乾脆自己寫個來用&lt;br /&gt;Demo網址改天再PO上來，我們先來寫程式比較重要:P&lt;br /&gt;主機請記得先裝好Ruby、PHP、Apache跟MySQL；OS要啥都沒差，我比較建議LAMP的配置XD&lt;br /&gt;我們來建立一個叫做feeds的目錄包含一個子目錄，叫做lib：&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp; mkdir -p feeds/lib&lt;br /&gt;&lt;/blockquote&gt;&amp;nbsp; &lt;br /&gt;先跳到feeds/lib新增幾個會被require的檔案：&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp; cd feeds/lib&lt;br /&gt;&amp;nbsp; touch connect.rb model.rb require.rb&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;以下是各個檔案的用處：&lt;br /&gt;&lt;blockquote&gt;- connect.rb&lt;br /&gt;&amp;nbsp; 資料庫連線初始化&lt;br /&gt;- model.rb&lt;br /&gt;&amp;nbsp; 資料表模型宣告&lt;br /&gt;- rqeuire.rb&lt;br /&gt;&amp;nbsp; 會用到的額外library引入&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;原始碼：&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp; - connect.rb&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #!/usr/bin/env ruby;require 'lib/require';ActiveRecord::Base.establish_connection({:adapter =&amp;gt; &amp;quot;mysql&amp;quot;,:host =&amp;gt; &amp;quot;localhost&amp;quot;,:username =&amp;gt; &amp;quot;username&amp;quot;,:password =&amp;gt; &amp;quot;password&amp;quot;,:database =&amp;gt; &amp;quot;others&amp;quot;})&lt;br /&gt;&amp;nbsp; - model.rb&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #!/usr/bin/env ruby;require 'lib/connect';class Feed &amp;lt; ActiveRecord::Base;end&lt;br /&gt;&amp;nbsp; - require.rb&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #!/usr/bin/env ruby;%w|rubygems active_record hpricot open-uri|.each{|lib| require lib}&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;一切搞定後，我們可以開始來建立資料庫了！&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp; mysql&amp;gt; create database others;&lt;br /&gt;&amp;nbsp; mysql&amp;gt; use others;&lt;br /&gt;&amp;nbsp; mysql&amp;gt; create table feeds(id int, uri varchar(255));&lt;br /&gt;&amp;nbsp; mysql&amp;gt; describe feeds;&lt;br /&gt;&lt;/blockquote&gt;&amp;nbsp; &lt;br /&gt;看看資料表結構是否正確！&lt;br /&gt;接著回到上一層目錄，新增底下的幾個檔案：&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp; touch index.php list.rb new.htm new_record.rb save.php&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;- index.php&lt;br /&gt;&amp;nbsp; 網站首頁，會列出目前的RSS feed&lt;br /&gt;- save.php&lt;br /&gt;&amp;nbsp; 儲存RSS feed網址&lt;br /&gt;- list.rb&lt;br /&gt;&amp;nbsp; 處理RSS feed&lt;br /&gt;- new_record.rb&lt;br /&gt;&amp;nbsp; 將RSS feed網址存入資料庫(也可以直接用php寫.. 我是沒有意見)&lt;br /&gt;- new.htm&lt;br /&gt;&amp;nbsp; 新增RSS feed網址的表單&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;原始碼我就直接貼了&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp; - index.php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;html&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;a href=&amp;quot;new.htm&amp;quot;&amp;gt;Create&amp;lt;/a&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ul&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;?php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exec(&amp;quot;ruby list.rb&amp;quot;, $args);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for($i=0;$i&amp;lt;count($args);$i+=3)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &amp;quot;&amp;lt;li&amp;gt;&amp;lt;a href=\&amp;quot;&amp;quot; . $args[$i+1] . &amp;quot;\&amp;quot; title=\&amp;quot;作者：&amp;quot; . $args[$i+2] . &amp;quot;\&amp;quot;&amp;gt;&amp;quot; . $args[$i] . &amp;quot;&amp;lt;/a&amp;gt; -- &amp;quot; . $args[$i+2] . &amp;quot;&amp;lt;/li&amp;gt;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ul&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp; - save.php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;?php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; exec(&amp;quot;ruby new_record.rb &amp;quot; . $_POST[&amp;quot;feed_uri&amp;quot;], $arg);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ($arg) echo &amp;quot;&amp;lt;script&amp;gt;location.href=\&amp;quot;index.php\&amp;quot;;&amp;lt;/script&amp;gt;&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ?&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&amp;nbsp; &lt;br /&gt;&lt;blockquote&gt;&amp;nbsp; - list.rb&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #!/usr/bin/env ruby&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; =begin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Filename: list.rb&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; =end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; require 'lib/model'&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Feed.find(:all).each{|feed|&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; doc = Hpricot(open(feed.uri))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; rss = doc.search(&amp;quot;entry&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; max = rss.size &amp;gt; 3 ? 3 : rss.size&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; max.times {|i|&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; break if rss.nil?&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; puts rss[i].search(&amp;quot;title&amp;quot;).text.gsub(/\n/, &amp;quot; &amp;quot;) # Return the title of the article to the PHP file.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; puts rss[i].search(&amp;quot;link[@rel='alternate']&amp;quot;)[0][&amp;quot;href&amp;quot;].gsub(/\n/, &amp;quot; &amp;quot;) # Return the link of the article to the PHP file.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; puts rss[i].search(&amp;quot;author/name&amp;quot;).text.gsub(/\n/, &amp;quot; &amp;quot;) # Return the author of the article to the PHP file.&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp; - new_record.rb&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; #!/usr/bin/env ruby&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; =begin&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Filename: new_record.rb&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; =end&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; require 'lib/model';puts Feed.new({:uri =&amp;gt; ARGV[0]}).save&lt;br /&gt;&lt;/blockquote&gt;&amp;nbsp; &lt;br /&gt;&lt;blockquote&gt;&amp;nbsp; - new.htm&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;html&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;form action=&amp;quot;save.php&amp;quot; method=&amp;quot;post&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p&amp;gt;Please input the feed url:&amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;feed_uri&amp;quot; /&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;p&amp;gt;&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Save!&amp;quot; /&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/form&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&amp;nbsp; &lt;br /&gt;OK，這樣就可以啦XD&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-1447561-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-4930763161044628389?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.pixnet.net/zusocfc/post/4563945' title='php+ruby(with ActiveRecord)又一新範例 -- RSS聯撥器'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/4930763161044628389/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=4930763161044628389' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/4930763161044628389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/4930763161044628389'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/05/phprubywith-activerecord-rss.html' title='php+ruby(with ActiveRecord)又一新範例 -- RSS聯撥器'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-7318760113586206871</id><published>2007-05-09T18:32:00.000+08:00</published><updated>2007-06-12T11:47:20.259+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='activerecord'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>PHP + Ruby with ActiveRecord 範例</title><content type='html'>如果老闆要求使用php，可是您卻是Ruby狂熱者，這.. 怎辦呢？&lt;br /&gt;沒關係！ 一樣用Ruby寫，php只要做一點點的處理就好！&lt;br /&gt;How to? php中有這個函式：exec&lt;br /&gt;( 本範例實作於Windows XP Professional搭配InstantRails；在其他作業系統上沒有測試過，不過各位還是可以嘗試看看 )&lt;br /&gt;我們來試試看吧！&lt;br /&gt;先寫個test.rb：&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp; #!/usr/bin/env ruby&lt;br /&gt;&amp;nbsp; # &lt;br /&gt;&amp;nbsp; # Filename: test.rb&lt;br /&gt;&amp;nbsp; # &lt;br /&gt;&amp;nbsp; puts &amp;quot;Hello&amp;quot;&lt;br /&gt;&amp;nbsp; puts &amp;quot;world&amp;quot;&lt;br /&gt;&lt;/blockquote&gt;&amp;nbsp; &lt;br /&gt;再寫個test.php：&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp; &amp;lt;?php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; exec(&amp;quot;test.rb&amp;quot;, $args);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach($arg as $args)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo $arg . &amp;quot;&amp;lt;br /&amp;gt;&amp;quot;;&lt;br /&gt;&amp;nbsp; ?&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;將兩個檔案放在同一個目錄下後，打開瀏覽器瀏覽test.php；看！是不是顯示結果出來了？&lt;br /&gt;OK，我們直接來用ActiveRecord幫我們新增資料吧！&lt;br /&gt;我們需要一張普通頁面、一張php網頁跟一個ruby檔案：&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp; #!/usr/bin/env ruby&lt;br /&gt;&amp;nbsp; #&lt;br /&gt;&amp;nbsp; # Filename: ar.rb&lt;br /&gt;&amp;nbsp; #&lt;br /&gt;&amp;nbsp; require 'rubygems'&lt;br /&gt;&amp;nbsp; gem 'activerecord'&lt;br /&gt;&amp;nbsp; ActiveRecord::Base.establish_connection(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; :adapter =&amp;gt; 'mysql',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; :host =&amp;gt; 'localhost',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; :username =&amp;gt; 'root',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; :password =&amp;gt; '',&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; :database =&amp;gt; 'cal'&lt;br /&gt;&amp;nbsp; )&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; class Event &amp;lt; ActiveRecord::Base;end&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp; name, descr = ARGV[0], ARGV[1]&lt;br /&gt;&amp;nbsp; puts Event.new({:name =&amp;gt; name, :descr =&amp;gt; descr, :date =&amp;gt; Date.today, :time =&amp;gt; Time.now}).save&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;好了，接下來是普通頁面，這是送出表單：&lt;br /&gt;&amp;nbsp; &lt;br /&gt;&lt;blockquote&gt;&amp;nbsp; &amp;lt;!-- Filename: ar_form.html --&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;html&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;title&amp;gt;PHP with Ruby and ActiveRecord&amp;lt;/title&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/head&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;body&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;form action=&amp;quot;ar_save.php&amp;quot; method=&amp;quot;POST&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Username: &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;usrname&amp;quot; /&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Description: &amp;lt;textarea name=&amp;quot;descr&amp;quot;&amp;gt;&amp;lt;/textarea&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Save it!&amp;quot; /&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/form&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;nbsp; &amp;lt;/html&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&amp;nbsp; &lt;br /&gt;這是php網頁：&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp; &amp;lt;?php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Filename: ar_save.php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; exec(&amp;quot;2.rb &amp;quot; . $_POST[&amp;quot;usrname&amp;quot;] . &amp;quot; &amp;quot; . $_POST[&amp;quot;descr&amp;quot;], $arg);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if($arg[0]) echo &amp;quot;Success!&amp;quot;;&lt;br /&gt;&amp;nbsp; ?&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;OK，讓我們來試試看吧！&lt;br /&gt;Look!! It works!!&lt;br /&gt;現在，我們來寫個ar_read.rb跟ar_read.php來讀取資料吧：&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp; # Filename: ar_read.rb&lt;br /&gt;&amp;nbsp; require 'rubygems'&lt;br /&gt;&amp;nbsp; gem 'activerecord'&lt;br /&gt;&amp;nbsp; ActiveRecord::Base.establish_connection(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; :adapter&amp;nbsp; =&amp;gt; &amp;quot;mysql&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; :host&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;gt; &amp;quot;localhost&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; :username =&amp;gt; &amp;quot;root&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; :password =&amp;gt; &amp;quot;&amp;quot;,&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; :database =&amp;gt; &amp;quot;cal&amp;quot;&lt;br /&gt;&amp;nbsp; )&lt;br /&gt;&amp;nbsp; class Event &amp;lt; ActiveRecord::Base;end&lt;br /&gt;&amp;nbsp; events = Event.find(:all, :conditions =&amp;gt; &amp;quot;name = '#{ARGV[0]}'&amp;quot;)&lt;br /&gt;&amp;nbsp; events.each{ |event|&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; puts event.name&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; puts event.descr&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; puts event.date.to_s(:db)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; puts event.time.strftime(&amp;quot;%H:%M:%S&amp;quot;)&lt;br /&gt;&amp;nbsp; }&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&amp;nbsp; &amp;lt;?php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Filename: ar_read.php&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; exec(&amp;quot;ar_read.rb &amp;quot; . $_GET[&amp;quot;name&amp;quot;], $args);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $info = array();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for($i=0, $j=0;$i&amp;lt;count($args);$i+=4, $j++){&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $info[$j][&amp;quot;name&amp;quot;] = $args[$i];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $info[$j][&amp;quot;descr&amp;quot;] = $args[$i+1];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $info[$j][&amp;quot;date&amp;quot;] = $args[$i+2];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; $info[$j][&amp;quot;time&amp;quot;] = $args[$i+3];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for($j=0;$j&amp;lt;count($info);$j++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; echo &amp;quot;Name =&amp;gt; &amp;quot; . $info[$j][&amp;quot;name&amp;quot;] . &amp;quot;&amp;lt;br /&amp;gt;Description =&amp;gt; &amp;quot; . $info[$j][&amp;quot;descr&amp;quot;] . &amp;quot;&amp;lt;br /&amp;gt;Date =&amp;gt; &amp;quot; . $info[$j][&amp;quot;date&amp;quot;] . &amp;quot;&amp;lt;br /&amp;gt;Time =&amp;gt; &amp;quot; . $info[$j][&amp;quot;time&amp;quot;] . &amp;quot;&amp;lt;br /&amp;gt;&amp;quot;;&lt;br /&gt;&amp;nbsp; ?&amp;gt;&lt;br /&gt;&lt;/blockquote&gt;&amp;nbsp; &lt;br /&gt;看看結果，hmmm.. 看起來真棒！&lt;br /&gt;嗯？如何？Ruby + ActiveRecord的威力很強大吧？&lt;br /&gt;為什麼不要直接用PHP寫就好？ 因為光寫SQL你就想跳樓，何必呢？&lt;br /&gt;記住，在Ruby的檔案中，不可以用：&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp; puts 1, 2, 3&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;這種方法，會造成php收不到回傳，因此必須用這種寫法：&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp; puts 1&lt;br /&gt;&amp;nbsp; puts 2&lt;br /&gt;&amp;nbsp; puts 3&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;或者就是：&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&amp;nbsp; puts 1; puts 2; puts 3&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;端看個人喜好囉！&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-1447561-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-7318760113586206871?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.pixnet.net/zusocfc/post/4494138' title='PHP + Ruby with ActiveRecord 範例'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/7318760113586206871/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=7318760113586206871' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/7318760113586206871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/7318760113586206871'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/05/php-ruby-with-activerecord.html' title='PHP + Ruby with ActiveRecord 範例'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-107440539577217471</id><published>2007-04-30T14:21:00.000+08:00</published><updated>2007-06-12T11:52:47.904+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='array'/><title type='text'>Array.longest ( Array.which_long?修改版 )</title><content type='html'>感謝在Ruby-talk上的：&lt;br /&gt;&lt;blockquote&gt;Chris Carter&lt;br /&gt;David A. Black&lt;br /&gt;Harry&lt;br /&gt;Robert Dober&lt;br /&gt;James Edward&lt;br /&gt;&lt;/blockquote&gt;:)&lt;br /&gt;原本的程式碼太長，而且使用內建的功能組合起來就好&lt;br /&gt;再者，原本的程式會把陣列的元素強制轉型為String&lt;br /&gt;&lt;br /&gt;新的程式碼為：&lt;br /&gt;&lt;blockquote&gt;class Array&lt;br /&gt;&amp;nbsp; def longest&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; # Harry &amp;lt;&lt;a target="_blank" href="http://www.kakueki.com/ruby/list.html" onclick="return top.js.OpenExtLink(window,event,this)"&gt;http://www.kakueki.com/ruby&lt;wbr&gt;&lt;/wbr&gt;/list.html&lt;/a&gt;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; self.select{|r| r.to_s.size == self.max{|x, y| x.to_s.size &amp;lt;=&amp;gt; y.to_s.size}.to_s.size}&lt;br /&gt;&amp;nbsp; end&lt;br /&gt;end&lt;br /&gt;&lt;/blockquote&gt;這個程式是由Harry所寫出的，底下轉貼原文：&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;div style="direction: ltr;"&gt;&lt;span class="q"&gt;On 4/29/07, Billy Hsu &amp;lt;&lt;a href="mailto:ruby.maillist@gmail.com" onclick="return top.js.OpenExtLink(window,event,this)"&gt;ruby.maillist@gmail.com&lt;/a&gt;&amp;gt;  wrote:&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="direction: ltr;"&gt;&lt;span class="q"&gt;&amp;gt; Thanks for your reply, I learned  more on this thread :P&lt;br /&gt;&amp;gt; But I have a question:&lt;br /&gt;&amp;gt; If I have an array  contain:&lt;br /&gt;&amp;gt; &amp;nbsp; ary = [1, 12, 234, &amp;quot;456&amp;quot;]&lt;br /&gt;&amp;gt; there has two elements  which size is 3, but the longest method just returned&lt;br /&gt;&amp;gt; one of  them.&lt;br /&gt;&amp;gt; I can't solve it :(&lt;br /&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div style="direction: ltr;"&gt;Is this what you are looking for?&lt;br /&gt;Do you want all  longest elements?&lt;br /&gt;&lt;br /&gt;big = [1, 12, 234,45,978, &amp;quot;456&amp;quot;].max {|x,y| x.to_s.size  &amp;lt;=&amp;gt; y.to_s.size}&lt;br /&gt;p [1, 12, 234,45,978, &amp;quot;456&amp;quot;].select {|r| r.to_s.size  == big.to_s.size}&lt;br /&gt;&lt;/div&gt;&lt;/blockquote&gt;&lt;div style="direction: ltr;"&gt;由於Harry不喜歡被張貼信箱，因此我將他的網站給貼上來：&lt;br /&gt;&lt;blockquote&gt;&lt;span class="sg"&gt;&lt;a target="_blank" href="http://www.kakueki.com/ruby/list.html" onclick="return top.js.OpenExtLink(window,event,this)"&gt;http://www.kakueki.com/ruby&lt;wbr&gt;&lt;/wbr&gt;/list.html&lt;/a&gt;&lt;br /&gt;A Look into Japanese Ruby List in English&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/blockquote&gt;再一次謝謝Harry的幫助:)&lt;br /&gt;也謝謝其他人，讓我學到許多東西:D&lt;br /&gt;Thanks again and again!!&lt;br /&gt;&lt;br /&gt;CFC --&lt;span class="sg"&gt;&lt;/span&gt;&lt;span class="sg"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-1447561-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-107440539577217471?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.pixnet.net/zusocfc/post/4308821' title='Array.longest ( Array.which_long?修改版 )'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/107440539577217471/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=107440539577217471' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/107440539577217471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/107440539577217471'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/04/arraylongest-arraywhichlong.html' title='Array.longest ( Array.which_long?修改版 )'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-975999560649444891</id><published>2007-04-28T21:43:00.000+08:00</published><updated>2007-06-12T11:54:02.420+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='array'/><title type='text'>Array.which_long? -- 剛出爐的函式</title><content type='html'>&lt;blockqoute&gt;&lt;blockquote&gt;class Array&lt;br /&gt;  def which_long?&lt;br /&gt;    # Version 1.0&lt;br /&gt;    # Coded by CFC &lt;&gt;&lt;br /&gt;    # PLEASE DO NOT REMOVE THE COMMENT OF THIS FUNCTION, THANKS A LOT.&lt;br /&gt;    # Usage:&lt;br /&gt;    #   ['a', 'ab', 'abc' 1234].which_long?&lt;br /&gt;    #   =&gt; 1234&lt;br /&gt;    self.size.times{|i| self[i]=self[i].to_s}&lt;br /&gt;    max, long = 0, String.new&lt;br /&gt;    self.each{|item| item.size &gt; max ? (max = item.size; long = item) : next}&lt;br /&gt;    long&lt;br /&gt;  end&lt;br /&gt;end&lt;/blockquote&gt;&lt;br /&gt;&lt;/blockqoute&gt;&lt;br /&gt;以上是原始碼，使用方式如下：&lt;br /&gt;&lt;br /&gt;puts ['a', 'ab', 'abc', 1234].which_long?&lt;br /&gt;=&amp;gt; 1234&lt;br /&gt;&lt;br /&gt;授權還沒定，不過大家還是可以拿去使用:P&lt;br /&gt;請不要拿掉註解.. 謝謝&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-1447561-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-975999560649444891?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.pixnet.net/zusocfc/post/4272241' title='Array.which_long? -- 剛出爐的函式'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/975999560649444891/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=975999560649444891' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/975999560649444891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/975999560649444891'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/04/arraywhichlong.html' title='Array.which_long? -- 剛出爐的函式'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-3278484586157920139</id><published>2007-04-24T17:15:00.000+08:00</published><updated>2007-06-12T11:53:22.794+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rubygems'/><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='error'/><title type='text'>rubygems 0.9.2的問題</title><content type='html'>&lt;h4&gt;本文同步發佈至：&lt;a href="http://blog.pixnet.net/zusocfc/post/4160285"&gt;http://blog.pixnet.net/zusocfc/post/4160285&lt;/a&gt;&lt;/h4&gt;&lt;br /&gt;升級Rubygems到0.9.2時，不論是安裝gem包還是升級gem包&lt;br /&gt;都會產生一個Error：&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt; ERROR:&amp;nbsp;&amp;nbsp;While executing gem ... (NoMethodError)&lt;br /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;undefined method `refresh' for #&amp;lt;Hash:0xb799a478&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;這個時候該怎麼辦呢？&lt;br /&gt;根據這篇文章所寫：&lt;a href="http://www.cnzxh.net/blog/Index.php?do=readArticle&amp;amp;articleId=145"&gt;http://www.cnzxh.net/blog/Index.php?do=readArticle&amp;amp;articleId=145&lt;/a&gt;&lt;br /&gt;我們可以做這個動作：&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;rm -f /usr/local/lib/ruby/gems/1.8/source_cache&lt;br /&gt;&lt;br /&gt;&lt;/blockquote&gt;經過測試後.. 真的就正常了..&lt;br /&gt;所以如果你有出同樣問題 請照做吧:P&lt;br /&gt;( 我想這問題只會發生在*nix系統上 )&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-1447561-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-3278484586157920139?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.pixnet.net/zusocfc/post/4160285' title='rubygems 0.9.2的問題'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/3278484586157920139/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=3278484586157920139' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/3278484586157920139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/3278484586157920139'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/04/rubygems-092.html' title='rubygems 0.9.2的問題'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-880961474649988167</id><published>2007-04-20T23:36:00.000+08:00</published><updated>2007-06-12T11:52:04.340+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='account'/><category scheme='http://www.blogger.com/atom/ns#' term='generator'/><title type='text'>大量帳號建置器 版本1跟版本2</title><content type='html'>先說好，跟往常一樣.. 到我Pixnet的網誌看會比較不頭痛:P&lt;br /&gt;版本1可以不用寫群組名稱，但是程式碼好醜ˊˋ&lt;br /&gt;版本2必須要有群組名稱，適用於學校(?)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://willh.org/cfc/cfc_priv/rubys/account/account.tgz"&gt;版本1下載&lt;/a&gt;&lt;br /&gt;&lt;a href="http://willh.org/cfc/cfc_priv/rubys/account/yml_account.tgz"&gt;版本2下載&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;版本1：&lt;br /&gt;&lt;br /&gt;#!/usr/bin/env ruby&lt;br /&gt;File.open(ARGV[0]) do |file|&lt;br /&gt;&amp;nbsp; while a = file.gets&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a = a.chomp.split(/ /)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print &amp;quot;username =&amp;gt; #{a[0]} &amp;quot;, &amp;quot;password =&amp;gt; #{a[1]} &amp;quot;, &amp;quot;group =&amp;gt; #{a[2]}&amp;quot;, &amp;quot;\n&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; a[2].nil? ? `useradd -m #{a[0]}` : `useradd -m -G #{a[2]} #{a[0]}`&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; `echo #{a[0]}:#{a[1]} | chpasswd`&lt;br /&gt;&amp;nbsp; end&lt;br /&gt;end&lt;br /&gt;exec &amp;quot;pwconv&amp;quot;&lt;br /&gt;&lt;br /&gt;使用者清單寫法：&lt;br /&gt;&lt;br /&gt;&amp;nbsp; 帳號 密碼 群組&lt;br /&gt;&lt;br /&gt;版本2：&lt;br /&gt;&lt;br /&gt;#!/usr/bin/env ruby&lt;br /&gt;require 'yaml'&lt;br /&gt;YAML.load_file(ARGV[0]).each{ |grp|&lt;br /&gt;&amp;nbsp; grp.each{ |usr|&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; usr.each{ |i|&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; info = i.chomp.split(/ /)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; `useradd -m -G #{grp[0]} #{info[0]}`&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; `echo #{info[0]}:#{info[1]} | chpasswd`&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;`pwconv`&lt;br /&gt;&lt;br /&gt;使用者清單寫法：&lt;br /&gt;&lt;blockquote&gt;grp1:&lt;br /&gt;&amp;nbsp; - usr1 pwd1&lt;br /&gt;&amp;nbsp; - usr2 pwd2&lt;br /&gt;grp2:&lt;br /&gt;&amp;nbsp; - usr3 pwd3&lt;br /&gt;&amp;nbsp; - usr4 pwd4&lt;br /&gt;grp3:&lt;br /&gt;&amp;nbsp; - usr5 pwd5&lt;br /&gt;&amp;nbsp; - usr6 pwd6&lt;/blockquote&gt;使用方式都是：&lt;br /&gt;./account list&lt;br /&gt;&lt;br /&gt;程式授權.. 隨便啦&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-1447561-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-880961474649988167?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.pixnet.net/zusocfc/post/4055882' title='大量帳號建置器 版本1跟版本2'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/880961474649988167/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=880961474649988167' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/880961474649988167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/880961474649988167'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/04/12.html' title='大量帳號建置器 版本1跟版本2'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-4588882527832473454</id><published>2007-03-26T23:46:00.000+08:00</published><updated>2007-06-12T11:50:51.913+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='haml'/><title type='text'>HAML</title><content type='html'>最近開始接觸HAML&lt;br /&gt;在Rails中，預設使用ERb來當作模板描述語言，可是這樣寫個人認為非常醜也非常累...&lt;br /&gt;而之前看到HAML時感覺到那東西似乎沒有太大的可用性，難道要Designer也學Ruby嗎？&lt;br /&gt;不過後來我想通了..&lt;br /&gt;&lt;br /&gt;架構這部分可以給Coder作，Designer乖乖設計CSS就夠了..&lt;br /&gt;來看看底下這個Sample吧：&lt;br /&gt;&lt;br /&gt;這是rhtml&lt;br /&gt;&lt;xmp&gt;&lt;/xmp&gt;原始碼請看這地方：&lt;a href="http://blog.pixnet.net/zusocfc/post/3520168"&gt;http://blog.pixnet.net/zusocfc/post/3520168&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;這是HAML&lt;br /&gt;&lt;br /&gt; #content&lt;br /&gt;   .left.column&lt;br /&gt;     %h2 Welcome to our site!&lt;br /&gt;     %p= print_information&lt;br /&gt;   .right.column= render :partial =&gt; "sidebar"&lt;br /&gt;&lt;br /&gt;看！少了多少行？&lt;br /&gt;可以讓開發速度變快耶= v =...&lt;br /&gt;最主要的是，看起來也比較美觀了！&lt;br /&gt;&lt;br /&gt;參考：&lt;br /&gt;http://haml.hamptoncatlin.com/tutorial/&lt;br /&gt;http://haml.hamptoncatlin.com/docs/&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-1447561-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-4588882527832473454?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/4588882527832473454/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=4588882527832473454' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/4588882527832473454'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/4588882527832473454'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/03/haml.html' title='HAML'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-2055632006176055218</id><published>2007-03-11T14:24:00.000+08:00</published><updated>2007-03-11T14:32:19.171+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='security'/><title type='text'>Rails 安全性漏洞一則 -- attr_protected 與 attr_accessible</title><content type='html'>我沒辦法在這邊正常的發布有表單HTML tag的文章，請連結至：&lt;br /&gt;&lt;a href="http://blog.pixnet.net/zusocfc/post/3220943"&gt;http://blog.pixnet.net/zusocfc/post/3220943&lt;/a&gt;&lt;br /&gt;觀看完整文章！&lt;br /&gt;&lt;br /&gt;Rails中有個安全性漏洞，請參考&lt;br /&gt;&lt;br /&gt;* http://manuals.rubyonrails.com/read/chapter/47&lt;br /&gt;* http://www.javaeye.com/topic/58686&lt;br /&gt;&lt;br /&gt;假設我們有個users table，表格欄位如下：&lt;br /&gt;&lt;br /&gt;* username # 很明顯就是帳號&lt;br /&gt;* password # 這就是密碼&lt;br /&gt;* role     # 權限名稱&lt;br /&gt;&lt;br /&gt;而我們提供給使用者註冊的頁面只會有username跟password欄位&lt;br /&gt;然後你的後端如果是這樣：&lt;br /&gt;&lt;br /&gt;User.create(params[:user])&lt;br /&gt;&lt;br /&gt;哦.. 這就真的好玩了..&lt;br /&gt;使用者在註冊時直接提權..&lt;br /&gt;那這要怎樣處理呢？&lt;br /&gt;&lt;br /&gt;我們可以在&lt;br /&gt;app/model/user.rb&lt;br /&gt;內新增這行：&lt;br /&gt;&lt;br /&gt;  attr_protected :role&lt;br /&gt;&lt;br /&gt;這樣一來，該欄位就會確定被忽略掉而不會被新增..&lt;br /&gt;不過你得做一下這道手續：&lt;br /&gt;&lt;br /&gt;user = User.new(params[:user])&lt;br /&gt;user.role = sanitize_properly(params[:user][:role])&lt;br /&gt;&lt;br /&gt;===== 分 - 隔 - 線 =====&lt;br /&gt;&lt;br /&gt;另外，我們可以使用&lt;br /&gt;&lt;br /&gt;  attr_accessible :username, :password&lt;br /&gt;&lt;br /&gt;這有點類似白名單的方式，可以過濾掉沒出現的欄位...&lt;br /&gt;&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-1447561-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-2055632006176055218?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/2055632006176055218/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=2055632006176055218' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/2055632006176055218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/2055632006176055218'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/03/rails-attrprotected-attraccessible.html' title='Rails 安全性漏洞一則 -- attr_protected 與 attr_accessible'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-133614068754461645</id><published>2007-03-04T02:12:00.000+08:00</published><updated>2007-03-04T02:36:42.801+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='in place editing'/><title type='text'>Rails -- InPlaceEdit</title><content type='html'>用過Flickr嗎？&lt;br /&gt;如果你有Flickr相簿，應該對於修改照片標題、說明的方式記憶猶新吧？&lt;br /&gt;那種就叫做 In Place Editing&lt;br /&gt;在Rails中，要實做這種技術並不難，因為本身就內建這個功能&lt;br /&gt;不過到了Rails 2.0將會把這個從內建移除變成Plugins形勢存在&lt;br /&gt;可以參考這篇：&lt;a href="http://lightyror.thegiive.net/2007/02/in-plcae-editing-by-rails.html"&gt;In-plcae-editing by Rails&lt;/a&gt;&lt;br /&gt;不過我在這裡重新說明一次使用方式吧&lt;br /&gt;如果有&lt;%= javascript_include_tag :defaults %&gt;的話，那只剩下兩個步驟：&lt;br /&gt;Controller:&lt;br /&gt;&lt;br /&gt; class ObjectController &lt; ApplicationController&lt;br /&gt;  in_place_edit_for :object, :method&lt;br /&gt; end&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;View:&lt;br /&gt;&lt;br /&gt; &lt;%= in_place_editor_field :object, :method %&gt;&lt;br /&gt;&lt;br /&gt;這樣就可以建立起最基本的InPlaceEditing欄位&lt;br /&gt;可是最基本的都是英文，因此Rails也提供了修改參數，可以參考&lt;a href="http://api.rubyonrails.org/classes/ActionView/Helpers/JavaScriptMacrosHelper.html#M000569"&gt;這篇&lt;/a&gt;&lt;br /&gt; in_place_editor_field欄位有四個參數：&lt;br /&gt; &lt;b&gt;in_place_editor_field&lt;/b&gt;(object, method, tag_options = {}, in_place_editor_options = {})&lt;br /&gt;而修改的部分則是放在第四個參數；假設我要修改:saving_text：&lt;br /&gt; &lt;%= in_place_editor_field(:object, :method, {}, {:saving_text =&gt; "儲存中..."} %&gt;&lt;br /&gt;改好後記得重新整理頁面！&lt;br /&gt;&lt;br /&gt;另外，如果要建立多個欄位的話，必須用這種方法：&lt;br /&gt; class ObjectController &lt; ApplicationController&lt;br /&gt;  in_place_edit_for :object, :method1&lt;br /&gt;  in_place_edit_for :object, :method2&lt;br /&gt;  in_place_edit_for :object, :method3&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;這樣寫超麻煩的！因此可以這樣：&lt;br /&gt;&lt;br /&gt; class ObjectController &lt; ApplicationController&lt;br /&gt;  %w"method1 method2 method3".each do |m|&lt;br /&gt;    in_place_edit_for :object, m.to_sym&lt;br /&gt;  end&lt;br /&gt; end&lt;br /&gt;&lt;br /&gt;這樣未來在新增刪除上都會很方便！&lt;br /&gt;&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;/script&gt;&lt;br /&gt;&lt;script type="text/javascript"&gt;_uacct = "UA-1447561-1";urchinTracker();&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-133614068754461645?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/133614068754461645/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=133614068754461645' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/133614068754461645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/133614068754461645'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/03/rails-inplaceedit.html' title='Rails -- InPlaceEdit'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-1083894125333436315</id><published>2007-03-04T01:00:00.000+08:00</published><updated>2007-03-04T01:03:29.083+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='gtk'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Ruby/GTK 中文教學</title><content type='html'>&lt;script src="http://www.google-analytics.com/urchin.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;這是&lt;a _fcksavedurl="http://www.ruby-lang.org/zh_TW/" href="http://www.ruby-lang.org/zh_TW/"&gt;http://www.ruby-lang.org/zh_TW/&lt;/a&gt; 站長所寫的一篇教學&lt;br /&gt;網址是：&lt;a _fcksavedurl="http://info.sayya.org/~sjh/sjh_rubygtk.pdf" href="http://info.sayya.org/%7Esjh/sjh_rubygtk.pdf"&gt;http://info.sayya.org/~sjh/sjh_rubygtk.pdf&lt;/a&gt;&lt;br /&gt;寫得很詳細、簡單明瞭！&lt;br /&gt;如果有需要可以看看&lt;br /&gt;&lt;script type="text/javascript"&gt;&lt;br /&gt;_uacct = "UA-1447561-1";&lt;br /&gt;urchinTracker();&lt;br /&gt;&lt;/script&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-1083894125333436315?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/1083894125333436315/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=1083894125333436315' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/1083894125333436315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/1083894125333436315'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/03/rubygtk.html' title='Ruby/GTK 中文教學'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-7167121842167045465</id><published>2007-03-01T23:24:00.000+08:00</published><updated>2007-03-01T23:42:37.502+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='hobix'/><category scheme='http://www.blogger.com/atom/ns#' term='Website'/><title type='text'>Balloon -- Ruby百寶箱</title><content type='html'>&lt;a href="http://balloon.hobix.com/"&gt;http://balloon.hobix.com/&lt;/a&gt;&lt;br /&gt;&lt;h1&gt;Here, Try a Balloon&lt;/h1&gt;&lt;strong&gt;Balloon&lt;/strong&gt; is a site for Rubyists to create demos of their code.  Have Balloon download Gems, fetch code from Subversion, run scripts and then close up without leaving a trace!&lt;br /&gt;&lt;br /&gt;簡單的說，Balloon提供給Ruby Coders一個可以建立demo的平台，如果有玩過&lt;a href="http://www.dob.com.tw"&gt;DOB首頁製作百寶箱&lt;/a&gt;作者群的人應該可以很快上手，因為跟發布文章的介面有點類似&lt;br /&gt;它定義了幾個Actions：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Run some Ruby code&lt;/li&gt;&lt;li&gt;Fetch a gem&lt;/li&gt;&lt;li&gt;Fetch a Ruby library(non-Gem)&lt;/li&gt;&lt;li&gt;Download code from Subversion&lt;/li&gt;&lt;li&gt;Use a Gem Server&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;可以看看底下範例：&lt;br /&gt;&lt;a href="http://balloon.hobix.com/serve.rb"&gt;http://balloon.hobix.com/serve.rb&lt;/a&gt;&lt;br /&gt;&lt;a href="http://balloon.hobix.com/Win32_MessageBox"&gt;http://balloon.hobix.com/Win32_MessageBox&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;寫好的Code還可以嵌入到部落格中喔&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-7167121842167045465?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/7167121842167045465/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=7167121842167045465' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/7167121842167045465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/7167121842167045465'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/03/balloon-ruby.html' title='Balloon -- Ruby百寶箱'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-8935979707165884648</id><published>2007-03-01T00:10:00.000+08:00</published><updated>2007-06-12T11:54:27.576+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='html_parser'/><title type='text'>快速處理HTML/XML文件</title><content type='html'>XML文件我是用ReXML啦.. 不過我這邊不是要介紹ReXML，是要來介紹hpricot這個Library的&lt;br /&gt;安裝方式：&lt;br /&gt;&lt;code&gt;  gem install hpricot&lt;br /&gt;or&lt;br /&gt;&lt;/code&gt;&lt;code&gt;  gem install hpricot --source http://code.whytheluckystiff.net&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;第一個會連線到gem server去抓來裝，不會有最新的更新；第二個會連到指定的gem server，那邊更新速度較快，我還看到jruby版本的gem..&lt;br /&gt;&lt;br /&gt;OK，廢話不多說，趕緊來看看&lt;br /&gt;官方網站是：&lt;a href="http://code.whytheluckystiff.net/hpricot/"&gt;http://code.whytheluckystiff.net/hpricot/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;如果會jQuery的人，這個是用jQuery當底層的喔！&lt;br /&gt;我來個例子吧&lt;br /&gt;&lt;code&gt;&lt;/code&gt;&lt;pre&gt;&lt;br /&gt;require 'rubygems'&lt;br /&gt;require 'hpricot'&lt;br /&gt;require 'open-uri'&lt;br /&gt;doc = Hpricot(open("http://article.zuso.org.tw/show.php?id=1453"))&lt;br /&gt;tb = doc.search("//table")&lt;br /&gt;puts "Tables: #{tb.size}"&lt;br /&gt;puts tb[0]&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-8935979707165884648?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/8935979707165884648/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=8935979707165884648' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/8935979707165884648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/8935979707165884648'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/03/htmlxml.html' title='快速處理HTML/XML文件'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-3593060753700155989</id><published>2007-02-27T23:25:00.000+08:00</published><updated>2007-02-27T23:27:20.547+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='documentation'/><title type='text'>Wikibooks上的中文版Programming Ruby</title><content type='html'>&lt;span&gt;網址是：&lt;a href="http://zh.wikibooks.org/w/index.php?title=Programming:Ruby&amp;variant=zh"&gt;http://zh.wikibooks.org/w/index.php?title=Programming:Ruby&amp;amp;variant=zh&lt;/a&gt;&lt;br /&gt;現在是我跟石頭閒語的Rock一起翻譯撰寫，如果有人有興趣的話歡迎加入翻譯的工作&lt;br /&gt;請將原文的文章引用後張貼，然後修改翻譯即可&lt;br /&gt;感謝您的付出！謝謝！&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-3593060753700155989?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/3593060753700155989/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=3593060753700155989' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/3593060753700155989'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/3593060753700155989'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/02/wikibooksprogramming-ruby.html' title='Wikibooks上的中文版Programming Ruby'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-3286837314411278304</id><published>2007-02-27T00:03:00.000+08:00</published><updated>2007-02-27T00:05:32.896+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>File讀取方式：readlines好還是while迴圈好？</title><content type='html'>在Ruby中，File可以用readlines跟跑while迴圈來讀&lt;br /&gt;在這個例子中，程式p1用的是while迴圈，p2用的是readlines&lt;br /&gt;執行後，秒數分別是&lt;br /&gt;P1:&lt;br /&gt;121.468秒&lt;br /&gt;P2:&lt;br /&gt;122.172秒&lt;br /&gt;範例文字檔大小是：&lt;br /&gt;4.07 MB (4,272,336 位元組)&lt;br /&gt;&lt;br /&gt;範例程式碼是：&lt;br /&gt;&lt;br /&gt;puts "P1 start"&lt;br /&gt;p1_start = Time.now&lt;br /&gt;open("C:/words.txt"){ |f|&lt;br /&gt;while a = f.gets&lt;br /&gt;  print a&lt;br /&gt;end&lt;br /&gt;}&lt;br /&gt;p1_end = Time.now&lt;br /&gt;puts "P1 end"&lt;br /&gt;puts "P2 start"&lt;br /&gt;p2_start = Time.now&lt;br /&gt;File.open("C:/words.txt") do |f|&lt;br /&gt;puts f.readlines&lt;br /&gt;end&lt;br /&gt;p2_end = Time.now&lt;br /&gt;puts "P2 end"&lt;br /&gt;puts&lt;br /&gt;puts "P1: ", p1_end - p1_start&lt;br /&gt;puts "P2: ", p2_end - p2_start&lt;br /&gt;&lt;br /&gt;由此可見，while快上不到一秒，但是如果在讀取大檔案的時候，用while反而會比較快&lt;br /&gt;相對的，如果不考慮效率，我還是建議使用readlines&lt;br /&gt;&lt;br /&gt;不過這只是個人看法，希望其他前輩不吝指教，謝謝！&lt;img class="wordpress_more" _fckwordpress="more" src="http://blog.pixnet.net/js/fckeditor/editor/plugins/wordpress/spacer.gif" _fckfake="" height="10" width="100%" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-3286837314411278304?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/3286837314411278304/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=3286837314411278304' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/3286837314411278304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/3286837314411278304'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/02/filereadlineswhile.html' title='File讀取方式：readlines好還是while迴圈好？'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-9038624316564656536</id><published>2007-02-25T22:36:00.000+08:00</published><updated>2007-02-25T22:37:19.334+08:00</updated><title type='text'>小水滴測試用文章</title><content type='html'>有看到右邊多了什麼嗎？&lt;br /&gt;沒錯！就是部落格寵物！&lt;br /&gt;還蠻可愛的說A_A&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-9038624316564656536?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/9038624316564656536/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=9038624316564656536' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/9038624316564656536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/9038624316564656536'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/02/blog-post_25.html' title='小水滴測試用文章'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-6815781241759158282</id><published>2007-02-25T08:36:00.000+08:00</published><updated>2007-02-25T08:47:44.239+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='hemidemi'/><title type='text'>HEMiDEMi文章產生器 -- Ver. 0.2</title><content type='html'>此版本尚未支援 影片代碼 功能&lt;br /&gt;&lt;br /&gt;原始碼如下：&lt;br /&gt;require 'rubygems'&lt;br /&gt;require 'mechanize'&lt;br /&gt;&lt;br /&gt;class HEMiDEMi&lt;br /&gt;def initialize(username="", password="")&lt;br /&gt; agent = WWW::Mechanize.new{}&lt;br /&gt; f = agent.get("http://www.hemidemi.com/member/signin_form").forms[1]&lt;br /&gt; f["member[username]"], f["member[password]"] = username, password&lt;br /&gt; f.submit&lt;br /&gt; @agent = agent&lt;br /&gt; @base_url = "http://www.hemidemi.com"&lt;br /&gt; @new_path = "/user_bookmark/new"&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;def run(file)&lt;br /&gt; File.open(file) do |f|&lt;br /&gt;   f.readlines.each do |frl|&lt;br /&gt;     next if frl[0].chr == "#"&lt;br /&gt;     title, url, quotes, description, t_s, g_s = frl.split(/\t/)&lt;br /&gt;     self.add({&lt;br /&gt;       "title" =&gt; title,&lt;br /&gt;       "url" =&gt; url,&lt;br /&gt;       "quotes" =&gt; quotes,&lt;br /&gt;       "description" =&gt; description,&lt;br /&gt;       "tag_string" =&gt; t_s,&lt;br /&gt;       "group_string" =&gt; g_s&lt;br /&gt;     })&lt;br /&gt;   end&lt;br /&gt; end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;def add(qs)&lt;br /&gt; f = @agent.get(@base_url+@new_path).forms[1]&lt;br /&gt; qs.each do |k, v|&lt;br /&gt;   puts "Add: #{k} as #{v}"&lt;br /&gt;   f["user_bookmark[#{k}]"] = v&lt;br /&gt; end&lt;br /&gt; f.fields.each do |x| puts x.name + " =&gt; " + x.value end&lt;br /&gt; f.submit&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;puts "請輸入HEMiDEMi使用者帳號跟密碼(用空格分開)："&lt;br /&gt;ud = gets.chomp.split(/ /)&lt;br /&gt;hemidemi = HEMiDEMi.new(ud[0], ud[1])&lt;br /&gt;puts "請輸入檔案位置，不輸入則預設值為當前目錄下的bms.txt："&lt;br /&gt;path = gets.chomp&lt;br /&gt;path == "" ? hemidemi.run("bms.txt") : hemidemi.run(path)&lt;br /&gt;&lt;br /&gt;另外，bms.txt檔案內容是：&lt;br /&gt;# 欄位說明：&lt;br /&gt;#   title\turl\tquotes\tdescription\ttag_string\tgroup_string&lt;br /&gt;#   標題&lt;tab&gt;網址&lt;tab&gt;引述&lt;tab&gt;說明&lt;tab&gt;標籤&lt;tab&gt;群組&lt;br /&gt;#   &lt;tab&gt;：按一次Tab鍵&lt;br /&gt;# 底下是範例：&lt;br /&gt;HEMiDEMi    http://www.hemidemi.com        HEMiDEMi共享書籤    hemidemi    test ruby_and_ror&lt;br /&gt;&lt;br /&gt;說明：&lt;br /&gt;&lt;br /&gt;請先建立好bms.txt或者其他檔案名稱的純文字檔&lt;br /&gt;欄位寫的很清楚，就是：標題&lt;tab&gt;網址&lt;tab&gt;引述&lt;tab&gt;說明&lt;tab&gt;標籤&lt;tab&gt;群組&lt;br /&gt;請記得一定要用tab來分隔，建議用Windows內建的記事本來編寫&lt;br /&gt;如果想要空掉某些欄位，則該欄位不填直接按下tab鍵即可，看範例就可以知道 (範例沒有寫上引述)&lt;br /&gt;&lt;tab&gt;&lt;tab&gt;&lt;tab&gt;&lt;tab&gt;&lt;tab&gt;&lt;tab&gt;&lt;tab&gt;&lt;tab&gt;&lt;tab&gt;&lt;tab&gt;&lt;tab&gt;&lt;br /&gt;&lt;br /&gt;程式授權：MIT&lt;br /&gt;程式所需套件：rubygems、mechanize跟mechanize之所需套件&lt;br /&gt;mechanize安裝方式：&lt;br /&gt;請先確定有rubygems，如果沒有請到RubyForge下載安裝&lt;br /&gt;打開命令提示字元或者終端機，輸入：&lt;br /&gt; gem i mechanize -y&lt;br /&gt;如果有要你選版本的話，Windows使用者請選擇(mswin32)版本，而其他作業系統請選(ruby)版本&lt;br /&gt;程式原始碼下載：&lt;br /&gt;&lt;a href="http://skycfc.googlepages.com/HEMiDEMi_Big5.rar"&gt;Windows (Big5)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://skycfc.googlepages.com/HEMiDEMi_UTF8.rar"&gt;Linux (UTF-8)&lt;/a&gt;&lt;/tab&gt;&lt;/tab&gt;&lt;/tab&gt;&lt;/tab&gt;&lt;/tab&gt;&lt;/tab&gt;&lt;/tab&gt;&lt;/tab&gt;&lt;/tab&gt;&lt;/tab&gt;&lt;/tab&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-6815781241759158282?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/6815781241759158282/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=6815781241759158282' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/6815781241759158282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/6815781241759158282'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/02/hemidemi-ver-02.html' title='HEMiDEMi文章產生器 -- Ver. 0.2'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-5933241950765244899</id><published>2007-02-25T08:33:00.000+08:00</published><updated>2007-02-25T08:36:36.178+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='hemidemi'/><title type='text'>HEMiDEMi文章產生器 -- Ver. 0.1</title><content type='html'>原始碼在這邊：&lt;br /&gt;&lt;br /&gt;require 'rubygems'&lt;br /&gt;require 'mechanize'&lt;br /&gt;&lt;br /&gt;class HEMiDEMi&lt;br /&gt;  def initialize(username="", password="")&lt;br /&gt;    agent = WWW::Mechanize.new&lt;br /&gt;    f = agent.get("http://www.hemidemi.com/member/signin_form").forms[1]&lt;br /&gt;    f["member[username]"], f["member[password]"] = username, password&lt;br /&gt;    f.submit&lt;br /&gt;    @agent = agent&lt;br /&gt;    @base_url = "http://www.hemidemi.com"&lt;br /&gt;    @new_path = "/user_bookmark/new"&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  def add(qs)&lt;br /&gt;    f = @agent.get(@base_url+@new_path).forms[1]&lt;br /&gt;    qs.each do |k, v|&lt;br /&gt;      f["user_bookmark[#{k}]"] = v&lt;br /&gt;    end&lt;br /&gt;    f.submit&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;=begin&lt;br /&gt;qs = {&lt;br /&gt;  "title" =&gt; title,&lt;br /&gt;  "url" =&gt; url,&lt;br /&gt;  "quotes" =&gt; quotes,&lt;br /&gt;  "description" =&gt; desc,&lt;br /&gt;  "tag_string" =&gt; t_s,&lt;br /&gt;  "group_string" =&gt; g_s,&lt;br /&gt;  "embed" =&gt; embed&lt;br /&gt;}&lt;br /&gt;=end&lt;br /&gt;&lt;br /&gt;qs = {&lt;br /&gt;  "title" =&gt; "G00g13",&lt;br /&gt;  "url" =&gt; "google.com"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;hemidemi = HEMiDEMi.new("", "").add(qs)&lt;br /&gt;&lt;br /&gt;目前這個版本只是雛型.. 還不能夠用來大量新增！&lt;br /&gt;簡單介紹一下...&lt;br /&gt;&lt;br /&gt;qs = {&lt;br /&gt;  "title" =&gt; title,&lt;br /&gt;  "url" =&gt; url,&lt;br /&gt;  "quotes" =&gt; quotes,&lt;br /&gt;  "description" =&gt; desc,&lt;br /&gt;  "tag_string" =&gt; t_s,&lt;br /&gt;  "group_string" =&gt; g_s,&lt;br /&gt;  "embed" =&gt; embed&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;qs是一個Hash，我只講其中幾個&lt;br /&gt;quotes：代表的是"引述"&lt;br /&gt;description：代表的是"說明"&lt;br /&gt;embed：代表的是影片代碼&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-5933241950765244899?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/5933241950765244899/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=5933241950765244899' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/5933241950765244899'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/5933241950765244899'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/02/hemidemi-ver-01.html' title='HEMiDEMi文章產生器 -- Ver. 0.1'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-8722005036147227608</id><published>2007-02-25T08:32:00.000+08:00</published><updated>2007-02-25T08:33:33.383+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='tools'/><category scheme='http://www.blogger.com/atom/ns#' term='hemidemi'/><title type='text'>HEMiDEMi文章產生器.. Memo</title><content type='html'>原始碼在這邊：&lt;br /&gt;&lt;br /&gt;require 'rubygems'&lt;br /&gt;require 'mechanize'&lt;br /&gt;&lt;br /&gt;class HEMiDEMi&lt;br /&gt;  def initialize(username="", password="")&lt;br /&gt;    agent = WWW::Mechanize.new&lt;br /&gt;    f = agent.get("http://www.hemidemi.com/member/signin_form").forms[1]&lt;br /&gt;    f["member[username]"], f["member[password]"] = username, password&lt;br /&gt;    f.submit&lt;br /&gt;    @agent = agent&lt;br /&gt;    @base_url = "http://www.hemidemi.com"&lt;br /&gt;    @new_path = "/user_bookmark/new"&lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  def add(qs)&lt;br /&gt;    f = @agent.get(@base_url+@new_path).forms[1]&lt;br /&gt;    qs.each do |k, v|&lt;br /&gt;      f["user_bookmark[#{k}]"] = v&lt;br /&gt;    end&lt;br /&gt;    f.submit&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;end&lt;br /&gt;=begin&lt;br /&gt;qs = {&lt;br /&gt;  "title" =&gt; title,&lt;br /&gt;  "url" =&gt; url,&lt;br /&gt;  "quotes" =&gt; quotes,&lt;br /&gt;  "description" =&gt; desc,&lt;br /&gt;  "tag_string" =&gt; t_s,&lt;br /&gt;  "group_string" =&gt; g_s,&lt;br /&gt;  "embed" =&gt; embed&lt;br /&gt;}&lt;br /&gt;=end&lt;br /&gt;&lt;br /&gt;qs = {&lt;br /&gt;  "title" =&gt; "G00g13",&lt;br /&gt;  "url" =&gt; "google.com"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;hemidemi = HEMiDEMi.new("", "").add(qs)&lt;br /&gt;&lt;br /&gt;目前這個版本只是雛型.. 還不能夠用來大量新增！&lt;br /&gt;簡單介紹一下...&lt;br /&gt;&lt;br /&gt;qs = {&lt;br /&gt;  "title" =&gt; title,&lt;br /&gt;  "url" =&gt; url,&lt;br /&gt;  "quotes" =&gt; quotes,&lt;br /&gt;  "description" =&gt; desc,&lt;br /&gt;  "tag_string" =&gt; t_s,&lt;br /&gt;  "group_string" =&gt; g_s,&lt;br /&gt;  "embed" =&gt; embed&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;qs是一個Hash，我只講其中幾個&lt;br /&gt;quotes：代表的是"引述"&lt;br /&gt;description：代表的是"說明"&lt;br /&gt;embed：代表的是影片代碼&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-8722005036147227608?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/8722005036147227608/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=8722005036147227608' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/8722005036147227608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/8722005036147227608'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/02/hemidemi-memo.html' title='HEMiDEMi文章產生器.. Memo'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-6834548079739842275</id><published>2007-02-24T04:45:00.000+08:00</published><updated>2007-02-24T04:48:56.204+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='lecture'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>三場關於Ruby在Google的演講</title><content type='html'>錄影放在Google Video&lt;br /&gt;議題分別是：&lt;br /&gt;&lt;a href="http://video.google.com/videoplay?docid=-8103284744220333344&amp;q=ruby" target="_blank"&gt;How to Design A Domain Specific Language&lt;/a&gt; -- David Pollak&lt;br /&gt;&lt;a href="http://video.google.com/videoplay?docid=1541014406319673545&amp;q=ruby" target="_blank"&gt;Code Generation With Ruby&lt;/a&gt; -- Jack Herrington&lt;br /&gt;&lt;a href="http://video.google.com/videoplay?docid=5225802147352970175&amp;q=ruby" target="_blank"&gt;Ruby and Google Maps&lt;/a&gt; -- Andre Lewis&lt;br /&gt;&lt;br /&gt;正在看&lt;a href="http://video.google.com/videoplay?docid=5225802147352970175&amp;q=ruby" target="_blank"&gt;Ruby and Google Maps&lt;/a&gt;:P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-6834548079739842275?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/6834548079739842275/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=6834548079739842275' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/6834548079739842275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/6834548079739842275'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/02/rubygoogle.html' title='三場關於Ruby在Google的演講'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-6629588494087892003</id><published>2007-02-24T04:40:00.000+08:00</published><updated>2007-06-12T11:48:09.354+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='video'/><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='api'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='screencast'/><title type='text'>51個Rails影片跟展示</title><content type='html'>網址是：&lt;a href="http://www.bestechvideos.com/category/development/ruby/" target="_blank"&gt;http://www.bestechvideos.com/category/development/ruby/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;這邊有51個不同的展示影片，也有介紹影片，非常值得去看看&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-6629588494087892003?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/6629588494087892003/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=6629588494087892003' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/6629588494087892003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/6629588494087892003'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/02/51rails.html' title='51個Rails影片跟展示'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-3814391158073485174</id><published>2007-02-24T04:08:00.000+08:00</published><updated>2007-02-24T04:13:00.516+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='twrug portal'/><title type='text'>社群網站建置中</title><content type='html'>現在改用Joomla，不用Xoops了&lt;br /&gt;不過還在建置.. Joomla裝起來感覺還蠻好的&lt;br /&gt;版面也很漂亮，用起來很舒服&lt;br /&gt;主機由 &lt;a href="http://www.zuso.org.tw" target="_blank"&gt;Zuso Security&lt;/a&gt; 提供，感謝負責人 ik&lt;br /&gt;&lt;br /&gt;目前網址是：&lt;a href="http://willh.org/cfc/" target="_blank"&gt;http://willh.org/cfc/&lt;/a&gt;&lt;br /&gt;而原本的：&lt;a href="http://www.ruby.oss.tw" target="_blank"&gt;http://www.ruby.oss.tw&lt;/a&gt;則會自動轉至新網址&lt;br /&gt;感謝&lt;a href="http://twpug.net" target="_blank"&gt;http://twpug.net&lt;/a&gt;的站長Kiang提供ruby.oss.tw網域名稱及空間&lt;br /&gt;&lt;br /&gt;等到網站建置結束，將會在Group上公告&lt;br /&gt;&lt;br /&gt;現在.. 凌晨四點多=  =&lt;br /&gt;會不會被老婆罵死阿~"~a&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-3814391158073485174?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/3814391158073485174/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=3814391158073485174' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/3814391158073485174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/3814391158073485174'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/02/blog-post.html' title='社群網站建置中'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-4493176688235378675</id><published>2007-02-21T02:53:00.000+08:00</published><updated>2007-06-12T11:49:48.643+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='Taiwan'/><category scheme='http://www.blogger.com/atom/ns#' term='Offical Website'/><title type='text'>台灣Ruby官方網站出來了！</title><content type='html'>這真是令人振奮的消息阿&lt;br /&gt;雖然已經超過兩三個月了...&lt;br /&gt;由SJH於2006年10月4號成立&lt;br /&gt;擷圖：&lt;a href="http://farm1.static.flickr.com/175/396720833_599f58f8e6_o_d.jpg"&gt;http://farm1.static.flickr.com/175/396720833_599f58f8e6_o_d.jpg&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;真是太開心了&gt;///&lt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-4493176688235378675?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/4493176688235378675/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=4493176688235378675' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/4493176688235378675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/4493176688235378675'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/02/ruby.html' title='台灣Ruby官方網站出來了！'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-39507782160579485</id><published>2007-02-20T16:33:00.000+08:00</published><updated>2007-06-12T11:50:17.996+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ide'/><category scheme='http://www.blogger.com/atom/ns#' term='rails'/><title type='text'>Gyre -- 優秀又強大的網頁版Rails編輯器</title><content type='html'>Gyre是一個網頁版的Rails Editor，雖然是網頁版的可是別小看它喔！&lt;br /&gt;它的執行環境不過就只是從Desktop換到Web而已，一般IDE該有的功能都有喔！&lt;br /&gt;Ruby Inside上有介紹：http://www.rubyinside.com/gyre-web-based-ide-and-debugger-for-rails-383.html&lt;br /&gt;官方網站：http://gyre.bitscribe.net/&lt;br /&gt;ScreenCast：http://gyre.bitscribe.net/screencast&lt;br /&gt;我很推薦各位去看他的ScreenCast，前面介紹蠻多的.. 可以跳過不聽XD&lt;br /&gt;它可以Debug，可以同步變更檔案內容(也就是說當我使用這個網頁版編輯器時，我在一般文字編輯器上的修改，這個編輯器也可以即時更新)！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-39507782160579485?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/39507782160579485/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=39507782160579485' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/39507782160579485'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/39507782160579485'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/02/gyre-rails.html' title='Gyre -- 優秀又強大的網頁版Rails編輯器'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-3624699490560376644</id><published>2007-02-20T16:31:00.000+08:00</published><updated>2007-06-12T11:48:57.879+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='api'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Win32API Sample: MessageBox</title><content type='html'>require 'Win32API'&lt;br /&gt;&lt;br /&gt;=begin&lt;br /&gt;  Message Box:&lt;br /&gt;  Coded by CFC &lt;at&gt; Zuso Security&lt;br /&gt;  CFC &lt;zusocfc@gmail.com&gt;&lt;br /&gt;  2007/2/16&lt;br /&gt;=end&lt;br /&gt;&lt;br /&gt;class Msgbox&lt;br /&gt;  def initialize(lpText="", lpCaption="", wType = 0)&lt;br /&gt;    Win32API.new('user32', 'MessageBox', %w(p p p i), 'i').call(0,lpText,lpCaption,wType)&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;def Msgbox(lpText="", lpCaption="", wType = 0)&lt;br /&gt;  Win32API.new('user32', 'MessageBox', %w(p p p i), 'i').call(0,lpText,lpCaption,wType)&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;採用MIT授權條款&lt;br /&gt;Usage:&lt;br /&gt;Msgbox.new("Hi", "Hello, world")&lt;br /&gt;Msgbox.new("XD", "Hello!", 1)&lt;br /&gt;Msgbox("Hi", "Hello!")&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-3624699490560376644?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/3624699490560376644/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=3624699490560376644' title='3 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/3624699490560376644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/3624699490560376644'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/02/win32api-sample-messagebox.html' title='Win32API Sample: MessageBox'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-2564393506528468111</id><published>2007-02-20T16:28:00.000+08:00</published><updated>2007-06-12T11:48:36.657+08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='api'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>如何透過Ruby呼叫Win32API</title><content type='html'>研究了一下.. 寫出來當Memo..&lt;br /&gt;我先以一個簡單的例子來解說，就用大家最愛的MessageBox吧！&lt;br /&gt;&lt;br /&gt;require 'win32api'&lt;br /&gt;msgbox = Win32API.new('user32', 'MessageBox', %w(p p p i), 'i')&lt;br /&gt;msgbox.call(0, "Message body", "Messagebox title", 1) # hwnd, lpText, lpCaption, wType =&gt; Come from API Viewer (API檢視員)&lt;br /&gt;&lt;br /&gt;OK.. 開始來講解&lt;br /&gt;1. require 'win32api'&lt;br /&gt;這是將win32api.rb給引入的意思，跟C的#include用意相同&lt;br /&gt;&lt;br /&gt;2. msgbox = Win32API.new('user32', 'MessageBox', %w(p p p i), 'i')&lt;br /&gt;實體化一個Win32API物件，第一個是dllname，第二個是要呼叫的東西，第三個是API參數傳遞時的資料型態，第四個是要回傳的資料型態&lt;br /&gt;如果保持nil(也就是null)的話，就表示不會有傳入或回傳&lt;br /&gt;&lt;br /&gt;3. msgbox.call(0, "Message body", "Messagebox title", 1)&lt;br /&gt;透過這個物件呼叫，hwnd傳入0，lpText傳入"Message body"接著以此類推&lt;br /&gt;&lt;br /&gt;我來張貼一下常數表&lt;br /&gt;&lt;br /&gt;  # type flag&lt;br /&gt;  MB_OK               = 0&lt;br /&gt;  MB_OKCANCEL         = 1&lt;br /&gt;  MB_ABORTRETRYIGNORE = 2&lt;br /&gt;  MB_YESNOCANCEL      = 3&lt;br /&gt;  MB_YESNO            = 4&lt;br /&gt;  MB_RETRYCANCEL      = 5&lt;br /&gt;&lt;br /&gt;  # return values&lt;br /&gt;  IDOK     = 1&lt;br /&gt;  IDCANCEL = 2&lt;br /&gt;  IDABORT  = 3&lt;br /&gt;  IDRETRY  = 4&lt;br /&gt;  IDIGNORE = 5&lt;br /&gt;  IDYES    = 6&lt;br /&gt;  IDNO     = 7&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-2564393506528468111?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/2564393506528468111/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=2564393506528468111' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/2564393506528468111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/2564393506528468111'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2007/02/rubywin32api.html' title='如何透過Ruby呼叫Win32API'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-116384853845538654</id><published>2006-11-18T18:48:00.000+08:00</published><updated>2006-11-18T19:15:38.990+08:00</updated><title type='text'>FON Taiwan重新運作！</title><content type='html'>FON Taiwan重新運作，最新一批Router將會在12月初開始販賣寄送&lt;br /&gt;11/1前寄信索取299元Fon Router者可以用149元購買(一個人只可以買一台)&lt;br /&gt;然後可以推薦七個人用199購買Fon Router&lt;br /&gt;&lt;br /&gt;詳情請看：http://blog.yam.com/twfon&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-116384853845538654?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/116384853845538654/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=116384853845538654' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/116384853845538654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/116384853845538654'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/11/fon-taiwan.html' title='FON Taiwan重新運作！'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-116312104265781967</id><published>2006-11-10T09:10:00.000+08:00</published><updated>2006-11-10T09:11:55.623+08:00</updated><title type='text'>Ruby predefined read-only variable</title><content type='html'>在這個網址下有個List&lt;br /&gt;http://www.math.hokudai.ac.jp/~gotoken/ruby/ruby-uguide/uguide20.html&lt;br /&gt;&lt;br /&gt;    $!              error message&lt;br /&gt;    $@              position of an error occurrence&lt;br /&gt;    $_              latest read string by `gets'&lt;br /&gt;    $.              latest read number of line by interpreter&lt;br /&gt;    $&amp;              latest matched string by the regexep.&lt;br /&gt;    $1, $2...       latest matched string by nth parentheses of regexp. &lt;br /&gt;    $~              data for latest matche for regexp&lt;br /&gt;    $=              whether or not case-sensitive in string matching&lt;br /&gt;    $/              input record separator&lt;br /&gt;    $\              output record separator&lt;br /&gt;    $0              the name of the ruby scpript file&lt;br /&gt;    $*              command line arguments for the ruby scpript&lt;br /&gt;    $$              PID for ruby interpreter&lt;br /&gt;    $?              status of the latest executed child process&lt;br /&gt;&lt;br /&gt;順手補上一個...&lt;br /&gt;    $:               會印出Ruby Path&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-116312104265781967?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/116312104265781967/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=116312104265781967' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/116312104265781967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/116312104265781967'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/11/ruby-predefined-read-only-variable.html' title='Ruby predefined read-only variable'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-116145296262697402</id><published>2006-10-22T01:40:00.000+08:00</published><updated>2006-10-22T01:49:23.136+08:00</updated><title type='text'>防盜版？先教育老師吧！</title><content type='html'>很有趣！剛剛朋友問我有沒有C++ IDE&lt;br /&gt;傳了Dev-Cpp的網址給他後，居然說：我們教授指定要用 Microsoft Visual C++ 6.0&lt;br /&gt;教授喔！是教授喔！&lt;br /&gt;&lt;br /&gt;卡比獸-我可以為兄弟兩肋插刀，但是我會為女人插兄弟兩刀 說:&lt;br /&gt;HI&lt;br /&gt;在嗎??&lt;br /&gt;CFC 說:&lt;br /&gt;?&lt;br /&gt;卡比獸-我可以為兄弟兩肋插刀，但是我會為女人插兄弟兩刀 說:&lt;br /&gt;你手邊有 C++ 嗎?&lt;br /&gt;CFC 說:&lt;br /&gt;http://www.bloodshed.net&lt;br /&gt;卡比獸-我可以為兄弟兩肋插刀，但是我會為女人插兄弟兩刀 說:&lt;br /&gt;我們教授指定要用 Microsoft Visual C++ 6.0&lt;br /&gt;...有點鳥的東西~"~&lt;br /&gt;CFC 說:&lt;br /&gt;跟他說：幹你媽的微軟狗&lt;br /&gt;卡比獸-我可以為兄弟兩肋插刀，但是我會為女人插兄弟兩刀 說:&lt;br /&gt;不行...人家是 學務長&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;是教授又是學務長的，寫程式一定要用Visual C++ 6.0那個垃圾嗎？&lt;br /&gt;那使用*nix的學生怎辦？不都全部被你當掉嗎？&lt;br /&gt;底下用gcc、g++編譯，不可以嗎？&lt;br /&gt;幹麻？你微軟的嗎？&lt;br /&gt;每個學生不過就上你的那堂課而已，就要花錢買垃圾？&lt;br /&gt;有沒有搞錯？&lt;br /&gt;&lt;br /&gt;我不懂，既然要求要上Word、Excel等課程&lt;br /&gt;為什麼學校不幫學生買來送給學生呢？&lt;br /&gt;為什麼好好的OpenOffice在那邊不用，偏偏要用Word？Excel？&lt;br /&gt;別跟我說什麼外面企業怎樣怎樣的廢話&lt;br /&gt;除非你承認你是廢人！&lt;br /&gt;只要可以產生*.doc就好了，管他是啥軟體？&lt;br /&gt;只要可以編譯成執行檔就好了，管他是啥IDE？&lt;br /&gt;只要可以用就好了，管他是不是正版？&lt;br /&gt;&lt;br /&gt;操！狗眼瞎啦？你以為台灣人民很有錢嗎？&lt;br /&gt;啥都用商業軟體，不去用自由軟體&lt;br /&gt;自己孩子都在抓盜版X片打飛機不管，管別人家孩子辛辛苦苦學著用該死的Word&lt;br /&gt;我去你媽！&lt;br /&gt;我等著看你孫子沒屁眼！&lt;br /&gt;&lt;br /&gt;銘傳X學的什麼學務長&lt;br /&gt;叫做楊ㄐㄧㄢˋ貴的&lt;br /&gt;何必呢？&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-116145296262697402?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/116145296262697402/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=116145296262697402' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/116145296262697402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/116145296262697402'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/10/blog-post.html' title='防盜版？先教育老師吧！'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-116096353760004947</id><published>2006-10-16T09:50:00.000+08:00</published><updated>2006-10-20T21:52:49.083+08:00</updated><title type='text'>PHP 會被 Ruby 殺死嗎？</title><content type='html'>轉貼至：http://www.hkpug.net/node/106&lt;br /&gt;&lt;br /&gt;這個標題沒有惡意，只是用來吸引大家的注意力，文章的作者 Stefan Mischook 在他的網誌比較了 Ruby 和 PHP 兩種經常被人拿來比拼的網頁開發語言，事實上一些 PHP 社群對於 Ruby 近年推出的優秀（但並不完美）開發架構 Rails 有一點恐懼，藉著 Rails 的關係 Ruby 的普及程度大幅提高，對 PHP 構成一定的威脅。所以 Stefan 嘗試解答「PHP 會被 Ruby 殺死嗎？」&lt;br /&gt;&lt;br /&gt;Stefan 認為簡單的答案是「不」。&lt;br /&gt;&lt;br /&gt;Stefan 的理據&lt;br /&gt;&lt;br /&gt;儘管 PHP 和 Ruby 同樣是開發網上應用程式的腳本語言，但正如 Java 社群所說，兩者有很大的分別，適合不同的用戶。&lt;br /&gt;&lt;br /&gt;Ruby 很優美，但也很複雜&lt;br /&gt;&lt;br /&gt;Stefan 首先申明，他認同 Ruby 是一個偉大的編程語言，PHP 開發人員有很好的理由學習一點兒 Ruby，事實上任何人想做一個高明的開發人員，多學習一些其他語言總是有益的。&lt;br /&gt;&lt;br /&gt;Stefan 跟著說，Ruby 並不切合大部分 PHP 開發人員的需要，因為 Ruby 太抽象了。&lt;br /&gt;&lt;br /&gt;只有 Java 呆子愛上 Ruby&lt;br /&gt;&lt;br /&gt;由於 Ruby 可以把非常高階的抽象概念有很簡單的語法表現出來，相對於 Java 那些七拼八湊而冗長的語法，Ruby 吸引很多 Java 開發人員，加上寫 Java 的人已經習慣了不管項目的大小總是從企業級系統角度來規劃程式，Ruby 的對抽象概念的表達能力對他們特別有吸引力。&lt;br /&gt;&lt;br /&gt;為何 PHP 有用？&lt;br /&gt;&lt;br /&gt;PHP 經常被批評為兼具程序導向（procedural）和物件導向（object oriented）兩種概念於一身的語言，有人認為這兩種截然不同的概念使 PHP 陷入混亂，但 Stefan 卻認為這正是 PHP 的強項。&lt;br /&gt;&lt;br /&gt;物件導向的模式適合用來開發簡潔、易於維護、加強代碼「可再用性」（reusability）的設計，代碼的可再用性經常被視為物件導向的重大優點，不過 Stefan 發覺在 Java 的社群真正發揮這一個優點的例子的很少。&lt;br /&gt;&lt;br /&gt;可是使用物件導向是有代價的，相對於其他方法，物件導向的程式需要編寫更多代碼。&lt;br /&gt;&lt;br /&gt;PHP 證明非物件導向的語言也有一席之位&lt;br /&gt;&lt;br /&gt;Stefan 認為大部分 PHP 都適用在簡單的項目，例如：&lt;br /&gt;&lt;br /&gt;網頁介面的電郵處理系統&lt;br /&gt;對網頁表格進行處理，然後把資料存到數據庫&lt;br /&gt;建立一個只有 10 個物品的小店子&lt;br /&gt;即是說，對大部分 PHP 項目而言物件導向都是一把用來殺雞的牛刀。&lt;br /&gt;&lt;br /&gt;為甚麼說 PHP 不會被 Ruby 殺死？&lt;br /&gt;&lt;br /&gt;在 Ruby 的世界一切東西都是物件，即使是一個數字也是一個物件，必須對該語言的複雜核心有所了解才能編寫有效率的 Ruby 程式，Ruby 的強項也是它的弱點。&lt;br /&gt;&lt;br /&gt;Stefan 認為大部分 PHP 開發人員不願意在一個抽象的世界鑽得如此深入，大部分的情況根本沒有這個需要。&lt;br /&gt;&lt;br /&gt;========CFC=========&lt;br /&gt;底下是我的想法：&lt;br /&gt;&lt;br /&gt;說真的，Ruby無法殺死PHP &lt;br /&gt;我真的是這樣認為 &lt;br /&gt;為什麼我會這樣想呢？原因很簡單！ &lt;br /&gt;因為Ruby != Ruby on Rails &lt;br /&gt;如果說，同樣是針對Application的開發，Ruby可以很輕易的將PHP給Kill &lt;br /&gt;但是換到Web去，PHP就不會被Ruby Kill，反而是Ruby有可能被Kill &lt;br /&gt;因為Ruby只能寫CGI... &lt;br /&gt;但是搭配Rails呢... ? &lt;br /&gt;&lt;br /&gt;但是我是這樣認為的，PHP還是可以占有一席之地 &lt;br /&gt;它對於小的、輕的、不龐大的應用，像是文章所說的電郵系統可以用PHP開發 &lt;br /&gt;用Rails則是太扯了..&lt;br /&gt;&lt;br /&gt;很明顯的，我認為原文作者(英文那篇)並不了解Ruby跟Rails&lt;br /&gt;&lt;br /&gt;就像是有很多的Java coder不懂Ruby，就馬上說Ruby沒有任何可以贏過Java的缺點&lt;br /&gt;&lt;br /&gt;真的是這樣嗎:)?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-116096353760004947?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.hkpug.net/node/106' title='PHP 會被 Ruby 殺死嗎？'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/116096353760004947/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=116096353760004947' title='4 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/116096353760004947'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/116096353760004947'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/10/php-ruby.html' title='PHP 會被 Ruby 殺死嗎？'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-116056546514642814</id><published>2006-10-11T19:17:00.000+08:00</published><updated>2006-10-11T19:17:47.870+08:00</updated><title type='text'>Google WebMaster Tools</title><content type='html'>我在我的Google服務列表內看到了這個&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.google.com/zusocfc/RSzMUL5CABI/AAAAAAAAAF8/dXwNbTMv4Fw/s288/services1.JPG"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;WebMaster Tools，聽起來很像是網站管理工具，來看看它的介面吧&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.google.com/zusocfc/RSzMRZhAABI/AAAAAAAAAFs/hfXeshjsrKE/s288/wmt1.JPG"&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.google.com/zusocfc/RSzMTc6SABI/AAAAAAAAAF0/ipb-Sdv_kFA/s288/wmt2.JPG"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Robot.txt分析工具&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.google.com/zusocfc/RSzN-SGmABI/AAAAAAAAAGQ/HFxwz4ewmbg/s288/wmt3.JPG"&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;這個工具看來還只是個使用20%時間開發出來的小工具&lt;br /&gt;&lt;br /&gt;或許可以搭配Google Analysis一起使用&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-116056546514642814?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/116056546514642814/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=116056546514642814' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/116056546514642814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/116056546514642814'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/10/google-webmaster-tools.html' title='Google WebMaster Tools'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-116049591651824435</id><published>2006-10-10T23:58:00.000+08:00</published><updated>2006-10-10T23:58:37.210+08:00</updated><title type='text'>Hacker文</title><content type='html'>在Google內設置語系為駭客(Hacker)的話，你會有全新的體驗&lt;br /&gt;那到底Hacker文該怎樣學習呢？&lt;br /&gt;這一個網站或許可以提供一點幫助：&lt;a href="http://labs.absurdlycool.com/hacker"&gt;http://labs.absurdlycool.com/hacker&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-116049591651824435?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/116049591651824435/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=116049591651824435' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/116049591651824435'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/116049591651824435'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/10/hacker.html' title='Hacker文'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-116047813657489035</id><published>2006-10-10T18:55:00.000+08:00</published><updated>2006-10-10T19:11:48.846+08:00</updated><title type='text'>Google Reader小更新</title><content type='html'>http://reader.google.com&lt;br /&gt;Google Reader更新了，版面改了，也增加許多小功能&lt;br /&gt;像是按下U會將左邊欄隱藏、按下j、k可以在資料中上下交換觀看等等&lt;br /&gt;這對於觀看RSS來說更加方便了！&lt;br /&gt;詳細的操作列表(取自Google Reader首頁)：&lt;br /&gt;&lt;br /&gt;Tips and tricks&lt;br /&gt;&lt;br /&gt;Here are some useful keyboard shortcuts:&lt;br /&gt;&lt;br /&gt;    * j/k: next/previous item (下/上 一筆資料)&lt;br /&gt;    * space/&lt;Shift&gt; + space: next/previous item or page (下/上一筆資料或頁面)&lt;br /&gt;    * n/p: scan down/up (list only) (往下/往上移動，不會顯示內容)&lt;br /&gt;    * o/enter: expand/collapse (list only) (打開/收合)&lt;br /&gt;    * s: star item (給資料星號)&lt;br /&gt;    * &lt;Shift&gt; + s: share item (分享資料)&lt;br /&gt;    * v: view original (顯示完整內容，會開新視窗)&lt;br /&gt;    * t: tag item (給資料標籤)&lt;br /&gt;    * m: mark item as read (標記已閱讀)&lt;br /&gt;    * r: refresh (重新整理)&lt;br /&gt;    * u: toggle full screen mode (切換全螢幕模式)&lt;br /&gt;    * &lt;Shift&gt; + a: mark all as read (標記全部已經閱讀)&lt;br /&gt;    * 1: switch to expanded view (切換閱讀模式=&gt;全部打開的模式)&lt;br /&gt;    * 2: switch to list view (切換閱讀模式=&gt;標題列表模式)&lt;br /&gt;    * &lt;Shift&gt; + n/p: next/previous subscription (切換前/後一個訂閱)&lt;br /&gt;    * &lt;Shift&gt; + x: expand folder (展開資料夾)&lt;br /&gt;    * &lt;Shift&gt; + o: open subscription or folder (打開訂閱或者資料夾)&lt;br /&gt;# 底下是先按g再按其他按鍵&lt;br /&gt;    * g then h: go home (回到首頁)&lt;br /&gt;    * g then a: go to all items (回到All items)&lt;br /&gt;    * g then s: go to starred items (到被星號標記的資料列表)&lt;br /&gt;    * g then t: open tag selector (打開標籤選擇器)&lt;br /&gt;    * g then u: open subscription selector (打開訂閱選擇器)&lt;br /&gt;&lt;br /&gt;說真的，Google Reader真的很好用！不必安裝軟體、介面又乾淨，功能又齊全！&lt;br /&gt;首選的RSS Reader阿！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-116047813657489035?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/116047813657489035/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=116047813657489035' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/116047813657489035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/116047813657489035'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/10/google-reader.html' title='Google Reader小更新'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-116047351247446996</id><published>2006-10-10T17:43:00.000+08:00</published><updated>2006-10-10T17:45:12.583+08:00</updated><title type='text'>又是Ruby一行文... 畫出一張圖</title><content type='html'>請在命令提示字元或者虛擬終端機下執行以下指令(請記得安裝Ruby)&lt;br /&gt;&lt;br /&gt;ruby -e "32.times{|y|print\" \"*(31-y);(y+1).times{|x|print\" #{~y&amp;x==0?\"A\":\".\"}\"};puts}"&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-116047351247446996?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.wretch.cc/blog/cfcef&amp;article_id=8277604' title='又是Ruby一行文... 畫出一張圖'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/116047351247446996/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=116047351247446996' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/116047351247446996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/116047351247446996'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/10/ruby.html' title='又是Ruby一行文... 畫出一張圖'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-116047334787362686</id><published>2006-10-10T16:40:00.000+08:00</published><updated>2006-10-10T17:48:14.096+08:00</updated><title type='text'>Pool wretch.. XD</title><content type='html'>看看底下的圖片吧&lt;br/&gt;&lt;br /&gt;我不想多說XDDDDD&lt;br/&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;img src="http://xzd2.myweb.hinet.net/images/kusowretch.png" alt=""/&gt;&amp;nbsp;&lt;br/&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-116047334787362686?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.wretch.cc/blog/cfcef&amp;article_id=8276622' title='Pool wretch.. XD'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/116047334787362686/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=116047334787362686' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/116047334787362686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/116047334787362686'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/10/pool-wretch-xd.html' title='Pool wretch.. XD'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-116046917487518541</id><published>2006-10-10T16:32:00.000+08:00</published><updated>2006-10-10T16:32:57.463+08:00</updated><title type='text'>1.hours</title><content type='html'>我絕對沒有唬爛&lt;br /&gt;這件事情是真的&lt;br /&gt;如果你有裝Rails&lt;br /&gt;請開啟irb，依照下列步驟code&lt;br /&gt;&lt;br /&gt;irb(main):001:0&gt; require 'rubygems'&lt;br /&gt;=&gt; true&lt;br /&gt;irb(main):002:0&gt; require 'active_support'&lt;br /&gt;=&gt; true&lt;br /&gt;irb(main):003:0&gt; puts 1.hours&lt;br /&gt;3600&lt;br /&gt;=&gt; nil&lt;br /&gt;irb(main):004:0&gt; puts 1.minutes&lt;br /&gt;60&lt;br /&gt;=&gt; nil&lt;br /&gt;irb(main):005:0&gt; puts 1.seconds&lt;br /&gt;1&lt;br /&gt;=&gt; nil&lt;br /&gt;irb(main):006:0&gt; puts 1.years&lt;br /&gt;31557600&lt;br /&gt;=&gt; nil&lt;br /&gt;irb(main):007:0&gt; puts 1.days&lt;br /&gt;86400&lt;br /&gt;=&gt; nil&lt;br /&gt;irb(main):008:0&gt;&lt;br /&gt;&lt;br /&gt;該死&lt;br /&gt;這讓我回想起當初在寫PHP的Wretch Blog RSS Reader時，在判斷檔案建立時間的部份寫得多痛苦&lt;br /&gt;這麼直覺化的東西.. 就算會讓我腦殘我也要去用.. Orz&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-116046917487518541?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.wretch.cc/blog/cfcef&amp;article_id=8094112' title='1.hours'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/116046917487518541/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=116046917487518541' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/116046917487518541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/116046917487518541'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/10/1hours.html' title='1.hours'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-116046910050131924</id><published>2006-10-10T16:29:00.000+08:00</published><updated>2006-10-10T16:33:48.470+08:00</updated><title type='text'>Google Gadget for HEMiDEMi</title><content type='html'>葛力~ 葛力~ 葛力葛力葛力~ 好吃拉XD... 不對= ="&lt;br /&gt;各位Google Fans + 黑咪飯團重度愛好者們，現在HEMiDEMi推出Google Gadget拉！！！&lt;br /&gt;所以可以很方便的就在Google個人化首頁或者Google Desktop上使用喔！&lt;br /&gt;那說得這麼好聽，到底要怎樣加入呢？&lt;br /&gt;來來來，網址底加拉！！！&lt;br /&gt;&lt;a href="http://fusion.google.com/add?moduleurl=http://www.hemidemi.com/download/google/gadget/hemidemi.xml"&gt;請按此&lt;/a&gt;&lt;br /&gt;預設只會顯示3個書籤，請加入後按下編輯改成9個(最多只能9個了....)&lt;br /&gt;&lt;br /&gt;有任何問題記得回覆一下唷！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-116046910050131924?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.wretch.cc/blog/cfcef&amp;article_id=7854923' title='Google Gadget for HEMiDEMi'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/116046910050131924/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=116046910050131924' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/116046910050131924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/116046910050131924'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/10/google-gadget-for-hemidemi.html' title='Google Gadget for HEMiDEMi'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-115736977123896282</id><published>2006-09-04T19:34:00.000+08:00</published><updated>2006-09-04T19:36:11.603+08:00</updated><title type='text'>Hemidemi群組最新書籤 0.0.0.2 版</title><content type='html'>這次的這個版本，則是將 "最新書籤(整個網站)", "使用者最新書籤", "群組最新書籤" 3個合併囉&lt;br /&gt;也就是說，使用者只要下參數，就可以抓到資訊了！&lt;br /&gt;參數：&lt;br /&gt;&lt;br /&gt;$ ruby ./recent.rb [要抓的資訊] [要顯示的書籤量] [名稱]&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;* 整個程式省略掉參數的話，就是整個網站的最新書籤&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;要抓的資訊：&lt;br /&gt;   0: 整個網站的最新書籤&lt;br /&gt;  1: 使用者最新書籤&lt;br /&gt;  2: 群組最新書籤&lt;br /&gt;&lt;br /&gt;這個版本還沒有Method overload... 因此沒有辦法省略掉其中的幾個參數..&lt;br /&gt;未來版本會修正這個問題&lt;br /&gt;程式碼如下：&lt;br /&gt;&lt;br /&gt;#!/usr/bin/env ruby&lt;br /&gt;# Code by CFC &lt;at&gt; Zuso Security&lt;br /&gt;# # Taiwan Ruby Users Group: http://www.ruby.oss.tw/&lt;br /&gt;# # Rails Taiwan: http://www.rubyonrails.org.tw/&lt;br /&gt;#&lt;br /&gt;# Hemidemi bookmarks loader: Ver. 0.0.0.2 Beta&lt;br /&gt;#&lt;br /&gt;#==========&lt;br /&gt;#&lt;br /&gt;# 1. Recent: http://www.hemidemi.com/rss/bookmark/recent.xml&lt;br /&gt;# 2. User's recent: http://www.hemidemi.com/rss/user/#{@usr_name}/bookmark/recent.xml&lt;br /&gt;# 3. Group's recent: http://www.hemidemi.com/rss/group/#{@grp_name}/bookmark/recent.xml&lt;br /&gt;#&lt;br /&gt;#==========&lt;br /&gt;#&lt;br /&gt;&lt;br /&gt;require 'rexml/document'&lt;br /&gt;require 'open-uri'&lt;br /&gt;include REXML&lt;br /&gt;&lt;br /&gt;class Recent&lt;br /&gt;  def initialize(opt, count, name)&lt;br /&gt;    case opt.to_i&lt;br /&gt;      when 0&lt;br /&gt;        @url = "http://www.hemidemi.com/rss/bookmark/recent.xml"&lt;br /&gt;      when 1&lt;br /&gt;        @url = "http://www.hemidemi.com/rss/user/#{name}/bookmark/recent.xml"&lt;br /&gt;      when 2&lt;br /&gt;        @url = "http://www.hemidemi.com/rss/group/#{name}/bookmark/recent.xml"&lt;br /&gt;      else&lt;br /&gt;        @url = "http://www.hemidemi.com/rss/bookmark/recent.xml"&lt;br /&gt;    end&lt;br /&gt;    @channel = @channel || {}&lt;br /&gt;    @items = []&lt;br /&gt;    if count == nil&lt;br /&gt;      @count = 6&lt;br /&gt;    else&lt;br /&gt;      @count = count.to_i&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def run&lt;br /&gt;    load_in&lt;br /&gt;    show&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def load_in&lt;br /&gt;    open(@url) do |f|&lt;br /&gt;      xml = Document.new(f.read)&lt;br /&gt;&lt;br /&gt;      xml.elements.each("*/channel") do |chnl|&lt;br /&gt;        @channel["name"] = chnl.elements["description"].text&lt;br /&gt;        @channel["link"] = chnl.elements["link"].text&lt;br /&gt;      end&lt;br /&gt;&lt;br /&gt;      xml.elements.each("*/channel/item") do |item|&lt;br /&gt;        itm = {}&lt;br /&gt;        itm["title"] = item.elements["title"].text&lt;br /&gt;        itm["description"] = item.elements["description"].text&lt;br /&gt;        itm["link"] = item.elements["link"].text&lt;br /&gt;        itm["creator"] = item.elements["dc:creator"].text&lt;br /&gt;        @items &lt;&lt; itm&lt;br /&gt;      end&lt;br /&gt;    end&lt;br /&gt;  end&lt;br /&gt;&lt;br /&gt;  def show&lt;br /&gt;    line = "=" * 100&lt;br /&gt;    puts @url&lt;br /&gt;    puts line&lt;br /&gt;    puts "#{@channel["name"]} [ #{@channel["link"]} ]"&lt;br /&gt;    puts "共有#{@items.size}個書籤"&lt;br /&gt;    puts line&lt;br /&gt;    @count = @items.size if @items.size &lt; @count&lt;br /&gt;    @count.times { |cnt|&lt;br /&gt;      puts "張貼者：#{@items[cnt]["creator"]} [ http://www.hemidemi.com/user/#{@items[cnt]["creator"]}/home ]"&lt;br /&gt;      puts "標題：#{@items[cnt]["title"]}"&lt;br /&gt;      puts "網址：#{@items[cnt]["link"]}"&lt;br /&gt;      puts "敘述：#{@items[cnt]["description"]}"&lt;br /&gt;      puts "-"*10&lt;br /&gt;    }&lt;br /&gt;    puts line&lt;br /&gt;  end&lt;br /&gt;  public :run&lt;br /&gt;  private :load_in, :show&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;rss = Recent.new(ARGV[0], ARGV[1], ARGV[2])&lt;br /&gt;rss.run&lt;br /&gt;&lt;br /&gt;下載點：&lt;br /&gt;&lt;a href="http://stmail.tajen.edu.tw/~593092514/recent.rb"&gt;http://stmail.tajen.edu.tw/~593092514/recent.rb&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-115736977123896282?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/115736977123896282/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=115736977123896282' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115736977123896282'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115736977123896282'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/09/hemidemi-0002.html' title='Hemidemi群組最新書籤 0.0.0.2 版'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-115730847905391137</id><published>2006-09-04T02:33:00.000+08:00</published><updated>2006-10-10T17:47:04.956+08:00</updated><title type='text'>Hemidemi群組最新書籤 -- Console版</title><content type='html'>&lt;pre&gt;哇哇哇&lt;br /&gt;http://flickr.tw的站長推出這麼棒的Hemidemi hacking...&lt;br /&gt;只是小弟遜咖，沒辦法像他那樣&gt;"&lt; &lt;br /&gt;好吧.. 我只好寫個個人用的小工具  &lt;br /&gt;這個程式是適用於群組的，一般來說群組都會有最新書籤，而這個是將最新書籤印出來的.. &lt;br /&gt;程式只能跑在純文字模式下.. &lt;br /&gt;輕巧咩~另外網管如果沒有在管沒有X Window的主機時，也可以用這個拉！ &lt;br /&gt;Usage: $ ./grp_recent.rb group_name [count] &lt;br /&gt;Options:    * group_name: 沒錯！就是群組名稱！    &lt;br /&gt;                  * count: 可省略參數，用於顯示幾個書籤(從最新的開始算起，預設是6個) &lt;br /&gt;程式碼如下：&lt;/pre&gt; &lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby"&gt;&lt;span class="comment"&gt;#!/usr/bin/env ruby&lt;/span&gt;&lt;br /&gt;&lt;span class="comment"&gt;# Code by CFC &lt;at&gt; Zuso Security&lt;/at&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="comment"&gt;# Taiwan Ruby Users Group: http://www.ruby.oss.tw/&lt;/span&gt;&lt;br /&gt;&lt;span class="comment"&gt;# Rails Taiwan: http://www.rubyonrails.org.tw/&lt;/span&gt;&lt;br /&gt;&lt;span class="comment"&gt;#&lt;/span&gt;&lt;br /&gt;&lt;span class="ident"&gt;require&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;rexml/document&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="ident"&gt;require&lt;/span&gt; &lt;span class="punct"&gt;'&lt;/span&gt;&lt;span class="string"&gt;open-uri&lt;/span&gt;&lt;span class="punct"&gt;'&lt;/span&gt;&lt;br /&gt;&lt;span class="ident"&gt;include&lt;/span&gt; &lt;span class="constant"&gt;REXML&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;Recent&lt;/span&gt;&lt;br /&gt;&lt;span class="ident"&gt;attr_accessor&lt;/span&gt; &lt;span class="symbol"&gt;:grp_name&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="symbol"&gt;:channel&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="symbol"&gt;:items&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;initialize&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;grp_name&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="ident"&gt;count&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;&lt;br /&gt;  &lt;span class="attribute"&gt;@grp_name&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;grp_name&lt;/span&gt;&lt;br /&gt;  &lt;span class="attribute"&gt;@url&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;"&lt;/span&gt;&lt;span class="string"&gt;http://www.hemidemi.com/rss/group/&lt;span class="expr"&gt;#{@grp_name}&lt;/span&gt;/bookmark/recent.xml&lt;/span&gt;&lt;span class="punct"&gt;"&lt;/span&gt;&lt;br /&gt;  &lt;span class="attribute"&gt;@channel&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="attribute"&gt;@channel&lt;/span&gt; &lt;span class="punct"&gt;||&lt;/span&gt; &lt;span class="punct"&gt;{}&lt;/span&gt;&lt;br /&gt;  &lt;span class="attribute"&gt;@items&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;[]&lt;/span&gt;&lt;br /&gt;  &lt;span class="keyword"&gt;if&lt;/span&gt; &lt;span class="ident"&gt;count&lt;/span&gt; &lt;span class="punct"&gt;==&lt;/span&gt; &lt;span class="constant"&gt;nil&lt;/span&gt;&lt;br /&gt;    &lt;span class="attribute"&gt;@count&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="number"&gt;6&lt;/span&gt;&lt;br /&gt;  &lt;span class="keyword"&gt;else&lt;/span&gt;&lt;br /&gt;    &lt;span class="attribute"&gt;@count&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;count&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;to_i&lt;/span&gt;&lt;br /&gt;  &lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;run&lt;/span&gt;&lt;br /&gt;  &lt;span class="ident"&gt;load_in&lt;/span&gt;&lt;br /&gt;  &lt;span class="ident"&gt;show&lt;/span&gt;&lt;br /&gt;&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;load_in&lt;/span&gt;&lt;br /&gt;  &lt;span class="ident"&gt;open&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="attribute"&gt;@url&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;f&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;&lt;br /&gt;    &lt;span class="ident"&gt;xml&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Document&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;new&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="ident"&gt;f&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;read&lt;/span&gt;&lt;span class="punct"&gt;)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="ident"&gt;xml&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;elements&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;each&lt;/span&gt;&lt;span class="punct"&gt;("&lt;/span&gt;&lt;span class="string"&gt;*/channel&lt;/span&gt;&lt;span class="punct"&gt;")&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;chnl&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;&lt;br /&gt;      &lt;span class="attribute"&gt;@channel&lt;/span&gt;&lt;span class="punct"&gt;["&lt;/span&gt;&lt;span class="string"&gt;name&lt;/span&gt;&lt;span class="punct"&gt;"]&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;chnl&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;elements&lt;/span&gt;&lt;span class="punct"&gt;["&lt;/span&gt;&lt;span class="string"&gt;description&lt;/span&gt;&lt;span class="punct"&gt;"].&lt;/span&gt;&lt;span class="ident"&gt;text&lt;/span&gt;&lt;br /&gt;      &lt;span class="attribute"&gt;@channel&lt;/span&gt;&lt;span class="punct"&gt;["&lt;/span&gt;&lt;span class="string"&gt;link&lt;/span&gt;&lt;span class="punct"&gt;"]&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;chnl&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;elements&lt;/span&gt;&lt;span class="punct"&gt;["&lt;/span&gt;&lt;span class="string"&gt;link&lt;/span&gt;&lt;span class="punct"&gt;"].&lt;/span&gt;&lt;span class="ident"&gt;text&lt;/span&gt;&lt;br /&gt;    &lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="ident"&gt;xml&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;elements&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;each&lt;/span&gt;&lt;span class="punct"&gt;("&lt;/span&gt;&lt;span class="string"&gt;*/channel/item&lt;/span&gt;&lt;span class="punct"&gt;")&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;item&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;&lt;br /&gt;      &lt;span class="ident"&gt;itm&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="punct"&gt;{}&lt;/span&gt;&lt;br /&gt;      &lt;span class="ident"&gt;itm&lt;/span&gt;&lt;span class="punct"&gt;["&lt;/span&gt;&lt;span class="string"&gt;title&lt;/span&gt;&lt;span class="punct"&gt;"]&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;item&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;elements&lt;/span&gt;&lt;span class="punct"&gt;["&lt;/span&gt;&lt;span class="string"&gt;title&lt;/span&gt;&lt;span class="punct"&gt;"].&lt;/span&gt;&lt;span class="ident"&gt;text&lt;/span&gt;&lt;br /&gt;      &lt;span class="ident"&gt;itm&lt;/span&gt;&lt;span class="punct"&gt;["&lt;/span&gt;&lt;span class="string"&gt;description&lt;/span&gt;&lt;span class="punct"&gt;"]&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;item&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;elements&lt;/span&gt;&lt;span class="punct"&gt;["&lt;/span&gt;&lt;span class="string"&gt;description&lt;/span&gt;&lt;span class="punct"&gt;"].&lt;/span&gt;&lt;span class="ident"&gt;text&lt;/span&gt;&lt;br /&gt;      &lt;span class="ident"&gt;itm&lt;/span&gt;&lt;span class="punct"&gt;["&lt;/span&gt;&lt;span class="string"&gt;link&lt;/span&gt;&lt;span class="punct"&gt;"]&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;item&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;elements&lt;/span&gt;&lt;span class="punct"&gt;["&lt;/span&gt;&lt;span class="string"&gt;link&lt;/span&gt;&lt;span class="punct"&gt;"].&lt;/span&gt;&lt;span class="ident"&gt;text&lt;/span&gt;&lt;br /&gt;      &lt;span class="ident"&gt;itm&lt;/span&gt;&lt;span class="punct"&gt;["&lt;/span&gt;&lt;span class="string"&gt;creator&lt;/span&gt;&lt;span class="punct"&gt;"]&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="ident"&gt;item&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;elements&lt;/span&gt;&lt;span class="punct"&gt;["&lt;/span&gt;&lt;span class="string"&gt;dc:creator&lt;/span&gt;&lt;span class="punct"&gt;"].&lt;/span&gt;&lt;span class="ident"&gt;text&lt;/span&gt;&lt;br /&gt;      &lt;span class="attribute"&gt;@items&lt;/span&gt; &lt;span class="punct"&gt;&lt;&lt;&lt;/span&gt; &lt;span class="ident"&gt;itm&lt;/span&gt;&lt;br /&gt;    &lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;  &lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;show&lt;/span&gt;&lt;br /&gt;  &lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="punct"&gt;"&lt;/span&gt;&lt;span class="string"&gt;=&lt;/span&gt;&lt;span class="punct"&gt;"*&lt;/span&gt;&lt;span class="number"&gt;10&lt;/span&gt;&lt;br /&gt;  &lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="punct"&gt;"&lt;/span&gt;&lt;span class="string"&gt;群組：&lt;span class="expr"&gt;#{@channel["name"]}&lt;/span&gt; [ &lt;span class="expr"&gt;#{@channel["link"]}&lt;/span&gt; ]&lt;/span&gt;&lt;span class="punct"&gt;"&lt;/span&gt;&lt;br /&gt;  &lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="punct"&gt;"&lt;/span&gt;&lt;span class="string"&gt;共有&lt;span class="expr"&gt;#{@items.size}&lt;/span&gt;個書籤&lt;/span&gt;&lt;span class="punct"&gt;"&lt;/span&gt;&lt;br /&gt;  &lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="punct"&gt;"&lt;/span&gt;&lt;span class="string"&gt;=&lt;/span&gt;&lt;span class="punct"&gt;"*&lt;/span&gt;&lt;span class="number"&gt;10&lt;/span&gt;&lt;br /&gt;  &lt;span class="attribute"&gt;@count&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="attribute"&gt;@items&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;size&lt;/span&gt; &lt;span class="keyword"&gt;if&lt;/span&gt; &lt;span class="attribute"&gt;@items&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;size&lt;/span&gt; &lt;span class="punct"&gt;&lt;&lt;/span&gt; &lt;span class="attribute"&gt;@count&lt;/span&gt;&lt;br /&gt;  &lt;span class="attribute"&gt;@count&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;times&lt;/span&gt; &lt;span class="punct"&gt;{&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;cnt&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;&lt;br /&gt;    &lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="punct"&gt;"&lt;/span&gt;&lt;span class="string"&gt;張貼者：&lt;span class="expr"&gt;#{@items[cnt]["creator"]}&lt;/span&gt; [ http://www.hemidemi.com/user/&lt;span class="expr"&gt;#{@items[cnt]["creator"]}&lt;/span&gt;/home ]&lt;/span&gt;&lt;span class="punct"&gt;"&lt;/span&gt;&lt;br /&gt;    &lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="punct"&gt;"&lt;/span&gt;&lt;span class="string"&gt;標題：&lt;span class="expr"&gt;#{@items[cnt]["title"]}&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;"&lt;/span&gt;&lt;br /&gt;    &lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="punct"&gt;"&lt;/span&gt;&lt;span class="string"&gt;網址：&lt;span class="expr"&gt;#{@items[cnt]["link"]}&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;"&lt;/span&gt;&lt;br /&gt;    &lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="punct"&gt;"&lt;/span&gt;&lt;span class="string"&gt;敘述：&lt;span class="expr"&gt;#{@items[cnt]["description"]}&lt;/span&gt;&lt;/span&gt;&lt;span class="punct"&gt;"&lt;/span&gt;&lt;br /&gt;    &lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="punct"&gt;"&lt;/span&gt;&lt;span class="string"&gt;*&lt;/span&gt;&lt;span class="punct"&gt;"*&lt;/span&gt;&lt;span class="number"&gt;10&lt;/span&gt;&lt;br /&gt;  &lt;span class="punct"&gt;}&lt;/span&gt;&lt;br /&gt;  &lt;span class="ident"&gt;puts&lt;/span&gt; &lt;span class="punct"&gt;"&lt;/span&gt;&lt;span class="string"&gt;=&lt;/span&gt;&lt;span class="punct"&gt;"*&lt;/span&gt;&lt;span class="number"&gt;10&lt;/span&gt;&lt;br /&gt;&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span class="ident"&gt;public&lt;/span&gt; &lt;span class="symbol"&gt;:run&lt;/span&gt;&lt;br /&gt;&lt;span class="ident"&gt;private&lt;/span&gt; &lt;span class="symbol"&gt;:load_in&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="symbol"&gt;:show&lt;/span&gt;&lt;br /&gt;&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="ident"&gt;rss&lt;/span&gt; &lt;span class="punct"&gt;=&lt;/span&gt; &lt;span class="constant"&gt;Recent&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;new&lt;/span&gt;&lt;span class="punct"&gt;(&lt;/span&gt;&lt;span class="constant"&gt;ARGV&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="number"&gt;0&lt;/span&gt;&lt;span class="punct"&gt;],&lt;/span&gt; &lt;span class="constant"&gt;ARGV&lt;/span&gt;&lt;span class="punct"&gt;[&lt;/span&gt;&lt;span class="number"&gt;1&lt;/span&gt;&lt;span class="punct"&gt;])&lt;/span&gt;&lt;br /&gt;&lt;span class="ident"&gt;rss&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;run&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;   &lt;p&gt;下載點：&lt;a href="http://stmail.tajen.edu.tw/http://stmail.tajen.edu.tw/%7E593092514/grp_recent.rb"&gt;http://stmail.tajen.edu.tw/~593092514/grp_recent.rb&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-115730847905391137?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/115730847905391137/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=115730847905391137' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115730847905391137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115730847905391137'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/09/hemidemi-console.html' title='Hemidemi群組最新書籤 -- Console版'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-115637257942554039</id><published>2006-08-24T06:35:00.000+08:00</published><updated>2006-08-24T06:36:19.436+08:00</updated><title type='text'>Rails + AJAX範例</title><content type='html'>這網站看起來真不錯:P&lt;br /&gt;網址：&lt;a href="http://demo.script.aculo.us/"&gt;http://demo.script.aculo.us/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;裏面有幾個不錯的Demo&lt;br /&gt;而且都有釋出原始碼&lt;br /&gt;&lt;br /&gt;用Rails真的很快Orz..&lt;br /&gt;像是第一個範例&lt;br /&gt;&lt;a href="http://demo.script.aculo.us/ajax/autocompleter"&gt;Autocompleting text fields (basic)&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;程式碼兩行(一行在view，一行是controller)就搞定&lt;br /&gt;&lt;br /&gt;第二個也是扯&lt;br /&gt;上面&lt;br /&gt;To:那邊輸入A&lt;br /&gt;CC:輸入B&lt;br /&gt;輸入一個字後先等著不要離開，它就會出現suggestion了..&lt;br /&gt;&lt;br /&gt;hmmm... 真是好玩！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-115637257942554039?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/115637257942554039/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=115637257942554039' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115637257942554039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115637257942554039'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/08/rails-ajax.html' title='Rails + AJAX範例'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-115624486472878156</id><published>2006-08-22T19:07:00.000+08:00</published><updated>2006-08-22T19:07:44.743+08:00</updated><title type='text'>Ubuntu -- 更新系統後進不去X Window</title><content type='html'>早上要去學校前，更新了一下xserver-xorg-core&lt;br /&gt;剛回到家發現.. X進不去了!?&lt;br /&gt;怪.. 用laptop上IRC後發現也有其他人這樣&lt;br /&gt;卻不知道是那邊出問題..&lt;br /&gt;上了論壇，一樣有這問題的求助文章&lt;br /&gt;上去Cn那邊.. 也是有.. 可是都沒有解答&lt;br /&gt;好吧.. 去美國看看&lt;br /&gt;看完後，找到解決方案... 底下是步驟&lt;br /&gt;&lt;br /&gt;根據以下指令動作&lt;br /&gt;wget -c http://people.ubuntu.com/~rodarvus/packages/dapper/xorg-server/xserver-xorg-core_1.0.2-0ubuntu10.4_i386.deb&lt;br /&gt;wget -c http://people.ubuntu.com/~rodarvus/packages/dapper/xorg-server/xserver-xorg-dev_1.0.2-0ubuntu10.4_i386.deb&lt;br /&gt;抓完後，請下 dpkg -i xserver-xorg*&lt;br /&gt;如果說，xserver-xorg-dev安裝失敗也沒關係&lt;br /&gt;我想應該沒有什麼影響&lt;br /&gt;然後裝好後就可以 sudo /etc/init.d/gdm restart&lt;br /&gt;接著就可以進去X了！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-115624486472878156?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/115624486472878156/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=115624486472878156' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115624486472878156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115624486472878156'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/08/ubuntu-x-window.html' title='Ubuntu -- 更新系統後進不去X Window'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-115615673966379353</id><published>2006-08-21T18:34:00.000+08:00</published><updated>2006-10-20T22:05:20.970+08:00</updated><title type='text'>如何進去網站後就轉到指定的Controller?</title><content type='html'>嗯.. 關於這點..&lt;br /&gt;呵~cookoo大哥先在這邊謝過拉XD&lt;br /&gt;雖然你忘記要作最後一個動作...&lt;br /&gt;&lt;br /&gt;ok...&lt;br /&gt;&lt;ol&gt;&lt;li&gt;edit config/routes.rb&lt;/li&gt;&lt;li&gt;add map.connect '', :controller =&gt; "ctrl_name"&lt;/li&gt;&lt;li&gt;save it and remove or rename public/index.html&lt;/li&gt;&lt;/ol&gt;cookoo大哥忘記說哪一點呢？&lt;br /&gt;沒錯...&lt;br /&gt;第三點="=&lt;br /&gt;&lt;br /&gt;害我昨天測試了老半天阿阿阿阿阿阿阿阿阿！！！！！！！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-115615673966379353?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/115615673966379353/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=115615673966379353' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115615673966379353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115615673966379353'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/08/controller.html' title='如何進去網站後就轉到指定的Controller?'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-115555747593879556</id><published>2006-08-14T20:10:00.000+08:00</published><updated>2006-09-06T18:31:26.913+08:00</updated><title type='text'>set_primary_key</title><content type='html'>在Rails，如果你想要使用自訂的Primary Key Name(主鍵)的話(如果你用Migrate產生，預設就會建立一個叫作id的主鍵)可以使用set_primary_key&lt;br /&gt;set_primary_key好像還要搭配set_table_name使用，不然會出錯！&lt;br /&gt;因為我在作補習班網站的案子時，僅僅加入set_primary_key就出錯，加上set_table_name才正常，因此我想set_primary_key一定要有set_table_name的輔助吧？不過反之我想應該不同！&lt;br /&gt;請在Model裏面編輯&lt;br /&gt;set_table_name “tbl_name”&lt;br /&gt;set_primary_key “pk_name&lt;br /&gt;但是請注意！如果自訂Primary Key的話，在編輯的欄位內請不要讓那個欄位可以編輯！假設我...&lt;br /&gt;  set_table_name "people"&lt;br /&gt;  set_primary_key "uid"&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;&lt;/span&gt;此時就別讓uid可以編輯，像是出現：&lt;br /&gt;  &lt;%= text_field "person", "uid" %&gt;&lt;span style="font-family: monospace;"&gt;&lt;br /&gt;&lt;/span&gt;這樣會產生錯誤！&lt;br /&gt;詳情可以參考：&lt;br /&gt;Agile Web Development with Rails書中第14章第三節的部份，雖然繼續使用uid還是可以的，但是會比較麻煩點！&lt;br /&gt;而該節最後一句話：When you need to set the primary key, use id. At all other times, use the actual column&lt;br /&gt;感謝China on Rails群組中的darren.hoo！&lt;br /&gt;相關討論請看：&lt;br /&gt;&lt;a href="http://groups.google.com/group/rubyonrails/browse_thread/thread/261eab14be97a900/"&gt;Ruby on Rails on Google Groups&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-115555747593879556?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://cfc.zuso.tw/articles/2006/08/14/set_primary_key' title='set_primary_key'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/115555747593879556/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=115555747593879556' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115555747593879556'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115555747593879556'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/08/setprimarykey.html' title='set_primary_key'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-115487604797340934</id><published>2006-08-06T22:52:00.000+08:00</published><updated>2006-08-28T02:34:15.936+08:00</updated><title type='text'>"Getting Real" 到底想要告訴我們甚麼?</title><content type='html'>&lt;p&gt;&lt;a href="http://86915.hostmyapplications.com/articles/2006/06/09/getting-real-%E5%88%B0%E5%BA%95%E6%83%B3%E8%A6%81%E5%91%8A%E8%A8%B4%E6%88%91%E5%80%91%E7%94%9A%E9%BA%BC" target="_blank"&gt;文章引用至&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;a tip="Getting Real" href="https://gettingreal.37signals.com/"&gt;Getting Real&lt;/a&gt; 是 37signals 最近出版的一本電子書, 內容探討開發 web application 的方法及經營策略. 蠻顛覆一般傳統軟體工程所學的. 聽說已經賣了 6000 多本, 大家當做求取新知看看吧!&lt;/p&gt;    &lt;p&gt;大致把書上 Table of Content 放上來, 相信看完後你們會有一些新想法!&lt;/p&gt;  &lt;ol&gt;&lt;li&gt;起跑線  &lt;ul&gt;&lt;li&gt;Build Less(少功能, 少人開發, 少廣告…), 了解你的問題? 自己投資&lt;/li&gt;&lt;li&gt;要在時間及預算內完成, 些許的彈性(減少你的功能)&lt;/li&gt;&lt;li&gt;找個敵人給自己. 不要把它當雜務事&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;保持苗條  &lt;ul&gt;&lt;li&gt;越是苗條越容易改變, 不要混亂. 降低你的變動成本&lt;/li&gt;&lt;li&gt;只要 3 個員工就可開始(RD, designer, sweeper)&lt;/li&gt;&lt;li&gt;要能接受限制, 你的計畫就不會失控, 還有就是樂於當你自己&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Priorities  &lt;ul&gt;&lt;li&gt;What’s the Big Idea, 忽略細節吧&lt;/li&gt;&lt;li&gt;It’s a Problem When It’s a Problem&lt;/li&gt;&lt;li&gt;Hire the Right Customers, 慢慢擴充, 做個堅持己見的計畫&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Feature Selection  &lt;ul&gt;&lt;li&gt;一半就夠了, 但要好的那一半&lt;/li&gt;&lt;li&gt;開始說 “No”, 你處理的來嗎?, 讓使用者自己想解決方案, 忘記 Feature Requests 吧!&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Process  &lt;ul&gt;&lt;li&gt;開始寫程式及 demo 結果, 反覆的修正更改, 開始把想法寫出來, 不要有 “設定/Preference” 功能, &lt;/li&gt;&lt;li&gt;“完成啦”, 直接進入網路世界測試&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;組織運作  &lt;ul&gt;&lt;li&gt;Unity, 要有單獨(不被打擾)的時間&lt;/li&gt;&lt;li&gt;開會絕對是毒蘋果, 慶祝你計畫上可能的小小勝利&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;員工  &lt;ul&gt;&lt;li&gt;僱用少一點人或晚一點開始雇人&lt;/li&gt;&lt;li&gt;做事而不是高談, 不要掩飾你的熱情&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;使用者介面設計  &lt;ul&gt;&lt;li&gt;一切從使用者介面開始, 從中心畫面開始往外&lt;/li&gt;&lt;li&gt;要考慮正常使用, 新增時空白及錯誤時的畫面, 要有一致性&lt;/li&gt;&lt;li&gt;使用者介面才是你的著作權&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;寫程式  &lt;ul&gt;&lt;li&gt;用少少的軟體(可以依賴 opensouce), 快樂至上, 讓程式自己說話, &lt;/li&gt;&lt;li&gt;你寫的程式可能是負債, 要小心謹慎&lt;/li&gt;&lt;li&gt;讓資料可以透過 &lt;span class="caps"&gt;RSS&lt;/span&gt;, API 和世界連結&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Words  &lt;ul&gt;&lt;li&gt;沒有 Functional Spec&lt;/li&gt;&lt;li&gt;不要寫常常過期又沒用的文件, &lt;/li&gt;&lt;li&gt;Tell Me a Quick Story, 給你的計畫命個名&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Pricing and Signup  &lt;ul&gt;&lt;li&gt;免費使用, 使用者容易加入及取消&lt;/li&gt;&lt;li&gt;Silly Rabbit, Tricks are for Kids&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Promotion  &lt;ul&gt;&lt;li&gt;Hollywood Launch, 建立一個網站能介紹你的產品&lt;/li&gt;&lt;li&gt;利用 Blog 的力量, 早早提供一些消息吸引大眾, 追蹤你程式內 log&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Support  &lt;ul&gt;&lt;li&gt;讓開發人員感受 Support 的痛苦, 免訓練即可用(也不用 manual, 只要有 online help &amp;amp; &lt;span class="caps"&gt;FAQ&lt;/span&gt;)&lt;/li&gt;&lt;li&gt;快速回答問題, 不用害怕跟客戶說 “No” &lt;/li&gt;&lt;li&gt;善用 Forum&lt;/li&gt;&lt;/ul&gt;  &lt;/li&gt;&lt;li&gt;Post-Launch  &lt;ul&gt;&lt;li&gt;每月可以調整一下程式, Keep the Posts Coming, 讓程式更好而不是 Beta&lt;/li&gt;&lt;li&gt;所有 Bugs 要分輕重緩急, Ride Out the Storm, Keep Up With the Joneses, Beware the Bloat Monster, Go With the Flow&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ol&gt;      &lt;p&gt;軟 體/網站人員應該對這些新看法覺得蠻有趣的, 看到專案市場常常有人在抱怨, 但有一些人已經開始採取另外的作法. 不像現在軟體公司養那麼多人, 都快要進入恐龍級了, 為了獲利只得外包到人工便宜的地方, 不然就是壟斷那塊市場, 或許他們是因為網路公司的背景, 讓他們有如此不同的看法吧! 這些理念及經營手法多少可以從 37signals 及一些新興的 web 2.0 網站看出來&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-115487604797340934?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/115487604797340934/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=115487604797340934' title='1 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115487604797340934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115487604797340934'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/08/getting-real.html' title='&quot;Getting Real&quot; 到底想要告訴我們甚麼?'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-115483913781028963</id><published>2006-08-06T09:54:00.000+08:00</published><updated>2006-09-22T12:57:34.963+08:00</updated><title type='text'>讓Ubuntu上網速度加快</title><content type='html'>我想大家都知道上網時，電腦會透過DNS要求遠端IP&lt;br /&gt;拿到IP後才可以進行連線&lt;br /&gt;而通常連線到DNS的這段時間其實是可以不需要的&lt;br /&gt;只要自己的主機架設DNS，或者在/etc/hosts上手動設定網域名稱跟IP&lt;br /&gt;就可以加快網路速度！&lt;br /&gt;可是，手動設定網域名稱跟IP不是每個人都會，而且設定繁瑣，更新困難&lt;br /&gt;乾脆就裝個輕便型的DNS吧:P&lt;br /&gt;&lt;br /&gt;$ sudo apt-get install dnsmasq&lt;br /&gt;&lt;br /&gt;$ sudo vim /etc/dnsmasq.conf&lt;br /&gt;&lt;br /&gt;把listen-address=127.0.0.1&lt;br /&gt;弄好後存檔離開&lt;br /&gt;&lt;br /&gt;接著設定dhclient.conf&lt;br /&gt;&lt;br /&gt;$ sudo vim /etc/dhcp3/dhclient.conf&lt;br /&gt;&lt;br /&gt;確定這幾行的樣子是跟以下一樣：&lt;br /&gt;&lt;br /&gt;&lt;code&gt; #supersede domain-name "fugue.com home.vix.com";&lt;br /&gt;prepend domain-name-servers 127.0.0.1;&lt;br /&gt;request subnet-mask, broadcast-address, time-offset, routers,&lt;br /&gt;      domain-name, domain-name-servers, host-name,&lt;br /&gt;      netbios-name-servers, netbios-scope;&lt;br /&gt;&lt;br /&gt;尤其是&lt;span style="color: rgb(51, 102, 255);"&gt;prepend domain-name-servers 127.0.0.1;&lt;/span&gt;這行，這行如果是註解就請去掉。&lt;br /&gt;存檔離開&lt;br /&gt;&lt;br /&gt;打開/etc/resolv.conf吧&lt;br /&gt;&lt;br /&gt;在nameserver的第一行加上自己主機&lt;br /&gt;存檔離開後就可以restart dnsmasq&lt;br /&gt;$ sudo /etc/init.d/dnsmasq restart&lt;br /&gt;&lt;br /&gt;OK，來試試看是否正常運行&lt;br /&gt;&lt;br /&gt;$ dig google.com&lt;br /&gt;看看Query time&lt;br /&gt;第一次可能會超過10&lt;br /&gt;第二次試試看，應該不會超過3 :)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;如果你是xDSL使用者，可以參考下面的其他設定&lt;br /&gt;打開/etc/dnsmasq.conf&lt;br /&gt;尋找&lt;br /&gt;#resolv-file=&lt;br /&gt;註解取消，加上&lt;br /&gt;/etc/resolv.dnsmasq.conf&lt;br /&gt;&lt;br /&gt;存檔離開後把/etc/resolv.conf複製一份，路徑名稱是：/etc/resolv.dnsmasq.conf&lt;br /&gt;&lt;br /&gt;編輯/etc/resolv.conf&lt;br /&gt;確定檔案內只有一行&lt;br /&gt;nameserver 127.0.0.1&lt;br /&gt;&lt;br /&gt;存檔離開，修改/etc/ppp/peers/dsl-provider&lt;br /&gt;把usepeerdns給註解掉&lt;br /&gt;&lt;br /&gt;OK~ 成功!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-115483913781028963?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://ubuntu.wordpress.com/2006/08/02/local-dns-cache-for-faster-browsing/' title='讓Ubuntu上網速度加快'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/115483913781028963/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=115483913781028963' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115483913781028963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115483913781028963'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/08/ubuntu.html' title='讓Ubuntu上網速度加快'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-115443562394457232</id><published>2006-08-01T20:32:00.000+08:00</published><updated>2006-08-02T17:07:25.506+08:00</updated><title type='text'>工具發佈: CharArray</title><content type='html'>呼.. 為了EasyURL，剛剛花了點時間自己搞了個產生亂碼的程式&lt;br /&gt;程式碼在&lt;a href="http://blog.cfc.zuso.tw/pages/chararray"&gt;這邊&lt;/a&gt;&lt;br /&gt;想看的請用Shift + 左鍵點選(或者右鍵開新視窗；如果是Firefox使用者建議使用”用新分頁開啟”)&lt;br /&gt;&lt;span style="font-family: monospace;"&gt;class CA&lt;br /&gt;  def generate times=1&lt;br /&gt;    times = 1 if times &lt;= 0&lt;br /&gt;    return (1..times.to_i).to_a.collect{|x| (('a'..'z').to_a+('A'..'Z').to_a+('0'..'9').to_a)[rand(62)]}.join &lt;br /&gt;  end&lt;br /&gt; &lt;br /&gt;  def gen times=1&lt;br /&gt;    generate times&lt;br /&gt;  end&lt;br /&gt;end&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: monospace;"&gt;程式碼修正：&lt;br /&gt;心得：被GSR用一行嗆明.. 我真的該檢討&gt;"&lt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-115443562394457232?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.cfc.zuso.tw/articles/2006/08/01/chararray' title='工具發佈: CharArray'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/115443562394457232/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=115443562394457232' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115443562394457232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115443562394457232'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/08/chararray.html' title='工具發佈: CharArray'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-115434709187234634</id><published>2006-07-31T19:57:00.000+08:00</published><updated>2006-10-20T21:57:38.103+08:00</updated><title type='text'>Ajax Scaffold -- 真是帥阿</title><content type='html'>昨晚在逛&lt;a href="http://www.railscn.com/" title="RailsCN" target="_blank"&gt;Railscn&lt;/a&gt;時看到AJAX Scaffold&lt;br /&gt;當時在想：”AJAX腳手架？不會吧… ” 看過Rails的scaffold後感覺到真的很恐怖&lt;br /&gt;因此就在想… 該不會真的這麼棒？只要幾個步驟就可以搞定了嗎？&lt;br /&gt;點進去後，發現只要五個步驟就可以搞定… “嘿！挺有趣的說！”&lt;br /&gt;網址是：&lt;br /&gt; &lt;ul&gt;&lt;li&gt;&lt;a href="http://jooto.com/blog/index.php/2006/07/26/build-rails-driven-turbo-ajax-web-site-in-five-easy-steps/"&gt;教學步驟&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://rubyforge.org/frs/?group_id=1145&amp;release_id=6052"&gt;Ajax Scaffold Generator下載&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.railscn.com/viewtopic.php?t=1413"&gt;Railscn上的文章&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;    &lt;p&gt;我簡單的寫個步驟好了…&lt;/p&gt;   1. 當然是先建立一個Rails專案拉！記得要去設定config/database.yml  &lt;ul&gt;&lt;li&gt;rails ajax&lt;/li&gt;&lt;/ul&gt;   2. 產生一個model  &lt;ul&gt;&lt;li&gt;script/generate model member&lt;/li&gt;&lt;/ul&gt;   3. 編輯db/migrate/001_create_members.rb  &lt;ul&gt;&lt;li&gt;請根據下面去修改   &lt;div class="typocode"&gt;&lt;pre&gt;&lt;code class="typocode_ruby"&gt;&lt;span class="keyword"&gt;class &lt;/span&gt;&lt;span class="class"&gt;CreateMembers&lt;/span&gt; &lt;span class="punct"&gt;&lt;&lt;/span&gt; &lt;span class="constant"&gt;ActiveRecord&lt;/span&gt;&lt;span class="punct"&gt;::&lt;/span&gt;&lt;span class="constant"&gt;Migration&lt;/span&gt;&lt;br /&gt; &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;self.up&lt;/span&gt;&lt;br /&gt;   &lt;span class="ident"&gt;create_&lt;/span&gt; &lt;span class="ident"&gt;table&lt;/span&gt; &lt;span class="symbol"&gt;:members&lt;/span&gt; &lt;span class="keyword"&gt;do&lt;/span&gt; &lt;span class="punct"&gt;|&lt;/span&gt;&lt;span class="ident"&gt;t&lt;/span&gt;&lt;span class="punct"&gt;|&lt;/span&gt;&lt;br /&gt;     &lt;span class="ident"&gt;t&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;column&lt;/span&gt; &lt;span class="symbol"&gt;:name&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="symbol"&gt;:string&lt;/span&gt;&lt;br /&gt;     &lt;span class="ident"&gt;t&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;column&lt;/span&gt; &lt;span class="symbol"&gt;:email&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="symbol"&gt;:string&lt;/span&gt;&lt;br /&gt;     &lt;span class="ident"&gt;t&lt;/span&gt;&lt;span class="punct"&gt;.&lt;/span&gt;&lt;span class="ident"&gt;column&lt;/span&gt; &lt;span class="symbol"&gt;:address&lt;/span&gt;&lt;span class="punct"&gt;,&lt;/span&gt; &lt;span class="symbol"&gt;:string&lt;/span&gt;&lt;br /&gt;   &lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt; &lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt; &lt;span class="keyword"&gt;def &lt;/span&gt;&lt;span class="method"&gt;self.down&lt;/span&gt;&lt;br /&gt;   &lt;span class="ident"&gt;drop&lt;/span&gt; &lt;span class="ident"&gt;table&lt;/span&gt; &lt;span class="symbol"&gt;:members&lt;/span&gt;&lt;br /&gt; &lt;span class="keyword"&gt;end&lt;/span&gt;&lt;br /&gt;&lt;span class="keyword"&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;&lt;/ul&gt;   4. 好！開始rake migrate  &lt;ul&gt;&lt;li&gt;rake migrate&lt;/li&gt;&lt;/ul&gt;   5.  產生AJAX Scaffold  &lt;ul&gt;&lt;li&gt;script/generate ajax_scaffold member&lt;/li&gt;&lt;/ul&gt;    &lt;p&gt;好拉！去看看吧！&lt;/p&gt;    &lt;p&gt;&lt;i&gt;script/server -p 3000&lt;/i&gt;&lt;/p&gt;    &lt;p&gt;http://localhost:3000/members&lt;/p&gt;    &lt;p&gt;哈哈！&lt;br /&gt;在&lt;a href="http://cfc.zuso.tw:30000/members" title="Members" target="_blank"&gt;這邊&lt;/a&gt;可以看到範例&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-115434709187234634?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/115434709187234634/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=115434709187234634' title='2 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115434709187234634'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115434709187234634'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/07/ajax-scaffold.html' title='Ajax Scaffold -- 真是帥阿'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-115410054783859120</id><published>2006-07-28T23:28:00.000+08:00</published><updated>2006-07-28T23:29:07.853+08:00</updated><title type='text'>嗯.. 第二個Rails程式完成 -- Bookmanager</title><content type='html'>哇呼.. 雛形是出來了&lt;br /&gt;版面不能看(！)&lt;br /&gt;&lt;br /&gt;大致上是還好&lt;br /&gt;在開發的過程中，沒有遇到太大的問題&lt;br /&gt;而且在這次開發的過程中我又釐清了很多東西&lt;br /&gt;對Rails的操控又更加熟悉了&lt;br /&gt;&lt;br /&gt;其實Rails的開發真的很簡單&lt;br /&gt;一個rails project建立好後&lt;br /&gt;修改config&lt;br /&gt;建立Controller&lt;br /&gt;連去Database建立Schema、Tables&lt;br /&gt;建立Model&lt;br /&gt;使用Scaffold&lt;br /&gt;OK~ 基本的東西出來了&lt;br /&gt;&lt;br /&gt;接著再修改一些東西&lt;br /&gt;還有rhtml的修改、版面配置&lt;br /&gt;這樣就完成一個Web Application&lt;br /&gt;&lt;br /&gt;其實在這整個過程中&lt;br /&gt;寫的程式碼真的不多&lt;br /&gt;我相信比用PHP還要節省更多時間&lt;br /&gt;&lt;br /&gt;過幾天再丟到網路上吧...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-115410054783859120?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/115410054783859120/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=115410054783859120' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115410054783859120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115410054783859120'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/07/rails-bookmanager.html' title='嗯.. 第二個Rails程式完成 -- Bookmanager'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-115406505371684215</id><published>2006-07-28T13:25:00.000+08:00</published><updated>2006-07-28T13:37:33.756+08:00</updated><title type='text'>Zonble -- 偶像阿！</title><content type='html'>剛剛回去聽了聽兩首不錯的歌&lt;br /&gt;&lt;br /&gt;1. No, I  won't fix your computer&lt;br /&gt;2. Hacker Song&lt;br /&gt;&lt;br /&gt;呵呵，我想有些人都有聽過吧？&lt;br /&gt;有的人聽過只是笑笑&lt;br /&gt;有的人是不知道在唱啥&lt;br /&gt;可是我相信，有人絕對是聽不懂也看不懂歌詞在寫什麼&lt;br /&gt;還會說：「怎麼那麼難聽啊？」 (沒錯，就是妳！&lt;a href="http://www.wretch.cc/blog/cfcef&amp;article_id=5338321"&gt;http://www.wretch.cc/blog/cfcef&amp;amp;article_id=5338321&lt;/a&gt; )&lt;br /&gt;&lt;br /&gt;唉，這兩首歌寫的很貼切&lt;br /&gt;寫得深入人心&lt;br /&gt;對於那些只會叫人家來幫忙修電腦&lt;br /&gt;自己卻不肯去學(還有一大部分自己是資管生，卻不知道唸資管的使命是什麼！很多都是女生！)&lt;br /&gt;很好笑，問題說不清楚&lt;br /&gt;自願去妳家幫妳又理由一堆&lt;br /&gt;弄不好都怪我&lt;br /&gt;妳他媽的妳算什麼？&lt;br /&gt;跩？妳既然啥都不會妳還跩什麼？&lt;br /&gt;&lt;br /&gt;奉勸各位有求於人的朋友們最好口氣好一點&lt;br /&gt;不然可能得到的答案會是反效果的:P&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;嗯... 那兩首歌的網址是：&lt;br /&gt;http://zonble.twbbs.org/archives/2005_07/784.php&lt;br /&gt;http://zonble.twbbs.org/archives/2005_02/696.php&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-115406505371684215?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/115406505371684215/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=115406505371684215' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115406505371684215'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115406505371684215'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/07/zonble.html' title='Zonble -- 偶像阿！'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-115401622889751273</id><published>2006-07-27T23:51:00.000+08:00</published><updated>2006-07-28T01:07:47.023+08:00</updated><title type='text'>最近...</title><content type='html'>我想我或許已經想到我該走哪條路了&lt;br /&gt;回想以前，剛從網頁開始走入資訊這條路.. 夢想當一個程式設計師&lt;br /&gt;漸漸的，發現到這只是一個夢想，因為我不太喜歡爆肝的感覺...&lt;br /&gt;開始往多方面去嘗試了解學習專研...&lt;br /&gt;這也玩那也玩，玩到最後什麼都知道，什麼都不精通&lt;br /&gt;&lt;br /&gt;不過，比較熟的還是那個.. 沒錯！&lt;br /&gt;就是網頁設計！&lt;br /&gt;其實說熟網頁設計也不盡然.. 我比較熟Coding..&lt;br /&gt;嗯，Web Application開發真的很有趣&lt;br /&gt;&lt;br /&gt;如果用PHP開發，也許我還不太想要走這條&lt;br /&gt;可惜Ruby on Rails出現了...&lt;br /&gt;Ruby on Rails真的很不錯..&lt;br /&gt;一個十幾歲的小鬼，獨自一人在兩個禮拜內寫出CMS&lt;br /&gt;扣除掉吃飯睡覺上課洗澡跑出去打球把妹的時間，也有一個多禮拜吧？&lt;br /&gt;PHP、JSP、ASP高手們寫給我看...&lt;br /&gt;&lt;br /&gt;由於是用Ruby開發出來的Framework&lt;br /&gt;所以承襲了Ruby："簡單原始碼"的優點&lt;br /&gt;小弟的另一個Blog：CFC on Rails將會近期內補上文章:)&lt;br /&gt;敬請期待XD&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-115401622889751273?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/115401622889751273/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=115401622889751273' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115401622889751273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115401622889751273'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/07/blog-post.html' title='最近...'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-16145282.post-115400538458262051</id><published>2006-07-27T20:35:00.000+08:00</published><updated>2006-07-28T01:15:27.136+08:00</updated><title type='text'>Yahoo! Kimo該檢討了！</title><content type='html'>標題點下去，會連結到我所看到的那篇頁面&lt;br /&gt;&lt;br /&gt;看完該文章後，讓我更加討厭Yahoo! Kimo&lt;br /&gt;其實本身對於他們的政策就有許多不滿&lt;br /&gt;政策外，還有服務跟服務人員智商&lt;br /&gt;&lt;br /&gt;朋友說過，他之所以選擇使用Yahoo Messenger，就是因為沒有廣告&lt;br /&gt;可是當第七版出來後，出現廣告了...&lt;br /&gt;所以跑去用Google Talk.. (個人認為Google Talk實在是太好用了.. 推薦:P)&lt;br /&gt;&lt;br /&gt;Yahoo吃記憶體量，不輸給MSN... 好用度可沒勝過MSN...&lt;br /&gt;連MSN都取笑Yahoo Messenger常常連不上.. (雅虎工作人員們... 被合作夥伴笑的感覺怎樣？)&lt;br /&gt;&lt;br /&gt;Yahoo拍賣也不是多好，就算再臺灣佔有量第一好了.. 也不想想如果沒有網友支持，你們有可能第一嗎？ 憑你們也想學電子灣收錢!? 再等等好嗎？過兩世紀後再談好了...&lt;br /&gt;&lt;br /&gt;網友們沒有品，難道服務人員也得跟著沒品嗎！？&lt;br /&gt;服務人員很高尚嗎？在雅虎工作就很跩嗎！？&lt;br /&gt;那Google工作人員怎辦！？小小服務人員而已！跩什麼？&lt;br /&gt;&lt;br /&gt;還好Flickr沒有限制只有Yahoo會員可以用...&lt;br /&gt;不然我看會有人反彈喔:P&lt;br /&gt;&lt;br /&gt;Yahoo             Google&lt;br /&gt;家族                 &lt;a href="http://groups.google.com" target="_blank" title="Google Group"&gt;Google Group&lt;/a&gt;&lt;br /&gt;信箱                 &lt;a href="http://www.gmail.com" target="_blank" title="Gmail"&gt;GMail&lt;/a&gt;&lt;br /&gt;即時通訊         &lt;a href="http://www.google.com/talk" target="_blank" title="GTalk"&gt;GTalk&lt;/a&gt;&lt;br /&gt;Yahoo部落格  &lt;a href="http://www.blogger.com" target="_blank" title="Blogger"&gt;Blogger&lt;/a&gt;&lt;br /&gt;Yahoo搜尋      &lt;a href="http://www.google.com" target="_blank" title="Google"&gt;Google&lt;/a&gt;, &lt;a href="http://www.google.com/webhp?complete=1&amp;amp;hl=en" target="_blank" title="Google Suggest"&gt;Google suggest&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;現有其他服務&lt;br /&gt;&lt;br /&gt;國外有 del.icio.us，台灣有&lt;a href="http://www.hemidemi.com.tw" target="_blank" title="hemidemi"&gt;HEMiDEMi&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;知道的朋友們說一下吧...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16145282-115400538458262051?l=zusocfc.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://blog.woixv.com/wp-trackback.php?p=365' title='Yahoo! Kimo該檢討了！'/><link rel='replies' type='application/atom+xml' href='http://zusocfc.blogspot.com/feeds/115400538458262051/comments/default' title='張貼意見'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=16145282&amp;postID=115400538458262051' title='0 個意見'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115400538458262051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/16145282/posts/default/115400538458262051'/><link rel='alternate' type='text/html' href='http://zusocfc.blogspot.com/2006/07/yahoo-kimo.html' title='Yahoo! Kimo該檢討了！'/><author><name>CFC</name><uri>http://www.blogger.com/profile/14467370100858961268</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://farm1.static.flickr.com/142/323694971_fb4d340146_b_d.jpg'/></author><thr:total>0</thr:total></entry></feed>
