2018年7月26日 星期四

躲在 apache2 後面的 flask 範例, 含上傳檔案

flask 躲在 apache 後面, 銜接 ML/DL/AI 引擎 github 上面很多 ML/DL/AI 程式都以 python 撰寫, 可以從命令列執行。 但如果想要佈署, 例如想讓樹莓派可以把野外蒐集到的畫面或聲音傳回伺服器用 AI 程式判讀/分類, 那該怎麼辦呢? 常見的方法是用 flask 架一個簡單的 web server。 Flask 是 python 的一個模組, 所以從那裡要接上 python 所寫的 ML/DL/AI 引擎很方便。 Flask 單獨作為 web server 的方法很簡單, 請見 中文教學 官網。 但若你的伺服器已有 apache2, 要怎樣才能把 flask 接上去呢?

2018年7月23日 星期一

在 docker 裡面跑 GUI 程式

一開始玩 docker 主要都是為了伺服器的應用 (例如 ethercalc ldap), 所以只需要文字介面。 最近玩 ML/DL/AI 程式, 經常需要顯示圖片。 每次都要在 docker 裡面用 AI 程式在分享的目錄裡產生圖片, 再從外面 (host) 用看圖軟體看, 有點囉嗦。 如果是影片, 就更麻煩了。 搜尋到這篇 Running GUI apps with Docker, 略微修改他的做法, 得到以下簡單步驟讓你可以在 docker 裡面執行圖形介面程式並直接顯示在 host 實體機的 X Window 環境。

2018年7月21日 星期六

Android-x86 Nougat 版

三年前曾經介紹過 android-x86 4.* 版。 前陣子為了上課需要, 再次試玩。 現在的 Nougat 版 (7.*) 已可安裝 google play; 不過目前對我來說, 有 f-droid 就夠了。 64 bit 好像沒什麼特別用處, 從官網下載 32bit 版本好了: android-x86-7.1-r2.iso。 另外, 我試過 CM 版 (CyanogenMod), 但是安裝完成後第一次開機要半小時、 adb 不能用、 有時安裝會卡在選語言的畫面。 總之還是用原始的 android-x86 比較穩。

2018年7月6日 星期五

在 ubuntu 18.04 底下為 kvm 打造的虛擬區域網路

[2020/9/3 改推薦採用 netplan 設定 bridge 搭配 virt-manager 會比本文簡單很多。]

Ubuntu 18.04 Bionic Beaver 的網路設定改用 netplan 取代舊的 /etc/network/interfaces 設定方式。 如果只是單純的固定 IP 或 DHCP, 據說設定很簡單。 可是我想採用類似 手工精簡版 的方式來幫未來的 qemu-kvm guests 設定獨立式或可橋接外界的虛擬區域網路。 暫時沒有力氣學 netplan, 所以就照著 這個問答 強制改成舊的設定方式比較簡單。 但若不小心, 有可能會在開機時無限等待 dhcp 服務。 以下是我的 lubuntu 18.04 最終網路設定, 及一些有助除錯的筆記。

2018年7月1日 星期日

比較兩個大同小異的文字檔, meld 版

用 meld 比較兩個大同小異的文字檔 如果 f1.txt 跟 f2.txt 兩個文字檔內容差不多, 可以用 meld f1.txt f2.txt 同時編輯/比較兩個檔案。 meld 是圖形介面的程式, 非常直覺好用。 它會把差異處用顏色標示出來, 並且找到正確的差入位置。 按一下畫面中間的左箭頭或右箭頭, 就會以左邊或右邊的檔案為準, 更新另一邊的檔案, 把那一小段差異消除掉。 當游標位於左側時, 還可以用 「變更」 選單下的 「從右側合併所有更改」 一秒同化兩個檔案。 反之亦然。 如果不小心改錯了, 當然也可以用視窗上方工具列上的還原按鈕還原。 工具列下方兩個檔案名稱之間的垂直線可以拉, 可以改變兩個檔案佔據畫面的比例。

對了, windows 用戶也可以從 官網 下載安裝檔哦。

比較兩個大同小異的文字檔, vimdiff 版

[這篇是給習慣使用 vim 的讀者看的。 習慣 geany 或其他記事本類型/GUI 類型的讀者, 用 meld 會簡單很多。]

如果 f1.txt 跟 f2.txt 兩個文字檔內容差不多, 可以用 vimdiff f1.txt f2.txt 同時編輯/比較兩個檔案。 這會進入 split 模式, 出現左右兩個框 (panes) 左邊顯示 f1.txt, 右邊顯示 f2.txt。 而且 vim 會把兩檔的差異處用顏色標出來。 在這個模式下, 以下是一些好用的按鍵:

  1. ] c 跳到下一個差異處; [ c 跳到上一個差異處。
  2. ctrl-w l 跳到右框、 ctrl-w h 跳到左框。 或是更簡單的 ctrl-w ctrl-w 跳到另一個框。
  3. zo 展開相同的部分 (就是每個框左緣部分的 + 號)、 zc 收起相同的部分。
  4. 有時會需要改變框的寬度, 例如視窗大小改變時, 多出來的空間分配不均。 這時可以按 ctrl-w > 擴大目前的框、 ctrl-w < 縮小目前的框、 ctrl-w = 把畫面平均分配給左右兩框。

呃.. 寫完才發現 gtwang 大大也有一篇, 而且還有截圖。