2009/12/21、情報処理技術者試験平成21年秋期の合格発表が行われました。
http://www.jitec.ipa.go.jp/
私の解答。
http://yuubiseiharukana.blog.shinobi.jp/Entry/167/
公式解答例。
http://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2009h21.html#21aki
iTec、TACの解答速報。
http://yuubiseiharukana.blog.shinobi.jp/Entry/168/
結果ですが、
|
午前Ⅰ得点
|
***.**点
|
|---|---|
|
午前Ⅱ得点
|
80.00点
|
|
午後Ⅰ得点
|
94点
|
|
午後Ⅱ得点
|
68点
|
というわけで合格でした。
にしても採点相当甘くないかこれ?
詳細な配点が発表されていないので正確な判定は出来ませんが、午後1が94点とかありえないレベル。
選択問題で明らかに間違ってるものだけでも3問あるので、それが各2点とするならば残りは全問正解となる計算です。
あと午後2設問4(2)あたりはどっちつかずの書き方をしていたところを正解と取ってくれたんだろうと思うことにする。
どうでもいいのですがIPAのサーバはApache Tomcat/5.5.27みたいです。
http://symfony.localhost/frontend_dev.php/job/show/id/3
というURLで何故frontendアプリケーションのjobActions::executeShow()が実行されるのか、というお話。
まずテンプレート上で
url_for('a/b?c=d&e=f')
と書くと、url_for関数が勝手に
<a href="frontend_dev.php/a/b/c/d/e/f">といったふうにリンクを書き換えます。
indexという文字が現れたときとかの例外はありますが、今のところは特に気にする必要はありません。
リンク先をクリックした場合、まず第一引数であるaというモジュールを探し、その中のaActions::executeB()を実行しようとします。
三番目以降の引数はリクエストパラメータとなります。
まあこれが基本なのですが、そのルーティングの設定はapps/frontend/config/routing.ymlというファイルで決定されています。
これを変更することで、一部のリクエストだけ特別な処理を行ったりすることができます。
先にマッチしたルートが実行されるので、設定の順番は狭い順にします。
とりあえずデフォルトの設定を見てみます。
最初の段落、
1
2
3
|
homepage:
url: /
param: { module: default, action: index }
|
/はindex.phpとかfrontend_dev.php/といった、引数が一個もない状態で来た場合にマッチします。
この場合、defaultモジュールのindexアクションが実行されます。
defaultモジュールは作成していませんが、Symfonyで最初から用意されているモジュールで、index以外にもerror404やdisabled、secureといった基本的なページが用意されています。
前回あったforward404Unless()は、内部的にdefaultモジュールのerror404アクションを呼び出しています。
homepage:は単なるラベルなので適当に変更してもかまいません。
ただ後述の@のためにわかりやすい名前にしておきましょう。
二段落目は
1
2
3
|
default_index:
url: /:module
param: { action: index }
|
これはモジュール名だけやってきてアクション名がなかった場合、デフォルトのアクション名はindexにするよ、というだけの内容です。
たとえば
param: { action: hoge }
に変更して
http://symfony.localhost/frontend_dev.php/job
にアクセスすると、jobモジュール内にhogeアクションが見つからないよ、というエラーになります。
http://symfony.localhost/frontend_dev.php/job/index
とアクション名まで書いた場合はきちんと表示されますが、これは最後の段落です。
1
2
|
default:
url: /:module/:action/*
|
モジュール名とアクション名が入っていれば、その後どのようなパラメータが入っていてもこの段落に当てはまります。
具体的な指定は何もありませんが、すなわちモジュール名とアクション名をそのまま何も変更しないということです。
ではルートをカスタマイズしてみましょう。
まずはチュートリアルの通りに
1
2
3
|
homepage:
url: /
param: { module: job, action: index }
|
と上書きします。
これで、引数が無い場合にはjobモジュールのindexアクションが実行されるということになり、
http://symfony.localhost/frontend_dev.php
http://symfony.localhost/frontend_dev.php/job/index
この両者が同じになります。
更にルーティングを追加。
1
2
3
4
|
job_show_user:
url: /job/:company/:location/:id/:position
param: { module: job, action: show }
requirements: {id: \d+ }
|
default:の/:module/:action/*が先に来るとそちらに引っかかってしまうので、default:より先に記述する必要があります。
そして以下のURLでアクセスします。
http://symfony.localhost/frontend_dev.php/job/sensio-labs/paris-france/1/web-developer
urlに:が付く場合は該当するパラメータの内容を表し、付かない場合はURLそのものを表します。
url: /job/:company/:location/:id/:position
の場合、
/job/はそのものが必須であり、
http://symfony.localhost/frontend_dev.php/job/sensio-labs/paris-france/1/web-developer
のようなURLには引っかかりますが、
http://symfony.localhost/frontend_dev.php/jobs/sensio-labs/paris-france/1/web-developer
などのURLにはひっかからないということを示します。
/:companyは、その位置に該当するパラメータということで、今回の場合は"sensio-labs"を表します。
このパラメータは、アクション内で$request->getParameter('company')として受け取ることができます。
どのような場合に使うかというと、URLをわかりやすくすることができます。
とりあえず今思いついたものとしては静的ページを配置する場合などに使えるかもしれません。
1
2
3
|
static_page:
url: /static/:name
param: { module: index, action: static }
|
としてindexActions::executeStaticで$this->setTemplate($request->getParameter('name'))とか。
requirementsエントリはリクエストパラメータの絞り込みです。
id: \d+なので、:idの位置に来る値が数値であることを要求します。
当てはまらなかった場合はstatic_page:のルーティングには該当しないということになります。
@を使用したリンクを作成してみます。
url_for('@job_show_user?id=1&position=pos&company=comp&location=loc');
とすると、URLの形式がjob_show_user:のURL形式である、/job/:company/:location/:id/:positionに合致するように変形されます。
@を使わない形式ではurl_forに配列を渡せるのに@を使用するとできないのは何故なんだろう。
長くなったので続きは後日。
これ一時間とか絶対無理だよな。
Symfonyの記事一覧
999が全然売ってないんだが何故だああ。
乃木坂春香の秘密11
☆☆☆
口絵に騙された!
イラストと本文が矛盾している作品というのはラノベではよくある話ですが、大抵は服装が違ったり台詞が微妙に違ったりという些細な間違いです。
だが本作では、口絵が根本的に嘘という巨大なミスをやらかしてしまいました。
これはさすがにちょっとどうなのよ。
個人的には萌えだけしかない作品というのは好きではないのですが、本作ほど徹底してその道を突き進んでしまえばこれはもう認めざるを得ないというか脱帽というか、いやもうとことんやってくれという気になってしまう。
ただどうせならもっともっとバカップルしてください。
あと主人公の鈍感さはもう病気の域。
マギストラットエンゲージ2
☆☆☆☆
展開がスピーディで文章も上手なので読んでいて実に面白いのだが、読み終わった後に思い返しても何も特筆すべきことがないという、ある意味ラノベというジャンルを最も正しく表現した作品。
何故かよくわからないが凄い力を持っちゃった主人公と特務機関の美少女能力者という死ぬほどありがちな設定でありながら、それでも読ませてしまう筆力は素晴らしい。
特に今回はラストのオチやハイバの目的あたりは早々と想像できてしまったので予定調和としか言いようがない。
しかし1巻からそうだったが若竹だけこの世界観から浮いてるな。
一年生になっちゃったら5
☆☆☆
この著者は相変わらず幼女が好きだな。
本作では幼女が脱いだり脱がせたりお風呂に入ったりとエロい話が満載なはずなんだが、何故かちっともエロく感じない不思議な作品。
別に絵が下手というわけでは全然無くむしろ幼女の書き方は一級品なのに、エロより先に健全なものを感じてしまう。
それでは大人の裸はどうかと思えばものすごい手抜きっぷりで作者の趣味が実にわかりやすい。
それはそうと主人公小一に馴染みまくってないか。
やはり中身は外見に引きずられるのだろうか。
そろそろ元に戻れなくなる予感。
てか、最後まで戻れなそうな予感がする。
キスシス5
☆☆
なんでこれ買い続けてるんだろうな…?
話も特が面白いというわけではないというかどうでもいい内容。
エロいにはエロいのだが、そのエロさに何故か不快なものを感じてしまう。
やってることは↑や↓とあんまり変わらない筈なんだが、なんとなく言葉に出来ないどこかの部分で「これは何か違う」と感じてしまうのだが理由がよく判らない。
やっぱりジャンルが成年コミックじゃないのが一番の違和感かな。
↑や↓は成年コミックとはとても言えないが、本作は成年コミックじゃないのがおかしい代物。
そういう差だと思われる。
こえでおしごと!1
☆☆☆☆☆
女子高生がエロゲ声優させられる話。
これはエロい。
着エロの頂点だろこれ。
題材が題材なだけにエロゲのシーンはしばしば出てきますが、露出そのものは↑や↑↑より低いというかそもそも主人公全く脱ぎません。
それなのにこの3作品の中では圧倒的にエロい。
いやもう実に素晴らしいこんな作品を今まで知らなかったとは大後悔時代。
しかしあとがきの主張は全面同意だ。素晴らしいな。
一日目にfrontendアプリケーションを作成しましたが、このアプリケーションの具体的な実装はapps/frontendディレクトリに書いていくことになります。
まずapps/frontend/templates/layout.phpを見てみます。
このファイルは、index.phpおよびfrontend_dev.phpを呼び出したときに必ず呼び出されるテンプレートになります。
全体的なレイアウトをここで設定し、後ほど書いていく個別テンプレートは全部$sf_contentに入る、という形になります。
チュートリアルのfrontend/templates/layout.phpをコピペします。
また、CSSと画像ファイルをそれぞれweb/css/とweb/images/に設置します。
http://symfony.localhost/frontend_dev.php/job
を開いてみると、いきなりグラフィカルな画面になっています。
なに?解説が手抜き?気にするな。
さて、ここからようやくSymfonyの気持ち悪い機能を繙いていくことになります。
テンプレの各所にinclude_stylesheets()とかurl_for('job/index')といった見慣れない関数が鎮座しています。
これらはSymfonyで定義される色々な機能を呼び出すヘルパーです。
で、最初にも書きましたがSymfonyにはこういった機能の一覧/検索がないんですよね。
おかげで延々パッケージやチュートリアル、リファレンスを探し回される羽目になります。
include_stylesheets()はapps/frontend/config/view.ymlからstylesheetsハッシュを拾ってきて<link rel>タグにして表示します。
include_javascripts()は同様にjavascriptsハッシュを<script>タグで表示します。
上書きする前に存在したinclude_http_metas()やinclude_title()等を含め、これらのインクルード関数はAssetヘルパーに属しているのですが、そのことを先に知っていないとAPIリファンレンスで調べることができないという。
apps/frontend/config/view.ymlはフロントエンドを経由する全てのテンプレートに適用されますが、一部のモジュールのみ、一部のビューのみに設定を行うこともできます。
apps/frontend/modules/job/config/view.ymlを設定することでjobモジュールに、さらにその中でindexSuccess:とビューを指定することでビュー単位に指定できます。
アクションを触ってみます。
http://symfony.localhost/frontend_dev.php/job
はhttp://symfony.localhost/frontend_dev.php/job/indexと解釈されます。
そしてweb/frontend_dev.phpからapps/frontend/modules/job/actions/actions.class.phpが呼び出され、その中のexecuteIndexアクションが実行されることになります。
アクションで実行されている内容は実質わずか一行です。
$this->jobeet_job_list = Doctrine::getTable('JobeetJob')->createQuery('a')->execute();
簡単に言うとDoctrineを使用してJobeetJobを呼び出し、全レコードを取得して$this->jobeet_job_listに投入する、という内容です。
さて、executeIndex()はテンプレートへの変数のセットとかテンプレートの呼び出しといったことを一切行っていません。
どうなっているのでしょうか。
何も書かなかった場合、アクション名と同じテンプレートが自動的に呼び出されます。
今回のexecuteIndex()の場合は、テンプレートとしてapps/frontend/modules/job/templates/indexSuccess.phpが適用されます。
さらにその結果がapps/frontend/templates/layout.phpの$sf_contentに入ります。
で、apps/frontend/modules/job/templates/indexSuccess.phpを見てみると、いきなり
foreach ($jobeet_job_list as $jobeet_job)
とか書いてあります。
実は、アクションで$this->hogeに入れた内容はテンプレートからいきなり$hogeで呼ぶことができるのです。
なんとなく怖い。
$jobeet_job_listにはDoctrineの巨大なオブジェクトが入っていますが、イテレータを実装しているので配列として扱うことができます。
各行を表す$jobeet_jobに対し、$jobeet_job->getId()または$jobeet_job->idでjobeet_job.idを取得することができます。
Doctrineの便利なところは$jobeet_job->JobeetCategory->getName()とリレーションを辿っていけるところですが今回はそれは無いようです。
現在はどう見ても不要なカラムまで全部表示しているので、必要な部分だけを表示するようにします。
まあ例によってチュートリアルのapps/frontend/modules/job/templates/indexSuccess.phpをコピペするだけですが。
詳細画面に移動するとURLが次のようになります。
http://symfony.localhost/frontend_dev.php/job/show/id/2
jobアクションのexecuteShowが実行されます。
$request->getParameter('id')で/id/2の値、即ち2が取得されます。
Doctrine::getTable('JobeetJob')->find(2);
とすると主キーが2であるカラムを一件拾ってきます。
非常にわかりにくいので、
Doctrine::getTable('JobeetJob')->findOneById(2);
と引いてくるカラムと件数を明記した方がいいでしょう。
返ってくる値はどちらも同じです。
このfindBy系のメソッドは例によってスキーマから自動作成されており、findByEmailでjobeet_job.emailが一致したのを全件検索、findOneByTypeでjobeet_job.typeが一致する先頭一件を取得といった書き方ができます。
executeShowアクションから使用されるテンプレートはapps/frontend/modules/job/templates/showSuccess.phpです。
デフォルトでは全てのカラムが表示されていますので、これまたチュートリアルをコピペしましょう。
何故かテンプレート内のjobeet_jobオブジェクト名が$jobに変わっているので、アクションもそちらに合わせて変更します。
テンプレートの頭にuse_helper('Text')というのが入っていますが、これを記述することでヘルパーの一種であるTextHelperが使用できるようになります。
AssetHelperは何も書かずに使えたのに何故?
さあ?
use_helperを書かずに使用できるのはAssetHelper、CacheHelper、EscapingHelper、HelperHelper、PartialHelper、TagHelper、UrlHelperです。
何この不平等。
ていうかここらへんのことAPIリファレンスの何処にも書かれていないように見えるんですが。
次にスロットの説明が出てきます。
スロットはPartialHelperに含まれるのでuse_helper宣言をせずにいきなり使用できます。
スロットは出力制御みたいなもので、単に変数に値を代入するものです。
1
2
3
|
slot('title');
print('あいうえお');
end_slot();
|
とすると、slot()からend_slot()までで挟まれた部分が全て変数titleに入ります。
1
|
include_slot('title');
|
とすることでその内容を表示することができます。
次に404です。
アクション内で$this->forward404Unless($hoge)とした場合、$hoge==falseであれば404ページを表示します。
変なリクエストとかを簡単にはじけるので便利。
そのうち404ページのカスタマイズ方法も出てくるかと思いますが現状不明。
最後にリクエストとレスポンスメソッド一覧表が出てきますが、何故こんな大事なものをチュートリアルの片隅に載せるんだ。
sfWebResponseの使い方は此処には書いてありませんが、getResponseメソッドで呼ぶことができます。
$this->getResponse()->setCookie('hoge','fuga');
といったふうに使用します。
>本日のチュートリアルの最初の方でview.ymlとテンプレートの両方でスタイルシートやJavaScriptを管理するやり方を見ました。
>結局2つのテクニックともレスポンスオブジェクトのaddStylesheet()とaddJavascript()メソッドを使います。
唐突に出てきていきなりなんのこっちゃ?という感じですが、最初の方で出てきたinclude_javascripts()はその中で
$this->getResponse()->addJavascript()
的なことをやっているよ、という意味です。
中を見る限りなんかちょっと違うようなかんじだったのですがまあいいか。
Symfonyの記事一覧
クラコンに対応しなかったのはWiiマリ最大の欠点。
右手の人差し指と中指の間の付け根が痛いんじゃ!!!!!
ドスペラード
☆☆☆☆
最初大井昌和がこんなん書いたんかと思って買ってきたんですよね。
大和田秀樹じゃないか。何もかも違う。
世は地水火風の4大元素魔法を使いこなす任侠が幅を利かせる世の中。
しかし同じ「布」であるはずの雑巾とスクール水着、このふたつを隔てる大きな壁、そこには第五の元素、「萌」が存在した…
「30歳まで童貞でいると魔法が使えるようになる」という都市伝説を大真面目に検証したらこんな有様だよ!
相変わらず馬鹿馬鹿しい話を書かせたら天下一品だ。
ソードアートオンライン3
☆☆☆☆
通信内容は暗号化できますが、何処と通信してるかというのは暗号化できません。
インターネットはバケツリレー方式で動いているので、何処に送るかという情報は暗号化することが出来ないのです。
アスナのパケット見ればどのサーバが本体かなんて一瞬でわかるだろ。
何ヶ月も何やってんだ警察(とハッカー達)。
どう考えてもソーシャルな方面から攻めるのが正しいのですが、何故かゲーム内でどうこうしちゃおうという主人公達ってどうなのよ。
また前巻まではログアウトできない=ゲーム内こそが現実だったという状況に対し、今巻は基本的にいつでもログアウトできるしゲームを止めるのも自由です。
1巻と同じようなDQNが出てきますが、状況が変わるとその存在のイタいことイタいこと。
そういった要らんツッコミさえ考えないようにすれば作品自体は非常に面白いです。
化け猫とめまいのスキャット―ブギーポップ・ダークリー
☆☆☆☆
根源的な疑問なんだが、ブギーポップの審判する世界の敵って毎回ショボくないか?
本作でも、何年もかけてようやく町一個潰せる程度の存在が世界の敵認定されます。
今回の能力は、「認識」をキーとして発動するというかなり反則的な能力。
しかしその能力は、自分自身が認識を行わないための能力でもあった。
自分一人に影響を及ぼすだけであれば誰しもが持っているであろう認識という能力ですが、それを周囲にも感染させることができるというのは非常に強力です。
赤信号を皆で渡れば怖くなくなるのではなく、赤信号が青信号ということになるのです。
唐突だがボクと魔王を思い出した。
なんか纏まりの無い文章で何を言いたいのかわかんなくなってきた。
懺絶望先生3
☆☆☆☆☆
懺シリーズはかなり原作に忠実な作りになっています。
原作を楽しめた人ならより面白いと思います。
一時停止を駆使しないと読み切れないところは相変わらずですが。
ジャージは無難にパーが限界です。
不服袋にはなんかコースターかCDっぽいのが入ってるんだが開けられない。
どうしたものか。2セット買えということなのだろうか。
今回一番意味がわからないのが茗荷。何故茗荷。
Wiiモーションプラス
☆☆☆
というわけでリモコンカバーを買ってきた。
モーションプラスとか書かれてるけどまあいいか。
……1ボタンに手が届かねえ!!
あと999が何処にも売ってなかった。
CakePHP1.2.5のフォームヘルパーの全メソッドと引数を解説。
Paginatorと違いヘルプが充実しているので要らないような気もしますが、と思ったら未完なところが多かった。
| create ( [ $model [ , $options ] ] ) | |
|---|---|
| <form>タグを作成する | |
| 引数 | 解説 |
| $model | モデル名を指定。 デフォルトは現在のモデル。 配列を渡すとモデル名ではなく$optionsとして解釈される。 |
| $options['type'] | デフォルトは'post'で要素は'post','get','put','delete','file' 'get'以外は<form method>が'POST'になり、'_method'=$options['type']がhiddenで渡される。 'file'はenctype="multipart/form-data"が追加される。 |
| $options['action'] | 渡す先のアクション名を変更する。デフォルトは'add'。 |
| $options['url'] | 渡す先のコントローラ名から先を全て変更する。 |
| $options['default'] | falseにするとonsubmitでreturn false;される。 |
| end ( [ $options ] ) | |
|---|---|
| </form>タグを作成する | |
| 引数 | 解説 |
| $options | 文字列であればその値で<input type="submit">を作成し、その後に</form>を作成する。 配列ならば各キーと値が<input type="submit">に引き渡される。 無指定なら</form>のみ。 |
| secure ( $fields ) | |
|---|---|
| セキュリティトークンをhiddenで発行する。 Securityコンポーネント使用時に使用可能 |
|
| 引数 | 解説 |
| $fields | 暗号化するフィールド名の配列。デフォルトは全入力欄の名前。 有効であればend()時に自動的に発行されるので通常指定する必要はない。 |
| input ( $fieldName [ , $options ] ) | |
|---|---|
| 入力フォームを作成する。 フォームの種別は入力値によって自動的に(or手動で)変わる。 |
|
| 引数 | 解説 |
| $fieldName | フィールド名。 <input name="data[ModelName][fieldName]" />といった値になる。 入力欄の前にもフィールド名が表示される。 |
| $options['type'] | フォームの種別を指定する。 値はtext,textarea,select,radio,password,datetime,date,time,checkbox,hidden,file等。 指定されていない場合、モデルにフィールド名と同じ名前のカラムがあればその型から決められる。 見つからない場合、$options['options']、$options['length']等を参照してそれっぽい型に決められる。 |
| $options['default'] | 最初から入力されている値を指定。 入力値が存在する場合はそちらが優先される。 |
| $options['value'] |
最初から入力されている値を指定。 常時入力値より優先される。 |
| $options['selected'] | $options['type']='select','datetime'等のときに指定可能。 デフォルトで選択されるキーを指定。 入力値より優先される。 $options['default']と$options['selected']両方指定している場合はselectedが優先。 |
| $options['escape'] | falseにすると$options['value']をエスケープせずに表示する。 |
| $options['before'] | フィールド名の前に表示する内容があれば記述。 |
| $options['between'] | フィールド名と<input>タグの間に表示する内容があれば記述。 |
| $options['after'] | <input>タグの後に表示する内容があれば記述。 |
| $options['separator'] | $options['type']='radio'のときに指定可能。 各ラジオボタンの間に表示する内容があれば指定。 |
| $options['options'] | <option>の中身とする配列を指定。 指定すると<select><option>になる。 |
| $options['multiple'] | $options['type']='select'のときに指定可能。 $options['multiple']='multiple'かtrueなら<select multiple="multiple" >になる。 $options['multiple']='checkbox'なら$options['options']をチェックボックスとして出力する。 |
| $options['maxlength'] | 指定可能なときにmaxlength属性を指定する。 |
| $options['div'] | 全体を括る<div>の属性を指定する。 文字列であれば<div class="入力値">となる。 連想配列であれば各キーと値が属性にセットされる。 falseにすると<div>自体が出力されない。 |
| $options['label'] | <label>で挟まれる文字、即ち$fieldNameの表記のみを変更したいときに指定する。 <label for>の値ではない。 連想配列であれば各キーと値が<label>の属性にセットされる。文字自体は'text'で指定。 falseにすると<label>自体が出力されない。 |
| $options['legend'] | $options['type']='radio'のときに指定可能。 <fieldset>内の<legend>の値を指定する。 falseにすると<fieldset>自体が出力されない。 |
| $options['id'] | <input>のidの値、及び<label for>の値を変更する。 |
| $options['error'] | バリデーションエラーがある場合に表示するエラーメッセージを変更する。 falseにすると非表示になる。 |
| $options['cols'] $options['rows'] |
テキストエリアのrowsとcolsを指定。 指定すると<textarea>になる。 |
| $options['empty'] | $options['type']='select','datetime'等のときに指定可能。 <option>の最上段に表示される値を指定する。 trueなら空白になる。 マニュアルでは<input>についても書かれているが、<input>には無影響。 http://book.cakephp.org/ja/view/201/options-empty |
| $options['dateFormat'] | $options['type']='datetime','date'のときに指定可能。 引数はdateTime()の$dateFormatと同じ。 |
| $options['timeFormat'] | $options['type']='datetime','time'のときに指定可能。 引数はdateTime()の$timeFormatと同じ。 |
| $options['minYear'] $options['maxYear'] |
$options['type']='datetime','date'のときに指定可能。 年の選択肢に表示する最大値、最小値を指定。 デフォルトは現在±20年。 |
| $options['interval'] |
$options['type']='datetime','time'のときに指定可能。 分の選択肢を指定した間隔毎に表示する。 |
| submit ( [ $caption [ , $options ] ] ) | |
|---|---|
| submitボタンを表示する | |
| 引数 | 解説 |
| $caption | submitボタンに表示する文字列。 '://'が含まれる、あるいは画像ファイルであれば<input type="image">になる。 |
| $options['div'] | 全体を括る<div>の属性を指定する。 文字列であれば<div class="入力値">となる。 連想配列であれば各キーと値が属性にセットされる。 falseにすると<div>自体が出力されない。 |
| button ( [ $title [ , $options ] ] ) | |
|---|---|
| buttonボタンを表示する | |
| 引数 | 解説 |
| $title | ボタンに表示する文字列。 |
| $options['type'] | <input type="button">の値を上書きする。 意味があるのは'reset','submit'くらい。 |
| $options['title'] | $titleの値を上書きする。 |
| $options['name'] | ? |
| text ( $fieldName [ , $options ] ) | |
|---|---|
| <input type="text">を作成する | |
| 引数 | 解説 |
| $fieldName | フィールド名。 <input name="data[ModelName][入力値]" id="ModelName入力値">になる。 |
| $options | <input>の各要素を指定。 |
| password ( $fieldName [ , $options ] ) | |
|---|---|
| <input type="password">を作成する | |
| 引数 | 解説 |
| $fieldName | フィールド名。 <input name="data[ModelName][入力値]" id="ModelName入力値">になる。 |
| $options | <input>の各要素を指定。 |
| hidden ( $fieldName [ , $options ] ) | |
|---|---|
| <input type="hidden">を作成する | |
| 引数 | 解説 |
| $fieldName | フィールド名。 <input name="data[ModelName][入力値]" id="ModelName入力値">になる。 |
| $options | <input>の各要素を指定。 |
| textarea ( $fieldName [ , $options ] ) | |
|---|---|
| <textarea>を作成する | |
| 引数 | 解説 |
| $fieldName | フィールド名。 <input name="data[ModelName][入力値]" id="ModelName入力値">になる。 |
| $options['value'] | <textarea>内に表示する値を指定する。 |
| checkbox ( $fieldName [ , $options ] ) | |
|---|---|
| <input type="checkbox">を作成する 同時に送信確認のためのhiddenフォームを作成する |
|
| 引数 | 解説 |
| $fieldName | フィールド名。 <input name="data[ModelName][入力値]" id="ModelName入力値">になる。 |
| $options | <input>の各要素を指定。 |
| radio ( $fieldName [ , $options [ , $attributes ] ] ) | |
|---|---|
| <input type="radio">を作成する 同時に送信確認のためのhiddenフォームを作成する |
|
| 引数 | 解説 |
| $fieldName | フィールド名。 <input name="data[ModelName][入力値]" id="ModelName入力値">になる。 |
| $options | ラジオボタンに設定する値を指定。 送信するvalueをキー、表示する文字列を値とした配列で指定する。 |
| $attributes['default'] | デフォルトで選択される値を指定。 入力値が存在する場合はそちらが優先される。 |
| $attributes['value'] | デフォルトで選択される値を指定。 入力値より優先される。 |
| $attributes['legend'] | <fieldset>内の<legend>の値を指定する。 falseにすると<fieldset>自体が出力されない。 |
| $attributes['separator'] | 各ラジオボタンの間に表示する内容があれば指定。 |
| $attributes['label'] | なんかチェックしてるけど意味がないみたい? |
| select ( $fieldName [ , $options , [ $selected [ , $attributes [ , $showEmpty ] ] ] ] ) | |
|---|---|
| <select><option>を作成する | |
| 引数 | 解説 |
| $fieldName | フィールド名。 <select name="data[ModelName][入力値]" id="ModelName入力値">になる。 |
| $options | <option>に設定する内容を指定。 送信するvalueをキー、表示する文字列を値とした配列で指定する。 |
| $selected | デフォルトで選択される値を指定。 入力値より優先される。 $attributes['multiple']を有効化した場合は配列で指定すると複数選択できる。 |
| $attributes['default'] | $selected=nullの場合のみ有効。 デフォルトで選択される値を指定。 入力値が存在する場合はそちらが優先される。 |
| $attributes['value'] | $selected=nullの場合のみ有効。 デフォルトで選択される値を指定。 入力値より優先される。 |
| $attributes['multiple'] | trueまたはmultipleにすると<select multiple="multiple" >になる。 'checkbox'にするとチェックボックスになる。 |
| $attributes['escape'] | falseにすると$optionsの値をエスケープしない。 |
| $attributes['showParents'] | ? |
| $showEmpty | <option>の最上段に表示される値を指定。 falseにすると選択肢自体が消える。 input()はデフォルトが非表示だが、こちらはデフォルトで空欄表示。 |
| year ( $fieldName [ , $minYear [ , $maxYear [ , $selected [ , $attributes [ , $showEmpty ] ] ] ] ] ) | |
|---|---|
| 年選択フォームを作成する | |
| 引数 | 解説 |
| $fieldName | フィールド名。 <select name="data[ModelName][入力値]['year']" id="ModelName入力値Year">になる。 |
| $minYear | 選択可能な最初の年を指定。 デフォルトは現在-20年。 |
| $maxYear | 選択可能な最後の年を指定。 デフォルトは現在+20年。 |
| $selected | デフォルトで選択される値を指定。 指定は西暦年もしくはstrtotimeの解釈できる値。 入力値より優先される。 nullだと初期値無しで、入力値を優先する。 |
| $attributes['default'] $attributes['value'] |
$selected=nullの場合に有効。 デフォルトで選択される値を指定。 入力値が存在する場合はそちらが優先される。 |
| $showEmpty | <option>の最上段に表示される値を指定。 falseにすると選択肢自体が消える。 |
| month ( $fieldName [ , $selected [ , $attributes [ , $showEmpty ] ] ] ) | |
|---|---|
| 月選択フォームを作成する | |
| 引数 | 解説 |
| $fieldName | フィールド名。 <select name="data[ModelName][入力値]['month']" id="ModelName入力値Month">になる。 |
| $selected | デフォルトで選択される値を指定。 指定は月もしくはstrtotimeの解釈できる値。 入力値より優先される。 nullだと初期値無しで、入力値を優先する。 |
| $attributes['default'] $attributes['value'] |
$selected=nullの場合に有効。 デフォルトで選択される値を指定。 入力値が存在する場合はそちらが優先される。 |
| $attributes['monthNames'] | デフォルトは英語表記だが、falseにすると数値になる。 任意の値を設定はできない。 |
| $showEmpty | <option>の最上段に表示される値を指定。 falseにすると選択肢自体が消える。 |
| day ( $fieldName [ , $selected [ , $attributes [ , $showEmpty ] ] ] ) | |
|---|---|
| 日付選択フォームを作成する | |
| 引数 | 解説 |
| $fieldName | フィールド名。 <select name="data[ModelName][入力値]['day']" id="ModelName入力値Day">になる。 |
| $selected | デフォルトで選択される値を指定。 指定は日付もしくはstrtotimeの解釈できる値。 入力値より優先される。 nullだと初期値無しで、入力値を優先する。 |
| $attributes['default'] $attributes['value'] |
$selected=nullの場合に有効。 デフォルトで選択される値を指定。 入力値が存在する場合はそちらが優先される。 |
| $showEmpty | <option>の最上段に表示される値を指定。 falseにすると選択肢自体が消える。 |
| hour ( $fieldName [ , $format24Hours [ , $selected [ , $attributes [ , $showEmpty ] ] ] ] ) | |
|---|---|
| 時間選択フォームを作成する | |
| 引数 | 解説 |
| $fieldName | フィールド名。 <select name="data[ModelName][入力値]['hour']" id="ModelName入力値Hour">になる。 |
| $format24Hours | trueにすると24時間制になる。 デフォルトは12時間制。 |
| $selected | デフォルトで選択される値を指定。 指定は時間もしくはstrtotimeの解釈できる値。 入力値より優先される。 nullだと初期値無しで、入力値を優先する。 |
| $attributes['default'] $attributes['value'] |
$selected=nullの場合に有効。 デフォルトで選択される値を指定。 入力値が存在する場合はそちらが優先される。 |
| $showEmpty | <option>の最上段に表示される値を指定。 falseにすると選択肢自体が消える。 |
| minute ( $fieldName [ , $selected [ , $attributes [ , $showEmpty ] ] ] ) | |
|---|---|
| 分選択フォームを作成する | |
| 引数 | 解説 |
| $fieldName | フィールド名。 <select name="data[ModelName][入力値]['minute']" id="ModelName入力値Minute">になる。 |
| $selected | デフォルトで選択される値を指定。 指定は分もしくはstrtotimeの解釈できる値。 入力値より優先される。 nullだと初期値無しで、入力値を優先する。 |
| $attributes['interval'] | 表示する間隔を指定。 デフォルトは毎分。 開始は0分で変更不能。 |
| $attributes['default'] $attributes['value'] |
$selected=nullの場合に有効。 デフォルトで選択される値を指定。 入力値が存在する場合はそちらが優先される。 |
| $showEmpty | <option>の最上段に表示される値を指定。 falseにすると選択肢自体が消える。 |
| meridian ( $fieldName [ , $selected [ , $attributes [ , $showEmpty ] ] ] ) | |
|---|---|
| AM/PM選択フォームを作成する | |
| 引数 | 解説 |
| $fieldName | フィールド名。 <select name="data[ModelName][入力値]['minute']" id="ModelName入力値Minute">になる。 |
| $selected | デフォルトで選択される値を指定。 指定は'am','pm'。 入力値より優先される。 nullだと初期値無しで、入力値を優先する。 |
| $attributes['default'] $attributes['value'] |
$selected=nullの場合に有効。 デフォルトで選択される値を指定。 入力値が存在する場合はそちらが優先される。 |
| $showEmpty | <option>の最上段に表示される値を指定。 falseにすると選択肢自体が消える。 |
| dataTime ( $fieldName [ , $dateFormat [ , $timeFormat [ , $selected [ , $attributes [ , $showEmpty ] ] ] ] ] ) | |
|---|---|
| 日時選択フォームを作成する。 上記year(),month(),day(),hour(),minute(),meridian()を纏めて作成する。 |
|
| 引数 | 解説 |
| $fieldName | フィールド名。 |
| $dateFormat | 年月日の表示内容、表示順番をYMDで指定。 |
| $timeFormat | 'NONE'で非表示になる。 24で24時間制になり、AM/PM選択フォームが消える。 デフォルトは12時間制。 |
| $selected | デフォルトで選択される値を指定。 指定はstrftimeの解釈できる値。 入力値より優先される。 nullだと初期値無しで、入力値を優先する。 |
| $attributes['id'] | <select id>の値を"ModelNamefieldNameYear"から"idYear"等に変更する。 |
| $attributes['separator'] | 年/月/日の選択肢の間に表示する文字列を指定。 個別の設定はできない。 |
| $attributes['monthNames'] | デフォルトは英語表記だが、falseにすると数値になる。 任意の値を設定はできない。 |
| $options['minYear'] $options['maxYear'] |
年の選択肢に表示する最大値、最小値を指定。 |
| $attributes['minuteInterval'] $attributes['interval'] |
分の表示間隔を指定。 minuteIntervalが優先。 |
| $attributes['default'] $attributes['value'] |
バグる。 |
| $showEmpty | <option>の最上段に表示される値を指定。 falseにすると選択肢自体が消える。 |
| inputs ( [ $fields [ , $blacklist ] ] ) | |
|---|---|
| モデルに沿った入力フォームを作成する | |
| 引数 | 解説 |
| $fields | 表示するフィールドの配列。 省略またはnullの時は全カラムを表示。 |
| $fields['fieldset'] | 指定されていれば<fieldset>のclass属性に設定される。 |
| $fields['legend'] | 指定されていれば<legend>に表示される。 |
| $blacklist | 指定したフィールドを表示しない。 $fieldsとどう違うのかはよくわからない。 |
| file ( $fieldName [ , $options ] ) | |
|---|---|
| ファイルのアップロードフォームを作成する | |
| 引数 | 解説 |
| $fieldName | フィールド名。 <input name="data[ModelName][入力値]" id="ModelName入力値">になる。 |
| $options['secure'] | ? |
| label ( [ $fieldName [ , $text [ , $attributes ] ] ] ) | |
|---|---|
| ラベルを作成する | |
| 引数 | 解説 |
| $fieldName | フィールド名。 省略またはnullの時は最後に作成したフォームに対するラベルが作成される。 |
| $text | ラベルを貼るテキスト。 |
| $attributes | 特になし |
| isFieldError ( $field ) | |
|---|---|
| フィールドにバリデーションエラーが存在するかチェックする | |
| 引数 | 解説 |
| $field | フィールド名。 |
| error ( $field [ , $text [ , $options ] ] ) | |
|---|---|
| フィールドのバリデーションエラーの内容を表示する | |
| 引数 | 解説 |
| $field | フィールド名。 |
| $text | バリデーションエラーがある場合に表示するエラーメッセージを変更する。 falseだとデフォルトになる。 空白や未出力にはできない。 |
| $options['wrap'] | エラーメッセージは通常<div>で囲まれるが、タグを変更したい場合に指定。 falseにするとタグを使用しない。 |
| $options['escape'] | falseにするとエラーメッセージをエスケープしない。 |
$optionsまたは$attributesとして特に設定のない配列が来た場合、多くのメソッドにおいて<form>や<input>の属性にそのまま出力される。逆に'name'や'id'等を指定すると、デフォルトの値が破壊されてしまうので注意。
$selectedだと常時入力値より優先されてしまうので、デフォルト値を与えつつ入力値を保存するには$options['default']を使わないといけないとか、設計思想がよくわからない。
あと気になったものとして、__generateOptions('day')には日付の開始日、終了日を変更できるようなことが書いてあるのに、呼び出し側のday()が対応してないので2月でも常に1~31日が表示されてしまうとか、text()やpassword()の$optionsに'type'=>'hidden'とかを無理矢理上書きするとおかしなことになるとか、<option>に$selected=trueとかすると全ての<option>にselected="selected"がくっつくとか、なんか全体的に微妙な出来。
CakePHPの記事一覧
前回エミュレータを動かすことができたので、次に開発環境を入れてみます。
だいたい公式に書いてあるのでそのとおりにやれば問題ありません。
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ソフトウェアの開発準備が整いました。
あとはデベロッパーズガイドでも見ながら適当に……アメリカ語はご勘弁願いたい。
先週売ってなかった虫姫さまふたり限定版が普通に売ってた。
限定版なのに再入荷とはどういうことだヨドバシ横浜!!
奇食ハンター4
☆☆☆☆
このシリーズの特徴として、グルメ漫画の割に感想が正直すぎるというのがあります。
本作を読んでも、紹介された物をあんまり食べたくならないんですよね。
いいのかそれで。
九罰の悪魔召喚術
☆☆
肝心なシーンが色々とすっ飛ばされてるのは何なんですかね。
先日のよくわかる現代魔法よりは筆力があるだけ随分ましに見えますが、作者が伏線とか説得力といった大事なところを投げ出して、自分の書きたいところしか書かなかった、という感じを受けました。
そこらへんを描かなくても自分の理解できていることは他人も理解できるんだ、というオタク的思想をもうすこし排除できればけっこうよい作品になるのではないかなとも思います。
デュラララ!!
☆☆☆☆☆
↑と比べるのが可愛そうなくらい圧倒的な筆力の差が。
現代池袋を舞台とした、奇人変人が跳梁跋扈するオムニバスストーリー。
この人の脳内では池袋やシカゴはどんな魔都になっているのでしょうか。
本作のテーマは、愛です。
愛だと思います。
愛なんじゃないかな。
私の知っている愛という概念とはとてもかけ離れた愛ばっかりなんですが、まあきっと愛なのでしょう。
この人最大の欠点は、タイトル。
デュラララとかバッカーノとかヴぁんぷとか買わせる気全く無いだろ。
情報処理教科書 情報セキュリティスペシャリスト2010年版
「専門知識+午後問題」の重点対策 情報セキュリティスペシャリスト
ネットワークスペシャリストはまだ結論出てないけどまあ駄目だろうという前提で、似たような方面・難易度でセキュリティスペシャリストでも取っておこうかなと。
まあ今度こそは受かりたいね。
…………今気がついた。
2009じゃねえか!!!ギャアアアア!!俺の馬鹿!!!!!
ってか店員も教えてくれよ。つうか売るな。
ニュー・スーパーマリオブラザーズ・Wii
ゲーマーとしては買って当然、というか買わないという選択肢が予め存在しないタイトルですわな。
やはり任天堂は最低限確実という絶対なラインがあるから強いですね。
さて、しかし正直せめてクラコンには対応してほしかった。
リモコンは+-が押しにくいんだよね。使うかどうかわからんけど。
そろそろ昔CMでやってたお化け屋敷探索ゲームが出ていい頃だと思うんだが、まだ無いの?
ゲームレビュー記事へのショートカットメニュー。
別に360のギャルゲしかレビューしないというつもりではないのですが、現状何故か360のギャルゲオンリー。
CakePHP記事へのショートカットメニュー