忍者ブログ
[PR]
×

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



2026/04/11 18:07 |
ショートカットメニュー:Symfony

Symfony記事へのショートカットメニュー
日数はPractical symfonyのチュートリアルに対応しています。
http://www.symfony-project.org/jobeet/1_2/Doctrine/ja/
 

PR


2009/12/05 22:53 | Comments(0) | TrackBack() | ショートカットメニュー
CakePHP-07:CakePHPで検索フォーム

Formヘルパーというものがあるので検索フォームを簡単に作成できます。
cake_sample/formに作成してみます。

formアクションはとりあえず何もしない。

app/controllers/cake_sample_controller.php 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
    
    /*
        CakeSampleコントローラ
    */
    class CakeSampleController extends AppController{
        
        //自分の名前
            var $name = 'CakeSample';
        
        //CakeSample/form
            public function form() {
                //入れる
                    $this->set('cake_sample', $this->paginate('CakeSample'));
            }
    }

ビューは$formを適当に呼び出すだけで簡単に入力欄ができあがります。

/app/views/cake_sample/form.ctp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
    //フォームオプション
        $options=array();
        $options['action']='form';
        $options['type']='text';
    
    //フォーム作成
        $a=array();
        $a[]=$form->create($options);
        $a[]=$form->input('id',$options);
        $a[]=$form->input('title',$options);
        $a[]=$form->end('検索');
    
        foreach($a as $val){
            print($val);
        }
 
    //検索結果表示
        if(isset($cake_sample)){
            var_dump($cake_sample);
        }

注意点として、初期状態だと新規登録を行うことに特化されたフォームになります。

フォームの名前としてCakeSampleモデル、即ちcake_samplesテーブルにあるカラム名を使うと、勝手にそこからデータ型を取得し、それに沿ったタグを出力します。
たとえばcake_samples.createdはdatetimeとして作成したので、年月日時分を選択させる<select>で表示されます。
主キーであるcake_samples.idなど、デフォルトではhiddenになってしまいます。
検索を行いたい場合こういった機能は邪魔なので、第二引数のオプションで出力形式を規定しなければなりません。
$options['type']で、形式を指定することができます。

また、$options['action']で、送信先のアクション名を指定しています。
デフォルトの送信先アクションは'add'になっているので、formアクションに戻ってくるようにします。


$formを使用すると各タグの名前が、
<input name="data[CakeSample][hoge]" />
といった変な値になってしまいます。
なんか気持ち悪いですが、コントローラ側で$this->dataで一括して受け取ることができます。

というわけで、その受け取った値を利用して検索する処理をformアクションに追加。

/app/controllers/cake_sample_controller.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
29
30
31
32
33
<?php
    
    /*
        CakeSampleコントローラ
    */
    class CakeSampleController extends AppController{
        
        //自分の名前
            var $name = 'CakeSample';
        
        //CakeSample/form
            public function form() {
                
                //引数があれば検索条件に入れる
                    $params=array();
                    if($this->data['CakeSample']['id']){
                        $params['conditions']['CakeSample.id']
                           =$this->data['CakeSample']['id'];
                    }
                    if($this->data['CakeSample']['title']){
                        $params['conditions']['CakeSample.title LIKE']
                           = '%'.$this->data['CakeSample']['title'].'%';
                    }
                    //念のためlimit
                    $params['limit']=10;
                
                //検索
                    $ret=$this->CakeSample->find('all',$params);
                
                //表示
                    $this->set('cake_sample', $ret);
            }
    }

これでidをイコール、titleをLIKEで検索できるようになりました。
ただ、せっかく作ったはいいのですが検索条件作成のあたりがどうにもCakePHPの作法に則ってないように見えてしょうがないんだがまあいいか。


さて、検索フォームができたのはいいのですがここで不思議現象が。

画面遷移後に入力値が保存されています。

えっと……なんで?
見ての通りコントローラでもテンプレートでも何もしていません。
激しく気持ち悪い。

 



2009/12/04 22:32 | Comments(0) | TrackBack() | PHP
ゲームレビュー:CHAOS;HEAD NOAH
360のギャルゲと2DSTGは制覇するよ計画発動中。



CHAOS;HEAD NOAH

実績1000/1000


史上こんなに嬉しくないCGモードがあっただろうか


いや、アイ惨みたいなのはともかく、ある程度力の入ったギャルゲーで、こんなにCGモードが苦痛な作品はない。
どういうことかって?まあプレイすればわかる。

そういうわけで永遠となった留守番を笑ってプレイできる私が死にかけた、色々とご勘弁願いたい妄想科学ADV、カオスヘッドノアである。


本作を楽しむに至るには、二つの壁がある。
一つ目はCGを見ての通りであり、もうひとつが用語集である。

用語集に「wktk」「(ry」「きんもーっ☆」「孔明の罠」「はいてない」「ペリカ」「ょぅι゛ょ」 とかが載っており、しかも「インフォームド・コンセント」「PTSD」等正しい解説と、「明和党」「星来オルジェル」等ゲーム内設定の解説と混ざって表示されるのが質悪いというかなんというか。
ゲームオリジナル以外の全用語がわかった人は人生を見つめ直すべきです。俺とか。


駄目だこいつ……早くなんとかしないと……

主人公は今時そんなの居ないってレベルの絶望的キモヲタ。
友人とすらまともに話す事ができないが、でもアニメの事なら延々話せるというたいへん痛い方面の人。
ヒキヲタニートで被害妄想で吃音症で対人恐怖症で社会恐怖で全般性不安障害ってどんだけ駄目人間だよ。
でも見た目だけは何故か整っており、そのおかげで女性ホイホイ状態。外見差別に絶望した!

そんな彼がひたすら駄目駄目な生活を送っていたところグロ画像を送付されたりその画像と全く同じ殺人事件が起こったりその死体の前に血まみれの見知らぬ女の子がいたりその女の子が実は一年前からの知り合いだったり見知らぬ女の子にストーキングされたり見知らぬ女の子に剣を探せといわれたり見知らぬ女の子に剣で斬りつけられたり見知らぬ女の子に絆創膏をプレゼントされたり見知った女の子の携帯電話があばばばばばばば

CG的なグロさもさるものながら、テキストも相当なものです。
本作がZ指定になったのは梢ルートのせいだそうですが、個人的には梨深とあやせの過去の方が精神に来た。


システムとして目新しいところとしては、普通の意味での選択肢がほとんど存在しません。
シナリオは妄想トリガーというフラグで分岐します。
要所でポジティブ妄想、ネガティブ妄想、特に妄想しないという三択要素が入ります。
ポジティブだったら基本的にエロい妄想、ネガティブだったらだいたい死んだり殺されたりとかそんな妄想が入ります。
時には妄想が、本人が妄想と気づかないレベルにまで入り込んでしまうこともあったりします。
ただ、基本的にはそれによってシナリオが変化するわけではなく、直後の演出が多少変わるだけというのが大半です。
図にするとこんな感じ。




それまでの選択の積み重ねで終盤だけが変化します。

これとは別に各キャラ別シナリオというものがあります。
特定のシーンで特定の選択肢を選ぶと、そのキャラクターのシナリオに入ることができます。
こちらはいったん入ったが最後、絶対に抜け出すことができません。
また、キャラ別シナリオも後半まではメインシナリオと全く同じ展開です。
シナリオ分岐点から個別シナリオ開始までがかなり離れており、同じテキストを何度も見せられることになるので少々面倒です。


おにぃなんか、赤リング点灯して修理に出されちゃえ!

以下はゲーム中のCGやテキストで出てくるURLの一部なのですが、試しに入れてみたら実際に行けてしまったという驚きの展開。
ネタだけのためにわざわざドメイン取りまくるとかどんだけ気合入ってるんだと。

希テクノロジーグループ
http://www.nozomi-tech.com/
アークハートメディカル会
http://www.arkheart-m.com/
天成神光会
http://www.tenseishinko.com/
ファンタズム
http://www.fantasm.jp/
ゲロカエルん
http://www.gerokaerun.com/
手描き絵
http://www.gurodaisuki.com/data/img/11841554610003.jpg
主人公愛用の検索エンジン
http://main.xxxxxxxx.jp/Deluoode.html

以下は本編中には出てきませんし一部のキャラは絶対に作ったりしないと思うのですが、一応公式のキャラクターブログという設定。

巧巳  http://www.nitroplus.co.jp/pc/chn/takumi/
梨深  http://www.nitroplus.co.jp/pc/chn/rimi/
セナ  http://www.nitroplus.co.jp/pc/chn/sena/
優愛  http://www.nitroplus.co.jp/pc/chn/yua/
梢    http://www.nitroplus.co.jp/pc/chn/kozue/
あやせ http://www.nitroplus.co.jp/pc/chn/ayase/
七海  http://www.nitroplus.co.jp/pc/chn/nanami/


※ただしイケメンに限る

本作のシナリオは、個人的には非常に惜しい出来です。
決して悪くはないしグロ画像を推してプレイするだけの価値はありました。
だからこそもう一歩が足りなかったという思いがします。

本作は謎が謎を呼ぶミステリ形式のシナリオな訳ですが、9個あるマルチエンディングのうちのひとつを見た時点で本作の概観がほぼ完全にわかってしまいます。
ジグソーパズルで言うと、一回解いたことで外枠が埋まったという状態。
それでいてまだ何かありそうだという雰囲気だけはぷんぷんと漂っており、でもプレイしていても内側が少しずつ埋まっていくだけで、実は上下逆だったとか、実は外枠の形が違ったとかそういったどんでん返しがないのです。
最終章の導入部分とか、いかにもという鳥肌展開だったのに、結局はそのままの内容に落ち着いてしまうという残念っぷり。
また視線のこととか、これは絶対アレだろうと思っていたら実は全くたいしたことではなかったとか。
いや、悪くはないんだ。決して。ただ求め過ぎなだけなのかもしれない。

やっぱりアレを知ってしまったのが悪かったんだろうな…


ディソードは飾りです。偉い人にはそれがわからんのです

他に欠点として、一部のヒロインが空気というのがあります。
個別シナリオがあるとはいえ、個別シナリオは本編には無関係なものがほとんどです。
また本作のキーワードのひとつであるディソードも、せっかく出たのにまったく使われてなかったりするのが残念なところ。
ディソードをまともに扱っているのは梨深とセナくらいで、あやせはマイクスタンドにしているし優愛なんか出したはいいがその後まったく出てこないという無意味っぷり。
そこらへんもう少しどうにかならんかったのかと。


お約束

七海>>梨深、セナ、あやせ>優愛>梢

七海が圧倒的すぎて他キャラは空気扱いですよ。
シナリオ上もアレだし個別シナリオがまたなんといっても素晴らしすぎる。
右手。


過去のゲームレビュー



2009/12/02 23:54 | Comments(0) | TrackBack() | レビュー
Android開発環境を入れる

前回エミュレータを動かすことができたので、次に開発環境を入れてみます。

だいたい公式に書いてあるのでそのとおりにやれば問題ありません。
http://developer.android.com/intl/ja/sdk/1.5_r3/installing.html

Androidの開発環境として有名なものがEclipseですが、英語です。
ありがたいことに最初から日本語化してあるPleiadesというパッケージがあるので使わせてもらいましょう。
http://mergedoc.sourceforge.jp/

とりあえずEclipse 3.5.0 Galileo Windowsをダウンロードして適当に解凍。
中にあるeclipse/eclipse.exeでEclipseが起動します。

ヘルプ→新規ソフトウェアのインストール→サイトの追加で
https://dl-ssl.google.com/android/eclipse/
を入力すると勝手に開発ツールが現れるので、ほいほいインストールしてしまいます。
インストールが完了したら再起動。
ウィンドウ→設定→Android→SDKロケーションに、前回インストールしたAndroidエミュレータのある場所を指定。
以上でAndroidソフトウェアの開発準備が整いました。

あとはデベロッパーズガイドでも見ながら適当に……アメリカ語はご勘弁願いたい。
http://developer.android.com/intl/ja/guide/index.html



2009/11/30 22:44 | Comments(0) | TrackBack() | Android
買ったものリスト 2009/11/29

注意!
前代未聞僅有絶無の複雑さを誇ります。
途中で投げない覚悟は出来ていますか?


殿といっしょ4
☆☆☆

大羽快が戦国時代を新解釈!
って新解釈過ぎるわ!
まあ戦国時代は信長の野望と戦国無双くらいしか知らないんですけどね。

そんなわけで斬新すぎる戦国武将と部下達によるギャグ漫画でした。
登場キャラが多すぎてキャラ間の関係がさっぱりわからなかったりするんですが、戦国マニア的にはたまらないのかもしれない。わかりませんが。


森のテグー1
☆☆☆☆☆

シュール系ギャグ漫画の神、施川ユウキの新作。
サナギさんともずくが神過ぎたせいでキャラが一歩弱い感じがするのがなんとなく惜しい。
が、意味不明さに何故か笑ってしまう感じは相変わらずでやはり素晴らしい。


え!?絵が下手なのに漫画家に?
☆☆☆

施川ユウキが漫画家になるまでの話というか恋の話というかそんなかんじのよくわからない自伝。
どこまで本当なのかわからないが、全部本当だとしたら驚きの駄目人間。
なんとなく現実に乗れない感じというのはわからないでもないのだが、この作者は漫画が無かったら間違いなく人生ドロップアウトしていたとしか思えない。
そんなスレスレだった人が今や私にこんな傑作を提供してくれているのだから人生わからないものである。

個人的には、作家なり歌手なりは作品で勝負すべきであり、本人そのものについてはまったくどうでもいいという立場なのだが(globeを10年以上聞いてるにも関わらず何人グループなのか知らない)、ここまで駄目極まってると、どうしてあんな神作品を連発できるのか逆に不思議に思えてくる。


迷路館の殺人
☆☆☆☆

ミステリにおけるギミックというものが個人的にあまり好きではない。
部屋が動くとかさ、建物自体が回転するとかさ、そういうのを認めてしまうと何でもありになってしまうじゃないか。

エピローグに違和感が。
「すべて」って書いてあるんだよね。
まだ実行前なのにこんなこと書いてしまっては胡散臭いことこの上ないじゃないか。

書きかけの小説と同じ、という理由についてはかなり早い段階で思いついた。
幾ら短編だからっていつもいきなり殺害現場から始まるって訳でもないだろうに。
どう考えたって順番は逆に決まってる。
部屋のプレートが無いのは部屋誤認のトリックに使うんだろうなということは思いついたが手段がわからなかった。
違和感について読み返してみるとしっかり書かれていた。
そういやこの手法は暗黒館でもあったな。
あのときは半分くらい見比べて諦めてしまったのは惜しかった。

それ以外の部分はもう全然わからなかったですよ。
肝心の叙述トリックとかもね。
しかし実際血が出てたら鑑識に引っかかると思うんだがどうなんだろう。

最後に。
最後のオチが、というか意味のない嘘をついた意味がよくわからない。


絶望先生19限定版
☆☆☆☆☆

なんてこった!
限定版とか出てるじゃないか!
おかげで19巻が2冊になってしまいました。
って確か16巻あたりでも同じことやってしまった気がしないでもない。

おまけDVDはテレビ1話分です。
っていうか木津多祢って19巻の最終話じゃないか。映像化はえーよ。


虫姫さまふたり

限定版が売ってなかった。
尋常じゃないオプション項目は凄いが結局デフォルト設定しか使ってないという。
弾幕STGは東方から入ったんで速い弾幕は苦手なんだよね。
というわけでボス戦が全然抜けられない。
それ以前にこの程度なら避けられるはずの弾にも何故か当たってしまう。
半年STGやってないと腕落ちまくりだな。
とりあえずせめてオリジナルノーコン程度には行きたいものだが……ラスボスが無理っぽい。
紅妖永風Lunaticはノーコン出来る(出来た)んだがなあ。
 



2009/11/29 20:47 | Comments(0) | TrackBack() | 買ったもの
Androidエミュレータを動かす

書いた後しばらく放置してたらいつの間にか1.6とか2.0とか出てしまっていたのですが、ここでは1.5をインストールしてみます。
きっとインストール程度ならそんなに変わってないでしょう。たぶん。だといいなあ。


どの解説サイトを見ても開発環境とエミュレータのインストールがごっちゃになってるので、ここでは先にエミュレータだけ入れてみます。

まず公式サイトからAndroid SDKをダウンロード。
http://developer.android.com/intl/ja/index.html

適当なフォルダに解凍。
システムの設定→環境変数PATHに、アンドロイドのフォルダ/toolsへのパス、要するにemulator.exeがある場所へのパスを追記します。
デミリタは;です。
環境変数PATHには最初からいろいろ書いてあると思うので、その最後に';C:\android-sdk-windows\tools'みたいなかんじで追記しましょう。

この時点でemulator.exeを実行しても動きません。
Windowsから起動すると一瞬で閉じてしまいます。
DOS窓から起動すると、下記のようなエラーが発生しています。
>emulator
emulator: ERROR: You did not provide the name of an Android Virtual Device
with the '-avd <name>' option. Read -help-avd for more information.


よくわかりませんがライブラリを選べということらしいです。
>android list targets
のコマンドで選べるライブラリを確認できます。
Android 1.5の時点では1:Android 1.1、2:Android 1.5、3:Android 1.5+Google APIsの3種類がありました。
とりあえず高性能そうな3にしておきます。
>android create avd -n hogehoge -t 3
Created AVD 'hogehoge' based on Google APIs (Google Inc.)
よくわかりませんができたみたい。
実行。
>emulator @my_android1.5
最初の起動はやたら時間がかかりますが、放っておけばそのうち動かせるようになります。

最後にemulator.exeへのショートカットを作成、その後右クリックからプロパティで、リンク先を修正します。
だいたい
"C:\Program Files\android\tools\emulator.exe"
とかなっていると思いますが、後ろに引数をくっつけます
"C:\Program Files\android\tools\emulator.exe" @hogehoge
これで起動もOK。

まあ、今後は基本的に開発環境から呼び出すのでこのショートカット使いませんが。



2009/11/27 15:38 | Comments(0) | TrackBack() | Android
CakePHP-06:CakePHPのpaginator全メソッド

CakePHP1.2.4.8284のページャーの全メソッドと引数を解説。

公式マニュアルには$paginatorの解説が全く載っていません。
マニュアルでは「$paginator->numbersで前後10件ずつ表示したい」「1ページ目にリンクしたい」すら解決できません。
他に解説しているところもほとんど見あたりませんでした。

仕方ないのでソースから解読。
よくわかんないところは想像で適当に補っています。
特に$optionsの中身とかはさっぱりわからないので間違っている可能性大。

first ( [ $first [ , $options ] ] )
1ページ目へのリンクを作成
引数 解説
$first リンクに表示する文字
$options 要素はtag,after,model,separator,url,update
last ( [ $last [ , $options ] ] )
最終ページへのリンクを作成
引数 解説
$last リンクに表示する文字
$options 要素はtag,before,model,separator,url,update
prev ( [ $title [ , $options [ , $disabledTitle [ , $disabledOptions ] ] ] ] )
前のページにリンク
引数 解説
$title リンクに表示する文字
$options 要素はurl,step,escape,model,tag,model,update
ただしtagはバグで?効かない
$disabledTitle 前のページが存在しない場合に表示する文字列
$disabledOptions 前のページが存在しない場合に適用するオプション
要素は$optionsと同じ。
こちらはtag有効。
next ( [ $title [ , $options [ , $disabledTitle [ , $disabledOptions ] ] ] ] )
次のページにリンク
引数 解説
$title リンクに表示する文字
$options 要素はurl,step,escape,model,tag,model,update
ただしtagはバグで?効かない
$disabledTitle 次のページが存在しない場合に表示する文字列
$disabledOptions 次のページが存在しない場合に適用するオプション
要素は$optionsと同じ。
こちらはtag有効。
numbers ( [ $options ] )
前後数ページへのリンクを表示
引数 解説
$options 要素はtag,before,after,first,last,separator,model,modulus,url,update
またはtrue(before,after,first,lastを指定したことになる)
sort ( $title [ , $key [ , $options ] ] )
ソート
引数 解説
$title リンクに表示する文字列。
ただし$keyが無い場合、$titleが$keyに入れられ、$titleはキャメルケースされて表示される。
$key ソートするカラム名。
 
$options 要素はurl,model,update
url ( [ $options [ , $asArray [ , [ $model ] ] ] )
指定されたURLを返す
引数 解説
$options 要素はpage,sort,direction,order。
デフォルトは現在のURL。
$asArray 返り値を配列として返すか否かのフラグ。
falseの場合、そのまま完全なURLが返ってくる。
trueの場合、link()の第二引数として使用する配列形式で返す。
$model 別のモデルを使用する場合に指定。
link ( $title [ , $url [ , $options ] ] )
任意のリンクを作成して返す
引数 解説
$title リンクに表示する文字列。
$url URLに出力するキーと値の配列。
現在のURLの値とマージされる。
$options 要素はmodel,url,update
使用例 $paginator->link('リンク',array('a'=>'b')); → 現在のアドレスに/a:b/がプラスされたURLへのリンクが作成される。
currrent ( [ $model ] )
現在のページ数を返す
引数 解説
$model デフォルト以外のモデルをチェックしたい場合に指定。
params ( [ $model ] )
ページャーの関連パラメータを取得
引数 解説
$model デフォルト以外のモデルをチェックしたい場合に指定。
options ( [ $options ] )
ページャーの関連パラメータを設定
引数 解説
$options params()で参照できる情報を上書きできる。
モデル名から含めた配列で指定が必要。
ビューからでは指定できない内容が多い。
使用例 $paginator->options(array('Hoge'=>array('page'=>10))) → 現在のページを10ページということにする
 
counter ( [ $options ] )
現在の件数やページ数などを返す
引数 解説
$options 要素はmodel,format,separator
ただし引数を文字列で与えた場合、$options['format']として扱われる。
$options['format'] $options['format']は特殊なので此処で解説。

無指定、'pages'の場合、「3 of 50」(50ページ中3ページ目の意味)
'range'の場合、「41 - 60 of 999」(999件中41-60件目の意味)
それ以外の場合、入力した中から以下の文字列が置換されて返ってきます。
 %page%→現在のページ数
 %pages%→全ページ数
 %current%→1ページあたりの件数
 %count%→全件数
 %start%→現在のページの開始件数
 %end%→現在のページの終了件数
 
使用例 $paginator->counter(array('format'=>'range')) → 「41 - 60 of 999」
$paginator->counter('全%pages%ページ中%page%ページ目を表示') → 「全50ページ中10ページ目を表示」
 
hasPage ( $model , [ $page ] )
該当のページが存在するかチェック
引数 解説
$model ページが存在するかチェックしたいモデル名。
ただし数値を入れた場合、ここが第二引数の$page扱いになる。
$page チェックしたいページ数。
使用例 $paginator->hasPage('Hoge',10) → Hogeモデルのページャに10ページ目が存在するかチェック
$paginator->hasPage(10) → 現在のモデルのページャに10ページ目が存在するかチェック
 
hasPrev ( [ $model ] )
前のページが存在するかチェック
引数 解説
$model チェックしたいモデル名。
デフォルトは現在のモデル。
hasNext ( [ $model ] )
次のページが存在するかチェック
引数 解説
$model チェックしたいモデル名。
デフォルトは現在のモデル。
defaultModel ( )
デフォルトのモデル名を取得
引数 解説
なし 基本的に内部用
sortKey ( [ $model [ , $options ] ] )
ソートのORDER BYの値を取得。passedArgs['sort']に近い
引数 解説
$model デフォルト以外のモデルを使用する場合に指定。
$options sort,order,defaults
sortDir ( [ $model [ , $options ] ] )
ソートの順番(ASC,DESC)を取得。passedArgs['direction']に近い
引数 解説
$model デフォルト以外のモデルを使用する場合に指定。
$options order,defaults,direction
各メソッドに出てくる引数$optionsは、以下のような要素を持った配列で渡します。
要素 解説
tag ページャーは通常<span>で括られるが、それを変更する。
separator リンクが複数出力される場合、間を分けるセパレータ。
before リンクの前に入れる文字列。
after リンクの後ろに入れる文字列。
first 先頭へのリンクを表す文字列。
数値を入れた場合、一件目から該当件数を表示する。
last 最後へのリンクを表す文字列。
数値を入れた場合、後ろから該当件数を表示する。
model デフォルトのモデルではなく、別のモデルのページャを使用したい場合にモデル名を入れる。
modulus 前後を合わせて何ページ表示するか。
前3ページ、後6ページといった指定は出来ない。
url 配列で指定。
リンクのアドレスに指定した値が追加されます。
step 前後step数先のページへのリンクを作成する。
update デフォルトは'Html'で、取れる値は'Html'か'Ajax'。
どちらの形式のリンクを作成するか。
sort,order,defaults,direction
'/(?:\w+\.)?(\w+)/'って何だ?

で、見ていて色々とバグっぽい挙動を見つけました。
$paginator->first(5)みたいに数値を渡すと、2~5では与えた文字に1ページ目へのリンクとなり、6以降を渡すと$options['first']=5を渡したのと同じ挙動になります。
$options['params']$paginator->numbers()に渡すとページャが死んじゃいますし、$options['options']を$paginator->first()$paginator->last()に渡すとやっぱり死にます。
一部のメソッド内で$optionsをectract()してるので、おかしくなるのは大抵そのせいです。
このectract()って全く意味がない使い方に見えるんだが、何故こんなことしているのだろう?
あと基本的に括りは<span>ですが、何故かfirst()とlast()だけ<div>なのは何故。

つうか、そもそも$paginatorって使いにくいよね。
未だPEAR::Pagerに勝るものはないと思う。


CakePHPの記事一覧



2009/11/25 22:20 | Comments(1) | TrackBack() | PHP
買ったものリスト 2009/11/22


絶望先生19
☆☆☆☆☆

何時何処から見ても全く同じという金太郎飴的な、しかし何処を見ても一つたりとも同じではないという非常に損をしている傑作ギャグ漫画。
それにしてもギャグ漫画家は精神を病んでしまうというのは何か職業病なのですかね。
南国の頃は後書きも楽しげな内容が多かったのに最近のはネガティブすぎて見てらんない。見てるけど。
で、セブ島の続きはまだですか。


ラブやん12
☆☆☆

実はカズフサと同年代なのでなんとなく本作を読むたびに身に沁みていたのだ。
数年前までは。
今はもうプーではないからカズフサとは違うぜ!俺様は一皮剥けた!
……実はヒデヒコと同レベルだったりして。

当初は全体的に絶望的だった本作も、だんだん合法的ロリキャラが増えてきてハーレム物っぽくなってきてるような気がしないでもなく少々迷走気味の気配。
あとヤエ関連の話は両者に素でドン引きした。


オバカミーコ14
☆☆☆☆

いい加減とてもオバカとは呼べないミーコのサクセスストーリー。
つうてもミーコはさっさと負けてしまい、寧香とれいらとデジミユが主役ですが。
しかしれいらとか当初お局的雑魚扱いだった気がするんだが。
今巻ではついにネット専業麻雀打ちが出場してきますが、さすがにリアルで一度も打ったことがない奴がいきなり打つとかはさすがに無理だろうがと。
てか、この手の本では必ずデジタル側が嫌な奴扱いされるのは何ででしょうかね。


白山さんと黒い鞄3
☆☆☆

九衛がウザいのと白山さんが弱気すぎるのはどうにかならんもんだろうか。
ということで今回の舞台は海。
まあ作者が作者なので海に行ったからといって作風が明るくなるということもなく、ひたすら暗い過去と暗い未来の狭間でちょこっとラブコメという相変わらずな展開となります。
しかし外部にも普通にああいうのが居るのであれば必死に鞄だけ守っていてもあまり意味がないような。
つうか、あんな危険物さっさとコンクリ詰めにして海溝にでも沈めてしまえ。


酷道を走る
☆☆☆

日本の道路は国道、県道、市町村道、私道、農道、林道等にランク分けされているわけですが、国道はそのランキングの頂点に君臨し、全国の都市間を連結する重要な幹線道路と位置付けられています。
ところが三桁国道ともなると政治的要因とか地図見て適当に決めたんじゃなかろうかという路線も増えていき、酷い物になると車は通れないとかそもそも道が無いといったものまであります。
一部でそんな酷い国道ということで酷道と呼ばれていましたが、ここ数年国道関連の本が徐々に出版されています。
本書もその一冊で、TEAM酷道の主催、鹿取茂雄による酷道レポートです。

登場するのはR152、157、193、265、388、417、418、439、458、488、490。
サイトでは写真しか載っていませんが、本書ではきちんとレポートが書かれています。
基本的には国道レポートと言うより紀行文のような書き方なので軽く読むことが出来ます。
そのぶん資料としての価値は低く、山行がみたいな机上調査、現地調査やその結果といった内容はほとんどありません。
あと閉鎖ゲートを乗り越えるとかの描写を平然と書いているってのはどうなんだろうな。
法律的にどうかは知りませんが、多くのサイト等では普通そこらへんはぼかしているのに、本の中で堂々と書かれていると非常に違和感があります。

あとしきりに、若い頃は完徹とか平気だったが最近は身体が付いてこない的なことを書いていたのでm9(^Д^)プギャーしてたら、奥付で同年生まれだったことが発覚したでござるの巻。


Left 4 Dead 2

全力疾走するゾンビ!
というインパクトだけで大勝利を勝ち取ったL4Dの続編が早々と登場。
熱しやすく冷めやすい本作ですので、前作からわりと早く登場したのはわりと正しいかもしれません。

さてその本作ですが、実際やることは何一つ変わりません。
変わったところといえば、武器の種類が増え、敵の種類が増え、キャラクタが変わり、マップが変わったくらいです。
それ以外は本当にもう今まで通りゾンビを皆殺し!生存者を皆殺し!

とりあえずキャンペーンを一通りクリアしたが、今回はなんかEASYですら難易度高いような気がするんだが。
前作ですらEXPERTクリアできなかったのに今回は更にその上のモードがあるってんだからどうしたものか。



2009/11/22 20:26 | Comments(0) | TrackBack() | 買ったもの
ゲームレビュー:メモリーズオフ6 NextRelation

360のギャルゲと2DSTGは制覇するよ計画発動中。



メモリーズオフ6NR
実績1000/1000

概要

まず本作はメモオフ6 T-Waveの完全な続編的おまけです。
前作エンディング後の世界を描いているので、前作をプレイしていないと全く意味不明です。

また問題点として、フルプライスの割にシナリオが短いです。
前作の半分くらいしか無いのではないでしょうか。
トライアングルルートもありません。
T-Waveと違い各シナリオ間の共通部分が全く無いので、そういう意味では頑張って無くもないですが、シナリオ単位ではほぼ完全に一本道です。
そのおかげで前作で感じたようなシナリオ間の乖離といったことは感じられませんが、そのかわり本作の志雄は前作に輪をかけたヘタレに成り下がっているので、そちらの意味で少々苛つかされるかもしれません。
というかされた。
あとやっぱり亨は救われません。


プレイ雑感

本編と同じ順番で攻略しようということで鈴から。
最近買ったバイクでツーリングってどう考えても置いてかれるだけだぞ(経験者談)
なんかこう鈴の思考がガキっぽいな。
二人乗りで悪路を全力疾走とかないわ。
とりあえず甘さが足りなかった。

りりすがデレデレだぜヒャッホウ。
それはいいのだが志雄は空気読めなさすぎ。
あとしょーがねーが多すぎ。
あと一週間程度のバイトでどうにかなるくらいの金がないって、一人暮らしなら少しくらい蓄え貯めてないと危険すぎるだろ。
急に病気とかなったらどうする気だったんだこいつ。
まありりすがかわいいからいいんだが、主人公が志雄でさえなければもっともっとデレデレできたのにと思うと非常に残念だ。

結乃。
「職人の手によるどこか古めかしい絵は、幻想的な雰囲気にマッチしてその場を盛り上げている」いやあ…一番手前にアレな絵が。
つうか、ここで本編の宣伝してどうするんだ。
ちょっと久しぶり→数日前に見たばっかりだろ。
さてシナリオの根幹に関する問題なんだが、根本的にその企画はどうなんだと。
本編でもわりとそうだったんだが、公衆の面前で思い切り内輪な発言とかもうね。
長年やっててリスナーと気が知れてるDJとかならまだしも、たった10分の初見DJであれはないわ。
ぶっちゃけまともに終わらせていたとしても賞に擦らないレベル。
あと結乃が前の二人乗りは明らかに違法。
あの場面はどう考えても鈴を呼ぶべきだった。

クロエ先輩はやっぱり可愛すぎる。
本編で完全スルーだった先輩の家庭問題が明かされ、そして解決されるまでの道筋が描かれます。
……って、どう考えても病院まで付き添っていくべきだろ、そこ。
先輩は他の空気読めてないキャラと違って自分をきちんと分析していて素晴らしいな。
ちょっと弱気なところはありますが。
そしてそのぶん志雄のろくでもなさが目立つ。
あとどうでもいいが最後の絵が伊集院レイに見えた。

智紗はやはり重いぜよ。
いくらなんでも男湯に入ってくるとか周り見えて無さ過ぎるだろ。
しかし田舎の祭りっぽいのにやたら花火が盛大ですな。
俺の田舎とか単発を十数発打ち上げるのが精一杯でしたよ。
……さすがに限界集落と比較するのは無理があった。

神奈ルートは無理。
俺には全スキップする以外に選択の余地が無かった。
つーかこんなルート作るな!


感想薄い?

いやー、本作の感想纏める前にシュタゲをプレイしてしまったもので、すっかり本作の記憶が抜け落ちてしまいました。
どうしてもアレと比べると霞んでしまうのはしょうがない。
本作もまあつまらないというわけでは決してないのだが、相手が悪かった。


お約束

シナリオ
クロエ>りりす>智紗>結乃>鈴

お気に入り度
クロエ>りりす>結乃>智紗>鈴

相変わらずクロエ先輩が可愛すぎて困る。

それにしても何れのシナリオにおいても志雄がヘタレ過ぎるのはどうにかならないのでしょうか。
いい加減進路考えて無さ過ぎだしやたらめったらネガティブだしそしてウザい。
なんでこんなんで生徒会長とかやってられてるんだろうな。


総括

立ち位置からして、メモオフ6をプレイし、その出来に続編を買ってもいいと思える程度には満足し、そして実際に続編を購入した、という選ばれしエリートにしかプレイできないのが本作なわけですよ。
そんなエリート達に対して、彼女と別れちゃいました☆てへ☆とか勘弁してくれ!
なんかもうせっかく前作で頑張ってハッピーエンドを迎えたのに続編でこれは辛いですよ。
そういうのは現実だけで十分ですから!


過去のゲームレビュー



2009/11/20 21:55 | Comments(0) | TrackBack() | レビュー
Symfony-Doctrineで任意のSQLを実行する

びっくりするほど使い辛いなDoctrine

とりあえず
 

SELECT 
  a.id AS id
  ,(
    select count(*) from b
    where b.a_id=a.id
    group by a.id 
  ) AS count
FROM a

の発行方法がわからない。

確かに簡単なSELECTやINSERTなんかはDoctrineを使えば一瞬でできるので便利といえば便利なのですが、リレーションのついてないテーブルをくっつけたり変に集約したサブクエリみたいな入り組んだものを作ったりしようとすると途端に訳が解らなくなります。
まあドキュメントをほじくり返せばこういったDQLを作成する方法も何処かに書いてあったりするようですが、よくわからん。


というわけでDoctrineで任意のSQLを発行する方法です。

getconnection.php
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
    
    //DBコネクション
        $q=Doctrine::getConnectionByTableName('a');
    
    //任意のSQL
        $sql='SHOW TABLES';
    
    //実行
        $statement=$q->execute($sql);
    
    //取得
        $ret=$statement->fetchAll(PDO::FETCH_ASSOC);

PropelにはPropel::getConnection()という直接コネクションを取得できるメソッドがあるのですが、Doctrineには何故か存在しないようです。
Doctrine::getConnectionByTableName()は一見ATable extends Doctrine_Tableあたりを通じてコネクションを取得するメソッドのように見えますが、実際には引数を使っていないようで、適当な文字列を入れるだけでコネクションが取得できたりします。
コネクションに使用されるモジュールは環境によって変わると思いますが、PDOが入っていればPDOになると思いますので、あとは普通にPDOのメソッドを実行するだけです。

まあ掟破りな方法かもしれませんが、Doctrineが訳の解らない作りになっているのが悪い。
 

Symfonyの記事一覧


2009/11/17 22:51 | Comments(0) | TrackBack() | PHP

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