PHPerKaigi 2021 (2021/3/27) 発表資料。補足記事:https://hnw.hatenablog.com/entry/2021/03/29/011242 Read less
If PHP Were British When Rasmus Lerdorf first put PHP together, he - quite sensibly, despite his heritage - chose not to write it in Greenlandic or Danish. Good job too - that would have been rather unpleasant to work with. He opted instead, being in Canada, for a more local tongue. No, not French. Not Canadian English either. No, he went for that bastard dialect of the Queen's English commonly re
今年の夏頃から、特にサービスとして出すわけではなく、社内で使っているシステムのリプレースを行う事になりました。主な目的はレガシーすぎる設計をある低度モダンにする事、そして他のシステムと連携出来るようにする事、です。 対象のシステム 見積書や請求書などを管理・発行している。機能はそれなりに多いがUI操作はFormベース、テーブルタグで諸情報を表示するシンプルな物。ノンフレームワークで1画面1PHPファイルな古き良き時代のコード。おそらく10年ぐらい?稼働している。当初はPHP 5.1、PostgreSQL 8.x系だったが、現在はPHP 5.6とPostgreSQL 9.6で稼働しています。 その他の社内システム かつてはノンフレームワークだったり、太古のバージョンのCakePHPだったり、PHPが4系だったりしたが、概ねCodeIgniter 3系最新版 + PHP 5.6~7.1 + P
Transcript �&GGFDUJWF�:%% �����������1)1�#-5��� 4VQFSTIJQ�*OD����4IP�*UP w ҏ౻�ᠳ�ʢ!JUPTIPʣ� w 4VQFSTIJQגࣜձࣾʢچOBOBQJʣͰ8FCΤϯδχΞͬͯ·͢ɻ� w 1)1FS�Ͱ͕͢࠷ۙ�(PMBOH�ʹුؾதɻ�� w ৽ࠗͰ͢ɻʢුؾͯ͠·ͤΜʣ� w 1PLÉNPO�(0ͷϦϦʔεࢹ#05Λͭͬͨ͘ɻ ࣗݾհ ಥવͰ͕͢ɺ͜ͷதͰطࠗऀͷํԿਓ͍·͔͢ʁ :%%ಋೖ����:%%جૅ����:%%ൃల ݁ࠗ͢Δͱ1)1ॻ͕࣌ؒ͘ݮΓ·ͤΜ͔ʁ :%%ಋೖ����:%%جૅ����:%%ൃల w ������ىচʢೋ৸ʣ� w �����ʙ������ωοταʔϑΟϯ� w �����ʙ������ன৸� w �����ʙ������ͪΐͬͱ1)1� w �����ʙ���
この10年間で、3つのメジャーなプログラミング言語が、それぞれPerl 6、Python 3、PHP 6へと大幅なバージョンアップに乗り出しました。ところが、Unicodeのサポート問題などの表面的な類似点があるにも関わらず、根本的に異なった展開を見せています。 今年Perl 6.0.0が公式にリリースされるのに伴い、いま一度振り返って、リリース後の展開について考えてみるのに、今はちょうどいいタイミングでしょう。 これを書いていることが自分でも信じられないのですが、PHPから学ぶべきことがあるかどうか見ていきましょう。Zend TechnologiesのCEOであるAndi Gutmans氏は2008年2月の インタビュー でこう答えています。 我々はPHP 6に対し長いサイクルでのロールアウトを予想している。Perlプロジェクトに対しては、プロジェクトのコントリビューターがいまだPerl
PHPカンファレンス関西2015での私のセッション「PHPに無いセキュリティ機能」のスライドです。 何が無いのか、知っていれば対応できます。 何が問題になっているのか、知っていれば対応できます。 セキュリティ対策は職人技敵(脆弱性対策をコード中に散りばめ、全体を把握しないと安全にできない作り方)ではなく、CERT/SANS/OWASPが推奨するセキュリティ対策を行い、エンジニアリング的(科学的、体系的な作り方)を行う方が簡単かつより安全、高品質なアプリケーションを作れます。 PDFをダウンロードしたい方はブログをご覧ください。 http://blog.ohgaki.net/missing-security-related-parts-of-phpRead less
(2015/07/02追記:PHP 7.0.0alpha2に合わせて修正しました) PHPのエラーは、エラー文言を表示するだけの警告・注意と、その場で処理を終了してしまう致命的エラー(fatal error)の2種類に大別できます。 ところで、PHP5の致命的エラーには不便な点があります。それは、set_error_handler()やその他の方法でエラーハンドリングできず、必ず終了してしまう点です。これでは致命的エラーをユニットテストするのも不便ですし、ReactPHPのようにサーバ動作させるようなプログラムも安心して使えません。 PHP7では致命的エラーが例外として実現されるようになり、エラーハンドリングの自由度が格段に上がりました。この変更の概要を紹介します。 例外のクラス階層の変更 まず、PHP7で例外クラスの階層がどう変わるかを説明します。PHP5までの例外のクラス階層は次のよう
JPHPというJavaで書かれたPHP処理系があります。これは2013年10月にはじまった新しいプロジェクトで、大半をメイン開発者一人で開発しているようですが、既に一定以上の完成度です。また、内部的にはPHPファイルを解釈して直接Javaバイトコードにコンパイルしており、かなり高速なPHP処理系になっています。 他のPHP処理系と異なり、既存のPHPコードをWebサーバ上で動かすことを重視していないようにも見えますが、興味深いプロジェクトですので紹介します。 JPHPを動かしてみる さっそくJPHPを試してみましょう。現時点ではGitHubからソースコードを持ってきてビルドする必要があります。JDK7以上が必要ですので注意してください。JPHPのドキュメント「Getting Started」の通り、次のようにしてJPHPがビルドできます。 $ git clone https://githu
PHPで簡単にCSPを導入するためのライブラリを作成してみました。 kenjis/csp https://github.com/kenjis/php-csp-nonce-source 既存サイトへの影響を最小限にしてCSPが導入できることを目的としています。 基本的にCSP nonce-sourceを使い、nonceのないscriptタグは実行しないようにすることでXSS対策を強化します。 このライブラリの仕様としては、CSP nonce-sourceに対応していると思われる指定ブラウザに対してのみCSPヘッダを出力します。現状、ChromeとFirefoxのみが指定されています。 なお、CSP nonce-sourceに対応したChromeのバージョンがわからないので、確認できたバージョン37以上としてます。 CSPについて CSPについてよく知らない方は以下のスライドなどをご覧下さい。
徳丸はPHPが好きか? ですが、元はそんなこと意識してなかったんです。日本のPHPコミッターの一人にコイズミモリヨシ( @moriyoshit )という男がいますが、たまたま彼と昼食が一緒になる機会があって、その席で彼からぼそっと言われたんです。『徳丸さん、PHP好きでしょ』…あぁ、それまでPHPが好きかどうかなんて、考えたこともなかったのです。自分はPHPが好きか? 考えているうちに、あっ、自分はPHPが好きなのかも…と思い始めました。おそらくモリヨシが私に呪いをかけたんだと思いますね(笑い) 同業者からは、徳丸はなぜあんなにPHPを追いかけ回すんだろと思われていると思います。「徳丸さんはPHPを安全に使う方法を示した罪深い方」と書かれたこともあります(揶揄なのか、批判なのか、まさか褒めているのか、なんなのかよくわかりませんがw)。 かつては、PHP界隈の一人から、面と向かって「徳丸さん
こんにちは。新規事業本部・金融グループの金(成奉)です。 前回は高性能GIS専用のPostgreSQLデータベースサーバーの構築について話しましたが、今回はFastCGI基盤ウェブサーバーのPHPコンパイル構築、チューニング、設定などについてお話したいと思います。内容の範囲が広く、長文になっているため、3回に分けて投稿します。 PHPは、ほとんどのモジュールがコンパイルされるような構成となっています。おまけにGIS関連のデータを扱うことのできるGEOSエクステンションの追加などにも触れています。 ウェブサーバーは、ApacheとNginxになりますが、Nginxのコンパイル構築方法についても説明します。特にApacheでPHPを運用する際、最も効率よい構成はなんだろうと開発やインフラ担当の方はきっと悩んだことがあるかと思います。ApacheとPHPをどのような構成と設定で運用すれば、高いパ
PHPの==は両辺を適当に型キャストしてから比較するような演算子です。この型キャストの規則は難解すぎる上にドキュメントも不十分なため、PHPプログラマでも完璧に理解している人はほとんど居ないくらいの印象です。バグの原因になりかねないため、なるべく==を使わないようにしているPHPプログラマも多いはずです。 ところで、この==演算子の挙動がPHP 5.4.4から変更されていることはあまり知られていません。本稿ではこの内容を紹介します。 Bug #54547 の騒動 まずはこの仕様変更の経緯を紹介します。 2年ほど昔、Hacker Newsで2^63付近の整数に対応する文字列をPHPで比較したときの挙動がおかしいというスレッドが盛り上がったことがありました。具体的には、PHPでは「'9223372036854775807' == '9223372036854775808'」がtrueになるとい
本記事は英語版ブログで公開された記事の翻訳版です。 10年前の昨日、2004年7月13日、PHP 5.0.0が世界に向けて公開されました。Zend Engine 2を搭載し、実質的に生まれ変わったPHPです。 Zend Engine 2自体はPHP 4.3.0のいくつかのアルファ版から(試験的にですが)すでに公開されていました。一般的なユーザーにとって目立つ大きな違いは、オブジェクトの参照渡しがデフォルトになったことと、新しいオブジェクトモデルのサポートです。細かいことはさておき。 実は、PHP 4以前のPHPは基本的に手続き型言語で、クラスやオブジェクトをサポートしてはいましたが、いずれも後付けの機能だったのです。その歴史は現在でもデフォルト機能セットの多くに――最近追加されたパスワードハッシュAPIなどの新機能にさえ――見てとることができます。 それでも、いざ本格的な(「マシになっただ
この投稿はPHP Advent Calendar 2013の12日目の記事です。 PHP恒例行事の参照と三項演算子のdisりですが、そろそろあさってな議論はやめませんかという話です。 今年のPHP-dis大賞といえばこちら。 PHPとかいう糞言語|いんまのブログ ※ 追記: これ書かれたのは2012年でしたすんません。 なんで君たちそんなコードが必要なのかね、と。結論から先言うと、きみたちがPHPが使えないって思うのは、そんな挙動に左右されるようなコードを書くからでしょ、だからCとかRubyとかそういう簡単な言語でわかった気になっている初心者はまったくもう...というわけでPHPの言語文法の基礎んとこ、いきますね。 まず、PHPのarrayは「値」です。もちろん文字列も「値」です。値は値なんだけど、それはミュータブルです。PHPのarrayもしくは文字列の代入は、一見すると、ポインタを使わ
ことの始まり PHP の srand 関数について調べていて、ひょんな拍子にsrandのseedに文字列(numericである必要はあるけど)を渡せることを知った。 では、ここに long を超えるものを放り込むとどうなるのか。 では結果をごらんください。 「!?!?」 なぜこうなるのか 秘密は PHP 処理系の zend_parse_arg_impl 関数にあります。 zend_parse_arg_impl はphpの関数に渡された引数をパースする部分で、longを要求する関数にstringな値が渡された時の処理はこの部分ですね。 https://github.com/php/php-src/blob/master/Zend/zend_API.c#L335 さて、読み進めていくと「ん!?!?」ってなる行があるはずです。 この行ですね https://github.com/php/php-
米国でこの8年間のJava案件数の増加率はほぼ0%で、PHPは250%増。日本でも上級PHPerがいないと売り上げは伸びない!? PHPで作られたWebサイトが世界中で2億4400万サイトとなり、シェアは40%となりました。そして、そのシェアは今も増えているそうです。(インターネットコム2013年2月の記事を参照) アメリカではJavaの案件数はこの8年間で増えていません。一方でPHPは2.5倍になりました。日本でもそんな感じじゃないでしょうか?もしそうだとすると、Javaメインの事業体では売り上げは伸びないということになります。 ※2014年5月集計では全米のJava求人数は0%成長ではなく、▲30%成長になっています。(2014年10月6日加筆) グラフ:案件数比較 日本の求人数ではJavaが一位でPHPは二位となり、日本国内のJavaの求人数は1万6千件に対して、PHPは1万件を超え
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く