Friday, November 25, 2011

我夢見
你從記憶深處 打點行李
就剩 行囊背影 面容不清

這蒼老的泥磚瓦房
便開始無休無止地寧靜
蛛絲微塵 細細密密

菜園荒蕪
苦楝樹花開一夏
終,枝葉凋零

Sunday, November 20, 2011

黃瓜切片: HTTP Live Streaming 原理簡介

一直覺得網絡上的流媒體播放技術是個神秘有趣的東西, 很早就聽過接觸過 mms/rtsp 這類流媒體 protocols, 印象中需要專門的服務器, 專門的客戶端 (包括瀏覽器中的 flash 插件形式).最近因項目機會, 仔細研究了一番 Apple 推出的 HTTP Live Streaming, 總算對這方面的知識有了清晰的認知.

HTTP Live Streaming 是個很有趣的實現, 它本質上就是把一段視頻 "切片" (經蘋果提供的 mediafilesegmenter), 然後提供給瀏覽器一個包含這些視頻 "切片" 信息的 "索引" - 一份 .m3u8 的 playlist, 瀏覽器據此 "一片一片" 地下載這些片段並播放, 於是便有了 "流" 的效果.

打個比方, 把一段視頻想象成一根黃瓜, 它被切成了黃瓜片放在服務器端, 同時有份清單寫著這黃瓜總長度幾許, 被切成幾片, 每片的 "名字" 是什麼. 拿到這清單的瀏覽器, 便可按圖索驥, 一片一片地拿回來喂給人 "吃".

如果這黃瓜是不斷成長的 - 即, 服務器那端給的不是靜態的一段視頻, 而是從攝像機/衛星電視信號之類過來的 "活" 的 (live) 視頻流 - 這時, 同樣的, 只要送進 "切片機" (mediastreamsegmenter) 上的部分, 都會被切片, 更新到播放列表. 瀏覽器根據更新了的播放列表, 繼續取 "黃瓜片", 直到播放列表裡收到 "黃瓜已分發完畢".

HTTP Live Streaming 的創新之處在於:
  1. 無需專門的 "流媒體服務器", 可與現有的 CDN 無縫結合
  2. 走 HTTP 協議, 無需特殊端口, 無需為穿越 NAT 煩惱
#1: 由於該技術本質上只是把視頻切分成片段 + 播放列表, 因此, 結合 Amazon S3/CloudFront 這樣的技術, 你可以很簡單地把切片後的視頻都傳到 S3 的 bucket 上, 然後在你的頁面裡通過 <video> tag 引用相應的 .m3u8 播放列表, 這就完成你的視頻流媒體服務了! 更進一步, 就是把 S3 bucket 發布到 CloudFront 上, 由 CloudFront 幫你把這視頻 "推送" 到離全球各處用戶最近的 Amazon 的服務器上, 給用戶最快的訪問體驗.

#2: 視頻播放時, 瀏覽器完全通過 HTTP 從服務器下載視頻片段. 這讓通常只開放 80 端口的企業網內部分發視頻內容不再需要面對防火牆/NAT 穿越之類的痛苦.

HTTP Live Streaming 雖已提交 IETF, 但目前尚未成為業界標准, 各家也自懷鬼胎. Apple 自家的 iOS 以及 OSX 是完美支持的, 由於 iOS 設備的火爆, 像 Adobe/微軟, 都在服務器上加入了 HTTP Live Streaming 的支持 (不過 flash 插件本身不支持, 反正 iOS 上也跑不了 flash, 哈).

經測試, html5 <video> 嵌 .m3u8 HTTP Live Streaming, 只有在 Apple 的平台上能工作, 即 iPhone/iPad/iPod Touch/Mac 上的 Safari 能播放. 換到 Chrome/Firefox/IE, 則徹底瞎火.

因此, 如果你的視頻項目是針對蘋果用戶, HTTP Live Streaming 就是你需要的. 但要支持其他平台/瀏覽器, 你還需要尋找別的方案.

現正研究 YouTube 的 html5 是如何支持所有瀏覽器以 <video> 進行流播放的, 若有進展再更新.

____

相關閱讀:
  1. 維基百科: http://en.wikipedia.org/wiki/HTTP_Live_Streaming
  2. 歷史背景: http://www.appleinsider.com/articles/09/07/08/apple_launches_http_live_streaming_standard_in_iphone_3_0.html
  3. 官方文檔: http://developer.apple.com/library/ios/#documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/Introduction/Introduction.html
  4. 工具下載 (需開發者賬號): https://connect.apple.com/cgi-bin/WebObjects/MemberSite.woa/wa/getSoftware?bundleID=20993

Thursday, November 17, 2011

Decimal fun in Python 2.6 & 2.7

In Python 2.6:

$ python2.6
Python 2.6.7 (r267:88850, Jul 10 2011, 09:55:27)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> f = float(1.0)
>>> import decimal
>>> decimal.Decimal(f)
Traceback (most recent call last):
File "", line 1, in
File "/usr/lib/python2.6/decimal.py", line 649, in __new__
"First convert the float to a string")
TypeError: Cannot convert float to Decimal. First convert the float to a string
>>>

Upgraded to Python 2.7:

$ python2.7
Python 2.7.2+ (default, Aug 16 2011, 07:03:08)
[GCC 4.6.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> f = float(1.0)
>>> import decimal
>>> decimal.Decimal(f)
Decimal('1')
>>>

Saturday, November 05, 2011

推特集 (2011/10)

  1. P 民的小命在兲朝本就不值幾錢,全世界文明國家流氓友邦都知道;你在國外死幾個,人都明瞭,你的叫囂無非外強中乾、秀外諱中,私底下一番遞好處、買面子,便又朝內朝外,一片和諧了。
  2. CEO: 首席恶人官; CTO: 首席喝茶官; CFO: 首席发钱官.
  3. Engineers - day to day life is boring, let's go creating!
  4. Regex: you need, you learn, you use, you forget (repeat). #Developer
  5. 囧: "服務器一年才宕三兩次, 所以我不該付你們運維 7x24 的錢."
  6. Steve Jobs: Think Different; P.R.China: Think Copy. So PRC is copying different #shanzhai Jobs.
  7. 此生此夜不曾好, 明月明年米國看...
  8. 一搞民主就會亂? 既得利益者們當然害怕自己會像疙瘩菲/穆巴拉克那樣民主化後被 "亂民" 審判, 所以才努力地讓你和他們同仇敵愾地這般想. 話說, 你是他們的一份子不?
  9. 工作經驗應是: 原來要寫三千字工作報告, 現在要人寫三千字工作報告 - 多一字兒. “@Fatal1tyV: 转:什么叫做工作经验,就是原来只会写三百字的工作报告现在能写出个三千字来。。。”
  10. I think "democracy" is bad for shaping up products, it gives u a false sense of safety & excuses like "see, it's group decision" when fail. So u don't let others draw on ur paintings, edit ur articles, do u? Only thru ur OWN crappy failures, u might craft a masterpiece, right? Then why we are usually so eager to get the first product "a big success" via "democracy"/"group decision"?
  11. 美國人民為啥不上訪? 因為人家沒有 "上" 好不好! 拿著選票的都是大爺姑奶奶, 不好好干活一票子砸過去投你丫下台.
  12. Design needs dictatorship, it's about expressing individual's idea before the general people can grow the awareness & taste to catch up.
  13. 微博的 fo 和 unfo 讓你體會到了一人一票/全民公投的快樂了不是?
  14. 愛國主義是怎麼來的? 你愛廣東嗎? 你愛湖南嗎? 你愛江蘇浙江上海北京嗎? 他們 (此處刪去五百字) 的時候, 你還愛嗎? 連你呆著的村縣市省都不愛, 你愛毛個國?
  15. 看 Kissenger: On China 小感: 現代化世界在與我朝交流過程中, 基本就是雞同鴨講, 講不通了就打, 打完了再講, 鼻青臉腫的還充胖子掛城牆上威武.
  16. 我們時常因讀到名人有某些和自己一樣的缺點而暗自竊喜,仿佛自己離他們的偉大又“免費”近了一步;殊不知,他們絕非因這些缺點而成就的,不過是成就後缺點成了他人行書的調料,讓豬頭們咀嚼過、美好完、學習後,離失敗的杯具又近了一步。
  17. 一幫子謊話張嘴就來的,一如既往地講:守信光荣、失信可耻。
  18. $ svn ci …; sleep(); - A ticket a night, fall asleep tight. #code
  19. 老喬已乘黃鶴去, 此地空餘饑和蠢! “@jasonwang178: Stay Hungry, Stay Foolish”
  20. 看 The Social Network 心得: 宅男得到辣妹的唯一出路就是 - 創業, 寫出改變世界的軟件!
  21. 這牆頭草, 有種換三個字. “@mranti: RT @NvShao: CCTV今早痛批卡扎菲:一,独断专制。二,垄断国家经济命脉,石油资源分配不均。三,经济改革失败,贫富差距大。四,非法打压民主人士。”
  22. Don't blame ppl for not working hard, playing games… it's you - not being able to get them excited/motivated by your dream. #attitude
  23. Why love coding? Coz it puts you in "God Mode".
  24. 國外人民可以訪問人人網、新浪微博,兲朝人民不能訪問臉書、推特,這直接導致了國外反華勢力可以上偶們家搗亂、偶們愛鍋粉青卻無法去他們家報復的局面。
  25. 人說:評價某偉人,需"三七分"-- 試問:那年代慘死的人們可否七分活著?那年代破壞的文化今有三成存餘?
  26. 良心,都在國界外流亡著、精神病院裡鎖著、衙門邊上驅趕著、小村莊裡挨打著、媒體上引導著、崴腳部發言著、連接重置著、史書上焚燒著、黃土堆裡埋葬著……你還期待這社會殘余些什麼道德的底線?
  27. 九九年,國慶,天津站,見路人圍觀,一人嘴角溢血倒地,眼緊閉,似無意識;問眾可有報警,皆避而不語;遂撥 120,有人誇,問:哪個學校的?答:南開。待警車近,一長者側臉低語:速離!問:何故?長者曰:"他們要知道是你報的,就抓你付醫療費,不讓你跑啦!"自此識冷暖,擇路遁逃。
  28. 強烈要求海淀區人大代表幫我奪回自行車道權!滿街亂佔亂停的汽車,我納稅,我要自行車道,我要安全騎車權!
  29. First, you must be able to sense even the most subtle beauties in your surroundings, then reuse/recreate them neatly in your work. #art
  30. Don't be stubborn to be "dignified/unique", you can only embrace/enjoy world's diversity for being open-minded. #attitude
  31. If you keep collecting dust from the past, you will look old very fast.
  32. 看盡帝都長空,心中自然無碼。
  33. MI6 对付恐怖份子网站:黑进去,把炸弹教程换成蛋糕秘笈;兲朝对付推特/非死不可:连接已重置。威武涅~
  34. Things around grow complex as we grow, that's why we need to grow the capability of KISS.
  35. 經驗帶來的能力之一: 概括, 刪繁就簡.
  36. 微博已把本是一盘散沙的许多耳朵和嘴巴, 神奇地集结到各个富有影响力的名人影星/意见领袖周遭, 它们时刻准备着连听带说, 闪传声音. 现在等的, 是一个时机, 他们能把积压多年的汹涌民意, 那简单的一两句话, 随良知而出 - 百渠千壑已成, 只待开闸泄洪, 摧枯拉朽.
  37. Fight thru all the ugly bits so to achieve the ultimate elegance. #programming
  38. 難得今日臨窗遠眺, 平時堪比 rm 薄碼片的帝都天空下, 有 1080p 的景觀, 哪怕此刻烏雲壓頂.
  39. 老大哥用了七十年啊,還得再熬熬。
  40. #Siri makes all other "smart phones" look dumb. #iphone4s
  41. 活在帝都的一大滿足: 至少呼吸的空氣和皇親國戚是差不太多的, 心裡特平衡.
  42. You don't have to be able to invent everything, but just be able to fit things together like never before.
  43. Steve Jobs died, you are still who you are.
  44. 你們, 害怕一首歌, 一句話, 一種聲音, 一點思考, 一篇文章, 一個人. 你們, 締造了怎樣一個, 盛世強國?
  45. 時間到了,縱有再多的不捨,也得斷然放下,不是嗎?
  46. Are dreams brain's quantum entanglement state with other "me"s in parallel universes?? #idea #scifi