MacbookProのHDDを・・・

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

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

たのしみたのしみ♪

第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;
    }
}

?>

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

Tracでgit

git

Tracでgitですが、結局躓いていた原因は、trac.iniの設定不足だったようです。
とりあえず、tracでgitが使えることはわかりました♪

1つのプロジェクトに1つのtracで完結。
フォルダごとバックアップをとっておけばそれでOKな手軽さが素敵でまだまだ手放せそうにありません(笑)
(redmineも気にはなってるんですけどね(><)

[components]
tracext.git.* = enabled
...(略)

[git]
cached_repository = true
git_bin = /usr/local/bin/git
persistent_cache = true
shortrev_len = 7

[trac]
...(略)...
repository_dir = /home/apache/git/nekoget/.git/
repository_type = git
...(略)

■躓いた後、うまくいった原因かもしれない事柄は次の2点
(もうすこしきちんとメモをとりつつ、取り組めばよかったなと反省)

サーバ上のgitは1.6.4から1.6.3にダウングレード
(checkinstallでrpmを作成し、インストール)

レポジトリのディレクトリを最初/home/apache/git/nekoget/に作ったのだけれども、うまくいかないので/home/apache/git/nekoget/.git/に変更。

■環境(?)

TRACはTrac 0.11.2.1.ja1
インタアクト株式会社 様が配布くださっている日本語版TRAC

gitは1.6.3
checkinstallでrpmを作成し、インストール

OS:Fedora 8

Python 2.5.1

git21.gif
rootでコミットを試しちゃったのがばれちゃう恥ずかしい画像(笑)

CIUnitの私の使用状況と考えについて

CodeIgnigter

以前に作成した資料を拝見くださった方が、twitterにてフォローいただいたとのことなので、
現状手元にあるCIUnitがどのような状況なのか、書いてみたいと思います。

◆ネコネットデザイン事務所ホームページ
CodeIgniter 1.6.2に組み込み
modelを中心にテストを書いてみました。
運用サーバ上にテストをアップしないように、applicationフォルダ以下をSVN管理上のファイルとして扱い、
テストは自分だけに見える状態として扱ってます。

◆MyNETS2 にCIUnitを組み込み
リビジョン番号を控えわすれてますが、リポジトリからエクスポートさせていただいたのが2009年4月9日となっているので、かなり古いものです。確認しましたがその頃のファイルは残ってないようなので、現在レポジトリで公開されているものとは中身が違うようです。
設定ファイルの設定でCIUnitのON OFFを制御させています。
テストコードも複数人で共有できるようにSVN管理しています。
現在これをベースに組んでいたものは、途中でやる気を失ってしまい放置状態ですorz
この時点で発生した問題としては、セッション系の部分とモバイル、PCの判定部分を突破できず、コントローラのテストはできませんでした。モジュール、ヘルパー、ライブラリに関してはphpUnitは正常に動作し、テストが実行できる状況が作れています。
この2ヶ月ほどは、7月頭ぐらいにコミットされてるリビジョンのMyNETS2をいじっていますが、まだそれにはCIUnitは組み込んでいません。CIUnitとは違う方法でのphpUnitの利用を模索中です。

◆まだTDDにはたどり着いていないという事
去年のOSC、
そしてt-wadaさんの「TDDテスト駆動開発」を拝見してから、テストせねばということでテストをするということに取り組んでるわけですが、実際のところまだTDDの、「先にテストを書く」というところには、まだたどり着いていません。

コードを書く→ちゃんと動くかテストを書く→テストを動かしてみる。

私はついつい長々とコードを書いてしまうので、
処理を分割する→テストを動かす→うごいてる♪
な、動作の確認にもテストを動かして、確認をしている感じです。

CIUnitで書いているテストは、Modelに対して行っています。
少しずつですが、最近はhelperに対するテストを書き始めました。
不器用なので、まだテストという技術を身につけるには至っていないと思いますが、少しずつできるようになってきているのかなと感じています。

◆コントローラのテストに対する考え
MyNETS2に組み込んだCIUnitも素の状態の1.6.2に組み込んだCIUnitも、
現状Controllerのテストはやりにくい状態です。
この部分は、無理にUnitテストではなく、目視での確認
バッチでコントローラを走らせた後に、DBの値を検証をする、もしくはWebアプリケーション用のテストツールSelenium等を利用した、別の形で行うのが良いかと思っています。
model,helper,ライブラリ等で、何を投げて何が返ってくるのかにだけ注目し、他は行わないという割り切りがあっていいかなと思っています。

2009.09.10 追記