2019年7月13日 星期六

貴哥的 colab 初學筆記

Google colaboratory 提供短暫 (數小時) 的免費雲端 GPU 算力, 真是深度學習初學者的福音啊! 前提是你要有 google drive 的帳號, 並且略會操作 Jupyter Notebook。 網路上已有很多入門教學文; 貴哥一看到有 shell 可用, 忍不住就好奇多探索一些, 於是也寫一篇自己的初學筆記。 基於 「站在巨人肩膀上」 的原則, 比較多人介紹的基本操作就只簡單帶過, 細節可參考 台大機械所 Wei-Hsiang Wang 的 Colab 基本操作筆記 (中文) 及 fuat 的 Google Colab Free GPU Tutorial (英文)

2019年7月9日 星期二

「Docker pull 卡住不動」 的實驗計畫

不太確定為什麼, 偶爾會遇到 docker pull 抓映像檔抓到一半突然卡住不動。 很多人都遇過相同的問題, 而且很多年了都沒有解決, 到現在 Bounty Source 還在懸賞。 我在電腦教室特別常遇到這個問題; 可惜上課期間來不及研究。 這篇的目的是希望下次再遇到時, 可以做一些實驗, 確認一下到底是伺服器那頭的問題, 還是我們這頭的問題。 如果夠多人測試不同的排列組合, 並且到上述 issue 回報自己的排列組合, 說不定對開發者除錯會有一些幫助。

以下提到設定檔的地方, 都以 lubuntu 18.04 bionic beaver 為準。

2019年6月27日 星期四

文字檔控用 SQL 語法肉博 csv

我是奉行 unix 哲學 的文字檔控。 用 grep 從 csv 檔撈資料的時候突然想到: 可不可以改用 SQL 指令來查詢 csv 檔呢? 果然搜尋到 qtextql 兩個專案。 而且後者直接用 apt install textql 安裝就可以用。 這工具除了讓 SQL 老手可以很方便地檢索 .csv 檔之外, 也很適合拿來當作 SQL 語法入門, 讓初學者可以 (省略無聊而繁瑣的建立資料庫步驟) 在十分鐘之內單刀直入從 (比較有趣的) SELECT 指令開始學起。

2019年6月5日 星期三

avfs: 不必解開, 直接把壓縮檔當成目錄大搖大擺走進去

我每年會備份一次個人檔案。 硬碟上有歷年的 .tgz 備份檔。 有時需要把舊文件挖出來看。 問題是: 不記得我要的檔案在哪一年份的備份裡。 於是逐年 [解壓縮、 搜尋、 刪掉] 直到找到為止, 有點麻煩。 今天終於發現一招好用的方案: 採用 AVFS。

2019年5月12日 星期日

用 certbot 幫同網域下眾網站創建共用的 ssl 憑證

從去年起, chrome 已經開始把 http (沒有 s) 的網站標示為不安全了。 現代的站長一定要學會 用 let's encryp 把 http 網站升級成 https 網站 (中文)。 但是如果你 (1) 擁有同網域底下一整個艦隊很多個網站, 但是 (2) 懶得逐一申請, 而且 (3) 委託代管 DNS 或自管 DNS, 那麼就可以直接拿同一個憑證給同網域的所有網站共用。 例如我擁有 frdm.info, 委託 pchome 代管 DNS, 而且想要讓 abcdef.frdm.info 跟 uvwxyz.frdm.info 及其他子網域都共用同一組 ssl 憑證。 以下就是我的筆記。 也可以參考 Sam Tang 的中文文章 Saurabh Palande 的英文文章

2019年4月22日 星期一

已經是邊緣人不能再遺失手機通訊錄了啊!

先前手機摔壞了, 螢幕碎到不能看, 還好 adb 連線 還可以用。 於是用 scrcpy 從電腦操作搶救資料。 其中一個任務是要把通訊錄倒出來。 結果發現不知為何連 「通訊錄」 app 的匯出功能也壞掉了。 查看一下舊的匯出檔, 發現上次備份是三年前 orz。 可是電話跟簡訊 apps 明明都還看得見通訊錄, 顯然資料還在。 搜尋到 這個問答, 得知檔案放在 /data/data/com.android.providers.contacts/databases/contacts2.db 。 不過 /data/data 這個目錄需要 root 權限才可以進入。 把它 copy 到 /sdcard 底下, 再用 adb 或 primitive ftpd 把它傳到電腦上。 這是一個 sqlite 格式的檔案。 在 lubuntu 底下, 需要安裝 sqlite3 套件才能處理。 再下載 sqlite 轉 vcf 的 shell script, 最後終於成功地把通訊錄救出來。 還好我早已 幫手機取得 root 權限, 不然通訊錄就這樣毀了, 我會不會變得跟冥王星一樣邊緣啊~~ (抖)

2019年4月7日 星期日

自己的行事曆和通訊錄自己管: nextcloud 安裝、 行事曆、 備份及手機連線

Nextcloud 是 owncloud 的 fork。 它讓你自架私有雲取代 dropbox、 google drive、 google calendar、 google 通訊錄等等服務。 我自己的雲端檔案沒有用任何軟體管理, 就直接用 scp 存取。 對我而言, nextcloud 最重要的是拿來取代 google calendar (還有通訊錄; 不過目前還沒用)。

2019年3月31日 星期日

ubuntu 18.04 之 mysql 忘記 root 密碼

今天在家裡的 lubuntu 18.04 電腦上想要把冷凍很久的 mysql 拿出來用, 但因為事業做太大、 serves 養太多了, 突然發現完全想不起來這個不重要的 mysql 帳號的 root 用戶密碼。 沒關係, 記得搜尋得到解法。 找到一篇 2012 年的文章 , 但是在執行 mysqld_safe --skip-grant-tables & 的時候, 卻看到這樣的訊息: mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended 然後 mysqld_safe 馬上結束, 我也就無法繼續往下做。

2019年2月16日 星期六

網頁爬蟲終極武器: puppeteer

無頭瀏覽器

下載靜態網頁可以用 wget 或 curl。 那如果是 javascript 動態產生/填寫的頁面呢? 如果只需要網頁快照截圖, 可以用 cutycapt; 如果需要取得 javascript 所產生的文字內容, 那就用 puppeteer。 (字的原意: 操偶師) 它會呼叫 chrome 幫它執行頁面的 javascript, 但不會真的在桌面上打開 chrome 視窗。 在這種模式下運作的瀏覽器, 稱為 headless browser。 今天我們要用 puppeteer 及 headless chrome 來製作網頁爬蟲。

2019年2月7日 星期四

網頁畫面定時快照截圖

過年期間的天氣圖 想要定期下載某網頁, 可以在 cron job 裡面用 wget。 [ 鳥哥 教育大市集] 但這僅適用於伺服器端產生的靜態網頁。 如果是 javascript 產生的動態網頁呢? 如果需要取得網頁文字內容, 那就必須用比較進階的 網頁爬蟲終極武器: puppeteer; 如果只需要快照截圖 (例如想要觀察 google 地圖或開放街圖某塊區域的長期變化), 那麼本篇介紹的 cutycapt 就夠用了。

2019年2月1日 星期五

Windows 桌面驚魂記

xfreerdp 太可怕了! 老朋友要分享大檔給我, 竟然開了他的 windows 桌面讓我登入。 我試著用 rdesktop 連線, 得到錯誤訊息 「ERROR: CredSSP: Initialize failed, do you have correct kerberos tgt initialized ? Failed to connect, CredSSP required by server.」 搜尋到救星解答: 採用 xfreerdp。 在 ubuntu 18.04 底下, 安裝 freerdp2-x11 套件, 然後 xfreerdp /u:帳號名稱 /v:伺服器的IP /drive:gregbasket,/home/ckhung/share 回答完密碼之後就出現了駭人的 windows 桌面。 握著滑鼠的手顫抖地點選 「我的電腦」, 會看到有一顆硬碟/隨身碟名為 "gregbasket", 也就是剛才命令列上用 /drive 參數任意取的遠端名稱, 它對應到本機的 /home/ckhung/share 目錄。 從朋友的桌面上把檔案丟到 gregbasket, 拿了就跑, 趕快逃離可怕的 windows。 (完)

2019年1月27日 星期日

拿股票三維資料學習 pandas 的 multiindex

股票三維資料 最近認真用 python 的 pandas 函式庫讀取股票每日收盤資料, 結論是: 嗯, 還是用陽春 python 處理比較簡單快速 -- 執行的時間跟程式除錯的時間都比較省。 本篇是跟 pandas 的分手宣言。 閱讀本文之前, 請先按照 我上個月的 pandas 開箱文 操作一遍。 (好短的戀情啊~~)