モーフィングツールを改良しました。GUIで指定した座標をTJSの配列宣言スクリプトにして出力したり、まあ、いろいろと。おまけツールとして附属させようかな。
TJS2の文字列って、tr関数がないよね。ということで作ってみました。UNIX系のtrコマンドや、Perlのtr///などと比べると、とてつもなく貧弱ですが。とりあえず、範囲指定と、ハイフンに対するエスケープが出来るだけでもかなり便利になるので、それだけは実装。あとはオプションとして、Perlの 'cds' 修飾子に相当する機能を追加。
ところで範囲指定ですが、どこまで許容するかという問題があります。Windows-TJS2は内部UCS2ですが、Linux-TJS2やRisseではUCS4になる、つまりBMPだけでなくSMPやSIPなども入ってくるわけです。というか、BMPだけでも結構大変かも。当面はアラビア数字、英アルファベット、ギリシャ、キリル、仮名など、日本で使いそうなものだけにしておきましょう。
うっかり農耕士コンバインなんぞを見てしまったがために、ダンバインとぶが無性に聴きたくなって、学生の時分に集めたアニソン集CD数十枚の中から抜き出して聴き始めたらほかの歌にも手を出してしまい、止められなくなっていろいろ聴きまくってしまった。久しぶりに聴いたよアニソン。懐かしいな。
tr関数。直前の文字を指定回数だけ繰り返す表記を追加しました。c*5
はccccc
と同義です。
文法。Perlのtr///と比べると、文法が若干厳しくなっています。例えば、セットが範囲指定演算子'-'や繰り返し演算子'*'で終わっている場合、Perlではそれぞれ単一の文字と看做されます。自家版ではエラーです。
TJSエンジンに組み込み(昨日のはスタンドアローン版)。とりあえず動いたみたい。tTJSVariant.GetString()が、空文字列の場合にNULLを返すことに気づかずに30分ほど悩んだ。
ソフトバンクの広告、表記を改善すべきだ。'\0'がヌル文字に見えて困る。
tr関数のエラー処理を強化したり、ドキュメントを書いたり。これは一旦締めて、モーフィング系をやることにします。
チャンポンでサバイバル。暴走彩とエヴァで4-20まで行きましたが、爪子に引掻かれて死亡。爪強すぎ。一掻きで体力半分減るってどういうこと?
また日光かよ!
というわけで、巫女紅葉を見に日光に行ってきました。今年三回目です。面子は例によって旅人さんとHiroshiさん。多謝氏は事情により不参加となってしまいました。
午前一時頃に旅人氏宅に集合、ファミレスで朝食(?)を摂ってから日光市へ。
夜明けと共に明智平に到着。紅葉というより、すでに半分くらい枯れていました。
薄明から日の出後まで、景色を撮りまくっていました。薄暗い所ではスローシャッターにすると綺麗に撮れるのですが、一脚を持ってきていなかったので、スローだとブレまくりです。しかもピント合わせが難しいし。おかげで、撮った数の割にはまともに見られるものがほとんどないという悲惨な状態に。がっくし。
日の出を拝んで丸沼へ。
寒い。上着を着ても寒い。気温は間違いなく、四捨五入すると零度でしょう。そんな中でも、沼には船を浮かべて釣りをする人がちらほら。長居すると凍死しそうだったので、適当に撮影して撤退しました。
三本松で休憩した後、本日の裏イベント、巫女参りです。巫女は一人じゃない!でも二人しか居ませんでした。覡は一人だったかな。まあ、うじゃうじゃ居るのもアレですが。
境内には七福神や稲荷やその他諸々が一緒くたに祀られていました。七福神像や神木(松)の傍らには説明文があるのですが、その文面がなかなか怪しげで、週刊誌の裏表紙にありそうな「ナントカパワーで恋人が出来ました!宝くじに当たりました!」系のノリ。思わず突っ込んでしまいます。いっそ、本社のケロちゃんに対抗して、サトちゃんとかペコちゃんを祀ればいいのに、なんて密かに思ったり思わなかったり。
撮影もそこそこに、「山金造波文蛭巻大太刀」(通称 祢々切丸)を見に宝物館へ。ここの展示品も結構つっこみどころがありました。館内は撮影禁止だったので写真はありません。
旅人氏の実家で大量の蕎麦を頂きました。ご馳走さまでした。こんなに蕎麦を食べたのは、昔修学旅行で行った盛岡の椀子蕎麦以来ですね。
注文していた品が届きました。IBMのThinkPad X22(中古)です。ノートPCを購入したのは初めてですね。
Windowsアップデートや、必要なソフトのインストールなどを済ませて、あとは掃除。中古ということでかなり汚れていました。キートップには手垢が溜ってるし。洗剤を使うと後で洗剤自体を拭き取らなければいけないので、換わりにアルコールを使いました。これで見た目も手触りもOK。
仕事帰りにアキバ。ノートPC用の液晶ディスプレイフィルタや、持ち運び用のマウスなどを調達しました。
帰宅して早速ディスプレイフィルタを取り付けました。気泡が入らないように取り付けるのが難しい…ちょっと失敗したorz。
吉里吉里プラグイン。モーフィングのアレは設計を考え直した方が良さそうな気がしてきました。Triangulator(三角形分割担当者)クラスを独立させて、いろいろな分割方法に対応させやすくするとか、いろいろ構想中。
42枚組。すげー。
TVのスペシャル放映分は入っているのかな。
CもPerlもTJSも、大抵のプログラミング言語では時間計算が非常にやりづらい。それなりのライブラリを別途用意するなり自分で作るなりしないと大変。
吉里吉里、というよりTJS。Dateクラスを強化した。プラグインだけど。ユリウス日の算出、旧暦計算(日本限定)、時間の加算などなど。旧暦計算は旧暦計算スクリプト Version 1.5を改造した。日付データを作成した時にはPerlで実装したが、これをC++で実装し直したところ、体感で数十倍の速度になった。10000日分の計算が僅か数秒で終わる。素敵。
Dateクラス強化計画。プラグインでこんな機能を実装した。
日時加減算では、存在しない日付の扱いをどうするかが問題になる。とは言っても、決めの問題なので、勝手に仕様を決めた。OracleのADD_MONTHS関数は、月末日にNヶ月加算すると加算後の月末日になる(そういう仕様)が、この仕様だと「空白の日付帯」が発生することがあり、何だか不便なので不採用。純粋に月を加減して、はみ出したら切り捨てるという単純な仕様にした。OracleのADD_MONTHSのように月末日To月末日にしたいときには、別途用意した月末日取得関数を利用すれば良いということで。
九月の頭にAmazonで注文した某マイナーゲームのサントラCDが、入手困難で発送が延びに延びて、今日になって入手不能でしたとのメールが来た。古いCDだし、新品が今頃手に入ることはあまり期待していなかったが、もうちょっと早くわからないものかな。
はじめての2033年問題。大分先の話だけどね。
TJSエンジンのtjsDate.cpp/hをごっそり書き換えるのもアレなので、プラグインで別クラスにすることにした。名前はTimestamp。TJSのDateがJavaScriptに倣って関数ベースのインターフェースであるのに対し、Timestampはプロパティベース。ただし日時演算や旧暦計算など、一部の特殊なものは関数ベース。
タイムゾーン周りの処理にPHP5のコードを組み込んだら、ファイルサイズが盛大に膨れあがった。日本国内で使う分にはタイムゾーンなんてJSTとUTCだけで十分な気もするが、一応世界全国津々浦々、余すところなく対応した。つもり。
未だに通常1〜2週間以内に発送します
のままだし。
地元のスーパーで、和風散弾銃がどうのという放送が流れていた。このスーパーは物騒なもの売るんだな、というか和風ショットガンって何だ?と疑問符を浮かべながら良く聴いてみると、和風三段重、おせち料理の宣伝だった。紛らわしい。
以前作ったDeleGate Message Filter、今のところ小気味良く動いてくれていて、おかげでかなり快適なネット環境になったわけだが、このフィルタ、設定変更に少々難あり。単にtouchとrmで特定のファイルを作ったり消したりするだけで、デバッグモードのON/OFFやフィルタそのものの無効化などを切り替えられるのだが、フィルタの動作検証時はこれが意外と面倒。動作確認はブラウザで、フィルタモジュールの更新はFFFTPで *1 、フィルタ設定変更はTeraTermで、と作業ウィンドウ何度も切り替えねばならない。もうちょっと楽をしたいよね、ということで、ブラウザから設定を変更するためのインターフェースを作成した。実装はPerl/CGI、ベースはApache2。Apache2自体はSVN用のものが慎ましく稼働中だったのでそれを流用、むしろDeleGateとApache2は別ユーザなのでファイルモード云々(権限ね)の方が問題だったわけだが、これはUPG(User Private Groups)を活用して華麗に回避。これでGUIベースでも設定変更できるようになった。もちろん以前のtouch,rmでもOK。
仕事帰りに、コンビニでパンを買うついでにスカイラインGT-Rを買ってきた。
…チョロQだけど。
しかしただのチョロQではなくて、なんと赤外線でリモートコントロールでき、しかも曲がるだけでなくバックまでできるという、ゼンマイ式時代の人にはそれなりに衝撃的なチョロQ。この性能で1200円なのだから、随分安い物だ。子供のお小遣いから見ればちょっと高いけどね。
先月のDeleGateと不適切なContent-Typeと不要なContent-Encoding問題、何とか解決した。サーバからのレスポンスをCFI(FFROMSV)でフィルタリングして、Content-TypeとContent-Encodingフィールドを書き換えてやればOK。DeleGateの起動オプションFFROMSV='/hoge/FFROMSV/filter.cfi'
でフィルタCFIファイルを指定する。その際、HTTPCONFでgen-encodingやacc-encodingなど、内容エンコード関係を弄らない方が吉。フィルタの内容は下記の通り。
#!cfi Content-Type: application/x-tar Content-Encoding: gzip Output/Content-Type: application/x-gzip Remove/Content-Encoding: gzip --
amazon。11/26発送予定の商品を新規注文し、既に注文済みの11/28発送予定の商品といっしょに配送して貰うように注文をまとめたら、まとめた後の発送予定日が12/29になった。到着予定は来年だって。どういう理屈でそうなるんだよ。部分的に注文を取り消しても元に戻らなかったので、仕方なく一旦全部キャンセルし、注文し直した(一部変更したが)ら11/29になった。amazonよくわからん。
何となく最初からプレイし直してみた。INFERNO「近衛兵団」でビルに潜って稼いでいたら、マスターレイピアが手に入った。マップ達成率はわずか15%。このステージに着くまでに寄り道しなければ、もっと低い達成率で入手できると思う。
昨日の続き。INFERNO「近衛兵団」で稼いでいたら、デモニックランス、サンダーボウ30、サイブレードα、プロミネンス2など最強ランクの武器が続々登場。マスターレイピアを使うと稼ぐのも楽。
注文していた理科年表と天文年鑑が届いた。理科年表は第八十冊記念ということで机上版。でかいし重い。
INFERNO「赤波」一回目でリバイアサンが出た。これで運を半分くらい使ってしまったような気がする。