誤植の効率的探索法

$ grep 'をを|にに|がが|とと|をが|をは|をに|をと|はに' < file
コンピュータ > プログラミング | - | trackbacks (0)

[Ruby] ruby-postgres

ruby で postgreSQL を利用するには、
FreeBSD なら
$ tar zxvf ruby-postgres-*.tar.gz
$ ruby extconf.rb --with-pgsql-dir=/usr/local/pgsql
で大丈夫です。
Windows なら
gem install ruby-postgres
として、さらに libpq.dll にアクセスできるようにするために環境変数PATH
今までの値;C:\Program Files\PostgreSQL\8.1\bin
を追加します。
コンピュータ > プログラミング | - | trackbacks (0)

Ruby と perl の微妙な違い

Ruby と perl は同じスクリプト言語なので、共通点がいくつかありますが、それが思わぬ結果を生むことがあります。

perl の場合
$hoge = "abcdefg";
$hoge =~ m/c(def)/;
if($hoge =~ m/(ho)ge/){
  print "nocode\n";
}
else{
  print $1 , "\n";
}
とすると最初のマッチ結果の
def
が出力されます。

一方 Ruby は
$hoge = "abcdefg"
$hoge =~ /c(def)/
if $hoge =~ /(ho)ge/
  print "nocode\n"
else
  print $1 + "\n"
end
とすると if 文内のマッチ結果がなかったことを示す
nil
が出力されます。微妙な違いですが perl 使いの人は気をつけましょう。
続きを読む>>
コンピュータ > プログラミング | - | trackbacks (0)

[Ruby] RubyGems

 RubyGems のシステムはすばらしい。Ruby のライブラリ群が FreeBSD の pkg_add や Redhat の rpm のように一括管理されているので、Ruby on Rails のインストールは
gem install rails --include-dependencies
でよくて、ruby の postgres ライブラリは
gem install ruby-postgres --include-dependencies
とコマンドプロンプトに打ち込むだけでインストールできる。これは便利だ。

rails と依存関係にあったパッケージメモ
rake
activesupport
activerecord
actionpack
actionmailer
actionwebservice
コンピュータ > プログラミング | - | trackbacks (0)

[Ruby] Ruby にはまる

 なんだか SlashDot JapanRuby on Rails の記事を見て Ruby 言語を学びたくなってしまいました。コツコツ勉強中です。
コンピュータ > プログラミング | - | trackbacks (0)

[CVS] 初歩的なミス

 WinCVS が動かないと後輩が言っていたので見てみると

cvs [checkout aborted]: cannot start server via rsh: No such file or directory

と出ていました。見慣れないエラーで原因がまったくわからなかったのです。
 しかし、原因は単純でした。なんと環境変数を書き換えた後、WinCVSを再起動してなかっただけなのです。環境変数はアプリケーション起動時のものが反映されるので、ソフトを再起動する必要があるようです。
コンピュータ > プログラミング | - | trackbacks (0)

[Visual C++] プリコンパイル済みプリプロセッサ

 ソースファイルが10を超えるとコンパイルにかなり時間がかかるようになります。特に、何度も繰り返されるヘッダファイルの読み込みはものすごく時間がかかります。
 そこで、プリコンパイル済みプリプロセッサを使ってみることにしました
  1. まず、よくつかう割りに更新の少ないヘッダを StdAfx.h に書き、 StdAfx.c というファイルに
    #include "StdAfx.h"
    とだけ書いて保存します。このファイルのプロパティで「プリコンパイル済みプリプロセッサを作成する」にチェックを入れます。
  2. プロジェクトのプロパティで「プリコンパイル済みプリプロセッサを使用する
にすればOKです。
 ビルドすると格段に速度が上がることに気がつきます。ただし、StdAfx.h に書いてあるインクルードファイルの中身を頻繁に更新すると、速度が落ちてしまうので注意が必要です。あくまで更新の少ないものを選びましょう。
コンピュータ > プログラミング | - | trackbacks (0)

[Visual C++] スタックオーバーフロー

デバッグ中に chkstk.asm というファイルの
probepages:
        sub     ecx,_PAGESIZE_          ; yes, move down a page
        sub     eax,_PAGESIZE_          ; adjust request and...

        test    dword ptr [ecx],eax     ; ...probe it
        cmp     eax,_PAGESIZE_          ; more than one page requested?
        jae     short probepages        ; no
なるところで、実行がストップしました。どうやらスタックオーバーフローらしい。でかい配列を定義してしまったからのようです。
 プロジェクトのプロパティの [リンカ] - [システム] の [スタックのコミット サイズ] を増やしてみると、何とかなるみたいです。それでも足りなければグローバル変数化して容量を節約するとよいそうです。
コンピュータ > プログラミング | - | trackbacks (0)

[Visual C++] シンボル検索

 変数名や関数名などの検索をしてくれる、シンボル検索。しかし、うちの Visual C++ はなぜかシンボル検索ができませんでした。

参照情報がありません。プロジェクトの設定で 'ビルドの参照情報' を有効にして、参照が有効になるようにプロジェクトをビルドし直してください。


と出るのです。しかし、どこにも「ビルドの参照情報」なる設定項目はありません。そこでさまざまな、コンパイルオプションを有効にしたり無効にしたりするのを繰り返すとプロジェクトのプロパティの [全般] - [ブラウザ情報のビルド] を有効にすればよいことがわかりました。エラーメッセージの翻訳過程でずれが生じたのでしょうが、用語だけは統一してもらいたいものです。
コンピュータ > プログラミング | - | trackbacks (0)

[perl] CGI でサーバーを起動する

 CGI プログラムは要求された HTML 等を出力するために、クライアントに要求された時のみ一時的に起動します。しかし、これでは長時間動かすプログラムを実行することができません。そこで、サーバープログラムを使うと便利です。なら24時間実行し続けるので、定時に実行したい時に便利です。
 しかし、通常サーバープログラムの起動にはシェルアカウントが必要なので、なかなか一般人には手が出せませんでした。そこで、perl CGI から一般のサーバープログラム (デーモンプログラム)を起動できれば、シェルアカウントななくてもサーバープログラムを利用することができます。 ところが、perl の system fork exec のいずれで実行しても、HTTPサーバーのセッションが閉じないため、サーバーが終了するまで、CGI プログラムが止まってしまいます。
続きを読む>>
コンピュータ > プログラミング | - | trackbacks (0)