看來script injection也不算是啥旁門左道了, 在Android 4.0 ICS上的WebView也使用了同樣的技巧了(在Gingerbread上並未看到這樣的codes)

Device-2012-02-17-171716

在ICS的Setting裡面"Accessiblity"裡有個設定叫"Install web script", 其實這東西應該沒使用者看的懂, 其實蠻怪的, 不過既然放了就有它的作用

ICS的WebView裡面有這樣一段codes:

int axsParameterValue = getAxsUrlParameterValue(url);

        if (axsParameterValue == ACCESSIBILITY_SCRIPT_INJECTION_UNDEFINED) {

            boolean onDeviceScriptInjectionEnabled = (Settings.Secure.getInt(mContext

                    .getContentResolver(), Settings.Secure.ACCESSIBILITY_SCRIPT_INJECTION, 0) == 1);

            if (onDeviceScriptInjectionEnabled) {

                ensureAccessibilityScriptInjectorInstance(false);

                // neither script injected nor script injection opted out => we inject

                loadUrl(ACCESSIBILITY_SCRIPT_CHOOSER_JAVASCRIPT);

                // TODO: Set this flag after successfull script injection. Maybe upon injection

                // the chooser should update the meta tag and we check it to declare success

                mAccessibilityScriptInjected = true;

            } else {

                // injection disabled so we fallback to the basic built-in support

                ensureAccessibilityScriptInjectorInstance(true);

            }

        } else if (axsParameterValue == ACCESSIBILITY_SCRIPT_INJECTION_OPTED_OUT) {

            // injection opted out so we fallback to the basic buil-in support

            ensureAccessibilityScriptInjectorInstance(true);

        } else if (axsParameterValue == ACCESSIBILITY_SCRIPT_INJECTION_PROVIDED) {

            ensureAccessibilityScriptInjectorInstance(false);

            // the URL provides accessibility but we still need to add our generic script

            loadUrl(ACCESSIBILITY_SCRIPT_CHOOSER_JAVASCRIPT);

        } else {

            Log.e(LOGTAG, “Unknown URL value for the "axs" URL parameter: ” + axsParameterValue);

        }

這功能啟動的條件是url裡有"axs=1"或是剛講的那個設定是enabled, 而這一整段code是在onPageFinished最後被呼叫到的, 也就是頁面載入完成之後
它主要做的只有:

 loadUrl(ACCESSIBILITY_SCRIPT_CHOOSER_JAVASCRIPT);

這邊並不是強制去載入一個新的URL, 其實他做的就是script injection, ACCESSIBILITY_SCRIPT_CHOOSER_JAVASCRIPT的內容就是:

    // JavaScript to inject the script chooser which will

    // pick the right script for the current URL

    private static final String ACCESSIBILITY_SCRIPT_CHOOSER_JAVASCRIPT =

        “javascript:(function() {” +

        “    var chooser = document.createElement(‘script’);” +

        “    chooser.type = 'text/javascript’;” +

        “    chooser.src = 'https://ssl.gstatic.com/accessibility/javascript/android/AndroidScriptChooser.user.js’;” +

        “    document.getElementsByTagName('head’)[0].appendChild(chooser);” +

        “  })();”;

它就是在最後把https://ssl.gstatic.com/accessibility/javascript/android/AndroidScriptChooser.user.js給inject到page

還沒去仔細看js裡面的內容, 似乎都是一些基本的東西的樣子, 還不太知道他的用意, 不過應該跟加速(?) Google本身的頁面有關係, 不然其他web site應該也沒用到這些東西

雖然Kindle keyboard有鍵盤, 但也只能輸入英文, 因此也沒辦法建立中文的分類, 有時候還蠻頭痛分類的命名

自從買了Kindle後, 還蠻常用Calibre的, 不過很慚愧的是, 常用它來轉文件卻很多功能都沒去發現到, 今天為了想改個Kindle的字型, 才發現它很多好用的plugin可以用, 其中一個就是Kindle Collections plugin

安裝的方法:

_2012-02-06_12
—->

_2012-02-06_12

—-> Get a new plugin

然後找到Kindle Collections安裝即可

裝好後可能會沒看到任何東西, 所以必須要去Preferences -> Toolbar設定

選擇"The main toolbar when a device is connected", 從左邊找到Kindle Collections把它放到右邊去, 這時候當你Kindle連上電腦後就可以看到這樣的按鈕在toolbar上:

_2012-02-06_12

它提供的功能包含讓你從Calibre同步分類過去, 也可以手動編輯分類, 我不想同步, 所以我用到的只有手動編輯

另外值得一提的是它有一個"Modify Kindle Settings"的功能, 可以讓你在不用Jailbreak下換字型 (這也是我今天最主要的目的):

_2012-02-06_12

在做這件事之前, 必須先在你Kindle的根目錄開一個"fonts"的目錄並把你的ttf字型檔放進去(檔名格式是xxx-Regular.ttf, xxx-Bold.ttf)

我還蠻喜歡Android ICS的蘿蔔頭(Roboto)字型的, 不過早上弄了半天一直不成功, 後來才發現, Roboto只有英文字型, 如果在中文書內改變字型, 就會跑回預設設定, 也就是原先預設的字型

解決的方法就是要合併中文字型進去, 在Android中, 中文字型是放到DroidSansFallback.ttf去了, 這時候可以用fontforge來合併字型

這邊有提到怎做:

  1. http://7thgen.info/blog/2008/07/merging-font-with-fontforge/
  2. http://fontforge.sourceforge.net/scripting.html

Open($1 + “.ttf”)

SelectAll()

ScaleToEm(1024)

Generate(“temp.ttf”, “”, 0x14)

Close()

Open($2 + “.ttf”)

SelectAll()

ScaleToEm(1024)

MergeFonts(“temp.ttf”)

Generate(“new_” + $2 + “.ttf”, “”, 0x14)

Close()

 

因為Roboto除了正常字體外還有粗體, 斜體, 粗斜體等等字型檔, 我不太確定只合併一個夠不夠, 所以小改了 1 裡面提的script, 假設把上面的script存成merge.pe , 執行的方法如下:

fontforge -script merge.pe DroidSansFallback Roboto-Regular

依序再把其他字型合併

這是正常改成Roboto的結果:

Screen_shot-57283

按"Aa"鍵可以挑字型, 這時候你可以看到字型設定在"alt", 這方法的缺點是, 千萬別改成其他字型, 要不然設定又會跑回預設, 也會找不到"alt"

中文字型也有比原先好看點, 但我還不是很滿意, 之後再來試試其他字型:

Screen_shot-57285

但選單的字型是不會跟著改的, 還是原來的:

Screen_shot-57286

 

最後….上面Kindle的screenshot是怎抓的? “Alt + ↑ + G”

兩台電腦沒兩台螢幕還挺不方便的, 用ssh連到另一台Linux用command line的缺點是一些X11 apps都沒辦法用, 不過好像ssh也不是只有文字可用

ssh -X my_host

用上面的方式就可以用X11 forwarding的模式連到Linux的那台, 這時候執行任何一個X11程式, 視窗就會在你的電腦顯示而非遠端那台Linux, 舉個例, 我從mac mini連到一台遠端的Linux執行banshee, 這就是mac mini上得到的結果(這screenshot有兩個視窗, 上頭是banshee run on X11, 下頭是terminal, 用ssh -X連到Linux並執行banshee):

_2012-01-29_1

“男人”(man)的說明是這樣寫的:

-X      Enables X11 forwarding.  This can also be specified on a per-host basis in a configuration file.

             X11 forwarding should be enabled with caution.  Users with the ability to bypass file permissions on the remote host (for the user’s X authorization database) can access the local X11 display through the forwarded connection.  An attacker may then be able to perform activities such as keystroke monitoring.

             For this reason, X11 forwarding is subjected to X11 SECURITY extension restrictions by default.  Please refer to the ssh -Y option and the ForwardX11Trusted directive in ssh_config(5) for more information.

 

 

DSC00879

這是這次去東京吃的最後一碗拉麵了, 也是唯一一家有排隊等的, 這家店白天叫麵や七彩, 晚上叫江戶甘, 似乎連菜單也會不同

我點的是看板上寫的夜晚人氣No. 1的, 這湯頭是味噌系的, 不過這一碗也是這次我吃的三碗中的唯一稱的上災難的, 並非我不喜歡味噌拉麵, 我在台灣的誠屋吃也常點他的味噌拉麵, 但這碗, 我實在無法喜歡, 湯頭厚重, 我喜歡厚重湯頭, 不過這湯, 不是厚重而已, 而是過於雜亂….剛端上來的時候, 上面還有看到一沱cheese粉, 本覺得蠻特別的, 但一喝湯, 完全混亂了我的味覺

麵是粗的扁麵, 口感還好而已, 叉燒過乾, 沒啥油脂(湯頭裡倒不少油脂), 半熟卵是還不錯

店裡的服務人員的名牌, 看上去好像都是中國姓(吳, 鄭, 鐘), 在店內沒講中文批評, 要不搞不好還真聽懂.. :P

DSC00282

這家位於吉祥寺車站附近, 這次是去三鷹美術館(離這走路約二十分鐘)回程去吃的

_2012-01-22_9

店面不大, 只有兩排座位, 很巧的是, 我們買了食券進去後, 第一個碰到的就是我們在三鷹美術館碰到的台灣人(在三鷹時還幫他們照過相)

這家店, 如果是喜歡重口味以及大份量的, 絕對會感動到流淚, 一進去, 來跟我們服務的店員居然是講中文, 可能是打工的留學生吧….他跟我們說不管是大碗還是特大碗, 都是一樣價錢, 看來麵是夠吃到飽吧…還好我沒點最大的, 份量已經是很多了, 再大應該會撐死

點了招牌的虎麵

DSC00289DSC00294

麵一送來, 第一個映入眼簾的絕對是那三塊令人垂涎三尺的叉燒…..三塊叉燒但卻是兩種不同的, 一種是常在拉麵上看到的那種形式, 另一種像是我們吃的焢肉

這叉燒絕對是極品, 肉大又實在, 又入味, 還有兩種不同的口感

湯頭, 很鹹也非常非常之濃郁, 一入口, 滿嘴都是那個湯頭的味道

麵條….超級彈牙, 非常的好吃, 個人認為, 以麵條自豪的一蘭都沒它好吃, 整碗麵以麵條為最高, 應該是手工的, 所有的麵條都存放在這:

DSC00286

店內蠻昏暗的, 但裝潢還頗有點味道, 煮麵的師傅一直相當的忙碌:

DSC00302DSC00288

本來當天我還打算回到東京車站到一番街再吃一碗拉麵, 但中午吃過這碗後, 到了東京站, 我跑到了拉麵街晃了好幾圈, 滿腦袋都是中午吃過的味道, 事實上嘴裡也殘留了這碗麵的味道, 以致於到了拉麵街看了好幾家, 即使是排滿長龍的六厘舍, 我都提不起任何食慾, 結果當晚就改吃了別的

這家是值得大推的店…