2010年12月2日 星期四

茉莉二手書店

茉莉二手書店:

"所以現在台灣人包括年輕人、小孩子,都會逛舊書店。"

這突然讓我想到,小學住在新加坡的時候,其實還蠻常去逛舊書店的。我不記得是誰介紹的,多半是我當時的家教老師 Angeline。會去這類的二手書店,最主要的就是買給小孩子看的小說、故事書。各式各樣的 Lady Birds 的小硬皮書、買了快上百本的 Hardy Boys、Enid Blyton 寫的小偵探故事們,到後來讀出興趣了,才去買新的 Dragonlance Chronicles。

在這裡買來的二手書,封底都會印有某某書店某年某月某日以多少錢賣出的橡皮圖章印記,下一次如果把這二手書看完了,還可以拿回來賣,圖章上也會載明如果你多久時間內拿回來賣,書店會以多少錢收購,其實還蠻好的。後來 Hardy Boys 應該是大部分都賣回去了,等於是拿一小筆錢去租書回來看,如果覺得值得的就自己留下。

當時反正上學只上半天,功課也很簡單,不是玩我爸那台 8088 PC/XT,就是看這些買來的二手舊書小說,要說英文有所進步,這些小說實在功不可沒,副作用,當然就是後來買新書也變得像買二手書一樣,一次買好幾斤擺在家裡慢慢看,不過當時台灣沒什麼這種賣回去換別的書這種事情,所以家裡的書越堆越多;看來該秤斤拿去賣一賣了。

2010年11月12日 星期五

How to add numbers using AWK

awk 'BEGIN{total=0}

{total += $1}

END{print total}'

 

2010年11月11日 星期四

And they fixed it in 10.6.5

The crash that happened in my last blog post has been fixed with 10.6.5. Hurray!

Also, I think this release is a good one, "Top Sites" in Safari became snappier, I now use the small setting so it's like an image wall.

螢幕快照 2010-11-11 下午8.55.59.png

2010年11月7日 星期日

SystemPreference Screensaver/Wallpaper keeps crashing! *ANGRY*

I was meddling with some new wallpapers today when I noticed that after I've opened the ScreenSaver/Wallpaper preference pane, it crashes after approximately 10 secs. Searching the net seems to indicate that this might be a plist issue, mostly pointing to com.apple.desktop.plist.

But, that wasn't the issue. I spent about an hour trying to figure out which plist was causing the crash, since if I move all com.apple.* plists out of the usual place, the pref pane stays and runs smoothly. At last, it came down to com.apple.iApp.plist, which is a file indicating the various exported databases for iLife suite and iTunes.

I assume that the pref pane program crashed when trying to read AlbumData.xml. Unfortunately, I don't have any proper solution right now other than wait for Apple to fix the pref pane. There is a work-aroun though. Remove com.apple.iApp.plist before you modify any Screensaver/Wallpaper, the plist will be automatically re-created next time you run iPhoto. This might affect iWeb from retrieving media library from iPhoto and iTunes though.

2010年8月26日 星期四

The Lack of Common Sense

今天看到一篇文章是這樣說的:

當老鷹活到40歲時,牠的爪子開始老化,無法有效的抓住獵物。牠的啄變得又長又彎,幾乎碰到胸膛。牠的翅膀變得十分沉重,因為牠的羽毛長得又濃又厚,使得飛翔十分吃力。 牠只有兩種選擇:等死,或經過一次十分痛苦的更新過程。 150天漫長的「修煉」。牠必須很努力的飛到山頂,在懸崖上築巢,停留在那裏,不得飛翔。 ⋯⋯ 老鷹首先用牠的喙去擊打岩石,直到喙完全脫落。然後靜靜的等候新的喙長出來。 牠會用新長出來的喙把趾甲一根一根的拔掉。當新的趾甲長出來後,牠便把羽毛也一根一根的拔掉。 5個月以後,新的羽毛長出來了。老鷹開始飛翔。重新得以再過30年的歲月!

然後好多人說好感動,我看了真的覺得太荒謬了。這整篇文章錯誤百出,而且很不合理,看文章的人難道連一般的常識都已經沒有了嘛?

首先,一開頭說「活到40歲」,文末說「再過30年」,表示說這頭老鷹可以活到 70 歲,真是人生自古誰無死七十古來稀。根據這裡這裡,老鷹的平均壽命大概在 40 年到 50 年,野外真的有可以活到 70 年的老鷹嘛?再者,鳥類的喙和爪,和人類的頭髮與指甲一樣,都是角質層,一直都在生長,隨著日常的耗損維持一定的長度,也因此家裡養的鳥類常常需要修喙,免得長得歪了或是長太長了妨礙進食,野外的鳥類的爪、喙則因為有樹皮、石頭等等,得以有正常的耗損,甚至野鳥只怕耗損過度,少見長太長的情況。

另外,鳥羽通常是一塊一塊隨著季節更替,新的羽毛是長在原來的羽毛的位置的,所以說寵物鳥剪羽必須隔一段時間就做一次,因為飛行羽會重新長出來;年紀大的鳥甚至全身的羽毛都會掉光,並不會「羽毛長得又濃又厚」。

失去羽毛的鳥類無法飛行,進食、飲水都會是很大的問題,要「停留150天」不吃不喝,這已經是妖怪等級了吧!

為了這樣一篇沒有常識的文章覺得「好感動」,我真的很無法理解。

2010年8月25日 星期三

SSH Connection Multiplexing And DynamicForward Control Script

一直以來,上網在中國就是個大問題,很多東西因為有萬里防火牆的關係無法 access,比如 twitter、facebook、wikipedia。來了中國以後,一直都是依靠塞外的機器做 ssh tunnel。最早的時候用的是 local port forward,需要在 remote machine 上面建 http proxy,然後用以下的語法連到遠端的 http proxy 去:

ssh -f -N -L <local port number>:<http proxy hostname>:<http proxy port> <user>@<ssh login hostname>

這樣 data 的傳遞路徑是  Application -> local port -> SSH -> login host -> proxy host,通常 login host 就是 proxy host,但是也可以不一樣,以前用過家裡的機器當做 ssh host,然後 proxy host 設定成 proxy.seed.net.tw,這樣指令就變成

ssh -f -N -L 1080:proxy.seed.net.tw:1080 myname@home.machine

-f 是要求在輸入密碼(或是不需要輸入密碼)後,ssh process 就到背景去執行,-N 則是要求進入背景後不需要 timeout,也就是說不管這個tunnel上有沒有資料傳送,都一直維持連接的狀態。這樣再把 browser 的 http proxy 設定成 localhost:1080就可以開始用了。
這樣的作法有兩個問題:

  • 只有 http/https protocol 可以用
  • 控制這個 tunnel 的建立和停止機制很麻煩,只能用 ps -auxwww|grep ssh 找出 pid 然後送 -9 給它。

後來發現了有 -D 這個 option,可以建立 SOCKS4/SOCKS5 proxy,就可以把指令改為:

ssh -f -N -D 1080 <user>@<ssh login hostname>

其中的 -g 表示打開 GatewayPort,讓別的機器也可以把這個 port 當做 proxy 來用。改成這樣以後,OS/X 上只要可以用 SOCKS4/SOCKS5 的程式(幾乎是所有會 honor 系統 proxy 設定的程式)都可以用到這個 proxy,而不僅限於 http/https protocol。

只是改成這樣還是無法解決第二個 control 的問題,每次都還是要很工人智慧去用 ps, grep, kill。一直到昨天晚上看到 OpenSSH 5.6 的 release 公告,才重新發現有個叫做 multiplexing connection 的東西。

這個功能其實從 OpenSSH 3.9 就已經放進去了,主要是提供一個 local unix socket,透過這個 socket 重複使用已經建好的 connection,省去 authentication handshake 的時間。這個功能要在 .ssh/config 裡面設定

ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h:%p

這樣建一個 tunnel 或是啟動任何 ssh session 就會在這裡生一個新的 socket 出來,並且把這個主要的 connection 設定為 Master,以後建立到同樣的 user@host 的 ssh connection 就會利用這個 local socket 來 multiplex。對於這個 Master 我們可以送一些控制的 command,目前只有兩個(according to the manpage)exit 和 check。送 exit 當然就會讓 Master 結束,送 check 的話,會 return 這個 Master 目前的狀態和使用的 pid。看到了嘛?出現 pid 了喔,好像可以解決上面第二個問題了,但是有個更簡單的方法,直接送 exit 就好了。所以最後簡化了建立 SOCKS tunnel 的 shellscript,變成如下的片段:

 #!/bin/sh
port=1080
ssh=/usr/bin/ssh


if [ "$2" = "" ] ; then
echo 'Usage: '$0' {start|stop|check} user@hostname'
fi

if [ "$2" = "start" ]; then
$ssh -f -g -D $port -N $1
fi

if [ "$2" = "stop" ]; then
$ssh -D $port -O exit $1
fi
if [ "$2" = "check" ]; then
$ssh -D $port -O check $1
fi

加上 host, hostname 的設定,就可以用 ./socks.sh start hostname 這樣的形式來啟動 tunnel,然後用 ./socks.sh stop hostname 來停止,用 ./socks.sh check hostname 來檢查目前的 tunnel 狀態了。

 

2010年8月9日 星期一

切身的馬克思命題:為了生活而工作、還是為了工作而生活? - 楊照部落格 - Yahoo!奇摩部落格

切身的馬克思命題:為了生活而工作、還是為了工作而生活? - 楊照部落格 - Yahoo!奇摩部落格:

"年輕、浪漫的馬克思提出了他的夢想:每個人都應該以「個別性」 的身分活著,而工作是「個別性」當中重要的部分。 沒有人可以再像法國大革命前的貴族那樣遊手好閒、不事生產, 寄生在別人的生產力上,每個人都應該進入新的生產關係裡, 貢獻所能。不過一來,工作是尊嚴的,人人尊重工作者, 鄙視不工作的人;二來,工作只佔生活中的一小部分時間, 工作之餘,每個人都有他自己選擇的生活,去釣魚、去爬山、 去寫詩,或去讀柏拉圖。"

最接近這個理想狀態的,應該是 Star Trek 的世界

2010年8月7日 星期六

三太子上身的痴漢水球2.0: [2010/8/7雜談] 崩潰的台灣經濟(偽)

三太子上身的痴漢水球2.0: [2010/8/7雜談] 崩潰的台灣經濟(偽):

"「台灣人已經窮苦到沒辦法留在臺灣過年只能逃難到美國日本,平常沒錢買菜只能出門擠爆高級餐廳吃大餐,房貸壓力太大讓台北每坪價格變成東京兩倍,生活品質太差只能去開車塞爆雪隧,身體太虛只能開跑車載辣妹到墾丁徹夜跑趴,家裡沒水只能跑去宜蘭泡溫泉喝啤酒,房價太貴只能躲在礁溪老爺知本老爺這樣的飯店看2100全民開講,最後滿口塞著鮑魚的嘴巴一直講台灣經濟不好、政府鎖國、中國最大、歐美必衰,所以一切都是阿扁的錯。」"

hahahaha

2010年7月30日 星期五

博客來書籍館>沒有中國模式這回事!

博客來書籍館>沒有中國模式這回事!:

"他還充滿了創見的從金融角度解釋傳統儒家文化,指出儒家文化其實是一種隱形金融工具,但這一文化制度使得中國人勤勞而不富有、快樂,使得政府陷入財務危機而走入王朝循環週期。"

他的意思應該是「使得中國人勤勞而不富有、不快樂」吧,我猜。Coincides with my observation though.

Apple Magic Trackpad for Mac OS X / Windows (Boot Camp)驅動開放下載 | T客邦 - 我只推薦好東西

Apple Magic Trackpad for Mac OS X / Windows (Boot Camp)驅動開放下載 | T客邦 - 我只推薦好東西:

"Apple推出了超大面積的Magic Trackpad算是這次更新最有梗的產品(如果不算電池的話XD),隨後也接放出了Mac OS X的更新來支援Magic Trackpad,Windows驅動也跟放了出來,現在只要到Apple網站上就能下載來使用。不管是Mac OS還是Windows的系統,都已經可以支援Trackpad多點觸控功能。"

真是想幫老婆大人買一個啊~可是我們都用 MBP,都已經內建 trackpad 了。

2010年7月28日 星期三

繼續昨天的奮鬥──Subversion + Trac on Solaris, Part 2

今天花的時間比較少,但是一樣遇到問題。

依照昨天的作法,已經把所有該 compile 的東西都 compile 好了,但是今天啟動 apache 的時候才發現,mod_dav_svn 和 mod_authz_svn 這兩個 module 版本和 Solaris 內建的 Apache 不合。內建的是 2.0.x 系列,Collabnet 上面抓下來的是給 2.2 系列用的。所以……係裡~又要自己來惹~

參考了這篇文章,先去這裡抓 subversion 最新版的 source 回來。後來發現直接用 Sun Studio 12 也可以順利 compile,唯二的麻煩是 neon 和 sqlite3;這兩個 lib 在系統裡面都是沒有的,要另外抓。sqlite3 要抓這個版本,neon 要抓這個

sqlite3 裡面有個 sqlite3.c,解開後放在 subversion/sqlite-amalgamation 底下,然後把 neon 整個放在 subversion/neon 下。這時還要解決 ld 找 library 的問題。

Solaris 下,常用 LD_LIBRARY_PATH 來取得 ld(1) 找 library 的位置,但是也可以用 crle(1) 來設定整個機器上整體的 library search path。編譯 subversion 需要 libexpat (會在 install phase 的時候用到),這個奧妙的 library 放在 /usr/sfw/lib 裡面,往裡面一看還有好多其他常用的 3rd party library。

總結一下我們需要以下幾個 LD_LIBRARY_PATH:

/usr/local/lib
/usr/local/ssl/lib
/usr/sfw/lib

PATH 裡面則必須至少含

/usr/local/bin
/usr/ccs/bin

全部準備好,就可以開始下指令了:

./configure --prefix=/opt/subversion --with-apxs=/usr/apache2/bin/apxs --enable-shared --enable-ssl

這樣編譯出來的 subversion 會自動把該有的 module 丟進 apache2 的 libexec 目錄裡面,也會把 LoadModule 的敘述行放進 /etc/apache2/httpd.conf

經過這樣下來,至少已經把 subversion/apache2 這對工具搞定了,已經可以開始提供服務了,至於 Trac,那又是另外一個我還沒寫的故事了~

2010年7月27日 星期二

Subversion + Trac on Solaris

今天為了要把 SVN + Trac系統移植到 Solaris上吃足了苦頭。

Trac 0.12 推出了,好處是可以一次使用多個 repository,但是最低要求要有 Python 2.5 or 2.6。Solaris 10u6 內建的只到 2.4,所以得要裝套件。找來找去沒有很好的套件,只好自己抓 source 來編。

自己抓來的東西有個麻煩就是不知道該放哪,於是把 --prefix 設定到 /opt/python-2.6 底下去,這樣如果要砍掉重練比較單純一點。用安裝好的 gcc-3.4.6 來編。 Python 安裝完成,抓了 setuptools, Genshi-0.6 和 Trac-0.12 下來,直接就安裝到 python 2.6 的 site-packages 裡面去。

沒想到要裝 mod_wsgi 的時候卻出了包。mod_xxx 在編譯的時候,最好使用和 apache 編譯的原始編譯器一樣,根據 /var/apache2/build 裡面的 libtool 表示,原來的 apache2 是用 /opt/SUNWspro/bin/cc 編出來的,查了一下發現是 SUN 自己的 compiler...orz,還好現在的 Sun Studio 12u1 是不要錢的,抓了放進去,才知道原來新的 cc 已經不放在 SUNWspro 裡面了,解決的方法也不難,直接把 /usr/ccs/bin/cc symlink 過來,這樣 libtool 就不會抱怨找不到正確的 compiler 了。

解決了 mod_wsgi 的編譯問題。整理一下整個的編譯過程和 flags:

Python:

export CC="cc -mt -fast"
export CFLAGS="-fast"
./configure --prefix=/opt/python-2.6 --with-threads --without-gcc --disable-ipv6 --without-fpectl --enable-shared

後面的 enable-shared 很重要,不然編譯會出錯。mod_wsgi 需要 multi-threaded python,所以 CC 那邊要加上"-mt",而且 configure 要加上 --with-threads

mod_wsgi:

./configure --with-apxs=/usr/apache2/bin/apxs --with-python=/opt/python-2.6/bin/python

SVN 用的是 CollabNet 出的安裝包,明天再來看看這樣配起來能不能動吧~

 

2010年7月12日 星期一

MacRuby, Python, Ruby 在 OS/X 下, interactive shell 中文輸入的問題

之前不管是 Ruby 或是 Python,在 OS/X 下,interactive shell 輸入中文大部分都會出現問號。今天找了一下 MacRuby 的相關資料,發現原來是 readline 的問題。

雖然說 macirb 可以用 macirb --noreadline 跳過去,可是這樣就失去了豐富的 history 功能,也無法使用 Readline module了。

網路上有些文章建議直接去抓新版的 readline 來改,但是從 MacRuby 的這個看來,是系統內的 libedit 缺乏了 multibyte 支援導致的,所以連帶 python 也會有一樣的問題。於是直接去抓了 libedit 2.6.7 下來,configure 完 make 了以後,丟到 /usr/lib 裡面取代 libedit.2.dylib (當然,要先備份),這樣不管是 python 或是 ruby interactive shell 都可以直接打中文了。

**後記**

話說太滿果然會爆炸,放進去以後有些功能就變得怪怪的,正規的作法還是要先拉 Apple 自己的 libedit-13 下來再說。

2010年6月24日 星期四

一座安於旁觀的城市 - 楊照部落格 - Yahoo!奇摩部落格

一座安於旁觀的城市 - 楊照部落格 - Yahoo!奇摩部落格:

“長期以來,台灣太過於重視別人的眼光,觀看別人時,總想著「 那什麼時候也讓人家看我?」用一種強烈自我中心的態度, 將所有事情都投射成和自己有關,結果就弄得事事關己, 沒有事不關己的一種餘裕閒適; 同時倒過來也就對實在和自己扯不上關係的事, 發生不了真正的興趣。”

我還蠻喜歡這個 POV 的。昨天晚上林爸爸林媽媽邀我參加他們的晚餐會,在寶來那的餐廳裡面,一邊跟一個長輩聊著我對於台灣前途的一些想法。我認為台灣的年輕一輩的人,有很多的人都在努力尋找自己的方向,把精神放在自己的目標上,其實並沒有那麼悲觀。並不是別人有什麼我們沒有我們就比較差,而是我們到底未來想到些什麼地方?對於這些,我是樂觀的,並不擔心。

2010年6月13日 星期日

Extension for Safari

Safari 出了新版,終於出現 Extension 功能了

螢幕快照 2010-06-13 下午9.41.21.png

雖然說中文翻譯相當怪異,不過只要用 Safari 內建的工具,加上 HTML, CSS 或是 JavaScript 檔案,就可以用內建的工具把延伸功能組裝起來。

螢幕快照 2010-06-13 下午10.17.53.png

自己最常用的幾個小功能都是一些 Bookmarklet,比如 Share on Facebook 或是 Post to Echofon (這個是從 Post to Tweetie 改的),就順手把他們變成按鈕式的 extension。

螢幕快照 2010-06-13 下午2.21.50.png

不過 Plurk 的部份用的是 URL 的 status?= 的方法做上去的,所以還沒有那些 custom 動詞,接下來要把 JSON API 的部份放進來,或許 UI 上還要提供更好用一點的 form submission 畫面,這樣就可以更有彈性了。

2010年5月16日 星期日

很久沒寫 blog 了

距離上一次寫 blog 已經超過兩個月了。四月的時候回了趟台灣,跟冠吟把一些事情大致上敲定了,順便也去日月潭玩了一趟。在台北待了一個月,有種把整個人「轉」了回去一圈的感覺;回台北,行動自由(有機車、有捷運,還借得到車可以開)的感覺真的很好,台北也在這五年之間,變成了一個很讓人舒服的地方。到誠品去買書、去漫畫王看漫畫、在 216 巷看著各種吃食的店,然後挑一間看得順眼的去吃。

五月初一回到上海,完全不適應。一回到上海就面對公司巨大的變化,未來到底會如何並不知道,現在看起來是又期待又怕受傷害。還是說,我對中國的胃口已經結束了嘛?

2010年2月18日 星期四

We’re the Stupid Ones: Facebook, Google, and Our Failure as Developers

This coincides with what my initial thoughts were when I saw the iPad keynote.

These people have better things to do with their days than tweaking out the spacing in their browser toolbars. A computer for them is a utility. One that is increasingly complex, and one that is used because it’s the only option for accomplishing certain things – not because it’s a good option.

It’s kind of like the Photoshop Problem: when people want to crop a picture, we give them Photoshop. Photoshop is a behemoth application with nearly every image editing and touchup function imaginable, and it is terribly complex. Now Photoshop is an impressive tool, but only a very tiny percentage people need the power it offers. The vast majority just want to crop their ex-husband from the photo and let their friends look at it. But even iPhoto, the poster child for Apps So Easy Your Grandparents Can Use Them, continues to pile on features and complexity.

When folks need an elevator, we should give them an elevator, not an airplane. We’ve been giving them airplanes for 30 years, and then laughing at them for being too stupid to fly them right.

I think we’re the stupid ones.

[From funkatron.com : We’re the Stupid Ones: Facebook, Google, and Our Failure as Developers ]

2010年2月8日 星期一

微软亚洲研究院 电脑对联

要过年了,每年看到的对联都一样也蛮无聊的。微软亚洲研究院出了一支程式,可以用电脑帮你对对联。

[From 微软亚洲研究院 电脑对联 ]

以前有个「上海自来水来自海上」,没想到这个引擎对出了不少有趣的下联:

中国出人才人出国中

前门出租车租出门前

中山长生树生长山中

黄山落叶松叶落山黄

南岭临飞石飞临岭南

前门停车场车停门前

中山停云堂云停山中

山东落叶松叶落东山

中国长生果生长国中

西湖映月潭月映湖西

西湖灵隐寺隐灵湖西

山西飞机场机飞西山

下关交通道通交关下

黄山落叶树叶落山黄

山西过路人路过西山

北京跑马场马跑京北

2010年2月5日 星期五

Mule Design Studio's Blog: The Failure of Empathy

This is really scary upon first read.

I went back for a second helping of Avatar this Sunday. There’s a scene early on in the movie where one of the scientists walks across the lab carrying the “mobile computer slab of the future.” We’ve seen one of these in almost every sci-fi movie of the last 50 years. It comes free with a jetpack, I suppose. Except this time, one month later, my 12 year old son turns to me and whispers “Look Dad, it’s an iPad.”

[From Mule Design Studio's Blog: The Failure of Empathy]

The diagram in the passage really said it all. More computer users will appreciate what is becoming of the future of computing. Yes, you should just *IGNORE* the geeks, because after all, logic and reasoning are acquired skills, they don't belong to human nature and will remain a minority in population.

2010年2月4日 星期四

From the Archives: A Revealing Interview With Steve Jobs : Rolling Stone

That's from Steve Jobs in 1994, and look what he has done today. The hardware is a bonus, the key is really the software.

The problem is, in hardware you can't build a computer that's twice as good as anyone else's anymore. Too many people know how to do it. You're lucky if you can do one that's one and a third times better or one and a half times better. And then it's only six months before everybody else catches up. But you can do it in software. As a matter of fact, I think that the leap that we've made is at least five years ahead of anybody.

[From From the Archives: A Revealing Interview With Steve Jobs : Rolling Stone]

But in the end, OO hasn't taken over the world yet (ok, it is a tad easier to write with NS* than CF*, but that's not what he had described back then).

2010年1月26日 星期二

哼歌找歌

今天腦子裡面一直出現一首我小時候聽的歌,只記得曲調,而且是女生唱的,連伴奏和低音和弦我都記得,可是就是不記得曲名和歌詞。找來找去,終於找到這個網站,直接哼一小段進去就可以用這段聲音找音樂,哼完馬上出現,我要的就在第一首! 來聽聽老歌吧~

2010年1月14日 星期四

The Concept *is* the Execution

That's how software front-ends should be designed too, not by some database people 1,000 km away from the lusers.

To me, a great service emerges from a deep understanding of the way that people will interact with it, the way their lives work and the way that it will become part of their lives. From the way it will be useful to them, in other words. If they’re going to have to use a computer to interact with the service, it’s vital to understand what kind of computer they are going to be using, where they will be using it and, crucially, how much time they have to spend.
You cannot design a great service without an obsessional focus on the details. Deny that and I’m likely to get all executional on your ass.

[From The Concept *is* the Execution « Made by Many]

To be more specific to what I mean by "software front-end", I mean that the way we design the part that interacts with the users (not only the UI, also the data exchange, preparation part) should take the users' workflow into consideration. When 2 buttons confuse the user, we should consolidate them into a single button without ambiguous meaning, or hide enough details to let users complete a workflow without knowing too much beyond what the workflow requires them to know.

2010年1月12日 星期二

切記切記!NSString 要弄成 NSURL 一定要有這個轉換手續

NSString *stringEscaped = [stringOrig stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

糖醋排骨

Yummy!

首先將排骨飄水半小時(或以上)
也就是將排骨盛在碗中
置放於水龍頭下用小水沖洗
尤其是美國的豬肉
沒有這樣無法去除腥味

然後用醬油,酒和水醃製排骨
將排骨至於冰箱中至少數個小時

然後將排骨連醬油,酒與水
換入X品夫人電子壓力鍋中
直接壓熟
這樣確保連骨頭都軟嫩

等排骨壓熟之後
取出之後
切成小塊排骨
均勻沾上蛋黃液再裹上太白粉備用

以上是準備工作

然後起個油鍋
將裹好粉的排骨放如油鍋中炸到表面金黃
然後撈起
濾乾多餘的油

最後一步才是做醬
基本上醬是由醬油,糖,鎮江醋和水
以2:3:3:6的比例調成
(或請參考傅培梅食譜)
然後加入太白粉將醬汁調糊
用火將水燒掉
直到醬汁開始變得濃綢
然後將炸好的排骨扣入拌勻

[From Evil Capitalism Heroes: 糖醋排骨]

2010年1月4日 星期一

Quote of the day

This is cute,

"When we find someone whose weirdness is compatible with ours, we join up with them and fall into mutually satisfying weirdness and call it love - true love." Robert Fulghum

[From katie says When we find someone whose weirdness is compatible with ours, we join up with them and fall into mut - #38gnmj ]