
I was born in Taiwan. 1st job was working in China (Shen Zhen city). 2nd job was working in Singapore. 3rd job was working in Japan (Hyogo's Himeji and Mie's Yokkaichi). Next stop? Don't know yet, but I will keep walking. 出生在台灣,在中國工作過,後來又去了新加坡,然後又在日本的兵庫縣姬路、三重縣四日市做半導體工程師。 下一站是哪裡?我不知道,但我仍然要持續不斷的往前走! 有空的話看看月亮吧,他是一顆常常被忙錄的都市人所遺忘的星球。
Translate
2018年9月22日 星期六
WWDC18 - Session 703 - Create ML in Playground
WWDC18 - Session 703 - Create ML
Create ML
WWDC18 針對 Create ML 所做的說明。
現在可以用 Swift 在 Playground 上做出 ML model 囉,做出來的 model 可以直接放進 App 裡面囉。
2018年7月4日 星期三
2018年6月29日 星期五
我第二隻 App - 運彩數據分析
各位好,我第二支 App 上架了,是關於運彩的,裡面還有報牌。
不過現在最熱門的足球還沒做,我們怕做完足球就踢完了。
但基本的 MLB 和 NBA 都有。
地方的工程師需要五星好評,謝謝大家
不過現在最熱門的足球還沒做,我們怕做完足球就踢完了。
但基本的 MLB 和 NBA 都有。
地方的工程師需要五星好評,謝謝大家
2018年6月9日 星期六
在 Mac 上架設 Jupyter Notebook 環境
原文放在 Medium
連結在這邊
目前,我本身的職務裡面並沒有需要用到
Python 的地方,所以這一篇主要的重點並不是用 Jupyter Notebook 來做一個專案的主軸,重點是放在讓 Python
來對某些資料來做前處理,之後再讓你的專案去吃那些被處理過的資料,讓你的生活過的比較輕鬆一點。 Make your life easier !
因為 Python 社群已經具有各種強大的第三方庫,所以你很容易在裡面找到一個可以輕鬆對你的 raw data 做前處理的
library。如果沒有,你可以考慮用 Python 寫一個,然後放到 pip 上,讓這個 library
在你的領域能夠有所貢獻,說不定哪天因為太好用了,這個 library 就會發光發熱喔。
Life is short. You need Python! (人生苦短,我用 Python)

通常,安裝一個東西最簡單也最直覺的方法,就是連到官網,然後照著範例去做。http://jupyter.readthedocs.io/en/latest/install.html ,這就是 Jupyter Notebook 的官網,他很簡單的告訴你,因為 Mac 已經內建 Python 2.X 了,所以你只要直接打開你的「終端機」,然後輸入下面指令就可以安裝了。
pip install jupyter (如果你的系統沒有另外裝其他的 Python 版本,用這個)
pip3 install jupyter (如果你已經升級到 Python3,用這個)
但是你照著說明打入指令,你會得到 Permission Error.

為什麼照著說明來做,卻沒辦法安裝呢?
因為在
OS X El Capitan 以後,OS 系統加了 System Integrity Protection (SIP)
這功能。這功能預設是開啟的,這功能會鎖住所有帳戶且包含 root user 的權限,讓系統中重要的資料夾不會被更動。也因為 SIP 的這個邏輯,
jupyter 在寫入資料的時候系統會直接擋住,我在 OS High Sierra 的版本時,即使用了 sudo 也是沒辦法寫入的。要看蘋果官方詳細說明請點這裡。

知道問題是被
SIP 卡住,那解法就是找出更高層級的指令,把 SIP 關掉。但請記得一個原則,你只有在你知道自己要做什麼的狀況下,才去把 SIP
關掉。所以在這個例子,你知道你是要裝 Jupyter notebook 才關,那裝完後的任務和 SIP 已經沒有關係了,所以還要再進入系統層,把
SIP 開起來。
關掉 SIP 的方法。
- 重新開機
- 在開機時按住 command 鍵 + R ,這會讓你進入恢復模式。
- 在恢復模式下選擇 Terminal (終端機)

4. 在終端機輸入 csrutil disable,這樣 SIP 就被你關掉了。(打開 SIP 的指令就是 csrutil enable)
5.再重新開機,進入 Mac OS 後,你就可以使用 pip install jupyter 來安裝 jupyter notebook 了。
使用 Jupyter Notebook 的方法也很簡單。
- 在 Terminal 中先用 cd 指令進入你想要建檔的目錄 (如: Desktop)
2. 輸入 jupyter notebook 之後,你的 browser 就會開一個 jupyter 的頁面。
如果要在 terminal 下把 jupyter 關掉,就按 ctrl + C 就行了


而現在的
Python 社群,有兩個版本,而且這兩個版本的模組並不一定相容,甚致有可能出現了 A 模組只有 Python 2 有, B 模組只做了
Python 3。或者你只能用 Python 的某個版本才能做出你要的東西。像是 WWDC 18,蘋果的人在示範 Machine
Learning 的 curicreate 時,用的是 Python2,並非 Python3。而且我也是聽過有人在 2017
年的時候有說,Python3 訓練出來的模型,是塞不進 XCode 9 的。
所以為了將來準備,你最好讓 Jupyter Notebook 可以切換版本。在網路上我找到很多種方式來做,所以我就直接參考別人的做法。
先安裝各版本的 ipython notebook
pip2 install ipython notebook pip3 install ipython notebook
再使用各版本的ipython 執行下列指令
ipython2 kernelspec install-self ipython3 kernelspec install-self
這樣,你就可以在 jupyter notebook 開不同版本的 notebook 了
參考資料:
2018年5月19日 星期六
那些在 WWDC 18 Wallpaper 裡面的圖案,到底代表什麼呢?
今年的 WWDC 18 Wallpaper 裡面,存在很多不同的元件,這邊分享一下這些元件在 Apple Document 的名稱,以及他放在
線上 Document 哪邊。這篇並不會把所有 Wallpaper 上的元件都列出來,因為很多元件事實上在其他領域已經是非常常見的了。
這些元件是可以在 Apple document 裡面看到的。
歡迎點擊我看詳細
這些元件是可以在 Apple document 裡面看到的。
歡迎點擊我看詳細
WWDC 2018 網路預測大整理
每年的 WWDC 對開發者而言,都像是個強檔電影一樣,在那個日期前,有許多的猜測都會出籠。今年的 WWDC 會在 6 月 4 日開始,持續到 6
月 8 日,為期五天,地點會在 San Jose 的 McEnery
會議中心。不過,在倒數的前幾個禮拜,我們可以先來看看現在在網路上的預測有哪些。
我在 Medium 上寫了一篇文章,收錄了其他人寫的預測文
請點擊這裡!!!
我在 Medium 上寫了一篇文章,收錄了其他人寫的預測文
請點擊這裡!!!
2018年2月6日 星期二
歌曲知識王更新到 V2.2.0
「歌曲知識王」更新到 V2.2.0 囉
更新內容:
.UI bugs fix
.iPad 版本更新
目前 iPad 的 UI 還沒修改到最完美的境界,但現在開始,你已經可以從 iPad 上的 App Store 上直接下載囉。
↓下載連結
https://itunes.apple.com/tw/app/id1273605195
更新內容:
.UI bugs fix
.iPad 版本更新
目前 iPad 的 UI 還沒修改到最完美的境界,但現在開始,你已經可以從 iPad 上的 App Store 上直接下載囉。
↓下載連結
https://itunes.apple.com/tw/app/id1273605195
2018年1月27日 星期六
歌曲知識王 - V2.1.0 更新
我們的版本更新到 V2.1.0 囉。
這一次的更新,是為了下一個功能所做的前期準備。
下一次的版本,我們會增加每週的分數排行榜。
如果有下載過的朋友,請至 App Store 上更新到最新版。
或是你對這個有一些特別的想法,也可以到臉書粉絲團裡面留言。
↓下載連結
https://goo.gl/jQ9S65
↓臉書粉絲團
https://www.facebook.com/SongQuizApp/
這一次的更新,是為了下一個功能所做的前期準備。
下一次的版本,我們會增加每週的分數排行榜。
如果有下載過的朋友,請至 App Store 上更新到最新版。
或是你對這個有一些特別的想法,也可以到臉書粉絲團裡面留言。
↓下載連結
https://goo.gl/jQ9S65
↓臉書粉絲團
https://www.facebook.com/SongQuizApp/
2017年10月28日 星期六
歌曲知識王更新到 V1.1.9 了
App Store 連結:
https://itunes.apple.com/tw/app/id1273605195
V1.1.9 更新內容:
針對 iPhoneX 做 UI 的優化
同時,結算頁還可以重聽一次題目
這是遊戲的 Demo 影片,
現在有的題庫分別是 華語歌曲、台語歌曲、粵語歌曲、以及世界排名歌曲。
預計未來會增加各種特色曲目的題庫。
有興趣的人可以下載來看看唷。
中文版粉絲團:
https://www.facebook.com/%E6%AD%8C%E6%9B%B2%E7%9F%A5%E8%AD%98%E7%8E%8B-1778810945751055/
英文版粉絲團:
https://www.facebook.com/KingOfSongQuiz/
2017年9月23日 星期六
一個 typo ,讓整個 database 混亂了
分享一個開發時候沒注意到的小事,最後導致了 database 裡面資料混亂的事。
https://goo.gl/G3MSjg
連結是「歌曲知識王」,一個自製的 iOS App 遊戲。
當初在設定做使用者的資料結構時,在某一項 key 值中多打了一個 e。
可是另一頁的同樣資料,他 key 值卻沒有打錯。
https://goo.gl/G3MSjg
連結是「歌曲知識王」,一個自製的 iOS App 遊戲。
當初在設定做使用者的資料結構時,在某一項 key 值中多打了一個 e。
可是另一頁的同樣資料,他 key 值卻沒有打錯。
2017年9月15日 星期五
iOS 遊戲 App - 猜歌之王 King of Song Quiz
這是一個猜歌的 App
App Store 連結:
https://itunes.apple.com/tw/app/id1273605195
螢幕截圖:
現在是 v1.1.6
有在看這個版的朋友,麻煩廣一下
玩法很簡單,選擇題庫後,倒數三秒開始猜歌
每一首歌都有30秒內的試聽曲
在愈短時間內猜出,得分愈高
中文版粉絲團:
https://www.facebook.com/%E6%AD%8C%E6%9B%B2%E7%9F%A5%E8%AD%98%E7%8E%8B-1778810945751055/
英文版粉絲團:
https://www.facebook.com/KingOfSongQuiz/
App Store 連結:
https://itunes.apple.com/tw/app/id1273605195
螢幕截圖:
他是個猜歌遊戲
現在是 v1.1.6
有在看這個版的朋友,麻煩廣一下
玩法很簡單,選擇題庫後,倒數三秒開始猜歌
每一首歌都有30秒內的試聽曲
在愈短時間內猜出,得分愈高
現在有的題庫分別是 華語歌曲、台語歌曲、粵語歌曲、以及世界排名歌曲。
預計未來會增加各種特色曲目的題庫。
有興趣的人可以下載來看看唷。
中文版粉絲團:
https://www.facebook.com/%E6%AD%8C%E6%9B%B2%E7%9F%A5%E8%AD%98%E7%8E%8B-1778810945751055/
英文版粉絲團:
https://www.facebook.com/KingOfSongQuiz/
2017年5月8日 星期一
Swift & xcode 學習歷程 part6 - nil 和 optional
1> Swift 的語言裡面,有大量的驚嘆號。要了解驚嘆號,就要先知道 nil。nil 就是什麼都沒有,即使這個變數是 int,或是 double,他也可以是nil。nil 自己一個型別,獨立的一個。
2> 再看 Optional, 而為了向下相容 objective-c。所以他設定了 Optional。在早期的 obj-c裡面,在一個 function 執行,而他在執行的時候,如果需要回傳某個結果。假設是 int,如果這個程式是算的出來的,他就會回傳結果,但是有時候你會遇到算不出來的時候。此時會回傳 nil,不是回傳其他任何 type。
3> 但 swift 的語言架構,和 obj-c 是不一樣了,所以為了向下相容,所以他創造了一個 data type,叫做 Optional。使用的方式,就是加上問號。這就是相當於一個包裝,把某個變數包在裡面。讓他能出現 nil。
4> 所以當變數在做互相運算的時候,他一定要解開,因為 nil 的運算是有可能讓你的 app 炸掉。而解開的方法,有兩種
4.a> Optional binding, if let {}
或是
4.b> !
舉例來說:
Optional Chaining
UILabel?.text = “123”
這個 UI 是會先被檢查是不是 nil。如果是 nil ,這一行跳過,則不執行。如果己經不是 nil,就會執行。
if let 寫太多,事實上很差,如果你裡面有四個變數,那你就會出現四個 if let,會變成波動拳程式碼。
所以 swift 2.0 有加一個功能。
if let plustNText = plustNfield.text, let n = sth , let m = sth {
//這樣一次就可以解開四個變數
}
5> MVC 一種軟體開發的設計模式 Model, View, Controller.
Model:
軟體中的資料。通訊錄中的聯絡人“Line 的對話紀錄、遊戲裡面的排行榜分數。在我們的計數器裡面,他的變數名是 counter.
View
直接面對使用者
Controller.
負責控制Model和View之間的溝通,管理運算,可以想像成大腦
View Controller
通常控制一整個 App頁面,他是 App頁面的「大腦」
通常會有非常非常多行的code。
真的有必要的時候可以把部分的東西切分出來到獨立的 controller
----溝通方式-----
6> Outlet
Controller 藉由 outlet 來對 view 物件進行動作,所以 outlet 會設定為 controller 的屬性。
Target-action
當 view 物件發生特定事件 (event) 的時候會啟動。
7> 特別注意
AutoLayout & UIStckView
同步與非同步處理> 同步: 馬上程式會跑。 非同步: 按下去後,要等。
MKDirections
8> Auto Layout 一原點是在左上角
(0,0) (w,0)
(0,h) (w,h)
h和w 都是正值
9> Missing constraints > 沒有定義完成會出現的 errMsg
Misplaced views > 運算完的 view 和 實際大小可能不同。
10> 在 iOS9 新增了 UIStackView
在元件欄裡面
事實上還有一個 Vertical Stack View,可以裡面再塞基他的 label 或 slider 或 view。然後,他可以用 Fill 的方式,或是 equally distribution,你還可以用 spacing 去調整。這是一個很快做 layout 的方法。
2017年4月12日 星期三
Swift & xcode 學習歷程 part5 - 各種線上資源
Swift & xcode 學習歷程 part5 - 各種線上資源
1> 如果沒有靈感的話,可以去 coacoacontrols.com 去找,他連圖案都有,而且有附上GitHub連結。如果看到喜歡的,就去 GitHub 上,直接參考別人的程式碼怎麼寫。
2> 另一個教學網站, raywnderlich.com/
這個也可以,他有各種教學,也有各種 UI/UX 排版,動畫,特效。
3> xcode 原生支援 GitHub, svn. 在Xcode一打開的選項裡面,就可以找版控的。
4> 有各種模板,最簡單的當然就是 single view。
4-a> Master-Detail application. 這種 app,就像 mail,點左邊,右邊出現內文或細項。
4-b> Page-Based app: 就像 iphone 的主畫面。有多頁
4-c> Tabbed app: 就像 fb 那一樣,最下面會有一排 「 tab」 他有各種不同的畫面
4-d> Message App: 針對 iMessage.
2017年4月6日 星期四
Swift & Xcode 學習歷程 - Part 4 做出計算機的 model
Swift & Xcode 學習歷程 - Part 4 做出計算機的 model
1> 新建一個新的 swift 檔案,這個檔案就是 model。因為 lec 1 的內容,是把 sqrt 寫在 controller 裡面,pi 也寫在 controller 裡面。如果依照 MVC 的原則,運算符號的功能應該要切開比較好。
2> 新建的swift檔,並不需要 UIKit,只要 import Foundation,因為這個檔是 UI in dependent。
3> 在這個運算 model 裡面,是不用 class 的,這裡用 struct。
4> struct 並不是 ref type。 但 class 是 ref type。另一重點, struct 不用 initialize,這個是自動處理的。
2017年4月5日 星期三
Swift & Xcode 學習歷程 - Part 3 MVC
Swift & Xcode 學習歷程 - Part 3 MVC
講師建議所有的 iOS 都要使用 MVC 架構,即所謂的 Model, View, Controller。之所以分這些陣營,就是希望 app 在內部傳遞各種訊號的時候,團隊的各開發者仍然可以清楚他們之間的溝通管道。
1> Controller 可以直接送訊息給 model,沒有任何限制。 Controller 送訊息給 view 也沒有任何限制。
2> Model 和 view 之間是不能互相送訊息的。這類的訊息傳遞是不行直接發生的。
3> View 如果要送訊息給 Controller,如果是一個 UIBotton,可以想成是有一個 target 在 controller 裡, view 的動作就是直接射到那個 target。 而 ScrollView 則是一種「同步」的概念,裡面的資料則是用 delegate 的方式,讓 view 的資訊和 controller 同步。
4> view 是不擁有任何資料的,他只能 show 資料,這些資料都不寫在 view 的 class 裡面。舉例來說,如果你的 iPod 裡面有一千首歌曲,你要做個 list,而存放一份資料在 library 裡面,又一份放在 view 的 class 裡面,你就會有兩份資料。這不儘儘是效率的問題,而是這樣的設計概念是不好的。
5> 而 view 拿取資料的方式,則是用 data source 的方式,回去要求 controller 給資料。他也不一定一次要拿1000首歌曲的資料,也可以一次只要求10 首歌曲,如果使用者要後面的歌曲,則是之後再request 一次歌曲資料。
6> model 是 UI independent 的,所以他並不直接傳遞訊息給 controller。他用的是「廣播」的方式,而 controller 則是接收到訊號後,才會知道 model 有被更動過。
7> 這三個陣營是壁累分明的,因為這一套溝通系統一混亂 ,裡面所有的class 的溝通會全部亂成一團,這會讓其他成員相當難維護 code。
2017年4月4日 星期二
Swift & Xcode 學習歷程 - Part 2 先做一個 single view app
Swift & Xcode 學習歷程 - Part 2 先做一個 single view app
在台大資訊系統訓練班開始之前,看到資策會有開一個 ios app 的介紹課程,心寫來潮就報名了。講課的老師是一個常常出 iOS書的老師,現在常常接家教。
以下是節錄上課的內容。
1> app 的 icon,可以放兩張圖,大小要放到 60 pt。
2> 做一個 single view app,可以單純用 view 來拉。而圖層的概念可以和 powerpoint 的圖層是相同的邏輯。
3> 左方的檔案列表中,可以看到圖層上下關係,也可以在這邊調整圖層。
4> 這一堂課,只有3小時,所以我們唯一能完成的 app ,就是完全不寫 code 在裡面的 app。
5> 不寫code app 是真的做得到的,而據講師所說,他為了教學試範,還真的嘗試上架這樣的 app,而且還真的上架成功。
6> 一個頁面,就是一個 viewController 去控制,如果你想要多加下一個畫面,就是加一個 viewController.
7> 在 viewController 裡面,有一個 init 的選項,這個選項,決定了當使用者點進你的 app,一開始到底秀了什麼東西給使用者。當你所有的 viewController都沒有 init,那使用者點進去 app,就會是一片黑暗。
8> 一個任何 code 都不用寫的 app,最簡單就是介紹 xx 的app,而要讓使用者按下後能切換頁面。一開始先用 imageViewer 把圖案塞進去,然後再放一個隱形的 Button 在圖案上面。然後再用神奇的拉線 Segue 把這一頁連接到下一頁,這樣,你就能不寫任何一行 code ,就做出 app。
9> 另一種內建的換頁方式,就叫做 Navigator bar。最基本的款示就是 iOS 的 Setting 設定。他的想法就是一頁進來後,會蓋在上面那一頁,然後按「返回」,上面那一頁就會拿掉,回到前一頁。
2017年4月2日 星期日
Swift & Xcode 學習歷程 - Part 1 初探 Xcode 與 Swift
Swift & Xcode 學習歷程 - Part 1 初探 Xcode 與 Swift
在 Stanford CS193 的課程裡面,Michel Deiman 會把整個 iOS 分成四塊,但他在課程中有到,因為課程的時間,是不可能上完所有的,甚致連上完兩塊都有問題,所以,他會把教學的時間教放在 Cocoa Touch 那一塊。
從底層到表層,分別表列如下。
Core OS: 這一部分很底層,所以並不會教。
Core Service: 這一部分也是很靠近底層,所以也不教。
Media: 大部分使用者的應用都在這,影像、照片、聲音的應用都在這一塊,但這堂課沒時間講這一層的應用。
Cocoa Touch: Multi couch, Map kit, Camera。這些應用是這一系列課程主要會說的東西。
而這堂課程會用到的
工具: Xcode8
語言: swift
framework: Foundation, UI kit
Design strategy: MVC
而最最重要的,就是 Design strategy 一定一定要用 MVC。因為你不用 MVC 最後,只會讓你的 app mess up。
— 開始做計算機 —
每一次的第一堂課, Michel Deliman 都會快速的做出一個計算機的app給大家看。因為他製作的速度真的太快了,所以大家會看得很有意思。不過同時,他在講話的同時,手是不會慢下來的,所以建議各位有雙螢幕的話,還是另外開一個視窗,或是用另一個裝置去看影片吧。
這一點,我倒是蠻佩服現場的學生,因為當你在現場的時候,是不可能喊一聲「時間暫停」,然後老師就定格了,你的大腦、耳朵、手,都必須邊看邊學,才有可能跟上 Michel Deliman 的節奏。
Swift & Xcode 學習歷程 - Part 0 前言
Swift & Xcode 學習歷程 - Part 0
好久沒用 blog 了,接下來,會有一系列的文章,去紀錄自己學習 Swift 和Xcode 的歷程。而這一系列的文章,只是單純的紀錄自己的學習狀況,並不會有教學。如果是想切磋 Swift 的朋友,歡迎來信。
我自己使用的教材,是 Stanford 的 CS193,這一堂課的教授,使用的英文並不難,非常好理解。
而所謂的 part 並不是一天一天的紀錄,在一開始的時候,雖然想把每天學習的狀況都記下來,但後來發現,這樣的開發紀錄方式,並不適合用在「程式語言」上面。所以,我決定把學習的紀錄,用一個一個不同的階段,當我自己往前進了一些,然後完成了一個小的 project,我就會紀錄下來,自己會了什麼。
希望在半年後,或是一年後,我可以很有自信的說,我會了 Swift。
寫於 2017.04.02
Lin, Marvin
2016年9月23日 星期五
Python - 一個膠水語言
在經過這麼多種的語言之後
我選擇了 python
經歷過 java、 php、 還有 objective-c 之後
我很確定的是我喜歡 python,勝過其他種的語言
現在蘋果的 swift 還沒整個定型,即使過了明年
我覺得還是會大輻度改動
這邊就先不說 swift了
那為什麼是python呢?
或許就和他的設計理念和後來被其他人補上的各種模組有關吧
所以現在的python 變成一種 「膠水語言」,因為各方人士的貢獻,所以大部分的用途都有人寫模組。
想要撈股票,有google、yahoo 的模組可以用
想寫 gui 也有,要輸出 圖表也有,要寫網頁後端也有三種以上可以選。
我想這個就是「膠水語言」的媚力吧
你想要做出個什麼東西,基本上都有現成的模組。
如果沒有現成的? 那就自己刻一個吧
希望有一天,我可以不用再當伸手牌,能夠做出一些模組讓別人使用。
至於為什麼選擇python3呢?
和 python2 比,真的是缺東缺西,而且教學文也常常不能用,因為版本對不上。
但我在python3 的 cookbook 上看到一話話
「若你把眼光放到未來,你會發現 python3 提供了許多隱而不現的價值,比你想像的還要豐富」
但反過來說,python3 真的很不方便,因為很多模組都沒有。
嗯…
如果你看見什麼都沒有的天空,你會說什麼呢?
a> 這裡什麼都沒有耶!
還是
b> 這裡一點限制都沒有耶!
訂閱:
文章 (Atom)










