[PHP] Shark 改版

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

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

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

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

[PHP] optimization for shortening the API calls

最近為了降低API calls,所以在Shark內加入了一個Method可以讓使用者自行依自己的需要來延遲整個程式的執行:

http://gist.github.com/309735.js?file=gistfile1.php

參數是所需延遲的秒數,0就是不延遲。

雖然這裡沒有什麼技術上的難度,講白點就是丟給sleep()去跑而已,但是我想討論的是它所造成的影響。先看一下下面的統計圖:



2/14和2/15是平常的情況,所謂的平常就是用無窮迴圈去跑Bot,只算「登入」和「基本檢查」這幾個動作,而已,就會拉高整個呼叫API的情況,非常的跨張,這就是為什麼北極冰山快融化完的關係,因為大家只要寄個信給Plurk官方就可以突破原先50000次的限制,要怎麼用就怎麼用,非常爽快。

但是再看看2/18和2/19的時候,這是我讓Shark加入了延遲的動作,我記得是設3秒鐘,夠誇張吧,直接下降到23000的次數了,你連寫信去Plurk的動作都省下來了,還有27000次讓你做別的事情,這樣不是很開心嗎!? (大約下降了78%..),真是從小處著手,就有很大的改變呢…(忘了說,使用者很難感受到機器人回覆plurks的時間差,一樣很快)

所以麻煩大家不要一直用「while(true)」或是「for(;;)」這樣子的東西,要用的話至少也要加個中止條件或是延遲,不僅可以減少系統資源的開銷,還可以保護北極熊不會因此死光…

[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版,這點要注意一下。