• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
 
 

Rubygems-1.8.2 にアップデートして色々と痛い目にあっています。 ちょっと時期尚早な気がしたので、一旦過去のバージョンに戻すことに。 以下のようにすればokです。

   1  # gem update --system 1.7.1

posted by Png genki on Sun 15 May 2011 at 04:05

Rubyスクリプト中から

   1  require "hoge"

されている hoge のソースを見てみたい時には、

   1  vim `gem which hoge`.rb

すると見つけてきてくれます。

posted by Png genki on Sun 8 May 2011 at 17:22

昔はShift JISからEUC-JPに一括変換するのにqkcを使っていましたが、 最近は UTF8に変換する方が多いので、qkc は使えません。 そんな時は nkf で

   1  % nkf -w --in-place *

--in-placeを指定すれば一括変換できます。

posted by Png genki on Sat 11 Sep 2010 at 22:30

普段のコミットログから作業日報的なものを生成したい場合、 以下のようなコマンドでそれらしいものが出力できます。

   1  % git log --author=takiuchi --format="%ad %s" --date=short

posted by Png genki on Wed 21 Apr 2010 at 08:47

厳守してるわけじゃないですが、なんとなくこんなリズムでコードを書くようにしています。

  • 朝はデバッグ
  • 午後はテスト、ドキュメントを書く
  • 夜は新しいコードを書く

朝は脳が冴えていて、前日仕込んだバグが嘘のようによく取れます。

午後は眠くなるので、あまり脳を使わないテストやドキュメントを書きます。 単調な作業への反動でいいアイディアをひらめいたりします。Yakです。

夜は創造の時間です。新しいことに取り組みます。行き止まりだと思っていたところに道が開けます。

posted by Png genki on Mon 12 Apr 2010 at 18:41

Valgrindを使うとメモリリークの検出などを行うことができて便利ですが、 OSやライブラリに起因するメモリリークのレポートが大量に出てくると邪魔なため、backtraceのパターンを指定して抑制(suppress)することができます。

例)valgrind.supp

   1  {
   2     <insert_a_suppression_name_here>
   3     Memcheck:Leak
   4     fun:malloc
   5     fun:_nc_table_insert_n
   6     fun:token_table_add
   7     fun:notify_register_check
   8     fun:notify_register_tz
   9     fun:tzsetwall_basic
  10     fun:localtime
  11     fun:ctime
  12  }

funはbacktrace上の関数名を示しますが、全体をマッチさせる場合、 呼び出し経路ごとに異なったパターンになるため、 沢山登録する必要が出てきてしまいます。

最新のValgrind(valgrind-3.6.0.SVNで確認)では、 "..." 記法によって中間のパターン指定を省略することが できるようになりました。 これを使用すると、先程の例は以下のように書き直せます。

   1  {
   2     <insert_a_suppression_name_here>
   3     Memcheck:Leak
   4     fun:malloc
   5     ...
   6     fun:localtime
   7  }

localtime関数を呼び出したあとに、内部のmalloc呼び出しで 発生したメモリリークを全部一括で抑制できます。便利ですね。

posted by Png genki on Mon 5 Apr 2010 at 14:42

To reduce consumption of papers, I investigated way to print both sides of paper on MacOSX.

  1. First, print even number pages by reverse order.
  2. Second, bring the output papers to the medium tray.
  3. Last, print odd number pages.

Be careful of the flow of from even number pages to odd number pages. If you do oppositely, sometimes you would get the out of order result.

This can be used with layouts that have 2 or more pages a paper.

posted by Png takiuchi on Sat 20 Jun 2009 at 19:13

行末に|を記述するHamlの複数行記法が書きにくかったので、 Vimで整形出来るようにするための外部プログラムを作ってみました。

http://gist.github.com/112140

   1  set fp=/path/to/haml_formatter.rb

して、visualモードで選択してgqで整形です。

posted by Png genki on Sun 17 May 2009 at 07:35

rubyで普通にinjectを使って合計を求めようとした場合、こんな感じになります。

   1  (1..10).inject(0){|sum, i| sum + i} #=> 55

しかし、以下のように書く事も出来ます。

   1  (1..10).inject(&:+) #=> 55

posted by Png genki on Sun 10 May 2009 at 04:55

Enumerable#grepを使う事で、文字列の配列から、 所望のパターンにマッチするものだけを抜き出す事が出来ますが、 以下のようにブロックを指定する事で、 マッチした部分だけを取り出す事が出来ます。

   1  Dir["config/environments/*.rb"].grep(%r{(\w+)\.rb$}){$1}
   2  #=> ["development", "production", "rake", "staging", "test"]

痒いところに手が届く感じですね。

posted by Png genki on Thu 30 Apr 2009 at 14:32