Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

タグ

phpに関するmasudaKのブックマーク (161)

  • Guzzle Promiseを使った
非同期処理によるAPIコールの高速化

    JavaScript で非同期処理を実現する Promise という機構はご存知でしょうか? 今回は「Promise の考え方を PHP で実装した Guzzle Promise」を使って、大量の API コールを高速化したときの経験についてお話してみたいと思います。 Talked: - …

    Guzzle Promiseを使った
非同期処理によるAPIコールの高速化
    masudaK
    masudaK 2016/05/22
  • IT業界・エンジニアの転職ならTech Stars Agent

    技術に精通した コンサルタント が併走 経験豊富なアドバイザー 元ITエンジニア、元ゲーム企業人事、 IT会社役員、大手人材エージェント

    IT業界・エンジニアの転職ならTech Stars Agent
    masudaK
    masudaK 2016/05/22
  • PhpStorm + Xdebug でブレークポイントを張ってデバッグする方法

    PhpStorm + Xdebug でコードにブレークポイントを張って変数の状態をデバッグする方法を紹介します。デバックによるステップ実行は IDE ではおなじみの機能ですね。PhpStorm を使うなら知っていて損はないと思います。 動作確認環境 Mac OS X Mountain LionHomebrewApache + mod-phpPHP 5.4PhpStorm 6.0.3Google Chrome 目次 xdebug をインストール PHP のバージョンと実行ファイルを設定 サーバを追加 Xdebug の待ち受けポート番号を確認 リモートデバッグ用のブックマークレットを登録 PhpStorm の Remote Debug 設定 デバッグ実行 ブラウザのアドオンでデバッグ状態のオン・オフを切り替える コマンドライン用 PHP のデバッグ実行 デバッガを起動するよりテストを書こう x

    PhpStorm + Xdebug でブレークポイントを張ってデバッグする方法
  • PHP5.4 から導入された trait 機能の使いドコロ

    この記事はPHP Advent Calendar 2013の8日目の記事です。エントリではphp5.4の注目機能の1つであるtraitをどうやって扱うべきかを書いてみようと思います。 TraitとはTraitとは継承関係と関係なく実装を再利用できる仕組みのことです1。言い換えるならば、「多重継承」であったり「Mix-in」を可能にする仕組みと言えるでしょう。Rubyistの間ではMix-inの概念は当たり前のことでしょうが、PHP界隈ではTraitは新しい機能ということもあり浸透していない概念かと思います(Ruby以外にもTraitと似た機構はあるみたいですね2)。 エントリではPHPerの間では未だ聞き慣れないであろうTraitの概念を実コードとともに紹介してみようと思います。 Traitの特徴Traitの簡単な特徴は以下の通りです。 PHP5.4以降必須Trait自身のインスタンス

    PHP5.4 から導入された trait 機能の使いドコロ
  • 初心者向け タイプヒンティングとはなんなのかというお話

    by @dekokun on 2013/12/14 15:33 Tagged as: PHP. どうも、PHP Advent Calendar 2013の14日目の記事です。 昨日は@ockeghemPHPセキュリティの解説書12種類を読んでSQLエスケープの解説状況を調べてみたでしたね。 最近、仕事を一緒にし始めた後輩がPHPに慣れておらず、PHPのタイプヒンティングのことを知らなかったので(そして、さっき一緒にお酒を飲んだ別の後輩もタイプヒンティングを知らなかったので)、彼らに向けて、タイプヒンティングとはなにか、なぜタイプヒンティングを使うのかを解説する記事となります。 PHPのことをよく知っている皆様におかれましては特に得るものはないお話なのかなと思います。ご了承ください。なお、下記のような流れを経て、このブログの内容は当初の予定から変遷しました。 「returnとrequir

    初心者向け タイプヒンティングとはなんなのかというお話
  • PHPのちょっとしたコツ

    ウノウラボ Unoh Labs: PHPのちょっとしたコツに興味深い内容が書かれています。 1. array_pushは遅い いくつかのBlogで語られてることですが、array_pushは、次のような書き方のほうが早いそうです。 //array_puth($array, \'arraydata\'); $array[] = \'arraydata\'; ウノウラボ Unoh Labs: PHPのちょっとしたコツ これはほんとあちこちで言われていますね。実際にどの程度違うかベンチマークを取ってみました。 < ?php require_once 'Benchmark/Timer.php'; $max = 10000; $timer = new Benchmark_Timer(); $timer->start(); $array = array(); for ($i = 0 ; $i < $m

  • 配列の要素確認と実行速度

    こんにちは、アシアルの井川です。 Webサイトやバッチ処理のパフォーマンスを考える際、気を付けることは多々あります。全体の構造、アルゴリズムの効率化、…。その中の一つに、個々の関数の仕組みと実行速度の問題があります。関数の仕様は言語レベルで決定されており、それらを把握していないと、時としてパフォーマンスの大きな低下を招きます。今回焦点を当てるのは、配列要素を確認する際によく使われる関数です。 さて、皆さんは配列内に要素が存在するか否かを判定する場合、どうされていますか?この確認には、isset、array_key_exists、in_arrayなどいくつかの方法があります。isset、 array_key_existsは配列のキー値が存在するか確認し、in_arrayは要素の値を確認します。例えば、 <?php $list = array('a' => 1, 'b' => 1, 'c' =

    配列の要素確認と実行速度
  • proc_open と stream_select - いちいの日記

    あいかわらずphpでやんなくていいじゃんな話、なのかな。そうでもないかも。 php.net の proc_open の例にあるように、 proc_open() で子プロセスを起動してstream_get_contents() すると、場合によっては固まったまま動かなくなったりします。「デッドロックを避けるため…」という件がコメントに入ってますが、こういう話が得意でない人にとってはそんなとこ以上にハマりどころがありました。 stdoutとstderrに交互に出力 たとえば次のようなシェルスクリプト test.sh を考えます。 #!/bin/sh for i in `seq 1 10000`; do echo "stdout: $i" >&1 echo "stderr: $i" >&2 done 単に標準出力と標準エラーに交互に数字を吐き出すだけです。 これをphpから実行するときに、php

    proc_open と stream_select - いちいの日記
    masudaK
    masudaK 2016/04/21
  • PDOにおける一応の安全宣言と残る問題点

    8月18日にPHP5.3.7がリリースされました。このリリースにより、PDOのSQLインジェクションの問題が一応解決されたと判断しましたので、ここに「一応の安全宣言」を表明するとともに、残る問題について報告します。 PDOの問題とは何か 以前、ぼくがPDOを採用しなかったわけ(Shift_JISによるSQLインジェクション)にて報告したように、PHP5.3.5以前のPDOにはDB接続時に文字エンコーディングを指定する機能がないため、文字列リテラルのエスケープの際に文字エンコーディングをLatin1を仮定してしまうという問題がありました。この状態ですと、DBにShift_JISで接続している際に、SQLインジェクション脆弱性が混入しました。 ※ 実は、先のエントリの「追記(2010/07/01 22:20)」に紹介した方法で文字エンコーディングを指定できるのですが、ほとんど知られていないのと

  • PHPでデータベースに接続するときのまとめ - Qiita

    【2021/10/15 追記】 この記事は更新が停止されています。現在では筆者の思想が変化している面もありますので,過去の記事として参考程度にご覧ください。PDO に関しては大きく変わっていない部分が多いとは思いますが, PHP 8.x 以降での動作保証はありません。 あらかじめ読んでおきたい記事 Qiita - 【PHP超入門】クラス~例外処理~PDOの基礎 by @7968 初心者がやりがちなミス 以下のどれかに1つでも当てはまるコードは見直す必要があります.付録にリンクを貼っておきましたので,「該当するかも?」という人はクリックして飛んで読んでください.太字にしてあるものは脆弱性に直結する危険度の高いものです. mysql_query などの非推奨関数を利用している SET NAMES あるいは SET CHARACTER SET などで文字コードを指定している そもそもデータベース

    PHPでデータベースに接続するときのまとめ - Qiita
  • 【PHP】PDOの静的プレースホルダと動的プレースホルダの違いを確認する - Qiita

    追記 徳丸先生からのコメントにありますが、静的プレースホルダはエスケープ処理しません。 静的プレースホルダはデータベース側でバインドします。 バインドするときの値は、リテラルからはみ出さないので、エスケープ処理が不要ということです。 リテラルからはみ出さないということは、SQL 文として解釈されません。 よって、SQL インジェクションは発生しません。 静的プレースホルダと動的プレースホルダの違いは、記事ではなく、下記の記事をご覧ください。 以下は、エスケープ処理すると勘違いして記述しています。 #はじめに PDOを勉強している初心者です。 エミュレートの設定がONだと動的プレースホルダになり、OFFだと静的プレースホルダになると学びました。 実際にMySQLのログからどのように違うのか確認することで理解を深めたいと思います。 動的プレースホルダと静的プレースホルダについては、独立行政法

    【PHP】PDOの静的プレースホルダと動的プレースホルダの違いを確認する - Qiita
    masudaK
    masudaK 2016/04/20
  • 【スライドにして106枚】PHP7.0 全46RFCの概要紹介|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ

    【スライドにして106枚】PHP7.0 全46RFCの概要紹介 最近仕事のメモを取るのに、日付ベースでノートを保存出来る wri.pe というサービスを使い始めた YamaYuski です。 弊社はPHPに強い会社と自負していますが、これまで社内勉強会では PHP 7 について詳しく取り上げていませんでした。(もちろん社内プロジェクトで使えるかどうかのチェックなどはしています) これではいかんということで、社内でもPHP7の新機能や注意点をRFCベースで共有し、今後のアップデートに備えるべく、筆を取りました。 その結果、 重量級 な内容となってしまいましたよ。 スライドにして106枚。 (何故こんな枚数になった。) ということで、折角作ったのに社内にしか公開しないのはもったいない、ということで、ひとまとめにした内容を記事として書き起こしてみます。 ※今回はmarkdownを使って資料を書い

    【スライドにして106枚】PHP7.0 全46RFCの概要紹介|技術ブログ|北海道札幌市・宮城県仙台市のVR・ゲーム・システム開発 インフィニットループ
    masudaK
    masudaK 2016/04/14
  • PHPを使う成長するサービスにおけるエンジニア採用の視点 | F's Garage

    BASEは、昨年末のメルカリ社との関係性が高まったことを期に改めて採用を強めている。中心となるのは、強力に事業を推進するところにコミットしてくれるエンジニアの募集だ。 先日、リブセンスの桂さんに当社にお越しいただいて、結構ハードな対談を収録した。 BASEえふしん×リブセンス桂 CTO対談(前編)―今求められるエンジニアは、自分の会社から「はみ出ている人」― 桂さん、バシバシ、突っ込んでくるもんだからついついハードな発言をしているかもしれない。 最近、思っているのがどうやってPHPを扱う会社で優れた人材に来ていただけるか?という部分。 PHPは、多分、今も昔も中心なんだか周縁なんだかわからない立ち位置にいる。PHPPHP市場だけで捉えると、高トラフィックなサービスを経験するという、「良い経験をしてきたエンジニア」は、藤さんところのグリー社、グリー出身者、最初からPHPを活用していたYa

    PHPを使う成長するサービスにおけるエンジニア採用の視点 | F's Garage
    masudaK
    masudaK 2016/03/23
    自分も最低限の修羅場はくぐった気はするけど、入る前はもっと修羅場だったらしい。なみかわさんとかくわのさん、おいぬまさんやられていた気がする。
  • 遅延静的束縛は何が嬉しいのか - 暁

    名前は見かけていたものの、いまいち理解していなかった。 PHP: 遅延静的束縛 (Late Static Bindings) - Manual PHP 5.3.0 以降、PHP に遅延静的束縛と呼ばれる機能が搭載されます。 これを使用すると、静的継承のコンテキストで呼び出し元のクラスを参照できるようになります。 より正確に言うと、遅延静的束縛は直近の “非転送コール” のクラス名を保存します。 静的メソッドの場合、これは明示的に指定されたクラス (通常は :: 演算子の左側に書かれたもの) となります。静的メソッド以外の場合は、そのオブジェクトのクラスとなります。 “転送コール” とは、self:: や parent::、static:: による静的なコール、 あるいはクラス階層の中での forward_static_call() によるコールのことです。 get_called_class

    遅延静的束縛は何が嬉しいのか - 暁
    masudaK
    masudaK 2016/02/26
  • PHP の壊れた mt_rand の品質を統計的に検証した - iwiwiの日記

    メルセンヌ・ツイスターと似て非なるアルゴリズムが実装されていたことが発覚して話題の PHP の mt_rand 関数の品質を統計的に検証しました.果たして,PHP の「壊れた」mt_rand は安心して使うことができるのでしょうか……? ちなみに,結論から言うと,PHP の壊れた mt_rand は,(少なくともこのテストの範囲では)家メルセンヌ・ツイスターと遜色ない品質を持っているようです.ただし,最後に PHP の乱数の別の懸念点についても紹介します. 壊れた mt_rand とは PHP の mt_rand は,ドキュメントによると,有名な乱数生成アルゴリズム「メルセンヌ・ツイスター」を利用して高品質の乱数を生成する関数です.ところが,どうやら一部では知られていたこととして,PHP の mt_rand の実装にはバグがあり,家メルセンヌ・ツイスターと挙動が一致していませんでした.

    PHP の壊れた mt_rand の品質を統計的に検証した - iwiwiの日記
  • やさしいコーディング規約の導入

    「ママ向けNo.1アプリ」の 更なる成長を支える仕組み / startup-engineer-night-connehito

    やさしいコーディング規約の導入
    masudaK
    masudaK 2016/01/14
  • IT業界・エンジニアの転職ならTech Stars Agent

    技術に精通した コンサルタント が併走 経験豊富なアドバイザー 元ITエンジニア、元ゲーム企業人事、 IT会社役員、大手人材エージェント

    IT業界・エンジニアの転職ならTech Stars Agent
    masudaK
    masudaK 2016/01/14
  • PHPUnit を使って、特定のメソッドが呼び出されたことを確かめる

    PHPUnit のモックオブジェクトを使って、想定されたオブジェクトのメソッドが想定された引数を渡されて呼ばれていることをテストします。モックオブジェクトは具体的に何の役に立つのかモヤモヤしてたのですが、動かしてみてやっとメリットが理解できました。 まず、下記はテスト対象となるクラスです。greet メソッドは引数に $name を取り、Hello という文字列とつなげて返却します。 Hoge.php

    PHPUnit を使って、特定のメソッドが呼び出されたことを確かめる
  • PHPで設定値。defineだのconstだの | grush-blog

    PHPで設定値。 これって実は人によってやり方が様々で、それぞれの実装方法によって使い勝手も違うらしい。 単純に、組み込みで用意されているものを使うのであれば define("CONF_A", "設定値"); echo CONF_A; 的な。 他にも final class Config { const DATA_A = "設定値"; } echo Config::DATA_A; とか。 クラス&const方式はまあ悪くないのかな?って思ってた。 設定の種類ごとにクラス名を変えるって事も可能だしね。 でもコイツって、 class Config { const B = "aa"."asd"; } ができないんだよね。 式は基何も使えない。 文字列結合くらい許せや。っていう・・・ 実際問題、URLなんかを定義する時って 1) トップのURLを定義 2) 1で定義した設定値に文字列結合で配下の

    masudaK
    masudaK 2016/01/14
  • コーディング規約 - Qiita

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    コーディング規約 - Qiita