« 2008年04月 | メイン | 2008年06月 »

2008年05月 アーカイブ

2008年05月05日

Python用実行ファイル作成ツール

Pythonのスクリプトを単体で動作できるようにする実行ファイル作成ツール。

実行ファイルにすると、Pythonがインストールされていなくても実行できるようになる。
また、実行環境のPythonのバージョンの違いに悩まされることもなくなる。

  • py2exe
    Windows用の実行プログラムを作成できる。

  • PyInstaller
    Windows用とLinux用の実行プログラムを作成できる。

  • bbfreeze
    Windows用とLinux用の実行プログラムを作成できる。

実際に試しながら、それぞれの特徴と違いを確認したい。

2008年05月10日

Ruby on Rails用IDE NetBeans 6.1リリース

NetBeansのバージョン6.1がリリースされました。

リリースされたのは英語版ですが、日本語化zipファイルを入れることにより、日本語化できます。

現在リリースされているRuby on Rails用IDEの中で、最も使える製品だと思います。

Rubyコーディング規約

Rubyコーディング規約について調べてみました。

よくまとまっています。
これをベースに、プロジェクトごとに規約を作成すればよさそう。

if !xのような場合は、 unless xに置き換える。ただし、unlessの場合、 elseは使用しない。

これは、ルールが複雑でわかりにくそう。

Rubyの作者のまつもとゆきひろ氏のMatzにっきより。

青木氏が使っている Ruby のコーディングスタイル。

文字列リテラルついて、Rubyコーディング規約では基本的に「"..."」ですが、RubyCodingStyleでは「'...'」を薦めています。
私個人は、RubyCodingStyleと同じで、「'...'」を使っています。

returnは、Rubyコーディング規約の「メソッドの値を返す場合は、必ずreturnを使用する。また、returnの括弧は省略する。」が、わかりやすいと思います。
RubyCodingStyleでは、returnは「全部省略する」とあります。 これだと返値が期待されているのか(functionなのか、procedureなのか)がわかりにくいのではないでしょうか。

2008年05月11日

Rubyコーディング規約は、実際に使われていないのかもしれない

これから始まるプロジェクトのために、コーディング規約を調べています。

少しだけPrefShimaneCMSを見てみたのですが、Rubyコーディング規約は適用されていませんでした。

たとえば、Rubyコーディング規約によるとクラスメソッドは、

クラスメソッドの定義にはselfを使用する。

とありますが、PrefShimaneCMSでは、

def Advertisement.pref_advertisement
def Advertisement.corp_advertisement
def Advertisement.pref_published_advertisement

と、selfではなく、クラス名を使用して定義されています。

メソッド呼び出しの時の括弧は、Rubyコーディング規約では、

メソッド呼び出しの引数リストには括弧を付ける。ただし、引数がない場合は、括弧を省略する。

とありますが、PrefShimaneCMSでは、括弧があったりなかったりと、全然統一されていません。

コーディング規約というは、実際には使われていないのかもしれません。

コーディング規約ではありませんが、ソースを見ていて気になったこと。

PrefShimaneCMSでは、ActiveHeartを使っているようです。
ActiveHeartは、現在では推奨されていません。
Ruby-GetText-Packageに移行すべきでしょう。

Modelがフィールドにアクセスする時、read_attribute/write_attributeを使わずに、「self.フィールド名」でアクセスしていました。
「self.フィールド名」でアクセスするとmethod_missingが呼び出されるため、効率が悪いように思えます。
method_missingでメソッドが定義されるので、呼び出されることになるのは、一度だけですが。

機種依存文字を見つけるlib/filter.rbや、Chasenを使ってルビを振るlib/ruby_adder.rbは使えるかも。

2008年05月17日

Ruby on Rails用 統合開発環境(IDE) 比較レポート

CodeZineのRuby on Rails用 統合開発環境(IDE) 比較レポートの内容が変です。

NetBeansの短所として、次のように書かれています。

JavaのIDEとしてデファクトスタンダードであるEclipseではないため、見た目、操作感が違い戸惑う可能性がある

Ruby on Rails用の統合開発環境のレポートです。
Javaの統合開発環境のレポートではありません。
Javaの統合開発環境のデファクトスタンダードは、評価に全く関係ありません。
とんでもない言いがかりです。

ちなみに、もう一つの短所として、

IDE起動後の索引作成に時間がかかる

と、あります。
確かに、IDE起動後に索引を作成します。
プロジェクトのサイズによっては、時間もかかるのかもしれません。
ですが、索引作成中でも、操作はできるのです。
IDEが固まるとか、CPUを100%使い切ってしまうとか、そんなことはありません。
何を問題視しているのか、わかりません。

ついでに、機能の比較も、どれだけ意味があるのでしょうか。
機能が多いほど優れた統合開発環境である、とは言えません。
自分の使う機能がしっかりと実装されているのが、優れた統合開発環境です。
使わない機能がたくさんあっても、価値はありません。むしろ、使いにくいだけです。
機能数の比較に、何の意味があるのでしょうか。

それから、Emacsの評価は疑問を感じます。
rails-modeを使っていないのでしょうか。
rails-modeなら「action→view」「view→action」などはできたはずです。

2008年05月18日

Ruby on RailsにRuby-GetTextを入れると、`gem_original_require': no such file to load -- gettext/rails (MissingSourceFile)になった

Ruby on RailsにRuby-GetTextを入れると、エラー

`gem_original_require': no such file to load -- gettext/rails (MissingSourceFile)

になった。

Ruby-GetTextはRubyGemsのgemコマンドでインストールした。
インストールされていることに間違いはない。

いろいろと調べた結果、結局、environment.rbで環境変数「GEM_HOME」を設定したら、動くようになった。

ENV['GEM_HOME'] ||=  '…'

Ruby on RailsとRuby-GetText-Packageを使った日本語メールの送信

Ruby on RailsとRuby-GetText-Packageを使った日本語メールの送信について。

Ruby-GetText-Packageは、ブラウザからのアクセスでコントローラ経由を経由してメールを送信するときは、ちゃんとiso-2022-jpに変換してメールを送ってくれます。

ですが、モデルから直接メールを送信するときは、変換してくれません。

モデルに直接アクセスした場合は、コントローラ内に記述したinit_gettextが呼ばれないため、変換されないのだと思います。

そこで、メールを送信するメソッド内に次のコードを追加することで、直接モデルからメールを送信したときにも、変換されるようになりました。

  require 'gettext/rails'
  ActionController::Base.init_gettext "…"
  GetText.locale = "ja"

2008年05月19日

「EurekaLog」が便利そう

EurekaLog(その1) - 不意に起こる例外に対処する」で紹介されている「EurekaLog」が便利そうです。
突発的なエラーが発生した時、詳細な情報が得られるのは、非常に助かります。

さっそく、EurekaLogのホームページを見たところ、

Prices begin at $99(US).

えっと、有償のライブラリでしたか。
でも、確かにそれだけの価値はあるかもしれません。

追記
EurekaLogについて詳しい記事がありました。やっぱり良さそう。

さらに追記

EurokaLogを導入しました。とても優秀なツールでした。
詳細については「EurekaLog導入レポート」をご覧下さい。

2008年05月21日

ISBN10とISBN13を相互に変換するRubyプログラム

ISBN10とISBN13を相互に変換するRubyプログラム

# ISBN10をISBN13に変換する
def isbn10_to_13(isbn10)
  isbn13 = "978#{isbn10[0..8]}"
  #チェックデジット計算用
  check_digit = 0
  isbn13.split(//).each_with_index do |chr, idx|
    #Integer#even?はActiveSupportによる拡張
    check_digit += chr.to_i * (idx.even? ? 1 : 3)
  end
  #総和を10で割ったものを10から引き、10の場合は0にする
  check_digit = (10 - (check_digit % 10)) % 10
  return "#{isbn13}#{check_digit}"
end

# ISBN13をISBN10に変換する
def isbn13_to_10(isbn13)
  isbn10 = isbn13[3..11]
  check_digit = 0
  isbn10.split(//).each_with_index do |chr, idx|
    check_digit += chr.to_i * (10 - idx)
  end
  check_digit = 11 - (check_digit % 11)
  #計算結果が 10 になった場合、10 の代わりに X(アルファベットの大文字)を用いる。
  #また、11 になった場合は、0 となる。
  case check_digit
  when 10: check_digit = "X"
  when 11: check_digit = 0
  end
  return "#{isbn10}#{check_digit}"
end

2008年05月22日

Rubyらしいコードの書き方(入門編)

他人が書いたRubyのコードを見て、Rubyらしくないと思ったところがありました。
このように直すと、Rubyらしいコードになると思います。

String#+ よりも、 "#{String}"を使う。
obj.to_sしなくてもいいし。

String#+の例

year.to_s + "年" + month.to_s + "月" + day.to_s + "日"

"#{String}"の例

"#{year}年#{month}月#{day}日"

sprintf(String, *args)は、String#%と同じ。

sprintf(String, *args)の例

sprintf("%d年%d月%d日", year, month, day)

String#%の例

"%d年%d月%d日" % [year, month, day]

obj = obj + 1 は、obj += 1 と同じ。

nilとの比較は obj == nil より obj.nil? を使う。入力数が短い。

変数が初期化されていない時に初期化する処理で、よくあるのが次の書き方。

if value == nil
  value = 1
end

これは簡潔に書ける。

value ||= 1

Ruby on RailsにあるActiveSuppoertで追加されるメソッド blank? は便利なので、知っておいた方がいい。

if value == nil or value.size == 0

というコードが、

if value.blank?

と書けます。

2008年05月24日

受験科目に数学が入っていた人の方が年収が高い。

それを発見したのは、京都大学教授の西村和雄博士である。教授は、有名私立大学の経済学部を卒業した、20代前半から50代後半までの2000人に対し、「受験科目に数学が入っていたかどうか」のアンケートをとり、その人々の平均年収を調査した。

受験で数学を取った人の平均年収は931万円、数学を取らなかった人の平均年収は880万円と、50万円ほどの差が出た。

採用の超プロが教えるできる人できない人

論理的思考力の差が、年収の差を生み出していたという話。

数学が実生活において、役に立っていることを示す例です。

レンタルサーバーでフルパスがわからないときに調べる方法

レンタルサーバーでフルパスがわからないときに調べる方法。

次のコードを記述したファイルをアップロードして、ブラウザからアクセスします。

sample.php

<?php
echo __FILE__;
?>

ブラウザに表示されたパスが、アップロードしたファイルのフルパスになります。

2008年05月25日

NetBeansがPHPに対応しているらしい。

最近NetBeansがよさげ+PHPにも対応したみたいなので試してみた」の記事によると、NetBeansがPHPに対応しているらしい。
この記事では、NetBeansのインストールからCakePHPの使い始めのところまで、解説されています。

デバッグ機能がどうなっているのか、興味のあるところ。
一度、試してみたいです。

2008年05月29日

IT 勉強会カレンダー

IT 勉強会カレンダーがすごい。
充実している。

実は、同じようなものを作ろうとしていたところ。
なかなか大変なのです。

これだけのものを作ったのは凄いと思う。

2008年05月30日

図書館蔵書検索 searchlib 0.2.3

図書館蔵書検索 searchlib 0.2.3を公開しました。

  • 三鷹市立図書館に対応しました。
  • Amazon Web サービスを使用するように変更しました。
  • ヘルプファイルを作成しました。

About 2008年05月

2008年05月にブログ「山本隆の開発日誌」に投稿されたすべてのエントリーです。過去のものから新しいものへ順番に並んでいます。

前のアーカイブは2008年04月です。

次のアーカイブは2008年06月です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35