日記

11月 20日 (水)

1. tree

インチキPL/SQLパーサ(笑)文法は解析できません(爆)

プロシージャ、変数を解析できるようになりました。全ての変数、プロシージャを、階層(当然スコープも)を維持し、その上でオーバーロード宣言にも対応。ifブロック内のdeclareブロック内のプロシージャ宣言なんかもOK(そんなあやしいコード書くなよ)。

解析結果を階層構造を保ったまま内部で正規化し、これをHTMLに変換。階層ツリーと、各プロシージャ、変数の詳細をアンカーで行き来できるようにしたら、なんだかそれらしく見えてきました。わりといけるかも?

あとは、コメントの解析ですね。プロシージャ、パッケージの説明の記述方法ですが、これはjavadoc用の文法をそのまま流用しようかと思っています。

2. 素足をさらして〜(プツッ)

AIRサントラCDの3曲目(鳥の詩)、3:32のポイントで、必ず音ぶれのような現象が発生します。ヘッドホンで聞くとよくわかります。CDプレイヤーでもLDプレイヤーでも同様に確認できたので、プレイヤーが原因ではないと思います。CDの表面上、物理的なキズはないみたいですし、もちろん、このディスクはかの忌まわしいCCCD(←頼むから市場から消えてくれ)などでもありません。プレスミス? レコーディングミス? それとも仕様

3. メモ

  • *1: 11/21訂正: 1テラじゃなかったです

11月 21日 (木)

1. query

PL/SQLドキュメント化ツール。

1.1. cursor

カーソル宣言の解析時に、SELECT文もついでにパースしてしまおう、そう思ったのがそもそも間違いでした・・・

もともと、SELECT文を軽く整形するだけの予定だったのですが、サブクエリーやUNION結合、DECODE関数の整形を考えると、どうしてもパースが必要になってきます。サブクエリーは再帰的に整形しないといけませんし。

そもそもSELECT文自体、WHERE, GROUP BY, ORDER BY, HAVING句が省略可能なので、かなりややこしいことになります(PostgreSQLはFROMも省略できる)。まぁ、Oracle8まではSQL92のINNER JOIN, LEFT OUTER JOIN句等がないので、幾分楽なんですが(Oracle9iから対応)。

さらに、一口に整形といっても、SELECT文の整形方法は人によって流儀が大きく異なります。

  • フィールド、テーブル区切りのカンマを 前に置くか、後ろに置くか
  • 論理演算子のAND/ORを 前に置くか、後ろに置くか
  • カラムの桁をどの位置に揃えるか
  • DECODE関数をどう整形するか
  • サブクエリーのネスト方法

・・・などなど。私は、カンマ等の結合子を後ろにもっていく「結合子後置派」(?)なんですが、このへんも意見が分かれるところでして。

まぁ整形機能はなくても困らないし、いざとなれば SELECT文を表示しない という手もありますし。ほどほどにしておきましょうかね。

1.2. trigger

トリガーの宣言に暫定対応しました。Oracleのマニュアル見ないでやったんで、激しく間違ってたりするかも(汗)

1.3. type

ユーザー定義型なんてのがありました・・・すっかり忘れてました(笑)文法はカーソル型に似てるから、なんとかなるかなぁ、と。

11月 22日 (金)

1. format

SELECT文の整形。なんか、ムキになってきました(笑)

改行のポイントが難しいです。in() や exists() は、中にクエリーが入ることがあるので、改行つきネストにした方が見やすいです。decode() や in() は、可変長引数をとるので、ほどよく改行していく必要があります。論理演算子の and, or や、カラム名、テーブル名の区切りのカンマでも改行したほうがよいでしょう。逆に、他の関数の括弧、演算の優先順位を明示する括弧、関数の引数の区切りのカンマなどは、改行すると見にくい、いや、醜いです。

トークン処理をする過程で、出現した括弧がいったいどの括弧なのか、ネストレベルと開始指定子、終端指定子をしっかり管理する必要があります。アルゴリズムを見直したほうがいいかも?

なんだか、本筋からそれている気がしてなりません・・・

11月 23日 (土)

1. 10%

朝日新聞。デフレ対策について、経済学者5名が連名で記事を載せています。

所得税を恒久的に引き下げて、消費税を段階的に10%まで引き上げる。消費税アップおよびインフレ直前の駆け込み需要で、消費が大幅に増える。インフレ率が上昇し、GDPが2〜3%上昇する。

だそうです。ただでさえ物価が高い日本で、インフレにしたいんでしょうか?消費税が上がったら、買い物する気なんてなくなりますよ?所得税減税も、駆け込み需要も、たかが知れてますよ?その後のこと考えてるんでしょうか?消費税を10%にしたら、今度は15%に・・・なんて言い出すでしょう、この人たち。

これ、政府に提案するそうです。政治業者の連中は、消費税を「金の成る木」としか見ていませんから、手放しで喜ぶでしょうね。消費税税収のうち、使途不明金がどれくらいあるか、見てみたいですね。

2. USB

Linuxのカーネルを再コンパイルしました。今まで外していた、USBモジュールに対応させてみました。プリンタを接続して、プリンタサーバにしようということで。

とりあえず、インストールまで。再起動をいつにするかは未定です。

・・・はて、プリンタのドライバは存在するのでしょうか(ォ

3. HTML

HTML簡易リファレンスの自動生成スクリプトをメンテしました。主にコメント入れ(笑)今見てみると、結構酷いソースですね。よく動いてるよなぁ。

生成物は酷くはないので、そろそろ公開しても大丈夫かな?

11月 24日 (日)

1. 物資調達

あきば。メディアとか、消耗品を調達しに行ったつもりが、なぜか余計なものまで。

1.1. 遺産

マックスロードに中古MSXが大量に陳列されていました。SANYOの赤いやつとか、PanasonicのFS-A1とか。TURBO-Rもありました。さらに、入り口付近にはスーパーカセットビジョンまで置いてありました。何かあったんでしょうか?Z80懐古?

店の奥にはPCエンジンやMEGA-CDのソフトが。ずっとPCエンジン版のヴァリスIIを探してるんですけど、なかなか見つかりません。IIIとIVはどこの中古屋にもあるんですけど。あ、別にゲームはどうでもいいんです。全然面白くないんで *1 。サントラとして欲しいのです。クセの強い、古き良きテレネットサウンドを堪能したいだけですので。まぁ、ないものはしょうがないですから、ジャンク扱いされていたヴァリスIIIとIVだけでも保護。2つで500円以上しました(笑)ところで私、PCエンジン持ってないんですけど・・・エミュ?

1.2. 18禁

リバティにて、セガサターンの18禁ゲーム、デス・スロットルを発見しました。かなりイカれたレースゲームです。レースというか、シューティングというか。通行人の一人や二人轢き殺しても、全く問題ない。むしろ、轢き殺して遊ぶゲームです。詳しくはレビュー(その1,その2)参照。

ちょっとレア度高いですが、さすがに買う気にはなれず・・・

1.3. 自主制作アニメ

LAOXでコンピュータ雑誌を物色していたところ、ほしのこえDVD-BOOKを発見しました。確保。個人レベルで、ここまで完成度の高いアニメーションを作れるなんて、すごいことですよ。有名なマッドムービー ''GGG To Heart'' 以来の衝撃(違)

1.4. 伝説の婦警さん

某中古屋。PCエンジン後期のソフト、銀河婦警伝説サファイア買取価格が3万円でした。なんじゃそりゃ〜

1.5. 金欠

あ、やば。使いすぎ。所持金が3桁に(笑)

  • *1: 露出度の高いコスチューム+ミニスカ+剣。典型的なヲタク向けキャラを売りにした、単なるキャラゲー(なんて言ってると、ファンに背後から刺されそう・・・)

11月 25日 (月)

1. HTML Tiny Reference

1.1. ソース

自分で作っておいて何ですが、見れば見るほど汚ねぇソース(笑)アドホック的に拡張していったので、こんなになっちゃったんですが。恥ずかしくて他人には見せられませんね、こりゃ。

1.2. 日本語化

DTDからパクったコメントの部分を、HTMLの仕様書(日本語訳)とつき合わせながら和訳してました。語学力の乏しい私にとっては大変な作業です。はぁ、完成はいつになるやら・・・

11月 26日 (火)

1. ログ採り

本番運用が始まっている、現プロジェクト。稼動直後ということで、毎日ログの採取&監視を行っています。私らが担当している部分は、プロセスが1回走るごとに、1〜12個くらいのログファイルが吐き出されます。一日に5,60回くらい走りますから、毎日400〜600前後のログファイルが作成されるわけです。

で、このログ、40日くらい保存しておくんだそうです。単純計算で、20000前後のファイルが常時放置された状態になります(システムの共通部分のログは更に多いです)。それも1つのディレクトリに。これがちと問題でして・・・

ログファイルを採取するとき、諸々の事情により、ファイルの転送をFTPで行うことになってます。取得するファイル名が時刻やプロセス番号に依存する形になっているため、どうしてもディレクトリリストを見ないといけないのですが、ファイル数が1万以上もあると、ディレクトリリストのデータ転送量もバカにならないのです。今のところ、FTPの NLST コマンドを発行するだけで、1.8MB以上のトラフィックが生じています。うっかりリロードなんてすると、ソートの時間も含めて、20〜30秒かかります。

当然、作業は私一人じゃなく、複数の人間が複数の端末でこんなことやってるわけです。telnetで入ってfindで抽出、必要なファイルを特定してからFTPでゲット、っていうのも考えたんですが、それはそれで面倒くさいなぁ、と。cron回して、週単位でディレクトリに振り分ければくれればいいのに・・・

2. 正規表現

職場。近くの島で、先輩らしき人(女)と、その後輩(新人かな?)らしき人(男)が話してました。

新人男
「正規表現」ってなんですか?
先輩女
正規表現っていうのは〜、スラッシュ・・・

ああ、たしかに「ここからここまで正規表現だよ〜」って示すのに、スラッシュ使うことが多いよね。

先輩女
・・・じゃなかった。バックスラッシュに ''n'' とかつけて、改行とか表すの。
新人男
ふぅ〜ん。
先輩女
改行とかタブってそのまま書けないじゃん? だからバックスラッシュと''t''でタブとか。アレのこと。

・・・えっ? ええっ!? お姉さん、そ、それはただの文字エスケープでは? 周りの人、誰かツッコんであげて下さいよ!

11月 27日 (水)

1. だらだら

今日は仕事がお休みだったりします。だからといって、だらだらとゲームばかりやってていいわけがありません。

2. 月光剣

先日からアーマードコア3を再開してます。とりあえずミッションはクリアしており、アリーナ、Exアリーナも制覇したので、強化人間パーツの開発と、隠しアイテム集めを重点的に。

月光剣ことMOONLIGHT。空飛ぶ巨大機動兵器を、仲間なしで墜とせば手に入ります。こいつ、一人でまともに戦うとかなり強いんですが、ステルス機だとほとんどダメージを食らわずに倒せてしまいます。子機分離後、中量ステルス+右腕2連ロケット+左腕投擲銃で、上空からラッシュを浴びせたら、10秒ほどで片付きました。残りAP7000以上。余裕です。

3. GunViper

フリーの3Dシューティング、GunViperをプレイ。これは結構面白いですね。グリッドシーカー+レイストームっぽい雰囲気です。今のところ3面までしかないのですが、今後の展開に期待してます。

4. だらだら

結局ゲームばっかりやん・・・

11月 29日 (金)

1. Linux

cat network先日コンパイルしたカーネルで再起動したところ、起動中に、なんかエラーが出まくりました。ネットワークカードを認識しなかったり、デーモンがいくつかこけたり・・・あ、あれ?起動するカーネル間違えた(爆)

カーネルが4つもあると、紛らわしくていけませんね(←やめれ)。まぁ、2.2系と2.4系は、1つずつあったほうが何かと便利なわけで(謎)邪魔なのは削りましょうかね。どうせデフォルトのカーネル、上書きしちゃったし。

1.1. iptables

カーネル再構築の目的は、USBとiptables対応です。USBはとりあえず置いといて、iptablesを弄くりました(今まではipchains)。パケットフィルタリングやIPマスカレード、ポートフォワーディングの細かい設定が、これ1つでできてしまいます。

また、2.4系はConnection Tracking(接続追跡)に対応してます。ip_conntrack_ftpなんかは、FTP(TCP:21)セッションが確立すると、自動的にFTP_DATA(TCP:20)セッションを追いかけてくれるという、すばらしいモジュールです。

1.2. PASV

そんなわけで、TLECiptablesの簡単な使い方あたりを参考にしながら試行錯誤し、苦節3ヶ月、FTPサーバにパッシブモード接続ができるようになりました。また、今までipfwadm(ipmasqadmだっけ?)が機能していなかったためにあきらめていたポートフォワーディング機能で、WinMXがムフフな状態に(何)

1.3. port scan

あとはパケットフィルタの設定をして、最終確認を行いました。要はポートスキャンなんですが、Sygate Online Servicesでサーバにスキャンをかけたところ、なぜかwww(TCP:80)しか引っかかりません。うむ?おかしいですね。もうひとつ、引っかかるポートがあるはずなんですけど。某外部サーバからは接続できたので、設定は合ってるはずです。なんか不安ですね・・・