タグ

ブックマーク / blog.tojiru.net (7)

  • 型宣言を利用した自動的プログラミング(という夢)

    PHPアドベントカレンダー2016の2日目です。この記事に合わせてライブラリでも作ろうと思ってたのですが、全然間に合わなかったので夢という体でポエムを書こうと思います。 祝7.1リリース ちょうど記事を書いていたらPHP7.1がリリースされていました。おめでとうございます!みんな今すぐビルドするんだ! http://php.net/archive/2016.php#id2016-12-01-3 去年も12月1日に7.0がリリースされてたので、毎年JSTだと12月2日に新しいPHPが手に入るような感じですね。 今回はマイナーバージョンアップなのでそんなに劇的な機能はありませんが、個人的にはiterable型が超欲しかったやつです。 Nullable types Void return type Iterable pseudo-type Class constant visiblity mod

    型宣言を利用した自動的プログラミング(という夢)
  • トランザクションは再利用の敵である

    釣りっぽいタイトル。「RDBのトランザクションが絡むとアプリケーション側のプログラムが書きにくくなる」という話です。 もちろんですが、RDBのトランザクション機能は偉大であり、Webアプリケーションでも意識して使わなければならず、「トランザクションなんて使うな」と言いたいわけではありません。 合成できない関数 PHPで素のPDOから考えます。たとえば、以下の関数に問題はあるでしょうか? <?php /* * 古いデータをアーカイブテーブルに移す関数のイメージ */ function moveDataToArchive(PDO $db) { $db->beginTransaction(); try { $db->exec(' INSERT INTO archives SELECT * FROM data WHERE published < CURRENT_DATE '); $db->exec

    トランザクションは再利用の敵である
  • Composerの作者に会った (PHP勉強会 番外編レポート) #phpstudy #composerphp

    Composerやmonologの作者である@seldaekが来日するということで、2016年7月22日にPHP勉強会の番外編が開催されました。 PHP勉強会@東京〜番外編〜 みなさまお疲れ様でした! #composer #php #phpstudy #eventdots pic.twitter.com/wvKHgpDNGp — しめじ (@TAKA_0411) 2016年7月22日 動画 @seldaek の発表 発表資料はこちら: Composer in 2016 #phpstudy #eventdots pic.twitter.com/h4UeksQGvJ — Hiraku (@Hiraku) 2016年7月22日 Composerを使い込んでないとわからない内容もあったと思うので、勝手に補足解説しようと思います。 composerのエコシステムについて Composerの中央リポジ

    Composerの作者に会った (PHP勉強会 番外編レポート) #phpstudy #composerphp
  • packagist内でlaravelの定義が巨大すぎて困る

    ここでぼやいても誰にも伝わらない気がするけど、一旦吐き出しておきます。 事の経緯 私は https://packagist.org のミラーサイト packagist.jp を運営しています。 スクレイピングのプログラムがバグっていて、1ヶ月に一度ぐらい古くなったファイルを掃除して回る定期作業があるのですが、その中で妙にlaravel関連のパッケージ情報が巨大であることに気づきました。 例えば、私のMacのローカルキャッシュに残っているパッケージ情報をファイルサイズでsortすると、上位は全てlaravel関連のものになります。これらはpackagist.jpの中にミラーリングされているファイルと全く同じものです。 1971473 p-provider-2016-01.json 2058474 p-provider-2016-04.json 3687200 provider-illumin

    packagist内でlaravelの定義が巨大すぎて困る
  • PHP7でクラスはバラバラになった

    PHP7では無名クラスが導入されます。 PHP7調査(26)無名クラスの導入 - Qiita これ、単に構文だけの話にせず、「クラスの第3の能力が単独で切り出された」と捉えると面白いのかなと思いました。 クラスが持つ3つの役割 クラスが持つ3つの役割 - 西尾泰和のはてなダイアリー 「コーディングを支える技術」の西尾泰和氏によると、クラスには ユーザー定義型 実装の再利用の単位 インスタンス生成器 の3つの役割があるといいます。 クラスが扱いづらい概念だとすれば、それはこの3つの能力をまとめて持っているからです。 PHPのユーザー定義型、インターフェース PHPの場合、タイプヒントがありますし、定義したクラスは後から拡張することができません(オープンクラスではない)。 if ($obj instanceof FooClass) { //... } この「$objがFooClassのインスタ

    PHP7でクラスはバラバラになった
  • composerを速くするプラグイン・prestissimoを作った

    composerが遅くてお嘆きの日PHPerの皆さんこんにちは。 表題の通り、追加インストールするだけでcomposerが速くなるプラグインを作りました。 # インストール $ composer global require hirak/prestissimo # アンインストール $ composer global remove hirak/prestissimo インストールした状態でlaravel/laravelcreate-projectすると、26秒とかでダウンロード完了しました。Laravelは50個ぐらい依存パッケージがあり、同じ環境で普通にインストールすると5分ぐらいは最低かかるので、10倍以上速くなってます。 2016/1/13(水)にPHPBLT#2というイベントがあり、その中で同じデモをしてきました。 Composer並列化プラグイン #phpblt from

    composerを速くするプラグイン・prestissimoを作った
  • JSON SchemaとPHP

    というタイトルで発表してきました。Engine Yardさま、いつも会場提供ありがとうございます。 ( 第72回 PHP勉強会@東京 : ATND ) JSON Schemaというものがあって、すげー応用範囲が広くて、バリデーションなら大体これだけで出来ますよーという内容でした。 スライドはちょっとネタに走ってますが、書いてあることは割と気です。「JSON SchemaはJSONのバリデーションを行うためのもの」と一般には定義されていますが、JSON互換のデータ構造を持っている動的型付き言語においては、JSON Schemaで言語ネイティブのデータ構造が全てバリデーションできてしまうのです。 JSON Schemaはいまひとつ流行ってない気もしますが、構造そのもののバリデーションに主眼を置いていたり、言語を超えてバリデーションルールを共有できたり、結構おもしろいことができるので、使ってみ

    JSON SchemaとPHP
  • 1