gem update --systemではうまく行かない場合があるようなので、 その場合には以下のようにすればOkです。

   1  # gem install rubygems-update
   2  # update_rubygems

posted by Png genki on Mon 29 Sep 2008 at 19:42

Macのtopコマンドはdebianのものと違って、 Shift+Mではメモリの使用量によるソートができませんでした。 Macの場合は、

   1  % top -orsize

のように、オプションを指定して起動するか、 topが起動している状態で、oキーを押してから、 rsizeと入力すると良いようです。

RSIZEというカラムが使用しているメモリの量を表しています。

posted by Png genki on Mon 29 Sep 2008 at 19:38

This release includes a small spec change.

I changed spec of count method. Now it works without :group option. If you want old behaviour, you can use count_ids method instead.

http://github.com/genki/pagination_scope/tree/master

Good luck ;-)

posted by Png takiuchi on Sun 28 Sep 2008 at 03:57

Today, maiha, the author of the one of the most authorized books regarding rails in Japan, had sent me a patch including various improvements for the PaginationScope. I want to say thank you for the great contribution.

And then I merged it into the master and pushed to the GitHub.

http://github.com/genki/pagination_scope/tree/master

Here is the list of improvements from Maiha.

<モデル>

  • AR.paginate の第三引数に options を渡せるように変更
  • AR.paginate の options は第一引数でも可能にした AR.paginate(params[:page], 10, options) 以外にも以下のように書ける
       1     options = {
       2       :page => params[:page],
       3       :per_page => 10,
       4       :order => "id",
       5     }
       6     AR.paginate(options)
    

<ヘルパ>

  • Helper#paginate のオプション名を変更 (newer->prev, older->next) 昇順、降順によって newer/older が逆の意味になってわかり辛かったので
  • Helper#paginate の各要素にクラス名を付与 will_paginate のスタイルシートがそのまま使えるように合わせた
  • Helper#paginate のリンクに rel 属性を追加 AutoPagerize 対応
  • Helper#paginate のオプションに truncate を追加 省略時の '...' を設定可能にした

Thanks again!

posted by Png takiuchi on Fri 26 Sep 2008 at 18:48

svn 時代

% svn st
% svn co ...

git に乗り換えた現在

% git status
% git checkout ...

status まで我慢我慢と言ってきたのにすまないが、 checkout はもう我慢できん! この田岡茂一、そうそう気の長い・・・とかそういうの。

alias 設定

そんな田岡さんにお薦めしたいのがこちら、 設定ファイル(.git/config or ~/.gitconfig)に

[alias] 
  st = status
  ci = commit
  co = checkout

こんな風に alias 定義しておくだけで

% git st
% git ci
% git co ...

くぅ〜ん♪

posted by Png maiha on Fri 26 Sep 2008 at 10:09
posted by Png satoko on Thu 25 Sep 2008 at 15:06

http://norainu.net/mt/archives/2006/08/emacsclient.html

emacsclient。twitterかなんかで見てつかおうとしたのだけれど、そもそもemacs22じゃないと動かない?ようなのでemacsをソースからインストールするところに戻って開始するというyak shaving

その道のりを思い出して書いておく自分用メモ。
(なので正確ではないです)

lennyのemacs22パッケージをインストールしようとして挫折

emacs22パッケージはlennyにあるというのがわかったので、瀧内さんの記事(補助的にunstableパッケージを使えるようにする )を参考に/etc/apt/sources.listにlennyを追加。

インストール開始。だけれども、kernel-headers libc?を更新しないといけないなどとメッセージでてきたので頓挫。他のパッケージが動作しなくなる可能性が高いのでNG。

emacs22ソースからインストール

http://packages.debian.org/ja/lenny/emacs22
http://ftp.de.debian.org/debian/pool/main/e/emacs22/emacs22_22.2+2.orig.tar.gz
ソースをダウンロードして解凍。./configureする。

でもうまくいかないので、下記の順番にしてみる。

   1  cd /usr/local/src/emacs-22.2
   2  automake #=> Makefile.inを作る
   3  autoconf #=> configureを作る
   4  ./configue

でもまだうまくいかない。エラーを見返しlispintroが足りないといっているので

   1  cp lisp lispintro
   2  ./configure
lisprefも上と同様の作業をしてなんとかconfigureを終わらせる。
でmakeすると、make bootstrapしろと言ってくるのでそうする。
   1  make bootstrap #時間がかかる
   2  make
   3  sudo make install

でインストール完了!ちゃんと起動もできました。M-x emacs-versionで22.2.2であることを確認。

emacsclient

でemacsclientの作業。.screenrcにあるパスを下記のように書き換えて完了。

   1  #.screenrc
   2  screen -t emacs 0 /usr/local/bin/emacs

posted by Png satoko on Thu 25 Sep 2008 at 07:03

前回の記事で、IPアドレスのソートについて書きました。

今回はその続きで、takiuchiさんに教えてもらったものや、自分で書いたものの性能比較をしようと思います。

まず、前回の記事&コメントでどのようなソート方法があったかというと、

①自分で書いたソート(以下, my_sort_1)

   1  ip_addrs.sort_by{|a| a.split(".").map{|i| "%3d" % i.to_i}}

②自分で書いたソート・改(以下, my_sort_2)

   1  ip_addrs.sort_by{|a| a.split(".").map{|i| i.to_i}}

③takiuchiさんに教えていただいたソート(以下, takiuchi_sort)

   1  ip_addrs.sort_by{|i| Socket.sockaddr_in nil, i}

の3つです。 これらについて、ベンチマークをとってみます。

ソートする対象としては、世界の国別 IPv4 アドレス割り当てリストを使いました。

まず、下準備として、上記リストには、サブネットマスク版とCIDR表記版があるので、ここからIPアドレスのみを抽出し、Array型のオブジェクトに格納ておきます(このオブジェクトをip_addrsとする)。

全部で、51814のIPアドレスがあるらしいです。

そして、ベンチマークをとってみます。 -コード

   1  require 'benchmark'
   2  Benchmark.bm do |x|
   3    x.report("my_sort_1    :"){ ip_addrs.sort_by{|a| a.split(".").map{|i| "%3d" % i.to_i}}}
   4    x.report("my_sort_2    :"){ ip_addrs.sort_by{|a| a.split(".").map{|i| i.to_i}}}
   5    x.report("takiuchi_sort:"){ ip_addrs.sort_by{|i| Socket.sockaddr_in nil, i}}
   6  end

-結果

   1        user     system      total        real
   2  my_sort_1    :  3.860000   1.160000   5.020000 (  5.017623)
   3  my_sort_2    :  2.170000   0.650000   2.820000 (  2.819594)
   4  takiuchi_sort:  0.690000   0.180000   0.870000 (  0.864372)

takiuchiさんに教えていただいたソートが圧倒的に速いですね!! ここまで差がでるとは、正直思っていなかった。

自分で書いたmy_sort_1とmy_sort2でもかなりの差がみられました。

まぁ、my_sort_1のほうは無駄が多いですしね・・・。

こんな感じで、結論としては、 takiuchiさんの、

   1  ip_addrs.sort_by{|i| Socket.sockaddr_in nil, i}
がベンチマーク的に優秀で、コードの見た目もシンプルでかなり良さげです!!

他に「こんな方法のソートがあるよ!」というのがあれば、教えていただけると嬉しいです!

posted by Png y_tsuda on Wed 24 Sep 2008 at 17:01

Recently, the Formula had been slowing down.

The Formula is the service which provides a way to make images of mathematical expressions for embedding it into your blogs, BBSs and so on.

There was the problem in the manner of ranking the referred formulae. So I solved the issue by choosing simpler algorithm.

Now it became faster. Please try it again if you've given up once before for the slowness of the service.

Thank you for patience. I will keep appreciating any kind of feedbacks. Feel free to contact us.

posted by Png takiuchi on Wed 24 Sep 2008 at 03:48

config/environment.rbの中で、config.gemによってversion指定したgemを、 rake gems:unpackしようとすると、以下のようなエラーが出るようです。

   1  % rake gems:unpack GEM=genki-pagination_scope 
   2  (in /Users/takiuchi/project/formula)
   3  ERROR:  While executing gem ... (ArgumentError)
   4      Illformed requirement ["\">= 0.0.4\""]

RailsのLightHouseでも報告されていました。

rake gems:unpack version handling broken

ということで、この問題を回避するために、上記Ticketに添付されていた Patchを参考に、以下のようなMonkeyPatchを作ってみました。

config/initializers/fix_gem_unpack_for_2_1_1.rb

   1  module Rails
   2    class GemDependency
   3      def unpack_to(directory)
   4        FileUtils.mkdir_p directory
   5        Dir.chdir directory do
   6          Gem::GemRunner.new.run(
   7            unpack_command.map {|i| i.gsub(/\A["']|["']\z/, '')})
   8        end
   9  
  10        spec_filename = File.join(gem_dir(directory), '.specification')
  11        File.open(spec_filename, 'w') do |file|
  12          file.puts specification.to_yaml
  13        end
  14      end
  15    end
  16  end

これをconfig/initializers/の下に置いておけば、とりあえず正常にunpackする事ができます。

posted by Png genki on Wed 24 Sep 2008 at 02:10