2009/2/3 火曜日

アドエスの NetFront をカスタマイズ(ブックマークレットみたいな)

Filed under: アドエス — staki @ 0:42:17

アドエスの NetFront をカスタマイズ(ブックマークレットみたいな)

アドエスってか WindowsMobile のプレビュー版の奴。

デフォルトで右メニューに「Page Translation」>「Infoseek JPN to ENG Translation」てのがあるけど、これを増やす技。
#ついでにちょっと変えるとサーチバーに検索エンジンも追加できる。

サンプルとしてはてブモバイルに登録する定義ファイル。

<site name = "pocket hatena" SrcCharset="UTF-8">
<action  url = "http://b.hatena.ne.jp/addmobile" method="GET">
<query name="url" charset="UTF-8">
<input name="mode" value="confirm">
</site>

これを PageTransほげほげ.src と言う名前で保存して、NetFront のインストールディレクトリの search フォルダに入れるだけ。するとメニューに pocke haena が表示されるので、好きなサイトで実行すると、ブクマ追加画面にジャンプするって言う寸法。

これ、暫くどう言う仕組みかわからなかったんだけど、どうもファイル名の頭が PageTrans* だとメニューに出現して、そうでない場合はサーチバーに出るみたい。

NetFront のブックマークレットは、ブラウザ側でテキストモードにしてると動かなかったりして不便なんだけど、これを使えば結構補完できる。たとえば多分、今見ているページを twitter に投稿とか(お決まり…)そう言うのもちょっとフォーム書けば多分可能。多分。いま眠いから試してないけど。
あとは、CGI とかで頑張っても良い。

この程度の話、誰かが既に上げてそうだと思ったんだけど、検索しても出てこない。なんでだろう。やっぱファイル名ってのが引っ掛け問題なのかなあ。

この話がすでにがいしゅつだよって人がいたら、URL 教えてください。是非。

2009/1/3 土曜日

ldr の画像を先読みでキャッシュしたりリスト保存したり

Filed under: アドエス,未分類 — staki @ 20:19:41

前に作った奴をちっと弄っただけ。前のだと毎回全未読フィードの内容をチェックしててものすごく遅かったので、前回取得データから更新日付が違う物だけ拾うように変更した。

ついでに、一回のURL群が小さくなる事で、外部の賢いダウンローダを使わなくても良さげになったので、自前で画像を読む(保存はしない。プロキシキャッシュに入れたいだけ)機能も付けた。引数に何でも良いので文字列をつけるとそっちの動作になる。

そんな感じで、こまめに回すのに適した感じになったのでシェルから

while true; do ruby LdrImgScrap.rb hoge ; sleep 120 ; done 

とかしながら読むと、殆どがキャッシュに入ってサクサク読めてよろしい。(不在時は sleep を広げましょう)

キャッシュするプロキシは polipo よりも gethtmlw の更新チェック無し設定が一番早い感じ。どう頑張っても再取得してしまうサーバーが居るみたいなので。しかもそう言う所に限って馬鹿みたいにデータがでかくて枚数が多いとか。

あ、更新チェック無し設定する場合は、reader.livedoor.com は当然プロキシ除外で。

キャッシュ以外にもコイツのファイルを ircom で irvine さんにどんどん渡したり wget して特定フォルダに保存&古いのを削除みたいなレシピにして、gds についてるデスクトップ写真立てみたいな奴のターゲットフォルダにして置いたりすると、常にデスクトップに知らん画像がホイホイ出てきたりして面白かったりするかも。

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

username = "****" # 変えろ
password = "****" # 変えれ

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

CACHE_PROXY_URI = "http://localhost:8080" # 不要なら nil

login_parm= "livedoor_id=" + username + "&amp;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('&amp;') 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 = {}
subs = JsonParser.new.parse(httppost("/api/subs?unread=1&amp;from_id=&amp;limit="))

# 古いファイルと比較し新しい物のみ subscribe_id を取得
if File.exist?("subs.dump")
  old = open("subs.dump"){|f|Marshal.load f}
  subs.each do |item|
    exist = false
    old.each do |old_item|
      if item['subscribe_id'] == old_item['subscribe_id']
        exist = true
        if item['modified_on'] != old_item['modified_on']
          sids[item['subscribe_id']] = item['title']
        end
        break
      end
    end
    unless exist
      puts "a"
      sids[item['subscribe_id']] = item['title']
    end
  end
else
  subs.each do |item|
    sids[item['subscribe_id']] = item['title']
  end
end

sids.each do |sid,title|
  begin
    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+b"){|f|
        URI.extract(item['body']).each do |i|
          if i =~ /(jpg|jpeg|png|gif)$/i
            if ARGV.size > 0
              puts "download:" + i
              begin
                open(i, {"Referer" => item['link'],
                       :proxy => CACHE_PROXY_URI}){|io|io.read}
              rescue Timeout::Error
                puts "NG:" + i
              end
            else
              f.print( i + "\n")
            end
          end
        end
      }
    end
  rescue
  end
end

open("subs.dump", "w+b"){|f|f.print Marshal.dump(subs)}

2008/8/11 月曜日

アドエスの文字入力の感想

Filed under: アドエス — staki @ 10:10:09

12/2 に買ったので、もう半年以上経つ。このタイミングで書くなら流石に物欲補正も無いだろうと言う事で。

片手スタイル

残念ながら最新の携帯電話の方が上。なぜかというと、入力方式が同じなのに、アドエスの方がモッサリなので。推測変換機能が重いようで、これを切ると多少改善されるんだけど、携帯電話の方はこれを効かせていてもサクサク動く(※)し。

後はボタン形状もあんまり良くない。画面に押されてるから仕方ないんだけど、ボタンの点数だと PDC の SO 位。と言う訳で、片手入力に関しては、ちょっとヘタレた携帯と言う感じ。

※ DoCoMo なら 903 以降位とか。au は 3G 世代なら大体。talby とか infobar クラスだと総合点はそんなに変わんないかも。

両手スタイル

反面、両手スタイルの場合、モッサリ感やら細かい所はあるんだけど、こっちはほぼ問題無い。PC と同じ程度に思考を妨げない感じで入力可能。たとえば、土日の行楽の帰り、電車の中 23 時台にひーひー言いながら日記書いてたりするんだけど、ネタ出しや焦りはともかく、入力機器に対する不満は感じない。ミスタッチも無い。

また、日本語以外の例として、WordPress のアップデート作業の殆どを、アドエスから SSH で繋いで実施した事があるんだけど、これについても通信速度は別として、コマンド入力に対するさほどの不満は無かった。一部入力し慣れない記号で動きが止まる事はあったけど、メンテ程度だとハイフン以外の登場頻度は低いので。

英数記号というと、他にも喫茶店で技術書読みながら SSH して、irb(rubyの対話モード) でちょっと実験…なんて事もしてみたけれど、これも酷いイライラは無かった。まあ、常にやるような事ではないけど。

記号入力に関しては、一部の記号が Fn キー押下との組み合わせになっているので、慣れないと何処を押すのか忘れてしまうと言うだけの話で、実のところ何処かでほんのちょっと練習してしまえば身につきそうな感じはする。英字キーボードを触った時ほどの強い戸惑い(※)までは感じない。(画面とキーが近いので、印字を確認するのが早いと言うのもあるのかも)

同じような分類である emonster とかと比べると、半角全角, TAB, Ctrl, Shift あたりが正規の位置にあって、かつ通常 QWERTYキーボードの配置と同じく斜め配置になってるのが大きいんだと思う。

※人によっては全然平気とか聞くので、自分が特別苦手なだけかもしれない。まあ、平気って言い張るのも geek 的何かなのかも知れないけど。

やなとこ

器械の感触

「プッチンプッチン」した感触で、これだけは今だに嫌。au の W44K とか、ドコモの SH みたいな感触だったらもっと好きだったろうなと思う。最初の抵抗と、それによる底付き感の強さのせいで、ちょっと疲れるしノイズになる。

後は両手入力のためにキーボードをスライドした時の音。パシッ!と硬い物がぶつかる音がして、個人的には非常に耳障り。音に敏感な性質なので、普通の人はきにならないかもしれないけど、よくこの音で書きたい内容が吹っ飛ぶ。

IME もっさり

ATOK なので変換精度は問題無いんだけど、なんせ推測変換が遅い&チラつく。頭に来るので OFF にしたい所なんだけど、そうなると片手入力時の効率が落ちる & 十時キー・決定キーの出来が多少微妙なので、文節・変換・決定操作が多くなるので痛し痒しで ON に戻した。

推測変換の表示が Palm より遅いのは納得行かない。振る舞いを見てると ATOK というより WindowsMobile の問題なんだろうなと思う。

#長文両手入力の場合は、推測変換を相手にしなくて良い速度で入力可能なのであんまり気にならないけど。

辞書登録機能

貧弱すぎる。携帯電話と同じような感じで、1 アクション 1 語の登録になる。特に、ファームアップ前は他社と絵文字のやり取りが出来なかったので、どうしても顔文字入力の機会が多かったのでかなりストレスを感じた。ショートカットキーでの即時登録も出来るんだけど、これがまた良く忘れるし。

PC 用の ATOK ユーザー辞書がそのまま使えるらしい事を何処かで聞いたんだけど、面倒なので試してない。mortscript と言う簡易スクリプトを使って一括登録も可能みたいなんだけど、これも面倒なので試してない…。

というわけで

長文の入力と言う点では、中々良いよと言う話でした。非スライド状態が微妙だから、短文メールが今一気持ち良くないのが残念なんだけど。

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

Powered by WordPress

stakilog