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

2008年07月 アーカイブ

2008年07月02日

Doxygen for Windowsが日本語に対応していた

Doxygen for Windowsが日本語に対応していた。
どうやら、バージョン1.5.1以降かららしい。

ソースコードの文字コードをnkfで変換する必要が無くなった。
設定ファイルの「INPUT_ENCODING」に「CP932」を指定するだけで良い。

設定ファイルの作成。

doxygen -g <config_file>

作成された設定ファイルの次の箇所を、

INPUT_ENCODING         = UTF-8

次のように変更する。

INPUT_ENCODING         = CP932

nkfの変換処理がいらなくなったので、処理が早くなった。

追記:
コメント欄で教えていただきました。
「INPUT_ENCODING」は1.5.2から。
それ以前のバージョンでは「USE_WINDOWS_ENCODING」を「YES」にすることで、SHIFT_JISのソースを扱えていたそうです。
お知らせありがとうございます。

2008年07月04日

Ruby on Railsのログファイルに色をつけない方法

Ruby on Railsのログファイルに色をつけない方法。

Ruby on Railsは、標準では、ログファイルに色を付けて出力してくれます。

色付きに対応しているビューアでみれば見やすいのですが、Windowsなどの未対応OSでは逆に見にくくなってしまいます。

ログファイルに色をつけないようにするには、environment.rbを編集し、設定を変更します。

Rails::Initializer.run do |config|
  # ログファイルに色をつけない
  config.active_record.colorize_logging = false

これで、Windowsでログファイルをが見やすくなります。

2008年07月11日

ActiveSupportのEnumerable#group_by

ActiveSupportのEnumerable#group_byについて。

Railsレシピブックの330ページでは、

引数に渡したブロックの戻り値をキー、その戻り値の値となる要素の配列を値とする新たなハッシュを返します。

331ページのコードでは、group_byがHashを返しています。

comments_by_date = UserComment.find(:all).group_by(&:created_at)
#=> { #<Date: 2008/05/03 =>
       [#<UserComment created_at=#<Date: 2008/05/03, text="...">,

Ruby 1.8.6とRuby on Rails2.1.0で実際に試してみたところ、group_byは次のような値を返しました。

#=> [[#<Date: 2008/05/03>, [#<UserComment ...>, #<UserComment ...>]],
     [#<Date: 2008/05/04>, [#<UserComment ...>, #<UserComment ...>]]]

Hashが返ってくるはずなのに、Arrayが返ってきています。

実は、一見するとArrayのように見えますが、ActiveSupport::OrderedHashクラスのインスタンスです。 ActiveSupport::OrderedHashはArrayクラスのサブクラスで、[]メソッドを再定義しています。
そのため、Hashと同じように[]で要素にアクセスすることができます。
ActiveSupport::OrderedHashはArrayなのですが、あたかもHashのように扱うことができるのです。

2008年07月16日

RailsのAPIドキュメントいろいろ

RailsのAPIドキュメントいろいろ

  • Rails-doc

    検索キーワードを途中まで入力すると、候補をリストアップしてくれる機能が便利。
    快適に動作するし、見やすい。

  • RailsBrain.com

    こちらも便利。
    Ruby on Railsのバージョンごとにドキュメントを選択できるのがうれしい。

  • Ruby on Rails API

    候補をリストアップしてくれるけど、期待しているものがない。
    なんでだろう。

  • gem server

    コマンドラインから「gem server」と入力。
    その後「http://localhost:8808」にアクセスする。

  • rakeでAPIドキュメントを作成する
    「gem server」で見ることのできるドキュメントと同じ。

    rake rails:freeze:gems
    rake doc:rails

  • http://api.rubyonrails.org/

    gem_serverで見ることのできるrdocのAPIドキュメントと同じ?

2008年07月18日

nkfバージョン2用pythonインターフェース NkfPython がすごく便利

nkfバージョン2用pythonインターフェース NkfPython がすごく便利。
Windows用のバイナリファイルも用意されているので、インストールもコピーするだけ。
とても簡単です。

Python 2.4からCJKCodecsが標準ライブラリに含まれるようになり、日本語が扱いやすくなりました。
ですが、CJKCodecsには文字コードの推測機能がありません。

そこで頼りになるのがnkfです。
nkfもいつの間にかバージョン2になって、utf-8にも対応していました。
ありがたいことです。

使い方も簡単。これからお世話になりそうです。

import nkf

# 文字コードのわからない文字をUTF-8に変換する
some_string = …
output = nkf.nkf('-w', some_string)

# 文字コードを推測する
some_string = …
input_code = nkf.guess(some_string)

追記
WindowsXP python2.6用NKF_pythonのDLLモジュールを作成しました。

2008年07月20日

IDE Fix Pack 1.6 for RAD Studio 2007

RAD Studio 2007のいくつかのバグが修正されたようです。

Fixes RAD Studio 2007 IDE bugs

ID: 25412, IDE Fix Pack 1.6 for RAD Studio 2007

DDevExtensions 1.6

DDevExtensions adds new features to the Delphi/C++Builder IDE.

ID: 25536, DDevExtensions 1.6

IDEの機能を拡張するプログラム。

* Adds keybinding for extended HOME and indent/unindent TAB/Shift-TAB

とか、地味だけど嬉しいかも。

試してみよう。

追記
こっちが公式サイト=>DDevExtensions

DelphiSpeedUp 2.78

DelphiSpeedUp improves the startup and overall performance of the Delphi and C++Builder IDE.

ID: 25436, DelphiSpeedUp 2.78

IDEの起動や全体のパフォーマンスが向上するらしい。

2008年07月21日

夜と霧

夜と霧』を読みました。

この本のことは以前から知っていましたが、何となく堅くて難しそうな気がしていたので、手に取らずにしました。
実際は、本は薄く、文章は堅くなく、読みやすい本でした。

本の評価は言うまでもありませんね。
Amazonのレビューを見ても、ほとんどが5つ星ですが、妥当な評価だと思います。

長い年月をかけて読み継がれてきた本はやっぱり素晴らしい。
自信を持ってお薦めできる一冊です。

Rubyの脆弱性その後

2008年6月、Rubyに任意のコードが実行される脆弱性が見つかり、脆弱性を修正したバージョンが公開されました。
修正されたのはRubyのバージョン1.8.5、1.8.6、1.8.7、1.9.0です。
1.8.4以前の全てのバージョンにも脆弱性は存在しますが、修正バージョンは公開されていません。
任意のコードが実行される脆弱性について

このときに行われた脆弱性の修正に、バグが紛れ込んでいました。
このバグはその後、修正されたようです。
公式サイトには、このことに言及している情報はありません。

なお、バグ修正はRuby 1.8.5には行われず、このまま放置されそうです。
[ruby-list:45247][ruby-list:45248]

ご注意ください。

2008年07月22日

Railsレシピブックのredirect_toは誤植ではないか

Railsレシピブックの57ページにあるredirect_toの記述は誤植ではないでしょうか。

redirect_to :controller => 'users', 
            :action => 'show', params => { :id => 3 }

正しくは、

redirect_to :controller => 'users', 
            :action => 'show', :id => 3

どこかに正誤表はないのでしょうか。

C++Builder 2009には、Boost C++ librariesが標準添付か

We are adding the Boost C++ libraries to C++Builder in Project Tiburon.

Boost support in Tiburon C++Builder 2009

C++Builder 2009には、Boost C++ librariesが標準でついてくるということでしょうか。

Boostの正規表現ライブラリには、お世話になっています。
インストールする手間が省けて助かりますね。

2008年07月23日

Ruby on Railsを使用するのに、どのバージョンのRubyを使えばいいのか

Ruby on Railsを使用するのに、どのバージョンのRubyを使えばいいのでしょうか。

Ruby 1.8.4以前は、「任意のコードが実行される脆弱性」があるため、使用できません。
Ruby 1.8.5は、「任意のコードが実行される脆弱性」の修正時にバグが混入しているため、使用できません。
Ruby 1.8.6とRuby 1.8.7は、「任意のコードが実行される脆弱性」の修正時に混入したバグが修正されており、使用可能です。

使用できるのは、Ruby 1.8.6かRuby 1.8.7のどちらかになります。

次にRuby on Railsとの相性の問題があります。

Ruby on Rails 2.0.2Ruby on Rails 2.1.0
Ruby 1.8.6
Ruby 1.8.7×

Ruby on Rails 2.0.2を使用するならRuby 1.8.6、Ruby on Rails 2.1.0を使用するならRuby 1.8.7がいいでしょう。

どちらを使うか迷ったら、とりあえずはRuby 1.8.6を使えばいいと思います。
近い将来、バージョンアップが必要になるかもしれませんが。

2008年07月24日

Google App Engin、Pythonの次の言語はPerl

I'm happy to announce that the Google App Engine team has given me permission to talk about a 20% project inside Google to to add Perl support to App Engine.

Perl on App Engine

Google App Enginで、新たにPerlサポートされるようになりそうです。
Perlの豊富なCPANモジュールがどこまで使うことができるのかが、一つのポイントになりそう。

サポートする言語を増やすよりも、PythonでいいからGoogle App Engineにもっと機能を追加して欲しい。

2008年07月25日

SQLiteで「unable to open database file」エラー

SQLiteで「unable to open database file」のエラーがなかなか解決しませんでした。

考えられる原因の一つにアクセス権がありますが、問題ないことは確認済み。

結局、データファイルのフルパスにマルチバイト文字があったことが原因みたいです。
データファイルのファイル名にマルチバイト文字がなくても、パス中のどこかにマルチバイト文字があると、 エラーになるのではないかと思います。

昔のFirebird(バージョン1.x系)でも同じ問題がありました。
Firebird 2.x系では、この問題は解決されており、使いやすくなっています。

Ruby用PDFライブラリでは、Haru Free PDF Libraryがおすすめ

Ruby用PDFライブラリでは、Haru Free PDF Libraryがおすすめ

Ruby用PDFライブラリを調べました。
日本語が正しく使用できるものは「Haru Free PDF Library」だけではないでしょうか。
正直なところ、これほど貧弱だとは思いませんでした。

Haru Free PDF Libraryがすごい

PDFライブラリ「Haru Free PDF Library」がすばらしい。

公式サイトは英語ですが、作者は日本人の方のようです。
だから、日本語対応がちゃんとなされているのも納得できます。

ソースコードはC言語で書かれており、configureしてmakeする定番のインストール手順になります。
Windows用のバイナリファイル(dll)が用意されているので、Windowsユーザーはコピーするだけで簡単にインストールできます。

ソースコードはC言語ですが、各種プログラム言語用にライブラリが用意されています。
用意されているのは、次のプログラム言語です。

  • c#
  • delphi
  • freebasic
  • python
  • ruby
  • vb6

これだけサンプルがあれば、他の言語で使用するのも、そんなに難しくないのではないでしょうか。

ほかにもPHP用にPECL/haru拡張モジュールがあるようです。

機能面でも、優れています。
閲覧用パスワードと編集用パスワードをそれぞれ設定することができるなど、 他のPDFライブラリではあまり用意されていない機能まで使用できます。

公式サイトのドキュメントは英語ですが、PHP用のPECL/haru拡張モジュールのドキュメントが日本語で書かれているものがあります。
関数名の大文字/小文字などの違いはありますが、他のプログラム言語で使用するときにも参考になると思います。

Python用PDFライブラリならReportLab

Python用のPDFライブラリなら「ReportLab」がよさそうです。

簡単な使い方は「Django で PDF を出力する」が参考になります。

そのうち試してみたいと思います。

About 2008年07月

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

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

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

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

Powered by
Movable Type 3.35