Privoxy 是個 Proxy 伺服器軟體,預設狀況下會做不少擋廣告之類的行為
不過也許在某些網站會遇到這些阻擋行為導致網站無法正常瀏覽。
Software entities (class, modules, functions, etc.) should be open for extension, but closed for modification. Junior programmers create simple solutions to simple problems. Senior programmers create complex solutions to complex problems. Great programmers find simple solutions to complex problems. 註1:本部落格的範例程式碼在 2015 年以前的文章中,大多是以全型空白做縮排。如需服用,請自行用文字編輯器的取代功能把全型空白取代成半型空白。
- Bertrand Meyer
- Charles Connell
註2:本部落格的內容授權請參閱部落格底部的授權宣告。
2017年6月27日 星期二
2017年6月16日 星期五
在部落格使用 SyntaxHighlighter 4
部落格要放程式碼的時候,需要一些套件幫忙換顏色什麼的,讓程式碼更容易閱讀些
我的部落格很久以前就在用 SyntaxHighlighter 3
不過今天突然發現本來用的網域服務要收掉了,必須要把 SyntaxHighlighter 的 JavaScript 換地方放
此外同時也發現 SyntaxHighlighter 4 出現在 Github [1] 上,所以就順便嘗試了升級。
2017年5月26日 星期五
在 Java 設定 Command Line 參數:Apache Commons CLI 簡易使用(未完)
寫程式時,寫完的程式總是要被執行的。不過要怎麼被使用者執行呢?
現代來說,容易想到的就是做個 GUI 介面~
但實務上,很多小程式其實可能做 GUI 介面得花費的開發時間,甚至遠高於程式本身
而且 GUI 做出來有可能也只有兩三個按鈕,顯得挺不划算~。
因此,其實有相當多的程式,最後都還是會選擇最簡易的方式:以 Command Line 的形式讓使用者執行。
在 Java 中,main() 進入點都會有個 String[] args 的參數
這個陣列就是使用者在執行程式時,同時夾帶的 Command Line 參數。
當然我們可以自己去解析陣列的內容,但挺浪費時間。更好一些的作法,是使用已經有的現成函式厙。
而這裡要紀錄的,就是 Apache Commons CLI [1]。
2017年5月4日 星期四
在 Java 傳送訊息給 Amazon SQS
Amazon SQS 是 Amazon 的其中一個訊息服務
感覺上其實有點像是劣化版的 Kinesis。
Anyway,總之就是一種用來傳送訊息的方法,所以這篇要來簡要紀錄一下怎麼從 Java 控制它。
2017年4月18日 星期二
Java 字串與位元組的編碼
簡單小記,字串(String)因為任何理由要轉換成位元組(byte array)時,最好要指定編碼
否則在 Java 中,預設會以系統編碼來處理,就容易產生中文亂碼的問題。
String s = "some text here";
byte[] b = s.getBytes(CharSet.forName("UTF-8"));
s = new String(b, CharSet.forName("UTF-8"));
在 Amazon Linux AMI 上使用 Java 8
簡單的小問題~AMI 預設好像內建 Java 1.7,要更新成 1.8 的話,可以用以下的 YUM 指令。
sudo yum install java-1.8.0 sudo yum remove java-1.7.0-openjdk
其中要特別把 1.7 移除掉,是因為單純安裝 1.8 的話,預設 java 指令還是會呼叫 1.7。
參考資料
2017年3月20日 星期一
在 Gitlab 上設定使用 AWS SES 作為郵件伺服器
其實試了一段時間之後,發現也不用特別紀錄什麼,因為官方有完整的設定範例 [1] 了 XD
唯一需要稍微注意的地方是….設定完以後要用 reconfigure 指令讓 Gitlab 重讀,不要用 restart
但這其實也寫在官方文件 [1] 上了。
參考資料
2017年3月13日 星期一
2017年3月8日 星期三
如何維持軟體專案的可維護性?
最近半年,有時常在猶豫一些問題,最常遇到的,就是前些時候寫好的一段程式碼,現在必須在上頭追加一些新的功能,然後就感覺到「唔,當初沒有計畫要追加這個功能,所以結構不太適合這麼做」,或者是「當初時程有點趕,寫起來有點凌亂」等等,可能有著各種原因讓自己覺得之前寫好的程式碼有點髒。但現在新功能的時程也不是很長,如果去動了舊的程式碼,時程可能變得很緊湊,那該怎麼辦呢?
2017年2月15日 星期三
StartingSequenceNumber 49537979178794861780081237450294896636708704732336619521 used in GetShardIterator on shard shardId-000000000000 in stream primaryManifestStream under account xxxxxxxxxxx is invalid because it did not come from this stream
先簡要紀錄,收到這種一大串說 “it did not come from this stream” 的錯誤訊息
根本原因在於,使用 Kinesis 的 Consumer 時
設定 group ID 後 Consumer 會去 DynamoDB 建立一張 table,table 名稱會完全跟 group ID 一樣
因此如果有兩個在監聽不同 Stream 的 Consumer 用了相同的 group ID,晚建立的那個 Consumer 就會噴出標題的錯誤。
參考資料