星期日, 9月 12, 2021

人生第一個深度學習應用

成功弄出第一個自己的深度學習應用 XD

問題起源於幾年前唸書時期的研究計畫,得弄一個能從大量(去識別後,連匿名 ID 都沒有的)free typing 地址中分析出區、里的程式。

難點在於地址是 free typing,不一定會填區里,有也不一定對。特別是「里」的資料還經過行政區域調整(舊里合併、消失,新里出現),還有亂碼(特殊造字),通用字(鹽塩曹[石曹]𥕢...)等問題,甚至官方資料也不保證乾淨(曾經從政府門牌查詢網頁查詢出填色方塊字██...)。

資料品質多慘?約 20% 資料連 Google 都分析不出區里,剩下 80% 很多判讀結果也有明顯錯誤(例如台南地址判讀成高雄的)。最重要的是,未來如果上線對接真實資料做分析,就不方便採用 Google Map Platform 等線上服務。

原本做法是應用工人智慧,寫個土炮 parser 硬讀,搭配大量特殊規則和自製資料清潔 pipeline 應對各種坑,但效果並不好(「區」「里」正確率約 6x%、50%),本來差不多放棄了,但最近研究 ML/DL 忽然想到這問題其實類似中文文本分類問題,也許可以 ML/DL 解決?經過大量搜尋後發現也許可以用 TextCNN 解決這問題。

最初版本是依據好心人 CSDN 分享的「中文新聞分類」代碼依樣畫葫蘆。文本資料轉簡體,Jieba 斷詞,用簡中新聞訓練出來的 pretrained word2vec vector 做 embedding,結果分類正確率只有 4X%,而CSDN 上新聞分類範例的正確率是 90%。

研究後發現 training data 可解釋部份問題,jieba 斷詞用在地址並不理想,檢視後發現很多不合理的斷詞。個人也懷疑用新聞訓練的 word2vec 和斷詞也不適用於地址(例如博愛、仁愛語意近似,但仁愛路和博愛路就完全不同)。於是換了土炮斷詞法,改了 stopwords,用 gensim 拿公開門牌資料重新訓練 word2vec,再搭配土炮 parser 的資料清潔 pipeline,調了下少數個人看得懂的參數。model 正確率拉到 60%(里,600+ 個分類)和 88%(區、37 個分類)。土炮 parser 也不用扔,拿來做 ensemble,混合雙打正確率就拉到 65%(里)和 90%(區)了。

弄好後復盤,才注意到這是第一個親手寫出來的 deep learning 應用,雖然核心 model 代碼借(ㄔㄠ)鑒(ㄒㄧˊ)了公開代碼,不過 data cleaning、找出 accuracy 低下(部份)原因並改善、部份參數最佳化、做 ensemble、還有把一切從 jupyter notebook 打包成完整的 pipeline 都是自己完成的。成功踏入 deep learning 調包俠境界,並且有生之年應該有機率進階調參俠 XD

可改善的地方還有很多,也許可以換更好的模型(往 Hierarchical classification 去找?),進一步參數探索,土炮 parser 也可繼續打磨,改善 ensemble 的整體效能。不過作為非資訊專業人員作到「證明問題可以用 deep learning解決」,應該夠交差了,請公司內專業 AI 人士改善模型我再套回 pipeline 也許是比較好的做法,我可以去做別的事。

最後,pytorch 真是美!

全文連結

星期三, 9月 08, 2021

Onedrive 停用自動更新

原本用 Google Drive 放個人資料,買 Office 365 有附 Onedrive 空間就開始使用 Onedrive。Onedrive 用起來什麼都好,就是會自動更新到新版,然後新版永遠無法啟動(默),於是每次 Onedrive 自動更新後就得重裝。

為了這件事,爬了大量網路文章,網路上提到的方法大多是工作排程器停用 Onedrive standalone update task。微軟官方網頁也是這樣寫的。但事實上 task 停用以後,Onedrive 還是會偷偷自動更新(Windows update 直呼內行!)

今天換思路,直接進 Onedrive 的程式目錄(%localappdata%\Microsoft\OneDrive),找 Update 和 StandaloneUpdater 兩個子目錄(沒有這些目錄則手動創造空白子目錄),右鍵內容 -> 安全性把 System 群組在內所有權限全部勾「拒絕」,並實驗確認目錄無法修改。

設好之後故意打開 Onedrive standalone update task,結果 Onedrive 無法更新,停留在穩定的舊版。討厭的新版再見~再也不用無限重裝舊版了 XD
全文連結

星期四, 9月 02, 2021

Vast.ai 發現

最近想試試 TextCNN 看能不能解一個問題,把塵封許久,裡面還有 $8 credit 的 vast.ai 請出來。

原本以為 vast.ai 的 container 只能 SSH 或 jupyter notebook 二選一,可我想兩個都要。為此還花了幾小時自製 docker image 用 supervisord 啟動同時執行 jupyter notebook 和 sshd,結果在本機端成功啟動但在 vast.ai 無法使用。

繞了大圈才注意到,vast.ai 給的 ssh 連接指令是:

ssh -p 12345 root@ssh4.vast.ai -L 8080:localhost:8080


如果單純只要 ssh,何必多開 port 8080 做 SSH tunneling 呢?去查文獻才發現,這個 port 8080 是讓你在 ssh 裡面開 notebook 用的。

jupyter notebook -ip=127.0.0.1 --port=8080 --allow-root



在 Windows 本機,putty 打開 SSH tunneling 連上後,在 bash 啟動 jupyter notebook 時指定 port 8080,本機瀏覽器開 localhost:8080 就能進 notebook 。自己土炮的 docker image 用這個方法就可以同時開 ssh tmux 和 jupyter notebook

不得不說 vast.ai 的 documentation 不夠清楚,雖然 RTX 3090 $0.561/hr 的價格真香 XD
全文連結

星期五, 7月 23, 2021

自炊電子書經驗

家裡書越來越多,很多技術性的書籍,讀過一遍以後通常只會拿來查,很少完整重看第二遍,放在家中佔地方,工作出差又不好帶,所以就動了自炊的想法。後來剛好看到夠便宜且夠用的掃描器,Microtek ArtixScan DI 2125c,一台不到 2500,支援 A4 彩色雙面掃描 600dpi 有 20 張的自動進紙,低廉的價格作為實驗品足夠好。折騰了一兩天終於弄出了自己的 pipeline 

找影印店裁書,掃描存圖檔 

圖檔要檢視有沒有跳頁或是嚴重扭曲,有的話重掃並且設定好檔名,使檔名 lexicological order 和紙本頁面順序一致。 

重排檔名,和依照檔名順序重設修改時間

避免檔名或修改時間的順序紊亂,導致匯入其他 App 後順序順序錯亂,以下 powershell 腳本「-whatif」要拿掉才會真正改檔名,否則只是預覽。

依原本檔名順序批次重新命名

(Dir *.jpg) | sort name | ForEach { $count=1 } {
	$scount=([string]$count).PadLeft(4,'0')
	rename-item $_ -NewName ngimg-$scount.jpg -whatif; $count++ 
}

依檔名重排修改時間

$dirs = (Dir *.jpg) | sort name
ForEach($d in $dirs) {
	$file = Get-Item $d
	$file.LastWriteTime=(Get-Date)
}

圖檔轉檔為 PNG

不用 jpg 是怕反覆修改存檔越來越失真。後面的步驟每次使用 mogrify 前都建議複製圖檔目錄做備份,因為 mogrify 會原本修改原本圖檔造成不可逆變化。

magick mogrify -format png *.jpg

去背景

magick mogrify *.png -transparent white -fuzz 50%

fuzz 網路教學設 90%,我保險一點設 50%

Imagemagick 切黑邊,傾斜校正(deskew)然後再切黑邊 

切除黑邊

magick mogrify -fuzz 30% -define trim:percent-background=10% -background black -trim +repage *.png 

個人測試的結果,percent-background 不設成 0 可避免去黑邊的時候吃掉太多正常內容,切完後周圍會有很細微黑邊但個人可接受。書中有大量黑底的,可把 percent-background 拉高或把 fuzz 壓低,try and error 根據最終效果做調整

傾斜校正(deskew)

magick mogrify -deskew 80% *.png

個人使用體驗,deskew 設 80% 會比網路上普遍的 40% 好些,至少對我的掃描器是如此。如果先做傾斜校正,圖檔四周可能多出不同色,和原本黑邊混雜,造成後續去黑邊困難。所以先去黑邊再傾斜校正,再去一次黑邊去除掉傾斜校正造成的額外黑邊。 

影像銳化

magick mogrify *.png -sharpen 0x1.5 -modulate 100,130,100

modulate 三個參數分別代表亮度、對比和 hue。100 代表原值。個人選擇調高對比。sharpen 0x1.5 是網路建議,測試後肉眼可接受。 

圖片檔案批次匯入,做 OCR,存成 pdf 

我用掃描器附的  Finereader 解決

建立 PDF 目錄(table of content)

網路上找了一堆免費或試用軟體,後來發現 k2pdfopt 可用。

k2pdfopt -mode copy -n -toclist 目錄檔.txt 輸入pdf.pdf -o 輸出pdf.pdf
其中目錄檔的格式如下,前面的數字代表對應 pdf 的頁數,+ 號代表縮排
20 Chapter 1 大章節
+21 1.1 小章節1
+26 1.2 小章節2

弄好後可用免費的 PDF-Xchange editor 把目錄中不小心插入的空白項目等移掉,PDF-Xchange editor 若只是刪除現有目錄中的項目是不會加浮水印的。 

到這步自炊電子書 pdf 就完成了。原本的書看是要膠裝保留還是丟掉。附上自炊的電腦叢書抓圖。Pdf 有目錄,文字沒有歪斜且清楚。旁邊很醜的字是個人閱讀用鉛筆做的筆記,300dpi 下(我自己)還是能看懂寫什麼。 


除了文中方法,我也試了不少 App,包含中國製 Camscanner 掃描全能王,Adobe scan、Microsoft Lens 等但各有各的問題。

Camscanner 最好用,但有浮水印,電腦版還要你把資料傳上雲端,之前好像還爆發過資安疑慮,MS Lens 發現 Android App 不能一次匯入大於一百張就放棄了。

花了一兩天,發現其實以裁書後用掃描器掃描的圖片品質,用 Imagemagick 搭 pipeline 做後處理就很夠用了。影像來源才是決定電子書品質的關鍵,影像來源太差,例如用手機搭自拍支架拍照片,照片還有手指,不管後續用什麼軟體,得到的結果都是歪七扭八又模糊。

當然買好點的機器也是解法,網路一致推薦的自炊神器富士通 Scansnap ix1500 除了掃描速度更快,機器軟硬體好像還附贈更好的校正功能,說不定就不用自己土炮後處理 pipeline 了?但那台機器對只想「試試看」自炊的我太貴了,後來就算了。

全文連結

星期四, 4月 16, 2020

第一次用 Rust 寫程式成功

程式背景是需要用 Chromium embedded framework 寫 client 做 overlay UI 去「注入」某報表軟體,幫軟體增加原生 UI 沒有的功能(關鍵字變色)。原來用 python 搭 cefpython 被我嫌慢,改用 native C++ client + Rust 做。

初步使用結果,語言加入的新機制幫忙不小,如 Ownership 和 lifetime 替我抓出「把 stack 的 local variable 直接 pass reference 給另外一個 thread」這種蠢錯誤。除此外 Rust 「安全」的設計還有很多,例如  function 不直接回傳「結果」,而是把結果值包在特殊物件(Result)裡,不寫 error handling 的 code 就不能把撈出來用等等,compiler 盡了努力確保 error handling 完整,不完整甚至不給 compile。

缺點就是 learning curve 很陡。例如指針裸奔不能用,物件要非常清楚考慮 life cycle 的問題,我為了把一個 TCP socket object 給兩個 thread 用搞了半天才說服 compiler。大量的 Error handling 讓 code 膨脹,Rust 給了語法糖來緩解膨脹但也增加了 learning curve。Rust 的某些設計,如完全沒有 object inheritance 而是用 Trait 做 duck typing 等等也讓我花了時間上手。

但 Rust 的「好處」也體驗的到。這次寫 multithreading 完全沒遇見 segmentation fault 或任何 memory-related error。即使是 Panic (我偷懶用 panic 做 error handling)也在 Rust 的管理之下,至少報錯非常清楚,這次完全沒用 debugger 或看 stack dump。

Rust 的套件管理也很好用,cargo.toml 寫好 dependency,剩下的 cargo 自動處理。不需要搞定 lib compile、linking 或各種環境設定鳥問題,舒適度堪比 Docker pull XD

整體而言,至少在我的 use case 裡,Rust 確實做到用語言設計,在 compile time 抓了大量會在 runtime 炸掉的問題。但 learning curve 陡峭,寫程式也很難「想到哪寫到哪」,也許在完成 prototyping 或業務邏輯固定後用 Rust 來重構 bottleneck 是不錯的用法 XD
全文連結

星期一, 8月 13, 2018

Doom 2016 Nightmare 全破心得

終於把 Doom(2016) Nightmare 全破了。這遊戲在 Steam 收藏櫃裡藏好久,總算口試完能玩一下 XD

2016 版和 Doom 3 完全不同風格。 Doom3 接近恐怖路線,所以有「拿手電筒時不能同時拿武器」的設定,然後怪就經常從背後冒出來。Doom 2016 淡化了恐怖元素,徹徹底底的走暴力路線,電燈黑掉然怪從背後冒出來的橋段沒有了,改成前方一次冒一堆怪出來。新作暴力到一開始玩有點不適應,噴番茄醬就算了,開槍、電鋸殺還會有肉塊,「榮譽擊殺」還有對怪物處刑肢解特寫鏡頭。不過玩到中段就開始無視這些元素,只會擔心放動畫期間會不會被其他怪集火瞬秒 XD

跟少數幾款玩過的近代 FPS 比起來,Doom 很多設計看的出都是為了不讓玩家龜著打。例如不會自動回血,所以躲柱子後面等回血是沒用的。雜魚怪也有地圖砲,龜定點就等著被連發小範圍地圖攻擊連死,很多怪都要走位才好打甚至不走位不能打,例如拿盾牌的殭屍基本上正面打不動,一定要用範圍攻擊或是繞背,也有怪近距離肉搏和正面特強,玩家一定要拉開距離否則就是被秒。不過遊戲雖然逼玩家走位,但多死幾次關卡熟了其實還是可以猥瑣(在 Nightmare 模式成功用猥瑣解怪,成就感更大 XD),有的地圖只要爬到「二樓」怪就只會一隻隻冒出來而不是一次來一波、有的地圖其實有防禦面積不大的小圈圈可以繞等等。


Doom 2016 武器繼承了 Doom1、Doom2。經典的武器包括單管、雙管霰彈槍、機槍、火箭砲、電漿槍、BFG2000 等都在。但作了很大調整,除了 BFG 外其他武器一開始都大幅變弱,沒升級的單管霰彈近距離轟雜魚,如果不打頭有可能五六發才死。然後多了武器升級系統,盧恩符文和裝甲升級系統。武器升級後、升級滿根本是截然不同的東西。升級榴彈砲的單管霰彈可以用到大後期。完全升級的雙管霰彈和攻城模式 Gauss cannon 就是 bug 槍,前者近距離見誰秒誰,噴 Boss 也不在話下,後者基本是小型 BFG。

因為有升級系統,遊戲其實是越後面越簡單,因為怪變強很多,但是升級武器、盧恩符文和裝備的玩家變強更多,即使是剛開始最弱殭屍都能一擊敲掉半條血的 Nightmare 模式,練成少數 bug 槍、符文,裝備升級,拿 BFG 後也能橫著走。只要升級速度趕得上關卡變難速度基本沒那麼難打。


整體而言,新版 Doom 回歸了元祖 Doom 的成功元素,而 Nightmare 模式夠難很有挑戰性,但用點心思(研究地圖、升級裝備、武器...)其實也沒那麼難打。期待續作了。






全文連結

星期六, 2月 11, 2017

義大利麵代碼怪,AHK 0.208


為了增加實力,決定研究常用 opensource 專案的原始碼,目標是自己常用的 autohotkey,從遠古的 0.208 版入手。

根據 solution file,這版本是 VC++ 7.1 時代的原始產物。花了點時間,解決了所有的 compile & link error 總算在 VS2015 編譯通過,開始研究原始碼之旅。

 
目前心得:

1. 為什麼這東西 VC++ 7.1 版允許編譯?

我修掉的 bug 類似:
 
a.cpp:
    static SomeClass foo;

b.cpp:
    foo = .....

b.cpp 沒有 extern declaration,就直接使用了另外一個 compilation unit 的 global static variable。我沒裝 VC++ 7.1 實際去編,不過假設放在 public Git repo 都能編的話,那 VC++ 7.1 允許這種東西 compile & link 也挺神奇的 orz



2. 神奇的巨集海

 ...
# define ARG1 (mArgc > 0 ? sArgDeref[0] : "")
...
# define FOUR_ARGS ARG1, ARG2, ARG3, ARG4
...
if (WinActivate(FOUR_ARGS, mActionType == ACT_WINACTIVATEBOTTOM))
...



這甚麼優(ㄜˇ)雅(ㄒㄧㄣ)的寫法。結果一個 class 的 definition 都看不完就累了,看完 28000+ 行原始碼可能要花時間 orz


結論:我和義大利麵代碼怪特別有緣,就連挑 opensource 專案能都遇到義大利麵代碼怪,還有我以前的寫法並不糟 XDDDDDDDDD
全文連結

星期六, 5月 14, 2016

支持死刑的理由

保留自己八卦版的文章

: 首先我不知道能不能把理論過程寫好,寫漂亮,但我發現目前論述都太容易
: 缺乏一個真正好好說理過程,或許你仍然可以不同意,但我相信可以理性溝通
: 第一、死刑不可回復性
: 第二、冤獄產生不可避免
: 第三、死刑嚇阻性問題
: 第四、國家可否殺人問題
: 第五、憲法上問題
: 第六、生命的價值
: 第七、我們想要什麼樣的社會



推您這篇文,總結了廢死常見的思路。

個人簡單來說:

一、人命無價,所以不能放在天平上,不可以有死刑?

不必要的娛樂用電,可能帶來火力發電,每年製造一堆空氣汙染
不必要的汽機車造成的空氣汙染
抽菸害人吸到二手菸

以上都能引起肺癌,根本就是隨機殺人。而且台灣肺癌每年成千上萬的死亡,其實殺人數遠比死刑來的高。但我們還是在做這些事情。因為做這些事情雖然會導致其他人類死亡,但是利大於弊,所以政府允許抽菸,然後就會有二手菸讓不想吸菸的人得肺癌死去

廢死喜歡主張「每條命都無價」,但事實上我們每天在做把人命放上天平的事情,不管你喜不喜歡把人命標上價格放在天秤的一端,你每天的日常生活其實都在這麼做。所以說「每條命都無價」我認為不是對不對的問題,而是昧於現實的問題,因為不管你贊不贊成你早就在做了。


所以即使人命關天,一旦誤傷難以恢復,國家冤錯案不可避免,我認為只要能論述「利大於弊」還是可以支持死刑。接下來論述「利大於弊」,死刑的「弊」您都說完了,那「利」在哪裡?

我簡單修改 #1M-J5-g6 我自己的文章

死刑不是復仇。
死刑不是復仇。
死刑不是復仇。

死刑是用與罪相當的刑罰,不帶仇恨,嚴肅而莊嚴的否定罪惡死刑的意義在於刑罰的公平,「罪刑相當」。犯罪的「罪」與制裁的「刑」必須相當,秩序才能為人信服,罪惡越重要罰越重,否則難以服人。


1. 公司如果監守自盜偷錢,跟上班遲到罰一樣重,大家服不服?

2. 學校烙人打人跟上課打瞌睡罰一樣重,學生服不服?


老師會把作弊的學生記大過或是退學,不是仇恨學生,而是不這樣做,無以表示對錯誤行為的否定,無法維護校規之威信,會讓認真遵守校規的學生對校規的信心產生動搖,覺得遵守校規是傻瓜。所以將學生退學就算老師會因此難過流淚,該做也是得做。

而死刑呢?就是因為殺人時在太惡劣了,所以不用死刑,沒有任何「罰」可以跟罪犯的「罪」相等,若不判死無以維護善良與正義的尊嚴。「不是我愛殺人,而是不殺服不了人」
----------------------------------------------------
檢察官請求對被告鄭捷處以死刑,核屬罪刑相當,合乎法律之目的,且無違背內部性界限,亦無權利濫用之違法,更無違反比例原則、平等原則、公平正義等法則,爰分別量處如附表編號1 至4 所示之死刑,並均宣告褫奪公權終身,以彰顯國法尊嚴並維護法治、保障社會安全;
----------------------------------------------------
為什麼要用死刑?因為面對極惡的罪,不用同等的刑罰,會無法「彰顯國法尊嚴並維護法治」讓百姓覺得法律不公平都偏袒壞人,民眾一旦開始瞧不起法律,那「保障社會安全」就做不到了



二、犯罪的成因很複雜,死刑不能解決問題,所以不要用死刑?

我認為會這樣說的人,都對刑罰產生了不切實際的幻想,錯誤的幻想刑罰必須是解救一切問題的萬靈丹。死刑不具備萬靈丹的效用,所以不要有死刑。

對,我也贊成光用死刑根本解決不了問題。但我還是支持死刑

一樣用比喻來說:國中生加入幫派飆車打同學,我相信也有複雜的成因(包括家庭教育等)。如果學校的老師「只」把每個飆車打同學的極惡國中生開除退學,那肯定不能徹底解決問題,一樣會有一批一批的極惡國中生上來繼續入幫派飆車砍人,永遠退學個沒完。

但如果反過來說:「讓同學退學根本不能解決問題,所以以後一律採用愛的教育。以後加入幫派飆車打同學的,一律等同曠課處理,警告一次加罰掃廁所。」請問原本已經囂張的打人小孩聽到了會怎樣?鐵定是氣燄更加囂張


看出問題了嗎?

「將所有犯大錯的小孩退學」雖然不能徹底解決小孩犯錯問題,但還是能在問題發生後,「罪刑相當」犯大錯用重罰的方式,讓很多人對已經失去顏面的規範重拾信心,讓很多人認為這校規起碼公平,情形越惡劣罰越重。倘若因為小孩犯錯成因複雜,就放棄對犯錯的小孩採取「罪刑相當」的處罰,那會讓其他人對校規失去信心。而且,沒有理由「超級壞小孩退學」跟「找出小孩犯錯的原因」不能同時進行

死刑也是一樣。把所有惡劣殺人的人都抓去斃了,以後還是會有殺人犯。但把他們斃了起碼會讓人覺得:這社會法律真公平,做大壞事有大惡報,罪刑相當,刑罰公平,遵守的心甘情願。而且沒有理由「解決犯罪深層原因」是廢死的專利,維持死刑還是可以同時「解決犯罪深層原因」。

死刑不需要解決所有的問題,只要在法律和善良的威信受到踐踏時,避免已經重創的威信進一步受傷,這樣就夠了



三、「犯罪的成因很複雜,不全是死刑犯的錯」會有宿命論的問題


「殺人犯和罪犯犯罪的成因很複雜,包括環境、教育、生理等原因,不能全歸咎於殺人犯,所以不該用死刑」
「如果你我投生到殺人犯的家中受教育,也許也會變成殺人犯,所以他們情有可原,不能用死刑」


這樣的論點,如果替換成

「我賺多賺少都是由上天決定,如果上天跟眷顧比爾蓋茲一樣眷顧我,我也能賺大錢」
「我錢賺得少,很多都是由環境決定,不能完全怪我」


你看出問題了嗎?「犯罪外力決定論」「人沒有自由意志」其實就是「宿命論」

宿命論的問題大家應該都清楚,如果人一旦相信宿命論,認為人的一切都是由外力決定,那人就會失去向上的動力。「犯罪他力決定論」問題也是如此,如果一旦因為犯罪成因複雜,就不用「罪刑相當」去處罰罪犯,那就會落入類似宿命論的問題:人沒有去惡向善的理由。反正你會壞,是因為你的環境壞,你會好,是因為你的環境好。那我當好人不就傻瓜?

所以個人以為,就算犯罪成因複雜,很多犯罪真的都受到外在影響,也不能放棄「罪刑相當」,因為「善有善報,惡有惡報」是人去惡向善的重要動力。一旦甚麼當推給外力,你善也是環境的功勞,你沒有賞,你惡也是環境的錯,所以你沒有錯。那人就失去向善的動力。

打比方:我知道學生暴力打人加入幫派成因也很多。但如果我跟學生說:「你打人是受環境影響,你打人不是你的錯,所以你暴力打人加入幫派比照打瞌睡處罰就好」「你奮發向上是你父母教的好,不是你的功勞,鄭捷如果出生在你家也會奮發向上」請問會有甚麼結果?一定是紀律渙散,所有人都變壞,因為行善無功,做惡無過,沒有因果,沒有動力了。

所以不管「犯罪由環境決定」是不是真的,我認為都必須維持應報理論,因為應報理論就是講求現世就有因果,有因果善有善報惡有惡報是人行善去惡的動力。所以即使「犯罪由外在環境決定」是真的,也不影響應報理論的正當性。因為否定「善有善報,惡有惡報,自己負責」,甚麼都推給外力,那人就都不用向上了。 全文連結

星期二, 3月 29, 2016

關於廢除死刑

修改自己 ptt 的文。

很多人,甚至支持死刑的人都把死刑當成報仇。但其實死刑不是復仇。死刑是用與罪相當的刑罰,不帶仇恨,嚴肅而莊嚴的否定罪惡。

死刑的意義在於刑罰的公平,「罪刑相當」。犯罪的「罪」與制裁的「刑」必須相當,秩序才能為人信服,罪惡越重要罰越重,否則難以服人。舉例:

1. 公司如果監守自盜偷錢,跟上班遲到罰一樣重,大家服不服?

2. 學校烙人打人跟上課打瞌睡罰一樣重,學生服不服?

而面對惡劣傷害人命的時候,「正因為生命無可取代,在正義的天平上只能以生命平衡生命」(康德)。就是因為生命貴重,除了生命之外沒有任何「罰」與罪犯的「罪」相等所以執行死刑。日常生活中,大家都知道做錯事,要情形越惡劣罰越重,不然沒有人會願意遵守規矩。怎麼遇到了惡劣殺人的時候,腦筋就忽然轉彎了呢?

老師會把作弊的學生記大過或是退學,不是因為要對學生以牙還牙,要對學生用漢摩拉比法典,而是學生太惡劣,不這樣做,無以表示對錯誤行為的否定,無法肯定秩序,無法維護校規之威信,會讓認真遵守校規的學生對校規的信心產生動搖,覺得遵守校規是傻瓜。所以將學生退學就算老師會因此流淚,該做也是得做。

最後,引一段鄭捷的判決書,證明這理論不是我發明的
----------------------------------------------------
檢察官請求對被告鄭捷處以死刑,核屬罪刑相當,合乎法律之目的,且無違背內部性界限,亦無權利濫用之違法,更無違反比例原則、平等原則、公平正義等法則,爰分別量處如附表編號1 至4 所示之死刑,並均宣告褫奪公權終身,以彰顯國法尊嚴並維護法治、保障社會安全
----------------------------------------------------
為什麼要用死刑?因為面對極惡的罪,不用同等的刑罰,會無法「彰顯國法尊嚴並維護法治」讓百姓覺得法律不公平都偏袒壞人,民眾一旦開始瞧不起法律,那「保障社會安全」就做不到了





-----

關於廢除死刑,個人以為死刑只是一種工具:執行死刑不是因為愛殺罪犯,而是因為罪刑不相當會動搖法律威信動搖民信,簡單講「不是勞子愛殺人,而是不殺服不了人」

所以要廢除死刑,也不是不可以,但必須要有能讓人信服,代替死刑解決問題的新方案。

打個比方:老闆把偷錢的員工開除,不是因為老闆恨他,是因為如果不開除,公司上下沒有人會服公司的規矩,如果有人能想出某個神奇的方案,不開除偷錢的員工也能維護公司的風氣,那老闆也樂得不開除員工傷大家和氣,前提是這種方法確實存在。

但這種「替代方案廢死法」,必須先提出可行方案(但很遺憾,我認為目前能替代死刑服眾的全國性方案實質上不存在),讓眾人接受這方案能有效替代死刑,不會不能服眾,讓民眾產生「法律都在偏袒壞人,壞人殺人我們還要養他」這種對法律不服氣的心理,先對話讓大多數國民同意,再廢除死刑。絕對不是現在「精英」不修法,不以理服人,就直接「我精英才懂,你們在座支持死刑的都是OO」霸王硬上弓強行停止執行死刑這種自我感覺良好的做法。 全文連結

星期六, 11月 14, 2015

Rootkits: Subverting the Windows Kernel

書本連結 困頓時期的小確幸讀物。之所以讀這本書主要是玩 DLL hook 想要對安全更深的了解。以快速瀏覽不查 code 為前提看完。內容整理清楚,深入淺出,可以清楚理解思路。幾個缺憾: 1. 這是 2005 年的書,很多內容都已經過期 2. 書中同時涉獵眾多不同主題,每個主題都只能點到為止。對系統和漏洞的進一步了解,想要紮深基本功的話可能還需要別的書(望向厚厚 Windows internals) 不過最重要的問題是最近根本沒有時間體力打開 IDE 寫程式囧 全文連結

星期三, 8月 20, 2014

Computer Networking: A Top-Down Approach (6th Edition)

Computer Networking: A Top-Down Approach (6th Edition)
上次 CPPGM 小確幸系列因為要準備考試和工作負荷不了,日常生活的IT小確幸就換成念書。今天在中午 meeting 快 Hypoxic-Ischemic Encephalopathy 的情形下把這本書除習題和後文 reference 外全掃完了XD

全文約八百頁,算淺白易懂。跨了不少 topic。不過可能由於是入門用 introductory course 的原因,不少東西看得出都寫得極為簡略而且有所保留,比如用一個 chapter 同時介紹密碼學 + SSL、IPSec (本來以為 Bruce Schneier 老大的密碼學入門已經極簡了,沒想到還可以更簡),不過從整體性的角度來看網路大有幫忙,比之前支離破碎亂學完整的多。

下本小確幸系列還不確定要選哪本書 XD

全文連結

星期日, 2月 16, 2014

CPPGM

http://www.cppgm.org/

這陣子除了工作以外,最有意義的活動就是參加了CPPGM,挑戰一人徒手打造standard compliant C++ toolchain。不需要做優化,只針對linux x64 platform,但禁一切3rd party code的使用,只能用GCC和GCC附帶的東西。這和一人帶一把小刀去和整個軍隊單挑一樣愚蠢,可是我還是很熱血的報了。還支撐到PA7通過....

最後陣亡並不是因為PA8時間到寫不出來,而是因為累了,加上要去國外報paper,準備專科考試等眾多因素,實在沒辦法挪出多餘的時間和體力去應付這需求越來越膨脹的怪物。

活動只有越變越難,一開始是寫tokenizer之類的小東西,後來慢慢把整個preprocessor弄出來,接下來開始parse完整的C++ grammar,然後PA7開始慢慢加入syntax analysis。我掛掉的PA8是要求模擬linking產生fake image。接下來的題目是真正的code generation和完整實作C++除了STL以外的東西(statement, expression, class, template....要產生Linux X64 ELF的樣子QQ)。

PA1在寫tokenizer的時候,自己去Google了paper把regular expression自己實作出來,覺得好有挑戰性啊XD。開始做preprocessor的時候又覺得照paper寫regular expression相比之下是無腦小事。開始寫parser generator的時候又覺得前面並沒那麼難。開始做name lookup, 抓ambiguity這些事的時候,又覺得寫parser generator其實也挺快樂的XD。開始產生fake image的時候就累了,退出orz

最後的結果,扣掉中間一些小單元測試和parser generator生出來的code的話,約一萬八千行,加上parser generator幫我生的code就三萬行,其實只能算中規模的C++ project,跟GCC幾百萬行比起來真是遜爆了XD

做CPPGM收穫不少,首先,雖然這個大師課並沒有老師手把手的教東西,不過確實也學到很多。寫的過程中,畢生所有知道的design pattern還有技巧全部都用上了,至少在code成長到一萬八千行,每個unit的藕合性等等還可以看,debug起來還不至於陷入無底深淵。C++、除錯、程式架構的功力算是有長足的進步。再來,寫CPPGM填補了我內心中當初想走二類組的願望。不只讓人體驗到寫程式,還體驗到吐出來XD。現在內心的「不甘願」確實少了很多XD

CPPGM寫作過程之中也再度發現自己的罩門:我對advance c++、除錯、組合語言,作業系統等認知不足。我從頭到尾都用cout在debug,gdb完全不會用。但cout debug法只要project稍微一大就會遇到很多困難。現在程式架構清楚的時候還勉強堪用。以後把expression, statement, class, template那些全加進來應該就會完全不夠。對作業系統和組合語言不懂,將來做code generation的時候應該會無比困難。不熟template,以後做相關功能的時候應該就會吃鱉,放下CPPGM以後,鑽研advance C++,除錯,組語,作業系統...的慾望大了不少。


放棄CPPGM雖然可惜,不過人生也恢復成彩色的。突然有好多時間和體力可以在家做醫院的事情,有好多閒情逸致可以看技術書籍,卡通和漫畫,好多時間彈鋼琴XD,但也同時伴隨著失去目標的迷茫感。接下來要挑戰甚麼呢? 全文連結

星期日, 12月 29, 2013

醫療崩潰 不尊重專業也是病因


今日聯合報民意論壇,有人指出醫師成長,是「政府投入、病患給與成長、學習機會」,所以醫師是「公共財」。看了真是毛骨悚然。我甚麼時候成了別人的財產了?

專業受到外來幫忙,不代表自己沒有付出。若無顧客反應,可口可樂很難有成功配方。若無國家環境,台積電能很難成為晶圓代工龍頭。無台灣人支持,統一企業不會順利成長。若受環境幫忙就算公共財,自己的辛苦努力都不算。那台積電和可口可樂秘方應該也是公共財。小民缺錢,不知道政府能不能發幾張台積電股票給我過好年?

極少數人對專業人員毫不尊重。醫護自發的,額外的付出奉獻,全部當成欠他的,讓醫護奉獻的心貼在冷屁股上,也是醫療崩壞原因之一。人是互相的,君之視臣如草芥,則臣視君如寇仇。有人把醫護當財產看,那醫護把他當鈔票看,也只是剛好而已。
全文連結

星期日, 10月 13, 2013

Re: 小三數學「聯想法」解題 家長痛批看不懂

http://tinyurl.com/llawbne

有幾點想法

1. 以網路上提供的題目照片來說。題目根本沒有限制要用哪種解法(假設考卷上其他地方沒限制用估算法)。這種情況下只要是合理的解題法應該都能用。有人想用積分來算長方形面積,可以說他解錯嗎?換個情況,假設題目明白限定用估算法,今天老師一樣把整題打錯,家長還會意見那麼大嗎?

2. 許多建構式數學想教的東西個人是贊成的。但不應該是這樣教。有些東西比較適合久了以後讓人自行「體會」出來,反而更能達到熟練和理解。以概算來說,我也是碰到許多繁瑣計算以後自然理解出來的。

所謂繁瑣的計算,是比如:

86953415656489 - 54697814312345 約等於?
1. 20000000000000 2. 30000000000000 3.40000000000000 4. 50000000000000

以教概算來說,與其將「概算」這個想法轉化成僵硬不能變通的計算步驟叫學生生吞活剝吃下去(建構式數學不是還蠻反對背東西?)。不如真的丟幾題數字非常大的題目讓學生算算看。也許學生經過幾十題龐大數字的計算後,再學概算的概念,就能深刻體會為什麼要概算?甚麼時候該用概算?概算到底有甚麼幫忙?等等。或許想法不是完美無缺。但無論如何,我認為這都比把「概算」轉換成僵硬的步驟叫小學生吞下去。然後在沒明說要用概算的情形下,丟三位數減法這種根本無法讓小學生體會到「為何要概算」的題目好多了。

3. 這是借題發揮,引申自上一點,很多建構式數學想教的東西我認為比較適合讓人自行體會出來。直接明白講反而讓人難以體會。或許有人會認為這種教法可以教出會思考,有理解的人。但就個人看過的案例而言,這種方法會讓人無法達到「熟練」。而對某個東西根本不熟,說要多能思考能有理解我認為都是騙人的。所以我認為現在我所看到的建構式數學反而不如以前的填鴨式數學。

填鴨式數學,至少我弄熟了之後慢慢有心得,還有機會自己產生理解和思考(比如大數目算久了,概算就容易一點就通)

現在的建構式數學,連基本的熟練度都達不到,你是要根據甚麼思考和理解? 全文連結

星期日, 5月 26, 2013

網路通訊隨意監控,政府有如「老大哥」

最近智產局「封鎖盜版」法案引起軒然大波,個人有些看法:


從前有個國家小偷充斥。為了有效打擊犯罪,該國政府推出新法規:以後警察可以不經過法院,在任何場所直接進行搜索。若有人疑似小偷,也可不必審判就直接關有期徒刑。不料風聲一出,全國抗議。政府不得不出面澄清:絕對不會冤枉到好人,只有真的小偷會被抓。有網友擔心用在政敵身上,絕對是誤解立法意旨......

檢調監聽電話,要法院同意。政府要關人,要法院審判。美國DMCA智產法案要關閉盜版網站,也一樣要法院許可。智產局的新法案,卻可以不必經過司法機構,就任意讀取網路通訊,想封哪個網站就封哪個網站。若說這樣沒問題,那辛苦工作的檢調和法院豈不是傻瓜?贊成打擊盜版,但不能違背人權和正當程序。

------------------

投稿用文章,這部落格真的好久沒更新了XDDDDDDD 全文連結

星期四, 10月 04, 2012

墾丁行

由於連續三個月在血管攝影室工作,搞到人非常低落(有時真厭惡工作,但偏偏我又不是一人吃飽,全家吃飽)。為了紓壓就選擇全家去十幾年沒去的墾丁。 久違的墾丁凱撒飯店,可供喝咖啡欣賞風景的大廳一角。

住房選擇花園套房。多了外面可以連通游泳池的小房間。小房間有種樹,稍微有種叢林的感覺,很遺憾的是游泳池沒有去泡,蚊蟲倒是一堆。住進大飯店大套房的第一件事情是打蚊子....

花園套房連通到外面的情景,只可惜除了蚊子之外沒享受到甚麼XD

夜晚的墾丁大街。當飯店附的高級自助餐吃完以後,就是到處去覓食了。

海洋生物博物館,來墾丁的最大行程之一。最可怕的是剛好血管攝影室的老闆也剛好同一時間在海生館全家出遊,還剛好不期而遇,只能說孽緣不淺嗎?XDDDDDD

夜晚娛樂之一,凱薩大飯店B1的復古電動,宛如進入時光隧道,光陰倒流到我只有國小的時候啊,畫面中這個氣墊球桌非常有特色,似乎是只有投錢的人才會贏,我跟我妹玩了一次,投錢的是我妹,所以我進的球都沒有分數。第一次碰到這種規則的XDDDDD

時光隧道之復古轟炸超人,聽到音樂差點眼淚跟眼屎都快流出來了。圖中有隻可愛的大學女生小手。我和我妹玩得很開心。

去過一趟之後壓力削減不少。當然最開心的還是離開血管攝影室,但這又是另一個故事了.... 全文連結

星期二, 7月 31, 2012

Deus Ex: human revolution


deus_ex_human_revolution

最近玩過的RPG中最好玩的一款,個人評價比KoA:R或The witcher 2還要高!

乍看下是科幻風格的FPS,但FPS的比重其實不高,戰鬥的部分更重視的是隱匿行動和破解,由經驗值就可以看出端倪:殺死一個敵人只能得到10~20經驗值,把敵人打暈可能能拿50。從頭到尾沒被敵人目擊可以得500。破解的話,要是能破解對方的砲台或機器人,使之攻擊自己人,或把監視器關掉,關卡的難度都會大大降低。而且主角的能力雖然很強,但正面挨子彈卻挨不了幾槍,遊戲擺明了不是類似Doom一人從頭殺到尾那種。

Deus-Ex-Human-Revolution-6151

劇情部分就不多做說明。模糊來說男主角的公司在重大突破發表前被襲擊。男主角一路追查弄清楚事情真相。遊戲最後的數個結局讓玩家自由選擇,代表了對不同價值的重視。怎麼選擇就看個人。

下一款RPG,預計要玩Bioshock,Metacritics 九十幾分的高分,雖然過了五年,但也值得見識一下。
全文連結

星期日, 5月 20, 2012

轉載:「醫療崩壞中,我該怎麼辦?」:鄉民懶人包


原文連結:http://i-chentsai.blogspot.com/2012/05/blog-post_19.html

作者:蔡依橙 醫師 (I-Chen Tsai, MD)
完稿日:2012/5/19



數位醫療藝術創作 「生命之樹:秋」 蔡依橙 醫師


Q: 屁啦,什麼醫療崩壞,這些醫護人員賺很多,在抱怨什麼鬼啊?

A: 這個社會很偽善,認為低薪才有道德正當性,受害者才值得同情。

你知道,錢只是人生的一個環節而已嗎?多領一萬的薪水,就必須承受月經失調、鹹豬手騷擾、沒空喝水的過勞?真覺得好賺,考個試念點書,你來做做看。



Q: 哪個行業沒挫折?他們抱怨的那些,我看來很無聊。

A: 醫護人員的苦悶,非在其中,不能了解。就像我們不了解私立幼稚園老師的苦悶、不了解上市公司財務長的苦悶、不了解金錢豹要辦高中卻被人誤解的苦悶(咦?)  

所以,我也不期待社會大眾,在醫療體系開始內部崩壞時,能有什麼深刻的理解。

簡單說,內外婦兒急重症的醫師以及護理人員們,都是前線的戰士,用體力、家庭、榮譽感苦撐,以經驗與專業在前線奉獻。長期生活在威脅中、壓力下,沒尊嚴、不健康、又不能平衡家庭生活時,回頭一看,「唉呀!怎麼章魚燒工讀生跟我差不多?怎麼幫人打玻尿酸過得比我還好?」





Q: 要抱怨,連名帶姓出來講,一大堆筆名是怎樣?分明「既得利益者」的嘴臉。

A: 奇怪,梁詠琪不用本名唱歌、楊照不用本名寫作,你也沒叫過。不然你知道「觀世音菩薩」本名嗎?

事實上,護理界能跑的都得差不多,四大科急重症的醫師們,可能因為養成過程比較久,一時放不下,還在叫,但你放心,以現在的崩壞速度,再叫也不會很久了。

如果真有心想閱讀,我推薦「洪浩雲醫師」所寫的「我為何最後決定放棄外科走醫美」。


Q: 醫院很好賺啊,真那麼難經營嗎?為什麼不加薪?

A: 「便當一個吃不飽,為什麼不吃兩個呢?

健保使得醫院無法自由定價,毛利逐年下降,虧損歇業者眾。以電腦斷層為例,八年前,高級機器一台四千萬,現在新機種則要價八千萬,貴了整整一倍。健保給付點值,1995年公告5300點後,隔年向下調成5035點,維持至今十六年。

國家規定排骨飯價格從65降成60,但廚具、食材全部漲一倍,你能經營嗎?


Q: 醫院可以向病人收錢啊?政府規定的排骨飯那麼廉價,還怕你給我偷工減料,我點高級牛排套餐,自己出錢可以吧!

A: 近幾年,因為經營過於困難,自費項目成為醫院生死存亡關鍵,不做就是倒,做了頂多偶爾被健保局修理,自費買飲料甜點的人,的確是越來越多了。

不過,在螢幕前用鍵盤維護世界和平的您,不知是否真有能力購買醫療牛排?

東南亞旅遊醫療最有名的泰國Bumrungrad醫院,在國際上有物美價廉的名聲,價目表上提到,一台冠狀動脈繞道接枝手術(CABG)平均在80萬到120萬之間




台灣的健保局,對於冠狀動脈繞道接枝手術,總給付約40萬點,約合3236萬,是「物美價廉」Bumrungrad開價的三分之一。

這就是醫療崩壞。有錢人上億的身價,台幣一百萬不過是個零頭,找最好的醫師來開,手術成功、預後良好,這些醫師也有餘裕去吸收新知,繼續精進專業。

中產階級以下,就請找願意做低價排骨飯的店家,因進貨成本高、毛利低,為了生存,只好飯菜少、排骨小。而且,以英國為例,這種排骨飯不是你想要就吃得到,排六個月的隊不要太意外


Q: 全自費我看不起,但我想要醫術高超的醫師幫我治療,怎麼辦?

A: 是啊,幾百萬我沒有,但我想要台賓士S350附司機,怎麼辦?


Q: 醫院跟醫護人員要有醫德,你們就該留在醫院裡頭工作,服務大家!

A: 賓士的工廠跟技師要有使命感,明天免費送我一台含領牌保險,對了,我的家人也要。

大哥,這些急重症的醫護人員,已經有醫德很久了。在這個連結,你可以看到,大環境怎麼摧毀一個急診護理師的信念。一時的熱情,比不上永遠的煎熬。他們漸漸離開,去尋找對自己、對健康、對家人比較好的方向。你用罵的、用酸的、用批評的,他們一樣只會靜靜離開。



圖、我們曾經打造過一個不錯的醫療體制,但他崩壞了。



Q: 商周有百大良醫啊,我去找他們就好。

A: 2008年,商周製作的百大良醫專輯,儘管並非完美,的確是當時臺灣最有參考價值的一份名單。但諷刺的是,2012年的今天,名單上多位高人,皆已離職或退休。其中知名的乳癌高手「王惠暢」醫師,在網路上分享了他封刀的原因

「不正常的健保制度及伴隨而來的人性黑暗面。」

「良好醫療服務耗神、耗時,絕不是以量取勝的,但良醫若執著於良好醫療品質及醫病互動的內涵,往往生活品質反而遠低於庸醫,這是不公平的。」

「病患在醫療商業化和醫療服務對價化的氛圍下,也忘記了人與人相處應有的基本尊重以及醫病和諧的重要性,動則怒罵威脅,小至掛號不順,大至醫療成效不如預期,都可以產生醫病糾紛。」

建議商周可以重做一份名單,名稱記得改成:「百大良醫之依然拋家棄子燃燒生命不怕罵不怕告不怕砍專刊」


Q: 聽說現在高風險手術,醫師都不想開。沒關係,遇到不幫我手術的醫師,我就告他!

A: 打籃球,眼鏡被撞歪,拿到眼鏡行,老闆心想:「這個變形太大,八成可以調回來,但有兩成機會可能折斷。」猶豫中……


「老闆不用負責任,盡量幫我,我簽同意書。」

很不幸的,手術同意書的效力非常薄弱。而且,每位盡心盡力的醫師,幾乎都遇過患者翻臉不認帳的:手術前「費用不是問題」,手術後忽然消失匿跡;手術前「盡力就好」,手術後上法庭告。

「你不修,我就告你。」

「我不是不幫你,是真的不會處理,你找別人吧。 (╯▽╰)

老闆沒說的是:我幫你調回來,替你省錢,換聲謝謝。萬一失手,是你打籃球撞歪的,要我賠新的鏡架。姊妹們,傻了嗎?

「依法行政,謝謝指教。」=「是的,我無能。無能沒有罪,你告不到。」

就是您這種對醫療人員的敵意,讓我們曾經美好的醫療體系逐漸潰散。


Q: 那我該怎麼辦?

A: 保養身體,注意安全,外傷癌症文明病,盡量少上身。
把握當下,實踐人生,生命盡頭到來時,遺憾才不深。
全文連結

星期四, 2月 09, 2012

新年

上班之後生活似乎真的越來越固定,看片值班meeting打報告...時間就這樣一成不變的過去。好像就真的沒什麼東西可以紀錄了XD。總算遇到新年的時候因為母親到宜蘭去拜訪朋友,自己順便到台北懷舊可以寫下來XD

DSC_0081

DSC_0080

DSC_0076

看慣了都市區,到了宜蘭真的可以感受到山光水色的不同。空氣也真的可以聞到甜味。開闊的空間確實具備轉換心情的效果。

DSC_0057

家庭式牛排館。過去在台南還可以看到這種販賣家庭式料理的地方,但現在幾乎都凋零了。店內非常乾淨明亮,還有小孩子在玩,非常的悠閒。

DSC_0068

四百多元的牛排,吃起來大致對得起售價。

拜訪了母親的朋友以後,就是台北到處亂晃了。

DSC_0089

DSC_0086

台南也有所謂的「宅店」,但都還蠻小一間。之前網路上有聽聞台北有旗艦級宅店,就決定去朝聖....雖然還是很小一間。進入後可以感到內部的人員都放出了驚人宅力,大概只有店員和我最不宅。逛的時候偷偷留了一兩張照片當紀念XD。反正手機root以後關閃光燈關音效,照相看起來就像看手機一樣自然XD。雖然逛了宅店,但還是無法下手買抱枕和吊飾那些宅物。看看露天上Fate/Zero GSC賽八一隻就要五千元,雖然賽八 是我老婆 很美麗,但心裡還是驚嘆為什麼有人買得下手呢??還是說,有些事物就是因為無法入手才顯得美麗(金皮卡調)XD


DSC_0095

DSC_0091

西門町街景,台北讀書快十年卻沒來過西門町。

DSC_0096

當初補習國考的時候,就無意間逛到這間牛肉麵店,普遍標價五六十元的菜單上有道售價超過兩百五十元的牛肉麵,非常突兀的顯示了出來。當時身為學生捨不得花這麼多錢吃東西,現在在台南工作偶爾去台北,就敗下去了XD。所謂牛肉麵節清湯組冠軍並非浪得虛名,湯頭濃郁的同時卻絲毫不膩,牛肉柔軟麵有彈性。慢慢吃完以後有種意猶未盡的感覺。

另外的行程就是跟DL、Twsam和FD吃飯了。不過整個聚餐爆點都集中在DNA就是了XD 全文連結