トップページ | 2006年2月 »

2006年1月24日 (火)

PEAR::DBでOracleをもうちょっと便利に(2)

続いて、DB_DataOcjectがOracleのViewを見つけてくれるようにするためのHackです。

DB_DataObjectには、ジェネレータに渡す設定ファイルにbuild_viewsといって、ViewについてもTableと同じようなクラスを自動生成させるオプションがあるのですが、PostgreSQLなど一部のRDBMSにしか対応しておりません。それをOracleでもできるようにしよう、という修正です。

前回のパッチがあたっていることを前提に、

DB/oci8.php
1111,1112d1100
<             case 'views':
<                 return 'SELECT view_name FROM user_views';

これだけです。

| | コメント (0) | トラックバック (0)

PEAR::DBでOracleをもうちょっと便利に(1)

PEAR::DBやPEAR::DB_DataObjectを使っていると、PEAR::DBがOracleにおざなりな対応しかしていないために、いろいろと不便な思いをすることがあり、自分で解析してHackしてしまうことが、ままあります。

今回のHackは、OracleのPrimary Key制約をDB_DataObjectが自動的に見つけられるようにするためのものです。

DB/oci8.php
1005,1017c1005,1008
<             $q_fields= 'SELECT t.column_name, t.data_type, t.data_length, '
<                        . '     t.nullable, c.position '
<                        . 'FROM user_tab_columns t,'
<                        . '    (SELECT ucc.table_name, ucc.column_name, ucc.position'
<                        . '     FROM   user_constraints uc, user_cons_columns ucc'
<                        . '     WHERE  uc.owner = ucc.owner AND'
<                        . '            uc.constraint_name = ucc.constraint_name AND'
<                        . '            uc.constraint_type = 'P' AND '
<                        . '            uc.table_name = ucc.table_name) c '
<                        . "WHERE t.table_name = '$result' AND "
<                        . '      t.table_name = c.table_name(+) AND'
<                        . '      t.column_name = c.column_name(+) '
<                        . 'ORDER BY t.column_id';
---
>             $q_fields = 'SELECT column_name, data_type, data_length, '
>                         . 'nullable '
>                         . 'FROM user_tab_columns '
>                         . "WHERE table_name='$result' ORDER BY column_id";
1035,1036c1026
<                     'flags' => ((@OCIResult($stmt, 4) == 'N') ? 'not_null' : '') .
<                                ((@OCIResult($stmt, 5) > 0) ? ' primary' : ''),
---
>                     'flags' => (@OCIResult($stmt, 4) == 'N') ? 'not_null' : '',

これで、少なくともPrimary Key制約は自動的に取ってこれるようになります。また必要になったらUnique Keyなども取れるようにするかもしれませんが、今回はこれまで。

| | コメント (0) | トラックバック (0)

2006年1月22日 (日)

AjaxなToDoをハックする

レッドクルーズの船木氏が公開されている、Ajaxを使ったToDoリストを使ってみた。
AjaxでTODO管理:とーどー

最初、mbstring.internal_encoding = EUC-JPの環境に入れてしまったため、いくら入れても文字化ける状態になってしまい、10分ほど費やす。

そのあとは特に支障なく動いたのだが、項目を編集するときのテキストボックスがどうにも小さく感じたので、現在の項目文字数にあわせてサイズを調節することにした。
以下、修正箇所。

170行目の最後のほうに
onBlur=\"back_updatetodoform('" + id + "', '" + upid + "', '" + oldstr + "')\">";
という箇所を
onBlur=\"back_updatetodoform('" + id + "', '" + upid + "', '" + oldstr + "')\"
size='" + oldstr.length*2 + "'>";
と変更。(やむを得ず改行しただけで、本当は一行のまま)

これでだいぶいい感じになった。

| | コメント (0) | トラックバック (0)

2006年1月14日 (土)

ログアウトしてもプロセスを生かしておく裏技

いや、裏でもなんでもないんだけどね。

[を] nohup - ログアウトしても裏でプロセス継続

ログアウトしても、バックグラウンドで、裏で、プロセスが。
いつも忘れてしまうのでここにメモ。

へー、そんなコマンドあったんだー。便利ー。

| | コメント (0) | トラックバック (0)

2006年1月13日 (金)

かしまし 第1話

原作を全く知らずに、とりあえず見てみた。

とりあえず、絵は割りと好みのタイプかも。
「オープニングにいた女の子がいねーなぁ……」と思って見ていたが、終わりまで見て納得。だからアイキャッチに「ガール・ミーツ・ガール」って書いてあったのね。

新番組の中では、割と安心して見ていられると思う。
とりあえず継続決定。

| | コメント (0) | トラックバック (0)

2006年1月12日 (木)

秀丸メール持出しキット

どこでもメールが読めるように、モバイルHDDにメールデータを保存しているのだが、場所が変わるごとに秀丸メールをインストールしなければならないのが、イマイチ面倒くさい……。

だけど、秀丸メールはレジストリを使うからモバイルHDDに入れるわけにもいかないしなぁ……、などと考えていたら、本当にモバイルHDDに入れられるようになってしまいました。

Google Desktop対応のときもそうだけど、秀まるおさん、すごいよ!

秀丸メール持出しキット 

| | コメント (0) | トラックバック (0)

2006年1月 7日 (土)

RapidSVN 0.9.0 日本語化

RapidSVN 0.9.0(まだドラフトだけど) を周りの人に使わせるために、日本語化してみました。
Windowsなら、rapidsvn.exeのあるところにlocaleディレクトリがあるので、その中にjaディレクトリを作成して、rapidsvn.moを置くだけです。

以前のバージョンでどうとか、訳がどうとか確認してませんので、
使ってみてコメントください。

「rapidsvn.mo」をダウンロード

元になるファイルも置くことにしました。

「rapidsvn.po」をダウンロード

0.9.4用も作成しました。よろしければそちらをどうぞ。

| | コメント (1) | トラックバック (5)

トップページ | 2006年2月 »