Monthly Archives: January 2016

面對新技術的心態

Drupal

使用 Drupal,不應該只是認為「別人都幫你寫好了模組、做了很漂亮的版型,只要抓下來拼湊、修改一下就可以交差了。」而是要學習到這個基於 hook 的 design pattern 要怎麼依樣畫葫蘆,在 Drupal core 上開發符合自己需求的程式,讓 Drupal 真正為自己所用。

不然,你做出來的網站就是會有很濃的拼裝車味道。

同時,也因為 Drupal 有自己的一套 architecture 與 design pattern,所以也不應該認為「反正只是 PHP。」言下之意好像 PHP 入門簡單、會的人多,隨隨便便都找得到人來開發。同款,不同師傅。

況且單看臺灣的話,真正寫得「好」的、精通 PHP 的開發者,事實上並不多。

當然啦,有人會說:「我只求能動、先求有不求好、能交差 60 分」,這種人基本上不是我寫這篇文想要鼓勵的對象,麻煩請關掉分頁,去享受你其他面向的快樂人生與成就,畢竟人各有志。

Rails

使用 Rails,也不應該被「10 倍速的快速開發網站魔法」之類的宣傳詞迷惑,而是要從中學得如何做出一個可維護的網站,包括透過 MVC 將系統元件分而治之、包括 DB schema versioning、包括從 ORM 學得 OOP 的基本精神與 metaprogramming 等,諸如此類的技術成長,自此就從「一隻程式通心粉式地把所有事情做完,之後再也看不懂這隻程式當初是在寫尛」的程度畢業,成為一個講究軟體工程、架構的進階開發者。

不然,其實你我也見過,很多去上了速成班的人,寫出來的 Rails 跟用 Raw PHP 差不多髒。這樣的「快速開發」只是製造用另一種語言寫出來的技術債而已。

順道一提,如果你在 Drupal 上的開發習慣、思維夠好夠清晰,來學習 Rails 基本上除了程式語言不同以外,不會有什麼障礙。

Docker

使用 Docker,也不應該把它當成是比較好用的 chroot 而已,而是要想說透過這樣的隔離,我可以更充分利用機器的運算資源,並透過 API 的呼叫,來操作容器裡頭包裝的程式元件,將思考的層次從「伺服器」轉化到「資源」。

此時你傳統「一個網站專案解決一切」的系統架構,為了 HA 與 scalability 就勢必要進行進一步的重構。

反之,如果你硬要把既有一把通抓架構的程式塞進 Docker 裡,搞了一堆有的沒的讓它跟在實體機、虛擬機做的事沒兩樣,其實還反而弄得更綁手綁腳,未蒙其利,先受其害,那麼拜託你不要去外面跟人宣傳說「我們也有用 Docker」。

TL; DR

其實我寫這篇只是想說,很多盲目追求技術的熱潮,並沒有搞懂本末終始核心精神,這樣營造出來的 ecosystem 其實只是在搞技術宗教崇拜,比誰的信眾多,其實是很不健康的一窩蜂,瘋潮一過,留不住多少人,對 IT 產業也就沒有什麼真正的助益。

昨晚看了 BS JAPAN 的「ものラボ」節目,介紹 Dyson 的創業故事,兼賣 Dyson 吸塵器

ものラボ,頭一次看到這樣「有誠意」的電視購物(?)節目,真的爆笑出來。

一開始以為是紀實介紹節目,看到 James Dyson 屢敗屢戰的創業歷程,試作了約 5,000 個 prototypes 才做出理想的作品,卻又幾經波折,方能找到願意生產的廠家。

就在感動於這樣的創業者、發明家精神的時候,節目旋即轉換為電視購物模式,賣起 Dyson DC35 來,感覺雖然有些突兀,卻又比一般的電視購物節目來得更有說服力。

BS 上頭的好節目真的不少,像「ものラボ」這樣的節目製作型態,對我而言又是一次啟發。觀眾不是不喜歡廣告與推銷,而是你的行銷之道夠不夠細膩。

寫 Dockerfile 的時候,過程當中應該關閉的資源、服務,一樣要如實關閉

這幾天 debug 的心得之一。

這例子是這樣的:在打包 Docker 容器中安裝 PostgreSQL,並在安裝後就立即啟動服務,做了一些初始化的設定,但是忘了要在設定完成後關掉它,於是就會造成某些資料庫相關的檔案沒有正常關檔。

在之後要用到 PG 時,伺服器雖然表面上正常啟動了,但是背景仍在執行因為之前沒有正常關閉服務而需要跑的復原工作,於是就出現 “psql: FATAL: the database system is starting up” 這個第一眼讀來有點丈二金剛摸不著頭腦的錯誤訊息,同時 PG 也不能正常對外服務,便會造成相關的操作失效。

執行 docker build 的時候,要記得每個步驟都是 run 完就由 docker 寫入差異部份至檔案系統,然後就結束了,這個步驟執行時跑起來的 process,在下一個步驟執行時,是不會留在記憶體待命的,這跟使用其他的 configuration management 軟體來做這類「無人值守」工作時,有很大的不同,務必要記住這點。

2015 回顧

  • 搬回宜蘭,揮別在台北租房子的日子,開始長途通勤。
  • 結婚,告別單身。
  • 離開信義區,回到南港區工作。
  • 頭一次出國,頭一次去日本,久久不能忘懷當地那種相較於台灣「不過正不足以矯枉」的龜毛做事方式。
  • 在 Modern Web 聽到很多場值回票價的演說。
  • 看到 Readmoo、想起カーリル,很感慨,對於閱讀社群的經營,別人能,為什麼我不能。
  • 因為之前在 development 方面長期拙於實戰,武功退化不少,到了丟辭呈的那段準備交接時間,拿起之前借同事看的 Erlang 書,反而因為腦袋空空,而很能吸收,不較之前認為「Erlang 是個天書語言、函數式語言不曉得在幹嘛」,可謂失之東隅,收之桑榆。
  • 對容器化技術、微服務架構,有了一定的認知。配合 Erlang 這樣的語言與平台設計,我覺得簡直是天造地設的組合。
  • 被前端技術的治絲益棼嚇著,根本搞不懂這些三不五時冒出來(然後隨即又死掉的)新工具是在幹嘛,於是決定專注在後端的發展。