タグ

ブックマーク / walf443.hatenablog.com (13)

  • Server-Sent Events覚え書き - walf443's blog

    なかなか書く機会はなかったのだけど、ふと使えそう!、という場面があったので、Server-Sent Eventsを書いてみたのでメモ。 レスポンスのContent-Typeはtext/event-stream dataを組み立てる際は、改行(\r, \n, \r\n)をエスケープする。 http://www.w3.org/TR/eventsource/#parsing-an-event-stream http://dev.ariel-networks.com/wp/archives/4168 任意に改行を入れられると、任意のイベントを定義されてしまうので、何らかの入力を元に出力するときには、改行コードのエスケープが必要。 UTF-8であること、という制約もあり、とりあえずはJSONにしておくのが扱いやすくてよさげ。 JSONにするときに改行はエンコードしてくれないことがあるっぽいので、そこ

    Server-Sent Events覚え書き - walf443's blog
  • 適度に実行時間を抑制するrate_throttle - walf443's blog

    cronなどで統計処理のSQLをたくさん投げたりするときに、mysqlにあまり負荷をかけたくないので、適度にsleepを挟みながら実行させる、という処理を書くときに、perlだと、Sub::Throttleというid:kazuhookuさんのライブラリを使っていたのですが、rubyで同様のライブラリを探すとなかったので、rubyへrate_throttleという名前で移植しました。(当はProc::Throttleにするつもりだったのですが、既にあったので....) require 'rate_throttle' 1000.times do # limit block to 10% workload. RateThrottle.throttle(0.1) do # do something. end end こんな感じで書くと、ブロックを実行した後にその実行時間が10%になるようにsle

    適度に実行時間を抑制するrate_throttle - walf443's blog
    yuiseki
    yuiseki 2012/07/22
  • memcachedのように使えるBloomFilter - walf443's blog

    YAPCでmalaさんの話を聞いていて、memcachedのようにお手軽に使えるbloom filterがあるとひょっとすると便利かもしれない、とふと思ったのでAnyEventつかって、Bloom::Fasterのwrapperを書いてみました。 https://github.com/walf443/p5-bloomd-server 以下のようなプログラムを書いてサーバーを起動します use strict; use warnings; use EV; use AnyEvent; use Bloomd::Server my $cv = AnyEvent->condvar; my $server = Bloomd::Server->new( capacity => 100_000_000, backupdir => '.', ulog => 'ulog', ); $server->run $c

    memcachedのように使えるBloomFilter - walf443's blog
    yuiseki
    yuiseki 2011/10/31
  • KVMをコマンドラインから使うの術 - walf443's blog

    結構前に自宅サーバーの仮想化はXenにしていたのをこれからはKVMらしいのでKVMに変えてみるか、とやってみたときは、ホストOSにX入れないとうまく動かなかったりそういう点が嫌だなぁと思っていたが、だいぶ環境や情報が揃ってきて、Xenで作ったりするのと同程度には楽にできるようになったようだなと思ったので、部屋の模様替えして再起動したついでにえいや、とやってみた。 ちょっと覚え書き程度にまとめておく。 sudo -H virt-install -n natty -r 256 --vcpus=1 \ -f /var/lib/libvirt/images/natty.img -s 5 \ --os-type=linux --os-variant=virtio26 \ --network bridge=br0 \ --location='http://jp.archive.ubuntu.com/u

    KVMをコマンドラインから使うの術 - walf443's blog
  • git bisectの使いかた - walf443's blog

    gitを話を聞きに第33回git勉強会に行ってきました。 詳しいまとめは http://d.hatena.ne.jp/conceal-rs/20080928/1222612534 http://wota.jp/ac/?date=20080928#p01 などがあるので割愛します。 git stashの話が出てきたときに、git stashがいつごろから入った機能なのか調べるにはどうしたらよいか?という話が出ていて、git bisectを使うと有効に探せるのではないか?とあまりgit bisectがわかってないながらも言ってみたので、できるのかどうか検証してみた。 まずはgitをgit clone. URLがgitgitですね。 git clone git://git.kernel.org/pub/scm/git/git.git git stashの機能がいつ入った機能かは知らないものとして

    git bisectの使いかた - walf443's blog
    yuiseki
    yuiseki 2010/08/26
    へえ
  • Rubyのaliasとalias_method - walf443's blog

    Rubyのaliasは文法でalias_methodはメソッドなのだけど、Railsの影響か、class内でショートカット的な役割をするメソッドはシンボルを引数に取るということが多くなっているので、 class SomeClass def old_some_method end alias new_some_method old_some_method endと書くよりも、 class SomeClass def old_some_method end alias_method :new_some_method, :old_some_method endと書く方が驚き最小の法則に従うと、よい気がする。 Refeによると、 Module#alias_method --- alias_method(new, old) メソッドの別名を定義します。 alias との違いは以下の通りです。 * メ

    Rubyのaliasとalias_method - walf443's blog
    yuiseki
    yuiseki 2010/06/10
  • 彼氏がtmt.vimを使ってなかった。別れたい - walf443's blog

    Text::MicroTemplateで書かれているHTMLのテンプレを素のvimのシンタックスハイライトを有効にした状態で開いていると、ひどい状態になってしまいます。 というわけで、eruby.vimを参考にしつつid:mikihoshiが書いていたのを、色々細々調整してみてだいたい変な挙動をしてたところは直せたかなといった感じです。 スクリーンショットは自分のvimだとこんな感じ。 家にいれてもらえるとのことなので、contrib/vim以下にいれてあります。 http://github.com/kazuho/p5-text-microtemplate インストールは、contribのvim以下のところから、ディレクトリ構造を~/.vim/以下に丸っとコピーすればよいです。 今のところ*.mtの場合に、tmt2htmlモードに自動判定される設定と、*.htmlの場合にtmt2html

    彼氏がtmt.vimを使ってなかった。別れたい - walf443's blog
    yuiseki
    yuiseki 2009/12/09
  • git-svnメモ - walf443's blog

    今までgit単体ではそこそこ使ってきたのですが、svnに入れる際はあまり使っていなかったのですが慣れてくると使いたくなったので少し調べてみました。ほとんどマニュアルに書いてあることなのですが、個人的にまとめた方が頭に入るのでまとめておきます。 checkoutする project/trunk/, project/branches/name/, project/tags/name/といった構成になっているときは、cloneするときに-sオプションを指定するとよいかんじです。 $ git svn clone http://svn.coderepos.org/share/lang/perl/HTTP-Engine/ -sこれで、 $ git branch -r class-component class-componentrelease-0.0.5 interface-declare lazy_

    git-svnメモ - walf443's blog
    yuiseki
    yuiseki 2009/06/26
  • Debianパッケージ構築のメモ - walf443's blog

    Debianパッケージはぱっとみ概念とかがわかりにくいので、色々省きつつ大雑把にとりあえず作ったりする上で必要な情報を説明してみる試み。 簡単なdebはとりあえず作ったりできるようになってみて、個人的にはこういう情報がまとまってると楽だったなーということをメモっておく。 自分自身あまり構築したパッケージの運用が長くはないので、ひょっとしたらシステムの依存関係を壊したり、あるいは正しくはない部分もあったりするかと思いますが、そういった部分があれば指摘してもらえれば勉強になります。 debパッケージ バイナリパッケージ (*.deb, *.udeb) いわゆるdebパッケージ ソースパッケージ(*.dscとアーカイブ) バイナリパッケージを作れる状態にしたもの。 環境が変わったり、ソフトウェアバージョンを上げるときにソースパッケージがあった方が作り直しが楽なのでなるべくとっておきませう。 de

    Debianパッケージ構築のメモ - walf443's blog
    yuiseki
    yuiseki 2009/06/17
  • ActiveResourceを少し触ってみた - walf443's blog

    TwitterAPIRailsのActive Resouceを試してみる http://blog.tkmr.org/tatsuya/show/318-twitter-api-rails-active-resouce の影響を受けてActiveResourceを使ってみた。 上の記事と合わせて思ったことをつらつらと書きます。 多くの場合書くクラスの設定は共通しているのでサイトごとにベースのクラスを用意してやって小クラスはそれを継承してやってから使う方が色々と楽でよいと思う。つまり上の記事の例なら、 require 'highline' require 'logger' class Twitter::API < ActiveResource::Base USER = HighLine.new.ask('user:') PASSWD = HighLine.new.ask('passwd:')

    ActiveResourceを少し触ってみた - walf443's blog
    yuiseki
    yuiseki 2009/05/19
  • gitのリポジトリを立てる(SSH経由) - walf443's blog

    そういえば、githubに頼りっぱなしで、共有リポジトリを作ってどうのこうのというのは試してなかったなと思いこんな感じでやってみた。 $ sudo useradd -d /home/git -s /bin/rbash -c "" -m -k '' git $ cd /home/git/ $ sudo cat > .bash_profile export PATH=/home/git/bin ^C $ sudo mkdir bin $ sudo ln -s /usr/bin/git /home/git/bin して、gitコマンドしか使えない制限のかかったgitユーザーを作る レポジトリを作るときは、 $ cd /home/git $ sudo -u git mkdir repos $ sudo -u git mkdir repos/project.git $ cd repos/projec

    gitのリポジトリを立てる(SSH経由) - walf443's blog
    yuiseki
    yuiseki 2009/04/26
  • I sort my thought... - BackgrounDRbについて調べてみた

    このページの情報は既にかなり古いです。私は現在あまり使っていませんし、追ってもいないのでこのページの情報が更新されることはあまり期待できないのでなるべく家の情報なりを見た方がよいでしょう。2009年8月現在だと http://d.hatena.ne.jp/tech-kazuhisa/20090816/1250432286 とかで似たような情報をあつかってるみたいです。検索しても結構上にまだくるっぽいのでいちおう追記しておきました。 次回の第8回Rails勉強会@東京でセッション案に上がっていたBackgrounDRbというやつがなにやら面白そげなので調べてみた。 調べてみた感じ以下のページがよくまとまっている。 http://www.infoq.com/articles/BackgrounDRb 以下、この内容を大雑把に要約してみる。 Ruby on Railsは素晴らしいフレームワーク

    I sort my thought... - BackgrounDRbについて調べてみた
    yuiseki
    yuiseki 2009/02/25
  • Rubyで日付・時間を操作 - I sort my thought...

    Perlで日付・時間を操作 - DateTime モジュールの使い方 http://iandeth.dyndns.org/mt/ian/archives/000619.html のようなことをRubyでやる方法を調べてみました。 基 現在日時のインスタンスを作る Time.new #=> Mon Jun 05 20:03:59 JST 2006 Time.now #=> Mon Jun 05 19:47:04 JST 2006Rubyの場合はデフォルトでローカルのタイムゾーンのインスタンスを作ります。newとnowの違いはinitializeを呼ぶか呼ばないかだそうです。 initializeを再定義とかしない限りあまり関係なさそう? 任意の日時のインスタンスを作る Time.mktime 2006, 6, 2, 16, 30, 50 #=> Fri Jun 02 16:30:50 JS

    Rubyで日付・時間を操作 - I sort my thought...
    yuiseki
    yuiseki 2008/06/23
  • 1