Ruby 初心者スレッド Part 35at TECH
Ruby 初心者スレッド Part 35 - 暇つぶし2ch369:デフォルトの名無しさん
10/03/13 00:13:40
Unicode の U+2295 みたいな表記を Ruby1.8 で該当バイナリ文字列に変換する方法はありませんか

370:デフォルトの名無しさん
10/03/13 00:24:07
>>369
「U+2295」が文字列という前提で

(0.入力文字列の書式をチェックします。)

1.分割します。

U+ … ポイ
22 … 1バイト目
95 … 2バイト目

2.1バイト目と2バイト目をごにょごにょします。Array#pack() 、かなあ?

371:デフォルトの名無しさん
10/03/13 00:27:09
>>369
require 'nkf'
s = 'U+3042 U+3044 U+3046'
puts NKF.nkf('-w, --numchar-input', s.gsub(/U\+(\d+)/){"&#x#{$1};"})



372:デフォルトの名無しさん
10/03/13 00:32:54
>>371
> /U\+(\d+)/
16進数じゃない?

/U\+([0-9a-fA-F]{4,6})/
でいける?

373:デフォルトの名無しさん
10/03/13 00:37:46
>>371
間違ってるぞ

puts NKF.nkf('-w, --numchar-input', s.gsub(/U\+([\da-f]+)/i){"&#x#{$1};"})

374:デフォルトの名無しさん
10/03/13 00:52:39
1.8では、量が多くない場合はNKFに頼るのが間違いないと思う
1.9だと簡単なんだけど

375:デフォルトの名無しさん
10/03/13 01:20:47
$ cat a.rb
require 'nkf'
sikaru = NKF.nkf('-w, --numchar-input', %w(20B9F).map{|s| "&#x#{s};"}.join)
p sikaru
puts sikaru
$ ruby -Ku ./a.rb
a.rb:2: [BUG] Segmentation fault
ruby 1.8.7 (2010-01-10 patchlevel 249) [i686-linux]

うひょう

376:デフォルトの名無しさん
10/03/13 04:18:36
本来はiconv使うべきとは思うが、実用的なのはnkfだしなあ。

377:デフォルトの名無しさん
10/03/13 05:37:51
>>369
"U+20B9F".gsub(/U\+([0-9A-Fa-f]{4,6})/){[$1.to_i(16)].pack("U*")}

>>371
-w, の , が余計

378:66
10/03/13 05:57:18
> File.expand_path('あ', '/'.force_encoding(Encoding::ASCII))
Encoding::CompatibilityError: incompatible character encodings: UTF-8 and US-ASCII
となるのですが、これはバグ?
ちなみに実際やりたいことは、Tempfile.open('あ') です。

環境:fedora11、ruby 1.9.2dev (2010-03-06 trunk 26825) [i686-linux]

379:デフォルトの名無しさん
10/03/13 06:46:02
ライブラリのインストールに滅茶苦茶時間掛かるんだが
なにこれ

380:デフォルトの名無しさん
10/03/13 10:12:06
gem search -r hoge
searchっていちいち入力するの面倒いだけど、searchの短いオプションって無いの?

381:デフォルトの名無しさん
10/03/13 10:50:10
スレのバージョンお勧めに従わない人間は自業自得なのでスルー

>>379
そりゃ君のパソコンがプア過ぎるのだよ
気になるなら -V をつけて gem install -V hogehoge すると固まったような時間帯に何してるのか見える
"Building native extensions. This could take a while..." はCで書かれたファイルをコンパイル中(ものによっては遅い)

ごっついライブラリだと定番ライブラリを10個くらい追加インストールするからどんなマシンでも一見とても遅いぞ
来週くらいに gem -V update しても遅いならまたおいで

>>380
sea

なにこれ超中途半端
正確には先頭から文字列にマッチするコマンド探してるので、s と se では複数マッチしてエラー
$ gem s mechanize
ERROR: While executing gem ... (RuntimeError)
Ambiguous command s matches [search, server, sources, specification, stale]
$ gem se mechanize
ERROR: While executing gem ... (RuntimeError)
Ambiguous command se matches [search, server]
$ gem sea mechanize

*** LOCAL GEMS ***

mechanize (1.0.0, 0.9.3)


382:デフォルトの名無しさん
10/03/13 11:01:06
質問ですが、

PythonのPython Image LibraryみたいなRubyの画像処理ライブラリってありますか?

383:デフォルトの名無しさん
10/03/13 11:13:21
>>382
ありません
ImageMagickインストールしてgem install rmagickするしかないねえ

384:デフォルトの名無しさん
10/03/13 11:13:50
用途にもよるけど、既存のCで書かれた画像処理ライブラリを
Rubyから呼び出して使うことが多いと思う。

RMagick(ImageMagickのライブラリを使用)
Ruby/GD2(GD2を使用)
Rcairo(cairoを使用)
など。

ImageMagickは機能過多だ、サムネが作りたいだけなんだという
人向けにImageScienceというのもあるな。サムネ作成専用。

385:デフォルトの名無しさん
10/03/13 11:15:29
>>381
スレの勧めないバージョンインストールしておきながら
お勧めなら引っかからない基本的エラーで文句言うような人はスルー
というのが正しいかと思う

お勧めでなくても入り口以外で引っかかってるなら質問どうぞ

386:デフォルトの名無しさん
10/03/13 11:19:17
>>378
バグっぽい気がしたのでチケット切ってみた。 #2955


387:デフォルトの名無しさん
10/03/13 11:21:38
>>383-384
なるほど、ありがとうございます。
画像出力より入力の機能の方を重視したいので
PILと同程度のライブラリとなるとImageMagickをつかないといけないんですか・・・
FFIするならGIL辺りが良さそうですね。
参考になりました。


388:デフォルトの名無しさん
10/03/13 11:23:54
春休みスレ

389:デフォルトの名無しさん
10/03/13 11:32:34
>>388
間違ってるならあとから正せばいい

質問者には数時間くらいは待ってもらえるといいかもしれん

390:デフォルトの名無しさん
10/03/13 11:55:34
>>380
俺は面倒だから工夫してる。何度も同じコマンドうつのはDRYじゃあるめえ

Windowsなら以下の内容をgems.batとしてパスが通ったところに置いておき、コマンドラインで gems hoge で検索
gem.cmd search --details --both --all %*

Unix系でbashなら、~/.bashrcに以下を書いておいて gems hogeで検索
alias gems="gem search --details --both --all"

あくまで例なのでコッチのほうがいいとか指摘してください

391:デフォルトの名無しさん
10/03/13 11:58:15
あんまりコマンドのエイリアスは設定しない方がいいって
誰か言ってなかった?

392:デフォルトの名無しさん
10/03/13 12:03:40
* 別の環境に移ったときになんぞこれってなるからエイリアスすんな派
* 自分好みに環境をカスタマイズしてこそUNIXのシェルだろJK派

どっちを選ぶも自由

393:66
10/03/13 12:03:56
>>386
ありがとうございます!

文句を言いたいわけじゃなく、バグなのか仕様なのか自分の勘違いなのか自信が持てないから、
このスレを利用させてもらっちゃったんですが、相応しくなかったみたいですね。
すみません。
もう書くの止めときます。


394:380
10/03/13 12:46:52
>>381
seaね、ありがとう
>>390
linuxを使っているならaliasを使うけど、
今はwindowsを使っているからそんな方法があるなんてわからんかったよ

395:デフォルトの名無しさん
10/03/13 12:55:19
>>393
1.9.1だったなら俺も>>385に同意だけど、1.9.2devは本スレが妥当じゃないかな

396:デフォルトの名無しさん
10/03/13 12:55:54
ライブラリが全然整理されてない印象<Ruby

397:デフォルトの名無しさん
10/03/13 13:11:18
うおお、ライブラリが全然整理されてない印象さんがRubyと喋ったぞ

398:デフォルトの名無しさん
10/03/13 13:45:08
<Rubyでなくて>Rubyだと思う
固定された意味はないけど

質問
エンコーディングプラグマ、通称マジックコメント、は、
該当するマルチバイト文字のようなもんが書かれてないようなライブラリを
自作して公開する場合はつけないほうがいい?

399:デフォルトの名無しさん
10/03/13 13:45:51
あ、>>398は1.9.1の場合ね

400:デフォルトの名無しさん
10/03/13 13:48:35
require 'Qt4'

app = Qt::Application.new(ARGV)

hello = Qt::PushButton.new('Hello World!')
hello.resize(100, 30)
hello.show()

app.exec()
テストコード(コピペ)を動かそうとしているんだけど、動かない
>C:\Ruby\lib\ruby\gems\1.8\gems\qtruby4-2.1.0-x86-mswin32\lib\ はちゃんとあるんだけどね
環境変数が問題なのかな?

401:デフォルトの名無しさん
10/03/13 13:52:19
>>400
動かないのならエラーメッセージを貼っておくれ

スクリプトをダブルクリックして実行したのなら
コマンドプロンプトから実行して

402:デフォルトの名無しさん
10/03/13 13:59:36
おー、WindowsでQtライブラリ使ってる人初めて見た

403:デフォルトの名無しさん
10/03/13 14:08:03
rubygemsでインストールしたパッケージのヘルプってどうやって見れますか?

404:デフォルトの名無しさん
10/03/13 14:09:59
>>398
書かない場合は US-ASCII を指定したのと同義。
ASCII文字しかないなら書いても書かなくても結果は同じ。

8ビット目が立ったシングルバイト文字は入れてないよね?


405:デフォルトの名無しさん
10/03/13 14:12:27
>>403
riかrdocか。
gem server を起動して URLリンク(localhost:8808) でも読める。


406:デフォルトの名無しさん
10/03/13 14:13:09
正規表現の動作が変わるんじゃなかったか

407:400
10/03/13 14:14:30
>>401
test.rb:1:in `require': no such file to load -- Qt4 (LoadError)
from test.rb:1
見てのとおりライブラリの読み込みに失敗しています

URLリンク(let-your-heart-soar.txt-nifty.com)
この通りにやって、C++のチュートリアルは動くようになっています
でも、こんな事をやってqtrubyに関係あるのか疑問

>>402
ruby gtk2を使おうかなと思ったけど、gtk+のライブラリ全然わかんないから
linuxでもqtrubyが動けば、linuxで開発してwindowsでexeを作ろうかな~と

それに、2週間くらい前にこんな本を買ったし
>入門 Qt 4 プログラミング
>URLリンク(www.oreilly.co.jp)

408:デフォルトの名無しさん
10/03/13 14:15:52
>>403
gemディレクトリ/ruby/1.8とか/doc/ の中にファイルが入ってるので好きなときに読め
ActiveSriptRubyの場合はC:\Program Files\ruby-1.8\lib\ruby\gems\1.8\doc\

409:デフォルトの名無しさん
10/03/13 14:17:57
>>407
require 'rubygems'
require 'Qt4'

410:デフォルトの名無しさん
10/03/13 14:25:42
>>406
US-ASCIIなソースにUS-ASCII以外のマジコメを書く場合?

411:400
10/03/13 14:26:51
>>409
文法を覚える前にテストをするもんじゃないですねwww
助かりました、ありがとうございます

412:デフォルトの名無しさん
10/03/13 14:44:08
>>403
HTMLファイルでいいならシェルから

gem environment

した出力の

- GEM PATHS:

の1行目(になかったら2行目)の場所の doc ディレクトリの中に

413:デフォルトの名無しさん
10/03/13 16:20:07
#=>って習慣なの?

414:デフォルトの名無しさん
10/03/13 16:25:32
>>413
URLリンク(doc.okkez.net)

415:デフォルトの名無しさん
10/03/13 16:26:05
習慣かどうかはしらん
ふつうコメントの直後にスペースをひとつ挟むから
# => value だよな
はちどりのRuby本もそうなってる

416:デフォルトの名無しさん
10/03/13 16:39:23
個人的にはあまり好きではない
まあ、書籍向けの表現だと思う

417:デフォルトの名無しさん
10/03/13 17:23:40
gem install -r XXXX
ERROR: could not find gem XXXX locally or in a repository
何これ?

418:デフォルトの名無しさん
10/03/13 17:33:32
文字通り。


419:デフォルトの名無しさん
10/03/13 17:33:47
>>417
その質問に至った経緯をまず聞こうか

420:413
10/03/13 17:37:04
>>419
linuxでそう入力しただけだけど
得にそれ以外に何もしていない

421:420
10/03/13 17:37:46
名前を間違えた
>>417

422:420
10/03/13 17:39:28
ごめん、ただのスペルミスですたorz

423:デフォルトの名無しさん
10/03/13 17:39:54
まずはgem search- rを使うんだ、でその結果から選ぶがよろし
自分で入力せずに素直にbash,zshの補完機能に頼った方がいいと思う

424:デフォルトの名無しさん
10/03/13 21:46:53
他の言語のisXXXメソッドは、XXX?とrubyではなってるみたいですね
三項演算子とかと一緒に使うと読みにくいと思います
お前らはどうやっていますか?

return windows.visible? ? 値A : 値B

425:デフォルトの名無しさん
10/03/13 22:07:58
それほどでも・・・
return (windows.visible?) ? 値a : 値b


426:デフォルトの名無しさん
10/03/13 22:10:57
ぶっちゃけ、うっかり
window.visible? A : B
と書いて怒られることはよくある。


427:424
10/03/13 22:13:57
そんなもんですか
そんじゃ気にしないようにしますわ

428:デフォルトの名無しさん
10/03/13 22:20:29
条件演算子はぶっちゃけそれほど使わない
不自然感を感じてるうちにifとかに書き換わるのでむしろラッキー

429:デフォルトの名無しさん
10/03/13 23:03:17
include Enumerable した場合、自分のクラスで each を定義しますが

def each
@array.each do |e|
yield(e)
end
end

def each(&block)
@array.each(&block)
end

どちらが好ましい書き方なんでしょうか?

430:デフォルトの名無しさん
10/03/13 23:27:40
後者

irb1.9> class C; include Enumerable; def initialize; @a=[1,2,3]; end; def each(&b); @a.each(&b); end; end
irb1.9> p C.new.each
#<Enumerator:0x931483c>

irb1.9> class C; include Enumerable; def initialize; @a=[1,2,3]; end; def each; @a.each{|e| yield(e)}; end; end
irb1.9> C.new.each
LocalJumpError: no block given (yield)


431:429
10/03/13 23:43:14
>>430
なるほど、ありがとうございます。

432:デフォルトの名無しさん
10/03/14 00:00:43
前者は昔の名残だね。

433:デフォルトの名無しさん
10/03/14 00:10:16
前者は return @array.to_enum unless block_given? を最初
にやればよさそうだけど、今回は無理に使うこともないな。


434:デフォルトの名無しさん
10/03/14 00:16:42
javaかC++のプログラマのための、Ruby入門のサイトを教えてください

435:デフォルトの名無しさん
10/03/14 00:19:42
URLリンク(www.google.co.jp)

436:デフォルトの名無しさん
10/03/14 00:21:15
C++やJavaの特有事情は忘れて勉強したほうが習得はうまくいきそうな気がする
それこそBasicの制御構造レベルの知識だけある人のほうが吸収早そう

437:デフォルトの名無しさん
10/03/14 00:44:12
>>424
return windows.visible?? a : b
疑問符を二個つなげてすげー疑問って雰囲気を醸し出す

438:デフォルトの名無しさん
10/03/14 00:48:41
>>386 のチケット、 r26909 で修正された。
$ ruby -ve "puts File.expand_path('あ', '/'.force_encoding('US-ASCII'))"
ruby 1.9.2dev (2010-03-13 trunk 26909) [x86_64-darwin10.2.0]
/あ


439:デフォルトの名無しさん
10/03/14 02:15:40
>>430
前者の書き方しか知らなかった。

440:66
10/03/14 07:03:08
>>395
今度から本スレに書きます。

>>438
ありがとうございました。
確認しました。


441:デフォルトの名無しさん
10/03/14 08:44:47
春休みで盛況だなw

442:デフォルトの名無しさん
10/03/14 11:49:30
moduleってパッケージとMixinを、実現するための予約語なんだよね
Mixinは実装を持ったインターフェイスみたいなもんだから、
moduleはmoduleを継承する事ができるの?

443:デフォルトの名無しさん
10/03/14 12:18:51
>>438
乙乙!!

444:デフォルトの名無しさん
10/03/14 12:24:46
>>442
> moduleはmoduleを継承する事ができるの?
そもそも文法的に継承できない(module M2 < M1 は SyntaxError)

メソッド検索順位のひとつ上にモジュールをぶちこむ include を使う

module M1; def m; "M1!"; end; end
module M2; include M1; end # M2 の上に M1
module M3; include M2; end # M3 の上に M2
module M4; include M3; end # M4 の上に M3
class C; include M4; end # C の上に M4

p C.new.m
p C.ancestors # 継承とインクルード込みの検索優先順位を表示

結果

"M1!"
[C, M4, M3, M2, M1, Object, Kernel]

検索順位的には継承と同じなので実用上の問題はない

class C1; end
class C2 < C1; end
class C3 < C2; end
p C3.ancestors #=> [C3, C2, C1, Object, Kernel]

445:デフォルトの名無しさん
10/03/14 12:40:44
じゃあ継承でいいじゃん

446:デフォルトの名無しさん
10/03/14 12:46:49
>>445
よくねー

人間を継承した俺がいたとして、翼が欲しいと思ったら

class 俺 < 翼
end

するのか? 俺は翼の一種なのか? 俺は翼の子分か? 人間且つ翼の俺って何?
翼って機能だろ

class 俺
機能追加 翼
end

とするのが筋だろ、わかりやすいし、渾然一体になる継承よりは機能外すのも簡単そうだ
だから翼はモジュールにして、includeで追加する

実際は
俺 = 人間.new(params)
俺.extend(翼)
とするのが妥当ではあるがまあ細かいこと気にするな禿げるぞ

447:442
10/03/14 13:12:23
>>444,>>446
ありがとう

>>445
なりすましっぽく見えるレスだな

448:デフォルトの名無しさん
10/03/14 23:18:08
○引数で複数のディレクトリパスを与える
○与えられたディレクトリに対して再帰的にファイルを全て削除する
○ただし.txt拡張子が付くファイルのみ削除しない

プログラミングに不慣れながらこんなスクリプトを書こうと思い、以下のようになりました。

#!/usr/bin/ruby
require 'fileutils'
ARGV.each do |i|
FileUtils.rm(Dir.glob(i + '**/*[^(txt)]'), :force => true)
end

突っ込みどころなどありましたら教えていただけないでしょうか。
簡単なテストをすると意図したように動くのですが少し不安なので質問させていただきました。
自分で怪しいと思ってる箇所は以下の2箇所です。
① i + '**/*[^(txt)]' こんな指定の仕方でいいのだろうか
②そもそもFileUtilを使うべきなのか

宜しくお願いします。

449:デフォルトの名無しさん
10/03/14 23:25:51
>>448
他のスレから飛ばされてきたなら、
飛ばされましたって書かないとダメだよ

450:デフォルトの名無しさん
10/03/14 23:39:50
>>448
死んでいいよ

451:デフォルトの名無しさん
10/03/14 23:41:46
Dir.globのワイルドカードはあまり知らんが(Windowsユーザーなもので)
否定形なのはRubyでやったほうが無難だと思う

Dir.glob(i.sub(/\/?$/,'/**/*')).reject{|e| test(?d,e) or e =~ /\.txt$/i}


452:デフォルトの名無しさん
10/03/14 23:43:52
i ってなんだろう?
そもそもグロブでいいのか。

453:デフォルトの名無しさん
10/03/14 23:45:01
require 'fileutils'
noop = verbose = ARGV.include?(':noop')
ARGV.each do |s|
pathlist = Dir.glob(File.join(s, '**/*'))
pathlist.delete_if{|path| File.extname(path) == '.txt'}
pathlist.each do |path|
FileUtils.rm(path, :force => true, :noop => noop, :verbose => verbose)
end
end

$ ruby ./del.rb tgtdir :noop


454:デフォルトの名無しさん
10/03/14 23:45:48
*[^(txt)] は、
最後の文字が 開き括弧 でも t でも x でも t でも(アゲイン) 閉じ括弧 でもない
という意味になるんじゃないか?





455:デフォルトの名無しさん
10/03/14 23:48:11
>>453
next ですっ飛ばしていいと思う

require 'fileutils'
noop = verbose = ARGV.include?(':noop')
ARGV.each do |s|
Dir.glob(File.join(s, '**/*')).each do |path|
next if File.extname(path) == '.txt'
FileUtils.rm_r(path, :force => true, :noop => noop, :verbose => verbose)
end
end


456:デフォルトの名無しさん
10/03/14 23:48:38
>>454
それはない

457:デフォルトの名無しさん
10/03/14 23:56:02
$ ls
x.c x.doc x.tex x.txt
$ ruby -ve 'p Dir.glob("*[^(txt)]")'
ruby 1.8.7 (2008-08-11 patchlevel 72) [universal-darwin10.0]
["x.c", "x.doc"]


458:デフォルトの名無しさん
10/03/14 23:57:18
はいはい勘違いゴルファーは帰ってね

459:デフォルトの名無しさん
10/03/14 23:58:40
[^(txt)]を検証しただけじゃね?

460:デフォルトの名無しさん
10/03/15 00:00:42
マニュアル嫁でよくね?

461:デフォルトの名無しさん
10/03/15 00:01:32
どっちでもいいよ…

462:デフォルトの名無しさん
10/03/15 00:04:39
ここは初心者スレだろ?
テンプレ読めない奴はカエレ
暴れるなら本スレでやr

463:デフォルトの名無しさん
10/03/15 00:05:49
検証が漏れてないかどうかはどうやって検証すればいいのかという

464:デフォルトの名無しさん
10/03/15 00:11:10
>>458
どこをゴルフと誤認したのか気になる。


465:デフォルトの名無しさん
10/03/15 01:18:47
rmdir -rで綺麗さっぱり消せばいいのにw

466:デフォルトの名無しさん
10/03/15 01:54:20
RubyをWindowsで開発環境構築する方法教えてください。
OSはWindows7です

467:デフォルトの名無しさん
10/03/15 01:55:11
開発環境ってたとえばなーに

468:デフォルトの名無しさん
10/03/15 02:22:10
>>448
「再帰的」と書かれていますが、別に find を使うような要件ではなく
引数のディレクトリ直下のみ走査すればよさそうなので、こんなかんじ
ではいかがでしょうか。

require 'pathname'
ARGV.each do |d|
Pathname(d).children.each do |f|
f.unlink unless f.extname == ".txt"
end
end

# Pathname は標準添付ライブラリだから使ってもいいよね

ところで、Ruby に限らず Perl でも Python でも glob ってシェルの
ワイルドカード展開のエミュレートだと思いますが、機能としては中途半
端(文字列の単純比較 < glob < 正規表現活用)ですし、プラットフォーム
毎に微妙な挙動差も考えるとムダにドツボにはまりそうですし、(少なく
とも「初心者」は)あまり積極的に使わない方がよくない?


469:デフォルトの名無しさん
10/03/15 02:33:02
>>468
書いてるあなたがすでにglobの罠にはまっているという。
再帰的に走査したいんだよ。> **/

470:デフォルトの名無しさん
10/03/15 02:42:35
Dir.glob('**/*') は許容されるべき
というか普通はこれしか使わない
残りは返ってきた配列に入った文字列を正規表現とかでどうにかする
短く1行で書かないと家にいる妻がスナイパーに撃たれるとかそういう時にのみグラブ条件を書く

471:デフォルトの名無しさん
10/03/15 04:18:21
1行記述を強要する妻かw

472:468
10/03/15 05:11:59
>>469
うへ、自分がドツボにはまっていました、というか **/* の意味を
知らんかった orz

>>470
を参考に Pathname.glob でも使えばよいのでしょうが、あえて
Find 利用ということで:

require 'pathname'
require 'find'
Find.find(*ARGV) do |f|
t = Pathname(f)
t.unlink if t.file? and t.extname != ".txt"
end




473:デフォルトの名無しさん
10/03/15 05:24:32
>>471
強要しているのはスナイバーかと。>>470 は愛妻家なんですね。

474:デフォルトの名無しさん
10/03/15 08:55:46
いや恐妻家なんだろうw

475:デフォルトの名無しさん
10/03/15 09:57:07
要求を呑まないと何も知らない家族が射殺されるというのはわりとポピュラーな展開かと

グラブ文字処理はメソッド独自だから、明白な全抜き出し以外は正規表現などを駆使、という方向性は妥当
グラブ処理の時点で小細工すると後々遺恨になるぞ

476:デフォルトの名無しさん
10/03/15 10:41:36
なるほど

477:デフォルトの名無しさん
10/03/15 12:43:17
>>466
まずはテンプレくらい嫁よ

・ActiveScriptRubyをインスコ
・るびまのchmをダウンロード
・NetBeans IDE(統合開発環境)をインスコ

これでなんとかなるだろ。Rails開発ならcoLinuxかPortableUbuntu入れろ。

478:デフォルトの名無しさん
10/03/15 12:44:12
>>466
あ、あと、c:\Program Files\以下にはRubyをインスコしない方がいいみたい。
RubyGemsが動作しないとかの報告があった
(今のバージョンはどうかしらん)

479:デフォルトの名無しさん
10/03/15 12:53:05
ねこび~ん勢力の工作を検知しました

480:デフォルトの名無しさん
10/03/15 13:02:44
Windowsでも、XPなら
c:\usr\local\ruby
とかにインストールした方が精神衛生上よろしい気がする
UACとか入るとそう簡単にはいかないんだろうけど

481:デフォルトの名無しさん
10/03/15 13:17:04
>>479
ねこび~んはダメだね
コードの補完が遅すぎて使えない

482:デフォルトの名無しさん
10/03/15 13:35:16
ActiveScriptRubyはデフォルトのインストール場所が性善説に過ぎる
URLリンク(d.hatena.ne.jp)
まあこれは間違えるほうが悪いんだけれども

483:デフォルトの名無しさん
10/03/15 14:06:24
array = [1,2,3,4,5]とすると配列ができますが、わかんなくなりませんか?
javaとかだったら、IDEが配列だよって教えてくれるけど

やっぱり、最初にこうするべきなんですかね?
array = Array.new


484:デフォルトの名無しさん
10/03/15 14:20:31
>483
ならない

Array.new はリテラルに比べると遅い。

485:デフォルトの名無しさん
10/03/15 14:21:39
>>477
>・るびまのchmをダウンロード
リファレンスchmならASRに同梱されてたはず
それと初心者スレでるりまとは呼ばない方がいいよ

486:483
10/03/15 14:27:49
>>484
そうですか
ありがとうございます

487:デフォルトの名無しさん
10/03/15 14:44:11
a = [1, 2, 3, 4, 5] はわけわかんなくならないが

hogedata = []



hogedata = {}

との区別がわけわかんなくなることはある
ので、そういうときは

hogedata = Array.new

と書くことはある
要素が入ってれば配列なのか Hash なのかは一発なのでわざわざ初期化なんてしない

488:デフォルトの名無しさん
10/03/15 15:14:22
>>485
> それと初心者スレでるりまとは呼ばない方がいいよ
なんで?


489:デフォルトの名無しさん
10/03/15 16:05:56
というかるりまるびまってなんですか?

490:デフォルトの名無しさん
10/03/15 16:18:20
ここは大喜利すべきか

491:デフォルトの名無しさん
10/03/15 16:21:11
まあ、マニュアルという認識でいいよ
chm形式のマニュアル読んでれば十分

492:デフォルトの名無しさん
10/03/15 16:24:11
>>488
マイナーな専門用語は避けるべき。初心者スレだし。

493:デフォルトの名無しさん
10/03/15 16:25:13
>>488
まさにこの流れが理由
るびまと区別がついてないならなおさら

494:デフォルトの名無しさん
10/03/15 16:50:12
何やら貢献できたようで何より
1.9.1は初心者向けじゃなかったのかー
今まさにダブルクリッコするところだったぜー
ここに来てよかった
ってことでActiveScriptRubyなるものをダウソしてきます

495:デフォルトの名無しさん
10/03/15 16:51:41
ここIDないのね
494は489の人てことでw

496:デフォルトの名無しさん
10/03/15 17:31:53
質問です
エクセルで書かれた名簿を整理して出力するプログラムを書いているのですが、
名前、郵便番号、住所の分離が上手くいきません
与えられた名簿は半角or全角スペースで区切られているのでsplitを使おうと試みているのですが、
例えば以下のように記述すると"―"や"県"が消えてしまいます

puts '山田 太郎   〒0000-0000 山田県山田333-333-333-333'.split(/[  〒]+/)

何か良い知恵があればなにとぞご教授お願いします
ちなみに元のプログラムではputsせず、分離後にある配列に入れています

497:496
10/03/15 17:34:18
追記失礼します
rubyはver1,87を使用しております

498:デフォルトの名無しさん
10/03/15 17:48:49
>>496
Excelってことなので、WindowsでSJISのソースコードとして、
スクリプトの先頭に

#! ruby -Ks

もっと推奨の方法があったかもしれない

499:496
10/03/15 17:51:44
>>498
ご教授いただいたとおりにしたところ速やかに改善されました!
ありがとうございます

500:デフォルトの名無しさん
10/03/15 17:53:59
Rubyが取り扱う文字のエンコーディングを指定しなければASCIIとして扱われてしまうのでそういうことになる
Ruby 1.8まででは
1 Ruby起動時にスイッチで -Ks とかで指定する
2 スクリプト先頭に
#!ruby -Ks
とか書いておくとスクリプト実行時にそのスイッチが考慮される
3 $KCODE を設定する
4 個々の正規表現のオプションでエンコーディングを指定する

ただし1,2はスクリプト自体のエンコーディングと正規表現の振る舞いの両者を変更するが
3,4だと正規表現の振る舞いを変えるだけなので
スクリプトがシフトJISで書かれていると
p "表"  # エンコーディングを正しく指定しないと 文字列リテラルが終了してないことに("\225\" と同じ扱い)
とかのいわゆるダメ文字(2バイト目が\)問題にぶち当たる

UTF-8やEUC-JPだとそのような問題は起きない(のかな?)


501:デフォルトの名無しさん
10/03/15 18:05:26
るびまってRubyのマニュアルのことだったの?
Ruby Magazineの事だと思ってた

502:デフォルトの名無しさん
10/03/15 18:15:09
>>491
どもです
礼するの忘れてやした

503:デフォルトの名無しさん
10/03/15 18:16:09
るびま:Rubyist Magazine
るりま:Ruby reference manual

Ruby Magazineだと思いこんでると、無関係な記事が多すぎるように映るかもね

504:デフォルトの名無しさん
10/03/15 18:16:29
>>501
どっちでもいいよ
いやよくはないが
初心者的にはるびまは読むべきではない
古くて有害な情報が渾然一体となっている

505:デフォルトの名無しさん
10/03/15 18:19:31
>>503
それ、テンプレに入れたらどうかね?

506:デフォルトの名無しさん
10/03/15 18:24:13
Rubyinstか。失礼。
上のほうよく見たらるびまとるりまの区別が付いてない(人がいる)って話だったのね
読み違えてたわ

507:デフォルトの名無しさん
10/03/15 18:27:44
まだ間違ってるぞw

508:496
10/03/15 18:29:54
>>500
亀ですが、ありがとうございます
これを気に文字コードにも意識を向けてみます

509:デフォルトの名無しさん
10/03/15 19:16:01
くっ
Rubyist

510:デフォルトの名無しさん
10/03/15 19:51:11
includeは名前空間を使えるようにするものってことで、おk?
C++@namespaceみたいな感じ

511:デフォルトの名無しさん
10/03/15 19:53:43
なんというか include はふつうに include だと思うのだが
既存言語の機能になぞらえないと理解し難いほど複雑難解な概念なのだろうか

512:デフォルトの名無しさん
10/03/15 20:00:50
includeの動作的には本当に>>444だよね
メソッドを探す順番の指定をする方法のひとつ

513:デフォルトの名無しさん
10/03/15 20:07:50
モジュールの存在理由のほうがムズカシイかもしれない

514:510
10/03/15 20:34:24
読んでいた記事が間違えていたらしい

本当の使い方は、結局なんなんだろ?
Mixinを実現するためにしか使わないのか

515:デフォルトの名無しさん
10/03/15 20:39:59
モジュールは、メソッドを用途ごとにまとめるためのしくみ
メソッドがあるだけで、オブジェクトには依存しない機能のカタマリ

共通の機能をメソッドから追い出して別途メソッドを作るのと同じように、
共通の機能をクラスから追い出して別途モジュールを作る(でincludeする)というのも妥当

516:デフォルトの名無しさん
10/03/15 20:45:11
Mixinのためと単なる名前空間のため両方に使われる

517:510
10/03/15 20:54:21
>>515-516
thx

518:デフォルトの名無しさん
10/03/15 22:17:04
プロパティも実装されていない糞言語

519:デフォルトの名無しさん
10/03/15 22:27:30
それで遊んでくれるのはPythonスレぐらいだぞ
ここは意外とDRY

520:デフォルトの名無しさん
10/03/15 22:52:35
クラスインスタンス変数とは、そのクラスオブジェクトの特異クラスに属する
インスタンス変数という理解で正しいですか?

521:デフォルトの名無しさん
10/03/15 23:00:11
ごめん、さっき違うスレで質問したけど理解してなかったorz

3 class Hoge
4  def self.set
5    @hoge = "dynamic"
6    $hoge = "static"
7  end
8
9  def self.out
10    puts @hoge
11    puts $hoge
12   end
13 end
14
15 Hoge.set
16 Hoge.out

実効結果
dynamic
static

$hogeと@hogeって何が違うのさ?

522:デフォルトの名無しさん
10/03/15 23:12:55
理解してたらああは言わん
クラスインスタンス変数はクラスオブジェクトが存在する限り存在する

Hoge と書くことで定数 Hoge に Class クラスのインスタンスが Ruby によってセットされる
(同名のクラス定義がなかった場合は定数とみなされ、事前に代入されてない未定義定数でエラー)
で、Hoge.set を実行することでインスタンス変数 @hoge がインスタンスの中でふつうに設定される
それが属するインスタンスとは Class クラスのインスタンスで、つまり定数 Hoge が指すものだ
だから、無理矢理 Hoge の内容を nil にするとインスタンス変数 @hoge はスコープごと失なわれる

irb> class Hoge; def self.set; @hoge='hoge'; end; end
irb> Hoge.set
irb> p Hoge.instance_variable_get(:@hoge)
"hoge"
irb> Hoge = nil
(irb):4: warning: already initialized constant Hoge
irb> p Hoge.instance_variable_get(:@hoge)
nil


523:デフォルトの名無しさん
10/03/15 23:22:49
特異メソッド上で書くからわかりにくい?

class Hoge
@hoge2="hoge2"
end

p Hoge.instance_variable_get(:@hoge2)

は "hoge2" を返すよ

524:デフォルトの名無しさん
10/03/15 23:38:33
"プログラミング言語 Ruby" のp.326のなかほどに
クオート文字列にマッチすることを意図した正規表現の例が以下のように
載ってるんだけど,文字集合内で番号指定後方参照ってできたっけ?

/(['"])[^\1]*\1/

わがRuby1.9.1ではこうなった

re = /(['"])[^\1]*\1/
p %('\1')[re] #=> nil
p %('hoge'hoge')[re] #=> "'hoge'hoge'"

いちおう念のために言っておくと
クオート文字列にマッチする正規表現を求めているわけじゃなくて
文字集合内で後方参照や部分式呼出しができるか否かの確認ね

525:デフォルトの名無しさん
10/03/16 00:23:29
>>457が何でそうなるのか解説求む

526:デフォルトの名無しさん
10/03/16 00:27:01
>>525
>>454


527:デフォルトの名無しさん
10/03/16 00:28:31
globってワイルドカードでも正規表現でもないのか
なんでこんな面倒なもん作ったんだ

528:デフォルトの名無しさん
10/03/16 00:31:15
いや、zshの**を取り込んでるくらいで、
ワイルドカード(UNIXシェルの、だが)だよ。


529:デフォルトの名無しさん
10/03/16 00:31:34
ああ勘違いしてたわ txtだけはじかれてるのかと思った

530:デフォルトの名無しさん
10/03/16 00:32:09
ほぼワイルドカードじゃね?

531:デフォルトの名無しさん
10/03/16 00:32:50
あら遅レス失礼した

532:デフォルトの名無しさん
10/03/16 00:33:41
globにlsコンパチの引数受け付けるようにしてくれ

533:デフォルトの名無しさん
10/03/16 00:34:20
>>532
UNIXで誰がファイル名展開をやってるか知ってるかい?


534:デフォルトの名無しさん
10/03/16 00:44:33
えっ? 誰かがやってるなんてことあるわけないでしょう?

535:デフォルトの名無しさん
10/03/16 03:16:47
echo *

536:デフォルトの名無しさん
10/03/16 03:27:47
もうshellの機能をrubyに組み込むべきだなw
login shellを/bin/rubyshにできていいかもしれないw

537:デフォルトの名無しさん
10/03/16 07:53:49
RubyShell って面白そうだな。
誰も使わないだろうけど。

538:デフォルトの名無しさん
10/03/16 07:55:47
RashだかRushってシェルがなかったっけ

539:デフォルトの名無しさん
10/03/16 08:46:18
イラネ

540:デフォルトの名無しさん
10/03/16 09:30:18
とある人のウェブページに、perlをログインシェルとして使ってみた報告があるぞ。
一度読んでおくといい。

541:デフォルトの名無しさん
10/03/16 09:33:51
いやRushが既にあるから

542:デフォルトの名無しさん
10/03/16 11:51:29
コマンドライン引数は定数じゃないの?
普通に文字列を代入できるんだけど

543:デフォルトの名無しさん
10/03/16 12:01:40
>>542
Rubyの定数は、警告 warning: already initialized constant ARGV
は出るけど代入自体はできる。

あ、あと、 ARGV << 'hoge' なんてのは「定数への代入」じゃないからな。


544:デフォルトの名無しさん
10/03/16 12:03:05
$ ruby -e "ARGV=nil"
-e:1: warning: already initialized constant ARGV

いやきちんと定数として警告出ますが

というかただの定数に過ぎない
Rubyはこれを起動時から用意してるだけで、用意したあとは特別扱いをしない
ただの配列を指す定数で、配列としての動作に従う
配列だから、要素を弄る限りはオブジェクトIDが同一で、定数としての適正を失わない

irb> arr = [1, 2, 3]
irb> arr[0] = 'one'
irb> ARGV[0] = 'one'


545:デフォルトの名無しさん
10/03/16 12:18:43
代入はできるけど、データのコンテナとして ARGV を使うのはおすすめはしない
ただ、これは

グローバル変数と定数を使う→
クラス変数を使う→
インスタンス変数だけを使う→
全部引数での受け渡しにする→
引数の数が大量になって鬱陶しいのでアクセサメソッド経由のインスタンス変数と引数の併用にする

というような変遷をどうしてもみんな辿るので今はまだ気にしなくてもいいとも言える

546:542
10/03/16 12:25:44
とにかくコマンドライン引数には入れるなってことでしょ

547:デフォルトの名無しさん
10/03/16 12:47:18
def hoge=
この=って何?

548:デフォルトの名無しさん
10/03/16 13:00:04
>>547
そのまんま
「hoge=」 という5文字の名前のメソッド

ただ、末尾に = があるメソッド定義を Ruby は特別に扱うので、引数つきで定義しておいたほうがいい
あと、foo.hoge = と = の前に空白があっても、Ruby はとりあえず foo のメソッドの中から hoge= を探す

foo.set_hoge(v) とするよりも foo.hoge = v と書けたほうがなんかわかりやすくね、という理由で特別扱いされてる

549:デフォルトの名無しさん
10/03/16 13:07:59
「プログラミングRuby 第2版 言語編」ですが、今から読むには
古すぎますか?それとも第3版が出て、絶版になる前に読んでおく
べき?

たのしいRuby、Well-Grounded Rubyist、初めてのRuby
は読みました。


550:デフォルトの名無しさん
10/03/16 13:08:28
>>548
理解した、ありがとう

551:デフォルトの名無しさん
10/03/16 13:16:29
>>548
>「hoge=」 という5文字の名前のメソッド

通常の方法では代入文でしか呼べないから、ただのメソッドではなく演算子定義の一種と見た方がいい

一応引数無しでも定義できるけど__send__使わないと引数なしでは呼べない

552:デフォルトの名無しさん
10/03/16 13:17:42
>>551
Rubyの演算子はメソッドですよ

553:デフォルトの名無しさん
10/03/16 13:24:32
Rubyのユーザーは学生と暇人が多いのか?
C/C++のスレには全然書き込みが無いんだけど

Rubyは簡単だから、学生に人気があるのかな

554:デフォルトの名無しさん
10/03/16 13:29:41
最近質問が多いね、春休みなんじゃないの?
まあ俺も春休みだけど。。

555:デフォルトの名無しさん
10/03/16 13:30:46
去年からずっとやすm

556:デフォルトの名無しさん
10/03/16 13:31:17
仕事探せ

557:デフォルトの名無しさん
10/03/16 13:32:16
>>555
勝った!

558:デフォルトの名無しさん
10/03/16 13:33:11
>>557
お前は必死に仕事探せ

559:デフォルトの名無しさん
10/03/16 13:35:25
学生と暇人とニートがいないとプログラミング言語は成長致しませぬゆえ

560:デフォルトの名無しさん
10/03/16 13:37:43
学生と暇人なんて放っておいても沸いてくるんだから
無職連中はとりあえず生活基盤作れ

561:デフォルトの名無しさん
10/03/16 13:39:35
暇な香具師を無料で奉仕させてこそオープンソースだしな。

562:デフォルトの名無しさん
10/03/16 14:18:15
>>549
初めてのRuby(yugui本)を読んで自分のものと出来たのなら
好きに進んでいいよ。


563:デフォルトの名無しさん
10/03/16 14:43:10
Rubyはいつになったら仕様が固定されるの?
安心して使えない

564:デフォルトの名無しさん
10/03/16 14:48:04
1.8 は少なくともあと5年は使えるな。

565:デフォルトの名無しさん
10/03/16 15:06:10
>>562
レスどうも。
ツール作りでもしてみます。

566:デフォルトの名無しさん
10/03/16 15:08:40
本の内容が新しいかどうかという話なら、新しくはない

1.8.7の1.9新機能入りプログラミングができないというのはなんとも歯痒い
が、それはWebの情報でアップデートできる程度なので問題はなさそうかも
むしろ最初からこれ教えたら混乱しそう

567:デフォルトの名無しさん
10/03/16 16:19:22
>>563
固定化されることはないと思う

568:デフォルトの名無しさん
10/03/16 16:22:33
>>563はそもそも使わないからどうでもいい

569:デフォルトの名無しさん
10/03/16 18:52:28
ちなみに今から使い始めるならどのバージョンがお勧めなんだ

570:デフォルトの名無しさん
10/03/16 18:58:53
>>569はテンプレも読まないからどうでもいい

571:デフォルトの名無しさん
10/03/16 18:58:54
始めるだけなら 1.8.7 の最新だと思うが、
最新(p249)はString#inspectで最後の多バイト文字が文字化けするという
デバッグや実験中に微妙にイラッとするバグがある。
気になるなら p174 で。
1.9系は夏に1.9.2が出るのでそのときまた判断だな。


572:デフォルトの名無しさん
10/03/16 19:16:27
やっと1.9sp2が出るのか。

573:デフォルトの名無しさん
10/03/16 19:18:21
それはまだ
1.9正式が出ただけ
sp1が今度出る

574:デフォルトの名無しさん
10/03/16 19:22:45
>>571
$KCODE を設定した上で p で日本語を表示しようとした場合に最後の文字がバイト列のままになる


p で日本語を表示しようとさえしなければ問題はないし、俺は表示しようと思ったこともない
というかむしろ p を使うような事態のときは1.9でもデフォルトでバイト列表示しろやわかりにくいわぼけー

どういう日本語を普段扱ってるかで違うんだろうな、このへん

575:デフォルトの名無しさん
10/03/16 19:25:49
p の意義からしてエンコーディングを考慮するほうが正当
ShiftJIS 文字列とか表示されて端末乱れるのはイラッとくるが

576:デフォルトの名無しさん
10/03/16 19:34:14
オブジェクトを機能拡張するためにモジュールで拡張したんだけど
さらに状態の保持が必要な機能追加がしたくなった
モジュールへの修正じゃ対応できないの?

577:デフォルトの名無しさん
10/03/16 19:35:16
require 'Hoge'
include Hoge
なんで、requireにはシングルクォートを付けないと怒られるのに
includeには付けなくても怒られないの?

たまたま、そうなっただけなのかな~

578:デフォルトの名無しさん
10/03/16 19:41:28
>>577
require は基本的にはファイルパス
実際のファイルの大文字小文字が考慮される
(が、あまりにも面倒なのでファイル名の時点で小文字だけにしようという取り決めがある)

include の引数はモジュール名、つまり定数

579:デフォルトの名無しさん
10/03/16 19:44:08
>>576
すれば

include はするたびにその順番に機能する

580:デフォルトの名無しさん
10/03/16 19:44:15
require 'Hoge' は主ファイル名だからじゃね?

581:デフォルトの名無しさん
10/03/16 19:46:41
>>578-580
ありがとう

582:576
10/03/16 19:47:24
>>579 (and all)
どうすれば状態を保持できますか?

583:デフォルトの名無しさん
10/03/16 19:51:32
状態って何

584:デフォルトの名無しさん
10/03/16 19:52:35
>>577
requireも単なる関数的メソッドとして実装されているのも理由の一つ
Hogeというキーワードはrequireの実行を終える前には当然定義されていないし
予約語でもないから、リテラルを使うしか渡す方法(requireメソッドを実行する方法)がない

「Hogeをrequireしろ」「Hogeってなんだ?」
「Hogeを読めばわかる」「だからそのHogeって何だよ」
NameError: uninitialized constant Hoge

Symbolでもよさそうだけどそのへんは>>578なんだろう

585:576
10/03/16 20:01:14
もともとのオブジェクト以外に追加の情報を保持したいんですが
たとえば配列クラスに最大値を保持するなど

586:デフォルトの名無しさん
10/03/16 20:22:21
>>585
エスパー発揮で

obj = [1,2,3]
obj.instance_eval{ @mymax = self.max }
obj.define_singleton_method(:mymax){ @mymax }
p obj.mymax

なんか頭の悪そうなコードですまん

587:デフォルトの名無しさん
10/03/16 20:25:30
>>585
本当にしたいことを書いたほうがいいと思う

include ではクラスにもともとあるメソッドを上書きすることができる
でも、おそらくはそれが解決方法ではないと思われ

組み込みや標準添付のクラスを拡張することは好ましいこととは考えられてない(オープンクラスのくせに)
自分でクラスを作ってインスタンス変数とかにオブジェクトを保持するほうがいい
オブジェクトの操作は自作のクラスのメソッド経由で行う

class HogeData
def initialize(a)
raise ArgumentError, 'must be Array' unless a.kind_of?(Array)
@hogedata = a
end
def <<(e)
return if @hogedata.size > 2
@hogedata << e
end
def data; @hogedata; end
end


irb> hoge = HogeData.new([1,2])
irb> p hoge.data
[1, 2]
irb> hoge << 3
irb> p hoge.data
[1, 2, 3]
irb> hoge << 4
irb> p hoge.data
[1, 2, 3]

588:576
10/03/16 21:18:59
では言い直します。
自分で書いたクラスのオブジェクトに追加の情報を持たせるには、
継承したり別のクラスに包含すれば可能だけど、すでにModuleで拡張しているので
そこはできるだけ触らずにModuleに少し書き足す程度で実現できないか?
Module内でインスタンス変数的な情報を保持する何かを定義できないか?

589:デフォルトの名無しさん
10/03/16 21:34:12
>>588
よくわからんけどこれでダメ?
ダメならどうダメかをコードとして提示してくれると他の案を言えるかも

module M
end

class C
include M
def foo
@foo
end
end

module M
def bar
@foo = :bar
end
end

obj = C.new
obj.bar
p obj.foo #=> :bar

590:デフォルトの名無しさん
10/03/16 21:53:46
>>586
Moduleの使い方・考え方が間違ってるような気がするなあ

あるクラスがModuleをincludeした時点でそのクラスのインスタンスは
存在していないわけだからインスタンス変数を設定したり保持したり
できないでしょ
アクセサの定義ならModuleでもできるけど

module M
 def data
  @data
 end
 def data=(arg)
  @data = arg
 end
end

class C
 include M
end

591:デフォルトの名無しさん
10/03/16 21:55:33
591レス目
ズレている人はレスデータの再読み込みをしてください

592:576
10/03/16 22:01:45
それだとobj.barを書かなければいけません。
質問は、Module内を書き換えるだけで、外側には一切手を加えずに@fooを初期化できるかということです。

593:デフォルトの名無しさん
10/03/16 22:02:14
なにその出来の悪いGUIのリストみたいな現象

594:デフォルトの名無しさん
10/03/16 22:04:28
module内でinitialize書き直したら?

595:デフォルトの名無しさん
10/03/16 22:08:09
>>594
それはできない

596:デフォルトの名無しさん
10/03/16 22:16:53
ほんとにできない?

597:576
10/03/16 22:18:32
>>590
インスタンスが作成された時点でincludeされたmoduleを通して
何かしらinitialize的メッセージが送られるようなことは無いよねって話です
あるいはC言語で言うところのスタティック変数は無いよねってことでも結構です


>>594もう試した

598:デフォルトの名無しさん
10/03/16 22:20:06
module M
 def self.included(klass)
  klass.class_eval do
   def initialize
    @foo = :bar
   end
  end
 end
end


class C
 def initialize
  @foo = :baz
 end
 attr_reader :foo
 include M
end

p C.new.foo #=> :bar

599:デフォルトの名無しさん
10/03/16 22:21:22
>>595
めんどくさい、が正解だと思う
include先が継承とかしてたらsuper呼ばんといかん

600:576
10/03/16 22:51:09
>>598
すばらしい!!
ありがとうございました。

601:デフォルトの名無しさん
10/03/17 00:02:54
読み込むモジュールを変えるとinitializeが
スイッチされるってのは面白いかも

なんか騙されてるような気もするなあ

602:デフォルトの名無しさん
10/03/17 00:16:58
まあ、あまり性質のよいものではない

603:デフォルトの名無しさん
10/03/17 00:26:10
複雑なマッチ条件を使いたい場合、
if /hoge/ =~ obj.str and /huga/ !~ obj.str and ...
と延々と続いて見づらいのですが、スマートに書けますか?


604:デフォルトの名無しさん
10/03/17 00:27:24
>>603
メソッドにしてしまうのがひとつの手ではある
基本的には全部書くしかない

605:デフォルトの名無しさん
10/03/17 00:31:44
自分が時々やるのは
match1 = obj.str =~ /hoge/
match2 = obj.str !~ /fuga/
match3 = obj.str =~ /fuge/
if match1 and match2 and match3
 body_stmt
end
こう。

でも条件分岐だけで10行超えるなら独立のメソッドにする

606:デフォルトの名無しさん
10/03/17 01:02:19
なるほど。ありがとうございます。

607:デフォルトの名無しさん
10/03/17 03:52:24
&&= 使った方が無駄なマッチングがないんじゃないかな。
正規表現のマッチくらいでそんなに重くなったりしないけど~。

608:デフォルトの名無しさん
10/03/17 08:17:07
>>481
aptanaよりは軽いぞw

そもそもRubyの文脈考慮するコード補完でまともに高速に補完できるIDEみたことない。
俺もそれは困っているし、もっとよいIDEがあればぜひ教えて欲しい。

irbとかJavaとかC#みたいにバンバン補完できればいいんだけどねー。早々簡単にできないのわかってていってるけどw

テキストエディタレベルの単語補完ならばNetBeansでも高速できる(デフォだとたしかCtrl+K)。

609:デフォルトの名無しさん
10/03/17 08:43:03
現在の単語に続く語を見つけるだけならEmacsでも超高速でできるぞ

610:デフォルトの名無しさん
10/03/17 09:03:06
>>482
> URLリンク(d.hatena.ne.jp)
複数引数のsystemを使うべきところだな。
クォートだとなんだの気にする必要がなくなる。


611:デフォルトの名無しさん
10/03/17 09:33:26
>>609
もちろん、vimでもxyzzyでも単語の補完はできるけど、>>481はそういうこといってるんじゃないんだろうし
インテリセンスみたいなやつだろ

612:デフォルトの名無しさん
10/03/17 09:52:28
>>575
> ShiftJIS 文字列とか表示されて端末乱れるのはイラッとくるが
これは 1.9.2 の改善点の一つ

613:デフォルトの名無しさん
10/03/17 11:07:47
実行しているスクリプトが置かれているディレクトリを調べる方法を教えてください

614:デフォルトの名無しさん
10/03/17 11:10:40
__FILE__

615:デフォルトの名無しさん
10/03/17 11:12:36
File.dirname($0)

616:デフォルトの名無しさん
10/03/17 11:19:01
Dir.pwd

617:613
10/03/17 11:25:40
絶対パスで欲しいんですが

618:デフォルトの名無しさん
10/03/17 11:27:05
expand_path … は内部で呼ばれてるからいらないんだっけか

619:デフォルトの名無しさん
10/03/17 11:31:17
ああ、やっぱいるよな

>>617
:~$ cat a.rb
p File.dirname(__FILE__)
p File.dirname(File.expand_path(__FILE__))
:~$ ruby a.rb
"."
"/home/ore"
:~$ ruby /home/ore/a.rb
"/home/ore"
"/home/ore"


620:デフォルトの名無しさん
10/03/17 11:38:49
>>481
>>608

NetBeansの文脈依存補完ってどのレベルまで補完してくれるの?
変数の参照先オブジェクト(のクラス)を推測したり
メソッドチェーンの返り値を推測して
続きのメソッド名を補完できたりする?

621:デフォルトの名無しさん
10/03/17 11:40:27
>>618
だいぶ前にあったのは expand_path の基点となる第2引数が自動で dirname されてるという話だと思った
dirname の中で expand_path が使われるということはないように見える

622:613
10/03/17 11:51:55
>>619
ありがとうございます

623:デフォルトの名無しさん
10/03/17 11:53:48
$0 と __FILE__ ってどうちがうんですか?

624:デフォルトの名無しさん
10/03/17 11:59:29
$0 は実行中のスクリプトのファイル名
__FILE__ はそれが書かれているファイル自身のファイル名

スクリプトファイルを実行した場合は両者が一致する。
requireなどで他のファイルから読み込まれた場合は一致しない。


625:デフォルトの名無しさん
10/03/17 12:09:46
相談です。
URLリンク(www.rubylife.jp)のページにある
1 #! ruby -Ku
2 print("表示する")
3 [EDF]
というプログラムをterapadで作り保存してコマンドプロンプトで実行すると、
そのページに依れば文字化けした言葉が出てくるはずなのですが、しかし
test1-3.rb:2: unterminated string meets end of file
test1-3.rb:2: syntax error, unexpected $end, expecting ')'
と表示されます。
でも「表示する」の部分を「日本語で表示」に変えるとちゃんと文字化けします。
原因がプログラムで解決できるものなのかエディタを変えないといけないと解決できないのかも分からないので、
どうしたらよいかを教えてくれないでしょうか?

626:デフォルトの名無しさん
10/03/17 12:29:10
俺はこのサイト(正確には「このチュートリアルサイト群」)はあまり好きではない
初期のSEOがあまりに迷惑で悪い印象が残ってしまっている

はともかく

>>625
あんま気にするな
表示する端末のサポートするエンコーディングと
文字列のエンコーディングが合致していないとまともに動作しない、が本質

ぶっちゃけ、日本語文字列を直接書いてしまったファイルが、-Ks などのエンコーディング指定なしで
日本語文字列を含んだRubyスクリプトとしてきちんと解釈される保証はない
「うわーまともに動いてねーよ」と納得したら次のステップに行ってよし

627:デフォルトの名無しさん
10/03/17 12:36:07
回答ありがとうございます。納得してから気にせず先に進みたいと思います。

どうしても出費を抑えたいのでそういったサイトに頼っているのですが…
自業自得か。orz

628:デフォルトの名無しさん
10/03/17 12:37:44
文字列変えるだけでパースエラーになったりならなかったりってのは
エンコーディングの不一致とは関係ないんじゃない?

表 (SJISのダメ文字のひとつ) の位置が問題なのかな。


629:デフォルトの名無しさん
10/03/17 12:41:59
RubyってWindows用だといろいろあるじゃないですか
Linux用の場合は1つしかないのでしょうか?
このへんであまり考えたくない為、もしLinuxで1つしかなのでしたらLinuxで始めたいと思います。

630:デフォルトの名無しさん
10/03/17 12:42:37
それエンコードの不一致でおきる問題ですがな

631:デフォルトの名無しさん
10/03/17 12:43:33
>>629
1.6.x
1.8.x
1.9.x
いろいろある
Rails のバージョンによってもさらにバリエーションがw


632:デフォルトの名無しさん
10/03/17 12:43:42
>>629
まあ動作的にはひとつとみなしてよいかと
少なくともWindowsのような面倒なことはない

633:デフォルトの名無しさん
10/03/17 12:44:44
Windows 版のどこがどう問題なのですか

634:デフォルトの名無しさん
10/03/17 12:46:21
スレでWindowsという文字を見ると不機嫌になってしまうおじちゃんからいじめを受けます

635:デフォルトの名無しさん
10/03/17 12:48:55
Windowsで使いたければPython使った方が良いんじゃない?
RubyはWindowsのメンテナが不足気味。LinuxかMacで使うべき。

Rails だって Windows はサポートしてなくて、今までたまたま
動いてたけどいつの間にか動かなくなったとか聴いた。

636:デフォルトの名無しさん
10/03/17 12:50:04
ほらな

637:デフォルトの名無しさん
10/03/17 12:51:34
漏れもそう思う
RubyはWindowsと相性が悪い
Pythonの方がWindowsとの親和性は高い
*nixの場合はどっちでも相性が良い
つまりPython>Rubyであって
Rubyを選ぶ理由がないんだよなぁ

638:デフォルトの名無しさん
10/03/17 12:57:48
つまりC#最強ということですね

639:デフォルトの名無しさん
10/03/17 12:57:50
Pythonってインデントで書くから気持ち悪い

640:デフォルトの名無しさん
10/03/17 12:59:06
VBみたいな記述のRubyのが気持ち悪い

641:デフォルトの名無しさん
10/03/17 13:02:12
end ってw

642:デフォルトの名無しさん
10/03/17 13:04:56
Rubyはプログラミングと関係ない部分で手間がかかる

643:デフォルトの名無しさん
10/03/17 13:08:02
>>637
そんなポータビリティが常に必要か?
たとえばMacOSXで動作しないバイナリを吐く言語で書く意味は何?

644:デフォルトの名無しさん
10/03/17 13:11:22
うん、あなたはRubyをWrite once, run anywhereの再来だと吹き込まれたのかもしれないが、それは違う
それを暴いたのは俺たちかもしれないが、殴るなら暴いた人間ではなくあなたを騙した人間を殴れ

645:デフォルトの名無しさん
10/03/17 13:12:45
IronRubyが出る頃には、まともになってる?

646:デフォルトの名無しさん
10/03/17 13:17:27
>>644
似たようなものに「Rubyは初心者にも簡単」があるな

パソコン初心者やプログラミング言語初心者の人にとって独習可能なほど易しいとはそれほど思えない

647:デフォルトの名無しさん
10/03/17 13:34:44
初期(または現在も)の謳い文句に「Cで拡張ライブラリを書くのも簡単」があった
これも

 「(動作上速度等で不満があれば、あなたが使い慣れている)Cで拡張ライブラリを書くのも
 (たとえばこんなふうにC言語でずらっと書けばほら)簡単」

という意味だったからな

初心者として想定しているレベルがそもそもぜんぜん違う
C言語をある程度使えることは当然だし、Perlや主要UNIXコマンドの動作を知っていることや
文字エンコーディングの知識をもっていることも当たり前とされている
(初心者の想定としてはワークステーションの使い方教えられて慣れた感じの大学3年生くらい?)

それはマニュアル見れば一目瞭然
「Cのあれ」「コマンドのあれ」「Perlのやつ」という表現ばかりだ
最近は文章上は若干表現が砕かれたが、知識として知っていることが前提なのは何も変わらないのでむしろ

648:デフォルトの名無しさん
10/03/17 13:37:57
隔離スレに帰れ

649:デフォルトの名無しさん
10/03/17 13:39:04
質問スレだしなあ

 ・ Ruby自体は便利
 ・ ただしコンピュータ初心者やプログラミング初心者が独習可能なほど易しいかは怪しい
 ・ Windows上ではあまり便利ではない
 ・ Rubyは便利だが、儲かることや役に立つこととは別の便利さ

こんな感じ?

650:デフォルトの名無しさん
10/03/17 13:42:47

 ・ Rubyは自分のため
 ・ Javaは給料のため
 ・ Pythonは他人のため
 ・ Rubyがコンピュータ初心者やプログラミング初心者が独習可能なほど易しいかは怪しい
 ・ Rubyは自分のために使うと便利だが、Windows上ではあまり便利ではない

こうだ

651:デフォルトの名無しさん
10/03/17 13:44:48
Windows上で便利に使いこなしてるおれは勝ち組

652:デフォルトの名無しさん
10/03/17 13:53:45
Ruby厨っていつも言い訳してるよねw

便利ってなんだよw
まともなIDEもないのに便利も糞もあるか
ライブラリはバグだらけで使えない
バージョン変わると言語仕様も変わってソース書き直しw

653:デフォルトの名無しさん
10/03/17 13:55:38
>>620
(NetBeans勧めておいてなんだが)文脈依存補完は重くてあまりつかってないんだが、
あまり優秀でない感じがした。irbの補完とどっこいどっこい

静的型付けの言語みたいに hoge.(ドット) ってうっていきなりリファレンス替わりにいきなり補完の候補だして
書き始めることはできない感じだった。補完速度の遅さももちろんあるが、候補が多すぎる。
メソッド名途中まで書いてからならかなりしぼれる。この辺はirbもそうだけど。

どんな技術で補完してるかは詳しくないので公式サイトなりでも調べてもらった方がよい気がする

654:デフォルトの名無しさん
10/03/17 13:56:32
なんか春を感じるな

655:デフォルトの名無しさん
10/03/17 13:57:21
>>646
(Windowsユーザー以外の、パソコン初心者以外には)「Rubyは初心者にも簡単」

656:デフォルトの名無しさん
10/03/17 14:08:29
>>655
それは初心者とは言わない

コンソールでちまちまやっているのが日常のやつなんて一部
それなのに「初心者がはじめるにはどの言語か」という発言だけで
Rubyすすめるバカがいるからな

657:デフォルトの名無しさん
10/03/17 14:12:21
>>656
あれは意図的な悪意だろ
俺らが止めることはもはやできない

658:デフォルトの名無しさん
10/03/17 14:29:59
>>625です。エディタので文字コード指定再読み込みをUTF-8
でしたらちゃんとエラー表示がなくなり日本語が表示されましたので一応ご報告を。

659:デフォルトの名無しさん
10/03/17 14:47:00
なんでもできるなら迷わずC#だな
これでできないことはないし
非常に便利

Rubyのどこが便利なんだよwwアホかw

660:デフォルトの名無しさん
10/03/17 14:55:30
>>652 >>659
もりあがっているところ申し訳ないのだが、その手の話題は本スレでお願いしたい。

Rubyについて Part 39
スレリンク(tech板)

661:デフォルトの名無しさん
10/03/17 15:06:32
これから学ぶならPHPではなくパイソンかルビーがオヌヌメ
って記事読んでこのスレに来たけど騙されたか・

662:デフォルトの名無しさん
10/03/17 15:12:20
>>661
C#がいいよ
未だに進化し続けている言語はこれぐらい

663:デフォルトの名無しさん
10/03/17 15:19:37
>>662
Pythonは進化は一休み宣言してる
Rubyは進化のためなら互換性を切り捨てることを厭わない

664:デフォルトの名無しさん
10/03/17 15:20:58
>>661
これから(   のために)学ぶなら(   な)PHPではなく
(   な)パイソンか(   な)ルビーが(   の点で)(   な人に)オヌヌメ

これが全部埋まってないようなものは与太
信じるほうが悪い

665:デフォルトの名無しさん
10/03/17 15:22:23
女に嫌われるタイプだなw

666:デフォルトの名無しさん
10/03/17 15:22:52
PHPっていらない子なの?

667:デフォルトの名無しさん
10/03/17 15:23:37
>>666
>>664

668:デフォルトの名無しさん
10/03/17 15:37:34
むしろRubyは初心者向け言語ではない難しい言語だっていう
イメージをもっと広めてもらいたい

Rubyが超得意ですキリッっていっても
初心者向け言語ねプッ初心者いらね
とあしらわれるのが現状の就職戦線だからな

669:デフォルトの名無しさん
10/03/17 15:39:20
rubyをやる気なくしてきた…(´;ω;`)

670:デフォルトの名無しさん
10/03/17 15:41:50
今のところプログラムの話題なし

Ruby擁護レス、批判レス、バグ報告レスだけ

671:デフォルトの名無しさん
10/03/17 15:44:53
Rubyで就職狙うなんてありえんわww

これがWindowsもないころなら
簡単と言ってもよかったがな
今更文字処理得意ですなんて言われてもな
真っ黒い画面で文字打つだけって最近のガキじゃ無理だな

672:デフォルトの名無しさん
10/03/17 15:49:34
Rubyをやりたくてやるんじゃない、やってしまうのがRubyist

673:デフォルトの名無しさん
10/03/17 15:51:22
>>671
加齢臭がします><

>真っ黒い画面で文字打つだけって最近のガキじゃ無理だな
小学生でも出来るよそんな事^^

674:デフォルトの名無しさん
10/03/17 15:53:18
Rubyistはスキルも性格もいいので開発メンバーからは良くたよりにされる
だがたよりにされたいからRubyをやってもダメだと言う事が最近わかった
Rubyをやるのは真にRubyistの人だからRubyをやりたくてやるんじゃないやってしまう者がRubyist
PHPerはざんねんがはっきりいってスキルはつかわないし性格も裏メールとかイマイチだから信頼されにくい

675:デフォルトの名無しさん
10/03/17 15:53:46
つまんねっていってるんだよ

C#ならいきなりGUIが作れます

676:デフォルトの名無しさん
10/03/17 15:54:55
>>674
妄想乙

Ruby信者は各スレを荒らしている
キチガイばかりが集まった低脳集団
だから就職でも嫌われるんだよ

677:デフォルトの名無しさん
10/03/17 15:55:50
ブロントさんネタがどこでも通じると思ったら大間違い。


678:デフォルトの名無しさん
10/03/17 15:56:02
>>661 >>669
結局、用途によるよ

(異論はあるだろうが)初心者=Windowsとして・・・

・ちょっとした文字列処理とかの書き捨てるようなスクリプトには便利
・mechanizeとか使って、コピペサイトや2chからエロ画像とか自動収集してきてzip化!!1とかに便利
・かっちょえー、webサービス作りたい!!11とかならcoLinuxかVMWareか入れてRails学ぶ
・別にちょっとしたCGI的webアプリならRailsじゃなくてもいい(やってる人はやってる)

他の言語でもできる、と言われたらそうだけどw

「Rubyはプログラミングを楽しみたい人のための言語」というように言われるが、それはあるとおもうよ。
(ただし、環境整えるの面倒とか、Windowsでこのライブラリ動かねーとか普通にあるのはおいておいてだな)

679:デフォルトの名無しさん
10/03/17 15:56:21
Ruby信者=C++も使えないバカ

ここはC言語わからなくて逃げ出しちゃった子の巣窟

680:デフォルトの名無しさん
10/03/17 15:57:22
一人変なのがすみついたな・・・

681:デフォルトの名無しさん
10/03/17 15:58:11
初心者スレでここは云々言われても

682:デフォルトの名無しさん
10/03/17 15:58:51
ぶっちゃけ、ここが本スレじゃないの?

683:デフォルトの名無しさん
10/03/17 15:59:44


684:デフォルトの名無しさん
10/03/17 16:01:16
>>678
それぐらいならC#で余裕で出来るな

まずインストールでこける

無事インストールできてもRubyは日本語リファレンスが充実していない
サンプルがない
ユーザー数が少ない
Rubyスレは低脳ばかり
就職で使えない
特異言語のRuby覚えても他の言語で応用が効かない
ライブラリはバグだらけ
メンテナンス作業をするために時間をとられてWindowsユーザーはまずプログラミングに集中できない

初心者=Windowsユーザーではない
大部分の初心者がWindowsユーザーということだ

685:デフォルトの名無しさん
10/03/17 16:03:11
まともにレスするのが馬鹿らしくなってきた。。。

686:デフォルトの名無しさん
10/03/17 16:04:39
>>684
C#スレから来ました

スレとは関係ないんですが、もしかしてニートですか?
僕も30歳ニートです。

687:デフォルトの名無しさん
10/03/17 16:09:21
>>678
仮想osにubuntuでも入れれば使いやすくなると言うこと?
将来性の面ではrubyはいいと言うのをよく見かけるけど、
これに関しては他のと比較してどうですか?

> Rubyはプログラミングを楽しみたい人のための言語
個人的にはこれが気になる。
趣味だから楽しんでなんぼだし

688:デフォルトの名無しさん
10/03/17 16:11:19
楽しくないよバグだらけで
GUIすらまともに作れない
IDEもないじゃねぇ

689:デフォルトの名無しさん
10/03/17 16:14:08
オーケー
IDEをNGワードにした
WIDEとかAIANMEIDEN(ローマ字綴り)とかの話題をしないようにお願い

690:デフォルトの名無しさん
10/03/17 16:20:12
>>687
とりあえず仮想OSの話だけ。

webアプリ作るのに便利なRailsというRubyで動く代表的なwebフレームワークがあるんだけど、
それを使うには仮想OSやcoLinuxでUbuntuでも入れた方が、格段にトラブルが少ない、ということ。

Railsのコア開発者がそもそもWindows使ってなくて、Windowsだとイマイチ不安定だったり起動が遅かったりするのと、
Windowsでそのまま動かせないライブラリなんかがあったりする。
最終的に動作させるOSもUbuntuとかのUnix系OSになるだろうし、
仮想OSにUbuntuかCentOS入れて開発した方が楽ということ。

ただし、そもそもRailsは共有レンタルサーバーだと動かしにくい(というか重い)のに注意。
だからRails使わずにCGIで頑張って作ってる人もいることはいる。Railsばかり注目されて目立たないけど。


ちなみに、ちょっとしたスクリプト書いたり学習する分には別に仮想OSじゃなくても問題ないだろう。

691:デフォルトの名無しさん
10/03/17 16:20:14
I.D.Eもない糞言語なんて今時やってられるかよ
真っ黒い画面で文字打つだけで何が便利だよww
どこが楽しいんだよwww笑わせるなww

692:デフォルトの名無しさん
10/03/17 16:24:52
ID欲しいな。
IDEは別にいいや。


693:デフォルトの名無しさん
10/03/17 16:30:07
この荒らし他のスレでもいるっぽい?数日続くようなら後でまとめて運用に報告してくるんで、スルーしといて下さい。
下手にレスしてまきぞえ規制くらってもしらん

694:デフォルトの名無しさん
10/03/17 16:43:06
批判されると荒しとかどんだけゆとりなんだよ

695:デフォルトの名無しさん
10/03/17 16:45:18
>>694
荒らしかどうかは内容によらない

696:デフォルトの名無しさん
10/03/17 16:51:26
>>693
C#スレにコピペ荒ししたのお前だな
報告しておいたから

697:デフォルトの名無しさん
10/03/17 17:16:52
コア開発者というのはだいたい10人くらいなのだが、その半分くらいはWindows使ってるはず。
Windows向けのコードも数人書いてるし、定期的にビルドもされている。

Windowsで遅いってよく言われるのは、バイナリモードの話と、プロセスの起動が遅いって話じゃないかな。
前者はFAQだし、後者はcygwinのconfigureで顕著だけどWindows自体の話だからどうにもならん。

Windowsで動かないライブラリがあるのはその逆も真なはずだからいいよね。

698:デフォルトの名無しさん
10/03/17 17:39:30
>>697
1.8.7-p160のような話も混じってるのかもね

ライブラリの不満は動くかどうかよりも
バイナリが用意されていない(gem install一発で使えない)のほうが多い気がする

もしかしたらASRでも一発でいける方法・設定があるのかもしれないけど俺は知らない

699:デフォルトの名無しさん
10/03/17 17:40:51
てかRubyがJava|C++|C#|Pythonじゃないって、だからなんなのって感じ

700:デフォルトの名無しさん
10/03/17 17:41:38
>>699
PerlやPHPもIDEがないから流行ってないんだよきっと

701:デフォルトの名無しさん
10/03/17 18:04:31
ぶっちゃけインタプリタで最強なのはPHPしかないよ
Rubyはメモリ関係が弱いって言うじゃんしかもWinは動作保証してないんでしょ
Pythonはあの独特なコーディングと日本語訳がないから英語読めない人お断りじゃん


702:デフォルトの名無しさん
10/03/17 18:04:32
IDEらっきょ

703:デフォルトの名無しさん
10/03/17 18:05:58
いや別に最強とか決めるためにプログラム言語使ってるわけじゃないんで

704:デフォルトの名無しさん
10/03/17 18:09:19
ASRをインスコしてデスクトップのショートカットをダブルクリックしたら
コマンドプロンプトが起動した…

WINのrubyってコマンドでプログラム書くの?
自分は何か致命的なミスをおかしてますか?

705:デフォルトの名無しさん
10/03/17 18:11:18
>>704
実行環境であって開発環境ではない

706:デフォルトの名無しさん
10/03/17 18:12:23
>>705
なる
もーちょっとあちこち見て回ります

707:デフォルトの名無しさん
10/03/17 18:13:10
>>704
文法に沿って書いたテキストファイルをruby.exeに読み込ませると
ruby.exeが必要なRuby用ファイルを読み込んで
テキストファイル内で指定された動作を対象ファイルとかに対して行う

動作を指定したいことがないような人には無用の長物

708:デフォルトの名無しさん
10/03/17 18:15:54
>>704
あれはRubyを実行するのに都合のいい設定済みのコマンドプロンプト

709:デフォルトの名無しさん
10/03/17 18:18:22
>>704
コンパイルするときいちいちコマンドプロンプトで
ファイル名書いてやらないとだめだよ
またライブラリ使うとオプションも書かないとだめだし
何度もテストするのにいちいちファイル名を文字入力しなければならない

710:デフォルトの名無しさん
10/03/17 18:22:25
スレ住民一同苦笑しております

711:デフォルトの名無しさん
10/03/17 18:23:23
しまったコンパイラじゃなかったわ

712:デフォルトの名無しさん
10/03/17 18:27:58
>>707-709
ども
開発環境はRDE?
なんか上の方でRDEは嫌われてるっぽいんですが
というか仮想OSでUBUNTU辺りでやった方が良いの?
もーなにがなんだかw

>>710
ここで自分の質問が問題あるならこれをもってROMに戻ります
問題あるならここにでも行って帰ってくんなと言う誘導でも下さいね

713:デフォルトの名無しさん
10/03/17 18:28:46
>>712
>>709は無視
無視してないの君だけだ

714:デフォルトの名無しさん
10/03/17 18:33:34
>>712
RDEはRuby無関係のRDE固有のトラブルを自力で切り分けて解決できる人向け
「普通のRubyではできるのにRDEでは違うということはRDEが悪い」という判断ができないと無理

基本はテキストエディタさえあれば作成は可能で、それだけで作ってる人もわりといるが、
そういうことに慣れていないならそれだけで嫌になる可能性はたいへん高い

715:デフォルトの名無しさん
10/03/17 18:36:46
>>712
多分インストールする時点で挫折するでしょう
ここではインストール方法は教えないので自力でやってください

716:デフォルトの名無しさん
10/03/17 18:39:52
>>712
>>710>>709 あて

とりあえずWindowsでやってみて不満が出るようなら
仮想マシン+Ubuntuへの乗換えを検討してみたらいいんじゃないか
出回ってる本で勉強するぐらいならWindowsでもまったく問題ないよ

コマンドプロンプトの使い方がわからなかったら
カレントディレクトリっていう概念とCD、DIRコマンドの使い方だけ抑えてくれ
テキストエディタは保存と編集だけできれば十分

717: ◆Y4m3jU.1h.
10/03/17 18:47:27
めんどくさ

>>712
なんらかの、IDEと呼ばれるタイプの開発環境を使用したことがないのなら何も勧めない
>>714の言うようにRDEは初心者が使うものではない

どうしてもウィンドウが3つくらいないと死ぬとかそういう病気の場合は
EclipseかNetBeansがいちおうRubyに対応している
ただ、IDEを使ったことがないなら使用は勧めない
IDEの余分な操作で余計に混乱すると思うから

メモ帳でも開いて

puts "Hello, Ruby!"

と1行書いて "a.rb" とでもしてファイル保存して
ruby console ダブルクリックして a.rb を黒い画面にドラッグアンドドロップしてEnterすると

Hello, Ruby!

と黒い画面の次の行に表示される
そんな程度

718:デフォルトの名無しさん
10/03/17 18:50:57
>>713-716
了解
しばらくエディタでやってみます

>>715
インストールは何のインスコを指してるのか判然としないが
とりあえず自力でやります

>>717
めんどくさいことわざわざどうも

719:デフォルトの名無しさん
10/03/17 19:07:10
ruby console ダブルクリックして a.rb を黒い画面にドラッグアンドドロップしてEnterすると

↑この作業を毎回しなければならないのは苦痛でしかない
C#ならF5押すだけで済む

720:デフォルトの名無しさん
10/03/17 19:09:45
a.rbをダブルクリックでおk

721:デフォルトの名無しさん
10/03/17 19:10:33
インタプリタの意味が無いな

722: ◆Y4m3jU.1h.
10/03/17 19:12:12
>>719
コマンドプロンプトの履歴は上キー
一覧から選びたいならF7
コマンドライン入力中に履歴補完したいなら入力途中でF8
ファイル名補完は設定によってはタブでも動作する

723:デフォルトの名無しさん
10/03/17 19:15:35
rubyで出来たpukiwikiのパーザってありますか??
pukipaはtableが使えないのでダメでした

724: ◆Y4m3jU.1h.
10/03/17 19:16:09
あと

>>719
> C#ならF5押すだけで済む
それはC#の機能ではない
そもそもC#に編集機能などない
それはVisualStudioの機能だ

725:デフォルトの名無しさん
10/03/17 19:25:26
>>709
csc /t:winexe hoge.cs /r:PresentationFramework.dll /r:PresentationCore.dll /r:WindowsBase.dll

こうですね、わかりません

726:デフォルトの名無しさん
10/03/17 19:53:08
>>◆Y4m3jU.1h.
全レスはとても親切だと思うんだけど,
入門書の第1章を読めばわかるレベルの質問ならば
入門書を挙げるだけでいいと思う。

なにも読まずにつまづいて調べもせずに
いきなり人に聞こうとする質問者に
手を差し伸べてたらキリがない。

あと妙な書き込みにレスつけてると相手の思う壺。

727: ◆Y4m3jU.1h.
10/03/17 19:55:35
>>726
こうやって可視化すると文句言えるんだな

728:デフォルトの名無しさん
10/03/17 19:59:36
この板はIDあったほうがいいなと思うことはある

729:デフォルトの名無しさん
10/03/17 20:21:10
C#荒し厨(C#厨ではない)にはレスつけずスルー推奨
C#スレ見たけどあっちでも嫌われてるじゃねーか(そりゃそうか

730:デフォルトの名無しさん
10/03/17 21:01:16
>>724
そんなのわかっているし、そういう発言自体がナンセンスなの
言語だけでプログラミングできるとでも思ってるわけ?
開発ツールがなければできないだろ
電波飛ばして直接ハードディスクにデータ書き込む気?

731:デフォルトの名無しさん
10/03/17 21:02:54
>>727
名無しではみんな強気だからな

732:デフォルトの名無しさん
10/03/17 21:25:50
匿名になると無責任になるってばっちゃが言ってた

733:デフォルトの名無しさん
10/03/17 21:26:00
C#で湧いてくる人を見ると
『あぁブビ厨ってこんな感じだったんだろうなぁ』
と、当時が偲ばれてノスタルジックになれる
・・・かもしれない

734:デフォルトの名無しさん
10/03/17 21:29:36
最近Rubyはじめた初心者だけど、IDEとか使わない方が
覚えることが少なくて楽だと思う

確かにDOSプロンプトで作業するとなんかイライラするけど、
cygterm (cygwin+teraterm) の端末なら快適

735:デフォルトの名無しさん
10/03/17 21:36:14
cygwinならminttyもいいぞ
"mintty -"でログインシェルで起動するのを忘れずに

736:デフォルトの名無しさん
10/03/17 22:25:38
DOSプロンプトなんてとっくに滅んで存在しないだろ。
NT系は最初から「コマンド プロンプト」だぜ。

つか、現代のコマンドプロンプトは、ヒストリついてるし、
最初からファイル名補完有効だし、意外と便利。

737:デフォルトの名無しさん
10/03/17 22:30:40
UTF-8も満足に表示出来ないターミナルで便利とかちょっと
PowerShellならまあ…っていまだに使い方わからんけど

738:デフォルトの名無しさん
10/03/17 22:30:48
最近はPowerShellとか言うやつじゃないのか。

739:デフォルトの名無しさん
10/03/17 22:35:13
コマンドプロンプトからPowerShellを起動した場合はUTF-8表示できなかったような
ただPS用にISEっていう統合環境があってそれなら表示できる

ただPSは肝心の文法がキメラでして

740:デフォルトの名無しさん
10/03/17 23:03:53
統合開発環境ってのはまずそいつの使い方を知らないと勉強を進められんからな
知ってりゃいろんな事がボタンひとつで出来るかもしらんが環境変わるとまた使い方を調べにゃならん
そしてWindowsはこれがないとプログラミングがまともに出来ない

741:デフォルトの名無しさん
10/03/17 23:17:35
コマンドプロンプトUTF-8非対応のおかげで、rspecとかautotestで文字化けするから
spec_helperとかでモンキパッチで変換かますか、
autotestでCtrl+Cで強制終了してしまうのを我慢してUTF-8対応cygwinターミナル使うかという感じだ。

PowerShellだと表示出来るのかな、試してみるか・・・
結局、UTF-16に変換かまさないといけなかったらあまりおいしくないなあ

742:デフォルトの名無しさん
10/03/17 23:19:46
>>740
IDEというか統合環境のいいところは、1つ覚えたら大体他もそれなりに使える、というところじゃないかなぁ?
そんなにカスタマイズしなくても馬鹿でも使えるからいいんであって。

emacsとかvimはカスタマイズしないとまともに使えないだろw

743:デフォルトの名無しさん
10/03/17 23:22:51
エディタとコマンドプロンプトの切り替えにAlt+Tabがあれば基本なんとかなるだろ
必須になる意味がわからん
まさかマウスクリックでタスク切り替えしてるのか

744:デフォルトの名無しさん
10/03/17 23:27:18
>エディタとコマンドプロンプトの切り替えにAlt+Tabがあれば基本なんとかなるだろ
そんな環境でプログラミングしてるのか大変だな

745:デフォルトの名無しさん
10/03/17 23:29:29
>>741
ISEはあくまでPowerShell用の環境
コマンドプロンプトの上位互換的使いかたはできないと思われ

もしISEのプロンプトからirbとかしようものなら
延々入力を待ち続けてCtrl+Breakするまで戻ってきますん

746:デフォルトの名無しさん
10/03/17 23:30:16
エディタカスタマイズ派
統合開発環境派
メモ帳+Alt+Tab派

他には?

747:デフォルトの名無しさん
10/03/17 23:30:46
脳内にRubyインタプリタ実装派

748:デフォルトの名無しさん
10/03/17 23:33:58
cmd.exeでUTF-8の表示だけできれば満足ならプロパティでフォントをMSフォントに変更してchcp 65001してやりゃいい
入力はあきらめた方がいいけど

749:デフォルトの名無しさん
10/03/17 23:45:08
ここは本スレか

750:デフォルトの名無しさん
10/03/17 23:49:27
本スレです。

751:デフォルトの名無しさん
10/03/18 00:12:00
なんというかココ酷いね

752:デフォルトの名無しさん
10/03/18 02:39:30
rubyで出来たpukiwikiのパーザってありますか??
pukipaはtableが使えないのでダメでした

753:デフォルトの名無しさん
10/03/18 02:47:05
なんでこんなに粘着アンチは毎日ネガキャンに必死なんだろうな
周囲の環境を否定することでしか自我を保てない哀れな野郎だ

754:デフォルトの名無しさん
10/03/18 03:31:29
Windows厨なんで開発環境といったら
・メモ帳
・TeraPad
・RDE
・Eclipse
ぐらいしかしらんなぁ
IronRubyに限るなら
・SharpDevelop
っていうのもありだな

個人的には、RDEが好きなんだが
バグが多いのと、開発が止まっているのが難点だな
IDEは、どっちかというと、オレのように頭の悪いやつ向けだな
オブジェクトがどこにあるとか、どこにどのメソッドがあるとか
解りやすくしてくれる。
ただし、設定が面倒で、動作がもっさりしてる。

そういうのが嫌いなら、TeraPadとかの高機能テキストエディタがいいね
何にも設定しなくても、それなりに見やすい。
動作も、さくさくしてる。
IDE使ってると見落としがちな、Rubyそのものの動作を体感できる。
初心者は逆にこっちのほうが良いかもね。
しばらく、メモ帳つかってメンドクセーって思うようになったら、IDEつかってみたら?

755:デフォルトの名無しさん
10/03/18 09:12:18
>>748
chcp 65001するとまともに使えない@Vista

756:デフォルトの名無しさん
10/03/18 10:53:23
そういうのが嫌いなら、TeraPadとかの高機能テキストエディタがいいね
                               ^^^^^^^^^^^^^^^^^^^

757:デフォルトの名無しさん
10/03/18 10:59:46
>>756
URLリンク(www.vector.co.jp)

758:デフォルトの名無しさん
10/03/18 11:01:13
メモ用紙で充分

759:デフォルトの名無しさん
10/03/18 11:03:56
自由帳と脳内インタプリタでおk

760:デフォルトの名無しさん
10/03/18 11:25:58
require するファイルがたくさんある場合 thread を使って並列に読み込むと
速くなりますか?
何か副作用はありませんか?

761:デフォルトの名無しさん
10/03/18 11:27:54
>>760
速くならない

762:デフォルトの名無しさん
10/03/18 11:35:30
結局I/Oでブロックされそうだな。

763:デフォルトの名無しさん
10/03/18 11:44:42
インストール時に1枚のファイルにするようにするとかの気遣いが欲しいところ
require 'hoge' するとでっかいひとつ
require 'hoge/foo' だと個別

764:デフォルトの名無しさん
10/03/18 12:00:57
>>761-763
ありがとうございます!
>>763
それは自分がライブラリを作って公開する場合の心得ってことですよね

765:デフォルトの名無しさん
10/03/18 12:50:22
Rubyのスレッドの実装っていまどうなってるんだっけ

766:デフォルトの名無しさん
10/03/18 12:55:03
>>765
実装の話題は本スレで

767:デフォルトの名無しさん
10/03/18 12:57:23
じゃあ質問を変えるよ

requireに限らず、ボトルネック回避以外の目的にスレッドを使って高速化することはできる?

768:デフォルトの名無しさん
10/03/18 12:58:17
>>767
できない
少なくとも1.8ではできない

769:デフォルトの名無しさん
10/03/18 13:00:38
C++で作られているライブラリのバインディングを使っているのですが、
列挙型ってどうすればいいんですか?

>Ruby には言語の機能としての列挙型がない。
>ちょっと使いたいことがあって、いくつかのパターンで列挙型ぽく振舞うものを書いてみた。

こんな事を書いてる記事もあるわけですが、いちいちこんなに面倒くさい事をしないとダメなのかな

770:デフォルトの名無しさん
10/03/18 14:34:37
p true and false #=> true
p true && false #=> false

なんで?
あれなんか凄い勘違いしてる?

771:デフォルトの名無しさん
10/03/18 14:44:51
>>770
p (true and false)

772:デフォルトの名無しさん
10/03/18 14:46:36
>>770
演算子の優先順位のせい

URLリンク(www.ruby-lang.org)

p true and false #=> (p true) and false
p true && false #=> p false

773:デフォルトの名無しさん
10/03/18 14:48:24
URLリンク(www.ruby-lang.org)

まず、左辺を評価して、結果が真であった場合には右辺も評価します。and は同じ働きをする優先順位の低い演算子です。
and を伴う式をメソッドの引数に渡す場合は二重に括弧が必要となります。

774:デフォルトの名無しさん
10/03/18 14:49:36
かぶりすぎワロタ

775:デフォルトの名無しさん
10/03/18 14:54:56
>>771-773
thx 把握した
そして and or が嫌いになった

condition = hoge and fuga

condition = (hoge and fuga)

condition = hoge && fuga
としなきゃいけないわけか

776:デフォルトの名無しさん
10/03/18 14:57:11
ちなみにPerl5の同様の演算子を踏襲している。
式2つをえせ英語として読めるように書きたいときはand/or を使う感じ。
do(it) || raise;
do it or raise;



777:デフォルトの名無しさん
10/03/18 15:02:08
そだな
URLリンク(perldoc.jp)

集合とかの AND や OR とかのように and や or を使うことはできない
記号優先なのが Perl っぽいといえば Perl っぽいといえなくもなく

778:デフォルトの名無しさん
10/03/18 15:02:43
a == 0 and b < 0

779:デフォルトの名無しさん
10/03/18 15:05:47
perl のは or die と書きたかったがためだけにこうしたような気がしてならない

780:デフォルトの名無しさん
10/03/18 15:56:10
>>779
十中八九そうだと思う・・・


781:デフォルトの名無しさん
10/03/18 15:57:03
Perl はどうかしらんが Ruby で foo or bar and baz は (foo or bar) and baz なので注意。
foo || bar && baz は foo || (bar && baz)

782:デフォルトの名無しさん
10/03/18 17:03:27
RubyもPHPみたいにCGIとして動作させることができるの?


783:デフォルトの名無しさん
10/03/18 17:05:01
もちろん

784:デフォルトの名無しさん
10/03/18 17:15:00
Rubyというか
標準出力を吐けるものならなんでもCGIで使用可能
むしろCGIって名前自体がそういう意味なんだと思うけど
httpdでハンドラが適切に設定されている必要はある

785:デフォルトの名無しさん
10/03/18 17:29:01
>>782
ただしすこし遅い
PHPやPerlより確実に遅い(mod_rubyでも素のPHPに勝てるか怪しい)
遅くてもいいようなまったり用途向け

786:デフォルトの名無しさん
10/03/18 17:29:44
Full Book Now Available For Free!
URLリンク(blog.rubybestpractices.com)

URLリンク(sandal.github.com)

787:デフォルトの名無しさん
10/03/18 17:31:38
>>783-784
サンクス
それ出来るならちょうどよかった
PHP以外に何か軽くでも使えるように勉強しようと思ってたんだ





788:デフォルトの名無しさん
10/03/18 17:44:01
Perlすらgeekしか知らないような頃、CでCGI書いてる会社の先輩が
いて、あきれるやら感心するやら。
# もちろんCで書くことが必要な状況ならそうすべきだけど。


789:デフォルトの名無しさん
10/03/18 17:53:38
なぜあきれるやら関心するやらなのか解りかねる。

790:デフォルトの名無しさん
10/03/18 17:56:59
感心ならともかく呆れるのは理解できない

791:デフォルトの名無しさん
10/03/18 18:00:13
rubyでcgi書いててそこから呼ぶモジュールはがんがんCで書いてたなあ

792:デフォルトの名無しさん
10/03/18 19:17:07
>>754
つvim

793:デフォルトの名無しさん
10/03/18 19:55:06
つい先日もCでCGIを書く仕事があった。
非常にアホ臭いとは思ったが、呆れるとか感心するとかいうようなものでもないな。

794:デフォルトの名無しさん
10/03/18 20:04:24
で?

795:デフォルトの名無しさん
10/03/19 00:02:39

文字列:ABC=DEFG
パターン:ABC
文字列がABCから始まるかを調べる方法ありませんか?

796:デフォルトの名無しさん
10/03/19 00:04:32
/\AABC/

797:デフォルトの名無しさん
10/03/19 00:06:41
>>796
それで理解できる人はそういう質問はしないと思う

str = "ABC=DEF"
if /\AABC/ =~ str then
puts "ABCから始まっています"
else
puts "ABCから始まってません"
end


「正規表現」についての知識は必須なので、
使いやすい簡単なのだけは覚えておくといい

798:795
10/03/19 00:09:40
>>797
これくらいの事なら、メソッドで準備されているかな?と思ったので

799:デフォルトの名無しさん
10/03/19 00:11:05
こういうのも。

s = 'ABC=DEF'
s.start_with?('ABC') #=> true


800:デフォルトの名無しさん
10/03/19 00:12:36
正規表現で簡単にできる「これくらいの事」をすべて
メソッドで装備していたらかなり煩雑だと思う

801:デフォルトの名無しさん
10/03/19 00:13:45
>>800
そこから先は本スレでどうぞ

802:デフォルトの名無しさん
10/03/19 00:14:31
ruby -e 'p String.instance_methods - Object.instance_methods'
とかやって、それっぽい名前のメソッドがないか探してみるのもよい。


803:デフォルトの名無しさん
10/03/19 00:16:35
>>799はRuby1.8.7以降とRuby1.9.1以降限定
初心者的に大きな問題はないとは思うが

>>800
String#include?さんなめんあ

804:デフォルトの名無しさん
10/03/19 00:19:18
start_with? なのか
starts_with? 派との間で血みどろの抗争が繰り広げられたに違いない

805:デフォルトの名無しさん
10/03/19 00:21:37
>>804
ruby的には、is_a? 以外は原形不定詞を使うとかいう約束だったと思う。
三単現派は ActiveSupport を使えば starts_with? を定義してくれる。


806:デフォルトの名無しさん
10/03/19 00:25:24
JavaはstartsWith, endsWithなんだな

>>805
なるほど
この場合主語が単数なのはほぼ異論無いとして、一人称なのか二人称なのか三人称なのか。
意外と深い?のでその原則は結構ナイスかも。
って日本人ユーザからすると面倒なだけとか。

807:デフォルトの名無しさん
10/03/19 00:27:07
>>804
1.9から降りてきて1.8.7からだよなという確信が持てなくて検索したとき
最初は starts_with? でやったことは秘密だ
URLリンク(blade.nagaokaut.ac.jp)

808:デフォルトの名無しさん
10/03/19 00:33:55
is_a? との類推で三単現にしてしまうんだよなあ
まったく is_a? は鬼っ子だ

初心者の皆さんにおかれましては is_a? は表記的に時代遅れなので kind_of? 使ってくださいね

809:デフォルトの名無しさん
10/03/19 00:36:36
>808
is_a? と kind_of? は意味が違うことをわかってんの?

810:804
10/03/19 00:39:03
>>805
興味深いマジレスありがとう
原型不定詞ってなんだっけってなったのは内緒

811:デフォルトの名無しさん
10/03/19 00:42:42
>>809
横からだけど、kwsk

古いのと一応最新ぽいのでも同じ扱い(てか丸移し)だけど、違うの?
URLリンク(www.ruby-lang.org)
URLリンク(doc.okkez.net)


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch