コマンドラインで URL encode するやつ

[2015-07-28-2] のコマンドライン版。 function urlencode() { echo $(php -r "echo rawurlencode('$1');") } function urldecode() { echo $(php -r "echo rawurldecode('$1');") } urlencode "http://masutaka.net/" => http%3A%2F%2Fmasutaka.net%2F urldecode "http%3A%2F%2Fmasutaka.net%2F" => http://masutaka.net/ PHP 便利!

2015-10-21 (Wed) · masutaka

phpenvでちょっと古めのphp-5.3.28をインストールしたメモ

ちょっと5.3系があるとうれしいかも的な状況になったので、OSX Mavericksで php-5.3.28をビルドしてみました。すると、こんなリンクエラーになります。 $ phpenv install 5.3.28 (省略) ----------------- | BUILD ERROR | ----------------- Here are the last 10 lines from the log: ----------------------------------------- _load_all_certs_from_file in openssl.o "_sk_value", referenced from: _zif_openssl_x509_parse in openssl.o _zif_openssl_csr_new in openssl.o _zif_openssl_pkcs7_verify in openssl.o _php_openssl_parse_config in openssl.o _php_openssl_sockop_set_option in xp_ssl.o ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [sapi/fpm/php-fpm] Error 1 ----------------------------------------- The full Log is available at '/tmp/php-build....

2014-02-13 (Thu) · masutaka

Homebrewのnginxをphpenvのphp-fpm付きでセットアップしたメモ

最新のPHPを使えるようになったので[2014-02-09-1] 、nginxもセットアッ プしてみました。 これでようやくOSX MavericksのApache&PHPとオサラバできます。 php-fpmの設定と起動 ~/.phpenv/versions/5.5.9/etc/php-fpm.conf.defaultを以下のように修正し、 同ディレクトリにphp-fpm.confとして保存しました。 userとgroupをコメントアウトしているのは、今回のNgnixはユーザ権限で 動かす適当なものだからです。 listenはnginxとの橋渡しです。今回は同一マシンなのでUNIXドメインソケッ トを使用しました。 自動起動スクリプトを作成しました。 上記自動起動用のファイルを設置しました。 $ ln -sfv <path to org.php.php-fpm.plist> ~/Library/LaunchAgents 自動起動ON&起動しました。 $ launchctl load -w ~/Library/LaunchAgents/org.php.php-fpm.plist nginxのインストールと設定、起動 Apacheを自動起動する設定にしていたので削除しました。 $ sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist Ngnixはbrewコマンドでインストールしました。 (実際はbrew bundle[2014-01-25-1] でインストールしてます。) $ brew install nginx ==> Downloading http://nginx.org/download/nginx-1.4.4.tar.gz Already downloaded: /Library/Caches/Homebrew/nginx-1.4.4.tar.gz ==> ./configure --prefix=/usr/local/Cellar/nginx/1.4.4 --with-http_ssl_module --with-pcre --with-ipv6 --sbin-path=/usr/local/Cellar/nginx/1.4.4/bin/nginx --with-cc-opt=-I/usr ==> make ==> make install ==> Caveats Docroot is: /usr/local/var/www The default port has been set in /usr/local/etc/nginx/nginx....

2014-02-11 (Tue) · masutaka

HomebrewのphpenvでPHPをインストールしたメモ

Vagrant使ってたから、OSXでPHP使う必要なかっただけだから..(震え声) そういうわけでphpenvでPHP環境を作ってみました。まずは基礎知識。 phpenv Rubyのrbenv、Perlのplenvに相当。複数バージョンのPHPをHOMEにインストー ルし、切り替えて使うツール。というよりシステムを汚さないために使う感じ。 pecl, pear Rubyのgem、Perlのcpanmに相当。peclはCで書かれ、pearはPHPで書かれて いる。PHPはCで書かれたライブラリ(要は*.so)を動的にロードできないた め、このように分かれているそう。 composer Rubyのbundler、Perlのcartonに相当。アプリごとにライブラリを切り替え ることが出来る。 Homebrewのphpenvをインストール 普通にbrewコマンドでインストールします。 (実際はbrew bundle[2014-01-25-1] でインストールしてます。) $ brew install phpenv ==> Downloading https://github.com/CHH/phpenv/archive/01a2c1e25096f8ff10f2f781428a5d470e1ecaba.tar.gz Already downloaded: /Library/Caches/Homebrew/phpenv-01a2c1e.tar.gz ==> /usr/local/Cellar/phpenv/01a2c1e/bin/phpenv-install.sh ==> Caveats To finish installing phpenv: * Add ~/.phpenv/bin to your $PATH * Add "eval $(phpenv init -)" at the end of your ~/.bashrc * Restart your shell ==> Summary � /usr/local/Cellar/phpenv/01a2c1e: 6 files, 24K, built in 7 seconds 上の説明のとおり、~/....

2014-02-09 (Sun) · masutaka

改めてHomebrewをクリーンインストールしたメモ

BoxenからHomebrewに戻ってきたので[2014-01-25-1] 、改めてまっさらな状 態からインストール。[2011-07-26-1] 以来だね。/usr/localは空っぽにしといた。 http://brew.sh より。 $ ruby -e “$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" インストールが終わると、brew doctorしろと言われた。doctorから促され るがままにXQuartz-2.7.5.dmgをインストール。 brewのzsh補完ファイルのリンク先をBoxenからHomebrewに変更。 $ ln -sf /usr/local/Library/Contributions/brew_zsh_completion.zsh ~/.zsh/functions/_brew ※ ~/.zshrcでFPATH=$HOME/.zsh/functions:$FPATHを追加してある。 [2014-01-25-1] のBrewfile使って、brew bundleで各パッケージをインストール。 Rubyはrbenvから2.0.0-p353とruby-2.1.0をインストール。 # ruby-buildはHomebrew管理にはしない $ git clone git@github.com:sstephenson/ruby-build.git ~/.rbenv/plugins/ruby-build # 2.1.0のインストール $ RUBY_CONFIGURE_OPTS="--with-readline-dir=`brew --prefix readline` --with-openssl-dir=`brew --prefix openssl`" rbenv install 2.1.0 $ rbenv global 2.1.0 && rbenv rehash && rehash $ cat ~/projects/home/Gemfile.txt | xargs gem install $ rbenv rehash && rehash # 2....

2014-01-25 (Sat) · masutaka

LL Decade は元組み込みプログラマーでも楽しめるイベントだった #lldecade

この記事 で開催を知った LL Decade 。LL はおろか、Decade の単語の意味 も知らなかった元組み込みプログラマー、現 Web プログラマーですが、予 想以上に楽しめるイベントでした。 しかし暑かった。予定どおり汗だくで会場に到着。今回は机がなかったの で MacBookAir は使わず、iPhone に軽くメモりながら純粋に楽しむことに 専念。 基調講演で初めて @miyagawa 氏を拝見。手錠をはめられてプログラミン グ..の下りが印象に残りました。PHP は知れば知るほど変態言語で、第一 印象よりかなり好きになりましたが、私も手錠をはめられている感じはす るのですよね…。 意外だったのは今まで Python に全く関わらずに生きてきたのに、 Language Update Decadev で話を聞いて、やってみようかなと思ったこと。 LL イベントは各言語をつまみ食い出来るので、組み込みなど別な分野の人 が参加しても楽しめますね。今回はまつもとさんの mruby の話も熱かった ですし。 先週の Jenkins ユーザ・カンファレンスの熱が残っているのか、CI の話 もセッションまるまる使われていました。まあでも CI は各言語やフレー ムワークに共通する内容は薄いので、CakePHP2 と Jenkins みたいにドン ピシャの話が聞きたいですね。それは個々の勉強会でやることか。。あ、 もちろん各トークは面白かったです。 @yamashiro さんの話は特に。 JsTestDriver いいかもと思ったけど、複数サーバが必要なのは残念でした。 Javascript が機械語という解釈は今回一番面白かった。すなわち永遠に生 き続ける。確かに各ブラウザ対応を考えると素で書くのはしんどい。アセ ンブラに対する C みたいに、今後はもっとしっくりと上に乗っかるとうれ しいですね。> jQuery, JSX, CoffeeScript

2012-08-06 (Mon) · masutaka

PHPカンファレンス関西2012に参加してきました #phpkansai

今まで参加した勉強会で一番実践的だったと思います。 もちろん私にとって。 とか言いつつ、20 分くらい遅刻してしまいましたw PHP5.3、PHP 5.4、次のPHP 第2回 関西PHP勉強会 [2011-11-26-3] で一度聞いてはいましたが、それで も知らないことは多々ありました。 PHP5.3 レイト・スタティック・バインディングがサポートされた。static:: が C++ とかと同じように動作する。self::who じゃなくて static::who と 書くと、継承先の who() が使われる。 goto がサポートされた。loop の中には入れない。 クロージャがサポートされた。 クラススコープ外で const を使えるようになった。define は APC 使った 時に実行されてしまう。const はそうじゃないらしい。 省略三項演算子がサポートされた。フォームのデフォルト値を処理するの に便利とのこと。さっそく試してみた。確かにこれは便利。 // セットされていれば、その値が使われる。 $aaa = 'masutaka'; $value = $aaa ?: 'aaa'; var_dump($value); //=> string(8) "masutaka" // されていなければ、デフォルト値('aaa')が使われる。 $aaa = 0; $value = $aaa ?: 'aaa'; var_dump($value); //=> string(3) "aaa" PHP5.4 Traits がサポートされた。早く使おう。 Class が垂直再利用なのに対して、Traits は水平利用とのこと。なるほど。...

2012-05-13 (Sun) · masutaka

PHP の特殊メソッド __get(), __set()

class に public な変数(プロパティ)を定義することは、オブジェクト指 向のカプセル化の観点から論外ですが、private なプロパティを定義して、 get_プロパティ名(), set_プロパティ名() とかを作るのもイケてなかった のですね。(薄々気づいてはいましたが…。) PHP には __get() と __set() という特殊メソッドがあります。 例えば $myclass = new MyClass; $myclass->hoge = 1; の場合、定義していれば MyClass::__set() が呼ばれます。 以下のように private なプロパティを定義し、__get(), __set() を介し てアクセス制御すると良いでしょう。このプロパティは読み取り専用、こ のプロパティは両方大丈夫とか。 class Post { private $title; private $content; private $author; private $comments; private $_getters = array('title', 'content', 'author', 'comments'); private $_setters = array('title', 'content', 'author'); public function __get($property) { if(in_array($property, $this->_getters)) { return $this->$property; } if(in_array($property, $this->_setters)) { throw new Exception('Property "' ....

2012-05-13 (Sun) · masutaka

{Jenkins x CakePHP2 (6/6)} 他にインストールしたプラグイン

※ 詳細情報は「Jenkinsの管理」>「プラグインの管理」から辿れる、各プ ラグインのリンク先を参照して下さい。 Emotional Jenkins Plugin これはインストールした方がよいでしょう。そしてテストを失敗させましょうw 各プロジェクトの設定で ON/OFF できます。 IRC Plugin 設定すると、指定した channel に Jenkins さんが常駐します。ビルド結 果を IRC で通知してくれるだけでなく、IRC から Jenkins を実行できた りもします。 私の設定は以下のとおり。 Hostname chat.freenode.net Port 6667 Channels Name #example Nickname jenkinsbot Command prefix jenkinsbot: (高度な設定)Use /notice command チェックを入れる Hostname と Port と Channels Name を設定するだけで動くはずですが、...

2011-12-30 (Fri) · masutaka

{Jenkins x CakePHP2 (5/6)} Jenkins を自動実行する

「リモートからビルド (例: スクリプトから)」がうまくいかないので、 とりあえず「SCMをポーリング」にしました。 10 分おきにポーリングです。 */10 * * * * Jenkins は良くできたツールなんだけど、微妙に設定が効かないことがあ るよなあ。単にまだ自分に馴染んでいないだけなのか。

2011-12-30 (Fri) · masutaka