ちょっと改造。ヘッドラインセンサを強化してみました。かなり変わった文法になってしまいました。改悪ですな。仕様を書いておかないと、自分でもわからなくなりそうです。
%site { name スラッシュドット ジャパン url http://slashdot.jp/ banner http://slashdot.jp/images/banner/slashdot-sberrym2.png desc アレゲな人のためのアレゲなニュース。 rss http://slashdot.jp/slashdot.rdf # ヘッドラインセンサ headline-sense rss hl1 item[1], title[1].<, dc:date[1].<$": "~s/T.*// &1,0 hl2 item[2], title[1].<, dc:date[1].<$": "~s/T.*// &1,0 hl3 item[3], title[1].<, dc:date[1].<$": "~s/T.*// &1,0 }
…何じゃコリャ、て感じ。サイトの登録には最低限、name とurl さえあればよいのですが、ヘッドラインを取得するとなると、どうしても複雑になってしまいます。
Patraのヘッドラインセンサは、タグとか特定の文字列を目印に、突き進んでいくだけです。文法解析など一切やっていません。やるだけ無駄です。HTMLの文法なんて、まじめに解析する気にはなれません…というより、そもそも「正しい」HTML/XMLを取得できるなど、ハナから期待していません。Web上で取得できるリソースの多くは「不思議マークアップ」なHTML/XMLです。だから解析する必要はないのです。いや、きちんと解析してはいけないのです。悲しいけど、これが現実。
登録サイトの数、数えてみたら300近くありました。さすがにアレなので、いくつかに分割しました。
げげ。ネタじゃなかったのか…
近所の料理屋で、初めて「トリビアの泉」を見ました。
ほんと、くだらない番組ですね。掛け算の答えを見ただけで、「へぇ〜」。「数学って、美しいですね。」ってそりゃおめぇ、小学校の算数だよ。
エルフェンリート(5)が見当たりませんでした。発売されてるはずなんですが。
設定ファイルを分割し、cronで仕掛けておきました。初めのうちは少々トラブるかもしれませんが、ご愛嬌ということで(ォ
サターン版シルミラ、ショットを撃たずにクリアできるか考えてみました。攻撃手段は伏せダッシュとリフレクトのみです。攻略本のマップを見ながらイメージ。
まず、クロッドを倒せないので、メギドコース確定。次、セーフル・ハ・ゾーハルもセーラも倒すのは無理っぽいので、クリア不能。
…終わっちゃいました。あかん。
一応、デバッグモード&VERY EASYでセーフル・ハ・ゾーハルとセーラに挑むも、まったく歯が立たず… 双方とも地上に降りてこないので、打つ手なしかと。
コンビニへ行くと、必ずおいてある食玩。お菓子のおまけと言うよりは、おもちゃのおまけにお菓子が付属している感じで、完全に主従逆転。法律上の問題でこういう売り方をしているらしい、と聞いたことがありますが、何だか違和感がありますね。
フォーム系コマンド追加。
# FORM <method> <action> <ext_attrs> type = block template = <!-- begin form -->\n<form method="%1" action="%2" %ext_attrs>\n end_template = </form>\n<!-- end form -->\n num_attr = 2 allow_child = %Flow
# FIELDSET <ext_attrs> type = block template = <fieldset %ext_attrs>\n end_template = </fieldset>\n allow_child = %Flow
# LEGEND <legend> type = inline template = <legend> end_template = </legend>\n omittable_end = 1
# INPUT <type> <id> <name> <ext_attrs> type = inline template = <input type="%1" id="%2" name="%3" %ext_attrs />\n num_attr = 3 omittable_end = 1 has_arg_content = 0
# TEXTAREA <id> <name> <cols> <rows> <ext_attrs> type = inline template = <textarea id="%1" name="%2" cols="%3" rows="%4" %ext_attrs> end_template = </textarea> num_attr = 4 has_arg_content = 0 is_oneline = 0 no_parse = 1
# SELECT <id> <name> <ext_attrs> type = inline template = <select id="%1" name="%2" %ext_attrs>\n end_template = </select>\n num_attr = 2 allow_child = %Inline omittable_end = 0 has_arg_content = 0 is_oneline = 0
# OPTION <ext_attrs> type = inline template = <option %ext_attrs> end_template = </option>\n omittable_end = 0 is_oneline = 0 has_arg_content = 0
# LABEL <for> type = inline template = <label for="%1"> end_template = </label>\n num_attr = 1 omittable_end = 1
FIELDSETとLEGENDはまとめてもいいかも。
# FIELDSETL <ext_attrs> type = block template = <fieldset><legend>%ext_attrs</legend>\n end_template = </fieldset>\n allow_child = %Flow
ようやく辞書更新(遅すぎ)。
よくよく見ると、ひどいHTMLが出力されてるので、ちょっと修正しました。多少はマシになったかな…
全然マシじゃないのがPHPとPerlのソースで、見ると目が腐りそうになります。XML化のついでに直しましょうかねぇ。
LaTeX出力用のスケルトンとテンプレートを作ってみました。標準のアーカイブに入っているものを改造。そのままだとまともに動作しませんので…
…改造しても動かない罠。
罠は見出し(HD)と脚注(FN)にありました。いずれもテンプレートでAsHTMLメソッドを再定義しているのですが、Document.pmとClasses.pmによって上書きされてしまいます。AsHTMLメソッドを書き換えない限り、LaTeXには対応できませんが、LaTeX対応にすると標準の機能が殺されてしまうので、標準のHDとFNコマンドは使用できないということになります。
LaTeX用のコマンドを作れば解決しますが、「スタイル変えるだけで、HTMLでもLaTeXでも!」な環境にはならず、メリット激減。ふむー、悩みどころ。
体験版をやってみました。経験値と得点はトレードオフの関係、かな?
今のところ、自己ベストは639万。1000万オーバーなんて、どうやったらできるんでしょう。
UNIX系OS + Apacheでの話。
TDSをStand-Aloneでインストールすると、web_diary_dirにプログラムソース一式がコピーされます。web_diary_dirは名前のとおり、web公開ディレクトリ下にあるので、そのままの状態では外部からでも直接ソースにアクセスできることになります。見られても影響はなさそうな気がしますが、気持ち悪いので、.htaccessやファイルパーミッションを変更して、外部からのアクセスを禁止します。
でも、これって何か変ですね。lib/, log/, split.pl, static.pl, ... なんかは web_diary_dir でなく、diary_dir(web非公開ディレクトリ下にある)でいいような気がします。
動的モードではCGIプログラムにアクセスできれば良いので、web_diary_dirに必要なのはCGIプログラムのみです。lib/ や dat/ などは、Apacheプロセスの実効ユーザがアクセスできればどこでも良いのです。
静的モードでは、web_diary_dirにはHTMLファイルと検索用CGIさえあればよいのですから、やはり lib/ やその他プログラムソースをweb_diary_dirに置く必要はないのです。
というわけで、今度はこのあたりを改善しようかと。
Patraやtelnetなどからリクエストすると、500や404が返ってくるので、その調査。WebサーバがIISだから、裏で何か変なことやってるんじゃないかなー、と色眼鏡で見つつ…
<p>Microsoft VBScript runtime </font> <font face="Aral" size=2>error '800a0005'</font> <p> <font face="Arial" size=2>Invalid procedure call or argument: 'InStr'</font> <p> <font face="Arial" size=2>/includes/browser.asp</font> <font face="Arial" size=2>, line 49</font>コンテンツHTMLにこんな記述があるので、 おそらくユーザエージェントの判定でコケているのでしょう。 InStr関数で長さ0の文字列を処理しようとしたとか、そんなところでしょうかねぇ。 どうでもいいけどさー。
というわけで、おそらくユーザエージェントを書いてやらないとダメってことでしょうね。適当なユーザエージェントを指定してリクエストしてみます。
Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)
Patra/0.40 [ja] libwww-perl/5.69
Mozilla/4.0 (Patra/0.40 [ja]) libwww-perl/5.69
Mozilla/4.0 (compatible) libwww-perl/5.69
Patra/0.40 [ja] (compatible) libwww-perl/5.69
ということは、(compatible)
という文字列があれば大丈夫なのでしょうか。何が「コンパチ」なんだか、よくわかりませんが、まぁいいや。
TDSでLaTeX出力する資料を検索しようとググってみたら、割とたくさんヒットしたのですが、ほとんどがTDS違いでした。
TDS = TeX Directory Structure
がっくし。
誰でもやってみたくなりますよね(?)
フラクタル画像でも描いてみるかー、と思いましたが、さてどうしたものか。
Javaで書くのがお手軽ですが、計算速度を考えるとCかなぁ、と。Cで書くとなると、Windowsに開発環境がない *1 ので、必然的にLinuxベースに。
画像処理をどうするか。出力形式として、不可逆圧縮形式は論外なので、BMPかPNGかに絞られます。BMPは嫌いなので、PNG形式で吐き出すことにします。とりあえずlibpngとGDをインストール。
PNGファイル出力は「gdで楽々PNG作成」を参考にしました *2 。サンプル出力を確認して準備OK。
プログラム実行時に、読み込むライブラリを動的に変更することってできるんしょうか。Windowsでいうところの「プラグイン」みたいな感じで。webで検索するより、Apacheのソース見たほうが速いかなぁ。
ルビ。
RUBY RB base-text RT ruby-text /RUBY
<ruby> <rb>base-base</rb> <rp>(</rp><rt>ruby-text</rt><rp>)</rp> </ruby>
複合ルビ。デリミタを指定できるとよいかも。
RUBY "," RBC 薬,師,寺,涼,子 RTC やく,し,じ,りょう,こ /RUBY
<ruby> <rbc> <rb>薬</rb><rb>師</rb><rb>寺</rb><rb>涼</rb><rb>子</rb> </rbc> <rtc> <rt>やく</rt><rt>し</rt><rt>じ</rt><rt>りょう</rt><rt>こ</rt> </rtc> </ruby>
複合ルビの場合に、rp要素を含めることが出来ないのはなぜ?
((rb, (rt | (rp, rt, rp))) | (rbc, (rtc | (rp, rtc, rp)), (rtc | (rp, rtc, rp))?) | (rbc, rp, rtc, rtc, rp))
何でこうしなかったんだろう?
友人に「MUに参加しろー」って言われたんですが、推奨動作環境がちょっとねー。何でこんな高スペックを要求するんだか。今の環境では物理的に無理です。
MMORPGなどのネットゲーには手を出さないようにしています。理由は簡単。嵌るから。夜遅くまでプレイして、朝起きるのがつらくなって、…(以下略)になるのは目に見えています。廃人コースまっしぐらですよ、きっと。
夕方、涼しくなってから出発。
ノイズガード用電源として、ニッケル水素電池を使ってみました。説明書には動作電圧がかかれていなかったので、2.4V(1.2×2)で動作するか心配でしたが、今のところ特に問題なく動いている模様。
何でもキャラものにすればいいのか…
西暦20XX年、1つの政権が終わり、一人の悪が権力を握っていた。だが、それに立ち向かう勢力もあった。地下組織、エイダ。彼らのターゲットは、悪の中枢により掌握されたホストコンピュータ、『アースラ』。
ある日、キミは一人の少女と出会い、アースラを破壊するため、エイダでC言語の教育を受けることになる。それが、全ての始まりだった・・・!
Cで破壊されるホストコンピュータって、いったい何? M$製とか?
main() の戻り値はvoidじゃなくてintだってば。
Apache のアクセスログを見ていたら、こんなユーザエージェントを発見しました。
=?ISO-2022-JP?B?GyRCSH4+Lz13QG87ThsoQg==?=Sailor Moon Browser/0.41 Beta 1 (dame compatible :-)
デコードしてみます。
美少女戦士Sailor Moon Browser/0.41 Beta 1 (dame compatible :-)
…いや、何だって構わないんですけどね…
体験版をやってみました。コンセプトはいいし、ルールも単純でとっつきやすいです。
ですが、プレイヤーの入力がダイレクトに反映されるゲーム(アクションゲームやシューティングゲーム)が好きな私にはちょっと不向きです。思考ルーチンを作成したら、後は見てるだけですからねえ。
読了。少々ボリューム不足でしたが、さっくり読めました。
マリアンヌとリュシエンヌにはもっと活躍して欲しいところですが、初めてイラストが掲載されたから良しとしましょう。次回は是非メイド服で…
観せてもらいました。いやー、笑った笑った。
安い部類に入ります。その人は多分、版画デビューして間もない人でしょう。だとしたら、そのくらいの値段が妥当でしょうね。
版画(リトグラフなど)って、手軽に量産・再生産できるものではありませんから、生産量、流通量が限られてしまい、時が経つにつれて入手しづらくなります。本当に欲しいのであれば、今のうちに買っておいたほうが良いでしょう。
版画の値段は、作家の版画家として功績を積むにつれて、年功序列のような感じで上がっていくらしいです。7年、8年と経験を積んできた人の新作なんて、平気で500K, 600Kなんて値段が付きます *1 。ですから、(版画家としての)初期の作品は、良質なわりに比較的安価で手に入る場合がありますので、実は狙い目だったりします。
ちなみに、私の欲しい某氏作の版画、以前お店の人に「3,000K出しても買えないでしょう。というか、値段がつけられない状態なんです。」と言われたんですが、今は値崩れしてるようですね。300Kくらいで買えるみたいなので、狙ってもいいかな。あ、でも飾るスペースがないですね。結構デカいからなぁ。
ひょんなことで会った某氏(初対面)。氏はSX-Windowの開発に携わっていたそうで、何でも、メーカー純正のCコンパイラの性能が悪いから、コードほとんどをアセンブラで書かざるを得なかったとか、そんな話をしてくれました。
いつどこでどんな人に会うか、わからないものですね。
現在の作成リスト。物と精度と歌詞の入手率にもよりますが、1曲作るのに、だいたい1〜4時間かかります。私に音楽センスがあれば、もう少し速く作れるんですが。
ギャルゲエロゲソングが増えていることに危機を感じます(何)
読了。田中芳樹の現代小説はさくっと読めます。
やろう、やろうと思っていながら、手をつけていなかった、りりかの改修、というか、作り直し。
現行のプログラムは試験版をそのまま拡張したようなものなので、ソースがめちゃめちゃ汚いです。「モジュール化って何ですか?」な世界だし。ほんと、書き直したほうが良さそう。
図書館から、予約した本が入ったと連絡が来たのですが、この雨では取りに行く気がせず。
今日も降ってるしー。
逆相プレスCDって、そんなに多いんでしょうか。低音を強調するために、意図的に逆相にしているのが少なからずあるらしいですが、そんなことのために音質落としてるんじゃ、本末転倒ですよ。
ときどき、音の篭ったようなCDに出会うことがありますが、もしかしたら、アレが逆相?
モジュールを10個くらいに分けました。ロードするモジュールを切り替えることで、多彩な出力が可能…になるといいな。
とりあえず、コアモジュールとさくらスクリプト変換モジュールだけ作成。
ロードするクラスを動的に変える場合って、エバるしかないのかなぁ…
…はぁ。やれやれ。
図書館で、予約していた本2冊を借りてきました。片方はパラパラめくった後、読まずに返すことにしました。手元に置いておいたほうが良い本なので、後日購入することにします。
寒い日が続きます。米の不作が心配。
妄想具現化計画実験フェーズ。ygs2kでの実装を考えましたが、どうせ実験なので手軽なところでWinamp+SSP。
某ゴーストのシェルにサーフィス画像を10個ほど追加し、サーフィス定義を書き換えます。もちろんアニメーション付きで。「あ」「い」「う」「え」「お」「ん」と、いくつかの子音発音時の口画像があれば、とりあえずは十分でしょう。
さくらスクリプト変換モジュールを改造。日本語の場合、現代仮名遣いだと原則的には一字一音なので、歌詞の仮名の部分にはサーフィスコマンドを機械的に挿入することが出来ます。漢字や外国語の部分をどうしようか迷いましたが、ルビ(普通は仮名で記述される)の実装が完了しているのでそれを利用することにしました。本格的な対応はまた今度。
歌詞と口がピッタリ…というわけにはいきませんが、まあ、それっぽくは見えます。ウェイトの誤差や、画像の再描画によるタイムラグ等がありますから、多少のずれは致し方ありません。それに加えて、今回はWinampとTCP/IP通信も絡んでいますし。
ま、とりあえず今回は成功かな。
不備発見。内部正規化処理の練り直し〜。
連符、ルビ、発音表現周りの処理が厄介です。
ちょっと買い物。
ファンレスのMini-ITXマザーが欲しいんですけど、これってケースや電源はどうするんでしょう?ファン付きの電源&ケースじゃ、ファンレスにした意味がないし。ケースもできれば小さいやつがいいですね。CD-ROMドライブは内蔵できなくても構わないので。
おとなしくEES-3610にしてしまうのも手ですが。んー。
帰宅後、買ってきた BSD magazine をおもむろに開いたところ、grep の正規表現の記事が目に入りました。とりあえずこの記事だけ読んでみたのですが、えーと…
間違った記述が多いのはこの記事だけですよね? 他の記事は大丈夫ですよね?
読了。
私の鉛筆削りは何処へいってしまったのでしょう。
部屋を片付けていたら、昔使っていたヘッドホンステレオが出てきました。
適当なカセットテープをセットして、再生ボタンを押してみましたが、モーターがウーウーいうだけで、ちっとも回りません。駆動系がやられているのでしょう。さすがに10年近く使っていないと、ダメにもなりますね。
他の記事はまともでした。昨日は、運悪く変な記事から見てしまったようです。
小飼氏の記事が一番面白く読めました。