Macはopt+spaceでU+00A0(No-Break Space, 0xC2A0)が入力できる
select * from users where id = 1; /* => Unknown column ' 1' in 'where clause' */
という用途に使えます。
便利ですね(;´Д`)
Mac、Spotlightの「デベロッパ」メニューを無効化する
Xcode入れるとSpotlightに勝手に「デベロッパ」という項目が追加され、システム環境設定から無効化できない!!!滅びろApple!!!!!!!
環境
- OS X 10.7
やり方
ここ参照。 http://hints.macworld.com/article.php?story=20110805192212447
open ~/Library/Preferences/com.apple.spotlight.plist
して、Dictionaryの項目を追加。name: SOURCE, enabled: NOに設定して保存。後はログインしなおせば消えます。
Ruby, C++のBoost::Lambdaみたいなスタイルでブロック書けるgemつくった
$ gem install boost_lambda_style_proc
名前が長い……
最初はboost_style_lambdaにしようと思ったけどLambdaじゃなくてProcを生成するためのライブラリなので誠実ではない!!!となった結果こうなった(長い)
Boost::LambdaっていうのはC++のBoostという普通のテクニックを駆使したライブラリの一部で、
// 5で割り切れて30より大きい要素を探す。 vector<int>::iterator it = find_if( vec.begin(), vec.end(), _1%5==0 && _1>30 );http://www.kmonos.net/alang/boost/classes/lambda.html
という書き方ができる。
Rubyで書くなら
[10, 23, 45, 76, 98].select {|x| x%5 == 0 && x>30}
なんだけど、ここでxってなんなんだよという問題が生じる。私はある要素について注目して、それについての条件を記述したいのに、ブロック引数定義すなわち「ある要素をxと置く」という余計な記述を強要されて、違う、全くそこは本質ではない、ソレで通じるべきなのだ本来は、だがしかし余計なxという名前を明示的に宣言することを余儀なくされ、後続する条件式では意味のないエッックスが、うっ。
そこでboost_lambda_style_proc(長い)を使うと、
require 'boost_lambda_style_proc' [10, 23, 45, 76, 98].select &((_1%5 == 0) & (_1>30))
アッ、ハイ。カッコが増えましたね。それはともかく、思考を乱す余計な引数定義がなくなったんですよ。スゴクないですか? 今注目しているものは_1です。「_1を今注目しているものとする」という定義は必要ない。スゴイですね? &&が&になりましたけどね。どちらかといえばRubyの側に問題があると考えます、そのへんの演算子定義制限については。
例が複雑すぎた。
[1, 2, 3].map &(_1 * 2)
これくらいの例ならボロが出なかったですね……(おわり)
Ruby、Enumerableから重み付きでランダムに要素を取り出すgemつくった
類似gemとしては
- ActiveRecord用のweighted_random
- {value => weight} 形式のHashを使う weighted_randomizer
というのがあったけど、当方のユースケースには合わなかったので自作した。
$ gem install weighted_sample
で入ります。
require 'weighted_sample' [1, 9, 90].weighted_sample_by {|x| x} # => 1(1%), 9(9%), 90(90%)
任意のEnumerableで使えるけど、内部的に2回eachしてるのでご留意ください。
重みに使えるのは、今のところ整数のみです(要望があればFloatにも対応するんじゃないかな or プルリクせよ)。
terminal+bash+screen、ターミナルがバックグラウンドだった場合、コマンド終了時に通知してほしい
1. PS1に
\[\033[\a\]
を追加(プロンプト表示時にbellする)
2. screenの設定でaudible bellを有効に
3. terminalの設定でaudible bellを有効に
で、バックグラウンドでコマンド終了→PS1が表示されてベルが鳴る→dockで通知されるということになる。なぜか音は出ない(なぜか……)のでうるさくないです。
Ruby+XMPP4RでJabberのグループチャットに投稿する
グループチャット使うにはJabber::MUC::MUCClientをつかうひつようがある。
# 環境: Ruby 1.9.2+xmpp4r 0.5 require 'xmpp4r' require 'xmpp4r/muc' # サーバにつなぐ client = Jabber::Client.new(Jabber::JID.new("todesking@im.example.com") client.connect client.auth("password") # チャットルームに入る muc = Jabber::MUC::MUCClient.new(client) muc.join("groupchat@conference.im.example.com") # メッセージ送る message = Jabber::Message.new("groupchat@conference.im.example.com", "こんにちは〜〜〜") muc.send(message) # 後始末 client.close