Sunday, March 28, 2021

脊柱模型 (spinemodel)

Spinemodel 是我最近看到的一個思考工具,一開始只是覺得『圖』滿漂亮的。後來,我在寫一篇文章的時候,應用了這個 spinemodel 來寫作,算是解決了我長久以來寫作的一個難題。長久以來,我有一個題目總是寫不出來:「如何把 Clojure programming language 對一般經營管理階層的好處寫出來?

後來,看了 spinemodel 之後,總算想出了寫法 --- Clojure programming language 算是一種 tools ,所以我要寫它的好處,可以先把它對於 practices 的影響做出連結,這樣子就可以了。考慮經營管理階層與軟體開發者的知識落差之後,這應該是最有效的寫法。

也因為如此,又多看了看這個 spinemodel 的其它應用方式,目前有看到兩個其它的應用方式 ,我覺得算是不錯的,網站上已經有把這兩個用法寫得相對清楚了。

Thursday, March 4, 2021

non-ascii character

我不小心寫出了一個 bug ,這個 bug 是在程式碼中錯誤地使用了 non-ascii character 。

我需要寫一個字串 "1280x720" ,正常來講,在打程式碼的時候,因為要使用 ascii characters ,所以中間的乘號會使用英文的 x 字母。然而,因為我是從網路找來的字串貼上的,於是,這個字串中間的乘號,就真的不小心變成了 code 215 ,也就是真正的「乘號」。最麻煩的地方是,這種 bug ,肉眼還幾乎看不出來!

事後去反省,該如何可以快速地去找出這種錯誤,大概研究了兩種可以輔助除錯的工具:


(1) 在 source code 資料夾下指令 

ack "[^\x00-\x7F]"

如此就會立刻找出 source code 資料裡,包含 non-ascii code 的地方。

(2) vim 的指令 ga 或是 :as 可以顯示 cursor 處的字元編碼。

Wednesday, March 3, 2021

開發 Clojure 搭配使用的 ack 設置檔 (.ackrc)

ack-grep 我一直覺得滿好用的,不用特別設定就會自動忽略 node_modules 這種可以忽略的資料夾。然而,開發 Clojure ,尤其又使用 deps.edn &clj 的話,還是要透過 .ackrc 來設定一些資料夾,讓 ack 視為自動忽略。

--------分隔線 ----------------


# Tips:
# using ack to show only the clojure files for further processing
# ack -f --clojure
#
--ignore-dir=resources
--ignore-dir=.shadow-cljs
--ignore-dir=.cpcache

在 macbook 下使用的 .tmux.conf 檔案

我有時候很佩服一些朋友,他們會把一些工具玩轉到極致,我的話,通常還是採取 purpose-driven 的方式去研究工具。確定會派得上用場的,才去做設定。下方是我平常用的 tmux config ,可以搞定我覺得對我來說比較重要的兩個功能:
  • 可以用滑鼠捲動。
  • 複製貼上可以與系統的剪貼簿整合。
------- 分隔線 -------

# Enable mouse scrolling
set -g mouse on

# Vim style navigation in copy mode
setw -g mode-keys vi
bind P paste-buffer
bind-key -T copy-mode-vi v send-keys -X begin-selection
bind-key -T copy-mode-vi y send-keys -X copy-pipe-and-cancel 'pbcopy'
bind-key -T copy-mode-vi r send-keys -X rectangle-toggle


# Tutorial: copy-pase through tmux buffer
#
# default <prefix> is <C-b>
# using `<C-b> + [` to enter copy mode
# using `v` to start selection
# using `y` to copy selection
# it will get the text stored at two places: tmux copy buffer and system clipboard
# using `ESC` to clear selection
# using `q` to leave copy mode
# using `<C-b> + P` to paste at another tmux session