タグ

ブックマーク / blog.yuyat.jp (9)

  • PHP/MySQL でレコードを N 件ずつバルクインサート | Born Too Late

    昨日の ParallelHttp の話に引き続き、PHP でのバッチ処理のパフォーマンス改善の話です。 あと、昨日と同じく PHP 5.2 で使えるライブラリを開発した話でもあります。 バルクインサートとは ひとことで言えば「複数のレコードをまとめてインサートすること」です。 例えば MySQL で言えば、 INSERT INTO `users` (`name`) VALUES ('foo'); INSERT INTO `users` (`name`) VALUES ('bar'); INSERT INTO `users` (`name`) VALUES ('baz'); ではなく INSERT INTO `users` (`name`) VALUES ('foo'), ('bar'), ('baz'); というようにやることです。 これで何が嬉しいかというと、サーバにクエリを投げてその結

    PHP/MySQL でレコードを N 件ずつバルクインサート | Born Too Late
    k-holy
    k-holy 2016/04/13
    バッチ処理でこれ使おう
  • Woothee を PHP に移植した (2014-02-18 追記あり) | Born Too Late

    TL;DR User Agent 判定器 Woothee の PHP 実装を作った Packagist には登録できてなかったりするので少々お待ちください (2014-12-18 追記 Packagist に woothee/woothee として登録しました) Woothee は便利プロジェクトなので盛り上がってほしい Woothee とは Woothee というのは @tagomoris さんが作った User Agent 判定器プロジェクトです。 Perl, Java, JavaScript, Python と、複数の言語に実装が用意されていて、元になるデータセットや、テスト用のデータセットは YAML 形式で公開されています。 詳しくは以下のブログ記事を読むのが良いでしょう。 UserAgent判定器 Project Woothee はじめました 最近の多言語対応User-Agen

    Woothee を PHP に移植した (2014-02-18 追記あり) | Born Too Late
    k-holy
    k-holy 2014/02/17
    Composer対応きたー わっしょい
  • Spika Hackathon に参加してきた | Born Too Late

    久々のブログです。 夕方に3DS LL とポケモンのセットが届いたのですが、電源がついてなくてあんまり遊べてません。 今週末は @kuzuha さん主催での Spika Hackathon というイベントに参加してきました。 Spika がどういうものなのかはこの辺の記事を見ればいいと思います。 Spika - world first opensource messenger for ios/android 世界初 メッセンジャーアプリ「Spika」を完全オープンソースで公開、フロントからバックエンドまで提供 TechWave に記事が紹介されて直後から、コードの品質がヤバいと話題になっていました。 masuidrive さんの Facebook の投稿 レガシーズ 公式ブログ — PHPerはSpikaのどこを見たのか? 僕自身も以下のような印象を持ちました。 (アッ、メッセンジャーの綴

    k-holy
    k-holy 2013/10/21
    レガシースクリプトのリファクタリングにDIとWebTestCaseをサポートするSilexが役立ったと。無名関数の中身をクラスに移して依存はインタフェースに、そしてユニットテスト
  • PHP のコードパスを解析する CodePathAnalyzer を作った | Born Too Late

    レガシーコードと戦っていると、「このコードのどこをどう通ってこういう結果になってしまっているのか」がわからなくなることがあります。 初見でコードを理解する能力は、コードを読んできた経験が多ければ多いほど、向上するものだと思います。 とは言っても、構造化やモジュール化が適切でなく、スコープの長大なコードなどは、人間の限界を超えているものもあるでしょう。 ステップ実行のできる IDE などを使う、という選択もあると思いますが、僕は重厚な IDE を好みません。 もっと楽にできる方法で、コードパスを解析する方法があれば、ということで作ってみました。 yuya-takeyama/code_path_analyzer 元になっているのは、仕事の時にコード中にベタ書きした関数です。 Gist に公開したところはてブが 10 ぐらい付いたのと、次必要になったときにすぐ使えるようにしておきたかったので、ラ

    PHP のコードパスを解析する CodePathAnalyzer を作った | Born Too Late
  • PHP で Reactor パターンを使った非同期 MySQL 問い合わせ | Born Too Late

    最近は非同期処理に興味があります。 Reactor パターンというのは、非同期処理の実装パターンのひとつで、例えば HTTP 問い合わせなんかで「読み込みが完了するのを監視しつつその他のタスクを進め、読み込みが完了したタイミングでその結果を処理する」みたいなヤツです。 例えば Node.js では Reactor パターンを使ったプログラミングが比較的簡単に行えます。 PHP でも同じことをやりたい、というときには React というフレームワークがあって、少し前に話題になりました。 PHPでもリアルタイムWeb。node.phpReact」 現状 React ではファイル I/O やソケット通信を非同期に行えるようになっております。 が、MySQL で非同期処理を行う方法は今の所提供されていません。 PHP でも mysqli_poll を使えば非同期に MySQL にクエリを投げられ

    PHP で Reactor パターンを使った非同期 MySQL 問い合わせ | Born Too Late
  • 第56回PHP勉強会@関東で PHPUnit について話してきた | Born Too Late

    最近 HTML5 化した Slideshare ですが, エラーで表示できないスライドが多すぎてまともに閲覧できないようです. この記事に掲載している Flash 版は今まで通りの問題なく表示できるのですが... スライドが完成したのが勉強会への出発 15 分前で, 通しで練習することすらできず, 発表はかなりひどいものとなっていまいました. 最低限, スライドの流れぐらいは頭の中に入れて発表すべきですね… スライドだけ見てわかるような作りにはなっていないので, 以下で補足したいと思います. ただし, 序盤は省略し, 論となる書法編とパターン編についてのみとなります. それぞれ該当するスライド番号も付記してありますので, よければご活用ください. 書法編 1: ヘルパーメソッドを使う (25 ~ 30) テスト対象のオブジェクト, それを生成するのに必要な依存オブジェクトの生成には, ヘ

    第56回PHP勉強会@関東で PHPUnit について話してきた | Born Too Late
  • 第58回PHP勉強会@東京でいろいろ話してきた | Born Too Late

    初参加の第 56 回以降, 3 回連続で参加・発表させていただいています. 第56回PHP勉強会@関東で PHPUnit について話してきた 第57回PHP勉強会@東京で開発環境構築について話して来た 今回は通常の発表枠で自作の MapReduce フレームワーク MyMR について紹介し, 懇親会でもスライド無しでの LT をさせていただきました. PHPMySQL でカジュアルに MapReduce する 最近書いたブログ記事と全くのどうタイトルで発表させていただきました. 内容的にも大体はそこに書いてあることで, 特に新しい内容は特に入れてません. SlideShare 上では既にはてブがたくさんついていてありがたい限りなんですが, Hadoop もやったことないのに MapReduce を語るという大変イタい内容なので, 間違いなどがあれば @yuya_takeyama まで

    第58回PHP勉強会@東京でいろいろ話してきた | Born Too Late
    k-holy
    k-holy 2012/04/02
    "自分の名前を使う""カッコいい名前を考える""自分の名前を使ったカッコいい名前を考える"
  • Travis CI で PHP 5.4 も CI する, PHPUnit も Behat もやる | Born Too Late

    この記事は PHP5.4 Advent Calendar jp: 2011 の 20 日目です. 前日: 次のプロジェクトPHP 5.4 の採用を提案するための 3 つのポイント (@co3k さん) 翌日: (@kokkekun さん) Travis CI とは Travis CI は, Continuous Integration (CI: 継続的インテグレーション) を実行するクラウド環境です. GitHub に push すると, Travis CI の VM 上に通知が行われ, GitHub リポジトリからのチェックアウトや, ユニットテストの実行が行われます. ユニットテストの実行は成功/失敗の結果により通知が行われ, また, 履歴も Travis CI 上に残ります. 元々は Ruby 専用のサービスだったと思いますが, その後 Clojure や Node.js などを

    Travis CI で PHP 5.4 も CI する, PHPUnit も Behat もやる | Born Too Late
    k-holy
    k-holy 2011/12/20
    クラウドのCIサーバ。GitHubと連携してpush時に自動テスト。複数のPHPバージョンを指定して実行できる
  • phpenv で複数の PHP 環境を管理する | Born Too Late

    phpenv とは CHH/phpenv - GitHub 複数のバージョンの PHP を管理し, コマンドで簡単に切り替えるためのものです. Ruby でいう rbenv や RVM, Perl でいうところの perlbrew にあたるものです. なお, phpenv の中身は rbenv を流用することで動いています. インストール まず, 以下のコマンドでインストールスクリプトを実行します. $ curl https://raw.github.com/CHH/phpenv/master/install.sh | sh 中では rbenv を git clone していたりするので, Git をインストールしている必要があります. 上記コマンドが成功したら, ~/.bashrc もしくは zsh 使いなら ~/.zshrc に以下のコマンドを追記します. あとはいま編集したファイルを

    phpenv で複数の PHP 環境を管理する | Born Too Late
  • 1