Time of Update: 2018-12-08
到現在,應該告一段落了,總共有二十九篇隨筆,乾脆湊個整數,再寫寫IDE環境吧。前面所有的代碼都是我用ruby內建的編輯器SciTE編寫的,很不方便,隨著Rails的發展,目前也有很多IDE推出來,剛剛看到NetBeans推出的6.0rc版,提供了單獨的Rails開發環境,這次來簡單嘗試下。 1. 第一步當然是下載NetBeans的6.0rc版,在http://sunmicro.vo.llnwd.net/c1/netbeans/6.0/final/下載。2.
Time of Update: 2018-12-08
也許你已經注意到了,在我們前面的代碼中,資料庫定義裡都使用了一個integer型的欄位id作為主鍵,這是Active Record的一個約定。 或許你要問,為什麼不用訂單編號或者某個有意義的列來作為主鍵呢?使用id作為主鍵有一個很重要的原因,就是如果使用具有內在格式的主鍵的話,隨著時間推移,有可能其中的規則也會變化。例如,使用ISBN號碼來給book表做主鍵,畢竟ISBN號碼是唯一的,但是,有可能當一本書寫完後,美國的出版業已經發展了並且在所有的ISBN號碼後又附加了一位元字。
Time of Update: 2018-12-08
在上次的內容裡,我們編寫了CHECKOUT的處理。這次我們將顯示購物車和訂單放在一個頁面上表示,這樣使用者在下訂單的時候就可以很方便地看到自己的購物情況。 1. 修改checkout.rhtml檔案,只要添加一句代碼:<%= error_messages_for("order") %><%= render_component(:action => "display_cart") %> ――這句 <%=
Time of Update: 2018-12-08
#將字串進行UBB編碼 def ubb_encode(source_str) source_str.scan(/<img .*?>/) do |v|if v.match(/src=["' ].*?["' ]/) != nil source_str = source_str.sub(v, '[img ' + v.match(/src=["' ].*?["' ]/)[0] + '/]') endend
Time of Update: 2018-12-08
class String def has_one_in?(string_Arr) has = false string_Arr.each { |word| has= self.include?(word) if has break end } has endenddef decode_subject(sub) if sub.include?("B?") encode_str = sub.match(/=\?(.*
Time of Update: 2018-12-08
最近剛開始學ruby為了練習一下基本文法的使用,用ruby寫了一下插入排序演算法,可能有些從C#翻譯過來的痕迹1、插入排序 seq = [3,4,9,0,2,5,9,7,1]1.upto(seq.length-1) do |i|if seq[i] < seq[i-1] tmp = seq[i] j = i-1while(j>=0 && tmp<seq[j]) do seq[j+1] = seq[j] j=j-1end
Time of Update: 2018-12-08
class Des require 'openssl' require 'base64' ALG = 'DES-EDE3-CBC' KEY = "mZ4Wjs6L" DES_KEY = "nZ4wJs6L" #加密 def encode(str) des = OpenSSL::Cipher::Cipher.new(ALG) des.pkcs5_keyivgen(KEY, DES_KEY) des.encrypt
Time of Update: 2018-12-08
用Ruby的pp()函數可以以很漂亮的方式輸出數組。不過美中不足的是會將二維數組顯示在一行上。我們希望它能夠以每行一個子數組的方式進行輸出,如所示是不是更Pretty了?其實PP是一個挺不錯的用於輸出對象的架構(雖說好像是小日本寫的)。要想實現上面的效果,只需要在Array#pretty_print()函數的預設實現中添加一行代碼就可以實現!代碼如下(檔案名稱“pp_extension.rb”): 1# Outputs two-dimension array like matrix 2class
Time of Update: 2018-12-08
Ruby語言中的String是mutable的,不像java、C#中的String是immutable的。比如 複製代碼 代碼如下:str1="abc" str2="abc" 在java中,對於字面量的字串,jvm內部維持一張表,因此如果在java中,str1和str2是同一個String對象。而在Ruby中, str1和str2是完全不同的對象。同樣,在java中對於String對象的操作都將產生一個新的對象,而Ruby則是操縱同一個對象,比如: 複製代碼 代碼如下:str="abc"
Time of Update: 2018-12-08
ruby語言跟c#的一些重要差別在於: 1.ruby是動態語言,c#是靜態語言--即對象在new出來以後,ruby還可以動態給對象執行個體添加一些屬性或方法(javascript也是如此) 2.ruby中刻意弱化了變數類型這個概念,預設情況下變數/方法都不需要聲明具體(返回)類型,但其實在ruby內部,會自動根據變數的值配置類型。(可以通過 “puts 變數.class“查看) 3.ruby相對c#來講,可能有些雷的地方在於:父類中的private成員,居然是可以在子類中使用的!
Time of Update: 2018-12-08
分為如下幾節: ·基本實現 ·在迭代中引用原來的對象,或者直接改變數組的值而不是返回一個新數組 ·向迭代傳入無限多的參數 ·基本實現
Time of Update: 2018-12-08
Ruby代碼複製代碼 代碼如下:if @user.update_attributes(:password => params[:user][:password]) flash[:notice] = '密碼修改完成' redirect_to :action => 'index' else redirect_to :action => 'change_pass', :id => @user
Time of Update: 2018-12-08
一、數字Ruby支援整數和浮點數,整數可以是任意長度一定範圍內的整數以二進位存放,它們屬於fixnum類型,當超出這個範圍時則自動轉換為bignum類型表達方式:符號+一串字元,數字串中的底線會被忽略,(首碼包括:0表示八進位, 0x表示十六進位, 0b表示二進位)123_456_789_123_345_789 # Bignum0xaabb # 十六進位也可以通過在前面加上問號來得到ASCII碼字元對應的整數值和逸出序列的值?a # 一般字元?\n # 分行符號 (0x0a)?\C-a #
Time of Update: 2018-12-08
而由於ruby作為一個完全純淨的物件導向語言,任何東東都是對象,方法是對象,類也是對象...,所以self就會有很多環境,區分不同環境的self含義才能更好的理解程式的含義 一、Top Level Context Ruby代碼 puts self 列印出main,這個代表Object的預設對象main. 二、在class或module的定義中: 在class和module的定義中,self代表這個class或這module對象: Ruby代碼 class S puts 'Just
Time of Update: 2018-12-08
一、向對象顯示的發送訊息 我們可以向對象直接發送訊息: Ruby代碼 複製代碼 代碼如下:class HelloWorld def say(name) print "Hello, ", name end end hw = HelloWorld.new hw.send(:say,"world") 我們通常使用hw.say("world"),但send可以對private的方法起作用。 不光如此send可以使程式更加動態,下面我們看看一個例子:
Time of Update: 2018-12-08
示範代碼: [code]#!/usr/bin/env ruby COUNT = 10 require 'benchmark' $account_chars = ('A'..'Z').to_a.delete_if {|c| c =~ /[AEIOUY]/ } #$password_chars = ('0'..'9').to_a $password_chars = Array.new $password_chars[0..9] = ('0'..'9').to_a $password_chars[10
Time of Update: 2018-12-08
Page 3 概述¨ 解釋執行:Python,Ruby,互動性很好;¨ 編譯執行:Pascal, C,速度較快。n 本地執行,如C,C++;n 虛擬機器執行,如Java, C#。 ¨ 動態語言,如JavaScript,Ruby;¨ 靜態語言,如C++,Java。 語言¨ 文法關鍵字¨ 語義¨ 語用 松本行弘(Matz) 1993Ruby [`ru:bi]
Time of Update: 2018-12-08
#scanweb.rb #用法ruby scanweb.rb www.jb51.net 將當前結果儲存在c:\1.txt require 'net/http' filename= File.new('c:\1.txt',"w+") if $*[0]==nil puts "hehe,沒有輸入網址" else h = Net::HTTP.new($*[0], 80) resp, data = h.get('/index.html', nil) if resp.message == "OK"
Time of Update: 2018-12-08
前面一節的 Fruit 類有兩個實變數,分別表述水果的類型和狀態.直到為這個類寫了一個定製的inspect方法,我們方才瞭解它不會對一個缺乏屬性的水果做出合理的解釋.幸運的是,Ruby提供了一種允許實變數總是被初始化的方法. initalize方法 當Ruby建立一個新對象時,它總是會尋找一個名為 initialize 的方法並執行它.因此,我們可以簡單通過一個initialize方法向實變數中加入預設值,這樣一來, inspect方法就有東西可說了. ruby> class Fruit
Time of Update: 2018-12-08
當一個方法結束工作時我們也許需要進行清理工作.也許一個開啟的檔案需要關閉,緩衝區的資料應清空等等.如果對於每一個方法這裡永遠只有一個退出點,我們可以心安理得地將我們的清理代碼放在一個地方並知道它會被執行;但一個方法可能從多個地方返回,或者因為異常我們的清理代碼被意外跳過. begin file = open("/tmp/some_file", "w") # ... write to the file ... file.close end