mawatari.jp
ウェブエンジニアのメモ帳
  • ブログ
  • ブックマーク
  • 本棚
  • GitHub
  • プロファイル
  • PhpStorm
  • CakePHP
  • FuelPHP
  • PHP
  • RubyMine
  • Ruby on Rails
  • Ruby
RSS
2015年2月19日

OS X Mountain LionからOS X Yosemiteにアップグレードする

mawatari 日記 Mac, PhpStorm, Vagrant, VirtualBox 0 Comments

久しぶりの更新となりました。公私ともに慌ただしかった日々も少し落ち着いてきたので、ぼちぼち再開したいと思います。再開きっかけに、長らく放置気味だった開発マシンのOSのアップグレードを行ったのでメモしておきます。

環境

開発環境は以下の通りです。これらが問題なく動作することを目標とします。
開発用のソフトウェアとして、PhpStorm, VirtualBox, Vagrantをあげたのは、Yosemiteアップグレードの際に動作しなくなる報告があったため、また、それらが動作すれば、ひとまずは困らないためです。

ハードウェアバージョン
MacBook AirMid 2011
ソフトウェアバージョン
MacOS10.8.5
PhpStorm8.0.2
VirtualBox4.3.16
Vagrant1.6.3

今回のアップグレードは、OS X Mavericks (10.9) を飛ばしてのアップグレードということになります。

Mountain LionからYosemiteにアップグレードする

App Storeを起動し、アップデートの画面を開きます。表示された手順に則ってアップグレードします。
この際、Time Machineでバックアップを取っておくなど、万が一の備えをしておくのをオススメします。私は、必要なデータは全てクラウドで管理しているので、特にバックアップは取らずに進めました。
30分程度で無事にアップグレードは完了し、バージョンは10.10.2となりました。

Vagrantを起動できるようにする

以下のリンクのように、YosemiteにアップグレードするとVagrantが起動しなくなることがあるようです。OS X Mavericksへのアップグレードの時にも同様の報告があったので敬遠していましたが、VirtualBoxをアップデートすると動作するようになるそうです。

  • うっかりYosemiteにアップデートしたらVagrantが動かなくなった – Qiita
  • Yosemiteにupdateしてhttpdとvagrantが上がらくなって肝を冷やしたはなし – tknzk’s tech log

開発環境に入っていたVirtualBox 4.3.16では、アップデートの必要もなく動作することが確認できましたが、念のために最新版の4.3.22へアップデートしました。

PhpStormを起動できるようにする

PhpStormもYosemiteにアップグレードすると起動しなくなります。以下のようなアラートが表示されると思うので、詳しい情報をクリックするか、以下のリンクからAppleのサイトへ行き、Java 6をインストールします。
Java for OS X 2014-001 – Apple

upgrade-to-os-x-yosemite-from-os-x-mountain-lion-01

その他、Java 8でPhpStormを起動する方法など、JetBrains代理店のサムライズムのサイトに詳しくあるので参考にしてみてください。

  • YosemiteでJetBrains IDEを動かす #jbugj – サムライズム

以上です。

2014年5月30日

コミットログに自動的にイシューナンバーを入れるGit Hooks

mawatari 日記 Git, Tips 0 Comments

コミットログに自動的にイシューナンバーを入れたり、コミットログにイシューナンバーが含まれているかを確認するGit Hooksを作ったので、メモしておきます。
以下のリポジトリで管理しています。
mawatari/git-hooks – GitHub

利用方法

それぞれのファイルを .git/hooks以下に設置し、実行権限を与えてください。

コミットメッセージにイシューナンバーを自動入力する為のフック

.git/hooks/prepare-commit-msg
Shell
1
2
3
4
5
6
7
8
9
#!/bin/sh
 
# コミットメッセージにイシューナンバーを自動入力する為の処理
# ブランチ名から数字のみを抜き出し、エディタの初期値として利用する
if [ "$2" == "" ] ; then
mv $1 $1.tmp
echo "issue #`git branch | grep "*" | awk '{print $2}' | sed -e "s/[^0-9]//g"`" > $1
cat $1.tmp >> $1
fi

これには、以下の問題点があります。

  • 仕様上、ブランチ名にイシューナンバーが含まれる必要がある
  • git commitコマンドでエディタを起動したときのみ、機能する
    git commit -mでは機能しない
  • 基本的に、IDEや、その他のGUIツールでは機能しない

コミットメッセージにイシューナンバーが含まれているかを確認するフック

.git/hooks/commit-msg
Shell
1
2
3
4
5
6
7
8
9
10
#!/bin/sh
 
# コミットメッセージにイシューナンバーが含まれているかの確認
exp="(#[0-9]+(?:(?:[, &]+| *and *)#[0-9]+)*)"
grep -E "$exp" $1 > /dev/null
 
if [ $? -ne 0 ]; then
    echo 'コミットメッセージにイシューナンバーが記入されていません。'
    exit 1
fi

これには、以下の問題点があります。

  • 全てのコミットに対して、チェックするため、必ず対応するイシューが必要である
    リリース等で、イシューを発行しない事も認められている運用だった場合に不都合がある

以上です。

2014年4月14日

PhpStormからVagrant上のMySQLに接続する

mawatari 日記 CentOS, MySQL, PHP, PhpStorm, Vagrant 0 Comments

PhpStormからVagrant上のMySQLに接続する方法をメモしておきます。
WebStormや、その他JetBrains製のIDEでも同様の手順で行けると思いますが、確認はしていません。

環境

環境は以下の通りです。

ソフトウェアバージョン
MacOS10.8.5
PhpStorm7.1.3
Vagrant1.5.1
CentOS (ゲストOS)6.5
MySQL5.5.35

Vagrant

Vagrantの設定については、深くは触れません。
CentOS 6.xのboxを使って vagrant upし、 yum install mysql mysql-server mysql-develとしただけの環境です。 my.ini含め、ゲストOS側の設定は、特に変更していません。
参考までに、以下にVagrantfileの内容を記載しておきます。

Vagrantfile
Ruby
1
2
3
4
5
6
7
8
9
10
11
# -*- mode: ruby -*-
# vi: set ft=ruby :
 
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = '2'
 
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = 'centos6_64bit'
  config.vm.network :private_network, ip: '192.168.33.10'
  config.vm.synced_folder './', '/vagrant', :owner=> 'vagrant', :group=>'apache', mount_options: ['dmode=777', 'fmode=666']
end

PhpStormからVagrant上のMySQLに接続する

上記した Vagrantfileを使って、PhpStormからVagrant上のMySQLに接続する手順を以下に示します。

続きを読む

2014年3月7日

CakePHPのcounterCacheを任意に更新する

mawatari 日記 CakePHP, PHP 0 Comments

CakePHPのcounterCacheに関するメモを残しておきます。

counterCacheについて

CakePHPにはcounterCacheという機能があります。アソシエーション先のモデルで save()または delete()を実行した時に、数値集計用のフィールドの値を増減するというものです。

以下に、具体例を挙げます。
Post belongsTo Authorという関係性だった場合を考えます。

Postモデルのアソシエーション
PHP
1
2
3
4
5
6
7
8
9
10
11
12
class Post extends AppModel {
public $belongsTo = [
'Author' => [
'className' => 'Author',
'foreignKey' => 'author_id',
'conditions' => '',
'fields' => '',
'order' => '',
'counterCache' => true,
],
];
}

上記の通り、アソシエーションの定義に 'counterCache' => trueを追加します。また、 authorsテーブルに post_countというフィールドを追加します。
以上のように設定しておくだけで、 Postに対して、 save()または delete()が実行されると、自動的に authors.post_countが増減されるようになります。

集計用のフィールド名を変更したり、集計の条件を変更することも可能です。詳しくは、以下のリンクを参照してください。
counterCache – count()結果をキャッシュする – CakePHP Cookbook 2.x ドキュメント

belongsToアソシエーションに設定を行うので、合わせて以下のリンクも参照すると良いでしょう。
belongsTo – CakePHP Cookbook 2.x ドキュメント

counterCacheの値を任意に更新する

非常に便利なCakePHPのcounterCacheですが、数値が正常にカウントできない、数値がずれてしまうケースが存在します。

counterCacheの数値がずれてしまう原因として考えられるもの
  • データが存在しているモデルに対して、途中からcounterCacheを導入した
  • CakePHP以外からDB操作を行った

もちろん、上記のケースでも、その後に、 save()または delete()が実行されれば、正常値になります。
ただ、それでは不都合がありますので、好きなタイミングでcounterCacheの値を更新できるシェルを作りました。以下に公開します。
CakePHP-CounterCacheShell – GitHub

cakephp-counter-cache-shell-01
機能
  • counterCacheがtrueになっているモデル一覧を表示
  • 選択したモデル、または全モデルのcounterCacheをアップデート
使い方

ソースコードをダウンロードした後、 app/Console/Command以下に配置し、CLIで、 cake counter_cache updateを実行してください。対話形式でカウンターキャッシュを更新できます。

ToDo
  • オプションを取れるようにし、対話形式でなくても更新できるようにする
  • 日本語以外の言語にも対応する
コメント

中身は非常にシンプルで、 save()や delete()の中でも呼ばれている Model::updateCounterCache()を呼んでいるだけです。Bakeや、Migrations Pluginあたりを参考に作りました。
公開するなら、プラグイン化した方が良いんでしょうか。ToDoに対するPull Requestも、お待ちしております。
CakePHP-CounterCacheShell – GitHub

以上です。

2014年3月7日

VagrantでGrunt watchした内容が反映されない場合の対処法

mawatari 日記 Compass, CSS, Grunt, JavaScript, Vagrant 0 Comments

以前に、ツイッターでメモしてたものが、時が流れて探しにくくなったので、改めてブログにメモしておきます。

ホスト側でwatchしてても、ゲスト側に更新が反映されない問題

Gruntfileに、Compassのコンパイルを定義していて、watchを実行し、SCSSの変更を常時監視していました。そんな中で、この問題に出くわしました。

ことの経緯

ひょっとして、VagrantとGruntって相性悪い? ホスト側でGrunt watchしてても、ゲスト側ではうまく更新が反映されてない。

— まわたりなおと (@mawatarin) 2013, 12月 23

お酒飲みながらだから、自分がバグってんだろうって思ってたけど、この二つの相性に原因がありそうだぞ。

— まわたりなおと (@mawatarin) 2013, 12月 23

ググっても、それらしきものが出てこない…。誰か、同様のトラブルを経験した人はいないものか。

— まわたりなおと (@mawatarin) 2013, 12月 23

んー?Vagrantというよりか、Vagrant上のApacheと言った方が正確か?

— まわたりなおと (@mawatarin) 2013, 12月 23

おー!読みがあたった。やっぱりVagrant上のApacheが原因だ。結構飲んでるけど、冴えてるな。 EnableSendfile Off に設定すれば、いけた。 http://t.co/5L01nwK4nC

— まわたりなおと (@mawatarin) 2013, 12月 23

原因と対処法

詳しくは、リンク先を見ていただくとして、なぜこのようなことが起きるかというと、

静的なファイルのようにリクエストの処理にデータのアクセスを必要としないときには、ファイルを読み込むことなくカーネルの sendfile を使って、ファイルを送るようになっているから

です。

Apacheの場合は、 EnableSendfile offを、Nginxの場合は、 sendfile off;を設定ファイルに追記すれば、これらの問題は解消されます。
ホスト側では、CSSは正常に作られているので、問題に気付きにくいというのが、ハマるポイントですね。

VagrantでCSSの更新が反映されない場合の対処法 – Qiita
vagrantのsynced_folderをapacheで利用しているときのキャッシュ回避 – じゅにゃくんのはてブロ。

環境

環境は以下の通りです。

ソフトウェアバージョン
Vagrant1.3.5
(ホスト) MacOS10.8.5
(ゲスト) CentOS6.5

以上です。

«‹ 4 5 6 7›»

フォロー

follow us in feedly
人購読中

最近の投稿

  • RDS (MySQL) からファイル出力 (TSV,CSV) する
  • エラー対応:cannot update mailbox /var/mail/root for user root. error writing message: File too large
  • MySQLのSHOW TABLESでコメント他も合わせて表示する
  • Amazon Linuxのバージョン確認コマンドとアーキテクチャ確認コマンド
  • PHPのエラーメッセージを出力する
  • ServerspecでMacの開発環境をテストする
  • PHPカンファレンス福岡2015に参加してきた
  • rbenvでRubyの最新安定版をインストールするワンライナー
  • Ansibleの実行結果を通知する
  • MacにComposerをインストールする

Twitter

@mawatarinさんのツイート

カテゴリー

  • 勉強会・交流会 (56)
  • 日記 (104)

タグクラウド

Ansible Apache AWS Backbone.js baserCMS Bootstrap CakePHP CentOS CSS EC-CUBE facebookアプリ開発 fancyBox FuelPHP Fukuoka.php Git GitHub Homebrew HTML5 iOS JavaScript Jenkins Jenkins実践入門 jQuery Mac MAMP MySQL Node.js OSC PHP PHPMatsuri PhpStorm PHPUnit Rails rbenv Ruby RubyMine SwimmyStudy Tips Twitter Vagrant VMware WordPress Xdebug アジャイル 福岡インフラ勉強会
mawatari.jpのはてなブックマーク数
  • PhpStorm
  • CakePHP
  • FuelPHP
  • PHP
  • RubyMine
  • Ruby on Rails
  • Ruby

最近の投稿

  • RDS (MySQL) からファイル出力 (TSV,CSV) する
  • エラー対応:cannot update mailbox /var/mail/root for user root. error writing message: File too large
  • MySQLのSHOW TABLESでコメント他も合わせて表示する
  • Amazon Linuxのバージョン確認コマンドとアーキテクチャ確認コマンド
  • PHPのエラーメッセージを出力する
  • ServerspecでMacの開発環境をテストする
  • PHPカンファレンス福岡2015に参加してきた

フォロー

follow us in feedly
人購読中
mawatari.jpのはてなブックマーク数

新着はてなブックマーク

  • PhpStorm
  • CakePHP
  • FuelPHP
  • PHP
  • RubyMine
  • Ruby on Rails
  • Ruby

↑

© mawatari.jp 2025
Powered by WordPress • Themify WordPress Themes