<?xml version="1.0" encoding="UTF-8"?>
<feed version="0.3" xmlns="http://purl.org/atom/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xml:lang="en">
  <title>或曰</title>
  <link rel="alternate" type="text/html" href="http://www.issei.org/blog/" />
  <modified>2007-04-09T02:37:09Z</modified>
  <tagline></tagline>
  <id>tag:www.issei.org,2010:/blog//2</id>
  <generator url="http://www.movabletype.org/" version="3.34">Movable Type</generator>
  <copyright>Copyright (c) 2007, issei</copyright>
  <entry>
    <title>スクリプト D&amp;I (10) バイトコード処理</title>
    <link rel="alternate" type="text/html" href="http://www.issei.org/blog/archives/000402.html" />
    <modified>2007-04-09T02:37:09Z</modified>
    <issued>2007-04-09T09:01:42+09:00</issued>
    <id>tag:www.issei.org,2007:/blog//2.402</id>
    <created>2007-04-09T00:01:42Z</created>
    <summary type="text/plain">スクリプトのソースコードをコンパイルしてできるバイトコードをファイルに落とす処理...</summary>
    <author>
      <name>issei</name>
      <url>http://www.issei.org/</url>
      <email>issei@issei.org</email>
    </author>
    <dc:subject>プログラミング</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.issei.org/blog/">
      <![CDATA[<p>スクリプトのソースコードをコンパイルしてできるバイトコードをファイルに落とす処理と、ファイルからバイトコードを読み込んで実行する処理を分離 (<a href="http://svn.issei.org/gameobj/trac/browser/GameObj/trunk/tool/src/cscript?rev=370">r370</a>)。</p>

<p>後者に関係するコードは、ファイル名に vm というプリフィクスを追加。ここだけ、後で GameObj の本プログラムにマージする。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>代休</title>
    <link rel="alternate" type="text/html" href="http://www.issei.org/blog/archives/000401.html" />
    <modified>2007-04-08T03:02:59Z</modified>
    <issued>2007-04-08T11:32:39+09:00</issued>
    <id>tag:www.issei.org,2007:/blog//2.401</id>
    <created>2007-04-08T02:32:39Z</created>
    <summary type="text/plain">木曜、金曜と代休をとって3連休に（日曜は別件あり）して、サーキット走行にお出かけ...</summary>
    <author>
      <name>issei</name>
      <url>http://www.issei.org/</url>
      <email>issei@issei.org</email>
    </author>
    <dc:subject>日常或いは平穏な日々</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.issei.org/blog/">
      <![CDATA[<p>木曜、金曜と代休をとって3連休に（日曜は別件あり）して、サーキット走行にお出かけ。</p>

<p>木曜は <a href="http://www.mobilityland.co.jp/maruyama2_m/about/index1.html">丸山浩のサンデーレースやろうぜ (2輪)</a> ビギナークラスに参加。先導走行あり、フリー走行どちらでも OK だったので、一本目は先導走行してもらいラインを確認、二本目はフリーで走行。三本目はフリーで行こうかと思ったら、先導走行希望者が少なかったため途中から1対1での先導走行に。ラッキー。<br />
タイムはそれぞれ 2'48.570, 2'41.154, 2'37.419。しばらくは、順調に縮まりそう。</p>

<p>帰宅する予定だったけど、仕事の電話が入ったため急遽ホテルツインリンクに泊まって夕方からノートPCでお仕事。</p>

<p>仕事後に、ツインリンクもてぎ金曜日のスケジュールを確認したら午前中に北ショートコースの講習会、午後に走行枠があることが判明。事務局に電話して確認したところ「北ショートコース2輪のライセンスを取る場合、ロードコース2輪のライセンスがあれば追加料金なしで講習を受けるだけで OK」ということだったので、講習を予約。</p>

<p>金曜日 10:00-10:45 までロードコースコントロールタワー1Fで講習会受け付け、11:00-12:00まで北ショートコースコントロールタワー1Fで座学での講習会。内容はロードコースの講習会とほとんど同じで、差があるのはピットイン・ピットアウトの手順・走行ライン確認と、一部使用しない旗があるという点ぐらい。</p>

<p>北ショートコースは一周1km弱で、カートや小排気量のバイクを走らせるのがメイン。二輪は排気量 200cc を境に枠が分かれてる（小排気量 2Sクラス、大排気量 2Lクラス)。<br />
200cc未満クラスでは、小排気量のレーサー（競技専用車両）を持ち込んで走らせている参加者が大半で、たまに公道走行車両を改造して走らせている人がいる程度。速い人は一周45秒前後のタイムで回っている。<br />
200cc以上のクラスは、平日ということもありガラガラ。私とほかにナンバー付きの Z1000 が一台いるだけ。最初の4周ほどはコース確認とタイヤを温めるためゆっくり走って、それからペースを上げていく。<br />
600ccクラスだと、スピード落ちるところはローギア、直線でセカンドまで上げれば十分ぽい。今日はシフト操作よりライン確認に集中したかったのでセカンド固定でゆっくりと。</p>

<p>25lap 走ってベストタイムが56.532。そのあとで 2S クラスの走りを見ていたら、第1コーナー進入時にアウトいっぱいに車体を振ってから入ることで速度を殺さずに回るとか、ヘアピンを抜けた後の連続S字で素早く車体を切り返してきっちりフルバンクさせるとか、いくつか「そう走るのね」という部分が。しばらくは課題が簡単に見つかりそうなので、走った回数に比例してタイムは縮まりそう。北ショートコースは30分走って1,000円と安いので、枠があったらまた来よう。とりあえず、めざせ50秒。<br />
昨日の疲れもあり、一本走ったらクタクタになったので早々に帰宅。</p>

<p>ちなみに北ショートコースは、ライセンスなくても多少割高な料金を払えば走れるそうです。臨時共済費 3,000円/日と、走行が2,000円/30分。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>週末の過ごし方</title>
    <link rel="alternate" type="text/html" href="http://www.issei.org/blog/archives/000400.html" />
    <modified>2007-04-01T13:17:28Z</modified>
    <issued>2007-04-01T21:10:00+09:00</issued>
    <id>tag:www.issei.org,2007:/blog//2.400</id>
    <created>2007-04-01T12:10:00Z</created>
    <summary type="text/plain">土曜日は HMS中級＠桶川で CBR600RR を走らせて、日曜日はツインリンク...</summary>
    <author>
      <name>issei</name>
      <url>http://www.issei.org/</url>
      <email>issei@issei.org</email>
    </author>
    <dc:subject>日常或いは平穏な日々</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.issei.org/blog/">
      <![CDATA[<p>土曜日は HMS中級＠桶川で CBR600RR を走らせて、日曜日はツインリンクもてぎで全日本ロードレースの観戦。</p>

<p>HMS中級のレンタル車両でスーパースポーツ系のバイクを選択したのは私一人だけで、他はみんなネイキッド。珍しいね。</p>

<ul>
<li>午前中：市街地コース
<li>午後１：バリアブル（上級基本設定）
<li>午後２：4番　バリアブル手前の広いスペース
</ul>
全般に細かいコース設定で、CBR600RR だとある程度バンクさせつつハンドルフルロックしないと曲がれない箇所あり。これこれ。

<p>最初の先導付コース案内のときに列全体のペースに合わせてゆっくり走っていたら、速度が落ちているためバイクを寝かせられず、ハンドルフルロックでも回転半径が大きくなりすぎてコースアウトしそうになった。セパハン車両の場合は、そういう場合はあえてコーナー直前でスピード落として前車との間隔を確保し、加速→倒し込み→一気に回りきる必要ありですね。コース案内から気が抜けないことで……。</p>

<p>イントラさんからは「まだフロントに荷重かけすぎてるから、極端に後ろ乗りにしてリア荷重を意識してみましょう」ということで、思い切りシート後方に座って乗ってみる。同じバイクとは思えない操縦性の違いだ。リアに乗ると細かいラインの修正や旋回初期の一気の向き替えがしづらくなる反面、旋回が安定して旋回速度を上げてアクセルも開けやすくなる気がする。他にコースの個別のポイントに対して「もっと早く寝かせて」「アクセルの開け始めを早く」「切り返し遅れずに」「速度を早めに落として」等々の助言あり。</p>

<p>いつにも増して運動量が多かったため、終了時には汗だく＆全身疲労。翌日は背中・内腿を中心に、全身的に筋肉痛に。</p>

<p>日曜日は7時に起きてもてぎに向けて出発し、常磐道を使って10:00 過ぎにツインリンクもてぎ南ゲート到着。私はロードコースの走行ライセンスホルダーなので、国内大会は入場無料。ツインリンクもてぎ自体の入場ゲート、ならびにツインリンクもてぎ内サーキットエリア共にライセンスを提示して通過。</p>

<p>GP125, ST600, JSB1000 と別々のポジションで観戦して帰宅。あと GP250, GP-MONOクラスがあるけど、そこまで見てると帰路が渋滞しそうなので。いずれも路面はドライ、白熱した試合展開で楽しめた。</p>

<p>GP125 のときは最後のビクトリーコーナーからホームストレートまでの走行ラインを見てたのですが、キッチリ「アウト→イン→アウト」のラインですね。セカンドアンダーブリッジで右側につけて、ゆるい左コーナーを抜けたらビクトリーコーナーの入口は左のインギリギリを掠めるように進入、入口からクリッピングポイントまでのちょうど中間で左に寝たバイクを一気に起こして右にフルバンクさせ、ビクトリーコーナー出口のクリッピングポイントに向かい、そこからホームストレートに入ってフル加速、と。</p>

<p>自分で走ると、90度コーナーを抜けてからビクトリーコーナー入口までは道幅が広くて走る位置に迷い、ビクトリーコーナーは逆に道は広いが走れるラインが狭いのとあまりカントが付いていないように見えてスリップダウンしないかとドキドキする区間。</p>

<p>ST600 は S字カーブと V 字コーナーを展望するポイントで JSB1000 はメインスタンドで観戦。ST600 は目前で派手に接触・転倒したバイクがあり、ライダーの収容・バイクの回収から救急車での搬送までスタッフが仕事している様子が見えた。レースはこれだけの人員・設備をそろえて、初めて開催できるものなんだなぁと。</p>

<p>帰り際にトライアル世界選手権「<a href="http://www.mobilityland.co.jp/wctrial/">ウイダー日本グランプリ</a>」のチケットを購入して帰宅。走行ライセンスホルダーは20%割引で5枚までチケット購入可能、購入時にチケット裏に割引使用の印が押される。転売防止策？</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>週末</title>
    <link rel="alternate" type="text/html" href="http://www.issei.org/blog/archives/000399.html" />
    <modified>2007-03-25T15:17:29Z</modified>
    <issued>2007-03-25T23:12:04+09:00</issued>
    <id>tag:www.issei.org,2007:/blog//2.399</id>
    <created>2007-03-25T14:12:04Z</created>
    <summary type="text/plain">仕事が落ち着いて、久しぶりに安心して携帯電話の電源を切っておける状況なので、朝か...</summary>
    <author>
      <name>issei</name>
      <url>http://www.issei.org/</url>
      <email>issei@issei.org</email>
    </author>
    <dc:subject>日常或いは平穏な日々</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.issei.org/blog/">
      <![CDATA[<p>仕事が落ち着いて、久しぶりに安心して携帯電話の電源を切っておける状況なので、朝から晩まで遊びに。</p>

<p>土曜日はサーキット「ツインリンクもてぎ」のロードコース走行 (30分x2本)、日曜日は桶川で<a href="http://www.honda.co.jp/safetyinfo/HMS/mschool.html">HMS</a>中級 (CBR600RR レンタル)。</p>

<p>もてぎは予約していた一本目の走行開始時刻が12:45だが、コース到着が12:25。遅すぎ。急いで、走行券を買って、車両にテーピング施して、装備品を整えて、本人確認のシールをヘルメットに貼って…ぎりぎりセーフ。けっこうやることあるから、一時間前には着くようにした方が良いですね。<br />
タイヤの空気圧を落とす暇がなかったが、一本目はそれほど飛ばせないと思うので、そのまま。</p>

<p>先導なしでのロードコースフル走行は初めてなので、最初は右ラインべったりで走行。じっくりコース確認。3週目の第4コーナーを抜けたところで手を上げて後方確認し、レコードラインに入る。各コーナー、どこまで速度を落とせば曲がりきれるのかが体感的に分かってないので、最初は手前で減速しすぎな状態。徐々にラインを決めて速度を上げていく。</p>

<p>走行1本目を終えて戻ってきたら、先日、ライセンス講習会でご一緒した人と再会。しばし談笑。</p>

<p>2本目。今度はタイヤの空気圧を前後とも 2.2kg/㎡に落とす。1周目はタイヤ温度を上げるためにレコードラインに入らず走行。2周目からレコードラインに。誰かの後をついて走ろうかと思ったが、なかなかついていけるペースのライダーがいない。この回はやたら転倒・コースアウトが多く、1コーナー、5コーナー、V字、ヘアピンと至るところでイエローフラグが振られてた。</p>

<p>課題山積。まずはレコードラインをきちんと把握することから。</p>

<p>来週は全日本ロードレース選手権がツインリンクもてぎで開催されるけど、もてぎのライセンス所有者は自由席無料。時間とれるようなら見に行こう。</p>

<p>HMSは濡れた路面に CBR600RR という組み合わせなので、それだけで良い練習になった。なにしろグリップしないので、リアにしっかり荷重をかけて、バンク角を抑えつつアクセル操作は丁寧に。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>分散システム -原理とパラダイム-</title>
    <link rel="alternate" type="text/html" href="http://www.issei.org/blog/archives/000398.html" />
    <modified>2007-03-23T11:18:28Z</modified>
    <issued>2007-03-23T20:15:47+09:00</issued>
    <id>tag:www.issei.org,2007:/blog//2.398</id>
    <created>2007-03-23T11:15:47Z</created>
    <summary type="text/plain">相変わらず泥縄だけど、ちょいと仕事がらみで、タネンバウム先生の本を引っ張り出して...</summary>
    <author>
      <name>issei</name>
      <url>http://www.issei.org/</url>
      <email>issei@issei.org</email>
    </author>
    <dc:subject>読書記録</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.issei.org/blog/">
      <![CDATA[<p>相変わらず泥縄だけど、ちょいと仕事がらみで、タネンバウム先生の本を引っ張り出してきて読んでます。DCE RPC とか、そういや COM プログラミングでも出てきたなぁとか思いつつ。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>スクリプト D&amp;I (9) 三項演算子と文字列</title>
    <link rel="alternate" type="text/html" href="http://www.issei.org/blog/archives/000397.html" />
    <modified>2007-03-23T11:15:07Z</modified>
    <issued>2007-03-23T19:48:17+09:00</issued>
    <id>tag:www.issei.org,2007:/blog//2.397</id>
    <created>2007-03-23T10:48:17Z</created>
    <summary type="text/plain">実装完了 (rev358)。ディレクトリ構成を整理し、ついでに仮想マシンの命令コ...</summary>
    <author>
      <name>issei</name>
      <url>http://www.issei.org/</url>
      <email>issei@issei.org</email>
    </author>
    <dc:subject>プログラミング</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.issei.org/blog/">
      <![CDATA[<p>実装完了 (<a href="/gameobj/trac/browser/GameObj/trunk/tool/src/cscript?rev=358">rev358</a>)。ディレクトリ構成を整理し、ついでに仮想マシンの命令コードを変更すると<br />
<ul><br />
<li>コード生成を行うCodeクラス<br />
<li>Codeのpimplクラスである Code::Impl<br />
<li>コンパイラの内部状態を集約している Compクラス<br />
<li>Compのpimplクラスである Comp::Impl<br />
</ul><br />
と4箇所にコードを書く必要があったのを一箇所に集約。m4 使って C++ のコードを自動生成するようにした。</p>

<p>文字列に関しては、汎用プログラミング言語ではなくライトウェイトの組み込み用途言語なので、コンパイル時に確定し実行中の文字列操作は一切無しという仕様。</p>

<p>こうなるとヒープを使う必要もなく、<br />
<ul><br />
<li>スクリプトコンパイル時、出てきた文字列に連番を振る。<br />
<li>文字列の参照・代入は、この番号をコピーするだけ。<br />
<li>スクリプトコンパイル後のバイナリに文字列リテラルを埋め込み、仮想マシンからは番号で対応する文字列のポインタを返すようにする。<br />
</ul><br />
この程度で済むから、むしろ整数・浮動小数点数のサポートより簡単。</p>

<p>しかし仮想機械をスタックマシンにしたけど、スタックアクセスの度にアドレスのチェックを行う必要があるから性能的にはキツそう。性能云々言うなら、構文主導でいきなりコード生成する仕様を改めて一度構文木を作るようにしないと、まともな最適化手法が使えないから論外だけど。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>ツインリンクもてぎ　ロードコース二輪ライセンス</title>
    <link rel="alternate" type="text/html" href="http://www.issei.org/blog/archives/000396.html" />
    <modified>2007-03-21T14:01:30Z</modified>
    <issued>2007-03-21T22:33:26+09:00</issued>
    <id>tag:www.issei.org,2007:/blog//2.396</id>
    <created>2007-03-21T13:33:26Z</created>
    <summary type="text/plain">サーキットの走行ライセンス取得のため、朝からもてぎへお出かけ。 ライセンス講習は...</summary>
    <author>
      <name>issei</name>
      <url>http://www.issei.org/</url>
      <email>issei@issei.org</email>
    </author>
    <dc:subject>バイク</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.issei.org/blog/">
      <![CDATA[<p>サーキットの走行ライセンス取得のため、朝からもてぎへお出かけ。</p>

<p>ライセンス講習はこんな感じでした。</p>

<p>まず室内で座学1時間。会員規約の説明や車両既定、基本的な走行ルールと旗の説明、共済会（サーキット保険）の説明等々。</p>

<p>昼食休憩をはさんでピットに移動して車検。実物を見つつ再度旗の説明とサーキット走行のルール説明。西コース（本コースの一部分を区切って作ったショートコース）でレコードラインとピットイン・ピットアウトの方法を実技指導するための先導走行 5 周 x 2 回、最後にフラッグの理解確認を含めての 15分のフリー走行 2 本。最後に講評。</p>

<p>車検ではチェーンの張りがやや緩いと指摘を受ける。確かに。チェーンの調整は簡単だけど、さすがに車載工具ではやりたくない。最低限の工具はそろえた方が良いんだろうね。ま、少し支出抑えて必要なものから徐々に買う方向で。</p>

<p>フリー走行は、個人的にローギアを使わず二速以上で走行。まずはタイム云々より、走行ラインとブレーキングポイントの確認に意識を集中。</p>

<p>ローギア使わないため立ち上がり加速が緩やかで、その分だけ最高速度も抑えられてたはずだけど、最後はフロントブレーキの液が沸騰しかけた。確かにそれなに速度が乗った状態から強めのブレーキをかけて一気に速度を落とすコーナーもあったけど、それにしてもこの程度でフェードしかけるのはブレーキを少し引きずってるのかも。掃除した方がよさそう。</p>

<p>最後の講評では、個人的に身体の動きが硬い旨アドバイスを受ける。低速系のコーススラロームだと身体の使い方が分かってきたけど、高速系で外足ホールドとか言われると良く分からない。ま、まずは肩の力を抜くところからかな。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>John Warner Backus 氏逝去</title>
    <link rel="alternate" type="text/html" href="http://www.issei.org/blog/archives/000395.html" />
    <modified>2007-03-21T13:33:10Z</modified>
    <issued>2007-03-21T22:27:47+09:00</issued>
    <id>tag:www.issei.org,2007:/blog//2.395</id>
    <created>2007-03-21T13:27:47Z</created>
    <summary type="text/plain">初の高水準プログラミング言語 FORTRAN の開発、プログラミング言語を記述す...</summary>
    <author>
      <name>issei</name>
      <url>http://www.issei.org/</url>
      <email>issei@issei.org</email>
    </author>
    <dc:subject>プログラミング</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.issei.org/blog/">
      <![CDATA[<p>初の高水準プログラミング言語 FORTRAN の開発、プログラミング言語を記述するBNFの発明などの功績で、その後のコンピュータの発展に多大な影響を与えた John Wanrner Backs 氏が逝去の由。ご冥福をお祈りいたします。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>スクリプト D&amp;I (8) ループと制御文</title>
    <link rel="alternate" type="text/html" href="http://www.issei.org/blog/archives/000394.html" />
    <modified>2007-03-21T14:04:20Z</modified>
    <issued>2007-03-20T23:14:40+09:00</issued>
    <id>tag:www.issei.org,2007:/blog//2.394</id>
    <created>2007-03-20T14:14:40Z</created>
    <summary type="text/plain">do - while, for, while と、break, continue...</summary>
    <author>
      <name>issei</name>
      <url>http://www.issei.org/</url>
      <email>issei@issei.org</email>
    </author>
    <dc:subject>プログラミング</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.issei.org/blog/">
      <![CDATA[<p>do - while, for, while と、break, continue, break を実装 (<a href="/gameobj/trac/browser/GameObj/trunk/tool/src/cscript?rev=342">rev342</a>)。</p>

<p><b>parser.output</b><br />
<pre><br />
 Terminals which are not used<br />
 <br />
   TOK_AUTO<br />
   TOK_CONST<br />
   TOK_ENUM<br />
   TOK_EXTERN<br />
   TOK_GOTO<br />
   TOK_REGISTER<br />
   TOK_SIGNED<br />
   TOK_SIZEOF<br />
   TOK_STATIC<br />
   TOK_STRUCT<br />
   TOK_UNION<br />
   TOK_UNSIGNED<br />
   TOK_VOLATILE<br />
   '?'<br />
 <br />
 <br />
 State 234 conflicts: 1 shift/reduce<br />
 (以下略)<br />
</pre></p>

<p>シフト・還元競合は、ぶらさがり else の件で分かってるので問題なし (<a href="http://lmj.nagaokaut.ac.jp/gnu_manual/bison-1.28/bison-ja_8.html#SEC71">参考</a>)。分割コンパイル・リンク処理や構造体のサポートはやる気無し、定数は C プリプロセッサ使え、goto は使うなという方針なので、上に出ている未使用終端記号で未実装なのは '?' ぐらいだね。goto 禁止にする代わりに、多重ループから抜けるための break の拡張だけはやるかも。</p>

<p>文法面での残件<br />
<ul><br />
<li>?: 演算子<br />
<li>文字列処理。ヒープ使った処理をする気はないので、完全に定数扱いにする。<br />
<li>typedef での型定義ならびに型変換時の型チェック処理<br />
</ul></p>

<p>ここまで済んだら、先に進む前にテストケースを作ってバグ潰そう。テスト用のフレームワークとして使えそうなものを探す。なければ perl で適当に書く方向で。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>DDoS</title>
    <link rel="alternate" type="text/html" href="http://www.issei.org/blog/archives/000393.html" />
    <modified>2007-03-20T10:59:58Z</modified>
    <issued>2007-03-20T19:56:41+09:00</issued>
    <id>tag:www.issei.org,2007:/blog//2.393</id>
    <created>2007-03-20T10:56:41Z</created>
    <summary type="text/plain">昨日、www.issei.org 上の SVN リポジトリを操作しようとしたら異...</summary>
    <author>
      <name>issei</name>
      <url>http://www.issei.org/</url>
      <email>issei@issei.org</email>
    </author>
    <dc:subject>日常或いは平穏な日々</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.issei.org/blog/">
      <![CDATA[<p>昨日、www.issei.org 上の SVN リポジトリを操作しようとしたら異常に反応が遅い。調べてみたところ、どうも大量の HTTP リクエストが来ていて、CGI 経由で ruby が起動されていて負荷が上がっていたようなので、一時的に ruby を実行不可に。昔の日記が一部見えなくなるけど、まぁ良いでしょ。</p>

<p>ログを見るとアクセス元 IP アドレスはばらばら、ただしアクセスパターンは同じという状況。DDoS？　ウチのサイトに攻撃しても仕様がないと思うんだが。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>スクリプト D&amp;I (7) 式と仮想マシン</title>
    <link rel="alternate" type="text/html" href="http://www.issei.org/blog/archives/000392.html" />
    <modified>2007-03-17T14:48:53Z</modified>
    <issued>2007-03-17T22:34:50+09:00</issued>
    <id>tag:www.issei.org,2007:/blog//2.392</id>
    <created>2007-03-17T13:34:50Z</created>
    <summary type="text/plain">一通りの式と、コンパイル済みのバイトコードを実行する仮想マシンを実装。 cscr...</summary>
    <author>
      <name>issei</name>
      <url>http://www.issei.org/</url>
      <email>issei@issei.org</email>
    </author>
    <dc:subject>プログラミング</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.issei.org/blog/">
      <![CDATA[<p>一通りの式と、コンパイル済みのバイトコードを実行する仮想マシンを実装。</p>

<ul>
<li><a href="/gameobj/trac/browser/GameObj/trunk/tool/src/cscript?rev=325">cscript r325</a>
</ul>

<p>途中から、パーザージェネレータを flex 2.5.4 + bison 2.3 に変更。</p>

<p>lex + yacc の組み合わせではトークンの属性値を格納するグローバル変数 yylval の値がデフォルトで int, %union を使っても C++ と相性が悪い union ということで敬遠していたが、生成されたコードを見たら YYSTYPE, YYSTYPE_IS_DECLARED を適切に定義すれば問題なく C++ で使えることが判明したので (<a href="/gameobj/trac/browser/GameObj/trunk/tool/src/cscript/cscript_parser.h?rev=325">cscript_parser.h r325</a>)。</p>

<p>演算子の実装を始めると、<br />
・シンボルテーブル検索<br />
・型チェック<br />
・エラー処理<br />
・コード生成<br />
とほとんど同じだけど、微妙に違う処理が繰り返し出てくる。テキストプロセッサ m4 を使って似たような処理は一か所でマクロ定義しておき (<a href="/gameobj/trac/browser/GameObj/trunk/tool/src/cscript/parser.m4?rev=325">parser.m4</a>)、これを展開して bison への入力ファイル parser.y を生成する方向で。</p>

<p><b>参考サイト</b><br />
<ul><br />
<li><a href="http://www.nurs.or.jp/~sug/soft/super/m4.htm">m4 チュートリアル</a><br />
</ul></p>

<p>しかし趣味でプログラムを書いていて何が辛いって、この程度の規模のプログラムを書くのに軽く一か月以上掛かることだな。捗らん。</p>

<p>残件として、文法的では大きく<br />
<ul><br />
<li>条件分岐<br />
<li>ループ<br />
<li>ジャンプ命令<br />
</ul><br />
と 3 つ、ほかに言語の機能としてトリガと割り込みとマルチスレッド処理、言語周りの関連ツールとして C++, スクリプト連携処理部分のコードジェネレータやバイトコードのパッケージング処理が残ってる。まずは文法一通り実装しちゃうか。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>火災保険料返戻</title>
    <link rel="alternate" type="text/html" href="http://www.issei.org/blog/archives/000391.html" />
    <modified>2007-03-03T15:32:21Z</modified>
    <issued>2007-03-04T00:25:11+09:00</issued>
    <id>tag:www.issei.org,2007:/blog//2.391</id>
    <created>2007-03-03T15:25:11Z</created>
    <summary type="text/plain">損保会社から配達記録郵便。何かと思ったら、火災保険の料率計算を間違っていて保険料...</summary>
    <author>
      <name>issei</name>
      <url>http://www.issei.org/</url>
      <email>issei@issei.org</email>
    </author>
    <dc:subject>日常或いは平穏な日々</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.issei.org/blog/">
      <![CDATA[<p>損保会社から配達記録郵便。何かと思ったら、火災保険の料率計算を間違っていて保険料を過大に請求していたので返金します、とのこと。</p>

<p>保険に関しては自分で選ぶ場合は相見積もりをとって条件や金額を精査するけど、今の住居は賃貸で大家さん指定の火災保険加入が入居条件なので、考える余地なしだったからなぁ。確かに前済んでいた所と比べると少し高めだったけど、部屋も広くなったのでそんなものかと思ってた。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>convex hull</title>
    <link rel="alternate" type="text/html" href="http://www.issei.org/blog/archives/000390.html" />
    <modified>2007-02-27T15:54:45Z</modified>
    <issued>2007-02-28T00:48:12+09:00</issued>
    <id>tag:www.issei.org,2007:/blog//2.390</id>
    <created>2007-02-27T15:48:12Z</created>
    <summary type="text/plain">convex hull を求めるアルゴリズムは、確か Computational...</summary>
    <author>
      <name>issei</name>
      <url>http://www.issei.org/</url>
      <email>issei@issei.org</email>
    </author>
    
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.issei.org/blog/">
      <![CDATA[<p>convex hull を求めるアルゴリズムは、確か <a href="http://www.amazon.co.jp/Computational-Geometry-Applications-Marc-Kreveld/dp/3540656200/">Computational Geometry</a> で見かけたような気がします。今手元にないから確認できないけど。</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>21st century compilers</title>
    <link rel="alternate" type="text/html" href="http://www.issei.org/blog/archives/000389.html" />
    <modified>2007-02-27T15:24:33Z</modified>
    <issued>2007-02-27T23:39:36+09:00</issued>
    <id>tag:www.issei.org,2007:/blog//2.389</id>
    <created>2007-02-27T14:39:36Z</created>
    <summary type="text/plain">会社に置きっぱなしだったドラゴンブック、ちょっと読みたくなったのでお持ち帰り。 ...</summary>
    <author>
      <name>issei</name>
      <url>http://www.issei.org/</url>
      <email>issei@issei.org</email>
    </author>
    <dc:subject>プログラミング</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.issei.org/blog/">
      <![CDATA[<p>会社に置きっぱなしだったドラゴンブック、ちょっと読みたくなったのでお持ち帰り。</p>

<p>ふと思い立って amazon で検索かけたら <a href="http://www.amazon.co.jp/21st-Century-Compilers-Alfred-Aho/dp/0321210913<br />
">21 st century compilers</a> が在庫切れ扱いに。いつの間にか出てた？</p>

<p>Boost Spirit のドキュメントからリンクをたどって、面白そうな書籍発見。<br />
<ul><br />
<li><a href="http://www.cs.vu.nl/%7Edick/PTAPG.html">Parsing Techniques - A Practical Guide</a><br />
<li><a href="http://www.cs.vu.nl/%7Edick/PT2Ed.html">Parsing Techniques - Second Edition</a> (2007/04刊行予定)<br />
</ul><br />
2nd ed. 出たら注文しよう。<br />
</p>]]>
      
    </content>
  </entry>
  <entry>
    <title>スクリプト D&amp;I (6) エラー処理とバックトラック</title>
    <link rel="alternate" type="text/html" href="http://www.issei.org/blog/archives/000388.html" />
    <modified>2007-02-27T15:41:52Z</modified>
    <issued>2007-02-27T21:31:58+09:00</issued>
    <id>tag:www.issei.org,2007:/blog//2.388</id>
    <created>2007-02-27T12:31:58Z</created>
    <summary type="text/plain">昨日、ざっと書いただけでテストしてなかった部分の文法見直し。結構ボロボロだった…...</summary>
    <author>
      <name>issei</name>
      <url>http://www.issei.org/</url>
      <email>issei@issei.org</email>
    </author>
    <dc:subject>プログラミング</dc:subject>
    <content type="text/html" mode="escaped" xml:lang="en" xml:base="http://www.issei.org/blog/">
      <![CDATA[<p>昨日、ざっと書いただけでテストしてなかった部分の文法見直し。結構ボロボロだった……。</p>

<p>文法定義部分: <a href="/gameobj/trac/browser/GameObj/trunk/tool/src/cscript/main.cc?rev=255#L263">main.cc</a> </p>

<p>同一の言語を規定する文法でも、書き方によってかなり動作速度に差が出る。</p>

<pre>additive_expression →
　multiplicative_expression ('+' multiplicative_expression)+
　| multiplicative_expression</pre>

<p>たとえば同一優先順位の演算子を処理する部分をこう定義すると 　multiplicative_expression を延々と展開して終端ノードまで行ってから、次の一文字を読んでバックトラックが発生する。最悪 multiplicative_expression が 2 回展開される。</p>

<pre>multiplicative_expression →
　cast_expression ('*' cast_expression)+
　| cast_expression</pre>

<p>さらに multiplicative_expression が上のように書かれていると、各 multiplicative_expression に対してここで最悪 2 回展開され、計 2 x 2 = 4 回。この調子で倍々で増えていく。</p>

<p>処理量の増加を線形で抑えるには、次のように書けば OK。別に難しくない。</p>

<pre>additive_expression → multiplicative_expression ('+' multiplicative_expression)*</pre>

<p>yacc だと細かいこと考えずに書いても、それなりに動くパーザーができるけど、バックトラックありの LL(∞) パーザーは、生成されるコードを想像しつつ文法定義していかないとダメだね。</p>

<p>あとはエラー処理用に error_report_p という文法を作って組込んでみたけど、これもバックトラックが絡むと使いどころが難しいな。今はひとまず棚上げして、時間かけて考えてみよう。</p>]]>
      
    </content>
  </entry>

</feed>