ぼーず奮闘記

PHP、JavaScript、便利ツールなど気になるものを適当に。

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
--.--.-- --:-- | スポンサー広告 | トラックバック(-) | コメント(-) |
前回Subversionについて学びました。基本的な流れは掴めましたので、今回は統合開発環境であるeclipseの準備を行います。

All-In-One-Eclipseにしようか普通にインストールしようか考えていると、All-In-One-Eclipseの配布サイトにAll-In-One-Tracというものがありました。
以前はなかったのですが、いつのまにか配布されていたようです。
All-In-One-Tracは、Wiki + Subversion + Issue tracking system を実現するTracのWindowsインストーラです。主に以下の機能があるようです。

Wikiによるプロジェクト内の情報共有
Subversionとの連携
要件管理(Issue Tracking)機能
更新履歴(タイムライン)や要件一覧のRSS配信機能


さらに、以下の機能も追加されています。

Apacheの.htaccessを利用してTracの認証とSubversionの認証を一括に行う機能
Apache/Trac/Subversionのコマンドを使いやすくラップしたコマンド群の提供
インターネットに接続できない環境でもダウンロードできる様、Subversionを利用するためのクライアントソフト(TortoiseSVN/Subclipse/Ankhsvn)を梱包
インターネットに接続できない環境でもSubversionの使い方をすぐに調べられる様、Subversionによるバージョン管理を梱包


まぁこれについては、現在の使用しているマシンがwin2kなのでいずれ試してみます。

開発にはeclipseベースのPDTプラグインを利用するつもりですが、PDTが最初からインストールされたオールインワンパッケージがありますので、これをダウンロードします。

日本語化されていないので、プラグイン日本語化プラグインをダウンロードし、インストールします。

インストールが終わったら、PDTからデバッグを行うためにはZendDebuggerをインストールする必要があります。これについては、こちらを参考にインストールします。

んー・・・エラーがでます・・・。ということで、デバッガーについては後々調査します。


・・・随時記事編集中。
スポンサーサイト
今日はSubversionによるチーム開発について学びます。
二人で同じファイルを変更した場合を仮定して操作を学びます。

ということで早速作業用フォルダAとBを作成します。このAとBはそれぞれ別々の人であると仮定します。

md c:/work/A
md c:/work/B


作成したA、Bフォルダにソースをチェックアウトします。

037.jpg


038.jpg


次に、Aフォルダのhoge.txt、hoge_conflict.txtファイルを開き以下のように変更し、コミットを行います。

A
B
C


Aフォルダで変更しコミットした内容は、まだBフォルダには反映されていません。この状態でBフォルダの、hoge.txtファイルを開き以下のように変更します。

A
B
c


Bフォルダの、hoge_conflict.txtファイルを開き以下のように変更します。

A
b
e


これで、例えばAさんがファイルを変更し、ソース管理に反させた状態で、Bさんも同じファイルを変更した状況ができました。

これからこういった場合のソースの反映方法を練習します。
実際の開発現場で、こういったことが起こると困るから同じファイルを変更しないように言われた事があります。
けどそれじゃあなんのためにソース管理を利用しているのかわかりません。

こういった場合にはマージという作業が必要になります。しかしこれもソース管理が手助けしてくれますので、楽なもんです。

Bフォルダに移動し、右クリック>SVN更新 を選択します。

039.jpg


hoge.txt、hoge_conflict.txtファイルに他の人の変更があったことがわかります。

hoge_conflict.txtファイルを開いてみます。

A
<<<<<<< .mine
b Bフォルダの変更
e Bフォルダの変更
=======
B Aフォルダの変更
C Aフォルダの変更
>>>>>>> .r6


競合している部分のがわかりやすくなっています。
AさんはBとCを大文字にする必要がありそう変更しています。
Bさんは、Cが不要となり新たにeを追加しています。

ここでAさんの変更とBさんの変更を吟味し、マージを行います。今回は以下のように変更する事にします。

A
B
e


変更が終わったら問題の解決を行います。右クリックメニューから以下のようにし問題を解決します。

042.jpg


競合の問題が解決したら、コミットを行います。
さて今日はSubversionの基本操作を学びます。

前回作成した C:/src フォルダ上で右クリック>SVNチェックアウト を選択します。

018.jpg


リポジトリのURLの欄に、file://localhost/c:/svn/repos/trunk を入力し、OKを押します。

019.jpg


それが済んだら、hoge.txtを作成し以下の内容で保存します。

A
B
C


同じように、hoge_conflict.txt、hoge_delete.txt、hoge_move.txt、hoge_copy.txtを作成します。

020.jpg


ファイルを作成し終わったら、それらのファイルを選択し、右クリック>TortoiseSVN>追加 を選択します。

021.jpg


022.jpg


023.jpg


以上で追加は終わりましたが、まだコミットをしていない状態ですのでソース管理上ではまだソースは追加されていません。

右クリック>SVNコミット を選択し、ソースの追加を確定します。

024.jpg


025.jpg


026.jpg


これで、作成したファイルがソース管理されるようになりました。

次はファイルを変更し、それをソース管理に反映する手順を学びます。

hoge.txtとhoge_conflict.txtファイルを開き、以下のように変更します。

A
b
c


変更後エクスプローラー上でF5を押します。すると以下のように変更したファイルに赤いマークが出ていると思います。これは、そのファイルが変更されている事を示しています。

027.jpg


次に、add_dirフォルダを作成し、その中にhoge_add.txtを作成します。

028.jpg


c:/srcをエクスプローラで開くと、add_dirには何もマークがでていません。ソース管理されていない状態ですので、これをソース管理に追加します。

030.jpg


次は削除を行ってみます。

031.jpg


これらの変更はまだソース管理上では確定していませんので、コミットして確定します。

032.jpg


033.jpg


034.jpg


ここまでの操作をログで確認する事ができます。

035.jpg


036.jpg

忘れられた鍛冶場」に『属性防具』と『スクロールクエスト』を実装!

■『属性防具』を「忘れられた鍛冶場」に実装。
  
「忘れられた鍛冶場」のマーラから『属性防具』が入手できるようになります。
『属性防具』は様々な属性効果等が付与された特別な防具です。

『属性防具』に付与された属性に応じて、装備可能な部族名の後に、「(火天)」「(氷天)」「(雷天)」のいずれかが表示されます。
  
TANTRA 2007-06-22


■『スクロールクエスト』を実装。
「忘れられた鍛冶場」に、特殊なアイテムを入手すると発生するクエストが実装されました。

ブログニュース最新100件 (06-22 15:18) [GIGAZINE]
男性が女性と言い争った時の勝率グラフ

「Dating(付き合っている間)」では勝率が50%あったものの、「Engagement(婚約中)」が近づくにつれて徐々に下がり、25%になっています。そして「Marriage Period(結婚期)」になると、最初の一部を除いて勝率はゼロに。結婚すると頭が上がらなくなる男性は多いということでしょうか。



ちなみに私の現在までの勝率は、






0%





です・・・。

japan.linux.com (06-21 17:53) [otpadmin] [developmenttool]
NECソフト、Eclipseプラグイン「J-alcedo」の日本語版Webサイトを開設

NECソフトは6月21日、同社が開発したオープンソースのリッチクライアントアプリケーション統合開発環境「J-alcedo(ジャルシード)」の日本語版Webサイトを開設したことを発表した。



なんか楽しそうなので暇なときにでも触ってみようってことでメモ。

CakePHP のおいしい食べ方 (06-21 11:54) [SDozono] [CakePHP Tips]
あのidex*ideaでもCakePHP開発記事がスタート
ネットビジネス情報ブログ『百式』さんの個人ブログ“IDEA*IDEA”でも、cakephpによる開発ブログがはじまっています。



私も今構想しているコミュニティサイトをcakephpで開発しようかなーと思っていたりします。

ただ、かなり大規模なものになるので中々手をつけるまでの気持ちになれずに悶々としております。
PHPフレームワーク「cakephp」を完全にSmarty対応させたパッチの配布が開始されました。

$php→rails (rails に憧れる phper のブログ)

bakeコマンドの代わりに、burnコマンドを利用することで、Smarty対応版のソースが生成されるようです。

bakeコマンドも以前のままで利用可能とのこと。

ただし、cake_1.2.0.5146alpha、Windows環境でしか確認していないということですので、その他の環境で利用する際にはバックアップを忘れずに。
CakePHPで高速Webアプリ開発|gihyo.jpにてcakephpの連載が始まりました。今回の連載では、cakephpの特徴がまとめられています。

私もPHPフレームワークは、Ethna、Maple、Mojaviを利用したことがありますが、Mapleは設定ファイルの記述が面倒に感じ、Ethnaは比較的面倒な設定は無いとはいえORマッパーが不十分で特定のDBにしか対応していない状況でした。しかし、それぞれのフレームワークには様々な良い点もありますが、私はcakephpをお勧めします。


習得までの時間が短い


まず1つ目に日本語に翻訳された優れたチュートリアルがあることです。筆者はCakePHPを始めるにあたって,「CakePHP プログラマーズ リファレンスガイド」の「付録 A. Cake ブログチュートリアル」をこなしました。CakePHPの入手からDBの設定,モデル,ビュー,コントローラの作成,バリデーションの追加といったWebアプリケーション開発で必要な作業を一通り体験することができます。


2つ目は標準のエラーメッセージがやけに親切なことです。解凍したパッケージをWebサーバーにそのままアップロードして動作させると,DBの接続情報が間違っているというメッセージが出ます。ここまでは普通ですが,モデル,ビュー,コントローラが足りないときはひな形となるPHPコードとファイルの設置場所のパスを示した画面が表示されるという親切ぶりです。これのおかげで行き詰まることなく習得初期の開発を進めることができました。


他にも細かいことですが,「日本語のCakePHPフォーラム」のトピックにノイズが少なく,書き込みに貼り付けられたPHPコードが綺麗に色付けされていたりとモチベーションを維持できる環境が整っていたことが挙げられます。



日本語の情報はまだまだ不足気味ですが、ブログチュートリアルを見て、実際同じように作りこむだけで基本的なものが学べますね。


設置が簡単かつ外部ライブラリに依存しない


CakePHPはパッケージをFTPでアップロードするだけで動作します。PHPが動作する標準的なレンタルサーバーであればたいてい動作するでしょう。また,PEARなどの外部ライブラリを一切必要としません。もちろん今までどおりPEARなどを利用することもできますので,使い慣れたライブラリを手放す必要はありません。




Webサーバーのドキュメントルートにフォルダごと置くだけで動作します。新しいフレームワークの勉強を始めるとき、とりあえず動かしてみたいと思うことがありますが、これが非常に簡単です。


PHP4と5の両方で動作する


多くのフレームワークはPHP4と5のどちらか専用だったり,バージョンによって動作対象が変わりますが,CakePHPはそのままでPHP4でも 5でも動作します。また,PHP6でも動作する予定となっています。ちなみにコアライブラリの中にmodel_php4.phpと model_php5.phpというファイルがあり,PHPのバージョンによってコードを分けている部分があることがわかります。




開発を行う際、環境によってはPHP4しか利用できなかったり、PHP5しか利用できない場合があります。それによって普段使っているフレームワークが利用できなくなることがありますが、cakephpではそれがありません。


病みつきになるActiveRecordパターンのO/Rマッパー


CakePHPのO/Rマッパー(オブジェクト志向における,オブジェクトとリレーショナルデータベースを関連付けするための仕掛け)はActiveRecordパターンを採用しており,SQL文を書くことなく非常に短い記述でレコードの抽出や書き換えが行えます。


さらにアソシエーション(関連付け)を記述することで,関連したテーブルの情報を自動的に取得できます。


たとえばブログシステムでエントリのIdをもとにエントリ内容と投稿者の情報とコメントとトラックバックを取得したいとき,アソシエーションを適切に設定しておけば「$this->Entry ->findById($id)」と書くだけで,すべての情報が連想配列となって返ってきます。筆者はこの便利さに病みつきになり,Railsの考え方の素晴らしさを実感しました。




確かに病み付きになります。cakephpの規約に沿ったテーブルであれば、検索、一覧表示、更新、登録機能が実装されたページをコマンドを実行するだけで作成できます。これを元にカスタマイズしていくことでDB周りの面倒な部分を大幅に省けます。


ビュー部分がピュアPHPである


CakePHPのMVCでいうビュー部分において,コントローラからセットされた値を表示するときは <?php echo h($title) ?>(hはhtmlspecialcharsの代替関数。CakePHPで予め定義されている)といったように,生のPHPコードを埋め込みます。


第二の言語といえるテンプレートエンジンの習得が不要なため,最小限の知識でビューを記述することができます。


また,正式にサポートされているわけではありませんがSmartyを利用することも可能なようです。




私としてはここが微妙な部分ではあるのですが・・・。HTMLがごたごたしているのは好きではないので、ある方が完全にSmarty対応させているようですので、そちらのほうが個人的には好きです。

$php→rails (rails に憧れる phper のブログ) - CakePHP 完全 smarty 化への道(2) ビフォーアフター

とまぁ、cakephpを利用した開発がやりたい・・・と思う今日この頃でした。
数日前からRubyの勉強を始めた。きっかけは、WEB+DB Vol.38で記事があったのと、CakePHPが思想を参考にしているからだ。

Rubyのインストール、Railsのインストールも簡単にできたのだが、DBやPHPもあわせて使用したいと思って色々探ってみたところ、「Instant Rails」なるものを発見した。

「Instant Rails」には以下のソフトウェアを一括で導入してくれる。

Ruby
Ruby on Rails
Apache
MySQL
PHP
phpMyAdmin



めんどくさがりな私なのでこういった一括導入ツールの存在は有難い。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。