トップページ⇒tech
1001コメント355KB

Ruby 初心者スレッド Part 52

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/06/06(木) 23:50:09.17
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
RoRはスレ違いよ

前スレ
Ruby 初心者スレッド Part 51
http://toro.2ch.net/test/read.cgi/tech/1358636526/

るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/

Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/

逆引きRuby
http://www.namaraii.com/rubytips/
0348デフォルトの名無しさん2013/09/01(日) 11:05:22.42
a = 12345

下2桁45を取得方法をおしえて
0349デフォルトの名無しさん2013/09/01(日) 11:09:52.34
>>348
a.to_s[-2..-1]
0350デフォルトの名無しさん2013/09/01(日) 11:12:05.34
Rubyはどういう思想で設計されてるんえすか?
たとえば変換するメソッドとかは頭に必ずto_って付く縛りになっているものでしょうか?
0351デフォルトの名無しさん2013/09/01(日) 11:18:27.75
>>348
a % 100
でいいんじゃね?
0352デフォルトの名無しさん2013/09/01(日) 11:24:28.53
>>347

a.join.split(/(.*?¥r)/m).reject(&:empty?).map(&:chars)

ruby 2.0 未満では String#chars が Enumerable を返すので、
さらに .map(&:to_a) が欲しいかもしれないが、
Enumerable のままでも十分かもしれない。
0353デフォルトの名無しさん2013/09/01(日) 11:25:28.22
あ、正規表現の m フラグいらんかった。
消しわすれ。
0354デフォルトの名無しさん2013/09/01(日) 11:26:19.13
と思ったがやっぱりいるわ。たびたび済まん。
お茶飲んで落ち着く。
0355デフォルトの名無しさん2013/09/01(日) 11:30:49.32
>>347
元のソースを尊重するとすれば、最後の行に
temp << array.slice(start..-1)
を追加すればいいだけ。
tempは"\r"発見時にしか内容が更新されないから、each_with_indexを抜けたあとに、arrayの余り部分を処理させる必要がある。
0356デフォルトの名無しさん2013/09/01(日) 11:32:59.62
Rubyの公式マニュアルを修正したり追加して配りたいんですが
これってgithubで公開されてないんですか?
0357デフォルトの名無しさん2013/09/01(日) 11:38:46.35
>>347
array.chunk {|e| e == "\r" }.map(&:last).each_slice(2).map {|a| a.inject(&:+) }

なんか冗長な気がするが動く
0358デフォルトの名無しさん2013/09/01(日) 11:45:10.78
>>347
かなり冗長だけど、injectだけで書いてみた

http://play.island.ac/codepaste/code?id=1555
0359デフォルトの名無しさん2013/09/01(日) 11:49:13.43
>>356

github.com/rurema
0360デフォルトの名無しさん2013/09/01(日) 13:32:14.02
array.join.lines("\r").map(&:chars)
0361デフォルトの名無しさん2013/09/01(日) 13:38:59.99
なるほど。linesは行末文字を取り除かないから、それでOKなのか。
0362デフォルトの名無しさん2013/09/01(日) 18:07:12.31
>>352
>>355
>>357
>>358
>>360
ありがとうございました
0363デフォルトの名無しさん2013/09/02(月) 08:09:49.38
さっさと死ねルビーw
0364デフォルトの名無しさん2013/09/03(火) 01:06:28.68
アホがいる…
0365デフォルトの名無しさん2013/09/03(火) 06:51:15.72
>>364
ルビー信者のくせに言葉使うなww
死ねやゴミクズw
0366デフォルトの名無しさん2013/09/03(火) 08:10:31.99
RubyとPythonって統一しないんですかね
似た言語が2つあるのは明らかに悪い影響出してると思うのですが
0367デフォルトの名無しさん2013/09/03(火) 08:25:52.60
FORTRANとCOBOLって統一しないんですかね --> PL/I 誕生
CとPascal(Modula)って統一しないんですかね --> Ada 誕生
英語/仏語/独語..etcって統一しないんですかね --> エスペラント語誕生
0368デフォルトの名無しさん2013/09/03(火) 13:31:55.42
まずはひらがなとカタカナを廃止してローマ字に統一しようぜ
0369デフォルトの名無しさん2013/09/03(火) 14:13:01.94
>367
あんまり考えたことなかったけど
言われてみればあれだな
自然言語が複数種類あるのはバビルの塔が原因らしいけど
プログラミング言語が複数種類出来たのはなんでだろうね
0370デフォルトの名無しさん2013/09/03(火) 14:17:31.61
俺はさRubyでforとforeachを実装してもらいたいんだよ
0371デフォルトの名無しさん2013/09/03(火) 14:36:05.30
>>369
本質的にはプログラムはアセンブラで必要充分です
人間が手順を考えてハードウェアにほぼ直接、一連の指示を与えればいいだけだから

アセンブラへの指示をまとめたのがC言語
C言語での指示をまとめたのがRubyなどの(Cで書かれた)各種プログラミング言語
Rubyでの指示をまとめたのが、たとえばRailsなどのアプリケーションフレームワーク

str = 'hello!'
puts str

とほぼ同じだけの安全寄り動作をするC言語のソースは大量になり、アセンブラだと莫大になるだろう
0372デフォルトの名無しさん2013/09/03(火) 14:44:14.61
肝心な回答になってなかった

プログラミング言語が複数できる理由は、
我々が処理を関数やサブルーチンやメソッドにしてまとめてしてしまうのと完全に同じ
我々が関数やメソッドやクラスを作るのと同じように、言語製作者はプログラミング言語を作る
0373デフォルトの名無しさん2013/09/03(火) 14:44:15.08
mrubyのmってなに?
0374デフォルトの名無しさん2013/09/03(火) 14:45:00.92
30代業界未経験だけど言語を作ったら採用率高くなりますか?
0375デフォルトの名無しさん2013/09/03(火) 14:47:02.78
スレタイと関係ない
0376デフォルトの名無しさん2013/09/03(火) 14:51:19.56
>>374
情報系の資格とるほうが楽だしアピールもしやすい
0377デフォルトの名無しさん2013/09/03(火) 19:47:31.60
>>373
組み込みのm
最小のm
開発者の名前(イニシャル)M
MatzのM

Embeddable
. Minimal Implementation
. Considerable active committers have “M” as their name
initials, somehow.
. Some major committers have Matsumoto as their family
name, somehow. (note: They are not relatives)
. Matz

PDFの9ページ(9/19)
http://www.qcontokyo.com/data_2013/MasakiMuranaka_QConTokyo2013.pdf
0378デフォルトの名無しさん2013/09/03(火) 21:05:58.79
>>368-369
ひらがなとカタカナは、漢字から分かれてできたわけで
0379デフォルトの名無しさん2013/09/04(水) 01:07:09.66
かなの起源はハングル
0380デフォルトの名無しさん2013/09/04(水) 01:38:51.69
>>379
ハングルって最近出来たものじゃないの。
0381デフォルトの名無しさん2013/09/04(水) 03:53:20.15
ひらがな/カタカナとハングルならひらがな/カタカナが先だね
ただしカタカナは,新羅の仏教僧が仏典に注釈をいれるのに使っていた符号が先行の可能性がある,との説があるようだ
0382デフォルトの名無しさん2013/09/04(水) 07:45:21.43
最近どっかのニュースサイトに載った記事ネタだろ
なんでマジ議論してんだよ
0383デフォルトの名無しさん2013/09/04(水) 08:02:32.98
まあ当時の富裕層は渡来人だしね唐招提寺とかね
0384デフォルトの名無しさん2013/09/04(水) 12:06:24.73
gemのmysql2何でWindowsに対応してないのでしょうか?
何か決定的な対応できない不具合みたいなのがあるのでしょうか?
0385デフォルトの名無しさん2013/09/04(水) 16:05:23.24
Rubいや、Windowsを窓から投げ捨てろ
0386デフォルトの名無しさん2013/09/04(水) 21:27:02.30
Rubyでこれをよんでおけって本を全て教えてください
0387デフォルトの名無しさん2013/09/05(木) 01:31:29.76
モルモン教には入信しておいた方がいい
0388デフォルトの名無しさん2013/09/05(木) 14:45:29.80
gemで追加したけどいらなくなったモジュールって、どうやって削除すればいいでしょうか?
ゴミが残らない方法を教えてください。
0389デフォルトの名無しさん2013/09/05(木) 14:46:55.78
善意で作って公開してくれてるgemをゴミ呼ばわりするとか酷すぎる
0390デフォルトの名無しさん2013/09/05(木) 15:12:29.96
gem uninstall パッケージ名
で、インストールのときにコピーされたファイルとディレクトリは削除される
パッケージが勝手に作成・ダウンロードしたファイルで、パッケージのディレクトリ内にないものはたぶん消えない
0391デフォルトの名無しさん2013/09/05(木) 16:20:44.43
>>390
ありがとうございます。
問題はあれですよね、そのパッケージ動かした時にできるファイルがどこに作られるのかとか、
それって個々に調べるしかない感じですか?
0392デフォルトの名無しさん2013/09/05(木) 17:29:07.81
よほど糞な作り手じゃなきゃ
readme に書いてある
0393デフォルトの名無しさん2013/09/05(木) 22:27:49.72
>>392
ありがとう!!!
これで元に戻せなくなる心配をせずにrubyに入門できる!!!
0394デフォルトの名無しさん2013/09/05(木) 23:26:10.09
>>384
対応してるぞ
俺先月複数回Windowsにmysql2いれたし

ただしコンパイラがどーのこーのヘッダファイルがどーのこーのすげー面倒くせーよ
0395デフォルトの名無しさん2013/09/05(木) 23:40:30.45
>>388

それがいやなので最近はbundlerだけをシステムgemとしてインストールして、
あとはアプリのGemfileに書いたものをvendor/bundleに入れるだけ、にしてる。
使わなくなったら bundle clean するだけ。
Webアプリ屋としてはこれで十分。

日常のスクリプト書きに使う人には適さないと思うけど。
0396デフォルトの名無しさん2013/09/06(金) 00:05:23.50
>>395
何それ役に立ちそう!!
やりたいのは基本Ruby on Railsだけだから、
それで出来るのならそっちでやりたい!!!
ちょっと明日ググってみるわ!!ありがとう!!!
0397デフォルトの名無しさん2013/09/06(金) 00:18:09.78
いきなりタメ口つかってんじゃねえよタコ
0398デフォルトの名無しさん2013/09/06(金) 00:25:22.01
>>388
rpmやdebなどの依存関係を定義できるパッケージマネージャを使って削除。
0399デフォルトの名無しさん2013/09/06(金) 01:53:01.61
>>396
railsすらbundlerで入れるのみ、で通すのは少々手間が必要(可能では
ある)なので、rails本体とその依存物くらいまではシステムに入れても
いいかもね。
0400デフォルトの名無しさん2013/09/06(金) 11:36:15.59
webricってlocalhost:任意のポートでしかアクセスできませんよね
バーチャルホストに対応したRubyのサーバってありませんか?
0401デフォルトの名無しさん2013/09/06(金) 11:36:54.96
プロクシかましてapache使うのはNGです
gemで入れられるRuby用のサーバご存知の方教えてください
0402デフォルトの名無しさん2013/09/06(金) 22:37:49.24
array = [
  [ {:char=>'a'}, {:char=>'b'}, {:char=>'c'}],
  [ {:char=>'e'}, {:char=>'f'}, {:char=>'g'}],
  [ {:char=>'h'}]
]

これでabcefghという文字列を取りたいのですが、


array.map {|line| line.map {|hash| hash[:char]}.join }.join


以外にもっと良い書き方はありますか?
0403デフォルトの名無しさん2013/09/06(金) 23:10:17.03
RubyにおいてどうでもいいHashオブジェクトはhと呼ぶ(配列はarrかa)
arrayやhashと書かれている場合はなにか意図を探してしまうので使わないほうがよい
それと、配列の要素はelementのeだ

で、まあ、回答としてはそれ以外には特にないというか、
それ以外の書き方をしてなんらかの理由でテクニカル()に動作してもおそらく意図が伝わらないのでやめといたほうがいい

arr.map{|e| e.map{|h| h[:char]}.join}.join
0404デフォルトの名無しさん2013/09/06(金) 23:26:03.60
>>403
ありがとうございました
0405デフォルトの名無しさん2013/09/07(土) 04:15:34.40
flatten.mapとか
0406デフォルトの名無しさん2013/09/07(土) 06:03:44.60
array.flatten.map{|m| m[:char] }.join
=> "abcefgh"
0407デフォルトの名無しさん2013/09/07(土) 09:54:41.70
Rubyには_を書かない仕様にしてほしかった
to_sとか
0408デフォルトの名無しさん2013/09/07(土) 14:45:17.25
array.flat_map{|e| e.map{|h| h[:char] }}.join
とか
array.flatten.flat_map(&:values).join #これは駄目か
0409デフォルトの名無しさん2013/09/07(土) 16:12:12.73
>>402
array.map{|e1|
  e1.map{|e2| e2[:char]}.join
}.join

一番内側から考えるといいです。
{:char=>'a'} から 'a' を取り出すコードを書く。
次に、[ {:char=>'a'}, {:char=>'b'}, {:char=>'c'}] から 'abc' を取り出すコードを書く、という具合に。
04104092013/09/07(土) 16:13:22.15
すみません。リロードし忘れたため、他の方の回答に気づきませんでした…
04114092013/09/07(土) 16:16:34.04
しかも、質問の後半部分にも気づかなくて、とんだ見当違いの回答をしてしまった…
0412デフォルトの名無しさん2013/09/08(日) 13:13:40.50
`git ls-files`.split($\)って記述を見かけたんだけど
$\って何を表現してるんでしょうか?

改行マッチっぽい気はするんですが、何故これで改行になるのかわかりません。
予約語でしょうか。
0413デフォルトの名無しさん2013/09/08(日) 16:36:43.68
>412
ttp://doc.ruby-lang.org/ja/1.9.3/class/Kernel.html#V_--5C
0414デフォルトの名無しさん2013/09/08(日) 22:23:24.83
>>413
こんなのあったんですね。ありがとうございます。
0415デフォルトの名無しさん2013/09/08(日) 23:51:16.47
RubyのフレームワークでRoRみたいな高機能なのじゃなくてシンプルなやつありませんか?
0416デフォルトの名無しさん2013/09/08(日) 23:55:09.40
webrick
0417デフォルトの名無しさん2013/09/09(月) 00:05:54.53
Sinatra
0418デフォルトの名無しさん2013/09/09(月) 00:15:58.04
意味不明度合いはどれもほとんど変わらないとは忠告しておく

もし、RoRを忌諱する理由が「理解できなかった」なのなら、おそらくSinatraもWEBrickも「理解できない」可能性が大
0419デフォルトの名無しさん2013/09/09(月) 02:00:35.20
ひどく的外れ
0420デフォルトの名無しさん2013/09/09(月) 07:35:51.52
Railsは思想への深い理解が必要でつらい
0421デフォルトの名無しさん2013/09/09(月) 07:46:42.33
cgi.rb
0422デフォルトの名無しさん2013/09/09(月) 09:52:00.56
付いた解答がwebrick
0423デフォルトの名無しさん2013/09/09(月) 10:02:27.46
cgi.rb はおわこん
0424デフォルトの名無しさん2013/09/09(月) 10:04:16.64
RubyのWSGIモジュールはどれ?
0425デフォルトの名無しさん2013/09/09(月) 10:25:34.17
Rack
0426デフォルトの名無しさん2013/09/09(月) 16:46:44.94
>>415
Rackでいいんだろうけど、ActiveRecordの代替はどうしよう
0427デフォルトの名無しさん2013/09/10(火) 00:20:21.41
rbenv/pluginsにruby-buildをcloneしてきたんですけど、rbenv installでrbenv: no such command `install'というエラーが出てしまいます。

どうしてでしょうか。。
0428デフォルトの名無しさん2013/09/10(火) 00:34:09.35
rbenv/pluginsにruby-buildをcloneしてきたんですけど、rbenv installでrbenv: no such command `install'というエラーが出てしまいます。

どうしてでしょうか。。
0429デフォルトの名無しさん2013/09/10(火) 00:41:58.84
自己解決しました。。
0430デフォルトの名無しさん2013/09/11(水) 00:42:26.66
。。
0431うゆ2013/09/11(水) 20:59:57.66
ゆうちゃんの件ではスルーしてたんだけど、2ch●漏れでtorに興味出てきて使ってみたんだよ
そしたら、急激にネットワーク関連の知識と技術が増えてきて
ついに「本物」になってしまった・・・・
一瞬で、ネットワークの負荷分散や学校や企業みたいに沢山のホスト扱うノウハウとか
知識がついた
設定やってって言われたら多分、出来る
ネットワーク技術者()の資格とかそういうのもあったけど、あれってなんなの?俺にとって一瞬で身に付くレベルのことを
皆必死に勉強して、資格とって・・・

ねえl、なんで俺はいつも、pc関連になると本を読むわけでもなく「一瞬」で理解しちゃうんだろ?
適正っていう物なんだろうけど・・・我ながら異常性を理解してるんだ
自分がごく自然に、やってる事が、いかに異常かってのを気付かせてもらったのは、
昔、知り合いのpcのBIOS設定やってるときだった、「英語読めんの?」 → 「んー、読めないけど、感でやってる」
これだ。

これが"一般人"には出来ないというのが、分かった。俺は確かに英語が読めない、でも・・・・PC関連が少しでも関わってると
なぜか読めない英語も読めるようになってしまうんだ

英語の文章単体では読めないものの、英語+PC技術関連になると、俺はその文章を読むことが出来る・・・程度の能力

つうか、"字"を読んでるんじゃなくて、「伝えたい意図」を詠んでる から

俺にとっては単語の一つ一つが読める必要すらない・・・
0432うゆ2013/09/11(水) 21:13:06.61
俺は英語のPC技術関連の文章を「字」を読んでいるわけじゃないし
ソースコードに対しても「読んでる」わけじゃないんだろうな
「詠んでる」が、正しい

tor使い始めて1日目で、理解して、
3日目にはhidden serviceの使い方を理解して、
1週間経った頃には、torのソースコードを見ることもなく、
torの仕組みをほぼ理解し、作ってって言われたらミニチュアくらいを自分で作れるところまで来てしまったのかもしれない・・・・
いや、当然まだ全然ググってもいないし知識もないよ…? ただ、自信だけが "此処" にある・・・
この異常性は、なんなんだろうな
作った事もなく、ググってもいないし、知識もないのに  "自信" だけが俺にはあるんだ 
けど一般人には、これが無いんだろ 作った事もなく、ググってもいないし、本もないし、 確かに知識もない、
初めてのことなのに、 「やれる」 っていう ”自信” ・・・・・・・・

どうしてこんなに、適正能力の高い奴がいるんだろう
俺もうプログラマじゃないし、かなり離れた事やってるよ

日曜プログラマ化してるというか、暇なときにちょっとやる程度、
にもかかわらず・・・・スキルを高めようとも思ってないのに・・・・勝手に技術が身について・・・・・まじで止まらないのな。。。。
一度、身に付いた習慣、「スキルレベルを向上させていくリズムと快感」それをある程度、停止させてくれたのは、この世の中ではラグナロクだけだった
ラグナロクオンラインやってるときだけは完全にプログラミングを忘れる事が出来た
けど、それをやめた今、高めようとなんて思ってないのに勝手に・・・スキルが高くなっていく・・・
それに対し、怖さすら感じる  俺は15の時、自分の未来が見えた
最強ハッカーになって、IT歴史に名を残すものを開発し、起業して、・・・退屈な人生を送るという未来がな
俺は、それに近づくのが怖いんだ
0433デフォルトの名無しさん2013/09/11(水) 21:26:33.00
最強ハッカーになるのが怖い、歴史に名を残すのが怖い、起業するのが怖い、退屈な人生を送るのが怖い

15の時に見えてしまった自分の未来像、そこから離脱する為に、俺はありとあらゆる事をやってきた
にもかかわらず、未だに勝手に、俺はPC技術が勝手に高まっていくし、止まらない
最終兵器彼女のちせって。こんな気持ちだったんだな

俺はこのまま歴史に名を残してしまうのか・・・・・? 嫌なんだよそういうの
先の見えたレールを歩むのは・・・!!

もう見えてしまっている未来というのは、一度読んだ本みたいなもので、 俺はその一度読んだ本をもう一度読もうとは思わない
だから、未読の道へ進んでる
戦争でも起こるのか?俺は最終兵器?


俺は今特殊な環境から書き込んでる
最強ハッカーにしか出来ない方法とセキュリティ設定
セキュリティソフト(笑)とか入れるくらいなら、自分で高度セキュリティのネットワーク構築したほうが
セキュリティソフト(笑)入れるより、よほど良い事がわかってしまった
HDD削除とか、爆撃系のウィルスは食らうけど、遠隔操作系ウィルスは、俺には一切効かなくなってしまった。99%はカットされるであろう

投稿テスト
0434デフォルトの名無しさん2013/09/11(水) 21:40:24.90
pcが行ってる通信をすべて掌握してるのってマジで気持ちいい

自分の許してない通信は今、どんなアプリだろうと一切行われていない
セキュリティソフトやWindowsアップデートも例外ではなく・・・・

自分の許可なくそれらはMikurosohutoやNotonanchivirusuに通信することさえできない
その他の弱小アプリなんて、もはや息してないw
もしもこのpcにトロイ入ってるとかウィルス入ってるとかあったとしても関係ない
俺様が今2chに書き込んでいるように、特殊な方法でしか外部と通信出来ないから

セキュリティソフトって何だったんだろうな・・・・・

投稿テストend
0435デフォルトの名無しさん2013/09/11(水) 22:06:58.68
nokogiriでスクレイピングしたいんだけど、そのウェブページが、
JavaScriptを有効にしてくれって言ってくるんだけどどうやって有効にしたらいいか教えてください
0436デフォルトの名無しさん2013/09/11(水) 22:15:14.37
こういうバカっぽい質問、あたしは好きよ
0437デフォルトの名無しさん2013/09/12(木) 01:17:25.76
nokogiriでJavaScriptを認識させるためのモンキパッチを↓が書く
0438うゆ2013/09/12(木) 01:32:20.63
質問です
Webrickでたてたプロキシーサーバーにsocksでも接続できるようにしたいんですが
何を書き足せばいいのかよくわからないんですけど
0439デフォルトの名無しさん2013/09/12(木) 07:24:31.94
自己解決しました
0440デフォルトの名無しさん2013/09/12(木) 09:54:32.55
>>435
phantomjs
0441デフォルトの名無しさん2013/09/12(木) 12:10:04.36
こいつに返事しなくていいよ
0442デフォルトの名無しさん2013/09/13(金) 04:01:23.37
どいつだよ
0443デフォルトの名無しさん2013/09/13(金) 04:57:23.85
initializeの中からyieldを呼んでるソースを見かけて驚いたのですが、
initializeの最後なら文法的にありなんでしょうか?
コンストラクタを実行している最中ってオブジェクトがないってイメージなのですが。
0444デフォルトの名無しさん2013/09/13(金) 05:33:21.87
その場合ならinitializeに渡されたブロックを実行するだけで
initializeで作成中のオブジェクトとyield呼び出しに直接的な関係は無いでしょ
0445デフォルトの名無しさん2013/09/13(金) 08:17:29.10
initializeはコンストラクタじゃない。
initializeを呼ばれた時点で既にインスタンスは存在する。

クラス.new は
1. クラス.allocate でインスタンスを生成する。
2. そのインスタンスのinitializeを呼ぶ。このとき、newの引数とブロックを渡す。

という動作。
0446デフォルトの名無しさん2013/09/13(金) 08:36:53.63
死ねゴミ共がw
死ねゴミ共がw
0447デフォルトの名無しさん2013/09/13(金) 09:25:39.82
JavaScriptのように
var a = false
var b = a|123
Pythonのように
a = False
b = a|123

これでbに123が入るんですが
Rubyだと
b = false
a = b|100
p a
と書いてもtrueがbに入ってしまいます
Rubyではどう書けますか?
0448デフォルトの名無しさん2013/09/13(金) 09:44:35.32
||
■ このスレッドは過去ログ倉庫に格納されています