Translate

2018年6月29日 星期五

我第二隻 App - 運彩數據分析

各位好,我第二支 App 上架了,是關於運彩的,裡面還有報牌。
不過現在最熱門的足球還沒做,我們怕做完足球就踢完了。
但基本的 MLB 和 NBA 都有。
地方的工程師需要五星好評,謝謝大家

↓連結在這
https://goo.gl/xRT2uD



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 關掉。但請記得一個原則,你只有在你知道自己要做什麼的狀況下,才去把 SIP 關掉。所以在這個例子,你知道你是要裝 Jupyter notebook 才關,那裝完後的任務和 SIP 已經沒有關係了,所以還要再進入系統層,把 SIP 開起來。

關掉 SIP 的方法。
  1. 重新開機
  2. 在開機時按住 command 鍵 + R ,這會讓你進入恢復模式。
  3. 在恢復模式下選擇 Terminal (終端機)
4. 在終端機輸入 csrutil disable,這樣 SIP 就被你關掉了。(打開 SIP 的指令就是 csrutil enable)
5.再重新開機,進入 Mac OS 後,你就可以使用 pip install jupyter 來安裝 jupyter notebook 了。

使用 Jupyter Notebook 的方法也很簡單。
  1. 在 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 了
參考資料:

Prototype Pattern (原型模式) in Swift


我把原文寫在 Medium 了。

連結放這邊

點我

這是我看了 Pro Design Patter in Swift 後的心得,所以裡面的文脈都是繼承自書裡面的內容。
這可以算是讀書心得。