タグ

ブックマーク / qiita.com/Hiraku (11)

  • packagist.orgのミラーサーバを立ててcomposer updateを18倍速くする #packagist - Qiita

    現状報告はこちら packagist.JPの現状について(2015年12月): Architect Note 以下原文 PHPのモダンな依存関係解決ツールであるcomposerですが、動作が遅いですよね。 私も常日頃から遅さを実感しており、何とかしたいと思っていました。 つい先日、GCを切るというハックによってだいぶ速くなりましたが、それでもpackagist.orgからのダウンロード部分は変わらず遅いままです。 Composer を倍速にした、たった 1 行のコード - Shin x blog 例えば、symfony/symfonyのインストールを考えてみます。 # ベンチマーク用の環境準備 $ mkdir composer-bench $ cd composer-bench $ composer require 'symfony/symfony:*' # ベンチマークの公平性のためメタ

    packagist.orgのミラーサーバを立ててcomposer updateを18倍速くする #packagist - Qiita
    kasumani
    kasumani 2014/12/06
    packagist.orgのミラーサーバを立ててcomposer updateを18倍速くする #packagist PHPのモダンなパッケージ管理&依存関係解決ツールであるcomposerですが、動作が遅いですよね。 私も常日頃から遅さを実感しており、何とかしたいと思
  • PHP+cURLのエラーハンドリング - Qiita

    エラーハンドリングの基 PHPのlibcurl拡張でHTTPリクエストをする際、色々なエラーが起きることが考えられる。 curl_errnoとcurl_errorで直近のexecで発生したエラーを調べることができる。 curl_exec()の戻り値がfalseだったらエラーだと判定できるのだけど、詳細なところがわからないので、明示的にエラーが起きたかを調べた方がよさそう。 例外を使いたいなら、ラッパークラス/関数でハンドリングして適当なException型を投げればよいだろう。 <?php // 単純なcurl関数のラッパー // 毎回コネクションを切断するので非効率かも function getHttpContent($url) { $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $body

    PHP+cURLのエラーハンドリング - Qiita
    kasumani
    kasumani 2014/09/15
    PHP+cURLのエラーハンドリング PHPのlibcurl拡張でHTTPリクエストをする際、色々なエラーが起きることが考えられる。curl_errnoとcurl_errorで直近のexecで発生したエラーを調べることができる。 Tags: ifttt, kasumaniのストックした投稿 -
  • SQLiteでMySQLのON DUPLICATE KEY UPDATEみたいなupsertをやりたい - Qiita

    MySQLのINSERT ... ON DUPLICATE KEY UPDATE ...構文って、すごく便利ですよね。↓みたいなケースはよく発生すると思うのですが、一つのSQLで書けてしまいます。 レコードが存在しなければ、INSERT。 レコードが既に存在していれば、指定したカラムだけUPDATE。 愚直にやるとSELECTして実在確認してから、INSERTかUPDATEか出しわける、みたいなことになるので、必ず2回のクエリになってしまうところを、1回のクエリでエレガントに書けます。 SQLiteでも似たようなことがしたくて調べたところ、INSERT OR REPLACE ...構文がありました。しかしちょっとやりたいことと違うみたい。 REPLACE構文は、UNIQUE制約/主キーのダブりでINSERTが失敗した場合、邪魔になったレコードを削除してから新しくINSERTしようとします。

    SQLiteでMySQLのON DUPLICATE KEY UPDATEみたいなupsertをやりたい - Qiita
    kasumani
    kasumani 2014/08/30
    SQLiteでMySQLのON DUPLICATE KEY UPDATEみたいなupsertをやりたい MySQLのINSERT ... ON DUPLICATE KEY UPDATE ...構文って、すごく便利ですよね。↓みたいなケースはよく発生すると思うのですが、一つのSQLで書けてしまいます。 Tags: ifttt, kasumani
  • Zend\LogでFingersCrossedモード(問題発生時に過去ログを一気に出力) - Qiita

    アプリケーションログは、何か障害が発生した時は調査の起点になりますので大事ですよね。 ロガーは通常、ログレベルを設定できて、debug用の情報などは開発環境だけ出力し、番環境では抑制しておきます。無駄な大量のログ出力は、それなりにパフォーマンスに悪影響を与えますからね。 しかし、何かエラーが起きたときは、ログ出力が抑制されていることにより、原因がわかりにくくなってしまいます。 Monolog特有の機能であるFingersCrossedは、このジレンマを解消します。 ある特定のレベル(CRITICALなど)のログ出力を指示した瞬間、ログレベルを切り替え、過去にさかのぼってINFOなどのすべてのログを出力します。 これにより、問題が起きた時だけ詳細にログを吐くことができ、障害対応に効果を発揮します。 Monologのfingers_crossedがようやくわかった - ゆっくり*ゆっくり [

    Zend\LogでFingersCrossedモード(問題発生時に過去ログを一気に出力) - Qiita
    kasumani
    kasumani 2014/07/06
    Zend\LogでFingersCrossedモード(問題発生時に過去ログを一気に出力) アプリケーションログは、何か障害が発生した時は調査の起点になりますので大事ですよね。 Tags: ifttt, kasumaniのストックした投稿 - qiita from Pocket July 05, 2014 at 11
  • PHPのイテレータでフィボナッチ数列を計算 - Qiita

    フィボナッチ数 - Wikipedia 定義通り再帰で実装すると、非常に非効率になることで知られる(ゆえにベンチマーク用に使われたりする)フィボナッチ数列計算ですが、イテレータで解いてみるテスト。 <?php class Fib implements Iterator { private $prevprev = -1, $prev = 1, $i = 0, $k = 0; function key() { return $this->k; } function current() { return $this->i = $this->prevprev + $this->prev; } function next() { $this->prevprev = $this->prev; $this->prev = $this->i; ++$this->k; } function rewind()

    PHPのイテレータでフィボナッチ数列を計算 - Qiita
    kasumani
    kasumani 2014/06/25
    PHPのイテレータでフィボナッチ数列を計算 定義通り再帰で実装すると、非常に非効率になることで知られる(ゆえにベンチマーク用に使われたりする)フィボナッチ数列計算ですが、イテレータで解いてみるテスト。 Tags: ifttt
  • PowerShellでwhichコマンド - Qiita

    最近Windowsを触る割合が減ったのでよく忘れる。。 UNIXのwhichコマンドのように、コマンドレットの詳細を調べるのはGet-Command(エイリアス: gcm)である。しかしそのままでは表示がわかりにくい。。 > gcm notepad CommandType Name ModuleName ----------- ---- ---------- Application notepad.exe notepad.exeが、どのパスに存在しているのかが知りたいからコマンドを調べてるのに!!肝心の情報が表示されていない。 Format-List(エイリアス: fl)をかませると、いい感じの表示になる。 > gcm notepad | fl Name : notepad.exe CommandType : Application Definition : C:\Windows\Syst

    PowerShellでwhichコマンド - Qiita
    kasumani
    kasumani 2014/05/25
    PowerShellでwhichコマンド UNIXのwhichコマンドのように、コマンドレットの詳細を調べるのはGet-Command(エイリアス: gcm)である。しかしそのままでは表示がわかりにくい。。 notepad. Tags: ifttt, kasumaniのストックした投稿 - qiita from Pocke
  • curl_multiでHTTP並行リクエストを行うサンプル

    curl_multiはselectシステムコールを使って同時に複数のHTTPリクエストを行うことができます。マルチスレッドやらマルチプロセスを使っているわけではなく、原理はnode.jsなんかと近いI/O多重化で、一度に一つのことしかしていません。 PHPcurlはlibcurlAPIをほぼ踏襲しており、ちょっと取っつきにくいです。クラスでラッピングして、curl_close()などはデストラクタで呼ばれるように自動化すると、もう少しすっきりすると思います。 <?php /** * curl_multiでHTTP複数リクエストを並列実行するテンプレ * */ //タイムアウト時間を決めておく $TIMEOUT = 10; //10秒 /* * 1) 準備 * - curl_multiハンドラを用意 * - 各リクエストに対応するcurlハンドラを用意 * リクエスト分だけ必要 * *

    curl_multiでHTTP並行リクエストを行うサンプル
    kasumani
    kasumani 2014/04/17
    curl_multiでHTTP並列リクエストを行うサンプル curl_multiはselectシステムコールを使って同時に複数のHTTPリクエストを行うことができます。マルチスレッドを使っているわけではなく、原理はnode. Tags: ifttt, kasumaniのストックした
  • typeofを改善したtypeOf()関数 - Qiita

    function typeOf(x) { if (x === null) return 'null'; if (x == null) return 'undefined'; var type = typeof x, c = x.constructor; if (type === 'number') { if (isNaN(x)) return 'NaN'; if (!isFinite(x)) return x === Infinity ? 'Infinity' : '-Infinity'; } if (type === 'object') { return c && c.name ? c.name : Object.prototype.toString.call(x).slice(8, -1); } return type; } console.log(typeOf(undefined))

    typeofを改善したtypeOf()関数 - Qiita
    kasumani
    kasumani 2014/03/21
    typeOf() 細かいことを言えばNaNやInfinityはnumber扱いでいいのかみたいな話もあるし、1とnew Number(1)が違う扱いになっているのは逆に不便だったりするかも。 実務で使ったことがないので、間違ってたら教えてください。 Tags: ift
  • プロパティの型を強制するオブジェクトを作る - Qiita

    Spindle\\Types\\TypedObject を継承してクラスを作る。 TypedObjectは2つのメソッドの実装を強制する。staticメソッドのschema() および checkErrors() である。 <?php namespace Acme; use Spindle\Types; class Klass extends Types\TypedObject { static function schema() { return [ //プロパティ名 => 型, デフォルト値(省略可), を繰り返して書く 'propInt' => self::INT, 'propStr' => self::STR, 'initial value', 'propBool' => self::BOOL, false, 'propDate' => 'DateTime', new DateTi

    プロパティの型を強制するオブジェクトを作る - Qiita
    kasumani
    kasumani 2014/03/17
    プロパティの型を強制するオブジェクトを作る Spindle\Types\TypedObject を継承してクラスを作る。 TypedObjectは2つのメソッドの実装を強制する。staticメソッドのschema() および checkErrors() である。 Tags: ifttt, kasumaniのストックした
  • Windows8をMicrosoftアカウントを使ってセットアップするとWeb開発者は後で泣くはめになる - Qiita

    結論:Windows8はローカルユーザーでセットアップしよう 地味なんだけど当に重要で嵌りやすい話。 Windows8から、ユーザーとしてMicrosoftアカウントが登録できるようになった。いや、登録をほぼ強制するようになった。 連携すればSkyDrive改めOneDrive連携がされて、MS Officeのクラウド連携なんかもシームレスにつながって確かに便利なんだけど、Microsoftアカウントを素直に登録すると、Windowsにおけるユーザー名が日語になってしまう。そしてユーザー名が日語だとユーザーフォルダも日語で作成される。 (https://twitter.com/muu000/status/394159569787572224/photo/1 より画像引用) このフォームに素直に従うと日語入れるよね。 ここまではいい。 問題は、 ユーザーフォルダに日語が入っている

    Windows8をMicrosoftアカウントを使ってセットアップするとWeb開発者は後で泣くはめになる - Qiita
    kasumani
    kasumani 2014/02/24
    Windows8をMicrosoftアカウントを使ってセットアップするとWeb開発者は後で泣くはめになる 地味なんだけど本当に重要で嵌りやすい話。 Windows8から、ユーザーとしてMicrosoftアカウントが登録できるようになった。いや、登録をほ
  • CURLOPT_FILEでHTTPレスポンスをファイルに直接書き込んでいくサンプル - Qiita

    curl_multiでHTTP並列リクエストを行うサンプル - Qiita [キータ]で@mpywさんに質問された件…の答えにはなってないんですが、CURLOPT_FILEでレスポンスを丸投げするイメージを書いてみました。 あんまり自信ないです。もうちょっといい書き方がありそうな気がする。 サーバー側 ストリーミングAPI的な感じのサンプル。node.jsで書いてみましたが、クライアントから切断されたらどうするとか書いてないし、ゴミのようなプログラムですね。。(石投げないで><) node stream.jsと実行しておいて、 curl -v http://localhost:1337/ とかやると1秒ごとにじわじわとレスポンスが出力されていく様子がわかります。 var http = require('http'); http.createServer(function(req, res)

    CURLOPT_FILEでHTTPレスポンスをファイルに直接書き込んでいくサンプル - Qiita
    kasumani
    kasumani 2014/02/03
    CURLOPT_FILEでHTTPレスポンスをファイルに直接書き込んでいくサンプル curl_multiでHTTP並列リクエストを行うサンプル - Qiita [キータ]で@mpywさんに質問された件…の答えにはなってないんですが、CURLOPT_FILEでレスポンスを丸投げす
  • 1