August
3rd,
2014
網路上找了一下方法,其實方法相當的多.大家可以找自己適合的方式來做,反正我也在學,乾脆把每一種看到的都開始試試看:
net/http
這篇文章談到如何用net/http 來做,其實也沒那麼難,不過問題都一樣.都得對於每個物件與方式座對應.
不僅僅是個別東西得自己寫出來,由於每一個都是走 url.values所以幾乎是無法辨別 albums/1 這樣的REST API,必須傳遞 ?albums=1
目前還沒有想到比較好的方式可以做出get/add/delete,繼續研究其他的.
參考:
http://dougblack.io/words/a-restful-micro-framework-in-go.html
gorilla/mux:
可以使用 gorilla/mux的方式來把 http.handle request 去route 到各個不同functions去.
這裡有詳細的方法,看不懂可以拿我寫好的code去參考.不過只有list all,如果要做出 albums/1 這種狀況似乎是沒有方法的.
跟net/http的問題是一樣的,也沒有熟悉到有想到解決方可以可以實作 item GET/PUT/POST/DELETE (ex: album/1)
參考:
http://www.gorillatoolkit.org/pkg/mux
http://joshua.themarshians.com/hardcore-google-communicating-go.html
go/martini
martini算是相當適合拿來做REST(基本上內建已經支援了)
m.Get(“/hello/:name”, func(params martini.Params) string {
return “Hello “ + params[“name”]
})
這邊要注意的是:
內容是 :name 你可不能輸入 curl -i localhost.com:xxxx/hello/:name 而必須要輸入 name
params[“name”] 出來都是字串,要轉數字要注意error exception.
其實有個文件上沒有講清楚的就是針對 Get/PUT/POST 的function input,少寫是會找不到的
func getItem(params martini.Params) string {
//….
}
func updateItem(w http.ResponseWriter, r *http.Request, params martini.Params) (int, string) {
//…..
}
func addItem(w http.ResponseWriter, r *http.Request) (int, string) {
//….
}
範例與實作的部分:
我在練習的時候主要是利用類似範例裡面的in-memory database 還有 martini 來完成REST.此外並沒有用到JSON的格式,主要是因為之後打算拿來練習其他的資料庫mongoDB.
實作的時候,我發現問題比較多的其實不外乎就是function的parameter 之外,再來就是client端要如何下指令去打成 GET/PUT/POST/DELETE 的指令,主要用的是CURL這裡簡單的列一下:
GET: curl -i ”https://localhost:8001/albums”
POST: curl -i POST –data “band=Carcass&title=Heartwork&year=1994” “https://localhost:8001/albums.xml”
PUT: curl -i PUT –data “band=Carcass&title=Heartwork&year=1993” “https://localhost:8001/albums/4”
DELETE: curl -i DELETE “https://localhost:8001/albums/1”
參考:
http://0value.com/build-a-restful-API-with-Martini
https://github.com/go-martini/martini
繼續閱讀
July
30th,
2014
心得: Android Taipei 有好幾次的活動不是跟GTUG對衝,就是剛好遇到颱風.這次剛好有機會可以參加(其實是GTUG JavaFX不太懂 XD) 所以今天就去了,恰巧也有機會揪了以前的同事一起去(Nick,Veret). 以下簡單的記錄一下三個講者的內容跟心得: MonkeyRun: 這個東西主要是透過MonkeyRecorder 來錄下自動測試的腳本,搭配本身有的一些進階功能可以拍下截圖並且寄出錯誤資訊.講者有增近一些功能後OpenSource出來,挺值得一看. 會後有找講者討論了一下這個東西能導入的狀況與真正幫助到測試的範圍: 新版本出來以後,分成兩個部分.一部份還是QA來跑,另外交給自動測試.隨著QA測試錄下的腳本增加,需要真人的部分可以越來越少. 自動測試主要是跑一些比較簡單還有透過截圖的比較,測試流程的減少看來有20%左右(透過了解的估計) Chrome Cast (或者稱為 Google Cast) 主要講解整體架構,基本上就是App(Sender)透過通訊協定讓receiver 去播放網路上的資料(是網路上的而非手機上的) 也稍微有講解了一下可能遇到的問題,下面都有提到. 會後有跑去跟講者討論一下是否可能直接手機透過streaming 到server上後再cast 到receiver,看來是可以的只是造成的latency看來是很難突破.(IP-CAM?) Google IO 2014 分享 主要是講者分享一下GOOGLE IO 2014在當地參加的心得與內容,由於我有到臺北Google辦公室看過直播,所以還好. 之後講者有把這次有趣的玩具 Cardboard讓大家體驗一下,其實讓我相當驚訝的是,本來以為會像3D眼鏡,其實不然~是真的很像VR虛擬螢幕在前面.透過G-Sensor可以調整. 它提供的SDK就是可以切割兩個螢幕外,還用突透鏡羽還原的技巧來讓立體成像更為清楚.彷彿眼前有個大螢幕在前面,還可以上下擺動看到不同的東西. 速記: GogoMonkeyRun MonkeyRunner (gogolook) Auto testing Android Instrumentation test uiautomator monkey/monkey runner monkey runner — using python code to execute auto testing Using python to click specific point. (x,y) Monkey runner 不足 Q: How to determine x, y. A: using “monkey recorder”, project cellphone to PC. 常出現問題: 不能截圖 不能取消動作 不能back 畫面被壓縮 拖曳無法知道起始點與終點 無法旋轉 gogolook 強化: github-> (gogomonkeyrun) 特點: 可選擇安裝apk 可以截圖 可以寄信給開發者 可以按back *修改App內容 *遠端控制 使用: 先用人工點一次,結束後可以產生相關動作的python code 如果要跑不同的機型,需要執行多次的monkey runner 跑的截圖可以做比較,來發現說是否有錯誤和異常. 可以用來catch exception 然後寄信給開發者 辛酸史: Monkey recorder 跑完馬上跑monkey runner 是會出現錯誤,device 被decoder 佔走 解決方法: shell stop Windows 到Mac 容易出現問題 Google 從2012年後就沒有更新 Feature works: 產生更豐富的資訊 Jenkins 結合 (other Android Emulator) 手機端看結果 參考: http://fecbob.pixnet.net/blog/post/35999435-android%E8%87%AA%E5%8B%95%E6%B8%AC%E8%A9%A6%E4%B9%8Bmonkeyrunner%E5%B7%A5%E5%85%B7 Chromecast SDK (google cast) (kkbox: Ascii) 基本概念: Sender: 手機 Receiver 電視 使用方法: 新增一個button 可以share 到電視 (MediaRoutingButton)...
繼續閱讀
July
23rd,
2014
依照以下兩篇應該可以順利成功
http://mmcgrana.github.io/2012/09/getting-started-with-go-on-heroku.html
http://yinghau76.github.io/2013/12/15/go-on-heroku/
不過我真的太不熟所有有些地方一直搞混,這裡記錄一下我發生的問題:
千萬記得把你的Go的程式碼放在$GOPATH/src 下,根據這一篇建議,可以考慮放在 $GOPATCH/src/github.com/YOUR_GITHUB_ACCOUNT/ 下面
記得 Procfile 裡面要寫的是你的目錄(也就是編譯好執行檔)名稱 ,不確定的可以用 which 去double confirm
其他參考文章:
Go MongoDB and MongoHQ http://blog.joshsoftware.com/2014/02/28/a-simple-go-web-app-on-heroku-with-mongodb-on-mongohq/
Build test using wrecker with go http://blog.wercker.com/2013/07/10/deploying-golang-to-heroku.html
接下來會努力 RESTful 還有一些資料庫應用….
繼續閱讀
July
23rd,
2014
六月底上架之後,雖然一開始是用收費的方式,主要還是發給一些親朋好友測試而已.
收集了各方意見我也增加了新的功能之後,在今天就要上架更新的版本.
https://itunes.apple.com/tw/app/fen-si-xiang-bu/id839324997?l=zh&mt=8
1.1 版本的新內容
新增了網友推薦的功能,你可以分享其他網友
新增評分功能,可以表示你喜歡這個粉絲頁面
新增訊息通知,可以讓你知道更多受人喜愛的粉絲頁面
有任何問題,請到這邊去反映: https://github.com/kkdai/iOS-APP-FBAlbums
以下是是比較技術方面的更新心得與筆記:
把網路資料從Google Doc改到Parse,並且支援push message
支援網友上傳喜愛的粉絲頁面到主機上面讓大家去看並且評分(目前只支援”加分”)
iAD 增加並且把售價將到免費,之後再考慮有沒有付費機制(AIP 其實不好搞)
CoreData 的migration 也搞了很久~其實有考慮要不要拿掉CoreData~
上架之後,想不到iAD要另外的審核~看來又得等待了….
接下來下一次的更新應該會著重在穩定度跟網路讀取的改進,這邊也是我現在比較不了解的地方
繼續閱讀
July
19th,
2014
前言: 十秒就搶完的票,號稱工程師界的秒殺票卷.當天其實是來不及搶到票.感謝Patrick 願意把他搶到的票讓我去看. 整個會場看到一堆年輕人,真的讓我非常的開心.也很替現在的年輕人開心, 你們不是沒機會~我們以前社團要搞這些活動的時候資源少到不行又沒人願意參加. 現在技術種類又多又有趣,年輕人個個有出頭的機會. 台灣又有這麼多做OpenSource的前輩在前面幫你們開路~ 年輕人別再抱怨房價跟薪水了,認真學習好好跟這些前輩效法才是未來真正的出路~~ 一些令人覺得經驗的亮點: 有人搬卓機來研討會 https://twitter.com/superbil/status/490319430434312192/photo/1 思源黑體和小叮噹會幫我完成所有的願望 https://twitter.com/zhusee2/status/490429614951387136 g0v 政府對政府關係 https://twitter.com/ijliao/status/490437005575061506 愛因斯坦說過如果要花一個小時要解決問題,必須要花五十五分鐘好好思考問題是什麼,然後花五分鐘來解決它. https://twitter.com/onReflect/status/490413297812783105 HackFolder http://hackfoldr.org/coscup2014/ 09:10 - 10:00[R0]全場地聯播Maker 《自造世代》 潛水機器人採取開源的方式並且要求[CC](要使用的人也得開源) 等待專利時間永遠跟不上創新的速度 不怕抄襲- 抄襲的人永遠跟不上創新的發明 Real-time Streaming Classification with Storm – The Pinball system 心得: 利用steaming classification( 不斷的分類與判別)來判斷yahoo買家並且給予最好的購買建議與推薦. 類似於Hadoop Map-Reduce Job 但是屬於streaming ( Hadoop 是 batch processing) 購買欲望 (Buy Intention) 與 PageView 有關.瀏覽頁面越多,購買欲望越高. 速記: Challenges Batch processing can react latest update data. Solution: Pinball Pinball 使用者透過不斷的classification來判別preference Real-time classifier using Storm on apache Storm -> is potential buyer ? -> promotion Hadoop map-reduce job is batch processing but storm is streaming. Buy intention 同一購買類別瀏覽次數越多,購買欲望越高 How to combine Storm and Buy Intention Navigation Spout Buy: User buy history -> learning bolt -> classifier (record page view) View: User history bolt -> classifier -> Qualifier Match -> promotion Batch processing is source of truth, realtime processing using it as reference. Lambda Architecture Batch Layer Pig Hadoop Spark Summingbird (scala) Life Lessons From the Cloud:...
繼續閱讀
July
17th,
2014
Android
https://code.google.com/p/spydroid-ipcamera/
可以讓你Android手機當IP cam streaming 到其他地方..
相關文章http://blog.csdn.net/xiaoliouc/article/details/8443195
https://github.com/yixia/VitamioBundle/tree/v3.0
Android 上面的多媒體播放SDK~是要收費的不過似乎很完整方案.
https://github.com/pocorall/scaloid
最近學了Scala就很好奇,Android上面能不能拿來開發.這裡是很好的專案.
http://arnab.ch/blog/2013/08/asynchronous-http-requests-in-android-using-volley/
一堆http 的toolset提供許多RESTful request的APIs
https://github.com/shakalaca/learning_gradle_android
關於gradle的一些tutorial與相關的教學
iOS
https://github.com/fullstackio/FlappySwift
想知道Swift 能多快開發~剛發表的隔天~ Flappy Bird on Swift 就開發出來….
https://github.com/TakoBear/ffmpeg-iOS-7-Install-Script-Xcode-5.1
想要找尋iOS上面如何使用ffmpeg? 這裡有最快的script 搭配著iOS7.0 與 xcode 5.1.成功的時候會從網路電台抓audio來解開播放….
https://github.com/lajos/iFrameExtractor
想要ffmpeg 在iPhone上面可以多一些範例? 這裡有個可以把影片解開一張張frame的範例….
https://github.com/coolthor/TainanSport
簡單的介面,show出附近可以提供運動活動的地點。 輔之以導航。特色的話,用一隻手就能完成所有動作。作為MapKit,還有利用NSString對字串的Parse的練習範例。 還有部分Sqlite 3的應用。
http://www.swifttoolbox.io/
許多關於swift的toolkit 列表,相信一定找的到好用的.
https://github.com/magicalpanda/MagicalRecord
Magical Record算是超級知名的tool kit 管理Core Data一定要使用,相當的容易使用.我好像也寫過一篇使用的文章.
https://github.com/constantineSafronov/SFAlbumApp
也是利用到UICollection View 的相簿軟體
https://github.com/Inferis/ViewDeck
類似FB上方的左右切換toolkit
https://github.com/ECSlidingViewController/ECSlidingViewController
類似ViewDeck不過有支援storyboard
Service:
https://www.uservoice.com/
可以幫你建立一個使用者回報的系統 (iOS/Android)的server.以下介紹來自 http://blog.xuite.net/coke750101/networkprogramming/56770815
Uservoice 是一個非常重要的服務,我們從開站以來,我們幾乎每天都會透過 Uservoice 收到來自我們訪客的建議與問題回報,Uservoice 透過簡單的介面讓訪客可以輕鬆的發信告訴我們他的想法。我們透過 Uservoic 來掌握使用者對於我們網站產品的看法,也藉此可以更加深入的了解我們社群。我們可以透過後台清楚的看到目前所有尚未回應的問題,或是誰已經回應了哪些問題,甚至可以建立罐頭訊息,還有積分的設計,客服人員每當回答了問題,就會得到額外的積分。(不過其實我們目前是共用帳號、共享積分XD)
繼續閱讀