(04/10/01〜)

04/10/01〜04/10/26

・ログを分離しました。

・...つーか。
 一ヶ月も更新なし(正確にはそうではない)だったので、何から書こうか迷ってしまう。頭の中の時間軸はデタラメだし...ま、いつものようにやります か。


・CSV
 CSVというと僕の中では「カンマ区切りのテキスト、文字列があるカラムはすべて ダブルクォーテーションで括る。カラムの数は不変で、行頭にカラムヘッダが存在する事もある。」...なのだが、どうも世間ではそうではな いらしい。

・タブ/空白区切りのCSV
 そもそもタブや空白を表現したい場合にはどうするのだろう?しかもテキストエディタで見た時には見づらくて仕方ないと思うのだが。それ以前の問題でタブ /空白区切りのテキストは「CSVではない」のだが。「CSV」って 何の略かって言えば

「Comma Separated Values(カンマで区切られた値)」

 なのだから。タブ区切りや空白区切りの場合には、拡張子を「*.TSV」や「*.SSV」にしてくれ。

・(ダブル)クォーテーションが省略されたCSV
 カンマを表現したい場合はどうするのだろう?「そんな時だけ(ダブル)クォーテーションで括る」らしい。(ダブル)クォーテーション自身を表現したい場 合もそうだとか。

・区切り文字が省略されたCSV
 カラム数が10で、7つめのカラム以降にデータが存在しない場合は省略できるらしい。ふーん。じゃぁ「カラムヘッダがなく、カラム数が一定でない CSV」のカラム数を知るためには「最後のデータまで読み込まないと分らない」っ て事だよね?

・カラムがCRやLFで改行されているCSV
 ...。

・EXCELの罪
 すべての元凶は「Microsoft EXCEL」である。こんな変なCSVをボコボコ作られた日にはプログラムが複雑になってしまう。クォーテーションや区切り文字を省略するのは「ファイル サイズの節約のため」なのだろうが、その利点よりも害の方が多い。テキストエディタで読み込んだ時の視認性が悪いし、新しく値を入力しようとした時にどこ に挿入すればいいのか分り難い。入力した値にカンマや(ダブル)クォーテーションが存在してエラーになった時、どこが区切りなのか判断できない。アプリ ケーションの読み込み時間も長くなる。ハッキリ言って良い事は一つもない。

・僕の言うCSV
 僕の言うCSVで入力できない文字列は「","」だけである。これ以外の値はすべて処理できる。この値だけエスケープしてやればいいので効率はいい。タ ブ/空白区切りでも同様にエスケープしてやればいいのだが、「","」って文字列は他のに比べると極端に出現率が低いため、高速に処理する事ができる。

 DOSやオフコンを使っているトコにEXCELが吐いたCSVを持っていくといい...。張り倒されるのが関の山だと思うが。


・PDF
 世の中にはプリンタの代わりにPDFへ出力してくれるソフトがある。便利といえば便利だ。しかし、印刷物を見ないでPDFだけでケチをつけられると流石 に頭にくる。「Distiller」 「クセロ PDF」「PrimoPDF」で出力結果が異なる事がある。つ まりこれらはコンバータであって

「印 刷物を再現したものではない」

 ...って事だ。そもそも「PDF自体好きではない」ってのもあるのだが。参考までに以下にリンクを張っておく。

 PDF ショックの防止にはゲートウェイ・ページを(2003年7月28日)
 PDF:人間が消費する には不向(2003年7月14日)
 PDF:画面上での閲覧 には不向き (2001年6月10日)

・EMF(Enhanced Metafile)
 Delphiでのヨタ話をすると「ス プールファイル変換ツール」で吐かれたEMFファイルをTImageにLoadFromFileする場合や、Printer.Canvasへ Draw/StretchDrawする時には正常に描画されるのだが、途中で「TMetafileCanvas」を経由すると文字がことごとく消える。こ れはプリンタスプールのEMFが保持しているGDIリストに「ExtTextOutW」しか存在しないためだ。つまり「TMetafileCanvas」 はワイド文字列系のGDI操作ができないという事だ。

 EnumEnhMetaFileのコールバック関数で「EMR_EXTTEXTOUTW」をトラップし「EMR_EXTTEXTOUTA」へ変換して PlayEnhMetaFileRecordしてやれば解決するようだが、何か納得いかないので放置中である。

・印刷ユニット
 Delphiの印刷用ユニットを10年振りに刷新した。「どんなプリンタでも同じ結果が得られる」事を目的につくられたこのユニットの原型は Delphi1で作られたものだった。作り直す動機となったのは上記の印刷系のトラブルによるものだ。結果オーライ。


  彼からのMail...一体何通溜まってるんだ?

・題名 [なし]
昔さ、親によく「バカと付き合うな」って言われんかった?
バカと付き合っても、バカが伝染るだけでいい事ないからって。
だから同じクラスで一番頭いい奴選んで友達になったんだけどさ、親の言う通り、そいつ徐々にバカになってった。
親っていい事言うよな。

 「そいつ」が誰を指すのかが興味深い...つーか、自虐ギャグ(シャレではない)だな。


・題名 [なし]
オッス!オラ、入院。
なんか細菌感染性の咽頭喉炎で、処方された薬じゃ熱下がらなかったからお前入院しとけって言われた。ちんぽ。
 
 「オッス、オラ〜」ってのは「銭金」でよく聞く言葉だ。


・題名 [なし]
つうか病院食、本気で不味い。
チンパンジーが時給バナナ1本で作ってもここまでひどくない。料理ナメ過ぎ。
なんか臭い飯が人肌温度で出てくるのが許せない。新鮮なギンブナを、臭みを取らずにサッと煮てみましたって感じの得体の知れない煮魚も許せない。
素材への侮辱っていうより患者をナメてる。自炊するんで食事いりませんって言ってやろうか。

 正直、塩分の少ないものを大量に摂取するより、塩分の多いものを少なく摂取してビタミン剤なんかの量を増やす方が患者は幸せなんじゃないかな、と思う。 薬も数が出るので病院も儲けてウハウハだ。

・題名 [なし]
あーもう、ヒマでヒマでしょうがねえ。MSXとドラゴンスレイヤーしかないとしても嬉々としてやり込みかねない。
十字架で囲った上に壁で囲った周囲を更に十字架にて三重に囲み、俺の完璧ゴッド要塞ランドと命名して悦に入りかねない。
でも指輪を幽霊にスられて俺のジーザス完璧ワールドに吝嗇を付けられた様な気になり、ムキになって追い掛け、帰宅途中に頓死。

 初代ドラゴンスレーヤーを知ってる奴の10人が10人「タモリ出てたよね、ね!!」 と鼻息を荒げて力説するのが観ていて面白いトコだ。初代ドラゴンスレーヤーを知らない今の時代の子供にゲームをうまく説明する文句を考えてみた。

「動く麻雀パイのRPG」

 ...言い得て妙。

・題名 [なし]
デトマソ・パンチラって言葉が天啓の如く閃いたので、やっべ俺選ばれし人間かもって、凡愚どもに話したが最後、如才なき俺に対する奴等のジェラシーの炎によって焼き尽くされちゃうカモ!?って焦ったんだけど、俺の友達に勇気を出して打ち明けたら、そのギャグは俺が3年前に通過した場所だと一笑に付された。
彼に対するジェラシック・ファイアーが心中燃え盛るのを抑える事が出来ない。

 「デトマソ・パンテーラ」 知ってる時点で年齢バレバレだな。「スーパーカー」->「キン肉マン」と消しゴムが推移していったクチだろ?そういや昔の20円ガチャガチャの消し ゴムってさ、手足が「有り得ない方向に曲がってたり」したよな。


TEAD ver2.05
 リリース。修正内容は以下の通り。

・再読み込み確認で更新されたファイルが0バイトだった場合、以前の内 容が残ったままになるバグを修正。

・ファイルのドラッグ&ドロップ時、タブのキャプションが特定の条件下でおかしくなるバグを修正。

・ファイルのドラッグ&ドロップ時、既に開いているファイルのタイムスタンプチェックが特定の条件下で行われないバグを修正。

・ワードラップかつ括弧(ブラケット)が物理改行で複数行にまたがる場合、HTMLソース出力で括弧(ブラケット)の描画色がおかしくなる問題を修正。

・ワードラップかつ括弧(ブラケット)が物理改行で複数行にまたがる場合、リッチテキスト出力で括弧(ブラケット)の描画色がおかしくなる問題を修正。

・TEADマクロ-日本語処理ルーチンにHanKana2ZenKanaを追加。

・TEADマクロ-日本語処理ルーチンにZenKana2HanKanaを追加。

・細かな修正。

 Kojiさん、やしおさん、K村くん、バグ情報ありがとうございました。

IBConsole(Build 1.0.0.337)日本語版+α rel.1
 リリース。ちなみに以前公開してたの はBuild336ベース。内容は以下の通り。

・WindowsXPのビジュアルスタイルに対応

・Delphi7.1でコンパイル

・Firebird1.0xのローカルサーバに対応

・Firebird1.5xのローカルサーバに対応

・いくつかのキーボードショートカットを変更

・日本語化されている(当然)

 まだ問題があるかとは思いますが、まぁまぁ普通に使えます。IBConsole のソースをDelphi7でコンパイルするには「SynEdit」 の「SynEdit.inc」を適宜編集 し、「frmuCommDiag.pas」のusesに「IdException」を追 加する必要があります。後は好きにいじるだけ。

 以前も日本語化して思ったのですが、このIBConsole のソースは汚いったらありゃしません(正直に言ってみました)。比較条件に文字列をバシバシ使っているので、むやみに日本語化すると動作が変にな る事が多いのです。その文字列もシステムDBに格納されているものを直接使っているのかそれともマジックナンバーなのか、判断が困難を極めるのでした。

 IBConsole互換の「IBOCConsole」 を日本語化しようと思ったのですが、言語ファイルに対応しており日本語の表示ができます。では何故「IBOCConsole」を使わないのかと言えば 「所々、文字が化けている」「ショートカットの命名規則が僕のポリシーに一致しない」、「Linuxでは動作しない(Kylix版のソースがない)」、こ の三点です。そのうち「IBOCConsole」 の不具合も直るでしょう から「IBOCConsole」を直接日本語 化する事はしません(...もう一年程更新がなく、とうとう待ちきれなくなったというのが本当のトコロなのですが)。

 IBConsole (Build337)のソースはDelphi/Kylix両対応となっていますので、Windows版の修正が一通り終わったらLinux版(の 日本語版)を作ろうと思っています。


04/10/27

IBConsole(Build 1.0.0.337)日本語版+α rel.2
 リリース。

・日本語化によるエンバグを修正。

・日本語化しきれてない所を日本語化。

・細かい修正多数。

 気になりだすと止まらない...。

・イラクで...
 んー...どっちかと言うと気になるのは「こちら の発言」。「原因を作っているのは自衛隊」だの「自衛隊の派遣継続を再検討してもいいのではないか」だの「自衛隊は撤退しないと話したことは、人 質は殺されてもよいと受け止められても仕方がない発言」だの...やっぱりバカは直っていなかったのか。

 誤解を恐れずに言うとイスラム教の「過激派と呼ばれるヒトたちはイラク(バグダッド)が空爆されていなくても、自衛隊が行っていなくても「やる時はやる」ヒトたちなんだよ。もっと言うと「ちょっと気に食わない事がある と武装蜂起するヒトたち」でもある。最近ではタイでそ んな事件があったよね。...自衛隊が行った事とはなんの因果関係もなく、デッチ上げの大義名分に他ならない。自衛隊が行ってなかったら「アメリカの同盟国の奴だから...」とかいう言葉に置き換えられていただけだろ う。現実に人質は国を問わず無差別に選ばれている...先の戦争に加わらなかった国の人間でさえ。

 それが民族性によるものなのか、宗教性によるものなのかは知らないが、「何故かイ スラム教信者の多い国では紛争が絶えない」んだよねぇ...過去の歴史を紐解いてみると。だからといって宗教弾圧しろって言ってる訳じゃな いんだが、僕が宗教嫌いなのは「どこの国にもいる聖書を曲解するバカ」 のせいかも知れない。

「お 前らの神とやらは人を殺せと説いたのか?」

・新潟中越地震
 毎日地震のニュースはチェックしているのだが、今は何を言っても薄っぺらい言葉にしかならない気がするので、この話題にはあえて触れない事にする。


04/10/28

IBConsole(Build 1.0.0.337)日本語版+α rel.3
 リリース。

・日本語化しきれてない所を日本語化。

・各ダイアログのコンポーネント配置をすべて見直し。

・細かい修正多数。

 ダイアログの設計が大雑把なんだよなぁ...。無駄にスペースが広いし、各ダイアログに配置の統一性がないし。

TEAD ver2.05 #2
 リリース。修正内容は...「半透明のロジックが変なトコに入ってましたゴメンナ サイm(_ _)m」ってトコです。

ジオログ
 今日から使えるようになったらしい。とりあえ ず作ってみたが何に使うのやら...。


04/10/29

ジオログ
 投稿は一日5件までなのね。「DEKOのジオ ログ...らしい。」は使ったソフトに関する「備忘録」にします...いや待て、ブログだから「備忘ログ」だな。

#それが言いたかっただけに違いない。

・車
 車を修理に出しているのが、もうすぐ上がって来るハズだ。先の台風で車にキズが付いたようでして...。以下は独り言。

・台風で 保 険を使った場合、保険料は上がらない。
・「台風で付いたキズ」の定義って?
・何か気付いたヒト...「悪用すんなよ」。

 整備屋さんで調べてもらうと気付かなかったトコにもキズがあったりして、「プロは違うなぁ」と感心する事しきり。


04/10/30

IBConsole(Build 1.0.0.337)日本語版+α rel.4
 リリース。

・日本語化しきれてない所を日本語化。

・細かい修正。

 まだありますな...。

IBConsole(Build 1.0.0.337)日本語版+α rel.5
 リリース。

・日本語化しきれてない所を日本語化。

・SQLの実行時に「タイムスタンプが不正」エラーが出るのを修正。

・細かい修正。

 Delphi6から「TimeStampToDateTime」関数の仕様が変更になっていたのでした(以前公開してたの はDelphi5でコンパイルしてました)。

var
TimeStamp:TTimeStamp; // ADD

// TmpTime := TimeStampToDateTime(MSecsToTimeStamp(EndSecs - StartSecs)); // DEL
TimeStamp := MSecsToTimeStamp(EndSecs - StartSecs); // MOD
TimeStamp.Date := 1; // MOD
TmpTime := TimeStampToDateTime(TimeStamp); // MOD

 こんな感じです。要はTTimeStamp構造体のメンバ「Date」には「0」が許されなくなっているのですね。

1チップMSX
 面白そうではある。...しかし、記事にある「“1チップMSX2”にアップグレードすることも可能だという。」って事をよーく考えてみると、率直な疑 問として浮かんでくるのは「FDD」だ。まさか、実機さながらに「MSXカートリッ ジスロット」に挿す事になるのではなかろうな?


04/10/31

IBConsole(Build 1.0.0.337)日本語版+α rel.6
 リリース。

・日本語化しきれてない所を日本語化。

・Select文では「統計」表示される時間の最小解像度が秒だったのをミリ秒に変更。

・バージョン情報ダイアログに表示される情報を修正。

・細かい修正。

 「秒->ミリ秒」の件ですが、先日のバグ(?)のテストをしていると「Select文(Inser文等は別ロジック)」では実行時間等が「00: 00:00.0000」で表示されるので不思議に思ってソースを見てみると、「Select文」のトコにも時間計測ロジックがあり、そちらでは秒でしか実 行時間等を取得できないようになっていました。Borland謹製のIBCConsoleでは正しく表示されていましたから、あちらは独自に修正されたの でしょうね。

・本当のバージョンは?
 「Sourceforge にあるソース」をビルドするとバージョンは「1.0.0.337」になります。ところが、このソースは「1.0.1.337」だと記述してあるサイトもあるのです。一体どちらが本当な のでしょうか?

・FBConsole
 IBExpress(IBX)を使っている手前、そのうちFirebirdに対応できなくなるでしょう。Firebird1.5になって 「gds32.dll」が「fbcliend.dll」へ変更になりました。まだダミーDLLは存在するのでなんとかInterBaseとの互換性が取れ ていますが、いつかは「FBConsole」にしなくてはいけなくなるのでしょうね。

・蛇足
 以前「FireBirdのローカルサーバに対応」と書いた修正は「ibguard.exe->fbguard.exe」、 「ibserver.exe->fbserver.exe」等のファイル名
、「ibserver.exe」では「IB_Server/InterBase Server」だったクラス名とウィンドウ名が「fbserver.exe」では「FB_Server/Firebird Server」へ変更されているのを考慮したものです。なお「バ イナリエディタで云々...」では動作しない事があります。これはFirebirdでレジストリの場所が変更になっているためです。

サー バ名
レ ジストリキー
名 前
値 の指す場所
InterBase 6.x
HKEY_LOCAL_MACHINE\Software\Borland\InterBase\CurrentVersion ServerDirectory
InterBase のbinフォルダ
Firebird 1.0x
HKEY_LOCAL_MACHINE\Software\FirebirdSQL\Firebird\CurrentVersion ServerDirectory Firebird のbinフォルダ
Firebird 1.5x HKEY_LOCAL_MACHINE\Software\Firebird Project\Firebird Server\Instances DefaultInstance
Firebird の インストールフォルダ

 元のソースでは「レジストリの値が指す場所+ファイル名」でサーバ やガーディアンを起動しています。しかも単に文字列をくっつけてるだけですから、パス名の最後に「\」がないと正しく動作しません(^^; なお、独自ビルドしたものではこの問題は発生しません。

 そして、このレジストリキーですが、「そのサーバをインストールした時にセットさ れる」もので「IBConsoleは新たにそのキーを作ることはあり ません」。

  ...つまり、「InterBaseがインストールされており」、 「同じ場所にFireBirdをインストールした」場合においての み、先の「バ イナリエディタで云々...」というテクニックが使える事になります。さらに言えば「1.0.0.337」のソースでは自身のファイル名を何かに 使っている事はありません。「ParamStr(0)が全く使われていない」 という事です。ですので実行ファイルのリネームには何の意味もありません(気分の問題は別ですが、他のリソースで「InterBase」と表示されますか ら...どうでしょうね?)。


 BACK   古いのを読む     新しいのを読む