正直日記



2009/02/27

_ 日記に「最近のコメント」機能を追加してみる
基本的には自分用だけど、ビジターへの「気づかれずにスルーされることが無い」
というアピールでもある。要するに「コメントはお気軽に」という意思表示か。

2009/02/26

_ caperを使う
boost::spirit は最強すぎるけど、コンパイルが重すぎてイヤンなので flex と
caper の組み合わせを試してみる。

チュートリアルにある downcast と upcast の説明がいまいち理解出来なかった
のだけど、要するに SemanticAction の引数と返り値は cpg 側で指定するので、
Parser からの引数には downcast を、返り値には upcast をそれぞれ必ず仲介
してやらないといけないわけか。

struct SemanticAction { void syntax_error(){} void stack_overflow(){} void downcast( int& x, std::string y ) { x = atoi(y.c_str()); } void upcast( std::string& x, int y ) { char s[256]; sprintf(s, "%d", y); x = s; } int Number(int n) { std::cout << "Number Defined:" << n << std::endl; return n; } }; int main() { FlexLexer* lexer = new yyFlexLexer(); std::ifstream in("nanika", std::ios::in); lexer->switch_streams(&in); SemanticAction sa; Parser< std::string, SemanticAction > parser( sa ); for (;;) { Token token = static_cast<Token>(lexer->yylex()); if (parser.post( token , lexer->YYText() )) { break; } // ↑ ここで渡されるのは std::string だが、SemanticAction::Number // は int を要求するため、downcast が必要になる。 // 逆に、SemanticAction::Number の返り値 int は std::string への // upcast が要求される。 } std::string v; if( parser.accept( v ) ) { std::cout << "accpeted : " << v << std::endl; } return 0; }
# lexical_cast 使えよってのはあるとして、それは置いておくとして。 そこまではいいとして、sa の返り値がどこで使われているのか分からない。 うーん、まだスタートラインに立ててないようだなぁ。 -- 追記: tutorial 4 の AST に色々 printf を挟んでみたら分かった気がする >saの返り値

2009/02/25

_ fix Flex++ for Windows
flex++ 2.5.4a で出力したソースをコンパイルするとこんな風に怒られる。
cannot convert `std::istream*' to 'istream*'
困るので修正した。 skel.diff FlexLexer.diff つーのは置いといて、最新版(2.5.35)は pipe やら fork やらで MinGW じゃビ ルド出来ないんですが、ソースを見ると #ifdef MS_DOS とか残ってはいるんで すが、TURBO C ではコンパイル出来るんだろうか?
_ m せんせーのブログが繋がらなくなったけど
これはついにサーバの HDD が完全崩落したと見てよろしいのですね。と書こう
としたら復旧されていた。

高い IDE を買うよりは SATA +スゴイアダプタの組み合わせを選択肢に入れて
も良かったんじゃないでしょーか、と思った。スゴイアダプタは何が凄いって、
小ささが SUGOI ので、仮にサーバが空間的余裕の無いベアボーンだったとして
も、なんとか収まる(こともある)のだ。

2009/02/24

_ JPEGフォーマットの限界(JFIF)
超巨大な画像を編集していたところ、JPEG 形式で保存できなくなって困ってし
まった。調べてみると、なんと JPEG/JFIF は一辺 65500 ピクセルが規格上の限
界サイズらしい。

規格制定時はともかく今の時代、縦横のどちらか一方が 65500 ピクセルをオーバー
してしまうことは十分ありうるように思う。というか今現在まさにそれでビビっ
てるわけだし。JFIF は時代遅れのフォーマットになりつつあるということか。
_ フリーソフトウェア開発者なら誰もが通る道、を無理やり歩ませる
http://slashdot.jp/developers/09/02/22/1012238.shtml

アリガチなのは「○○という機能が△△にもあるんだから、このソフトにもつけ
てくれよ」という要望か。その機能を使うかどうかは問題ではなく、「無いから」
という理由だけでゴリ押ししなければならない。

ゴリ押しがうまくいって機能が追加されるとコードサイズは多少なり膨らむわけ
だが、そこも見逃してはならない。その差がどんなに微少であっても「起動が遅
くなった」とか「メモリ消費量が増えた」と、声を大にして言おう。

差の有無に関わらず「体感速度が遅くなった」と言うのは有効な手である。対象
マシンと同じ環境を揃えない限り検証できないような状況だとベスト。開発者の
マシン CPU が Intel なら Athlon を、VGA が GeForce なら Radeon を。狙い
すぎて、VIA と Matrox を選んでしまうと、切り捨てられてしまう可能性がある
のでやりすぎには注意しよう。

--

オープンソースなら汚いソースを誰かが綺麗にしてくれる、というのはよっぽど
有用なソースで、かつそのソースを必要としている誰かがすげえハカーな場合に
限られるんじゃないのかなぁ。論文の実装が綺麗に書き直されてるのとかは割と
目にするけど……。
_ ○○からリンクされてアクセスが普段の△倍に
という感想を割とたまに見かけるけど、当人以外にとってはどうでもいい話では
あるよなぁと思っていたが、とうとう俺も書く事になった。どうもありがとうございます!1ぬ

http://stg.liarsoft.org/c20090222-181819

普段は多くてせいぜい+200くらいしか回らないカウンタが、このリンクだけその
8倍以上回っていて、なんだろうと思っていたら、ある個人ニュースサイトから
リンクが貼られたためらしい。

普通に考えて情報ソースに直接リンクすればいいところを、なぜわざわざパーマ
リンク経由にしたのか考えてみると、内容が画像への直リンだからだと気づいた。

ということは、直リンを嫌がっているページにリンクを貼りたいとき、newStage
に一度投稿してからそのパーマリンクを貼れば、ロンダリング可能になるという
ことだ。アクセス急増でサーバがパンクしたとかの苦情が出されるとしても、そ
れは俺に対してである。上手い事考えたね。

となると次に考えられるのは雑誌のフラゲ画像をサイト備え付けのアップローダ
に転載し、それに対してリンクを貼る方法だろう。海外サイトに転載されるのを
待ってからリンクするよりも早く紹介する事が出来るようになる。これも、怒ら
れるとしたら俺だしね。

そういう面倒を被る覚悟が出来ていたかと問われたら、出来ていなかったと答え
ざるを得ない。サイト運営ってのは難しいんだなぁ。や、まだなんも起きてない
けども。

2009/02/21

_ ネタ帳.exeが肥大しすぎ
なので、適当に放出して減らす事にする。
以下はそのうち書こうと思いつつ纏めることが出来なかったメモとかです。

--

平成21年度 基本情報処理解説君試験

問1:ゲームソフトウェアの移植に関する記述のうち、適切なものはどれか。
ア 386バイナリのトランスレート移植は、移植元に存在するバグのみを再現する。
イ 386ソースコードの移植は、

(思いつかなかったらしい)

--

何故「止まれない全方位」ばかりになつたのか、理由はよく分らないが... 全方位シューティング考 - 大和但馬屋日記
昔、どんなゲームでも[5]キーを押さないと停止できないマイコンがあって(以下略) (旬を過ぎた全方位シューティングネタ) -- Web アプリのセキュリティについて調べれば調べるほど、怖いのと面倒くさいの とが加速する。うかつなもの作って公開しちゃうと周りにも迷惑掛かるよねみた いな。だからといっていつまでも怖がってたら何も解決しないし、何か起こって もすぐ直せるのが Web アプリのいいところのような気もするので Web の波に揉 まれながら鍛えていくのがいいのかなぁ。というようなことを OpenID の仕様を 調べつつ派生してアレコレ見ているうちに考えてた。 それにしても、Net::OpenID::Consumer は大仰すぎる。Windows で使えるように するのは大変だし、レンタルサーバにも置きにくい。 (Net::OpenID::Consumer::Lite を見つけて喜んだらしいメモが残っているのだ が、その後どうなったのかは自分にも分からない) -- ツァイガルニック効果 (この効果は自分にとても作用しているので非常にマズいきがする) -- 2009/01/23時点で stg 検索結果:1584件 まもるクンは呪われてしまった! 検索結果:16件 エグゼリカ 検索結果:170件 むちむちポーク 検索結果:35件 旋光の輪舞 検索結果:440件 オトメディウス 検索結果:352件 エスプガルーダ 検索結果:67件 (多分キャラ人気の高い STG を割り出そうとしたんだと思う。センコロが高めか) -- 伸びてるときは垂直にピンポイントに掻きますけど、切ったときは水平にガーッ と軽く掻きますぼく。まぁ個人差かもしんないです。 (覚えてないけどたぶんアトピーネタ。去年は1年中治らなかったなぁ) -- ゲームにはかっこいい爆発が必要だ http://d.hatena.ne.jp/ABA/20080402#c1207334217 のコメント欄より
zzz 2008/04/05 03:36 キャラごとに違った爆発ぶりが素敵な「グラディウス外伝」。 「超連射68k」の機械部品粉々感。
どちらも基本的に小さな部品の組み合わせで爆発を作っていて、VRAMという名の 台所事情が垣間見え (後になんか書こうと思って忘れたらしい) -- 60fpsを意識するということ 風呂場の照明が切れかけていて、なんだかうっすらとフリッカーを感じる。蛍光 灯が悲鳴を上げているな。と、浴槽に浸かりながらボンヤリ眺めていたら、唐突 に昨年のアジアシリーズのテレビ中継を思い出した。 日本の選手がホーメルンを打った後で、スーパースローカメラによるリプレイ映 像が流れたのだけど、打者の裏手に見えるベンチの照明がチッカチカと点滅して いたのだった。 普通のスポーツ中継でこんなシーンが見られるとは思っていなかったので、暫く 印象に残っていた。 台湾戦だったか韓国戦だったか記憶があやふやだが、交流周波数は台湾なら50Hz、 韓国なら60Hzか。蛍光灯はその二倍の周波数で発光するので100〜120Hz。 (出だしだけ考えて、どう収拾つけるのか思いつかなかったみたい) -- なぜオタは「やれば出来る子」の思い出を胸に温めたまま十年が経過しますか? 良い文章を書くコツコン http://203.138.211.206/cgi-bin/vote+/htm/1207588635.html どうすれば人間を描くのが上手くなれますか? http://203.138.211.206/cgi-bin/vote+/htm/1207454188.html 表現したいものと自分の能力のギャップが大きすぎて、凹んでしまい挫折。目ぇ ばかり肥えちゃって……。という「始めた矢先に終わってた」みたいな経験は、 オタ非オタ限らずアリガチですが、まあオタクちゃんは特にアリガチですが。 そう考えると、目の肥えていない、すなわちピュアなうちから取り組んで、中二 的な方向にシフトしないよう周りに配慮されつつ、知識と技術そして感性を均一 に段階的に肥やしていくのがベストなんだろうかなーと。 それがうまい事いくとこうなるんですか。 若いときから活躍しているクリエイターコン http://203.138.211.206/cgi-bin/vote+/htm/1207657341.html (既に箱消滅) -- ビリーズシューティングキャンプ 挫折しそうになったときを見計らって励ましてくれる、そんな要素が家庭用移植 版にはあってもいいんじゃないかとおもった。You need some practice! なんて 今時流行らないんですよ! -- ”BTNOシステム”があるだけで俺にとっては神ゲー これは揺るぎようのない事実 だが他のプレイヤーにはそうでは無いらしい (「ボインタッチして姉ちゃんに怒られる」の略らしい) --
[#5] (siwnbm) どっかマニアックじゃないシューティングつくってくれよ。 シューティングがマニアだけのものになってる [#9] (tyxtip) #5 俺も俺も。ゲーム機なら特にそういうするめみたいに 楽しめるのを作って欲しいな。大多数が難しいの求めてるのばっかりじゃ ないんだけどな。 革新的すぎて誰も貼ってくれないポスター - 自動ニュース作成G
非マニアック層向けと思われるシューティング技能検定を含む「ラブ。200X」の 記事ですら、こういう感想が出てくるのだな。と言ってもこの感想は恐らく昨今 のシューティング全般に対して書かれたものなんだろうけど、まぁそれがラブの 記事感想に書かれるということは、ソフト内容に関する認知が足りないというこ とだろう。ラブログや呑み会など内輪向けの宣伝は充実していても外部への発信 がおざなりだったことは原因の一つに挙げられると思うが、トラサビに関しては それでいいのかもしれない。 その話は本題じゃないのでどうでもいいとして、#5「マニアすぎ」→#9「するめ ゲーにしてくれよ」というのはどうも繋がらないんだよな。現状、スコア要素が スルメ要素に密接しているシューティングにおいて、マニア成分を抜いた状態で スルメ化できるのだろうか。 そもそも何をもってマニアックとするのかが語られていないが、高難度化・スコ ア要素てんこもり化、そして弾幕化・システム複雑化、現状のギャル要素てんこ もり化あたりだろうか。 個人的な持論になるが、例えばエスプガルーダIIの覚聖絶死界とかデススマイル ズのパワーアップとかは、ゲーム攻略にそれほど結びつかないシステムで、マニ アのための存在になってしまっていると考えられる。 一つの解として、魔女ボーグメグリロのようにゲームとは全く関係の無い着せ替 えアイテムをゲットする方向や、exception conflictのように対戦・COOPを入れ て幅を広げる方向はあるかもしれない。 (ネタを広げすぎて、まとめられなかった) -- 59番街の部屋、「TESTER PHASE ONE」を公開 - newStage the2bears.com &#187; Tester Phase One IndieGames.com - The Weblog - Freeware Game Pick: Tester Phase One (Isshiki) 徐々に紹介文の情報量が増えていくのが面白い。 そのまま転載するのは芸が無いからと、後発ほど内容を濃くしていくのだろう。 -- 終わりです。 そーいやネタ帳に溜めてる時点で日記じゃないよなぁ。困った。

2009/02/17

_ 玄関開けたら5分で熱い
また自分話ですが。好きだけどたしなむ程度だったシューティングがいつのまに
かプレイ機会を大きく占めるようになったのは、他ジャンルのソフトをやるのが
かったるっくなったからのような気がする。

 他:ディスク入れる→(ローディングですよ...)→ムービー→スタート押す→
   タイトル画面→スタート押す→(ローディングですよ...)→チュートリア
   ルもしくはムービーが始まる→ゲームはいつ始まるの?

 SHT:こいんいっこいれる→タイトル画面→スタート押す→熱い

(SHT は格ゲ・音ゲ・パズルなどの、未だにプリミティブなゲーム性をむき出し
にしているジャンルに置き換え可能か。そして、そのどれもが市場的にはニッチ
なジャンルになってしまっているんだなぁ)

んでまぁ、熱い展開になるまでの時間対効果が、他ジャンルは低いように感じら
れるのだな。比較的早めに訪れると思われるアクションも、導入見て(チュート
リアルは飛ばすにしても)広大なマップを探索して〜と、熱い展開への道のりは
遠くなってしまった。熱くなった後はクールダウンとしてセリフパートが始まる
のである。もう心は冷えてるのにいつまで喋ってるのオタクら。んもー、やって
らんないよ。


とかいいつつ、いまさら大神をプレイしている僕ですが。
いいんだよ、統一されたグラフィックの見事さにいちいち感心してるんだから!
1フレーム1フレームが熱いからいいんだよ!大神は!
竜宮城の! 温泉の! バネ係数が!121
_ 横画面縦シュー
シルバーガン・蒼穹紅蓮隊・ガーディアンフォースと横画面で縦スクロールする
シューティングタイトルの多い ST-V だが、これは複数ソフトを挿せるように設
計されていたから、という MVS と同様の理由によるものだろうか。

まぁこの仮説は縦画面縦シューの紫炎龍という例外によって崩されるけど。

2009/02/07

_ 変数名のスコープを制限したい
大部分をアセンブラで書いて一部分だけ C で書きたいときってやっぱりソース
を分割すると思うんだけど、アセンブラ側から特定の C ソースにだけ変数名を
公開する方法はあるんだろうか。

[nanika.S] .data .global totemo_kakko_E_nanika totemo_kakko_E_nanika: .word 0 [nanika_impl.c] extern int totemo_kakko_E_nanika; ...
totemo_kakko_E_nanika はとてもアリガチな変数名なので、うっかり他のソース で使ってしまう可能性が大きいが、簡潔さと分かりやすさを兼ね備えており、別 の名前にはしたくない、ということがある。 ELF オブジェクトファイルを結合して一つのオブジェクトファイルとしてまとめ られるのなら strip -N するだけの話なんだけど。 つーか、別にアセンブラに限った話では無いな……。

名無しさん >
[linkscript]
*(.data)
__totemo_kakko_E_nanika = .;
*(.data.totemokakko_E_nanika)
*(.data.*)

[nanika.S]
.section .data.totemo_kakko_E_nanika
totemo_kakko_E_nanika:
.word 0, 0, 0, 0

[nanika_imp.c]
extern char __totemo_kakko_E_nanika;
*(int *)&__totemo_kakko_E_nanika;

totemo_kakko_WARUI
 (2009/02/09 01:47:03)
名無しさん > 用途が分からなかったので勢いで書きましたが、的を射ていない様な...すびばせん  (2009/02/09 02:03:18)
>
有りがちな名前の変数を特定のソースでだけ共有し、他には隠蔽したいって感じかな。
そのリンカスクリプトだと、結局全てに公開されるのと同じ結果になると思います。
うーん、諦めて変数名をヒネるしかないのか。
 (2009/02/11 22:30:07)
名無しさん >
externしていないソースからは見えない気がしたんですが、そんな訳ないですね。

説明的な命名が面倒でだんだん短くなって、後になって何の事か分からなくなり、
全置換掛けた所、他の変数名なんかとかぶっていて自爆ってパターンがあります。
結局、イチから書き始めたり...注意力散漫すぎ
 (2009/02/21 03:32:37)
> Cとアセンブラにnamespaceがあればいいのに。……アセンブラには高級すぎるか。  (2009/02/27 06:36:26)

2009/02/04

_ LK
俺は他人のソースがなかなか読めない厨房なので、おおざっぱに概要だけ読み取っ
て後は自分なりに実装してみるということを結構やっている。よっしんさんの XSP
を GBA で使えるようにした GBXSP もそんな感じで、インタフェースとコメント
から中身を推測して(時にはアセンブリソースも真面目に読んだけど)実装した。

最近カーネル作成の真似事をやっているのもあって、The Linux Kernel は Linux
カーネルの概要を知るのに非常に役立った。そもそもが自分で作ってみたいとい
う動機なので、適度に詳しいが詳しすぎないという解説内容は、概要だけ把握し
て実装は自分で考えるというスタンスにうってつけなのである。自分のおもちゃ
カーネルに欲しい機能・要らない機能を区別できる程度には知識がついたのでは
ないかと思う。

そうこうしているうちに最近のカーネルにも興味がわいてきて、Linux Kernel Watch
も読み始めた。先述の解説は1999年時点のものと若干古いので、最近の動向を解
説しているこの連載はありがたい。特に、何がどのように問題になっていて、ど
のように解決されたのかという解説は面白く読んでいる。(内容半分くらい分かっ
てないけどね)

が、その連載も不況のあおりを受け中止するるかもしれないとのことで、もし終
わってしまうのならば残念かもしれない。(←読み始めたばっかのクセに!)
_ インディペンデントゲームの要求 PC スペックは年々上がっているな
筆者が主に使用している,Pentium 4/3.40GHz,GeForce 6800 Ultla,メイン メモリ1GBという,少し(かなり?)古いスペックのPCでは,解像度と各種オ プションを最低限に落としてもfpsが一桁しか出ず,まったくゲームにならな かった。 インディーズゲームの小部屋:Room#76「あけぶれ」
それでもムービーやスクリーンショットは 60fps を維持しているあたり、裏に どんな物語があったのだろうと夢想しないでもない。 ちなみに newStage で紹介したときのスクリーンショットは Athlon MP 1700+*2, GeForce 6800 GT, メモリ1GB という恐ろしく古い世代のマシン(これより良い スペックの PC を死蔵している人は、是非俺にくれればいいよ)で撮ったものだ が、それでも 30fps は出ている。 何が言いたいのかと言うと、記事筆者の PC 環境はおそらく風水的な問題がある ので、いますぐデスク配置を変更するべきだということだ。恐らくお隣のデスク と配置交換するだけで、fps 換算で 5 程度は伸びのびボーイすることだろう。 黄色い布でケースをまるごと包めば、更に fps の伸びが期待できるかもしれな い(熱暴走するよバカ)

最新
2010 | 01 04
2009 | 01 02 03 04 05 06 07 09 10 11 12
2008 | 01 02 03 04 05 06 07 08 09 10 11 12
2007 | 02 03 04 05 06 07 08 10 11 12
2006 | 01 02 03 04 05 06 07 08 09 10 11 12
2005 | 01 02 03 04 05 06 07 08 09 10 11 12