CMSビズに参加しました

先日、6月24日に開催されたCMSビズに参加してきました。
CMSの紹介、導入事例などとても参考になりました。
開催時間が16:00からということで、内容的にはビジネスよりな感じでした(^-^)

[メモ]MyNETS2で開発。

MyNETS2

まずはSKINまわりから。

今搭載されてる構造を変更。
ベースとなるCSSファイル+画像ファイルをdefaultとして設置する。
モジュールごとにCSSファイルを設置

モジュールのCSSファイルに、ベースとなるCSSを読み込ませて基本となるCSSの設定にする。
テーマごとに、フォルダを切り替えたりなんてことも考えたんだけど、
ZIPファイルでテーマファイルを別の場所に保存しておいて、/theme/になるように展開したり、
管理機能からCSSを編集したり、フォルダごとzipに固めてバックアップをとったりできるとよさげだなと思ったので、/theme/以下に1テーマってことにしてみる。

基本SKIN

/theme/default/main.css
/theme/default/css/xxxx.css
/theme/default/images/xxxxx.jpg

モジュール別のスキン

/theme/{モジュール名}/css/main.css
/theme/{モジュール名}/css/xxx.css
/theme/{モジュール名}/images/xxxx.jpg

/theme/{モジュール名}/css/main.cssの中身はこんな感じ

@charset "utf-8";
/* CSS Document */

/*基本CSSを取得
--------------------------------*/
@import url("../default/main.css");

…以下cssフォルダの中のパーツ分けしたCSSファイルを順次import
1モジュール毎にCSSを設定。
基本となるSKINの情報はdefaultから取得する

共通部品のjavascript、javascriptライブラリ等

/shared/js/xxxx.js等
/shared/js/{ライブラリ名}/パーツ

ざっくりとしたCSS用の図
css1.jpg

testing

ヘッダフッタおよび基本的な部分の設定をして、とりあえずの作業を終了。
kunitsujiさんからコーディング規約の資料を教えていただいたので、コーディング規約に沿うように、コードを整頓。
そろそろ個人用のナンデモSVNからMyNETS2用のSVNに独立させるべきかな・・・・・

メモ:

  • MyNETS2 r766がベース。
  • 一応3カラムの構造も用意したが、2カラムが良さそう。
  • bbsとdiaryはまだ入れ物だけのようなので削除
  • 携帯ページと同時にすすめていきたいので、Viewの書き方、controllerの書き方を模索
  • 会員の新規登録あたりを充実させる
  • どの程度の粒度でモジュールにするか、コントローラで分けるかを考える

第1回Redmine勉強会に参加しました。

Ruby
Redmine勉強会に参加しました。

実際に運用をしている話、運用をはじめるために行った事等、具体的な話が多く、大変興味深い話が多かったです。

プラグインの紹介、プラグインの探し方の話題等。
懇親会では、TRACのプラグインは作りにくいが、Redmeinのプラグインは作りやすい。
TracがDjangoでできれいれば良かったのにといった話があり、実際に使いながら拡張をしていける手軽さも大事だなと再確認しました。

RedmineのPHP移植版であるCandycaneを導入すると、PHPがわかる私には拡張がしやすく、redmineを使うと、拡張をしたいがために、rubyを勉強するという効能がありそうです。

興味深かったのは、wikiの文法について不便だという意見が多かった事。
また、redmainではAjaxがたくさん使われているため、検索結果のURLをメール等に貼付けての情報の共有が難しい事でした。
この部分は、TRACのほうが便利かもしれません。

redmineの機能を使い切っているという話よりは、使う機能を限定している。あまり使わない機能もあるといった話が多かったです。
沢山情報をINしやすいからこそ、整理が追いつかなければ情報量によって混乱もあるのだなぁということを再確認。

とても興味深い勉強会でした。
次回もあればぜひ参加したいと思います。

今日はRedmine勉強会

今日はRedmine勉強会が開催されます。
私は普段、Subversion+Tracという環境で開発だったり、コーディングだったりデザインだったりをしてますが、最近はgit+Redmineなんて環境で環境を作っていらっしゃる方の話をよく聞きます。
とても楽しみ♪

redmineのことを知りたくて買った本です。これのsubversion本が非常にすばらしかったことから、trac本も購入済み。

サーバにredmineが動く環境を作ってみました。
tracだと、gitに対応していないため、今後は切り替えていくのもありかなぁと思っています。
(もっとtracをがっつり使うぞ!という気持ちもありますが・・・(^-^;))

資料
★git勉強会・動画 2008.10.7

[メモ]今日のMyNETS2でCIUnit

MyNETS2

modules以下のmodel,library,helperのテストが、CIUnitでできるようになりました。
modules以下のControllerとviewはまだphpunitが実行できる状態にまで辿りつけていません。

adminモジュールのModel_adminで、少しはまりました。

$this->_user_id = $this->CI->session->userdata('user_id');

の処理を通過させるために、setUp()の中で、次のコードの記入が必要でした。

adminモジュールのModel_adminの31行目
$this->CI->session->userdata(‘user_id’);で、user_idを渡している箇所のために、記載。
ひょっとしたらsessionではなく違うカタチでuser_idを渡せれば、もっと良いのかも。

$this->CI->load->file(APPPATH.'libraries/session/MYNETS_Session.php');
$this->CI->session = new MYNETS_Session;

実行をすると次のように表示されます。
Warningは出ますが、テストは実行できます。

$ phpunit testSomeModel.php 

PHPUnit 3.3.16 by Sebastian Bergmann.

<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>
<p>Message:  Cannot modify header information - headers already sent by (output started at /usr/share/pear/PHPUnit/Util/Printer.php:168)</p>
<p>Filename: libraries/Session.php</p>
<p>Line Number: 663</p>

</div>.

Time: 0 seconds

OK (1 test, 0 assertions)

追記:2009.06.12 3:19
modules以下のcontrollerはとりあえず諦めようかなという気分です。
APPPATH.controller/以下のcontrotterもOUTPUTがあるかどうかのテストだけみたいだし・・・(言い訳)

modulesのmodelのテストで、

$this->_user_id = $this->CI->session->userdata('user_id');

が使われている場合の処理について、前回のやり方だと、AllTests.phpの実行時にエラーが発生するので、次のように修正。

if(!isset($this->CI->session)){
    $this->CI->load->file(APPPATH.'libraries/session/MYNETS_Session.php');
    $this->CI->session = new MYNETS_Session;
}
$this->CI->session->userdata('1');

なんだかもう少しな気がしてきたよ。

phpカンファレンス2009

phpカンファレンス2009

公式サイトがオープンしました。
http://phpcon.php.gr.jp/2009/

記念すべき第10回にふさわしく,
* Facebook 開発者 Brian Shire 氏
* symfony 開発者 Fabien Potencier 氏
* Taiwan PHP User Group の Finjon Kiang 氏

など豪華スピーカーを迎えて開催いたします!
PHP カンファレンス 2009 | 2009年9月4日・5日開催 日本PHPユーザ会主催

すっかりサボってしまっていた、smart.fmを再開しようと思います(><)

[メモ]構造を調べるツール

20090607.jpg

MyNETS2(というよりもCodeIgniter本体なんですが・・・)のコードを読み始めました。
全体像を想像しつつ、ノートに手書きでメモを書いてるのですが、どこまで読んだのかとか、メモを取るのに軸が欲しくなりました。
・・・・で使ってみたのが解析ソフトです。

GraphvizとDoxygenというソフトをWindows環境にインストールしました。
参考にさせていただいたサイトは私がインストールしたバージョンよりも少し古い情報のようですが、とても参考になりました。

参考にさせていただいたサイト
http://skazami.web.infoseek.co.jp/tools/Graphviz_Doxygen.htm

ためしに、破壊中(?)のMyNETS2を解析してみた結果のキャプチャです。(わりと大きい画像ファイルです)
CIUnitが入ったままなので、CIUnitも一緒に解析されています。
Class階層図がテキストリンクと画像が生成されたのがとても嬉しくて、キャプチャをとってみました。
生成される階層図の画像は、フォントサイズがあまりに小さかったので、設定画面で大きくしています。

[メモ]CodeIgniterの情報を検索してみる

CodeIgnigter

まだまだ勉強不足の自分自身のために、検索結果をメモ〆(。。)
まだまだ使い切れてないなぁを自覚中。

MyNETS2のモジュールになることによってファイルが切り分けられて見通しがとても良くなる仕組みはとても素敵だけれども、CodeIgniter本体のバージョンアップに対しても自力で対応できるようにまでなりたい。
がんばらねばデス。

DBの設定等の盲点
http://blog.promob.jp/fri/2009/04/codeigniter-2.html

codeigniterとxajaxの話題
http://hain.jp/index.php/tech-j/2006/07/24/p29
xajaxというのは使ったことないのだけども、
以前にさわったcakephp1.1よりもCodeIgniter1.7.0のほうがajaxやjavascriptを組み込みやすかったように思う。
ただ、cakephpも半年ぐらいしか触ったことが無いので、言い切ってしまってよいかどうかはわからない・・・(汗

twitter @CodeIgniter
http://twitter.com/CodeIgniter
いまさらながらフォローをしました♪

CIUnitで素の状態のCodeIgniterに対してはテストが行えるようになりました。
ただ、MyNETS2に対してのソレは、MyNETS2の特徴とも言える携帯対応の部分をコメントアウトしたと、内部を壊しつつの対応で、やっとのことmodules以外のテストが出来るようになっただけです。
基本的なことがわかっていないので、modules以下をどうテストを書いてよいかがわからない。
CIUnitは本当に良く出来ていて、Controllreのテスト、modulesのテストととても書きやすくできています。
modulesでも同等にわかりやすく書けるべきで、それがどうやれば実装できるのか・・・・・