[154] Apple 成就了 App Store 紅海生態?

前陣子,曾是開發人員的 Matt Gemmell 這篇〈Damage〉文章引起不少討論。 文中列出幾個 Apple 造成 App Store 生態圈低劣,對開發人員極度不友善但對黑蘋果極度有利的策略。底下截錄並提供我自己的看法: Target the largest customer base, so they get 30% of the biggest potential income. That means selling at a low price, because most customers will only pay low prices, and all customers prefer low prices.…

[153] JUCE Diary #14:Catch Test Framework

Catch 在 C++ 單元測試、自動化測試領域算是新兵。由於設計優良,使用簡便,近來頗受好評。JUCE 內建了單元測試機制,雖然大部分情況下比夠用還多,不過,為了避免落入「固步自封」的工程師死亡陷阱,偶爾還是要看看窗外的世界,弄髒手,動動腦。 JUCE 論壇經常出現高手分享自己的作品,昨天就看到 varx 這個把 Reactive-Extension, RxCpp 導入到 JUCE 的專案,太有才,改天一定要試試。不過,今天的重點不在該專案,原因是我挖了專案原始碼來看,發現作者用了 Catch 做單元測試,而不是用 JUCE 內建的機制。然後,使用 Catch 來做測試真的很簡單。底下說明使用方式(程式碼參考 varx 專案)。 首先,使用 Projucer…

[152] Memory #9: 專一辦休學回去唸高中是正解?

來台北唸五專,一到三年級住宿舍(四年級不能住,有故事以後再說)。專一上住 504 房,同寢室四位學長,都用功型的,結果來了一位存心要玩的學弟... 印象中,第一星期還沒有過完,其中一位四年級學長語重深長的對著我說:「學弟,現在休學回去唸高中還來得及,五專的未來的出路不是很好,你要想清楚...」 什麼情況?當時我有些納悶,追問他為什麼這麼想。大概只記得: 這間五專已經不像十幾二十年前那麼權威,學生競爭力不如以往,倒不如待在高中唸三年,打好理論基礎,未來攻讀碩、博士,再朝有興趣的領域發展。 當時壓根兒不會想回去唸高中,在台北沒人管我,而且人家說五專畢業後即可進入企業任職,早一點賺錢養活自己。要升學也有管道,應該不至於像學長說得那麼糟糕吧? 現在回想起來,如果當年留在嘉義,發展肯定會跟現在不同,至於是更好或更糟,誰說得準呢? 後來五專唸得不好,我對電子類,尤其是理論型的課提不起勁,雖然多次發奮圖強,最後皆以失敗收場。唯二能該提起興趣的,大概是計概跟體育課了吧。 記得那年電子學,我刻意坐在最前排,打算專心上課,好好做筆記。…

[151] Memory #8: 第一個程式作業是挫折

專二學過兩個程式語言——C and Pascal。記得那時期末考 Pascal 是用紙筆寫程式,不是上機考,那時不覺得瞎,現在回想起來真的是蝦小! 之後計概主修 C 語言,當時開發工具是 Turbo C。老師出的第一個作業讓我印象深刻,不是因為太難或很有啟發性,而是其實很簡單,但當時的我想破頭也寫不出最佳解。反觀同住宿舍的同學不到一小時就弄好了。當時的我受挫很深,差點對程式設計失去興趣。 那道題我記得是用巢狀 for loop 來解,好像是給定一個數字代表矩陣長度,然後由 1 開始計數,填滿矩陣後印出至螢幕。是的,就這麼簡單,當時我的竟然沒想到要用兩個 for loop 來解題! 所幸後來漸入佳境,期末作業是寫五子棋,雖然完成度不高,但過程體會到程式設計的樂趣,也為此種下軟體工程種子。記得當時老師要我們試著讓人跟電腦下棋,也就是「人工智慧」,當時太嫩,沒搞出什麼毛。 其他同學有人寫 RPG…

[150] Memory #7: 抽菸是一次十根才夠

從小,我是公認的「乖孩子」。成績好,又會幫忙家裡的事。但眾人萬萬沒想到,其實我骨子裡的反動因子一點也不少。有一天,被同學兼好友背叛,經歷了落地以來最慘的一次教訓... 小學五、六年級,有幾次跟班上幾個死黨學大人抽菸,也不是真的抽,就是吸一口然後嗆到,玩幾次後就不太有興趣了。 班上有位早熟成績又好的班花,不少人對她有好感,我也是其中之一。後來還因為她跟死黨翻臉,不相往來。關係惡化到最後,他竟然把我們一起抽菸的事告訴叔叔,然後就爆開來了... 記得那天下午,我在家看電視,老爸也在。叔叔突然來訪,我說有事要跟同學出去玩,結果叔叔把我攔住,說有事要跟我說。他跟我爸說我在學校抽菸,問我是不是真有其事。我承認,然後就被跪下了。 印象最深的一幕是,一輪毒打後,老爸拆開一包黃長壽(那時好像一包二十元的樣子),把十幾根香菸往我嘴裡塞,然後點火,要我大口吸。乾,是真的很難受,心理跟生理都難受。忘了最後如何「脫身」,總之是人生難忘的體驗。 這件事牽連了住隔壁的兒時摯友,真是過意不去。…

[149] Memory #6: 暗戀是苦甜滲半

「為什麼放牛班的女孩那麼美?」,這個問題困擾著國中時期的我。 我是一個「內斂」的男孩,一直到畢業,班上沒有人知道(或者是我不知道其他人知道)我暗戀「放牛班」的那個女孩。 「升學班」與「放牛班」位於不同大樓,兩棟大樓平行而立,我跟心儀的女孩同一年級,她的教室在隔壁大樓同層樓,同一個區塊。因此,要補捉到她的身影不是件太難的事。 有一回,對面棟幾位女孩打掃時間竟玩起相互潑水的遊戲,「夏天+學生制服+潑水」...。很自然地,升學班這邊窗戶佔滿了整排「書呆子」爭相目睹這美好風景。我的她也在玩水耶... 有時候,我會藉故在「正常」(升學班要留下來課後輔導)下課時間到「放牛班」必經路線等她,只為一睹女孩風采。有一次,等著等著,女孩來了,天上卻倒下了一盆髒水——愛惡作劇的同班同學故意整我,當時,真糗! 我就這麼默默注意著女孩,一直到畢業前夕...有一天,決定打電話給她—…

[148] 在傳統的 Desktop app 裡呼叫 UWP API

緣起 前陣子有個專案需要在 Windows 10 的環境用程式去控制 Bluetooth(藍牙)Radio 開關。專案初期評估此功能屬低技術門檻,應有現成的 Windows API 可以用。不過,事實證明我太天真了。最後是利用 UWP API 來解決,細節我會另撰文說明,本章主要說如何在 Desktop app 裡呼叫 UWP API。 Desktop app 能夠使用 UWP API 嗎? 答案是肯定的。一直以來,微軟對於軟體開發介面的設計態度是儘可能保持往前相容,這麼做對開發者友善,這是優點。缺點是包袱多,走不快。這方面微軟的「取捨」做得不錯。 不過,不是所有的 UWP API 都能被 Desktop app…

[147] Memory #5: 英文課

我國一(精確一點應該是國一入學前的新生輔導課)開始學 ABCDEFG,之後對英文課印象最深的一幕是:英文老師出了一個當時課本沒教的題目(不算太難的課外題),全班問了一輪(第一輪我沒想到答案),連公認最聰明的同學也答不出來。 後來我想到了答案,由於不太肯定便沒有主動舉手。英文老師似乎看到我欲言又止的模樣,要我到台上寫答案。於是,我在黑板上填了 whom(關係代名詞,受格)。被英文老師稱讚後,全身輕飄飄,後面發生什麼事,我也不記得了。 關於「公認最聰明的同班同學」,他一直是我的競爭對手(良性競爭)。我國中畢業便到台北唸書,較少回南部。幾年後老弟告訴我,我輩全校第一名畢業的同學,智商高人一等的他,竟然出車禍往生了... 這麼厲害又努力的人(我看過他那讀到破爛的參考書,那不是常人做得到的),前途無可限量,沒想到...唉,可惜。…