Rails三兩事 A website introduce you ruby&rails and technology news.

16Mar/090

垂直搜尋領域與Kosmix,Daymix.

不可否認,Google是全世界最大的搜尋引擎.
但你是否有過越找越遠,或找了半天也找不著的經驗呢?
而且Google比較針對文字及關鍵字的搜尋,若非輸入正確的關鍵字,有時候只是越找越遠.

為此,垂直領域的搜尋引擎相繼而生,不管是像資訊新聞,如這裡這裡.
又或是地產如我-1, 或健康如我-2,又或旅遊如我-3

而許多時候,要找的資料可能不只一樣,你想看看WIKI怎麼說,又想看GOOGLE上有什麼,也想看看有誰寫過類似的文章,如果有些即時的反應是更好.
那麼你是得像這位仁兄用一堆的螢幕來一次顯示所有資料呢?

Lots of Screen

Lots of Screen

為此,廣泛性的整合如之前介紹的 DayMix 及 比較眾所皆知的 Kosmix.

而這些,則分別顯示了另一種較廣度或專業的搜尋引擎.

其實KOSMIX這個搜尋引擎和之前介紹DAYMIX非常相像.
雖然Kosmix也整齊,但就有一種不是太喜歡的感覺,也許是配色或是版面的配置.
但我還是比較喜歡Daymix的乾淨清爽.

無論如何,讓我們看看Kosmix的一些資料 :
Kosmix創始人 : Time Warner, Jeff Bezos
技術支持 : Anand Rajaraman , Venky Harinarayan (the people behind Junglee)
創始理念 : It's not just text, it's not just facts, it's more like exploring than finding. You're not searching, you're browsing.
商業模式 : 似乎是和Google一樣,不過現在還在跑Google Ads.... ~"~
初次展示 : Feb 6 第一週 in Phoenix.

=種子資金 $700K - 由 Amazon's chief executive, Jeff Bezos
=從Lightspeed Venture Partners 及Cambrian募資$7.4M.
=$10 M DECEMBER 11TH, 2007
.....直至最近
=$20,000,000 由時代華納牽頭

這Kosmix的消息還算多,據新聞. Kosmix已融資達5500萬美元. 這可真是嚇人的數字.

同樣的產品,在同樣的地方找資料,Daymix的資訊就少得可憐,我想使用者也許也少很多才是.
這是DAYMIX的公司 TSAVO的一些資料 :
Location: santa monica, California, United States
Founded: August, 2008
Tsavo, founded in August 2008 by former Userplane execs, is developing relevancy technology and acquiring a number of third party content and advertising sites. more...

不過兩家的目標其實有點不相同,Kosmix是技術.
而Tsavo的創始人Mike Jone認為,他們是一間媒體公司.

這也是為什麼畫面比Kosmix來的美觀..

=花點時間,你可以閱讀更多
Kosmix on TechCrunch
Daymix on TechCrunch

12Mar/090

一生一次的婚禮可不能兒戲

結婚,求婚對某些人來說可能不是第一次,但對更多人來說,它是一生一次.
如果這個唯一的一次即將來臨,不好好策劃又怎麼對得起自己呢?

Wedding

Wedding


WeddingBook 是一個結婚搜索網站,它號稱具有65000筆資料.
舉凡 運輸, 花束, 承辦酒店, 禮服, 攝影紀錄, BAND.... 所有"正常"結婚所需要用到的,幾乎都可以在上面找的到.
玩一下,可以發現每個項目都很細. 除了可以選擇較近的商家,還可針對個人需求作篩選.
比如你想要有Band, 就可以指定要什麼類型的音樂(還真是包羅萬像), 還可以指定演出人數.
而你也可以對每個商家做評分和FEEDBACK.
預算不足? 沒關係,輸入價格區間就自動幫你搜尋合適的.

我順手註冊了個帳號,填寫基本資料後, 他會跟你說, 你沒有辦法完成所有事,請你的爸媽,兄弟姊妹來幫忙.
一般的網站如果註冊完後要求輸入幫忙宣傳之類的,使用者通常會直接跳過.
但是結婚這種事,的而且確不是一個人處理的來,所以這一個步驟在這裡是非常適宜的.
不過我當然沒有填.

整個操作後台簡單明瞭,除了有類似Dashboard讓你一目瞭然,它也提供Widget讓你放在你的網頁上(如果你有).
你也可以將整個過程都紀錄,再將它公開給你的朋友, 比如Photo,地點時間, 好讓別人給你的FEED.

wedding platform

wedding platform

這真的是一個快速方便的網站,搜尋了一下,沒看到台灣類似的網站.
可惜它只在美國. 不然等哪天結婚, 真的會考慮使用它.

12Mar/090

另一種SearchEngine,一次搜全部

正統的Search Engine的龍頭 : Google大家都知道,而在大陸就是Baidu無庸置疑了.
老二和老三大概就是MSN, YAHOO, Aol 幾個互搶.
再來呢??

如果你是個網路重度使用者,也許你會回答 Ask, 之後呢? 恐怕沒幾個叫的出名字.
而單一的Search Engine可就多了,有包括圖片,美食,機票,訂位,商品....etc

想想.. 搜尋之後,找到結果, 還能幹麻?

最近一家新的搜尋引擎公司獲得VC投資300萬美元,該公司將呈現的結果以"雜誌期刊"的方式呈現.
雜誌期刊是改變了呈現的方式,但在我的想法,也許現階段所有的搜尋引擎都可以考慮做一件事.就是跨語言搜尋.
翻譯的功能已經不知道有多少,像Google自己就有.
如果能把使用者的輸入先Translate,然後將可能的搜尋結果列在下面,
上面還是以原本語言為主,那麼應該會是不錯的選擇.
比如輸入"車",就能找到 車 以及 Car 的相關網頁.

不過今天要介紹的是比較特別的Search Engine :

DayMix 一次搜尋全部

DayMix Tsavo Media 所研發.
DayMix是一個很特別的搜尋引擎,隨便輸入一個關鍵字試試.
除了自己的搜尋結果之外它能幫你去 Wiki, Flicker, Youtube, Google, Google Blog, Twitter, Delicious 等搜尋出結果.
在一頁內呈現給你,讓你不用再跑各大網站慢慢尋找,並在下方列出一些可能的搜尋詞.
重點是,很漂亮. 個人很喜歡這樣的排版,很美觀.

他也提供Widget讓你插入在你的Blog,而這個Widget直接就是搜尋的結果, 用看的比較快 :

旗下的幾個主題Blog如
Twirlit 偏向女人興趣
Manolith 偏向男人興趣
Kidglue 偏向家庭及親子
Nibbledish 偏向美食,食譜.
都充分的運用了DayMix Search Engine 的功能,做了相當好的展示.
我比較好奇的是,這些文章的來源都是專門作家? 還是完全開放.
如果是完全開放,以Nibbledish來說,每個照片都美輪美奐,難不成每個人都有D200+科班出身.....

Nibbledish算是與前三個比較不同的,除了傳統的Blog,它還能讓使用者投票,追蹤,轉帖.
下面展示了 轉帖的功能(看起來很好吃呢) :

其實像DayMix這一類利用其他網站所產生的網站很多(比如一個專門買AMAZON上的購物搜尋引擎..etc).
但DayMix更特別,更用心. 資料齊全但版面很乾淨,並有許多附加應用,讓它不單只是一個"整合搜尋引擎".
就讓我們期待DayMix的下一步以及未來.

11Mar/090

把Rss當報紙讀

自從Rss出現之後,RSS閱讀器已經多到不可數.
除了像Google Reader線上閱讀之外.
也有一些線下軟體,如eSobi, 以及Sharpreader , RssOwl.

當然,除了外文版,也有大陸版 : 抓蝦

不過成堆的RSS READER實在是了無新意,而抓蝦網據說也快倒了.
為此,抓蝦網日前說明,他們正在蘊釀新的APP及功能.

而在幾天前,一個新網站以新聞閱讀的方式將RSS閱讀習慣改變了.
MeeHive

MeeHive Keywords

MeeHive Keywords


你可以透過選擇喜歡的大類,或是自己輸入關鍵詞,讓MeeHive幫你抓取.

MeeHive RSS

MeeHive RSS


當然,如果你有指定的Rss想放進來,只需要輸入RSS網址就可以了.

MeeHive Preview

MeeHive Preview


訂閱之後大概就是長這樣子.

喜歡嗎? 快去弄一個自己的報紙吧. Go MeeHive!

6Mar/090

Ruby的Metaprogramming

對一個程式新手來說,什麼是Metaprogramming? 一定非常疑惑.
而對Metaprogramming而言,Ruby是一個非常好的選擇.
但,但底什麼是Metaprogramming?
查字典,你查不到Metaprogramming. 於是將Meta和Programming分開查.
你查到了類似 "超越...之前" 和 "程式語言",但這看的懂才怪.
於是你又上wiki,英文看不懂看中文, 中文寫"元編程". 靠,這不是對岸的用詞嗎?
搞老半天你還是不懂,你想哭,想放棄了.

其實Meta programming就是在 程式碼中製造(產生)程式碼, 或說 用 code寫code.
相信大家都聽過物件導向,物件導向提倡的就是 模組化,繼承,等功能.
這些功能都只為了幾個目地 : 讓東西可以重覆使用. (個人認為還有好管理,因為將功能模組化了)
這樣一來,你便不需要一而再再而三的重覆編寫已有的功能.

但人們是懶惰的,於是讓"程式碼自動產生",連寫都不想寫的想法產生,這就是Meta programming.

以Ruby而言,簡單的範例如下 :

class Dog
  attr :leg,true
end
Tom=Dog.new
Tom.leg    #=>nil
Tom.leg=4 #=>4
Tom.leg    #=>4

讓我們先再看另一個範例

class Dog
end

%w(Won Wonwon Au Uuuu).each do |name|
  Dog.class_eval <<-HERE
    def #{name}()
      p 'Dog bark:  #{name.upcase}!'
    end
  HERE
end

Tom = Dog.new
Tom.Won
Tom.Wonwon
Tom.Au
Tom.Uuuu

第二個範例的顯示是Dog bark: WON! ....以此類推.

第一二個範例都顯示了只以簡單的幾行就建立出一些重覆性的函式.
第一個範例attr是內建的,當你attr,後面加true屬性,它會為你自動建立一個getter以及一個setter.
第二個範例則是以字串陣列的形式,將名稱傳入HERE文件,並透過eval將它實體化.

兩個範例應該很快的顯示了Ruby為何被稱為適合Metaprogramming了.

--延伸閱讀
關於Meta programming
Digging into Ruby Symbols
Seeing Metaclasses Clearly
An Exercise in Metaprogramming with Ruby - ' Metaprogramming Intro '

關於Eval
Evaluation Options in Ruby

6Mar/091

關於RUBY :Symbol的定義

對於初學RUBY的人,不管是新手或有程式底子,也許多少都會對Symbol的功用感到疑惑吧,而我也是那麼一個.
翻了很多文章,在網路上的高手解釋之後,我多少大概瞭解SYMBOL的功用.
打開command line輸入ri Symbol看看它的解釋.

Symbol objects represent names and some strings inside the Ruby interpreter. They are generated using the :name and :"string" literals syntax, and by the various to_sym methods. The same Symbol object will be created for a given name or string for the duration of a program’s execution, regardless of the context or meaning of that name. Thus if Fred is a constant in one context, a method in another, and a class in a third, the Symbol :Fred will be the same object in all three contexts.

這段解釋定義了Symbol為一個呈現"name"與"string"的object.

再看看ri所提供的Symbol範例 :

module One
  class Fred
  end
  $f1=:Fred
end
module Two
  Fred=1
  $f2=:Fred
end

def Fred()
end

$f3=:Fred
$f1.id #=>2514190
$f2.id #=>2514190
$f3.id #=>2514190

以上面這段程式看起來,不管f1,f2,f3都指向同一個物件.
這解釋了第一個特性,每個SYMBOL都只具一個實體,"唯一性"

再來,打開irb輸入下面代碼,讓我們看看它與字串的關係.

a= :str
b= "str"
a[0]        #=> undefined method [] for :str:Symbol
b[0]        #=> 115
a.to_s[0] #=> 115
a.size      #=> undefined method size for :str:Symbol

由上面的範例,我們可以知道Symbol跟String是不一樣的.
儘管我們可以將它to_s轉為String後再進行修改,但我們無法對Symbol直接修改.
(不過.... 在Ruby 1.9已經將Symbol加入了各種String的功能,如size,length甚至是Regexp, =~ ,所以Symbol和String是越來越像了.)

那麼,Symbol到底是幹麻的?
其實大多數人拿它來當Hash的key,或是name, identifier.
也許因為效能比較好,它是唯一性的. 再加上你不管到哪都是指向同一個物件,有點類似c指標.
而且1.9以後可以直接對Symbol作操作,更提高了Symbol的功能.
Symbol的用法,如同之前所說,如果你還有其他用法或見解,請一定要告訴我,大家一起進步.

--延伸閱讀
Digging into Ruby Symbols
Yet Another Blog about Ruby Symbols
Symbols, Strings, Methods, and Variables
Symbols Are Not Immutable Strings

5Mar/090

About

這個網站寫有關Ruby On Rails及些技術的東西.