[開箱] 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,可以看到該片段的程式碼,右方會有程式邏輯的樹狀圖。




延伸閱讀





分類: ,

Postman Web API 測試工具 (新版)

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

先介紹一下Postman這個Chrome plug-in,它用於任何Web API的測試,它可以送HTTP Get或Post的請求給欲測試的end point。並顯示API回傳的結果,以及執行所花費的時間。回傳結果不管是JSon或XML格式,Postman會將格式調整成容易閱讀的樣式。

使用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個Class
  • Regular Expression,限制是每分鐘不可超過80次
  • Count operation查詢,限制是每分鐘不超過160次
  • 地理位置查詢不可以用OR
  • skip和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可以省下很多程式切換的時間。



例如,我從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對開發者最友善的部分。

排程設定

程式佈署成功之後,回到Resources頁面,會多出一個Free dynos,但Heroku Schedule不會用到這裡的dyno容器,不需要開啟它。在下方的Add-ons,搜尋「Heroku Scheduler」,找到之後,將其加入。

加入Heroku Scheduler Add-on之後,點選進入Heroku Scheduler管理頁面。這裡會列出所有已排程的工作,第一次進入是空的,我們可以「Add new job」來增加新的排程。
 點選「Add new job」之後,會出現下面的畫面。以node.js為例,這裡的指令只需要輸入bin資料夾裡的程式名稱(檔名),如果程式有參數,將參數加在後面,除此之外不需要其他的指令。

排程時間,最短間隔只允許十分鐘執行一次。

排程時間小技巧:破除十分鐘執行一次的限制

Heroku Scheduler最短只能十分鐘執行一次,但如果我要五分鐘執行一次,怎麼做?辦法是人想出來的,排入兩個排程,兩排程的時間相隔五分鐘就行了(見下圖)!但要注意,若排程執行過久(超過五分鐘),造成有兩個程式同時執行的狀況,程式邏輯本身就要考慮到程式不要互咬,例如原本是寫入一個temp table,現在就需要兩個temp table。

查看執行紀錄

Heroku Scheduler無法從網頁上查詢城市的執行紀錄,只能透過Heroku Toolbelt用戶端開發工具下指令來查詢,指令如下:
heroku logs --app 

結語

Heroku Scheduler雖然不如之前介紹過的IronWorker有強大的網頁介面,但這個服務完全免費,非常適合大量批次程式的執行需求。不過,Heroku本身是建構在AWS上,若AWS不穩定會連帶影響到Heroku的所有服務,例如2015/9/20就發生過服務中斷七個小時的紀錄。不過雲端服務本來就不是最穩定的,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 "node-0.10"
exec "server.js"
file "package.json"
build "npm config set strict-ssl false; npm install --production"
full_remote_build true

以下是Python的worker檔範例
runtime "python"
stack "python-2.7"
pip "geocoded" #欲使用pip安裝的package
exec "server.py"
full_remote_build true

當程式和設定檔都就緒之後,最後是執行佈署的動作,可以用以下指令完成佈署。指令中的server為專案名稱。
iron_worker upload server


步驟三,是告訴你如何使用指令或程式做批次排程,如果沒有特殊需求,這個步驟可忽略,因為可以直接透過網頁去設定。

設定批次時間

程式佈署成功之後,再來要設定排程時間,從Scheduled Task頁簽進入後,點選右邊的行事曆圖示。

這裡可以設定排程時間,最小間隔可以設定到一秒跑一次。

查詢執行結果

從Tasks頁簽可以查看程式過去的執行狀況,程式執行成功或失敗的紀錄,這裡的資料只會保留一個月。
點選數字可查看明細,這裡會列出程式執行的起訖時間和總執行時間,點選最右邊的圖示,則會列出詳細的Log,以node.js來說,只要程式裡用到console.log印出debug結果,都會顯示在這裡。
如果程式執行過程出問題,IronWorker還會主動將錯誤Log寄給你。

結語

如果有少量批次需求的話,使用IronWorker是非常不錯的選擇。它的穩定度和服務也都不錯,使用一陣子之後,我還收到CEO來信詢問狀況,雖然想也知道不會是CEO本人的來信,但用戶收到CEO的來信,滿意度還是大加分啊。

從DevOps的角度來看,IronWorker可以隨時修改批次設定,也能隨時查詢批次程式的執行狀況,這一切只要透過網頁就能做到,對工程師來說相當方便。也就是說,只要能連上網路,隨時都能修改批次設定和看Log,只差在不能佈署程式。





分類: ,

如何關閉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依然賣得很好。所以賈伯斯的現實扭曲立場,雖然現在已經對蘋果高層不太管用了,但仍然足以影響果粉。

參考資料








分類:

啥?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是加拿大的麥當勞,現在被漢堡王併購了,加拿大到處都有分店,這裡的咖啡還不錯

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


分類: ,

Copyright © Andy Cheng

Distributed By My Blogger Themes | Blogger Theme By NewBloggerThemes Up ↑