[Nonsense] words from Amir

剛看了一下「噗浪,玩出大生意(Plurk Your Brand , Plurk your Business)」,在文末技術長Amir與Jeremy有一段很棒的對話要記下來勉勵一下自己:

Q: 對於像你一樣很會寫程式的高手,你有什麼建議提供給他們?

A: 不要放棄,要精通某件事情,一定得花上很長一段時間,差不多10年吧!即使是像莫札特這種天才也是用了13年才熬出頭的。寫程式就像做任何事一樣,需要的就是熱情而已。對我來說,這更像是一種習慣而非工作而已。在成為大師級人物之後,一定要這麼想。接著就是從一個有趣的專案開始,可能是做一款遊戲,一個網站,然後從PHP、Python這種語言開始做起!

加油。

[閒聊] Magic RoR

真的是很奇怪,雖然心裡有千百個不願意,但是每當想到要「架站」這個動作的時候,腦海第一個閃過去的東西不是PHP反而是RoR,每次一想到它的scaffold還有人性化的generator,就有種讓要用它的衝動。

原來Ijs當初的那番話…我還太淺了XD,還有很多東西要和她學呢。

[PHP] Shark 改版

目前shark計畫正在做大規模的改版(加入了sharkCore Class及模組抽換),不過因為機器人的需求各式各樣,所以想要利用大家的能力來收集一些已經寫好的規則並整合至shark內。以我自己為例,我目前做了「對特定關鍵字的噗做一次性回覆」這個規則(可能的應用如「小籤籤的抽籤功能」「占卜功能」「食我機器人」…等),允許使用者自行定義關鍵字、Qualifier、還有回應、以及回應用的Qualifier,另外在03/06的時候我又做好了一個「在特定時間發噗」的規則(相關的應用如「定時亂喇賽來維持karma」「定時發自訂的消息」…等),可以一次定義多時段的發噗內容,例如說我可以在每天十二點問大家吃飯沒,同時每一小時會發出天氣預報。

同時也實作了三種方法來抓取「回應」的內容,你可以把回應的內容放在網路上以檔案的形式呈現,或是你也可以為你的網站設立一個API的接口,透過HTTP的方式去讀你網站的資料(例如你的網站是有關於美食的,你就可以提供一個接口給shark連結,即時提供一些存在於你網站內的美食資訊給使用者),另外一種就是讀取本機已寫好的檔案,而最後一種就是以變數的方式直接設定回應的內容。有一點要補充的就是目前回應的資料都是以JSON的格式來設定

如果你有意願幫忙加入一些有趣的機器人規則的話(像是來個人工智慧的機器人,或是定時發噗之類的),麻煩參考一下我在github的資料並參考我簡介頁面的信箱來信。

另外就是,因為我還在學習團隊合作的方法,所以可能在寫法或是想法上有一些較主觀的成份在,歡迎大家給我一些建議與意見,讓我也能和大家一起學習,感謝。

[PHP] Shark – 整合性 plurk bot

圖 from here

這是我最近一直在做的東西,也許是因為之前「JaceJu」的那堂課讓我對物件導向的模式有點嚮往,所以就試著用用看物件導向的概念在這次的專案下,先來介紹一下這個玩具吧:

一開始我是看到朋友們一直在討論plurk bot這個玩具,所以就想說來做個什麼(其實我就是一個很怪的人,我很多做出來的小玩具都是因為看到人家的討論串才開始做的,而這次也不例外XD),因此就想打造一個整合性的plurk bot,而不是只為了特定功能而實作的東西。我想可能也是受到Hax4理念的刺激,為了製作出讓人家覺得有趣又好玩的東西,所以我們必需把最麻煩的部分都實現並封裝起來,就算使用者不是一個程式設計師(我也不是XD),也能夠輕易的上手,這就是我的想法。

實作的部分,因為我是在PHP下做的,所以就沿用官方認可的php-plurk-api,用他們已經實作好的API去和官方做溝通,這真的是省事很多,這樣我就不用自己刻一個爛爛的介面來用了,也提昇了穩定度。因此整個Shark class是直接繼承它的類別,再設計新的骨架在其之上,一來我可以開心的使用API,連第三層的使用者也能輕易的使用(繼承真的是很神,更神的是所有在plur-api下的Method都是protected的,大家都可以開心用XD),所以這樣一來我沒有破壞到它原始的架構,反而再多建了一些我想做的東西讓大家玩,這樣真酷!

講這麼多,快點上我在Github上的Shark專案把相關的核心抓下來玩玩看吧,忘了說,我本意是想讓大家都可以輕易做像是「小籤籤」的plurk bot,可以自動回覆一些特定資訊,而一些設定的細節就麻煩去看我寫好的說明啦,如果對這個專案有什麼建議的話,麻煩直接回信到我的信箱並在主旨打「About: Shark」,我就會盡快回覆你的。

感謝你的觀看XD。

δ 目前Shark有改版的資料並徵求有志之士來寫好玩的規則,請看站內的另一篇文
δ 整個專案是相容於php_plurk_api 1.4,但是目前最新是1.4.2版,這點要注意一下。

[Ruby] Get started

最近因為一些實務上的需求(真的嗎),所以不得不試著嘗試用RoR來開發程式,但是因為萬事起頭難,最困難的就是在一開始,所以就先試著了解Ruby這個語言的特性,再來往下階段做開發。

因為說實在的,不知道為什麼國內Ruby相關的資源很少,在網路上都沒有找到什麼比較淺顯易懂的書,所以就隨性上網找到了一本名為「The Ruby Programming Language」的書,就拿它來當cookbook吧。

因為我是從PHP跑來這邊玩沙,所以說實在的我還真的有點很不習慣,先看一下PHP在Wiki上的介紹:

『PHP 原本的簡稱為 Personal Home Page[4],是Rasmus Lerdorf 為了要維護個人網頁,而用c語言開發的一些CGI工具程式集,來取代原先使用的 Perl 程式。最初這些工具程式用來顯示 Rasmus Lerdorf 的個人履歷,以及統計網頁流量[5]。他將這些程式和一些表單直譯器整合起來,稱為 PHP/FI。』– From Wiki

PHP當初是延用了C的風格,再加上一些自有的特色,使得其多了一些較彈性的設計(如使用變數時可以不需要宣告型態)。但是,當我看到Ruby之後,反而讓我有種很難上手的感覺,因為它好精簡,讓我有種當初在寫Perl的感覺(雖然我沒有寫好,對不起c9s XD)。

好啦,廢話不多說,現在就來看看我看這本書時的一些小重點。

3.2.1.4 Arbitrary delimiters for string literals

還記得剛剛為什麼我說它讓我覺得好像Perl嗎,因為它也有支援Syntax Sugar,來看看它是怎麼做到的:
http://gist.github.com/288795.js?file=gistfile1.rb
還真的是很簡單,只要在前面要加個"%"就可以了(Perl 只要 q就好了呀!!!)

下面還說到要怎麼在使用Syntax Sugar時再跳脫那些用來當標記的符號,我覺得如果真的還要這樣子就有點本末倒置了吧…

3.2.1.5 Here documents

這邊再把上面的Syntax Sugar做個延伸,是借用Unix shell的語法,叫做 Here documents,它後面的註解很有趣,它說「因為這個文件就在個原始碼內,而不是存在於外部的檔案」,真是有夠白痴,有講和沒講不是一樣XD。

來看個小Example。

http://gist.github.com/288819.js?file=gistfile1.rb

“<<"和"<<-"的差別就差在後者的close tag的前面可以有空白,但是前者的不行,就這樣子而已。還有個特別強調的地方,就是close tag的後面不能插入comment,插了就會出現一堆錯誤!!這個東西在PHP也有,通常是用來存放HTML的部分,這樣就不用一直一行一行的輸出,算是把View分離的方法,範例如下。

http://gist.github.com/288830.js?file=gistfile1.rb

1st part 就覺牛刀小試一下到這邊啦。

[Hax4] Rainbow

測試頁面:在這、專案資訊:在這

這幾天因為心血來潮,想說來練習一下pure javascript,所以就都不用jQuery來做事情(雖然最後還是有用,不過我只用來做特效而已XD)。這個Idea其實是源於我以前做的一個很爛的liu-translator,它只能單方面做字根對字的轉換,所以就想說利用Ajax的概念來實作一個線上的IME,因此我就去找了之前Luke的網蝦米來研究他的UI介面。

研究了一下後就開始著手動工整個JS的架構,邊看深入淺出Ajax邊試著實作他說的一些思惟,像是要怎麼寫的很MVC,所以就開始學著把程式切成粗略的「資料」、「模組」、「樣式」三類,雖然之間還是有些耦合性,但是比較以前的我,這次的實作算是很成功的分離了。

之後又想到行易公司的練習嘸蝦米的打字程式一直沒有跨平台,只支援該死的M$,所以為何不幫他們設計一個Cross Platform的Web Application?反正只要解決Cross Browser的問題就可以了,雖然我在Cross Browser這條路上只是一個剛入門的新手,但總比Cross Platform好多了吧…因此就把分離完的架構再修改,改成有點像是遊戲的小程式。

原本已經接近完工的狀態了,但是Bu因為是「大新倉頡」的愛好者,所以就給個建議要我加入的其字根對應表,去擴充可支援的輸入法,就又經過了一場編碼和正規表達式的戰爭後,終於把切換輸入法的功能也加上了,這完全要歸因於先前的MVC架構,讓我能夠在很短的時間完成這個動作。

最後一個也是最重要的啦,為了提高遊戲性,我設計了一段可以自動去抓使用者給定URL的頁面回來,把該頁面上所有符合UTF-8繁體中文的字全部抓下來當成題目,這又比起以前行易公司設計的那些題目多了一些趣味。多了這個設計,你還可以邊看Yahoo!奇摩新聞邊練打字咧!!

附上程式截圖:




§2010/05/13 補上程式的Demo連結,原來我都沒有放出來= = ,舊的在這,新的在這
§2011/02/05 更新連結、圖片、介紹。