$ sysctl -n hw.ncpu
4
makeとかbundle時にcpuコア数分並列させたいとき便利。
$ bundle install -j`sysctl -n hw.ncpu`
$ sysctl -n hw.ncpu
4
makeとかbundle時にcpuコア数分並列させたいとき便利。
$ bundle install -j`sysctl -n hw.ncpu`
phpenv + php-buildよりphpbrewの方が良さそうです。(rbenvとぶつかる)
wget
はcomposerのインストールに必要。
$ brew install automake autoconf curl pcre re2c mhash libtool icu4c gettext jpeg libxml2 mcrypt gmp libevent wget
$ brew link icu4c --force
ふむふむ。
$ curl -L -O https://github.com/phpbrew/phpbrew/raw/master/phpbrew
$ chmod +x phpbrew
$ sudo mv phpbrew /usr/bin/phpbrew
$ phpbrew init
$ echo "source ~/.phpbrew/bashrc" >> ~/.zshrc
$ phpbrew lookup-prefix homebrew
$ sudo phpbrew install -j `sysctl -n hw.ncpu` 5.6.8 +default+mysql+apxs2
$ phpbrew --version
phpbrew - 1.18.5
cliframework core: 1.10.0
$ phpbrew switch php-5.6.8
$ php -v
PHP 5.6.8 (cli) (built: May 12 2015 17:33:22)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
composerとphpunitインストール。さりげ嬉しい。
$ phpbrew install-composer
$ phpbrew install-phpunit
ActionController::RoutingError: No route matches [POST] "/stories/2992/trackback"
みたいな存在しないURLで、人間のユーザーには影響無く、botがアクセスしてくるエラーってどうすればいいのかな。
routes.rb
の一番下に404へ飛ばすの書いておけばいいけど、人間のユーザーにも影響のあるNo route matchesのエラーもある気がするし…。
でもエラー管理サービス(rollbar)の無料枠のエラー数を消費してしまうので何とかしたいところです。
レガシーがらみで気になったのでサポートに聞いてみた。
マネージドサーバーHDDプランの契約を検討しております。
PHPのバージョンが4.4, 5.2~5.4となっていますが、これはどの5系の場合はどのバージョンになるのでしょうか?
現在PHP公式では5.4未満はサポートが行われていません。 セキュリティパッチなどは御社が独自に提供していただけるのでしょうか。
以下、サポートからの返答。
この度は弊社サービスをご検討いただき、ありがとうございます。
PHPのバージョンは4.4、5.2~5.4の中から任意にお選びいただけます。特に お客様にて設定が行われなかった場合は5.4が適用されます。
セキュリティパッチについては弊社にて独自に作成し、対応を行っております。 ご安心ください。
ご不明な点やご質問等ございましたら、本メール返信にてお問い合わせ ください。
今後ともさくらインターネットをよろしくお願いいたします。
公式のサポートが切れているPHPのバージョンにもセキュリティパッチを当て続けている!?
第89回 PHP勉強会@東京に行ってMac・Windows共通のPHP開発環境 // Speaker DeckというLTをさせていただきました。
会場は株式会社リジョブさんの咲くらぼというスペース。人工芝に座って人工桜を見ながらビール飲んで勉強会とか最高かよ。
咲くらぼ TECH 勉強会サポート | 咲くらぼTECHブログ - 株式会社リジョブ
また、じゃんけん大会でLaravelエキスパート養成読本をいただきました。ありがとうございます。
LT内容を箇条書きにまとめるとこんな感じです。
足ばやになってしまった質疑応答に対する補足。
Q. AnsibleはWindows対応してなかったっけ?
A. provision対象としてはサポートしてるけど、clientの実行マシンとしてはサポートしてません。
Installation — Ansible Documentation
Currently Ansible can be run from any machine with Python 2.6 or 2.7 installed (Windows isn’t supported for the control machine).
Q. Windows対応してないなら何でAnsible?chef-zeroは?
A. ごもっとも。chefは個人的にキモい(ネーミングとかberkshelfとか)。私がruby好きなのでrubyで何でもできるchefをPHPの会社に導入するとやり過ぎてしまうのが怖かった(vagrantはいいのかよ > 俺)。など。後は小規模ではchef-zeroよりansibleの方がシンプルで覚えるのも簡単だと思う。
私の構成管理ツールについての苦悩のエントリーはこちら。
Q. 技術的な内容ばかりだけど、レガシーPHP改善は「このままでいいや」というみんなのマインドセットを変えることの方が重要なのでは?何か工夫していることは?
A. おっしゃるとおり。答えは例えばみんなを誘ってPHP勉強会に来る、発表する。(3人来ていただけました。ありがとうございます!先月はボッチで行った!)
レガシーPHP改善日記 シーズン2 エピソード1 - komagata
流行りの環境うんぬんは単なる手段であり、"経営陣を含めたマインドセットの更新が大事"ってのはありますが、そんな話みんな読みたくないでしょ?
エピソード1ではこんなこと言ってますがちょっとだけ・・・。
「漬け水がキュウリに漬かるよりは、キュウリが漬け水に 漬かるほうが早い。」これは、「長いものには巻かれろ」という 世渡り術指南の、ちょうど逆を意味する。 すなわち、大きな仕組みに影響を与えようとして、 接触を続けている小さな個(自分)は、結果として、むしろ自分のほうが変えられてしまう可能性が高い、ということを警告している。
ピクルス原理によれば私が一人息巻いて乗り込んだところでレガシーPHPシステムは変わりません。むしろこっちがレガシー寄りになる。
シーズン1からお読みの方はご存知の通り、レガシーPHP改善にとってPHPコミュニティーと会社をつなげることは既定路線であり、必須のメソッドです。
今回は内容をブログに書くということも了承を得てからお仕事を受けています。(ほう、経験が生きたな)
ピクルスを漬けている瓶に穴を開ける。そしてPHPコミュニティーという大きなプールにピクルスの瓶ごと突き落とす。そして割るぐらいのことをしないとマインドセットは変わらないと思います。
逆にいえば人間はピクルス原理のように周囲の環境に急激に馴染むという性質をもっています。PHPコミュニティーという良い漬け水に浸かれば急速に周囲に馴染んでいき、良いPHPエンジニアになれると思います。(良きキュウリは別の瓶に移って行ってしまうという別の法則もありますが…)
レガシーPHP改善でうかがってはじめに取り組んだのがslackの導入です。それまでIP-Messengerやメールで密書のようなやりとりをしているところにslackを導入し、何かにつけPHP界隈の情報を流しました。
先月も今回の勉強会も1時間前まで「まだ定員に空きがあるのでお時間がある方は是非」などと「こいつウゼェ・・・」と思われても仕方ないぐらい必死の勧誘をしました。
また、今回参加された方がいたことで変化に前向きな方々=心強い味方を見つけることができました。そういった方々に協力をおねがいして、参加できない方も巻き込むために社内で開催するぐらいの勢いでやる必要があります。
今回唯一の誤算はレガシー改善はまだ途中であり、会社名は改善が成ってから公開予定だったのですが、自己紹介で「今、自己紹介されたkomagataさんと一緒にやっている(略)」と会社名が思い切りバレたことです。
そりゃあそうなるわなと思いました。何が誤算だよ > 俺
先月になりますが、PHP勉強会@東京に行ってきました。数年ぶり。
第88回 PHP勉強会@東京 - PHP勉強会@東京 | Doorkeeper
Let tested using a mock with PHPUnit // Speaker Deck
phpunitは当たり前になったけどmockをもっと使おうという話。
PSR-2でLintした結果を見えるようにして、コード品質の最低限を上げる
PHP_CodeSnifferやphp-cs-fixerでPRにLint結果をコメントとして投稿する言語非依存な静的解析コマンドラッパーのSaddlerを作ったという話。
HoundCIとかはdiffのみから警告作ってるから速いのだそうです。saddlerはファイル全体を見ることで可能になるもっと詳細な静的解析を出してくれる。
Laravelの美容口コミサイトへの導入事例(スライドは未アップ)
cakephp使ってたけどlaravelで中規模サイト作ってみたらすごく良かったという話。Googleトレンドでも上昇中らしい。本ももうすぐ出るらしい。
全員自己紹介のテーマが「好きなエディター」だったが、PHPStormが有料にもかかわらず圧倒的に多かった。次点でvim, sublime text2, atom, eclipseと言った感じ。(KLabでは全員にPHPStormが支給され、git clientも内蔵しているそうです。)
laravelは現状のphpフレームワークで一番良さそうに見えた。
powを別マシンから使う時に出てきたxip.ioがクッソ便利なことに今更気づいた。
% ping 192.168.0.1.xip.io
PING 192.168.0.1.xip.io (192.168.0.1): 56 data bytes
xip.ioの前にIPつけるとそのIPを返してくれる。
ってことはvagrantデフォルトの192.168.33.10を返すようにしたら便利だ。
% ping 192.168.33.10.xip.io
PING 192.168.33.10.xip.io (192.168.33.10): 56 data bytes
その前にIP以外のものを付けても同じIPを返してくれる。
% ping foo.192.168.33.10.xip.io
PING foo.192.168.33.10.xip.io (192.168.33.10): 56 data bytes
ってことは設定無しで好きなIPでVirtualDocumentRootが使えるってことだ。
screenで絵文字が出ない問題もあってターミナルマルチプレクサを見なおしてみた。
tmuxに移行しようかと思ったけどpaneやwindowの概念がscreenと違うし、そもそも俺は同じディレクトリでTerminalが開きたいってだけで、画面分割はvimでしか使ってないのでNew tabs open with: Same Working Directory
(同じワーキングディレクトリで新規タブを開く)でいいやってことになりました。
これはMacのbash用の設定なので独自に下記の設定で、単に最後にいたディレクトリで開くようにした。
# ~/.zshrc:
function save_cwd() { pwd > ~/.cwd }
autoload -Uz add-zsh-hook
add-zsh-hook precmd save_cwd
cd `cat ~/.cwd`
vimで画面分割した時日本語がズレる問題とか、若干重い問題とかもついでに解消された。ターミナルマルチプレクサ通さない直接vimは速い気がします。
@komagata それvimで。 http://t.co/DQqakaAJKI
— 松村竜次 (@mgiken) 2015, 4月 15
@mgikenさんにvimmer向けのやり方を教えていただきました。
要はDropboxディレクトリ内のpasswordというテキストファイルにパスワードを書いて暗号化したいので我々vimmerにとってはvimでサクッとできるとありがたい。
$ vi ~/.vimrc
set cryptmethod=blowfish
$ vi foo
$ cat foo
VimCrypt~02!q?@?qTn&?1F_
$ vi foo
1passwordのsecure noteの動作がいまいち信用できないんでこっちで行こう。
単にテキストファイルを暗号化してDropboxのPrivateに乗せておきたい。
gpgを使うのが一般的っぽい。デフォルトではCAST5(CAST128)というアルゴリズムで暗号化されるらしい。
$ brew install gpg
暗号化。
$ echo unk > password
$ gpg -c password
パスフレーズを入力:
パスフレーズを再入力:
$ cat password.gpg
?B??ڼ?`?"?F?V?u",
???B%U?$?m?3?%{In?+}??
復号化。
$ gpg password.gpg
gpg: CAST5暗号化済みデータ
gpg: 1 個のパスフレーズで暗号化
gpg: 警告: メッセージの完全性は保護されていません
$ cat password
unk
警告が気になるが・・・。
見られたくないものはカジュアルに暗号化していきたい。
追記:
@yagi_に教えていただきました。
「AES(Advanced Encryption Standard)がもっと強力で標準の暗号化方式としてできたんだからそれを使うべきそうすべき」だそうです。
暗号化。
$ echo unk > password
$ gpg -c --cipher-algo AES256 password
パスフレーズを入力:
パスフレーズを再入力:
$ cat password.gpg
? EBr?eε?`?A?bH??<9?s?"!???2ա?W?{?>?5??H???????ř X?{?&h??`U?
p????
復号化。
$ gpg --cipher-algo AES256 password.gpg
gpg: AES256暗号化済みデータ
gpg: 1 個のパスフレーズで暗号化
パスフレーズを入力:
$ cat password
unk
~/.gnupg/gpg.conf
にcipher-algo AES256
と書いておけばオプションを付ける必要がなくなります。復号時に何で暗号化されてるか表示してくれるので「何で暗号化したんだっけ?」となることがなくなってよいですね。