スキップしてメイン コンテンツに移動

投稿

ラベル(ruby)が付いた投稿を表示しています

Rubyのスレッドプログラミングで悩んでいます。添削お願いします><

Rubyのスレッドを一定数に抑えたい この書き方がスマートかどうか分からないので、ブログにアップして添削を待つというWeb2.0な対応(意味不) やりたい事は、Rubyのスレッドを一定数以下に抑えたい。 例えばスレッドを一気に20も30もがーっと立ち上げるんじゃなくて、5個とか10個とかこちらでコントロールできる範囲でそうしたい。

IEで動かない一行掲示板作ってみたよー。

ボカロアイコン 一行掲示板 イメージは上図の通り。 みっくみ~くにし~てやんよ~♪ 開発はJavaScript+CSS+Rubyという定番的な定番です。 ファイル保存なのでとってもアレですし、回線がアレなので、アレでアレでアレです。 #分からん

自分用rubyメモ

今日rubyを鯖にインストールしなおしたので、そのメモ。 今まで、yum install rubyみたいな軟弱なやり方だったけど、そろそろyumに頼るのはやめようかなぁとか思った。 時代はrpmだよねー!(どんだけ時代逆行してるんだ、お前は) って事で、rpmじゃないとやだもん!って人用のメモ 流れ ・yumでインストールしたrubyパッケージを片っ端から削除 ・Rubyインストール  ・rubyソースダウンロード  ・make  ・rpm作成  ・インストール ・gemインストール  ・gemソースダウンロード  ・rpm作成  ・インストール ・mod_rubyインストール  ・mod_rubyソースダウンロード  ・make うわ、書き出して超やる気なくした ぐちってもしょうがないから一気に行くぞー! ・yumでインストールしたrubyパッケージを片っ端から削除  コマンドはyum remove ruby ruby-libs  多分これで全部削除できたはず  後、gemとか上手く削除ってくれい。削除の仕方は知らないwww(ぉい) ・Rubyインストール  ・rubyソースダウンロード   今回は1.8.7p72を落とす。    wget http://core.ring.gr.jp/archives/lang/ruby/ruby-1.8.7-p72.tar.gz  ・make    tar zxvf ruby-1.8.7-p72.tar.gz cd ruby-1.8.7-p72 ./configure --prefix=/usr make ・rpm作成   checkinstallは入ってるよねー?(ぉい)    checkinstall --fstrans=no   パッケージタイプを聞かれたら、RPMを作るので、Rをタイプそれ以外はひたすらエンター   ね、簡単でしょ?  ・インストール    rpm -Uvh --nomd5 /usr/src/redhat/RPMS/i386/ruby-1.8.7-p72-1.i386.rpm   ね、簡単でしょ? ・gemインストール  ・gemソースダウンロード    wget http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz  ・rpm...

Rubyメモ Windows+Apache環境

Windows+Apache環境で見逃しまくっている初歩ミス コマンドプロンプトでまともに動いているのに急に動かなくなるCGIがある。 その時はたいてい #require 'rubygems' の記述が漏れている。 コマンドラインでは要らないけど、Apacheかます時は必要になる。 #多分、パスが通っているか通っていないかの違いだと思われ その辺良く分かっていないから、また時間が出来たら調べよう。

Rubyで変数に格納した文字列を正規表現で検索する方法

Rubyで文字列検索を関数化したい時あるよね! え? 無い? まあ、いいや。 変数に格納した文字列を正規表現で検索したい時は以下のようにする def hoge(query) line = "abc def ghi jkl mno pqr stu vwx yz" if /#{query}/ =~ line then p "fooooooorrryyyyyy!!!" end end hoge('abc') 式展開すれば良かったんですねー。 式展開しているサンプル少なすぎるだろ、F○ck! この方法を知るのに2時間もかかってやんの。馬鹿だなぁ、自分。 参考 http://oshiete1.goo.ne.jp/qa916511.html

解決!!

長かった戦いに終止符が打たれた! 一週間近く悩んでいたruby-openid使ったサンプルをようやく動かすことが出来た。 Loox Uと初音ミクで行こう!: 謎 http://looxu.blogspot.com/2008/11/blog-post_10.html Loox Uと初音ミクで行こう!: ruby-openidでのエラー状況 http://looxu.blogspot.com/2008/11/ruby-openid.html 結局悪さ(?)をしていたのは mod_ruby だった。 mod_rubyはセキュアな設計がされているため、デフォルトで$SAFE==1になっている。( http://www.modruby.net/doc/faq.ja.jis.html#label-5 ) その為、セキュリティエラーが出ていた。 見た目では、ただの例外なのでなんでこんなエラーが出るのか結局大元のソースを追っていくしか無かったのでかなり時間がかかったというオチ。 お陰でかなり勉強になりました。 対策(?)は以下のとおり。 /etc/httpd/conf.d/ruby.conf に RubySafeLevel 0 を追記。 これで、ようやくサンプルが動いた。 あー長かった……。 セキュリティレベル落としてるから、今後もXSS対策をしっかりしたコード書かないとなぁ。

ruby-openidでのエラー状況

consumer.beginを実行すると、OpenID::DiscoveryFailureの例外エラーが発生している。 ソースコード追い続けてるんだけどよく分からないorz なんか、バグというかこっちの設定がちゃんと出来ていないって感じかなぁ。 mod_rubyの設定なのか、rubyの設定なのか、はてまてApacheの設定なのか。 そもそも、CentOS側の設定が上手くいっていないのか。 exampleについているdiscoverは上手く行っているから余計に不可解。 Apacheユーザだから失敗してるのかなぁ。 ああ、よく分からん。

今、ruby-openidを使って認証用のコードを書いているんだけど、consumer.beginを走らせた所でこける。 謎すぎるorz 他の場所でこけるならともかく何故?!

うがああ

rubyでDBからデータ取ってきて表示するってスクリプト書いていたんだけど、全然更新されなくておかしいなぁと思って端末からアクセスして実行してみたら、そっちは更新されていてブラウザが駄目っぽかったからキャッシュを消しまくったんだけどやっぱり更新されずなんぞこれーとか思いながらApache起動したらちゃんと表示されやがりました。 mod_ruby侮りがたしorz

ruby de PDFの環境構築

参考ページ Haru Free PDF Libraryがすごい ">http://www.gesource.jp/weblog/archives/2008/07/haru_free_pdf_library.html フリーのPDFライブラリ http://www.kurano.jp/blog/sadayuki/articles/2007/03/21/%E3%83%95%E3%83%AA%E3%83%BC%E3%81%AEpdf%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA ぐぐったら、Haru Free PDF Libraryが日本語対応でよさげ。 RoR環境を構築していないので、こーゆー単品系のライブラリはありがたい。 ひとまずインストールしてみる。 libpngが必要なので、 yum install libpng-devel をやっておく。 後は、いつもどおり ./configure make make install 後は、Ruby拡張ライブラリをインストール cd if/ruby/ ruby extconf.rb make make install で、demoを実行するが……。 うごかねえええ!! /usr/lib/ruby/site_ruby/1.8/i386-linux/hpdf.so: libhpdf-2.1.0.so: cannot open shared object file: No such file or directory - /usr/lib/ruby/site_ruby/1.8/i386-linux/hpdf.so (LoadError) などというエラーが出る。 ん? もしかして、ライブラのパスが認識できて無い? 共有ライブラリをシステムに認識させるには ↑を参考にして /etc/ld.so.confに/usr/local/libを追加して、ldconfigを実行。 おk。動いた!

rubyでRSSのタイトル取得して表示

ちょっと書いてみた。 #!/usr/local/bin/ruby require 'rss' require 'kconv' require 'open-uri' url = "http://looxu.blogspot.com/feeds/posts/default?alt=rss" open( url ) do |http| response = http.read result = RSS::Parser.parse(response, false) result.items.each do | item | puts item.title end end kconvはいらないかも。 Windowsのコマンドラインで確認するときtosjis使ったから残ってるけど、Linuxな人はいらんと思う。 tosjisはputs item.title.tosjisみたいな感じで使ってちょ。

Ajax Chat作った。

元ネタは ここ ってかまるまるパクtta(ry 一部の人に公開して動きを試してもらおうと思う。 作成二日という適当っぷり&ほぼコピペw でも、prototype.js使ってないところに男気を感じるが良いさ! フロントエンドはHTML+JavaScript+CSS サーバ側はrubyって所がちょっとこだわっているかな。 あと、エスケープ処理を無駄にしているって所。 DB使っている訳じゃないけど、Web屋の癖として。 ああ、それからアンチIEの僕が作っているからIEお断りという素敵仕様。 IEでアクセスするとnice boat.になります。 なんというツンデレ仕様wwww うぇwwww こんな時間帯(午前4時)なので、大分変なテンションになっています。 Rubyソース #!/usr/local/bin/ruby require 'cgi' require 'kconv' class CHAT def initialize(log_filename='chat.log') @cgi = CGI.new @log = log_filename @MAX_LOG = 50 @log_buf = [] end #ログを読む def read_log open(@log){|f| f.each{|l| @log_buf << l.toutf8 break if @log_buf.size == @MAX_LOG } } end #ログを書く def write_log name = @cgi['name'].toutf8 comment = @cgi['comment'].toutf8 return unless name.size > 0 or comment.size > 0 #escape name = CGI.escapeHTML(name) comment = CGI.escapeHTML(comment) time = Time.now.strftime("%Y/%m/%...

リダイレクトを自前でやる

rubyで、リダイレクトを自分で書くという意味不明なことをやってました。 以下、クソコード #!/usr/local/bin/ruby require 'cgi' c = CGI.new r = Apache.request hoge = c["hoge"] if hoge != "" r.headers_out["Location"] = "ok.rb" else r.headers_out["Location"] = "ng.rb" end exit Apache::REDIRECT

rubyでsingleton

DB接続のところ。 require "singleton" require "dbi" class ControlDBConnect include Singleton def getInstance return DBI.connect("DBI:Pg:dbname:localhost","user","pass") end end これでシングルトン完成(爆) 後は connect = ControlDBConnect.instance.getInstance で、おk instanceをつけるだけでシングルトンになるってのが超らくちん rubyにはまる予感www

Rubyのサンプルコード

どこかで見たことあるとか言わないで(^^; という事で、Postgresへ繋げる為のテスト用コード require "dbi" begin dbh = DBI.connect("DBI:Pg:DBName:hostname","user","passwd") sth = dbh.prepare("select * from test") sth.execute sth.fetch{|row| p row } sth.finish #Exception rescue DBI::DatabaseError=>e p "DB Exception" p "Error Code: #{e.err}" p "Error Message: #{e.errstr}" ensure dbh.disconnect if dbh end

備忘録

Rubyでpostgresを使えるようにする Ruby/DBI+DBD:Pgのインストール http://rubyforge.org/projects/ruby-dbi/からruby-dbiをダウンロード 0.2.0では上手く動かなかったので、0.1.1を入れる。 tar -zxvf dbi-0.1.1.tar.gz cd ruby-dbi ruby setup.rb config --with=dbi,dbd_pg ruby setup.rb setup ruby setup.rb install Postgresモジュールのインストール tar -zxvf ruby-postgres-0.7.1.tar.gz cd ruby-postgres-0.7.1 ruby extconf.rb make make install

備忘録

mod_rubyを使っている場合、以下のrubyのコードは上手く動かない。 print "HTTP/1.1 200 OK\r\n" print "Content-Type: text/plain\r\n\r\n" print "hello world" 公式にはこれで行けるZEって書いてあるけど、何故か駄目だったorz ソース読めば分かるかもしれないけど、面倒だから止めた(ぇー やっぱり、クールに、 require "cgi" cgi = CGI.new print cgi.header("type"=>"text/plain") print "hello world" で対応する事にした。