Ruby 初心者スレッド Part 41
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001京 ◆SsSSsSsSSs
2011/02/10(木) 13:47:51★注意★ Ruby 1.9.2 は初心者には若干時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
文字エンコーディング等の外部基礎知識が必要な上、不完全対応の第三者ライブラリでの問題の切り分けが手間です。
迷う点の少ない1.8.7に習熟→おもむろに1.9.2の変更点のみ重点学習、とすればスムーズに移行できるでしょう。
関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。
■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
・エラーメッセージの共通そうな部分やエラーの出るモジュール名でググる
・マニュアルで引っかかったクラスの記述を探す http://www.ruby-lang.org/ja/man/
・FAQを一応読む http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
・最終的にやりたいこと(もっとよい方法がある場合が多いので)
・エラーメッセージ(自力で訳さずなるべくそのままで)
・詳しい内容(「動きません」「うまくできません」では回答しようがない)
・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0893デフォルトの名無しさん
2011/04/13(水) 21:58:07.820894デフォルトの名無しさん
2011/04/13(水) 22:04:39.70printf("%+d", 5)
s = "%d" % 5; printf(s)
>>892
idx = text.rindex('}')
text[idx] = "特定の文字+}"
0895894
2011/04/13(水) 22:06:15.61s = "%+d" % 5; printf(s)
0896デフォルトの名無しさん
2011/04/13(水) 22:29:59.830897891
2011/04/13(水) 22:50:18.100898デフォルトの名無しさん
2011/04/13(水) 23:13:45.30ありがとうございます
0899デフォルトの名無しさん
2011/04/13(水) 23:37:36.75ここの人たちは皆俺に優しくしてくれる
0900デフォルトの名無しさん
2011/04/13(水) 23:45:48.40ああそうか。指摘ありがとう超ありがとう
0901デフォルトの名無しさん
2011/04/14(木) 11:43:55.910902デフォルトの名無しさん
2011/04/14(木) 14:44:38.440903デフォルトの名無しさん
2011/04/14(木) 15:15:20.45アクティブ何とか
0904デフォルトの名無しさん
2011/04/14(木) 20:07:21.50OS名:Ubuntu10.04
Ruby:Ruby1.8.7
【やりたいこと】
>>
愛/あい 藍/あい AI/あい
朱/あか 赤/あか AKA/あか
<<
これを
>>
愛 藍
朱 赤 AKA
<<
と言う形で一括置換をしたいです
ひとまず
各行をstrに格納して
str.gsub(/\/.*\s/,"")としてみたのですが思うように動きませんでした.
どうすればよいのでしょうか?よろしくお願い申し上げます.
0905デフォルトの名無しさん
2011/04/14(木) 20:17:27.58朱 赤 AKA
じゃないの?
str.gsub(/\/[^\s]+/,'')
0906デフォルトの名無しさん
2011/04/14(木) 20:18:12.58そうです.
ありがとうございます.
0907デフォルトの名無しさん
2011/04/14(木) 21:13:47.340908デフォルトの名無しさん
2011/04/15(金) 11:06:24.00Rubyは初めてプログラミングに手を出す者が学ぶ言語としては難しい方でしょうか?
0909デフォルトの名無しさん
2011/04/15(金) 11:24:45.31言語の勉強が目的なら他の言語にしておけ
就職や転職に有利なのがいいならJavaとかC#にしておけ
「ふつうのWindowsプログラム」を作りたいなら他の……、まあ、とりあえずRuby以外にしておけ
シェアウェア(死語?)で小遣い稼ぎとかしたい場合も他の言語にしておけ
レンタルサーバとか借りてなんか自作で投稿とかデータとかのサイトみたいなの作りたい場合も、
そのレンタルサーバでRuby1.8.7以降が使えるかどうかを先にチェックだ
これらを踏まえてなお「そういうことを欲しない」のなら、
Rubyはそんなあなたにとっておおむね読みやすく書きやすくちょっぴり遅い
全くの手探りで進められるほどのシロモノではないが、解説なり教科書なりがあれば問題はなかろう
0910デフォルトの名無しさん
2011/04/15(金) 11:37:43.73本当の意味で使いこなすには程遠いが、やりたいことを動かすまでのハードルは低いかと。
0911デフォルトの名無しさん
2011/04/15(金) 11:43:22.92じゃあとりあえずメモ帳作りたいですみたいなこと言い出したらどうしようもないぞ
メモ帳作りたいならRubyやらせるべきじゃないだろ
どう言い訳しても少なくとも「めもちょうのぶぶん」はRubyではないわけで
プログラムには標準入力と標準出力があって〜これがWebでは〜みたいな話をするには最適だが、
そういったものを望んでプログラミングを始める人がいるとはそうそう思えん
0912デフォルトの名無しさん
2011/04/15(金) 11:47:02.31どうだろうねえ
というかもう若くないし若い人べったりの環境でもないので、
今の「プログラム作ってみたい」と考える人が思うところのプログラムがナニを指してるのかよくわからん
昔は、えー、そうだな、20世紀は完全に プログラム=クライアントサイドプログラム で、
Windowsで動くexeでインストーラがあってウィンドウが出てマウスでぽちぽち音がジャーンみたいなのがそうだったんだけど、
今の人はプログラムと言うとサーバサイドのプログラムも考慮に入れてくれてるもんなのかね
0913デフォルトの名無しさん
2011/04/15(金) 11:47:10.80Rubyは万能ではない
ただそれだけ
0914デフォルトの名無しさん
2011/04/15(金) 11:51:29.96んー、そこまで過保護にしなくてもいいのでは。
0915デフォルトの名無しさん
2011/04/15(金) 11:56:27.090916デフォルトの名無しさん
2011/04/15(金) 12:05:43.86いいんじゃないかな
とりあえず入門書一冊買ってRubyインスコして試してみては
0917デフォルトの名無しさん
2011/04/15(金) 12:09:09.96サーバ上のは得意だがレンタルサーバでRuby1.8.7が動くかどうか先に調べれ
Rubyそのものは難しくはないが、あなたの想像していたものの7割くらいはそもそも作れない
0918デフォルトの名無しさん
2011/04/15(金) 12:51:36.58僕はプログラミング初心者ですがRubyは判りやすいと思いますよ
本当はGoogleApiEngineで無料サーバとして使いたいのでJavaかPythonを覚えたかったのですが
0919デフォルトの名無しさん
2011/04/15(金) 12:57:12.72今じゃrailsにしか使ってないわ
0920デフォルトの名無しさん
2011/04/15(金) 14:11:49.500921デフォルトの名無しさん
2011/04/15(金) 15:38:16.26暗黙にプログラミングの常識を要求する=LL的よくあるコードは楽
Pythonの学習曲線は平坦でつまずく箇所が少ない。暗黙知の代わりにPythonそのものの知識をかなり要求する=面倒だが潜在的な汎用性がある?
あとPythonのサイトには初心者と超人の中間が大勢いるけど、Rubyのサイトにはいない
学習前のリサーチではこんな印象でした
プログラミングの抽象度が高く初期の学習がスムーズなのでは、と思ってRubyをはじめました
あってるかどうかは判りません
0922デフォルトの名無しさん
2011/04/15(金) 15:43:07.98便利なフリして下手したらメンテしにくい、
ごっつごってごてぐっちゃぐちゃの構造へ突っ走ってる時はある。
0923デフォルトの名無しさん
2011/04/15(金) 17:12:21.67じゃあRuby以外のプログラムはメンテナンスしやすいんですね!!
0924デフォルトの名無しさん
2011/04/15(金) 17:25:16.75メンテしにくさとは逆を行ってないか?
0925デフォルトの名無しさん
2011/04/15(金) 17:47:12.82たぶんそれは言語の特性ではなく単に書く人のせいだw
0926デフォルトの名無しさん
2011/04/15(金) 17:49:55.48読みにくく、手を入れにくくする方法は沢山あるから、
この辺りは、どんな言語でも、書き手次第だろうね。
0927デフォルトの名無しさん
2011/04/15(金) 18:50:35.270928デフォルトの名無しさん
2011/04/16(土) 00:47:35.160929デフォルトの名無しさん
2011/04/16(土) 02:26:09.08puts "あ" #=> あ
print "あ" #=> あ
p "あ" #=>"\343\201\202"
pp "あ" #=> "\343\201\202"
この挙動の違いはIDE自体に問題があるのか、それともrubyのpやppが特別な動きをしているのでしょうか?
NetbeansなどのIDEでは普通にマルチバイト文字を表示できていましたので戸惑いました
0930デフォルトの名無しさん
2011/04/16(土) 02:51:24.42ttp://www.atmarkit.co.jp/news/201104/14/sora.html
0931デフォルトの名無しさん
2011/04/16(土) 02:53:59.75ま、コミッタがコミットしてRuby作っていったんだけどね。
ブロックやネストの話からコミッタにまで普通話が飛ぶか?
Rubyにまでやってきて一々嫌味いいたいんですね。
これだからPythonの馬鹿には手を焼くんだよなあ
┐(´д`)┌ヤレヤレ
0932デフォルトの名無しさん
2011/04/16(土) 07:23:17.35NetBeans なんかのほうが通常ではない動作をしている
Ruby 1.8 において、本来、使用日本語に関する情報が何もなければ、
非アスキー文字の含まれる文字列に対する String#inspect、
つまりそれを引数にとった関数的メソッド p はバイナリ表記をする
(Ruby 1.9 では日本語として区切って表示するようになってしまった、個人的には改悪)
p はデバッグ表記用メソッドなので、
人間に読めるように表示したいなら人間表示専用の puts や print 使え
なお、 ruby の起動時に -Ku や -Ks などで日本語モードが指定されてると、
String#inspect は日本語体系がそれであるとみなしてバイナリを区切って表示する
「何もしてない」のに Ruby 1.8 の p で日本語が表示できる場合、
どこかの誰かがあなたに無断でそれを指定している
(IDE内コンソールである場合は、勝手に変換している可能性すらある)
$KCODE="u" や $KCODE="s" をスクリプト内で誰かが指定していても同様
0933デフォルトの名無しさん
2011/04/16(土) 09:32:02.570934デフォルトの名無しさん
2011/04/16(土) 09:48:31.02というか具体的な入力と出力をplz
0935デフォルトの名無しさん
2011/04/16(土) 09:53:08.70=> 0
0936934
2011/04/16(土) 10:43:37.51「何が何でも無理やり」ってのはその挙動を指してるんだけど
to_iにしても10進表記にしてるわけじゃなくて単に整数にしてるだけだね
変なレスして失礼しました
0937デフォルトの名無しさん
2011/04/16(土) 11:50:12.150938デフォルトの名無しさん
2011/04/16(土) 11:53:44.23dump は p と死ぬほど相性が悪いので嫌い
まあこのへん推し進めると文字列自体にエンコーディング情報くっつける Ruby 1.9 になるんだがw
0939929
2011/04/16(土) 12:03:50.47IDEのRuby起動オプションに-Kuを追加することでpでも日本語を表示できるようになりました
わかりやすい説明ありがとうございます 勉強になりました
0940デフォルトの名無しさん
2011/04/16(土) 19:54:44.45基本は
unless ?? then
??
end
って感じで覚えていたので少し混乱しています
str.each_char do |c|
count[c] = 0 unless count[c]
count[c] += 1
end
0941デフォルトの名無しさん
2011/04/16(土) 20:06:45.75式 if 条件
は
if 条件 then
式
end
と同じだ
1行で書けて便利、という程度の意味
str.each_char do |c|
unless count[c] then
count[c] = 0
end
count[c] += 1
end
0942デフォルトの名無しさん
2011/04/16(土) 20:11:26.850943940
2011/04/16(土) 20:20:40.18お二方ありがとうございました!
0944デフォルトの名無しさん
2011/04/16(土) 20:57:19.560945デフォルトの名無しさん
2011/04/16(土) 21:55:20.78だけど
a ||= 0 は a = a || 0 ではなくて
a || a = 0
で、あってる?
0946デフォルトの名無しさん
2011/04/16(土) 22:10:03.35ttp://www.ruby-lang.org/ja/man/html/_B1E9BBBBBBD2BCB0.html
0947デフォルトの名無しさん
2011/04/16(土) 22:30:51.84無駄な代入処理を行わないための仕様なのかな?
0948デフォルトの名無しさん
2011/04/16(土) 23:57:51.72nullって書かせてくれよ
0949デフォルトの名無しさん
2011/04/17(日) 00:01:54.50というより ||= 演算子自体が
「最初に使われるときには初期化、次回以降はスルー」って処理を意識してると思われ
0950デフォルトの名無しさん
2011/04/17(日) 00:10:25.58nullとnilとの違いとかそういう話?
元々は形容詞と名詞の違いらしいし
厳密な区別なんてせずに片方で良いと思うが…
使うのがnullじゃないとヤダヤダってんなら
他にも色んな言語がやれなくなるな
NoneとかNothingとか、相当する要素は色々あるから
0951デフォルトの名無しさん
2011/04/17(日) 09:16:25.30一般的な null とは違うので nil と呼ぶ
null やundef は予約語的な「無」だが、nil は NilClass のインスタンス(オブジェクト)だ
無であるならメソッドを受け付けないはずだが、メソッドだってきちんと動作する
「とりあえず全部オブジェクトにしようぜ」というコンセプトのもと、
いわゆる null や undef を表すために作られた決め事
…まあ、だからわざわざ lisp の言葉を持ってきたんだろう
これが null オブジェクトまたは予約語 null だったら大混乱必至だったと思う
0952デフォルトの名無しさん
2011/04/17(日) 10:10:05.08ruby で,あるページを取得したのですが、
『フレーム対応のブラウザでない場合は、本画面が表示されます。』
と返ってきます。どうすれば、ページの文字列を取得できるのでしょうか??
0953デフォルトの名無しさん
2011/04/17(日) 10:12:00.37取ってきたページのFRAME要素のSRC属性のURLにさらにリクエストかければいいんじゃねーの?
0954デフォルトの名無しさん
2011/04/17(日) 10:27:52.87Pythonの悪口を言っている奴がいると聞いてすっ飛んできました。
(#゚Д゚)ゴルァ!!
http://hibari.2ch.net/test/read.cgi/tech/1302692765/85
[ プログラム ] 【Perl,PHP】LLバトルロワイヤル16【Ruby,Python】
85 名前:デフォルトの名無しさん [sage]: 2011/04/16(土) 23:46:38.57
ここ、Rubyの関係者が粘着してるだろ。
なんだよ、>>79-80 からの話題替えはw
この流れはまずいって思ったんだろうなw
Rubyのコミッタのつぶやきまとめ
http://twitter.com/nari3/statuses/57992001030860801
nari3: "Rubyの力でたのしいなかまがぽぽぽ〜ん at RubyKaigi2011"
http://twitter.com/sora_h/status/2906062620
学校で今日はちょっと別のところに自転車で移動したんだけど、そこで学校に戻る
ときに豚同級生がカギをなくして、30分位まってた後に結局ポケットにあったとか
言って皆キレる。俺は「ヴァカだろ死ねよ!!」って言っておいた。同級生いじめは
ストレス解消。 12:37 AM Jul 29th, 2009 YoruFukurouから 1人がリツイート
http://twitter.com/sora_h/status/10014881594
皇太子の子供が不登校になったと聞いて。いじめか、いい
ぞもっと(ry なんでもないです。 12:59 AM Mar 5th, 2010 Termtterから
ガベージコレクションのアルゴリズムと実装 [単行本]
"http://www.amazon.co.jp/ガベージコレクションのアルゴリズムと実装-中村-成洋/dp/4798025623"
中村 成洋 (著) 相川 光 (著) 竹内 郁雄 (監修)
0955デフォルトの名無しさん
2011/04/17(日) 10:29:20.090956デフォルトの名無しさん
2011/04/17(日) 10:40:48.32HTML に関する知識がないご様子
HTML の基本的な勉強してからやろう
そっちのほうが躓くことなくスムーズにコトが進むぞ
0957デフォルトの名無しさん
2011/04/17(日) 10:49:23.690958952
2011/04/17(日) 10:57:52.99ありがとうございます。
自分はOperaを使ってるんですが、Operaで、
[ページのソースを表示]っていうメニューをクリックすると『フレーム対応でないとだめ』
のソースが表示され、
[フレームのソースを表示]っていうメニューをクリックすると、目的のページソースが表示されます。
しかし、目ぼしいSRCは記述されておらず、ruby でどうやればフレーム内のソースを取得できるのか
困ってます。。。
どなたか、ヒントだけでもいいので、何かありませんでしょうか?
0959デフォルトの名無しさん
2011/04/17(日) 11:01:30.57まずはhtmlのframeの項の説明読もうよ。すっごい簡単だから。
0960デフォルトの名無しさん
2011/04/17(日) 11:02:51.96偉そうな講釈は結構。
0961デフォルトの名無しさん
2011/04/17(日) 11:07:06.570962デフォルトの名無しさん
2011/04/17(日) 11:07:13.08優しい先生が欲しいならお金払わないと
0963953
2011/04/17(日) 11:16:35.14ありがとうございます。取れました。
0964デフォルトの名無しさん
2011/04/17(日) 14:24:05.290965デフォルトの名無しさん
2011/04/17(日) 17:46:05.15Terminal.appを立ち上げてSTDIN.getsでユーザーに文字入力させる
のですが、日本語文字列を入力するとき、deleteキーでの消去が
文字単位にならず、何とも微妙な感じです。
1文字消すのにdeleteの打鍵が2回必要だったり、文字列によっては
最後まで消去できなかったりして(実際には消えているようですが
画面には残ります)ストレスがたまります。
ちなみにTerminalで普通にシェルを使うときには上記の問題は
でません。アドバイスよろしくお願いします。
0966デフォルトの名無しさん
2011/04/17(日) 18:00:25.74require 'readline'
while s = Readline.readline("INPUT>", true) do
p s
end
0967965
2011/04/17(日) 18:48:31.50ありがとうございました。うまく行きました。
Readlineは聞いたことがありましたが、
こういうときに使うものなんですね。
0968デフォルトの名無しさん
2011/04/17(日) 19:02:09.57TKはどのサイトから入手できますでしょうか?
gemからインストールする事は出来ないのですか?
0969デフォルトの名無しさん
2011/04/17(日) 19:15:17.18ttps://github.com/oneclick/rubyinstaller/wiki/faq#bundled_short
で、Tk が必要なのに RubyInstaller を選択したお間抜けさんは通常は Ruby/Tk Kit を使う
0970デフォルトの名無しさん
2011/04/17(日) 19:33:59.770971デフォルトの名無しさん
2011/04/17(日) 19:35:43.830972デフォルトの名無しさん
2011/04/17(日) 19:37:49.720973デフォルトの名無しさん
2011/04/17(日) 19:45:43.02お勧めされてないのには理由があるってことだな
素直にActiveScriptRuby使え
0974デフォルトの名無しさん
2011/04/17(日) 19:57:38.030975デフォルトの名無しさん
2011/04/17(日) 21:56:43.31お間抜けさんというか、多くの初心者はRuby/Tkも入ってると思うだろう
まあRubyInstaller以外でも似たようなのはあるから、どっちもどっちではあるけど
0976デフォルトの名無しさん
2011/04/17(日) 22:02:14.50いらん物までゴテゴテついてるという見方もできなくもない
0977デフォルトの名無しさん
2011/04/17(日) 22:58:27.30Tkinter込みなので、そのままTkが動かせるのはいいなぁと思う
0978デフォルトの名無しさん
2011/04/17(日) 23:08:09.250979デフォルトの名無しさん
2011/04/17(日) 23:30:18.68gem installすると
ERROR: While execution gem ... (Errno::EACCES)
Permission denied - C:/PROGRA~1/ruby-1.8/bin/rackup.bat
ってエラーがでてうまくいかないのはなぜ?
そのディレクトリは書き込み可能にしてるんだけど。
0980デフォルトの名無しさん
2011/04/18(月) 00:09:39.05新しいものを使いたいのでriを使いたいのです
0981デフォルトの名無しさん
2011/04/18(月) 01:37:56.22文脈で違うと分かるけどさ。
0982デフォルトの名無しさん
2011/04/18(月) 06:46:18.67エラーとしてはまあそのまんま
そのファイル「が」パーミッションのエラーを起こしてる
そのファイル「で」パーミッションのエラーを起こしてるんじゃないので、bin/ だけいじってもダメ
gem install -V hogehoge すると、たぶん該当フォルダの書き込み表示したところでエラーだ
いくつか方法はあるんだけど、gem をホームのフォルダに user-install してしまうというのはどう
ユーザーのホームのフォルダの中にある .gemrc という6文字ファイルの先頭が
---
gem: "--user-install"
という2行になるように編集
それ以降、gem はすべてホームのフォルダの .gem/ というフォルダの中に入る
あと、rubygems 本体の更新ができないので
C:\Program Files\ruby-1.8\lib\ruby\bin
C:\Program Files\ruby-1.8\lib\ruby\vendor_ruby
の2つの書き込み権をrubyさんかgemさんのどっちかに対してどうにしかしておく
何からの理由でユーザーインストールせずパーミッションだけで解決したい場合は、上記の2フォルダに加えて
C:\Program Files\ruby-1.8\lib\ruby\gems
の3つくらいに対して、rubyさんかgemさんが書き込み可能にしておく
0983デフォルトの名無しさん
2011/04/18(月) 10:55:08.92サンクス。
ちょっと今時間がないので、試したらまた報告します。
レス数が950を超えています。1000を超えると書き込みができなくなります。