MacbookProのHDDを・・・

MacbookProのHDDを交換したいなと思っているわけですが、
まだ保障が今年の12月まであるため、保障が切れたらしたいなーなんて思ってます。
intel Core2Duoではあるものの、古いタイプの為HDDの交換はかなり難しそうです。

調べてみたところ、HDD交換をしてくれそうなお店を発見
http://www.kitcut.co.jp/onlinestore/operation.php

たのしみたのしみ♪

メモ CodeIgniter set_value()がわかった。

CodeIgniter

system/hepler/form_helper.php

確認画面から、フォームに戻った時にどうして、set_value()で値がなぜか取れない。
なぜ取れないのかわからない(T-T)
ということで、調べてみました。

(T-T).o(けっこう恥ずかしい理由だったわけですが、あえて公開です。)

<?php
/**
 * Form Value
 *
 * Grabs a value from the POST array for the specified field so you can
 * re-populate an input field or textarea.  If Form Validation
 * is active it retrieves the info from the validation class
 *
 * @access	public
 * @param	string
 * @return	mixed
 */
if ( ! function_exists('set_value'))
{
    function set_value($field = '', $default = '')
    {
        if (FALSE === ($OBJ =& _get_validation_object()))
        {
            if ( ! isset($_POST[$field]))
            {
                return $default;
            }
            return form_prep($_POST[$field], $field);
        }
        return form_prep($OBJ->set_value($field, $default), $field);
    }
}
?>

で、form_validationのset_valueメソッドの

return $this->_field_data[$field]['postdata'];

$this->_field_data[$field][‘postdata’];がNULLだったりする・・・orz
($this->_field_data[$field]にはきちんとデータが格納されている。)
なので、set_value(“hogehoge”);で値が取れない。

form_validationのset_value

<?php
function set_value($field = '', $default = '')
	{
		if ( ! isset($this->_field_data[$field]))
		{
			return $default;
		}
		
		return $this->_field_data[$field]['postdata'];
	}
?>

$this->_field_data[$field][‘postdata’];がnullなので、returnで値が帰ってきてもnull…..

ではどこでこの値をセットしているかをみてみると、
Form_validation.php 333行目あたり。
function run()内で処理されてる。

$this->form_validation->run();
を実行した後でなければ、set_value(“フィールド名”,”初期値”);で、POSTで送信したデータが取れないようです。
確認画面から、フォームに戻った時にどうして、set_value()で値がとれないのか謎でしたがようやく納得しました。

第46回PHP勉強会@関東で発表をしてきました

CodeIgniter

本日(日付が変わってしまったので正しくは昨日ですね)、株式会社グリー様に会場をお借りしての、第46回PHP勉強会@関東に参加をさせていただきました。

今回はCodeIgniterのHMVC構造をテーマに発表をさせていただきました。
資料、すこし手直しをしようかなとも思ったのですが、とりあえずそのままUPです。

発表をさせていただいた様子です。
撮影いただきましたogiさん、ありがとうございます(^-^)
(^-^;).o(声が震えてて恥ずかしい・・・)

今回、発表に到るまでに、資料を見て頂き、アドバイスや情報をたくさんいただきました。
norikoさん、kenjiさん、tsujikuniさん、
そして拙い(Web翻訳頼りの)英語での質問に、とても丁寧に答えてくれた
wiredesignzさんに心から感謝です。
ありがとうございました。
勉強会でも話を聞いていただき、懇親会では声をかけていただいたりと、とても有意義な時間でした。
皆様に大大感謝です。

次回の発表の場では、もっと良いものにできるよう精進したいと思います。

第46回PHP勉強会@関東:http://events.php.gr.jp/events/show/84

CodeIgniter HMVC その後(2)

CodeIgniter Mobile

◆ここまでのあらすじ
最初1.7.2にCIUnitを組み込んでから、HMVC modular extensions 5217.zipを組み込み後、CIUnitを組み込み。携帯対応で混乱をしたため、上記作業のメモを元に、再度仕切りなおしをしました。

CodeIgniterを1.7.2にHMCV modular extensions 5219.zipを組み込み、その動作を確認しました。
/modules/{モジュール名}/controllers/{モジュール名}.phpの動作を確認

設置場所URL/index.php/{モジュール名}/

でアクセスできました。

/modules/{モジュール名}/controllers/{モジュール名と違う名前}.phpの動作を確認
この場合はURLは 

設置場所URL/index.php/{モジュール名}/{コントローラ名}

でアクセスできました。

◆その後やったこと。◆
(HMVC) modular extensions 5217.zipのコードを拝見。
(=▽=).o(勉強になるなぁ♪)

(HMVC) modular extensions 5217.zipに+携帯関連のコードを追加しました。

  • 【携帯対応】モバイル判定 (MyNETS2より移植)
  • 【携帯対応】文字コードの処理および絵文字関連 (MyNETS2より移植)
  • 【携帯対応】セッションIDの発行 url_helperの拡張
  • 【携帯対応】携帯の場合のDBからのセッションの読み込み、セッション(Cookie)は暗号化することを前提です。

携帯、PCを意識することなく、コードが書ける環境ができました。

◆課題◆
CIUnitを外してしまいました。
modular extensions 5217.zipでは、うまく動かなかったことと、
やはり本体の本体/system/codeigniter/CodeIgniter.phpを書き換えることが、やっぱり引っかかります。

テストをする仕組みを再度組み込む必要があります。
とりあえずは、unit_testクラスを使う方向で考えたいと思います。

メモ*テストを書くべき場所はどこか?*
CodeIgniterのUnit_testクラスでテストを書くなら、testコントローラを作って、そこにテストを書きたいなと思います。
controllerからcontrollerを呼べないわけだけれど、controllerからモデルもライブラリもヘルパーも呼べる。
ということは、呼ぶ、値を渡す、返ってくる値を評価するというお仕事は、controllerが適役。

modular extensions 5217.zipを組み込むと、モジュールから、他のモジュールのコントローラを呼ぶことが出来ます。これを利用して、とりあえずはunit_testクラスを使う方向で、使ってみようと思います。

<?php 
 echo modules :: run ( 'module/controller/method' , $param , $...); 
?>

参考サイト:

CodeIgniter HMVC のその後

CodeIgniter

その後ですが、HMVCは一旦取り外してしまいました。
ごにょごにょしてたコードを一旦置いて、CodeIgniter1.7.1に対して、欲しかった機能を拡張するほうを優先しました。まだ私の理解力では足りない感じなので、順番に確実に進めていくことにしました。

この作業で、意識したのは次の3点。
(1)PCサイトと携帯サイトを構築するためのベースをつくる。
(2)PCサイトと携帯サイトをどう組み分けるか?を考える
(3)アプリとしての使い勝手と、アプリを組むために便利であることとのバランス。

(2)について。
愛読させていただいているCodeIgniter徹底入門では、携帯判定を行って、行った結果表示する情報量を減らす等の処理をして、モバイルとPCで両方使える掲示板の構築例がありました。コードを書く側から思えば、この方法のほうが、書くコードの量も少なくて楽です。そのようにしようと、サイトマップを作り始めたのですが・・・・・

実際アプリではなくてサイトとして考えると、PCと携帯を同時に考えるのは、結構複雑です。

携帯だけに実装したい機能、PCだけに実装したい機能、そしてそれらの機能に対する運用開始後の機能追加・・・を考えるとコントローラの中が結構複雑になってしまうし、作った人と運用後の機能追加をする人が違う場合には混乱しそうです。結局、コントローラを分けて、モデル、ライブラリは共通のものを使う方向で考えることにしました。。

モバイル対応が落ち着いたら、改めて挑戦したいと思います。

(=_=;).o(MyNETS2を素直に使えば良いとは思うんですよね・・・でももう少しそこに至るところまでを理解したいのです・・・・)

追記 2009.09.29
(=_=;).o0(追記の内容の方が、多いのでタイムスタンプを追記時間で書き換えました。)
やはりあきらめちゃダメだろうってことで、trac gitを用意。
とりあえずの携帯対応ができたCodeIgniter1.7.1を元にHMVCの組み込みを開始。

HMCV modular extensions 5219.zip
もう、HMVCエクステンションのバージョンがあがってる!!!
混乱して来たので、いままで触っていたものはそれはそれとして、置いておいて、
素の状態に、HMCV modular extensions 5219.zip を組み込んで、動くかどうか試してみた。
あっさりと、application/modules/{モジュール名}/以下のコントローラを読み込んでくれた。
また、モジュール名と同じコントローラ名でコントローラを作ったものは、コントローラ名を省略してくれている。モジュール名と違うコントローラ名の場合はURLが

モジュール名/コントローラ名/メソッド名

Machboxとほぼ同じ挙動になっている。

あとはmodelが動くかどうかも確認をしてみた。

  • welcomeなモデルをつくって試してみた。
    (なんだか呼ばれたのが嬉しい感じのテキストを返すモデルw)
  • application/modules/{モジュール名}/models/model_welcome.php
  • application/modules/{モジュール名}/controllres/welcome.phpから呼び出せた。
<?php
class Model_welcome extends Model {


    function Model_welcome()
    {
        // Call the Model constructor
        parent::Model();
    }
    
    function get_welcome()
    {
        $text = "Oh! Wecome Model !!!!";
        return $text;
    }
}

?>

動いてほしいと思っていた部分が確実に動く事を確認できたので、
次は中身を理解するためにコードを読むことにしてみます。

rhaco2をインストールしてみた。

rhaco2

rhaco2をインストールしてみました。
http://rhaco.org/
setup.phpをダウンロード。
設置をしてから、http越しにアクセス。

setup.php
とってもシンプル。

で、設置したパスが表示されたので、何も考えずポチ。

インストール後

フォルダができてました。

rhaco2のドキュメントはここにあるらしいです。
http://wikihub.org/wiki/rhaco2-doc

setup.php

そして、アプリケーションインストールを実行。
org.rhaco.sample.calcと入力して、ボタンをクリック。

すると、セットアップが表示されました。
setup