Monthly Archives: 1月 2014

DN2820FYKHを買いました

三代目Jです。

nucのDN2820FYKHを買いました。Bay Trail-MのCeleron N2820を搭載していまして、安いながらもある程度の処理能力を期待出来ます。いろいろ試したい所ですが、とりあえず開封とセットアップ画像を載せます。

箱からして小さいです。小さい物好きにはこの段階でそそられます。

IMG_1607

本体。非常にコンパクト。

IMG_1596

裏蓋を外したところ。ここにHDDもしくはSSDをセットします。

IMG_1584

マウンタを外したところ。

IMG_1587

空いてるスロットにメモリ(D3N1600Q-L4G)をセット。DN2820FYKHは1枚のみです。

IMG_1588

MQ01ABD100を取り付けます。キッチリ奥まで差しましょう(最初差し込みが甘くて認識しなかった)。

IMG_1592

裏蓋を閉めます。何故か本体に対してシールが横向き。

IMG_1593

起動画面。凄いシンプル。

IMG_1605

BIOS画面。ちょとカッコイイ。

IMG_1602

 

とりあえずUbuntu Server 13.10を入れて正常に動いています(Wifiは未検証)。このCPUだと64bitでも動きます。

操作感はCLIでも若干モッサリしますが、CPUクロックが532MHzまで落ちているのでまあ当然でしょう。

消費電力やらその他もろもろはまた後日にでも。

追記:消費電力とベンチマークを計測しました

いまどきのPHPコーディング

こんにちは、括弧つけるのが格好いいJです。

この場合、特にまずいことは何もない。

が、後で誰かがもう1行追加するかもしれない。

こうなると、、

ということで、
今回は、いまどきのPHPコーディング規約などをまとめてみました。

 

PHPコーディング規約の種類

PSR

PSRとは、PHP-FIGによってまとめられている規約
PHP Framework Interop Group
には、PHPの3大フレームワークと呼ばれているCakePHP、Symfony、Zend Frameworkや
幅広い分野の関係者が参加しています。入ってないのは、CodeIgniterくらいですかね

PEAR

Zend Framework

CakePHP

Symfony2

 

ざっくりみると、

  • .php付けてファイルパスとします
  • クラス名、メソッドはキャメル記法で書きます。数字の利用は非推奨
  • PHPファイルの改行はLFで
  • 制御構造(if/else/elseif)中括弧をつけます
  • 制御構文のキーワード(if、else、for、while、…)と開き丸括弧との間には、空白を1つ開けます
  • 演算子(==、&&、…)の前後には空白を1つ開けます
  • else if はだめ、elseifを使おう
  • PHPコードのみの場合は終了タグは不要
  • インデントには、空白4つを使い、タブを使ってはなりません
  • 配列、カンマの後はスペースを入れます

 

などなどが、推奨のようです。

 

PHPでコーディング規約チェックツール

PHP-CS-Fixer

 

インストール方法


wget http://cs.sensiolabs.org/get/php-cs-fixer.phar -O /usr/local/bin/php-cs-fixer

実行方法

php /usr/local/bin/php-cs-fixer fix /path/to/project --level=psr2

  • インデントが4spaceに
  • クラス宣言の開始ブレースが次行に
  • PHP開始タグが <? から <?php に
  • return文の前行を一行開ける

自動で修正してくれるので楽です。

 

まとめ

フレームワークを利用の開発の場合は、
必ず各フレームワークの規約に従ってください、動かないので。

とくに利用しているフレームワークの規約がないなら、
いまどきのPHPコーディングとしては、 PSR-2 に従っておけばよさそうです。
同意しかねるところもあるかもしれませんが、、

これらの規約を知ることで、自分の書き方を見直したり、他の人を説得するのに使えると思います。

 

ComposerでPSR-4仕様のオートロードを設定する

雪が降ったら雪見酒がしたい。yukiです。

昨年の3日にPSR-0で提言されていたオートローダーの仕様を、現状に合わせてアップデートしたPSR-4が承認されました。

PSR-4のクラス名仕様

説明の中で完全修飾クラス名というのが出てきますが、次のような定義になっています。

  • 完全修飾クラス名はベンター名のネームスペースをトップレベルに持っていること。
  • 完全修飾クラス名は1つ以上のサブネームスペースを持つことができる。
  • 完全修飾クラス名の最後はクラス名になっていること。
  • アンダースコアはディレクトリの区切りではなく、そのまま名前として使用される。
  • 完全修飾クラス名は、アルファベットの大小を好きなように組み合わせることができる。
  • クラスを参照する時はアルファベットの大小を区別すること。

さきほどの完全修飾クラス名の定義を書き直すと次のようになります。

 

Composerのオートロード設定

Composerも今年の3日にPSR-4へ対応されました。
https://github.com/composer/composer/commit/b23742e30c88e288db70685cfe2022f6b120c75b

PSR-0の頃の設定を見比べてみます

psr-0psr-4以外記述方法に違いはありませんが、設定値の意味が変わっています。

 

PSR-0とPSR-4のクラスファイルの解決方法の違いについて

PSR-0の場合

  • アンダースコアとネームスペースの区切りがディレクトリの区切りとなる。
  • 指定したネームスペースがベースディレクトリ内に存在する。
  • ファイル名は<クラス名>.phpとなる。

PSR-4の場合

  • ネームスペースの区切りがディレクトリの区切りとなる。
  • 完全修飾クラス名の指定したネームスペースプレフィックス以降がベースディレクトリ内に存在する。
  • ファイル名は<クラス名>.phpとなる。

 

先程の設定例を適用すると次の構造に対応します。

完全修飾クラス名 ファイルパス
\Menue\Foo psr0/lib/Menue/Foo.php
\Menue\Test\Bar psr0/lib/Menue/Test/Bar.php
\Menue\Baz psr0/lib/Menue/Test/Baz.php
\Menue\Hoge psr4/lib/Hoge.php
\Menue\Test\Fuga psr4/tests/Fuga.php