Tuesday, November 30, 2010

meta tag support on Android

在Android froyo 上  
他也有support meta的tag

在Android external webkit的
找 ANDROID_META_SUPPORT 這個keyword

然後在這可以找到他support 哪些attribute

http://android.git.kernel.org/?p=platform/external/webkit.git;a=blob;f=WebCore/page/Settings.cpp;h=c495a230a9bc4d1c0383e67d293ec22e3c036f3c;hb=HEAD#l443

Javascript的 setTimeout

最近發現 Javascript的setTimeout有兩種call 法

1. pass a Function Object

   function fired () {

   }
    setTimeout(fired, 1000);

2. Pass a String Object

    function fired () {

   }
    setTimeout("fired();", 1000);

  而這會用eval()的方法來執行他


特別的是 我剛剛把這兩種用法搞混了
變成

setTimeout(fired(), 1000);

把fired 變成  fired()
也就是變成先call fired() 這function , 才把這function的return值傳給setTimeout
變成 1st argument

難怪我的code一直不對

touchstart event on Android Webkit(froyo)

Android Webkit (Froyo) 目前support 的touch event有

touchstart
touchmove
touchend
touchcancel
touchlongpress
touchdoubletap

這些定義在
http://android.git.kernel.org/?p=platform/external/webkit.git;a=blob;f=WebCore/dom/EventNames.h;h=b20eaa8e1de56b97be408f0a3a27e050921e5573;hb=HEAD#l149

以及在這些被處理的
http://android.git.kernel.org/?p=platform/external/webkit.git;a=blob;f=WebKit/android/jni/WebViewCore.cpp;h=70e96cd8a4dece9312717778b2497ad6ac945170;hb=HEAD#l2041

這裡有個網頁可以來測試
http://kangax.github.com/iseventsupported/

Saturday, November 27, 2010

N82拆機

今天手機的鍵盤又壞掉了
已經用了兩年半了但覺得很好甩 所以沒換新機的打算
於是上網找了N82的拆機教學
雖然沒有Nokia的toolkit 但拿了平時鎖眼鏡用的起子
一樣把keyboard前的面板給拆開了

把位置調一調
再裝回去  果然我的N82又復活了~


Friday, November 26, 2010

一個介紹 c++ vptr的好例子

http://www.go4expert.com/forums/showthread.php?t=8403

這個網頁從以前到現在 看了再看
都還是覺得很有趣

Thursday, November 25, 2010

Android PREBUILT_PACKAGE

最近發現 Prebuilt java libaray 的style 跟一般的BUILD_PACKAGE大不相同呀

http://groups.google.com/group/android-building/browse_thread/thread/26c5ec332fe924a2

http://groups.google.com/group/android-building/browse_thread/thread/f7f57432a677ca85

c 的offsetof

在wiki上看到的offsetof的macro
http://en.wikipedia.org/wiki/Offsetof

http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Offsetof.html

http://blog.linux.org.tw/~jserv/archives/001399.html

而他有兩個argument
第一個是struct type 第二個是member

The C++ Programming Language的問題

1.在Chap3 3.11 Advice p.66 裡 第七條
Using string rather than char*

請問即使我對char * 用了簡單的strcat strcpy這些library
會比string 還要來的慢嗎???

或者是可以說明在處理字串時(就ascii就好了)
什麼時候用string,when to use char*呢?



2.在10.2.8 Structurs and Classes的最後 p.235
他講了一句
allowing many access sepcifiers in a class is useful for
machine generated code.
就是他上面有講個例子 public,private可以一直加的

class Data4 {
public :
 ...
private :
 ...
public:
...
}

這裡的machine generated code是指什麼?
是某些tool產生出的c++ code還是compile完產生的code
(IR, assembly, or machine code)
為什麼會useful??



3. 在10.4.6.2 Member Constants p249
他說可以initialize a static integral constant member
為什麼只有int 可以 float那些為什麼不行呢???



4.在11.2.3 p265
第一段要結束時他說
it is not possible to define an operator function that
operates exclusively on pointers



5.Sec13.4 Using Template Arguments to Specify Policy
主要在講用Template class來specify operation(less,eq,..)

在p339 倒數第三段最後面 他說了
whereas inlining a call through a pointer to function
requires exceptional attention from a compiler
在這裡指的exceptional attention是指什麼呢?

寫C寫久了會很習慣用pointer to function
但想知道這裡不建議使用pfn的原因







6. Sec14.2 Grouping of Exceptions
第一段的第三行有說
the effect of a throw is to unwind the stack until a
suitable catch is found

他說的unwind是什麼意思呢
是指一般function return時stack會清掉的意思嗎?
(esp回到ebp)
如果是這樣的話
throw 出來的那個object(or pointer,reference)
他是存在哪裡的??
stack被清掉那exception應該也會被清吧???

Wednesday, November 24, 2010

webkit 的resource loading

不太了解Webkit在resource loading時的pipeline是怎麼作的

http://webkit.org/blog/1188/how-webkit-loads-a-web-page/


LOCAL_USER_TAGS on Gingerbrand branch

http://groups.google.com/group/android-building/browse_thread/thread/26c5ec332fe924a2

in this post JBQ mentioned that the build will fail if it uses LOCAL_USER_TAGS := user
and the APK isnt contained in PRODUCT_PACKAGES

about the PRODUCT_PACKAGES  
it is located in build/target/product/{generic, sdk}.mk

Thursday, November 18, 2010

signature check in Android PluginManager

常常看到有人在問android PluginManager裡面的signature 是幹嘛用的
http://android.git.kernel.org/?p=platform/frameworks/base.git;a=blob;f=core/java/android/webkit/PluginManager.java;h=cdcb662e057c4d41b7e7af235991d53037d1e19d;hb=HEAD#l75


查了一下commit的log
原來是當初要給flash on android


commit 73477e7336cd1bdd67984a0f6374c79108a8f098
Author: Grace Kloba
Date:   Wed Sep 30 17:45:46 2009 -0700

    Add the signature checking for WebView plugins. The
    first one is for SampleBrowserPlugin. The second
    one is for Flash.

diff --git a/core/java/android/webkit/PluginManager.java b/core/java/android/webkit/PluginManager.java
index 766bd75..edba446 100644
--- a/core/java/android/webkit/PluginManager.java
+++ b/core/java/android/webkit/PluginManager.java
@@ -65,6 +65,15 @@ public class PluginManager {

     private ArrayList mPackageInfoCache;

+    // Only plugin matches one of the signatures in the list can be loaded
+    // inside the WebView process
+    private static final String SIGNATURE_1 = "308204a830820390a003020102020900936eacbe07f201df300d06092a864886f70d0101050500308194310b3009060355040613025553311330110603550408130a43616c69666f726e69613116301
+    private static final String SIGNATURE_2 = "308204c5308203ada003020102020900d7cb412f75f4887e300d06092a864886f70d010105050030819d310b3009060355040613025553311330110603550408130a43616c69666f726e69613111300
+
+    private static final Signature[] SIGNATURES = new Signature[] {
+        new Signature(SIGNATURE_1), new Signature(SIGNATURE_2)
+    };
+
     private PluginManager(Context context) {
         mContext = context;
         mPackageInfoCache = new ArrayList();
@@ -148,9 +157,12 @@ public class PluginManager {
                 }
                 boolean signatureMatch = false;
                 for (Signature signature : signatures) {
-                    // TODO: check signature against Google provided one
-                    signatureMatch = true;
-                    break;
+                    for (int i = 0; i < SIGNATURES.length; i++) {
+                        if (SIGNATURES[i].equals(signature)) {
+                            signatureMatch = true;
+                            break;
+                        }
+                    }
                 }
                 if (!signatureMatch) {
                     continue;

Tuesday, November 16, 2010

龍馬傳 #1 上士と下士

第一集出現了 岩崎弥太郎 這個人

沒聽過所以查了一下他
http://ja.wikipedia.org/wiki/%E5%B2%A9%E5%B4%8E%E5%BC%A5%E5%A4%AA%E9%83%8E


不過發現了一件事

慶応3年(1867年)、後藤象二郎に藩の商務組織・土佐商会主任・長崎留守居役に抜擢され、藩の貿易に従事する。坂本龍馬が脱藩の罪を許されて亀山社中海援隊として土佐藩の外郭機関となると、藩命を受け隊の経理を担当した。記録上確認出来る弥太郎と龍馬の最初の接点はこの時である。

而在龍馬傳裡
他們在很小就認識了
所以這部分是不合史實的地方

另外還注意到了龍馬的三姐  乙女
http://ja.wikipedia.org/wiki/%E5%9D%82%E6%9C%AC%E4%B9%99%E5%A5%B3

其實是個很大隻的女生!!
身長5尺8寸(約174cm)・体重30貫(約112kg)

Jar signing and verifying

Android Media stack

這張是很久之前作的(donut)
忽然發現 所以把他放出來


現在Froyo上底層的engine換StageFright了

Monday, November 15, 2010

Thursday, November 11, 2010

拿到一隻hbbot是0.35的nexus one

昨天拿到一隻nexus one
想燒自己的image進去

結果在fastboot flashall的時候發現
這隻hboot是0.35的

他一直說要0.33才能燒
在xda找了看能不能回復到0.33好像也沒什麼用
那個link的mtb0.img已經不見了


最後只有慢慢的fastboot flash system system.img 這樣一個一個的燒進去
不過也只有三四個image喔
system, boot, recovery,
頂多一個userdata

在Eclair之前Browser的的exploit

http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-1807

source code:
http://www.exploit-db.com/exploits/15423/

不過還沒找到patch在哪

Wednesday, November 10, 2010

Android的Google Group

一開始覺得那些Android的Engineer會跟我一樣每天讀那些post
像Dianne Hackborn, David Turner,JBQ, fadden, Xavi.....

但是現在覺得Android的Google Group是有人來專門每天讀那些post
然後過濾過後再把真正有問題的post轉到相關的人員身上

Monday, November 1, 2010

android 的FileObserver

之前很好奇 為什麼
adb push test.apk /system/app
就可以把test.apk裝起來

然後把adb shell rm /system/app/test.apk
就可以把他刪除

原來是PackageManagerService裡有個AppDirObserver

其實就是extend android.os.FileObserver
然後再看FileObserver

原來他是用了linux裡的inotify這個feature
http://en.wikipedia.org/wiki/Inotify

kawakami-san離職了

上星期五請病假
不過今天打開email收信時
卻發現 kawakami-san上星期五寄給我的信
說 今天已經是他最後一天在這了  接下來他就離職了

kawakami是之前在英國認識的同事
我們是一起要到London出差的
雖然只有一星期 雖然我們只能用破破的英文聊天
從一開始他只是笑笑的回答我
到最後也會跟我聊很多事 (當然是灌他幾杯米露之後)

而且到最後一天我才發現 他的職位是
Division Supervisor
囧了...........我一直開部門主管的玩笑...................
雖然在這裡這種事我也常作...................................

Good Luck , Kawakami-san

wish I can see you again

kawakami-san在新的UK office被我偷拍到