手軽に QR コードの画像ファイルを生成できる Ruby ライブラリ rqr を試す

「ruby qrcode」でググると Y.Swetake さんの QRコードクラスライブラリ for Ruby - QRcode encode class library for Ruby が真っ先にヒットする。だが、単に php 版から移植したと説明されているのと beta 版ということもあって躊躇っていた。 RubyForge にないのかと探していたところ rqr - http://rqr.rubyforge.org/ が見つかった。 バイナリ出力をするのではなくファイルに書き出すだけの簡単な仕様になっている。また、libjpeg, libpng, libtiff を使用しているので予めインストールしておく必要がある。 yum で依存ライブラリをインストール # yum install libjpeg.i386 # yum install libpng.i386 # yum install libtiff.i386 rubygems でインストール # gem install rqr CGI を作ってみる パラメータのテキストを QRコード で返す CGI を作成してみる。 #!/usr/bin/env ruby require “rubygems” require “rqr” require “cgi” # QRcode を PNG 形式のバイナリで返す def get_qrcode_bytes(text) filepath = “/tmp/qrcode” + $$.to_s + “.png” RQR::QRCode.create do |qr| qr.save(text, filepath) end bytes = File.read(filepath) File.delete(filepath) return bytes end cgi = CGI.new text = cgi[“text”] cgi.out(“image/png”) { get_qrcode_bytes(text) } ...

2008年12月16日 · Toshimitsu Takahashi

PHP での HTTP レスポンスを Transfer-Enconding: Chunked から Content-Length 指定に変えたい

レンタルサーバに制作した php のプログラムをアップしたら表示が遅い。ブラウザから見たときだけそうなり、wget すると一瞬で取得できるのです。 Firebugs で HTTPヘッダを見てみたら、Transfer-Encoding: chunked になってました。ということはそのレスポンスのストリーム終端が検出できずに Keep-Alive がタイムアウトするまで待ってしまってるのが原因のようです。それで php スクリプトの最後に flush(); とか書いてみたものの特に変化は見られずでした。 そもそもチャンクなのもどうのかなぁと思っていたら、 DoCoMo のiモードコンテンツ作成時の仕様 HTTPより http://www.nttdocomo.co.jp/service/imode/make/content/html/notice/basis/#p04 CGI作成時に「Content-Type」、「Content-Length」は必須項目となります。 とあるので、ケータイからアクセス対応も考えるとチャンクではなく Content-Length で対応しないと駄目ということです。 http://jp2.php.net/manual/ja/function.ob-get-length.php#13715 を見たところ、ズバリの答えがありました。 <? ob_start(); ?> 〜〜〜〜〜 <? $size=ob\_get\_length(); header("Content-Length: $size"); ob\_end\_flush(); ?> 世の中、php でケータイコンテンツ作られている事例は多々あると思うのですが、みなさんこのように実装されているのでしょうか。

2008年7月23日 · Toshimitsu Takahashi

モバイルサイト用のヘッダ出力を Ruby で書いてみた

モバイルサイト用のヘッダ出力を Python で書いてみた - Tosshi Note モバイルサイトを3キャリアでほぼ共通化して作りたい - http://d.hatena.ne.jp/tilfin/20080530/1212376626 上記のエントリで DoCoMo, au, SoftBank 用のモバイルサイトを XHTML で作成する場合のそれぞれの書き方を調べた。 その書き方に従って HTTP ヘッダと XHTML 宣言部分を出力する CGI サンプルを Python で書いてみた。 で書いたスクリプトを今度は Ruby で書いてみました。 require ‘kconv’ class UserAgent def initialize(ua) if ua.nil? @kind = 0 elsif ua.match(/^DoCoMo/) @kind = 1 elsif ua.match(/^KDDI/) @kind = 2 elsif ua.match(/^SoftBank|Vodafone|MOT/) @kind = 3 else @kind = 0 end end def is_mobile return @kind > 0 end def is_docomo return @kind == 1 end def is_au return @kind == 2 end def is_softbank return @kind == 3 end def get_content_type if @kind > 0 return “Content-Type:application/xhtml+xml; charset=Shift_JIS” else return “Content-Type:text/html; charset=UTF-8” end end def get_declare if @kind == 1 return «EOF ...

2008年7月10日 · Toshimitsu Takahashi