Fold All / Expand All

2013年9月29日 星期日

Logitech MX518, G400

前後代@@

話說這支 MX518 也用了6年多,該考慮讓它退休了?

Logitech MX518

Logitech G400

ack 2.10 - better grep

http://beyondgrep.com/
好用的 ack 現在已經是 2.10 版

ack 2 和 1.x 版本最大的差異在於,1.x 的時候,ack 會只找認識的檔案類型,要找所有種類的話,要加參數 -u 或 -a,而 ack 2 預設改為找所有非 binary 的檔案,和 ack 1.x 加 -a 的行為相似,所以在 ack 2 把 -u, -a 兩個參數都拿掉了。

因為目前主系統在 Ubuntu 12.04,用 apt-get install 裝的還是 1.x 的,要用新版的話,用官網提供的方法
http://beyondgrep.com/install/
curl http://beyondgrep.com/ack-2.10-single-file > ~/bin/ack && chmod 0755 !#:3

我是把 ~/bin/ack 改成 /usr/local/bin/ack ,然後要移掉 Ubuntu 的 ack,才可以直接打 ack [pattern],不會被搶走。

在 Ubuntu 上用 apt-get 的話,ack 是一個 Kanji code converter,這篇提到的 better grep 的 package name 是 ack-grep。

另外也有 vim plugin: ack.vim ,還沒裝過,之後來研究看看

2013年9月22日 星期日

Enable PostgreSQL log

1. Append the following lines to your postgresql.conf file
logging_collector = on
log_directory = 'pg_log'
log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log'
log_statement = 'all'

2. restart pgsql

On Ubuntu 12.04,
postgresql.conf is located at "/etc/postgresql/9.1/main/postgresql.conf"
to restart server, may use `service postgresql restart`


[SQL] Two nulls are never equal to each other

From Learning SQL

  • An expression can be null, but it can never equal null.
  • Two nulls are never equal to each other.
也就是說,在 SQL 寫「WHERE value = NULL」是不會 match 任何東西的。

要寫「WHERE value IS NULL」

要找不是 null 的話,用「value IS NOT NULL」

常見的錯誤,當資料裡有 null 而想要找出不等於某值時,例如用「WHERE value != 6」時,不會列出值為 null 的資料,要用「WHERE value != 6 OR value IS NULL」

2013年9月2日 星期一

[歌詞] LiSA - crossing field



crossing field

歌手:LiSA
作詞:渡辺翔
作曲:渡辺翔


認めていた臆病な過去
わからないままに怖がっていた
後ろの自分が現実を今に映す

いくつもの空を描いたここはきっと
儚い心 乱して

夢で高く跳んだ躰は
どんな不安纏っても振り払っていく
眠る小さな想い拡がり出して
気付く弱い私 君がいれば

暗い世界強くいれた
長い夢見る心はそう永遠で

探していた導く光
触れればすべて思い出して
掛け替えのない大切な今をくれる

目を閉じ世界を知った
それはいつも暖かいのに痛くて

繋ぐ確かな願い重なり合って
見える迷いは動き始めた
君を守りたくて背負う傷は
深い眠りの中 漂った

代わらない約束だった
二人信じた絆はそう鮮明に

声が届くまで名前を呼んで
出会えた奇跡 感じたいもっと

夢で高く跳んだ躰は
どんな不安纏っても振り払っていく
眠る小さな想い拡がり出して
気付く弱い私 君がいれば

暗い世界強くいれた
長い夢見る心はそう永遠で

2013年9月1日 星期日

PHP 5.5

某站已經換上 PHP 5.5,還造成舊 code 會噴 warning,因為沒有設 default timezone。

某系統也預計要上 PHP 5.5,所以該來看一下有什麼不一樣。

[新功能]

Generators

Generators 提供了實作簡單 iterators 的方法,不需要寫一個完整的 class 實作 Iterator 介面。

使用 generator 通常是搭配 foreach ,以往 foreach 的 array 需要先在 memory 裡完整建好,例如傳統的 range() ,改用 generator 實作 range() 的功能,可以避免佔用大量 memory 的問題。

generator 語法上和 function 相同,差別在於 function 會 return 東西, generator 則是 yield 很多次。

除了 yield 數值, generator 也可以 yield key/value pair,語法是「yield $id => $fields」。

yield 後面沒有接東西的話,會回傳 NULL。

yield 也可以回傳 reference ,用法和 function 回傳 reference 相同,在 function name 前面加上「&」。

generator 寫起來會比實作 Iterator 介面容易,不過也有缺點,例如 generator 只能往前跑,不像 Iterator 可以 rewind。

finally

try catch 終於支援 finally

array and string literal dereferencing

可以寫
「echo [1, 2, 3][0]」
「echo 'PHP'[0]」

啊…還有一些東西,就不列出來了XD
請參考 PHP 官網

Deprecated features

ext/mysql deprecation

MySQL extension 不能用啦,請改用 MySQLi 或是 PDO_MySQL

preg_replace() /e modifier

modifier e 不能用了,請改用 preg_replace_callback() 。嗯…沒用過。

intl deprecations

IntlDateFormatter::setTimeZoneID() and datefmt_set_timezone_id() are now deprecated

mcrypt deprecations

下列4個 function 不能用啦
  • mcrypt_cbc() 
  • mcrypt_cfb() 
  • mcrypt_ecb() 
  • mcrypt_ofb()

Changed Functions

  • json_encode() 多了 depth 參數
  • pack() 和 unpack() 對於格式參數 "A" 和 "a" 的行為不同!

嗯…基本上,看起來似乎行為改變的東西沒有很多,應該要來看 PHP 5.3 到 PHP 5.4 ,這個應該改比較大。

[歌詞] Galileo Galilei - サークルゲーム



サークルゲーム

歌手:Galileo Galilei
作詞:尾崎雄貴
作曲:Galileo Galilei


忘れな草が咲く頃に 花びらの色 思い出す
静かな目をしたあの子と高く空に上っていく夢

飛行機雲を日向に描くロケットボーイズと
眺めて笑う突拍子のない慈愛を胸に抱くガールズ
時はぐるぐる そんな僕らもみんないなくなって
おざなりになるくらい目まぐるしい日々に切なくなる

「いつかまたここでね」
さよならの声がいつまでも響いて
背中を押すこともなく僕らを繋いだ

曖昧なことも単純なこともみんな色付いていく
言葉にならない このくすぶった気持ち抱きしめていたいよ
曖昧なことも単純なこともみんな同じだって
僕らの歌 この胸の真ん中で 花を咲かせている

駆け出した一人の午後
だあれもいない街をくぐり
廻る遊びからいちぬけて
君のことを思い出にしてしまう

サークルゲームを続けて
僕は祈って君は歌う
消えない幻を叶えよう
だから祈って僕は歌う

サークルゲームを続けよう
僕らは跳ねて重みを知る
変わる喜びや悲しみを
ここで祈って歌にしてみたりする

「やっとまた会えたね」
懐かしい君の声がする
気付けば僕らは宙に浮かびあがって
時に追いやられ

曖昧なことも単純なこともみんな花びらのよう
漂いながら空を廻っているだけ 振り返らないで
風に運ばれた忘れな草が みんな追い越していく
僕らの歌 ずっと先にあの色の花を咲かせている