読者です 読者をやめる 読者になる 読者になる

破棄されたブログ

このブログは破棄されました。

PHP でシェルを介さずプロセスを起動させたいと思った

PHP

TL;DR; 処理の流れとしては、 popen(3) とほぼ同じで、 fork(2) して exec(3) させるだけである。 ただし、 pipe(2) が使えないため、プロセス間通信には名前付きパイプ (fifo) を使う。 素直に C Extension 書いた方がよのだろう。 実装 Debian 8.5 で動作…

コンストラクタが難しい

コンストラクタが難しい。どこが難しいかというと、オブジェクトを渡すタイミングが難しい。 ざっくり言うと、設計もないし行き当たりばったりでコード書いてると、クソコードの海に沈む。テストがあってもなくても、クソコードの海に沈む。 結局自分の中で…

PHP から Amazon SQS を使ってみる

SQS の入門ガイドが未翻訳で PHP の SDK も古いままだったから、 SDK 2 でやってみた。 IAM の準備 IAM のコンソールから試用用アカウントを作成してクレデンシャルを保存する。 作成したアカウントに SQS のアクセス権を与える。今回はとりあえずフルアクセ…

FuelPHP のマイグレーションの挙動確認

テーブルを作る oil g migration create_example Creating migration: /path/to/fuel/app/migrations/014_create_example.phpoil refine migrate Performed migrations for app:default: 013_drop_hoge 014_create_exampleテーブルを作って消す oil g migrat…

インスタンス変数の型が基底で変更されてこわい。

FuelPHP のテンプレートコントローラのサンプルコードで、定義時には string なインスタンス変数がインスタンスメソッド内でなんらかのオブジェクトとして扱われてる箇所ある。 template->title = 'Example Page'; // Object $this->template->…

To Ruby From PHP を翻訳しました。

天邪鬼なぼくが重い腰を上げて Ruby を始めるにあたって、参考になったドキュメントが ruby-lang.org にあったのですが、日本語版の記事がなかったため、翻訳しました。 誤訳・苦情等はコメントまでお願いします。GitHub にレポジトリがありますが、/ja/docu…

ビット演算の使い道

この記事 2013-04-06 - がるの健忘録 を読んで以来、一生ビット演算なんかとは縁がないまま死んでいくんだろうなとか思ってた矢先に使い道を思いついたんでメモ。揉め。

MySQL の now() 関数について

Web アプリにおいて、更新系クエリを MySQL に投げる時、now() 関数は使わんほうがいいんじゃねって思った。 想定する環境 PHP (>=5.1.0) MySQL (>=4.1.1) 状況 ユーザが投稿をポストすると、それをデータベースに記録するようなものを考える。 クエリを投げ…

PHP の関数内関数

PHP

PHP で関数内関数とかできること知らんかった。 <…

PHP のクロージャ

クロージャといえば JS !!!!! ってくらい JS のクロージャしか知らんかったので、 PHP のクロージャで JS みたいなことできるのかやってみた。まずは、JavaScript のコード。当たり前に、期待通りの挙動。 function getFn(arg) { var inner_variable = …

レキシカルスコープ

顕在化する Perl リスクを横目に、どこのサーバにも入っててシェルスクリプトより強力だし PHP みたいにカスじゃないって理由で Perl のイントロダクション perlintro を読んでたら、変数スコープのところでちょっと気になる記述があった。 my creates lexic…

PHP の論理演算子と代入式

JavaScript は論理演算子でこういうことができるし、よく使う。 演算子の左が false と評価され、右が true と評価されれば、true ではなく右側の値を返すってやつ。機能検出とかでよく見かけるアレ。 var someVar = false || 'someValue'; // return 'someV…

PEAR::DB の DB_OK について

PEAR::DB で更新系クエリが成功した際に、int の 1 が返ってくるんで、なんでかと思ったら、 更新系クエリ成功時の戻り値 DB_OK はオブジェクトではなくて定数だったというオチ。 DB_OK は DB.php の 47 行目あたりで定義されてる。(バージョン 1.7.13) /*…

PHP の md5() 関数と md5sum コマンドの返す結果違うわけ

PHP の md5() 関数が返す結果と、md5sum コマンドの返す結果が異なっていたので、また PHP のクソ仕様かと思ったら自分の頭がクソ仕様だった。 md5sum コマンドも md5() 関数も与えられた値を RFC 1321 にしたがって忠実に計算して返していました。ごめんな…

do-while(0) …そういうものもあるのか…でも使えないかなあ

do-while(0) 文中で break してしまえば、処理を中断できるし無限ループに陥ることもない。 手続き型プログラミングで、早期リターンみたいなことを実現する方法の一つになるのかな。 It is a way to simplify error checking and avoid deep nested if's. F…

PEAR コードの内の Vim 折り畳みマーカー

PEAR のコード読んでたら、やたらと // {{{ // }}} がでてくるからなにかと思ったら、 "折り畳みマーカ (fold markers)" (// {{{ および // }}} ) は、オプションです。折り畳みマーカを使わない場合は、 foldmethod=marker を vim のヘッダから削除してく…

PHP の持続的データベース接続とリソースがよくわからん

PHP では、あらゆるオブジェクト・変数・リソースが、参照が途切れた時点でガベージコレクションされるものだと思っていたのだけど、中にはそうでないものがあるらしい。 そのひとつが持続的データベース接続。 注意: 持続的データベース接続は特別で、ガベ…

PHP でサブクラスのインスタンスから基底クラスの静的変数を設定するメソッド呼び出した時の挙動

PHP で、基底クラスの静的変数を設定するインスタンスメソッドをサブクラスのインスタンスメソッドから呼び出したときの挙動を確認。 サブクラスから静的変数を設定した場合に、基底クラス側にも設定されるのかがわからなくなったのでコードを書いてみた。 …

無題

のどが痛い。 php からプロセスを実行する php からプロセスを実行する関数には popen() と exec() がある。 (いや、他にもいろいろあるけど割愛) で、違いがよくわからないから調べてみた。 Cygwin だからいろいろとアレ。 大雑把に言うと、同期か非同期…