只放拖鞋的鞋櫃

24 號的選舉過去了一週,心情也大致沈澱。趁著還沒有遺忘太多的時候,寫下這次強者我同學在這次選舉的一些小事。我們在極度缺乏資源的情況下勝選議員,在一些地方政治參與比較深的人的眼裡,簡直難以想像。

閱讀全文 >>

沒想過會需要換兩次在留卡,只為了把漢字加上去。今天既然去了第二次,就順便記錄一下怎麼做,給其他需要的人當作參考。時間是 2018 年 11 月,未來不知道會不會有變動。

一開始申請完簽證,入境的時候會拿到一張在留卡。但是那張在留卡上面的名字是英文字,如果想要加註漢字,就要到入國管理局去更換,如果在留卡仍有兩個月以上才期滿,更換就需要自費 1300 日圓。

閱讀全文 >>

這兩年來工作的主力機是 MacBook Pro,原本的 x220 比較少出動,系統的 debian testing 也因此許久沒更新。

前幾天拿出來用 aptitude 升級套件的時候,因為衝突與相依數量太多,一度讓 aptitude 不會動。同時自己又不知道在哪個地方犯了傻,有些套件只更新到一半就重開機,結果掛載家目錄的時候失敗,一直無法開機,連 tty 都沒拿到。

所幸只是小問題,以下紀錄過程,希望能給類似的苦主一點幫助。

閱讀全文 >>

開發的過程要寫程式,寫程式我們都知道要寫測試,寫測試的時候經常看見 Stub, Dummy, Mock 等等這些名詞。使用 Testing Framework 的時候,更是經常使用到看起來功能類似,不同名稱的物件。稍微理解這些名詞的概念,使用測試框架的時候會有點幫助。

閱讀全文 >>

先講結論:這些 functions 目的是希望,執行程式碼裡面的 function literal 的時候有更好的可讀性。

Function identifier return value
let it last line of literal
run this last line of literal
also it this
apply this this

Let it Run this literal, it Also Apply this

這是我背誦記憶的口訣:Let 用 it,Run 用 this,都是回傳 function literal 最後一行的值。Also 用 it,Apply 用 this,都是回傳 this

閱讀全文 >>

This function might be the most useful one in my own scripts, and I had introduced it for several times.

Let’s say you are working in a big project such as Android Framework, or your are a command-line heavy user. The change-directory-command, cd, would be typed thounsands times per day. THAT IS SO ANNOYING!.

Try adding this function to ~/.bashrc

閱讀全文 >>

長話短說,可以用 ffmpeg 做到一些簡單的影片編輯功能,好比說

把 input.mp4 裡面 00:24:32 到 00:29:34 這段時間的影像擷取出來

1
$ ffmpeg -i input.mp4 -ss 00:24:32 -to 00:29:34 -threads 2 -y clip001.mp4

從一張圖片產生一個長度 15 秒的影片,同時把尺寸轉為 1280x720

1
$ ffmpeg -loop 1 -i image.png -t 15 -vf scale=1280:720 -pix_fmt yuv420p -y image.mp4

將一個完全沒有音軌的影片,塞入 15 秒的無聲音軌,指定頻率為 48000 Hz。

1
$ ffmpeg -f lavfi -i anullsrc=r=48000 -i image.mp4 -t 15 -c:v copy -c:a aac  -y silent.mp4

接著把幾個 mp4 檔接成一個檔案,先把它們都轉成 ts 檔,最後再接回 mp4 檔

1
2
3
4
5
6
7
$ ffmpeg -i clip0.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -y clip0.ts
$ ffmpeg -i clip1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -y clip1.ts
$ ffmpeg -i clip2.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -y clip2.ts

$ ffmpeg -i "concat:clip0.ts|clip1.ts|clip2.ts" -c copy -bsf:a aac_adtstoasc -y output.mp4

$ rm clip0.ts clip1.ts clip2.ts
閱讀全文 >>

最近公司做的產品,收到來自外面鄉親貢獻的 PR,想起了這個被自己遺忘很久的東西,趁著再次補起記憶的時候,順便做一點紀錄。

簡單來說就是 Java 的 Nested class 盡量寫成 static 比較好。至於為什麼比較好,也許就要多花點功夫來了解。

閱讀全文 >>

比起各種政治立場或是國族認同,我覺得最能夠找出共識的議題應該就是環保了(好吧,雖然還是會有些科學的爭議)。姑且不論層次比較高的空汙、能源議題,若能夠隨手做一點小事來降低對生態的衝擊,也不是一件壞事。

這篇文章記錄了我在日常生活中會做的一點小事,成本不高,希望能給你參考之後一同來試試看,簡單來說就是

  • 減少使用塑膠袋,盡量隨身攜帶重複使用
  • 出門自備筷子與手帕
  • 想買飲料來喝,就自備罐子與吸管

上述除了第三點可能稍微有點麻煩之外,一二點都是很自然就能做到的小事了

閱讀全文 >>

ConstraintLayout 是 Support Library 裡面新增的一個 ViewGroup,從功能上來看非常強大,效能上不輸、甚至贏過傳統的 Layout。因為放在 Support Library 裡面,幾乎市面上所有的手機都相容,就放心使用吧。

以往在建構複雜的畫面時,經常是 LinearLayout 與 RelativeLayout 等等相互組合,拼湊出相當深且複雜的樹狀 xml。略懂 View render 過程的都知道,效能就在深邃的遞迴之中持續消耗。改用 ConstraintLayout 取代傳統 Layout 的複雜組合,把 xml 檔變得更加扁平,效率很容易就能提升。

粗看 ConstraintLayout 會覺得跟 RelativeLayout 有點像,其實它還能做到很多 RelativeLayout 做不到的事情。以下就稍微簡介 ConstraintLayout 的安裝與使用。

閱讀全文 >>
Next →