忍者ブログ
[PR]
×

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



2026/04/10 16:09 |
EC-CUBE スタティックページ作成
といってもmod_rewriteのことではありません。

周囲のテンプレは利用して、単に中のテキストだけ違うという、ほとんど静的な内容のページを大量に作りたいと思っても素のEC-CUBEではできません。
一ページごとにデザイン管理→新規ページ作成を行って中身を書いていくとかしないといけません。
もしかしたら方法があるかもしれませんがとりあえず見あたりませんでした。
そんなのやってらんないのでスタティックな内容は一つに纏めます。

まず上記デザイン管理→新規ページ作成を行って基準となるページを一枚作ります。
名称は変更する予定なのでデフォルト的なものを、URLは簡単にstatic.phpとかに、本文は空白(あるいは「お探しの内容は見つかりませんでした」的内容)にしておきます。

保存すると自動的にファイルが作成され、
/html/user_data/static.phpにロジックが、
/html/user_data/packages/default/static.tplにテンプレートができあがります。
ちょっとこの位置では扱いづらいのでどうにかします。
/data/Smarty/templates/default/static/フォルダを作成し、中にとりあえず適当にhoge.tplとかを入れておきます。

次に割り当てられるテンプレを変更できるようにしたいわけですが、テンプレの割り当てを行っているのはLC_Page_User::process()内の$objLayout->sfGetPageLayout($this);という部分です。

具体的なロジックはSC_Helper_PageLayout::sfGetPageLayout()に書かれているのですが、このメソッド、ファイル名から自動的にテンプレート名を算出するようになっています。
全ロジックをひとつのメソッドに突っ込んでいるうえに引数から任意のテンプレートファイルを指定する方法がありません。
つまり、テンプレを変更する手段がありません。
平たく言うとこのソースは酷い。

ちょっと穏便にどうにかする方法が見あたらなかったので、場当たり的な解決を行いたいと思います。

/html/user_data/static.phpに以下の一行を追加。
define('IS_STATIC_PAGE',true);

ついでに最初のrequire_once()が何故かフルパスにされてしまっているので、意味もなく
require_once("../require.php");
に変更しておきましょう。

/data/class_extends/helper_extends/SC_Helper_PageLayout_Ex.phpにおいて、SC_Helper_PageLayout::sfGetPageLayout()をオーバーライド。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    /*
    *    SC_Helper_PageLayout::sfGetPageLayout()をオーバーライド
    *    ひとつのURLで任意のテンプレートを選択できるようにする
    */
    function sfGetPageLayout(&$objPage, $preview = false, $url = ""){
        
        //IS_STATIC_PAGEが定義されていない場合は今までと同じ
        parent::sfGetPageLayout(&$objPage, $preview, $url);
        if(!defined('IS_STATIC_PAGE')){return true;}
        
        //引数からテンプレートへのパスを作成
        if(!$_REQUEST['page']){return true;}
        $template_filename=TEMPLATE_DIR . 'static' 
          . DIRECTORY_SEPARATOR . basename($_REQUEST['page']) . '.tpl';
        
        //テンプレートが見つかれば変更、無ければそのまま
        if(is_file($template_filename)){
            $objPage->tpl_mainpage=$template_filename;
        }
        return true;
    }

return true;は成功したという意思表示をしているだけで、実際はreturn;だけでかまいません。
一番下はreturn;すら不要ですが、明白に書いておかないと気持ち悪いので私はいつも付けています。

http://eccube.localhost/user_data/static.php?page=hoge
というURLがやってきた場合に
/data/Smarty/templates/default/static/hoge.tplを探し、見つからなければ/html/user_data/packages/default/static.tplを表示するようになります。
めでたし。


……ひとつ重大な問題があって、
デザイン管理→ページ詳細設定で編集を行うたびに/html/user_data/static.phpが上書き保存されてしまいます。
ヒィ
どうすれバインダー。

SC_Helper_PageLayout::sfGetPageLayout()を再度書き換えます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    function sfGetPageLayout(&$objPage, $preview = false, $url = ""){
        
        //対象のファイル以外は今までと同じ
        parent::sfGetPageLayout(&$objPage, $preview, $url);
        if($_SERVER['PHP_SELF']!=='/user_data/static.php'){return true;}
        
        //引数からテンプレートへのパスを作成
        if(!$_REQUEST['page']){return true;}
        $template_filename=TEMPLATE_DIR . 'static' . 
             DIRECTORY_SEPARATOR .basename($_REQUEST['page']) . '.tpl';
        
        //テンプレートが無ければそのまま、見つかれば変更
        if(is_file($template_filename)){
            $objPage->tpl_mainpage=$template_filename;
        }
        return true;
    }

呼ばれたファイルがstatic.phpであればテンプレートの見直しを行い、それ以外は今まで通りとなります。
更に場当たり的な対処になりました。

新規ページ作成で作成したページはdtb_pagelayoutに入っています。
dtb_pagelayout.edit_flgを変更すれば削除はできなくなりますが、編集不可にはできないようです。
削除されると困る場合は値をとりあえず2とかにしておきましょう。


以上で、レイアウトを共有しつつ、テンプレートを追加するだけで簡単に静的ページの追加を行えるようになりました。

URLが美しくないとかいうならば
RewriteRule ^/user_data/static/(.*)$ /user_data/static.php?page=$1
とか書けばいいですが、この場合$_SERVERも変わるのでそこらへん手直しが必要です。


EC-CUBEの記事
PR


2010/02/12 23:30 | Comments(0) | TrackBack() | PHP
ショートカットメニュー:EC-CUBE

オープンソースのわりにソースが適当すぎるECサイト構築ツール、EC-CUBEを使用してみた。



2010/02/10 22:35 | Comments(0) | TrackBack() | ショートカットメニュー
ショートカットメニュー:NOVEL PHILOSOMA
下記の本に載っている小説です。

思い切り著作権侵害ですが、さすがに15年も経ってるし見逃してくれるだろうことを期待して。



関係者から抗議があったら削除します。


2010/02/10 22:26 | Comments(0) | TrackBack() | ショートカットメニュー
==NOVEL PHILOSOMA== 01

突然のミッション… それは、プラネット220のサーチ・アンド・レスキュー。降下した私は、激戦で多くの部下を失いました。しかし、それは恐るべき地獄の、ほんのプレリュードにすぎなかったのです……

私は、ニコラ・ミショー大尉。UNF-SCVギャラント、VFA29・フライトリーダー

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

 本リポートは、UNFが遭遇した3番目の地球外生物との交戦記録を元にしている。大半がそうであるように、戦闘は予期できる展開と全く予期せぬ出来事、ムーヴ、愚行と賢明さと無知の集合体である。この戦闘もその例に漏れることはなかった。
 だが、SCV13ギャラント、VFA-29のパイロット達は最善を尽くした。彼ら一人一人が見せた勇気と献身に、私は最大限の敬意を表する。
 今回の執筆に関しては、私と同様の考えを持つ多くの軍関係者の惜しみない協力を得ることが出来た。それにより人物関連の視点は、ほぼ完全に再現が出来た。事実としての記録も、各人がその時に感じた感情まで…戦死した者の感情はある程度の想像が入ったが、心理解析から言ってそう外れたものではない筈だ。
 ただし、フィロソマ関連の視点は、入手できたデータを私が解釈し、推察したものだということを予めお断りしておく。
なぜなら、その検証は実質的に不可能だからだ。ギャラントのコンピューターに残されたディレクトリ・2453542の解析、SFBSとの協力による犯罪心理学プロファイリングによってかなりの部分が解明できたと思うが、それでも完全とは言えない。
 だが、見つの日にか、フィロソマの真実は解明されるだろう。このリポートは、その通過点の一つと言える。
 最後になったが、リポートの発表を許可していただいたSCE関係諸氏に感謝の意を表させて頂きたい。
   

R・N


 我々は全体の一部として存続してきた。宇宙の自然は現在あるものを変化させ、新たな展開と発展を呼ぶことを何よりも喜ぶ。なぜなら、現在存在するものは、全て将来それから生じるものの種子なのだ。
(以上、ローランド・クラーク著「コズミック・シード」オックスフォードUP 2086年4月10日刊行より抜粋)


2087年6月22日GMT(グリニッジ標準時)
0812Z
機密
発=UNF-SCVギャラント
宛=第13方面軍司令部
通訳=第13方面軍司令部

科学探査船「S・ホーキング」サーチ・アンド・レスキュー。

1.2087年6月22日0618Z、第13セクター方面にて消息を絶った科学探査船
 「S・ホーキング」を発見、星域座標ポイントA037Z214

2.乗員総数96名。
 行方不明96名。
 船体中央部の外殻破損を確認。船内は真空状態。DCSがアウト、乗員は全員、船外に吸い出されたと推定される。ボイスレコーダー、フライトレコーダーを回収。

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

以上、報告書作成
UNFギャラント副長


他章


2010/02/10 22:22 | Comments(0) | TrackBack() | ゲーム
EC-CUBE 開店準備とテンプレート編集

続き

http://eccube.localhost/

でユーザ入口、
http://eccube.localhost/admin/
で管理画面入口になります。
EC-CUBEのインストール時に設定したIDで管理画面に入ることが出来ます。

とりあえずショップ情報など通り一遍の基本情報設定を済ませます。


したらば早速サイトデザインの編集を行います。
ヘッダフッタ、ブロックの編集などは管理画面上から行うことができます。

が、直接テンプレートいじった方が早いのでそうしましょう。

デフォルトのテンプレートは
/data/Smarty/templates/default/フォルダ以下にありますが、
編集や追加を行ったテンプレートは
/html/user_data/packages/default/フォルダに保存されます。
なんでそんな外から見える位置なんだよ。
実際公式に載ってる事例サイトでも直接覗けるところがちょくちょくあったりします。

パスに/default/という文字が入っていますが、EC-CUBEはデザインテンプレートを丸ごと入れ替えることができる機能が付いており、実行した場合は/default/の部分が取り替えた先のテンプレート名に変更になります。
テンプレートの優先順位はuser_data>Smartyで、user_dataディレクトリにカスタムされたテンプレートが無ければSmartyディレクトリのデフォルトテンプレートを読むようになっています。
本来はデフォルトファイルは触らずカスタムファイルを追加するのが正道ですが、デフォルトテンプレート自体を変更したいので直接書き換えてしまいます。

/data/Smarty/templates/default/header.tplが共通ヘッダ、/data/Smarty/templates/default/footer.tplが共通フッタです。
CSSは/html/user_data/packages/default/css/main.cssです。
直接編集するとユーザ画面で即座に反映されるのがわかります。
テンプレートの記法は、デリミタが<!--{}-->変更されていますが普通のSmartyなので慣れていれば簡単です。
画像や外部JSなどを貼りたい場合は/html/user_data/packages/default/フォルダ以下に置き、相対リンクは{$TPL_DIR}で指定します。


サイト全体の大まかな構成を変更したい場合は、デザイン管理→レイアウト管理から行うと簡単です。
左右のウィジェットなどをパーツ単位で移動、削除などを行えます。
サイト構成はおおざっぱにトップページ、商品一覧(及び会員登録や問い合わせページ等)、商品詳細、マイページに分かれています。
サイトトップのレイアウトを適当にドラッグして場所や順番を変更してみると、トップページにすぐ反映されます。
非常に簡単ですね。

商品一覧や商品詳細は元々右カラムに何もない状態になっているのですが、そこにヴィジェットを突っ込むと、中央カラムがヴィジェットに突っ込んでおかしなレイアウトになってしまいます。
CSSを見てみたところ、中央カラムを定義しているdiv#three_maincolumnが幅432pxなのに、その中のコンテンツ記述部分であるdiv#undercolumnが580pxで定義されていました。
何故。
つうかundercolumnとかいかにもフッタっぽい名前なんだけど何故こんな名前なんだろう。
というわけでdiv#undercolumn{width: 580px;}とすれば解決だ、と思えば全然そんなことはありませんでした。
商品ページ内のフォームとかタイトルとかデザインとかが悉く580pxと指定されている。
なんでピクセル指定するかなあ…

ということでもっとも簡単な解決方法はdiv#three_maincolumn{width: 580px;}div#container {width: 912px;}だと思われます。
横幅が変わるのでヘッダフッタのCSS編集が必要になりますが、それ以外の全コンテンツのCSS編集を行うことに比べればましでしょう、きっと。


EC-CUBEの記事



2010/02/09 21:15 | Comments(0) | TrackBack() | PHP
買ったものリスト 2010/02/07

近所のスーパーでエリクサーが100円で投げ売られてたので買ってみた。
うん、ネタにすらできないどうでもいい味。
ポーションとか相当アレな味だった気がするんだが最上位がコレってどういうことなの。


ユニコーンの日 上

なんとあの福井晴敏×ガンダム!!

と煽ってみたはいいものの実はガンダムあんまり知らないんだよね。
まともに見たのは初代とZ、0083くらいだったり。

福井はOp.ローズダストとか亡国のイージスとか読んだんだが、途中ま壮大なわりに何故か終わりだけがやたらあっけないというのが正直な感想というところ。

そして重大な問題が。
まだ半分くらいしか読んでないのに本がどこかに行ってしまった。
何故だ!
家からは出してない筈なんだが。


デュラララ!!7
☆☆☆☆

今巻は前巻までの後始末と次巻からの展開に向けての小休止という名の短編集。
大きな展開はありませんが例によって細かな仕込みが色々なところに現れています。
久しく出番の無かったトップクラスの壊れキャラがどうとか言ってますが壊れじゃないキャラは居るのかと。

>デュラはあまり新キャラが増えないので
嘘をつけ嘘を。


RPGワールド4
☆☆☆☆

ついにギャスパルク七柱がひとつ、魔神グモンが復活。
その強大な力に立ち向かう…一万人パーティ。
どんだけだよ。
そしてその一万人パーティの魔法攻撃を凌ぎきるグモン。
チート過ぎる。
そんなとんでもない敵を野放しにしていては世界の危機と、ユーゴたち日本組とエターナル組による魔神掃討作戦が開始される。

>そうした各種の設定をなにからなにまですべて本文に組み込もうとすると、説明文の量がやたらと多くなって物語の流れを阻害する
ウィザードリィ外伝1ですね。あれは酷かった。


カオスだもんね+1
☆☆☆

週刊アスキーで長らく連載されていた本作がついにリニューアルして登場!
で、やってることは何一つ変わってませんでした。
今回はちょっと地味な話が多かったかなあと。


あやしい人に遭ってきました。
☆☆☆

体当たり系レポ漫画の中でも最も底辺の方に位置する一人、小沢カオル。
ってこないだ出たばっかりなのにもう新刊か。
取材先がキャバクラとかヘルスとか相変わらず女を捨てた新しい世界ばかりで単純に面白いかと思えば、極稀になかなか深いことを言うような人も居てやっぱり面白かった。



2010/02/07 17:43 | Comments(0) | TrackBack() | 買ったもの
EC-CUBE インストール
EC-CUBE Ver2.4.2
http://www.ec-cube.net/

<div id="fotter">とか書いてある時点で信頼性ゼロのEC-CUBEですが、ローカルのXAMPPでさくさくと買い物サイトを作成してみます。


マニュアルサイトがわりと丁寧に書かれているのでそこ読めば終わっちゃうのですが、せっかくなので設置作業のログでも書いておこうかと。

例によって教え口調になっているんですがあくまで自分用なので文体は気にしない。

まずEC-CUBEの本体をダウンロードしてきて、どこか適当なフォルダに解凍します。

本来はこの後めんどくさいパーミッションの設定が必要ですが、Windowsなので必要ありません。

次にバーチャルホストを切ります。
別にhttp://localhost/hoge/fuga/eccube/とかでも問題無いんですが、見た目が綺麗な方がやっぱりいいですよね。
ということでhttpd.confを編集。
最近のApacheは各設定を別ファイルに分離してくれるので、
C:\xampp\apache\conf\extra\httpd-vhosts.conf
あたりを探し出して以下を追加。

1
2
3
4
5
6
7
<VirtualHost *:80>
    ServerName eccube.localhost
    DocumentRoot "C:\hoge\fuga\eccube\html"
    <Directory "C:\hoge\fuga\eccube\html">
      AllowOverride All
    </Directory>
</VirtualHost>

ディレクトリはEC-CUBEを置いたところに適当に置き換えてください。
設定したらApacheを再起動。

最後にhostsの編集。
C:\WINDOWS\system32\drivers\etc\hostsに、
127.0.0.1 eccube.localhost
を追加します。
これはeccube.localhostというドメインに接続しようとしたら強制的に127.0.0.1(つまりローカルホスト)を見に行くよ、という設定です。

その後
http://eccube.localhost/
に行こうとしたらいきなりEC-CUBEのインストール画面に辿り着くはずです。

デフォルトだとDocumentRoot直下がEC-CUBEのインストールディレクトリになります。
任意の場所に置きたい場合、先に/html/define.phpのパスを書き換え、その場所にhtmlディレクトリおよびdataディレクトリを移動、リネームしておきます。

データベースを使用することになるので、先に場所を作っておきます。
デフォルトのままであれば
http://localhost/phpmyadmin/
でphpMyAdminが使用できるので、EC-CUBE用のユーザとデータベースを適当に作成します。
EC-CUBE2.4.0以前はMySQLのパフォーマンスに随分難があったようですが、今ならまあ概ね大丈夫なんじゃないかな。

あとは画面の指示に従っていけば勝手にECサイトができあがります。びっくりだ。


インストール完了後アクセスすると、サイトの頭に
>> /install/index.phpは、インストール完了後にファイルを削除してください。
という表示が出るので削除するか改名しPHPとして実行されないようにしておきます。
うっかり実行されてしまうとデータベースを全削除されたりと恐ろしいことになってしまいますので、どうせならinstallディレクトリそのものを亡き者にした方がより安全でしょう。


EC-CUBEの記事


2010/02/05 22:43 | Comments(0) | TrackBack() | PHP
Symfony-9日目その2
先日の続き。 いろいろな検査をやってますが、基本的にsfTestFunctional::checkElement()で要素が存在するか、内容が正しいかを確認しているだけのようです。

lib/test/JobeetTestFunctional.class.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class JobeetTestFunctional extends sfTestFunctional{
  public function loadData(){
    Doctrine::loadData(sfConfig::get('sf_test_dir').'/fixtures');
    return $this;
  }
 
  public function getMostRecentProgrammingJob(){
    $q = Doctrine_Query::create()
      ->select('j.*')
      ->from('JobeetJob j')
      ->leftJoin('j.JobeetCategory c')
      ->where('c.slug = ?', 'programming');
    $q = Doctrine::getTable('JobeetJob')->addActiveJobsQuery($q);
    return $q->fetchOne();
  }
 
  public function getExpiredJob(){
    $q = Doctrine_Query::create()
      ->from('JobeetJob j')
      ->where('j.expires_at < ?', date('Y-m-d', time()));
    return $q->fetchOne();
  }}


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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
include(dirname(__FILE__).'/../../bootstrap/functional.php');
 
$browser = new JobeetTestFunctional(new sfBrowser());
$browser->loadData();
 
$browser->info('1 - The homepage')->
  get('/')->
  with('request')->begin()->
    isParameter('module', 'job')->
    isParameter('action', 'index')->
  end()->
  with('response')->begin()->
    info('  1.1 - Expired jobs are not listed')->
    checkElement('.jobs td.position:contains("expired")', false)->
  end()
;
 
$max = sfConfig::get('app_max_jobs_on_homepage');
 
$browser->info('1 - The homepage')->
  info(sprintf('  1.2 - Only %s jobs are listed for a category', $max))->
  with('response')->
    checkElement('.category_programming tr', $max)
;
 
$browser->info('1 - The homepage')->
  get('/')->
  info('  1.3 - A category has a link to 
     the category page only if too many jobs')->
  with('response')->begin()->
    checkElement('.category_design .more_jobs', false)->
    checkElement('.category_programming .more_jobs')->
  end()
;
 
$browser->info('1 - The homepage')->
  info('  1.4 - Jobs are sorted by date')->
  with('response')->begin()->
    checkElement(sprintf('.category_programming tr:first a[href*="/%d/"]',
      $browser->getMostRecentProgrammingJob()->getId()))->
  end()
;
 
$browser->info('2 - The job page')->
  info('  2.1 - Each job on the homepage is clickable 
      and give detailed information')->
  click('Web Developer', array(), array('position' => 1))->
  with('request')->begin()->
    isParameter('module', 'job')->
    isParameter('action', 'show')->
    isParameter('company_slug', 'sensio-labs')->
    isParameter('location_slug', 'paris-france')->
    isParameter('position_slug', 'web-developer')->
    isParameter('id', $browser->getMostRecentProgrammingJob()->getId())->
  end()->
 
  info('  2.2 - A non-existent job forwards the user to a 404')->
  get('/job/foo-inc/milano-italy/0/painter')->
  with('response')->isStatusCode(404)->
 
  info('  2.3 - An expired job page forwards the user to a 404')->
  get(sprintf('/job/sensio-labs/paris-france/%d/web-developer',
    $browser->getExpiredJob()->getId()))->
  with('response')->isStatusCode(404)
;


test/functional/frontend/categoryActionsTest.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
34
35
36
37
38
39
40
41
42
43
include(dirname(__FILE__).'/../../bootstrap/functional.php');
 
$browser = new JobeetTestFunctional(new sfBrowser());
$browser->loadData();
 
$browser->info('1 - The category page')->
  info('  1.1 - Categories on homepage are clickable')->
  get('/')->
  click('Programming')->
  with('request')->begin()->
    isParameter('module', 'category')->
    isParameter('action', 'show')->
    isParameter('slug', 'programming')->
  end()->
 
  info(sprintf('  1.2 - Categories with 
      more than %s jobs also have a "more" link',
   sfConfig::get('app_max_jobs_on_homepage')))->
  get('/')->
  click('22')->
  with('request')->begin()->
    isParameter('module', 'category')->
    isParameter('action', 'show')->
    isParameter('slug', 'programming')->
  end()->
 
  info(sprintf('  1.3 - Only %s jobs are listed'
      , sfConfig::get('app_max_jobs_on_category')))->
  with('response')->checkElement('.jobs tr'
      , sfConfig::get('app_max_jobs_on_category'))->
 
  info('  1.4 - The job listed is paginated')->
  with('response')->begin()->
    checkElement('.pagination_desc', '/32 jobs/')->
    checkElement('.pagination_desc', '#page 1/2#')->
  end()->
 
  click('2')->
  with('request')->begin()->
    isParameter('page', 2)->
  end()->
  with('response')->checkElement('.pagination_desc', '#page 2/2#')
;


個別にテストを行います。
>php test/functional/frontend/jobActionsTest.php
>php test/functional/frontend/categoryActionsTest.php


アプリケーション単位のテスト、またテストフォルダに存在するテストを一気に全部行うこともできます。
>php symfony test:functional frontend
>php symfony test:all


めでたしめでたし。


……エラーになりました。

>php test/functional/frontend/categoryActionsTest.php
> 1 - The category page
> 1.1 - Categories on homepage are clickable
# get /
# get /category/programming
ok 1 - request parameter module is category
ok 2 - request parameter action is show
ok 3 - request parameter slug is programming
> 1.2 - Categories with more than 5 jobs also have a "more" link
# get /
InvalidArgumentException: Cannot find the "22" link or button.
at () in C:\xampp\php\PEAR\symfony\util\sfBrowserBase.class.php line 689
at sfBrowserBase->doClick() in test\sfTestFunctionalBase.class.php line 289
at sfTestFunctionalBase->click() in test\functional\frontend\categoryActionsTest.php line 20
not ok 4 - An uncaught exception has been thrown.
# Failed test (test\sfTestFunctionalBase.class.php at line 612)
1..4
Looks like you failed 1 tests of 4.


categoryActionsTest.phpclick('22')の部分でエラーが発生しました。

原因はチュートリアルのapp.yml
max_jobs_on_homepage: 10
max_jobs_on_category: 20

であるのに対し、手元で試したときの設定が
max_jobs_on_homepage: 5
max_jobs_on_category: 10

になっていたからです。
これだとリンク部分が「and 27 more...」になってしまうので22のリンクが見つからないのです。

てか、このテストは思いっきりデータベースの件数やapp.ymlの設定に依存したテストになってしまってるんだがそれでいいのか?
限界値分析のためにデータ放り込んでテストしなきゃならんとかなったら毎回テストを書き換えなければならず手間暇があんまり変わらないような。


あと、このテスト機能をブラウザから閲覧できる機能があってもいいと思うんだがどうだろう。


2010/02/01 21:38 | Comments(1) | TrackBack() | PHP
買ったものリスト 2010/01/31

2、3月の予定がヤバいことになっている件。
確定分だけで、
2010/2/18 EAT LEAD
2010/2/25 エスプガルーダ II
2010/2/25 のーふぇいと!
2010/3/04 BIOSHOCK2
2010/3/11 BFBC2
2010/3/25 カオスヘッド らぶChu☆Chu!

ほとんど毎週かよ。


シブすぎ技術に男泣き!
☆☆☆☆

本当に日本を支えているのは中小企業の技術者達なんだ、という心意気が伝わってくる本。
前半はいろいろなメーカーの取材話、後半は著者の技術者時代の話という概ね二部構造でした。
著者が畑違いではなく実際に技術者出身ということで、体験を交えた本音が感じられました。

しかしまあ、泣けはしません。
昨今の不況や売国政策で中小企業が死滅した後の日本を考えると泣けそうですが。


数学ガール下
☆☆☆

下巻になってもよくわからなかった。
理由を端的に言うとミルカにあんまり共感できなかったという一点に尽きると思われます。
お前は何がしたいんだと。


聖剣の刀鍛冶8
☆☆☆

前巻までで大きな山場を乗り越え、次回への小休止となる今巻。
ナース服やドレスを着せられている裏で徐々に接近する終末へのカウントダウン。
どうも敵側の登場キャラを無駄に格好良く印象づけようとして失敗してる感がするのは私だけですかね。
つうか連中の目的はなんなんだ。


デュラララ!!6
☆☆☆☆

例によって、ちょっとだけ情報交換すれば平穏無事に終わったはずの日常が少しづつ足りないために大騒動になってしまう非日常的日常。
実は臨也って大したことないんじゃないかと思ってしまう程人外な連中が続々登場。
5巻ですら思ったのにまたまた思っちゃうとかどうなの。
どうでもいいが帝人が結局ダラーズをどうしたいのかが見えてこないな。
どう見ても今さら軌道をどうこうするのは不可能なんだがどうするのやら。


Fallout3

今更感たっぷりだが名作RPGと名高いFallout3を買ってきた。
で、プラチナで買ったんだが、DLC搭載済のGOTYエディションとか発売されてたんだな。
全然知らずにこっちを買ってしまった。なんてこったい。

どうでもいいんだがこの手のゲームは画面がやたら暗いのはどうにかならんものなのだろうか。



2010/01/31 23:25 | Comments(0) | TrackBack() | 買ったもの
9時間9人9の扉 プレイ日記8
9時間9人9の扉 プレイ日記8

クリアしました。

※ネタバレを含むので未プレイの方は閲覧をご遠慮ください


2010/01/30 23:49 | Comments(0) | TrackBack() | ゲーム

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