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]/
Time of Update: 2017-01-18
時間對象. Time.now返回目前時間.1、Time.atTime.at(time[, usec])返回time所指時間的Time對象. time可以是Time對象,也可以是表示自起算時間以來的秒數的整數或浮點數.若浮點精度不夠時,可以使用usec. 它將返回time +(usec/1000000)所表示的時間. 此時,time和usec都必需是整數.產生的Time對象將使用地方時的時區.2、Time.gm、Time.utcTime.gm(year[, mon[, day[, hour[,
Time of Update: 2017-01-18
max方法b=[1,3,55,777,2,4,6,8,0]對於數值型的資料,max會得到數組的最大值,min得到數組的最小值b.max => 777b.min => 0而對於字串型數組比較大小沒有實際意義,ruby中給出的例子是# enum.max -> obj# enum.max { |a, b| block } -> obj#a = %w(albatross dog horse)#a.max => "horse"# a.max
Time of Update: 2017-01-18
1. 建立HTTP串連(通過GET方式發送請求參數)require "open-uri" #如果有GET請求參數直接寫在URI地址中 uri = 'http://uri' html_response = nil open(uri) do |http| html_response = http.read end puts html_response require "open-uri" #如果有GET請求參數直接寫在URI地址中 uri = 'http://uri'
Time of Update: 2017-01-18
Rake簡介 Rake的意思是Ruby Make,一個用ruby開發的代碼構建工具.但是,為什麼Ruby需要Rake? 按理說Ruby代碼無需編譯,應該不需要Rake才對呀?原來,Rake另有妙用,即把Rake當做一個任務管理工具來使用...這樣做有兩個好處:1.以任務的方式建立和運行指令碼
Time of Update: 2017-01-18
何為面板模式? 面板模式為子系統中一組不同的介面提供統一的介面。外觀定義了上層介面,通過降低複雜度和隱藏子系統間的通訊以及依存關係,讓子系統更加便於使用。
Time of Update: 2017-01-18
定義:也叫合成模式,或者部分-整體模式,主要是用來描述部分與整體的關係,定義,將對象組合成樹形結構以表示“部分-整體”的階層,使得使用者對單個對象和組合對象的使用具有一致性。類圖:角色說明:Componnent抽象構件角色:定義參加組合對象的共有方法和屬性,可以定義一些預設的行為或屬性。Leaf葉子構件:葉子物件,其下再也沒有其他的分支,也就是遍曆的最小單位。Composite樹枝構件:樹枝對象,它的作用是組合樹枝節點和葉子節點形成一個樹形結構。執行個體:聽說你們公司最近新推出了一款電子書閱讀應
Time of Update: 2017-01-18
執行個體一今天你還是像往常一樣來上班,一如既往地開始了你的編程工作。專案經理告訴你,今天想在伺服器端增加一個新功能,希望寫一個方法,能對Book對象進行處理,將Book對象的所有欄位以XML格式進行封裝,這樣以後可以方便與用戶端進行互動。並且在封裝開始前和結束後要列印日誌,這樣方便調試和問題定位。沒問題!你覺得這個功能簡直是小菜一碟,非常自信地開始寫起代碼。Book對象代碼如下:class Book attr_accessor :book_name, :pages, :price,
Time of Update: 2017-01-18
今天你的leader興緻沖沖地找到你,希望你可以幫他一個小忙,他現在急著要去開會。要幫什麼忙呢?你很好奇。他對你說,當前你們項目的資料庫中有一張使用者資訊表,裡面存放了很使用者的資料,現在需要完成一個選擇性查詢使用者資訊的功能。他說會傳遞給你一個包含許多使用者名稱的數組,你需要根據這些使用者名稱把他們相應的資料都給查出來。這個功能很簡單的嘛,你爽快地答應了。由於你們項目使用的是MySQL資料庫,你很快地寫出了如下代碼:require 'mysql' class QueryUtil def
Time of Update: 2017-01-18
概述 若你從事過物件導向開發,實現給一個類或對象增加行為,使用繼承機制,這是所有物件導向語言的一 個基本特性。如果已經存在的一個類缺少某些方法,或者須要給方法添加更多的功能(魅力),你也許會僅僅繼承這個類來產生一個新類—這建立在額外的代碼上。
Time of Update: 2017-01-18
先來複習一下設計模式的基本概念:定義將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。建造者隱藏了該產品是如何組裝的,所以若需要改變一個產品的內部表示,只需要重新定一個建造者就可以了。實用範圍1.當建立複雜物件的演算法應該獨立於該對象的組成部分以及它們的裝配方式時。2.當構造過程必須允許被構造的對象有不同表示時。角色在這樣的設計模式中,有以下幾個角色:1.builder:為建立一個產品對象的各個組件指定抽象介面。2.ConcreteBuilder:實現Builder的介面
Time of Update: 2017-01-18
簡介 單例模式是設計模式中最簡單的形式之一。這一模式的目的是使得類的一個對象成為系統中的唯一執行個體。要實現這一點,可以從用戶端對其進行執行個體化開始。因此需要用一種只允許產生對象類的唯一執行個體的機制,“阻止”所有想要產生對象的訪問。使用Factory 方法來限制執行個體化過程。這個方法應該是靜態方法(類方法),因為讓類的執行個體去產生另一個唯一執行個體毫無意義。要點
Time of Update: 2017-01-18
適配器模式適配器模式可以用於對不同的介面進行封裝以及提供統一的介面,或者是讓某一個對象看起來像是另一個類型的對象。在靜態類型的程式設計語言裡,我們經常使用它去滿足類型系統的特點,但是在類似Ruby這樣的弱類型程式設計語言裡,我們並不需要這麼做。儘管如此,它對於我們來說還是有很多意義的。當使用第三方類或者庫的時候,我們經常從這個例子開始(start out fine):def find_nearest_restaurant(locator) locator.nearest(:restaurant,
Time of Update: 2017-01-18
代理模式需求:小明讓小李替他追小麗(送洋娃娃,送花,送巧克力)沒有代理的代碼:# -*- encoding: utf-8 -*-#追求者類class Pursuit attr_accessor :mm def initialize(mm) @mm = mm end def give_dolls puts "#{mm.name} 送你洋娃娃" end def give_flowers puts "#{mm.name} 送你鮮花" end def give_chocolate
Time of Update: 2017-01-18
之前有看過《ruby設計模式》,不過漸漸的都忘記了。現在買了一個大話設計模式,看起來不是那麼枯燥,順便將代碼用ruby實現了一下。簡單原廠模式:# -*- encoding: utf-8 -*-#運算類class Operation attr_accessor :number_a,:number_b def initialize(number_a = nil, number_b = nil) @number_a = number_a @number_b = number_b end
Time of Update: 2017-01-18
Watir的使用環境搭建1、watir環境工具安裝包:1) ruby186-26.exe下載地址:http://files.rubyforge.vm.bytemark.co.uk/rubyinstaller/2)
Time of Update: 2017-01-18
gem使用代理的兩種方式:方式一: >>SET http_proxy=http://ip_or_host:PORT >>gem install the_package_name 方式二: >>gem list -p http://user:passwd@ip_or_host:8080 -r 安裝ruby-debug-base19有2種方法:方法一:先下載.gem檔案,然後直接安裝.gem檔案,這種需要編譯,所以需要帶with-ruby-
Time of Update: 2017-01-18
1、安裝rvmcurl -L https://get.rvm.io | bash -s stablervm是一個命令列工具,提供多版本ruby環境的管理和切換,還可以根據專案管理不同的gemset。如果沒有產生ssh key,這一步可能會失敗,直接ssh-keygen產生key之後再執行安裝即可。還可能遇到gpg有關的問題:根據提示執行:gpg2 --keyserver hkp://keys.gnupg.net --recv-keys