タグ

CodeReadingとPHPに関するraimon49のブックマーク (19)

  • PHPとPythonとRubyの連想配列のデータ構造が同時期に同じ方針で性能改善されてた話 - hnwの日記

    PHPPythonRubyの連想配列のデータ構造がそれぞれ4〜5年ほど前に見直され、ベンチマークテストによっては倍以上速くなったということがありました。具体的には以下のバージョンで実装の大変更がありました。 PHP 7.0.0 HashTable高速化 (2015/11) Python 3.6.0 dictobject高速化 (2016/12) Ruby 2.4.0 st_table高速化 (2016/12) これらのデータ構造はユーザーの利用する連想配列だけでなく言語のコアでも利用されているので、言語全体の性能改善に貢献しています1。 スクリプト言語3つが同時期に同じデータ構造の改善に取り組んだだけでも面白い現象ですが、さらに面白いことに各実装の方針は非常に似ています。独立に改善に取り組んだのに同じ結論に至ったとすれば興味深い偶然と言えるでしょう2。 稿では3言語の連想配列の従来実

    PHPとPythonとRubyの連想配列のデータ構造が同時期に同じ方針で性能改善されてた話 - hnwの日記
  • CentOS7でJDTを試してみた

    最近ICT界隈ではサマータイムが実施されるのではないかという話題でもちきりです。個人的にはとんでもないことだと思うのですが、仮に実施されることになったとして、一体どんなことが起こるのか事前に調べておきたいと思い、実験サーバを立ててみることにしました。 今回試すのはCentOS7をインストールしたサーバで、アプリケーションとしてWordPressを立ててどのように動作するかを一通り確認してみます。 サーバのサマータイム化そもそも、サーバをサマータイムに対応させるとはどういうことなのでしょうか。詳細な議論を省いてごく簡単に説明します。 CentOS7(Linux)においては、zoneinfoにおいて定義ファイルを設置することがこれに相当します。現在の設定は、次のようにすると参照できます。 [north@vortex ~]$ zdump -v /usr/share/zoneinfo/Asia/T

    CentOS7でJDTを試してみた
  • WordPress 4.7.1 の権限昇格脆弱性について検証した

    エグゼクティブサマリ WordPress 4.7と4.7.1のREST APIに、認証を回避してコンテンツを書き換えられる脆弱性が存在する。攻撃は極めて容易で、その影響は任意コンテンツの書き換えであるため、重大な結果を及ぼす。対策はWordPressの最新版にバージョンアップすることである。 稿では、脆弱性混入の原因について報告する。 はじめに WordPress体に久しぶりに重大な脆弱性が見つかったと発表されました。 こんな風に書くと、WordPressの脆弱性なんてしょっちゅう見つかっているという意見もありそうですが、能動的かつ認証なしに、侵入できる脆弱性はここ数年出ていないように思います。そういうクラスのものが久しぶりに見つかったということですね。 WordPress、更新版で深刻な脆弱性を修正 安全確保のため情報公開を先送り Make WordPress Core Conten

    WordPress 4.7.1 の権限昇格脆弱性について検証した
    raimon49
    raimon49 2017/02/06
    >WordPressでは以前からREST APIがプラグインとして用意されていましたが、WordPress 4.7以降で WordPress Coreにバンドルされました。今回の脆弱性は、このREST APIにあります。 / 脆弱性の顕在化にも色んなパターンがあるんだなぁ。
  • Goについて思うこと 2016

    あんまりこういう内容のポエム的なものは広まってほしくないなあ・・と思うのでこっちにひっそり書くことにする。 今年は僕にとってはGoの存在がとても大きい年だった。 5年前、僕が書くのはWebアプリケーションが中心で、PHPをメインで触っていた。それが気がつけばエンジニアリングのレイヤが広がったなあという所感があって、ここ最近Goがそれを加速してくれた。第二の言語としてのGoはとても良くできていて、小回りが聴くし、ミドルウェアをちょろっと書くにも心地よい。やっぱり最近の言語ならではの良さがある。たとえば、 * テストが標準ライブラリに組み込まれている * net/httpがとても良くできている。フレームワークを必要としない場面も多い。 * concurrencyを堅牢に扱える(うまい言葉が見当たらない) * そしてそれなりに速い というのがあげられる。特にgo toolの充実はすごい。Race

  • 消えたプログラマの残したものは - megamouthの葬列

    システム開発の佳境に、開発メンバーが突然出社しなくなってしまう。 携帯にも連絡がつかず、3日ほど音信不通になったので、さすがに心配になった上司が大家と共に自宅を訪れると、夕日が差し込む部屋の真ん中に、当の人が何の表情も浮かべずにただ座っていたりする。 そういう事は大して珍しいことではないので、ある程度経験のあるIT業界人なら、同僚が「消えて」しまってもそれほど驚くことはない。 プログラマというのは、とかく「消えて」しまうものなのだ。と彼らは思っている。 「消えた」プログラマは、意識的にしろ無自覚にしろ自分の人生をちょっとばかり台無しにしながら、プロジェクトに虚無の穴を空けるわけだが、そうした「工程の穴」は他のメンバーが残業したり、派遣会社から来た代替の人員が埋めてしまったりする。ビジネス的には人月で数えられた我々の「数字」などというものはちょっとした帳尻あわせでなんとかなってしまうらしい

    消えたプログラマの残したものは - megamouthの葬列
    raimon49
    raimon49 2016/11/27
    私小説みたいで引き込まれる。
  • PHPで学ぶ コンピュータアーキテクチャ

    PHPカンファレンス福岡2016の発表資料です。 この話は何回しても楽しいので再放送希望の方、お声がけください!

    PHPで学ぶ コンピュータアーキテクチャ
  • 「ケータイキット for Movable Type」のOSコマンドインジェクションの修正 | 水無月ばけらのえび日記

    更新: 2016年4月27日11時5分頃 Movable Typeのプラグイン「ケータイキット for Movable Type」にOSコマンドインジェクションの脆弱性があったという話が出ており、J-WAVEの64万件の個人情報流出はこれが原因だったとされています。 J-WAVEでも64万件の個人情報流出の可能性、原因ソフトの利用者は至急パッチ適用を (itpro.nikkeibp.co.jp)「ケータイキット for Movable Type」にOSコマンドインジェクションの脆弱性、利用者は修正バージョンへアップデートを、すでにJ-WAVEへの攻撃で悪用 (internet.watch.impress.co.jp)ケータイキット for Movable Type の脆弱性についてまとめてみた (d.hatena.ne.jp)配布元のアイデアマンズからは、4月22日にまず「緊急パッチファイ

    raimon49
    raimon49 2016/04/28
    何でPerlじゃなくPHPなんだろうという点が最初の疑問だったが、記事の最初で丁寧に書かれていた。ケータイキットではImageMagickをPHPスクリプトから実行して画像変換しているそう。
  • 筋の悪さ | tech - 氾濫原

    JS しか書いてないんだなって人は筋悪いものをありがたがっていたりする印象はある。しかし筋悪いものをありがたがるみたいなのはどこにでもいるので、JSがどうとかは直接は関係がないはずではあると思う。JSしか書いてない人とPHPしか書いてない人は似たようなもんで、単に広範囲の知識に興味がないだけな気がする。 それはともかく「これは筋悪そうだな」っていう感覚がどこからくるのかよくわかってないので、現時点で思いつく限り雑にメモしておく。 割の合わなさ 「これは何の問題を解決してるんだろう」と思ってドキュメント読んだりソース読んだりした結果、大したことを解決してなくて、その割に実装量が多いとか学習コストが高いと、筋悪いなあと思う。 フットプリントや学習コストに対して提供されるモノが「割に合わない」のは筋が悪く感じる。 将来性のなさ 「あ、これはただの流行だな」みたいな、5年後には消滅してるなというも

    raimon49
    raimon49 2016/04/19
    「筋の悪さ」の言語化・細分化
  • PHP による hello world 入門 | 東北ギーク

    知る者は言わず、言う者は知らず — 老子 世界で最も有名なプログラムの 1 つに、 hello world というものがあります。 <?php echo 'hello, world'; 出力先に対して「hello, world」という 12 字を書き込むだけの単純なプログラムで、プログラミング言語やライブラリの利用例を最小限の形で示すものです。 この記事ではメジャーな Web プログラミング言語の 1 つである PHP 処理系が、hello world をどのように実行するのかについて、簡単に解説します。 以下の 4 節で構成されています。 「PHP スクリプト実行の大体の流れ」は実行時の概略を箇条書きでまとめたものです。 「SAPI」では、PHP 処理系の起動のされ方についての基礎知識を解説します。 「Zend Engine とオペコード」は PHP 公式処理系の仮想マシンの命令と、PH

    PHP による hello world 入門 | 東北ギーク
  • 『最初に「読む」PHP』は全体的にとても良いが惜しい脆弱性がある

    最初に「読む」PHP(クジラ飛行机)を読みました。書にはセキュリティ用語(クロスサイトスクリプティング、SQLインジェクション等)はほとんど出てきませんが、脆弱性についてよく配慮された記述となっています。しかし、その細部の詰めが甘く、脆弱性が混入してしまいました。その内容を報告したいと思います。 クロスサイトスクリプティング 出力時にHTMLエスケープするという原則を比較的早い段階で説明しています。その説明が素晴らしいと思いました。 ユーザーから送信されたデータを、PHPを使ってそのまま画面に表示することは、レイアウトの崩れや セキュリティ上の危険につながります。必ず、HTMLに変換してから表示します。そこで、画面に「(^o^)<Hello」と表示するプログラムを作ってみましょう。 「HTMLに変換して」という表現がとてもいいですね。難しくいうと、Content-Typeをtext/pl

    raimon49
    raimon49 2015/06/11
    入門書としてかなり好ましそう。新入社員などに薦める一冊として覚えておきたい。
  • PHP 7のパフォーマンスが高い理由

    CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

    PHP 7のパフォーマンスが高い理由
    raimon49
    raimon49 2015/03/23
    かなりマニアックな解説だ。
  • EximのGHOST脆弱性の影響とバリデーションの関係

    追記(2015/2/6) 大垣さんから訂正依頼のコメントを頂いておりますので合わせてお読みください。徳丸としては特に訂正の必要は感じませんでしたので、文はそのままにしています。そう思う理由はコメントとして追記いたしました。 (追記終わり) 大垣さんのブログエントリ「GHOSTを使って攻撃できるケース」を読んだところ、以下のようなことが書いてありました。 1. ユーザー入力のIPアドレス(ネットワーク層のIPアドレスではない)に攻撃用データを送る。 2. バリデーション無しで攻撃用の不正なIPアドレスをgethostbyname()に渡される。 3. ヒープオーバーフローでヒープ領域のメモリ管理用の空きサイズを改竄する。 【中略】 どんなソフトウェアが危ないのか? ユーザー入力のIPアドレスをバリデーションしないでgethostbyname()を使用している。 インタラクティブな動作を行っ

  • MacOSX上で.NET環境向けPHPコンパイラPhalangerを動かしてみた - hnwの日記

    (1/7 追記)ベンチマークテスト結果が不正確だったので、再測定して書き直しました。以前の記事よりもPHPの結果が良くなっています。 あけましておめでとうございます。このたび、gihyo.jpの新春特別企画として記事「PHP処理系の未来」を寄稿いたしました。HHVMとPHP7を絡めて最近のPHPの動向を紹介するような内容になっていますので、是非ご覧くださいませ。 この記事を書くにあたり、HHVM以外にも有望なPHP処理系があるかどうかを調べていました。その結果、HHVMほどではないにせよ実用レベルに近いPHP処理系が複数あることがわかりました。 そうした実装のうち、今回は.NET FrameworkおよびMono環境で動くPHPコンパイラPhalangerを紹介します。PhalangerはC#で書かれており、PHPソースコードから.NETアセンブリを出力します。Windows上では家PH

    MacOSX上で.NET環境向けPHPコンパイラPhalangerを動かしてみた - hnwの日記
  • PHP の curl_multi_exec はなぜPHPなのにパラレルで処理できるのか - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    発端 某所で「最近のPHPcurlライブラリはパラレル取得できる」ときいて「エッなんで、PHPって基シングルスレッドだしイベントループみたいな機構もないと認識してるんだけど」って思って調べた。 追記:と思ったが、この記事を書いた後さらに調べたら、そもそもPHP には stream_select など IO 多重化をサポートする関数群があった。不勉強であった。 なにはともあれドキュメントにあたろう PHPは公式のドキュメントが充実していてすばらしい。これは素直に認めるべきPHPの美点だと思う。 Client URL Library うーんなんか見た感じCで並列性を吸収してるのかな?という感じの低レベルAPIへのグルー感。じゃあ実際にソースを読んでみる ソースを読む https://github.com/php/php-src/blob/85d05b5654cbbbf6f741d7f9be

    PHP の curl_multi_exec はなぜPHPなのにパラレルで処理できるのか - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く
  • お前は PHP の歴史的な理由の数を覚えているのか

    PHP といえば印象的なのは「歴史的な理由」 (≒黒歴史) の数々ですね。 このセッションでは、普段闇にこもっていてスポットの当たることの少ない「歴史的な理由」たちを引きずり出し、徹底追及し、頭を抱えていこうと思います。

    お前は PHP の歴史的な理由の数を覚えているのか
    raimon49
    raimon49 2014/03/16
    ML + コードリポジトリが残ってることって大事だなと良く分かるスライド。
  • 言語とリーダビリティ - methaneのブログ

    この記事は 勝手に添削: PHP初心者向けのコード最適化 の続編です。リーダビリティの定義は前と同じく、「そのコードが何をしたいかを把握する時間+そのコードをレビューして正しいと自信を持てるまでの時間」の短さです。 よく「php よりも Python の方がリーダビリティが高い」という主張に対して、「Pythonでも糞コードはかける」「言語よりも人の問題だ」といった反論をする人がいます。 この反論をする人は「同じ程度のスキルの人が同じ程度の丁寧さでコードを書く」という暗黙の前提が伝わっていなくて、「リーダビリティは言語に依存して人には依存しない(あるいは人よりも言語に強く依存する)」という主張だと誤解しています。(この主張にかぎらず、大抵「◯◯でも悪い△△は存在する」という類の反論は、暗黙の前提を理解していないか、あるいはわざと無視しているケースが多いです) 言語設計が(書き手のスキルほど

    言語とリーダビリティ - methaneのブログ
  • hiphop php でPHPからジェネレートされたC++コードを読んでみよう。 - お前の血は何色だ!! 4

    PHP advent calendar です。 クリスマス過ぎましたけど 12/26日をお送りします。(google docsに名前書き忘れていたんだよ) 前回 12/25日は、@yoya さんの「WindowsPHPbuild する」でした。 今回は、facebookの人が作った PHPC++ に変換して高速動作させるという hiphop php がジェネレートする C++ のコードを読んでみたいと思います。 C++は厳格な静的型づけの言語ですが、PHPは動的型づけの言語です。 これをどうやって、変換しているのか?という話です。 非常に長く、眠い話になりますが、寝ないで読んでいただけたら嬉しいです。 間違いなどありました、ぜひ教えてください。 hiphop php を入れよう。 そもそもhiphop php を入れるのはすごく大変です。 Scientific Linux

    hiphop php でPHPからジェネレートされたC++コードを読んでみよう。 - お前の血は何色だ!! 4
  • 大垣本を読んで「バリデーションはセキュリティ対策」について検討した - ockeghem(徳丸浩)の日記

    このエントリでは、セキュリティの観点から、バリデーション実装について検討します。大垣さんのを読んで「大垣流バリデーション」について勉強した結果を報告します。 はじめに 大垣さんの記事「入力バリデーションはセキュリティ対策」では、「入力バリデーションはセキュリティ対策である」が力説されています。この記事はおそらくid:ajiyoshiさんのブログ記事「妥当性とは仕様の所作 - SQLインジェクション対策とバリデーション」を受けてのことだと思います。id:ajiyoshiさんのエントリでは、「妥当性検証は仕様の問題であってセキュリティ対策ではありません」と明言されています。私はid:ajiyoshiさんに近い考えを持っていますので、大垣さんの主張について、私なりに考えてみました。 記事を書くにあたり、徳丸の立場を明確にしておきたいと思います。 バリデーションの基準は仕様の問題 バリデーション

    大垣本を読んで「バリデーションはセキュリティ対策」について検討した - ockeghem(徳丸浩)の日記
    raimon49
    raimon49 2011/12/28
    タフなユーザー体験w
  • PHP5.3.7のcrypt関数のバグはこうして生まれた

    昨日のブログエントリ「PHP5.3.7のcrypt関数に致命的な脆弱性(Bug #55439)」にて、crypt関数の重大な脆弱性について報告しました。脆弱性の出方が近年まれに見るほどのものだったので、twitterやブクマなどを見ても、「どうしてこうなった」という疑問を多数目にしました。 そこで、このエントリでは、この脆弱性がどのように混入したのかを追ってみたいと思います。 PHPのレポジトリのログや公開されているソースの状況から、PHP5.3.7RC4までこのバグはなく、PHP5.3.7RC5でこのバグが混入した模様です。RC5はPHP5.3.7最後のRelease Candidateですから、まさに正式リリースの直前でバグが入ったことになります。 バグの入る直前のソースは、ここの関数php_md5_crypt_rから参照することができます。以下に、おおまかな流れを図示します。まずはバ

    PHP5.3.7のcrypt関数のバグはこうして生まれた
    raimon49
    raimon49 2011/08/24
    コミットログから追う今回の文字列操作ミス混入の経緯。
  • 1