只放拖鞋的鞋櫃

程式中的迷途小書僮

Git commands

今天看到朋友講了一個 git 指令,想說順便分享一下我自己常用的指令,算是野人獻曝。

Github 與 Halloween

今天萬聖節,打開 github 看到這個 style 有嚇一跳

Github contributions

從 GDM 換成 lightDM

最近發生了奇怪的事情,就是我的 root file system (/) 會整個被吃光,同時還注意到 rsyslogd 會跑到 CPU 100%。接著就發現是 /var/log 底下的 syslog 或是 message 幾個檔案變成好幾 Gigabyte 的大小,裡面滿是 gdm3 的錯誤訊息

幾乎都是發生在我跑 Android Studio 之後才會遇到這樣的情況,我還以為是 openjdk 配上我的 awesome window manager 有什麼問題。今天還忍痛換成 orcale java 8,也停掉了 rsyslogd。直到剛剛我才發現一件奇怪的事情

竟然有個 gnome-shell 的 process 在跑! 竟然有個 gnome-shell 的 process 在跑! 竟然有個 gnome-shell 的 process 在跑!

被攻陷的 Android 平板

某天下午,我叔叔拿著他的 Android Nexus 7 平板來找我,說是不能操作了。拿來一看發現螢幕都被綁架得相當徹底。

實作 Android ListView

最近在改別人留下的 Android code。

好一段時間沒寫 Android 了,尤其我的記憶力又特差,經常要翻一下以前寫的程式才能回想起來某些 widget 怎麼用,ListView 就是其中一個。雖說一個功能可以有多種不同實作方式,各人又有各自常用的套招,即便 ListView 沒特別難,還是經常可以看見各種不同的寫法。

原本只是要貼一些程式碼進自己的筆記 wiki 裡面,想說反正都寫一些了,不如多寫一點貼出來給有緣人當參考,雖然更多時候會是我自己一直回頭來看。

用 ListView 的時機通常就是這幾種

  1. 把一堆字串顯示在 ListView 當中
  2. 把客製化的 View 顯示在 ListView 當中
  3. 提供單選 single choice 的選單
  4. 提供多選 multiple choices 的選單
  5. 實作客製化的 multiple choices

接下來針對以上常見的需求來介紹,同時也會處理 Click 事件

SimpleAdapter and ViewBinder

這是一篇以前寫過的老文章了,以前的 syntax highlight 弄得不好,想說貼到這邊排版比較好看,順便備份一下。

SimpleAdapter should be enough#

ListView 是 Android 一個極為常用的元件,經常看見為了「用自己定義的 xml 來產生 ListView row」而自己實作了一個 BaseAdapter。這樣的作法也不能說不對,我一開始也是這樣。為了烤蛋糕自己做了一個烤箱的事情,幾次之後還是覺得有點怪其實絕大多數的時候我們都不需要額外實作一個 Adapter,直接拿 SimpleAdapter 來用即可。

streamsupport

從字面上來看 Javascrpit 跟 Java 的差異只是在於一個是 script language,另外一個不是 (超級大誤),所以在 Javascript 做的事情當然都可以用在 Java 裡面。(胡說八道)

在 javascript 裡面經常用 map, reduce 來對資料做處理,好比說

1
2
3
4
5
6
7
var num = ["a", "bb", "ccc", "dddd", "eeeee"].filter(function (str) {
    return (str.length > 2);
}).map(function (str) {
    return str.length;
}).reduce(function (prev, current) {
    return prev + current;
}, 0);

這支無用的程式就是依序把一個字串陣列做處理

  1. 字元數小於 2 的字串拿掉
  2. 把字串陣列轉成整數陣列,內容是該字串的長度
  3. 加總每個數字

整個處理的過程就像一個串流(Stream),Java8 多了 Stream 這個 utility class,提供了類似的功能,可以讓我們把一個 Array 或是 List 用類似的方法來處理。

但是 Java8 這麼新潮(唔)的東西,不能用在 Android 上面?就像 retrolambda 一樣,也有鄉民弄了 streamsupport 這個 library,讓我們在 Java6 runtime 玩 stream util

Android Studio 使用 RetroLambda

一直以來都習慣用 vim + ant 來開發 Android Application/System。因為這樣不夠潮前一陣子給朋友推坑後,下定決心要學習用 IDE,既然要寫 Android,當然就選了 Android Studio。

Android Studio#

[Android Studio]

Android StudioIntelliJ community 版本修改而來,看起來主要是針對 Android 開發做了調整,好比可以點開 resource 的 layout xml 就有 preview 畫面可以看,或是,你可以很輕易地打開一個 Android Project,卻找不到選項打開一個「普通的 Java Project」

沒錯,我找不到開普通 Java 專案的選項,想想也算合理。Android Studio 目的要提供一個「寫 Android app 的工具」,而不是「一個 IDE,可以寫各種語言包括 Android」。從公司的角度來看我能理解這樣降低維護成本的決定。

但從一個使用者來看,花時間投資在一個工具上,只能寫 Android 不能寫 Java 是有點浪費。

Hello Hexo

初次使用 Hexo,先來篇文章試試看

Why#

原本因為 blogspot 的編輯介面太難用,想要改用 wordpress。可是 wordpress 免費的 theme 在中文字型上幾乎都不好看,自訂 css 又是付費版功能。

想來想去,又被 John 跟小安老師 開導之後,想說乾脆就弄一個 generated blog 了,好處有

  1. 文章用 markdown 來寫,即使不透過 browser 也能看得懂
  2. git based,天生就備份好了