カテゴリ: 仕事, PCサポート

ページ: << 1 2 3 4 5 6 7 8 9 10 11 ... 27 >>

秋の情報処理技術者試験の申し込み

パーマリンク 2009/08/05 23:13:36 著者: kumaold メール
カテゴリ: 仕事

今年の目標のひとつである情報処理技術者試験のひとつである応用情報技術者(旧ソフトウェア開発技術者)の受験申し込みをしました。


初回だけは会社から受験料の補助が出るので、これは1回で合格するしかない!

ただ、旧制度の試験からの合格率が2倍近くに跳ね上がっているのを見ると、新制度2回目の次はレベルが上がりそうなのが難点。


過去10回近く国家試験を受けて、適当にしか勉強してないのに運が良いのか1回も落ちたことがないけど、今回は真面目に勉強するかな…

CakePHPとかに慣れちゃうとSQL文を忘れちゃうのが恐ろしい。


平成21年度【秋期】 応用情報技術者 パーフェクトラーニング対策問題集平成21年度【秋期】 応用情報技術者 パーフェクトラーニング対策問題集
技術評論社 2009-07-10
売り上げランキング : 1277
おすすめ平均

.htaccessでサブドメイン対応

パーマリンク 2009/08/04 17:59:24 著者: kumaold メール
カテゴリ: 仕事, サーバ関係

FTPによるアクセスの都合上、httpd.conf を使わずにサブドメインの切り分けが必要になってきたので、本日は .htaccess で苦戦。


目的はまとめるとこんな感じ。

元からあるサイト http://www.example.com/ /public_html/
追加ドメイン http://sub.example.com/ /public_html/sub/

既存のサイトの下にディレクトリを1つ作って、対応するドメインからのアクセスはそこに流す。ただし表向きのURLは書き換えない。(リダイレクトしない)

あと、http://www.example.com/sub/ へのアクセスはサブドメインにリダイレクト。


とりあえずこんな感じで一応は動きます。(保証なし)

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^sub.example.com$
    RewriteCond %{REQUEST_URI} !^/sub/
    RewriteRule ^(.*)$ sub/$1 [L]
    RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
    RewriteCond %{REQUEST_URI} ^/sub/
    RewriteRule ^$ http://sub.example.com/ [R=301,L]
    
    #CakePHPで元からあるもの
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>


4行目のRewriteCondがないと、Apacheのエラーログにこんなのが出ます。

mod_rewrite: maximum number of internal redirects reached. Assuming configuration error. Use 'RewriteOptions MaxRedirects' to increase the limit if neccessary.

要は無限リダイレクトに陥るので、それを防止するためです。


正規表現を使ってもうちょっとスマートに書きたいところですが、既存のディレクトリに不用意にアクセスされるのも困るので、とりあえずこんなとこで。

 

できるPRO Apache Webサーバー Apache2/1.3対応 (できるPROシリーズ)できるPRO Apache Webサーバー Apache2/1.3対応 (できるPROシリーズ)
インプレスジャパン 2006-06-01
おすすめ平均
type="text/javascript">
type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

1ページ内で複数レコード用のフォーム

パーマリンク 2009/07/22 14:44:51 著者: kumaold メール
カテゴリ: 仕事, プログラミング, PHP, CakePHP

CakePHPで管理画面などを作っていくと、普通にやろうとすると1ページで1レコードの入力フォームしか対応できません。

1ページで複数レコードに対応するフォームとバリデーションを作れないかと、本日は試行錯誤してみました。

/* View */

<?php e($form->create(null, array('action' => 'check'))); ?> 
<?php for ($i = 0; $i <= 2; $i++): ?>
<?php   e($form->text("Model.{$i}.field_name")); ?> 
<?php   e($form->error("Model.field_name_{$i}")); ?> 
<?php endfor; ?>
<?php e($form->end()); ?>

とりあえず適当に3レコードの入力画面を作ります。

ここで、$form->error の項目名(?)が Model.{$i}.field_name でないのは、普通に書くとバリデーションエラーが出力されないため、小細工をします。

これをPOSTするとControllerではこのようになります。

Array
(
    [Model] => Array (
        [0] => Array (
            [field_name] => ...
        )
        [1] => Array (
            [field_name] => ...
        )
        [2] => Array (
            [field_name] => ...
        )
    )
)

Modelのバリデーションルールは今まで通り普通に書きます。(省略)

バリデーションエラーが出力されない理由はおそらく、FormHelperで項目名に.が入っているとModel名の区切りと誤認識するからかと思います。

そこで仕方なく項目名をエラー用に_でつなげて、エラー時にはControllerで本来の項目名から対応するエラー用の方にinvalidate()で変換しています。

/* Controller */

// 各データごとにバリデーション
foreach ($this->data['Model'] as $key => $value) {
    $this->Stage->set(array('Model' => $value));
    if (!$this->Model->validates()) {
        // バリデーションエラーを表示用に変換
        $errors = $this->Model->invalidFields();
        foreach ($errors as $field => $error) {
            $this->Model->invalidate("{$field}_{$key}", $error);
        }
        $error_flg = true;
    }
}

// エラーがあれば入力画面再表示
if (isset($error_flg)) {
    $this->render('edit');
}

こうすることで基本的な構造を変えずに複数レコードを1画面で入力でき、バリデーションエラーも各レコードで独立して表示できます。
 

CakePHP1.2ガイドブックCakePHP1.2ガイドブック
安藤 祐介
毎日コミュニケーションズ 2009-06-27
売り上げランキング : 8145
おすすめ平均
type="text/javascript">
type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">

<< 1 2 3 4 5 6 7 8 9 10 11 ... 27 >>

一六社で働くITエンジニアのブログ。

普段はWeb系システム開発と地元のPCサポートをやってます。いつの間にやら会社に8年目。
技術ネタ中心に日々の仕事と生活と趣味やらを気が向いたら書いてます。

2017年3月
 << <   > >>
      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  

検索

XMLフィード

16ブログ     powered by b2evolution free blog software