發表文章

目前顯示的是 11月, 2018的文章

我的大學生活 - 暨大資工

這篇文章獻給就讀暨大資工的學弟妹們。 其實我滿想念北部的學校,當時學測成績出來,分數只夠填地名大學(彰師還填不了),經過一番求神問卜之後決定暨大,此處環境好師資好,是個練功的好所在,當時長輩們就跟我說,在暨大好好練功四年,研究所考個好一點的。 暨大資工師資可以說非常棒,老師們都是台清交等級以上的。大一時的程式課是教 Python,真正體會到「寫程式是一種魔法」[註1],當時對於寫出程式的興奮與成就感使我開始自學,還記得大一宿營時(約莫十月吧)我帶了一台筆電過去,晚上休息時在寫爬蟲,只為了給朋友一個能夠自動下載中央氣象局每日觀測檔案為生日禮物,那時使用的還是 py2exe 呢,現在都使用 pyinstaller 了。 說到 Python,當時我除了跟著上課的進度,週末在家晚上有空時也會上網看[官方文件](https://docs.python.org/3/tutorial/),因實在對 Python 太有興趣了,雖然有買中文書但這語言不斷改版,書中內容又偶有錯誤,不如乾脆看官方文件,但是大家可別嚇著了,「Python 這語言優雅到初學者可以不必看那些漏漏長的英文敘述,直接看程式範例去會意即可」。程式最重要就是會用會寫,我一直堅持動手先玩一下,要先感興趣再鑽研其道理也不遲,相信有不少人一開始看到長長的英文敘述就先昏過去了呢。就這樣不知不覺將官方文件看了一大半,但課內的課程也很重要,當時是吳坤熹老師授課,他的課總是提醒我不少小細節,尤其是考卷的部分實在很有趣,老師有[將考卷公開上網](http://course.ipv6.club.tw/),有興趣可以去看一下。 程式課使用老師的 STU Server,因爲都在終端機上面操作,加上當時順便修了 Unix 使用入門,我也對終端機感興趣了,假日有空就利用從克寧老師教的指令亂逛 STU,找找看有沒有沒藏好的東西如考卷之類的😂。說到 Unix,這堂課是影響我很重要的一堂課,當時學長們說這堂課不好過,不過實在沒什麼系選修好修,只好嘗試看看,反正也有人大一修通過的。雖然 Shell Script 跟 awk 現在都忘光光了,但因為有了 Unix 的基礎,讓我往後的課程、實驗能夠更加流暢,也讓我學好了 vim(這技能很重要,當你看到同學殘廢的用著 vim 就能炫技一下),到現在我打 Python 跟 C 語言還是習慣用 v

HTML Email 初嚐心得

markdown HTML Email 是指在 Email 中使用 HTML 去排版顯示。 最近要替學生會寄信,覺得如果內容就幾行字實在是太無趣,打算弄的跟現在公司寄信一樣美美的。Gmail 編輯時尚不支援 HTML,我打算大量寄信,因此也沒有打算使用 Gmail 去寄信,而是使用 Python SMTP lib 去完成。 我使用的是  BEE Free 這款線上免費使用的編輯軟體,畢竟 HTML Email 不支援很多 HTML 語法,時間緊迫就不打算自己刻了。這套軟體除了免登入,且只需要拉一拉就可以完成,對於不會寫程式的人也十分方便。 在編輯完成之後,可以打包下載,裡面會有一個 .html 檔和一個資料夾,裡面放有各種圖片素材,通常是使用內建的圖片才會有,因此我把這些圖片上傳到 Imgur,再連結到原本的 HTML 檔當中。 測試寄送 HTML 信件時,發現雖然我寄出了,但是沒收到信,但若使用較短的 HTML 信件則可以成功,找了很久發現是不支援 <body> 這個 tag,因此 HTML 內容就砍到剩 <table> 而已。不過還是失敗,顯示 \xe6 不是 unicode 什麼的,這時我確認了很多遍,確定內容都是 unicode 編碼,狀況依舊。在不斷的使用二分法確認出問題的段落後,我發現有個段落有時成功有時失敗,原因竟然是出在那行太長,於是把整份 HTML 貼到 online HTML beautify 網站重新排版過後,果然就成功了。 測試雖然成功,但是在大量寄信時卻有漏信,查了 log 似乎是每次只能寄送 1000 封信,超過就會 drop,於是在寄信清單尾端的人都會沒收到信,`mail.log` 裡面也不會有紀錄。知道這個問題後就去交叉比對收信人跟 log 有哪些 diff,即可找出沒收到的名單再次寄信。我使用 ``` sudo grep -irn "mail1.ncnu.edu.tw" /var/log/mail* | awk '{print $7}' | cut -c 5-32 | awk 'length($0)>27{print $0}' ``` 去抓出哪些人有寄過,再寫 Python 腳本比對。朋友告訴我可以使用 ``` sudo