サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Switch 2
tanakahisateru.hatenablog.jp
これは PHP Advent Calendar 2017 - Qiita の12日目の記事です。 わたくし先月、PHP - The Wrong Way を日本語に翻訳しました。 www.phpthewrongway.com 衝撃の扉絵はご覧いただけましたでしょうか。 これは2017年の Symfony Live London で Laravel を笑い者にしている様子 を描いた風刺画です。 うそですけどね。 でもどうですか、そういう絵だといえばそう見えませんか? ロンドンでの事件は Laravel と Symfony の間にある摩擦ですが、それと相似な関係は、ユーザーコミュニティ全体と Laravel のようなものとの間にこそ、より深刻な状態で横たわっているのではないでしょうか。このロンドンのブーメランは、自分の翻訳進捗にずいぶん影響しました。 実を言うと自分は、あまり多くの人に PHP
「IntelliJ IDEA ハンズオン」、献本いただきました。著者であり、JetBrains 代理店サムライズムの代表でもある山本祐介さん、ありがとうございます。 http://amzn.asia/0ELFU8Qamzn.asia JetBrains の IDE 製品は大好物で、普段からとてもお世話になっています。ということで、さっそく読ませてもらいました。 読み始めて真っ先に思ったのは、これ PHPer でも買って全然損ないな、です。 現在の PHP は、文法的にも、技術文化的にも、非常に Java に似た言語となりました。なので、Java を中心に解説されている本だとはいえ、その解説の半分以上は PHP と PhpStorm でも活かせる内容だと感じました。 本書は二部構成になっていて、第一部はこんな感じ... HTMLとCSSとJavaScriptの記述を通じて操作感を練習 思いつ
IntelliJ でブランチ間の差を見たいときは、まず基準ブランチをチェックアウトしてからここ で それぞれのコミットの diff を見て、トータルでどれだけ違うかは、Log を Diff に これで HEAD 同士の比較です。 でも master が他のプルリクエストをいろいろマージしていると、作業ブランチはあまり変えてないのに、master が進んでいくせいで差がどんどんできてしまいます。ここまでのスクリーンショットでもすでに README.md が master 側で進んじゃってますね。 そうなると時間が経つほどに、ブランチ HEAD 同士を比べることと、作業ブランチのコミットを累積してどんな作業をしたのかを見ることは、意味が違ってきます。数人で分担作業したものがリリース直前になると、個別のブランチよりもマージを進めている master の方が多くのファイルを変更しちゃってるなんてこ
これ tanakahisateru.hatenablog.jp だいぶ古くなって、PHP7の事情とか反映できていないのもあって、計測し直してみるかと… で、そのときたまたま GitHub - phpbench/phpbench: PHP Benchmarking framework を使ったら、これが思いのほかよかった。というわけで GitHub に上げました。 github.com PhpBench はベンチマークフレームワークです。基本、PHPUnit のように、ベンチマーク用のクラスに各シナリオを表すメソッドを書けばOK、あとは CLI から vendor/bin/phpbench run ... で引数にオプションいろいろ指定して実行。 ここがよかった 1 setUp() 的なメソッドをアノテーションで指定できます。事前条件の準備がベンチマーク結果に影響しないよう、逃がせるのがいい
Vagrant を使って仮想環境で開発するさい、共有フォルダ (Vagrantfile の synced_folder 設定) が仮想マシンの通常のフォルダに比べてものすごく遅いという問題があります。そこで、現実的な PHP のアプリケーション (実際に運用しているWebサイト) を使って、実際に共有フォルダの影響がどのくらいあるかという調査をしてみました。 編集したソースコードの同期を簡単にするには、やはり共有フォルダを使うのが一般的でしょう。変更するたびに手動でファイル転送する方法だと、面倒なうえ同期ズレが心配です。ですが、PHP はリクエストのたびにソースファイルをスキャンします。つまり、十分に速いファイルシステムにソースが置かれていないと、毎回その I/O のペナルティを受けることになります。 (他の言語ラインタイムだと、いちどメモリ上にコードが乗ってしまうと、以後プログラムをロー
祝 PhpStorm 2016.3 リリース 2016/11/24、な感じのネタです。 PhpStorm 2016.3 is now released! | PhpStorm Blog 先日、株式会社ロックオン 様の社内勉強会に招待されて、PhpStorm のワザをいろいろ共有してきました。EC-CUBE3のソースを開いてインスペクションかけては「あ、ここ型検査効いてませんね...」「依存はmixed型で取ってくるんじゃなくて型を持ったフィールドに注入しないと...」とかひどいことやりました申し訳。 そのとき簡単な PHP のプログラムを通しで作るデモを雑に作っていったんですが、これ実はいい出来なんじゃないかということで、ちゃんと仕上げて公開したいなと思い... というわけで、約40分の PhpStorm 初心者向け (PHP 初心者とは言っていない) ライブコーディングですどうぞ。 Ph
PHPで親子関係のオブジェクトが相互に参照を持つ ($parent->children がありかつ $child->parent がある) ケースの話をしていたとき、循環参照の話題が出たのでふと気になって調査してみました。 結論からいうと、PHPは5.2まで、単純な参照カウンタ方式のGCのみを採用していました。5.3からは、参照カウンタ方式に加えて、循環参照を回収するGCも併用するようになりました。 PHP: 循環の収集 - Manual PHPの変数は、基本的には参照カウンタが0になった時点でメモリを解放します。が、それだけでは、循環参照があると0までカウンタが落ち切らない変数が発生します。かといって、毎回循環参照をチェックするとパフォーマンス低下が発生します。そこで、GC監視下の変数が一定数 (コンパイル時のGC_ROOT_BUFFER_MAX_ENTRIES定数、通常は1万) を超え
MySQLのインデックスの代わりにElasticsearchを使おうと思い立っていろいろやってみた結果、Elastic社のホスティングけっこうオススメなんじゃないかってなった話です。これです: www.elastic.co 経緯としては、AWSにのっけたサービス、とりあえずMySQLとRedisだけでやってきた仕組みが、そろそろノーキャッシュ新規クエリ単発で1秒以上かかる場合が出てきたというのがあります。 アプリケーションで決まったパターンの問い合わせだけやってるぶんには、問い合わせのパターン数だけ複合インデックを作ればいいし、負荷分散したければリードレプリカが簡単、ということでほとんどの場合MySQLでいいのですが... MySQLは個別のインデックス勝手に組み合わせてくれない、全パターン定義しないといけない 管理者が使う検索機能のよっては、想定したインデックスにうまくヒットしない条件に
なになに あまり有名ではないのでもしかしたらご存じないかもしれませんが、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カンファレンス福岡大会 2016 に行ってきました。 phpcon.fukuoka.jp 今年はPHPカンファレンスが日本国内で年4回開催されるという、前代未聞の年となりました。 また、2016年は、PHP5.1.2という重要なマイルストーンのリリースからちょうど10年という時が経っています。 5.1.2というバージョン番号は、PHP5対応のOSSの多くが、最低サポートするバージョンはここだよという基準として、もっとも多く採用していたバージョンです。たしか、各LinuxディストリもここをPHPの最初の5系として動き出したような... 最初のPHPリリースからみると約20年、そう考えるともう、PHPの歴史のうちほぼ半分が、PHP5が主流だった歴史なわけです。PHP5への転換から10年の節目で、これだけPHPカンファレンスを開催したいと考える地域が増えたのは、本当にPHPが良くなっていっ
10月3日に行われたPHPカンファレンス2015に行ってきました。で、いいかげん蒲田グルメレポート「みんなPHPカンファレンスに行くべき、なぜならメシが美味いから」とか書かなきゃと思っていたけど、変えることにします。 スライド公開後、残念ながらとても悪い評価を集めてしまったものがありました。 PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015 自分も、他に素晴らしい話が数多く出た中、申し訳ないけど自分の中で上位には入らないなとは思う発表でした。ただまあ、経験を積んでいってくださいというだけで、そこまで問題視すべきことじゃないと思っていました。 が、あまりにもあまりにも... 面白くないならスルーでいいのに、なんでわざわざ食ってかかるかなぁ、って Twitter を眺めてて... 当事者にとってすらそこまで必要ない
この記事は「 PHPカンファレンス関西2015 」の リレーブログ のエントリーです。 昨日は、@aa7th さん PHPとScalaと私 #phpkansai でした。 このエントリーのタイトル、「はやいで! つよいで! ワテらのPHP!!」というのは、もしかしたら今年のPHPカンファレンス関西のテーマになるかもしれなかかった文言です。これ結局は採用されず、今年は「テーマなし」ということでボツになりました。 が、こいつが出てきたときの空気感がすごく良くて忘れたくなかったので、こうして残しておこうと思いました。関西人の冗談みたいな文言ですが、これ実は今のPHPコミュニティにとって、とても大事なメッセージを含んでいると思うのです。まじで。 はやいで! つよいで! ワテらのPHP!! では、ひとつひとつ解説していきましょう。 はやいで! 速いといえばPHP7ですよ。 ausweb.com.au
第19回関西PHP勉強会 Yii Framework 2.0 リリース記念勉強会 の資料はこちらです。 だいぶあおり気味なのは、一般公開を意識せずに書いているためです。その場にいる人向けに、今日はこういう勉強会なので空気読んでね、というのが入っているのをご了承ください。 Yii 2.0 とは ベータリリース記念 第一回勉強会の資料 https://gist.github.com/tanakahisateru/cf8ef578d7ea24ea429a ※ イベントまわりでちょっとオススメじゃない書き方があります 過去の発表やブログなど http://www.slideshare.net/tanakahisateru/phpcon-2014yii http://image.slidesharecdn.com/yii-121012040114-phpapp01/95/yii-31-728.jpg
きっかけは、prototype と constructor と __proto__ の関係を再確認していたときでした。JavaScriptはこうだけど、これって、AltJSな言語の継承はどうなってるんだろうと思って試したくなりました。 ちょっと気持ち的に、なんだか宗教に入ったみたいに俺は JavaScript がわかったって声高に言う人、だいたいみんな、プロトタイプチェーンによる移譲がクラスベースの継承に束縛されていた思考のブレイクスルーなんだぜ、みたいに言うんだけど、いったいそれがどれほど素晴らしいものなんだろうと考えてしまい... もしプロトタイプチェーンがそんなに素晴らしいんなら、npm にあるほとんどのライブラリがチェーンを活かして作られてない理由が説明できない。もしかしたら、仕組みがいくら面白くても、実際のメンタルモデルにフィットせず、実は使い物にならないんじゃないか ----
PHPカンファレンス関西2014リレーブログ11人目です。イレブンです。イレブンといえばワールドカップ観戦で忙しいこの時期ですが、みなさんPHPカンファレンスへの心の準備はいかがですか。サッカー疲れでバテないように、テンション上げていきましょう。 先週は、@tbsmcd さんの『機関区 : カンファレンスで起きる何か』で終わっていました。うまれかわったPHPerのエピソード、涙腺がゆるみますね。今年は、もっと多くのビギナーが最後まで楽しめるように、という構成を意識してみました。まだ勉強会慣れしていない人も、いい意味でショックを受けてもらい、うまれかわり感を持って帰ってもらえたらと思います。 さてタイトルの MVC、MVC といえばもちろん Microsoft Visual C++ ですよね。ちがいますね。ごめんなさい。いまどきの PHPer にとっては MVC = Mac, Vagrant
PHP5.5.13のビルトインサーバーで、Yii2.0-betaのDBアクセスを含めた実装をベンチマークテストしてみました。あ、ベンチマークは意味が無いとかいうのはナシです。 HelloWorldベンチだと、ルーティングとビューのオーバーヘッドを比較するしかできません。簡単にチートできてしまいます。データベース接続などのライブラリをプリロードしている方が不利になってしまいます。Yii1は公式発表のHelloWorldベンチがずば抜けて速かった(曰く、ほとんどのコードは必要になるまでロードされないことを表しているらしい)のですが、そういう部分だけを際立たせて、だから全体が速い/遅いと考えるのはおかしいです。 そこで、postとcommentテーブルを持つ同じデータベースに接続して、postデータを1件とそれに付随するコメントをすべて取得する(実際にはデータが1件だけある)処理を含みました。
「えー、会場の時間の関係でこの後の人は発表時間2分でお願いします」 という消化不良だったので、Yii2を試した感想を書きます。 http://www.yiiframework.com/news/76/yii-2-0-alpha-is-released/ 12月のアタマで、Yii2がようやくアルファ版になりました。パブリックプレビューからずいぶん経ちましたね。あと残るはNoSQLのActiveRecordを作っていろいろ仕上げに入るということで、待ち遠しいきょうこの頃、PHP勉強会で「やり残したことをもくもくしよう」というわけで、どこまで進んだのかをじっさいに見てみました。 まず、プロジェクト作成が Composer で簡単にできるようになっていました。 $ php composer.phar create-project --stability=dev yiisoft/yii2-app-b
アドベントカレンダーを書いたらコメントに面白い課題もらいました。 「Python - すごく簡単なアルゴリズムがphpで書けなくてつらい」のやつ。 id:methane php の array と参照の関係がクソで無いなら、 http://qiita.com/methane/items/41e1376c41d8c15e8894 これを普通に書いてみてください。 id:tanakahisateru 面白そう。やりましょう。 最近ずいぶんPHP成分多めですが、実はPythonも好物なのでホクホクです。 といっても、あのエントリーは「php の array と参照の関係がクソで無い」とは言ってなくて、むしろ逆にそこは腐ってるから避けろ、オブジェクトで囲んでやれ、という話だったので...(^^ そのままやってもPythonの性能にはならないとわかっているので、配列を直接使うのはイヤです。なので、オ
この投稿はPHP Advent Calendar 2013の12日目の記事です。 PHP恒例行事の参照と三項演算子のdisりですが、そろそろあさってな議論はやめませんかという話です。 今年のPHP-dis大賞といえばこちら。 PHPとかいう糞言語|いんまのブログ ※ 追記: これ書かれたのは2012年でしたすんません。 なんで君たちそんなコードが必要なのかね、と。結論から先言うと、きみたちがPHPが使えないって思うのは、そんな挙動に左右されるようなコードを書くからでしょ、だからCとかRubyとかそういう簡単な言語でわかった気になっている初心者はまったくもう...というわけでPHPの言語文法の基礎んとこ、いきますね。 まず、PHPのarrayは「値」です。もちろん文字列も「値」です。値は値なんだけど、それはミュータブルです。PHPのarrayもしくは文字列の代入は、一見すると、ポインタを使わ
出版社から頂いたので読ませて頂きました。ありがとうございます。 PHP逆引きレシピ 第2版 PHP逆引きレシピ 第2版 (PROGRAMMER’S RECiPE) 2800円なんですが、この価格に対して内容量おかしいぐらい豊富です。 体裁としては、まだ経験値が少ない初心者向けという雰囲気ですが、実際の動作に影響する点については、驚くほど正確な自己ツッコミが入っていて、実はすごい知識に支えられているんだというのがわかります。重箱の隅をつつけばつつくほど、勉強になる本だと感じました。 おそらく初版で意識していたPHP4〜5.2への配慮を、きっちりと、今の世代では切り捨てるべきものは今のやり方に置き換えてあるのは、素晴らしいです。これだけの書き換えをやって、全ての内容を検証してあるんだとしたら、本当に頭が下がります。 加筆された部分は、セキュリティ対策に関する解説が期待をはるかに上回っていました
退職エントリーがあるなら就職エントリーがあってもいいじゃないか。 というわけで10月からクックビズ株式会社に就職しました。 就職といっても、フルコミットより何割かゆるいコミットメントで、現在個人で扱っている案件をすべて切る必要はないという条件で、まずは半年単位の契約でやらせてもらうことになりました。長期的に確保されちゃうことはできないですが、機動力は衰えておりませんので皆様よろしくお願い致しますですよ。 クックビズは、飲食業界を専門とした人材サービスを行っている会社です。ITサービス/ソフトウェア開発そのものの会社ではないので、人の割合でいうと技術の人の割合は少なめです。 なんでまたそこに。 阪急梅田駅と御堂筋線梅田駅のすぐ近く。もちろんJR大阪駅も。ということは...グランフロントもヨドバシも眼と鼻の先です。阪急の高架を抜ければ茶屋町側に出るのもすぐなので、中津の某 1x1 勉強会にも歩
PHPの関数定義はこんな変態的な書き方ができる - 頭ん中 に、続いて。アンリーダブルコードで勉強しようというのがあった、そのとある勉強会の発表ネタです。 これは、PHPのMarkdownパーサ の実装を可能な限りそのまま綺麗に変換してJavaScriptに移植しようという js-markdown-extra をやっていたとき、大ハマりして修正に苦労したバグの話から来てます。 演算代入。+= とか *= とかのやつ。関数型の人以外はきっと常用してますね。じゃあ問題。 <?php $tokens = array("a", "b", "c"); $tokens[0] .= array_shift($tokens); print_r($tokens); こうするとどんな結果が出力されるでしょうか。PHPです。 自身の先頭から要素を取り出して、それを先頭要素に文字列追加する。array_shift
またしても釣りっぽいタイトルをつけてしまいました。ご無沙汰しております。 PHPMatsuri 2013の参加レポートも書かずに何をやっていたのかというと、実は本の執筆に参加させて頂いており、ちょうどその頃忙しすぎて忘れていました。こんな本です。 PHPエンジニア養成読本 〔現場で役立つイマドキ開発ノウハウ満載! 〕 (Software Design plus) 作者: 新原雅司,原田康生,小山哲志,田中久輝,保科一成,大村創太郎,増永玲,PHPエンジニア養成読本編集部出版社/メーカー: 技術評論社発売日: 2013/09/13メディア: 大型本この商品を含むブログを見る その名も「PHPエンジニア養成読本」。担当させてもらったのは、注目のフレームワーク、PHPUnit、Gitといった内容です。詳しい内容は先に書かれているエントリご覧ください。 いまどきのPHP開発ノウハウを詰め込んだ『P
3回目となる PHPカンファレンス関西2013、今回はスタッフとして参加してきました。 PHPカンファレンス関西2013まとめ - Togetter 去年のテーマは「好きやねんPHP」でしたが、今年はなんと「PHPの未来を関西から」です。大きく出ましたね。どんな未来を発信したのでしょうか。 というわけで僕としては、現在の水準と比べて何が「未来」っぽいと感じたかを書きたいと思います。(他のネタは他のスタッフがやってくれると思うので。ブログを書くまでが勉強会ですしね。) 多言語パネルディスカッション ものすごい過去の話から始めます。 それは、PHPユーザーは他の言語から学んでいるのか、という点。 PHPユーザーが他の言語ユーザーよりも弱いのは、そこなのではないか。 404 Blog Not Found:「PHPなめんな」と「(Perl|Python|Ruby)をなめんな」の違い セッション中に
あ、釣りタイトルっぽい。いちおう、釣りじゃなくて率直に考えたこと、のつもりなので誤解しないでね。 きのうは、PHPのトレイトについてものすごく前倒しで調査しました。で、そこで、Rubyのmix-inに似ているというところまで行ったところで、こんなコメントをいただきました。 Rubyの例は、includeされたモジュールについてもis_a?を使えばいいです。 ええ、たしかにそうなんです。が、この指摘が出るまで、 module SwimmingAnimal def swim return "swimming" end end class Penguin < Bird include SwimmingAnimal end pingu = Penguin.new puts "pingu" if pingu.is_a? FlyingAnimal #moduleを含んでいるとis_aに応答する put
1/30(水) 第二回 JetBrainsユーザーグループ in 大阪 でPhpStormの発表をしてきました。 JetBRAINSという会社の、主に IntelliJ IDEA とそのファミリー製品についてのお話を聞かせてもらいました。僕は、個人的にとある事情でPhpStormを使う機会に恵まれて、しばらく前から機能のいいところをツイートしてたんですが、それを今回の主催者のaa7thさんに見られていたらしいという経緯で、簡単な1セッションを持たせていただきました。 PhpStormを使おう --高槻からは快速急行が早くなります #jbugj from Hisateru Tanaka PhpStormはIntelliJ IDEAのサブセットで、IDEの基本ツールに、Web共通の機能とPHP関連だけを残して、デフォルトメニュー構成をPHPに最適化した感じのものです。 PHP IDE :: J
FirefoxにはUser-Agentを切り替える拡張がいっぱいありますね。本体の開発ツールに「レスポンシブビュー」なんてあるので、あとは拡張でUA切り替えを使えば、かなりいい線でスマートフォンの真似ができそうです。 でも... けっこう多くのUA切り替え拡張で、サーバに送信するときのUAは変更できても、いざJavaScriptでnavigator.userAgentを取ると、まだFirefoxのまんまだったりします。 そこでこの拡張もいっしょに! User-Agent JS Fixer https://addons.mozilla.org/ja/firefox/addon/user-agent-js-fixer/ サーバに送信したUAの値を取り、レスポンスを受けたとき、それをそのまま、navigator.userAgentにセットしてくれます。で、JavaScriptから見てもUAがちゃ
Pinocoだって実はすごいんだぞ、Pimpleになんて負けないもん、というわけで、 PHPメンターズ -> Pimpleでシンプルに正しくDIを理解する をPinocoで理解してみようというネタをやります。先にこれを見ておいてください。 あ、「Pinocoってなんやねん、あっちょんぶりけかよ」って思った人すみません。Pinocoは拙作のマイクロフレームワークです。いわゆるオレオレの一種ですが、オレオレにしてはかなりよくできたほうだと思います。RESTなAPIを作る他のと比べて、どっちかといえばWebサイトを作るほうが強い感じのヤツ。 https://github.com/tanakahisateru/pinoco で、DIですよ。依存性注入ですよ。楽しんご的なアレじゃないですよ。オブジェクト指向ですよ。 Pinocoの第一印象はみんな「プレーンPHPっぽいね」で、それはそれで狙い通りなん
http://d.hatena.ne.jp/tanakahisateru/20121106/1352213410 の、続きです。 じゃあいよいよ本編。個人的にここポイントじゃないかと思ったことが、ろくでもない日記に混じって出てきます。 当日は10:00すぎ入りでした。誰かみたいに場所を間違えかけていた人にはそっちじゃないよとTwitterで言ったりしながら、ウコンの力で会場へ。朝イチのトイレで豚の背脂の臭いがしたのはナイショです。 開場が10:00でオープニングセッションが13:00開始というのは、すごくいいアイデアだと思いました。それだけ時間があれば、本編が始まるまでに、久しぶりに会った人と挨拶したり、初参加の人は場に慣れたりできますね。だいたいみなさん「この電源いいですか」で会話が始まる感じで、オープニングまでにはすっかりみんなの緊張感が取れていたと思いました。 作業環境を確保してネタ
次のページ
このページを最初にブックマークしてみませんか?
『なんたらノート第三期ベータ』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く