忍者ブログ
[PR]
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。



2025/11/29 06:22 |
Symfony1.4 11日目
前回の続き


とりあえず1.4にバージョンアップした。
http://www.symfony-project.org/tutorial/1_4/ja/upgrade


フォームのテストを行います。
http://www.symfony-project.org/jobeet/1_4/Doctrine/ja/11
のっけから疎結合が云々よくわからないことを言ってますがどうせ使うことはないのでいいです。
Symfonyの部品を使うくらいならZFを使った方が楽でしょう。
まあsfFormが使えれば楽かもしれませんが使い方がわからん。


まず作成するのは新規記事作成ページを取得するメソッドチェーン。
test/functional/frontend/jobActionsTest.php
1
2
3
4
5
6
7
8
9
10
11
<?php
  //記事新規作成
  $browser->info('3 - Post a Job page')->
  info('  3.1 - Submit a Job')->
 
  get('/job/new')->
  with('request')->begin()->
    isParameter('module', 'job')->
    isParameter('action', 'new')->
  end()
;

http://symfony.localhost/frontend_dev.php/job/new
のリンクに行ったらjobモジュールのnewアクションが起動するよ、という内容です。
早速実行してみます。

>php test/functional/frontend/jobActionsTest.php

> 3 - Post a Job page
>   3.1 - Submit a Job
# get /job/new
ok 16 - request parameter module is job
ok 17 - request parameter action is new


正しく動作したようです。
次に、フォームに値を突っ込むテストをしてみます。
なんか複数の事柄がまとめて書かれているのでいまいちわかりづいらいんですが、順番に見ていきます。

>より明確にするために、JobeetJobForm の configure() メソッドの終わりで
>次のコードを追加することでフォーマットを job[%s] に変更してみましょう:

lib/form/doctrine/JobeetJobForm.class.php
1
2
<?php
  $this->widgetSchema->setNameFormat('job[%s]');

これはフォームのフィールド名を変えます。
デフォルトではフィールド名はフォームクラス名そのまま、
1
<input type="text" name="jobeet_job[company]" id="jobeet_job_company" />

となっています。
setNameFormat()を実行することで任意のフィールド名に変更することができます。
上記の場合、
1
<input type="text" name="job[company]" id="job_company" />

となります。
なにが明確になるのかはよくわからないのですが。

>すでにリンクのクリックをシミュレートするために click() メソッドを使いました。
>同じ click() メソッドはフォームを投稿するために使うことができます。
>フォームに関して、メソッドの2番目の引数としてそれぞれのフィールドに対して投稿する値を渡すことができます。
>実際のブラウザーのように、ブラウザーオブジェクトはフォームのデフォルト値と投稿された値をマージします。

何度読んでも意味がわかりませんが、click()メソッドに値を突っ込めば$_REQUESTに追加されるよ、という意味のようです。
$_GETなのか$_POSTなのかはいまいちわかりません。

test/functional/frontend/jobActionsTest.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
  //記事新規作成
  $browser->info('3 - Post a Job page')->
  info('  3.1 - Submit a Job')->
 
  get('/job/new')->
  with('request')->begin()->
    isParameter('module', 'job')->
    isParameter('action', 'new')->
  end()->
 
  click('Preview your job', array('job' => array(
    'company'      => 'Sensio Labs',
    'url'          => 'http://www.sensio.com/',
    'logo'         => sfConfig::get('sf_upload_dir').'/jobs/sensio-labs.gif',
    'position'     => 'Developer',
    'location'     => 'Atlanta, USA',
    'description'  => 'You will work with symfony ',
    'how_to_apply' => 'Send me an email',
    'email'        => 'for.a.job@example.com',
    'is_public'    => false,
  )))->
 
  with('request')->begin()->
    isParameter('module', 'job')->
    isParameter('action', 'create')->
  end()->
;

新規記事作成ページを取得し、[job]フォームの各フィールドに値を記入し、「Preview your job」のリンクをクリックするとjobアクションのcreateメソッドが動きますよ、の意味となります。
実行してみましょう。

>php test/functional/frontend/jobActionsTest.php

Parse error: syntax error, unexpected ';', expecting T_STRING or T_VARIABLE or '{' or '$' in \symfony\test\functional\frontend\jobActionsTest.php on line 91

お。
なんか最後がend()->;ってなってるせいです。
end();にすると実行に成功します。

>php test/functional/frontend/jobActionsTest.php
> 3 - Post a Job page
>   3.1 - Submit a Job
# get /job/new
ok 16 - request parameter module is job
ok 17 - request parameter action is new
# post /job
ok 18 - request parameter module is job
ok 19 - request parameter action is create

ちなみに投稿したデータは挿入に成功すれば実際に保存されます。
ただし、バリデータやフィールドをチェックしておらず、'logo'=>'a'とか'hoge'=>'fuga'とかありえないデータを突っ込んでもテストに通ってしまいます。

あとテストを実行するたびにjobeet_testのデータが総刷新されるんだがなんだこれ。
PR


2010/12/17 22:54 | Comments(0) | TrackBack() | PHP
シヴィライゼーションレボリューション 難易度天帝でテクノロジー勝利
「宇宙船を組み立ててアルファ・ケンタウリまで到達する」という、本作で最も難しい勝利条件になっています。
ただでさえ研究・生産に重いハンデが課せられ、敵AIが全力で喧嘩を売ってくる天帝で、敵より早くテクノロジーを研究して一刻も早く宇宙船を飛ばさなければなりません。
が、実は非常に簡単な突破方法があったり。

シナリオ「電光石火」難易度「天帝」文明「アステカ」でスタートします。
モンテスマの特殊能力「戦闘に勝つと全回復」「寺院がビーカーを産出する」がルール上非常に有利です。
都市を三つ持って始まりますが、以下の場合はやり直します。
・都市が海で隔てられている
・前線になる都市が複数ある
・内陸かつ平地しかない(ビーカーとハンマーがどちらもない)
理想は他文明と出会いにくい小島の森林地帯です。

最初のターンに産出物を図書館に変更。
アルファベットがなかったら寺院にします。

労働者の管理は、図書館と寺院を建てるまでは生産力優先、その後はずっと科学優先です。
それ以外の建築物は時間もないし特にこれというのはありません。
穀物庫や工房あたりを建てましょう。
大学は間に合いません。

交易は全都市で常時ビーカーに振ります。
ゴールドはあまりたまりませんが、たまり次第図書館や寺院の緊急生産に使います。
貯蓄ボーナスの開拓者は定住させず、第四都市を建てます。

社会制度は民主主義を取ったら民主主義にします。
取得した際に出る選択肢で社会制度を変えた場合、無政府状態が発生しないみたいです。
土地が空いていれば(特に半島)民主主義より先に法律を取って、共和制の間に開拓者を送り込むと優秀な研究都市になります。

テクノロジーは、ひたすら安い順に研究します。
民主主義だけは少しだけ優先します。
ただし、一番乗りボーナスが残っているようであれば狙ってみるといいでしょう。

偉人は二人くらい出ます。
大科学者が出たら、研究に使うよりはビーカー産出が最も多い都市で使うほうがいいと思われます。
大建築家が出たらアレクサンドリア図書館や空中庭園を建てるといいでしょう。

外交は、後進国がいるようであればテクノロジーの取引をしてみてもいいかもしれません。
まあお金がないのであまりたいしたことはできませんが。

ユニットは最初から弓兵が3体いますが、軍団にして前線都市に置いておきます。
万一宣戦布告されても、序盤のうちならレギオン単体とかなので弓兵軍団がだいたい撃退してくれます。
連戦も昇進とモンテスマの特殊能力「戦闘に勝ったユニットは全回復する」でまったく問題ありません。
戦えば戦うほど強くなるスーパー弓兵軍団。
たまに弓兵じゃなくジャガー戦士になりますが、その場合は悲しみに暮れながら弓兵を生産しましょう。
こちらの防備は弓兵軍団のみで行い、都市では基本的に戦闘ユニット生産を行いません。
もし都市の手が空いてしまうようであれば、防衛隊を増やしてもいいし、スパイあたりを送り出してみても面白いかもしれません。

で、現代に到達するとテクノロジー勝利。


実は電光石火シナリオのテクノロジー勝利条件は「現代に到達すること」。
現代に到達する条件は「テクノロジーを24個開発すること」です。
なので安いテクノロジーを延々研究してるだけでテクノロジー勝利できるんですよね。
試したところでは、一度たりとも戦闘を行うことなく勝利することすらできました。
AIとの開発競争は比較的ぎりぎりなので、恐喝されても断りましょう。

これでも開発競争に負けることもあるのですが、もしかしたらもっと効率のいい方法もあるかもしれません。
試していませんが以下みたいな戦略があるかもないかも。
・最初期にレギオンR(天帝なのでおそらく無理)
・数学前後で一旦金に振って緊急生産カタパルトR(民主主義を後回しにする必要有り)
・最初に出会った文明に「こんにちは、死ね」して経験値稼ぎ(終盤初戦闘だと弓兵が殺されるので)

以上で難易度天帝勝利の全実績が解除されました。

難易度天帝で制覇/文化/経済勝利
http://yuubiseiharukana.blog.shinobi.jp/Entry/423/

難易度天帝に挑む
http://yuubiseiharukana.blog.shinobi.jp/Entry/419/


2010/12/15 21:46 | Comments(0) | TrackBack() | ゲーム
買ったものリスト 2010/12/12
半月以上ダーウィンが来た放映無しってどういうことだよ!

あと石原の馬鹿は何処まで行くんだろう。


シューティングゲームサイドVol.1
☆☆☆☆

最初にこの話が出たとき絶対ネタだろうと思って完全にスルーしてたらいつのまにか本当に出てた。
ゲームサイドですら滅びたのに今時STG一点突破って無理だろ、と思ったらゲームサイドの倍の厚さになってるんですが。
大丈夫かよこれ。
まあ紙質が厚いだけでページ数は変わってませんけどね。

中身はとにかくインタビューが豊富で読み応えたっぷりです。
てかZUN氏とか出てるんですが。
攻略は全くありませんのでゲーメストやアルカディアを期待していた人は注意。

STGだらけで実に素晴らしいですが、このペースだとすぐに紹介するゲームが無くなってしまいそうなんだがどうするんだろう。


ソードアート・オンライン6 ファントム・バレット 川原 礫
☆☆☆☆

毎度毎度仮想現実大好きな作者による仮想現実もの。
1巻や4巻のような打ち切り食らったかのような無理矢理な終わらせ方がなく、最後まで読めて結末も納得できるものになっていました。
ただ彼の豹変だけは急すぎるというか本性を出す必要はなかったのではないかという気がしないでもないがどうなんだろう。

で、いつになったら現実世界でALOやSAOやGGOは完成しますか!


侵略!イカ娘 6 安部 真弘
侵略!イカ娘 8 安部 真弘
☆☆☆☆

8巻を購入して過去ログを見ていたところ、7巻は前報告してたがよく見たら6巻がなかったのでついでに。

アニメ化しても原作は変わらず淡々とどうでもいい日常が続いています。
決して手放しで面白いと言える作品ではありませんが、でも何故かついつい読んでしまうこの不思議。
地味に単行本で挿入されてる1コマは面白い。

そういえばあの頭巾を外すと死ぬらしいが、中にはやはり賞味期限の切れたプリンが入ってるんじゃろか?


End of Eternity

その昔エンドオブエタニティというゲームがあってじゃのう、体験版が公式ネガキャンと畏れられていたものじゃよ…
私も見事に体験版をプレイしてなんだこのわけのわからないゲームは、とスルーしていたのですが、
http://www.nicovideo.jp/watch/sm9550747

こんな動画を見せられては買わざるを得ない。
まさかシャドウハーツの血が流れてるとは夢にも思わなんだ。

ということで2010/12/07に買ったのだが何気に2010/12/09にプラチナコレクション発売。
なんてこったい。
グラフィックはかなりすごくて、今までプレイした360ソフト内でもトップクラス。
しかもプリレンダのただのムービーによる誤魔化しではなく、服を着替えるとカットシーンにも反映されるというのにびっくり。

ただ進捗はというとやっぱりというかなんというか戦闘が意味不明でルキア内で詰まり中。


2010/12/12 20:41 | Comments(0) | TrackBack() | 買ったもの
今週の実績 2010/12/12
Civ. Revolution JP 1000/1000 コンプリート
PAC-MAN CE DX 200/200 コンプリート

2010/12/11の実績

End of Eternity

プロローグクリア 10
プロローグをクリアしました。

Fallout: New Vegas

The Legend of the Star 20
"The Legend of the Star"を完了

2010/12/10の実績

Doritos Crash Course

I’m Big in Japan 20
Finished the Japan Levels

Euro Star 20
Finished the Europe Levels

Roadrunner 10
Run at top speed when you're about to wipe out

Harm's Way

First Win 30
Win a game in Single Player

One shot kill 30
Hit the windshield of a driver

First Blood 20
Wreck an opponent as a shooter

Flat Tire 20
Hit the tires of a driver

2010/12/09の実績

Fallout: New Vegas

Blast Mastery 15
エナジー・ウェポンで10,000ダメージを達成

Doritos Crash Course

American Hero 20
Finished the USA Levels

2010/12/07の実績

Kinect アドベンチャー!

旅人 30
アドベンチャー「世界一周!」の報酬を受け取った

名役者 30
リビング スタチューを 6 つ録画した

Fallout: New Vegas

Stim-ply Amazing 15
スティムパックで10,000ポイントのダメージを回復

Civ. Revolution JP

君の瞳に乾杯 45
すべての偉人をアンロック!

End of Eternity

ファーストコンプリート 10
初めてミッションをクリアしました。伝説のPMFを目指しましょう!

ファーストコンタクト 10
初めて敵を倒しました。ここからスタートです!

クレイジータクシー

アーケード C-ライセンス 5
アーケードモードでCライセンスを獲得した

アーケード A-ライセンス 15
アーケードモードでAライセンスを獲得した

2010/12/06の実績

Fallout: New Vegas

Love the Bomb 15
爆発物で10,000ダメージを達成

PAC-MAN CE DX

タイムトライアルクリア 15
タイムトライアルでクリアしよう!

全てのメイズビジュアル 15
全てのメイズビジュアルでゲームをクリアしよう

1,000,000点 30
1,000,000点を達成しよう!(スコアアタック5分)

ノーミス 15
スコアアタック(5分)をノーミスでフィニッシュ!

ぐわんげ

シシンの技量 10
シシンでゲームをクリアーしました。

お小遣い 15
ボス戦で銭アイテムを1000枚取得しました。

2010/12/05の実績

Fallout: New Vegas

Desert Survivalist 15
食料で10,000ポイントのダメージを回復

PAC-MAN CE DX

ボム未使用 15
スコアアタック(5分)でボムを1つも使わずにフィニッシュ!

2,000,000点 30
2,000,000点を達成しよう!(スコアアタック10分)

1,500,000点 20
1,500,000点を達成しよう!(スコアアタック10分)

スコアアタック(10分)フィニッシュ! 15
スコアアタック(10分)をフィニッシュまでプレイしよう!


2010/12/12 19:11 | Comments(0) | TrackBack() | 実績
シヴィライゼーションレボリューション 難易度天帝で制覇/文化/経済勝利
実績Wikiのベータ・ケンタウリ法は、難易度天帝でもおおむね通用します。

シナリオ「ベータ・ケンタウリ」難易度「天帝」文明「アステカ」でスタート。
文明はまあなんでもいいのですが、モンテスマの特殊能力「戦闘に勝ったユニットは全回復する」が非常に便利なのと、逆に敵として出てきたら厄介なのでアステカが適任でしょう。

初期立地はハンマーが多いところを選びます。
最悪食料はあとからなんとかなります。

まず政治体制を「民主主義」に変更。
建築物はWikiのとおりに建てていきます。
ただし建築物の合間に歩兵と長距離砲を少しづつ生産しておきます。
お金を貯める必要はないので、適当に緊急生産を使うとよいでしょう。
蛮族が物凄い勢いでやってくるので、生産した歩兵および長距離砲軍団を出して防衛に当たらせます。
全昇進つきのエキスパートが簡単にできあがるので、完成した軍団は前線から下げ、防衛任務には新兵を当てさせます。
歩兵エキスパートは3部隊程度でいいので、その後は長距離砲エキスパート大量に作成しましょう。

気が済むまでエキスパートを生産したら政治体制を「原理主義」に変更、侵略を開始します。
首都には歩兵軍団ひとつだけ置いておけばいいです。
蛮族砦は全部は潰さず、新兵の練習台として幾つか残しておきます。

長距離砲にはエキスパート歩兵軍団を同行させ、うっかり攻撃されることのないようにします。
攻撃力が127とかすごい数字になっているので比較的簡単に落とせるはずです。
時折防御力145の歩兵とかが現れますが、その場合は新兵を突っ込ませて削っていくとよいです。
都市を落としたら道路を引き、首都から部隊の補充を行えるようにしておきます。

だいたいこれで簡単に制覇できますので、AIの首都ひとつだけを残して勝利寸前にセーブします。

そのまま首都まで落とせば制覇勝利。

ロード後、敵首都周辺に都市を配置し文化圏を広げ、敵陣地にはユニットを常駐させ、敵が地形を使えないように嫌がらせします。
そのままひたすらターンを回していけばお金が貯まって経済勝利。

偉人も出まくるので、偉人を消費せずに定住させていればすぐに20人貯まって文化勝利。

なお、シナリオ「ベータ・ケンタウリ」にはテクノロジー勝利がありません。


難易度天帝でテクノロジー勝利
http://yuubiseiharukana.blog.shinobi.jp/Entry/426/

難易度天帝に挑む
http://yuubiseiharukana.blog.shinobi.jp/Entry/419/


2010/12/08 22:20 | Comments(0) | TrackBack() | ゲーム
ZF1.10 Zend_Oauthその2

前回の続き

とりあえずZend_Oauthで、普通にOAuthログインを行ってみます。

ちなみにZend_Service_Twitterというのがあるのですが、こちらは使いません。
なにそれ。

やることは実はチュートリアルに全部書いてあります。

index.php

<?php
	//あ
	
	//require
		require_once('Zend/Oauth/Consumer.php');
	
	//セッション
		session_start();
	
	//OAuthオプション
	$zf_oauth_config = array(
		//twitterにログイン後戻ってくるURL
		'callbackUrl'     => 'http://localhost/callback.php',
		//リダイレクト先の情報
		'siteUrl'         => 'http://twitter.com/oauth',
		'requestTokenUrl' => 'https://twitter.com/oauth/request_token',
		'accessTokenUrl'  => 'https://twitter.com/oauth/access_token',
		'authorizeUrl'    => 'https://twitter.com/oauth/authorize',
		//Consumer keyとConsumer secret
		'consumerKey'     => '1234567890',
		'consumerSecret'  => '9876543210'
	);
	$zf_oauth = new Zend_Oauth_Consumer($zf_oauth_config);
	
	//リクエストトークンを保存しておく
		$zf_request_token = $zf_oauth->getRequestToken();
		$_SESSION['TWITTER_REQUEST_TOKEN'] = $zf_request_token;
	
	//リダイレクト実行
		$zf_oauth->redirect();

まずindex.phpでtwitterサイトへのリダイレクトを行います。
'callbackUrl'にtwitterサイトでの認証成功後にリダイレクトを行うURLを入れます。
'consumerKey'と'consumerSecret'には、前回作成したTwitterアプリのConsumer keyとConsumer secretを突っ込みます。
サンプルなので適当な数値が入ってますが実際は数十桁の英数文字列です。
リダイレクト先の情報は基本的に固定なので変える必要はないみたいです。

実行すると、Zend_Oauth_Consumer::getRequestToken()で認証用のトークンを取得できます。
これは認証後にPHPからtwitterにアクセスする際に必要になる情報なので、必ず保存しておきます。
チュートリアルではserialize()してから保存していますが、中身は単なる配列なので別にシリアライズする必要はありません。

最後にZend_Oauth_Consumer::redirect()で、twitterサイトにリダイレクトを行います。
この際リクエストに?oauth_token=**という形式の長いパラメータが付きます。
twitter側では、このパラメータが付いたリクエストにアカウント操作の許可を与えるかどうかをユーザに聞きます。

許可を与えると'callbackUrl'で指定したURLにリダイレクトで戻ってきます。
このときに?oauth_token=**&oauth_verifier=**という二種類のパラメータが返ってきます。
oauth_tokenはリクエストに与えられた文字列で、oauth_verifierはベリファイ用の文字列です。
この返り値を使ってZend_Oauth_Consumerで最終的な認証を行います。

callback.php
<?php
	
	//require
		require_once('Zend/Oauth/Consumer.php');
	
	//セッション
		session_start();
	
	//OAuthオプション
	$zf_oauth_config = array(
		//必要らしい
		'callbackUrl'     => 'http://localhost/callback.php',
		'siteUrl'         => 'http://twitter.com/oauth',
		//Consumer keyとConsumer secret
		'consumerKey'     => '1234567890',
		'consumerSecret'  => '9876543210'
	);
	$zf_oauth = new Zend_Oauth_Consumer($zf_oauth_config);
	
	//アクセストークンを取得
	$zf_access_token = $zf_oauth->getAccessToken(
		$_REQUEST
		,$_SESSION['TWITTER_REQUEST_TOKEN']
	);
	
	//アクセストークンを保存
	$_SESSION['TWITTER_ACCESS_TOKEN'] = $zf_access_token;
	//リクエストトークンはもはや不要
	$_SESSION['TWITTER_REQUEST_TOKEN'] = NULL;

アクセストークンを取得することができました。
今後twitterにアクセスする際、アクセストークンをくっつけて送信すると、twitter側ではそのリクエストは認証が行われたものだと判断して操作を許可します。


簡単に解説してみます。

まずindex.phpではコンシューマキー等からリクエストトークンを作成します。
twitterサイトに行く際にはリクエストトークンをくっつけて送信します。

twitterサイトで認証を行うと、リクエストトークンと共にベリファイコードが返ってきます。
callback.phpではベリファイコード等からアクセストークンを作成します。

このアクセストークンが、twitterで認証を行った証となります。

ここまでくれば後は簡単で、セッションに保存したアクセストークンを利用してtwitterの操作を行うことができます。

send.php
<?php
	
	//require
		require_once('Zend/Oauth/Consumer.php');
		require_once('Zend/Json.php');
	
	//セッション
		session_start();
	
	//OAuthオプション
	$zf_oauth_config = array(
		//必要らしい
		'callbackUrl'     => 'http://localhost/callback.php',
		'siteUrl'         => 'http://twitter.com/oauth',
		//Consumer keyとConsumer secret
		'consumerKey'     => '1234567890',
		'consumerSecret'  => '9876543210'
	);
	$zf_oauth = new Zend_Oauth_Consumer($zf_oauth_config);
	
	//アクセストークンを取得
		$zf_access_token = $_SESSION['TWITTER_ACCESS_TOKEN'];
	
	//twitterに投稿する
		//Zend_Oauth_Clientを取得
		$zf_client = $zf_access_token->getHttpClient($zf_oauth_config);
		//投稿先をセット
		$zf_client->setUri('http://twitter.com/statuses/update.json');
		$zf_client->setMethod(Zend_Http_Client::POST);
		//投稿内容をセット
		$zf_client->setParameterPost('status', 'テスト投稿');
		//リクエスト実行
		$response = $zf_client->request();
	
	//返り値を確認
		$data = Zend_Json::decode($response->getBody());
		$result = $response->getBody();
		if (isset($data->text)) {
		    $result = 'true';
		}

なんかあんまり簡単に見えませんね。
次回はZend_Service_Twitterでも使ってみましょう。

ちなみに公式サイトサンプルの11行目は
 $client = $token->getHttpClient($configuration);
ってなってますが正しくは
 $client = $token->getHttpClient($config);
ですな。

 

 



2010/12/06 22:53 | Comments(0) | TrackBack() | PHP
買ったものリスト 2010/12/05

ソラトロボクリア。
いかにもよくある「終盤力尽きたRPG」でした。
ネロとブランクとかなんでいきなりこっちに力貸してんだよ。
あとクエストの放棄ができないので2部8話が進めずどうしようかと思った。宝探し面倒なんじゃよ。
第二部OP最初の彼女とか重要キャラっぽいふりして一瞬しか出てこないしな。
総合的にはまあ悪くはないが、構想10年の超大作とか言われてもえ?という出来でした。
JRPG好きなら、もしくは安ければ買っても損はしないでしょう。


ヘヴィーオブジェクト 採用戦争 鎌池 和馬
ヘヴィーオブジェクト 巨人達の影 鎌池 和馬
☆☆☆☆

核攻撃にすら耐える巨大戦闘メカ、オブジェクト。
に生身で立ち向かう羽目になった二人の青年の話。
基本あまり難しく考えずに設定の馬鹿馬鹿しさとどうやって突破するかの超展開を楽しむエンターテイメントです。
その点で見れば非常に面白い作品です。

ところでコクピット内でGで動けないとか言ってたが、戦闘中のオブジェクトに張り付いてたり家があったりなんていう話が前あったようなないような…


超兄貴 FUG 上下 田丸 浩史
☆☆☆

昔持ってたような気がするなあ、と思って買ったらやはり復刻版でした。
嬉しい?のはカラー原稿収録という点ですが、出てくるのがマッチョばかりという時点でなあ。

ゲームとは話的に特に関係ありません。
というか主役のイダテンがいきなり一話で死亡するとかいう有様。
以後はそっくりさんがボ帝を倒そうと奮闘したりしなかったりどんどんよくわからないキャラが増えていってカオスになる話。
田丸浩史らしく話に節操がないというか限度がないというか。

ところでマッチョ売りの少女って全く同じタイトルの漫画を誰か他の人が書いていた記憶があるんだがなんだっけ。


シヴィライゼーション レボリューション

貴様は私の時間を奪ったのだぞ!(+10)

Civ4は正直やることが多すぎていっぱいいっぱいでプロ貴族状態。
毎ターン市民配置を変えるとかもう無理言わんでくれってかんじですよ。
ということでレボリューションはそこらへんを簡略化したお手軽Civ4です。
簡略化しすぎてAIと仲良くなる余地が無いとかありますが、これくらいが比較的私のレベルに合ってるかんじです。

ヘルプ機能としてシヴィロペディアというものがあるのですが、これがとんでもなく莫大な量で、設定資料好きとか歴史好きとかにはたまらないものがあります。
もちろんCiv4にもあってそれを読んでるだけでも飽きません。

未だに価格が高止まりしてるのはそれだけ出来がいいからか販売量が少なかったからかそもそも売ってないからか。
ちなみに冒頭の文言はレボでは出てこなかったり。



2010/12/05 19:47 | Comments(0) | TrackBack() | 買ったもの
今週の実績 2010/12/05
2010/12/04の実績

Fallout: New Vegas

Mod Machine 15
武器MODを20個付ける

Caravan Master 30
キャラバンで30回勝利

Know When to Fold Them 10
キャラバンで3回勝利

Civ. Revolution JP

平和のための戦い 25
〈国王〉以上の難易度で西暦1000年までに勝利!

2010/12/03の実績

Fallout: New Vegas

Artful Pocketer 15
人からアイテムを50回盗む

Globe Trotter 25
スノードームを全て集める

2010/12/02の実績

Fallout: New Vegas

Talent Pool 20
"Talent Pool"を完了

Eureka! 15
"Eureka!"を完了

2010/12/01の実績

Fallout: New Vegas

For the Republic 30
"For the Republic"を完了

You'll Know It When It Happens 20
"You'll Know It When It Happens"を完了

The Courier Who Broke the Bank 30
全てのストリップ・カジノで、フロアマネージャーから評価を受け、追放される

2010/11/28の実績

Fallout: New Vegas

The Boss 30
Level30到達

Hack the Mojave 15
ターミナルを25台ハッキング

Civ. Revolution JP

働かざる者飲むべからず 25
都市の資源産出量が200に到達!

Kinect アドベンチャー!

深海マスター 30
アドベンチャー「沈没船の宝!」の報酬を受け取った


2010/12/05 18:12 | Comments(0) | TrackBack() | 実績
シヴィライゼーションレボリューション 難易度天帝に挑む
Civilization Revolutionは、PCゲームのCivilization4の大幅なアレンジ移植です。
Civ4に比べて内容が概ね簡略化されており、Civ4が大盛りすぎてきついという人でも十分に遊べるレベルに収まっています。
プレイ時間もCiv4よりだいぶ短いので気軽にプレイを始めることができます。
逆にCiv4の天帝プレイヤーには物足りないと思われますが、プロ貴族の私には関係がなかった。

内政は大幅に簡略化され、労働者および地形改善、衛生や幸福がありません。
対応する建築物を建てることで収益がアップします。
道路は都市間に金を払って建てることになり、任意の場所に引くことはできません。
また都市の維持費が無いので、基本的には都市を建てれば建てるほど得になります。

外交も簡略化され、資源取引等ができません。
外交画面は基本的にAIが恐喝してくるために存在します。
あとAIに個性が無いっぽく、ガンジーが普通に宣戦布告してきます。

○○志向といった性格はなく、指導者にはそれぞれユニークな個性付けがなされています。
日本であればゲーム開始時に埋葬のテクノロジーを持っており、アメリカは最初から偉人が一人ついています。
また時代が進むごとに更にボーナスが付き、日本は産業時代に入ると政治体制変更の無政府状態がなくなり、現代入りするとユニットに最初から忠誠心スキルがついたりします。
これによってますます指導者ごとの特徴が出るようになります。
もちろん強さの差も。

テクノロジーツリーは大幅に変更されていますが、ビーカーで研究して建築物やユニットが解禁されるという内容は変わっていません。
宗教はありません。
社会制度は政治体制だけになっており、効果もだいぶ変わっています。

戦闘は逆に強化されています。
ユニットの戦闘力が攻撃力と防御力に別れ、攻撃力は圧倒的だが攻められると超弱い長距離砲とか、昇進して都市に篭もればとんでもない防御力になる歩兵といったように、ユニット毎の個性が強く出ています。
また、ユニットを三つ束ねてひとつの軍団とすることで戦闘力を3倍にすることができます。
まあ実際のところ軍団単位で動かすのが基本なんですがね。
あとひとつ問題があって、スタックがないので大軍を動かすのが非常に面倒です。
目的地コマンドはありますが、やはりスタックの快適さには及びません。


さてCivilization4では手も足も出なかった天帝なのですが、レボリューションでは勝利実績が設定されているので攻略せざるを得ません。
レボリューションの勝利条件は以下の四つ。
制覇勝利
 全敵文明の首都を占領する。また時間勝利も制覇勝利になる
文化勝利
 偉人、転向都市を合わせて20出して国際連合を作る
経済勝利
 20000ゴールド貯めて世界銀行を作る
テクノロジー勝利
 宇宙船を組み立ててアルファ・ケンタウリまで到達する

征服勝利や宗教勝利はなくなり、制覇勝利は全都市ではなく首都のみを占領すればよくなっています。
変わっていないのはテクノロジー勝利くらいです。
さっそく攻略してみましょう。


難易度天帝で制覇/文化/経済勝利
http://yuubiseiharukana.blog.shinobi.jp/Entry/423/

難易度天帝でテクノロジー勝利
http://yuubiseiharukana.blog.shinobi.jp/Entry/426/


2010/12/01 23:32 | Comments(0) | TrackBack() | ゲーム
iPhoneOS4.1 デフォルトメーラのバグ
iPhoneのデフォルトメーラには、「添付したインライン画像とは違う画像が表示されることがある」というバグが存在します。

インライン画像付きHTMLメールは、以下のような構文となります。
<img src="cid:01@image.gif">

普通であれば<img src="image/01.gif">というような形になるところですが、インライン添付では画像が置いてあるURLとか無いので、かわりにcidという画像を結びつける記号を設置します。
ちなみに例ではgifという拡張子を指定していますが、別にそうする必要はありません。
@の前はランダムな値、@の後はドメイン名を指定し、<img src="cid:ecabf869473b42c110b1@example.jp">などとしている例が多いようです。
これは、cidは世界で一意であることが求められているためです。

で、具体的な画像は、BASE64エンコードでテキスト化した上でメール本文に格納されます。

Content-Type: image/gif; name="image01.gif"
Content-Transfer-Encoding: base64
Content-ID: <cid:01@image.gif>

R0lGODlh2QA9ALMIAFOKz6jK…(略)

メーラでは、<img src>のcidがこのContent-IDと結びつけられ、タグの部分に画像として展開され、表示されます。


では、もしこのcidが被ってしまうという事態があったらどうなるでしょうか。

一通のメールで同じcidを指定するというのは、単に同じ画像を連続で表示するというだけのことです。
複数のメールで同じcidを指定してみましょう。

GmailやPC用、iPhone用の多くのメールアプリでは、もしcidが被ったとしても、全く問題無く添付画像を表示します。
cidをメール単位で識別しているので、他のメールに同じcidが入っていたとしても顧みることは普通ないからです。

翻ってデフォルトメーラでは、中身を見たわけではないので推測ですが、以下のように動作していると思われます。
まず一通目のメールを見た際に、そのcidに対応する画像がキャッシュに登録されます。
そしてその後再度メールを見た際、cidに対応する画像がキャッシュに登録されていれば、その画像を表示します。
おそらく高速化のためにそうしているのだと思われますが…ここにひとつ落とし穴があります。

同じcidであればメールを気にせずキャッシュから読み込むんだよね。


どういうこと?
ちょっとRFC準拠が足りないメールアプリがあったとして、cidを連番で付けちゃう仕様になっていたとします。


一通目。
絶対に許さない<img src="cid:01@image.gif">
添付画像:icon_bad2.gif

二通目。
ごめんね<img src="cid:01@image.gif">
添付画像:icon_heart.gif


Gmailから見ると送信したとおりのメールが見れます。

で、これをデフォルトメーラで見ると、


一通目。
絶対に許さないicon_bad2.gif

二通目。
ごめんねicon_bad2.gif


これじゃあ戦争になっちゃうよ!


問題は、送信側は全くこのことに気がつくことができないという点です。
たしかにRFCを守ってない送信側メーラが悪いと言えばその通りなのですが、メール単位で絞り込みは可能なわけなんだからそのくらい対応してやれと。
 

 



2010/11/29 23:30 | Comments(0) | TrackBack() | iPhone

<<前のページ | HOME | 次のページ>>
忍者ブログ[PR]