到 floydhub 租用雲端 GPU 玩人工智慧

1 週 ago
想玩一點 AI, 又不想自己直接面對 封閉的 nVidia 顯卡驅動程式 嗎? 如果你的訓練資料沒有隱私或機密的問題, 那就上雲端租用 GPU 吧。 我採用的是 floydhub。 根據 這一篇比較文, floydhub 的效能比 AWS 跟 paperspace 略遜一籌; 不過他們以軟體環境取勝: 有許多現成的深度學習 docker 環境 可選。 而且當初我起步機器學習, 就是靠他們做的一些 docker images, 所以就寫介紹文來回饋囉。 你需要先註冊一個帳號, 每個月可免費使用 CPU 20 小時。 然後根據 官網文件, 以普通人的身份下 pip install -U floyd-cli 在你的電腦上安裝 floyd 指令。 ( 會安裝在 ~/.local/bin 裡面) 再來下 floyd login 這會在瀏覽器開啟一個登入分頁。 登入後, 瀏覽器上會出現
ckhung

overlayfs 練習: 小改光碟 iso 檔, 何必大手筆複製?

2 週 4 天 ago
以下三件事有什麼共通處? debian-live 光碟的 persistence 機制 用一層薄薄的 (例如 2G) 可讀寫空間來製造 「從 live CD 開機, 後來卻竟然可以將工作階段寫入硬碟」 的假象。 撰寫 dockerfile 時第一句 from 拿某個 (即使很厚重的) base image 當作地基, 如果後面的變動沒很多, 那麼在 docker build 時, 扣除下載 base image 的時間, 你的 docker image 本身的建立其實花不了多少時間。 有一個 4G 大小的 iso 檔, 我想改它的開機圖片跟選單, 可以不要把整張光碟的內容複製到硬碟上修改嗎? 答案: 它們都可以用 overlayfs 來實現。 把玩 overlay 文件系統 這篇簡中文章有很詳細的解說。 單純從 end-user 的角度來說, 其實沒有細讀也 ok, 只需要
ckhung

scrcpy 透過 adb 把手機投影到電腦上, 連影片也能看!

3 週 4 天 ago
先前寫過 用 adb 把手機變身實物投影機, 那招不需要安裝任何軟體, 但只能秀出靜態的手機畫面快照。 最近發現 scrcpy 連手機上播放影片, 電腦都可以跟得上、 即時顯示, 對老師上課示範 android 手機/平板操作來說真是太方便了! 最終執行時只需要兩個檔案: 在電腦上的 scrcpy 執行檔, 以及會被它透過 adb 傳到手機上的 srcpy-server.jar (算是在手機上跑的伺服器)。 也就是說, 不需要在手機上安裝 apk。 手機也不需要 root。 以下測試環境, 電腦是 lubuntu 17.10, 手機是 Asus Zenfone 2 跑 cyanogenmod 12.1 (android 5.1.1)。 手機必須是 android 5.0 或以上的版本才能用。 請先確認你的電腦可以用 adb 連進手機。 安裝一些相依套件: sudo
ckhung

ssh X forwarding 失敗除錯

3 週 6 天 ago
從甲電腦用 ssh 連線到乙電腦時, 如果多加一個 -X 選項, 像這樣: ssh -X me@乙電腦 之後就可以在乙電腦上執行 GUI 程式, 視窗會丟回甲電腦來。 這叫做 ssh X forwarding, 很好用。 不太確定是什麼原因, 最近我的筆電當成乙電腦 (ssh server) 時, 這個功能突然失效了。 這篇短文 拯救了我: 連線時改下 ssh -v -X me@乙電腦, 這個 -v 會叫 ssh 多印一些除錯訊息。 再根據錯誤訊息 ("X11 forwarding request failed on channel 0") 找到 文章, 說在乙電腦的 /etc/ssh/sshd_config 裡面加一句 X11UseLocalhost no, 再重新啟動服務: systemctl restart ssh, 於是 ssh -X 就又可以用了! 這句話是什麼意思?
ckhung

用 noscript 阻斷不明程式、 保護瀏覽器的安全與隱私

1 個月 1 週 ago
瀏覽器是你的電腦與外面廣大網際網路的最直接接觸面。 即使是你從來沒聽過、 不小心第一次造訪的網站, 它的 javascript 程式碼也都會進入你的瀏覽器執行。 這也是病毒、勒贖軟體、挖礦軟體最常走的入侵管道。 所以保護瀏覽器安全的最基本方式, 就是只允許部分 javascript 執行。 Adblock Plus 適用於多種瀏覽器, 它比較寬鬆: 「原則上放行; 只阻擋黑名單」; 而這篇要介紹、 最近 UI 大改版的 NoScript 僅適用於 firefox, 它比較嚴格: 「原則上阻擋; 只放行白名單」。 安裝了 NoScript 之後, 很多網站可能就不能用了。 這時可以點 firefox 右上角的 noscript 的 icon, 會顯示 noscript 操作介面, 包含目前頁面的 javascript 放行/禁止狀況。 你可以逐一決定看要 (直到關閉
ckhung

老舊電腦救星 antix

1 個月 1 週 ago
Antix 是專為老舊電腦設計的 linux; gantix17 是貴哥版的 antix 17, 可以從 朝陽科大 或 朝陽資管 的伺服器下載。 它讓你用 2017 年的作業系統啟動 (二十世紀末等級?) 32bit、 256MB 記憶體的電腦。 如果要正常使用, 建議至少要有 1G 的記憶體。 若有 2G 的記憶體, 還可以退出開機光碟或拔掉開機隨身碟, 表演豪邁帥氣裸奔! 去年底 解決中文輸入問題 之後, 很快就做出客製光碟了; 但是因為有一些無傷大雅的錯誤訊息, 再加上在某些情況下, 開機時還會出現嚇人的錯誤訊息 (如圖, 完整安裝至 eeepc 硬碟後開機看似失敗) 所以一直沒有正式推出。 遇到這種情況其實沒關係, 只要照指示按 「ctrl-d」, 一樣可以正常開機進入系統、 正常運作。 畢竟它對於老舊電腦/救援/臨時借用別人電腦等等情況很有幫助, 所以終究還是
ckhung

百毒不侵救命碟 「貴哥實驗室版」: 不必燒毀、 麻瓜可自製、 圖書館/電腦教室幾乎零管理

1 個月 3 週 ago
注意: 不推薦創見的隨身碟, 尤其 不推薦創見的記憶卡! 請到 這裡 或 這裡 下載最新版的 gregslab*.iso (或更輕巧的 gantix*.iso)。 這是我上課用的 live CD。 請把它燒成 DVD、 用它開機之後, 打開一個終端機, 可以這樣自製 「百毒不侵救命碟」: ls /dev/sd* # 插入隨身碟 ls /dev/sd* # 查看一下比剛才多出什麼? 例如多出 /dev/sdz 跟 /dev/sdz1, 那麼就: sudo mbootuz.py mkboot /dev/sdz # 密碼是一個空格 (不良示範, 不要學) sudo mbootuz.py cplive -p greg.img -Z 2G /dev/sdz 其中 -p 後面的檔名請根據你的姓名或代號命名; -Z 後面的值代表幫 linux 預留多大的可寫入空間。 (也就是會多吃掉隨身
ckhung

連鑰匙孔都藏起來的 ssh 完全防禦: SPA

2 個月 2 週 ago
如果說 ssh 服務是進入伺服器的鎖頭, 那麼帳號密碼就是開鎖的鑰匙。 你可以用 密不透水的設定 來保護鎖頭, 或是用 fail2ban 把企圖開鎖但履試履敗的可疑份子擋在庭院之外一陣子, 讓他連試鑰匙的機會都沒有。 但其實另外還有一個中文世界鮮少人知道的終極絕招: 把鎖頭/鑰匙孔整個藏起來, 只當懂門路的人 (你自己) 用特定暗號敲門時, 才讓鎖頭/鑰匙孔短暫出現一兩分鐘。 今天要介紹的伺服器完全防禦機制叫做 Single Packet Authorization (SPA)。 一、 概念解說 這要先從 port knocking 說起。 這個機制的運作方式是: 先用防火牆預設把所有的 ports (或至少重要的 ports, 例如 22) 通通封掉, 這就像是在門鎖之外再蓋上一層 沒有鎖頭、 沒有鑰匙孔的門 一樣。 然後跟客戶端約好按照某個特定順序敲幾個 ports (
ckhung

用 logrotate 實現 「近密遠疏」 的備份計畫

2 個月 2 週 ago
Logrotate 本來是拿來備份系統 log 檔用的; 不過被我拿來充份利用、 備份自己的資料 :-) 我每天都會 (至少一次) 把最近幾天內更動過的檔案 (文件/圖片/...) 備份起來, 比方叫做 backup.zip 。 因為這個檔案很小, 所以可以不時上傳到雲端、 下載到隨身碟上。 但偶爾還是會需要挖出較舊的備份, 把檔案還原到舊版。 所以我會用 logrotate 把過去一週的 backup.zip 每天保留一個版本。 首先用 EDITOR=nano VISUAL=nano crontab -e 編輯你的 crontab, 在最後面加一句: 37 4 * * * /home/ckhung/work/daily-job.sh 之類的, 設定每天半夜 4:37 執行 daily-job.sh 。 我的 daily-job.sh 長得像這樣: date >> /
ckhung

ptx 公共運輸整合資訊流通服務平台 bash 及 php 範例

2 個月 4 週 ago
去年中才知道這個好站: 交通部透過 公共運輸整合資訊流通服務平台 (PTX) 提供各種大眾運輸工具的時刻/路線/動態/...等等政府開放資料, 正好可以拿來實作我心目中理想的 具有運算思維的公車動態地圖。 最近終於有空, 用它重新寫好公車動態 geojson 查詢 (範例: 公車即時動態 geojson 文字檔之 臺中市 151 路、 高雄市 100 路; 其他都市名稱請見 官網說明文件 第 4 頁; 原始碼)。 壞掉好久的 朝陽科大五路線公車動態地圖 終於又可以動了! 以下分享範例程式及注意事項給 php 程式設計師。 " 官網的範例程式碼 沒有 php 的範例; 會員 Benyi 所提供的 php 範例太進階了, 我的 php 很菜, 看到 OOP 跟一堆相依套件就手軟了啊~~ 改從 javascript 版範例程式著手, 先試出 bash 版範例, 然後很快
ckhung

概念性、宏觀視野的程序/執行緒同步機制總覽

3 個月 ago
大學時代, 作業系統這門課修得破破的。 後來當助教、 甚至現在自己教書再遇到作業系統, 也都不是那麼有信心。 特別是談論 processes 及 threads 的同步機制那一章: 各種硬體指令 (test-and-set、 compare-and-swap) 各種演算法 (Peterson's algorithm、 Bakery algorithm) 各種程式結構或資料結構 (spinlock、 mutex、 semaphore、 condition variable) 都很燒腦細胞。 更糟的是, 從來沒看過一篇宏觀的文章介紹這些機制彼此之間的關係, 就算看懂個別的演算法, 還是有見樹不見林的感覺。 還好現在有網路、 有 google。 爬了很多文之後, 整理這篇文章, 從宏觀角度著眼, 不鑽研程式碼 (但有很多超連結), 自己思緒變得清晰很多, 也希望對未來的作業系統課程師生以及多
ckhung

街道圖片 semantic segmentation 語義分割實作

3 個月 2 週 ago
所謂 (圖片的) semantic segmentation 語義分割 是指 「如何辨識一張圖片當中哪些 pixels 構成了人、 哪些 pixels 構成了車子、 ... 等等」 這個問題。 理論的部分 ( 知乎簡中原文、 itread01 內容農場正體中文) 我也沒研究, 呵呵, 直接省略。 幾個月前上網找到 (僅適用於分析街道圖片的) ENet Semantic Segmentation 實作, 斷斷續續花了幾個週末 建立映射、 撰寫 Dockerfile、 修改外包裝 python 程式, 這個週末終於把可用的版本上傳到 Dockerhub 的 ckhung/enet 去。 嗯, 效果不太好... 大家將就玩玩看吧! 用 grep -i avx /proc/cpuinfo 查看你的 CPU 是否支援 avx 指令。 如果有印出一些東西, 就可以往下做;
ckhung

編譯別人的程式的除錯技巧

3 個月 2 週 ago
最近玩 AI 一直在編譯別人寫的軟體。 最常遇到的問題, 不是別人寫的程式有錯, 而是我的環境跟他的環境沒有 100% 相同, 所以原來 ok 的程式碼, 到了我的環境就編譯失敗。 以下是我 編譯 ENet 時學到的一些除錯技巧與心得。 如果你想要編譯的軟體是很熱門的軟體, 說不定已經有人打包好 docker 了 -- 搜尋一下, 直接抓回來用比較快。 或是沒有建好的 docker, 只有 Dockerfile 可看, 一步一步照著做也比自己在黑暗中摸索要輕鬆很多。 如果沒有, 只好自己編譯。 開始編譯之前, 可能要先按照指示安裝一堆套件。 例如 ENet 用到修改版的 caffe, 所以要先編譯 caffe。 再次地, 大致照著 caffe 的 Dockerfile 的步驟, 參考 編譯文件 做, 可能會比只讀文件簡單很多。 如果可以搜尋得到已包好相依套件的現成
ckhung

ImageMagick mask : 批次遮罩疊圖 (例如局部著色)

3 個月 3 週 ago
先前曾經 在 gimp 裡面採用遮罩機制 幫相片只保留主角的顏色。 遮罩疊圖不僅限用於著色。 凡是需要 「把一張圖的一部分疊到另一張底圖之上」 的動作都適用。 如果有很多張圖要用相同的方式處理, 改用 ImageMagick 指令會比用 gimp 快。 最麻煩的部分是: 每張圖的遮罩很難自動產生。 不過現在 AI 那麼厲害, 很快地就會出現各種類似 街道圖片 semantic segmentation 語義分割 的類神經網路, 到時候這篇所介紹的技巧就會很有用了: 我們要解說如何用 ImageMagick 命令列把一張原圖及它的語義分割成果圖轉換成局部著色的圖。 我已更新 範例圖檔, 裡面包含九張原圖 (orig/*) 跟九張語義分割成果圖 (result/*) 所以你不需要架設 docker 等等, 只要有安裝 ImageMagick 就可以跟著實作。 完整的
ckhung
已檢查
3 小時 21 分鐘 ago
大人問小孩: 「全世界的玩具隨便你挑? 這怎麼可能? 如果我要的玩具只有一個, 正好又被別人借走了呢?」
「玩具閘門後面, 每種玩具永遠只有一個。 任何人想玩, 隨時都可以生一個複製品給你。
這裡沒有人搶玩具。 這裡是 玩具烏托邦。」
* * * *
貴哥在這裡分享自由軟體跟免費雲端工具的知識與技術, 就是要打破 品牌肥羊 的迷思、 讓數位高牆倒下

(還有其他雜七雜八不想放到 「資訊人權貴ㄓ疑」 的筆記跟感言)
Subscribe to 玩具烏托邦 feed