Ruby
- 完璧に Cookie 取得する方法
Ruby の Cookie 情報取得について質問です。「取得できるサイトとできないサイトの違い」と、「取得する方法」をご教授ください。 現在、以下のコードで Cookie の情報を取得するプログラムを作っています。 require 'net/http' uri = URI.parse('http://www.google.co.jp') http = Net::HTTP.new(uri.host) http.start response = http.get '/' p response.get_fields('Set-Cookie') 上のコードのように "www.google.co.jp" などはちゃんと取得できるのですが、中には取得できないサイトもあります。 取得できない場合は、コマンドプロンプトに "nil" と表示されます。 例えば、 "http://auctions.yahoo.co.jp/" を Chrome ブラウザの EditCookie でみてみると、複数の Cookie を確認できます。 しかし上記のコードを試してみると、取得できません。 ・この原因は何なのか ・解決方法("auctions.yahoo.co.jp" からの取得方法を知りたいわけではなく、取得できないサイト一般についての解決策) この2点をご教授いただければ幸いです。
- 2次元配列から条件抽出した要素の操作
ある2次元配列から条件に合う要素だけ抜き出し、 抜き出した要素でまた2次元配列を作りたいのですがうまくいきません。 ary=[[3,7,5,6,],[4,7,3,9],[2,5,3,7],[8,1,4,3]] ary.each{|x| if x[1]>3 p x end } というかんじで条件抽出しているのですが、 ここで得た出力をまた [[4,7,3,9],[8,1,4,3]] というような2次元配列にしたいのですがやりかたがわかりません。
- 締切済み
- Ruby
- Summers226
- 回答数1
- Ruby ヒストグラムの作成
画像の輝度値が保存されたtxtファイルを開いて、輝度値のヒストグラムを表示したいのですがrubyの配列の操作に戸惑っています。histgram[value] += 1のvalueが不確定なのでnilになってしまいます。何か良い解決方法はありますか? image.txtは 輝度値 その他の情報となっているためsplit[0]で輝度値部分のみを抽出しています。 f = open('image.txt') color = Array.new histogram = Array.new correlation = Array.new n = 0 while c = f.gets color[n] = c.split[0].to_i value = c.split[0].to_i histogram[value] += 1 if(n>1) correlation[value + 50 * color[n-1] ] += 1 end n+=1 end f.close
- 締切済み
- Ruby
- ringon2012
- 回答数2
- rubyにおける変数と代入のメモリの様子について
Rubyの変数と代入演算は、メモリについてどのような扱いになっているのでしょうか。2点ほど疑問電があります。 1点目:代入演算は変数にアドレスを渡しているのか RubyLifeのRuby入門のサンプルをみて学習していたところ疑問がわきました。 http://www.rubylife.jp/ini/var/index4.html を参照しながら示します。 str1 = "Tokyo" str2 = str1 str1 << ",Japan" とやるとstr1もstr2も"Tokyo,Japan"となることから、rubyでの代入演算はアドレスを代入してると考えました。 2点目:新しくオブジェクトを代入すると別メモリ領域において、そのアドレスを代入しているのか str1 = "Tokyo" str2 = str1 str1 = "Osaka" とやると、str1は"Osaka"、str2は"Tokyo"となります。 前述の参照渡と考えるとstr2も"Osaka"となっているはずですが違いました。 ここで解説に(引用はじめ) なお2つの変数が同じオブジェクトを指し示した後で、どちらかのオブジェクトに新しいオブジェクトを 代入した場合は、代入された変数が指し示すオブジェクトだけが変更されるだけです。(引用おわり) とあります。 このことをふまえると、新しいオブジェクトを変数に代入するというのは、別のメモリ領域をつくってデータを置いてから、そのアドレスを変数に代入している、と考えました。 これら2つの考えと実際の仕組みは一致しているのでしょうか、と言うのが質問です。 質問点をまとめると、Rubyにおいて変数に対して ・代入演算はアドレスを代入しているのか(Cでいうポインタの扱いなのか) ・新しいオブジェクトを代入するときには、新メモリ領域を作ってデータを入れてそのアドレスを代入しているのか という点です。 ついこの間はじめたばかりの初心者ですが、どうかご教授よろしくお願いいたします。
- ベストアンサー
- Ruby
- denshihakoma
- 回答数1
- データの選択
csvファイルから、特定の条件を持つ行を抽出したいです。 a1, b1, c1, d1, e1 a2, b2, c2, d2, e2 a3, b3 ,c3, d3, e3 : : : : : an, bn, cn, dn, en とあったときに d-c/d+c > 0.5となる行だけを出力したいのですが file.each{|line| x = line.split(",").map{|i|i.to_i} if 0.5<(x[3]-x[2])/(x[3]+x[2]) p x end } と自分でやってみたものの、出来ませんでした。 どうしたらよいのでしょうか。
- ベストアンサー
- Ruby
- Summers226
- 回答数2
- 配列のソート
Ruby初心者です。 例えば [12,38,121,273,13] [23,47,478,112,98] [56,73,227,556,12] [22,43,668,223,74] [33,13,393,763,91] を [12,38,121,273,13] [22,43,668,223,74] [23,47,478,112,98] [33,13,393,763,91] [56,73,227,556,12] のように第1列目の要素で配列ごとソートしたいのですが、私がやると、 [12,13,38,121,273] [22,43,74,223,668] [23,47,98,112,478] [13,33,91,393,763] [12,56,73,227,556] のように第一列の要素は一応ソートは出来ているのですが、 配列の中身まで並べ変わってしまいます。 配列ごとにソートするにはどうすれば良いのでしょうか?
- 締切済み
- Ruby
- Summers226
- 回答数1
- Rubyでテキストから読みこんで計算するには
Rubyプログラムを勉強中のものです。 openでテキストを読みこみ、そのテキストの中にある数字を使い、 defで計算するにはどのようなプログラムを作ればよいのでしょうか? 例えばnum.txtがあり、この中には 1.りんご 100円 2.みかん 80円 3.梨 120円 という内容が書き込まれているとします。 これを open("num.txt", "r") do |mise| で開く処理をし、 def fee (fru) fru * 0.5 end fruのなかにテキストに書かれている数字をいれて計算させるにはどのようにしたらよいでしょうか?
- CSVで余計な空行が入る
Windows XPでruby 1.9を使用しております。 (ruby 1.9.3p286 (2012-10-12 revision 37165) [i386-mswin32_100]) CSVライブラリの勉強をしていて見つけたのですが、下のプログラムで改行を含むデータを持つCSVを読み込み出力すると、その改行部分に余分な空行が追加されてしまいます。 出力されたoutput.csvをバイナリエディタで確認すると改行を含むデータの改行部分が 元は0x0D,0x0Aであったものが出力されたファイルでは0x0D,0x0D,0x0Aと 0x0Dが1個余分にくっついているのが原因のようです。 この現象を回避する方法がありましたら教えてください。 よろしくお願いします。 -----test.rb # coding: Windows-31J require 'CSV' CSV.open('output.csv','w') do |csv| CSV.foreach('input.csv') do |row| csv << row end end ----- -----input.csv 10,11,12 20,"2 1",22 30,31,32 ----- -----出力output.csv 10,11,12 20,"2 <- この空行が追加されてしまいます。 1",22 30,31,32 -----
- ruby のプログラムについての質問です。
rubyのスクリプトをhtmlに組み込む方法について ruby初心者です。htmlにrubyのスクリプトを組み込みたいのですが、どのようにしたらよいのでしょうか??ネットや 書籍で調べると、eRubyやerbライブラリーを使用するように書いてありました。どのように書いたらよいのかというか使い勝手がわからないので教えてくださいお願いします。
- ベストアンサー
- Ruby
- zerozero5320
- 回答数2
- ruby のプログラムについての質問です。
ruby初心者です。作成したプログラムについて質問です。 某サイトの<td>セクター部分のデータを取得するプログラムを作ろうとしています。このプログラムのソースをあげときます。 # encoding: utf-8 require 'rubygems' require 'open-uri' require 'nokogiri' doc = Nokogiri::HTML(open("http://creofuga.net/"),nil,"utf-8") doc.css("td").each do |td| open("foo.txt", "w") do |f| f.write td.text end end このプログラムだと、最初のからデータを取得していくのですが、textファイルに書き込む際、1行目で得たデータを上書きをし、最終的に、サイトの最後の出たのみ出力する形となります。これをデータごとに改行しすべてのデータを出力するにはどのようにプログラムを変更すれば、よいかおしえてください。おねがいします。ちなみに最後に画像で取得したtextファイルのデータを上げときます。よろしくお願いします。
- 締切済み
- Ruby
- zerozero5320
- 回答数1
- 文字列の連結について教えて下さい。
Ruby初心者です。 文字と数字を連携させて file1 file2 file3 . . file10 としたいのですが、 s = '100' for i in 1..10 name = 'file' + i + '\n' puts name end これだとエラーが出てしまいます。 どう修正したら良いのでしょうか?
- RailsのAjax送信されるタイミング
Ruby on Rails で:remote => true設定時のデータ送信タイミングで困っています。 form_forタグに :remote => trueを指定しており、送信ボタンを押すと値をajaxで送信をするようにしています。 しかし、送信ボタンを押した瞬間に値が送信されるのではなく、ボタンを押して少し経ってから(長い時は2~3秒程度?仕様でしょうか)値が送信されます。 画面内に送信ボタンが2つ存在し、最初にボタンを押し実際に値が送信される前に別のボタンを押すと、2度ボタンを押したのに1回分の値しか送信されないといった問題が発生します。 そこでこの問題を回避するために、 1. 送信ボタンが押された瞬間に値が送信されるようにする 2. ボタン押下後に実際に値が送信されたかどうかを監視し、実際に送信されるまでは2度目以降のクリックを無効にする(ボタンをdisabledにする) のどちらかを実装したいと考えていますが、これらはrailsで実装可能なのでしょうか。
- rubygems, railsのインストール
ruby on railsに詳しい方で分かる方がいればご教授いただきたいです。 先日までruby1.9.3, rails3.2.4を使用できていたのですが、他にいろんなものをインストールをしていた時に何か変になってしまったのか、突然railsが使用できなくなってしまいました。 OSはMac OS X 10.7.5です。 rails、gemの場所を調べるとopt/local/bin/となっているのですが、rails-vとすると -bash: /opt/local/bin/rails: /opt/local/bin/ruby: bad interpreter: No such file or directory gem -vとすると -bash: /opt/local/bin/gem: /opt/local/bin/ruby: bad interpreter: No such file or directory となってしまって使えません。しかしrubyは正常に動いているようです。 何か分かる方がいらっしゃいましたら、お力を貸して下さると非常に助かります。 作業ができずに困っています。どなたか、お願いします><
- Rails既存プロジェクトを見たい
書籍に付属している、サンプルを見たいのですが、どうすればいいのでしょうか。 Linux Ruby/Railsコマンドが使える環境で、プロジェクトファイルに移動し、 rails sサーバーを立ちあげて ブラウザからアクセスしますが、エラーが返ってきます。 操作はコマンドライン上で行なっています。
- Ruby(Rails)で外部サーバーに画像を保存
アプリケーションのあるサーバーに画像を保存する場合、 File.openを使ってpublicフォルダ等に保存できると思いますが、 「外部サーバーに保存する場合はどうしたら良いのか」教えてください。
- findを使うのか?
ruby超初心者です。教えてください。 このようなディレクトリ構造があるとします。 root_dir |--12_dir | a.txt | b.txt |--23_dir | a.txt | b.txt a.txt, b.txtには、ともに A= B= と書かれているとします。 このとき、root_dir(c:\root_dir)にアクセスして、 12_dir直下のa.txtには、12_dirの最初の文字"1"をとって A=1 B=(1) と書き換え、 12_dir直下のb.txtには、12_dirの第2の文字"2"をとって A=2 B=(2) と書き換え、 23_dir直下のa.txtには、23_dirの最初の文字"1"をとって A=2 B=(2) と書き換え、 23_dir直下のb.txtには、23_dirの第2の文字"3"をとって A=3 B=(3) と書き換えるには、Rubyでどのようなプログラムを書けばよいのでしょうか。 なお、実際のファイル数はもっと膨大です。 よろしくお願いします。
- RailsでJSONを使用して画面作成
環境はRuby1.9.2、Rails3.1です。 Webアプリを作る勉強をしているのですが、 JSONを返してそのデータを利用して画面を作成しようと思っています。 Rails側はDBから取得したデータをto_jsonでJSON形式に変換して respond_toで返してあげればいいんですよね? UI側はこのデータを利用して構築するにはDOMでがりがり組むしかないんでしょうか? イメージがいまいちつかめません…… 参考になる書籍やサイト等もしご存知であれば教えてください。 これはRubyというよりjavascriptのカテゴリになるんでしょうか。 もしそうであるなら申し訳ありません。 よろしくおねがいします。
- CSVファイルの特定列を新たなCSVファイルに変換
ruby 初心者の50代のサラリーマンです。 若い人にrubyがいいだろうと言われて挑戦していますが、なかなか分かりません。 どなたか、教えてください。 大きなCSVファイルがあって、 1行目は項目名が入っていて不要です。 2行目以降、 各行2列目にレコード名、 各行8列目に欲しいデータが入っています。 データは29行毎に1レコード分になっています。 レコード名は各行で重複しています。つまり、 試験日,サンプルA,***,・・・・・,観測値1,・・・・・・ 試験日,サンプルA,***,・・・・・,観測値2,・・・・・・ 試験日,サンプルA,***,・・・・・,観測値29,・・・・・・ 試験日,サンプルB,***,・・・・・,観測値1,・・・・・・ 試験日,サンプルB,***,・・・・・,観測値2,・・・・・・ 試験日,サンプルB,***,・・・・・,観測値29,・・・・・・ というデータです。 それを、 サンプルA,観測値1,観測値2,・・・・・,観測値29 サンプルB,観測値1,観測値2,・・・・・,観測値29 サンプルC,観測値1,観測値2,・・・・・,観測値29 と直してcsvファイルに保存し直したいのです。 どなたか、rubyプログラムの書き方を指南して下さい。
- ベストアンサー
- Ruby
- kamiyasiro
- 回答数2
- RUBY/SDLをMACにインストールできません
プログラミング初心者です. RUBYを使って,ゲーム作成をしてみたいと思っていますが, うまく環境設定ができません> < 最終的には http://dgames.jp/ja/projects/mygame/ ここに書いてある,mygameを,マックで動かしたいと考えています. その際に必要な RUBY/SDLのインストールをしているのですが,ターミナルを使うのが初めてなので,うまくいかないです. OSはMAC OS X 10.7.4です. 現在は,このページ http://jp.rubyist.net/magazine/?0018-GameProgramingForRubySDL を参考に 進めています. XCoteToolsとMacPortsは多分インストールできました. しかし各種ライブラリのインストールの時点で,早速つまずいています. sudo port install XFree86とターミナルで入力すると Warning: port definitions are more than two weeks old, consider using selfupdate ---> Fetching distfiles for XFree86 Error: org.macports.fetch for port XFree86 returned: You have an Apple X11 installation already. MacPorts will not overwrite it. If you really want to use XFree86 instead, please move it aside first : sudo mv /usr/X11R6 /usr/X11R6.apple Please see the log file for port XFree86 for details: /opt/local/var/macports/logs/_opt_local_var_macports_sources_rsync.macports.org_release_tarballs_ports_x11_XFree86/XFree86/main.log To report a bug, follow the instructions in the guide: http://guide.macports.org/#project.tickets Error: Processing of port XFree86 failed というようにでます. どうすればいいのか,分かりません... 助言いただければ,助かります ><