LaravelのHomesteadにv8jsが使えるようにする。
Laravelは公式でHomesteadと呼ばれるVagrantが準備されています。
基本的なものはインストールされているのですが、それ以外のものをインストールしようとした時にハマった話です。。
Homesteadのインストール方法は Laravel Homestead - Laravel - The PHP Framework For Web Artisans を参考にして下さい。
ある程度準備が完了すると、~/.homesteadが出来ると思います。
今回は ~/.homestead/after.sh にv8jsインストール用のシェルスクリプトを記載します。
以下をコピペ
#!/bin/sh sudo apt-get -y install g++ cd /tmp if [ ! -e depot_tools ]; then git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git fi export PATH=`pwd`/depot_tools:"$PATH" if [ ! -e v8 ]; then fetch v8 cd /tmp/v8 git checkout 3.32.6 gclient sync make native library=shared snapshot=off -j8 sudo mkdir -p /usr/lib /usr/include sudo cp out/native/lib.target/lib*.so /usr/lib/ sudo cp -R include/* /usr/include sudo ar -M <<SCRIPT create /usr/lib/libv8_libplatform.a addlib out/native/obj.target/tools/gyp/libv8_libplatform.a save end SCRIPT fi if ! pecl list | grep -q v8js; then sudo pecl install v8js-1.0.0 << END_OF_INPUT END_OF_INPUT fi if [ ! -e /etc/php/mods-available/v8js.ini ]; then echo "extension=v8js.so" > /etc/php/mods-available/v8js.ini sudo ln -s /etc/php/mods-available/v8js.ini /etc/php/7.0/cli/conf.d/20-v8js.ini sudo ln -s /etc/php/mods-available/v8js.ini /etc/php/7.0/fpm/conf.d/20-v8js.ini fi sudo service php7.0-fpm restart sudo service nginx restart
詳細な説明は省きます。(ちょっとifの分岐がまだ完全じゃないです。)
VagrantとChefの導入
去年の末辺りからVagrantとChefにハマっているので、まとめの意味を込めて記事にしていきます。
ちなみにMACの前提で話をしますので、Windowsの方は脳内補完してください。
導入編
1. Vagrant導入
Download Vagrant - Vagrant
ここにインストーラーがあるのでコレで入れたほうが良いです。
2. Chef導入
Chef Development Kit | Chef Downloads | Chef
Chefもインストーラーがあるのでコレで入れたほうが良いです。
(Berkshelfを使うことになるから入れといたほうが良いです。)
導入はこれだけで完了です。
ターミナルを開いて
$ vagrant -v Vagrant 1.7.1 $ chef -v Chef Development Kit Version: 0.3.5
とか表示されていればOKです。
次回は、開発環境作成に入ります。
SQL整形サービスをバージョンアップ
phpcpdで重複コードを調査する。
最近、コピペで開発しているプログラマーの風上にも置けない人が社内に増えてきたので、phpcpdを入れて重複コードをチェックするようにしてみました。
phpcpdをcomposerでインストールして利用してみます。
(composerはインストールされているものとします。)
インストール
まずcomposerでインストールします。
$ composer global require 'sebastian/phpcpd=*'
コレで ~/.composer にインストールされたと思います。
もし、パスを通していない場合は、~/.bashrc などに
export PATH="$PATH:$HOME/.composer/vendor/bin"
と追記してパスを通しておきましょう。
gemとほとんど同じ使い方が出来るので、超便利です。
使い方
使い方は簡単で、
$ phpcpd ./project
とディレクトリを指定するだけで、重複コードを確認してくれます。
オプション
使いそうなやつだけ抜粋してみました。
--names カンマ区切りでファイル名を指定(デフォルトは*.php) --names-exclude カンマ区切りで除外のファイル名を指定 --exclude ディレクトリで除外 --log-pmd 結果をログに書き込む --min-lines 同一の行と判断する最小行数(デフォルトは5) --fuzzy 曖昧でチェックするのかな? --progress プログレスバーを表示する。 --help (-h) ヘルプを表示 --verbose (-v|vv|vvv) 詳細に表示。(コードまで表示される) --version (-V) バージョン表示
まとめ
jenkinsと連携して常にチェックするのが一番です。
wordpressのプラグインを作ってみて、クソだと思ったこと。
初めてwordpressのプラグインを作ってみたのですが、ちょっといただけない所が多数あったので、愚痴代わりにメモっておきます。
グローバルな関数が多い。
これは、、関数とか被ったらどうするんですかね?
せめてクラスでラッピングして欲しいです。
プラグインのひな形が無い。
「MVCでこのように作ればキレイに出来るよっ!!!」的な指針があると助かります。
そこらへんは自由にやって頂戴って感じなんでしょうけど、他のプラグインを修正となった時に、何処に何が有るかよくワカラナイです。
しかもそのプラグインもオブジェクト化されていないケースがあるので、overrideとか出来ずに直接プラグインを修正してしまいます。orz
wordpressをビルドインサーバーで動作させる。
wordpressをビルドインサーバーで動作させます。
メリットとしては、ナウい開発ができます。rails的な開発ですね。
デメリットとしては、あくまでも開発用のサーバーなので、本番とはかなり環境が違うということ、
開発自体はビルドインサーバーで良いですけれど、リリースする際は一度Apacheで動作確認してリリースしたほうが良いでしょう。
まず、ファイルを作成します。wordpressを解凍した直下に作成すれば良いです。
<?php $root = $_SERVER['DOCUMENT_ROOT']; chdir($root); $path = '/'.ltrim(parse_url($_SERVER['REQUEST_URI'])['path'],'/'); set_include_path(get_include_path().':'.__DIR__); if(file_exists($root.$path)) { if(is_dir($root.$path) && substr($path,strlen($path) - 1, 1) !== '/') $path = rtrim($path,'/').'/index.php'; if(strpos($path,'.php') === false) return false; else { chdir(dirname($root.$path)); require_once $root.$path; } }else include_once 'index.php';
このファイルを作成した後に、コンソール画面で、
$ php -S localhost:3000 route.php
とコマンドを叩くと起動します。
簡単ですね。
AngularJSの勉強用リンク集
すぐできる AngularJS
http://8th713.github.io/LearnAngularJS/#/
AngularJS の MVC 解説
http://qiita.com/zoetro/items/a45dbc18bb2b22e944b2
ベストプラクティス
https://github.com/mgechev/angularjs-style-guide/blob/master/README-ja-jp.md (公式)
http://qiita.com/icoxfog417/items/2ac773c33a8b34288551
AngularJS Directive なんてこわくない(その1)
http://angularjsninja.com/blog/2013/11/20/angularjs-custom-directives/
AngularJS Directive なんてこわくない(その2)
http://angularjsninja.com/blog/2013/11/22/angularjs-custom-directives/
AngularJS Directive なんてこわくない(その3)
http://angularjsninja.com/blog/2013/11/27/angularjs-custom-directives/
AngularJS Directive なんてこわくない(その4)
http://angularjsninja.com/blog/2013/11/29/angularjs-custom-directives/
AngularJS のデータバインドを支える $watch
http://angularjsninja.com/blog/2013/12/13/angularjs-watch/
$watchと$watchの中間的な位置付けの$watchCollection
http://angularjsninja.com/blog/2013/12/17/angularjs-watchcollection/