2017年11月8日 星期三

Python Deep Learning 深學筆記 - 用神經元的方式寫簡單 Logic


若是頭一擺來遮,建議先來踏話頭

請共教育部閩南語常用辭典開--咧,隨時會當查。

咱這馬了解 Perceptron 神經元,嘛了解簡單 ê AND,OR,NAND Lo-tsik。先來定義簡單 AND 函式:


def AND(x1, x2):
    w1, w2, theta = 0.5, 0.5, 0.7
    tmp = x1*w1 + x2*w2
    if tmp <= theta:
        return 0
    if tmp > theta:
        return 1

AND(0, 0)
AND(1, 0)
AND(0, 1)
AND(1, 1)

遮有一个寫好的程式 and.py

毋過,咱想欲利用 NumPy ê 陣列來運算,所以愛先共神經元的算式小改寫一咧:

y = 1 if (w1x1 + w2x2 ≦ θ) 
y = 0 if (w1x1 + w2x2  > θ)

和下跤ê仝款

y = 1 if (w1x1 + w2x2 - θ ≦ 0)  
y = 0 if (w1x1 + w2x2  - θ > 0 )

θ 咱共伊叫做 Pài-o-sù (Bias),正號抑是負號無差,是共負號提出來外口抑是囥佇符號裡爾爾。若共 (-θ) 用另一个符號 b 代表:

y = 1 if (w1x1 + w2x2 + b ≦ 0)  
y = 0 if (w1x1 + w2x2  + b > 0 )

咱這馬會使開始寫 NumPy 版 ê AND 函式: and2.py:

def AND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.7
    tmp = np.sum(w*x) + b
    if tmp <= 0:
        return 0
    else:
        return 1

AND(0, 0)
AND(1, 0)
AND(0, 1)
AND(1, 1)

你會問講 and.py 和 and2.py 是仝款 ê 程式,為啥物愛用 NumPy 來算咧? 這是因為未來,咱的程式會愈來愈複雜。若是這馬無先共 NumPy ê 基礎拍落,後擺會接載袂牢,毋但愈來愈僫寫,速度嘛會干焦龜佇趖咧。

紲落來是 nand.py:

import numpy as np
def NAND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([-0.5, -0.5])
    b = 0.7
    tmp = np.sum(w*x) + b
    if tmp <= 0:
        return 0
    else:
        return 1

print(NAND(0, 0))
print(NAND(1, 0))
print(NAND(0, 1))
print(NAND(1, 1))


or.py:

import numpy as np
def OR(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.2
    tmp = np.sum(w*x) + b
    if tmp <= 0:
        return 0
    else:
        return 1

print(OR(0, 0))
print(OR(1, 0))
print(OR(0, 1))
print(OR(1, 1))

咱會當看著,AND,OR, NAND 干焦差佇 w, b  ê 值無仝,也都是設定 Paì-o-sù (bias) 都好阿!







欲按怎佇 Linux/Ubuntu 頂仔安裝 Spotify 網路版



若是頭一擺來遮,尤其是對遮的文字感覺怪怪的人,請來踏話頭。。


最近阮兜加入 Spotify 家庭共享 Premium ê 會員。阮某佮阮囝是攏用手機仔佇聽音樂,毋過我規工上班都是用 Ubuntu Linux 佇做工課,也是裝一咧 Linux 版較方便。好佳哉,Spotify 官方網站都有提供 Linux ê 收聽程式,真貼心。

我這馬用的 Linux 是 Ubuntu 17.10 Art Aardvark 版本。拄好參考伊的 Spotify for Linux 都會振動:

# 1. 共 Spotify 簽過 ê 金鎖匙加入,小等咧咱愛用伊來檢查搝落來个包袱仔
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys BBEBDCB318AD50EC6865090613B00F1FD2C19886 0DF731E45CE24F27EEEB1450EFDC8610341D9410

# 2. 共 Spofity ê Repository (就是囥程式ê所在) 添入來
echo deb http://repository.spotify.com stable non-free | sudo tee /etc/apt/sources.list.d/spotify.list

# 3. 共咱電腦裡所知影ê程式名單換新个,都是共 Spotify 名添入
sudo apt-get update

# 4. 安裝 Spotify-client
sudo apt-get install spotify-client
裝好了後,佇 terminal 落 spotify,揤 ENTER,都會看著登入畫面:
這時共你的登入資料起入去,理論上就會用得。毋過,阮公司有迵過 Proxy 才連起哩外口ê網路,所以閣愛設 Proxy ê 資料,揤下爿 ê SETTINGS, 進入另外一咧畫面:



普通若是愛入來遮,Auto Detect 定著是失敗--ê。共伊換做 HTTP 抑是其他恁公司所用--ê,共 IP,Port 添予好,我是免 Username 佮 Password 啦,轉去頭一咧畫面登入都成功囉!





2017年11月1日 星期三

欲按怎予 Android 手機 ê Youtube 影片會用佇幕後搬?

若是頭一擺來遮,請來踏話頭

為啥乜有這个問題?

這是因為 Youtube 頂仔有真濟好个影片,有時陣咱干焦想欲聽歌,抑是聽課。譬如講佇開車的時目睭看頭前,抑是佇捷運頂仔,你耳機勾咧,搖搖擺擺。你無欲看螢幕。

毋過,現此時 ê Youtube 若開,就一定愛共螢幕嘛開咧。若螢幕禁--起來,聲嘛綴咧無--去。螢幕開咧有兩的䆀處: 首先是真了電。螢幕是真食電--ê。無佇看閣開--咧,電白白了--去。

第二,無細膩去磕著螢幕。因為這馬手機仔 ê 螢幕是控制手機仔上主要 ê 所在,若是一直開咧,無細膩磕著,有時是共音樂暫停。較嚴重是無細膩就磕袂著就敲一通電話出去。尤其是你佇坐捷運時,手機是囥佇落袋仔裏,身軀振動抑是和人相磅真四常。無,你只好用手攑牢牢較安全。

若是 Youtube 會用佇背景運行/幕後運行,這寡問題就解決阿。因為你會使共螢幕關起來,這時,閣省電,螢幕嘛無作用。

啥乜是幕後運行

佇 Android 系統內底,你佇螢幕看會著,號做 "桌面"(Desktop)。佇桌面運行,號做幕前運行(Foreground)。因為手機 ê 螢幕細,普通 APP ê 設計攏是: 一擺干焦會使有一咧 APP 會使佇咧幕前抑是桌面。若是你點一的新的 APP ê ICON, 共伊拍予開,伊就浮去桌面運行,原本佇桌面行--ê,就先暫停,猶原佇 RAM 裡,這就是走入去幕後舉例講,你開 Youtube,伊就走來幕前,這時你閣開 Chrome,Youtube 就暫停,影片嘛袂繼續。這時,Chrome 走前,Youtube 退入幕後(background)。
共螢幕禁起來,嘛是仝款概念: 所有會 APP 攏無佇幕前。

毋過,有一寡特別設計 ê APP in 會用得佇幕後運行。親像電話,電子批, LINE,facebook,因為按呢你才有法度收著上新 ê 訊息。這款你無看著嘛佇運行--ê,就號做<幕後運行>


欲按怎予 Youtbue 幕後運行

Youtube 這ê APP 是無支援幕後運行--ê。干焦若是付錢予 Google 才會使,另外嘛人寫有這種功能 ê APP 來趁錢。毋過,咱欲免錢 ê 方法。

上簡單就是安裝 firefox。毋過,毋是干焦裝起來,佇 firefox 起開 Youtube 就好,閣有一咧鋩角: 愛共  開啟桌面版網站 拍開,你若是揤 firefox 倒手爿ê頂懸,就會看著下跤這張圖:


這咧選項,是共 firefox 像桌面電腦按呢來開這咧網站,莫用網站為手機版準備 ê 資料。按呢生愛掠資料會較濟,手機仔處理起來會較慢。畫面嘛較歹看: 佇手機頂小小 ê 面頂爭一堆物佇內底。毋過,咱若是欲聽 Youtube 爾爾,這是免錢會好辦法!


踏話頭 - 我所用 ê 文字

[以下華語]
我所用的文字是台語文,簡單講,就是把台語用它專用的文字寫下來。什麼是台語專用的文字? 就是這些文字直接對應到台語的發音,不必經由其它語言的文字二次轉譯,比如:台語的 <不行/不可以/不要> 是 "毋通",但華語火星文會是 "嗯湯", "母湯",也有會講台語的人看到 "不行", 但是心裏唸 "毋通"。

這裏的 "毋通", 是教育部有標準唸法 m̄-thang, 而不是用華語發音直接唸, 各位可以去試聽看看: 請按我

用火星文來寫台語, 壞處很多. 如果本來會講台語的人, 看到可能會心一笑.  但不會講台語的人, 看到火星文不但唸不出來, 而且更會唸錯. 嘻嘻哈哈之後, 是學到一個詞, 但發音錯了, 也學到了對台語的不尊重的態度.

而台語漢字的好處, 是可以快速借由眼睛了解文意, 但對 <說> 和 <聽>  反而幫助不大. 因為漢字的台語音, 沒有另外特別去學, 去練, 去講, 去聽, 一般人腦中的 "想當然爾" 的音通常都是錯的, 或是有偏差的. 這是一方面華語音太強勢地植入我們腦中, 另一方面是台語音和華語音 <有關係又不完全一樣>, 反而造成台灣人的障礙與包伏, 不如外國人從零開始般沒有負擔.

也因為台語和華語 <有關係又不完全一樣>, 造成我們反而不願專門,專心,專業地好好把台語學回來!

因為使用漢字的緣故,而且當初在選字時, 也特別考量儘量避免距離一般人常識太遠, 所以即使你不懂台語,應該也可以看懂八九成。如果你有疑惑或想順便學學台語,可以參考以下台語資源,最好把 教育部閩南語常用辭典iTaigi 開著,邊看邊查。

台語文字有好幾套,目前較主流的漢字,台灣羅馬字,和白話字。我是以教育部定的漢字和台灣羅馬字為主,所以會比較常參考到以下資源:

[以下台語]
教育部閩南語常用辭典: 是這馬 ê 標準,簡稱 "教典"
iTaigi: 是較新,較活潑,互動式--ê。若到教典查無,就來遮試看覓。

想欲了解閣較濟,會使去:台語網路學習一指通,甚至去買這本 台語好日子 來看, 這是一本蓋讚 ê 台語入門冊。

,

若是欲自學, 線頂資源真正袂少, 有深有淺, 遮簡單囥幾个:

20分鐘學會曉讀寫台語文

2017年10月28日 星期六

Python Deep Learning 深學筆記 - 上簡單 ê Lo-tsik (Logic) 電路


若是頭一擺來遮,建議先來踏話頭

請共教育部閩南語常用辭典開--咧,隨時會當查。

Logic,台語普通是翻做理路,華語是邏輯。若是佇講一咧人頭殼清楚,我感覺理路就真好。若是指數學抑是計算機  ê 專業名詞,我是較主張就直接音譯: 揣台語中上倚 ê 音,嘛免閣勉強揣漢字來鬥。這是本底台語無,甚至華語嘛無 ê 物件,嘛無佇咱先人嘛無這款生活經驗。所以,佇遮我用 Lo-tsik。


紲落來 ê AND gate,OR gate,XOR gate,我嘛是用羅馬字音譯: En-ké,Óo-ké,Ek-Óo-ké。有時我直接寫英文,你若袂曉念英文,就先用羅馬音鬥咧。


佇計算科學tiőng,上基礎就是 AND,OR,XOR 是上基本 ê 三種 gate。有這三種,你就會當一步一步鬥出計算機 ê 元件,像 CPU,記憶體,落尾是規部(phō)電腦。咱佇遮先介紹簡單 ê Lo-tsik 電路,佇下一篇遮共神經元理論佮 Lo-tsik 敆--起來。


En-ké (And Gate)

參考 Wikipedia ê AND gate, 伊的輸入佮輸出ê關係是下跤這个表:

INPUTOUTPUT
x1x2y
000
010
100
111
也就是輸入攏愛是 1,y 才會輸出 1,無都攏輸出 0。

咱先回想頂一篇:  Perceptron 神經元  ê 神經元圖:


佮伊的數學表示式:
y = 1 if (w1x1 + w2x2 ≦ θ)
   y = 0 if (w1x1 + w2x2 > θ)


咱這嘛所愛做--ê,是欲按怎揀 w1,w2,佮 θ 來滿足 En-ké 彼个表咧? 先講伊的答案有無限濟。無你會使試看覓 (w1,w2 θ) = (0.50.5 0.7) ,(0.5, 0.5, 0.8),(1.0,1.0,1.0) 攏合 En-ké ê 定義。



Óo-ké (Or Gate)

Óo-ké 是輸入只要其中有一个 1,輸出都是 1,伊的真值表示按呢:




INPUTOUTPUT
x1x2y
000
011
101
111


你會當奕看 
(w1,w2 θ)  欲按怎選,才會當做出 Oo-ké?


Né-ké (Or Gate)

Né-ké 是 Én-ké ê 倒反:




INPUTOUTPUT
x1x2y
001
011
101
110
你會當奕看覓 , (w1,w2 θ)  欲按怎選,才會當做出 Né-ké?


結論

毋管是 Én-ké,Óo-ké,抑是 Né-ké,咱攏是會使用仝一咧感知器來表示,咱人愛做--ê,是調整 (w1,w2 θ)  予伊表現出無仝 Gate ê 行為。也都是 Perceptron 神經元伊是一咧演員,戲衫換一咧就會用得搬演無仝ê角色。




2017年10月20日 星期五

欲按怎用 vim 開 C code, 閣直接跳去指定ê所在


這規个系列,攏是用台文書寫--的。毋過,我相信捌華語的人嘛看有,干焦讀袂出來。若有無確定意思,會當查字典:

教育部閩南語常用辭典: 是這馬 ê 標準,簡稱 "教典"
iTaigi: 是較新,較活潑,互動式--ê。若到教典查無,就來遮試看覓。


vim 是 open source ê 編輯器。我定定用伊來寫程式。有時,咱知影欲 uì 佗位開始,無想欲先拍開才閣徙去彼咧所在欲按怎樣做較好? 若是 C 程式,定定用的就是直接跳去函式,抑是第幾逝。這時,咱會使用:

$ vi +LineNumber fileName

LineNumber 就是第幾逝,比如講: vi +100 source.c 就是拍開 source.c 了後直接跳去第 100 逝。
若是知影一咧特別 ê 字,比如講: hello,你會當用

$ vi +/hello fileName


就是 hello 前添一咧 +/, 按呢伊就會直接跳去 hello ê 所在。

參考資料: 

VI / VIM: Open File And Go To Specific Function or Line Number

2017年10月11日 星期三

用 Wireshark 來掠加密 ê Wifi 包

踏話頭

這篇是用台文寫--ê,請共教育部閩南語常用辭典開--咧,隨時會當查。

佇掠 Wifi ê 蟲 ê 時陣,有時愛看佇空中飛 ê wifi 包 ê 內容。毋過,現此時 ê wifi 攏有加密,所以愛會用得共伊解開。

當然,若欲完全了解這篇佇咧講啥物,你愛去了解 wifi ê 原理,WPA 所制定 ê 802.11 系列 ê 標準。佇遮,我是真緊共我試驗成功 ê 步序筆記--落來。你的各方面 ê sio條件和我 (平台, 作業系統, 版本) 愈相sia̋ng,愈有可能成功。若是無成功, 試看覓去網路揣閣較濟資料,解決問題,這是你進步ê好機會。

參考資料: How to Decrypt 802.11

平台: x86 Linux Ubuntu 17.10 artful
軟體: wireshark 2.4.0

Driver 起動監式模式( monitor mode)

首先,你的 wifi 愛有支援監視模式。有時無仝 ê 製作商,有 in 特別 ê 命令來拍開 monitor mode。咱遮先介紹 Linux ê 標準命令。
首先,你愛確定無人佇用你的 Wifi。這馬有真濟 APP 佇幕後運行,佇你不知不覺中使用網路,去捎親像時間,天氣等資料。上好ê方法是直接共 Wifi 關--起來:

紲落來,拍開 monitor mode,這咧所在,Linux ê 標準命令是:

$ sudo iwconfig wlan1 mode monitor

毋過,真歹勢,我毋是用這咧命令。 阮公司對 Open source ê 支援真䆀,我是用公司特別 ê 命令,可能袂用得寫出來,你愛去查你的 wifi chipset 是 Broadcom,QCA/Atheros, 抑是 Realtek,才去看網路有人佇按怎拍開 monitor mode 無 ?

共 monitor interface 起動

若是 monitor mode 有成功,Linux 會起另一咧特殊 ê 介面,親像 radiotap0,你愛先用命令共伊起動:
$ sudo ifconfig radiotap0 up

設你欲監視 ê  頻道

$ sudo iwconfig radiotap0 channel 11

你的 driver 無一定支援這咧命令,我是用 chipset 公司家己 ê 命令。

起動 wireshark

愛用 root ê 身份來拍開才有夠額 ê 權限。

$ sudo wireshark


佇頂仔 ê menu,選 Edit->Preferences:

入去 Preferences,選 Protocol:

IEEE 802.11,共 Enable decryption 勾--起來,點 Edit...



揤 +Key type 欄揀 wpa-pwdKey 欄添加密 ê key 和 SSID,中方用 : 隔開。
佇圖頂仔的例,key 是 12345678,SSID 是 MySSid



若選好,揤 OK 就會使--阿。你轉去看掠著 ê 包,若看會著 ICMP/TCP/UDP 這寡  protocol,就代表成功--阿





佇 Linux 來看GPX 檔案

最近定定有戶外活動。使用𤆬路機 (GPS) 來記錄行過的路線。普通我記錄路線,攏是用手機仔抑是專門个𤆬路機,罕得用電腦來看。 毋過,"仙人拍鼓有時錯,跤步踏差啥人無"。有一擺我無細膩,袂記得共一擺活動的路線收煞起來,閣直接開始記錄下一擺的活動,按呢共幾落...