ところが転送先URLに
hoge.php?id=100
とか書いても、転送先では$_REQUEST['id']を取得できなかったりします(取得できる場合もある)。
転送先URLの作成などはPear::Net_URLを使用しています。
URLにセッションID等を付加する処理は以下のようになっています。
1
2
3
4
5
6
7
8
9
|
$netURL = new Net_URL($url);
if (!empty($_SERVER['QUERY_STRING'])) {
$netURL->addRawQueryString($_SERVER['QUERY_STRING']);
}
$session = SC_SessionFactory::getInstance();
if ($isMobile || $session->useCookie() == false) {
$netURL->addQueryString(session_name(), session_id());
}
$netURL->addQueryString(TRANSACTION_ID_NAME, $this->getToken());
|
どこが問題なのかというと、ここです。
1
2
3
|
if (!empty($_SERVER['QUERY_STRING'])) {
$netURL->addRawQueryString($_SERVER['QUERY_STRING']);
}
|
単にURLにリクエストパラメータを追加しているようにしか見えませんが、実はNet_URL::addRawQueryString()は「追加」ではなく「上書き」です。
ちなみに同じような名前のNet_URL::addQueryString()は追加です。
なにこの罠。
従って、何かひとつでもリクエストパラメータがあった場合にLC_Page::sendRedirect($url)を使用すると、$urlに引き渡したGETパラメータは全て消え失せてしまいます。
これはNet_URLのバグだと思うのですが中の人はバグじゃないとか言っています。
だったら名前どうにかしろよと。
仕方ないのでこちらでどうにかしましょう。
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
|
function sendRedirect($url, $isMobile = false ) {
$netURL = new Net_URL($url);
//GETパラメータを保存しておく
$queryStringArray=$netURL->querystring;
//今までの処理
if (!empty($_SERVER['QUERY_STRING'])) {
$netURL->addRawQueryString($_SERVER['QUERY_STRING']);
}
$session = SC_SessionFactory::getInstance();
if ($isMobile || $session->useCookie() == false) {
$netURL->addQueryString(session_name(), session_id());
}
$netURL->addQueryString(TRANSACTION_ID_NAME, $this->getToken());
//GETパラメータを追加
if(is_array($queryStringArray)){
foreach($queryStringArray as $key=>$val){
$netURL->addQueryString($key, $val);
}
}
//リダイレクト
header("Location: " . $netURL->getURL());
exit();
}
|
できました。
EC-CUBEの記事
七海が可愛すぎて生きているのがつらい
12月生まれの少年2
☆☆☆☆☆
シュールギャグの神施川ユウキの最新作。
これまでの作品には皆無だった恋愛ぽい要素が微妙に入っていますが主張しすぎない程度です。
メインになったらウザいけどこの程度ならよし。
日常のどうでもいいことやわけのわからないことをネタに消化する能力が相変わらず凄い。
柊くんにはこのまま大人にならないでいてほしいものです。
ヴァンダル画廊街の奇跡
☆☆☆☆☆
思想の対立が世界大戦の原因となる、よってその元となる旧世代のプロパガンダは全て禁止された。
思想を表現する旧世代の音楽も芸術も美術も全て。
そんな中、旧世代の絵画を世に暴き出すアート・テロリストが居た……芸術に、その自由を!
ってどんなトンデモ設定だよ、と思ったら驚くほど素晴らしい話だった。
味を感じさせるラノベといえば食前絶後、おっと文学少女ですが、本作は色を感じさせるラノベです。
カラーページなぞ表紙と口絵にしかないのにな。
終盤の展開は読めたというかまあそんなことだろうなとは思ってましたが、あの行動は少々予想外でした。
ソードアートオンライン4
☆☆☆☆
てっきりこのままずっとバラさないで行くものかと思ってたらあっさりバレた。
どころかあっさり終わってしまったのにはびっくりだ。
まあ1巻も確かにえらい唐突に終わってたけど今回もそんな展開だとは。
毎回裏技というか反則な手段が好きだよなこの人は。
しかし2回もこんな事件が起こったら普通命脈絶たれそうなものだがな。
ゲームサイド2010年 05月号
☆☆☆☆
ナムコ特集は非常に力が入っていた印象。
ただ実のところこのころはゲーセンとか行ってなかったんであんまり思い入れ無かったりするんだよなあ。
まあ、今回は非常に読み応えがあって重たいのでゆっくり読みすすめるといいかもしれません。
懺・さよなら絶望先生 第四集
☆☆☆☆
4話入っているのでちょっとお得な第四集。
第三期は基本的に原作にかなり忠実なので、知っているとさらにニヤニヤできます。
しかしさすがにリモコン無しの360でコマ送り多用はキツい。
時計がなくて現在時刻が完全に不明。
時計は必ず持って行こう。
あとこの2週間ほど忙しくて徹夜とかだったんで追い込みができなかった。
なので今回はかなり自信がない。
落ちたら仕事のせいだ、ということにしておこう。
午前1は免除。
午前2。
あれ?午前2で落ちたんじゃね?
とか受けながら思った。
なんか全然わかんなかった
あと解答にウが並びすぎエ無さ過ぎ。
確率的にありえねーどうしよう。
午後1。
当初1と3解くつもりだったんだが最終的に2と4になってた。
結局全部かよ。
何気に時間終了まで居たのは初めてだ。
問1はバグの原因がわからなかった。
プログラムを見るにtempUserIDに別人のIDが入ってきたとしか思えないんだが、そんな怖ろしいバグがあるのか?
私がこのプログラム書いたら全く同じバグ出しそうな気がする…
問3は上から順に解いていったら最後のパスワード再設定の問題点がわからなかった。
これって普通にどのサイトでもやってるパスワードリマインダだよなあ?
よもやリファラでバレるからHTMLメールのフォームでPOSTしろとかそんな訳のわからない解答でもあるまいし。
ん、もしかして新パスワード設定後に再設定ページを無効化してないから駄目とかそういうオチ?
問2はバックアップ方式の手順修正ではなくファイル暗号化方式の手順を修正ってとこでだいぶひっかかった。
復号できないのはS/MIMEなのにどうやってファイル暗号化方式の改修で乗り切るんだよ。
あと何気に選択問題が全然わからなかったんだが、長文が全くわからない問3よりは点数高いのではなかろうかということで最終的にこっちを選んだ。
問4は特定方法1は感染方法2じゃないのかと思うんだ。
OSの脆弱性のプロトコル名とか知るか。
午後2。
インシデントがめんどくさそうだったので問1を選択。
TXTレコードなんて知るかってところだがそれ以外は大丈夫なんじゃないかなあ。
落ちるとしたら午後1の気がする。
午前2
ウアウイイ エウウウエ アアアウウ アウイエウ ウイウウア
午後1
問2
設問1 a:ア b:オ c:カ TPM:イウ d:ウ
設問2
(1)暗号化していないテープを宅配便で送付するので、盗難される危険性がある
(2)テープの送付に、専門の信頼できる業者を利用する
設問3
(1)b
(2)S/MIME用の鍵ペアがTPMに入っていたので、TPMの入れ替えによって鍵がなくなってしまい復号ができなくなった
(3)メールボックス内のデータも拾ってきてファイル暗号化方式で暗号化しハードディスク内に保存するようにした
問4
設問1 機密情報の入ったファイルが盗まれ、漏えいしてしまう
設問2 a:IP b:IPアドレス c:OSの脆弱性 d:プロキシ e:インターネット上の特定のWebサーバ
設問3 再度同じウィルスに感染する
設問4
(1)一旦VLANで分けられた検疫ネットワークに接続し、パッチの適用を確認するまでは社内ネットに接続しない
(2)パスワードとして辞書にのっているような文字列の設定を禁止する
問3(採点対象外)
設問1
(1)a:署名用の証明書 b:メール
(2)証明書が正しく発行されたものか確認できないから
(3)SSLで暗号化されたサイトからフィンガプリントを入手する
(4)続けて数回ログインに失敗した場合、そのアカウントをロックしてログインできないようにする
設問2
(1)第三者が企業をかたって登録し、求人情報を盗んだりすることを防ぐ
(2)利用者IDや登録日に依存しないランダムなパスワードを作成する
(3)(4)?
午後2
問1
設問1
(1)SSHサーバのIPアドレス、MACアドレス
(2)送信元:SSHを許可する送信元を、Y社専用のIPアドレスのみに制限する
設問2
(1)a:DNSSEC b:ハッシュ値
(2)あるサーバのURLに接続しているように見えて、実際は別のサーバに接続される
設問3
(1)SPF
(2)ウ
(3)宛先メールアドレスのドメイン名がy-sha.co.jp
(4)Y社内から送信するメールもブロックされてしまい、届かなくなることが発生し業務に支障をきたす
設問4
(1)一旦DNSサーバにキャッシュされ、再帰的に問い合わせなくても解決できるドメイン名に対して問い合わせる
(2)a
(3)f:Y社管理ドメイン名 g:DMZ
https://blog.cnobi.jp/v1/blog/user/8f14c19eb01af9c2e80c7f2ad07dc8ca/1271426019
EC-CUBE2.4.3用です。
基本的にはSC_CartSession.phpを差し替えるのですが、一部問題点があるので修正策も提示しておきます。
主な変更点
・$_SESSION['cart'][0]、$_SESSION['cart'][1]…となっていた商品リストを$_SESSION['cart']['products']配下に入れた
・商品の配列キーを連番ではなく商品IDにした
・cart_noも面倒なのでIDにした
・SC_CartSession::getNextCartID()、SC_CartSession::getMax()は不要なので削除
・ereg()を排除
注意事項
・あんまりデバッグしてない
・売り切れとかポイント関連は何やってるのかよくわからなかったので概ね適当
・$_SESSION['cart']を直接どうこうしていた場合動かなくなるかもしれない
・MySQLで作ったのでPostgreSQLだと動かなくなるかもしれない
・マジックメソッドとかrunkitとかの強力な機能でカートを上書きしていた場合動かなくなるかもしれない
・SC_CartSession::getNextCartID()、SC_CartSession::getMax()を使用していた場合動かなくなるかもしれない
・商品配列のキーが数値連番である前提の実装だった場合動かなくなるかもしれない
・よくわからないけどどこかで動かなくなるかもしれない
さて、差し替えただけでは一部動かない場所があります。
まあ注意事項の下から2番目と3番目に引っかかってるんですが。
まずSC_Helper_DB::sfTotalCart()、LC_Page_Cart::process()、LC_Page_Shopping_Complete::lfRegistOrderDetail()。
何れも商品リストに対し、
for ($i = 0; $i < $max; $i++) {
とか書いてあります。
それぞれ順番に、
foreach( $arrCart as $i => $val){
foreach( $arrRet as $i => $val){
foreach( $arrCart as $i => $val){
に書き換えるとそのまま動きます。
なんでそんなにforが好きなの?
次にLC_Page_Shopping_Payment::lfGetDelivDate()
max = $objCartSess->getMax();
for($i = 1; $i <= $max; $i++) {
とか書いてあります。
ていうか、$_SESSION[$objCartSess->key]とか書いてあります。
これはひどい。
勝手拡張でこんなのを追加した、とかなら仕方ないかもしれないが正式版でやることではなかろう。
何故SC_CartSession::getAllProductID()を使わないのかと。
以下の部分を書き換えます。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
// 商品IDの取得
$max = $objCartSess->getMax();
for($i = 1; $i <= $max; $i++) {
if($_SESSION[$objCartSess->key][$i]['id'][0] != "") {
$arrID['product_id'][$i]
= $_SESSION[$objCartSess->key][$i]['id'][0];
}
}
↓
// 商品IDの取得
$arrID['product_id']=array();
$tmp=$objCartSess->getAllProductID();
foreach($tmp as $key=>$val){
$arrID['product_id'][]=$val[0];
}
|
この$arrID、別に他に使われているわけでもないし二次元配列にする意味が全く無いんだが何故こんなことに。
以上でSC_CartSessionが見た目すっきりになりました。
実はなにか重大な理由があってあのような作りになっていたとかいう可能性もないでもないですが気付かなかったことにします。
まあ、修正したはいいけどパフォーマンスチェックとかやってないから早くなったという保証はないんですがね。
というか、毎回尋常じゃない結合をやっているSQLのほうが明らかにボトルネックなので正直自己満足レベル。
あと、カートなんてどう考えても投入より参照回数の方が多いんだから、税金の計算とかも投入時にやるべきなんですが、そこらへんもやってません。
めんどうだったので。
EC-CUBEの記事
==SCENE 07==
マッスルを始末したデルタは、ラングを先頭に採掘タワーへ飛行を続けていた。
黒褐色に塗られた採掘タワーは、高さがゆうに500メートルはあった。220の人工建造物の中ではもっとも巨大だ。データによると、220の住民は採掘タワーを「バベル・タワー」と呼んでいた。創世記に記されているバベルの塔は、神の憎しみを受けて途中で工事が中断されてしまったのだが……220に建てられたバベルの塔は、イプシロンワン採掘のシンボル的存在となり、その偉容を誇っていた。
しかし、今のタワーは呪いの塔だった。住民を飲み込み、テロリストたちが彼等の生死を握っている……バベルは再び呪われたのだ。
その時、電子音と共にディスプレイにマップが映った。続いて地下動力炉のCG画面が出る。同時にキナバルの通信が入ってきた。
「ギャラントよりチャーリーリーダー、ミショー大尉。生存者は地下採掘場だ。救助の指揮を執れ」
ラングは思わず息を呑んだ。それは踏み絵だった。ミショーがフライト・リーダーとして再起できるかの……。
かなりの間があって、ミショーの沈んだ声が聞こえてきた。
「大佐、わたしは判断ミスで編隊を失いました。指揮官の資格は……」
なんてこった……ソ連空軍の女性エースパイロット、大祖国戦争の英雄リディア・リトヴァクをしのぐ華々しい戦歴のミショーが、戦意を完全に失っている……。ラングはさすがに頭に来て怒鳴った。
「ミショー、ヒロイズムは止せ。お前は最善を尽くしたんだ
「………」
「おまえならやれる」
今度の沈黙は長かった……ラングはミショーの戦いを感じ取った。この戦いは、自分自身との戦いだ。
指揮官となる者は、常に責務を負う。任務への責務、部下の安全の責務……だがこの二つは相反することが多い。任務達成のために、部下を死に追いやる決断を下さねばならぬ時がある。だからこそ、指揮官と部下の間には信頼関係が必要だった。二つの間をつなぎ止めるのは信頼しかなかった。
今のミショーは、部下の信頼を裏切ってしまったと自分を責め続けている。だが、敵はバイオとメカのハイブリッド……高出力レーザーを装備する強敵だった。その不意打ちを喰らったというのなら、犠牲はやむを得なかったのだ。残酷な話だが、どうにもならない。何事にも最初はあり……それはたいてい犠牲を伴うものだ。今回の損害もその一つだ。
その重圧に耐えられない者は、指揮官の座を降りるしかない。しかし、誰かがその役を果たさなければならない……ミショーはまだ部下たちから信頼されていた。それは、指揮官としての責務を果たすのに充分すぎるほどの資格だ……ラングは心からそう思った。
永遠とも思えるの沈黙のあと、ミショーは答えた。
「……ラング……ありがとう」
二人の交信を、カレンは複雑な思いで聞いていた……。彼女は、ラングとミショーの結びつきをはっきりと感じていた。それは指揮官同士の共感と結びつきであり……指揮官同士の共感……? 本当にそれだけだろうか?
カレンの心にどす黒い不安が広がった……まさか……そんな筈はない。ラングは私のものなのだ。誰がなんと言おうと……。
彼女は不安を追い払うと、スティックを傾けた。そこへラングのコールが響いた。
「全機、ミショーに続け」
……ミショーに……ラングはそう言った。
「ラジャー」
コールを返しながら、彼女の不安は再び膨らみ始めた……意識のスイッチを切り替えることが出来なかった。この事実は、彼女がどうやってもお嬢さん育ちから抜けきれないことを最も端的に示していた。
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
クラークはディスプレイから顔を上げて言った。
「ミショー大尉の任務達成率は97%か……これなら安心して任せられる」
「…………」
コックスは微かに眉をしかめた。この男は、いったい何なのだろう? クラークは自軍の損害には全く無頓着だった。ステロタイプの戦争物ではこの手の将軍が出てくるが、現実にはそんな愚か者は滅多に存在しない。多くの指揮官は、自軍の損害には敏感だった。ワーテルローの戦いでナポレオンに勝った、ウェリントン将軍の名言がここにある。
「戦争に勝つほど恐ろしい話はない。負けることを除けば……」
損害に関する考察に満ちあふれた言葉。
だが、仕方あるまい……コックスは思い直した。クラークはしょせん素人だ。軍事的素養のない者に、損害の痛みを理解しろと言っても無駄なのだ。自軍の損害さえ無視することができるのなら、日露戦争で旅順要塞を陥落させた野木将軍は、プロの間でも名将と呼ばれただろう。プロとアマチュアの違いはこの点において決定的だった。コックスはその点を理解しつつも、クラークの態度に割り切れぬものを感じていた。
通信長がキナバルに電文を渡すのが見えた。あれは……フラッシュ通信だ。いったい何が?
コックスは眉をひそめた。キナバルの顔色が蒼白になるのが、この距離からでも判った。キナバルは傍らの士官を手巻きで呼び寄せ、何事かを囁いた。頷いた士官はデスクに戻って何かを……いったい何をする気だ?
コックスは立ち上がった。士官は拳銃を手にしていた。
「大佐、いったいなにが……?」
キナバルは無視した。彼は銃を携帯した士官と共にクラークの前に立ちふさがった。
「君を逮捕する」
ミショーのストレガは、工業エリア・リアクターセクターにあった。そこは巨大だった。通路の幅は200フィート、高さは400フィートはあるだろう。
警報が鳴った。ここからは危険区域だ。ヘッド・アップ・ディスプレイにマーカーが点滅した。作業用エレベーターが迫っていた。
「全機、アリスに操縦を切り替える」
「ラジャー」
ここから先は、もはやマニュアルでは操縦不能のエリアだ。頼れるのはアリスだけだ。
ミショーたちはストレガをグランド・モードに入れ、最初のエレベーターをクリアした。数フィートの差でシャフトが頭上をかすめるのを、ミショーたちは息を詰めて見守った。対地速度は300マイル……ぶつかったら死は一瞬のうちだろう。
「君は何者だ?」
キナバルの鋭い声がCICを満たした。
クラークは士官に拳銃を向けられても平然としていた。
「大佐、いったいどうしたんです?」
駆け寄ったコックスに、キナバルは無言で通信紙を渡した。コックスはひったくるようにしてそれを受け取り───息を呑んだ。
Z08421924DEC
最高機密
発……連合国安全保障局
宛……UNF-SCVギャラント
スタンレー・キナバル大佐
1.ローランド・クラークは、実在の人物ではない。
2.「クラーク」は、人工知能専用の疑似生命プログラムである。
3.「クラーク」を名乗る人物の身柄を勾留、尋問せよ。
コックスは呆然としていた。クラークが疑似生命プログラムだと……? それでは目の前のこの男は……?
不意にコックスは電撃に打たれたようになった。220のデータは全て目の前の男がコンピュータに入力した……もしそのデータが誤っていたら……いや、間違いない。手を加えられたデータに違いない……ということは、デルタは……。
「大佐……」
コックスの声は震えていた。
「このままでは、デルタは……」
キナバルの顔はまるで死人だった……彼も同様の結論に達していたのだ。
「カレン……」
キナバルの声は幽鬼のようだった。
「現在位置、リアクター・セクター」
警報が鳴った。カレンはハッとした。
「前方、高エネルギー反応探知。リアクターオーバーロード」
「暴走!」
「なるほどな。プラズマシールドもそれが原因か」
ラングの落ち着き払った声が響いた。
タワー上空にはプラズマが発生していた。それ故に彼等は飛行が困難な地下ブロックからの突入を余儀なくされているのだ。
「電位上昇。コウション、レーダーシステム・ブラックアウト」
「何ですって?」
カレンは思わず呻いた。だが、災厄はこれからだった。警報音が鳴り響くと同時にアリスのコールが立て続けに始まった。
「サーキット・クローズ。IRシステム、ブラックアウト。FCS機能低下。フライ・バイ・ライトシステム、機能低下」
たまらなくなったカレンは怒鳴った。
「アリス、バックアップ」
数秒後、警報が止まった。だがそれはものの30秒も保たなかった。再び警報音がコクピットを満たし始める。
カレンは思わずパネルを蹴った。お嬢さん育ちの彼女には似合わないことだが、そうしなければ気持ちが収まらなかった。
「これでどう戦えっていうの? アリス、バックアップ強化!」
不可能を意味する不快な電子音が響いた。
「アリス、バックアップ!」
カレンはヒステリー寸前だった。見かねたラングはカフをあげた。
「無駄だ、カレン」
「でもラング……」
「泣き言は帰ってから聞いてやる。いいな、カレン」
ラングの口調はだだっ子をなだめる父親のようだった。それが功を奏した。落ち着きを取り戻したカレンは、呟くようにコールした。
「……ラジャー……」
「フン……」
ディースリーは微かに鼻を鳴らし、苦笑した。思った通りだ……ラングとカレンはやはりできている……彼はこの手の直感にも優れていた。些細な会話からでも、当事者がどういう仲なのか確実に判別できた。判らないのは、あの二人の関係だけだ。
その瞬間、当事者達のコールが始まった。
「全機、こちらミショー。コミューターラインをサーチ。ただちに離脱する」
「ラジャー。こちらラング。全機、イメージセンサー使用」
ラングとミショー……この二人の関係は謎だった。単なる指揮官としての間柄にしては……何かが違っていた。
彼は肩をすくめ、前方に神経を集中した。戯れ言は戦いが済んでから考える事だ…。
==NOVEL PHILOSOMA==
見れば見るほど誰がこんな正気の沙汰ではない実装を行ったのか、というかどうしてこのような実装を行おうという発想に至ったのかが不思議でしょうがない。
例えばカートの中身を全部拾うメソッドを実装するとして、100人中99人が
1
2
3
|
function getCartList(){
return $_SESSION['cart']['products'];
}
|
とか書く思うのですが、EC-CUBEの場合は何故か2回ループが走ります。
具体的にはこんな。
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
|
function getCartList() {
$max = $this->getMax();
$arrRet = array();
for($i = 0; $i <= $max; $i++) {
if(isset($_SESSION['cart'][$i]['cart_no'])
&& $_SESSION['cart'][$i]['cart_no'] != "") {
$arrRet[] = $_SESSION['cart'][$i];
}
}
return $arrRet;
}
function getMax() {
$cnt = 0;
$pos = 0;
$max = 0;
if (count($_SESSION['cart']) > 0){
foreach($_SESSION['cart'] as $key => $val) {
if (is_numeric($key)) {
if($max < $key) {
$max = $key;
}
}
}
}
return ($max);
}
|
これに限らず、カートに対して何か操作を行おうとするたびに
・毎回カートセッションの全要素に対してforeachでループを行い配列のキーの最大値を求める
・求めた値に対しforループを行い何かを行う
という流れになっています。
なんでこんなことになっているかというと、これは、カートセッションの作りが、
1
2
3
4
5
6
7
|
$_SESSION['cart']=array(
'prev_url'=>戻り先URL
,'cancel_purchase'=>購入キャンセル
,[0]=>array(カート内の商品1)
,[1]=>array(カート内の商品2)
,…
);
|
と、カート内商品と他の要素が並列になっているからです。
なので商品に対し何かを行いたい場合に直接扱えない状態になっています。
1
2
3
4
5
6
7
8
9
|
$_SESSION['cart']=array(
'prev_url'=>戻り先URL
,'cancel_purchase'=>購入キャンセル
,'products'=>array(
[0]=>array(カート内の商品1)
,[1]=>array(カート内の商品2)
,…
));
|
ってするだけで平穏無事に終わったはずなのに。
最初の設計が悪かったせいで後々まで苦労するといういい例ですね。いやよくないけど。
ところでこのSC_CartSession、メソッド中の'cart'の部分が全て$this->keyとなっており、引数を変えることで同時に複数のカートセッションを扱えるような作りになっています。
この部分だけは面白いのだが使い道がわからない。
EC-CUBEの記事
アマゾンにレビュー書いても公開されないことがあるんだが基準が全然わからん。
Holy Brownie6
☆☆☆☆
裸満載だがあまりエロくない。
つうか六道のエロは正直いらねー。
神様のラバーカップとして歴史の改変を繰り返していたピオラとフィオが最後に辿り着く真実。
気付いてはいけないことに気付き、やってはいけないことに手を出し、ついには歴史から追放。
新歴史のアダムとイブになったりならなかったり思い切り予想外の終わり方でした。
エクセルサーガ24
☆☆☆☆
ヌル日常だった中盤を過ぎ、謎と秘密が暗躍する終盤に入りつつあるようです。
毎回読ませる内容でありながらその真相までは決して語られないため、どうしても心のどこかにしこりが残ります。
一体このストーリーは何処に向かっているのか。
まあ消去法的に言って彼は天満宮しかいないと思うんだが、一体何をやっているのか全然わからんな。
PSすりーさん に
☆☆☆☆
何故何処からも抗議が来ないのか不思議シリーズ第二弾。
書き方を変えたのか残念だった画質も大幅アップ、閲覧に耐えるものになりました。
相変わらず不憫なすりーさんですが、仲のいい仲間も増え、前作ほど辛くはありません。
しかしそろそろ業界全く関係なくなってきたな。
文学少女と死にたがりの道化2
☆☆☆
特に原作を読んでいれば読む必要もないと言えばそうなんですがまあ、原作の雰囲気をわりと壊さずに絵にすることに成功していると思います。
しかしまあ千愛が壊れてるとは予想だにできない絵柄なのですが。
まあ原作もそうだったがな。
CHAOS;HEAD らぶChu☆Chu!
ああ…まだのーふぇいともアマネカも詰んだままなのに…
だがそれらをすっ飛ばしてでも本作はやる。
とりあえず箱でけーよ。
おまけでテレカが付いてきたが、昔から特典のテレカってよくある手法だったけど携帯全盛の現代にどれだけ意味があるのかが謎だ。
まあ使用価値があったとしても使わないんですけどね。
あとソフマップ特典CD-ROMが付いてきたが、壁紙が二種類しかないのが果てしなく残念だ。
==SCENE 06==
ふとラングは、前方を注視した。ミショーのストレガに、後方からマッスルが被るように接近している。まずい、敵は搭載資材を使って攻撃を……彼は思わず怒鳴った。
「ミショー、回避だ!」
次の瞬間、ラングは凍り付いた。自分の見たものが信じられなかった。
マッスルの上部構造物が粉々に砕け散ると共に、そこから黄褐色の粘液が噴出した。それは見る間に内膜を、そして外膜を作り上げ分裂を繰り返し……なんということだ、あれではまるで……まるで生き物じゃないか?
ラングは本質を衝いていた。マッスルの上部構造物を破壊したのは、まぎれもなく生物だった。蠢く巨大な肉塊だ。煽動と収縮を繰り返し、肉片を飛び散らせつつ、それはある形を取り始めた……。
なんだ、あれは? まるであの形状は……ラングは愕然とした。あれは武器だ。間違いない。銃身の形状そのものだ。彼は声帯から声を絞り出そうとした。
その刹那、肉塊から青白い閃光が噴出した。
「なに!」
ラングは叫んだ。閃光は真っ直ぐミショーのストレガへと突き進む。彼女の機体がロールを打ち……辛くも閃光をかわした。
閃光……あれはただの光じゃない。そうだ、あれは間違いなく……。
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
「高出力レーザー!?」
ボイド大尉は微かに呟くと、首を捻った。ラング機のアリスは、マッスルの高出力レーザー使用を伝えてきた。だが、スペックから見て、マッスルにそんなものが搭載できる筈がなかった。彼は、データーエラーの可能性を考え、キーを叩いた。
自己診断プログラム・ラン……
アリスは、チェック中を示すコードを返送してきた。ここで、不幸なミスが起きた。ボイドはそのコードをデータエラーの確認と誤解したのだ。このミスは、チェック中を示すコードとデータエラーコード確認済みの数値が似ていることから発生した。(民間とは違い、軍ではまだ数値コードの使用が中心だった。)
彼は蓄積した疲労のためにコードを誤って解釈した。マーフィーの法則は、ストレガ編隊からギャラントへとその適用範囲を広げた。
ボイドは、高出力レーザー云々の報告は誤認と判断した。彼は意図せずもデルタフライト苦戦の一環となった。後にその事実を知った彼は、罪悪感に押しつぶされて不幸な最期を遂げるのだが……それは2年ほど後の話だ。
今は、ラング達に話を戻そう。
シティ上空ではマッスルとストレガの激戦がようやく終わろうとしていた。マッスルは高出力レーザーでミショー達を攻撃した。それに対して、彼等はバスター・グレネードとアサルト・ブレーカーで反撃した。マッスルは、ストレガ3機の集中攻撃の前に爆発し、その残骸をシティのメインストリートへとぶちまけた。
ラングはまだ自分の目が信じられなかった。彼は思わず呟いた。
「あれはいったい……」
「ラング、クラウスとカートもあの片割れに……」
ミショーだった。ミショーが喋った……しかも、よりによってそんな重要なことを今まで!
思わずラングは怒鳴った。
「なぜ言わなかった!」
「言って信じた?」
ラングは詰まった。ミショーの声は、まるで幽鬼そのものだった……その一言に、彼女は全てを込めていた。レーザー装備の化け物に部下を殺された……そんな馬鹿な……誰が信じられる?……お前は自分のミスを隠すためにそんな作り話を……違う!……ほう、だったら証拠を……そんなものはない……見損なったぞ、ミショー。お前がそんな奴とは……沈黙……。
ラングは、仮にミショーが前もって真実を語った場合の反応を全て予測できた。そうだよな、ミショー……俺にはよく判っている。彼は、その意志を一言に凝縮して言った。
「いや……」
今でも信じられない思いだった。
ディースリーは愕然としていた。ミショーの沈黙には意味があった……理由は、彼自身が目の当たりにしていた。
彼はマッスルの高出力レーザーを必死に回避しつつ、果敢に反撃した。その時、ラングからのコールが来た。
「ラングよりディースリー、敵はハイパワーレーザーを装備、警戒しろ」
遅いんだよ! ディースリーは内心で毒づくと、スロットルを全開にした。
ギャラントの通信室では、電信員がコンソールを操作していた。5分前からの情報だ。カテゴリーはフラッシュ。特別緊急・最優先だ。
受信が終わると、彼はデータディスクを引き抜き、それを通信長に渡した。
通信長は、コード・ボックスにデータディスクをセットし、認証コードを入力した。続いて網膜照合と指紋、声紋を入力する。
やがて、コード・ボックスは一枚の通信紙をプリントした。それは方面軍司令部からキナバルへの通信文だった。
/data/Smarty/templates/default/header.tpl
/data/Smarty/templates/default/footer.tpl
が使用されます。
また、ユーザで作成したテンプレがあれば、
/html/user_data/packages/default/header.tpl
/html/user_data/packages/default/footer.tpl
が優先して使用されます。
これでは、たとえばログイン画面などの一部のページだけ全然別のヘッダにしたいんだよ、といった場合に対応できません。
一番手っ取り早いのはExクラスで適当にフラグを突っ込んで、header.tplで場合分けでしょう。
/data/class_extends/page_extends/mypage/LC_Page_Mypage_Login_Ex.php
1
2
3
4
|
function process() {
$this->use_tpl_hoge=1;
parent::process();
}
|
1
2
3
4
5
|
<!--{$use_tpl_hoge}-->
違うヘッダ
<!--{else}-->
いつものヘッダ
<!--{/if}-->
|
ですがまあ正直どうなのという作り方ですね。
どうにかしてみましょう。
テンプレートの割り当ては
/data/class/SC_View.phpのSC_View::SC_View()、コンストラクタで行っています。
で、困ったことにLC_Page_Mypage_Login等のクラスはLC_Page_Mypage_Login::process()内でSC_Viewをインスタンス化して表示まで一気に行ってしまっています。
Exクラスから介入する余地がないんですよね。
毎度言ってますがなんでこんな適当な作りなんですかね。
具体的なロジックはここら辺になります。
1
2
3
4
5
6
7
8
9
10
11
12
|
// ヘッダとフッタを割り当て
$header_tpl = USER_PATH . USER_PACKAGE_DIR
. TEMPLATE_NAME . "/" . "header.tpl";
$footer_tpl = USER_PATH . USER_PACKAGE_DIR
. TEMPLATE_NAME . "/" . "footer.tpl";
// ユーザー作成のテンプレートが無ければ, 指定テンプレートを割り当て
if (!$this->_smarty->template_exists($header_tpl)) {
$header_tpl = TEMPLATE_DIR . "header.tpl";
}
if (!$this->_smarty->template_exists($footer_tpl)) {
$footer_tpl = TEMPLATE_DIR . "footer.tpl";
}
|
ユーザディレクトリ内にヘッダフッタがあればそれを割り当て、それが無ければデフォルトのテンプレートを割り当てています。
外部から値を渡すことができないので操作もできません。
結局該当のクラスを直接変更するしかありません。
LC_Page_Mypage_Login::process()の、SC_SiteViewをインスタンス化した直後あたりに以下を埋め込みましょう。
1
2
3
|
//ヘッダフッタのテンプレートを変更する
$objView->assign("header_tpl", TEMPLATE_DIR . "header_hoge.tpl");
$objView->assign("footer_tpl", TEMPLATE_DIR . "footer_hoge.tpl");
|
全然どうでもいいんですがデフォルトのテンプレートに
<div id="fotter">
とか書いてあります。これはひどい。
EC-CUBEの記事
BFBC2オンがだんだん面白くなってきた。
しかしやはり、階級によって戦術の幅が増え能力も強化されるというこのシステムは初心者殺しすぎる。
階級が上がるたびに基礎能力が弱くなり、そのぶん兵装やアイテムで戦闘能力を特化するシステムにしたほうがいいのではないかと思う。
あと時折唐突にダッシュボードに戻されるのはどうにかしてくれ。
難民探偵
☆☆
最初に違和感をおぼえたときになんとなくこうなんじゃないの、と思ったのが全くもって正解だった。
さすがに動機や理由なんかは(その時点では提示されていないこともあり)わかったものではなかったが、トリックそのものは完全に想像通りだった。
ていうか、なんかどこかで全く同じ手口の内容を読んだことがあるような気がするんだがなんだっけ。
あと、あんな大事なことに警察が誰も気が付かなかったとか。
明快な現象を意味不明に歪曲してしまう西尾維新にしてこの単純な内容はなあ。
ミステリが始まるまでの前半のほうが面白いってどうなの。
ハードカバーにしてしまう価値があったのかどうかはなはだ疑問。
零崎人識の人間関係 匂宮出夢との関係
☆☆☆
まさかの4巻同時発売。なんだこれ。
と驚き勇んでみたはいいもののどれもがっかりな出来。
4冊の中ではこれが一番読める話ではある。
まあ正直個人的に狐って口だけの全然どうでもいい人間にしか思えないので最強最悪みたいに扱われているのには違和感しか感じないし出夢が何故殺さなかったかもわからないんですがね。
零崎人識の人間関係 無桐伊織との関係
☆☆
台無しだ。
たかが殺意がいっぱいある程度で劣化素人が闇口トップクラスを実力で圧倒とか台無しすぎる。
全然どうでもいいけど誰か一人が嘘はきちんと答えが出るようになってますね。
零崎人識の人間関係 零崎双識との関係
☆☆
呪い名弱ぇ。
これまで秘密に出し惜しみを重ね、謎に謎めいた謎々しい謎集団という地位を確保することに成功していた呪い名、その序列全員が集結し、マインドレンデルに挑む。
で、人識に全員撃退される。
その描写が人識が強い、という方向ではなく呪い名が弱い、というようにしか読めなくて困る。
特に罪口摘菜、武器が効かなければ非武器を試すのは道理だろうになんでその程度で逆ギレしてんだよ。
あと千匹の虫ケラってなんだったんだ。
零崎人識の人間関係 戯言使いとの関係
☆☆
で、結局戯言使いを殺さなかったのはなんでなんですかね。
自分はパターンに分類されないからですかね。
むしろそれなら真っ先に殺すべき対象だと思うんだが。
プレイヤー側だったからですかね。
あれほど一般人でありながらとか強調しておいて一般人じゃないのかよ。
あと決死の覚悟が無かったのはどういうことだ。