2011年05月14日

defyでバッテリーを1%刻みにする

完全に個人的メモ。
そもそも需要がないと思いますが。(笑)
続きを読む
posted by 月水和尚 (とも) at 16:44 | Comment(0) | TrackBack(0) | Android

2011年05月10日

フォント置き換え用のupdate.zipを作る (for DHD/CM7)

突然ですが、愛機NexusOneを里子に出して、DesireHDを入手しました。
もちろん毎度お馴染みCyanogenModを入れて使っているわけです。はい。

で、これまたいつもの事ながら、Nightly Buildをがんがん試してしまうわけですが、NexusOneの時に作成したフォント置き換え用のupdate.zipがうまく動きません。これは困った。
DHDの場合解像度も変更したいので、改めてフォント置き換え&解像度変更用のupdate.zipを作ることにしました。

毎度毎度のお約束。以下の内容は全て無保証です。
煉瓦になってもくじけない。転ばぬ先のバックアップ!
続きを読む
posted by 月水和尚 (とも) at 19:45 | Comment(0) | TrackBack(0) | Android

2011年02月10日

HT-03Aでまだまだ戦う (RAM増量編)

ドコモ的にはすっかりなかった事にされているHT-03Aですが、私の手元ではまだまだ最前線で活躍中です。
(と言ってもさすがにメインではなく、ほぼ通話専用のサブ機ですが)

CM6を乗せて、Class10のSDにswap確保して、クロックアップすればまだまだ普通に使えるのですが、やはり一番のネックはメモリの少なさ。96MBはいくら何でも厳しい。swapなしだとまともに動かないし、Class10とは言えSDに対するswap IN/OUTはかなりの重労働。あと5MBでも10MBでもいいから何とか絞り出せないものか…と思ったら、何と大容量15MBも捻出できる事が分かりました。

と言うわけで、久しぶりにこのタイトルで記事を書いてみます。

今さらこの記事読んでうひょうひょするような方は前提知識十分だと思いますので、手順はざっくりと端折って書きます。カスタムROMをそれなりに焼いた事がある方なら問題ないと思いますが、手順読んで疑問点があるようならそっとブラウザを閉じていただくのが吉かと。(hboot/recovery/boot全て書き換えるので派手に手順を間違えると綺麗な文鎮が完成する事請け合いです)

煉瓦を作っても後悔しない方だけ、先の手順に進んで下さい。
続きを読む
posted by 月水和尚 (とも) at 01:25 | Comment(6) | TrackBack(0) | Android

2010年11月12日

Gmailから携帯メールを使う(自前サーバ&iPhone回線持ち限定)

事の発端は、ひとりぶろぐでおなじみmoyashiさんのtwitterでのこんな呟き。
i.softbank.jp宛メールをfetchmailでGmailにリアルタイム転送 "i.softbank.jpとGmailの統合" http://bit.ly/aDNuRa
(http://twitter.com/hitoriblog/status/28971894276)

iPhone発売当時、SMS/MMSに対応しないiPhoneへの苦肉の策として導入されたi.softbank.jpというアドレス。私がiPhoneを手にした時はちょうどMMS対応するかしないかくらいのタイミングだったので、私自身はほとんど使っていないし、周りにも使っている人がいない(みんな覚えてもない?)という可哀想な子なのですが、このアドレスには実は他にはないすばらしい特徴があります。

・キャリア回線不要で使えるただのIMAPメール
・携帯各社の中では携帯メールとして認識されている


つまり、回線にも機材(端末)にも全く縛られないメールでありながら、「携帯メールのみ受け取り」と設定している相手にちゃんと届くメールなのです。これを活用しない手はない、とi.softbank.jpGmailを統合してしまったのが最初の呟きで紹介されていたblog記事でした。

これは私もやってみたい!と思い、記事の通りに設定を始めた(記事の内容が完璧なのでここでは省略…手抜きですいません)のですが、一つ困ったことが。紹介されていた手順では自分のサーバ内にメール送信をしてくれる人(sendmailとかですね)がいることが前提になっているのですが、私はその環境を持っていません。入れて入らないことはないのですが、出来れば送信サーバはGmailとか既存のサービスを使いたい…と思って苦悩していたら、SHIMI.INFOでおなじみ清水さんが「このスクリプト使ってごら〜ん」と助け船を出してくださいました。

str2imap.rb
#!/usr/bin/ruby

require 'net/imap'
IMAP_SERV = 'imap.gmail.com'
IMAP_PORT = 993
IMAP_SSL = true
folder = ARGV[0] || 'INBOX'
user = 'Gmailのユーザ名'
pass = 'Gmailのパスワード'
begin
  imap = Net::IMAP.new(IMAP_SERV, IMAP_PORT, IMAP_SSL)
  imap.login(user, pass)
  begin
    imap.examine(folder)
  rescue
    if folder =~ /[^\w]/ then
      folder = Net::IMAP.encode_utf7(folder)
    end
    imap.create(folder)
  end
  rawmail = ''
  STDIN.each { |l|
    rawmail << l
  }
  if rawmail.gsub(/[\n|\r]+/, '').length == 0 then raise 'NO data input.' end
  imap.append(folder, rawmail, nil, Time.now)
  imap.logout
rescue => err
  puts err.to_s
  imap.logout
  exit 1;
end
exit 0;

このスクリプトを/home/hoge(場所はどこでもいいですよ)に配置したら、.fetchmailrcを以下の通り記述します。

.fetchmailrc
set postmaster Gmailのユーザ名@gmail.com
set nobouncemail

poll imap.softbank.jp
proto imap
timeout 30
username i.softbankのユーザ名
password i.softbankのパスワード
idle
no mimedecode
keep
mda "/home/hoge/str2imap.rb"

あとはfetchmailを起動するだけ。
動きっぱなしになるので完全な裏起動にしましょう。
nohup fetchmail > /dev/null 2>&1 &

これでi.softbank.jpに送られたメールは即時にGmailに転送されます。

これならSIMなしの端末からでもメール送れるし、そもそもどの端末、どの回線を使っているかを全く相手に意識させずにこちらが自由に振る舞える。これはある意味真のMNPかも。全キャリア共通でIMAPなメールサーバ作ってくれないかなー。

moyashiさん、清水さん、いのたん♪さん、どうもありがとうございました!

管理人の部屋: i.softbank.jpとGmailの統合
http://gtbleds18.blogspot.com/2010/04/isoftbankjpgmail.html

Togetter - 「i.softbank.jpをGmailに統合するための試行錯誤」
http://togetter.com/li/65323
posted by 月水和尚 (とも) at 15:36 | Comment(0) | TrackBack(0) | iPhone/iPod Touch

2010年10月06日

フォント置き換え用のupdate.zipを作る

最近はすっかりNexusOneCyanogenmod Nightly Buildを入れて暮らしている私。
(そうそう、ずいぶん前ですがNexusOne買いました!)

Nightlyなので日々更新されているわけですが、新しいBuildを入れる度にフォントの置き換えをするのが面倒になってきたので、一念発起してフォント置き換え用のupdate.zipを作ってみました。
以下はその手順のメモ。(それもけっこう雑です…スミマセン)

お約束ですが、以下の内容は全て無保証です。
煉瓦になってもくじけない。転ばぬ先のバックアップ!

続きを読む
posted by 月水和尚 (とも) at 22:12 | Comment(2) | TrackBack(0) | Android

2010年09月11日

HT-03Aでまだまだ戦う (公式1.6からのダイレクトアップグレード編)

このタイトル、久しぶりです。

私が最初にHT-03AにカスタムROMを導入した時には、こんな感じのエラい大変な作業と、docomoロゴを永遠に失うという大きな代償を伴った大手術だったのですが、たった4ヶ月で驚くほど手順が簡略化されていてびっくりしてしまいました。とは言えちょっとハマった部分とかもあったので、例によって忘れないように書き残しておきます。

<久しぶりなのでお約束>

煉瓦になっても当方は一切関知しません。
自己責任の意味を理解できる方だけ先をお読み下さい。

了解して続きを読む
posted by 月水和尚 (とも) at 00:55 | Comment(33) | TrackBack(0) | Android

2010年08月24日

DevQuiz2010のOAuthをtelnetで倒す

意外にも私以外にtelnetで倒したという話を聞かないので、何となく書いてみる。
Try and Errorでがちゃがちゃとやっていたので、内容的には少し順不同です。
(出来るだけ分かりやすい順序で書いてみました)

問題文は…転載していいのか分からないので省略。
このエントリ見てる方は皆さんご存じですよね、きっと。

まずはOAuthって何ぞ…と思って調べてたどり着いたのがこちらのページ。
(そんな奴がGDDに行こうとするなよ、と言うツッコミは置いといてw)

OAuthプロトコルの中身をざっくり解説してみるよ - ゆろよろ日記
http://d.hatena.ne.jp/yuroyoro/20100506/1273137673

Yahoo!デベロッパーネットワーク - OAuth - OAuthを用いたAPIリクエスト
http://developer.yahoo.co.jp/other/oauth/api.html

なるほど、どうやらAuthorizationヘッダとやらを送りつければいいようです。

各種パラメータについて、とりあえず問題文に以下の4つは指定がありました。

・認証のrealm:devquiz
・Consumer key: 7fded0d291561d16a4b8a651
・Consumer secret: a828fa17fdb32c3cf0956cb3
・署名方式:HMAC-SHA1

これでrealmoauth_consumer_keyoauth_signature_methodの3つは設定値が分かりました。

で、あとは分からない物を潰していく。

まずはoauth_nonce。これは何でもいいみたいだったので、上記のYahoo!で使っているサンプル値そのままにしてしまいました。

続いてoauth_timestamp。これは所謂UNIX時間を設定するようなのですが、求め方がよく分かりません。んで、ぐぐるさんに調べてもらったら以下のページを見つけました。

エポック秒(UNIX時間)変換マシーン
http://egg-in-oven.hp.infoseek.co.jp/epochsec.html

ボタン一発で計算終了。ありがたい事です。
ただ、ここで指定した時間と現在時刻が600秒以上ずれると認証が通らなくなってしまうようなので、作業はサクサクと進める必要がありました。

最後に残ったのがoauth_signature。これがものすごく複雑なんですが、以下のページに詳細な解説があったのと、間違えた時にDevQuizのサーバが「署名するのはこの文字列のはずだぜ」とご丁寧にも教えてくれたので、署名の方法自体は何とかなりました。

Yahoo!デベロッパーネットワーク - OAuth - リクエストの署名
http://developer.yahoo.co.jp/other/oauth/signinrequest.html

ただ「HMAC-SHA1アルゴリズムを利用して16進のダイジェスト値の生成→Base64エンコード→URLエンコード」という仕組みは分かっても、実際にどうやったら値が求められるのかさっぱり分かりません。前述のエポック秒(UNIX時間)変換マシーンのような一発変換のページを探してみたんですが、残念ながら見つけられず。

ここでうぬぬーと頭を抱えていたのですが、以下のページでPythonで実装されたOAuthのサンプルコードを発見しました。

Twitter API を OAuth で認証するスクリプトを 0 から書いてみた - trial and error
http://techno-st.net/2009/11/26/twitter-api-oauth-0.html

うん、どうやらPythonを使えば何とか出来そう。
とは言えPythonで全てを実装出来るほどのスキルはないので、署名の部分だけ対話型で打ち込んで何とかしてしまいました。
import time, random
import urllib, urllib2
import hmac, hashlib
hmac.new("a828fa17fdb32c3cf0956cb3&", "POST&http%3A%2F%2Fgdd-2010-quiz-japan.appspot.com%2Foauth%2F7fded0d291561d16a4b8a651&hello%3Dworld%26oauth_consumer_key%3D7fded0d291561d16a4b8a651%26oauth_nonce%3D24829.2331%26oauth_signature_method%3DHMAC-SHA1%26oauth_timestamp%3D1281716837", hashlib.sha1).digest().encode("base64").strip()

これで最難関の署名が完成。

あとはPOSTメソッドでhello=worldというパラメータを送信するという指定なので、最終的には以下のようなデータを送る事になりました。

telnet gdd-2010-quiz-japan.appspot.com 80

POST /oauth/7fded0d291561d16a4b8a651 HTTP/1.0
Host: gdd-2010-quiz-japan.appspot.com
Authorization: OAuth realm="devquiz", oauth_consumer_key="7fded0d291561d16a4b8a651", oauth_signature_method="HMAC-SHA1", oauth_nonce="24829.2331",oauth_timestamp="1281716837",oauth_signature="Guti8N50so36JFGLtKIpC9XmdnI="
Content-length: 11

hello=world

これで「200 OK」。

問題の趣旨とはだいぶ解答方法が異なるような気がするのですが、うまく行ったので良しとします。直前にソースコード提出が必須になるという話があった時は正直ビビりまくりでしたw

個人的には、この問題のおかげでOAuthの仕組みをちょっとだけ理解出来たのが一番の収穫でした。今はOAuthを使ったGmail送信用のAndroidアプリを作成中。(いや、まだ一行もコード書けてないんですけど) それが完成したら頑張ってtwitterクライアントを書きたいなと妄想中。twiccaみたいなすごい奴じゃなくて、投稿/Reply専用の俺得クライアントになる予定ですが。

たまに自分を奮い立たせてくれるような宿題とかイベントがあるのはいいですね。
GDDに行けるかどうかは置いといて、おいらもっともっと頑張らないとな。
posted by 月水和尚 (とも) at 15:06 | Comment(0) | TrackBack(0) | その他もろもろ

2010年06月08日

CentOSでCP932を使う (SJISとちょっと違うよ!)

先日「CentOSでSJISを使う」という記事を書いたところ、コメント欄で「Windowsで使っている文字コードはCP932(MS漢字コード)なので、厳密にはSJISとは違うよ」とご指摘を頂きました。(ありがとうございます!)

というわけで、先日の手順の改訂版。
題して「CentOSでCP932を使う」。

以下のコマンドで、SJISロケールをCP932として追加します。
localedef -f WINDOWS-31J -i ja_JP ja_JP.SJIS

Shift_JISとして登録する場合と違い、登録時の警告は出ません。

viの設定も少し変わります。
具体的にはencodingという設定値が増え、.exrcに登録するのは以下の2行になります。
encoding=cp932
set fileencodings=utf8,cp932,latin

moriyamaさん、ご指摘ありがとうございました!

<参考サイト>

【shift_jisとwindows31Jの関係】 文字コードについて質問です。 WindowsでSHIFT_JISで保存したら自動的にWINDOWS31Jで保存されるのでしょう か? それはつまりWINDOWS31J.. - 人力検索はてな
http://q.hatena.ne.jp/1167447698

Shift_JIS(cp932)の「ダメ文字」 (fudist)
http://sites.google.com/site/fudist/Home/grep/damemoji
posted by 月水和尚 (とも) at 15:56 | Comment(0) | TrackBack(0) | Linux(ディストリビューション固有)

2010年06月04日

HT-03Aでまだまだ戦う (Cyanogenmod 5.0.7 完結編)

Cyanogenmod 5.0.7が正式リリースされて約一週間。
やっと私の手元の環境も固まって、ばっちり安定状態になりました。

今回は完結編として、手元の環境のまとめを書きたいと思います。
詳細な手順とか説明は端折って、淡々と箇条書き。
よろしければお付き合い下さい。


<SPL>

・Engineering SPL 1.33.2005
SPLの置き換えは必須ではないのですが、Engineering SPLを導入することでfastbootが使えるようになり、ROM領域もRecovery領域も破損してしまったときの復旧の最後の砦になるので私は適用しています。

<Recovery>

・RA-sapphire-v1.7.0
リカバリ領域にはRA-sapphireの最新版を適用。FlashRecoveryでもROM焼き自体は問題なくできますが、NAND backupからの戻しが選択的に出来たり、USB mass storageとして母艦から接続できるようになったりとメリットが多いので。適用して害もないですし。

<ROM>

・Cyanogenmod 5.0.7
SuperBadなどのCyanogenmod派生ROMもいくつかあるんですが、私はオリジナルのROMを使っています。根幹の部分は大きく変わらないので、色々試してお好きなROMを選んでいただければいいと思います。test版の時にはOverClockカーネルを適用していたのですが、リリース版ではOCカーネルを適用した方が動きが鈍くなることが多かったので、通常のカーネルのまま使用しています。(ただしクロックは576MHzまで上げています)

・JIT for CM5.0.7 – Dream/Sapphire
JITの適用は結構悩んだ(実は今でも悩んでいる)のですが、今は適用した状態で運用してます。ベンチマークの数値は大きく上がるものの、体感的な速度はそれほど変わらない気がするのでこの辺はお好みで。個人的なオススメは、CCのみであればJITなし、swapを使える場合はJITあり。

<設定>

・Swap 256MB / Compcache OFF
導入当初はswap OFF / Compcache 32MBで運用していたのですが、Class10のmicroSDを利用するとswapが快適だという人柱レポートと、Cyanogenmodのwikiに「Class6のmicroSDHCにswap置くのが一番オススメ」という記述があったので、奮発してClass10のmicroSDHCを購入し、そこにswapパーティションを256MB確保して利用しています。swapを使うと顕著に遅かったカメラの起動もストレスなくできるので非常にいい感じです。ただCC32MBのみの運用でも十分快適なので、無理して速いSDを買う必要はないと思います。
ちなみにswapの利用状況を見る限り、64MBもあれば容量的には十分そうな感じ。どんなに多めに見積もっても128MBですね。リリース版(もしくはtest7)でlow memory killerが強化されたようなことを見た気がするので、あまり大きなメモリを用意してあげても意味がないのかもです。

・ランチャーの常駐
私はホーム画面にウィジェットをたくさん置きたい人なので、ホームがメモリから落ちてしまうと結構辛いんです。そのため常駐をONにしてます。CC32MBの頃は置くべきか悩んだのですが、swap256MBに変更してからは完全に常駐。

<アプリ(常駐系)>

・ADW Launcher
標準ホームとかHome++とか色々試してみたのですが、今はADW Launcherが一番気に入っています。CMのリリース版が出た直後くらいまでは野良アプリとしてZIPで提供されてたのですが、今はマーケットにあるので導入も楽々です。

・Simeji / Kaomoji List / \叫ぶ/
日本語入力はSimeji。OpenWnn系の中では一番私の肌に合ってます。
マッシュルームとしてKaomoji Listと\叫ぶ/も導入。
某所で叫びまくってます。(笑)

・exsbar
私は通話用としてHT-03Aを使っていないので、発話ボタンは余っていました。ここに通知領域を開く機能が割り当てできるのですごく重宝してます。最新バージョンでHelloStatusBarの機能が統合されてこのアプリ1つでOKになりました。

・AltTabApps
タスクスイッチャーとして超便利。
これなしでマルチタスクは考えられないです。

<アプリ(通知系)>

・降水確率ステータスバー
・CPUMonitorMini
・データ通信状態表示 aDataConMon
通知領域にはこの3つを。
aDataConMonはb-mobileSIMを使ってるが故のアプリですね。

<アプリ(カレンダー)>

・Calendar Pad
・ジョルテ
・S2 カレンダーウィジェット
カレンダーは1つにまとめられずに難儀しています。カレンダーアプリそのものはCalendar Padが一番なのですが、月表示のウィジェットはS2 カレンダーウィジェット、週表示のウィジェットはジョルテが見やすいので、3つのアプリが混在する状態に…。

<アプリ(ネット関連)>

・twicca / プラグイン(twitpic/flickr)
・xScope Browser Lite
・Dropbox
・Libraroid
・Gaapagos Browser
・東京アメッシュ
・日本のお天気レーダー
twiccaは神アプリです。写真はtwitpicとFlickrに上げているのでそのためのプラグインも一緒に導入。xScopeBrowserは見た目も性能の高さもChrome。ダブルタップでズームが使えたら死角なしなんですが。

<アプリ(カメラ)>

・CameraMagic
・FxCamera
カメラアプリはまだまだ捜索中。タッチフォーカス(iPhone3GSで採用されているあれ)が使えるアプリがあるといいんですが。ちょっと有料アプリまで捜索範囲を広げてみようかと画策中です。

<アプリ(ツール類)>

・ConnectBot
・AndExplorer
・Speed Dial Folder
・Quick Settings
・Wifi Analyzer
人柱erとしてConnectBotは必須ですね。

<アプリ(その他)>

・Note Everything
・My Tracks
メモ系ももう少し肌にあった物を探したいところなのですがなかなか。

<ウィジェット>

・Gauge Battery Widget
・Retro Clock Widget
・WiFi Manager
・Wifi Toggle Widget
Gauge Battery Widget超オススメ!

こんな感じで。

これでしばらくROM焼きもお休みかな…と思ったら、すでにCyanogenmod 5.0.8 test1がリリースされていました。どうやら人柱erとしての安息の日々が訪れることはないようです。でもCyanogenさんを始めとする開発者の方々の素晴らしい活躍のおかげで、1年以上前の機種が今でも現役でばっちり使えているので、本当にありがたいことです。

というわけで、Cyanogenmod 5.0.7編はこれにて終了。
次回の5.0.8編、そしてNexusOneで頑張る編をお楽しみに!


最後になりましたが、Cyanogenさんを始めとする開発者の方々、chromepencilさんを始めとするコムギネットの皆様、そしてtwitterで活躍中の人柱erな皆様に感謝いたします。ありがとうございました。
posted by 月水和尚 (とも) at 17:48 | Comment(17) | TrackBack(1) | Android

CentOSでSJISを使う

WindowsCentOSでちょっとした連携をする仕組みを作っていたのですが、困ったのが文字コードの違い。WindowsがSJISを使っているのに対してCentOSのデフォルトではUTF8を使っています。

本気で対応するのであればCentOS側のプログラムでSJIS-UTF8の変換をすべきなのですが、今回は期間限定お試しのため、安易にCentOS側のロケールをSJISにすることにした…のですが、CentOSってデフォルトではSJISロケール入ってないんですね。(今さら知りました…)

と言うことで、SJISロケールの追加方法。
localedef -f SHIFT_JIS -i ja_JP ja_JP.SJIS

これだけでOK。
コマンド実行時に、日本語ロケールだと
キャラクタマップ `SHIFT_JIS' は ASCII 互換ではありません, ロケールは ISO C に従っていません

また英語ロケールだと
character map `SHIFT_JIS’ is not ASCII compatible, locale not ISO C compliant

という警告が出ますが、気にしなくて大丈夫のようです。

私はファイルの編集にviを使うので、viでもSJISを扱えるように.exrcに以下の1行を追加します。
set fileencodings=utf8,cp932,latin

以下のサイトを参考にさせていただきました。(ありがとうございます!)

SJIS ロケールの追加 - kamata-net.com
http://blog.kamata-net.com/archives/000076.html

CentOSのlocaleにSJISを追加 - 脳ログ - livedoor Wiki(ウィキ)
http://wiki.livedoor.jp/yoko00068/d/CentOS%A4%CElocale%A4%CBSJIS%A4%F2%C4%C9%B2%C3

ずんWiki - vim
http://www.kawaz.jp/pukiwiki/?vim
posted by 月水和尚 (とも) at 10:48 | Comment(10) | TrackBack(0) | Linux(ディストリビューション固有)