Time of Update: 2017-01-18
Proc對象Proc是由塊轉換來的對象。建立一個Proc共有四種方法,分別是:範例程式碼# 法一inc = Proc.new { | x | x + 1}inc.call(2) #=> 3# 法二inc = lambda {| x | x + 1 }inc.call(2) #=> 3# 法三inc = ->(x) { x + 1}inc.call(2) #=> 3# 法四inc = proc {|x| x + 1 }inc.call(2) #=>
Time of Update: 2017-01-18
在一個檔案裡有很多以下內容:<p style="display:none">此題選D。............</p>而本人要實現的功能是將它替換成:<div style="display:none"
Time of Update: 2017-01-18
安裝Ruby與升級RubyGems提示:在Ubuntu環境下安裝過程中,如果提示許可權問題,可以使用sudo make和sudo make install。1.Ruby安裝wget http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p125.tar.gz \&& tar -xzvf ruby-1.9.3-p125.tar.gz \&& cd ruby-1.9.3-p125 \&& ./configure
Time of Update: 2017-01-18
熟練使用RubyGemsRubyGems是Ruby的外掛程式管理系統,可以輕鬆安裝及管理Ruby函式庫。可以在RubyGems上找到所有開源套件。###常見指令 gem -v 查看RubyGems的版本 gem update --system 升級RubyGems的版本 gem install gem_name 安裝某個外掛程式 gem install -v x.x.x gem_name 安裝指定版本的外掛程式 gem list 列出安裝的套件 gem update
Time of Update: 2017-01-18
當使用rails new appname產生Rails應用後,我們可以通過tree來查看Rails應用的目錄結構:目錄結構應用程式目錄下會有app、config、db、doc、lib、log、public、script、test、tmp和vendor等11個目錄和config.ru、Gemfile、Gemfile.lock、Rakefile、README.rdoc等5個檔案。目錄在稍後會一一解釋,先看一下app目錄下的檔案:config.ru
Time of Update: 2017-01-18
Ruby大部分的內建類型都和其它的程式設計語言很相似。主要有strings,integers,floats,arrays等等。然而,只有指令碼語言,如Ruby,Perl,和awk等提供了內建運算式類型的支援。Regex儘管比較隱蔽,但卻是一個很強大的文本處理工具。Regex是使用指定的模式比對字元串的一種簡單的方法。在Ruby中,建立Regex的典型方式是把模式寫在兩個斜線之間/pattern/。畢竟,Ruby就是Ruby,Regex也是對象,也能像對象般操作。例如,你可以使用下面的Regex寫
Time of Update: 2017-01-18
instance_eval方法這個BasicObject#instance_eval有點類似JS中的bind方法,不同的時,bind是將this傳入到對象中,而instance_eval則是將代碼塊(上下文探針Context Probe)傳入到指定的對象中,一個是傳對象,一個是傳執行體。通過這種方式就可以在instance_eval中的代碼塊裡訪問到調用者對象中的變數。範例程式碼class MyClass def initialize @v = 1 endendobj =
Time of Update: 2017-01-18
範圍Ruby中不具備嵌套範圍(即在內部範圍,可以看到外部範圍的)的特點,它的範圍是截然分開的,一旦進入一個新的範圍,原先的綁定會被替換為一組新的綁定。程式會在三個地方關閉前一個範圍,同時開啟一個新的範圍,它們是: 類定義class 模組定義 module 方法定義
Time of Update: 2017-01-18
開啟類可以重新開啟已經存在的類並對之進行動態修改,即使像String或者Array這樣標準庫的類也不例外。這種行為方式稱之為開啟類(open class)猴子補丁如果你粗心地為某個類添加了新功能,同時覆蓋了類原來的功能,進而影響到其他部分的代碼,這樣的patch稱之為猴子補丁(Monkeypatch)類與模組Ruby的class關鍵字更像是一個範圍操作符,而不是型別宣告語句。class關鍵字的核心任務是把你帶到類的上下文中,讓你可以在裡面定義方法。每個類都是一個模組,類就是帶有三個方法(new,
Time of Update: 2017-01-18
Ruby解析JSONRuby解析Json例子:json = '["a", "B", "C"]'puts "Unsafe #{unsafe_json(json).inspect}" #輸出Unsafe ["a", "B", "C"] Ruby解析Json把上面的json字串解析成Array。這樣的方法並不安全,比如:json = 'puts "Danger Will Robinson"' puts "Unsafe #{unsafe_json(json).inspect}" 又該輸出什麼呢?很遺憾,
Time of Update: 2017-01-18
一、基礎文法1.直接以字串形式擷取nokogiri對象:html_doc = Nokogiri::HTML("<html><body><h1>Mr. Belvedere Fan Club</h1></body></html>")xml_doc =
Time of Update: 2017-01-18
以樹方式使用 REXMLREXML 的目的是 正好夠用。在最大程度上,它能很好地完成任務。 實際上, REXML 支援兩種不同樣式的 XML 處理 ― “樹”和“流”。 第一種樣式是 DOM 所嘗試要做的更簡單的版本;第二種樣式是 SAX 所嘗試要做的更簡單的版本。 讓我們先研究樹樣式。假設我們要提取上一個樣本中的同一個地址簿文檔。 下面的樣本來自我所建立的經修改的 eval.rb ; 標準 eval.rb (連結到 Ruby 教程)可以根據對複雜物件的運算式求值顯示非常長的計算結果 ― 我的
Time of Update: 2017-01-18
REXML 是由 Sean Russell 編寫的庫。它不是 Ruby 的唯一 XML 庫,但它是很受歡迎的一個,並且是用純 Ruby 編寫( NQXML 也是用 Ruby 編寫的, 但 XMLParser 封裝了用 C 編寫的 Jade 庫)。 在他的 REXML 概述中,Russell 評論道:我有這樣的問題:我不喜歡令人困惑的 API。有幾種用於 Java 實現的 XML 解析器 API。其中大多數都遵循 DOM 或 SAX,並且在基本原理上與不斷出現的眾多 Java API
Time of Update: 2017-01-18
REXML 是一個完全用ruby寫的processor ,他有多種api,其中兩個經典的api是通過DOM-like 和SAX-like 來進行區分的。第一種是將整個檔案讀進記憶體,然後儲存為一個分層的形式(也就是一棵樹了).而第二種是"parse as you go",當你的檔案很大,並且記憶體受到限制的時候,比較適合用這種。 rexml具有如下特點: 100%用ruby編寫 可以用來解析SAX和DOM 輕量,不足2000行代碼 提供完整的API支援
Time of Update: 2017-01-18
前段時間看到很多人寫的下妹子指令碼,自己也寫一個module CommonHelper require 'nokogiri' require 'open-uri' def down_load_xmz site_url = "http://www.xxx.com" for index_page in 1..141 doc_html = Nokogiri::HTML(open(site_url+'/share/comment-page-'+index_page.to_s))
Time of Update: 2017-01-18
代理模式Proxy代理模式是一種結構型設計模式,主要解決的問題是:在直接存取對象時帶來的問題,比如說:要訪問的對象在遠端機器上。在物件導向系統中,有些對象由於某些原因(比如對象建立開銷很大,或者某些操作需要安全控制,或者需要進程外的訪問),直接存取會給使用者或者系統結構帶來很多麻煩,我們可以在訪問此對象時加上一個對此對象的訪問層。如下圖:
Time of Update: 2017-01-18
觀察者模式(有時又被稱為發布/訂閱模式)是軟體設計模式的一種。在此種模式中,一個目標對象管理所有相依於它的觀察者對象,並且在它本身的狀態改變時主動發出通知。這通常透過呼叫各觀察者所提供的方法來實現。實現觀察者模式的時候要注意,觀察者和被觀察對象之間的互動關係不能體現成類之間的直接調用,否則就將使觀察者和被觀察對象之間緊密的耦合起來,從根本上違反物件導向的設計的原則。無論是觀察者“觀察”觀察對象,還是被觀察者將自己的改變“通知”觀察者,都不應該直接調用。通俗點說就是A對象(被觀察)通知另一個(一些
Time of Update: 2017-01-18
一般來說,觀察者模式的定義應該是這樣的:building a clean interface between the source of news that some object has changed and the consumers of that news。觀察者模式在訊息的生產者和消費者之間建立了clean
Time of Update: 2017-01-18
命令模式是對象行為型使用率比較高的設計模式,別名:Action(動作),Transaction(事務)意圖: 將一個請求封裝為一個對象,從而使你可對不同的請求進行參數化;對請求排隊或記錄請求日誌,以及支援可取消的操作 這裡所謂的“不同的請求”也既意味著請求可能發生的變化,是一個可能擴充的功能點。動機: 方便擴充結構: 協作說明: 參與角色: Command 聲明一個介面以用來實現某個操作。
Time of Update: 2017-01-18
正則匹配說起Ruby當然要提起它的Regex機制,Regex作為一個強大的匹配語言已經越來越多的使用到不同的領域當中,從字串驗證,匹配,到網頁抽取等。雖然有些人詬病與Regex的匹配效率,但是考慮到正則的強大匹配能力也就無所謂了。說起RubyRegex不就不能不說起Ruby的=~和match兩種匹配方式,我們還是用執行個體來說明一下這兩種匹配方式的區別吧。先來說一說=~的用法吧:message="afhadhffkdf414j" regex=/[a-z](\d{3})[a-z]/