タグ

2011年12月26日のブックマーク (16件)

  • php のプロセス数を絞ろう : DSAS開発者の部屋

    KLab Advent Calendar 2011 「DSAS for Social を支える技術」の7日目です。 @methane の新シリーズは Apache+php のチューニングです。 今日のお題は、タイトルのとおり、phpのプロセス数(=並列数)を減らすことです。 これはチューニンガソンでも人気のチューニングだったのですが、 今日はそのメリットをまとめます。 ロードアベレージが下がる プロセス数をコア数+α程度に抑えると、ロードアベレージがコア数の数倍〜 数十倍になることがなくなります。 例えばロードアベレージがコア数の100倍になると、1リクエストの処理に かかる時間は100倍以上に増え、せっかく処理したのにクライアント側が タイムアウトしていて完全に無駄骨になったり、最悪では再リクエストが来て さらに負荷が上がる負のスパイラルに陥る可能性があります。 たくさん一気に処理しよう

    php のプロセス数を絞ろう : DSAS開発者の部屋
  • もう一度身につけたい変態で学ぶオブジェクト指向 - Happy Programming!!

    コンニチハ! 変態アドベントカレンダーです。 http://atnd.org/events/22020 ※ アドベントカレンダーとは、クリスマスまでに毎日日替わりで窓を開けていくカレンダーのこと。 それにちなんで、日替わりでblogエントリを書くのがアドベントカレンダーです。 オブジェクト指向 ってよく聞きますし、実際のところ何がすごいの?? って思ったりしてる人も多いでしょう。 抽象クラスって何よ!? インタフェースとかどうやって使う? とか そういう初心者向けアーンドもう一度学びたい人達に変態を例に説明してみましょう。 うだうだですけど、最後まで読んでいただければ幸いです。。。 まず、オブジェクト指向は何が嬉しいのか?ってところですけど、 処理を共通化し、生産性をあげる!! ということではありません。 もちろんそういう一面もありますが、これぐらいならオブジェクト指向を使わなくても十分で

    もう一度身につけたい変態で学ぶオブジェクト指向 - Happy Programming!!
    tofu-kun
    tofu-kun 2011/12/26
    今までにない分かりやすさ
  • 安全なWebアプリを作りたければ新しいフレームワークがオススメ | 水無月ばけらのえび日記

    例えば,Railsの入力のセキュリティ対策はセキュアであるとは言えません。Railsのバリデーションは「データベースにデータが保存される前」に行われます。データベースにデータを保存する必要がないようなアプリケーションの場合,入力のバリデーションをフレームワークとして行う仕組みになっていません。来入力はデータベース利用の有無に関わらず入力を受け入れた直後に行うべきです。多くのフレームワークがRailsの影響を受け同様の仕様となっています。Railsが脆弱な仕様を採用したことは不幸なことだったと思います。 ……。 まず、バリデーションはセキュリティのためにする処理ではありません。たまたまセキュリティの役に立つこともありますが、役に立たないこともあります。たとえば、問い合わせフォームに文の入力欄があり、任意のテキストが入力できて、DBにはText型 (任意の長さの任意のテキスト) として保存

  • エラーハンドラと例外ハンドラによるエラー処理 (PHP Advent Calendar jp 2011 Day 11) | k-holyのwebメモ

    @calpo22さんの記事 PyrusでプロジェクトローカルなPEARライブラリインストール : PHP Advent Calendar jp 2011 Day 10 – くろまほうさいきょうでんせつ にき続き、PHP Advent Calendar jp 2011 11日目の記事です。 皆さん、エラー処理ちゃんとやってますか? 今時は、設定を書いておけばフレームワークがよしなにやってくれるよ、という方が多いかもしれません。 PHP4時代を戦い抜いた人は、皆自分なりのエラー処理関数を書いてset_error_handler()とtrigger_error()を駆使した経験があると思います。 私も当時は、サブルーチンを呼ぶたびに戻り値をチェックして return FALSE をリレーしていき、レスポンス出力の段階でFALSEが返されていればエラー画面をinclude、といった処理をしてい

    tofu-kun
    tofu-kun 2011/12/26
  • 米Facebook、PHPを高速にするJITコンパイラ「HipHop Virtual Machine」を発表 | OSDN Magazine

    米Facebookは12月10日、PHPのJITJust-In-Time)コンパイラ「HipHop Virtual Machine(hhvm)」を発表した。PHPコードを高速に実行するためのランタイム環境で、LinuxとFreeBSDに対応する。現在Facebook内のテスト環境で採用されているという。オープンソースで開発されており、ライセンスはPHPおよびZendライセンス。 hhvmはPHPの高速化を目指してFacebook社内で開発された仮想マシン技術。Facebookは先にPHPコードをC++コードおよびバイナリに変換するHipHop interpreter(hphpi)やHipHop compiler(hphpc)を開発、採用していたが、hhvmはそれをさらに発展させたものとなる。 hphpiやhphpcはPHPコードを「AST」と呼ばれる中間コードに変換した後にC++コードに

    米Facebook、PHPを高速にするJITコンパイラ「HipHop Virtual Machine」を発表 | OSDN Magazine
    tofu-kun
    tofu-kun 2011/12/26
  • 過負荷をかわす Apache の設定 : DSAS開発者の部屋

    KLab Advent Calendar 2011 「DSAS for Social を支える技術」の9日目です。 前回は php を動かしている Apache の手前にリバースプロキシを 置く必要性を解説しました。 今日は、 その前の php のプロセス数を絞る設定と合わせて、実際に Apache で 設定する方法を紹介します。 以降、 php を動かしている Apache の事をアプリサーバー、リバースプロキシ+ 静的ファイル配信を行っている Apache の事をプロキシサーバーと呼びます。 基設定 まずは基的な設定のおさらいです。 アプリサーバー 並列数を絞るには MaxClients を設定します。アプリがどれくらいの時間を CPUの処理で使って、どのくらいの時間を外部リソース待ちに使っているかにも よりますが、だいたいCPU数の1.5倍〜2倍くらいが適当だと思います。 Hyp

    過負荷をかわす Apache の設定 : DSAS開発者の部屋
  • 例えば, Singleton を避ける | Born Too Late

    この記事は TDD Advent Calendar jp: 2011 の 14 日目です. 前日: TDD戦略 -TDDを導入し進化させる方法- #TDDAdventJP (@kyon_mm さん) 翌日: TDDに対して思っていること (@gab_km さん) この記事の概要 TDD で開発することで設計上の問題点に気づきやすくなる Singleton はグローバル変数である Singleton の使用はできる限り避けるべきである テスタビリティを意識しよう TDD では, 原則としてユニットテストを書いてから実際のコードを実装します. なので, 自然と「テストのしやすさ (テスタビリティ)」を意識して実装することになります. そして, TDD においては一般的に, テスタビリティを意識することで, 設計が改善されるとされています. オブジェクト指向には難しい概念がたくさん登場します.

  • PHP のソースコードを読みやすくするための工夫あれこれ

    PHP Advent Calendar 2011 に参加しています。 PHP に関する記事を日替わりで書こうというイベントですね。 昨日の redsnow_ さんからバトンを受け取ってこの記事が14日目。 読みやすいってどういうこと ソースコードは読みやすい方がいいし、 あとから修正しやすい方がいい。 難読化したい場合を除けば、 この点では誰もが一致するんじゃないかと思います。 でも、じゃあどういうのが読みやすいか どのようにしてあればメンテナンスが楽かについては 人によって意見がわかれそう。 ということで、普段こういうふうにやってるよ、という例と どうするのがいいかなあ、と思っているところと 人様のコードを見て「おおこれはいいね」と思ったものを書いてみます。 同じものを見て「そりゃあンた当たり前だろう」と思う人もいれば 「そんな書き方してる人がいるのか!」と驚く人もいるかもしれない。 そ

    tofu-kun
    tofu-kun 2011/12/26
    規約はあくまでアレ
  • PHP で使う => や -> や :: が何という名前かを手っ取り早く調べる方法

    先日こんなことを言ったんだけど PHP のソースコードを読みやすくするための工夫あれこれ – 頭ん中 配列のキーと値を結ぶやつ、何て呼ぶのか知りませんけど => => や -> や :: の名前について一応の解決がついたので書いておきます。 パーサエラーが教えてくれる 例えばあるはずのないところに else があったりすると PHP はこういうエラーを返してきます。 Parse error: syntax error, unexpected T_ELSE in Command line code on line 1 この T_ELSE というのは「パーサトークン」というやつで、PHP 内部でつけられている名前ですね。T は Token の T かな。 else にはそのまま ELSE という名前がついているけど、じゃあ記号を使った部分はどうなっているのか、無理矢理エラーを発生させればわかる

    PHP で使う => や -> や :: が何という名前かを手っ取り早く調べる方法
    tofu-kun
    tofu-kun 2011/12/26
    なるほど
  • isset() 関数にご用心! ( #phpadvent2011 Day 17 ) - omoonのブログ

    PHP Advent Calendar 2011 の 17 日目です。昨日はhajikamiさんの「http://my-rest.icca.jp/blog/2011/12/769/」でした。 みなさんこんにちは。17 日目担当の omoon です。普段は大阪で WEB アプリケーションを作ったりしている会社におりまして、PHP は触り始めて 10 年ぐらいです。 当はもっと早く記事を上げる予定だったんですが、急遽下のような仕事が入りまして遅くなりました。ごめんなさい。 さて、みなさんは配列の要素の存在確認ってどうされてますか? 僕は、PHP を始めてからずっと無条件で isset() 関数 を使っていたのですが、ついこの間、えー、うそん!的なハマりを体験いたしましたので、もうご存知の方には面白くともなんともない話だとは思いつつ、恥を晒す覚悟でまとめてみたいと思います。 isset() 関

    isset() 関数にご用心! ( #phpadvent2011 Day 17 ) - omoonのブログ
    tofu-kun
    tofu-kun 2011/12/26
    isset / is_arrayとか…
  • CakePHPの「OrderedBehavior」と「TreeBehavior」はマジで使うべき : akiyan.com

    CakePHPの「OrderedBehavior」と「TreeBehavior」はマジで使うべき 2011-12-20 あまり知られてなさそうだけど、マジで便利に使えるCakePHPのビヘイビアを2つ紹介します。 OrderedBehavior http://bakery.cakephp.org/articles/alkemann/2008/09/21/orderedbehavior-2-1 順序を管理するビヘイビアです。Webアプリケーションを作っていると、多くの局面で、 「順序を自由に入れ替えたいんだけど...」 という機能要望が上がります。DBの仕様としては順序を振ってソートするだけでよいのですが、愚直にDBを操作しようとするとすごくめんどくさいです。順序番号の振りなおしとか、うわーやってらんねー、ってなります。 そんなめんどくさい実装も、OrderedBehaviorを使えば、超簡

  • CakePHPのテーマ機能を使う 【CakePHP Advent Calendar 2011】

    今年もやって参りました、CakePHP Advent Calender。 21日担当の俺でやんす。 俺のことはむしろどうでも良いのですぐに題に入る訳よ。どうよ。 まずこの記事の対象となるCakePHPのバージョンは1.3なので、 1.2をお使いのモノノフがオレオレテーマ機能を自前で開発する方向性ならば、残念ながらこの場でサヨナラするか、素直に1.3を使うのが良策かと。 というわけで早速やってみよう。 まずはあなたが赴くままに好き勝手に作ったviewsフォルダ内を以下のような状態 だと仮定してみるところから始めるよ。 views dashboards index.ctp elements email html text errors error404.ctp users index.ctp add.ctp edit.ctp view.ctp よくある一般的なフォルダ構造だ。 一般的なのかど

  • WEB MEMO: cakephp2.0でのテストについて

    前日は@takuo_doiさんの「SQLから考えるModel::findの使い方」でした。SQLは誰もが悩むところだと思いますので非常に参考になると思いました。 最終日になりましたが、私はテストについて書かせて頂きたいと思います。 cakephp2.0からテストがphpunitになりました。 phpunitマニュアル http://www.phpunit.de/manual/3.5/ja/index.html cakephpのテストの実行には2つ方法がありまして、 ブラウザからtest.phpにアクセスする。 cake testsutie コマンドから実行する。

  • PHPとgoto文 (PHP Advent Calendar 2011 24日目)

    PHP Advent Calendar 2011の24日目です。 前日はbornknow108さんのPHPでIPMessangerでした。 何を書いてもいいとのことなので、PHPの黒歴史ことgoto文についてまとめてみます。 goto文とは goto文は、プログラム中の任意の位置にジャンプする構文です。処理を先に進めたり、戻ったりすることができます。 echo 1; goto third; echo 2; third: echo 3; //→13と表示され、2は表示されない gotoはとても低レベルな命令であり、これとif文さえあればほとんどの論理構造は書けてしまいます。要は強力すぎるため、gotoを多用して書くと大変読みにくいプログラムができあがります。 この件はDijkstra先生の論文「Go To Statement Considered Harmful」で有名になりました。プログラ

    PHPとgoto文 (PHP Advent Calendar 2011 24日目)
    tofu-kun
    tofu-kun 2011/12/26
  • 大垣本を読んで「バリデーションはセキュリティ対策」について検討した - ockeghem(徳丸浩)の日記

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

    大垣本を読んで「バリデーションはセキュリティ対策」について検討した - ockeghem(徳丸浩)の日記
  • javascript - からnewを取り除いてみる : 404 Blog Not Found

    2011年12月25日22:30 カテゴリLightweight Languages javascript - からnewを取り除いてみる JavaScript: The Good Parts Douglas Crockford / 水野貴明訳 [原著:JavaScript: The Good Parts] giveするイベントも終わったところで、takeしたいと思います。 JavaScriptから、newを。 だぐらす「すべてのnewを、生まれる前に消し去りたい」 newはなぜ危険か "JavaScript: the Good Parts"も言葉では指摘していますが、実演まではしていないので以下で改めて。 (function(){ var o, /* なんの変哲もないコンストラクター */ Point = function Point(x, y){ this.x = x; this.y

    javascript - からnewを取り除いてみる : 404 Blog Not Found