ibis's Wiki - Ruby Diff
- Added parts are displayed like this.
- Deleted parts are displayed
like this.
!!お遊びプログラム1
!!!eruby版 簡単チャット
<<<
<% ERuby.charset = "UTF-8" %>
<!DOCTYPE html
PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head> <meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>チャットルーム</title>
</head>
<body>
<form action="chat.rhtml" methond="post">
お名前:
<input type="text" name="name" size="10">
コメント:
<input type="text" name="msg" size="40">
<input type="submit" name="comment" value="発言/更新">
</form>
<hr>
<%
require 'cgi'
logname = "log.cgi" # ログファイル名
cgi = CGI.new
loga = []
log = ""
name = cgi.params['name'][0]
name = "" if name == nil
name = name.slice(0,10)
msg = cgi.params['msg'][0]
msg = "" if msg == nil
msg = msg.slice(0,40)
if name != "" && msg != "" then
line = CGI::escapeHTML("<#{name}>:#{msg}") + "<br>\n"
end
unless File::exist?(logname) then
open(logname, "w"){}
end
open(logname, "r"){|logf|
loga = logf.readlines
}
open(logname, "w"){|logf|
loga.unshift(line)
log = loga[0...10].join
logf.write(log)
}
print log
%>
</body>
</html>
>>>
*ログファイル名を適当に設定
*ログファイルのロック処理すらしていないので単なるお遊びです
----
!!お遊びプログラム2
[[URLを全部エンコードしてみるCGI|http://ibis.pajya.net/cgi/encode.cgi]]
<<<
#!/usr/local/bin/ruby
$KCODE = "e"
require 'cgi'
cgi_name = ENV['SCRIPT_NAME']
form = <<EOT
<form action="#{cgi_name}" method="POST">
<textarea name="data" rows="10" cols="70"></textarea><br>
<input type="hidden" name="mode" value="encode">
<input type="submit" value="変換!"><br>
</form>
EOT
my_url = "<a href=\"#{cgi_name}\">もう一回</a>"
cgi = CGI.new("html3")
mode = cgi.params["mode"][0]
data = ""
if mode == "encode" then
result = ""
if cgi.params["data"][0] =~ %r!(\w*://)(.*)! then
result = $1
data = $2
else
data = cgi.params["data"][0]
end
i = 0
str = ""
while i < data.length do
if data[i].chr=="/" || data[i].chr=="=" || data[i].chr=="&" || data[i].chr=="?" then
str = data[i].chr
i += 1
elsif data[i...i+3] =~ /%\d\d/
str = data[i...i+3]
i += 3
else
str = "%" + sprintf("%2X", data[i])
i += 1
end
result += str
end
end
cgi.out("text/html; charset=EUC-JP"){
cgi.html(){
cgi.head{ cgi.title{"encode"} } +
cgi.body(){
if mode == "encode" then
result + "<br>\n" + my_url
else
form
end
}
}
}
>>>
変換元のURLに"/" "=" "&" "?" や、URLエンコードされた /%\d\d/ が含まれていた場合再エンコードしないようにしているが、CGIの変数名等もURLエンコードしてしまうのでうまくいかないのもあります。
あくまでお遊び:-)
たとえば [[Yahoo! JAPAN|http://www.yahoo.co.jp/]]は
http://%77%77%77%2E%79%61%68%6F%6F%2E%63%6F%2E%6A%70/ でも行けます。
----
!!!eruby版 簡単チャット
<<<
<% ERuby.charset = "UTF-8" %>
<!DOCTYPE html
PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head> <meta http-equiv="Content-Language" content="ja">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>チャットルーム</title>
</head>
<body>
<form action="chat.rhtml" methond="post">
お名前:
<input type="text" name="name" size="10">
コメント:
<input type="text" name="msg" size="40">
<input type="submit" name="comment" value="発言/更新">
</form>
<hr>
<%
require 'cgi'
logname = "log.cgi" # ログファイル名
cgi = CGI.new
loga = []
log = ""
name = cgi.params['name'][0]
name = "" if name == nil
name = name.slice(0,10)
msg = cgi.params['msg'][0]
msg = "" if msg == nil
msg = msg.slice(0,40)
if name != "" && msg != "" then
line = CGI::escapeHTML("<#{name}>:#{msg}") + "<br>\n"
end
unless File::exist?(logname) then
open(logname, "w"){}
end
open(logname, "r"){|logf|
loga = logf.readlines
}
open(logname, "w"){|logf|
loga.unshift(line)
log = loga[0...10].join
logf.write(log)
}
print log
%>
</body>
</html>
>>>
*ログファイル名を適当に設定
*ログファイルのロック処理すらしていないので単なるお遊びです
----
!!お遊びプログラム2
[[URLを全部エンコードしてみるCGI|http://ibis.pajya.net/cgi/encode.cgi]]
<<<
#!/usr/local/bin/ruby
$KCODE = "e"
require 'cgi'
cgi_name = ENV['SCRIPT_NAME']
form = <<EOT
<form action="#{cgi_name}" method="POST">
<textarea name="data" rows="10" cols="70"></textarea><br>
<input type="hidden" name="mode" value="encode">
<input type="submit" value="変換!"><br>
</form>
EOT
my_url = "<a href=\"#{cgi_name}\">もう一回</a>"
cgi = CGI.new("html3")
mode = cgi.params["mode"][0]
data = ""
if mode == "encode" then
result = ""
if cgi.params["data"][0] =~ %r!(\w*://)(.*)! then
result = $1
data = $2
else
data = cgi.params["data"][0]
end
i = 0
str = ""
while i < data.length do
if data[i].chr=="/" || data[i].chr=="=" || data[i].chr=="&" || data[i].chr=="?" then
str = data[i].chr
i += 1
elsif data[i...i+3] =~ /%\d\d/
str = data[i...i+3]
i += 3
else
str = "%" + sprintf("%2X", data[i])
i += 1
end
result += str
end
end
cgi.out("text/html; charset=EUC-JP"){
cgi.html(){
cgi.head{ cgi.title{"encode"} } +
cgi.body(){
if mode == "encode" then
result + "<br>\n" + my_url
else
form
end
}
}
}
>>>
変換元のURLに"/" "=" "&" "?" や、URLエンコードされた /%\d\d/ が含まれていた場合再エンコードしないようにしているが、CGIの変数名等もURLエンコードしてしまうのでうまくいかないのもあります。
あくまでお遊び:-)
たとえば [[Yahoo! JAPAN|http://www.yahoo.co.jp/]]は
http://%77%77%77%2E%79%61%68%6F%6F%2E%63%6F%2E%6A%70/ でも行けます。
----