むしろ一昨日参ります。
シャイニング・フォース 黒き竜の復活(シャイニング・ワールド)
あー、懐かしいっすね、セガのファイアーエムブレム(←なんたる言い草かっ)、ゲームボーイアドバンスでリメイクですかぁ。我が家をあさればオリジナルのメガドライブ版が出てくるですよ。
今は任天堂サイドで“マリオテニス”とか“マリオゴルフ”とか作っているキャメロットの高橋(兄)が、当時はセガ専属の様に活動していたクライマックス時代に作成した最後のゲームで(←ってマニアな知識だな、おい)、その後高橋氏は株式会社ソニックを立ち上げてシャイニング・フォースII、外伝、IIIと作っていってましたねぇ。外伝あたりから付いて行けないですけど、やっていないので。
ゲーム自体はファイアーエムブレムと違ってキャラの生き返しが可能だったりとかして難易度低め、かつちょっと大味な感じでした。が、それ故、当時からゆるかった私にはちょうど良い難易度だったりしまして、例えRPG系といえどもシミュレーションゲームが嫌いだった私に開眼さえてくれた一本だったりします。
ちなみに、当時の私はセガをこよなく愛していたりもしましたから、「足りないジャンルは外注しまくってでも自社で埋める」戦略にかなり付き合ってたりもしました。「セガのゼルダ」とか「セガのファイナルファイト」とか……。
たぐ - game
(0)
先日発売されたピクミン2の評価が頗る高い様で楽しみであります。楽しみでありますが私はまだ購入しておりません。なぜなら未だ前作をプレイ中でありまして(←先月お安く購入)、コレを片付けておかない事には次に進めないなんて思っているからに他なりません。
が、最近その優先度が高くて然るべきピクミンよりも全然遊ぶ頻度の高いゲームが、ゼルダコレクション内の初代“ゼルダの伝説”だったりするのです。
タイトル画面がダーンと表示された時には「そうそう、コウだった!」と懐かしく思ったものの、いざ遊び始めてみるとそれはもうそこはかとなく忘れていたりしまして(←オリジナルを遊んだのは確か中学生でした)、なんだかとってもいい感じ。斜めに動かないリンク(←主人公キャラ)も逆に新鮮だったり、チープなファミコンならではの画面も、やっている内に馴染んでしまって違和感を感じなくなってしまいました。
「L5のダンジョンをクリアしたので、これからL6のダンジョンを探しまっす」辺りで奮闘中。
いやしかし、こんなに難しかったかね、戦闘は。謎解き楽勝でサクサク進むのに戦闘ヘタ過ぎて死にまくってますよ。中学生の私は今の私より偉大だ。
たぐ - game
(0)
今年も県外から長崎へバイクでいらっしゃった方をお見かけします。日本の西の果てまでお疲れさまですー。私も計画してどこかへ行けば良かったと羨ましいですわ。
そんなわけで、今年も連休中は自宅におります。平日に遊びに行ける私の様な輩は、休日にしか遊びに行けない人達の為に少しでもスペースを開けて差し上げねばならないのです。とかわざとらしく殊勝な事を言ってみますが、実際は人ごみとか渋滞とか大嫌いだからであります。
ただ、今年は例年と違いまして仕事をしていないのがちょっと新鮮。例年だと、「連休とか関係なく働かせて頂いております」とかいう感じだったのだけど、今年は「連休とか関係なく連休し通しでございます」とかそんな感じ。あはあはあは
関係ないですが、ゴールデンウィークというか、スペインのヘレスサーキットでGP(←オートバイの方ね)が開催される度に思い出すのが若井伸之という選手が亡くなった事(←今後はそれに「鈴鹿でGPが開催されると加藤大治郎が亡くなった事」が追加されるなぁ)。レース中ではなく予選中に、しかもピットレーンに飛び出して来た観客を避けようとして起こった事故……。まぁ、世間一般モータースポーツファン的には、この時期セナなんでしょうけどね。
たぐ - たくぅさん
(0)
無事にガノン(←ラスボス)討伐に成功。これでも昔はめずらしかった開発者クレジット入りエンディング(←10秒で終わるけど)も拝見。
さー、次は“裏ゼルダ”か“リンクの冒険”か。
たぐ - game
(0)
翻訳JavaMonitor Help 1
素晴らしや。今後にも期待。
たぐ - webobjects
(0)
古めの電源タップに掃除機を繋いで部屋の掃除をしていたら、タップの付け根あたりが降り曲がっていた為か断線して火を噴いた。丁度目に入っていた時だったので事なきを得たけれども、「あぁ、本当に火を噴くのね」なんて思った。
危ないったらありゃしない。ホコリ積もりによる漏電ともども気を付けよう。
たぐ - たくぅさん
(0)
ほとんどのRDBMSには初期値の機能(←INSERT文で値を渡されない場合に挿入する値を指定する)がありますが、WebObjects(と言うか EOF ですが)では似た様な処理をEOモデル側に実装する事ができます。EOモデルはRDBMSをJavaで表現したモノとでも考えて下さい。
ソフト的にやりますからいくつかの方法があって(コンストラクタに入れたり、setterメソッド追加したり、validateForSave() 辺りに書いたり)、それぞれ微妙に動きやタイミングが変わりますからその時々で最適な方法を選択すべきですが、私が望む挙動というのは大体 awakeFromInsertion() メソッドをオーバーライドする事でOKだったりします。
例えばこのアプリでは日記の登録日時を dates という名前で保存する様にしていますが、件のメソッド内で日時を取得し設定しています。仕様上、元のメソッドも呼ぶ方がいいので
public void awakeFromInsertion(EOEditingContext ec) {
super.awakeFromInsertion(ec);
if (this.dates() == null) {
this.setDates(new NSTimestamp());
}
}
みたいな感じです(←実際は if で囲っていないけど)。
ちなみに、ec.insertObject(anObject) などとして EOEditingContext に挿入した時点で有効になるのも何かと便利なのです。
たぐ - webobjects
(0)
なんかゲームやったりとかDVD観たりとか(←TRICK 3見終わりました)ばかりやっている感があるのですけども、一応ちゃんと WebObjects 周りの事もやってまして、いや、やっているというか本を読んでおさらいしているだけなんですけど……。まぁ、じわじわと。
政治家さんが国民年金未納云々とかで辞めちゃったり辞めさせられちゃったりしていますが、恥ずかしながら私も未納の時期が力一杯あります(←未加入ではなく未納です、だって勝手に 以下略)。むしろ未納の期間の方が長いです。ここ二年程は納める事ができてますけど、無いモノは無かったんです。迷惑かけてごめんなさい。
遡って納められる様に改正してくれれば、納める気持ちだけはありますよ、稼げるかどうかの方が問題ですけどー。貰える様になる前に死んでしまうから納めませんなんて言いません。今の方法はどうあれ、年金という制度自体は素晴らしいと思ってますので。
「一応、私はまだ十代です。正確には1f(←16進数)ですが」みたいなネタを何気に思いついてみたものの、周りは一般人ばかりなので通用しない。指を立てた状態を1、折った状態を0とすると「まだ片手で数えられる歳」とかも。……ごめんなさい。
たぐ - たくぅさん
(0)
任天堂の新型携帯ゲーム機“Nintendo DS”正式発表!(SOFTBANK GAMES)
タッチスクリーンもワイヤレス通信もGBAとの互換性も全て本当だった。メディアが二つ刺さるのも興味深い(←昔、ファミコンとメガドライブにカートリッジが刺さるカートリッジってのもあったけど)。
GBA互換ありって事でかなりの確率で普及するでしょうね。私はGBASPをスルーしているので買ってしまう事でしょう。お金さえあれば、ですけど(←GCより高くなりそうだからなぁ)。
ゼルダ最新作がE3で発表に! 宮本リンク見参!!(SOFTBANK GAMES)
次のリンクはリアルらしい。って事で“時のオカリナ”調のグラフィックが公開されております。私は“風のタクト”のカートゥーン調も好きだったのだけど、評判悪かったのかしらん。まぁ、その次はまたカートゥーン調に戻るかも知れないけどね。
ーー追記ーー
E3(任天堂)
公式のE3ページ日本語版。GCやGBAのゲームのスクリーンショットとムービーも公開されてます。GCでは“Donkey Kong Jungle Beat(仮称)”、“Paper Mario 2(仮称)”。GBAでは“Legend of Zelda: The Minish Cap(仮称)”、“Super Mario Ball(仮称)”辺りに注目。GC版“Mario Tennis(仮称)”は言わずもがなって事で。
たぐ - game
(0)
WebObjects はデフォルトでセッション管理機能付きです。普通に作っていればセッション管理機能が組み込まれてその管理も楽々、むしろセッション管理機能無しのアプリケーションを作る方が難しかったり面倒だったりします。
なのにあえて当サイトでは一部を除きましてセッション管理機能を排除する方向で作られています。それは別にセッション管理が嫌いとか無駄とか思っているのではなくて、この手の動的生成の静的ページではあまりよろしくない問題が生じるからであります。
WebObjects でセッション管理機能を有効にしたページでは、URIにセッションIDとコンテキストIDというモノが含まれ動的なモノになります(←セッションIDは Cookie に保持させる事も可能)。WebObjects はこの二つを元に個別のページを生成し返しますので必要なモノですし、永続的ではないにせよ一意でなければなりません(←例えば二人のユーザが同時にアクセスしたとして、セッションIDとコンテキストIDの組み合わせが重なってはならない)。そして、セッションIDには有効期限があります。
つまり、後でまた見ようとブックマークしたとしても、セッションIDの有効期限を過ぎた時点で無効になってしまうのです。エラーだけが返ってくる嫌なブックマークと化してしまうのです。「セッション切れてやがるから最初のページに戻りやがれ」とか言われてしまうのです(←変えられるけど)。
如何にゆるくやっているページであろうともブックマークやリンクは大歓迎でありますし、自分で利用する為にもできなきゃ嫌過ぎであります。
そんな事を解決すべく存在するのが Direct Action という仕組みです。プロジェクトのClassesグループ内に標準で作られる DirectAction.java というファイル内にメソッドを追加する事で(←WODirectActionを継承したクラスを自前で用意して、それに追加しても可)、任意の WOComponent を返す静的なURIに対応させる事ができます。
とりあえず件の DirectAction.java の中身を見てみましょう。
public WOActionResults defaultAction() {
return pageWithName("Main");
}
という記述があると思います。これを見てピンとくるかと思いますが、アプリケーションの最初のページを返す Direct Action です。ちなみに、返っているのは WOComponent でメソッドが返り値として指定している WOActionResults とは違いますが、WOComponent(←WOResponse も)は WOActionResults をインターフェースとして継承していますのでこれでも大丈夫です。むしろ public WOComponent xxxAction() なんてメソッドにする方法をずっとやってます、最初に勉強した時にこうだったので。
あと、少し決まりがありまして、“任意の名前Action”みたいにメソッド名の最後に“Action”を付けなければなりません。そして、その Dicrect Action をURIに含める場合は“Action”を省略しなければなりません。
URIの記述規則は、
http://ホスト名/アダプタ/アプリ名/wa/Dicrect Action名
となります(←自前でクラスを用意した場合は wa の後ろにそのクラス名を挿むとOK。というか、省略すると DirectActionクラスだと認識される)。
例えばこのアプリに検索用コンポーネント SearchPage.wo が含まれているとして、DirectAction.java 内に
public WOComponent searchAction() {
return pageWithName( "SearchPage" );
}
という記述がありますと、http://web-ya.jp/cgi-bin/WebObjects/ReiAre.woa/wa/search で“けんさく”ページが表示されるのです。
ちなみに上記URIは有効でして、表示される“けんさく”ページがセッションを使う一部のページだったりします。別にセッション機能を使わなくもできるのだけど、“かてごり”ページもあるし、検索結果をブックマークできなくとも問題ないだろうと手を抜いた次第でございます。
たぐ - webobjects
(0)
ドンキーコンガ2 ヒットソングパレード(任天堂)
えー、お正月休みが明けた辺りからでしょうか、めっきり一人で遊ぶ事はなくなり、たまに友人が来た時などに踏み絵的に強引にプレイさせる(←これすらも最近はなし)、みたいな使い方をしておりますドンキーコンガに2が登場であります。
使わずに放置されております“タルコンガ”コントローラが壊れてはいないかと一抹の不安を感じずにはいられませんが、この手のゲームが大好きでありますから買ってしまう事でしょう。
ちなみに昨日ちらっとご紹介しました“Donkey Kong Jungle Beat(仮称)”は、他のゲームでも“タルコンガ”コントローラを活用しようというモノみたいでして、こういう姿勢もまた良しであります。
たぐ - game
(0)
Mac OS X狙う新ウイルス、P2Pで感染拡大(ITmedia)
って事で、最近ちらほらと聞く様になりましたね、Mac OS Xを狙うウィルス。今のところ私はウィルスチェッカーの類いは使用しておりませんが、そのうち必要になってしまうかもね。
まぁ、今回のモノの様なのばかりだと必要にならなくてすみますが。
たぐ - mac
(0)
確かに10万円は超えませんでしたが9万円台でした……<修理代。
ターボのパーツ代だけで5万円以上するらしいので納得はできますが、痛いモノは痛いのです。そろそろアルバイトでも探すか。
たぐ - たくぅさん
(0)
WebObjectsではなくHTTPの領分ですがQueryStringというのがあります。URIの最後の方によく見かける、“?”以下の“=”でペアになって“&”で区切られていたりする文字列の事で(←やたらと説明的)、ページ間で値をやり取りする為のモノです。一部の文字やマルチバイト文字をエンコードする必要がありますが、URIに引数などを仕込む事ができるので非常に便利です。
非常に便利ですのでWebObjectsにもQueryStringを扱う仕組みが用意されています。そしてそれはDirect Actionを活用する為にもなくてはならないモノと言えましょう。
HTTP経由でいろいろなサービスを利用する時に送る要求や問い合わせをHTTPリクエストと言ったりしますが、WebObjectsではそれをWORequestオブジェクトに変換して様々な場面で利用します。今回のQueryStringも、そんなWORequest経由で扱うモノの一つです。
WORequestに用意してあるformValueForKeyメソッドを利用すると任意のキー名で渡された値を取得できます。WODirectActionでは request() というメソッドで利用中のWORequestオブジェクトにアクセスできるので request().formValueForKey("キー名") となります。例えば“key=aaa”といったQueryStringを受け取った場合、Direct Actionのメソッド内で
String aString = (String)request().formValueForKey("key");
とすると aString の中身は aaa となります。ちなみに、formValueForKeyメソッドはObject型として返すのでString型にキャストしています。
後はこの値を元に処理を行ったり、表示するコンポーネントへ渡したりすればよいわけなのですが、基本的にURIに埋め込まれた文字列で渡されて来ますから一発でStringとして取得したいし、場合によっては数値として、日付として取得したいです。Stringにキャストするくらいなら大して手間はかかりませんが、値を元にIntegerとかNSTimestampとか拵えるのは少し面倒です。
予想通りそんなメソッドも用意されておりまして、
String aString = request().stringFormValueForKey("keyName");
としたり、
Number aNumber = request().numericFormValueForKey("keyName", NSNumberFomatter);
としたり、
NSTimestamp aTimestamp = request().dateFormValueForKey("keyName", NSTimestampFormatter);
としたりできます(←下二つのformatterは“WOString.”辺りを参照のこと)。同じキー名で複数の値(←URI?key=aaa&key=bbb&key=ccc とか)を受け取った場合用に String で格納した NSArray として取得する
NSArray aArray = request().formValuesForKey("key");
なんてのもあります。
全てのメソッドが値が無かったり、“formatter”で整形できなかった場合に null を返すので、null が返ってくるかどうかで簡易入力チェックとしても使えますね。
たぐ - webobjects
(-1)
DirectActionなメソッドを追加すると(←自前のDirectAction.java系のファイルも同様)、WebObjects Builder側にも反映されて、WOHyperlinkのInspectorの“directActionName”attributeのポップアップメニューから選択できる様になります。“directActionName”を選択すると対応する“actionClass”も自動的に選択されます。楽々
そしてInspectorの右上の“+ー”ボタンから“Add Binding”を選択し、Attribute欄に先頭に“?”を付けた文字列を入力、Binding欄に渡したい値を入力すればQueryString付きのDirectActionHyperlinkの出来上がり(←左の画像は“aString=a”とした場合の例)。バインドする値を変数にすれば動的にいけます。
たぐ - webobjects
(0)
前回記事“DirectAction と WOHyperlink。”の様にして拵えたリンクのリンク先に「wosid=FmAzyQjh9X9G6YZetpx0CM」みたいな文字列が含まれている事に気がつかれるかも知れません(←気がつかなかった人は、今気がつけ、さぁ気がつけ)。これは最初の記事“DirectAction.”で少しふれましたセッションIDであります。
くりかえしになりますが、WebObjectsではデフォルトでセッション管理機能付きですから、最初にアクセスした時点でセッションIDが生成され管理機能を発動してしまいます。これはこれでありがたい動きなのですけども、“れいあれ”さんの様にセッション管理機能を排除する方向で運用したい場合には邪魔以外の何モノでもありません。
WebObjectsにはWORequestHandlerという抽象クラスがあります。RequestHandlerは受け取ったHTTPリクエストに合わせてどう処理をするか決めるモノで、デフォルトで3つ用意されています(←自前で作っても可。作った事ないけど)。
DirectActionのリクエストを受け取った場合、WODirectActionRequestHandlerというWORequestHandlerを継承したクラスを用いて処理を行い、必要がない限りセッション管理をする事はありません。が、特に指定のないリクエスト(←例えば初期ページをよばれた場合など。このサイトでいうとhttp://web-ya.jp/cgi-bin/WebObjects/ReiAreとか)の場合ではWOComponentRequestHandlerの方を用いられてしまい、セッション管理を始めてしまいます。しかしこれは、デフォルトのRequestHandlerがWOComponentRequestHandlerになっているでだけで変更可能ですから、WODirectActionRequestHandlerを使う様に仕向ける事で対処できます。
デフォルトのRequestHandlerは、プロジェクトに標準で組み込まれるApplicationクラスで管理されており変更可能ですので、Application.java内に記述されているApplicationのコンストラクタに
WORequestHandler directActionRequestHandler = requestHandlerForKey(directActionRequestHandlerKey());
setDefaultRequestHandler(directActionRequestHandler);
の2行を追記すると、デフォルトのRequestHandlerはWODirectActionRequestHandlerとなります。
そんなわけで、昨日書き忘れたネタでした。
ーー追記ーー
WOHyperlinkにwosidを付けないだけなら、wosid をキー名に、falseをvalue
でいける。と倉持さんより“けいじばん”(該当スレッド)で教えて頂きました。ありがとうございます。
たぐ - webobjects
(0)
市長も知事も年金未納な長崎市。仲間だ仲間だ、わーいわーい。とか思わない。
最近特に肩こりがひどくて、こりというより痛みが走りまくっているのが辛い。
ふと思い立ってWOMailDeliveryで遊んでみたが、矢っ張り日本人には少々面倒でもJavaMailだと思った。
Connector/J 3.0.12は差し替えて普通に使えてます。MySQL 4.0.20はまだ入れてません。いいかげんいちいちビルドするのもアレなので、これからはバイナリを入れてやろうかしらんとか思ってますのよね。
たぐ - たくぅさん
(0)
一括電遮断スイッチ付きのOAタップを使用しています。サーバやG5も接続されていて、外付けのHDDをバックアップする時にだけ引っ張りだして接続するのですが、たまに間違って電遮断しちゃう、ぽちっと。いや、結構頻繁にやってしまう、ぽちっと。今日なんて、切らない様に気を付けないと、と思いながらぽちっと……。
たぐ - たくぅさん
(0)
今後は本家で配布しているバイナリディストリビューションを使う方向で行きたい。て事で作業しました。
LinuxだとRPM版もあるのだけど、いろいろ分けてインストールしなければならないし、開発に使っているMac OS X向けパッケージとも微妙に違いがあるので普通のモノを選択。“MySQL Manual | 2.2.12 MySQL バイナリディストリビューションのインストール”を参考に問題なくインストールでき、今までのData領域もコピー、リネームして使えてます。
ただ、デフォルトのエンコードがujisではなくなりますので、JDBCドライバへ渡すURLを
jdbc:mysql://localhost/DB名?useUnicode=true&characterEncoding=EUC_JP&capitalizeTypeNames=true
と、ちゃんとエンコード指定をしてやらないと文字化けします。
そんなわけで、このれいあれさんアプリもreiare051u2となりまして、私的EOModelerで設定するぞ“Adaptor Info...”も上記の様に変更になりました。
(0)
PS2ゲームレビュー パサーの快感を堪能させてくれる意欲作「フットボールキングダム -トライアルエディション-」(GAME Watch)
わたくし、買う気満々でございます。
ナムコのちょっと変わったサッカーゲームって好きなんですよ。前あった一人称ゲー「リベログランデ」なんてのも買っていますし(←デキがアレだったのでほとんど遊ばなかったけど)。
たぐ - game
(0)
とりあえず2、3試合だけ遊んでみましたが、微妙です、そこはかとなくはてしなく微妙です。もう少し遊び込んでみないと分からない部分もありますし、トライアルエディッションなので正式版で改善される可能性もありますが、矢張りナムコ製サッカーゲームは「着眼点だけが面白い。遊ぶと惜しい」って評価は変わりそうにないかも。
ま、なんだかんだで次も買うがなー。
たぐ - game
(0)
“裏ゼルダ”はL4くらいで挫折してしまいまして、続編である“リンクの冒険”も無理っぽい難易度なのを思い出し気分が乗らないので、一気にニンテンドー64用の“時のオカリナ”に着手。あ、“時オカ”も難易度高めですけど、理不尽さをあまり感じないのです。
ただ、一旦始めちゃうと寝ても覚めてもな感じで他の事が手に付かなくなるのよね……。いい具合に記憶もリセットされているし。
たぐ - game
(0)
長崎も梅雨入りしたって事で、じめじめはっきりしないそれ風な天気になっています。今年の夏は自宅サーバ用のPCも増えたし、常用するコンピュータもPower Mac G5になってしまっているので(←去年まではノート系だった)かなりキツイだろうなぁ。
と言うか、この時点でかなりキツイんですけど。机の右隣にラックがあって一番下の段に二台並べて置いているのだけど(参考画像)、そこ辺りからもわっと熱気が広がっているのを肌で感じるです……。
今週また某M町役場に行く予定、スーツ着るの面倒くさ。また何やら修正して欲しいらしいのだけど、これ以上場当たり的にやってもらちが明かないので(←二転三転しているのよね)、いっその事最初から作り直させてくれないっすかねぇ。「どこが金出すんだ」って問題があるけど、この時点で私も十分に身を切ってますんで痛み分けしない?(笑い)
正直なところ、ちょっとウンザリしてきちゃったですー、気持ちが重いですー。
「Web系はないんですけど、VBで業務系の仕事ならあるのでやりませんか?」と言って頂く。そりゃまぁ、時間さえ頂ければできると思うけど、経験の無さからも前述のM町さんみたいにいつまでもダラダラ修正入れられる事態に陥りそうだし、結局どこも得しなさそうなので断る。つもり。
気持ちは非常にありがたいのだけど、「ウェブ屋さんだし、私」とか言っちゃう。
たぐ - たくぅさん
(0)
ProjectWONDER詳解
WebObjects用Framework群であるProjectWONDERの解説ページ、日本語では恐らく唯一。今後さらに拡充されるとの事で期待です、素晴らしや。
プロジェクトのCVSからビルドされた“くらもちビルド”も公開中なので、新しめバイナリ楽々導入も可能。
何度も言っていますが私は未だ手を出しておりません。その理由の一つに「英語読むの面倒い」というのもあったりなかったりするものですから、「これを機会に出しちゃおうかな」と奇麗に乗せられてしまうかも。や、こうやって取り上げている時点でほとんど乗っちゃってますけど。
たぐ - webobjects
(0)