2010/11/26 金曜日

[haskell]pocket pc 用 の hugs

Filed under: プログラミング — staki @ 0:09:56

Haskell ML の古い記事を見かけて是非とも使いてえと思ったらリンク切れだったので、作者の人にメールでお願いしたら、実に気持ち良くソースを公開して頂いた。ケニー実にいい奴!

http://code.google.com/p/ppchugs/

何分古いものなので、Embedded Visual Tools 3.0 が必要らしいのだけど、どうも見当たらないので 4.0 をダウンロードしてインスコロールしたところ。動いたら楽しかろうなあ。

***

頂いたのは良いのだけれど、クロスコンパイル的なクロスコンパイルとか殆ど初めて(.netアプリだの java の類は別として)な訳で、さてどうなることやら。

アドエスで動けばいいけども…フルキーでちっこいのって他に何かあったっけか?
ジョルナダとかシグマリオンだと大きさ的に NetWalker 持ってるしなみたいな。

***

この手のお楽しみは WindowsMobile(PocketPC)の独擅場だと思ってたんだけども、最近は Android でも色々動くらしい。でも haskell はまだらしい。でも haskell はまだらしい。ククク

2010/11/4 木曜日

Webrick と Instapaper で ldr を端から全文化 proxy (多分役には立たない)

Filed under: インターネット,プログラミング — staki @ 2:15:22

以前書いた似たようなもの(ldr の画像を先読みでキャッシュ(/api/unread?prefetch契機で))と同じく、同じような契機で、ldr から受け取った json のエントリ本文部分を Instapaper に差し替えるナニ。使い方も大体同じ。

ただ、先に言っておくと普通はあんまり役に立たない。

  • すごい遅い。
    Instapaper に差し替えるために、エントリ URL の数だけ Instapaper にアクセスするので。
  • 想像ほど完璧とまでは行かない。
    結構頻繁にプチアク禁ぽいのとかページサイズ超過ぽいのに出くわす。
  • j, k キーあたりが影響を受ける。
    変換結果の id=story をガバッと入れているせいで。要はタイトルが増えちゃうので。
  • 常用するとたぶん規制食らう気がする。

丸ごと rss も LdrFullFeed も使えない・使いたくない状況で、通すと勝手にペロっと変換されるのはまあ、役に立つこともあったりなかったりするかなと言う程度で。
Instapaper を信じるとすれば毒抜きもしなくていいはずだし。

まあ Webrick で中継器書くの簡単で良いですとか、RSS リーダーは中継器が頑張ると色々出来ますねと言うコンセプト版的なものです。
変換メソッドを多段階にして毒抜き処理足して、取得用スレッド処理足して、夜間バッチで補助して、SSLで認証ありにして表に置くとかすれば結構実用になんのかなあ(別物)。

https://gist.github.com/661238

#!/bin/ruby
# -*- coding: utf-8 -*-

require 'webrick'
require 'webrick/httpproxy'
require 'simple-json'
require 'zlib'
require 'stringio'
require 'rubygems'
require 'hpricot'
require 'open-uri'
#require 'thread'
require 'uri'

$WEBRICK_PROXY = nil #'http://localhost:8123/'
$INSTAPAPER_PROXY = nil #'http://localhost:8080/'
$INSTAPAPER_URL = 'http://www.instapaper.com/text?u='
$log = $stdout # open("./errlog.log", "a")
$REG_Uri_Component =/[^0-9a-zA-Z!'()*-._~]/

def debugLog(str)
  $log.puts str
end

def instap(req, res)
  if req.unparsed_uri =~ %r!reader.livedoor.com! and
      req.path =~ %r!/api/unread! and
      req.query_string =~ %r!prefetch! and
      res['content-type'] =~ %r!text/javascript!

    buf = JsonParser.new.parse(
            Zlib::GzipReader.wrap(
              StringIO.new(res.body)){|z|z.read})
    buf['items'].collect! do |i|
      begin
        url = $INSTAPAPER_URL + URI.escape(i['link'], $REG_Uri_Component)
        debugLog '*' + url
        html = OpenURI.open_uri(url,{"Referer" => url,:proxy => $INSTAPAPER_PROXY}){|sio| sio.read }
        i['body'] =  (Hpricot(html)/'#story').inner_html +
          '<p>Instapaper で全文化しました。<a href="' + url + '"></p>'
        i
      rescue => e
        debugLog e.to_str
      end
    end
    Zlib::GzipWriter.wrap(StringIO.new(res.body)){|gz|
      gz.write(JsonBuilder.new.build(buf))
      res['content-length'] = gz.tell
    }
  end
end

handler = Proc.new() do |req,res|
  instap req, res
end

arg = {
  :ProxyContentHandler => handler ,
  :Logger => WEBrick::Log::new($log, WEBrick::Log::DEBUG)
}
arg[:ProxyURI] = URI.parse($WEBRICK_PROXY) if $WEBRICK_PROXY

s = WEBrick::HTTPProxyServer.new(arg)
Signal.trap('INT') do
  s.shutdown
end

s.start

2008/9/29 月曜日

学習の進捗状況とその後の「初めてのruby」

Filed under: プログラミング — staki @ 20:24:26

最近は文法で戸惑う事は無くなったんだけど、まだまだ略記法系だの記号の類でつっかかる事が多い。

その辺が掴めてないせいで、たとえば馴染みの無い正規表現とか(sedで覚えたクチなのでリッチな奴には目が慣れてない)、ちょっと複雑な式に出くわすと、自分が知っている記法なのかそれ以外の何かなのか目が滑ってしまって、理解に時間がかかることがある。

ruby は TMTOWTDI ですよ、好きな書き方で良いんですよ、難しく書くのが嫌なら簡単に書けば良いんですよ、だから ruby は素晴らしい!っていうような文句を何度か聞いてうっかり信用しかけてたら、結局他人のコード読むとこう言うの頻発すんのね(perl 経験者が多いんだろね)。

短いのが即苦手かと言うと、sed スクリプトは結構すぐ覚えたし…結局意味が類推出来ないのがネックなんだろうな。というか、無意識に頑なに拒否しているかも。そろそろ意識して克服するためにも、現状をメモしておく。

***

通りすがりのrubyに興味のある人へ:『買いなさい』

ruby と言えば「初めてのruby」がいい感じにくたびれて来た。書評で誉められてもその後使わない(使えない)技術書は数多いと思うけど、この本はホンモノだなと思う。VB やってた時分からどれ位か忘れたけど、ここまで気に入った本は二冊あるかどうか(※)。出来れば著者の言葉にもっと触れたいと思っていて「そのつぎのruby」とか出てくれないかなと思ってる。唯一版型が気に入らないので、漫画みたいに文庫版とか出ればいいのにな。

その位気に入っているので、この本に出会っておきながらヘボい事してると、世の中に対して恥ずかしい&著者に申し訳ない気がして来て、軽くプレッシャーだったりする。(冒頭の悩みなんて他の言語・環境に比べれば…)

※本に金は惜しまなかったつもりなので、選球眼の悪さと読解力の低さと基礎学力の低さはあるとは思う。あとは C やってないせいで、正確かつ簡潔と言うタイプの本に触れるチャンスが少なかったのかも知れない。lisp とかも。

***

ピッケル本は風呂場で読んでる。ウザくなったら寝る位の気持ちで。

次ページへ »

Powered by WordPress

stakilog