ÓÃrubyдµÄwebץȡС¹¤¾ß
×î½üÓÉÓÚѧϰʹÓÃlinuxϵÄC¿ª·¢£¬ÐèÒª²éѯLinux Cº¯Êý²Î¿¼£¬¾Í¾³£ÉÏhttp://man.chinaunix.net/develop/c&c++/linux_c/default.htm²é¿´£¬ÃèÊöµÃ±È½ÏÏêϸ¶øÇÒ»¹ÓÐÀý×Ó¡£
ÍøÉÏ»¹ÓÐÐí¶à¸÷ÖÖ¼¼ÊõµÄÍøÒ³¸ñʽµÄ²Î¿¼²ÄÁ϶¼·Ç³£Ç¿´ó£¬¿ÉϧºÜ¶àʱºò¶¼Ã»ÓÐÍø¡£ÓÚÊǾÍÏëд¸ö½Å±¾¿ÉÒÔ°ÑÎĵµÏÂÔØ£¬Ïñandroid¿ª·¢ÕßÎĵµÒ»ÑùŪµ½±¾µØÀ´£¬ÓÃÆðÀ´¾Í·½±ã¶àÁË£¬ÒªÊÇÓÃCHM¹¤¾ß´ò³Échm¸ñʽ¾Í¸üºÃÁË¡£
ÓÚÊǾͶ¯ÊÖÓÃrubyдÁËÕâô¸ö½Å±¾£¬°ÑÍøÒ³¶ÁÈ¡ÏÂÀ´£¬±£´æµ½±¾µØ£¬Í¬Ê±ÏÂÔØÍøÒ³ÖеÄÑùʽ¡¢JSÎļþÒÔ¼°Í¼Æ¬µÈÎļþ£¬²¢Ìæ»»ÏàÓ¦µÄÁ´½Ó£¬¾¡Á¿±£³ÖÍøÒ³µÄЧ¹û¡£Õû¸ö³ÌÐò´óÔ¼300ÐУ¬³¢ÊÔµØ×¥È¡Á˼¸¸öÍøÕ¾¶¼Í¦ºÃ£¬±£ÁôÁËÑùʽ¡¢³¬Á´½ÓÉõÖÁ²¿·ÖµÄJS¡£³ý´ËÖ®Í⣬Ëü»¹ÄÜÏÞÖÆÏÂÔØÎļþµÄÀàÐͺʹóС£¬¿ÉÒÔ……
µ±È»,bug»¹ºÜ¶à£¬¶øÇÒÍøÒ³µÄHTMLÄÚÈݹýÓÚÁé»îºÍ¸´ÔÓ£¬ºÜ¶à¶«Î÷¸ãÏÂÀ´¿ÉÄܾÍÃæÄ¿È«·ÇÁË£¬ÕæÕýҪдһ¸öºÃµÄparser¹ûÈ»ÊÇÏ൱¸´ÔÓ- -!
ÏÂÃæÊÇ´úÂëµÄ×¢ÊÍ£¬ÍêÕûÎļþ¿ÉÔÚ´ËÏÂÔØ¡£
#¶¨ÒåÒ»¸öÄ£¿é,´òÓ¡ÈÕÖ¾
module Log
def Log.i(msg)
print "[INFO]#{msg}\n"
end
def Log.e(msg)
print "[ERROR]#{msg}\n"
end
end
#¶¨ÒåÒ»¸öÀ࣬ÓÃÓÚ·â×°¼ÓÈëµ½¶ÓÁÐÖеÄurl£¬°üº¬ÁËurlµÄÁ´½ÓÉî¶ÈºÍ´ý±£´æµÄÎļþÃûµÄÐÅÏ¢
class UrlObj
attr_accessor :url,:depth,:save_name
def initialize(url,depth,save_name)
@url=url
@save_name=save_name
@depth=depth
end
def info#½âÎöµÃµ½urlÖеÄÐÅÏ¢
return @info if @info
begin
@info=URI.parse(@url)
return @info
rescue Exception=>e
Log.e e
return nil
end
end
def domain#»ñÈ¡urlÖеÄÓòÃû
if @domain
return @domain
elsif !info
Log.e("#{@url}'s host is nil")
return nil
elsif !info.host
Log.e("#{@url}'s host is nil")
return nil
else
return info.host[/\w+\.\w+$/]
end
end
end
½ÓÏÂÀ´ÊÇ×îÖ÷ÒªµÄÒ»ÀàWebSnatcher:
class WebSnatcher
THREAD_SLEEP_TIME=0.5#¶¨Òå³£Á¿£¬Ïß³Ì˯Ãßʱ¼ä
HTTP_RETRY_TIMES=3#ÉèÖôò¿ªÁ´½ÓµÄÖØÊÔ´ÎÊý
#³õʼ»¯Àà±äÁ¿ºÍ¸÷ÖÖÉèÖòÎÊý
def initialize(opt={})
@url_to_download=[]#´ýÏÂÔØµÄurlÈÝÆ÷
@url_to_download_count=0#´ýÏÂÔØµÄurlÊýÁ¿
Ïà¹ØÎĵµ£º
rubyÖÐ×Ô´øÊµÏÖ¹Û²ìÕßģʽµÄÀàobserver¡£¿ÉÒÔÀûÓÃËüÀ´ÊµÏÖ¹Û²ìÕßģʽ¡£
´úÂëÀý×Ó£º
# -*- coding: GB2312 -*-
require 'observer'
# ¹Û²ìÕßģʽ(ruby)µÄʹÓÃÀý×Ó
# ±»¹Û²ìÕßP
class PObservable
include Observable
end
# ¹Û²ìÕßA
class AObserver
# update·½·¨ÃûÊDZØÐëµÄÒªÓеÄ
def update(arg)
puts "AO ......
ÈýÕßÖ®¼äÇø±ð²¢²»ÏñÄãÏëµÄÄÇôÄÑ£¬Ò²²»»áÏñÓÐЩÎÄÕÂдµÄÄÇô³¤¡£Í¦¼òµ¥µÄ¡£
Ïà֮ͬ´¦£ºÈýÕß¾ùÔÚkernelÖж¨ÒåµÄ£¬¾ùº¬Óаüº¬½øÄ³ÎïÖ®Òâ¡£
²»Í¬Ö®´¦£º
1¡¢requre,loadÓÃÓÚÎļþ£¬Èç.rbµÈµÈ½áβµÄÎļþ¡£
2¡¢includeÔòÓÃÓÚ°üº¬Ò»¸öÎļþ(.rbµÈ½áβµÄÎļþ)ÖеÄÄ£¿é¡£
3¡¢requreÒ»°ãÇé¿öÏÂÓÃÓÚ¼ÓÔØ¿âÎļþ£¬¶øloadÔòÓÃÓÚ¼ÓÔØÅ ......
ÔÎÄÁ¬½Ó£º http://hi.baidu.com/%B7%CF%B2%C5%CB%FB%B8%E7/blog/item/09c19411244152daf7039ec4.html
ͨ¹ýÃüÁîÐв鿴ruby°æ±¾ÐÅÏ¢£º
ruby -v
ÃüÁîÐÐÔËÐгÌÐò£º
·½·¨1.
ruby -e 'print "hello ruby"'
-e ±íʾ½«ºóÃæµÄÒ»ÐÐ×÷Ϊruby³ÌÐò
print ÊÇrubyµÄÒ»¸öÄÚÖú¯Êý
·½·¨2.½»»¥±àÒë»·¾³
irb £¨ÃüÁîÐÐÊäÈëºó£¬ ......
ÎÄÕÂת×Ô http://www.ej38.com/showinfo/Ruby-140367.html
¹ý³ÌÈçÏ£º
1¡¢rubyÏÂÔØÒ»¼ü°²×°£º
http://rubyforge.org/frs/download.php/29263/ruby186-26.exe
ruby -v ÏÔʾ°æ±¾£¬°²×°³É¹¦
2¡¢ÏÂÔØrubygems°²×°£º
http://rubyforge.org/frs/download.php/60719/rubygems-1.3.5.zip
½âѹ£¬ruby setup.rb
g ......
To get it done is not easy. I spent a whole day to figure out the various compatibility issues along the way out.
Now there still might be potential issues, but it works by my rough test.
Step 1: Install Apache Cassandra
You may know that the Ruby gem cassandra will do it for you.
  ......