Rubyの魔神 このページをアンテナに追加 RSSフィード

   「Ruby」は宝石の魔神のイメージ(The Jinn of the Ruby)
[DMY] [VB] [VB6] [Python] [C#] [Android] [電子工作] [個人メモ] [仕事メモ] [アイデア] [TstLink] [CE] [LTSA]
[自動化] [Qt] [OCaml] [3Dプリンタ] [TOOLS] [RAA] [Forge]
  [機能別索引] [逆引きRuby] [マニュアル] [るびま] [標準ライブラリ] [るりまサーチ] [Try! Ruby] [PRaggerまとめ] [ピジョン・ブラッド]
   [Rubyコーディング規約] [プログラミングのオキテ] [Rubyist SNS] [TOOLBIS]
   [RubyネットワークProg] [druby] [コードなにがし] [RDocテンプレ] [Ruby/Tkサンプル]
   [WAVE] [Xperia] [github] [twitterなど] [EA] [マクロ]

2006-11-30

RS232C comクラス(Windows用)

| 09:19 | RS232C comクラス(Windows用) - Rubyの魔神 を含むブックマーク はてなブックマーク - RS232C comクラス(Windows用) - Rubyの魔神 RS232C comクラス(Windows用) - Rubyの魔神 のブックマークコメント

組み込み系プログラマなのでこれがあると便利


Rubyシリアル通信ライブラリ(Windwos用)

追記 ここにすごくいいのがありました↓

Rubyシリアル通信ライブラリ(Windwos用)

TEXCELL Rubyシリアル通信ライブラリ

class Com
  attr_accessor :comno, :speed, :parity , :data , :stop
  def initialize
    @comno="1"
    @speed="9600"
    @parity="N"
    @data="8"
    @stop="1"
  end

  def comOpen(n)
    @comno=n.to_s
    modestr = "MODE COM#{@comno} BAUD=#{@speed} PARITY=#{@parity} DATA=#{@data} STOP=#{@stop}"
    system modestr
    @com = open("com#{@comno}", "r+b")#.binmode
  end
  def comClose
    @com.close
  end
  def send(x)
    @com.syswrite x    # RS232C OUT
    sleep 0.5
  end
  def recv
    strem = ''
    while c = @com.sysread(1)    # RS232C IN
        strem += c
        break if c == "\n"
    end
    strem
  end
end

com1=Com.new
com1.speed="9600"
com1.comOpen(1)
com1.send("AT\r\n")
puts com1.recv
puts com1.recv
com1.comClose

TCP/IP

| 11:54 | TCP/IP - Rubyの魔神 を含むブックマーク はてなブックマーク - TCP/IP - Rubyの魔神 TCP/IP - Rubyの魔神 のブックマークコメント

clientサンプル

require "socket"

port = 9000

s = TCPSocket.open("localhost", port)

while gets
  s.write($_)
  print(s.gets)
end
s.close

serverサンプル

require "socket"

server=TCPServer.new(9000)

sock=server.accept

while true
	line = sock.gets
	puts line
	sock.write(line)
end

sock.close

Threadサンプル1

| 12:05 | Threadサンプル1 - Rubyの魔神 を含むブックマーク はてなブックマーク - Threadサンプル1 - Rubyの魔神 Threadサンプル1 - Rubyの魔神 のブックマークコメント

Thread.start{
  while true
    print "thread 1\n"
  end
}

while true
  print "thread 2\n"
end

mutex

require "thread"

m=Mutex.new
v=0

Thread.start{
  while true
    m.synchronize{
      v=v+100
    }
  end
}

while true
  m.synchronize{
    v=v-33
  }
end

Queue

require "thread"

q=Queue.new

th = Thread.start{
  while line=q.pop
    print line
  end
}

while gets
  q.push $_
end

q.push nil
th.join

# チュートリアル: Thread

http://www2.ruby-lang.org/ja/20020315.html

トラックバック - http://ruby.g.hatena.ne.jp/garyo/20061130

2006-11-29

URL エンコード&デコード

| 15:09 | URL エンコード&デコード  - Rubyの魔神 を含むブックマーク はてなブックマーク - URL エンコード&デコード  - Rubyの魔神 URL エンコード&デコード  - Rubyの魔神 のブックマークコメント

#!/usr/bin/env ruby 
# URL エンコード&デコード 
# Usage : urlencode.rb [-d] 
# Option : -d デコード 
require 'cgi' 
require 'getopts' 
getopts( "d" ) 
  if $OPT_d ARGF.each{ |line| puts CGI.unescape( line.chomp ) } 
else 
  ARGF.each{ |line| puts CGI.escape( line.chomp ) } 
end
URL エンコード&デコード

XMLRPC例

| 13:30 | XMLRPC例 - Rubyの魔神 を含むブックマーク はてなブックマーク - XMLRPC例 - Rubyの魔神 XMLRPC例 - Rubyの魔神 のブックマークコメント

client

require 'xmlrpc/client'

client = XMLRPC::Client.new2("http://localhost:8080/XMLRPCserver.rb")
result = client.call("sample.sumAndDifference", 5, 3)
sum = result["sum"]
difference = result["difference"]
puts "Sum: #{sum}, Difference: #{difference}"

server

#!/usr/local/bin/ruby

require "xmlrpc/server"
s = XMLRPC::CGIServer.new
s.add_handler("sample.sumAndDifference") do |a,b|
  { "sum" => a + b, "difference" => a - b }
end
s.serve

proxy

| 17:39 | proxy - Rubyの魔神 を含むブックマーク はてなブックマーク - proxy - Rubyの魔神 proxy - Rubyの魔神 のブックマークコメント

proxy()を使うと関数のように呼べる

server独立型

require "xmlrpc/server"

s=XMLRPC::Server.new(10000)

s.add_handler("test.mul")do |a|
	a*2
end
s.serve

client

require "xmlrpc/client"

s=XMLRPC::Client.new("localhost","/mul2",10000)

michael = s.proxy("test")
result = michael.mul(310) 
p result

RubyでRS-232C

| 18:12 | RubyでRS-232C - Rubyの魔神 を含むブックマーク はてなブックマーク - RubyでRS-232C - Rubyの魔神 RubyでRS-232C - Rubyの魔神 のブックマークコメント

#require 'timeout'

system "MODE COM1 BAUD=9600 PARITY=N DATA=8 STOP=1"
com1 = open("com1", "r+b")#.binmode

#com1  = open("/dev/cuaa0", "r+")
#system( "stty < /dev/cuaa0 2400" )

#status = timeout(15) {          # Time Limit

  com1.syswrite "AT\r\n"    # RS232C OUT
  sleep(1)
  strem = ''
  while c = com1.sysread(1)    # RS232C IN
          strem += c
          break if c == "\n"
  end
  print strem

#}       # End of Time Limit routine
#print status,"\n" unless status 
トラックバック - http://ruby.g.hatena.ne.jp/garyo/20061129

2006-11-28

XMLRPC Ruby クライアント

| 14:35 | XMLRPC Ruby クライアント - Rubyの魔神 を含むブックマーク はてなブックマーク - XMLRPC Ruby クライアント - Rubyの魔神 XMLRPC Ruby クライアント - Rubyの魔神 のブックマークコメント

12.1. Ruby クライアント

単純な Ruby クライアントを示します -

require "xmlrpc/client"

# Make an object to represent the XML-RPC server.
server = XMLRPC::Client.new( "xmlrpc-c.sourceforge.net", "/api/sample.php")

# Call the remote server and get our result
result = server.call("sample.sumAndDifference", 5, 3)

sum = result["sum"]
difference = result["difference"]

puts "Sum: #{sum}, Difference: #{difference}"
Ruby での XML-RPC の使い方

XMLRPC Ruby サーバ

| 14:34 | XMLRPC Ruby サーバ - Rubyの魔神 を含むブックマーク はてなブックマーク - XMLRPC Ruby サーバ - Rubyの魔神 XMLRPC Ruby サーバ - Rubyの魔神 のブックマークコメント

12.2. Ruby サーバ

単純な Ruby サーバを示します -

サイトの例には誤記があったので訂正しました。

誤:s.add_hanlder("sample.sumAndDifference") do |a,b|

正:s.add_handler("sample.sumAndDifference") do |a,b|

require "xmlrpc/server"

s = XMLRPC::CGIServer.new

s.add_handler("sample.sumAndDifference") do |a,b|
  { "sum" => a + b, "difference" => a - b }
end

s.serve
Ruby での XML-RPC の使い方

open-uri

| 09:48 | open-uri - Rubyの魔神 を含むブックマーク はてなブックマーク - open-uri - Rubyの魔神 open-uri - Rubyの魔神 のブックマークコメント

open-uri について

いきなり、タイトルとは違うライブラリについて紹介してしまいまして恐縮ですが、 Ruby にはとても簡潔で使いやすい HTTPアクセスできるライブラリとして open-uri があります。

コマンドラインから次のコマンドを実行すればその威力が分かるでしょう。

ruby -ropen-uri -e 'open("http://www.ruby-lang.org/ja/").read.display'
Rubyist Magazine - 標準添付ライブラリ紹介 【第 7 回】 net/http
トラックバック - http://ruby.g.hatena.ne.jp/garyo/20061128

2006-11-27

COM オブジェクトの調べ方

| 12:36 | COM オブジェクトの調べ方 - Rubyの魔神 を含むブックマーク はてなブックマーク - COM オブジェクトの調べ方 - Rubyの魔神 COM オブジェクトの調べ方 - Rubyの魔神 のブックマークコメント

COM オブジェクトの調べ方

Rubyist Magazine - Win32OLE 活用法 【第 1 回】 Win32OLE ことはじめ

オブジェクトブラウザは、MS OfficeVisual Basic for Applications のエディタをまず起動して、[F2] キーを押すことで起動できます。

 それはVBの「オブジェクトブラウザ」を使う方法です。これはまさにオブジェクトにどんなメソッドやプロパティがあるかを知るためのツールです。使い方は、VBメイン画面でF2を押し起動させ、「オブジェクトブラウザ」のダイアログで右クリックし、「参照設定」を選び、知りたいオブジェクトを選ぶだけです。

Technical Information

RubyでIEを使ってgoogle検索

| 12:33 | RubyでIEを使ってgoogle検索 - Rubyの魔神 を含むブックマーク はてなブックマーク - RubyでIEを使ってgoogle検索 - Rubyの魔神 RubyでIEを使ってgoogle検索 - Rubyの魔神 のブックマークコメント

http://jp.rubyist.net/magazine/?0003-Win32OLE

require 'win32ole'

ie = WIN32OLE.new('InternetExplorer.Application')
ie.Navigate("http://www.google.co.jp/")
ie.Visible = true
while ie.busy
  sleep 1
end
q = ie.document.all.Item("q")
q.Value = "ruby"
btnG = ie.document.all.Item("btnG")
btnG.click()

みなみな2009/07/10 12:31「日本語のページを検索する」の方のラジオボタンをチェックするにはどうすればいい??

トラックバック - http://ruby.g.hatena.ne.jp/garyo/20061127

2006-11-26

uploader

| 01:14 | uploader - Rubyの魔神 を含むブックマーク はてなブックマーク - uploader - Rubyの魔神 uploader - Rubyの魔神 のブックマークコメント

http://q.hatena.ne.jp/1164332804

#!/usr/bin/env ruby

require "cgi"

cgi = CGI.new("html4Tr")
if cgi.request_method == "POST"
  tmp = cgi.params['filename'][0]
  open("store/" + tmp.original_filename, "w") { |io|
    io.write(tmp.read)
  }
end

files = []
Dir.glob("store/*") do |file|
  files.push(cgi.a(file) {file})
end
file_list = files.join(cgi.br + "\n")

cgi.out do
  cgi.html("PRETTY" => "  ") do
    cgi.head do
      cgi.title do "upload"; end
    end + cgi.body do
      cgi.multipart_form(cgi.script_name) do
        cgi.file_field("filename", 50) + cgi.submit
      end + file_list.to_s
    end
  end
end

文字列中で指定したパターンにマッチする部分を置換する

| 文字列中で指定したパターンにマッチする部分を置換する - Rubyの魔神 を含むブックマーク はてなブックマーク - 文字列中で指定したパターンにマッチする部分を置換する - Rubyの魔神 文字列中で指定したパターンにマッチする部分を置換する - Rubyの魔神 のブックマークコメント

文字列中で指定したパターンマッチする部分を置換するにはString#sub、String#gsubメソッドを使用します。 String#subメソッドは文字列中で最初にマッチした部分だけを置換しますが、String#gsubメソッドはマッチする全ての部分を置換します。パターンには正規表現も指定できます。

s = "Apple Banana Apple Orange"

p s.sub("Apple", "Pine") #=> "Pine Banana Apple Orange"

p s.gsub("Apple", "Pine") #=> "Pine Banana Pine Orange"

String#sub、String#gsubメソッドにはそれぞれ破壊的メソッドString#sub!、String#gsub!が用意されています

Rubyで簡単なHTTPサーバ

| Rubyで簡単なHTTPサーバ - Rubyの魔神 を含むブックマーク はてなブックマーク - Rubyで簡単なHTTPサーバ - Rubyの魔神 Rubyで簡単なHTTPサーバ - Rubyの魔神 のブックマークコメント

Rubyで簡単なHTTPサーバを作ろうと思って調べてみました。

webrickを使えば、あっというまにできました。

#!ruby
require 'webrick'

srv = WEBrick::HTTPServer.new({
  :DocumentRoot => './',
  :BindAddress => '127.0.0.1',
  :Port => 10080})
srv.start
Rubyで簡易HTTPサーバ (山本隆の開発日誌)

http://www.hyuki.com/d/200511.html#i20051111184206

require 'socket'

header = "HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n"
form = "<form action='/'><textarea name='m'></textarea><input type='submit'></form>"

server = TCPServer.open(8888)
while true
  socket = server.accept
  request = socket.readline
  socket.write "#{header}<html><pre>#{request}</pre>#{form}</html>"
  socket.close
end

GUI付

| GUI付 - Rubyの魔神 を含むブックマーク はてなブックマーク - GUI付 - Rubyの魔神 GUI付 - Rubyの魔神 のブックマークコメント

require 'socket'

system("start http://localhost:8888/")

header = "HTTP/1.0 200 OK\r\nContent-type: text/html\r\n\r\n"
form = "<form action='/'><textarea name='m'></textarea><BR><input type='file' name='file'><input type='submit'></form>"

server = TCPServer.open(8888)
while true
  socket = server.accept
  request = socket.readline
  socket.write "#{header}<html><pre>#{request}</pre>#{form}</html>"
  socket.close
end

CSVファイル処理

| CSVファイル処理 - Rubyの魔神 を含むブックマーク はてなブックマーク - CSVファイル処理 - Rubyの魔神 CSVファイル処理 - Rubyの魔神 のブックマークコメント

#!ruby -Ks
require 'csv'

csv = CSV.open('test.csv', 'r')
csv.each_with_index {|line, i|
puts "#{i+1}行目の最初のフィールド: " + line[0]
}
Yahoo!知恵袋 - <<Ruby初心者なんですが。。。>> Excel...

MySQL

| MySQL - Rubyの魔神 を含むブックマーク はてなブックマーク - MySQL - Rubyの魔神 MySQL - Rubyの魔神 のブックマークコメント

require 'mysql'

#my = Mysql::new("localhost","ruby","")
#my.create_db("TEST_RUBY")
#my.close

object = Mysql::new("localhost","ruby","","TEST_RUBY")
#object.query('create table test_table (name char(32),price int)')

#object.query("insert into test_table values ('apple',300);")
#object.query("insert into test_table values ('orange',80);")
#object.query("insert into test_table values ('banana',150);")
#object.query("insert into test_table values ('apple',250);")
#object.query("insert into test_table values ('orange',3450);")
#object.query("insert into test_table values ('banana',450);")

f_name='apple'
res_price = object.query("select name,price from test_table where name='#{Mysql::quote f_name}'")

p res_price

p res_price.num_rows

res_price.each do |name,price|
p name,price
end

object.close

MySQL+CGI掲示板(自作)

| MySQL+CGI掲示板(自作) - Rubyの魔神 を含むブックマーク はてなブックマーク - MySQL+CGI掲示板(自作) - Rubyの魔神 MySQL+CGI掲示板(自作) - Rubyの魔神 のブックマークコメント

#!/usr/local/bin/ruby

require "cgi"
require "mysql"


print "Content-Type: text/html\n"
print "\n"
print <<EOF
<html>
<head></head>
<body>
EOF

day = Time.new

cgi = CGI.new

object = Mysql::new("localhost","ruby","","TEST_RUBY")
if cgi['test1']!="" and cgi['test2'] != "" then
  s = "insert into test_bbs values (\"#{day.to_s}\",\"#{cgi['test1']}\",\"#{cgi['test2']}\");"
  object.query(s)
end

print <<EOF
<form method=POST action="./db_bbs.rb">
URL<input type="text" name="test1" value="">
Message<input type="text" name="test2" value="">
<input type="submit" value="send"><input type="reset" value="RESET">
</form>
EOF

res = object.query("select * from test_bbs order by date desc")
res.each do |date,url,comment|
	puts date + 'URL <a href="' + url +'">'+ url +"</A>  message " + comment + "<BR>"
end
object.close

print <<EOF
</body>
</html>
EOF
#!/usr/local/bin/ruby

require 'mysql'

#object = Mysql::new("localhost","ruby","")
#object.create_db("TEST_RUBY")
#object.close

object = Mysql::new("localhost","ruby","","TEST_RUBY")
object.query('create table test_bbs (date text,url text,comment text)')
object.close

ワイルドカードにマッチしたファイル全てに処理を行う

| ワイルドカードにマッチしたファイル全てに処理を行う - Rubyの魔神 を含むブックマーク はてなブックマーク - ワイルドカードにマッチしたファイル全てに処理を行う - Rubyの魔神 ワイルドカードにマッチしたファイル全てに処理を行う - Rubyの魔神 のブックマークコメント

Dir.glob("**/*.txt") do |file|
  puts file
end
 ワイルドカードにマッチしたファイル全てに処理を行う

Dir::globメソッドにより指定したワイルドカードを展開し、マッチしたファイルの一覧を取得することができます。以下のようにするとマッチした全てのファイルに対して順番に処理を行うことができます。

Dir::glob("/home/take/public_html/*.html").each {|f|
  # ここにマッチしたファイルに対して行う処理を記述する
  # この例ではファイル名とファイルのサイズを標準出力へ出力している
  puts "#{f}: #{File::stat(f).size} bytes"
}

ワイルドカードに**/を指定するとサブディレクトリ配下のファイルもマッチします。以下の例では/home/take/public_html配下にある*.htmlのファイル名とファイルサイズを標準出力へ出力します。

Dir::glob("/home/take/public_html/**/*.html").each {|f|
  # ここにマッチしたファイルに対して行う処理を記述する
s  # この例ではファイル名とファイルのサイズを標準出力へ出力している
  puts "#{f}: #{File::stat(f).size} bytes"
}

ワイルドカードには以下のものがあります。

*p2*
    空文字列を含む任意の文字列と一致します。 
?
    任意の一文字と一致します。
[ ]
    []内のいずれかの文字と一致します。A-Zのように指定すると範囲を表します。[] が ^の場合、そこに含まれない文字と一致します。
{ }
    {}内で,で区切られた文字列の組合せに展開します。例えばfoo{a,b,c}はfooa, foob, foocに展開されます。他のワイルドカードと異なり、展開結果のファイルが存在している必要はありません。 ]
**/
    ディレクトリを再帰的に辿りマッチを行います。例えば、foo/**/ はfoo/bar/、foo/bar/hogeなど、配下の全サブディレクトリとマッチします。 

インスタンス変数へアクセスするメソッドを簡単に定義する

| インスタンス変数へアクセスするメソッドを簡単に定義する - Rubyの魔神 を含むブックマーク はてなブックマーク - インスタンス変数へアクセスするメソッドを簡単に定義する - Rubyの魔神 インスタンス変数へアクセスするメソッドを簡単に定義する - Rubyの魔神 のブックマークコメント

attr_readerメソッド、attr_writerメソッド、attr_accessorメソッドを使うとインスタンス変数へアクセスするためのメソッドが自動的に定義されます。メソッド名はそのインスタンス変数と同一の名称で定義されます。attr_readerメソッドは読み出しメソッドのみ、attr_writerメソッドは代入メソッドのみ、attr_accessorメソッドは両方のメソッドが定義されます。

class SampleClass
  def iniitilize
    @a = 0
    @b = 0
    @c = 0
  end

  attr_accessor :a, :b, :c
end

o = SampleClass.new
o.a = 10
o.b = 20
o.c = 30

p o.a #=> 10
p o.b #=> 20
p o.c #=> 30

足し算プログラム

| 足し算プログラム - Rubyの魔神 を含むブックマーク はてなブックマーク - 足し算プログラム - Rubyの魔神 足し算プログラム - Rubyの魔神 のブックマークコメント

#!/usr/local/bin/ruby

require "cgi"

print "Content-Type: text/html\n"
print "\n"

day = Time.new

cgi = CGI.new
f=File.open("log.txt","a")
f.puts(day.to_s + " " + cgi['test1']+"+"+cgi['test2']+"="+(cgi['test1'].to_i+cgi['test2'].to_i).to_s)
f.close

print <<EOF
<html>
<head></head>
<body>
<form method=POST action="./add.rb">
<input type="text" name="test1" value="">
<input type="text" name="test2" value="">
<input type="submit" value="send"><input type="reset" value="RESET">
</form>
EOF
f = File.open("log.txt","r")

f.each do |line|
  puts line,"<BR>"
end

print <<EOF
</body>
</html>
EOF

引数はARGV配列に入る

| 引数はARGV配列に入る - Rubyの魔神 を含むブックマーク はてなブックマーク - 引数はARGV配列に入る - Rubyの魔神 引数はARGV配列に入る - Rubyの魔神 のブックマークコメント

http://homepage1.nifty.com/~tetsu/ruby/learn/echo.html#argv

#! /usr/local/bin/ruby

ARGV.each do |i|
  print i, ' '
end

print "\n"

ハッシュでクロス集計

| ハッシュでクロス集計 - Rubyの魔神 を含むブックマーク はてなブックマーク - ハッシュでクロス集計 - Rubyの魔神 ハッシュでクロス集計 - Rubyの魔神 のブックマークコメント

f = File.open("all.csv")

b=[]
judge={}
dt={}
cross={}
c=[]

while line = f.gets
  v = line.split(",")
  puts v[0]
  b << v
  c<< Data.new(v)
  if judge[v[2]] == nil then
    judge[v[2]] = 1
  else
    judge[v[2]] = judge[v[2]] + 1
  end

  if dt[v[0]] == nil then
    dt[v[0]] = 1
  else
    dt[v[0]] = dt[v[0]] + 1
  end

  if cross[v[0] + " " + v[2]] == nil then
    cross[v[0] +  " " + v[2]] = 1
  else
    cross[v[0] +  " " + v[2]] = cross[v[0] +  " " + v[2]] + 1
  end
end

judge.each do |i|
  p i
end

dt.each do |i|
  p i
end

cross.each do |i|
  p i
end

文字列を整数に変換する (to_i)

| 文字列を整数に変換する (to_i) - Rubyの魔神 を含むブックマーク はてなブックマーク - 文字列を整数に変換する (to_i) - Rubyの魔神 文字列を整数に変換する (to_i) - Rubyの魔神 のブックマークコメント

文字列を数値に変換するにはString#to_iメソッドを使います。

i = 1
s = "999"

i = i + s.to_i #=> 1000

現在の時刻を取得する

| 現在の時刻を取得する - Rubyの魔神 を含むブックマーク はてなブックマーク - 現在の時刻を取得する - Rubyの魔神 現在の時刻を取得する - Rubyの魔神 のブックマークコメント

Time#nowメソッドにより現在の時刻を取得することができます。Time#nowメソッドはTimeオブジェクトを返却します。

day = Time.now
p day #=> "Sun May 20 23:48:45 JST 2001"
p day.year #=> 2001
p day.month #=> 5
p day.day #=> 20
p day.hour #=> 23
p day.min #=> 48
p day.sec #=> 45
p day.wday #=> 0

時刻オブジェクトを文字列に変換する

| 時刻オブジェクトを文字列に変換する - Rubyの魔神 を含むブックマーク はてなブックマーク - 時刻オブジェクトを文字列に変換する - Rubyの魔神 時刻オブジェクトを文字列に変換する - Rubyの魔神 のブックマークコメント

Time#to_sメソッドにより時刻オブジェクトを文字列へ変換することができます。

day = Time.now
p day.to_s #=> "Now, Sunday May 20 23:33:37 JST 2001"

1行チャット

| 1行チャット - Rubyの魔神 を含むブックマーク はてなブックマーク - 1行チャット - Rubyの魔神 1行チャット - Rubyの魔神 のブックマークコメント

#!/usr/local/bin/ruby

require "cgi"

print "Content-Type: text/html\n"
print "\n"

day = Time.new

cgi = CGI.new
f=File.open("log.txt","a")
f.puts(day.to_s + " " + cgi['test'])
f.close

print <<EOF
<html>
<head></head>
<body>
<form method=POST action="./comment.rb">
<input type="text" name="test" value="">
</form>
EOF
f = File.open("log.txt","r")

f.each do |line|
  puts line,"<BR>"
end

print <<EOF
</body>
</html>
EOF

電話番号4分割ツール

| 電話番号4分割ツール - Rubyの魔神 を含むブックマーク はてなブックマーク - 電話番号4分割ツール - Rubyの魔神 電話番号4分割ツール - Rubyの魔神 のブックマークコメント

f1=File.open("telno1.txt","w")
f2=File.open("telno2.txt","w")
f3=File.open("telno3.txt","w")
f4=File.open("telno4.txt","w")

infile = open("telno.txt")
i=0
infile.each { |line|
	print line
	if i % 4 == 0 then
		f1.write line
	elsif i % 4 == 1 then
		f2.write line
	elsif i % 4 == 2 then
		f3.write line
	elsif i % 4 == 3 then
		f4.write line
	end
	i = i + 1
}

テキストファイルを配列に読み込む

| テキストファイルを配列に読み込む - Rubyの魔神 を含むブックマーク はてなブックマーク - テキストファイルを配列に読み込む - Rubyの魔神 テキストファイルを配列に読み込む - Rubyの魔神 のブックマークコメント

open("telno1.txt") {|file|
  print file.readlines[99]
}

ファイル読み込み

| ファイル読み込み - Rubyの魔神 を含むブックマーク はてなブックマーク - ファイル読み込み - Rubyの魔神 ファイル読み込み - Rubyの魔神 のブックマークコメント

Ruby:
infile = open("file")
while infile.each
  print $_
end

または
infile = open("file")
infile.each { |line|
  print line
}

または
foreach ("file") { |line|
  print line
}

コマンド実行

| コマンド実行 - Rubyの魔神 を含むブックマーク はてなブックマーク - コマンド実行 - Rubyの魔神 コマンド実行 - Rubyの魔神 のブックマークコメント

注意 引数は''で囲むこと ""で囲った場合パスの¥をエスケープコードとみなすため

system(command)

system(program[, arg1[, arg2[, ...])

command を実行して、成功した時(子プロセスが終了ステータス 0 で終了した時)には真を、失敗した時(コマンドが実行できなかった場合も含む)には偽を返します。終了ステータス変数 $? で参照できます

現在時刻表示

| 現在時刻表示 - Rubyの魔神 を含むブックマーク はてなブックマーク - 現在時刻表示 - Rubyの魔神 現在時刻表示 - Rubyの魔神 のブックマークコメント

#!/usr/local/bin/ruby

t=Time.now

printf("now %d/%d/%d %d:%d:%d \n",t.year,t.month,t.day,t.hour,t.min,t.sec)


トラックバック - http://ruby.g.hatena.ne.jp/garyo/20061126

2006-11-25

最近

15:48 | 最近 - Rubyの魔神 を含むブックマーク はてなブックマーク - 最近 - Rubyの魔神 最近 - Rubyの魔神 のブックマークコメント

Ruby勉強中です。メモ代わりに使います。

MySQLCGIを使った掲示板ができました。

ルビーについて調べたことをここにキャッシュします。

トラックバック - http://ruby.g.hatena.ne.jp/garyo/20061125