タグ

ブックマーク / tanakahisateru.hatenablog.jp (11)

  • PHPのinterfaceなめんな - なんたらノート第三期ベータ

    はいタイトルは釣りです。 OOPのインターフェースはただの実装漏れチェック機能じゃないし、ましてや継承は差分プログラミングツールじゃないぞ。というのはわりと一般的な話だけど、Ruby(respond_to?でホントにいいの)とJava(インターフェースが自然すぎてユーザが意識しないのよ)が、PHPに対してOOPどうこうで偉そうに言うのはどうかなと思ったもので。まあそれと同時に、PHPの人自身がその意義を発見してるのかなという疑問もあったりしたんですけどね。 Rubyというのは「オブジェクト指向ってのはつまりメソッドに応答できるアヒルはみんなアヒルとみなせるよね」というレベルのダックタイピングで割り切った言語だと、個人的に認識しています。継承とミックスインにはis_aが応答するけど質はrespond_to?のほうで、インターフェースを宣言してなくてもメッセージ送れたらいいあの感じ。 そんな

    PHPのinterfaceなめんな - なんたらノート第三期ベータ
    oppara
    oppara 2017/05/11
  • PhpBenchバージョンの参照ベンチマークを書いてみた - なんたらノート第三期ベータ

    これ tanakahisateru.hatenablog.jp だいぶ古くなって、PHP7の事情とか反映できていないのもあって、計測し直してみるかと… で、そのときたまたま GitHub - phpbench/phpbench: PHP Benchmarking framework を使ったら、これが思いのほかよかった。というわけで GitHub に上げました。 github.com PhpBench はベンチマークフレームワークです。基PHPUnit のように、ベンチマーク用のクラスに各シナリオを表すメソッドを書けばOK、あとは CLI から vendor/bin/phpbench run ... で引数にオプションいろいろ指定して実行。 ここがよかった 1 setUp() 的なメソッドをアノテーションで指定できます。事前条件の準備がベンチマーク結果に影響しないよう、逃がせるのがいい

    PhpBenchバージョンの参照ベンチマークを書いてみた - なんたらノート第三期ベータ
    oppara
    oppara 2017/05/09
  • Vagrantプロバイダの共有フォルダ性能比較 - なんたらノート第三期ベータ

    Vagrant を使って仮想環境で開発するさい、共有フォルダ (Vagrantfile の synced_folder 設定) が仮想マシンの通常のフォルダに比べてものすごく遅いという問題があります。そこで、現実的な PHP のアプリケーション (実際に運用しているWebサイト) を使って、実際に共有フォルダの影響がどのくらいあるかという調査をしてみました。 編集したソースコードの同期を簡単にするには、やはり共有フォルダを使うのが一般的でしょう。変更するたびに手動でファイル転送する方法だと、面倒なうえ同期ズレが心配です。ですが、PHP はリクエストのたびにソースファイルをスキャンします。つまり、十分に速いファイルシステムにソースが置かれていないと、毎回その I/O のペナルティを受けることになります。 (他の言語ラインタイムだと、いちどメモリ上にコードが乗ってしまうと、以後プログラムをロー

    Vagrantプロバイダの共有フォルダ性能比較 - なんたらノート第三期ベータ
    oppara
    oppara 2017/03/14
  • いろいろあって Elastic Cloud がオススメな件 - なんたらノート第三期ベータ

    MySQLのインデックスの代わりにElasticsearchを使おうと思い立っていろいろやってみた結果、Elastic社のホスティングけっこうオススメなんじゃないかってなった話です。これです: www.elastic.co 経緯としては、AWSにのっけたサービス、とりあえずMySQLとRedisだけでやってきた仕組みが、そろそろノーキャッシュ新規クエリ単発で1秒以上かかる場合が出てきたというのがあります。 アプリケーションで決まったパターンの問い合わせだけやってるぶんには、問い合わせのパターン数だけ複合インデックを作ればいいし、負荷分散したければリードレプリカが簡単、ということでほとんどの場合MySQLでいいのですが... MySQLは個別のインデックス勝手に組み合わせてくれない、全パターン定義しないといけない 管理者が使う検索機能のよっては、想定したインデックスにうまくヒットしない条件に

    いろいろあって Elastic Cloud がオススメな件 - なんたらノート第三期ベータ
    oppara
    oppara 2016/06/02
  • PHPのarray操作はどれが一番速いか - なんたらノート第三期ベータ

    なになに あまり有名ではないのでもしかしたらご存じないかもしれませんが、PHPには高速高機能なforeachってイテレーション機構が言語組み込みにあるので、わざわざarray_mapとか書かなくてもいいんですよ!!!!!— 零崎ぞぬ織 (@tadsan) 2016年5月25日 array_mapに渡していいのはcallableな値のみで、 array_map(function(){ ... とか書き始めたらそれは敗北フラグ。素直に foreach で書け!— 零崎ぞぬ織 (@tadsan) 2016年5月25日 けど配列のフェッチと新しい配列への格納でPHPオペコード増えるし、組み込み関数のほうが速いんじゃないの? 検証してみた: > php -d memory_limit=-1 array-spped-test.php Ginq + Closure: 782.2070ms x1.00 G

    PHPのarray操作はどれが一番速いか - なんたらノート第三期ベータ
    oppara
    oppara 2016/05/26
  • AWS Elasticsearch Service を IAM ロールで認証する - なんたらノート第三期ベータ

    Elasticsearch Service を使おうと思ったら、VPCセキュリティグループに入れるのができないみたいで。無制限かIPで制限がIAMロールか... HTTPのAPIなのでどうやらS3やDynamoDBみたいに使うものってことらしいですね。 Signing an Amazon Elasticsearch Service Search Request — AWS SDK for PHP documentation AWS SDKのこれを使えというやつはPSR-7のRequestインターフェースを想定しているので、当にIAMの認証が通るか試してみました。 Credentialsがハードコードなのはダメって言われてるので、じっさいはdotenvとか使いましょう。 それにしても、もっとこう生curlとか古いGuzzleとかの勝手なやつでもいける形にはならなかったのかな、って、Sig

    AWS Elasticsearch Service を IAM ロールで認証する - なんたらノート第三期ベータ
    oppara
    oppara 2016/05/25
  • JavaScriptはいかにしてprototypeを捨てクラスベース継承を得るのか - なんたらノート第三期ベータ

    きっかけは、prototype と constructor と __proto__ の関係を再確認していたときでした。JavaScriptはこうだけど、これって、AltJSな言語の継承はどうなってるんだろうと思って試したくなりました。 ちょっと気持ち的に、なんだか宗教に入ったみたいに俺は JavaScript がわかったって声高に言う人、だいたいみんな、プロトタイプチェーンによる移譲がクラスベースの継承に束縛されていた思考のブレイクスルーなんだぜ、みたいに言うんだけど、いったいそれがどれほど素晴らしいものなんだろうと考えてしまい... もしプロトタイプチェーンがそんなに素晴らしいんなら、npm にあるほとんどのライブラリがチェーンを活かして作られてない理由が説明できない。もしかしたら、仕組みがいくら面白くても、実際のメンタルモデルにフィットせず、実は使い物にならないんじゃないか ----

    JavaScriptはいかにしてprototypeを捨てクラスベース継承を得るのか - なんたらノート第三期ベータ
    oppara
    oppara 2014/08/20
  • うまれかわるMVC 〜PHPカンファレンス関西2014にむけて - なんたらノート第三期ベータ

    PHPカンファレンス関西2014リレーブログ11人目です。イレブンです。イレブンといえばワールドカップ観戦で忙しいこの時期ですが、みなさんPHPカンファレンスへの心の準備はいかがですか。サッカー疲れでバテないように、テンション上げていきましょう。 先週は、@tbsmcd さんの『機関区 : カンファレンスで起きる何か』で終わっていました。うまれかわったPHPerのエピソード、涙腺がゆるみますね。今年は、もっと多くのビギナーが最後まで楽しめるように、という構成を意識してみました。まだ勉強会慣れしていない人も、いい意味でショックを受けてもらい、うまれかわり感を持って帰ってもらえたらと思います。 さてタイトルの MVC、MVC といえばもちろん Microsoft Visual C++ ですよね。ちがいますね。ごめんなさい。いまどきの PHPer にとっては MVC = Mac, Vagrant

    うまれかわるMVC 〜PHPカンファレンス関西2014にむけて - なんたらノート第三期ベータ
    oppara
    oppara 2014/06/23
  • PHPが糞言語なのはどう考えても参照をポインタだと思っているお前らが悪い - なんたらノート第三期ベータ

    この投稿はPHP Advent Calendar 2013の12日目の記事です。 PHP恒例行事の参照と三項演算子のdisりですが、そろそろあさってな議論はやめませんかという話です。 今年のPHP-dis大賞といえばこちら。 PHPとかいう糞言語|いんまのブログ ※ 追記: これ書かれたのは2012年でしたすんません。 なんで君たちそんなコードが必要なのかね、と。結論から先言うと、きみたちがPHPが使えないって思うのは、そんな挙動に左右されるようなコードを書くからでしょ、だからCとかRubyとかそういう簡単な言語でわかった気になっている初心者はまったくもう...というわけでPHPの言語文法の基礎んとこ、いきますね。 まず、PHPのarrayは「値」です。もちろん文字列も「値」です。値は値なんだけど、それはミュータブルです。PHPのarrayもしくは文字列の代入は、一見すると、ポインタを使わ

    PHPが糞言語なのはどう考えても参照をポインタだと思っているお前らが悪い - なんたらノート第三期ベータ
    oppara
    oppara 2013/12/12
  • HomebrewでPHP環境 現時点でのまとめ - なんたらノート第三期ベータ

    MacでHomebrewを使ってPHPの開発環境を作るまとめです。 HomebrewはMacPortsより圧倒的にコンパクトなのがメリットです。MacPortsでPHPをインストールすると、/opt/localに、Apacheを含め、すごい量のパッケージをインストールされます。PHPのビルドにApacheのライブラリが必要で、さらに、Apacheのビルドには...という具合。これだと、容量あたりの単価がかかるSSD搭載のMac bookがかわいそうですね。HomebrewのPHPは、MacOSにApacheがあるのを知っているので、依存が浅くて軽いです。 MAMP.appがあるじゃないかという人はちょっと待った。あのパッケージ構造、httpd.confとphp.iniとmy.iniがどこにあるかすごくわかりにくいんですよね。そのうえ、使っている拡張の最新バージョン追従が個別にできないのは辛

    HomebrewでPHP環境 現時点でのまとめ - なんたらノート第三期ベータ
    oppara
    oppara 2013/04/09
    HomebrewでPHP環境 現時点でのまとめ - なんたらノート第三期ベータ
  • OOコード養成ギブスとやらが人気らしい。 - なんたらノート第三期ベータ

    人気らしいので見てみました。 OOコード養成ギブス - rants エクストリームプログラミング(XP)同様、ある種の正論を極論に展開するとジョークになるということ?XPはソフトウェア開発の中で、人について考えるきっかけを与えてくれたよね。これも、アンチがいればいるほど、OOP神話について考えるきっかけになるもの? 個々の要素単位で議論しにくいXPと違って、これはひとつづつ突っ込めるので、やってみよう。多くの感想が、「現実のヨゴレ仕事にはフィットしない」って感じだけど、原理的にもビミョーだし、いじりやすいね。 まず、大前提となっているのが、リソースが無尽蔵にあると仮定され、かつ、型宣言が強制され、かつ、プリミティブ型をオブジェクトと区別する言語、つまり、Javaだけについての話なんですね。これは問題ありです。タイトルは「OOコード〜」ではなく、「Javaコード〜」でないと誤解を招く。 1.

    OOコード養成ギブスとやらが人気らしい。 - なんたらノート第三期ベータ
  • 1