[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 05/09 17:32 / Filesize : 211 KB / Number-of Response : 864
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Ruby 初心者スレッド Part 21



1 名前:デフォルトの名無しさん mailto:sage [2008/08/06(水) 01:07:21 ]
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

   【Ruby1.9 は不安定な開発版であり初心者には全く向きません】
   【最新安定版の Ruby1.8.7 の使用をお勧めします】
    ※1.8.7 は1.8 と 1.9 の橋渡しをするためのリリースです。
      1.9 の新機能の一部が利用可能なので初学者にお勧めです。
    ※ただし十分安定しているとは言えないので
      プロダクション環境での利用にはお勧めしません。

関連スレやURLは>>2-8あたりを見てください。Ruby on Railsの質問はRailsスレへ。

■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
 ・モジュール名やエラーメッセージでググる
 ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/
 ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・エラーメッセージ(自力で訳さずなるべくそのままで)
 ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

267 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:29:10 ]
if 文の返り値を変数に代入するのは性に会わない
似たような感覚として、

 ・do 〜 end ブロック
 ・map と inject を除く {} ブロック

の返り値を利用するのはなんかピンと来ない

268 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:39:09 ]
rubyで日本語のファイル名使えるかどうか
速く回答しやがれ!

269 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:41:04 ]
>>268
使ってみてから質問しろ。
あほか

270 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:49:51 ]
まあ問題が起きてからその状況を質問してもらったほうがええな

271 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:53:35 ]
実際にやってみて日本語名が使えない、という話なのか?
OS環境とか文字コードとか、状況を具体的に説明してごらん。


272 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:57:32 ]
Perlで日本語のファイル名のファイルをopenできないから
rubyだったら開発者がジャップだからネイティブで対応してるかと
思って質問してるんです!!!

273 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 00:59:40 ]
dllからデータを読み込むプログラムを書こうとしているのですが、
dl/structモジュールで構造体を入れ子にできないのですかねぇ?

そこの部分だけcharの配列で埋めて後で置き換えるしかないのでしょうか・・・

274 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 01:17:20 ]
>>272
できる。
でもRubyよりも先に日本語の使い方と質問の仕方を勉強することをおすすめする。

275 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 07:20:54 ]
「♥.txt」を開こうとしたら無理だったんだけど



276 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 07:36:19 ]
windowsなら、ユニコードのファイル名は無理

277 名前:デフォルトの名無しさん [2008/08/26(火) 08:03:16 ]
Rubyをちょこちょこ最近書き始めた初学者です。
Excelの列番号をA1形式からR1C1形式へ変換するプログラムを書こうとしています。
A→1
AA→27
IV→256
てな感じで。

パッと思いついたコードとしては
require 'jcode'

num = 0
str = "IV"
str.each_char{|char| num = num * 26 + char.to_i(36)-"A".to_i(36) + 1}
p num #=>256

ですが、スマートじゃない気がしてなりません。
もっとスマートな書き方有りますでしょうか?
実行環境はWinXP、Ruby1.8.6です。

278 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 08:17:18 ]
>>276
ユニコードは日本語じゃなとでも言いたいわけ?

279 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 08:28:52 ]
inject(0) {|n, char| n * 26 + ... } くらいしか思いつかん。

あとは ('A'..'Z').to_a.index(char) で 0 .. 25 に変換とか。
# ところで require 'jcode' は全角アルファベット対応?


280 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 08:30:10 ]
>>278
Windowsが異常なだけ。


281 名前:255 mailto:sage [2008/08/26(火) 08:31:03 ]
>>256
そうっすか残念(・ω・)
net/httpなんて使うなとか言う記事みた後なんでちょっと二の足を踏んでしまいます

282 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 08:38:59 ]
困ったことあったらpythonを使え

283 名前:デフォルトの名無しさん [2008/08/26(火) 09:11:19 ]
>>279
単にString#each_charがjcodeで拡張されてるメソッドなので入れなきゃ使えないだけで・・・。
injectについてちょっと調べてみます。ありがとございます。

284 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 10:22:25 ]
>>277
('A'..'ZZ').to_a.index('IV') + 1

256

285 名前:デフォルトの名無しさん [2008/08/26(火) 10:47:07 ]
>>284
これは目からウロコ。
'A'..'ZZ'がZからAAに繰り上げしてくれるとは知らなかったです。
有難う御座いました。



286 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 10:55:45 ]
これってやっぱりあの変態さに定評のあるsuccがバックエンドになってるのかな?

287 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 11:00:17 ]
>>281
初心者は自分の手で作ることを嫌がったら駄目だぞ
だいたい、どんなことがなぜ望ましくないかなんて耳で聞いだだけじゃわからんじゃないか

Net::HTTPでgetとheadとpostをするのは基本
ラッパーメソッドを作るのも基本
ヘッダやクッキーの処理にも手を出して、うわ何これめんどくせー、となった時点で既存の外部ライブラリを探す
こうすれば、その外部ライブラリの中の挙動もある程度推測できるし、不足点やバグがあったときに対処もできる
最初から外部ライブラリだけを使ってしまったのではなかなかこうはいかない

ということで、gemで "httpclient" をインストールすれ
HEADリクエストにも対応している

irb> require 'rubygems'
irb> require 'httpclient'
irb> client = HTTPClient.new
irb> res = client.head('www.google.com/')
irb> p res.header['Location']
["www.google.co.jp/"]


288 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 11:03:19 ]
>>286
irb> p "Z".succ
"AA"

   ___l___   /、`二//-‐''"´::l|::l       l! ';!u ';/:::l ', ';::::::l ';:::::i:::::
   ノ l Jヽ   レ/::/ /:イ:\/l:l l::l   u   !. l / ';:::l ', ';:::::l. ';::::l:::::
    ノヌ     レ  /:l l:::::lヽ|l l:l し      !/  ';:l,、-‐、::::l ';::::l::::
    / ヽ、_      /::l l:::::l  l\l      ヽ-'  / ';!-ー 、';::ト、';::::l:::
   ム ヒ       /::::l/l::::lニ‐-、``        / /;;;;;;;;;;;;;ヽ!   i::::l:::
   月 ヒ      /i::/  l::l;;;;;ヽ \             i;;;;;;;;;;;;;;;;;;;l   l::l:::
   ノ l ヽヽノ    /:::l/:l /;;l:!;;;;;;;;;',               ';;;;;;;;;;;;;;;;;ノ    l:l::
      ̄ ̄    /::::;ィ::l. l;;;;!;;;;;;;;;;;l            `‐--‐'´.....:::::::::!l
   __|_ ヽヽ   /イ//l::l ヽ、;;;;;;;ノ....      し   :::::::::::::::::::::ヽ /!リ l
    | ー      /::::l';!::::::::::::::::::::  u               ', i ノ l
    | ヽー     /イ';::l          ’         し u.  i l  l
     |       /';:';:!,.イ   し    入               l l U
     |      /,、-'´/ し      /  ヽ、   u    し ,' ,'  l
     |        /l し     _,.ノ     `フ"       ,' ,'  ,ィ::/:
     |       /::::::ヽ       ヽ    /     し ,' ,' / l::
     |      /::::::::::::`‐、 し      ',  /    u   ,、-'´  l,、-
     |      ``‐-、._::::::::::` ‐ 、     ',/       , -'´`'´ ,-'´
     |      _,、-‐'"´';:::::::::イ:l';:::` ‐ 、._____,、-‐'"´  u /
   | | | |    \ l::/ l::::::/リ ';:::::lリ:::::l';:::l l:l:::::l\  u /
   | | | |



289 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 11:08:10 ]
succ大人気w

290 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 11:12:54 ]
'z'.succ が "A" ではなく "aa" なのは変態でいいと思う
まあ 9.succ が 0 ではなく 10 なんだから予想の範疇ではあるが

'10'.succ が "11" なのも変態認定してよい

291 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 11:30:48 ]
それは普通

292 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 11:43:37 ]
'99'.succ が "100" になるのは変態

というか Ruby の succ への拘りは異常
succ を便利に使うのってどの言語由来?

293 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 11:50:38 ]
perlの ++ -- 由来
rubyが異常なわけではない

294 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 14:29:46 ]
特定サイトへの頻繁なWebアクセスのキャッシュ管理をDB的にやってくれるライブラリってないすかね
{URL => HTTPヘッダ} というハッシュを1個のpstoreに保存して、スクリプトの最初に完全に読み込んで使ってるんだけど、
もっといいのあるかな

295 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 14:41:59 ]
>>294
初心者スレ的にはハッシュとPStoreでサイト用にカスタマイズするのが一番だと思う
マルチスレッドでアクセスされてPStoreが壊れそうならsqlite3とかでデータベース使え

Railsのどこかに何かあるような気もするが、たぶん超ごっついと思われ



296 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 20:29:54 ]
alias suck succ

297 名前:デフォルトの名無しさん mailto:sage [2008/08/26(火) 22:44:20 ]
>>294
揮発してもかまわないなら memcached

298 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 02:07:50 ]
ruby 1.8.7では
 [7,6,5].map.with_index{|x, i| x*i}
ができないので、かわりに
 [7,6,5].each_with_index.map{|x, i| x*i}
と、やるのを見かけました。

ならば inject.with_index 的な意味で
 [7,6,5].each_with_index.inject(0){|r, x, i| r+x*i}
と、できるのでは!と思ってやったところ、
 in `*': no implicit conversion from nil to integer (TypeError)
というエラーがでます。

色々試したところ
 [7,6,5].each_with_index.inject(0){|r, x, i| p x}
とやると
 [7, 0]
 [6, 1]
 [5, 2]
と出力されました。
injectの第2ブロック引数 には
[元配列の要素,インデックス] という配列が
渡されているようです。
(第3ブロック引数は何も渡されない)

なーんか、違和感があるんですけど、そんなことないですか?

299 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 02:34:14 ]
>>298
[7,6,5].each_with_index.inject(0){|r, (x, i)| r+x*i}

300 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 18:02:07 ]
rails2.1の入門教えてください

301 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 18:12:11 ]
アバウトだのう

Rails初心者スレってないんだよね、そう言えば
需要が微妙だけど…

302 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 18:14:29 ]
beginとendが予約語なので、範囲の開始と終了を表す変数名で困ってます
Rubyで一般的な開始と終了の変数名のペアってありますか?
文法ミスにならないようにbeginとendを慎重に使うというのは勘弁してください

303 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 18:21:47 ]
Rangeクラスではfirst、lastが使われている

304 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 18:36:52 ]
beginning-ending
opening-close(closing)
beg ed

305 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 20:21:49 ]
start finish




306 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 20:27:06 ]
finishはないわー

307 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 20:27:28 ]
a z

308 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 20:50:19 ]
仮引数では s と e をよく使う
が、文字列の s と 配列要素の e と被るのが難点

309 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 21:00:29 ]
start と stop
@begin と @end

310 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 21:01:43 ]
>>302
>範囲の開始と終了を表す変数名

from と to でいいような気がしてきた

311 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 21:12:25 ]
from と to は変換が絡む処理に見える
ファイルの移動とか
文字列の変換とか

312 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 21:19:30 ]
_beginと_endで

313 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 23:40:10 ]
>>311
そんなことないと思うけどなー
変換が絡む処理なら src と dst (source と destination) だよ

314 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 23:41:41 ]
ほほう
from,toじゃなくてsrc,dstかメモっとこ

315 名前:デフォルトの名無しさん mailto:sage [2008/08/27(水) 23:52:09 ]
srcとdstはC時代の遺物のような気もする
いや、フルスペルで書くと長すぎるが



316 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 01:18:47 ]
dstは躊躇うけどdestだと受け入れてしまう気がする

317 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 02:27:59 ]
ええー

318 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 05:26:58 ]
src に「開始地点」以外の意図が多すぎるから、src - dst はピンと来ないなあ
dst と書かれていても何のことか悩んでググる自信がある

319 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 07:58:21 ]
s(tart) - g(oal)
in - out
src -dst
from - to
begin - end

ruby - ?

320 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 08:23:45 ]
b(egin) e(nd)
k(ey) v(alue) - ペア構造のキー値
r(et) e(lement) - reduce の 第一引数、第二引数

読んでもらおうという気が見えないコードが書けます

321 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 13:13:24 ]
使えるのが Ruby だけというのもよくないと思うので、PHP5 の勉強も始める

うっひょーこの関数全部フラットでこのまま覚えるのクラスによるクラス分けとかないの
配列(ハッシュ)からペア取り除くのに unset($array['key']) って書かないといけないのね
ずっと前にちょっとだけ齧った Perl4 を思い出した

322 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:20:00 ]
関数って普通フラットじゃね?
メソッドならレシーバいるけど

323 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:47:36 ]
パッケージとか、名前空間に入れられることもあると思う

324 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 17:53:45 ]
標準(添付・内部)ライブラリがRubyのように全部クラス構造になってて
配列は配列クラスのインスタンスで操作はメソッドを経由して行うとか言うことは確かにないな
PHP5はクラスを作れるが、内部は普通にPHP関数での遣り取りだ
インターフェースとしてのオブジェクト指向だね

325 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 18:18:09 ]
質問です。

#!/usr/local/bin/ruby
print "Content-type: text/html\n\n"

require "csv"
csv = CSV.open('file.csv,'r')

csv.each_with_index do |line,n|

a[n] = line[0]
b[n] = line[1]
puts

end

print"<html><body>#[a]</body></html>"
print"<html><body>#[b]</body></html>"

csv.close

このプログラムをうpしたのですが内部サーバーエラーが出てしまいます。
自分では間違っているところが見つけられませんでした
どうすれば正常に作動するでしょうか。
回答お願いします。



326 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 18:32:58 ]
~$ ruby -c test.rb
test.rb:5: syntax error, unexpected tIDENTIFIER, expecting ')'
csv = CSV.open('file.csv,'r')
^
test.rb:5: unterminated string meets end of file


327 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 18:33:35 ]
file.csvのところのクォーテーションが足りない
aもbも初期化されていないので配列かハッシュを代入すると良い
#[a]でなくて#{a}
htmlタグは1度以上出力しないほうが良い

試してないけどぱっと見てこのぐらい
あといきなりCGIよりも一度コマンドラインで試した方がエラーが見えてわかりやすい

328 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 19:38:00 ]
expectationsっていいんですか?
何か場当り的な網羅性の無いテストを推奨するような作りに見えるんですが

329 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 20:05:50 ]
>>320
俺は reduce は acc(mulator) e(lement) が好きだな。
あ、もちろんコードにあわせて sumとかにすることもあるけど。

330 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 20:35:27 ]
>>328
それは「あんな実行速度の遅いRubyのどこがいいのかわからない」という主張と同質だぞ

331 名前:デフォルトの名無しさん mailto:sage [2008/08/28(木) 22:36:41 ]
>>326,>>327

回答ありがとうございました。
次からはコマンドラインで一度試してみます。

332 名前:デフォルトの名無しさん [2008/08/29(金) 06:33:27 ]
小林と申します。

メーリングリストの利用自体がはじめてで、安易な行動をとり
皆様に不快な思いをさせてしまいましたこと、心からお詫び申し上げます。
大変申し訳ございませんでした。

333 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 06:34:15 ]
I'm sorry . This is Test Mail
これはテストメールです。

334 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 08:52:27 ]
信者としては
こんなバカでも使えるわかりやすいRuby♥
と、 宣伝材料にしたいところだ。

335 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 10:41:33 ]
net/httpとWindowsのバージョンに関する質問です。
Ruby1.8.6+exerb最新版で固めたプログラム内でnet/httpを使用しています。
そのプログラムはVistaSP1とXPSP2では正常に動作しますが、XPSP3だと接続時に
「接続済みの呼び出し先が一定の時間を過、、、」と出て接続すらできない状態です。
なにかそのあたりの情報がありましたら、ぜひ教えてください。
宜しくお願いします。




336 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 15:27:37 ]
>>335
rubyのせいとかOSのバージョンが違うせいとか考える前に、問題のマシンでちゃんとネットワークに繋がってるのか調べた方がいい。
プロクシなしで普通にブラウザで外が見えるのか、とか。


337 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 19:48:45 ]
>>295
sqliteより、RubyレベルでまーしゃるしたHashのほうが速くて便利だと思う

338 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 22:11:31 ]
質問です

Webブラウザのように実際的な短時間でサムネイル画像を取得したいです
1個ずつサムネ画像URLをアクセスしてると10秒くらいずっとだらだらアクセスしててなんか申し訳ないです
(「申し訳ないのでスクリプトで取得すること自体を止める」ということは考えてないですごめんなさい)
スレッドをいくつか生成してアクセスすれば同じように所要時間を短縮できますか?

339 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 22:20:59 ]
このへんは一意な答がないんだよな
「多くの場合必ずしも好ましくない」というアドバイスが多すぎる

昔からの有名なものに「サーバ負荷考えてファイルアクセスのたびにスリープ入れろ」というのがあるが、
Keep-Alive全盛の今となってはクライアント側でスリープされて数十KBの接続を引き伸ばされるくらいなら
複数接続してもらってとっとと完了してもらって手放してもらえたほうがまだ有難かったりする

340 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 22:53:53 ]
>>338
Rubyのスレッドってそういう動作時間縮める用途に使えたっけ?

341 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 23:00:46 ]
IO待ちの間は他のスレッドに切り替わる…かもしれない

342 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 23:34:35 ]
ttp://slashdot.jp/article.pl?sid=06/12/20/0854256 を思い出した

>>338
Net::HTTP.start(host, 80){|http|
# 各画像ファイルをこのブロックの中でGET
}
こんな感じで多分望みの挙動になると思う

343 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 23:42:39 ]
require 'open-uri'
require 'benchmark'
uris = %w(www.yahoo.co.jp/ pc11.2ch.net/tech/ www.yahoo.com/).map{|e| URI(e)}

Benchmark.bm(2) do |x|
x.report{
uris.each do |uri|
uri.read
end
}
end
sleep 2
Benchmark.bm(2) do |x|
x.report{
threads = Array.new
uris.each do |uri|
threads.push(Thread.new { uri.read })
end
threads.each{|thread| thread.join}
}
end

# 結果
user system total real
1.150000 0.080000 1.230000 ( 2.655373)
user system total real
1.210000 0.060000 1.270000 ( 1.583636)

344 名前:デフォルトの名無しさん mailto:sage [2008/08/29(金) 23:52:01 ]
外部待ちがないぶん、スレッド使ったほうが全体としては速いな

345 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 00:21:01 ]
そろそろNet::HTTP.startの中でThread#joinして意味不明の挙動に悩んでる頃なんじゃないかと思う



346 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 01:55:11 ]
変数名::メソッド

という書き方に違和感を感じるとともに、Rubyらしさも感じます。

347 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 02:36:56 ]


348 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 07:31:27 ]
こういうのじゃね

html = uri.read
case uri.host
when /www.example.com/ then
parser = TableParser_www_example_com
when /www.example.jp/ then
parser = TableParser_www_example_jp
end
datatable = parser::parse(html)

最初は文字列として連結して eval("#{classname}.#{method}") するしかないよなと思ってたんだが
普通にメソッド呼び出しのドットがくっついたときはさすがに参った

349 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 10:14:30 ]
てゆーか実はダラダラしてるほうが行儀正しいって突っ込みは無いのかよ

350 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 12:13:35 ]
>>349
あなたの使ってるWebサーバの設定を見直してみることをお勧めする

351 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 17:51:26 ]
java使いなんですがrubyに興味あって調べてます。
それで、rubyのホームにあるAPIは読みにくいので、どこかお勧めないでしょうか。
英語のサイトを探してもないみたいなんで・・

rubyはリテラルが多いので、少し使わないとすぐ忘れちゃうんですよね。

352 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 18:06:25 ]
刷新中の新リファレンスマニュアルはどう?
ttp://doc.loveruby.net/refm/api/

353 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 18:08:17 ]
と思ったけどリテラル一覧はないか。

これが見づらいということなんだよねぇ?
ttp://www.ruby-lang.org/ja/man/html/_A5EAA5C6A5E9A5EB.html

354 名前:デフォルトの名無しさん [2008/08/30(土) 18:21:25 ]
APIはいつもみるんで、MSDNみたいにリンクが多いよりは、Java docみたいな単純なテキスト(とページ内参照 a.htm#ref)のほうがいいと使いやすいと思います。

1.9のそれも使いやすそうですね。
文章多めで説明長・解説つきなら英語でやった方がいいんじゃないですか。
で、日本語のは短い説明だけで、よくアクセスされる必要な記事・解説は、英語の翻訳で済ますと効率的な設計かなと思います。

もしjavascriptでfile i/oができるなら、rubyじゃなくて、jsつかうんで。なぜなら、言語の機能よりも、文章がまとまってるって事が大事じゃないでしょうか。

ルビリストとかモルモンぽいんじゃなく、まともな人なら、コレが妥当なところでしょうか。
www.ruby-doc.org/core-1.8.7/index.html



355 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 18:29:33 ]
と、ここで提案してもしょうがないですし
JavaScript使いたいならJavaScript使ってくださいとしか



356 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 18:30:55 ]
C#とかDとかrubyはリテラル多すぎw

単純な制御とか処理はいちいちAPI探すの面倒だし、イテレーターつかわないんでwhile/forでいいよ。

OOも魅力的だけど、制御とか処理とかと関係ないし、肝心なOOのライブラリがないじゃんw

357 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 20:53:45 ]
昔VB5を少しだけやったときウィンドウに表示されてたんですけど
rubyは違うんですか?

プログラムは全くの初心者です・・・

358 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 20:57:09 ]
ウィンドウはプログラム言語がわざわざ出力先として敢えて作っているだけです
プログラムの基本は入力(と処理と以下略)と出力であって、
Rubyは入力だけを受け取って出力だけを行います

てか何か解説とか入門とか読んで試してるんではないん?

359 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 21:04:41 ]
>>358
Rubyの場合は出力先を指定しなければいけないのですか?
メモ帳とか・・・?

>>1のたのしいRubyをこの前買って 疑問に思ったから書き込みました

360 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 21:49:51 ]
増えていく可能性のある配列を再帰的に処理する場合ってどうすればいいですか?
以下のような感じのやつで2を表示させたいですが1で繰り返しが終わります。

#!/usr/bin/ruby -Ku

@i=[1]

@i.each{|a|
p a
b=2
@i << b
@i.delete(a) if b != nil
}

361 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 22:41:54 ]
>>360
挿入して削除したら、増えてないじゃん

362 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 22:46:38 ]
イテレータの中で要素数を増減させるのはあんまりよろしくないよなあ
javaだと例外飛んで怒られるくらいだし

363 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 23:15:09 ]
再帰的に、というのがわからんが、
単純に、

a = 0
while a < @i.size do
 ...
 a += 1
end

と書けば?

364 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 23:31:23 ]
>299
遠くからすみません。
そんな書き方できるんですね。
ありがとうございました。

でも、何で括弧がいるんだという辺りは
よく理解できませんでした。
勉強します。

365 名前:デフォルトの名無しさん mailto:sage [2008/08/30(土) 23:42:04 ]
>>361
書き方へんなのでごめんなさい
回している配列が途中で条件によって増えていって
そうじゃない場合は増えなくなるので最後には
配列がなくなってほしかったんです。
って書いてて意味が分からなく。。

>>362
何となく駄目ってのは分かるのですが
今作ってるやつだと
それ以外思いつかなったので。

>>363
ありがとう
最後にretryつけたらそれでもいけたので
駄目だったらその方法試してみます。




366 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 00:26:55 ]
ああ、配列の要素の値を元にした処理の結果で、配列の要素が増えたり減ったりするんだな
で、新たに増えた配列の要素も、要素増減の処理に使うんだ

…なんかどっか設計が間違ってるような気もするが…

367 名前:デフォルトの名無しさん mailto:sage [2008/08/31(日) 00:43:19 ]
スタックとかキューとか知ったら幸せになれそうなんだが違うのかな






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<211KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef