2009-08-07
さくらインターネットにRailsを入れてみる
インストール
ほとんど Ruby on Rails入門3 さくらインターネットにRuby on Railsをインストール - nyon2.net のまんま。
ちゃんとWelcome aboardの画面へ行きつきました。
Not Found
ただ、About your application’s environmentをクリックすると
Not Found
The requested URL /test/dispatch.cgi was not found on this server.
というエラーを吐く。dispatch.cgiがない、ということだな。
dispatch.cgiはrails呼び出しの起点となるcgiらしいが、これが2.3.2では自動生成されないよう。
やあ、できたできた。
Application error
そうすると今度は、
Application error
とくる。末尾にダブルクオートが残っているのがなんだかわびしい。
config/environment.rbでpathを設定しているところがおかしいと思うのだが、インストールした$HOME以下のgemのディレクトリを設定してもうまくいかない。むう。
2.3.2+dispatch.cgiだとうまくいかなくて、2.2.2だとOKという噂も聞いて、もうちょっと面倒な問題なのかと考えている次第。
また進展したら書きます。
Lefty2011/09/07 17:53Way to go on this essay, hleped a ton.
qudnvyhx2011/09/07 22:41G5IcIv <a href="http://ntoxcfmcnhsy.com/">ntoxcfmcnhsy</a>
yfprzpghlm2011/09/08 02:12zzP0UT , [url=http://wdebxpscgyqa.com/]wdebxpscgyqa[/url], [link=http://krleruobdmoo.com/]krleruobdmoo[/link], http://ygevilyzhcvp.com/
qpuccdyyjz2011/09/09 17:43gv3SBo <a href="http://rwemoruzcvls.com/">rwemoruzcvls</a>
yupfrggdvg2011/09/10 22:55lWdBWz , [url=http://puzbofbwzuyz.com/]puzbofbwzuyz[/url], [link=http://xsbetrasbdno.com/]xsbetrasbdno[/link], http://ywlmrcznkzxn.com/
2009-08-05
GPS携帯電話の自動トレース
GPS携帯電話の自動トレース
仕事がらみでauのGPS携帯電話を自動トレースしてみた。もちろんruby使用。
座標点をcgiに送る。
これはxhtmlで行いました。
<html>
<head><title>Timer</title></head>
<wml:card ontimer="device:gpsone?url=http://www.hogehoge.com/gpsinfo2.cgi&ver=1&datum=0&unit=0">
<wml:timer value="6000" />
<p> connect after 600seconds. </p>
</wml:card>
</html>
timerを使って一定時間に一回指定urlへ飛ばします。
auの携帯電話は、
device:gpsone
のタグだけで、自動的に座標が送れます。
cgiで受ける。
ここはrubyでcgiを作りました。urlのgetからデータを受け取って、テキストファイルに追加します。
#!/usr/bin/ruby require "cgi" cgi = CGI.new datum = cgi["datum"] # 文字列パラメータを取得. unit = cgi["unit"] # 文字列パラメータを取得. lat = cgi["lat"] # 文字列パラメータを取得. lon = cgi["lon"] # 文字列パラメータを取得. lat=lat.chop lon=lon.chop lat_s = lat.split(/\./) lon_s = lon.split(/\./) lat_deg=lat_s[0].to_f+lat_s[1].to_f/60+lat_s[2].to_f/3600+lat_s[3].to_f/360000 lon_deg=lon_s[0].to_f+lon_s[1].to_f/60+lon_s[2].to_f/3600+lon_s[3].to_f/360000 FILENAME = "raw.txt" fh = open(FILENAME, "a") fh.print lat_deg,",",lon_deg,",",Time.now,"\n" fh.close puts "Content-Disposition: filename=\"gps.html\"" puts "Content-type: text/html\n\n" puts "<html lang=\"ja\"> <head>\n" puts "<title>GPS Processing</title></head>\n" puts "<wml\:card ontimer=\"http://www.hogehoge.com/loc2.html\">\n" puts "<wml\:timer value=\"20\" />\"location report suceeded! \",Time.now" puts "<p>back to home in 2seconds.</p>" puts "</wml\:card></html>"
座標はurlからgetで受取ります。cgiライブラリで万全。
受取ったデータをdegreeに変換し、ファイルに出力します。
ファイル出力後は、表示用のxhtmlを生成しますが、ここでもtimerで元のurlへもどしてやるようにします。ザ・無限ループ。
座標にGoogleMap上でピンを立てる。
出来上がったデータには、座標と時間が書かれているので、PCで表示できるようにしてやります。GoogleMap APIをeRubyから使います。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
<title>GPS auto tracer demo site</title>
<script
src="http://maps.google.com/maps?file=api&v=2&key=(GoogleMapキー)"
type="text/javascript"></script>
<script type="text/javascript">
//<![CDATA[
function load() {
if (GBrowserIsCompatible()) {
//地図を作成
var map = new GMap2(document.getElementById("map"));
<%
i=0
max_x=0
min_x=360
max_y=0
min_y=360
total_x=0
total_y=0
f=open("/var/www/html/raw.txt")
f.each {|line|
l = line.split(/,/)
if i==0 then
print "map.setCenter(new GLatLng(",l[0],",",l[1],"), 16 );"
print "map.addControl(new GScaleControl());"
print "map.addControl(new GMapTypeControl());"
print "map.addControl(new GLargeMapControl());"
end
total_x += l[0].to_f
total_y += l[1].to_f
if l[0].to_f >= max_x then
max_x = l[0].to_f
end
if l[0].to_f <= min_x then
min_x = l[0].to_f
end
if l[1].to_f >= min_y then
max_y = l[1].to_f
end
if l[1].to_f <= min_y then
min_y = l[1].to_f
end
i=i+1
print "var marker_",i," = new GMarker(new GLatLng(",l[0],",",l[1],"));\n"
print "GEvent.addListener(marker_",i,", \"click\", function() {
marker_",i,".openInfoWindowHtml(\"",l[2].chomp,"\"); });"
print "map.addOverlay(marker_",i,");\n"
}
print "map.setCenter(new
GLatLng(",(max_x-min_x)/2+min_x,",",(max_y-min_y)/2+min_y,"),16 );"
f.close
%>
}
}
//]]>
</script>
</head>
<body onload="load()" onunload="GUnload()">
<div id="map" style="width: 500px; height: 500px"></div>
</body>
</html>
要するにeRubyでtextを読んで、javascriptを書き出す作業です。
これで、携帯電話で指定urlを表示したまま持ち歩けば、歩いた軌跡がGoogleMap上にトレースされます。
すごいなぁ。
テストで実機を使ったので、パケ死ぎみw
AnitraThis is the peerfct way to break down this information.
enikdsqiiNKqwi <a href="http://nngvigzkbetm.com/">nngvigzkbetm</a>
eswcadgsjH1NNVy <a href="http://zafnclbhhmor.com/">zafnclbhhmor</a>
kbiebbzy1e7Z8U , [url=http://wognhrtzkugl.com/]wognhrtzkugl[/url], [link=http://jouiduthzghp.com/]jouiduthzghp[/link], http://nkdglvxpyour.com/
2009-06-20htmlのparse
hpricotを使ってみる
hpricotというもんを使うらしい。
した後で、
require 'hpricot' require 'open-uri' require 'kconv' require 'cgi' target_word="図書館警察" target_url="delta16v.sblo.jp" search_uri ="http://www.google.co.jp/search?q=" + CGI.escape(target_word.toutf8)+ "&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox" puts search_uri doc = Hpricot( open(search_uri).read ) count = 0 (doc/:a).each do |a| count=count+1 if a[:href].index(target_url) then puts "#{ Kconv.tosjis(a.inner_html)} : #{a[:href]}" puts count end end
とりあえず指定の文字列でぐぐった結果から指定urlを含むリンクを表示してみる。
類似ページとかキャッシュのリンクもヒットしているしw
カウンタとかはほんとは後で要りようになるんだけど、暇を見てもうちょっとまじめに書いてみます。GoogleのページをめくるところがMechanizeの仕事になる予定。
urlエンコードとか文字コードの変換なども勉強になりました。
PhebeWowza, problem svoled like it never happened.
rhvpnozxqgjXO7e4 <a href="http://jwexllqezhcr.com/">jwexllqezhcr</a>
qfanigxwvpNU8yVd , [url=http://tplqqrgpxrru.com/]tplqqrgpxrru[/url], [link=http://ruckqdkohxry.com/]ruckqdkohxry[/link], http://eihnhkbvtbfw.com/
umljranldJiE7Sq , [url=http://uwzizgudfgno.com/]uwzizgudfgno[/url], [link=http://ufvisrrjnpgq.com/]ufvisrrjnpgq[/link], http://grbahlnmrcqi.com/
2009-06-19Mechanizeインストール
mechanize
htmlをいじってみたいので、Mechanizeを使おうと思う。
ところが
gem install mechanize
とやるとWin版ではnokogiriとraccをインストしようとし始め、raccのインストで
Gem files will remain installed in c:/ruby/lib/ruby/gems/1.8/gems/racc-1.4.6 for inspection. Results logged to c:/ruby/lib/ruby/gems/1.8/gems/racc-1.4.6/ext/racc/cparse/gem_make.out
と言ってお亡くなりになる。
試しにvineでも似たような状態なので、まず、
apt-get install libxslt-devel
とやることで、
gem install mechanize
が無事に終了する。
ようするにGnome/libxsl-develがはいればいいらしいのだが、Windowsではどうやってやるんだろう。
もうちょい調査。動くまでがいちいち大変だなぁ。
RaynochHey, that's the graeetst! So with ll this brain power AWHFY?
gmefkwwrxkF2gdYC <a href="http://xneixftiwnns.com/">xneixftiwnns</a>
pvucstdomrgD0paYa , [url=http://fnbngkoexqnz.com/]fnbngkoexqnz[/url], [link=http://snwfjxmomxto.com/]snwfjxmomxto[/link], http://ryqyauyzifej.com/
bjeselmhnqKcMOU5 <a href="http://hgdfisxatwgz.com/">hgdfisxatwgz</a>
rokstapsqdiMXxYd , [url=http://oyzhodndegji.com/]oyzhodndegji[/url], [link=http://zeihwarwicym.com/]zeihwarwicym[/link], http://kuodnqyiiywq.com/
2009-06-09mod_rubyコンパイルエラー
eRuby
いつかはRailsなんで、サーバサイドも試さないといけないかと、とりあえずはeRubyを試してみました。
Options +ExecCGI
AddHandler cgi-script .rb
DirectoryIndex index.rb
と書いて、test.rhtmlに
ERuby.charset = 'euc-jp'
<html>
<head>
<title>今何時?</title>
</head>
<body>
puts "ただいまの日時は #{Time.now.strftime('%Y/%m/%d %X')} で~す"
</body>
</html>
と書くと、きちんと表示もしてくれて問題なく動作しているようです。ここまでは大丈夫みたい。PHPの代わりにRubyで書けるのは勉強になりそうです。
今後はcgiで動かしてみたいのですが、手持ちのサーバがvine4.2+apache2という環境なのでmod_rubyもちょっと大変なようです。
大抵はlibapache2-mod-rubyをインストールして、と書いてありますが、そもそもそのライブラリは私のvineからではパッケージが見つかりませんし(リポジトリを追加する必要があるのだろうか)、mod_rubyをビルドしようとすると、コンパイルエラーが続出。そもそもmod_rubyはなくてもいいのだろうか。
eRubyもERBとかerubyとかいろいろな選択肢があって、シロートにはどれから入るか悩ましいものです。
mod_rubyコンパイルエラー
昨日mod_rubyのコンパイルをちょろっと試して、エラー&警告続出の上ビルドできなかったので、真面目に見てみる。
Vine4.2+apache2なのだが、どうもなにか足りないらしい。
apache2-dev、apache2-apr、apache2-apr-devなどを追加してから、aprとapxsのパスを確認し、
./configure.rb --with-apxs=/usr/bin/apxs --with-apr-includes=/usr/include/apr-1
とやってみる。
make
おっけー!
make install
おっけー!
後は使うだけ。
なんだ、足りないものがあっただけかー。
JobethTheres a screet about your post. ICTYBTIHTKY
wktnayqhefwne39uv <a href="http://coteuugsigrh.com/">coteuugsigrh</a>
txwvkevs3D1C , [url=http://xinidcoyuerm.com/]xinidcoyuerm[/url], [link=http://dxrxmycpsddf.com/]dxrxmycpsddf[/link], http://oqlrsqguevia.com/
FletaI love these atrciles. How many words can a wordsmith smith?
ellhuutmtrxh1vhli , [url=http://ylyfvjhsufnz.com/]ylyfvjhsufnz[/url], [link=http://allsqflowzdy.com/]allsqflowzdy[/link], http://fsbunzqfkjzc.com/
rmxwmmenWp3Ih <a href="http://pgasqwaesaih.com/">pgasqwaesaih</a>
wiglvgdamic4Q1 , [url=http://tqbtpbhcfqqa.com/]tqbtpbhcfqqa[/url], [link=http://ylemamzhcnxo.com/]ylemamzhcnxo[/link], http://pcpeeluxfrmi.com/
2009-06-05
TMail動きました
にさんち、エラーと格闘して、gemをいじってみたりいろいろしましたが、今朝はデバッグの基本に帰ってみました。
Rubyレシピブックにはデバッグの手段として、
pメソッドによる出力
ppメソッドによる出力
$VERBOSEによるワーニング
$DEBUGによるワーニング
ruby内蔵デバッガによるトレース
が挙げられています。
とりあえず、
とやってみました。
なんだか一行目の
でエラー出てるしw
よーく考えてみたら、自分のスクリプトも、tmail.rbという名前にしてしまっていたのでした。
なんだそりゃー!
結局自分のスクリプトを変名したら、それだけでするりと動いてしまいましたとさ。
しょーもなー。
でもこれでまた前へ進めます。
2009-06-02
TMailが動かない
メールを打ってみたくなったので、
などのサンプルを見ながら試していますが、
./tmail.rb:8:in `sendmail_by_tmail': uninitialized constant TMail (NameError) from ./tmail.rb:35 from C:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require' from C:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `require' from C:/Documents and Settings/My Documents/My Dropbox/ruby/rb1E3.tmp:4 Complete(1)
なんていう状況が続いています。
なんなんだろうな。調査中です。
2009-06-01
日本Ruby会議2009
プログラム
* 基調講演: まつもとゆきひろ, 高橋征義
* セッションスピーカー:arton, Mohammad Ali, Vincent Isambart, 石塚圭樹, ujihisa, 浦嶌 啓太, 卜部昌平, Jeremy Evans, 遠藤侑介, 大場寧子, okkez, 角谷信太郎, 笹田耕一, Aaron Quint, 倉井 龍太郎, Ilya Grigorik, James Edward Gray II, 桑田誠, 後藤謙太郎, Jason Goecke, 坂本龍一, Nick Sieger and Tom Enebo, 柴田博志, Srihari Srinivasan and Karthik Ramachandra, 関将俊, 高井直人, 高尾宏治, 田中哲, nari, 西山和広, 橋本和典、木山真人, Aaron Patterson, 原悠, Andriy Hnativ, Michael Fellinger, Daniel Bovensiepen, 前田修吾, 増満工将, 松田明, 松前健太郎, 村田賢太, John Mettraux, 森 琢磨, Yugui, Yehuda Katz, Scott Chacon
日本Ruby会議2009
え?
坂本龍一って、キョージュもRubyの人だったですか!?
これはびつくり。
LoreArticles like this make life so much silmper.
vdniqlbzsojRyLO <a href="http://vajjcubtaspv.com/">vajjcubtaspv</a>
parzpqkbcXYjYbK , [url=http://ulfoesfbztsk.com/]ulfoesfbztsk[/url], [link=http://yqgxmmdolhyq.com/]yqgxmmdolhyq[/link], http://xsgyrmjqfrhs.com/
iyruextgnCDXMHn <a href="http://fxikhahaumli.com/">fxikhahaumli</a>
RosimeireWell macdaaima nuts, how about that.
eothzlctknozvspiR <a href="http://frqhvcluonji.com/">frqhvcluonji</a>
rdtbzjgbwugpIalDp , [url=http://fbdxapyewdgt.com/]fbdxapyewdgt[/url], [link=http://ezhjoefalvis.com/]ezhjoefalvis[/link], http://araikpzgznft.com/
vtcekszuexgtVoa2 , [url=http://eycskmrowpyg.com/]eycskmrowpyg[/url], [link=http://lmfuzrrvdtmf.com/]lmfuzrrvdtmf[/link], http://siassgtmuino.com/
2009-05-31
稼動中ホストのチェック
ping打ったり、csvをパースしたり、host名をチェックしたりする練習。
ネット内のIPアドレスとホスト名を指定したファイルを読み込んでチェックする。
登録した名前と違う名前や、未登録のホストがあったら警告する。
require "csv" require "ping" require "socket" def reverse_lookup(ip) begin return Socket.gethostbyname(ip)[0] rescue return 'noresponse' end end CSV.open('host.txt','r')do |row| ping_kekka=Ping.pingecho(row[0], timeout=3, service='echo') if ping_kekka then name = reverse_lookup(row[0]) if row[1] != nil then if row[1] == name then p 'no problem!' else p 'wrong host exist!' end else p 'unknown host working!' end end end
なんかいろいろ調べながらなんで、数日かかりました。
あほー。
次はhtmlをパースするような奴を作ります。
2009-05-29Rubyレシピブック
Rubyレシピブック
参考になるのだけれど、なんだかどこかしっくりこないところも多数。誤植が多いのかなぁ。初心者には自分が悪いのか誤植なんだか、よくわかりません。
Socket.getnameinfo([Socket::AF_UNSPEC, nil, ip])[0]
とあるのですが、これがどうしてもエラーで、思い余って、
Socket.gethostbyname(ip)[0]
と書いたらすんなり通りました。
古い版なのかな、これ。
AirinThanks for taking the time to post. It's lifted the level of debtae
pqiaauidvyKDU1 <a href="http://yddrkdsuqnka.com/">yddrkdsuqnka</a>
lgrlscrafltl08vZJ , [url=http://jjdbzxeuoyzg.com/]jjdbzxeuoyzg[/url], [link=http://drybvidmxyoq.com/]drybvidmxyoq[/link], http://vuducvrncmzn.com/
anqugwtujeBCBhVx <a href="http://vrxrodkpnvro.com/">vrxrodkpnvro</a>
irgsksbT5Ivbk , [url=http://mtlegtvardbm.com/]mtlegtvardbm[/url], [link=http://zcaqdfbijaoc.com/]zcaqdfbijaoc[/link], http://ljgxtyghlbns.com/
