發表文章

目前顯示的是 十月, 2015的文章

[開箱] Google Cardboard 3D眼鏡 KNOX V2

圖片
KNOX V2是新創公司knoxlabs在今年五月Google I/O 2015時推出的Google Cardboard 3D眼鏡。其特色是支援六吋螢幕,因此iPhone也能用,另外重新設計按鈕,改為不用磁鐵。



我在六月中上網預定,中間收到knoxloab的兩次延誤通知,第一次是製程延誤,第二次則說是透鏡設計上的瑕疵,所以重新設計。結果八月底寄出第一批貨,我則是九月底才收到。從訂購到收到貨,約三個月的時間。

價格的部分,加運費是30.95美金,約1000台幣,CP值頗高。

收到的是已經組裝好的產品(我原以為收到的產品是厚紙板,要自己組裝),就是一個盒子的保裝。

Google Cardboard在盒子內,如不使用的話,可以折疊後收入盒內,便於收藏

安裝只有三個步驟,接點是魔鬼氈,便於拆裝

這是手機置放的位置。左邊凹陷處是按鈕,按下去有個機關會觸動手機螢幕,在操作手機的Cardboard APP時,這個動作相當於是Enter

整台組裝好的成品,眼睛直接對著透鏡觀看

外觀有QR Code,安裝Cardboard APP後,用手機去掃這個QR Code,Cardboard APP就會知道Cardboard的型號。


延伸閱讀
台幣200元組裝紙盒版 Google Cardboard 眼鏡,動態玩實境遊戲 還能看3D電影




Codota - 好用的程式碼範例搜尋引擎

圖片
Codota是一個程式碼搜尋引擎,這個網站會用爬蟲程式去抓GitHub和StackOverflow上的程式碼,並加以分析與分類,提供高品質的程式碼,來解決工程師上網找Code的問題。

Codota目前只有Android程式碼,官方提供了Chrome和Android Studio的套件,讓工程師可以在IDE上直接搜尋程式碼。

以下實際使用Codota來示範一下如何找Code。
例如,我想要找JSON Parsing的程式碼,直接在搜尋框輸入關鍵字,以下是網站找到的結果。右方的CodeRank是Codota分析的分數,加上網友評比的結果,分數越高表示是較可靠和清楚的程式碼。

點選Full Snippet Info,可以看到該片段的程式碼,右方會有程式邏輯的樹狀圖。


Codota官方網站
延伸閱讀 以色列:Code的搜尋引擎「Codota」,讓開發者輕鬆寫程式Android 开发工具之Codota——搜索最好的Android 代码




Postman Web API 測試工具 (新版)

圖片
老牌Web API測試工具Postman,去年年底發布新版程式,全面雲端化,並新增很多好用的功能。

先介紹一下Postman這個Chrome plug-in,它用於任何Web API的測試,它可以送HTTP Get或Post的請求給欲測試的end point。並顯示API回傳的結果,以及執行所花費的時間。回傳結果不管是JSon或XML格式,Postman會將格式調整成容易閱讀的樣式。
官方網站下載 (Chrome Store) 使用Postman要先註冊帳號,因為這個程式會將你所執行的歷史紀錄儲存在雲端。使用方法很簡單,輸入欲查詢的API連結之後,按下Send按鈕。回傳結果會顯示於下方,回傳結果也可以更換成不同的格式。

此外,除了預設的HTTP GET請求之外,支援POST、PUT等多種HTTP請求。如果選擇HTTP POST的話,可任意新增POST參數。

認證方式有支援OAuth1.0和2.0
右方的程式碼按鈕是Code Generator,可以自動產生包括Javascript、C#、Node.JS、Java等多種類型的程式碼片段範本。



至於Web Service的測試,以往我們得要另行安裝SoapUI,才能在本地端測試Web Service。現在透過Postman,可以直接在Chrome上面測試Web Service,這是官網上測試Soap的範例
以上介紹的是免費功能,至於付費功能,主要是可以做API的測試,還可以透過Postman的命令列模式(Newman),執行自動化測試,並整合Slack和Jenkins。


Parse.com效能調教

圖片
Parse.com是後端平台,遇到大量資料的查詢,難免會有效能的問題。雖然這是雲端平台,開發者不能變更系統設置,也不能自行新增索引,而Parse.com的後台儲存媒體其實是MongoDB,只要遵循開發原則,相信對於效能會有一定程度的改善。

Parse.com最近提供Slow Queries的新功能,可以透過網頁介面,查看較慢的查詢,以及查詢語法。這些資料對於效能的調教具有參考價值。

Parse.com官方文件有一個章節專門說明效能的部分,建議在開發之前要先讀過,在此將一些重要的內容摘錄下來。
查詢Smart Indexing:不必自行維護索引,Parse會根據查詢的狀況,很聰明的自動更新索引,以提高查詢效率。條件查詢盡量使用正向表列,少用Not Equal To和Not Contained In不建議使用Regular Expression來比對字串的內容,會非常慢iOS和Android可以開啟Client-side Cache來增進App效能如有通用邏輯,可將其寫在Cloud Code,或利用Cloud Code批次事先整理資料不要使用Count,在大量資料使用count會非常慢 限制查詢時若不用limit語法,預設的輸出結果是100筆,最多只能輸出1000筆一筆資料Record大小限制128KB單一Class (Table)不可超過64個欄位,欄位名稱不可超過1024個字元一個App不能超過200個ClassRegular Expression,限制是每分鐘不可超過80次Count operation查詢,限制是每分鐘不超過160次地理位置查詢不可以用ORskip和limit只能放在最外層的查詢


PredictWise預測2015美國職棒大聯盟世界冠軍

圖片
根據PredictWise目前預測的結果(每天會更新),皇家隊是今年MLB的世界冠軍,不過皇家和藍鳥及小熊的預測分數相當接近,都只差1%而已,競爭相當激烈啊!

2015 MLB World Series Prediction by PredicWise



PredictWise是微軟研究院經濟學家家David Rothschild,用以公布政經娛樂大事件預測結果的網站,之前曾精準預測過奧斯卡得獎名單,以及美國總統大選。

目前2016年美國總統大選,也是PredictWise的預測項目之一,希拉蕊根本是大幅領先。



Link Bubble Browser

圖片
很多手機的APP都會需要開啟連結來閱讀網頁,開啟網頁連結,都會打開瀏覽器,於是就會一直在APP和瀏覽器之間陷入切換的輪迴。
Link Bubble Browser就是解決這個問題而生的APP,在手機上瀏覽網頁時,會透過Link Bubble Browser開啟,在手機上浮現一個泡泡,使用這個APP可以省下很多程式切換的時間。
從Google Play下載

例如,我從Feedly看到一篇文章,想打開網頁看內容

這時候,就會打開Link Bubble Browser,在原APP內閱讀網頁,不會另開瀏覽器,也不必跳出APP

如果拖曳泡泡,可以選擇關閉,或分享到其他APP

如果泡泡沒有關閉,到了其他APP,還是可以打開看之前的網頁內容

如果在其他APP開啟網頁,則會出現第二個泡泡

兩個泡泡開起來就像這樣,還可以任意切換

Link Bubble Browser的功能簡單,非常有創意,也解決了多數人的問題。這個APP用的是Android特有的Intent技術,在iOS目前沒有看到類似的APP,以iOS的架構也很難做得到。

以前Link Bubble Browser免費版只能有一個泡泡,不過在另一套功能類似的APP Flynx的競爭之下,免費版已經將這些限制都拿掉了。有競爭,果然是好事!

至於Link Bubble Browser和Flynx哪個好用?老實說,功能都一樣,我比較不出來。若單從Google Play上的數據來看,Link Bubble Browser的下載次數比Flynx多,但評價較低,就留給使用者自行選擇吧。






Heroku Scheduler

圖片
PaaS平台 Heroku本身提供了多種批次執行add-on,我自己試過幾套後,覺得Heroku Scheduler還算堪用,特別是當你一天要執行多次批次程式,而之前介紹的IronWorker一個月10小時免費額度又不夠時。

Heroku Scheduler沒有執行時間的限制,也不會動用到Dyno的運算時間 (即使Dyno關閉,scheduled job還是可以執行,事實上它使用的是另一種稱為One-off Dyno的運算容器)。同時也支援Python、Node.JS、Ruby等程式語言。
前置作業 本篇以node.js為例,但 Heroku Scheduler官方文件對於node.js的說明琢磨甚少,我是查詢stockoverflow之後,才試出來的。下面這個前置作業很重要:

在程式佈署之前,要先在新增bin資料夾,並將node.js欲執行的主程式(例如server.js)複製到bin資料夾中,然後刪除副檔名(原本是server.js改成server,事實上檔名叫什麼都可以,只要不要副檔名即可), 在程式佈署之後,Heroku Scheduler會執行bin底下的程式,不會執行實際上的node.js主程式。
程式佈署 Heroku提供三種佈署程式的方法:使用git命令列、整合GitHub、整合Dropbox。在程式佈署之前,程式會先簽入到遠端的git repo,再根據node.js的package.son做套件的安裝。

如果不熟悉git命令列指令,而你的程式碼在GitHub託管的話,用整合GitHub的方式來佈署會比較方面,經過OAuth認證整合你的GitHub帳號,然後選取需要佈署的專案。這裡可以設定自動佈署,或者使用手動佈署的方式來上程式。自動佈署是當你的程式簽入到GitHub之後,Heroku偵測到有牽入成功的動作,就會自動執行程式佈署。



或者使用手動佈署,按下「Deploy Branch」,就開始佈署, 在佈署過程中的Log會顯示在下方。如果專案有多個分支,還可以選取特定的分支來佈署。

前面提到,程式碼佈署之前會先被簽入到遠端的git repo,因此在Activity畫面,不但看得到每次佈署的紀錄,還可以比較版本差異,並做roll back的動作,將程式回復到任何一個版本。以上的動作全在網頁上就可以完成,這是我認為Heroku對開發者最友善的部分。
排程…

IronWorker - 雲端批次程式平台

圖片
IronWorker是Iron.io這間新創公司所提供的雲端服務,Iron.io兩週前才剛完成A輪投資

IronWork提供批次程式執行的雲端平台,供Python、Node.js、PHP、Java、Ruby、Go、.Net等語言使用。程式佈署上去後,可以從網頁介面去設定排程,也可以查看每次執行的紀錄。可是免費版一個月只有10個運算小時 (批次程式的執行時間),較適用於批次需求量不大的人,月付49美金則可每個月有500個運算小時。

更新:
IronWorker 現在可以使用 Docker 來佈署(本文原佈署方式仍可使用),其運作方式是,將需安裝的套件事先安裝在 Docker 上,在開發者本地端測試無誤後,將 Docker 上傳到 Docker Hub。IronWorker 在執行時,會直接到 Docker Hub 下載相應的 Image 檔來執行。這樣,可以解決以往 IronWorker 佈署之後,程式環境不一致,導致執行失敗的問題。

佈署步驟
IronWorker Docker Image 範本


註冊 首先從http://iron.io註冊帳號,登入後會看到Dashboard,左邊顯示你帳號目前的使用額度,右邊則列出Project清單,若要新增Project,可按畫面上方New Project按鈕。
專案新增之後,可按下中間的Worker按鈕,會出現教學,教導你如何佈署程式,以下根據官方教學,逐步說明如何將程式佈署到IronWorker雲端環境。 程式設定與佈署 步驟一,要先下載iron.json檔案到你的專案資料夾根目錄下,iron.json是一個設定檔,內有Project ID和Project Token。然後要安裝用戶端的開發環境,要先安裝Ruby,然後用gem安裝iron_worker_ng這個套件。
步驟二,主要是要新增.worker這個檔案,這個檔案是專案設定檔,一樣放在專案資料夾的根目錄下。以node.js為例,如果你的主程式名稱是server.js,則worker檔要命名為server.worker。
以下是worker檔的內容(一樣以node.js為例),這裡是要告訴IronWorker,當程式佈署之後,需要如何安裝相關套件。
以下是Node.JS的worker檔範例
runtime "node" stack "nod…

如何關閉OS X El Capitan System Integrity Protection (SIP)

圖片
OS X升級到El Capitan之後,提供SIP(System Integrity Protection),又稱rootless mode,這個新功能在強化OS X的安全性,不過也造成部分程式(例如homebrew和git)在命令列模式下執行異常。

SIP預設是開啟的,以下步驟可以把SIP關閉:
1. 重新開機
2. 重開後長按Command-R進入Recovery Mode
3. 進入Recovery Mode之後,從Utilities > Terminal打開終端機


4. 終端機輸入 csrutil disable 5. 關閉終端機,然後重新開機



跟著賈伯斯的足跡遊加州

今天(10/5)是賈伯斯過世四周年的忌日,雖然我不是果粉,但畢竟賈伯斯曾是科技界閃耀的巨星,雖然殞落,仍然值得懷念。

賈伯斯的一生,除了1974年曾短暫赴印度靈修八個月之外,從出生、成長、讀書、就業、創業、逝世,幾乎都待在加州。因此我蒐集資料,根據賈伯斯曾經到過的地方,製作了一張地圖,有興趣的朋友有機會到加州,不妨朝聖一下。部分資料仍在查證中,會持續更新。 賈伯斯地圖
四年之後,蘋果當年的高層幾乎大換血,軟硬體大將相繼離職,當年的設計大師也退居第二線。然後,iPhone有了寬螢幕版本、為迎合中國消費者的需求而設計的金色版本、iPad則多了觸控筆,這些都是當年賈伯斯堅持不做的事,四年後一一被打破。雖然Apple Watch賣不好,iPad銷售量減少,可是當年賈伯斯一手設計的iPhone依然賣得很好。所以賈伯斯的現實扭曲立場,雖然現在已經對蘋果高層不太管用了,但仍然足以影響果粉。 參考資料AllAboutSteveJobs.comOn the trail of Steve Jobs in California(這是英國衛報記者Jonathan Margolis實際走訪加州後,寫下的文章,非常值得一看)Quota: Which locations in Palo Alto did Steve Jobs frequent?Steve Jobs still stored in Silicon Valley’s memoriesTour the Silicon Valley of Steve JobsSteve Jobs: Of Food, Memories, and Thanks (賈伯斯曾經的鄰居所寫的文章)







啥?PCMan跑去念台大資工所!

其實這個消息我一個月前就知道了,所以應該不算OP吧!

PCMan洪任諭原本是台北榮總的內科醫師,這學期考上台大資工所,目前就讀碩一。

不當醫生,改當工程師,超強!

有興趣的朋友可加入PCMan粉絲團,粉絲團內容都不是談技術,而是他在台大的生活。他這學期選的課真是多樣啊!

神人的世界,不是我們凡人所能想像的。





Mac升級到EI Capitan之後,Git不能使用的解決方法

昨天將Macbook升級到OSX EI Capitan,結果命令列模式下使用git會出現以下的錯誤:
xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools), missing xcrun at: /Library/Developer/CommandLineTools/usr/bin/xcrun
在上網搜尋的過程中,發現不少人在升級OSX EI Capitan後,都遇到類似的狀況。

解決方法是重新安裝Xcode developer tool,指令如下
xcode-select --install


 參考資料:El Capitain Broke My Developer Stuff! Here's How to Fix It



[遊記] 多倫多之市區亂逛

圖片
這是最後一天在多倫多,因為隔天要開車回紐約,最後一天沒有安排行程。就在多倫多市區隨意亂逛吧。
Riverdale Farm是在多倫多市區東北方的一個農場,本想進去參觀,可惜當天沒開。

Riverdale Farm旁邊是椰菜鎮Cabbagetown,這只是一個社區大小的地方,最早是愛爾蘭人移民居住的社區,因為家家戶戶都在家門前園種植花椰菜,所以有椰菜鎮的稱號。

椰菜鎮公園內的松鼠,這裡的松鼠都不怕人。




多倫多市區的道路,其實也沒有非常平坦,但還是比曼哈頓好多了

加拿大的郵筒
多倫多大學校區


多倫多地標,國家電視塔 CN Tower

美職藍鳥隊主場Rogers Centre,王建民曾在此出賽過

Tim Hortons是加拿大的麥當勞,現在被漢堡王併購了,加拿大到處都有分店,這裡的咖啡還不錯

最後一張,欣賞一下加拿大的楓樹吧!