Posted in Mr. Thursday, 專欄, 電腦科學 on Apr 3rd, 2008
Posted By Mr. Thursday 不知道各位是否有接聽電話插撥 (call waiting) 的經驗? 我們會先把第一個接聽的人先暫時停著,然後接聽新打來的電話。不知道目前插撥最多能接聽多少通電話?假設依照這個方法一直接聽新的插撥電話,就會一直把上一通電話暫時儲存,等新接通的電話結束後,再回復上一通、上上一通、一直到第一通接聽的電話。 堆疊 (Stack) 就是類似的資料結構。「堆疊」有兩個方法 (method) 可以呼叫:推進 (push) 和 彈出 (pop)。透過這兩個方法的使用,我們可以達到讓資料「先進後出」的效果 (LIFO: Last In First Out)。甚麼是先進後出呢?讓我們再舉一個例子:搭電梯。當我們搭電梯的時候,通常最先進電梯的會擠在後面,後進電梯的比較靠近門口。如果都是同一層離開電梯,剛才比較慢近來電梯的人,反而是比較早離開電梯的人,這就是「先進後出」(LIFO) 的效果了。 再回到剛才接聽插撥電話的例子,正好就是先進後出的例子!最後插撥的先結束對話,最早打來的最慢結束對話。接下來讓我們看看,堆疊實際運作的情形,會向下面這一張動畫所顯示的:
Read Full Post »
Posted in Mr. Thursday, 專欄, 電腦科學 on Mar 29th, 2008
Posted By Mr. Thursday 在〈二元樹在排序的應用〉裡面,我們提到了演算法就是完成一件事情的步驟,資料結構則是和演算法搭配,讓步驟有運作的東西,像是刮鬍刀的步驟,會運作在刮鬍刀或是插頭上面。「樹」(tree) 是一種資料結構,有樹根樹枝,看起來像是倒立的一棵樹。二元數則是每個節點只有兩個分支的樹。此外,我們可以用二元樹這個資料結構,完成「排序」(sorting) 的演算法。下面是一段各種排序演算法的影片: 除了排序以外,今天要和各位介紹,當我們把資料用一棵樹排序之後,要如何進行搜尋?排序或是沒有排序,對搜尋的效率有甚麼樣子的影響?我們先看看下面這兩張圖,左邊是排序過程,右邊是搜尋過程的動畫:
Read Full Post »
Posted in Mr. Friday, 專欄, 新聞, 觀點, 關於媒體, 關於政治 on Mar 18th, 2008
Posted by Mr. Friday 最近在電視上看到西藏的新聞,感慨之餘,聽聞對岸政府為了『影響』輿論,已經將 YouTube 封殺,理由是不讓國內民眾接觸到西藏暴動的影片紀錄畫面。消息被封鎖,民眾自然只能聽信中央電視台的官方說法。 姑且不論 G F W 這次是否又能發揮它的功效,中共政府封殺 YouTube 的做法,讓我想到去年的一件新聞。以下摘錄自劉必榮教授的部落格: 國際新聞週報 5.27 – 6.3 5月27日,星期日,午夜,委內瑞拉總統查維茲關掉了與他唱反調的電視台卡拉卡斯電視台(Radio Caracas Television, RCTV),另外用政府的錢,資助成立另一家電視台 〈按: TVes〉。 查維茲行事一向走民粹作風,也經常引起爭議。但這次乾脆把反對他的電視台關掉,手段之粗暴、直接,令人咋舌。
Read Full Post »
Posted in Mr. Tuesday, 圖書, 專欄, 文化, 生活, 網路新聞, 觀點 on Mar 17th, 2008
Posted by Mr. Tuesday 其實這篇文章,只是想邀請正在讀它的你們,連到《獨立書店大小事電子報》的網頁去,訂閱它,並且用力地轉寄給每一個可能會感興趣的朋友,邀請他們一起加入吧! 上個月中旬,Mr. Tuesday和幾個大學摯友們聚餐敘舊。席間聊到當今出版業與書店通路的生態,摯友之一不禁苦勸道:「現在走文學路線的出版社已經越來越難作了,別再跟連鎖書店或是網站買書了啦!既然是上班族,如果不差那幾十塊錢的話,就直接跟出版社訂書、或是多多支持各地的獨立書店吧!」 於是在兩天過後,當我要訂購即將上市的作家全集時,便聽從了她的建議、直接劃撥給出版社。在博客來的網站上,當然也有同樣的預購訊息,而我所付的價格還比那上面多出一元。但我如果沒猜錯的話,出版社從中獲得的利潤應該會多好幾百塊吧? 接著是在上個星期,我在詩人楊佳嫻的部落格上看到了《獨立書店電子報》發刊的訊息。這是由位在台中的東海書苑、位在嘉義(台南也有分店)的洪雅書房、位在竹北的草葉集、位在永和的小小書房、以及位在淡水的有河book所共同發行的電子報。這五家小書店各有特色,而電子報的內容除了各書店部落格上的文章之外,還有這些老闆們的推薦書目、店頭的折扣訊息,以及當週的活動與講座資訊等…
Read Full Post »
Posted in Mr. Thursday, 專欄, 電腦科學 on Mar 16th, 2008
Posted By Mr. Thursday 在〈由樹的前序、中序、後序走法來談資料結構〉文章裡面提到了演算法就像是做事情的方法,資料結構則是對應演算法可以運作的東西,譬如說刮鬍子有步驟一、步驟二、步驟三,但是要有刮鬍刀、插頭、以及鬍鬚,那些步驟才有運作的東西,甚至不同的刮鬍刀,也會讓同樣的步驟有不同的執行效率,或是連原來的步驟都要改變,譬如說不是電動刮鬍刀,原來步驟裡面插插頭的那一步,也就可以不用作了。演算法和資料結構之間的關係也是如此,譬如說排序的演算法,可以用不同的資料結構來實現,好的資料結構,可能某一種排序演算法最適合,對其他種排序演算法,可能反而讓速度變慢。 因此,演算法和資料結構,通常會一起考慮,而演算法每一步,也就是電腦可以實現的基本步驟所組成。譬如說兩個數字相加,或是把「樹」這個資料結構裡面的節點根據某種規則移動,都是電腦運算基本步驟所可以達成的。但是如果步驟是「改善排序的品質」的敘述,電腦可能就看不懂了,這時候就是程式設計師,把這些人看的懂的需求,轉換成電腦可以實現的步驟,也就是演算法和對應的資料結構,最後再用程式 (編程) (program),變成電腦真的可以執行的語言,達到最初想要執行的功能。那麼今天想要完成的功能是甚麼呢?「排序」,排序就是把原本雜亂無章的一堆東西,按照某種順序排好,譬如說圖書館裡面的書籍,按照書籍的編號有小到大排好,譬如說醫院的病歷,按照病歷號碼有小到大排好,譬如說一堆檔案,按照字母順序或是檔案時間順序有早到晚排好,這些都是排序的應用。那麼電腦要如何完成「排序」(sort) 這件工作呢?「二元樹」 (binary tree) 怎樣子應用在排序這項工作呢?
Read Full Post »
Posted in Google, Mr. Saturday, Web 2.0, 專欄, 網路新聞, 關於網路產業 on Mar 13th, 2008
Posted by Mr. Saturday 「YouTube 是一個影音平台,要看影片就得叫使用者自己連到 YouTube 的網站去。」這件事情在使用者可以把 YouTube 的影片嵌入到自己的網頁上之後,早已經不是事實,現在網路上到處都可以看得到網路出版者或是部落客把 YouTube 的影片透過簡單的 HTML 標籤引用到自己的文章內容去。然而各位是否注意過,除了把影片拿到 YouTube 以外的地方嵌入讓大家看之外,瀏覽者在 YouTube 以外的地方似乎跟影片本身沒什麼互動性可言,也就是說,如果瀏覽者想要對影片留下一些回應或是評價,就真的只能自己連到 YouTube 網站中這支影片的連結,才能進行這些動作。 現在情況完全改觀了,Google 今天在 Google Code 上面發表了 YouTube APIs and Tools,可以讓 YouTube 的影音平台整個開放出來,現在 YouTube 不再只是一個使用者的目的地,它已經變成一個徹底的網路服務。對於網路上的開發者們而言,可以透過這一套工具和 API 存取 YouTube 上面所有的影片和 YouTube 這個平台本身,簡單來說就是開發者現在可以掌握 YouTube 上面所有的影音內容,自由地去使用,而不再只是把影片嵌入自己的網頁這項簡單的功能而已。對於使用者而言,這就意味著他們在每個地方看到的 YouTube 影片,現在有了更強的互動性,可以直接留言或是留下評價,不需要再連回 YouTube 做這件事情,這些資料會透過這些 API 自動地傳回 YouTube 做彙整的動作。簡單舉例來說,網站開發者現在可以透過 API 做以下事情:
Read Full Post »
Posted in Google, Mr. Saturday, 專欄, 網路新聞, 觀點, 關於網路產業 on Mar 12th, 2008
Posted by Mr. Saturday 去年 (2007 年) 的 4/14 號,Google 發出消息,將以 31.8 億的美金併購廣告公司 DoubleClick,這個併購案延宕了將近一年,終於在今天美國時間 3/11 通過歐盟的審核以及調查,正式獲得 European Commission (歐盟執行委員會) 的同意。對於這項併購案有興趣的讀者,可以參考我去年寫的 超越 YouTube 的天價!Google 砸下 31.8 億美金併購 DoubleClick,底下我們就簡單地把背景再從該篇文章引用交代一次: 為什麼 Google 會砸下將近於購併 YouTube 時兩倍的錢來買這家公司?這就要從網路廣告說起了,現在的網路廣告分為兩大類,一是付費搜尋廣告 (paid search advertising);二是展示廣告 (display advertising,不知道這樣翻成中文合不合適,有錯還麻煩讀者們指正)。paid search advertising 是 Google 的主力,Google 的主要廣告方法很清楚,99% 是來自於根據搜尋的結果,把相關的廣告餵給使用者,這就是 AdWords。另外 AdSense 等 等根據網頁內容動態產生廣告的方式,都是 Google 的主要廣告方式。相對於此,display advertising 就是 Yahoo! 的地盤,包括了 banner、video、flash […]
Read Full Post »