2017年5月22日 星期一

用相機當掃描器


現代相機性能越來越好, 價錢也越來越便宜, 透過配置特定參數可以獲得非常清晰的影像
以往低價相機常常是畫面許多顆粒, 即使最便宜的掃描器也可以輕鬆打敗相機的品質
(搜尋資料發現似乎需要不少校正, 而且光線量無法控制, 我看過的樣本可能經過很多修正)
所以網路上比較常見的玩法是拿掃描器去當相機XD 反過來用的比較少
時代改變了, 雖然價差還是大, 品質可接受的相機還是比掃描器貴很多, 但差距變小
我們就可以嘗試以前不能做的玩法, 不過這項計畫軟體部份還沒完善
操作上比較花時間, 但目前的畫面輸出我認為還可以接受

這項計畫原本沒這麼急著做, 只是今年初某一天買了幾片二手 CD 回來
發現櫃子沒地方放了, 要新增櫃子會佔用目前工作空間
於是就好奇, 我有這麼多 CD 嗎? 怎麼連這點空間都沒有
然後就開始進行庫存盤點, 結果

還好嘛~ 地板還放得下啊, 沒很多嘛! 於是就啟動這計畫XD
掃描, 檔案存入資料庫, 然後光碟和歌本留下放入小塑膠袋封存, 殼子丟掉
目前先對單曲 CD 下手, 那種一個殼子裡面只裝一張紙和一片 CD 的
佔那麼多空間幹麻? 精簡! 壓縮!

首先準備材料

我有一台掃描器, 拆裡面的玻璃和蓋子出來用
掃描器的蓋子用來壓紙很好用, 它非常平整, 如果要找替代品可以試試切菜板
然後買幾支 L 型鋁條

鋁條鑽孔後螺絲固定, 玻璃用夾子固定
這玻璃在掃描器上時一直不敢清理, 水會留在玻璃和塑膠殼之間
那幾乎不會乾, 然後你把要掃描的紙放上去, 要掃正就要對齊外殼
可以預見那紙就會把縫中的水吸出來, 超麻煩
可是不清洗它上面就都是手印指紋, 還有一堆灰塵
這也是本計畫有優勢的地方, 玻璃取下可以放心的泡水裡任意清洗


為了維持影像尺寸, 拍攝前會需要前後微調距離, 我們不會希望微調時還左右晃
所以弄個軌道給它, 一開始我有找一些微步平移雲台, 但那價錢都很嚇人
動不動就幾張小朋友, 這個土砲軌道不用一百元台幣就有, 而且這樣做還有個好處
因為和玻璃架綁一起, 不小心碰到時, 只要相機沒動就不用重新校正, 他們是連動的
但需要注意必須放在平坦的表面, 由於這軌道長, 鋁又是軟金屬
它容易扭曲, 玻璃台和軌道末端所在的平面要一樣平才好

接著做放相機的載台

由於是木板釘製, 它肯定不會完全水平, 或許技術好的木工專家可以做到水平
但我可以保證我做不到水平XD 不過這不難修正, 那就是用紙片, 一張一張放
然後拍照檢視, 上圖紙上數字就是紙張數量, 調好後用膠帶黏好, 標記放的位置
下次再拿來裝上去就幾乎是準的, 不用調到 100%, 那不可能XD
剩下的一點落差就交給電腦後製處理
以我做的我會想辦法調到影像下方幾乎水平, 因為玻璃載台下方是木板
做成水平我可以直接選取裁切掉, 修正影像時就只要注意上方兩角

玻璃載台的組裝方式:


掃描器蓋子切除側邊, 掃描的歌本放上去就保證和相機水平, 蓋子蓋上就可拍照

拍照前先校準, 如果每次我們都隨便放上去拍, 那每次拍出的大小肯定都不同
然後就要一直縮放影像, 這樣很麻煩, 所以我做了個圖檔

列印用檔案:6k_4k_600dpi.pdf
把這檔案列印出來, 列印時選不縮放, 原尺寸輸出
我的相機是 SONY A6000, 輸出影像尺寸 6000x4000
若用 600dpi 來計算, 拍攝影像範圍長邊應該要是 10 吋
所以我做這圖檔長邊就剛好 10 吋, 可以用尺量驗證
把這圖檔放到玻璃台上, 前後移動相機直到觀景窗看到整張圖覆蓋全部
拍出來的就會接近 600dpi, 當然會有誤差, 但是只差幾個像素印出來不會差太多

若要還原就直接將影像以 600dpi 列印, 若電腦沒接印表機要去店家找人輸出
可以用影像處理軟體開一個 6000x4000 的空白檔案
然後把編輯後的影像直接貼進去, 將影像存檔
接著用 Open Office 等文書處理軟體插入這張影像, 把長邊縮放到 10 吋

DSC03302.pdf


這樣印出來就和原本的尺寸幾乎相同

不過如果就這樣拍, 很快的我們就會發現問題:玻璃反光
白色的紙本不太有問題, 但遇到黑色的紙本
拍攝的相機和我肥宅的臉就出現在畫面上囉~XD
所以我們需要補強, 把所有會反光的都遮起來
買這個

這是雨傘布, 如其名是雨傘用的, 全黑不透光, 從台北太原路取得
內側是銀色反光材, 詢問老闆才知道剛好這東西也是攝影可用的
不過我還沒測過效果就是了


相機鏡頭也要擋, 我用的是 Canon EF 40mm STM, 鏡頭前面有一圈白字
儘管很小, 但遇到全黑的紙本, 它也會出現在畫面上

全部裝上的樣子

大面積的黑布可以擋下上, 左, 右的反光
但是我的光源從上面來, 照在黑布上還是會有光線
於是下方的反光就會出現在畫面上, 所以玻璃板前方下面有個奇怪的設備
我稱它叫 "反光終結者" (冷)

畫面下方的反光是這樣來的

上圖左是光線路徑, 上圖右紅線是反光終結者
我沒法做出全黑完全不反光的全吸收材料, 所以策略就是擋住
擋時注意不要擋到相機視野, 所以高度增加方式和相機視野有關

先用紙板做, 發現性能不錯, 不過放一段時間吸收水汽就變形了
所以後來改塑膠板做

做完表面再貼黑紙, 堅固耐用

到這裡, 硬體部份的問題就差不多了, 接下來是軟體問題
由於四周都擋黑布, 加上兩側鋁框擋光, 我們別無選擇只能從上方打光
從上方打光產生的問題是光線會讓畫面上方比較亮, 下方比較暗
我把光源移遠, 或是改用閃光燈遠方打光結果都一樣
我想問題可能不只是來自光源, 四周和下方的反光終結者應該都是亮度降低的原因
這很難直接用影像處理軟體調整, 因為影響處理軟體調整的是整片區域
除非分區調, 這樣又會出現顏色區塊不同, 這會很明顯, 所以我們要用一點麻煩的方法修正

首先, 拍照前要先拍一張白紙, 拿這張圖作為校正基準
接著我們寫一隻程式, 對每張後面拍的紙本圖檔進行處理, 這程式放這裡:scale-color.py
另有多執行序 (正確說是多程序) 版:scale-color-mp.py
算法是讀入白紙影像, 對每個區域進行取樣, 以我現在用的參數來說是 330
從影像左上角座標 0,0 開始, X, Y 每隔 330 就取樣一次
這樣會形成一個網格, 每個點選取 10x10 的像素, 將每個像素轉成灰階, 然後求平均值
灰階的算法出自 Wiki 我跟的標準是視訊用 ITU-R BT.709
gray = (r * 0.2126) + (g * 0.7152) + (b * 0.0722)
這段程式寫在函數 get_gray_value(), 求平均的程式寫在 average_block()
這樣我們就可以取得每隔 330 像素形成的網格中各點的亮度
330 這個值是嘗試出來的, 由於紙上會有紋路, 就算我拿漫畫用紙它還是會有一點紋路
而且難免有髒污, 所以 330 這值就是讓取樣密度盡量密, 但是又足夠閃過髒污
而 10x10 的平均值就是用來抹除紋路, 避免剛好取樣到紋路亮處或暗處導致計算偏差
我的程式會把計算時取樣的點輸出到另一檔案, 長這樣:DSC03677.JPG.jpg

如果發現剛好取樣到污點, 可以修改 330 這取樣密度來閃避
若還是會碰到, 可以選個碰到數量較少的值套入
然後修改白紙影像, 把附近乾淨的區域複製過來貼上, 這樣就不會差太多
不過最好的方法還是請準備一張乾淨的紙, 然後玻璃要洗乾淨XD

完成取樣後接著填滿, 每個取樣點之間的像素進行線性內插
用類似 3D 繪圖的 fill triangle 方式進行填充
以前唸書時修課曾寫過, 但早就忘光了, 軟體繪圖的 fill triangle 超麻煩
印象中好像是先找最低點, 然後計算斜率找步進值, RGB 有三組步進
還要畫直線的算法, 然後由下往上, 每條線由左而右一一填充
這個懂了, 接著把 RGB 換成 UV, 求出值後從另一張影像取樣顏色後填上
這就是基本的 3D 材質貼圖算法, 當時這個作業我只做了色彩填充就投降了XD
最後過關的分數看起來就是同情分數及格的
這東西超級麻煩, 既然現在不是寫作業, 我就必須偷懶XD
這裡取樣點間長和寬必須相同, 由於有原始碼, 想要長寬不同的用戶請自理XD

完成以後我們可以得到一個亮度分佈圖, 這裡我稱它做 lightmap
我的軟體計算完後會把 lightmap 存檔供參考, 長這樣:lightmap.png
這圖在 8-bit 以上面板不容易看出漸層, 6-bit 面板比較容易看到階層
但是如果放到 1:1 上下左右移動還是可以感覺出明暗變化
這就表示光線照在這紙上不是均勻的, 有亮暗區, 而且還不是固定上到下漸層
我曾改用燈管照明, 發現就算是燈管還是有中間比較亮兩側比較暗的現象
所以最後就不想試了, 反正都一定要修就乾脆用最便宜的 LED 燈泡, 然後軟體計算調整

接著依據 lightmap 調整影像, 當我取樣完網格後, 我會記下網格中最亮的點的值, 假設 220
當我讀取歌本影像後, 對每個像素計算, 假設 X=10 Y=20 這個點, 讀取顏色後
我去查詢 lightmap 中 X=10 Y=20 這個點的亮度, 假設是 200
那我就知道這個點的亮度是最亮處的 200 / 220 = 0.909090909
接著我就把歌本影像該像素的 R,G,B 都除以 0.909090909 讓它加亮到和最亮處相同
整個算法就這樣, 腳本執行參數:

./scale-color.py 白紙影像路徑 取樣區間 平均值區塊寬度 來源影像目錄 輸出目錄

取樣區間就是上面 330 那個, 平均值區塊寬度就是上面 10x10 那個 10
來源影像目錄是存歌本圖檔的目錄, 全部處理後存成 PNG 放到輸出目錄中
範例指令:scale-color.py DSC03677.JPG 330 10 ./src ./dest
整個轉換蠻久的, 一堆浮點數運算, 多程序版則是看系統有幾核心就開幾個
多程序版會依賴硬碟中的 lightmap 檔, 不可刪除否則不正常
這樣的原因是 python 的多執行序只會用一個核心的速度
雖然執行上是多個核心都有在動, 但是都只動一點, 不會衝到 100%
Python threads all executing on a single core
而跨了程序, 全域變數就無法共享, 嘗試做共享單張 lightmap 會佔用近 1GB 記憶體
四核心就會吃掉 4GB, 因此改為重新由硬碟讀取
亮度處理後接下來的加工就是一般影像處理軟體就能輕易完成的
主要是調整形變, 用 GIMP 的 perspective 工具, 然後曲線拉一拉, 裁切, 完工



整理一下流程, 架設環境, 完成後先校準, 讓解析度固定在 600dpi


把光圈設到 F8, 影像品質最好的區間, 可參考鏡頭的 MTF 圖來選參數
最邊緣有一點點色散現象但是不嚴重, 這品質算不錯了
由於是 LED 暖白燈, 我把白平衡固定在 4900K M1B1
以前設 5000K 感覺還是有點黃, 這次再調低一點

然後拍攝一張白紙作為亮度校準圖


再拍攝一張黑紙確認反光終結者有擋下畫面下半的反光, 並檢查有無其他反光


然後開拍, 拍到電池耗盡, 接著處理影像, 這裡取一張範例:

這是內容相當糟糕的一片 CD, 不過封面色彩豐富所以拿來測試

剛拍下的圖原始檔:DSC03762.JPG

亮度處理後的原尺寸檔:DSC03762-lmap.jpg

接著調整形變


調整色彩曲線, 即是顏色重對應


裁切, 完成輸出:DSC03762-ok.jpg

效果還不錯, 顏色對比很高, 看起來十分鮮艷, 我以前用過的掃描器從沒看過這種品質
掃描器技術常見的有兩種, 這裡有說明:HP 多合一打印機 - 簡述 CIS 和 CCD 掃描器
用事務機的掃描器掃出來顏色黯淡, 畫質粗糙, LED 照明, 應該就是 CIS
用 CCFL 燈管掃出來的又太亮, 我上面拆的掃描器就是這種, 用它掃圖只能掃出灰色
掃不出黑色, 太亮了, 白紙放進去都找不到邊緣, 亮度破表
所以雖然這相機方案十分麻煩, 但我還是採用, 因為掃描器做出來的色彩根本不行
我不知道高價的掃描器有沒有可以做出這種高對比的, 但目前也不會考慮購買
因為驅動程式問題很大, 我已經不用 Windows, 掃描器支援在 Linux 系統一直很差
根本沒有廠商願意投入, 用的人太少, 有老外在論壇唸
說 HP 這家公司明明有做 UNIX 系統, 掃描器卻完全不支援 UNIX 系統
真的是很小器XD 如果有放驅動的原始碼, 就算 Linux 編不過, 至少知道通訊格式
我們可以自己拼看看, 若啥都沒有就要用 USB 分析儀, 為了這兩三張小朋友的東西
拿四十萬的機器分析, 然後畫質還不怎樣XD 真是有夠不划算, 還是拆了殺肉改造吧

目前拍的都是 JPG 輸出, 沒有用 RAW, 所以畫面上有些地方會有些細微方塊狀
SONY 的 JPG 出圖包含雜訊抑制, RAW 雖然不會方塊化但是改成雜訊填充
實際比較後我還是比較喜歡 JPG, 目前我沒有能力處理這些雜訊, 還是機器處理吧
從改用 SONY 系統以來不管拍啥我都沒有用過 RAW, 只有測試時才會拍個一兩張
我認為把曝光控制在動態範圍內比較重要, 這樣拍出來的影像不是最好看的
但是是最容易後製的, 這是我個人的看法

原先想做的是包含變形矯正, 前面拍攝 600dpi 那張圖
如果上面畫一些容易識別的標記, 我們應該可以用影像識別找到它
然後每張圖自動執行變形校正, 這樣出來的影像就只要調亮度後就能裁切輸出
不過搜尋資料時發現目前這需要的軟體還不夠完整
有工具可以做到這件事, 但是 "做的到" 和 "做的好" 是不同的, 最好的方法應該是自動化 GIMP
不過目前 GIMP 的腳本要啟動 GIMP 圖形界面才能用, 而且似乎沒看到 perspective 工具
要自動使用 perspective 工具得直接呼叫 libgimp, 初始化不知道怎麼做
GIMP 現在正在轉型階段, 以前 GTK 就是從 GIMP 分出來, 原本給 GIMP 用的 UI 工具
現在變成多數 Linux 圖形界面軟體的基礎, 而現在開發團隊打算再把核心演算法分出去
是為 GEGL (Generic Graphics Library), 從 wiki 看這計畫似乎 2000 年就開始
現在還在努力中...(汗) 官方網頁說 2.10 的 GEGL 濾鏡的顏色管理還沒完成
2.10 卡了很長一段時間, 印象中用了三個版本的 ubuntu, GIMP 好像都是 2.8
現在投入時間用 libgimp 做出來轉換工具, 未來一定會改, 所以我不打算花時間
如果我資料庫建完他們還沒做完, 那我就不做了XD

既然是自己花時間處理影像, 我有一些想法要做的更完善
期望資料庫裡的東西可以直接播放, 目前限縮檔案類型
失真的存 MP3, 無損的存 FLAC, 如果掃入的影像有固定的命名規則
或許可以做個超炫砲的播放軟體

這用 OpenGL 畫的

繪製腳本:texture.py
不過這只是測試可行性, 未來一定不會這樣寫, 再想看看有什麼玩法可用
3D 繪圖加速界面現在也進入戰國時代, 誰會勝出還不知道, 不需急著下決定


2017.08.14 更新

紀錄一個自由軟體: Lensfun

簡介:
數位照片並不是完美的。 當然, 相機越好, 效果越好
但是如果你仔細觀察那些加裝高貴鏡頭的高貴相機拍的照片
你可以發現各種不同的失真
要製作一個完美的相機是非常困難的, 因為有非常多因素會影響影像品質
而且對相機和鏡頭設計人員來說, 許多因素是魚與熊掌不可兼得
他們需在設計限制與預算中做各種取捨以獲得最佳的影像品質

但是我們都想要完美的影像, 不是嗎? Yeah~XD
這就是 Lensfun 做的事情:校正鏡頭產生的變形


這是看 Hugin 工具尋線找到的, 不過目前我沒有能力使用它
先記著, 以後有機會用看看

12 則留言:

  1. hp的四物雞(誤)可以喔,我是網路連結的,裝個hplip設定一下,ubuntu內建的掃描易就可以抓到事務機掃描台了(雖然就是有夠爛的那種
    掃描器調黑的話,epson的可以在掃描前就先拉色階對應表(其他家應該也可以,不過等我懂設定這個的時候掃描器市場已經縮到快不見了)。更早以前則是先掃進電腦(能用高位元數更好)再拉色階。不過網紋問題從photoimpact時代到現在gimp時代我始終拿他沒轍orz
    epson的話,借一下別人的圖:https://images.plurk.com/4D6KmTGeXFuh5JaVrQDY.jpg
    然後,掃描器有個地方很麻煩,感光元件一段時間都會壞點,然後掃起來就是壞線,基本上就是準備看下一台了...
    反光的話,不是有一種玻璃導光的方式?就是從玻璃側面打光進去,只有貼著玻璃的東西會被照亮

    回覆刪除
    回覆
    1. 噢! 我忘了現在都 wifi 版, 我玩四物雞那時是 USB 的, 沒驅動就廢了
      >epson的可以在掃描前就先拉色階對應表
      我的 hp 都用 twain32 掃, 沒看過那界面, 只有亮度和對比
      也可能要裝軟體才有, 這我沒用過
      >網紋問題
      這個應該是摩爾紋吧, 只要是網格感測元件都會有, 和圖像類型有關
      那種圖已經破壞細節, 我個人認為是沒救了, 以我這數位相機方案也會有
      這裡有一個範例:
      https://drive.google.com/file/d/0B_gFNN5W0bYNaHNyZ1czSGRLbFk/view
      注意妹子的大腿, 當圖片的網點密度在某個範圍而且是某些顏色就會觸發
      網點密度過高的不會, 太低的也不會, 要剛好在某個範圍內才會
      不過對於我的方案來說是可以改變相機距離來修正
      以上面那張圖來說, 我把相機再往前移約五公分, 放大這些網點
      拍照後到電腦縮小為 600dpi, 可以得到這結果:
      https://drive.google.com/file/d/0B_gFNN5W0bYNMGN5UnNvVDBOeE0/view
      這會需要重新拍校正圖, 重新處理影像, 但至少可以解決問題
      掃描器機構上已經固定死, 那就沒救了
      >感光元件一段時間都會壞點
      我還沒遇過, 我的機器都在壞點產生前就被我丟了XD
      >只有貼著玻璃的東西會被照亮
      那個不會照太亮, 而且會發光的絕對不是玻璃後的紙本, 而是玻璃上的指紋XD
      有興趣可搜尋 Frustrated Total Internal Reflection
      早期最多實作的 multi-touch 就是用這原理做的, 有興趣可以用 CD 殼實驗
      手電筒側面打光, 手指按上去某個角度手印會發光
      此時不要動改換紙壓上去, 紙不會發光, 因為這特性所以適合做觸控

      刪除
    2. 不是摩爾紋。參考 https://images.plurk.com/5bq80R7CRWqLnJjsg5PP.jpg
      我處理這張和類似圖片的時候很煩惱,細節保留會連網紋也保留下來,糊化開了則是葉子變色塊。有些則是印刷的顏色太淺(像是水面反光一類的圖形效果),拉色階會直接被當白色吃掉
      突然想到,如果多個方向安裝燈光,個別開啟拍攝數張作圖片合併?應該可以得到炫光在不同位置的圖來做抵銷合併

      刪除
    3. >細節保留會連網紋也保留下來
      印刷品質問題, 我這裡也有幾種, 文章中的糟糕 CD 屬於中密度的
      另有低密度樣本:
      https://drive.google.com/file/d/0B_gFNN5W0bYNWkREV0JMNEFhRk0/view
      以及高密度樣本:
      https://drive.google.com/file/d/0B_gFNN5W0bYNVC12RG4wNy1QeDA/view
      這兩張和文章中那張都是同一批次拍出, 拍攝配置都相同但結果卻不同
      既然是原本印刷就那樣, 我會選擇維持不改, 因為改要花時間, 懶XD
      更重要的是既然畫面早已破壞, 早已失去細節, 又何必把它硬湊呢?
      除去網點最好的方法就是縮小圖片, 因為那些本來就是人眼看不太到的細節
      模糊化作法和縮小並無不同, 如果有興趣可以把影像縮小再放大
      畫面還比較銳利XD 如果堅持一定不要網點, 可以縮放選不同算法
      像是縮小選線性, 放大用非線性, 找幾個組合玩看看
      或是套用 selective 高斯濾鏡 (我不知道中文版名稱)
      只針對銳利度低於設定的區域模糊, 看起來假裝還有細節這樣XD
      >有些則是印刷的顏色太淺
      表示印這紙本的廠商不打算讓你擁有完整複製, 認命吧XD
      >突然想到,如果多個方向安裝燈光,個別開啟拍攝數張作圖片合併?
      現在的方案已經很麻煩了, 不要再複雜了XD
      如果要不反光最簡單的方法就是沒東西會反光
      把我的方案相機底座墊高一公尺, 玻璃台也墊高一公尺, 軌道留地面
      這樣就沒問題啦, 只要面積夠大的黑布即可, 然後上下都加燈泡
      但這樣重心高很不穩, 要加其他支架, 燈泡也要支架, 整組就超大佔空間
      這個留給家裡住透天的用戶去實作, 我不行XD 這裡有類似的玩法(垂直版):
      https://forum.diybookscanner.org/viewtopic.php?t=175
      地區是聖彼得堡, 又是戰鬥民族!XD 可以放進包包, 重視攜帶型
      支架有反光但剛好閃過頁面, 環繞在頁面四周
      不過這個是照白紙的, 照黑紙的話相機本體就會現形了, 而且他說
      if some graphics are present, the underexposed areas
      sometimes appear as the big black spots
      這就是缺乏亮度計算補償的結果, 很正常
      我不認為斜角度補光可以補到 100% 平均
      但是補到接近平均減少調整對畫面品質肯定有幫助
      可調亮度的白色燈條組成面可能有機會幫上忙, 如果墊高後上下都裝的話
      這樣還要裝一隻相機接電腦動態調整, 有沒有必要搞到這樣要仔細考慮XD

      刪除
  2. >縮放
    有沒有先做選擇性高斯,縮圖以後還是看得出來(會多些雜訊感)...除非縮的超小張,那也沒有自己掃的意義了w
    >淺色
    肥宅,絕不向現實妥(略
    好啦我用過一招比較麻煩的,而且也只對白底比較好操作,就是不要把白色拉爆就掃進電腦(可能白色只到24x,沒貼到255),進來以後人工框選白色區域真正砍白,淺色區域的網紋裡的白色就讓它不太白...把重點放在畫面物體的保留
    突然想到,上篇的光源該不會是為了給這篇的打光吧ww

    回覆刪除
    回覆
    1. >那也沒有自己掃的意義了
      抓到重點了, 有些紙本的品質, 掃了不太有意義XD
      如果真的很想留, 就不要太在意品質, 因為它就只有這樣
      >肥宅,絕不向現實妥(略
      糟糕, 我自婊了XD
      >就是不要把白色拉爆就掃進電腦
      這就是我方案的動態範圍內的精神!所以還是用相機吧XD
      快門決定範圍, 不用拉範圍只要調快門, 而且看螢幕, 所見即所得!
      >上篇的光源該不會是為了給這篇的打光吧ww
      正是!你已經感應到肥宅的行為模式XD 所以它才會長那樣, 和紙一樣長方形

      刪除
  3. 請問您是h小站的大叔嗎?

    回覆刪除
  4. 停止服務是甚麼意思?
    不再去小站了嗎?

    回覆刪除
    回覆
    1. 偶爾看一下但不參與討論, 即是唯讀

      刪除
  5. 恩,我是小站的肥宅啦
    以前有+你到msn聊天還有通mail
    不過msn關掉後就失聯了
    不知道你還記不記的

    最近想重整已以前msn的好友
    你還有再用其他通訊軟體嗎
    比如說line


    回覆刪除
    回覆
    1. 歹勢, 目前沒有意願使用通訊軟體
      前一隻手機還有裝過 line, 新的這隻已經不裝了
      隨著年資增加, 我身上的案子越來越多, 它們不定期會回來要修改
      回家則是處理大量資料, 加上業餘計畫已經滿檔
      資料處理完接著要回應父母的 "期望", 除非有例外發生
      不然接下來的幾年應該都只會維護這個 blog, 其他通訊管道全部中止
      若有技術支援需求可選一篇比較接近的文章進行回覆, 我看到了盡量回
      其他的就沒辦法了

      刪除