人派網路的科技應用


當想要跟某個人求助、求職、搭訕時,但又苦於你跟他根本不認識嗎??

不知道你有沒有看過一本書 - SIX DEGREES: The Science of a Connected Age(六個人的小世界)
簡單的說,在你和你原本不認識的人之間,只要透過你們朋友的朋友,就可以讓兩人搭上關係了。看過之後,也許你會開始覺得,原來世界沒有你想像中的大,人與人之間的距離,比你想像的還要短。當然也有可能覺得,這真是一本虎爛的書,這樣都可以當博士。

而現在,有個網站,可以讓你驗證一下,這個科學研究到底在現實生活中,他的實用性到底有多少。

今天的主角是Visible Path,它可以搜尋你的人際網路,和你人際網路中朋友的人際網路,如此一般,建構出從你到你想認識的人之間的人派關係。請看此demo。

恩,看完他的demo影片後,我只覺得好熟悉的演算法,這不就是以前離散數學中所學習的TSP(Traveling Salesman Problem)嗎?也就是找出從一個地方到另外一個地方的最短路徑,套用到人際網路中,原來是一樣的啊!!

不過呢,基本上,要讓這個網頁的功能能夠正常work,還是要你的朋友們也都有使用才可以,不然樣本數不足的話,我想應該會出現很多,這個目的地(人)無法到達的訊息。哈哈
而且,目前這個網頁只有提供一些提出申請的公司使用而已,畢竟對公司拓展業務來說,應該是蠻有用的工具。而一般使用者呢,只有流口水的份啦。Orz

最為成功的10個Web 2.0網頁(目前為止)

It's been almost three years since Tim O'reilly first officially coined the term 'Web 2.0,' and we've come a long way since then. This list looks at the 10 most successful Web 2.0 startups we've seen to date and provides researched information on each of them. The top 3? Surprise! MySpace, YouTube, and Facebook.

read more | digg story

好吧,這又是個關於Web 2.0的故事。
總之呢,讓我們把什麼Web x.0丟開,來看看這些真的不錯的網站,你有使用其中幾個,順便看看國內有沒有類似功能的網站

1. MySpace
社交社群,我覺得比較特別的在於提供創作人可以獨立發行他們創意的地方,進而創造了一些MySpace名人,甚至有些樂團可以因此而發行專輯。

台灣:無名、StreetVoice

2. YouTube
影像分享。自從他經記者報導後,在台灣,各個blog業者,也都開始提供這一類的服務。

台灣:yam天空、Vlog

3. Facebook
社交社群。原本僅用於哈佛學生間的一個交流平台,後來進而擴大至全美的學生社群,目前已對外開放。

4. Wikipedia
線上免費百科全書,所有的資料作者都是跟你我一樣的網民。

5. Bebo
社交社群。

6. Digg
讓你記錄你覺得很讚的網頁,同時跟其他人分享。而這個被分享出來的網頁,會被大家評比,越多人贊同就會排名越高。

台灣:HEMiDEMi

7. Flickr
網路相簿。

台灣:Wretch, Pixnet

8. Netvibes
多功能首頁。它讓你的首頁更多功能,你可以同時看郵件,新聞,就算要用不同的搜尋引擎也不用換網頁。一次滿足你所有的需求,簡單的說,這裡看到的服務,他都可以整合在一起,讓你一個頁面解決。後來的Google Personalized Homepage也是類似產品。

9. Del.icio.us
讓你記錄你覺得很讚的網頁,同時跟其他人分享。而這個被分享出來的網頁,會被大家評比,越多人贊同就會排名越高。
是的,你沒看錯,跟Digg一樣,Digg可以說是從Delicious這邊學習了它的分享機制,進一步增加了評比機制後,推出的。而Delicious之後也從他那邊學回來。

10. Meebo
線上即時通軟體,不管是ICQ, MSN, Yahoo Massenger, Google Talk,他都可以讓你直接在網頁上使用。
辦公室封鎖了及時通,沒問題,來這就OK了!!


台灣的社交社群的話,目前無名、天空都蠻大的,戀愛公寓則很有他自己的特色。

不論這些網站的功能如何,除了wikipedia是無獲利,單純靠人家捐錢的之外,他們有一個共通點,都待價而沽。有的已經賣出去了,有的則是要求更高的價錢。目前最高的成交價是YouTube的1.6billion。台灣的話應該目前是以無名的七億台幣領先吧。

StreetVoice - 讓你的創作直接從網路發聲


StreetVoice這就是他的名字
這是一個可以讓你分享你所催生的創意作品的地方,音樂、影像、設計等,都可以。
我覺得有點myspace的味道。
對國內的非主流創作者來說,可說是福音。
你不但可以將你自己的創作作品放在這裡,創造自己的舞台,吸引你的觀眾;甚至可以在這裡尋找志同道合的工作夥伴。它讓非主流的聲音,有一個互相尋找的地方。縮短了創作者和他們擁簇之間距離。

也許你會擔心版權的問題,不過基本上,這個網頁上的東西都是以Creative Commons簡稱CC授權的,他讓創作者保有所有權,在一定條件下,讓你可以散佈他的作品。所以大可放心。

現在,就可以到這裡來找找Mass Media外的Street Voice。

TechCrunch with SNAP

有在看TechCunch的人不知道有沒有注意到,在他的連結後面多了一個白色的小筐筐。

這是SNAP新增的應用。

SNAP的功能,隨著時間的過去,也越做越多了。
現在有的Search Suggestion(Google suggestion), Image Search, Search Result Rating.等
不過還是這個直接協助在連結上新增預覽圖片的功能最殺。
算是把他的特點發揮出來了。

一些特別的公司團體應該可以去提出申請。
而以下幾個Service的使用者,就直接趕快去申請吧
blogger, WordPress, TypePad, Movable Type
這裡是給blogger使用者看的安裝說明
簡單的說呢,就是把你申請完成後得到的那一串script文字,複製到blogger的範本裡面就好啦。
簡單又方便。
您說是吧。

Six Tips for Efficient Memory Use

Reference Article

Lay out data structures efficiently and resue them when possible

1. Design issue
Plan your memory allocations according to type of memory, size, and lifetime.
Combine allocations of similar lifetimes, so that you can free unused memory as soon as it is no longer needed.
Don’t mix structures of greatly different sizes in the same allocation unless you can be sure that they will be aligned appropriately.

2. Reusability
Reuse structures instead of freeing them and later reallocating memory for other uses.

3. I/O request handling
Drivers often require additional memory while handling I/O requests.
The ways could be
  • Allocate a memory descriptor list (MDL) or internal buffer to use for a specific I/O request
  • Allocate an IRP to send to lower drivers.
The size of these structures varies depending on the request.
If your driver has a technique to limit I/O size or to split up a large I/O request, you could make the buffer a fixed size

4. Optimize for the most frequent operations


Allocate nonpaged pool memory for long-term use at start up.
1. Allocate memory for long-term use in a DriverEntry or AddDevice routine and free the memory as part of handling the device removal request.

2. The driver should not, however, preallocate excessively large blocks of memory (several megabytes, for example)

3. Appropriate memory allocation routines
  • ExAllocatePoolWithTag
  • ExAllocatePoolWithQuotaTag
  • ExAllocatePoolWithTagPriority
  • AllocateCommonBuffer (if the driver's device uses bus-master DMA or a system DMA controller's auto-initialize mode).
4. Use the tagged versions of the pool allocation routines instead of the nontagged versions, this will be helpful at debug and tracking.


Use memory economically.
Nonpaged pool memory is a limited system resource.

1. General Rules:
Avoid calling the memory allocation support routines repeatedly to request allocations of less than PAGE_SIZE.
Bundling structures into a single allocation,if your driver normally uses these related structures together.

2. Exception: (Drivers that use DMA)
If a driver that performs DMA needs several one-page buffers, but the buffers need not be contiguous, it should call AllocateCommonBuffer once for each such buffer.

3. Round the allocation request up to the next page boundary.
ExAllocatePoolWithTag
  • <PAGE_SIZE: allocates the number of bytes requested, they are aligned on an 8-byte boundary.
  • >=PAGE_SIZE: allocates a page-aligned buffer that is an integral multiple of PAGE_SIZE bytes
AllocateCommonBuffer always allocates at least a page of memory. If the driver requests less than an integral multiple of PAGE_SIZE bytes, the remaining bytes on the last page are inaccessible to the driver.


Use lookaside lists.
1. Lookaside lists provide fixed-size, reusable buffers.
2. They are designed for structures that a driver might need to allocate dynamically and in unpredictable numbers.
3. Lookaside lists can be allocated from paged pool or nonpaged pool.
4. The driver defines the layout and contents of the entries in the list to suit its requirements, and the system maintains list status and adjusts the number of available entries according to demand.
  • ExInitialize[N]PagedLookasideList to set up a lookaside list
  • ExAllocateFrom[N]PagedLookasideList to allocate an entry in the list
  • ExFreeTo[N]PagedLookasideList to free an entry in the list. The head of the list must be allocated from nonpaged memory, even if the list entries themselves are in paged memory.

Avoid frequently mapping and unmapping the virtual memory address space
This kind of operations can decrease performance system-wide
Because it can result in frequent flushes of the translation lookaside buffer (TLB), a per-processor cache of virtual-to-physical address translations. Each entry in the TLB contains a page table entry (PTE).
Use direct I/O to avoid this problem.
Internally, the I/O manager avoids this problem for the MDL in Irp->MdlAddress . The first time a kernel-mode component calls MmGetSystemAddressForMdlSafe , the I/O manager stores the system address in the MDL along with the corresponding physical address. When the IRP returns to the I/O manager after completion,, the I/O manager unmaps the MDL. Thus, the I/O manager requires only a single mapping (and a single virtual to physical address translation) for each I/O request.

Test and verify
Use Driver Verifier (verifier.exe), GFlags (gflags.exe), and PoolMon (poolmon.exe) to track, test, and verify memory allocation issues.
Driver verifier can allocate memory from a special pool and monitor the driver’s access to the allocated memory. It can detect attempts to access memory outside the allocated range or after the memory has been freed. In addition, it checks for memory leaks—memory that has been allocated but is no longer being used and is never freed. Verifier also gathers statistics on the number of memory allocations requested from the special pool and whether they succeeded or failed.
GFlags works together with Driver Verifier. Using GFlags, you can configure the Special Memory Pool option of Driver Verifier or designate the special pool for use in individual memory allocations.
PoolMon gathers and displays a variety of data about memory allocation, sorted by the pool tags assigned during allocation.

Visio online - Gliffy

從Is Google still The Ajax King?中,看到了些不錯用的Web Tool。

他在評比中分成了Calendars, Emails, Info Managers, Spreadsheets, WebtopsWord Processors,都是以Ajax寫成的網頁工具。

大都仍是Google稱王,除了Webtop跟Word processors之外。

Webtop是還沒有推出;Word則是屈居第二。

假如你還沒試過這些東西的話,可以來試用看看,很不錯用的,只要有電腦跟網路,任何地方的電腦都可以用的像是自家的一樣。

再這裡介紹一個也是不錯的Web Tool,可以說是網頁版的Visio。

不過它是用Flash寫成的就是了,他就是Gliffy




操作畫面如下


他最後完成的東西,可以用SVG, JPEG, PNG這三種格式輸出。

算是一個蠻不錯的選擇,可以參考玩看看。

如何在foobar2000 0.9.x下使用freedb2得到中文tag

在foobar2000來到0.9.x以後,freedb也升級到了freedb2。
最主要的差別在於,他對於所有抓下來的tag都是很理想化的認為是unicode編碼的,這使的過去一些不是這樣編碼的資料在我們抓下來的時候都會成為亂碼,就像下面的圖片一樣。

這實在等於讓freedb自廢武功,對於生活在非英語系的我們來說。
但是,今天,終於找到了解決方法了!!!
就在這裡的討論中,似乎剛好foobar_masstag_addons這個component的作者,跑來宣傳他的作品了 XD 哈哈。
而也如他所說,真的可以用呢。

0. 前置作業
首先把Masstagger和foobar_masstag_addon這兩個DLL抓下來放到foobar安裝目錄下的components目錄中去。
另外,這個component也需要VC8 runtime library或是.net framework 2.0以上(從windows update上裝)才能跑。

以上都準備好了之後,你應該可以看到這樣的選單


1. 進入作戰
接下來,就把用那些看起來是亂碼的東西update到你的tag裡去吧,是的,你沒有看錯,不要懷疑。
結果大概就會看起來變成這樣吧。


2. 然後我們就把masstager打開吧


3. 接著在跳出的視窗選擇"ADD"


4. 然後再出現的下拉選單中,選擇"Addon:Codepage conversion"


5. 然後設定"Current CP:"為28591 (ISO 8859-1 Latin I),"Target CP:"為950 (Big5)


6. 最後就選擇就下角的"Run",應該就可以看到滿意的結果囉。


假如你的專輯是日文或是簡體中文等其他的語系,應該只要把"Target CP:"設成正確的語系就可以了。
像是日文 - 932 (Shift JIS),簡體中文 - 936 (GBK)等,可以自己試看看。