今回、下記の場所へ移転しました。
きさとメモ移転というか、親サイトと同じドメインへ移し直した感じですけど。
WordPressをつっこんで、そこにデータ移行しました。
昨日、Twitterを眺めていたら「Xperiaの電卓で計算がずれるぜ」なネタがありました。
手元のNexus Oneでも再現したので、火元を調べてみました。
電卓で、計算結果が間違ってる(バグ発見!)7472.4-7465.6が6.79999..になるという、もろ浮動小数点の問題ですね。
普通、電卓実装時は考慮するもんですが……。
さて、N1(というか大抵のAndroid端末の標準)の電卓アプリは「Calculator」(和名:電卓)です。
で、その中で計算してそうなソースを確認しました。
com.android.calculator2.Logicクラスです。
http://android.git.kernel.org/?p=platform/packages/apps/Calculator.git;a=blob_plain;f=src/com/android/calculator2/Logic.java;hb=HEADでもこの中に計算処理のロジックは実装されてなくて、実際にはarityというライブラリが使われています。
arityでは「数式の文字列」を評価(evaluate)して結果の数値を返す処理が用意されています。
arityのソースさらに辿るとこの問題は既に認識済みで、しかもクローズされていました。
http://code.google.com/p/arity/issues/detail?id=1&can=1要するに「これは浮動小数点の仕様だから、この計算結果で正しい!」ってことなんですが。
うーん。
たぶん、このライブラリ的には「そういうもの」として作ってあるから、
上記の主張は正しいと思うのです。
じゃどこが悪いかといえば、やっぱりGoogleのCalculatorアプリかなあと。
そもそも電卓アプリにこのライブラリを持ってきたのがまずいんじゃなかろーかと(笑)。
直してくるかな……気付いてなかったことはないと思うから、放置な気もするけど……。
例によってANDROID HACKネタです。
4章の42.の「NDKでのビルド」ですが、r3とr4bで手順が違います。
先人さまの知恵があちこちに転がっていますので、具体的な手順は割愛します(・ω・)
Googleとかで「ndk r4b r3 ndk-build」とか聞けば、答えがヒットすると思います。
現状に追いついていないのは、
この本が悪いわけじゃなくてAndroidの改版速度が早すぎるせいでしょうね……
多少なりと弄ったことがあればググって解決できると思いますが、
この本が初めてだとちょいキビシイかもしれません。
# 初めての人が買うタイトルではないでしょうけど。
内容が多岐に渡っていて普段の開発では接さないようなノウハウも載っているので、
自分的にはとても参考になっています。
Android Hacksという本を買って、ちまちま読んでいるわけですが。
5章の49.「ソースコードコンパイル環境構築(Linux)」に、Androidのソースをチェックアウトしてビルドする手順が載っています。
その中に「Ubuntu10.04はJDK6(正確にはSunでなくOpenJDKの6)が入っているけど、AndroidのmakeはJDK5でないとダメだよ」的な注意書きがあるんですけど、今日実際に試したらうまくいかなかったのでメモっておきます。
・froyoブランチ(=Android 2.2)以下をチェックアウトした場合については、たぶん本の通り。
JDK6でmakeをかけると、「JDK5を使え」と怒られます。
・ブランチを指定しないとmasterブランチがチェックアウトされますが、
masterブランチは逆に、JDK5でmakeすると「JDK6を使え」と怒られます。
・masterブランチは、未来のGingerbread(=Android 3.0)??
最後のは憶測ですが、状況証拠的には上記のような感じです。
本の手順のまま試すと最初はmasterブランチをチェックアウトすることになると思いますが、
そこで本の手順のままJDK5を使用すると怒られるので注意が必要です。
makeのときに表示されるメッセージをちゃんと読んでいれば
どっちのJDKを使うべきなのかちゃんと書いてあるんですけど、
自分はロクに読まなかったのでした(;・∀・)
Ubuntu10.04とUbuntu8.04、
JDK5とJDK6、
デフォルトブランチとfroyoブランチ、
この辺を取っ替え引っ替えしながらチェックアウトとmakeを試していて
デフォルトブランチのmakeが通らない理由が小一時間わからなかったので、
同じハマリをした方がいたらご参考までに。
……てことで出だしのJDKの件は解決したんですけど、
まだ肝心のmakeには成功していなかったり(;´ρ`)
64bit版Ubuntu(で自分が拵えた環境)にパッケージが足りてないような気がするので、
まず32bit版で成功してから64bit版を試そう……
GDDこと
Google Developer Day 2010 Japan、
締め切り間近まで失念していてダメ元で参加登録(と試験の回答)をしていたのですが、
なぜか審査に通過して参加できることになりましたヽ(´ー`)ノ
ありがたやありがたや……。
9/28(火)、東京会場へ出席してきます。
思いっきり平日ですが、業務的に切羽詰まった時期でもありませんし、
半分業務関係ですから一日ぐらいは年休申請しても通るでしょう。
久しぶりにテンション上がってまいりましたヽ(゚∀゚)メ(゚∀゚)メ(゚∀゚)ノ