Vagrant mountエラー

vagrantでupとかreloadとかすると、いつも下記のように最後にエラーがでる。


Installing the Window System drivers[FAILED]
(Could not find the X.Org or XFree86 Window System.)
An error occurred during installation of VirtualBox Guest Additions 4.3.6. Some functionality may not work as intended.
In most cases it is OK that the "Window System drivers" installation failed.
[default] Configuring and enabling network interfaces...
[default] Mounting shared folders...
[default] -- /vagrant
Failed to mount folders in Linux guest. This is usually beacuse
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` /vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` /vagrant /vagrant

まさしく一緒のエラー発見。vagrantでmountエラーの解決方法

$ ssh centos65
Last login: Wed Feb 26 02:03:17 2014 from 10.0.2.2
[vagrant@vagrant-centos65 ~]$ sudo /etc/init.d/vboxadd setup
Removing existing VirtualBox non-DKMS kernel modules       [  OK  ]
Building the VirtualBox Guest Additions kernel modules
The headers for the current running kernel were not found. If the following
module compilation fails then this could be the reason.
The missing package can be probably installed with
yum install kernel-devel-2.6.32-431.el6.x86_64

Building the main Guest Additions module                   [FAILED]
(Look at /var/log/vboxadd-install.log to find out what went wrong)
Doing non-kernel setup of the Guest Additions              [  OK  ]

むーなんか失敗した。yum install kernel-devel-2.6.32-431.el6.x86_64ってやっても無理。
vagrant で共有フォルダのマウントに失敗するときの対処
Vagrant で共有フォルダが使用できなくなったので解決メモ

これか、GuestAdditions versions on your host (4.3.6) and guest (4.3.4) do not match.

$ vagrant plugin install vagrant-vbguest
Installing the 'vagrant-vbguest' plugin. This can take a few minutes...
Installed the plugin 'vagrant-vbguest (0.10.0)'!
$ vagrant reload
[default] Attempting graceful shutdown of VM...
[default] Clearing any previously set forwarded ports...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Machine booted and ready!
GuestAdditions versions on your host (4.3.6) and guest (4.3.4) do not match.
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
Setting up Install Process
No package kernel-devel-2.6.32-431.el6.x86_64 available.
Package gcc-4.4.7-4.el6.x86_64 already installed and latest version
Package 1:make-3.81-20.el6.x86_64 already installed and latest version
Package 4:perl-5.10.1-136.el6.x86_64 already installed and latest version
Nothing to do
Copy iso file /Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso into the box /tmp/VBoxGuestAdditions.iso
Installing Virtualbox Guest Additions 4.3.6 - guest version is 4.3.4
Verifying archive integrity... All good.
Uncompressing VirtualBox 4.3.6 Guest Additions for Linux............
VirtualBox Guest Additions installer
Removing installed version 4.3.6 of VirtualBox Guest Additions...
Copying additional installer modules ...
Installing additional modules ...
Removing existing VirtualBox non-DKMS kernel modules[  OK  ]
Building the VirtualBox Guest Additions kernel modules
The headers for the current running kernel were not found. If the following
module compilation fails then this could be the reason.
The missing package can be probably installed with
yum install kernel-devel-2.6.32-431.el6.x86_64

Building the main Guest Additions module[FAILED]
(Look at /var/log/vboxadd-install.log to find out what went wrong)
Doing non-kernel setup of the Guest Additions[  OK  ]
Installing the Window System drivers[FAILED]
(Could not find the X.Org or XFree86 Window System.)
An error occurred during installation of VirtualBox Guest Additions 4.3.6. Some functionality may not work as intended.
In most cases it is OK that the "Window System drivers" installation failed.
[default] Configuring and enabling network interfaces...
[default] Mounting shared folders...
[default] -- /vagrant
Failed to mount folders in Linux guest. This is usually beacuse
the "vboxsf" file system is not available. Please verify that
the guest additions are properly installed in the guest and
can work properly. The command attempted was:

mount -t vboxsf -o uid=`id -u vagrant`,gid=`getent group vagrant | cut -d: -f3` /vagrant /vagrant
mount -t vboxsf -o uid=`id -u vagrant`,gid=`id -g vagrant` /vagrant /vagrant

また失敗。。意味不明。

ついに発見!Vagrant BoxのGuest Additonsのアップデート方法

おお成功した!!!しかもchefまで有効になってるっぽい。ディレクトリも共有されている。
http://192.168.33.10/でブラウザでみられるし、あとは共有ディレクトリにシンボリックリンクはってみよう。

$ vagrant reload
[default] Attempting graceful shutdown of VM...
[default] Clearing any previously set forwarded ports...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding ports...
[default] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Machine booted and ready!
GuestAdditions versions on your host (4.3.6) and guest (4.3.4) do not match.
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.iij.ad.jp
 * epel: ftp.iij.ad.jp
 * extras: ftp.iij.ad.jp
 * updates: ftp.iij.ad.jp
Setting up Install Process
Package gcc-4.4.7-4.el6.x86_64 already installed and latest version
Package 1:make-3.81-20.el6.x86_64 already installed and latest version
Package 4:perl-5.10.1-136.el6.x86_64 already installed and latest version
Resolving Dependencies
--> Running transaction check
---> Package kernel-devel.x86_64 0:2.6.32-431.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package              Arch           Version                 Repository    Size
================================================================================
Installing:
 kernel-devel         x86_64         2.6.32-431.el6          base         8.7 M

Transaction Summary
================================================================================
Install       1 Package(s)

Total download size: 8.7 M
Installed size: 24 M
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : kernel-devel-2.6.32-431.el6.x86_64                           1/1 
  Verifying  : kernel-devel-2.6.32-431.el6.x86_64                           1/1 

Installed:
  kernel-devel.x86_64 0:2.6.32-431.el6                                          

Complete!
Copy iso file /Applications/VirtualBox.app/Contents/MacOS/VBoxGuestAdditions.iso into the box /tmp/VBoxGuestAdditions.iso
Installing Virtualbox Guest Additions 4.3.6 - guest version is 4.3.4
Verifying archive integrity... All good.
Uncompressing VirtualBox 4.3.6 Guest Additions for Linux............
VirtualBox Guest Additions installer
Removing installed version 4.3.6 of VirtualBox Guest Additions...
Copying additional installer modules ...
Installing additional modules ...
Removing existing VirtualBox non-DKMS kernel modules[  OK  ]
Building the VirtualBox Guest Additions kernel modules
Building the main Guest Additions module[  OK  ]
Building the shared folder support module[  OK  ]
Building the OpenGL support module[FAILED]
(Look at /var/log/vboxadd-install.log to find out what went wrong)
Doing non-kernel setup of the Guest Additions[  OK  ]
Installing the Window System drivers[FAILED]
(Could not find the X.Org or XFree86 Window System.)
An error occurred during installation of VirtualBox Guest Additions 4.3.6. Some functionality may not work as intended.
In most cases it is OK that the "Window System drivers" installation failed.
[default] Configuring and enabling network interfaces...
[default] Mounting shared folders...
[default] -- /vagrant
[default] -- /tmp/vagrant-chef-1/chef-solo-2/roles
[default] -- /tmp/vagrant-chef-1/chef-solo-1/cookbooks
[default] -- /tmp/vagrant-chef-1/chef-solo-3/data_bags
[default] Running provisioner: chef_solo...
Generating chef JSON and uploading...
Running chef-solo...
[2014-02-26T03:03:37+00:00] INFO: Forking chef instance to converge...
[2014-02-26T03:03:37+00:00] INFO: *** Chef 11.10.4 ***
[2014-02-26T03:03:37+00:00] INFO: Chef-client pid: 6981
[2014-02-26T03:03:37+00:00] INFO: Setting the run_list to ["recipe[lamp]"] from JSON
[2014-02-26T03:03:37+00:00] INFO: Run List is 
] [2014-02-26T03:03:37+00:00] INFO: Run List expands to [lamp] [2014-02-26T03:03:37+00:00] INFO: Starting Chef Run for vagrant-centos65 [2014-02-26T03:03:37+00:00] INFO: Running start handlers [2014-02-26T03:03:37+00:00] INFO: Start handlers complete. [2014-02-26T03:03:43+00:00] INFO: package[httpd-devel] installing httpd-devel-2.2.15-29.el6.centos from base repository [2014-02-26T03:03:53+00:00] INFO: package[php-devel] installing php-devel-5.3.3-27.el6_5 from updates repository [2014-02-26T03:04:00+00:00] INFO: package[php-mbstring] installing php-mbstring-5.3.3-27.el6_5 from updates repository [2014-02-26T03:04:07+00:00] INFO: package[php-mysql] installing php-mysql-5.3.3-27.el6_5 from updates repository [2014-02-26T03:04:14+00:00] INFO: service[mysqld] enabled [2014-02-26T03:04:16+00:00] INFO: service[mysqld] started [2014-02-26T03:04:16+00:00] INFO: Chef Run complete in 38.993570955 seconds [2014-02-26T03:04:16+00:00] INFO: Running report handlers [2014-02-26T03:04:16+00:00] INFO: Report handlers complete

capistranoのバージョン戻す

capistrano3.0.0以降は結構色々変わるらしく、勉強工数が必要なのと、今まで全く問題なかったのでバージョン戻してみることにした。3.0.1にアップデートしたらエラーだらけになったので。

sudo gem install capistrano -v 2.5.5
sudo gem uninstall -v 3.0.1 capistrano

これで、エラーなくなった。

tmuxをmacで使う

tmuxを教えてもらった。
ターミナルが1つのタブで沢山の画面が使えるようになって、しかも沢山の画面全ての状態を保存しておいてくれる。

macにインストールするには、
brew install tmux
とやる。

結構インストールに時間かかる。
終わったと思ったらエラーがでている。

Warning: Could not link tmux. Unlinking...
Error: The `brew link` step did not complete successfully
The formula built, but is not symlinked into /usr/local
You can try again using `brew link tmux'
Error: Permission denied - /usr/local/etc

sudoとかでbrew link tmuxとやってもできない。
/usr/localの所有者を自分に変更したらできた。
(sudo chown ore:ore /usr/local)

Capistranoでssh接続

ssh接続する場合、下記のように設定できる。

# sshでログインするユーザ
set :user, "ユーザー"
# ssh 公開鍵設定
set :ssh_options, :port=>ポート, :forward_agent=>false, :keys=>"秘密鍵のパス", :passphrase => "パスフレーズ"
# コマンド実行時にsudoをつけるか
set :use_sudo, false
# デプロイサーバー
role :web, "ホスト"
role :app, "ホスト"

capistrano 使い方メモ cakePHP

もう忘れていたのでメモ。。

まずはプロジェクト用のフォルダ(例:myapp)をつくります。
myappに移動します。
capifyします。
configディレクトリに移動します。
deployディレクトリをつくります。

mkdir myapp
cd myapp
capify .
mkdir config/deploy
touch config/deploy/dev.rb

次に、config/deploy.rbと、config/deploy/development.rbとか、config/deploy/production.rbとかの中身をつくる。

config/deploy.rb

require "capistrano/ext/multistage"
require "capistrano_colors"
require "railsless-deploy"
require "rubygems"

ssh_options[:forward_agent] = true
set :normalize_asset_timestamps, false
set :use_sudo, false

#ステージ
set :stages, ["dev", "pro"]
set :default_stage, "dev"
# バージョン管理
set :scm, :subversion
# リポジトリ
set :repository, "リポジトリの場所"
# ブランチ
#set :branch, :master
# デプロイ方式
set :deploy_via, :copy
#世代管理
set :keep_releases, 3

# デプロイ対象外ファイル
set :copy_exclude, [".svn", "**/.svn",".svn/*"]

config/deploy/dev.rb

# アプリケーション名
set :application, "アプリ名"
# デプロイ先ディレクトリ
set :deploy_to, "デプロイ先ディレクトリパス/#{application}"

# デプロイサーバー
role :web, "ユーザ@ホスト"
role :app, "ユーザ@ホスト"

#ユーザアカウント
set:user, "ユーザ"
set:password, "パスワード"

namespace :deploy do
  before "deploy" do
    try_sudo "chown -R 所有者:グループ #{deploy_to}"
  end
end

after "deploy", "upload_config"

desc "各種セットアップ情報をアップロードします"
task :upload_config, roles => :web do
  run "rm -f #{latest_release}/app/Config/core.php"
  run "rm -f #{latest_release}/app/Config/bootstrap.php"
  run "rm -f #{latest_release}/app/Config/database.php"
  run "rm -f #{latest_release}/app/Config/email.php"
  run "rm -f #{latest_release}/app/Config/core.pro.php"
  run "rm -f #{latest_release}/app/Config/bootstrap.pro.php"
  run "rm -f #{latest_release}/app/Config/database.pro.php"
  run "rm -f #{latest_release}/app/Config/email.pro.php"
  run "mv -f #{latest_release}/app/Config/core.dev.php #{latest_release}/app/Config/core.php"
  run "mv -f #{latest_release}/app/Config/bootstrap.dev.php #{latest_release}/app/Config/bootstrap.php"
  run "mv -f #{latest_release}/app/Config/database.dev.php #{latest_release}/app/Config/database.php"
  run "mv -f #{latest_release}/app/Config/email.dev.php #{latest_release}/app/Config/email.php"
  run "chmod -R 755 #{deploy_to}/current/"
end

次に、デプロイ先の初期セットアップをする。デプロイ先のサーバに必要なフォルダなどをつくってくれる。

cap dev deploy:setup

あとは、デプロイしたいときに、デプロイする。

cap dev deploy

Subversion cakePHPプロジェクトの作業コピーつくったら最初にやることのメモ

cakePHPのプロジェクトのリポジトリをつくって、作業コピーをつくったらignore設定とか色々あるので、メモする。いつもignoreを微妙に忘れるし。

subversionのチェックアウト

svn checkout svn+ssh://user@host .

作業コピーが終わってからの作業のshをつくってみた。
rmとかignoreはかなり冗長的な感じだけど、これで多分動いたみたい。
作業コピーに移動してから実行する。

#!/bin/sh
#svn checkout svn+ssh://user@host .

#app/tmpを707に設定
sudo chmod -R 707 app/tmp

#app/tmp内のいらないファイルを削除する
rm -f app/tmp/*
rm -f app/tmp/cache/*
rm -f app/tmp/cache/models/*
rm -f app/tmp/cache/persistent/*
rm -f app/tmp/cache/views/*
rm -f app/tmp/logs/*
rm -f app/tmp/sessions/*
rm -f app/tmp/tests/*

#無視リストを設定する
svn propset -R svn:ignore ‘*’ ./.setting
svn propset -R svn:ignore ‘.buildpath’ ./
svn propset -R svn:ignore ‘.DS_Store’ ./
svn propset -R svn:ignore ‘.project’ ./
svn propset -R svn:ignore ‘*’ ./.idea
svn propset -R svn:ignore ‘build.properties’ ./
svn propset -R svn:ignore ‘build.xml’ ./
svn propset -R svn:ignore ‘README.md’ ./
svn propset -R svn:ignore ‘cake_svn.sh’ ./

#全てのファイルを追加する
svn st | grep '^\?' | sed -e 's/\?[ ]*/svn add /g' | sh

#コミット
svn ci -m 'first commit'

便利すぎるPhpStormのXdebug

printデバッグ離れできるようになるために試してほしいPhpStorm+Xdebug用例集(1)参考

これ読んで感動した。

・variablesからwatchesにはドラッグアンドドロップで移動できる。
・関数を実行した結果も、watchesで監視できる。
・ブレーク中に任意のPHPコードを実行させることができる! これは、Evaluate Expressionでできる。

Xdebugの設定 XAMPP mac

Mac OS X 10.5 + XAMPP で xdebug を有効にする参考

php.iniにXdebugを有効化する為の記述を追加

[xdebug]
zend_extension="/Applications/XAMPP/xamppfiles/lib/php/php-5.3.1/extensions/no-debug-non-zts-20090626/xdebug.so"
xdebug.remote_enable=1
xdebug.idekey = "mydebug"

xdebug.idekeyは、任意の文字列。
あとはapache再起動するだけ。簡単だ。

phpStormの設定

・Priferences->PHP->DebugはデフォルトでOKだった。
 Portとかを変える場合、違う場合はそれに合わせて設定する。
・Priferences->PHP->Serversで、localhost:80、Xdebugを設定しておいて、
・Run->Edit configurations->Defaults->PHP Remote Debugで、上記で設定したServerを選択し、ide Keyを入力して、設定を保存する。

その後、
http://www.jetbrains.com/phpstorm/marklets/で、idekeyを入れてgenerateしたjavascriptでブックマークレットをつくる。

そして、
・Run->Start Risten PHP Debug ConnectionsをONする。
・デバッグしたいページをブラウザに表示させて、先程のブックマークレットをクリックする。

これで、Xdebugは動きますので、breakpoint設定していれば、そこでとまります!便利だ。。

プロファイラを取得する機能も便利らしいので、今度やってみる。

PHPUnitの勉強

PHPUnitでユニットテスト (1/3)これ見ながら勉強。

・テストはテストケースと呼ばれるクラスで、メソッドの中にアサーションという比較処理を書く。
・PHPUnit_Framework_TestCaseというクラスを継承してテストケースクラスをつくる。
・テストするクラスのクラス名の最後にTestとつけるのがテストケースクラス名のルール。
・ファイル名もテストケースクラス名と同じである必要がある。
・テストメソッド名はtestで始めるのがルール。
・テスト対象のクラスをテストケース内でインスタンス化し、実際にメソッドをコールすることによってその結果を精査するのが一般的。
・アプリケーションフレームワークが行う初期化処理や、データベース接続などの準備処理を、テストの前に実行しておく必要がある。
・準備と後始末の仕組みについてもPHPUnit側でテンプレートメソッドとして準備されている。
・テストケース開始時に、setUpBeforeClass()メソッドを呼ぶ。
・テストメソッド実行前に、setUp()メソッドを呼ぶ。
・テストメソッド実行後に、tearDown()メソッドを呼ぶ。
・テストケース終了時に、tearDownAfterClass()メソッドを呼ぶ。

お試しコード

テストケース

<?php

require_once 'Sample.php';

class SampleTest extends PHPUnit_Framework_TestCase{

	public function setUp(){
		$this->sample = new Sample;
	}

	public function testGetValue(){
		$this->sample->set_value(20);
		$this->assertEquals(40, $this->sample->get_value());
	}

}

テスト対象

<?php

class Sample{
	protected $value;

	public function get_value(){
		return $this->value;
		throw new RuntimeException('Not yet implemented.');
	}

	public function set_value($value){
		$this->value = $value * 2;
	}
}

そして、phpunit sampletest.phpとやる。

結果、


PHPUnit 3.6.12 by Sebastian Bergmann.

.

Time: 0 seconds, Memory: 2.50Mb

OK (1 test, 1 assertion)

あとはここを見ながら勉強する。
PHPUnit Manual

PHPUnitのインストール XAMPP MAC

PHPUnitのインストールで激はまり。色々やったけど結局PHPUnitは使えなかった。最初からやってみる。
結果インストールできた。しかし色々有りすぎて全部ブログに書くのはめんどくさい。

XAMPPのpearの場所は、/applications/xampp/xamppfiles/bin。

.bashrcに、下記を記載して、/applications/xampp/xamppfiles/bin/をPATHに入れれば、pearってやればpearが動く。

PATH="/applications/xampp/xamppfiles/bin:$PATH"
export PATH

あとは、sudo pear install -a phpunit/phpunit とやればインストールできるのだが、pearが古いとか、依存関係あるやつのバージョンが新しすぎるとか、足りないものがあるとかで中々インストールできないので、upgradeしたり、uninstallしたりしながら、不足なし、バージョン新しすぎるものなしでばっちりになった状態でもう一度上記インストールコマンドを実行したらインストールできた。

不足に関しては、http://stackoverflow.com/questions/6064217/installing-phpunit-w-xampp-on-mac-os-xに書いてあるやつを実行するとよかった。

Xamppは、pearのphp_dirが、/Applications/xampp/xamppfiles/lib/phpで、
bin_dirが、/applications/xampp/xamppfiles/bin。
php_dirをphp.iniのinclude_pathに入れる。
ちなみに、pear confing-get php_dirとか、pear config-get bin_dirとかやると、パスが表示される。

include_path=".:/Applications/xampp/xamppfiles/lib/php"

これでphpunitってコマンドうったらphpunitが動いた \(ToT)/

PhpStorm ショートカットキー

KyeMap は Mac

command + j -> Live templates
command + k -> VCS commit
command + q -> 終了
command + n -> 新規作成
command + l -> 行番号にジャンプ
command + m -> 最少化
command + x -> 行切り取り
command + d -> 現在の行を複製
command + e -> 最近開いたファイル一覧を表示
command + w -> 保存してファイルを閉じる
command + r -> 検索・置換ボックス表示
command + o -> class検索ボックス表示
command + @ -> 過去編集した順番に編集箇所を表示してくれている模様
command + g -> 次を探す
command + f -> 検索ボックス表示
command + < -> 設定画面表示
command + 1 -> Projectサイドバーの表示切替(フォーカスも移動)
command + 2 -> favoritesの表示切替(フォーカスも移動)
commnad + / -> コメントアウト切り替え
command + shift + s -> ファイルの複製
command + shift + e -> 最近編集したファイルの一覧表示
command + shift + o -> ファイル名でファイル検索
command + shift + x -> コマンドラインツールの表示
command + shift + v -> クリップボードから選択してはりつけ

command + control + f -> 全画面表示切替

control + d -> デバッグ実行
control + r -> Run実行
control + a -> 行頭にジャンプ
control + e -> 行末にジャンプ
control + v -> VCS operationを表示
control + b -> 一文字戻る
control + n -> 次の行に行く
control + p -> 前の行に行く
control + k -> カーソル位置から行末まで削除
control + f -> 一文字進む
control + t -> Refactor Thisの表示

control + shift + j -> 現在行の改行文字を削除

PhpStormの設定

PhpStormの設定です。

・ファイルの拡張子のひも付け
Preferences -> File Types

・Live Templates
Preferences -> Live Templates

・JavaScriptデバッガー
Run -> Edit Configurations で、Javascript Remort Debugを追加し、URLを入れる。
(http://localhost:63342/[project name]と入れるとビルトインサーバでデバッグができるらしい。cakePHPでやるとうまくいかなかった。)
あと、ChromeかFirefoxで利用できて、それぞれアドオンをインストールする必要がある。(FireFoxはアドオンが見当たらなかった)
デバッガーは動くしエラーも見つけてくれるが、どうもbreakpointが機能しない。なんか設定が必要な模様。

・MySQLに接続
SQLが書きやすい!PhpStormからMySQLに接続する方法ご参照
Database URLは、localhostの場合、jdbc:mysql://localhost:3306

・バージョン管理(Subversion)
main menuのVCSからごちゃごちゃやる。これは分かりやすい。

phpstorm

phpstorm入れてみた。
30日間無料トライアルで。

これから色々いじってみるが、phpStormにはテーマがあって、
http://www.phpstorm-themes.com/などで、各種テーマをダウンロードできるようだ。
でも、どうやってダウンロードしてインストールするのかわからない。まあいいや。

PHP最強IDE PhpStormここにかなり色々設定面の解説が書いてあるので読みながらやってみる。行番号表示して、文字コード設定して、あとこのLive Templatesというのがよさげ。Eclipseでもスニペットというのがあったのかしらなかった。よく使うコードを一発でだせるなんて、超便利じゃないか。あとで設定してみる。LIVE EDITというのも便利そうだ。編集がリアルタイムにブラウザに反映されるらしい。毎回更新ボタン押したりしなくていいのかもしれない。まあそれだけといえばそれだけな気もするが。ブックマーク機能やリポジトリの連携やJavascriptデバッガ、MySQLへの接続などもできるということで(まあEclipseでも大体できるけど使ってないのが多い)色々勉強して、超効率的開発環境をつくりたいのう。

にしても、zen-codingって俺しらなかったけど(聞いたとはあったけど)、HTMLを簡単に書ける仕組みなんすかね。これにもPhpStormは対応している。だから覚えるとHTMLコーディングというめんどくさいことも楽々できるということだな。

EclipseからPhpStormに乗り換えましたに、ショートカットキー一覧がのってたのでメモっておく。憧れのジャンプ履歴をたどるには、command+option+→らしい。おお試しにやってみたら、Chromeのタブをたどれることを発見。どうでもいいけど。

キー 内容
Ctrl + →← エディタータブの切り替え
Ctrl + ↑↓ 前 or 次のメソッドにジャンプ
Commnad + Shift + N ファイルを名前であいまい検索して開く
Command + D 現在行の複製
Command + Y 現在行の削除
Command + Shift + ↑↓ 選択行のコードを移動
Command + B キャレット位置にあるメソッドなどの定義にジャンプ
Command + Option + →← ジャンプした履歴を辿る
Command + Option + T 選択範囲をif,forなどで囲む
Command + Option + Shift + T 選択範囲をリファクタリング(名前変更、メソッド抽出など)
Command + J テンプレート(スニペット)呼び出し

でた、定義元にジャンプする機能が賢すぎて、コードリーディングが10倍ラクやっぱり、そうなんだな。憧れの賢いジャンプはかなりハイレベルなんだな。

PhpStorm のカラースキーム(テーマ)を RubyMine から移植したので配布しますここにテーマの適用方法が書いてあった。XMLファイルをフォルダに入れて選べばいいのか。あとでやってみようかな。とりあえずMonokaiというテーマを基にMonokai2をつくってフォント15pt、行間1.1にしてみた。でかい方が確かに目に易しい。目重要だ。14くらいでもいいかも。

かぶってるかもだが、またショートカットキー一覧があったのでメモ。
最強のJavaScript IDE「WebStorm」の姉妹品「PhpStorm」はPHP IDEとして最高だった

Ctrl+Command+A で、IDEのアクションを機能名から検索
Ctrl+P で、関数やメソッドの引数を参照できる。自作であってもコメント @param などを自動で解析して表示
Ctrl+N で、Class名を指定して、該当ファイルにジャンプ
Ctrl+Shift+N で、ファイル名を指定して、該当ファイルにジャンプ
Ctrl+O で、メソッドのオーバーライド候補を参照して選択
Ctrl+I で、インターフェイスからの実装候補を参照して選択
Ctrl+U で、スーパークラスやスーパーメソッドを参照

ほかにも色々書いてあるからメモ。

コード補完

Ctrl+Space でコード補完でき、プロジェクト内であれば自作クラスのメソッドでも利用可能
HTML編集中のZenCodingはTabキーで発動
Ctrlを押しながらカーソルを関数名やクラス名に合わせると、コメント ( PHP Document ) の情報を表示
エディタの表示系

キャレット位置のIndentifierハイライトするのは、IDE Settings の Editor の Highlight usages of element at caret でON/OFF
エディタの行番号やホワイトスペースを表示するのは、IDE Settings の Editor -> Appearance から
IDE Settings の Appearance で、いろいろなパーツを消せる
colorスキーマに、暗色背景のinvertedカラーがデフォルトにない
IDE Settings の Editor ->Colors & Fonts で、エディタの見た目をカスタマイズ
エディタの色の設定は、General ( 一般 )をカスタマイズした後に、言語ごとの設定をする
リソース管理

Tools -> Deployment -> Automatic Upload で、ファイルの更新がされたときに自動でリモートに反映
簡易なバージョン管理 ( Local History ) があり、既存のGit, CVS, Svnなども利用可能

あと、PhpStormのCakePHPプラグイン、CakeStormを作ってみましたやっぱりこれですね。これを見てphpstorm入れたいと思ったくらいで、phpstorm好きな人がcakePHPをphpstormで更に便利にできるようにとつくったものなんで、これは間違いないんじゃないでしょうか。しかも機能としては憧れのジャンプをcakePHPに最適化したものだというわけですから、これはもう言うことないです。
ということで、とりあえずインストールしておいた。

あとは、printデバッグ離れできるようになるために試してほしいPhpStorm+Xdebug用例集(1)これですかね。デバッグ。これはPhpStorm以前にどうもまさしく俺はprintデバッグというものをやっているんではないかと思う。非効率極まりない。でも要するに今の効率を圧倒的に高めることが可能だと思っている。phpstormいれつつ、一般的なハイレベルデバッグを覚えてそれをphpstormで、効率的かつ確実にできるような環境をつくるのが重要だな。

printデバッグ離れできるようになるために試してほしいPhpStorm+Xdebug用例集(2)
PhpStorm で PHPスクリプトの実行を解析する(Xdebugのプロファイラの結果を表示する)
PhpStorm で、Xdebugのリモートデバッグ環境を作る

など、色々良さげな解説を沢山書いてくれてるので、あとで全部読んで覚えよう。てゆうか、そもそもXdebug使ってないっていうのはすごいいけてないことなのかもしれない。Xdebugをそもそも覚えよう。

このくらいかな??

かっこよくジャンプして、
ショートカットキー覚えまくりつつ、色々設定してみて、
ライブテンプレートを駆使して、
そもそもデバッグを学び直して、かっこいいデバッグ環境をつくって、
データベースとかリポジトリとかそういうのも全部連携すれば、
いい感じに開発効率があがると思った。

あとは、テストだな。テストについて学んで、自動テスト、ジェンキンス、自動デプロイまで完璧になれば一旦のゴールかな?

追記:
ここにもdiffとかよさそうなことが書いてあるからメモ。
私が愛用しているphpのIDEソフトphpStormについて