越劇中的可愛人物

看過了不少越劇. 喜歡上了越劇裡面的一些人物. 我把這些人物的名字和演員的名字記下來, 以防止以後忘了這些可愛的人.

《五女拜壽》
鄒士龍(茅威濤)
熱心,可愛
翠雲(何賽飛)
風雪中忍餓受凍為主人乞食, 不是女兒, 比女兒孝順.

《司馬相如與卓文君》

司馬相如(夏賽麗)
樂觀,有才有情, 忠一, 忠心, 為民
卓文君(何賽飛)
愛的就是司馬相如, 不聽父命另嫁郎
有主見, 敢愛就愛的卓文君私奔隨情郞, 保命留情改寫<梁祝>悲劇
樂觀, 對丈夫信任

《玉蜻蜓》
申元宰(王君安)
一子願養三母.知書達理, 孝順

《風雨漁樵》
(好酷的腳本)
劉玉仙(華怡青)
關心他人, 明理, 堅強
(朱買臣潑水後她說的話好酷.)
平常心境平常過,疏疏淡淡對坎坷
弱女不服命, 傷痛自己撫

《盤妻索妻》
劉仁元(郭麗英)
英雄救美, 又成人之美, 將救來的美女做媒給同學, 可見熱心之真純.

《碧玉簪》
李秀英(金采鳳)
再三拒風寇, 對雖然已經成了狀元的丈夫的人性看得透徹
無奈受世俗倫理影響, 最後接寇也是不得已的出路.

《陳三兩》
陳三兩(黃依群)
身在風塵, 心系黎民
住在青樓卻傳教高尚人品

《賣油郎》
賣油郎(畢春芳)

忠厚熱心的賣油郎, 這也是畢春芳舞台形像的化身.

《情灑羅山》
李良臣(錢惠麗)
不羨皇宮千佳麗, 只望得與妻相守一生

《紫玉釵》
崔允明(章瑞虹)
為朋友兩肋插刀,當在所不辭

《追魚》
鯉魚(王文娟)
可愛還須要理由嗎?

《柳永與蟲娘》
蟲娘(王桂萍)
識柳永奇才, 說行行出狀元,勸柳永放棄功名, 把自己的興趣做成事業, 見解大膽.
為琴獻身, 為情獻身, 即便失身真節在, 青樓女原是如此明白人.
晏殊(裘巧芳)
二萬金錢青樓沽笑, 只為成人之美.

發表在 越劇柔情 | 留下評論

論 重慶女大學生靠色情服務月入可超2萬

新聞原文:不久前,《新京報》披露了重慶市警方破獲一起女大學生從事色情服務的消息。據警方掌握的情況,重慶目前約有近百家此類公司,招募為數不詳的女大學生從事色情服務。涉案的女大學生多供職於各類伴遊、商務諮詢公司、商務俱樂部,實質從事着三陪、賣淫活動。該案牽涉當地數所院校,一些從事色情服務的女大學生月收入超過2萬元。
論 重慶女大學生靠色情服務月入可超2萬

女大學生在色情場所吃香且價格畸高,是一種讓人感到苦澀不堪的“知識經濟”。那些樂於在女大學生面前大把大把甩鈔票的人,他們所購買的,除去女大學生與其他女性無甚差別的生理方面服務外,還有女大學生相對比較高雅的談吐和修養。

如果你是賣身的?
長於人生長遠規劃方面考慮, 我介意你馬上找一所三流大學就讀. 最好是藝術學院, 外語學院次之. 現在只要有錢基本上就能進大學, 或能跟校長發生關係更好. 不要在乎這付出, 因為進去後你身價倍增, 你的投資馬上就能收回.

但是, 為什麼要賣身呢?
除此了女大學生希望了解社會,證明自己的成熟或報復與懲罰心理,或尋求慰藉等原因外, 更主要的原因是錢.
一者社會變革,思想上人對性價值觀的改變. "性解放"讓女人不再守節, 男人不再忠一. "潔身自愛"不但得不到表揚, 而且可能受人嘲諷. 二來社會上物質和金錢的作用越來越大. 人們開始明白金錢不但可以換來生活日用品, 還可以換得學位, 官職, 愛情甚至生命. 有了這兩者, 中間加性可以互換金錢(性<=>金錢), 出現女大學生"獻身"色情服務可謂"全情全理","天經地義".

活生生的性交易實錄 –“他說要幫我找工作”
文慧(化名)是重慶某大學2000級大學生,即將畢業離校。

"我出生在吉林農村,家裡很窮,我父母都是很好很老實的人,母親很多年沒有穿過新衣服,父親不抽煙不喝酒也不賭博,他們只是沒有謀生技能而已,所以,我不管走到什麼樣的境地,都覺得沒有任何怪罪他們的理由。換句話說,我是咎由自取。"

"從小我就比別人長得好看,我有北方農村少見的白皮膚,父母因此很疼惜我,很少讓我幹家務活。我在村裡上小學,在鎮上上初中,在縣城裡上高中,我的外號就從“村花”變成“鎮花”再變成“縣花”。高一的時候,我自編的獨舞還在學校匯演中得了一等獎。"

……..

"辛苦讀完四年大學. 你不知道有多少人都在等一份工作,最後發現原來一家小公司的小文秘都需要重點本科英語六級容貌俏麗身高165厘米以上,最後說薪水不過800元,還有幾乎上百人排隊等面試。這本來就是一個投機的社會,我總要活下去。"

"大四下學期,朋友給我介紹了一個所謂的作家,我看過他的東西,文采平平,用《像雞毛一樣飛》裡面的台詞來說,“十年以前是個新人,十年以後還是個新人”,喜歡自吹自擂,認為自己才高八斗。我很配合,裝作很崇拜的樣子,其實每次聽到他千篇一律的演講詞,我就覺得好笑。 "

"他說他要幫我找工作。 "

"有一天傍晚,他給我打電話說幫我找了一家外地的雜誌社,說裡面的那個主任以前是他的學生,小說都是跟他學的。我可以進去先在雜誌發行部做着。他在電話中一再強硬讓我馬上過他那裡去一趟,說要跟我細談。他老婆回娘家去了,他給我收拾了客房,很正人君子的樣子。我不動聲色,看他能支撐多久。結果我睡了不到10分鐘,他敲門進來,手裡托着圍棋,說要跟我切磋一下。 "

"我知道他心裡在想什麼,因為我的爛技術竟然把他殺得潰不成軍,可見他的心思根本不在棋上。他鬼祟得讓我覺得可悲。"

—-"最後事情發生了嗎? "

"發生了。很可笑,是我提出來的,我看見他那個樣子,覺得他比我好不到哪兒去。 "

—–"工作的事情怎麼樣?"

"沒有迴音,所謂的雜誌社主任,看起來根本不買他的賬,推託得很明顯。其實看他那樣子,我就知道事情沒有他說得那麼輕巧。現在我已經絕望了,我覺得我所託非人,因此得不償失。"

—–"如果下一次有人能確實解決你的問題,而需要你付出身體,你會不會答應?"

"也許會。得到一些東西,總要付出一些東西,而除了身體我什麼都沒有,我只能拿它去換. "

23歲不到,言語中對這個世界,卻已經有明顯的嘲諷。

文慧說,人就是要拿自己有的東西,去換自己沒有的東西。她覺得她只有身體,而沒有的東西,實在太多。

評論
文慧的大學也是用身體換來的. 她用身體從一廠長那換來了2萬元的學費. 或你會同情她: 她家裡窮, 上不了大學, 沒有辦法.
我到曾在海南儋州里的華南熱帶農業大學裡住過. 那裡沒錢, 家裡交不起大學學費的人有很多. 但他們不賣身, 他們貸款交學費, 他們下課後收破爛賺生活費.
還有, 中國的爛大學, 你不上它就沒有別的辦法成才?
很多自考生在外企工作了. 他們當時上不起大學, 到深圳打工, 一辦打工賺錢養活自己(可能還要寄錢給家裡的弟弟或妹妹上學),一邊學習.
只要你想, 問題就一定有解決的辦法. 只要你從內心墮落, 你總能找到借口.
上文中最後一句說:"她覺得她只有身體,而沒有的東西,實在太多。"
我想問文慧啊, 你四年大學都玩什麼了? 你玩到自己只有身體了. 你就不會用四年的大學時間學一門技術? 學外語, 學好了當同聲傳譯, 老俞說那個工資是一小時5000元, 要不你學機械技工啊, 學好了到東莞, 一個月工資5000也沒問題…
你用你的身體換來了20000元的學費, 然後到學校玩了四年, 你對得起你四年前的那個身體嗎???
說你混到現在, 只留下了身體? 我問你, 這身體真的是你的? 那是你父母給你的. 你的父母給了你身體, 不但不能指望你來光宗耀祖, 你還混到了你賣你父母給你的身體過日子, 先不要說"沒有任何怪罪父母的理由", 你先問問自己, 你對得起自己的父母嗎?
最可悲的是你而竟然放棄了你的舞蹈天賦…

問題的重點
"她覺得她只有身體,而沒有的東西,實在太多"
她有什麼?
健康的身體, 健全的智商. 有了這兩樣, 加上耐心和刻苦, 你還有什麼得不到的???
她沒有什麼?
一個安分守己的心, 一個知足常樂的心. 或她最缺的應該是另一盒化妝品. 但這化妝品永遠填不滿虛榮的心.

你能美多久?
SK-II能讓你美多久? 化妝品不會讓50歲的女人年輕, 但會讓50歲的女人看起來更像妖精.

你能美多久??
年過花甲的戚雅仙站在舞台上老態龍鍾, 但她只要張嘴唱出那越劇, 我感嘆她很美.

什麼是金錢?
金錢是工具, 藉助它我可以生存,並實現我的其它願望.
但它只是手段, 實現人生目標的手段.
為了人生而用合適的方法賺一定的金錢.
而不為了金錢而人生.
賣淫可以得到了金錢, 但從她第一次賣淫開始, 她的身心將一生背負一個永遠不能擦洗的烙印, 如果這個烙印不是你的人生目標之一, 我想對賣淫之前的她說"賺錢有的是辦法."

發表在 其它 | 留下評論

Ruby on Rails 數據庫Migration操作語句實例

def self.up     # db schema更新到下一版本
  create_table :table, :force => true do |t| #創建表格
    t.column :name, :string
    t.column :age, :integer, { :default => 42 }
    t.column :description, :text
    # :string, :text, :integer, :float, :datetime, :timestamp, :time, :date,
    # :binary, :boolean
  end
  add_column :table, :column, :type #添加段

  rename_column :table, :old_name, :new_name #修改段名
  change_column :table, :column, :new_type #修改段數據類型
  execute "SQL語句"
  add_index :table, :column, :unique => true, :name => ‘some_name’  #添加索引
  add_index :table, [ :column1, :column2 ]
end

def self.down   # 撤消操作
  rename_column :table, :new_name, :old_name
  remove_column :table, :column
  drop_table :table #刪除表格
  remove_index :table, :column
end

發表在 Ruby on Rails | 留下評論

Ruby on Rails HTML表單語句大全

表單開始標籤:
<%= form_tag { :action => :save }, { :method => :post } %>
Use :multipart => true to define a Mime-Multipart form (for file uploads)
表單結束標籤:
<%= end_form_tag %>

文本框 Text fields
<%= text_field :modelname, :attribute_name, options  %>
生成:
<input type="text" name="modelname[attribute_name]" id="attributename" />

實例:

text_field "post", "title", "size" => 20
    <input  type="text" id="post_title" name="post[title]"
            size="20" value="#{@post.title}" />

隱藏框:
<%= hidden_field … %>

密碼框:
<%= password_field … %>

文件框
<%= file_field … %>

Rails Textarea框
<%= text_area … %>
實例:
text_area "post", "body", "cols" => 20, "rows" => 40
    <textarea cols="20" rows="40" id="post_body" name="post[body]">
        #{@post.body}
    </textarea>

單選框 Radio Buttons
<%= radio_button :modelname, :attribute, :tag_value, options %>
實例:
radio_button "post", "category", "rails"
radio_button "post", "category", "java"
    <input type="radio" id="post_category" name="post[category]" value="rails"
           checked="checked" />
    <input type="radio" id="post_category" name="post[category]" value="java" />

多選框 Check Box
<%= check_box :modelname, :attribute, options, on_value, off_value %>
實例
check_box "post", "validated"   # post.validated? returns 1 or 0
    <input type="checkbox" id="post_validate" name="post[validated]"
           value="1" checked="checked" />
    <input name="post[validated]" type="hidden" value="0" />

check_box "puppy", "gooddog", {}, "yes", "no"
    <input type="checkbox" id="puppy_gooddog" name="puppy[gooddog]" value="yes" />
    <input name="puppy[gooddog]" type="hidden" value="no" />

<%= select :variable, :attribute, choices, options, html_options %>

下拉菜單框 Select Menu
select  "post",        
        "person_id",   
        Person.find_all.collect {|p| [ p.name, p.id ] },
        { :include_blank => true }

 <select name="post[person_id]">
   <option></option>
   <option value="1" selected="selected">David</option>
   <option value="2">Sam</option>
   <option value="3">Tobias</option>
 </select>

Collection Selection
<%= collection_select :variable, :attribute, choices, :id, :value %>

日期選擇框:
<%= date_select :variable, :attribute, options %>
<%= datetime_select :variable, :attribute, options %>
實例:
date_select "post", "written_on"
date_select "user", "birthday", :start_year => 1910
date_select "user", "cc_date", :start_year => 2005,
                               :use_month_numbers => true,
                               :discard_day => true,
                               :order => [:year, :month]

datetime_select "post", "written_on"

發表在 Ruby on Rails | 留下評論

Ruby on Rails數據庫操作

數據庫元被影射成對象
(object-relational mapping (ORM)層)
table<=>class
row<=>object
column<=>object attribute

class和table的命名對應關係實例
Order<=>orders
TaxAgency<=>tax_agencies
Person<=>people

複數形式關閉方法config/environment.rb:
ActiveRecord::Base.pluralize_table_names = false
自定義表格名稱方法:
class Sheep < ActiveRecord::Base
 set_table_name "sheep"
end

Ruyb數據類型和SQL數據類型對應關係表
int,integer<=>Fixnum
float,double,decimal,numeric<=>Float
interval,date<=>Date
datetime,time<=>Time
char,varchar,string,clob,blob,text<=>String
boolean<=>see text…

訪問屬性(數據庫列):
account[:balance] #=> 返回當前值
account[:balance] = 0.0 #=> 指定數值

修正數據庫列的取值範圍的方法:
class Account < ActiveRecord::Base
 def balance=(value)
  raise BalanceTooLow if value < MINIMUM_LEVEL
  self[:balance] = value
 end
end

訪問屬性(數據庫列)更方便的方法:
account.balance #=> 返回當前值
account.balance = 0.0 #=> 指定數值

以上方式得到的數據庫數據將是ruby按自身的數據類型格式化好的,如果要得到原始數據,可用以下形式代碼:
account.balance_before_type_cast #=> "123.4", 字符串
account.release_date_before_type_cast #=> "20050301"

是非屬性
在ruby中只有falsenil才被判斷為false

數據庫主鍵(Primary Keys)
Ruby on Rails默認以id為主鍵

自定義主鍵的方法:
class BadBook < ActiveRecord::Base
 set_primary_key "isbn"
end

數據創建,讀取,更新和刪除(CRUD:Create, Read, Update, Delete)

創建新數據

實例:
an_order = Order.new
an_order.name ="Dave Thomas"
an_order.save #在save()之前所有數據只存在內存中

用以下方式可以減少產生一個an_order變量:
Order.new do |o|
 o.name = "Dave Thomas"
 # . . .
 o.save
end

當數據來自HTML表單時,可以考慮用以下方式:
an_order = Order.new(
 :name =>"Dave Thomas",
#…
)
an_order.save

使用create()代換new()可直接保存到數據庫,省去an_order.save:
an_order = Order.create(
 :name => "Dave Thomas")

可以使用hash同時保存多組數據:
 orders = Order.create(
  [ { :name =>"Dave Thomas" },
   { :name =>"Andy Hunt" } ] )

new()或create()也可以直接接參數:
order = Order.create(params)

讀取數據
an_order = Order.find(27)
# 直接找出id = 27的數據,可以同時讀取多個object.
an_order = Order.find_by_id(27)
# 效果類似,但一次只能讀一個,在找不到符合的object時返回nil,而不是錯誤。
# 從一個表單讀取product id列表,然後計算這些商品的總價:
product_list = params[:product_ids]
total = 0.0
Product.find(product_list).each {|prd| total += prd.total}

帶條件的讀取:
pos = Order.find(:all,
:conditions => "name = ‘dave’ and pay_type = ‘po’")

不安全的表單參數傳遞讀取數據庫:
name = params[:name]
# 此方法有被SQL注入方式入侵的風險!!!
pos = Order.find(:all,
:conditions =>"name = ‘#{name}‘ and pay_type = ‘po’")
#注意上面單雙引號的使用及變量的傳遞方法

更安全的方法:
name = params[:name]
pos = Order.find(:all,
:conditions => ["name = ? and pay_type = 'po'", name])

你也可以這樣:
name = params[:name]
pay_type = params[:pay_type]
pos = Order.find(:all,
:conditions => ["name = :name and pay_type = :pay_type",
{:pay_type => pay_type, :name => name}])

終極簡化版:
pos = Order.find(:all,
:conditions => ["name = :name and pay_type = :pay_type", params])

排序和查找第3(?)至13(?)列的方法:
orders = Order.find(:all,
 :conditions =>"name = ‘Dave’",
 :order =>"pay_type, shipped_at DESC",
 :limit => 10
 :offset => 2)

聯合數據表的查找方法(一般用不上):
LineItem.find(:all,
:conditions => "pr.title = ‘Programming Ruby’",
:joins =>"as li inner join products as pr on li.product_id = pr.id")

查找有序一列的方法:
order = Order.find( :first,
 :conditions =>"name = ‘Dave Thomas’",
 :order => "id DESC")

直接使用sql語句的查詢方法:
items = LineItem.find_by_sql("select *, quantity*unit_price as total_price,products.title as title from line_items, products where line_items.product_id = products.id ")
li = items[0]
puts "#{li.title}: #{li.quantity}x#{li.unit_price} => #{li.total_price}"
你可以使用"as".

在這裡你也可以傳遞參數:
Order.find_by_sql(["select * from orders where amount > ?",
params[:amount]])

計算行數
c1 = Order.count
c2 = Order.count(["name = ?", "Dave Thomas"])
c3 = LineItem.count_by_sql("select count(*) from line_items, orders  where line_items.order_id = orders.id and orders.name = ‘Dave Thomas’ ")
puts "Dave在#{c2}個定單里一共定了#{c3} 件商品 (目前定單總數:#{c1})"

動態查詢
order = Order.find_by_name("Dave Thomas")#只查一列
orders = Order.find_all_by_name("Dave Thomas")
order = Order.find_all_by_email(params['email'])

可同時查多個條件,如:
user = User.find_by_name_and_password(name, pw)

重載數據庫
stock = Market.find_by_ticker("RUBY")
loop do
 puts "Price = #{stock.price}"
 sleep 60
 stock.reload
end

更新數據
使用save()
order = Order.find(123)
order.name = "Fred"
order.save

orders = Order.find_by_sql("select id, name, pay_type from orders where id=123")
first = orders[0]
first.name ="Wilma"
first.save

使用update_attribute()
order = Order.find(123)
order.update_attribute(:name,"Barney")
order = Order.find(321)
order.update_attributes(:name => "Barney",
:email =>"barney@bedrock.com")

使用更快捷的update()
order = Order.update(12, :name => "Barney", :email => "barney@bedrock.com")

使用update_all()
result = Product.update_all("price = 1.1*price", "title like ‘%Java%‘")

save()和save!()
save()失敗時返回nil
if order.save
 # 成功
else
 # 保存失敗則…
end

save!()失敗時出錯
begin
 order.save!
rescue RecordInvalid => error
 # 保存失敗RecordInvalid exception
end

數據鎖(防止數據保存撞車)
加段:lock_version int default 0,

刪除數據
delete()刪除
Order.delete(123)
User.delete([2,3,4,5])
Product.delete_all(["price > ?", @expensive_price])

destroy()凍結(在model層面)
order = Order.find_by_name("Dave")
order.destroy
# … order將被凍結

數據庫關係(相關鍵)參看:Ruby on Rails數據表格關係

發表在 Ruby on Rails | 留下評論

Ruby on Rails常用內置方法

對象是否為空blank?
puts [ ].blank? #=> true
puts { 1 => 2}.blank? #=> false
puts " cat ".blank? #=> false
puts "".blank? #=> true
puts " ".blank? #自動去除前後空格=> true
puts nil.blank? #=> true

排序:group_by()
groups = posts.group_by {|post| post.author_id}

組句:to_sentence()
puts [ "ant", "bat", "cat"].to_sentence #=> "ant, bat, and cat"
puts [ "ant", "bat", "cat"].to_sentence(:connector => "and not forgetting")
#=> "ant, bat, and not forgetting cat"
puts [ "ant", "bat", "cat"].to_sentence(:skip_last_comma => true)
#=> "ant, bat and cat"

分組:in_groups_of()
[1,2,3,4,5,6,7].in_groups_of(3) {|slice| p slice}
#=> [1, 2, 3]
[4, 5, 6]
[7,nil, nil]
[1,2,3,4,5,6,7].in_groups_of(3,"X") {|slice| p slice}
#=> [1, 2, 3]
[4, 5, 6]
[7,"X", "X"]

字符串方法:
string = "Now is the time"
puts string.at(2) #=> "w"
puts string.from(8) #=> "he time"
puts string.to(8) #=> "Now is th"
puts string.first #=> "N"
puts string.first(3) #=> "Now"
puts string.last #=> "e"
puts string.last(4) #=> "time"
puts string.starts_with?("No") #=> true
puts string.ends_with?("ME") #=> false

count = Hash.new(0)
string.each_char {|ch| count[ch] += 1}
p count #=> {" "=>3, "w"=>1, "m"=>1, "N"=>1, "o"=>1, "e"=>2, "h"=>1, "s"=>1, "t"=>2, "i"=>2}

改變字符串的顯示格式:
puts "cat".pluralize #=> cats
puts "cats".pluralize #=> cats
puts "erratum".pluralize #=> errata
puts "cats".singularize #=> cat
puts "errata".singularize #=> erratum
puts "first_name".humanize #=> "First name"
puts "now is the time".titleize #=> "Now Is The Time"
你可以自定義特定單詞的單複數轉換規則

數字方法:
puts 3.ordinalize #=> "3rd"
puts 321.ordinalize #=> "321st"

數量方法:
puts 20.bytes #=> 20
puts 20.kilobytes #=> 20480
puts 20.megabytes #=> 20971520
puts 20.gigabytes #=> 21474836480
puts 20.terabytes #=> 21990232555520
puts 20.petabytes #=> 22517998136852480
puts 1.exabyte #=> 1152921504606846976

時間方法:
puts 20.seconds #=> 20
puts 20.minutes #=> 1200
puts 20.hours #=> 72000
puts 20.days #=> 1728000
puts 20.weeks #=> 12096000
puts 20.fortnights #=> 24192000
puts 20.months #=> 51840000
puts 20.years #=> 630720000

puts Time.now #=> Thu May 18 23:29:14 CDT 2006
puts 20.minutes.ago #=> Thu May 18 23:09:14 CDT 2006
puts 20.hours.from_now #=> Fri May 19 19:29:14 CDT 2006
puts 20.weeks.from_now #=> Thu Oct 05 23:29:14 CDT 2006
puts 20.months.ago #=> Sat Sep 25 23:29:16 CDT 2004
puts 20.minutes.until("2006-12-25 12:00:00".to_time)
#=> Mon Dec 25 11:40:00 UTC 2006
puts 20.minutes.since("2006-12-25 12:00:00".to_time)
#=> Mon Dec 25 12:20:00 UTC 2006

now = Time.now
puts now #=> Thu May 18 23:36:10 CDT 2006
puts now.to_date #=> 2006-05-18
puts now.to_s #=> Thu May 18 23:36:10 CDT 2006
puts now.to_s(:short) #=> 18 May 23:36
puts now.to_s(:long) #=> May 18, 2006 23:36
puts now.to_s(:db) #=> 2006-05-18 23:36:10
puts now.to_s(:rfc822) #=> Thu, 18 May 2006 23:36:10 -0500
puts now.ago(3600) #=> Thu May 18 22:36:10 CDT 2006
puts now.at_beginning_of_day #=> Thu May 18 00:00:00 CDT 2006
puts now.at_beginning_of_month #=> Mon May 01 00:00:00 CDT 2006
puts now.at_beginning_of_week #=> Mon May 15 00:00:00 CDT 2006
puts now.beginning_of_quarter #=> Sat Apr 01 00:00:00 CST 2006
puts now.at_beginning_of_year #=> Sun Jan 01 00:00:00 CST 2006
puts now.at_midnight #=> Thu May 18 00:00:00 CDT 2006
puts now.change(:hour => 13) #=> Thu May 18 13:00:00 CDT 2006
puts now.last_month #=> Tue Apr 18 23:36:10 CDT 2006
puts now.last_year #=> Wed May 18 23:36:10 CDT 2005
puts now.midnight #=> Thu May 18 00:00:00 CDT 2006
puts now.monday #=> Mon May 15 00:00:00 CDT 2006
puts now.months_ago(2) #=> Sat Mar 18 23:36:10 CST 2006
puts now.months_since(2) #=> Tue Jul 18 23:36:10 CDT 2006
puts now.next_week #=> Mon May 22 00:00:00 CDT 2006
puts now.next_year #=> Fri May 18 23:36:10 CDT 2007
puts now.seconds_since_midnight #=> 84970.423472
puts now.since(7200) #=> Fri May 19 01:36:10 CDT 2006
puts now.tomorrow #=> Fri May 19 23:36:10 CDT 2006
puts now.years_ago(2) #=> Tue May 18 23:36:10 CDT 2004
puts now.years_since(2) #=> Sun May 18 23:36:10 CDT 2008
puts now.yesterday #=> Wed May 17 23:36:10 CDT 2006
puts now.advance(:days => 30) #=> Sat Jun 17 23:36:10 CDT 2006
puts Time.days_in_month(2) #=> 28
puts Time.days_in_month(2, 2000) #=> 29

日期方法:
date = Date.today
puts date.to_s #=> "2006-05-18"
puts date.to_time #=> Thu May 18 00:00:00 CDT 2006
puts date.to_s(:short) #=> "18 May"
puts date.to_s(:long) #=> "May 18, 2006"
puts date.to_s(:db) #=> "2006-05-18"

將字符串轉成時間日期:
puts "2006-12-25 12:34:56".to_time #=> Mon Dec 25 12:34:56 UTC 2006
puts "2006-12-25 12:34:56".to_date #=> 2006-12-25

發表在 Ruby on Rails | 留下評論

Ruby on Rails項目文件目錄結構和環境設置

Ruby on Rails項目文件目錄結構
README 說明文檔
Rakefile 生成腳本
app/ 存放項目的Model, View和Controller等文件
components/  存放可重複使用的組件, 現在已經不大使用
config/ 配置文檔及數據庫連接配置文檔
db/ 存放數據庫schema和migration信息
doc/  存放自動生成的文檔
lib/ 存放在Model, View和Controller間共享的代碼
  為方便整理,不同功能的代碼可放到其不同的子目錄下.

  調用sub_dir下的my_lib_code.rb代碼的方法為: require "sub_dir/my_lib_code"
log/ 存放程序生成的日誌文件
  裡面有三個最主要的log為:development.log, test.log和production.log,分別對應不同的運行環境.
public/ 存放對網絡公開的文件
script/ 存放腳本工具
  不帶參數直接運行大多數的腳本工具可以顯示出相應的使用幫助信息.
  常見的script:
  about
  breakpointer
  destroy<=>generate
  server
  script/performance/benchmarker
test/  測試工具
tmp/  存放臨時文件, 如緩存, session, socket…
vendor/ 存放外來代碼, 如外來插件, 也可用來放rails構架本身, 以使rails兼容不同版本需求的程序.

運行環境
使用-e XXXX切換運行環境:
ruby script/server -e production #默認為development

配置數據庫參數
修改config/database.yml文件

配置環境
修改config/environment.rb文件.

命名規範
所有變量以小寫字母單詞命名,單詞間用下劃線"_"分隔. 如order_status
所有class和module以大寫開頭的單詞命名,單詞間直接連接,如: LineItem

數據庫中所有表格命名形式同變量名,且全為複數形式,如:orders
所有文件名命名形式也同變量名

Rails可推論相關文件名, 所以在框架內可以節省很多require "xxx". Rails會自動加入相關的調用.
Rails關於文件名的思維邏輯實例:
如果一個class名為:LineItem
ralis將推出:
1.此class對應的數據庫表格名為line_items.
2.此class對應的文件名為line_item.rb
….

創建model下的controller
ruby script/generate controller Admin::Book action1 action2 …

使用debug() helper method
<%=debug(@order) %>

發表在 Ruby on Rails | 2 條評論

那個下午

那個下午,車從諾日朗出發

選了靠走道的位置坐下。不一會,他坐到了我前面。
眼睛大大的,個子很高的男孩,背了一個龐大的包,綁了一個相機的腳架。
一直沒有交談,只是沉默地乘車。
途中有絕美的風景,按捺不住,站起來叫停車。
他也站起來,跟我一起下車。
沿着木棧道,我們一前一後地走。
偶也停下來拍照,也是默不作聲,各拍各的。
犀牛海是那天看到的最漂亮的海子。
陽光落在翠藍的水面上,化成不停搖曳的亮片。
海邊一排灌木,深秋時節,細葉泛紅泛黃。

那個下午
犀牛海

發獃了一會,轉身從包里拿東西時又看見了他。
他在不遠處拍照。
看見我,他笑了笑,露出整齊而潔白的牙齒。
他走過來在我旁邊坐下,給我看他剛拍的照片。
就這樣認識了,他叫KEN,南方人,《華夏人文地理》的簽約攝影師。
KEN對我說,每張照片其實都是記錄一次消亡。
在按下快門的一瞬間,那樣的景色已經成為過去,並且永遠不復存在。

KEN不是很健談的人,我也不是。
很多時候我們都沉默地享受陽光。
微微地眯起眼睛,享受那種快被晒成一灘軟泥的感受。
後來,KEN教我當地的藏語。
睡覺念”呢“,談戀愛念”哈給吃“,曬大陽念”應該的“。
渴了,KEN從碩大的包里找出兩個紅蘋果,遞了一個給我。
果皮紅潤透亮,水靈乾淨,很細緻的男人。

大陽落山前我們道別。
他要去拍火花海的月夜,在溝里停留這麼多天,為的就是這一晚的月圓。
我繼續上路,沒有目的,沒有打算。
分開時他問我要手機號碼。
我笑笑,告訴他之後不會有任何聯繫。
這樣平靜地邂逅,然後彼此消失,才是旅途中的人和事。
也會一直記得彼此。
是。一直記得
那個下午。

原作:曾珍《果殼裡的村寨》 剪輯改編:卯時下雨

發表在 某時雨集 | 留下評論

Ruby on Rails實戰–創建一個網上商店F收尾工作

上一節:Ruby on Rails實戰–創建一個網上商店E用戶管理模塊

本節是depot電子商店的項目的最後一節。將完成生成XML Feed,並介紹如何生成項目文檔。
生成通過商品ID反查定購用戶信息的XML Feed.

orders的id和關聯line_items表中的order_id,而line_items表中的product_id和products表中的id相關聯, 通過orders可以查products的id,現在建立反向關聯.
在depot/app/models/product.rb文件加入:
has_many :orders, :through => :line_items
使product通過line_item查order信息

新建一個info controller:

depot> ruby script/generate controller info
controllers/info_controller.rb文件內容為:
class InfoController < ApplicationController
  def who_bought
    @product = Product.find(params[:id])
    @orders = @product.orders
    respond_to do |accepts| #下面代碼根據request的形式選擇發送html還是xml格式內容
      accepts.html
      accepts.xml
    end
  end
end

加入html形式內容頁面:depot/app/views/info/who_bought.rhtml,內容如下:
<h3>People Who Bought <%= @product.title %></h3>
<ul>
 <% for order in @orders -%>
  <li> <%= mail_to order.email, order.name %> </li>
 <% end -%>
</ul>

加入xml形式內容頁面:depot/app/views/info/who_bought.rxml,內容如下:
xml.order_list(:for_product => @product.title) do
  for o in @orders
    xml.order do
      xml.name(o.name)
      xml.email(o.email)
    end
  end
end

現在通過http://localhost:3000/info/who_bought/1 地址就可以查出商品1(ID)的定購者信息了.

 

生成開發文檔RDoc

項目中的doc/README_FOR_APP文件可以加入項目相關的說明信息.
使用depot> rake doc:app 可以生成項目的開發文檔文件. 程序對項目中所有文件,classes和methods進行分析, 列出相關信息. 文件為html格式.

至此depot項目完成. 一個用Ruby on Rails續建的簡單的網上商店完成了!

發表在 Ruby on Rails | 留下評論

絕對的經典–評越劇<五女拜壽>

歲寒方知松柏健
患難相守品德全
壽堂重敘天倫樂
情深和睦笑開顏
絕對的經典--評越劇<五女拜壽>

演出:浙江省小百花越劇團
編劇:顧錫東

看名字我以為這只是一場用來在節目表演的低俗奉承戲,但我錯了,沒想到這戲裡面包容着這麼多的人間甜酸.

越劇<五女拜壽>是絕對的經典.

第一是情節, 故事有起有伏, 有主有支, 有定有變… 以抒情見長的越劇突現出被磨滅了的述事能力.

第二是演員, 雖然沒有哪個餘音繞梁, 但都把角色表現得活靈活現, 有血有肉. 台上哪個可愛,哪個可恨, 哪個看了讓人同情, 哪個看了讓人謾罵, 歷歷在目!
沒有主角, 沒有配色, 是這個劇團,一個整體完成了這個傑作!
絕對的經典--評越劇<五女拜壽>
1984年<五女拜壽>電影版的海報

演員表:
董柯娣飾楊繼康 徐愛武飾楊夫人
周美姣飾元芳(長女) 邵雁飾俞子云(長婿)
吳海麗飾雙桃(次女)陳筱珍飾丁大富(次婿)
何英飾三春(三女) 方雪雯飾鄒應龍(三婿)
應惠珠飾四春(四女)傅江鳳飾陳文新(四婿)
陶慧敏飾五鳳(五女) 江瑤飾陳文華(五婿)
茅威濤飾鄒士龍 何賽飛飾翠雲
王連琴飾陳松年 俞會珍飾陳夫人

發表在 電影評論, 越劇柔情 | 留下評論