Po-Ying Chen


你用什麼 Framework?

不是很願意接受前端 Framework 的原因

身為前端這個沒意義的問題實在很常被問到,所以就以他當標題,跟內容不是那麼相關。

可搭配 Tom Chen 的回應文章一起閱讀,很期待從這些討論中學到一些東西。

為什麼寫這篇文章?


這篇文章是為了解釋前一篇文章而生的,前一篇提到個人不習慣使用 Framework,我覺得我得給出點理由,沒有批評 Framework,只是寫出自己的想法。所在位置不同,考量不同,可能會得出不同的結論,或許一年之後我的想法會有點不同也不一定。

曾經問過自己的問題


redis-mount: FUSE + Go 的小實驗


半年前開始有使用到 redis,開發時在檢查資料上遇到一點小問題,單純使用 redis-cli 很不方便,我們常常會使用 KEYS 指令列出所有或所有有包含某個前綴的 key,資料稍微多一點就沒辦法快速有效的看出整個 redis server 儲存資料的狀況,或是我想快速搜尋包含某個字串的所有資料也很不方便。那時有找了一些現成工具,像是 Redis Desktop Manager,不過用他看資料比較不方便,像是可能某個 key 裡面是單純的 db 回傳資料,以 Node.js 來說這樣的資料會是 JSON 格式,如果用 RDM 看,我們會看到沒有展開的 JSON,幾乎不可閱讀,所以有了把 redis 變成 File System 的想法。使用 Golang 來實作純粹是想藉機試試 Golang 而已,沒有特殊原因。


人生第一個 Node.js Addon 的開發歷程

同一個 Addon 三年寫三遍

對一個前端而言 C++ 真的不是一很好親近的語言,平常碰到的機會很少,三年前除了學校課程之外,基本上自己從沒寫過 C++,所以可算做完全不會,可想而知,第一次寫的時候極其悲慘。

當初為了要使用程式查詢圖書館的資料,開始尋找可行的方式,z39.50 是我找到唯一用來跟圖書館溝通的方式,C、C++、Python、Ruby、Perl 都有 z39.50 的 Library 可以使用,但就是沒有 Node.js 的 Library。那時候碰 Node.js 不到一年,正想好好練習 Node.js 技巧,用其他語言的話分散我對 Node.js 的學習力道,所以只好自己想辦法克服這個問題,撰寫 Binding 是條捷徑。


讓 Docker 好用一點的小工具

自訂指令,讓 Docker 更貼近我的習慣

Docker 很方便,但是有些小地方總是覺得好麻煩,像是上圖,我們只不過是需要個 ip 卻必須先下一次 docker inspect 看看回傳資料結構,然後再下一次帶 format 選項的 inspect 指令,如果可以自訂一些短名稱來作對應不是很棒嗎?再來一個例…


Python 練習:CLI Framework

自己常用一些 library 是練習新語言的好題目,這次因為有些專案需要寫 cli 工具,但又沒一個 cli 的 parser/framework 用的習慣,所以就開幹!(警告:本文純很自嗨)

GitHub: https://github.com/poying/puppet

不要有任何一行無意義的程式


寫 python 的時候常常會看到這樣一行程式碼:

if __name__ == '__main__':

為什麼會有這行呢?我自己的想法:


中文網路字體 Dynamic Subsetting

2014 年的個人實驗

去年年初想要使用中文字體在網頁上,但找不到開源的 Dynamic Subsetting 實作,現有的服務都是收費服務,要不然就是有條件的免費,這些都不是我所想要的,所以開始研究各種作法。今年一月初的時候也嘗試出可行的方式,不過最近幾個月內沒有什麼時間把程式碼整理乾淨,先寫一篇文章確保花的時間沒有浪費(非常有可能之後就懶得整理扣了)。

用途相近的網路字體實作


其實要求不多的話現在就已經有很多開源專案可使用,他們大部分使用 FontForge 有些則是使用 sfntly 的 java cli 工具。

  • FontForge 的缺點很明顯,我們必須把整個字體…

我所認識的 Node.js 錯誤處理

使用一個 Node.js Module 之前我一定會先閱讀他的程式碼,看看有沒任何明顯問題,或是遇到問題時自己是否願意修改,遇到大神的話還可以從中學習一些特殊但漂亮的解法,總之百利而無一弊。

最近看到一些下載數很高的 Module 的錯誤處理方式很詭異,所以想說來寫一篇 Node.js 基礎文,專門說明我所認識的各種錯誤處理方式。

討論範圍


  1. domain
  2. Stream (Writable、Transform…)
  3. co

try catch、callback、domain


從不用 PTT 到寫了一隻 BOT

前幾天公司說要爬 PTT 文章資料,包含 IP、作者、標題、內容、回文,反正就是能抓的都抓,在接到這項任務之前(四天前)根本不會想逛 PTT,實在太醜了,我最多只到過主功能表而已…

原本老闆是說從 Web 抓,不過那真的有點寫膩了,閒來沒事本來就會到處抓抓,所以選擇使用 Telnet,嘗試點不一樣的東西才有…


前端 CommonJS 工具(續)


上一篇簡單介紹簡單了一些 CommonJS 工具,這篇文章將會專門說明怎麼使用 Duo。

  1. Duo 安裝
  2. Component.io/Duo 設定檔
  3. 第三方 Component
  4. 基本使用
  5. 自動化工具
  6. 搭配 Makefile
  7. 監看檔案變化
  8. Duo JavaScript API
  9. 測試
  10. 搭配 Koa
    1. 基本用法
    2. 依據正式、開發環境自動開關選項
    3. Cache (ETag…

前端 CommonJS 工具


下一個專案開始公司內部會統一使用輕量的 Backbone 搭配 duo,所以先介紹一下一些 CommonJS 工具,下一篇文章才是重點,會專門說明 Duo。

  1. Browserify
  2. Component.io
  3. Duo
  4. Normalize.io

Browserify


Browserify 應該是最早 CommonJS 工具之一,他重點特色就是把 Node.js 的程式碼直接搬到 Browser 上使用,Node.js 部分使用 Stream 實作,Plugin 撰寫容易,只需要寫一個 Transform Stram 就可以了。


Docker + Vim


這幾天我們公司 @bcbcarl 用 Docker 幫我們把公司內部開發環境建立起來,聊天的時候他提到了使用 Docker 搭配 Vim/Emacs 的想法,那時候就覺的這個方法太棒了,所以今天做了一點簡單嘗試。

@bcbcarl 有說他會儘快把專案建立起來,之後我們就可以有更方便、彈性、強大的工具可以用了!

可以解決的問題


用原生或別人的 Vim 就像把自己的手腳砍斷一樣,作什麼操作都卡卡的,以前我們會利用 Git + Vundle.vim 這類工具來解決這樣的問題,但是這個方式並沒有把全部問題都解決掉,還留下一部分:

  1. Vim 版本,有些 Plugin 會要求 Vim 版本必須高於多少。