2008/9/22 月曜日

ruby の練習問題やってみた

Filed under: プログラミング — staki @ 23:59:49

↓をやってみた。

まつもと ゆきひろのRuby検定:ITpro http://itpro.nikkeibp.co.jp/article/COLUMN/20080115/291042/
=> 85点(ケアレスミス三問)

Ruby認定試験対策問題 http://projects.netlab.jp/ruby-test/index.html
=> 62 問中 16 問 NG(ミス多発)

総合問題 http://projects.netlab.jp/ruby-test/question01.html
=> 20 問中 2問 NG

ザックリ平均 20% ミスなんだけど、問題が多くなればなるほど正しい結果が出やすいと考えれば 25% 以上危険という事かも。(出題範囲が同類の場合、参考にするのは真ん中だけという考え方も)

16 問 NG の中のケアレスミス率は大体半分位なので、その辺考えれば理解度はまあ・・・とも考えられるけど、逆に言うと、知っていても気が付かないと言う。つまり理解していても意味が無い度で考えるとかなり終わってる訳で。

認定試験だと 75 点がボーダーらしいのでおれオワタ
情けない結果なんだけど、引き締める為に書いておく。

# 素で NG だった問題は、モノの見事に、普段意識的にスルーしている部分だった。その辺の改善は割と簡単そうなんだけど、顕在化してない部分もあるだろうからなあ…。

2008/9/20 土曜日

ldrの未読フィードからインライン画像リスト出す

Filed under: インターネット,プログラミング — staki @ 23:59:32

img.list っていうファイルに改行区切りでリスト出します。gethtml だの polipo に先行して食わせて高速化したりオフライン化のお供にしたり、ソレ専用アカウントな感じで画像収集したりとか。
simple-json が別途必要。あ、あとrubyです。

#クッキーとかいい加減です。
#ていうか何か汚い感じが・・・どうすれば良いんだろ?

ファイル

require "net/http"
require "zlib"
require "simple-json"
require "stringio"

username = "ゆーざーめい"
password = "ぱすわーど"

PROXY_ADDR = nil # 必要なら
PROXY_PORT = nil # 必要なら

login_parm= "livedoor_id=" + username + "&password=" + password #URI.encode必要?
$apikey = nil
$cookie = {}
$header =  {
  'Accept' => 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  'Accept-Language' => 'ja,en-us;q=0.7,en;q=0.3',
  'Accept-Charset' => 'Shift_JIS,utf-8;q=0.7,*;q=0.7',
  "User-Agent" => 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2;.NET CLR 1.1.4322)',
  "Accept-Encoding" => 'gzip,deflate',
  "Content-Type" => "application/x-www-form-urlencoded; charset=UTF-8"
}

def httppost(path, param=nil,server="reader.livedoor.com")
  Net::HTTP.start(server, 80, PROXY_ADDR, PROXY_PORT) {|http|
    param = ["ApiKey=" + $apikey, param].compact.join('&') if $apikey
    resp = http.post(path, param, $header)

    if resp.key?('Set-Cookie')
      resp.get_fields('Set-Cookie').each { |str|
        k,v = str[0...str.index(';')].split('=')
        $cookie.store(k,v)
      }
      $apikey = $cookie['reader_sid']
      $header.merge!({"Cookie" => ($cookie.to_a.map{|value|value.join("=")}).join("; ") })
    end
    return  Zlib::GzipReader.wrap(StringIO.new(resp.body)){|z|z.read}
  }
end

httppost("/login/index", login_parm, "member.livedoor.com" )#login
httppost("/reader/") #apikey 取得

sids = {}
JsonParser.new.parse(httppost("/api/subs?unread=1&from_id=&limit=")).each do |item|
  sids.store(item['title'], item['subscribe_id'])
end

sids.each do |title, sid|
  feed = JsonParser.new.parse(httppost("/api/unread", "subscribe_id=" + sid.to_s))
  feed['items'].each do |item|
    puts 'blog:' + title + "---" + item['title']
    File.open("img.list","a+"){|f|
      URI.extract(item['body']).each do |i|
        f.print( i + "\n") if i =~ /(jpg|jpeg|png|gif)$/
      end
    }
  end
  sleep 2
end

2008/8/20 水曜日

モバイルブラウザで LDR,飛び出す絵本続報

Filed under: プログラミング,日記 — staki @ 0:45:36

2012/03 追記:なんか時々アクセスがあるんですが、そんな良い物ではないです。ちゃんと書き直せばガラケーの生き残り用として価値はあるのかなあ…。

携帯用 LDR が使いづらいので、CGI でガワでっち上げたので上げて置く。coreserver の環境(ruby 1.6.5)1.8.5と、windows 環境(AnHTTPD, ruby 1.6.71.8.7)で確認。外部モジュールとして simple-json.rb が必要(ファイル単品なので導入は簡単な筈)。zlibも必要。だけど無くても動くように気持ち配慮してるので多分動く。

用途としては、WindowsMobile機, 超古いノートPC, 低速回線, 公式携帯LDR が嫌いな人など。(公式が対応するまでの繋ぎとしてiPhone?)

ldrm.zip
なんだかんだまだ弄ってるので、出来れば googlecode のリポジトリから持ってってください。最近の履歴昨日今日でも大分変更を加えてます

ファイルのヘッダ近辺に簡単な設定項目があります。上手い事してください。

特徴

-貧弱なブラウザでも動く
–i-mode HTML エミュレーターで軽く動作確認(実機は無い)。
–と言うか貧相かついい加減 HTML なので、メモリ限界が無ければ色んなブラウザで動くと思う。
–インライン画像を携帯サイズに変換するサービスを通して表示可能(ポケットはてな,モバピク)
–リンクを携帯変換サービス経由に置換可能(google, ポケットはてな)
–本文非表示も可能。リンク書換えとのあわせ技で、結構非力な端末でも動作すると思う。

-危ない
–i-mode のために CGI 側に cookie の類を保存している。apikeyも。盗まれると良くない。
–毒抜きもしてないので、怪しいフィードがあると危ないし、変な入力すると変なファイルが出来る(おい)
–最低限 Basic 認証とざっくばらんな心が必要。

-回線がちょっと節約できるかも
–フィード一覧など、通常 LDR ならブラウザ側が貯めている物は CGI が LDR と通信して CGI 側に保存している。表示データ以外は受信しないので、従量パケットや低速回線でもそれなりに。

-レンタルサーバーでも多分動く
–フィード一覧は結構データ量があるので、CGI がタイムアウトすることがある。そのため、リダイレクトで何度も CGI アクセスさせて、小刻みに取得すると言う馬鹿っぽい事をしている。(コレのせいで、ログイン時の待ち時間は少し不快。ただ、それを通過してしまえば特に問題ない。毎度ログインしなくても実は問題ないので…。)
–gem しないと入らないのは zlib 位じゃないかと思う…zlib 無い時は use_gzip を false にすれば動く気がする(テストしてない)(疎通確認すらしてない)

-はてブできる
-閲覧履歴がのこる
-LAN内に置ける(LivedoorReaderWp.rbのプロキシ関連変数を設定する事で、CGIがプロキシ越しに通信します)
-はじめてのけいじばん的ソースなので、なんか付け足したりとかは簡単かも(瓢箪からコマ。つまり稚拙なので信用して使わないで欲しい…)

できないこと

-フォルダ以外の一覧。(レートとか購読者数とか)
-ソート
-レート処理
-追加登録処理
-フォルダ整理
-ピン系
-つまり読んで既読にする以外は出来ない

綺麗にしてからーとか思ってたんだけど、なんか普通に使えるし、動いてるからいいやみたいな気分になってきたので放り投げ。

***

飛び出す絵本続報

この間の日記でレポした飛び出す絵本関連の展示が、品川のグランドプリンスホテル新高輪でやっている模様。アマノさんよりタレコミ。

http://www.toei.co.jp/event/exhibition/princesabuda.html

同じくロバート・サブダがメインのイベントなんだけど、構成が全く同じかどうかは不明。この間もデパートのサイトには即売会の話は出てなかったので、これも多分同じように即売会を兼ねているとは思うけど。(催事業者としても、こう言うイベントはつまり販促なので、即売しないとは考えづらい)

この間の日記は、何人か興味深いとのりアクションを貰ったので、いける人は是非どうぞ。

« 前ページへ次ページへ »

Powered by WordPress

stakilog