[遊記] 夏威夷歐胡島 杜爾鳳梨園 Dole Plantation

當初規劃行程的時候,沒有想過要到Dole Plantation,來到這裡是個意外。因為第一天開車上路,不會設定租車公司的GIS,GPS導航規劃了跟我預期不一樣的路,無意間經過Dole Plantation,其實是想借廁所,就順便進去參觀了。

Dole Plantation開在高速公路旁,就像休息站一樣,有賣紀念品和食物,也有給觀光客乘坐的遊園小火車。入園不需要門票,只有坐小火車才要買票。

夏威夷的土壤土質適合種植鳳梨,所以Dole最早是從夏威夷開始發展的。在Dole Plantation戶外有小型鳳梨田,展示許多品種的鳳梨。





這顆叫做彩虹樹(Rainbow Tree),是一種桉樹,特色是樹皮有五彩繽紛的顏色,這種樹在台北植物園也看得到。

夏威夷到處都看得到雞在路上亂跑



Dole 64-1550 Kamehameha Hwy Wahiawa, HI 96786

分類: , ,

[自製APP] Now Weather (本APP暫時下架)

最近在研究一些新東西,就順手寫了這個氣象應用。市面上的氣象APP很多,可是功能多又複雜,我寫的這個氣象APP功能很簡單,只會顯示現在當下的天氣,搭配背景來自於Flickr的照片,會隨著天氣的不同而變換當時天氣的照片(如果現在是下雨,會顯示下雨的照片,多雲則會顯示有雲的照片,以此類推)。



這個APP以實驗性質居多,未來還會增加一些功能,主要想推到台灣以外的用戶,以英文版為主,技術細節就先不多說,日後會再分享,有興趣自己去看Code吧!

Google Play
Github

分類:

Gartner對於DevOps的分類

有鑑於DevOps的分類仍無既定的依據,2014年Gartner分析師在部落格上發表了一張圖,希望用圖示來說明DevOps的內容與關連性,並將DevOps以人、流程、技術、文化四部分來分類。你應該曾經聽過持續整合,持續交付,測試自動化等名詞,依照Garner的定義,這些名詞都是與DevOps相關的實作項目。


Source: Gartner


分類:

職場三寶:魯蛇、廢柴與溫拿

好吧,先提醒這篇是廢文,沒空看廢文的人可以左轉離開了。

在我短暫的職涯中,發現職場有三種人的存在:「魯蛇、廢柴、溫拿」,我叫他們職場「三寶」。先說,用魯蛇和廢材之詞絕無輕蔑之意,只是便於解釋,也沒有任何隱射之意,我只是看了郭董罵人有感而發而已。

分類: ,

[閱讀筆記] Evernote超效率數位筆記術. Best技巧提升版 : 如果我當初這樣做筆記就好了

我其實不太看教軟體的工具書,因為市售工具書的內容多半是「手把手教學」,那還不如直接讀使用手冊。可是異塵行者的這本書寫得很用心,所以決定發文推薦一下。


這本書的內容不是Evernote的操作教學,作者教你用新的思維在Evernote上做筆記,同時也分享了多種他自己使用Evernote做筆記的撇步。簡單說,這本書著重在做筆記的方法,不是工具的使用。

我自己之前使用Evernote一年多的時間,也只會用最基本的功能,看了這本書,才知道原來Evernote可以幫我們做這麼多事。Evernote具有文件管理、工作管理、時間管理等能,也是目前市面上唯一具有這三大功能的筆記軟體,沒有之一。有了這三大功能,加上它前陣子推出的Work Chat,基本上就是一個相當完整的專案管理協同平台。

多年前,我原本在規劃團隊內部的文件管理平台,當時的需求有:
  • 文件可以多人編輯
  • 要有文件版本衝突的處理
  • 文件不需要版控,但要能知道最後是誰修改的
  • 文件可以發佈成唯讀模式讓沒有帳號的使用者看
  • 有基本的文件分類和搜尋功能
當年評估了多家產品(包括Google Doc企業版Office365、OneNote + SharePoint等),但因為成本與功能的考量而沒有建置。以目前Evernote的功能來看,確實適合做為內部使用的文管平台。

說到工作管理,前陣子開放一般人申請的Google Inbox,其實也想打造個人化的工作管理平台。Inbox把工作管理及時間管理的概念整合到Gmail用戶端,這樣的創意很不錯,但發明人的想法太先進了,企圖重新定義電子郵件的使用,而據說Google內部的email client已經換成Inbox。我雖然也用Inbox,但就只是用來讀寫email而已,對它的新功能實在不大能適應,不過Inbox和Google Now的整合實在很方便。

回到Evernote,目前它的免費版本已經開放分享筆記的編輯功能,這以前是付費版才有的功能,除非你的筆記有很多圖檔或照片,否則免費版本一個月60MB的容量應該夠用。



分類:

我對Mo PTT事件的看法

幾天前Mo PTT APP發生了屏蔽對手JPTT廣告的事件,詳情不解釋,請參閱底下的文章。

這個事件沒有違法,只有道德問題,也使得PTT鄉民們震怒,因為PTT有許多潛水的記者,導致這件事也上了各家媒體。
圖片來源:TechNews

因為手持裝置不容易用Telnet連上PTT,而Mo PTT有Android,iOS和WinPhone的版本,它的市佔率極高,光是在Google Play的下載量就超過一百萬次。我自己也是Mo PTT的用戶,從一個開發者的角度來看,PTT的用戶「黏性」很高,重度使用者幾乎是無時無刻掛在上面的,因為這樣特殊性,我認為Mo PTT的Page View超高,我個人估計每個月的廣告收益應該有六位數台幣以上。據說因為每個月有這樣的收入,Mo PTT作者已從原公司辭職,專心開發Mo PTT。有這樣穩定的被動收入,對一個開發者來說是非常理想的狀況,可是Mo PTT作者居然高調承認自己屏閉對手廣告的行為,滿愚蠢的。應該更要謙悲、謙虛、低調才是。

雖然這種屏蔽對手資訊的行為很多公司都在做,可是只能低調的做,絕對不能說,萬一被抓包,只能承認然後道歉,一且都是為了商譽和風評。Mo PTT經過這次事件之後在各平台的評價大跌,也損失的不少用戶,不過因為市占率實在是太高了,我認為對其影響很有限,畢竟目前回歸到功能面來看,還是Mo PTT比較好用(Mo PTT是Web APP,卻可以做到效能和功能兼具,非常不簡單)。甚至,這個事件反而讓Mo PTT和JPTT都得到了絕佳的曝光,與免費宣傳的機會。

然而,這個事件也間接曝露出PTT的授權問題。PTT是一個讓大家張貼自己想法的平台,但文章版權是屬於站方,或是作者的?如果記者未經同意擅自拿去使用,是否有侵權的問題?如果蘋果日報記者可以拿PTT文章去刊登,不算侵權,那我寫APP去取用蘋果日報的新聞,為何是侵權?這些都是有爭議之處,再者,PTT位於學術網路,照理來說是歸屬於學術單位,不是一般的法人機構,這又讓這個問題更加複雜。另外,內容所有權不管屬於作者或站方,APP能否將其使用於商業行為(放置手機廣告獲利),也是一個模糊地帶。

列出了好多沒有解答的問題,實在好煩,只有怒刪Mo PTT洩忿了。


更新:Mo PTT作者道歉了


分類:

夏威夷旅遊行程規劃

我一直很想去海島旅遊,雖然巴厘島、關島、琉球離台灣都不遠,可是我比較想的海島只有夏威夷。

其實去年美國行就規劃了中間在夏威夷停留,因此還買了夏威夷航空的機票,無奈計劃趕不上變化,去年四月夏威夷航空停飛台北往返夏威夷的班機,所以夏威夷旅遊延遲到今年才去。

分類: , ,

[閱讀筆記] 資訊遊俠列傳

這本《資訊遊俠列傳》和資迅人在1994年前後出版的另外兩本書,《我的電腦探索》和《世紀末軟體革命》,是我在大二看過的書。當時我只是個112的冷門科系學生,對於未來沒有什麼想法,看了這幾本書,才確立自己日後的目標。


《遊俠列傳》原是PC Magazine中文版的連載專欄,賀元後來將專欄文章集結成冊出版了《資訊遊俠列傳》。當時候矽谷的資訊業才在起步階段,WWW還沒有盛行,而微軟比爾蓋茲的成功已經是家喻戶曉的事,國外軟體業的強者已有一片天地,台灣當時則是較重視硬體產業,也感謝有這本書,讓我們這些當時喜好軟體的學生有個依循的目標。

前陣子媒體報導的台灣十大電腦高手,其來源據說是這本書。事實上,比較明確的說,他們是技客(geek),也是大家口中的「強者我朋友」,這些資訊游俠的共通點包括:
  • 對電腦有極大的興趣
  • 積極學習
  • 新知樂於分享
  • 對資料收集和整理有自己的一套方法
  • 閱讀領域廣泛
這些共通點數十年不變,一如今日你身旁的強者。

近日重讀此書,發現這些書中人物當中,很多人是受到Apple II的啟發,自己動手拆裝電腦,才開始對電腦產生濃厚的興趣。不同於今日的蘋果產品是不可拆卸的,當年的Apple II具有擴充槽,外殼也可以拆卸。這一切都是當初Apple II的設計者Steve Wozniak的想法,據說他為了這個功能,還跟賈伯斯大吵一架,因為賈伯斯堅持使用者是不可以自己拆裝電腦的。也多虧有Wozniak的堅持,才得以造就今日的電腦強者。

我好奇的上網搜尋書中人物的近況,大多數的人都仍從事資訊相關工作:

劉燈
  • 個人網站:Lukhnos (內有部落格網誌,但部落格已不再更新)
  • 2007~2010開了一間公司Lithoglyph,參與KKBox Max /iOS版本的開發
  • 曾參與Mac小麥注音輸入法的開發

侯捷(侯俊傑)

施威銘
  • 此人不需多介紹,他是旗標出版社老闆,至今仍以施威銘研究室為名出版電腦書

葉秉哲
  • 現為Gogolook架構師
  • Docker專家,同時也是Docker講師

黃志賢
  • 交大網路策進會發起人之一
  • 查不到此人的近況,只查到他最後是就讀交大資管所碩士班


楊基載:華苓科技副總經理

陳俊霖:只查到2001年擔任艾揚科技技術長

陳官辰:後來去念哈佛,現在在工研院,活躍於Ruby開發社群

《我的電腦探索》作者群


賴明宗:只查到他的PTT帳號是reader

戴凱序
  • 根據他的個人網站,目前在芬蘭赫爾辛基的歐盟化學管理局工作
  • 美國加州大學化學博士
  • 台文標準Taiwanese Protocol發明人

  • 後來出國念哈佛數學系
  • 美國羅格斯大學電腦科學系助理教授(資料來源 維基百科

唐宗漢
  • 此人的故事非常傳奇,部分故事在維基百科上有刊載,她學歷只有小學肄業,卻曾開了三家公司,現在已經退休不工作,近年投入開源社群及參與g0v
  • 唐宗漢後來變性改名唐鳳,是Haskell語言與Perl 6語言的核心貢獻者之一
  • 這幾年參與g0V零時政府的活動,是萌典主要開發者
  • 網路上有篇文章「早熟的黑客」,文章中的Autrijus就是唐鳳

心得:高手不可培養,只能自我成長




分類:

DevOps 做好自動化,遠離肝硬化

DevOps的定義

在還沒有DevOps這個字出現之前,這樣的概念早就成形,當時人們使用這些名詞:Agile Operations and Infrastructure、Agile System Administration、Dev and Ops Cooperation。

在2009年的Velocity研討會上, Flickr的兩位工程師John Allspaw和Paul Hammond發表了一個演說《10+ Deploys Per Day: Dev and Ops Cooperation at Flickr》,分享Flickr內部開發人員和維運人員合作的實例,讓他們可以在一天內做完十次的部署。這也是DevOps第一次向世人展示出它的威力。

維基百科引用了2009年Rajiv的解釋和一張經典圖例來定義DevOps:
『DevOps(英文Development和Operations的組合)是一組過程、方法與系統的統稱,用於促進開發(應用程式/軟體工程)、技術運營和質量保障(QA)部門之間的溝通、協作與整合。』


這個定義翻成白話來解釋,就是「不同的團隊一起合作」。相信這個神邏輯大家早就知道了,但DevOps不只是這樣而已。它真正的重點在於,必須讓溝通、協作、整合的「文化」根植在組織內部,並落實到每個人的日常工作上。

從系統開發到維運上線都是DevOps可施力之處,通常可以包括以下範疇:
  • 程式部署
  • 效能監控
  • 日誌管理
  • 版本控管
  • 備份管理
  • 各種環境的建置
  • 各種測試
  • 問題追蹤

沒有自動化,遲早肝硬化

儘管有這麼多的工作要執行,老闆並不會因此加派人手,所以落實DevOps,必須盡一切可能做到:自動化,自動化,自動化,因為很重要所以要說三次。如果沒有自動化,遲早會得肝硬化。

DevOps的目標是「借由工作自動化,來提升團隊工作效能,減少錯誤,進而縮短產品交付周期」。必須盡量把重複性高的工作自動化,因為重複性的工作交給人工去做,不但沒有效率,而且容易出錯,以下舉兩個例子來說明自動化的優點。
  • 程式的部署常常需要重複執行,而且環境配置可能很複雜,如果交由人工執行,若某人前晚打電動太晚睡,部署時突然晃神,少執行一個步驟,程式部署可能就失敗了,如果交由程式自動執行,比人工有效率且可靠得多。
  • 使用者回報正式環境發生嚴重錯誤,團隊收到問題之後,通常要花大半天的時間追查問題,再花更多的時間修正問題。如果可以在系統發生錯誤當下,自動把錯誤日誌以簡訊方式發送給工程師,工程師收到錯誤日誌後,可以很快知道問題的根本原因,進而修正問題,然後新版程式再依循持續交付和自動化測試的程序,很快就可以部署到正式環境。

自動化的迷思

然而自動化不是萬靈丹,並非沒有缺點或限制,以下是工作自動化的過程中,需要考量的部份:

自動化的工作通常沒有彈性

一般的自動化程式是以腳本方式人工編寫完成,然後由機器按步驟依序執行,通常只會有最基本的例外處理。自動化程式的設計通常不會有多大的彈性,如果臨時因為某個特殊需求,需要增加額外步驟,只能修改程式。然而,根據成本效益原則,自動化程式用於處理80%足夠多的工作,不必為了20%的例外狀況去做特殊設計,如果要做到100%有彈性的自動化程式,不如去研發自動化產品。

不是所有工作都要自動化

也是因為成本效益原則,不是全部的工作都要自動化,某些稀少或久久執行一次的工作,人工執行就好,不需要全部的工作都做到自動化。例如某些只有1%發生機率的測試案例,人工測試可能還比較有效率。

不能太依賴自動化程序

如果太過於依賴自動化,萬一自動化程序出問題,工作就會停擺,因為工作已經習慣交給自動化程序去做了,大家都不去學習如何用人工完成工作,所以沒有人有足夠的知識和經驗來完成這份工作。這就像你坐在Google電動車裡,在高速公路上Google電動車的自動駕駛功能壞了,會開車的人可以切換成手動駕駛模式繼續行駛,而你不會開車,只好在高速公路上等待救援。

工作不會因為自動化而被機器取代

不要害怕自動化後工作被取代,機器不會取代工作者的工作,反而可以減輕工作者的負荷,讓他們有機會可以從更高的層次去管理工作。例如QA測試人員不會因為測試自動化後就被裁員,他們可以把平日繁瑣的測試工作交由機器去執行,而有更充裕的時間撰寫測試案例,及思考與學習如何運用有效的測試策略來測試系統。



分類:

DevOps 矛盾大對決

從一個故事開始

人物:
芒果公司資訊部營運組 小白
芒果公司資訊部開發組 大目

小白:「大目,訂便當系統是你開發的吧,人事部的大頭剛剛打電話問,為什麼訂便當系統不能用,出現503 Service UnAvailable,有幾個工讀生等著領便當,可以幫忙看一下嗎?」

大目:「啊你麼幫幫忙,我又沒有正式環境的權限,你們昨晚是不是改了什麼設定?」

小白:「我們昨天晚上只有做資料庫備份」

大目:「啊是不是網路的問題,我剛剛FB好像也登不進去」

~五分鐘後~

小白:「我剛剛請網管人員查過了,網路現在正常」

大目:「還是上次你們部署的時候漏了什麼東西?」

小白:「上次部署已經是一週前的事了,何況你們也測過沒問題。可以看一下Log嗎?」

大目:「啊你麼幫幫忙,我又沒有權限可以看Log,你幫忙看一下」

小白:「好的,請問Log放哪?」

開發人員B:「我開發時都放自己本機的D槽,我哪知道正式環境的Log放哪,那是Linux耶」

~五分鐘後~

小白:「Log找到了,裡面有一堆Error,寫了Null Pointer Exception之類的訊息」

大目:「NullPointerException,啊我想那應該是微軟的問題」

小白:「是嗎,我猜應該是你程式的問題吧,可以檢查一下程式碼有沒有異常嗎?」

大目:「我手上的程式碼改到一半,和正式環境的不一樣,你可以把正式環境的index.html copy給我嗎?」

~五分鐘後~

小白:「index.html寄給你了」

~五分鍾後~

大目:「我在我電腦上測試都正常耶」

小白:「那怎麼辦?」

大目:「我們再觀察看看有沒有其他人遇到同樣的問題好了」

~一周後~
問題找到了,原來是大目程式的Bug。

大目:「上周的問題已經修好了,現在可以幫我把index.html放到正式環境嗎?」

小白:「好」

大家對上面的場景應該不陌生,工作中也許曾經聽過類似對話。而聰明的你應該察覺到這裡面的對話似乎怪怪的。

困惑之牆

一個系統從開發、上線到正式營運,一般會需要兩種角色的相互合作:開發團隊、維運團隊(有些公司稱為IT),這兩種角色在不同的公司中有不同的編制,也許是同部門下的不同團隊,或者是兩個不同的部門。

wall of confusion
圖片來源:Dev2Ops.org

維運人員和開發人員在專業背景、技能、以及工作執掌都大不相同。

維運人員必須確保正式環境的運作正常,他們信奉乖乖大神,希望正式環境沒事就不要去動它,否則極可能被魔神仔破壞,為了怕系統有狀況,有些人必須24x7待命,深怕半夜接到電話。他們做事保守,要求所有變更作業依程序辦理,他們當中很多人是SOP魔人。

開發人員負責系統變更及錯誤的修改,他們處於專案組織的低下階級,得經常接受專案經理和使用者不人道的需求,總是不能拒絕,常常因此熬夜加班,因為他們被告知的工作期限總是ASAP。

這兩群人在辦公室或許坐的很近,但除非是程式部署或系統有問題,否則沒事不會往來,所以不熟悉彼此的工作內容,就像中間隔著一道困惑之牆。也因為工作習性差異太大,一方看重系統SLA,另一方急著要解決Bug;一方懼怕變更,另一方急著要變更,所以爆發衝突在所難免,不時上演矛盾大對決。

分類:

[Android開發教學] 在Android加入地圖與標示

這篇要分享如何在Android APP加入Google Map和標示地點。

申請Google Map API Key

首先進入Google Developer Console,新增一個新專案


從選單進入API,搜尋「Google Map」,下方的搜尋結果中點選「Google Map Android API v2」

然後按下「Enable API」按鈕,將「Google Map Android API v2」啟用

回到右邊選單進入Credentials功能,按下「Create new key」新增一組API Key,記住右邊顯示的API Key


AndroidManifest.xml

回到Android Studio,打開AndroidManifest.xml,有兩處要新增

加上Google Map API Key
<meta-data
          android:name="com.google.android.maps.v2.API_KEY"
          android:value="API Key" />

增加資料寫入權限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

Layout

在Layout加上Map Fragment
<fragment
        android:id="@+id/map_fragment"
        class="com.google.android.gms.maps.MapFragment"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"/>

Java Code

回到程式,首先當地圖載入時,要將位置置中,如果沒有這個動作,地圖載入後會是一張世界地圖,程式裡的變數toLat和toLng是置中位置的經緯度,15則是room-in值,可視需求替換。
Double toLat;
Double toLng;

GoogleMap map = 
     ((MapFragment) getFragmentManager().findFragmentById(R.id.map_fragment)).getMap();
map.setMapType(GoogleMap.MAP_TYPE_NORMAL);
map.getUiSettings().setZoomControlsEnabled(true);

CameraUpdate center=
        CameraUpdateFactory.newLatLngZoom(new LatLng(tpLat, toLng, 15);
map.animateCamera(center);


接下來,在地圖上標示位置(下面範例將現在位置標示成黃色,目標位置標示成紅色)
//標示現在位置
MarkerOptions markerOpt = new MarkerOptions();
markerOpt.position(new LatLng(fromLat, fromLng));
markerOpt.title("現在位置");
markerOpt.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW));
map.addMarker(markerOpt).showInfoWindow();

//標示目標位置
MarkerOptions markerOpt2 = new MarkerOptions();
markerOpt2.position(new LatLng(toLat, toLng));
markerOpt2.title("目標位置");
markerOpt2.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
map.addMarker(markerOpt2).showInfoWindow();

最後,在兩點之間畫上一條線
PolylineOptions polylineOpt = new PolylineOptions();
polylineOpt.add(new LatLng(fromLat, fromLng));
polylineOpt.add(new LatLng(toLat, toLng));

//線條顏色
polylineOpt.color(Color.BLUE);
//線條寬度
polyline.setWidth(10);
Polyline polyline = map.addPolyline(polylineOpt);

最後的結果會是這樣

分類: ,

我到HTC的面試經驗

最近HTC的新聞,讓我想起幾年前到HTC的面試經驗。

我有兩次到HTC面試的經驗,第一次是在2011年中旬,當時他們的股價超過一千點,面試的地點是在寶橋路的舊大樓,舊大樓真的非常舊,連我面試的會議室牆上都還有塗鴉痕跡。當時面試的主考官是個老外,我是到場才知道,這場面試是為了老外來台灣出差,臨時才約的,面試內容已經不記得了,只記得是全場英文問答,後來結果是無聲卡。

分類:

Homebrew作者到Google面試,結果被打臉

Homebrew是Mac上的套件管理工具,有90%的Google員工使用它。

Homebrew的作者Max Howell應徵Google的iOS工程師的職位,兩週前他到Google面試,被問了一題反轉二元樹,就掛在白板上,連他的強項iOS的問題都沒機會回答,就GG了。



這告訴我們,雖然你在某個領域獨領風騷,不過基礎還是很重要的。


延伸閱讀:


分類:

[Android] 如何在Developer Console新增開發者頁面

2015 Google開發者大會上發表了Android開發人員可以在Developer Console頁面新增自己的開發者頁面,用以在Google Play上宣傳自己開發的App。這個功能現在已經在Developer Console開放使用了。

首先,必須事先設計兩種格式的PNG圖檔:

  • Developer Icon: 512 x 512
  • Header Image: 4096 x 2304

然後進入Developer Console,選取Settings,會看到下方多了「Developer Page」的選項,進入後按下「Get Started」開始進行設定。


設定畫面:

  • Promotional Text:輸入宣傳文字(支援多國語言)
  • Website:你的個人網站
  • Graphic Asset:將剛才準備好的兩個圖檔上傳到這裡
  • Featured App:此處可以選取你要宣傳的APP(只能選擇一個)




設定完畢後,會自動產生連結

點選進入後,可以連結到Google Play開發者頁面預覽剛才設定的結果。


延伸閱讀:



分類: ,

[遊記] 夏威夷歐胡島 Kailua小鎮與Kailua Beach

一般觀光客大多選擇Wakiki海灘附近的飯店,但我個人不太喜歡去人多的地方,加上有租車,後來選擇了歐胡島東部Kailua小鎮的一間民宿,最吸引我的是,這間民宿只離海灘五十公尺,走路五分鐘就會到Kailua beach,晚上還聽得見海浪的聲音。

Kailua小鎮是美國總統歐巴馬的故鄉,要前往 Kailua除了自行開車之外,也可以坐公車前往,不過夏威夷洲規定大型行李不可以帶上公車,如果要住在Kailua,自行租車會比較方便。很少觀光客會選擇住在Kailua,我們幾乎沒看到觀光客,連華人和日本人都很少見。

地理位置

從檀香山國際機場開車走H3高速公路,約半小時可以到Kailua小鎮

如果用GPS導航到Kailua海灘的話,一般會到Kailua Beach Park,這個公園有停車位,下車後走約兩三分鐘路程可以到達海灘。這裡提供一個私密景點,其實在Kailua Beach Park沿著N Kalaheo Ave往北開,會發現幾條岔路(如下圖紅框處)。

車開進岔路後,找個不擋路的路邊停下,往裡頭走就是海灘了,這是當地居民去海灘的方法
通往海邊的小徑

Kailua Beach及其南邊相連的Lanikai Beach號稱是夏威夷最美的海灘,我們因為就住在Kailua海灘旁邊,早上出門之前,和晚餐之前都會去海灘,比起在Wakiki人造海灘人擠人,這裡沒有觀光客。





這是用Android的全景攝影拍攝的



Kailua Beach Park
526 Kawailoa Rd, Kailua, HI 96734

分類: , ,

金絲雀部署 Canary Deployment

什麼是金絲雀部署?

金絲雀部署是一種測試策略,作法是在現有的正式環境之外,另外部署一個測試環境,在新功能發布到正式環境之前,可以將新功能發布到這個測試環境作為先期測試之用,並邀請部分使用者進行測試,如此可以降低新產品發布時的風險。

為何取名為金絲雀?

十七世紀的礦工,會帶一隻金絲雀進入礦場工作時,人類不意察覺二氧化碳的變化,當礦井內二氧化碳濃度升高時,金絲雀會先身亡,礦工以此作為礦井內的二氧化碳濃度監測指標。

哪些產品有金絲雀部署?

最經典的是Chrome的金絲雀版本(Canary Version),Google特別註明「膽小者請勿輕易嘗試」

分類:

[閱讀筆記] 走在夢想的路上


本書作者謝哲青,為大家熟知的印象是他曾是東森關鍵時刻的名嘴群之一,然而電視名嘴只是他踏入媒體圈的起步,他並不以名嘴自居。有難語症加上閱讀障礙的哲青,具有豐富的學識涵養,他是考古學和藝術史雙碩士,也是個專業導游,與歷史文化工作者,曾旅行世界各地八十多個國家。

我是從謝哲青幾年前初次主持廣播「哲青遊天下」,才開始接觸這個人,吸引我注意的是,他居然花幾十分鐘介紹博物館的一幅名畫,從畫作的作者、背後的歷史故事,講到畫作使用的材料和畫風,而聽眾甚至還看不到那幅畫,可見他藝術造詣之豐富與用心。

這本書是謝哲青的第三本書,相較於前面兩本書以歷史和旅遊為主題,這本寫的是他自己的故事(如他所說也會是最後一本)。提及他豐富的旅行經驗,以及在旅行、工作、生活中的感觸。這是用他的人生閱歷寫出充滿質量的書,字裡行間滿滿的都是故事。

最開始從他父親的一句話:『你可能不知道自己要的是什麼,但是你先要知道自己不要什麼』為起點。因為不知道自己要的是什麼,因此花了一年多的時間,以船員身分搭船環遊世界,跟航海王的魯夫一樣去追尋夢想。這句話也影響了他的一生。

他在書中提到旅行的經驗,從印度孟買的貧民窟、索馬利亞、去過北韓三次、覺得不丹和北韓一樣封閉、在巴基斯坦差點死掉、走過西域,遇到如《大唐西域記》描述的沙塵暴,在帕米爾、阿富汗的見聞,看到塔利班的作為、在羅馬尼亞掉護照...,後來他去念了倫敦大學亞非學院,才算是接觸到自己的興趣。而後來的故事,大家也都知道了,以前他不知道自己要什麼,現在終於找到他自己的路。

閱讀時還發現到,這本書的目錄文字編排深具巧思:
畫面擷取自博客來

以下節錄他在書中的段落:
『我們都對旅行懷抱過多的期待憧憬。總以為在路上,會想通些什麼,回來以後,馬上擁抱全新的人生,以為可以海闊天空,自由自在;所有離開前擱置不理的問題,回來後都會自然消融,迎刃而解,事實上,這是不可能的事。旅行的重點之一,在於返回之後,如何面對生活,那才是真正的蛻化成長。』


『旅行到了最後,我常想,人生最重要的,或許還是家人。就像一九五零年代,蘇聯太空人繞到了月球陰暗面,以長鏡頭拍攝地球,他真正想看到的,還是自己的家。』

謝哲青在博客來網站的專欄《皮夾裡的世界地圖》正在連載中。鈔票也可以說故事,超強
Der!

分類:

使用者體驗:專注需求,而非UI

我之前的工作主要負責後端開發,對於前端開發的接觸不算多,對於使用者體驗,我自認為瞭解的也不夠多。總覺得使用者是個視覺動物捉摸不定的動物,我們對使用者需求都不一定熟悉了,更何況是使用者體驗。

我所認知的使用者體驗,絕非設計好看好用的系統介面而已。一套效能差又年爛系統,就算是換上了華麗的介面,它就只是一個好看的爛系統而已。這就像是一個病人已經病入羔荒,要接上葉克膜,要找的應該是是熟悉心肺循環的醫師,而不是還在找皮膚科醫師要動醫美手術。
圖片來源:夢工廠動畫 《皮巴弟先生與薛曼的時光冒險》

一個UI各自表述

人稱UX之神的賈伯斯,他本身不會寫程式,也不會動手做設計。在他的腦海中始終有一個具體,但無法解釋的想法,透過蘋果設計人員實作出無數個產品原型,經過無數次的討論,才把賈伯斯的需求具體化成為產品功能。在設計期間,賈伯斯常常是今天滿意的設計,明天就看不順眼了;或者,昨天罵的很慘的設計,今天變得很欣賞。同樣一種設計,隔天喜惡大變。

可見設計是非常主觀的。當我們在抱怨使用者對於UI設計總是有很多想法,一直在變化,想想神都如此,何況是我們凡人。而且,當一個人對系統功能和業務需求都不熟悉的時候,UI設計就成了最廉價可以被挑惕的事了。

使用者需求或期望,傻傻分不清

我過去沒有機會參與真正的UX專案,可是曾經夢到過,某些號稱專注UX的專案,充其量是比較貼近專注「使用者期望」(User Expectation,也算另一個UX),就是某些權威級的使用者(通常是主管級)說什麼,我們就做什麼;他們要求按扭往上移一點,配色深一點,字體大一點,用字(wording)改一點,大家就配合修改,最後系統上線了,使用者覺得系統有按照他的期望去設計的,賓主盡歡,好棒棒!

可是,這不是使用者體驗吧!

不是只有UI

真正的UX,是建構在使用者的需求之上,是使用者操作過程當中的感覺,如果說使用者介面UI是人與產品互動的方法,那麼使用者體驗UX可以說是人與產品互動的感覺,它更在乎的是使用系統的整體感受,不只是UI而已。

當然,從上面使用者期望的例子來看,如果不按照使用者期望去設計,他們不爽了,使用系統的整體感受不佳,導致使用者體驗不好,那麼到底要不要管使用者期望呢?

回到UX的定義上:真正的UX,是建構在使用者的需求之上,是使用者操作過程當中的感覺。我想,使用者體驗仍需基於使用者的需求,也就是回歸到當初要建置這個系統的原始需求,是要解決什麼問題,而不要執著在系統介面和操作上鑽牛角尖。

賈伯斯有一句名言:「我討厭笨蛋,但我做的產品連笨蛋也會用」,所以從使用者需求出發,專注在使用者體驗,才能設計出笨蛋也會用的系統。

不要幫使用者想太多

在系統設計上,也不要陷入專家陷阱,我們總自以為是專家,最懂使用者的心,都會事先用專家的角度,幫使用者想到很多想做的東西。很多耗無用處的附加功能常是這樣出現的。

不可以犧牲系統效能和可維護性

使用者體驗不是最重要的事,不要因此犧牲系統效能和可維護性(maintainability),這三者之間如何取得平衡,是需要被討論的,必要時要妥協與取捨 (還記得前面爛系統的例子嗎),可維護性指的是系統整體的維護成本,講白話就是說,別人能否有效修改你寫的程式碼。

不是所有系統都需要UX

因為UX在實作上會造成額外資源的投入,短期內不一定看得見成效。如果預算有限,建議只針對營利產品加強使用者體驗,總要先在產品設計上討好消費者,以幫助公司獲利;行有餘力,才加強非營利、功能性的產品的UX,例如公司內部的請假系統,可以用就好,不就是請個假而已,還管UX,是要逼死誰,大公司老闆不也說過「不爽不要用!」

在關注使用者體驗的同時,也要留意以下幾點:
  • 裝置的轉變:除了網頁版之外,應考量到手機和平版等不同的裝置,有不同的設計。
  • 開發模式的轉變:各個階段都需要的使用者的參與,要注意使用者的反饋,再來修正系統。
  • 前端技術推陳出新,要多關注有助提升使用者體驗的新技術(或新的前端套件),才不致於自己刻個半死,結果發現有人已經寫好套件的窘境
  • 應多涉略不同的設計流派,如扁平化設計 、metro design、material design等,這些設計樣式是由專業設計師所設計的,背後都有學理基礎支撐,如色彩學、心理學等,是很好的參考樣板

分類:

[食記] 夏威夷歐胡島 蝦餐車 Fumi's Kahuku Shrimp

位於歐胡島東北方的Kahuku小鎮,沿途Kamehameha Hwy路邊有不少知名的蝦餐車,其中Fumi's Kahuku Shrimp是台灣人開的,據說他們的蝦子是自己養的。用餐時間人潮不算多,至少不像另一家蝦餐車Giovanni要排很久的隊。餐車旁邊有座位,可以內用或外帶。

有十二種口味可以選擇,菜單就貼在車上,點菜直接說編號,全部都是13美金,不需給小費。


#2 奶油蒜蝦是這家店的招牌,有十支蝦子和兩坨白飯,以夏威夷物價來說,13美金算是便宜的。
這是#4 辣味蝦

也有販賣飲料和烤玉米


Fumi's Kahuku Shrimp
56-777 Kamehameha Hwy
Kahuku, HI 96731

分類: , ,

[活動] Apps.Taipei行動應用好方便

Apps.Taipei最近剛上線,這是把台北市相關的手機APP應用集中成列的一個網站,他們最近舉辦一個抽獎活動,幫推一下!

結束時間:2015/06/23 
獎品:

  • 活動1:APP NEW發現 瑞典設計LightAir空氣清淨機、LG AKA耍個性智慧機、冰淇淋機、自動做菜機多項大獎
  • 活動2:打造你的APP城市拼貼 iPad Air、ZenFone 5、冰滴咖啡壺、吸塵器等多項好禮
活動辦法:請參考活動網址

分類:

[教學] 如何在GitHub建立靜態網站

如果想要發佈自己的網站,又不想花錢買網站空間,如果你的網站只有靜態網頁(HTML、 CSS、 JavaScript),可以考慮放到GitHub上。

以下是教學:
先在GitHub新增一個Repository,新增之後,進入Repository頁面,點選右下角的「Settings」

然後會看到Settings有個設定選項「Automatic page generator」,點選「Launch automatic page generator」按鈕

這個設定,原本是GitHub提供給各個Repository可以有自己的網頁,存放該專案相關資訊,並提供原始碼讓外界下載的。所以這裡會進入Repository的介紹頁面,不需修改,直接點選右下方的「Continus to layouts」綠色按鈕

然後,系統會產生預設的樣板以供選擇,因為這些自動產生的網頁等一下都要刪除,所以這裡直接按下「Publish page」綠色按鈕,讓它發佈預設網頁。網頁發佈之後,其網址可用下格式存取:
 http://<你的Github帳號>.github.io/<Repository名稱>

網頁發佈之後,Repository會自動增加名為「gh-pages」的分支(Branch)



如果切換到gh-pages分支,會看到裡面有前述自動產生的網頁

接下來可以用Git工具,將你要發佈的網頁上傳(Push)到這個分支上,在上傳之後,之前自動產生的網頁會一併被刪除。

而這個靜態網頁的網址一樣是:
 http://<你的Github帳號>.github.io/<Repository名稱>

以上是用程式自動產生的方式建立gh-pages分支,更專業一點,也可以透過Git指令手動建立。

GitHub靜態網頁還有一些進階功能,例如透過Jekyll產生網頁、設置DNS網域名稱等,更多功能請參考GitHub線上輔助說明文件

分類: ,

Copyright © Andy Cheng

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