2012-11-30 (金)
*ニコニコPlayer(仮)
アップデートした.
ProGuardまわりの修正.ついでにランキングで選べるカテゴリを増やしました.
あとはデバッグ用に使ってたやつで,動画情報画面の再生ボタン長押しで一時的に優先する画質を選ぶ機能も入れておく.
この日記はフィクションです.登場する人名・団体名・地名・職業などはぜんぶ架空のものです. なので実際のものとは何も関係がありません. それから,写真のように見える画像はCGもしくは念写によるものです.
アップデートした.
ProGuardまわりの修正.ついでにランキングで選べるカテゴリを増やしました.
あとはデバッグ用に使ってたやつで,動画情報画面の再生ボタン長押しで一時的に優先する画質を選ぶ機能も入れておく.
keepclassmembersするクラスがひとつ漏れていた.ソース内のimport文からコピーしたのだけど,インナークラスの場合は「$」で区切るべきなのに「.」のままになっていた.apk作るときに特にエラーも出ないし,そもそも自分の端末だと使わないコードだったのでまったく気づかなかった.これ怖いなぁ.
そういえば,Android4.1のカメラアプリで撮った写真は,Exifが何か変なのかWindowsのエクスプローラでプレビュー出ないことがあったけど,4.2は元にもどったっぽいな.
眠い.
歯医者行った.
朝,大阪の駅の周りを歩いてみたけど,結局ヨドバシに行ってしまった.
昼に京都に.
オムライス食べて,京大の学祭行って,京都の街並みを見て,ラーメン食べて帰る.
オムライス大盛り.
ヤギ.他にもウサギ,猫,鶏,犬とか.
「えいざんでんしゃ」?
学際見て,ニコニコ動画ってすごいんだなと思ったりした.
あと,京都大学のキャンパス,色々な動物がいていいな.特に吉田寮の周り.
shimobayashiの家に寄って,京都駅に.新幹線混んでたけど,名古屋からは座れて,何かする予定だったけど疲れてたので寝てしまう.
Ingressもたまにポータル見つけてhackしてresonatorを一つだけデプロイするということをしていた.resonatorが不足しててそれ以上は何も出来ない.
新幹線を待つ間に京都駅で少しがんばってみたけど,時間が足りなくてポータルを2つリンクしたところで断念.
眠い….
朝起きて準備して京都に.
9時前に家を出る.新幹線速い.
移動中にAndroidアプリのコード書いたりする.インターネット繋がらないと,誘惑が少なくて集中できる.調べるのが必要な部分はどうしようもないけど.12時に京都駅に.
そこに緑色に輝いているはずのポータルはなぜか写っていない.
shimobayashi邸→マルツパーツ→新京極→夕食
明日着る服が無いので買う.
shimobayashiが買ったArduinoいじってるのを見ながらコード書いて,大阪のホテルに.
圧縮されたxrefに対応してみたけど,xrefが圧縮されてるときはオブジェクトも圧縮されてる場合が多いからこっちも対応しないとだな.
kstm.org鍋.
夕方,ysaotomeのところに行って,鍋.
寒い中アイス食べながら新宿周りを徘徊.
明日京都に行くことにしたので,宿の予約取ったりする.というか,案の定この時期は予約むずい….
Ingressのportalって登録できるのか.http://support.google.com/ingress/answer/2808254
そして,マップも見れるのか.http://www.ingress.com/intel
本の一覧とか最低限のUIつくる.
個人的には使えるようになったので,公開とか考えないでよい気がしてきた.
あとは,pdfによってはページの順番がめちゃくちゃになるのをどうにかしないと.PDFのPageオブジェクト自体がページ番号持って無いのどうにかして欲しい.ちゃんとPagesのツリーを辿っていけばいいのだけど,面倒.
風邪ひいた.
寝る.
日中まったく動けずにいたけど,夜中に空腹に耐えられなくなって起きる.
inviteしてもらったので,Ingressやってみる.回り誰も居ない….外に出れないと意味無いな.
EnlightenedとResistanceに分かれて,マップ上のXMを集めてPORTALをHackしたりするらしい.
夜中,コンビニ行くついでに近くのPORTALまでいってみたりした.
AndroidでMotionEventを処理したいViewが重なってると処理が面倒だな.上に一枚被せてただのタッチなのか,フリックやピンチインされたのか振り分けるか,そもそも一箇所で全部処理しないとなのかなあ.
メモ:Bzバイナリエディタの新しいのがあった.あとで試してみよう.https://code.google.com/p/binaryeditorbz/
いい加減なPDFパーサを書いてみる.
本をスキャンしたPDFとかライブラリとか使わなくても簡単に表示できるだろうと思って実装してみたけど,意外とCCITTFaxDecodeが使われてる事実に気づいてがっかり.
とりあえず,org.apache.pdfbox.filterからTIFFFaxDecoderを持ってきて,手元のpdfだけ読めるように.これで自分用には普通に使える目処が立った.TIFFFaxDecoderの出力をリサイズしてBitmapにするのに300msくらいかかってるので,ここはNDKかRenderScriptで書き直す必要ありそうだな.
引っ越して2年近くたってるきがするけど,運転免許証の住所変更とかしました.
快適に読書できるアプリを見つけられなかったので,結局,電子書籍リーダーを書き始めた.
android-supportに含まれるViewPagerは前に仕事で使ってイマイチだったので,自分でスワイプできるビューを実装することに.AbsListViewから作れば楽かな…と思ったけど,中を見たらスクロール方向が縦方向しか出来ない実装になってて断念.あんまり楽はできなさそうだけど,AdapterViewから作る.
まずは,zipで圧縮した画像を見れるようにする.大きい画像を表示しようとしたら,画面に表示されない.
Bitmap too large to be uploaded into a texture (3600x1600, max=2048x2048)
というログが出てた.
最近の機種なら2048x2048のサイズまではサポートされてるようなので,とりあえずでかい画像は2048x2048にリサイズしてから表示するように.
そしてNexus7は動作速い….
今月中くらいで,一気に作ってしまおう.
久しぶりに少しいじった.
特に意味なくapkのサイズが200KBになるように調節しながら機能追加したり,コードを削ったりしてたのだけど,最近どうしても数KBはみ出すようになってしまったので,今回からProGuard通すように.
色々めんどうなので難読化はOFF.使われないコードが消えて3%くらいapkが小さくなった.もともとapkのサイズを極力小さくしてるアプリなので,仕方ないのだけど,あまり小さくならず残念.
前回のバージョンより小さくなったので,アイコンの解像度を上げる.結局205KBになってしまったので,この遊びはそろそろやめよう.
しばらく使ってみてるけど良い感じ.
Playストアのアプリの統計情報見てる限りだと,今月のダウンロードが一番多かったのはNexus7なのだけど,一番売れてるAndroid端末ってNexus7なんだろうか.
動画やPDFを色々入れてると16GBはすぐいっぱいになりますね.
フリーズしたときにリセットの方法がわからずに,蓋をはずしてバッテリーのコネクタを抜いたりしてたけど,電源ボタンを押し続ければ再起動するのか.
本を読むのにPerfectViewerを使ってるのだけど,あまり好みではないので自分で作るかなぁ.テキストの版組とかめんどうそうだし,jpgを固めたzipと本をスキャンしたpdfだけでいいか.
9時に起きて歯医者行ってから会社に.
昨日は早めに帰って22時過ぎには寝てしまった.
PayPalのドル→円のレートと,Yahooファイナンスでのレートを比較してみるテスト.
http://www.binzume.net/test/paypalrate.html
新生銀行とか為替手数料安いところ使うべきなのだけど,口座作るの面倒くさくてPayPal使い続けてるのだけど,よく考えたらPayPalで本人確認必要になったタイミングで切り替えればよかった.
予約を金曜に変更してもらったので明日こそ歯医者行くのを忘れないようにしないと.
とりあえず,色々いじってしまってるので標準のやつにもどす.
adb reboot bootloader
fastboot flash system system.img
fastboot flash radio radio-maguro-i9250xxlf1.img
systemだけ戻したらradioのチェックでおこられたので,こっちもオリジナルのやつに戻した.
そのままリカバリモードに行って,update from ADBで手動でアップデート.
目立つ変更はロックスクリーン・時計・カメラ・通知領域の設定まわりかなあ.
b-mobileとかのMVNOなsim使ってる人にはおなじみのGsmServiceStateTrackerはtelephony-commonに移動したのか.
https://github.com/android/platform_frameworks_base/commit/a639b311e93ad14d9ee5c2b2c215ed2d86c32d2a
framework.odexの代わりにtelephony-common.odexを見てみると同じ場所にGsmServiceStateTrackerがあるので,とりあえずいつもどおり書き換え.
api levelは17らしい.
リカバリで作業中に/data/mediaの下を見たらファイルがなくなっていてちょっと焦る.通常起動したらファイルちゃんと見えるのでひと安心.fuseで/mnt/shell/emulatedとかにmountされている….もともとあったファイルは,/data/media/0に移動されていた.
とても眠い.
上の階で何か工事してるっぽくて,音が気になって8時くらいに起きてしまった.
いまさらだけど,Galaxy NexusでAndroid4.2のカメラ動いた.odexファイルがうまく置き換わってなかったので手動で置き換えたら大丈夫だった.
rubyからAmazonのAPI使うのに ruby-aaws を使っていたのだけど,最新のrubyだとなんか警告出てるし,設定ファイルとかも好みじゃなかったので自分で書いてみることに.
class AWSECommerceService require 'net/http' require 'rexml/document' require 'openssl' def initialize conf @conf = conf end def geturl(params, conf) params["Timestamp"] = Time.now.utc.strftime('%Y-%m-%dT%H:%M:%SZ') params["AWSAccessKeyId"] = conf['access_key'] paramstr = params.map{|k,v| k.to_s+"="+URI.encode(v.to_s,/[^\w\.-]/)}.sort.join("&") uri = URI.parse(conf['ep']) reqstr = "GET\n%s\n%s\n%s" % [ uri.host, uri.path, paramstr ] hmac = OpenSSL::HMAC.digest( OpenSSL::Digest::Digest.new( 'sha256' ), conf['secret_key'], reqstr ) base64_hmac = [ hmac ].pack( 'm' ).chomp conf['ep'] + "?" + paramstr + "&Signature=" + URI.encode(base64_hmac, /[^\w\.-]/) end def items_lookup type, ids params = { "AssociateTag" => "XXX", "IdType" => type, "ItemId" => ids, "Operation" => "ItemLookup", "ResponseGroup" => "Images", # Large "SearchIndex" => "Books", "Service" => "AWSECommerceService", "Version" => "2009-03-31" } url = geturl(params, @conf) #puts url res = (Net::HTTP.get URI.parse(url)) doc = REXML::Document.new(res) items = [] doc.root.elements.each('Items/Item') {|e| items << { "id" => e.text('ASIN'), "thumbnail" => e.text('MediumImage/URL') } } items end def item_lookup type, id items_lookup(type,id)[0] end end
とこんな感じに.サムネイルだけ欲しかったので,そこしか取ってません.
最近,夜になるとインターネットの速度が極端に遅いときがあるなぁ.
他のアプリからユーザーのトーク画面を開く方法あるのかなと思って調べる・
Intent intent = new Intent("jp.naver.line.android.intent.action.LINESHORTCUT"); intent.putExtra("shortcutType", "chatmid"); intent.putExtra("shortcutTargetId", target); intent.putExtra("shortcutTargetName", ""); intent.putExtra("shortcutFromOS", false); startActivity(intent);
targetIdはユーザならu+32桁の謎のハッシュ値です.グループの場合は先頭がcです.
あとは,/sdcard/Android/data/jp.naver.line.android/cache/p以下を見ると何か出来るんじゃないかな.
自分のIDも分かると良いんだけど.
Android4.2のカメラアプリ使ってみたかったので,手元のGalaxy Nexusにapk入れてみたけどうまく動かず.
なんとなく,Androidのソース眺めてたらA-GPS周りのコードが目にとまったので,気づいたら読んでいた.普通のアプリケーションからは直接手が出せないレイヤの何かだと思ってたのだけど,普通のTCPなのか.よく読んでないけど基地局情報を送ると色々とれるっぽい.
docomoだとdcm-supl.comとかいうSPモードからしか繋がらないサーバ使ってるっぽい.あとは,supl.google.comというgoogleのサーバもあってこれはインターネットから接続できる.基地局情報とか携帯キャリアからもらってるわけじゃないと思うので,ユーザから収集してるのかな.
今は日本通信のb-mobile Fair使っているのだけど,速度制限無いしなぜかグローバルIPも降ってくるので,満足してたのだけど最近通信量増えてきたので,少し割高になってきた.平均するとだいたい3ヶ月くらいで1GB使ってるようなので,一月あたりだと3000円くらい.
テザリングして外でPC使ったりすると数日で1GB使ってしまうときもあれば,4ヶ月経ってもだいぶ余ってることもあるのであくまで平均するとですが.
というわけで,MVMO業者のサイトを見ながら悩む.
http://www.amazon.co.jp/dp/B00856Q46U 1980円/500MB/月なプランあるけど,500MB超えたときに追加の500MBを手動でチャージしないといけないのは使い勝手が悪いな.しかも「直近3日間の通信量の合計が300万パケット(360MB相当)以上」使うと速度制限かかるっぽい.どうせ500MB単位で料金払ってるのだから制限しないで欲しいな.300万パケットっての良く見るので,FOMAのMVMOの契約自体がそうなってるんだろうけど.
DTIのServersMan SIM 3G 100が490円/月 + 263円/100MBも気になったけど,DITはちょっと怖い.
IIJmioの高速モバイル/Dが2940円/月/GBか.速度制限かかるようなので除外してたのだけど,Q&Aを見ると1GB使うまでは制限かからないのか.あんまり安くならないけど,よさげ.
というか,ややこしい.
プラン | 月額 | 定額分 | 従量分 | 他 | |
b-mobile | Fair | 0 | - | 8350円/GB | グローバルIP |
b-mobile | 1GB定額 | 3100 | 1GB | 3100円/GB | 速度制限あり |
b-mobile | amazon | 1980 | 500MB | 1980円/500MB | 速度制限あり |
b-mobile | Pair GB | 2970 | 2GB | 525円/100MB | 速度制限あり |
DTI | 3G 100 | 490 | (100kbps) | 263円/100MB | Feel6@DTI,不安 |
IIJmio | ミニマム | 945 | (128kbps) | 525円/100MB | IPv6 |
IIJmio | ファミリー | 2940 | 1GB | 525円/100MB | IPv6,sim3枚まで |
BB excite | モバイルLTE | 2415 | 500MB | 525円/100MB | IPv6,sim3枚まで |
個人的な比較用の表です.興味ないところは省略してるのでこれだけ見て参考にしないほうが良いです.
いつのまにかBB.exciteモバイルLTEなんてものあるのか.IIJmioのサービスにそっくりすぎると思ったら,やっぱり中身は同じなのか.500MBのプランとかあってよさげ.他は全体的に少しだけ安いけど,初期費用高めなので何年も使うとかじゃなければお得感は無い.
HTML5でCanvasの画像をアップロードするの面倒だな.
Canvasから画像のデータを取るのがtoDataURLくらいしかないので,atobでデコードしてArrayBufferとかに入れてBlob作らないといけない.
Amazon APIと戯れる日.
Google Play Booksの本.
とりあえず画像を保存したら,パズル状になっててそのままでは読めない.JavaScriptでtable生成して並び替えてるのか.面白いな.jpegのブロック境界で切るようにすれば,ノイズも入らないのか.
せっかくなので,正しく並び替えるプログラム書いてみる.画像のエッジを比較して隣り合う確率が高いやつをつなげていけば,だいたいはどうにかなりそう.そして,画像のURLのzoomを1にすると,元のページのサムネイル画像が取れるので,それと比較すれば簡単っぽい.あとは,wの値でサイズを指定できるようなので,ブロックの構造が変化しない程度に微妙に変化させると,内容の移動量から本来の座標が分かる.
まぁ,こういう抜け穴はそのうち対策されちゃうのだろうけど.
実際に動作しているときの信号を拾うとPS/2っぽいのだけど,適当にコマンド送ろうとしても受け付けてくれなくて少しはまる.
リセットしてやらないとダメっぽい.20番ピンに正パルス入れるとリセットされるっぽい.300msくらいまっていると0xFAが返ってくるので,そのあと0xF4を送ってストリーム・モードにするとデータが取れるようになる.