2007年3月4日
2007年3月1日
Balloon -- Ruby百寶箱
http://balloon.hobix.com/
Here, Try a Balloon
Balloon is a site for Rubyists to create demos of their code. Have Balloon download Gems, fetch code from Subversion, run scripts and then close up without leaving a trace!簡單的說,Balloon提供給Ruby Coders一個可以建立demo的平台,如果有玩過DOB首頁製作百寶箱作者群的人應該可以很快上手,因為跟發布文章的介面有點類似
它定義了幾個Actions:
- Run some Ruby code
- Fetch a gem
- Fetch a Ruby library(non-Gem)
- Download code from Subversion
- Use a Gem Server
http://balloon.hobix.com/serve.rb
http://balloon.hobix.com/Win32_MessageBox
寫好的Code還可以嵌入到部落格中喔
於
晚上11:24:00
標籤:
hobix,
programming,
ruby,
Website
0
回應
快速處理HTML/XML文件
XML文件我是用ReXML啦.. 不過我這邊不是要介紹ReXML,是要來介紹hpricot這個Library的
安裝方式: gem install hpricot
or gem install hpricot --source http://code.whytheluckystiff.net
第一個會連線到gem server去抓來裝,不會有最新的更新;第二個會連到指定的gem server,那邊更新速度較快,我還看到jruby版本的gem..
OK,廢話不多說,趕緊來看看
官方網站是:http://code.whytheluckystiff.net/hpricot/
如果會jQuery的人,這個是用jQuery當底層的喔!
我來個例子吧
require 'rubygems'
require 'hpricot'
require 'open-uri'
doc = Hpricot(open("http://article.zuso.org.tw/show.php?id=1453"))
tb = doc.search("//table")
puts "Tables: #{tb.size}"
puts tb[0]
於
凌晨12:10:00
標籤:
html_parser,
programming,
ruby
1 回應
2007年2月27日
File讀取方式:readlines好還是while迴圈好?
在Ruby中,File可以用readlines跟跑while迴圈來讀
在這個例子中,程式p1用的是while迴圈,p2用的是readlines
執行後,秒數分別是
P1:
121.468秒
P2:
122.172秒
範例文字檔大小是:
4.07 MB (4,272,336 位元組)
範例程式碼是:
puts "P1 start"
p1_start = Time.now
open("C:/words.txt"){ |f|
while a = f.gets
print a
end
}
p1_end = Time.now
puts "P1 end"
puts "P2 start"
p2_start = Time.now
File.open("C:/words.txt") do |f|
puts f.readlines
end
p2_end = Time.now
puts "P2 end"
puts
puts "P1: ", p1_end - p1_start
puts "P2: ", p2_end - p2_start
由此可見,while快上不到一秒,但是如果在讀取大檔案的時候,用while反而會比較快
相對的,如果不考慮效率,我還是建議使用readlines
不過這只是個人看法,希望其他前輩不吝指教,謝謝!
於
凌晨12:03:00
標籤:
programming,
ruby
0
回應
2007年2月24日
51個Rails影片跟展示
網址是:http://www.bestechvideos.com/category/development/ruby/
這邊有51個不同的展示影片,也有介紹影片,非常值得去看看
於
凌晨4:40:00
標籤:
api,
programming,
rails,
ruby,
screencast,
video
1 回應
2007年2月20日
Win32API Sample: MessageBox
require 'Win32API'
=begin
Message Box:
Coded by CFC
CFC
2007/2/16
=end
class Msgbox
def initialize(lpText="", lpCaption="", wType = 0)
Win32API.new('user32', 'MessageBox', %w(p p p i), 'i').call(0,lpText,lpCaption,wType)
end
end
def Msgbox(lpText="", lpCaption="", wType = 0)
Win32API.new('user32', 'MessageBox', %w(p p p i), 'i').call(0,lpText,lpCaption,wType)
end
採用MIT授權條款
Usage:
Msgbox.new("Hi", "Hello, world")
Msgbox.new("XD", "Hello!", 1)
Msgbox("Hi", "Hello!")
於
下午4:31:00
標籤:
api,
programming,
ruby
3
回應
如何透過Ruby呼叫Win32API
研究了一下.. 寫出來當Memo..
我先以一個簡單的例子來解說,就用大家最愛的MessageBox吧!
require 'win32api'
msgbox = Win32API.new('user32', 'MessageBox', %w(p p p i), 'i')
msgbox.call(0, "Message body", "Messagebox title", 1) # hwnd, lpText, lpCaption, wType => Come from API Viewer (API檢視員)
OK.. 開始來講解
1. require 'win32api'
這是將win32api.rb給引入的意思,跟C的#include用意相同
2. msgbox = Win32API.new('user32', 'MessageBox', %w(p p p i), 'i')
實體化一個Win32API物件,第一個是dllname,第二個是要呼叫的東西,第三個是API參數傳遞時的資料型態,第四個是要回傳的資料型態
如果保持nil(也就是null)的話,就表示不會有傳入或回傳
3. msgbox.call(0, "Message body", "Messagebox title", 1)
透過這個物件呼叫,hwnd傳入0,lpText傳入"Message body"接著以此類推
我來張貼一下常數表
# type flag
MB_OK = 0
MB_OKCANCEL = 1
MB_ABORTRETRYIGNORE = 2
MB_YESNOCANCEL = 3
MB_YESNO = 4
MB_RETRYCANCEL = 5
# return values
IDOK = 1
IDCANCEL = 2
IDABORT = 3
IDRETRY = 4
IDIGNORE = 5
IDYES = 6
IDNO = 7
於
下午4:28:00
標籤:
api,
programming,
ruby
0
回應