アクセスカウンタ

たまには呪文をとなえてみるか:仕事版

プロフィール

ブログ名
たまには呪文をとなえてみるか:仕事版
ブログ紹介


弱弱お爺さんPGのebaの仕事版ページです。
Perl、Javascript、雑記を中心に記事をUPしてます。

目次1
目次2

おおー、いつの間にか3000HIT。外部の人が全然来ないことを思えば、結構増えてきましたねー。

#コメント&トラバは大歓迎ですが、最近忙しくて気づかない事があります。その際はご容赦を(^-^;)。あと、トラバには言及リンクが必要です。反映まで数日必要かもしれません。


help リーダーに追加 RSS

[雑記] 歴史に残るコンピューターゲーム(後編:RPG編)

2009/11/07 14:00
過去20年で最も革新的なゲーム5選(http://alfalfa.livedoor.biz/archives/51520525.html)に触発されたエネルギーがなくなったので、前編からずいぶん時間がたってしまいましたが、続きです。

前編記事
 http://cast-a-spell.at.webry.info/200910/article_11.html


なんか、おじいさんが後編を書くまでの間に、かの島国大和氏も似たような記事を。。。

【島国大和】その時歴史は動いた!……気がする5つのゲーム
 http://www.4gamer.net/games/093/G009300/20091103004/

島国大和氏が上げているゲームでやったことがないのは、「アンチャーテッド 黄金刀と消えた船団(2009:ソニー・コンピュータエンタテインメント)」だけですねえ。
ちょっとやってみたい所ではあるのですが。

他の作品については、歴史を変えた、という点についてはとてもとても同意します。


さて、後編なのですが、今後は見落としがあるかもしれません。
というのは、1985年あたりから、一年間にリリースされるソフトの数がとんでもなく多くなっているからなのです。
コンピューターゲームのカンブリアン爆発期とも言うべき状態で、記憶に頼って書いていくので、重要なソフトが抜け落ちちゃうかもしれません。

なので、まずはジャンル別に整理していこうかと。

RPG


RPGは元々、TRPGというものに大ヒットしたD&Dというものがあります。
ちなみに、このD&Dは戦術級シミュレーションゲームから発展したと言われていますね。
この辺りは、

 D&D
  http://ja.wikipedia.org/wiki/%E3%83%80%E3%83%B3%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%BA%26%E3%83%89%E3%83%A9%E3%82%B4%E3%83%B3%E3%82%BA
 TRPG
  http://ja.wikipedia.org/wiki/%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB%E3%83%88%E3%83%BC%E3%82%AFRPG

ここから、前編で出てきたようなウルティマ、ウィザードリィが生まれるわけです。
で、日本ではどうだったかというと、これを受けて、ハイドライド、イース、ドラクエ、ファイナルファンタジーが出てきます。
その一個前の話として、ドルアーガーの塔(ナムコ)があるんですが、

 ドルアーガーの塔(1984 ナムコ)
  http://ja.wikipedia.org/wiki/%E3%83%89%E3%83%AB%E3%82%A2%E3%83%BC%E3%82%AC%E3%81%AE%E5%A1%94

なんでドルアーガー塔がRPGの前にのっかるかというと、アクションゲームなのに主人公が成長しちゃう、謎解き要素が非常に強い、という点があります。
RPGというのは、ロールプレイングゲームですので主人公の成長というのはあまり本質ではないのですが、コンピューターゲームに関して言えば、ほぼ必須になっちゃった。そのあたりってのはこの辺が源流かもしれません。

ちなみにドルアーガーの塔自体は、おじいさんはやりたくないです。
というのは、もう檄ムズなんですよね。
謎がほんと解けない。
殺してやろうか、と思うぐらいのもんでしたよ。

んで、この後ブラックオニキスという作品で、RPGってできるんじゃないかーという事がわかりまして。
あ、ブラックオニキス自体については、日本のRPG史では結構な位置にあるかと思いますが、ウィザードリィと比べてどうよ?という点と、個人的にハイドライドの方が好きなので割愛です(^-^;)

 ハイドライド(1984 T&Eソフト)
  http://ja.wikipedia.org/wiki/%E3%83%8F%E3%82%A4%E3%83%89%E3%83%A9%E3%82%A4%E3%83%89

につながります。
ここでアクションRPGというものの形がほぼ完成する。
さらに、一本道RPGという形式もできちゃいます。
個人的には、ハイドライドはキャラデザインがよかったなーという覚えがあります。
ドットが荒いのですけれど、ユーモラスでカワイイ感じのするキャラたちでしたねえ。

 ザナドゥ(1985 日本ファルコム)
  http://ja.wikipedia.org/wiki/%E3%82%B6%E3%83%8A%E3%83%89%E3%82%A5_(%E3%82%B2%E3%83%BC%E3%83%A0)

これは本当に売れました。
おじいさんは前作のドラゴンスレイヤー1に関しては、RPGとはちょっと認めてないのですが、これは本当によく作られたアクションRPG。
んでもって、雑誌ではばんばん特集が組まれていましたねえ。
でも、おじいさんにはキツくて、イースなんかに流れておりましたが。
アクションRPGの一つの頂点じゃないかと思われます。

他には同社から発売されているイースと、ゼルダでしょうねえ。
あ、ザナドゥは横スクロール型ですんで。


 ドラクエ(1986 エニックス)
  http://ja.wikipedia.org/wiki/%E3%83%89%E3%83%A9%E3%82%B4%E3%83%B3%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88

きましたよー。
日本の国民的RPG。歴史を変えたと言っても過言ではないゲームです。
今のRPGでドラクエの影響を受けていないものってのは探すのが難しいぐらいです。
でも、いずれの要素もよくよく見ると、先行するゲームにいくらかあるわけですね。
ただ、アクション部分が一切ないRPGというのはすごいなあ、と。

後、音楽にすぎやまこういちとか、絵に鳥山明なんかが入っているのがおかしい感じです。
普通じゃありえないですね。

ファイナルファンタジーは割愛。
これに関してはグラフィックがすげぇね、という所なので。評価をして、歴史を変えたとも思うのですが、やっぱり割愛。


 ダンジョンマスター(1987 SOFTWARE HEAVEN)
  http://ja.wikipedia.org/wiki/%E3%83%80%E3%83%B3%E3%82%B8%E3%83%A7%E3%83%B3%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC

これは非常に画期的かつ意欲的な作品なわけですよ。
クリア寸前まで行って、挫折したおじいさんですが、すごい高く評価してます。
どういう所が画期的かというと、すべてリアルタイムなんですね。

アクションRPGかというと、微妙なんですが、3D迷宮の中をリアルタイムで戦っていく。
魔法のコマンドを入れる時も敵は動いてるし、時間が経てば腹が減る。
モノは何でも投げられるし、それをぶつけて敵にダメージを与えられる。
食料を探しに行く必要がある。この辺はアメリカゲーかなという気がします(^-^;)

まあ、wikipediaにあるように、マシンスペックがないとキツイゲームでありましたな。
このゲームのリアルタイム性というのは、またウルティマとかに持ち込まれていくわけで、結構エポックメイキングな作品と言えるかと。


 ポケモン(1996 任天堂)
  http://ja.wikipedia.org/wiki/%E3%83%9D%E3%82%B1%E3%83%83%E3%83%88%E3%83%A2%E3%83%B3%E3%82%B9%E3%82%BF%E3%83%BC

RPGの歴史を語るんであれば、これは外せないでしょう。
なんか、DMからいきなり年代がすっ飛びましたが、置いときます。その間にファイナルファンタジーとか、MOTHERとかあったわけですが、それはそれで評価したいのですが、なんか転換点という感じがしないので。
特にMOTHERがそんな感じがします。

で、ポケモンですが、ゲームボーイで発売されていた訳なんですが、何が画期的かというと、通信しないとコンプリートできねーという点なんですよね。
それが故に、爆発的にヒットして、シリーズ累計・・・うそ、2億本近いのですかorz

3兆円産業って、ドラゴンボールとかを超えてますね。ディズニーの売り上げ総計に近いんじゃないですか。
とにかく、化け物です。


 ディアブロ(1997 ブリザード)
  http://ja.wikipedia.org/wiki/%E3%83%87%E3%82%A3%E3%82%A2%E3%83%96%E3%83%AD_(%E3%82%B2%E3%83%BC%E3%83%A0)

これは猿のようにやりました。LANでつないで、ひたすら倒しまくりましたねえ。
ネットRPGの元祖とでも言えるのではないでしょうか。
Baltte.netで全世界の人と遊べるMOです。

MOというのは、まあ個室ですよね。ロビーで待ち合わせて、その人たちとだけでダンジョンに潜っていく。
MMOは、全ユーザが同時に同じワールドで遊んでいるわけで、その辺がちょっと違います。

それはともかく、通信対戦できるRPGってことで、大流行。
バランスもよく練られていたんですが、すごく頻繁にバージョンアップしていた覚えが(^-^;)

まあ、それはチート対策って事もあってですが。


 ウルティマオンライン(1997 EA)
  http://ja.wikipedia.org/wiki/%E3%82%A6%E3%83%AB%E3%83%86%E3%82%A3%E3%83%9E%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3

MMOっていうと、どうも調べていると、もう少し歴史が古くて、Neverwinter Nightsなんかが最初かもしれません。
Neverwinter Nightsに関しては、さすがに遊んだ事がなくてわからないのですが、MMOはウルティマオンラインで一般化したと言えるんじゃないかと。

そういう意味で、MMOの歴史に乗っかるものです。
廃人になっちゃったりする奴が出たのは、このゲームからなんじゃないかなーと思います。
ひたすら裁縫のスキル上げてる奴とかもいたなーと思います。

ちなみに、月額課金だったはずです。
最近のMMOの多くはアイテム課金とかになっていますので、ちょっとビジネスの仕組みが違うかと。


World of Warcraft(2004 ブリザード)
  http://ja.wikipedia.org/wiki/World_of_Warcraft

RPG編最後は、World of Warcraftで。
世界最大のMMOですね。日本語はリリースされておりません。
まあ、アクティブアカウント数1000万を超えるってどんな巨大MMOやねん、という所でしょうか。

このゲームについては、ちょいと寡占がすぎますねえというぐらいしか。。(^-^;)
やったことがないんですよ、はい。



というわけでつらつらと見て参りましたが、後編PRG編という事で今回はこんなもので。

個人的に一番好きなRPGを上げろと言われたら、ワイルドアームシリーズを上げておきます。


記事へブログ気持玉 / トラックバック / コメント


[Perl] Outlookのwinmail.datを解析するモジュール

2009/11/07 12:36
こんにちは。
もうすぐフットサルの大会がある、おじいさんです。
とりあえず、色々宿題を片付けないと。。というわけで、Outlookが生成するTNEFフォーマットを解析するモジュールの紹介です。

まず、Outlookが生成するTNEFフォーマットって?という方は以下。

Transport Neutral Encapsulation Format
 http://en.wikipedia.org/wiki/Transport_Neutral_Encapsulation_Format

ようわからんわー、という方は、Outlookで、[ツール]-[オプション]を開き、メール作成のフォーマットで、RTF(リッチテキスト形式)を選んでみてください。
んで、メールを送信すると、そうなります。
添付ファイルをつけると、

 ・winmail.dat

というファイルがついた、よくわからんメールが生成されると思います。Outlook間だけならOKなんですが、それ以外のメーラーでとっちゃうと読めないという所。

Webメーラーだと、大手はGmailとYahoo!が対応しているそうですが。
通常、どうしようもないので、Winmail Openerなんかを使って読む事にしています。

 Winmail Opener
  http://www.eolsoft.com/freeware/winmail_opener/


で、Perlでどうやってほぐすか、ですが、以下のモジュールを使います。

 Convert-TNEF
  http://search.cpan.org/dist/Convert-TNEF/TNEF.pm

メールのパートのうち、mime_typeがms-tnefのものだけ、Convert-TNEF->read_entに持って行けばいいのですが・・・あれ?
おじいさん、Outlookもってないな(^-^;) サンプルメールつくれねーやw


まあ、という事で、サンプルは後日(^-^)/~~

記事へブログ気持玉 / トラックバック / コメント


[雑記] ロケットまつり36『衛星まつりEX2』

2009/11/04 22:32
こんばんは。
あれこれと順番がまわってこなかったので、日曜の結婚式二次会の後に出かけたロケットまつりを書くのを忘れておりました、おじいさんです。
やー、メモとってないので、単なる感想なんで、UPするほどのものか、という所はありますが。

宣伝:11月1日(日曜日) ロフトプラスワンのトークライブに出演します。
 http://smatsu.air-nifty.com/lbyd/2009/10/111-a3a4.html

ロケットまつりは二回目でした。
で、今回はあさり先生が締め切りに終われていて無理、笹本先生はミニスカパイレーツの三巻目で札幌から出られず、という事で壇上がちと寂しい状況。

しかーし、お題の北朝鮮をリモセンで解析するという話は熱かった。。

小野英男氏が、北朝鮮で生まれ育っているわけで、その土地勘を生かして、GoogleEarthから北朝鮮の現状をさぐるという企画。
どうやら二回目のようです。なんで、EX2というわけでした。

で、もってきた画像が一〇〇枚(一九〇近くあったんじゃないかと記憶)を遙かに超えていて、こんなによくも画像を調べたなーという所でした。

で、どんどん見ていったわけですが北朝鮮の街を見ると、悲しくなってくる。
どういう事かというと、

 ・車が走っていない(これもわかるんですよw)
 ・金日成の像が必ず建っている(これはGoogleEarthからも確認可能w)
 ・綺麗
 ・自転車が統制品なので、とても数がすくない

中国、日本、韓国の画像と比較すると、もうどうしようもないほどの格差が開いている。
それが衛星からの写真ではっきりとわかる。

なんというか、北朝鮮はどう考えても勝てません。それが悲しいほどわかりました。
あと、南北融和はちと無理な状況になってますねえ。
どういう事かというと、

 ・開城経済特区が荒れ放題。衛星からは区画の一つ以外建物が建っていない事が判明
  後は荒れ地(緑じゃないですよ)
  なんか、NikkeiBusinessの記事を見つけたのですがあわれ・・・

  http://business.nikkeibp.co.jp/article/world/20070614/127440/

んでもって、色々見ていると、衛星写真にひっかき傷みたいなのがあると、大体空港なんですよ。
で、それを見ていると、戦闘機っぽいものが写っていたり。でも、その格納庫やら整備庫が見あたらなくて、ダミーなんじゃあないかという所があったり。

まー、これ以上書くのは記憶の容量問題で、無理なんですが、北朝鮮は朝鮮戦争から未だ復興途上である、という事でしょうか。

その原因は日本が置いていったものをほとんどソ連が略奪していった、という事もあるんでしょうが、やっぱり政治体制がねえ、、という所に行き着きますか。


まあ、商業衛星でも土地勘があるのであれば、ここまで解析できるんだぞという話を興味深く聞きました。
というか、土地勘がないとダメだろうと思います。

で、一方IGSの方はどうなんでしょうね。
私は松浦さん(作家じゃないので「さん」です(^-^;))の言う通り、集合知で立ち向かった方がいいと思うのですが。
公開して欲しいですねえ。
非公開ってのはどうかと思うのですよ。
民主党にはその辺もがんばってほしいです。


ところで、延々と衛星画像をみてると、酔いそうでした。


記事へブログ気持玉 / トラックバック / コメント


[Tech] 複数の設定ファイルでhttpdプロセスを立ち上げる(!=バーチャルホスト)

2009/11/02 23:54
こんばんは。
昨日はロケット祭りへ行ってきたおじいさんです。
それについては後で書くとして、このお題は一台のマシン上で、Apacheで複数の設定ファイルを指定して、動かす方法です。もちろん、バーチャルホストでありません。

httpd.confの変更する箇所は次の二点です。

PidFile run/httpd.81.pid
Listen 81

PidFileを別に指定しないと、当然まずいわけで。
Listenポートに至っては言うまでもありません。

起動方法は、設定ファイルを指定しての起動。

/usr/sbin/apachectl -f /etc/httpd/conf/httpd.conf.81 -k start

落とし方はstart -> stopとですね。


まー、で、実際プロセスが別れてくれていて、mod_perlで別々のモジュールを読めるか、という点を試してみましたが、問題なく別々になっておりました(^-^;)


超余談ですが、今日読んだ本でRubyの祖先がVisualBasicになっている本をみつけました。
いい事がたくさん書いてあったので、買おうかと思っていたのですが、その一点だけで買う気がなくなりました。。

記事へブログ気持玉 / トラックバック / コメント


[Perl] cpanシェルで古いモジュールをインスコ

2009/10/31 00:23
同僚のY嬢が困っていたので、おじいさんがやったらあっさりできた。
メモを書こうと思ったら、daily dayflowerさんがすでにしっかりしたのを書いていた。

cpan で古いバージョンのモジュールをインストールする方法
 http://d.hatena.ne.jp/dayflower/20070815/1187224651


cpan[3]> install IVAN/DBIx-DBSchema-0.32.tar.gz


先に、search.cpan.orgで古いモジュールのURLを調べておきましょう。

記事へブログ気持玉 / トラックバック / コメント


[本] 新しい労働社会―雇用システムの再構築へ

2009/10/30 23:36


ブログ界隈では有名な、hamachan先生の本でございます。
普段から、RSSリーダーでヲチしているので、新刊が出ていた事は知っていたのですが、しばらく様子を見てみてから、このほど購入して、読んでみました。


序章 問題の根源はどこにあるのか
1章 働き過ぎの正社員にワークライフバランスを
2章 非正規労働者の本当の問題は何か?
3章 賃金と社会保障のベストミックス
4章 職場からの産業民主主義の再構築


読み終えての感想は、いきなりこう書いて申し訳ないのですが、おじいさんが欲しかったのは実は「労働法政策」の方だったのではないかと思ってしまいました(^-^;)「労働法政策」は学術書っぽいので、違うと思うのですが。
ワタクシEba!は、「おじいさん」と周りから呼ばれてるので、ブログではそう自称しておりますが、昨今の労働問題をツラツラと見ているだけでは歴史的経緯が全然わからないのですね。

そういう意味で、昨今の労働問題を俯瞰するにはこの本は非常に助けになったのですが、なんというか、「あー、この問題はこれがこうなって、こうこねくり回されたためなのか!」という迷走ぶりがわかって、腑に落ちるという展開がもう少し足りなかったのです。
それと、hamachan先生のブログではもっとニヤリ( ̄ー ̄)と笑えるおもしろさがあったのですが、こちらでは代って教科書的な丁寧さが全面に出ているような気がします。


さて、本書を読んで一番考えた事について、ざっと書いておきます。
それは、おじいさんは今の所「同一労働同一賃金」に懐疑的な立場だという事に気づいたという事です。

理由の第一ですが、同一労働同一賃金ではない→生活給があるという風に考えた時、これを破壊されると若干こまる、という私的なものです。
理想論として、同一労働同一賃金はある意味正しく、職能給というのがよいのではないか、とも思いますが、それに転換する狭間ではおそらく相当混乱が起きる。
そうなった時に困るね、という事です。
EUみたいに子育て支援などがちゃんと出ているならともかく、現状では民主党が始めようとしていますが、まだまだ制度的には未熟なわけです。
この状況で、生活給を削減されると困る。とはいっても、保証するのが国よりももっと脆弱な一企業という点。
昨今の不景気で、ガリガリ削られているわけで、今の状況はきつい。
かといって、民主党が拙速に制度を決めてしまうと、米内光政ではありませんが「じり貧避けてドカ貧にならぬよう」
と言いたくなるものです。

(余談ですが、こういう現実の法制度を変えるのは大変ですね。理想があるとしたら、現在→理想と一気に進めるわけにはいかない。現在→過渡期→理想と連続して変わっていかなければならない。
その辺の目配りというか、そういうのがない話をする評論家とか居るのですが、どうなんだ?と思うのですよ)

理由の第二は、おじいさんの身の回りというか、IT業界はどうなんだろう?という点なのですね。
IT業界――ここではプログラマや設計を担当するシステムエンジニアなどに話を絞るのですが、PG・SEなどは生産性に一〇倍、三〇倍の差があるなんて言われるのです。
根源的な原因は作業がルーチンワークではないためであり、いくら型にはめた所で必ず毎回試行錯誤しなければならない箇所がある。
その試行錯誤の所で、生産性に大きな差がついてしまう。
具体的には、品質もよくて、一〇倍の量のプログラムを書いてしまうわけです(おじいさんはそこまで上級じゃないです。普通レベルです)
それはどうなるんだ?という点なのです。
現在の所、一般的な大企業であれば、一〇倍の値段が払われるという事はないわけです。
プログラムを書いているという行為についてはまあ同一で、結果として同一らしい賃金なのですけれど、それって同一なのかな?というのが疑問にあり、そこから、そもそも同一労働というのは何を持って同一というのか、その同一とははかれる物なのか?という疑問がわいてくるわけです。

形だけ突き詰めても、労働の分野は意味がないので、現実的に考えると、同一と言ってももっと細かく分解して差をつけるのでしょう。
とはいえ、それを考えていると、職業別労働組合が仮に成立したとして、そこが一括して賃金交渉をする場合、レベル判定がすごく大変になりますねえ、と。
それ以上にドッグイヤーと呼ばれる業界なので、典型的な作業内容について賃金交渉が成立する頃には最先端ではよくわからない作業内容が生まれている気がします。
そういう時は例外として処理され、いずれそれが市場と法制で妥当な所に落ち着くのでしょうけれど、例外に挑戦するような領域で戦う人を見ているおじいさんとしては、結局どうなるんやろうか?と思う所です。


とはいえ、同一労働同一賃金について賛成しないわけではないのです。
転職がしやすくなる、というのは非常に魅力的です。
成功と失敗はもちろん本人にも責任がありますが、どの時代どの国で生まれたか、というのが非常に大きく影響する。
特に、昨今の不況で企業がバタバタと倒れて、首切りが横行している様を見ると、せめて就職ぐらいもう少し自由にならないのか、と思うのです。

また、賃金の透明性が高くなるかな、と多少期待をしてます。
それは市場との兼ね合いがあり、転職が増えれば、それなりの相場というのはできるでしょうが、市場といっても株式市場などではなく、職務と値段をみて労働者が応募するわけですから、非常にドロドロとした情報の非対称性のある市場になりそうな気がします。
そういう時、きっと賃金はゆがむんでしょうね。その時に職業別労働組合ががんばってくれれば、と。


というような事を考えながら、本を読んでおりました。

他にも色々と勉強になりましたが、疲れたので割愛(^-^;)
こんな所で。
記事へブログ気持玉 0 / トラックバック 1 / コメント 0


[本] ネットビジネスの終わり

2009/10/28 23:23


こんばんは。
また、一つ区切りを迎えてほっとしているおじいさんです。
で、今日は知人も書評を上げていたので、勝ってみた本です。


まえがき
1章 「ものづくり信仰」から「売るためのシステムづくり」へ
2章 瀕死のメディア産業
3章 アニメ、ゲームが成長産業になれない理由
4章 情報革命ブームの終焉
あとがき


まあ、この本を読むと、日本お先真っ暗だね、という話になります。
実際の所、市場としての日本というのはものすごい勢いで縮小していっているわけで。
これから何か商売を考えるのであれば、「とりあえず日本で成功してからね」というのはなりたたんでしょう。

各章については、賛同できる所と賛同できない所がまじっている感じですかね。
まあ、おじいさんは印象論でしかないわけなので、比較になりませんが。

特にいいなあと思ったのは、3章。
金のない人たちをアニメは相手にしているわけで、だから回収できねぇよ、という答えなわけです。
ついでに、ドラマよりもアニメの方が金がかかる、という事がびっくりですね。
基礎資料をちゃんと読んでおかないと。
ついでに、あまりみんなアニメ見てないんですよね、という話。

そりゃそうだ。
というか、テレビを見る時間が減ってるし。

ゲームに関しては、おじいさんはまだマシかなあと思っております。
なんつっても、電機各社よりは合併が早いので。


まあ、この本の結論はおじいさんも納得です。
ともかく、消費者の多い所をねらって事。
次に、会社が多すぎると金まわらないって事ですかね。


そんな厳しい環境ですけれど、知恵は使いようじゃないかと思ってがんばりましょう。


最後に、なんでハードカーバーなんですかね。ちょっと読みにくかったです。
記事へブログ気持玉 / トラックバック / コメント


[雑記] 歴史に残るコンピューターゲーム(-1985)

2009/10/25 02:02
こんばんは。
ひとまずバグ退治のめどがついたので朝にうたた寝していたら、北海道へ飛んでいる上司に電話でたたき起こされたおじいさんです。
まあ、そういう事もありますが、しゃーない。
さて、本日は歴史を変えたゲームっちゅうか、そういうものを記憶を探ってみようかと。

元ネタは以下。

 過去20年で最も革新的なゲーム5選
  http://alfalfa.livedoor.biz/archives/51520525.html

これを読んで腹が立ったんですよ。
スト2が入っていない所で、論外です。

んな事を言う前にじゃあ、おまえは何をあげるねん?といわれそうなので、ちょっと考えてみました。
ただ、過去二〇年にはこだわらない事にして。


PONG(1972年アタリ)
 http://ja.wikipedia.org/wiki/%E3%83%9D%E3%83%B3_(%E3%82%B2%E3%83%BC%E3%83%A0)

テーブルテニスのゲームですね。これはまともに商売になった、最初のビデオゲームになります。
この前には、「コンピュータースペース」というのがあるのですが、詳細は知りません。
なんにせよ、このゲームからビデオゲームの歴史は始まったと行って過言ではないかと。
それ以前となると、ラインプリンタでガーガーと印刷しながらゲーム・・・ビデオじゃねーという所ですんで、ハイ。


ブロック崩し(1976年アタリ)
 http://ja.wikipedia.org/wiki/%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF%E3%81%8F%E3%81%9A%E3%81%97

このゲームがどこにつながるかというと、現代だとどこにつながるかというと微妙な所があります。
アルカノイドぐらいかなあ、と。
ただ、すごくメジャーなゲームという事で。

余談ですが、この頃のゲームってのはコピーされまくりです。
ライセンス生産する頃には下手するとコピー品に市場を制圧されているという状況が・・・
涙ですな。

Zork(1976年Dynamic Modelling Group)
 http://ja.wikipedia.org/wiki/%E3%82%BE%E3%83%BC%E3%82%AF

これは評価が難しいかもしれません。
テキストアドベンチャーゲームです。テキストだけ!というのはすさまじい。
シナリオもよくわからんかった覚えがありますし。
今日のアドベンチャーゲームにつながる源流とは言えるかと。
現代のそれの祖先は「ポートピア連続殺人事件」だと思っているので。


Atari2600(1976年Atari)
http://ja.wikipedia.org/wiki/Atari_2600

これは家庭用ゲーム機の歴史を変えたといっても過言ではないハードかと。
カセット方式、サードパーティの制度。
後に82年冬にアタリショックを引き起こしたハードでもあります。


スペースインベーダー(1978年タイトー)
 http://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%9A%E3%83%BC%E3%82%B9%E3%82%A4%E3%83%B3%E3%83%99%E3%83%BC%E3%83%80%E3%83%BC

実はこの頃で、老舗ゲームメーカーというのはほぼ出そろってきます。
その中で、いち早くアーケードゲームで旋風を起こしたのは、タイトーだったわけで。
最近の若い人だと、あまりわからないかもしれませんが、名古屋打ちとかありましたねえ。
あと、ゲームセンターあらしという漫画に出てきたりとか。
しかし、このゲームのために一〇〇円硬貨が不足したというのは初耳。
すごいインパクトがありました。
シューティングゲームの元祖、という事になりますか。
その後に、ナムコよりギャラガが出て、シューティングゲームの礎が作られていくわけです。


ウルティマ
 http://ja.wikipedia.org/wiki/%E3%82%A6%E3%83%AB%E3%83%86%E3%82%A3%E3%83%9E

うわー、これってパックマンよりも先にできていたのか。
2DRPGの源流にして現在でもRPGの最高峰ではないかと。
ちょっとね、さすがに初代ともなると、おじいさんもあそんだ覚えはないです。
この後に、ドラクエとかハイドライドとかが影響をうけて作成されるわけで。


パックマン(1980年ナムコ)
 http://ja.wikipedia.org/wiki/%E3%83%91%E3%83%83%E3%82%AF%E3%83%9E%E3%83%B3

世界で愛されるキャラクター、パックマンの元祖。
キャラ物の元祖ではないでしょうか。
Atari へ移植されて、五〇〇万本とかすごい数を売ってます。


ゲーム&ウオッチ(1980年任天堂)
 http://ja.wikipedia.org/wiki/%E3%82%B2%E3%83%BC%E3%83%A0%26%E3%82%A6%E3%82%AA%E3%83%83%E3%83%81

ボールなんてどうでもいいんですよ。
ゲーム&ウオッチができた事が画期的。これが後のゲームボーイにつながるわけで。携帯用ゲーム機という市場を切り開いた作品になります。
さらに、後にアーケードから移植されたドンキーコングが画期的なんですよ。十字キーにジャンプボタン。マルチスクリーン。写真を見れば、DSだって言われても信じませんか?(^-^;)
これが、ゲームの操作系をきめちゃった作品とも言えます。
ちなみに、ゲーム&ウオッチ自体は横井軍平、ドンキーコングは宮本茂ですね。


ウィザードリィ(1981年Sir-Tech)
 http://ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A3%E3%82%B6%E3%83%BC%E3%83%89%E3%83%AA%E3%82%A3

ちゃんとしたコンピューターRPGの元祖。もう一つがウルティマでしょう。
このゲームは、D&DというテーブルトークRPGを下敷きにしています。
戦士、忍者、ビショップ、魔法使いらがパーティを組んで、3D迷宮を探索していく。
敵との戦闘(ターン制)、レベルアップ、宝物、謎解きと、現代のRPGに必要なものほぼすべて出そろっています。

まあ、そのD&Dというものを下敷きにしているので、完成度が非常に高かった。
一方で、おじいさんなどは、魔法がレベルごとに使える回数がきまっていたりと、不思議な感じがしましたねえ。


ローグ(1981年)
 http://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%BC%E3%82%B0

これは余り知られてないかな。
テキスト表示のRPGです。ゲームをやる度に洞窟が自動生成される。
この直系の子孫は、トルネコやヘングバンドなどになりますか。ウィザードリィに比べるとインパクト薄いかも。


信長の野望 (初代)(1983年光栄)
 http://ja.wikipedia.org/wiki/%E4%BF%A1%E9%95%B7%E3%81%AE%E9%87%8E%E6%9C%9B_(%E5%88%9D%E4%BB%A3)

ゲームは子供しかやらないものだったわけですが、エロゲを作っていた光栄が大人が遊べるものをと作ったのが、こちらです。
これ以後、歴史シミュレーションというジャンルが出現します。
じゃあ、シミュレーションゲームというのはいつできたのか?
ゲーム自体はナポレオン戦争の頃には参謀たちがやっていたはずですが、実際どこまでさかのぼれるか。。。
ビデオゲームになったのは、ちょっとわからないのですが、実は1985年の現代大戦略が初??
うそーん。。。
それだと、こっちの方が古いとか。。。要調査ですな。

まあ、それはともかく、おじいさんは、カセットテープで遊んでいました。
読み込みが長いんですよね。
後、ゲームの値段がこれ以降高くなっていく元凶ではないかと。。。


ファミコン(1983年任天堂)
 http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%83%9F%E3%83%AA%E3%83%BC%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF

このファミコンについて、ゲーム史の側面から語り出すと、それこそ一冊どころではなくて本が書けてしまう。
全世界累計で約6291万台なーんていう数字とか、化け物ですね。
当時はアメリカ側でアタリショックがありまして、ゲームは・・・という状況だったわけで。そんな中、ファミコンが登場したのはすごいですねえ。
とりあえず、これがないとはじまらない。

ただ、スーパーマリオが爆発的に売れるまでは、それぐらいで宮本茂さんたちもそれぐらいで寿命と思っていたというのがなかなかおもしろい所です。
後にディスクシステムをつんだり、色々と延命処置がはかられる事になります。


ポートピア連続殺人事件(1985年エニックス)
 http://ja.wikipedia.org/wiki/%E3%83%9D%E3%83%BC%E3%83%88%E3%83%94%E3%82%A2%E9%80%A3%E7%B6%9A%E6%AE%BA%E4%BA%BA%E4%BA%8B%E4%BB%B6

堀井先生でました(^-^;)
PC版はもう少し早いのですが、年号はFC版という事で。
ここで、コマンド選択方式というのが確立されるわけです。以後のゲームで必要になっていきます。


駆け足で1985年まで見てきましたが、この頃になるとゲーム数も増えて、すごいことになってきます。
しかし、、

 ・レースゲームの始祖はルートXでよいんでしょうか?
 ・ポリゴンゲーの始祖は一体何だったんでしょうかね?

そこら辺はまだよくわかってないです。
ではまた後編で。



記事へブログ気持玉 / トラックバック / コメント


[雑記] 携帯絵文字のUnicode化は佳境なんですね

2009/10/24 01:05
おじいさんは、ブログを見ているだけしかできませんが、関係者の方々にはがんばっていただければうれしいです。

[文字コード] 自分の持ち場を守ること
 http://d.hatena.ne.jp/ogwata/20091022/p1

ともかく、ドイツとアイルランドは何を考えてるのかさっぱりわからんのですよ。

 http://d.hatena.ne.jp/NAOI/20090528/1243505334

おじいさんには、全部同じに見えました。
特にCRYING FACEはひどい。あれは鼻水がでているのかと思いましたよ。

修正案のPDFを見ましたが、全面的に賛成。そりゃ、異なる絵文字の変換が入るので多少の違和感はありますけれど、かなりベストに近いベター。

ほんと、採択される事を願っております。
記事へなるほど(納得、参考になった、ヘー) ブログ気持玉 2 / トラックバック 0 / コメント 0


[雑記] ・・・なんか古くないですかね?>メガネ型ARディスプレイ

2009/10/21 22:53
ふとはてブ見たら、出てきたので。

「電脳コイル」の世界が近づく--ブラザー、メガネ型ARディスプレイを持ち運び可能に
 http://japan.cnet.com/news/tech/story/0,2000056025,20401957,00.htm

これを見て、思ったこと。
5年遅れてないですか?

とりあえず、7年前の知識では、島津さんの旧世代機が電脳コイルな世界を実施するのに結構都合がよかった。

島津製作所 DATA GLASS 3/A
 http://www.shimadzu.co.jp/hmd/
 
つかもと先生はずーっとつけてますよね。
 http://www.teamtsukamoto.sakura.ne.jp/about_wearable/about_w.html

で、googleしてみる。

テレグラスT4-N
 http://www.scalar.co.jp/detail.php?id=t4-n

オリンパス
 http://www.olympus.co.jp/jp/news/2008a/nr080225eyetrekj.cfm
 
なんか、ブラザー工業ももっと昔からやっていた気がしますが。。。


最近ミクミクのAR-Toolkitやiphoneのセカイカメラでいろいろ盛り上がっているARですが、
10年前近くからいろいろとやってる世界だったと記憶してます。

そういや、当時は、キャノンさんのAR技術のプレゼンを実際に見て驚いた覚えがあります。

 http://www.youtube.com/watch?v=XrULluuw63I


昔、歩行者ナビゲーションシステムをARでできないかって、研究していたおじいさんとしては、昨今のAR界の盛り上がりは少しうれしいです。

やっぱり、電脳コイルが効いたのかなあ。

ま、後でセカイカメラ試してみよう。。

記事へブログ気持玉 / トラックバック / コメント


[Perl] ファイルの読み込みはいつ発生してんだろ?

2009/10/21 21:34
こんばんは。
皆様方、達者で暮しておりますでしょうか? 周りではインフルエンザで二人倒れたおじいさんです。
手洗いうがいはちゃんとやりましょうね。
さて、本題は、Perlのファイル周りです。なんか最近こんな事ばっかりしておりますが。

まあ、事の発端はCSVファイルを読み込んで更新したら、とある一行だけ吹っ飛んだ、ということなんですが。
で、怪しいのが

 ・print文で一行書き込みをミスった
 ・<FH>文で一行読み込みミスった

というぐらいしかないのですよ。
先日からprint文のPerlソースは追いかけていて、魔窟の中で苦労しているんですが、今度は読み込み側からおいかけているというところ。

で、今日ガーンというかなんというか、考えてみりゃあたりまえの話を再発見。

q.pl

#!/usr/bin/perl

open(FH,"<q.txt") or die;
while (<FH>) {
print ;
sleep 2;
}


q.txtはq.plと同じとしますね。
で、これをですね。sleepしている最中にぶっ壊すわけですよ。


[root@localhost perl]# strace perl q.pl
-bash: strace: command not found
[root@localhost perl]# perl q.pl &
[1] 29242
[root@localhost perl]# #!/usr/bin/perl

cp q.pl q.txtopen(FH,"<q.txt") or die;

cp: overwrite `q.txt'? ywhile (<FH>) {
es
[root@localhost perl]# print ;
sleep 2;
}
[1]+ Done perl q.pl
</blocquote>

あれ?最後まで動いた・・・まあ、これは先にファイル全体を読み込んでいるからなんでしょうけれどね。

その辺を確認するには、straceがよいです。
あれれ、straceはいってないやん。yumでインストール。
でもって、実行。

execve("/usr/bin/perl", ["perl", "q.pl"], [/* 23 vars */]) = 0
brk(0) = 0x885e000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fee000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/tls/i686/sse2/libperl.so", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/tls/i686/sse2", 0xbfa703e8) = -1 ENOENT (No such file or directory)
open("/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/tls/i686/libperl.so", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/tls/i686", 0xbfa703e8) = -1 ENOENT (No such file or directory)
open("/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/tls/sse2/libperl.so", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/tls/sse2", 0xbfa703e8) = -1 ENOENT (No such file or directory)
open("/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/tls/libperl.so", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/tls", 0xbfa703e8) = -1 ENOENT (No such file or directory)
open("/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/i686/sse2/libperl.so", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/i686/sse2", 0xbfa703e8) = -1 ENOENT (No such file or directory)
open("/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/i686/libperl.so", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/i686", 0xbfa703e8) = -1 ENOENT (No such file or directory)
open("/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/sse2/libperl.so", O_RDONLY) = -1 ENOENT (No such file or directory)
stat64("/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/sse2", 0xbfa703e8) = -1 ENOENT (No such file or directory)
open("/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libperl.so", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\240q\231\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1241464, ...}) = 0
mmap2(0x977000, 1250976, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x977000
mmap2(0xaa2000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12a) = 0xaa2000
mmap2(0xaa7000, 5792, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xaa7000
close(3) = 0
open("/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libresolv.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=39391, ...}) = 0
mmap2(NULL, 39391, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7fe4000
close(3) = 0
open("/lib/libresolv.so.2", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\300\200v\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=76400, ...}) = 0
mmap2(0x766000, 75976, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x766000
mmap2(0x775000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe) = 0x775000
mmap2(0x777000, 6344, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x777000
close(3) = 0
open("/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libnsl.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libnsl.so.1", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 QW\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=101404, ...}) = 0
mmap2(0x572000, 92104, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x572000
mmap2(0x585000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12) = 0x585000
mmap2(0x587000, 6088, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x587000
close(3) = 0
open("/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libdl.so.2", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0PJ\224\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=16428, ...}) = 0
mmap2(0x944000, 12408, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x944000
mmap2(0x946000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0x946000
close(3) = 0
open("/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libm.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20\344\221\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=208352, ...}) = 0
mmap2(0x91b000, 155760, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x91b000
mmap2(0x940000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x24) = 0x940000
close(3) = 0
open("/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libcrypt.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libcrypt.so.1", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\340\366\2\0064\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=45288, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fe3000
mmap2(0x602f000, 201020, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x602f000
mmap2(0x6038000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x8) = 0x6038000
mmap2(0x603a000, 155964, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x603a000
close(3) = 0
open("/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libutil.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libutil.so.1", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0 \232\234\0054\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=15164, ...}) = 0
mmap2(0x59c9000, 12428, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x59c9000
mmap2(0x59cb000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1) = 0x59cb000
close(3) = 0
open("/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libpthread.so.0", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\350\224\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=125612, ...}) = 0
mmap2(0x94a000, 90592, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x94a000
mmap2(0x95d000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x12) = 0x95d000
mmap2(0x95f000, 4576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x95f000
close(3) = 0
open("/usr/lib/perl5/5.8.8/i386-linux-thread-multi/CORE/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\320\257~\0004\0\0\0"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0755, st_size=1606808, ...}) = 0
mmap2(0x7d5000, 1324452, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7d5000
mmap2(0x913000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x13e) = 0x913000
mmap2(0x916000, 9636, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x916000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fe2000
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fe1000
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7fe16c0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
mprotect(0x775000, 4096, PROT_READ) = 0
mprotect(0x585000, 4096, PROT_READ) = 0
mprotect(0x946000, 4096, PROT_READ) = 0
mprotect(0x940000, 4096, PROT_READ) = 0
mprotect(0x6038000, 4096, PROT_READ) = 0
mprotect(0x59cb000, 4096, PROT_READ) = 0
mprotect(0x95d000, 4096, PROT_READ) = 0
mprotect(0x913000, 8192, PROT_READ) = 0
mprotect(0x7cc000, 4096, PROT_READ) = 0
munmap(0xb7fe4000, 39391) = 0
set_tid_address(0xb7fe1708) = 29253
set_robust_list(0xb7fe1710, 0xc) = 0
futex(0xbfa70c84, FUTEX_WAKE_PRIVATE, 1) = 0
rt_sigaction(SIGRTMIN, {0x94e3d0, [], SA_SIGINFO}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0x94e2e0, [], SA_RESTART|SA_SIGINFO}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=10240*1024, rlim_max=RLIM_INFINITY}) = 0
uname({sys="Linux", node="localhost.localdomain", ...}) = 0
rt_sigaction(SIGFPE, {SIG_IGN, [FPE], SA_RESTART}, {SIG_DFL, [], 0}, 8) = 0
brk(0) = 0x885e000
brk(0x887f000) = 0x887f000
getuid32() = 0
geteuid32() = 0
getgid32() = 0
getegid32() = 0
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=56416256, ...}) = 0
mmap2(NULL, 2097152, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7de1000
close(3) = 0
mmap2(NULL, 135168, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7dc0000
open("/dev/urandom", O_RDONLY|O_LARGEFILE) = 3
read(3, "\206BZ\333", 4) = 4
close(3) = 0
time(NULL) = 1247747839
stat64("/usr/lib/perl5/site_perl/5.8.7", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat64("/usr/lib/perl5/site_perl/5.8.6", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat64("/usr/lib/perl5/site_perl/5.8.5", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat64("/usr/lib/perl5/vendor_perl/5.8.7", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat64("/usr/lib/perl5/vendor_perl/5.8.6", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
stat64("/usr/lib/perl5/vendor_perl/5.8.5", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
ioctl(0, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
_llseek(0, 0, 0xbfa70800, SEEK_CUR) = -1 ESPIPE (Illegal seek)
ioctl(1, SNDCTL_TMR_TIMEBASE or TCGETS, {B38400 opost isig icanon echo ...}) = 0
_llseek(1, 0, 0xbfa70800, SEEK_CUR) = -1 ESPIPE (Illegal seek)
ioctl(2, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfa707d8) = -1 ENOTTY (Inappropriate ioctl for device)
_llseek(2, 0, [10847], SEEK_CUR) = 0
open("q.pl", O_RDONLY|O_LARGEFILE) = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfa708b8) = -1 ENOTTY (Inappropriate ioctl for device)
_llseek(3, 0, [0], SEEK_CUR) = 0
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
fstat64(3, {st_mode=S_IFREG|0744, st_size=90, ...}) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
readlink("/proc/self/exe", "/usr/bin/perl", 4095) = 13
read(3, "#!/usr/bin/perl\r\n\r\nopen(FH,\"<q.t"..., 4096) = 90
read(3, "", 4096) = 0
close(3) = 0
open("q.txt", O_RDONLY|O_LARGEFILE) = 3
ioctl(3, SNDCTL_TMR_TIMEBASE or TCGETS, 0xbfa707c8) = -1 ENOTTY (Inappropriate ioctl for device)
_llseek(3, 0, [0], SEEK_CUR) = 0
fstat64(3, {st_mode=S_IFREG|0744, st_size=90, ...}) = 0
fcntl64(3, F_SETFD, FD_CLOEXEC) = 0
read(3, "#!/usr/bin/perl\r\n\r\nopen(FH,\"<q.t"..., 4096) = 90
write(1, "#!/usr/bin/perl\r\n", 17) = 17
time(NULL) = 1247747839
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({2, 0}, {2, 0}) = 0
time(NULL) = 1247747841
write(1, "\r\n", 2) = 2
time(NULL) = 1247747841
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({2, 0}, {2, 0}) = 0
time(NULL) = 1247747843
write(1, "open(FH,\"<q.txt\") or die;\r\n", 27) = 27
time(NULL) = 1247747843
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({2, 0}, {2, 0}) = 0
time(NULL) = 1247747845
write(1, "while (<FH>) {\r\n", 16) = 16
time(NULL) = 1247747845
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({2, 0}, {2, 0}) = 0
time(NULL) = 1247747847
write(1, " print ;\r\n", 11) = 11
time(NULL) = 1247747847
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({2, 0}, {2, 0}) = 0
time(NULL) = 1247747849
write(1, " sleep 2;\r\n", 12) = 12
time(NULL) = 1247747849
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({2, 0}, {2, 0}) = 0
time(NULL) = 1247747851
write(1, "}\r\n", 3) = 3
time(NULL) = 1247747851
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({2, 0}, {2, 0}) = 0
time(NULL) = 1247747853
write(1, "\r\n", 2) = 2
time(NULL) = 1247747853
rt_sigprocmask(SIG_BLOCK, [CHLD], [], 8) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
nanosleep({2, 0}, {2, 0}) = 0
time(NULL) = 1247747855
read(3, "", 4096) = 0
close(3) = 0
exit_group(0) = ?


これを見ると、

read(3, "#!/usr/bin/perl\r\n\r\nopen(FH,\"<q.t"..., 4096) = 90

とあるので、4096バイトまでは一気に読み込んでいることがわかります。
じゃー、4096バイト以上のファイルならどうなんだ説がでてくるわけで。

それでも、ちゃんとread文がうごいてしまうわけですよ。
非常に摩訶不思議なのですが、

 ・ファイルを削除したからといって、実体が即なくなったわけではない
 ・んなもんで、ファイルファンドルではまだアクセス可能だった!

なんか、うそくせぇ・・・でも、straceの動きとか、inodeの話を考えると、そうなんだよな。。

結論
 ・小さなファイルだと、読み込み中に上書き・削除したからといって、壊れることはない。
  だからといって、それで安心してるとまた足元すくわれるわけですが。


記事へブログ気持玉 / トラックバック / コメント


[Perl] usemymallocオプションが理解できない(mod_perl周り)

2009/10/19 02:39
現在文献調査中。

とりあえず、おじいさんがターゲットにする事が多い、Perl5.8.8 on CentOS 5.3では、

[root@localhost ~]# perl -MConfig -le 'print $Config{usemymalloc}'
n

となっていた。

えーっと、nという事は、OSのmallocつかうという事ですか。
ということは、mod_perlでメモリをOSへ返却するって事??

えーっと(^-^;)

二択で答えろと言われると、メモリ量が元に戻ってない、という事を言っちゃいますが、それは解放されている/されていないとは別問題なんですよねえ。

どういう事かというと、mod_perlでもuse文の書き方によって、プロセスに読み込まれていないモジュールがあったりして、これは一度読むとずっと腹に抱えたままになります。
なるたけそういう事はしないようにするのがmod_perlの流儀なんですが、CPAN全部網羅しきれないし、という所はありまして。

なので、変数のメモリ領域解放とは別に考えなくちゃなりませんねえ。


なんか、色々読んでると、結局再利用はしても、解放しねえという結論なんでしょうかねえ。。。

記事へブログ気持玉 / トラックバック / コメント


[グルメ] 悟空茶荘

2009/10/19 02:00
こんばんは。
酒を飲んだせいで寝付けないので、ちょいと今日行ってきた喫茶店について書く事にしたおじいさんです。
横浜中華街の悟空茶荘です。

悟空茶荘
 http://goku-teahouse.com/
 http://r.tabelog.com/kanagawa/A1401/A140105/14000153/

関帝廟からすぐ近く。
一階が店、二階が喫茶店になっております。
二時前でしたので、茶には早いかなという所もありましたが、さりとて、中華街をもう一週して入るのはなんだかね、という事で二階にあがりました。


この店、木造でして、内装が非常に落ち着いており、ゆっくりできます。
席数はそれほど多くない(テーブル数は一〇程度だったと記憶)ので、混雑する時は非常にまたされるのではないかと思われます。

お茶は、霍山黄芽を注文。これは黄茶です。こうちゃと読みます。
ツレは緑茶を注文。詳細はわすれました(^-^;)

霍山黄芽
 http://www.rouran.net/goods/10401.html

茶請けは、マンゴーの乾物、トウモロコシなどが出ました。
甘くていい感じ。

で、茶器がなかなかおもしろくて、ガラス製のポットを使っています。アルコールランプでその場で沸かしてくれます。
紅茶じゃないので、沸かしすぎると取り替えなんですがね。

霍山黄芽は、お茶が出るまで時間がかかる。
細い茶葉が浮いて立ってきたら、大丈夫。
ただしh、次のために1/4ぐらいお湯を残しておき、それにつぎ足すようにして飲む。
五回ぐらい継ぎ足しても平気です。
ちなみに、お湯の温度は85度とかです。さます必要は特にありません。紅茶じゃないので、沸騰したお湯はダメです。沸騰少し前のお湯を入れて、じっと待つという感じですね。

お味ですが、中国茶はそれほど詳しくなく、ちょっとなんと書けばいいのかわかりにくいですが、鉄観音に近い印象。
若干の塩味っぽいものがまじっている気がしましたが、非常に飲みやすい。
なんかね、このお茶がみずみずしい感じという表現をされると、春摘みダージリンはどんだけみずみずしいんだという感じが(^-^;)
それはともかく、バカスカ飲むものではありませんが、結局二時間で五杯ぐらい飲んでました。


まー、この店はおちついてゆっくりできます。
その後、「敦煌」というパフェを注文。

バニラアイスがフロートになってましたが、下はタピオカとコーヒーゼリー?が入っていました。
これも旨い。

そんな感じで、二時間居座っておりました。


この店、非常にお勧めです。
今まで行った喫茶店だと、今はなきレピシエ千駄ヶ谷店並のクオリティだと思われます、ハイ。

記事へブログ気持玉 / トラックバック / コメント


[Perl] print文の返却値

2009/10/15 13:25
こんばんは。
ヘルペスになってしまった、おじいさんです。
で、本日のお題はprint文の返却値の超勘違い。syswriteとちゃうやんか。。。

perldoc perlfuncから

print Prints a string or a list of strings. Returns true if successful. FILEHANDLE may be a scalar
variable name, in which case the variable contains the name of or a reference to the filehandle,
thus introducing one level of indirection.


てっきり、書き込んだBYTE数が返却されるもんだと思ってました。
ちなみに、syswriteは、予想通りバイト数でした。


syswrite FILEHANDLE,SCALAR
Attempts to write LENGTH bytes of data from variable SCALAR to the specified FILEHANDLE, using
the system call write(2). If LENGTH is not specified, writes whole SCALAR. It bypasses buffered
IO, so mixing this with reads (other than sysread()), "print", "write", "seek", "tell", or "eof"
may cause confusion because the perlio and stdio layers usually buffers data. Returns the number
of bytes actually written, or "undef" if there was an error (in this case the errno variable $!
is also set). If the LENGTH is greater than the available data in the SCALAR after the OFFSET,
only as much data as is available will be written.



実際ん所、print文ではその場で書き込みが行われているとは限らない。バッファリングしている場合はclose文で実際の書き込みが行われる。
NFSを使用している場合には、さらに遅い。OSがバッファリングして、NFSが・・・となるから。さらにそこから、RAIDがいて、DISKがいるので、どうなんだと。


で、おじいさんの疑問はprint文で失敗するケースってナンだよ?という所なのですよ。
それについては、うーん、まだわかりません。

記事へブログ気持玉 / トラックバック / コメント


[雑記] 帰還

2009/10/13 17:24
ダイビングで、酔う→半日動けず。
ともかく、五体満足で帰還しました。


記事へブログ気持玉 0 / トラックバック 0 / コメント 1


[Tech] えーっと何やってんすか>初音ミク&ロボ(^-^;

2009/10/07 00:12
Ceatec行きたい!
と行っても、旅行行くのですが。
で、そのCeatecでうらやましいほどアホなものがあるそうで。

歌うロボット、YouTubeピアノ――CEATECで見た未来の音楽
 http://ascii.jp/elem/000/000/465/465651/
 →音が一番いいかな?

「ワールドイズマイン、歌います!」 ヤマハ、“しゃべる”VOCALOIDロボ公開
 http://www.itmedia.co.jp/news/articles/0910/06/news089.html
 →音割れがひどいです。。

中身は、産総研のHRP-4Cなんですがね。
 GIGAZINEさん
  http://gigazine.net/index.php?/news/comments/20090316_hrp4c_movie/


これはなんというか、研究者としてこれで食っていけるとするなら、うらやましい。
でも、結構首を振ってる所とか奇妙にリアルで、怖いんですよ。ぱっと見では区別がつかない口パクですし。


海外の反応がみてみたいぞ、これは(^-^;)

記事へブログ気持玉 / トラックバック / コメント


[Perl] mod_perl中のnext文で落ちた・・・よくわからん・・

2009/10/03 22:39
こんばんは。
危うく、「ここからが本当の地獄だ!」(ベジータ)状態になるところでしたおじいさんです。
まあなんとか・・・
で、今日のお題は同僚のMから言われた、mod_perlがSEGVで落ちる件です。

以下のスクリプトを、mod_perl上で動かすと、SEGVで落ちるんですよね。

#!/usr/bin/perl

print "Content-Type: text/html\n\n";
print "here\n";
next;


これは、会社のCentOS4.26、httpd2.0.63だと思う、mod_perl1.99_16だったと思うという環境で発生したのを確認したのですが、自宅でCentOS5.3、httpd2.2、mod_perl2.0.4では発生しないのですよ。

なんか他に条件でもあるんでしょうかね。
とりあえず、ちょーよくわからん、SEGVでmod_perlが落ちる時は一度これを疑ってみては如何でしょうか?

#すまんです、M・・・

記事へブログ気持玉 / トラックバック / コメント


[本] 頭がよくなる照明術

2009/10/01 23:01
こんばんは。
地獄から生還したおじいさんです。さーて、夏休みだぞーってもう秋ですが。
とりあえず、一本、本のエントリです。



頭がよくなる照明術
 http://www.youtube.com/watch?v=QBsaJ6V-63k

遅ればせながら、部屋の模様替えを始めたので、買ってみた。

現在おじいさんは
 ・和室2K
に住んでいるのですが、ちょっと本があふれてしまっているわけですよ。
それでしょうがないので、模様替えを仕様と思ったわけですね。

で、前々から参考にしたいなーと思っていた本をかってみたわけですよ。
とりあえず、まず部屋を片付けることから始めないと。

ToDo
 ・漫画本四〇〇冊ぐらいを売り飛ばす。
  →現在、一五〇冊程度売り飛ばした所。
   ちなみに、ラノベはたぶん一〇〇〇冊以上あるんじゃないでしょうかね。
   そのうち二〇〇冊か三〇〇冊ぐらい売るかなあ。
 ・本棚を六個ぐらい買ってくる。これで、本が全部棚におさまって、空きができるはず。

ようやくその後に、照明とか模様替えとかそういうレベルになるわけでして(^-^;)

照明はこの本を読むと、ポイントは

 ・リラックスするには、真っ白の蛍光灯はよくない。夕日の白熱灯がよい。
 ・間接光:一端壁や天井に光を当てて、部屋を明るくする。
       できれば直接目に入らないようにする→緊張するから
 ・睡眠の話は蛇足なので、飛ばして良い。
 ・クリップライトなどを洗面台につけると、化粧がやりやすくなるよ

間接光の威力は絶大です。部屋がひろくなった感じがします。一気に雰囲気がやわらかくなります。
ただし、部屋がごちゃごちゃしていると、ごちゃごちゃ度も数倍増しという感じ。
まあ、間接光の部屋でリラックスしてから寝る前に本を読みたいですねえ。

という所のようです。
で、先週にちょいと秋葉原のYAMAGIWAリナビ館で色々と明かりを観察してきたのですが、
これなんかいいなー、けど高いなあと。



しかし、Amazonで欲しいなと思う奴とか、実際に見て欲しいなと思う品がなぜことごとく一万円を超えるのだ。。。
困ってしまいますねえ。

とりあえず、クリップライトと蛍光灯でがんばりますか。。



なんか、その前にキーボードを買ってこないとダメのような気がしてきた。
ESCとF3キーがぼろぼろですわ。。。
記事へブログ気持玉 / トラックバック / コメント


[見物] 東京ゲームショウ行ってきた

2009/09/29 00:23
こんばんは。
なんか色々書く事がたまっとりますが、ターンが回ってきません。
本日は、TGSにちと顔をだしてきたよー、という話です。


おじいさんは、この歳になってまだゲームショウに行ったことがなかったんですよ。
で、今回はたまたま時間があいたので、行ってみました。

幕張・・・遠いです。

で、当日券の売り場・・・入り口から遠いです。

それだけで結構へこたれました。

入った直後に、KOEIとTEKUMOの共同ブースがありまして、NINJA GAIDENΣ2のデモがお出迎え。
スクリーンがでかい・・・

しかし、一般日という事もあって、すごい人でした。
基本的に試遊台は三〇分待ち。それかそれ以上か、それともすでに整理券は配布済みという状態。
やあ、すごい状態。



 KOEI・TEKUMO
  とりあえず、どこからどう入ったらいいのかわからん状態。
  戦国無双の新作のトレイラーは見てきた。

 武将ブース
  信長、秀吉、家康、伊達政宗、信玄などの鎧が展示されておりました。
  ほほーと思っていたら、BASARAと無双の試遊台も。
  なかなか人が入っておりました。

 スクエニ
  FF。それと、ドラクエのスライムが空中を浮いておりました。
  FF以外はあまり印象にない感じ。

 コナミ
  メタルギアの続きと、ウイイレの新作が。
  ウィイレはモーションがほんと細かい。なんか、画面が本当にテレビで試合をみてる感じになってきました。

 GT
  やー、これ実写と言われたら信じてしまいますよ。
  綺麗すぎ。

 マイクロソフト
  XBOXの試遊台は一杯でした。

 カプコン
  ほほー。BASARAは秀吉後ですかorz
  他にも期待の新作が多くでてましたねえ。

 コスプレとか
  基本的にレベルが高かった。これはすばらしい・・・

んな所です。
その後、F1バーに行きましたよ。大変でした。

記事へブログ気持玉 / トラックバック / コメント


[グルメ] 今半 上野広小路店

2009/09/25 00:08
こんばんは。
Perlのsortに関する、というかメモリ解放に関するネタを調査中なので、とりあえずグルメネタを。

今半 上野広小路店
 http://r.tabelog.com/tokyo/A1311/A131101/13005082/
 →つーか、今、本家のページ落ちてますね(^-^;)

予約して入りました。個室です。いやあ、個室はいいですなあ。
六畳ぐらいで、掘りごたつ形式。
床の間には掛け軸もあり、静かでマッタリできます。

六時前に入って、結局一〇時閉店まで飲みながら、うだうだとおりました。

さて、頼んだ料理はコースの扇、特上です。極上にならなかったのは、財布を心配したからで。
まあ、肉がちょっと違うだけというので、特上にしました。

で、メニューはこんな所です。

 ・旬菜:焼き魚とお新香は覚えてるんですが、もう一品・・・なんだっけな。
 ・牛肉の鮨
 ・すきやき:説明を受けたけれど、酒入ってたので忘れた。野菜も入ってました
  →味噌汁(赤味噌)、ごはんつき
 ・デザート:アイス。

すき焼きは女中さんがずっと焼いてくれました。
非常に上手で、もう食べるのに集中できましたねえ。

 おじいさん:イクスピアリ店では一枚目だけやいてもらった覚えがありますが
 女中さん:ええ、イクスピアリ店は、カップル様が多いので、一枚だけ焼いて、お二人でという事もあります

のような事を言っておりました。
ツレと爆笑しておりました。初耳です(^-^;)


なんというか、今半は高いですが、いつ行っても味は保証できるって店ですねえ。
あたしゃー、この店以上のすき焼きというと、神戸牛の時計屋ぐらいですか?
他は知りません。

行くと、食べていると幸せになれる店です。
記事へなるほど(納得、参考になった、ヘー) ブログ気持玉 1 / トラックバック 0 / コメント 1


続きを見る

トップへ

月別リンク

たまには呪文をとなえてみるか:仕事版/BIGLOBEウェブリブログ