タグ

ブックマーク / gioext.hatenadiary.org (13)

  • Sinatraのパフォーマンスアップ作戦 - GIOの日記

    自サービスを続々とSinatraってます。 その際、パフォーマンスアップを狙い、Memcached(+memcache-client)を利用した、Railsのフラグメントキャッシュライクに使えるExtensionを書きました。 使い方やコードはコチラにあります http://github.com/gioext/sinatra-memcache/tree/master 使い方 # start memcached cd myapp git clone git://github.com/gioext/sinatra-memcache.git lib/sinatra-memcache# app.rb require 'rubygems' require 'sinatra' require File.dirname(__FILE__) + '/lib/sinatra-memcache/lib/sin

    Sinatraのパフォーマンスアップ作戦 - GIOの日記
    yuiseki
    yuiseki 2010/07/17
  • zipフォーマット - GIOの日記

    仕様書 を読みながらunpackしたりして遊んでみた。 io = File.open("test.zip", "rb") #header header = io.read(30) headers = header.unpack("VvvvvvVVVvv") # file name puts io.read(headers[9]) # extra field io.read(headers[10]) # data data = io.read(headers[7]) # decompress z = Zlib::Inflate.new(-Zlib::MAX_WBITS) open("test.jpg", "wb") do |f| f.write z.inflate(data) end 無駄にハマった・・・ windowsでbinmodeを忘れてた。。 しかしライブラリを作る人達はエライですね

    zipフォーマット - GIOの日記
    yuiseki
    yuiseki 2010/07/17
  • ziprubyを試してみた。 - GIOの日記

    2008-04-24 - lambda {|diary| lambda { diary.succ! } }.call(hatena) 現在RCVではzipファイルの読み込みにrubyzipを使用しています。 同様の処理でziprubyを使った場合と比較してみます。 対象は4000個のjpg画像をzipにしたファイルです。 ファイル名のみのリスト作成 user system total real rubyzip 0.703000 0.125000 0.828000 ( 0.828000) user system total real zipruby 0.046000 0.125000 0.171000 ( 0.172000)全ファイルread user system total real rubyzip 19.235000 4.703000 23.938000 ( 23.937000) us

    ziprubyを試してみた。 - GIOの日記
    yuiseki
    yuiseki 2010/07/17
  • WEBrick+Rack - GIOの日記

    WEBrickとRackのリクエスト処理周りを読んだ。 この様に、サーバーに依存するHandler部分 (WEBrickならservice()、Mongrelならprocess()) を吸収し、ユーザーが定義したcall()を動作させる。 require "rubygems" require "rack" class Hello def call env Rack::Response.new.finish do |res| res.write "hello" end end end Rack::Handler::WEBrick.run Hello.new, :Port=>7000 .ruファイルを記述した場合は、Rack::BuilderがHandlerへ 渡すオブジェクトをパズルのように組み立てています。

    WEBrick+Rack - GIOの日記
    yuiseki
    yuiseki 2010/07/17
  • SinatraでCSRFのチェック - GIOの日記

    SinatraっていうかRackのミドルウェアでありました。 sudo gem install rack_csrf# app.rb require 'rubygems' require 'sinatra' require 'rack/csrf' get '/' do @msg = 'Hello World' erb :index end post '/' do @msg = 'Hello CSRF' erb :index end configure do set :app_file, __FILE__ use Rack::Session::Cookie, :secret => 'change me' use Rack::Csrf, :raise => true end helpers do def csrf_token Rack::Csrf.csrf_token(env) end def

    SinatraでCSRFのチェック - GIOの日記
  • JSONを視覚的に表示 - GIOの日記

    最近JSONなデータをゴニョゴニョすることが多い。 しかしデータ構造を調べるのがめんどくさい。 ドキュメントなんてすぐ忘れる。 自分で書いたサービスでも忘れる。 ということでJSONなデータを視覚的に表示するJavaScriptのライブラリを書きました。 FirefoxとSafariで動作確認。 http://code.google.com/p/jvisualobj/ こんな感じです jv posted by (C)gioext 使い方はとっても簡単 $jv.p(obj, area_id); 詳しくはsampleファイルを見てください。 開発のお供にどうぞ。

    JSONを視覚的に表示 - GIOの日記
    yuiseki
    yuiseki 2009/10/07
  • 2ちゃんねるBOTの作り方 実装編1 - GIOの日記

    2ちゃんねるBOTの作り方 準備編 - GIOの日記 2ちゃんねるBOTの作り方 設計編 - GIOの日記 必要な機能を思いだそう 1.掲示板一覧からニュー速VIPのURLを取得 2.ニュー速VIPの全てのスレッド情報を取得 3.全てのスレッドから全ての画像URLを取得 4.全ての画像をダウンロード 5.同じ画像をダウンロードしないようにスレッド情報を保存 最初にAPIを決めよう 最初にAPIを決めるのはテスト駆動開発を進めたり、美しいコードを書く上で有利です。まずはスケルトンコードっぽく実装 module Bot2ch class Menu def get_board(subdir) end end class Board def get_threads end end class Thread def get_images end end class NormalImageDownlo

    2ちゃんねるBOTの作り方 実装編1 - GIOの日記
  • 2ちゃんねるBOTの作り方 実装編2 - GIOの日記

    2ちゃんねるBOTの作り方 準備編 - GIOの日記 2ちゃんねるBOTの作り方 設計編 - GIOの日記 2ちゃんねるBOTの作り方 実装編1 - GIOの日記 同じファイルをダウンロードしないようにしよう この機能は実装方法に悩む 1.DATを前回読み込んだ分だけシークさせて、残りから画像を探す 2.ダウンロードした画像URLをDBにいれとく 3.前回ダウンロードした枚数回はダウンロードしない 2は無いとして、1がベストだと思うが、一番最初に思いついた3を実装します。 Appクラスを変更。yaml/storeでDAT番号をキーに枚数を永続化 class App def execute(board) root_dir = File.dirname(__FILE__) image_dir = "#{root_dir}/images" # db = YAML::Store.new("#{ro

    2ちゃんねるBOTの作り方 実装編2 - GIOの日記
  • Sinatra+携帯+絵文字 - GIOの日記

    ブログを放置しすぎなので紹介します。 いい加減飽きてきた感じのするSinatraで携帯サイトを開発するときの絵文字Extensionです。 自サイトで絵文字のみ使いたかったので実装しました。 現在は基絵文字のみ+あまりテストしてないという適当仕様です。 rack-ketaiを使えればそれで良いって話があります。 http://github.com/gioext/sinatra-emoji 使い方はREADMEを見れば概ね分かるかと思います。念のため、ここにも載せておきます。 注意点は通常のerb,hamlを置き換えて、文字コードを変換しているのでるので、変換が必要ない場合は__erb__,__haml__を使いましょう。 sudo gem install gioext-sinatra-emojirequire 'rubygems' require 'sinatra' require 's

    Sinatra+携帯+絵文字 - GIOの日記
    yuiseki
    yuiseki 2009/09/17
  • 2ch画像まとめ on Sinatra - GIOの日記

    自サービスをSinatraに置き換え始めた。 とりあえず2ch画像まとめを置き換え。 ついでに見た目もちょっと変更 http://pic2ch.giox.org/ Sinatra素敵です。 フロントWebサーバーをNginxにしたいなー

    2ch画像まとめ on Sinatra - GIOの日記
    yuiseki
    yuiseki 2009/06/12
  • 2ちゃんねるBOTの作り方 準備編 - GIOの日記

    アホな話 2ch画像まとめというウェブサービスをご存知でしょうか。 クロール?スパイダリング?スクレイピング?いわゆるBOTが2chに書き込まれた画像を取得し、 まとめて見れるようにしたサイトなのですが、今日、次の記事を見つけた。 http://www.oshiete-kun.net/archives/2009/02/2chdl.html アホすぎる。クローラのクローラなんて。。 しかも、2ch画像まとめで見れる画像は全てWeb用に縮小した画像です。 ダウンロードするようなコレクターはオリジナルをダウンロードしたほうが良いですよ。 ということでBOTつくりましょう。 前知識 まずはコードを書く前に2chのしくみを簡単に。 2chはスレッド型掲示板の集合であり、全ての掲示板は次のHTMLファイルに一覧されてます http://menu.2ch.net/bbsmenu.htmlたとえばニュー速

    2ちゃんねるBOTの作り方 準備編 - GIOの日記
    yuiseki
    yuiseki 2009/02/23
  • 2ちゃんねるBOTの作り方 設計編 - GIOの日記

    2ちゃんねるBOTの作り方 準備編 - GIOの日記 要件を固めよう 1.ニュー速VIPの全てのスレッドから画像を取得 2.シンプルに! 3.テストコードは書かない! プログラム言語を決めよう 何でもいいです。 パフォーマンスを求めるならC、C++Javaで。 今回は読み書きの簡単なRubyを採用 処理の流れをもう一度確認 1.掲示板一覧ファイルを読み込む 2.対象の掲示板リンクを探す 3.対象のsubject.txtを読み込む 4.対象のスレッドを探す 5.DATファイルを読み込む 6.DATファイルをゴニョゴニョする 必要な機能を整理しよう 1.掲示板一覧からニュー速VIPのURLを取得 2.ニュー速VIPの全てのスレッド情報を取得 3.全てのスレッドから全ての画像URLを取得 4.全ての画像をダウンロード 5.同じ画像をダウンロードしないようにスレッド情報を保存 ディレクトリ構成で

    2ちゃんねるBOTの作り方 設計編 - GIOの日記
  • GIOの日記

    ひさしぶりに書いてます。 最近はGoogle App EngineやiPhone/Androidアプリにうつつを抜かしていて、Ruby関連情報を全くキャッチアップできていませんでした。 が、そろそろHerokuが天下をとるんじゃないかと感じたため調査を始めました。 調べていくうちに知らないワードがたくさんでてきてビックリ。 ひとまず気になるもの Bundler rubygemsとちがうの? Padrino SinatraとRailsの中間くらいの規模のフレームワークらしい。面白そう もろもろ調べつつTwitterのBOTでも書いてみてリハビリしてみよう goroutineとchannelとrangeつかえば巧い事やってくれました。 package main import ( "log"; "time"; ) func FibIter(n int) chan uint64 { ch := m

    GIOの日記
    yuiseki
    yuiseki 2008/12/16
  • 1