トップ «前の日記(■2005-08-14) 最新 次の日記(■2005-08-25)» 編集

どんぞこ日誌

2003|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|07|08|12|
2007|01|04|08|12|
2008|01|02|03|04|06|07|08|10|11|12|
2009|01|02|04|05|06|07|08|09|11|12|
2010|01|03|04|07|08|10|11|12|
2011|01|02|03|04|05|06|07|08|10|12|
2012|01|02|03|05|06|07|08|09|10|
2013|01|02|07|08|09|
2014|08|09|
2015|08|
2016|06|07|12|
2017|01|03|08|
2018|03|
2022|03|

同人関連(どんぞこ楽屋) | 旧い雑文   


■2005-08-18

* [今月のAcme] Perlを超えてB!

  前回に引き続き、(夏休み無いけど)夏休み特集第二弾。 懲りずに自作モジュール。 Acme::BeyondPerl::ToSQL

 use Acme::BeyondPerl::ToSQ
   ("dbi:SQLite:dbname=acme_db","","");
 
 my $value = 5;
 
 print 2 + $value;
 print 1.2 - 0.2;
 print 9 / 2;

  一見すると何も変わっていませんが、useしたファイル内での数値計算をデータベース側で行っています。デバッグオプションをセットすると

 SELECT 1.2 - 0.2 # 桁省略
 SELECT 9.0 / 2.0
 SELECT 2.0 + 5.0

というSQL文が発行されているのがわかります。これでもはやPerlの力を借りずとも、計算ができる! ……Perlの力を借りてDBとやりとりしているのは気にしない方向で。
  仕組みは単純で、定数オーバーロードを利用して数値をオブジェクトにし、後は演算子オーバーロードでSQLを発行するだけです。デバッグモードにすると実行前に定数が先に処理されてるのが視覚的にわかりますね。
  PostgreSQLやMySQLを使うと、sqrtやlog、atan2などのoverload可能な多くの関数が利用できます。

* [メモ] Acme::Inline::SQLB!

どうせなら Acme::Inline::SQL とかにしてほしかった(本日のコメント欄)

  あー、Inline::SQLって何処かで見たような気がしたのですが、CPANで探しても無いですね。

 $xored = eval_sql(q| SELECT 1 # 2 |);

みたいな感じかしら。 ちなみに普段PostgreSQL使っているので、MySQLを使うときに『PostgreSQL&MySQL逆引き大全』が結構重宝します(Amazonの書評にはバージョンが書かれていないとありますが、最初の方に対応バージョンが載っています)。

* [雑感] スーツ は あついB!

 普段夏はノースリーブで通勤してるのですが、3日連続でスーツ着て仕事。だいぶ勝手が違うためか、いつもより5割ましで疲れた気が。

本日のツッコミ(全1件) [ツッコミを入れる]
_ (■2005-08-18 16:29)

どうせなら Acme::Inline::SQL とかにしてほしかった。<br><br>Dan the Man with Too Many Languages Spread Inline

本日のTrackBacks(全1件) []
_ 404 Blog Not Found:Lingua::JA::Numbers Released! (■2005-08-18 16:33)

タイトルどおり、Ligua::JA::NumbersをReleaseしました。CPANからまだ取れなければ
http://www.dan.co.jp/~dankogai/cpan/Lingua-JA-Numbers-0.02.tar.gz

にて入手可能です。