2018-09-18
今天要介紹的不是櫻花牌熱水器, 而是 sakura 終端機。 自從 roxterm 開發者被 GTK 3.2 打敗 之後, 較新版本的 debian 跟 ubuntu 再也沒有 roxterm 可用。 還好找到 sakura, 恰好符合我對終端機最基本的需求 (有分頁、 16 色) 而且跟 其他終端機 比起來, 它需要的相依套件最少, 不會牽拖一大堆親戚住進你的系統。。 直接 sudo apt install sakura 就安裝好了。 初次執行, 沒有設定檔可參考? 沒關係, 按 ^d 離開 sakura, 下次再進入 sakura, 就會在 ~/.config/sakura/ 底下看到一個已填妥所有預設值的 sakura.conf 設定檔。 也就是說, 如果你沒有設定檔, 或是如果你在使用過程當中按了某些鍵 (下詳) 改變了 sakura 的設定, 那麼當你關閉最後一個分
2018-09-15
多年以前就買過股票, 但根本就是矇著眼睛亂買, 也曾聽信名嘴買到下市股票。 最近為了籌退休金, 才開始認真爬文讀書學習股市常識。 還沒開始賺錢, 但現在買得很有方向感、 很心安。 真的, 沒有做功課就不要隨便進股市; 但做功課其實並沒有一開始想像的那麼困難。 對程式設計師來說, 買正確的股票, 比銀行定存或儲蓄險都要好太多倍了。 買儲蓄險之前, 請先搜尋 「儲蓄險 提前解約」。 當初我也覺得自己不會理財, 也鐵齒地認為自己不會需要用到那麼多現金, 所以每存了一些現金, 就買儲蓄險。 現在學會買股票, 才 (太晚) 體認到: 現金放在儲蓄險裡面因而失去流動性, 也是一種很大的風險。 對散戶而言, 現在的買股環境比二十年前的環境好太多了, 因為證交所及許多網站提供了豐富的公開資訊。 需要收盤價、 EPS、 ... 任何資訊, 只要搜尋一下, 就可以找到個股資訊, 進而知道如何用
2018-09-12
資料視覺化的 常用圖形類別 當中, 我最喜歡用 scatter plot (散點圖) 以及它的變形 bubble chart (氣泡圖), 因為 scatter plot 能用位置 (X-Y 座標) 及顏色把一張試算表的兩個數值欄位及一個類別欄位同時呈現在一張圖上; 而 bubble chart 則再補上 「圓圈大小」, 較 scatter plot 更多展現出一個數值欄位。 為了畫 bubble chart, 暑假我繞了好多遠路。 最後找到最簡單的方法, 把一些重點提示摘要在這篇裡。 從這篇快速起步之後, 每一種方法當然都還有更多本文未提及的參數可以調整, 請自行搜尋/查手冊。 程式碼及資料檔 (satellites.csv) 放在 github 的 ckhung/scatplot; 範例圖的物理意義請見 重新發現克卜勒第三定律。 一、 gnuplot 這是最簡單的
2018-09-04
如果說 ssh 服務是進入伺服器的鎖頭, 那麼帳號密碼就是開鎖的鑰匙。 你可以用 密不透水的設定 來保護鎖頭, 或是用 fail2ban 把企圖開鎖但履試履敗的可疑份子擋在庭院之外一陣子, 讓他連試鑰匙的機會都沒有。 但其實另外還有一個中文世界鮮少人知道的終極絕招: 把鎖頭/鑰匙孔整個藏起來, 只當懂門路的人 (你自己) 用特定暗號敲門時, 才讓鎖頭/鑰匙孔短暫出現一兩分鐘。 今天要介紹的伺服器完全防禦機制叫做 Single Packet Authorization (SPA)。 一、 概念解說 這要先從 port knocking 說起。 這個機制的運作方式是: 先用防火牆預設把所有的 ports (或至少重要的 ports, 例如 22) 通通封掉, 這就像是在門鎖之外再蓋上一層 沒有鎖頭、 沒有鑰匙孔的門 一樣。 然後跟客戶端約好按照某個特定順序敲幾個 ports (
2018-09-03
如果你沒空看 18 分鐘的 TED 演講 Hans Rosling 用前所未有的方法詮釋數字統計, 那麼至少要欣賞一下這個 4 分鐘的短片 「200 年, 200 個國家」: 資料視覺化可以幫我們從枯燥的數字當中, 一眼看出奇特、 令人驚訝的現象。 而且即使我們手邊沒有任何特殊的資源, 還是可以玩出一些有趣的東西。 今天我們要重新發現 (天文學上的) 克普勒第三定律。 我們省略上一篇 用 perl 的 csv 句型處理維基百科頁面 的繁瑣過程, 直接下載成果檔 satellites.csv。 這是太陽系所有天然衛星的列表, 包含 name (名稱)、 radius (星體半徑)、 orbit_major (軌道半長軸)、 rev_cycle (公轉週期)、 planet (所屬行星) 等等欄位。 我們用 gnuplot 來畫圖: set datafile
2018-09-02
如果說 三大 regexp 句型 是 「懶得學 perl 程式語言的系統管理員必學的三句 perl」, 那麼今天要介紹的就是第四重要的 perl 句型: perl -F, -nale 'print join(", ", @F[2,5,6])' 姑且就稱它為 perl 的 csv 句型吧。 它跟文字瀏覽器 lynx 合作, 可以把網頁的表格抓下來變成試算表。 當你不想為了一點小事開啟 calc 時, 就用它們來馴服 .csv 檔吧。 我們拿台積電歷年每季財務報表摘要來練習。 先把網頁原始碼抓回自己的硬碟, 才不會一直製造無謂的網路流量: lynx -source 'https://goodinfo.tw/StockInfo/StockBzPerformance.asp?YEAR_PERIOD=9999&RPT_CAT=M_QUAR_ACC&STOCK_ID=2330' >
2018-08-29
這篇其實是 LibreOffice Calc 的 「連結外部 csv 檔」 教學, 只是拿台股來作例子比較有實用感、 可以提高大家的學習動機 :-) 不需要唸資訊科系、 不需要寫程式, 只需要一部 linux 電腦, 並且略熟試算表函數, 例如 vlookup 及 iferror 等等即可操作。 一、 一日明牌 請先下載 stock.ods, 但是 先不要打開它!。 這個試算表包含四張工作表: price: 某日所有個股股價 div: 所有個股歷年現金股利 divty: 所有個股今年現金股利 main: 主表。 div 原本僅含 2017 年或更早的資料; 2018 年的資料是從 divty 工作表裡面查表得出的。 而 main 則參考其他三個表的資訊, 統整出可以幫你撈明牌的排序清單。 查表的 vlookup 指令我都幫大家寫好了。 最麻煩的是 price , 這張工作表
2018-08-11
想像你有一張 「中華電信基地臺分佈地圖」, 並且假設每個基地臺的功率都一樣大。 地圖上的每一個點都可以問: 「哪一個基地臺離我最近?」 以便決定哪個基地臺的訊號比較強、 我的手機要跟誰連線。 以 (不會移動的) 「偶像 - 粉絲」 之間的關係來比喻, 每個偶像有自己的勢力範圍, 範圍內的所有點就是它的粉絲。 各勢力範圍之間的分界線由相鄰兩偶像的垂直平分線所組成。 這樣畫出來的圖稱為 Voronoi Diagram。 因為我拿不到基地臺座標, 所以只好改畫燦坤各分店的勢力範圍地圖。 目前可能沒什麼用, 因為分店跟粉絲的直線距離沒有太大意義; 但以後出現無人機送/取貨業務時, 這張地圖可能就有用了。 位於最外圍的偶像, 它的勢力範圍會延伸到無窮遠, 也就是說地圖上會有一些無窮大的區塊。 把相鄰的兩座偶像用一條 edge 連起來, 這樣畫出來的圖 (也就是 Voronoi
2018-08-09
想要在 Ubuntu 18.04 底下用 python 的 matplotlib 畫圖, 第一個遇到的問題就是中文顯示。 這篇簡體中文教學文 onepiece_dn的专栏 寫得很清楚, 照做就成功了。 不過我想要改預設值, 不想每一句話都指定中文字型。 另一篇 ButteredCat 寫的簡中文章 解釋詳盡。 因為我用的字型是文鼎的 uaki.ttc 所以還需要再多加一步: 從 ttc 裡面把 ttf 挖出來。 以下是修改過的簡要步驟及程式碼; 詳細說明請參考上述連結。 除了安裝 python-matplotlib 套件之外, 如果你的程式是 python 2.7 而非 python3, 還需要手動安裝 python-pyqt5 套件。 查看系統裡已安裝哪些中文字型: fc-list :lang=zh 例如我自己看到其中有興趣的這一列: /usr/share/fonts
2018-08-07
LibreOffice 文件團隊不久前釋出了 LibreOffice 6.0 的 Writer 指南,其中有對 LibreOffice Writer 的簡介,包含了以下章節:處理文字(基礎)、處理文字(進階)、文字格式、頁面格式(基礎)、頁面格式(進階)、列印匯出電子郵件、樣式介紹、使用樣式、範本、圖片與圖形、清單、資料表格、郵件合併、目次索引、主控文件、欄位、表單、試算表圖表物件、設定 Writer 與自訂 Writer,全部有 448 頁。

LibreOffice Writer 指南在文件基金會的 Wiki 上以 ODT 與 PDF 的形式提供,完整書籍與單獨的章節都有提供,而 ODF Authors 上也有提供各章獨立的 ODT。

LibreOffice 6.0 Writer 指南也在 Lulu 上提供了印好的版本,由 Friends of Open Document Inc. 所提供,這是一個總部位於澳洲的組織,其成員遍佈全球,他們販售這本書來為 LibreOffice 取得更多的資金。

新聞來源:LibreOffice 6.0 Writer Guide
2018-08-07
Ubuntu 18.04 Bionic Beaver 的網路設定改用 netplan 取代舊的 /etc/network/interfaces 設定方式。 如果只是單純的固定 IP 或 DHCP, 據說設定很簡單。 可是我想採用類似 手工精簡版 的方式來幫未來的 qemu-kvm guests 設定獨立式或可橋接外界的虛擬區域網路。 暫時沒有力氣學 netplan, 所以就照著 這個問答 強制改成舊的設定方式比較簡單。 但若不小心, 有可能會在開機時無限等待 dhcp 服務。 以下是我的 lubuntu 18.04 最終網路設定, 及一些有助除錯的筆記。 一、 懷舊網路設定 首先安裝幾個套件: apt install ifupdown2 bridge-utils qemu-kvm。 再來把 /etc/network/interfaces 改成類似這樣: #
2018-08-01
一開始玩 docker 主要都是為了伺服器的應用 (例如 ethercalc 或 ldap), 所以只需要文字介面。 最近玩 ML/DL/AI 程式, 經常需要顯示圖片。 每次都要在 docker 裡面用 AI 程式在分享的目錄裡產生圖片, 再從外面 (host) 用看圖軟體看, 有點囉嗦。 如果是影片, 就更麻煩了。 搜尋到這篇 Running GUI apps with Docker, 略微修改他的做法, 得到以下簡單步驟讓你可以在 docker 裡面執行圖形介面程式並直接顯示在 host 實體機的 X Window 環境。 我們拿 ubuntu 18.04 的官方 docker 及輕巧的 feh 看圖程式來做實驗。 查看你自己的 user name 跟 UID: echo $UID $USER 例如我看到 1000 ckhung。 啟動 docker: docker
2018-08-01
請看一下 原始網站: 我把這個判讀臉部表情 (及性別) 的程式 複製回來並小改一下, 然後打包成 face_classification docker 讓大家玩。 情緒判斷還蠻有一點像的; 可是鬍子先生為什麼竟然被判斷成女性呢? 一、 試玩 以下假設你已略懂 docker。 抓回我打包的 docker: docker pull ckhung/face_classification:18C 後面的 :18C 請依 最新狀況 調整。 啟動, 命名為 fc, 把服務放在 port 15984 : docker run -d --name fc -p 15984:8084 ckhung/face_classification:18C 找一張表情豐富的相片, 例如叫做 some_faces.jpg 。 可以包含不只一張臉。 把判讀結果直接畫在原圖上面。 傳回來的新的固定是
2018-07-26
github 上面很多 ML/DL/AI 程式都以 python 撰寫, 可以從命令列執行。 但如果想要佈署, 例如想讓樹莓派可以把野外蒐集到的畫面或聲音傳回伺服器用 AI 程式判讀/分類, 那該怎麼辦呢? 常見的方法是用 flask 架一個簡單的 web server。 Flask 是 python 的一個模組, 所以從那裡要接上 python 所寫的 ML/DL/AI 引擎很方便。 Flask 單獨作為 web server 的方法很簡單, 請見 中文教學 或 官網。 但若你的伺服器已有 apache2, 要怎樣才能把 flask 接上去呢? 我們即將在 apache 的 /var/www 目錄底下建立兩個子目錄, 一個叫做 hello, 另一個叫做 upload。 希望等一下用 browser 連到 http://localhost/hello/ 跟 http://
2018-07-22
想玩一點 AI, 又不想自己直接面對 封閉的 nVidia 顯卡驅動程式 嗎? 如果你的訓練資料沒有隱私或機密的問題, 那就上雲端租用 GPU 吧。 我採用的是 floydhub。 根據 這一篇比較文, floydhub 的效能比 AWS 跟 paperspace 略遜一籌; 不過他們以軟體環境取勝: 有許多現成的深度學習 docker 環境 可選。 而且當初我起步機器學習, 就是靠他們做的一些 docker images, 所以就寫介紹文來回饋囉。 你需要先註冊一個帳號, 每個月可免費使用 CPU 20 小時。 然後根據 官網文件, 以普通人的身份下 pip install -U floyd-cli 在你的電腦上安裝 floyd 指令。 ( 會安裝在 ~/.local/bin 裡面) 再來下 floyd login 這會在瀏覽器開啟一個登入分頁。 登入後, 瀏覽器上會