最近のDevConf 2012カンファレンスのトレースに続いて、個人的に最も興味深く有用であると感じたノートからノートを共有したいと思います。 おそらく誰かがこのすべてをよく知っています。 レポートは複数の部屋で同時に提示されたため、すべての部屋を訪問することは不可能であったため、コメントの追加内容を読みたいと思います。
主に興味を持ったトピックは次のとおりです。
-システムの展開と継続的統合(継続的統合)
-PHP 5.4、PHPUnit、Yii
-JavaScriptでのテスト
システム展開と継続的統合(CI)
システムの展開は、会議の一般的なトピックであることが判明し、3または4つのレポートがありました。 私自身、このように説明しました。たとえば、継続的な統合サーバーがインストールされます。たとえば、毎晩リポジトリからプロジェクトを収集し、テストを実行し、潜在的な妨害のコードをチェックしてレポートを送信します。 午前中は、このレポートを見て、すぐにプロジェクトの進捗状況を確認します。 もう1つの利点は、いつでもプロジェクトの完成した作業バージョンをマネージャーに示す機会、および準備が整っているものと見えないものを明確に理解できることです。
継続的統合サーバーとして次のものが挙げられました 。
- ジェンキンス
を含む多くのプラグインがあります 最も重要なプラグインはチャック・ノリスです)
- チームシティ
jenkinsよりも優れたWebインターフェイス
-phpundercontrol
-他の何か
プロジェクトビルドシステムとして、次を使用できます。
-bashスクリプト
- カピストラーノ
Ruby用に作られていますが、PHPにも使用できます。 Rubyの特別な知識は必要ありません。 symfonyにはcapifonyの特別なバージョンがあります。
-phing
PHPで書かれた、多くの既製のタスクがあります。 ビルドはxmlファイルとして記述されます。 欠点のうち、デフォルトの配信からロールバックする可能性がないことを聞きました(自分で書く必要があります)。
PHPコードのテストには、 PHPUnitが標準的に使用されます。 傍観者として、彼らはCodeceptionについても話しました。それはテスターにより焦点を合わせているということです(それについての投稿がありました)
GIVEN-WHEN-THENテンプレートを使用してテストメソッド自体を記述する(つまり、これらのブロックをコメントで直接叩く)のが便利です。
function testMethodAbc() { //given $a = new Object(); $a->x = 123; //when $a->methodAbc(); //then $this->assertTrue($a->x); }
PHPコードを分析するためのいくつかの優れたツールがあり、ビルドまたはコミット時に自動的に実行することもできます。
- リント (構文検証)
-PHP_CodeSniffer (コーディング標準への準拠)
-phploc (コメント数などのさまざまな統計)
-PHP_Depend (コード分析、たとえば、接続クラスなどの異なる係数の計算)
-PHP_Mess Detector (コード内の潜在的な妨害を検索)
-PHP_Code Coverage (テストによるコードカバレッジ、PHPUnitに付属)
-PHPコピー/貼り付け検出器 (自分で推測:))
データベースの展開のアカウントでdbDeployを推奨しました 。 移行が使用されますが、一方向にのみ記述されます。 原則として、逆の移行を記述することは常に可能であるとは限らないため(たとえば、テーブルを削除するとき)に含めます。 最初に作業ベースのコピーをダンプした後に、テストサーバーでベース展開をテストすることをお勧めします。 エラーの原因はデータそのものである可能性があります。
さて、 プロジェクトの展開シーケンス自体については、 次のスキームが役に立ちました。
1.ソースを新しいフォルダーに解凍します
2.依存ライブラリをプルアップする
3.ロール更新データベース
4.新しいバージョンへのシンボリックリンクを投げる
5.ユーザーデータへのシンボリックリンクをスローする
6. *テストを実行します。 エラーの場合-ロールバック。 (テストサーバー用)
7.新しいバージョンのリリースについてユーザー/マネージャーにメールを送信する
PHP 5.4の新機能
PHP 5.4 = PHP6.0の作者として-Unicodeが言った。
主なイノベーションは次のとおりです。
-不純物(特性)、
-配列には[]を使用します
-ビルトインWebサーバー
また、マイナーリリース5.4.5および5.4.6が今後2か月以内にリリースされることを知っておくと役に立ちました。
興味深い質問がありました:
Q1:Unicode ...いつ?
A1:1年になることもあれば、10年になることもあれば、決してなくなることもありません。
Q2:APCをPHPに統合することはどうですか?
A2:私たちはそれに取り組んでいますが、APCは時々十分に安定していません..
Yii / yii2
フレームワークのコア開発者の一人であるAlexander Makarov( SamDark )と話をするのは面白かったです。 Yii2に関連する重要な質問:
-Yii2のリリース日は秘密にされています
-チームには現在、3人のアクティブな参加者とgithubコミュニティがあり、全員がプロジェクトのサポートと開発に招待されています
-Yii2では、ActiveRecordは強力な変更を受け、モデルとQueryオブジェクトに直接分割され、既存のDbCriteriaを置き換えます
-HAS_ONEとHAS_MANYの2つのリンクのみが残ります。 親の関連モデルの自動保存を実装することを約束します
-twitterブートストラップがインターフェースに表示されます
-まだいくつかの改善がありましたが、私はそれらを覚えていませんでした
JSでのテスト
JSのテストには、Yahooの特別なフレームワークYUI Test Frameworkがあります。 これはすべて、Selenium、つまり 追加のドライバーをインストールする必要があります。 jsコードのコードカバレッジを計算することもできます。
サーバーからのajax応答をシミュレートするために、 Sinon.jsが推奨されました。 その中で、さまざまな回答オプションを非常に柔軟に構成できます。
小規模なプロジェクトの場合、彼らはjsTestDriverをより軽量なソリューション(Seleniumは必要ありません)として推奨しましたが、機能が豊富ではありませんでした。
まとめ
一番下の行で私に起こったことはそれだけです。
この会議は非常に有益で有益だったと思います。 追加するものがある場合-書き込みます。
休憩中のおいしいケーキをくれたすべてのスピーカーと主催者に感謝します。
UPD:
いくつかのレポートと写真へのリンク:
1. PHPパフォーマンス(Rasmus Lerdorf) ( SamDarkに感謝、矢印を反転)
2. Vorotilin DmitryがSprocketsについて語る (@ py3uに感謝)
3. Egor KhomyakovがOAuthの脆弱性について語ります (@ py3uに感謝)
4. いくつかの写真と会議レポート ( zizopに感謝)