タグ

ブックマーク / anatoo.hatenablog.com (8)

  • 適当なスクリプトをデーモン化するのにSupervisorが便利 - id:anatooのブログ

    適当なスクリプトをデーモン化しようと思った時の典型的な要件が以下であるが、この記事でも紹介したpython製のプロセス管理ツールであるSupervisorを使うことによって解決できる。 プロセスの生死の監視する プロセスが死んだら勝手に再起動する 標準出力やエラー出力のログを取る 場合によっては複数プロセスを起動したい プロセスのステータスを簡単に確認したい この記事では、プロセス管理ツールSupervisorの導入を簡単に紹介する。 インストール easy_installからインストールできる。そもそもeasy_installが入ってない場合は以下みたいにインストール。 $ curl -O http://peak.telecommunity.com/dist/ez_setup.py $ python ez_setup.pySupervisorをeasy_installからインストールしま

    適当なスクリプトをデーモン化するのにSupervisorが便利 - id:anatooのブログ
  • github社製ボットフレームワーク、hubotをIRCボットとして導入した話

    修正: 2/10 node-cronを使ったコードの例が間違っていたので修正。 github社製のボットフレームワーク、hubotをIRCボットとして導入する話。 インストール hubotはnode.jsとcoffescriptで書かれたgithub社製のボットフレームワーク。IRCに限らず、campfireやtwitterなどいくつかのアダプタに対応しているが、ここではIRCで利用するための導入手順を記す。 あらかじめnode.jsとnpmをインストールしておいて、hubotをインストールする。 $ git clone git://github.com/github/hubot.git $ cd hubot $ npm installhubotは、ボットが扱うデータを永続化するためにredisというKVSを利用する。redisが入っていない時はエラーになるので動かす前にインストールする。

    github社製ボットフレームワーク、hubotをIRCボットとして導入した話
    kamipo
    kamipo 2012/04/17
  • vim使い向けのGDBフロントエンド、CGDBが便利という話 - id:anatooのブログ

    最近PHPの中身を探ることが多くなってきました。以前PHPカンファレンス2011で話した「PHPをハックしてオレオレ文法を追加する」のなかでは、PHPの内部の動きを知るにはソースコードリーティングだけだと実際にどんな動きをしているのかわかりづらいので、そういう時はGDB使ってやるといいよ、というふうなことを言いました。とかいいつつ、実際にはGDBを直接使ってはいません。操作がプリミティブ過ぎて使いづらいからです。代わりに、GDBフロントエンドの一つであるCGDBというソフトウェアを利用しています。 この記事ではこのCGDBの概要について簡単に説明します。 CGDBの何が便利なのか GDBフロントエンドには、DDD、Insightなどがあります。また、純粋なGDBフロントエンドの他にも、Eclipse CDT、XcodeなどGDBフロントエンドとしての機能を有しているIDEなどがあります。こ

    vim使い向けのGDBフロントエンド、CGDBが便利という話 - id:anatooのブログ
  • PHPとJavaScriptでHTTPストリーミングする話(Transfer-Encoding: chunked編) - id:anatooのブログ

    HTTPレスポンスをajaxでストリーミング的に受け取りたいとき、要するにHTTPストリーミングをしたい時には、Transfer-Encoding: chunkedなレスポンスを生成してやるとよい。こうするとAjaxではHTTPレスポンス全体を受け取るのを待たずに、レスポンスの中身にアクセスすることが出来るようになる。従って、一つのHTTPコネクションでサーバ側から任意のデータを好きなタイミングでプッシュすることが出来る。 コード 一秒ごとに生成されるJSONをストリーム的に受け取るデモのコードが以下。 <?php // push.php function output_chunk($chunk) { echo sprintf("%x\r\n", strlen($chunk)); echo $chunk . "\r\n"; } header("Content-type: applicati

    PHPとJavaScriptでHTTPストリーミングする話(Transfer-Encoding: chunked編) - id:anatooのブログ
    kamipo
    kamipo 2011/05/30
  • テンプレートエンジンを素のPHPからTwigに乗り換えた理由 - id:anatooのブログ

    そもそもPHP自体がテンプレートみたいなものなのにさらにテンプレートエンジンとか使う理由って何ですか? http://d.hatena.ne.jp/xmalloc/20091225/1261709421 nimpadでは、以前はテンプレートエンジンとして素のPHPを使っていましたが、最近Twigというテンプレートエンジンに切り替えました。 理由は幾つかあるのですがその中から主なものを挙げてみました。 テンプレートの継承ができる テンプレートを継承できるのは便利です。レイアウトなどは同じだけど細かいところは違う、というようなテンプレートを書くのが格段に楽になります。 素のPHPでレイアウトなどを共有する場合、includeする部品ひとつひとつを他のファイルに切り出してやる必要があるんですが、継承に比べるとこれは面倒です。 素のPHPからTwigに乗り換えた一番大きな理由はこれです。 変数を勝

    テンプレートエンジンを素のPHPからTwigに乗り換えた理由 - id:anatooのブログ
  • PHPの次の十年のためのフレームワークBlankaの話 - id:anatooのブログ

    http://github.com/anatoo/Blanka タイトルはここからインスパイアされた。 最近PHP5.3で動く新しいウェブアプリケーションフレームワーク作っている。 まだ一度もリリースしていないが以下その概要について箇条書きとサンプルコードを少し書く。 PHP5.3以上で動く コントローラ = コールバック コントローラを作るのに必ずしもクラスを書く必要がなく、匿名関数でもよい hello worldのコード <?php include_once '/path/to/Blanka.php'; Blanka::app()->respond(function($b) { return 'hello world'; }); コントローラの最初の引数には必ずBlankaオブジェクトが渡される。 Blankaオブジェクトは、リクエストを得るためのメソッドや、レスポンスを返すメソッド、

    PHPの次の十年のためのフレームワークBlankaの話 - id:anatooのブログ
  • limeでなるべく気軽にユニットテストを書く - id:anatooのブログ

    limeというのはSymfonyフレームワークで使われてるユニットテストライブラリで、このライブラリはインストールも簡単で、実際にテストを書くのも楽なのでよく使う。 この記事ではlimeというライブラリを簡単に説明しつつ、クラスファイルにテストを埋め込むことで、より気軽にテストを書く方法を紹介する。 limeのインストール http://svn.symfony-project.com/tools/lime/tags/RELEASE_1_0_6/lib/lime.phpからファイルを適当な場所に保存する。limeは一つのファイルで完結しているのでインストールはこれで終わり。 実際にテスト書いてみる 通常の書き方が以下。 <?php include_once 'lime.php'; $t = new lime_test; $t->is('hoge', 'hoge', '比較のテスト'); $t

    limeでなるべく気軽にユニットテストを書く - id:anatooのブログ
  • PHPのコールバックを使いやすくする - id:anatooのブログ

    PHPのコールバックは少し使い辛いので、それを和らげるようなスニペットを実験的に書いた。 コードはこんな感じ。 <?php class Curry { protected $callback, $bind; protected function __construct($callback, Array $bind) { if(!is_callable($callback)) throw new InvalidArgumentException; list($this->callback, $this->bind) = func_get_args(); } static function make($callback, $bind) { return array(new self($callback, $bind), 'invoke'); } function invoke() { $arg

    PHPのコールバックを使いやすくする - id:anatooのブログ
    kamipo
    kamipo 2010/02/25
  • 1