タグ

phpに関するhrfmsdのブックマーク (103)

  • PHP7で変わること - hnwの日記

    次の土曜日5/30のPHPカンファレンス関西2015で基調講演(10:30-11:15)をさせて頂くことになりました。タイトルは「PHP7で変わること——言語仕様とエンジンの改善ポイント」です。チケットは既に売り切れているそうですが、参加者の方は早起きして来て頂けると幸いです。 このところQiitaに「PHP7調査」というシリーズを連投していたのも発表を意識してのことです。PHP7の新機能を一つずつ実際に試してみて、その結果を簡単にまとめていました。 今回は発表前の区切りとして、私の書いたPHP7関連の記事・プレゼン資料を一覧形式でまとめなおしてみます。PHPカンファレンス関西2015ではこれらの内容を踏まえつつ、気になる点を重点的にお伝えしたいと考えています。 内部実装のリファクタリング PHP7の目玉と言える、速度改善に関わる内容がほとんどです。 PHP7はなぜ速いのか - Slide

    PHP7で変わること - hnwの日記
  • PHPで高速に動作するURLルーティングを自作してみた - pixiv inside [archive]

    この記事は ピクシブ株式会社 Advent Calendar 2015 13日目の記事です。 qiita.com こんにちは、おはようございます、こんばんは、エンジニアのneo-nanikakaです。 最近、業務でURLルーティングの処理が必要になりました。 社内の他のPHPプロジェクトでは Teto Routing というライブラリを使っているのを知っていたので、こちらを使ってみることにしました。 見事にURLルーティング処理は実現され、他の処理の実装に入ることができました。 完 っと思っていた時期が私にもありました。 Teto Routingは、実行時間がルーティング数に依存する 実装になっています。 ここでいう実行時間とは、Teto RoutingにリクエストURL文字列を渡してから結果が返ってくるまでの時間のことです。 実際、Teto Routingは表1のような時間がかかります。

    PHPで高速に動作するURLルーティングを自作してみた - pixiv inside [archive]
    hrfmsd
    hrfmsd 2015/12/14
  • PHP開発環境をDockerで構築する「phpstack」レビュー | さくらのナレッジ

    最近は開発環境を仮想化するケースが増えてきました。元々WindowsではPHPの開発時にVMWare Playerを使ってLinuxを動かして開発することが多かったですが、それがMac OSXLinuxであっても有益に使われています。一つのプロジェクトであれば環境をローカルに作ってしまっても良いのですが、プロジェクトごとに異なる環境を用意したり、LAMPだけに限らないアーキテクチャの場合に開発に携わる人員分、環境を作るのは大変です。 そこで今回はphpstackを紹介します。CoreOS上にDockerを使って様々なサービスをインストールして様々なプロジェクトに対応できるPHP開発環境を構築してくれます。リモートにログインせずとも使えるという利点があります。 必要なもの Docker Docker Compose オプションとして、 Vagrant VirtualBox があると便利です

    PHP開発環境をDockerで構築する「phpstack」レビュー | さくらのナレッジ
  • 安全なPHPアプリケーションの作り方2014

    2. 徳丸浩の自己紹介 • 経歴 – 1985年京セラ株式会社入社 – 1995年京セラコミュニケーションシステム株式会社(KCCS)に出向・転籍 – 2008年KCCS退職、HASHコンサルティング株式会社設立 • 経験したこと – 京セラ入社当時はCAD、計算幾何学、数値シミュレーションなどを担当 – その後、企業向けパッケージソフトの企画・開発・事業化を担当 – 1999年から、携帯電話向けインフラ、プラットフォームの企画・開発を担当 Webアプリケーションのセキュリティ問題に直面、研究、社内展開、寄稿などを開始 – 2004年にKCCS社内ベンチャーとしてWebアプリケーションセキュリティ事業を立ち上げ • 現在 – HASHコンサルティング株式会社代表http://www.hash-c.co.jp/ – 独立行政法人情報処理推進機構非常勤研究員http://www.ipa.go.

    安全なPHPアプリケーションの作り方2014
  • Heroku で Composer を使う時に気を付けたいこと

    HerokuPHP をサポートしたので、テストがてら Laravel アプリケーションをデプロイしてみました。 デプロイしたのは、Doctrine を利用するアプリケーションだったのですが、ローカルでは composer でインストールできるのですが、Heroku にデプロイするとインストールされないという現象が起こりました。 Laravel での Doctrine 使用 今回のアプリケーションでは、DBのテーブルスキーマ情報を読み込んで、動的に画面を作るという処理があり、そこで Doctrine の SchemaManager を使っていました。 Laravel で、Doctrine の SchemaManager のインスタンスを取得するのは簡単で、下記のメソッドを実行するだけです。 $manager = DB::connection()->getDoctrineSchemaMa

    hrfmsd
    hrfmsd 2014/05/23
    良記事
  • PHPアプリケーションのセッション管理にAWS ElastiCacheを使う | DevelopersIO

    こんにちは。望月です。 AWS上でシステムを構築する上で、「AWSのお作法に従う」のは印象以上に重要です。お作法に関しては色々とあるのですが、 *1その中でも一番大きいのは「サーバーは故障するものという前提で設計する」ことにあると思います。例えば、以下の様な点です。 WebサーバやAPサーバなどはロードバランサを介して冗長化し、単一障害点ではなくす 保管する必要のあるデータは全てS3に保管するか、EBSスナップショットを取得する等のバックアップを実施する DBはRDSをできるだけ利用することで、Multi-AZによる障害時自動フェイルオーバーによるサービス継続を実施する 上記1番目の「Web/APサーバの冗長化」ですが、オンプレミスからの移行の際にはこれへの対応が結構大変だったりします。例えば、アプリケーションからローカルのファイルを読み書きするような処理が入っている場合、そのファイルを両

    PHPアプリケーションのセッション管理にAWS ElastiCacheを使う | DevelopersIO
  • PHP と JavaScript の噺

    2. わたしについて ● PHP歴 = 7年, エンジニア歴 = 6年 ● Rakuten, inc. なんと新卒4年目になる ● 最近のお仕事 ○ node.js でバックエンドなシステムづくり ■ BaaS Team, Web Sevice Platform Group ○ Java & Groovy でバックエンドなシステムづくり ○ http://webservice.rakuten.co.jp 楽天API 運用・開発・ 宣伝何でもやる課 ○ PHPはちょっと見るくらい ■ 一番最近やったPHP仕事は Symfony2.0 から 2.3 へのバージョンアップ

    PHP と JavaScript の噺
  • 正規表現によるバリデーションでは ^ と $ ではなく \A と \z を使おう

    正規表現によるバリデーション等で、完全一致を示す目的で ^ と $ を用いる方法が一般的ですが、正しくは \A と \z を用いる必要があります。Rubyの場合 ^ と $ を使って完全一致のバリデーションを行うと脆弱性が入りやすいワナとなります。PerlPHPの場合は、Ruby程ではありませんが不具合が生じるので \A と \z を使うようにしましょう。 はじめに 大垣さんのブログエントリ「PHPer向け、Ruby/Railsの落とし穴」には、Rubyの落とし穴として、完全一致検索の指定として、正規表現の ^ と $ を指定する例が、Ruby on Rails Security Guideからの引用として紹介されています。以下の正規表現は、XSS対策として、httpスキームあるいはhttpsスキームのURLのみを許可する正規表現のつもりです。 /^https?:\/\/[^\n]+$/

  • NULLへのキャストって……? - ぱせらんメモ

    PHPの型キャストは(array)とか(object)とか変態的なのがあるけど、最近(unset)なるものが存在することに気づいた。 unset($var)のことではない。(unset)$varだ。 型キャスト 使用可能なキャストを以下に示します。 (int), (integer) - 整数へのキャスト (bool), (boolean) - 論理値へのキャスト (float), (double), (real) - float へのキャスト (string) - 文字列へのキャスト (array) - 配列へのキャスト (object) - オブジェクトへのキャスト (unset) - NULL へのキャスト (PHP 5) (binary) によるキャストや b プレフィックスのサポートは、PHP 5.2.1 で追加されました。 PHP: PHP マニュアル - Manual NULL

    NULLへのキャストって……? - ぱせらんメモ
  • PHPが糞言語なのはどう考えても参照をポインタだと思っているお前らが悪い - なんたらノート第三期ベータ

    この投稿はPHP Advent Calendar 2013の12日目の記事です。 PHP恒例行事の参照と三項演算子のdisりですが、そろそろあさってな議論はやめませんかという話です。 今年のPHP-dis大賞といえばこちら。 PHPとかいう糞言語|いんまのブログ ※ 追記: これ書かれたのは2012年でしたすんません。 なんで君たちそんなコードが必要なのかね、と。結論から先言うと、きみたちがPHPが使えないって思うのは、そんな挙動に左右されるようなコードを書くからでしょ、だからCとかRubyとかそういう簡単な言語でわかった気になっている初心者はまったくもう...というわけでPHPの言語文法の基礎んとこ、いきますね。 まず、PHPのarrayは「値」です。もちろん文字列も「値」です。値は値なんだけど、それはミュータブルです。PHPのarrayもしくは文字列の代入は、一見すると、ポインタを使わ

    PHPが糞言語なのはどう考えても参照をポインタだと思っているお前らが悪い - なんたらノート第三期ベータ
  • コードをまとめる技術としてのイテレータとジェネレータ - Qiita

    ジェネレータが5.5から入ったことで完全に空気と化した(?)PHPのイテレータを、ちょっと違う面からまとめたいと思います。 コードをまとめるということ Don't Repeat Yourself(DRY)という言葉があります。達人プログラマーというに出てくる言葉です。 信頼性の高いソフトウェアを開発して、開発そのものを簡単に理解したりメンテナンスできるようにする唯一の方法は、DRY原則に従うことです。 「すべての知識はシステム内において、単一、かつ明確な、そして信頼できる表現になっていなければならない。」 (p. 27) 端的に言えば「同じことを二度書いてはいけない」ということですね。この原則を当てはめなくてもいい例外のパターンもいくつかあるのですが。。 コードにおいて「同じことを二度書いてはいけない」を忠実に守ろうとすると、同じコードを何度も書きたくなったら、何らかの方法でそのコードを

    コードをまとめる技術としてのイテレータとジェネレータ - Qiita
  • set_error_handler と ErrorException を組み合わせると幸せになるかも - Qiita

    set_error_handler() のコールバック関数でエラー情報を一旦 ErrorException にしておくと、いろいろ恩恵が得られるというお話。 <?php // ErrorExceptionをもう少し便利にしたクラス class MyErrorException extends ErrorException { protected static $severities = [ E_ERROR => 'ERROR', E_WARNING => 'WARNING', E_PARSE => 'PARSING ERROR', E_NOTICE => 'NOTICE', E_CORE_ERROR => 'CORE ERROR', E_CORE_WARNING => 'CORE WARNING', E_COMPILE_ERROR => 'COMPILE ERROR', E_COMPILE

    set_error_handler と ErrorException を組み合わせると幸せになるかも - Qiita
  • PHPカンファレンス2013で「モデルとの向き合い方:ドメイン駆動設計体験ワークショップ」を行いました

    2018年1月10日に開催された DCI Tokyo 1 に続き、2018年3月27日に DCI Tokyo 2 が開催されました。今回も James Coplien @jcoplien さんをお招きしてのトークセッションとなりました。会場は 株式会社ヴァル研究所 様に提供していただきました。 セッションは、前回同様 @remore さんと @ganchiku さんによる同時通訳とともに進められました。 今回のテーマはマルチパラダイムデザイン(Multi-Paradigm Design: MPD)の中核を成し、DCI / リーンアーキテクチャ(Lean Architecture)とも深く関係する 共通性/可変性分析 でした。 レポートは @smori1983 が担当させていただきます。 当日の様子は Coplien さんの許可を得て YouTube の DCI Tokyo 公式アカウントに

    PHPカンファレンス2013で「モデルとの向き合い方:ドメイン駆動設計体験ワークショップ」を行いました
    hrfmsd
    hrfmsd 2013/09/15
  • さあPHPという言語処理系のソースコードを読んでみよう

    仕事 ワイヤフレーム書いたり ビジュアルデザイン作ったり ユーザストーリー書いたり PHP, JavaScript, Objective-C(iOS, MacOSX), Java(Android), Scala, C# - だいたいなんでもやる

  • 安全なPHPアプリケーションの作り方2013

    PHPカンファレンス2013における徳丸のプレゼン資料です。後から、参考文献などを加筆しました。Read less

    安全なPHPアプリケーションの作り方2013
  • 【PHP】PHPでタイプセーフなプログラミングを『タイプヒンティング』 + 『Enum』で実現してみた - へろへろもへじ

    どうも、PHP歴5ヶ月の僕です。 世間的にどのくらい使われているのかわかりませんが、皆様『タイプヒンティング』、使っていますか? 今回はタイプヒンティングと、Javaでお世話になっていたEnumを利用してPHPでタイプセーフなプログラミングにチャレンジしてみようと思います。ただ残念ながら、現状PHP(最新版の5.5でも)ではEnumはサポートされておらず、独自で実装する必要があったので、自前で用意してみました。(既に公開されていた方のソースを参考に、traitにしてみました。) ■Enum.php <?php namespace core; /** * Enumを実現するためのtrai - + t */ trait Enum { /** 生成したEnumを保持する配列 */ public static $values = array(); /** 名称 */ public $name; /

    【PHP】PHPでタイプセーフなプログラミングを『タイプヒンティング』 + 『Enum』で実現してみた - へろへろもへじ
  • PHPは◯◯◯である | quipped

    当にPHPについて知りたい人は、別のところに行くことをすすめる。moriyoshiさんのスライドや、Lerdorfオジサンのページなんかがオススメ。 PHPは歯ブラシである PHPの発案者であるRasmus Lerdorf氏はこう言っている。 PHPは歯ブラシくらい興奮に値する。シンプルで、毎日使う便利な道具。だからどうした。歯ブラシについて書物を漁るやつがいるか? PHP is about as exciting as your toothbrush. You use it every day, it does the job, it is a simple tool, so what? Who would want to read about toothbrushes? PHPが他の言語と決定的に違うのは、作者およびコミュニティが、言語に対して道具以上の感情を抱いてないことだ。PHP

  • 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のinterfaceとabstractを正しく理解して使い分けたいぞー ::ハブろぐ

    interfaceとabstractの特徴と違いを捉える 今回もPHP話。(正しくないことは @ahomu に教えてもらえると助かりマス) PHP5では、interface(インターフェイスの宣言)やabstract(抽象化)が使用できます。これらの説明を読むと、一見して同じような役割を持っているように見えます。 それは両者とも、メソッドの実装を「インターフェイスを実装したクラス」や、「抽象クラスを継承したクラス」に強制的に任せる機能を持っているからです。これらの挙動は、外見上とても似ています。少なくとも自分はそこで引っかかりました。 interfaceもabstractも便利なオブジェクト指向機能ですが、使い分けができないと、もったいないです。ありがちな話だと、いつまでもabstract一辺倒で、interfaceの出番が見つからない、とか。 今回はそのへんを自分の理解を整理しつつ書き留

    PHPのinterfaceとabstractを正しく理解して使い分けたいぞー ::ハブろぐ
  • 有名フレームワークのCSRF対策方法を調べたまとめ - webネタ

    ZendFramework 流れ 表示時 : token生成→hiddenセット + セッションにセット 送信時 : 送られてきたtokenをセッションにあるものと同じかでチェック token生成方法 ランダム値 + salt + 固定値 + ランダム値 md5( mt_rand(1,1000000) . $this->getSalt() . $this->getName() . mt_rand(1,1000000) ); まとめ ランダム値をセッションにいれて、送られてきたものとチェック。 Symfony 流れ 表示時 : token生成→hiddenセット 送信時 : 送られてきたtokenを、再度生成したtokenと比較して同じかチェック token生成方法 salt + 固定値 + セッションID sha1($this->secret.$intention.$this->getSe

    有名フレームワークのCSRF対策方法を調べたまとめ - webネタ