在Twitter API文件:GET trends/:woeid裡的woeid原來是Yahoo! Where On Earth ID,由Yahoo提出的。
1 表示全球,要知道自己所在地區的trends,還得要先用Yahoo的Service去查到所在的woeid,才能再去問Twitter。
Just thinking more…
在Twitter API文件:GET trends/:woeid裡的woeid原來是Yahoo! Where On Earth ID,由Yahoo提出的。
1 表示全球,要知道自己所在地區的trends,還得要先用Yahoo的Service去查到所在的woeid,才能再去問Twitter。
簡單的說是遞迴的特例,好處是可以避免call stack的損耗。Stack Overflow上的回答蠻清楚的,還附了python範例:algorithm – What is tail-recursion?,英文維基百科上的說明:Tail call比中文維基百科上的來的好。
跟遞迴比較大的差別,目前我認知到的是會利用另外一個參數來傳遞結果,實際應用上應該只要是遞迴都可以改寫成Tail call吧,再想想可以怎麼應用。
實作這個範例時,出現錯誤:TwitterHTTPError: Twitter sent status 404 for URL: trends.json using parameters: ()
有人回報給作者:Example 1-3 fails with 404 errors,也有人去 StackOverflow 上問:Problem with Twitter package by sixohsix,可是都沒有解決問題的答案。
答案在twitter API -GET trends上:因為deprecated了。要改用GET trends/:woeid,也就是像這樣的網址 http://api.twitter.com/1/trends/1.json 才可以取得。
換言之,程式要改為:
[python]import twitter
t=twitter.Twitter(api_version=’1′)
t.trends(id=1)
[/python]
還是忍不住寫了,畢竟每次要為十幾本書打勾還是蠻累的。基本上就是多加兩個按鈕,一個幫我全打勾,一個幫我取消打勾。不過第二個按鈕好像永遠都用不到,這就是所謂的 over design 嗎? :-p
看完還是順手紀錄一下,要不然就白花這25分鐘看了。
簡單的說,要先 root 並且裝上 busybox,接著下載 bootubuntu,這是預先編譯好的 ARM Ubuntu image,放到 SD Card 上的 ubuntu目錄下。然後用 adb shell 連上,執行 su,到 SD Card 的 ubuntu 目錄下,執行 bootubuntu,就進 ubuntu 環境了。有了 ubuntu 環境,就能執行 apt-get,立馬就可以裝上 openssh-server、tightvncserver,openssh-server 是為了有更好的終端機環境可用,因為 Windows 的命令提示字元不夠理想。tightvncserver 則是要給 market 上的 vnc client 用的,執行 vnc client 連到本機上的 vnc server,就有 Ubuntu 畫面跑出來了。
先確定有EPEL,然後:
$sudo yum install python26
再裝 python26-virtualenv python-pip:
$yum install python26-virtualenv python-pip
製作環境:
$mkdir -p python-envs
$cd python-envs
$virtualenv-2.6 –no-site-packages –distribute myenv
$pip-python install -E myenv yolk
啟用:
$source myenv/bin/activate
$yolk -l
快年底了…
網路上可以找到很多文章,不過大多都是講怎麼用,而沒有提到原理,所以就想找找看。
最初找到的是這篇:Android adb setuid提权漏洞的分析,裡面就寫得很清楚了,他寫的不是 z4root,而是 RageAgainstTheCage,主要是靠著一直建 process,建到極限值,然後試著砍掉 adb,再靠 adb 程式沒有檢查 setuid 傳回值的漏洞來取得 root 權限。一般的 daemon 程式都是這樣子,一開始是 root,之後會用 setuid 切換身份,所以在 setuid 之前都是 root。而 setuid 通常不會失敗,但是因為可用的程序限制到了,才失敗 (參考 kernel/sys.c 裡的 set_user)。
好,那跟 z4root 又有什麼關係?還好 z4root 有源碼。
z4root 裡就有用到 RageAgainstTheCage,z4root.java 是主要的 Activity,當你 click root 按鈕值,會啟動 Phase1 Activity,這邊就會把包成 resource 的 RageAgainstTheCage 寫到z4root的應用程式目錄下,然後變更其權限並且執行。噹噹,執行完以後,當然 adb 就有 root 權限了。
然後 Phase1 有 thread 去持續檢查執行 RageAgainstTheCage 的程序,如果成功了,會利用 Alarm 服務去啟動 Phase2。Phase2 這邊我有點不太明白,最後是將 su、busybox、SuperUser.apk 都搬到系統分割區了,然後就重開機,可是這個時候怎麼會有權限可以作這些事情呢? 如果照上面的 RageAgainstTheCage 來看,我猜想應該是在執行 RageAgainstTheCage 時,把程序數衝到最大限制,然後之後所執行的程序其實都是 root 啟動的,要切換使用者身份時失敗,所以之後的程序都是 root,也因此 Phase2 Activity 也有同等的 root 權限。這邊因為跟 java 的 thread 作法不是很熟,所以就不了了之。
z4root 最後是重開機,此時已經有埋必要的 su 跟 SuperUser.apk 在系統裡,也就有了可以 root 的可能。
在教師節談老師的喪禮,好像不是很適合。不過我上周六(9/24)的的確確去參加了導師的喪禮。
雖然相處只有一年,時間不是很長,但老師的笑聲跟爽朗讓我有很深的印象,另外,也因為導師的喪禮是以天主教/基督教(真的很抱歉,我實在搞不清楚)的形式來舉行,所以我就毅然決然地參加了。
時間是在13:00,喪禮很準時的開始了。一開始是唱詩、福音,然後是師丈、老師的哥哥跟老師的好朋友出來講話,在邊講話的同時,後面還放著老師的生平照片投影片,從小時候到高中、大學學生時代,再到結婚、出國玩的照片,這邊真的很感人、很催淚,我眼淚都盈框了。等到講完,是證道,邀請了主任牧師來證道,這邊我要跟老師說抱歉,我差點就睡著,因為證道只有兩個重點,第一個是要把握現在,珍惜生命,第二個,就是講老師在神的引領下,到了天國,信了神,以後就可以再見到老師。再來,就又是唱詩,然後追思。最後可以再去看老師最後一面,我沒去看。
這樣的喪禮我覺得除掉證道以外,我很能接受,所以我的喪禮以後就簡單舉行吧,沒有人上台講對我的懷念也沒關係,就大家看完投影片(投影片我看我自己在死前做好好了,才不會沒人做),一起默哀個三分鐘,然後把遺體丟去火葬就好。總之,這次的喪禮對我來說是一個很特別的體驗。