Ruby 初心者スレッド Part 21at TECH
Ruby 初心者スレッド Part 21 - 暇つぶし2ch175:デフォルトの名無しさん
08/08/16 04:16:24
>>173
よくわからんのは、
取得ってどこまで来たのを取得データと捉えたいんだ?

176:171
08/08/16 09:21:25
>>174
readpartialですね
試してみます

>>175
どういう答え方が正しいのか分からないのですが
ソケットまで来ていれば取得済と考えています


177:171
08/08/16 22:02:54
readpartialで解決できました
ありがとうございます

178:デフォルトの名無しさん
08/08/17 15:32:40
URLリンク(www.aoky.net)

179:デフォルトの名無しさん
08/08/17 16:41:49
ああそうか夏休みか

180:デフォルトの名無しさん
08/08/18 02:30:09
el4rは動作が怪しい

181:デフォルトの名無しさん
08/08/18 11:56:16
Rubyで使われてるフォントって何?欲しいんだけど

182:デフォルトの名無しさん
08/08/18 11:59:12
……よーわからんが、このロゴに使われてる字体のことか?
URLリンク(www.ruby-lang.org)

183:デフォルトの名無しさん
08/08/18 12:11:12
ああ、すまんそういうことじゃなくて

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

ここの「Rubyとは」ってとこの横のエディタ画像のフォント

184:デフォルトの名無しさん
08/08/18 12:16:12
画像じゃない気がするんだが…

#code div {
display: block;
font-family: "Lucida Console", Monaco, monospace;
padding-left: 24px;
padding-right: 24px;
}

って書いてあるんで、君のパソコンに入ってるLucida ConsoleかMonacoかmonospace
あるいはmonospaceファミリーに設定されてるフォントで勝手に表示されてる

185:デフォルトの名無しさん
08/08/18 12:18:01
欲しいも何も既に持ってるってパターンだな

186:デフォルトの名無しさん
08/08/18 12:23:00
>>184
画像じゃなかったのか…ありがとう

187:デフォルトの名無しさん
08/08/18 12:34:18
irb> say = "I love Ruby"
irb> say['love'] = "*love*"
irb> puts say.upcase
I *LOVE* RUBY

なんぞこれ

188:デフォルトの名無しさん
08/08/18 12:36:25
>>184
あ、でもこれ日本語対応してないのか…くぅ、使いたかった

189:デフォルトの名無しさん
08/08/18 12:43:37
Hpricotって1.9に対応する予定ってあるんですか?

190:デフォルトの名無しさん
08/08/18 12:43:39
xyzzyとかはASCIIと日本語を別々のフォントに指定できるぞ
xyzzy使わざるを得なくなるのが難点か

もしWindowsXP以降(2000でもフォントによってはできる)を使ってるならFontLink機能を使う手もある
「どう考えても英字フォントを指定してるだけなのになぜか日本語も表示できる謎機能」を自力で利用する

191:デフォルトの名無しさん
08/08/18 12:49:12
>>190
kwsk

192:デフォルトの名無しさん
08/08/18 13:06:35
1.9は

 ・誰でもgem含めて完全に1.9のライブラリだけを使って動作するようにインストールできるよガイド

があれば対応が増えると思う
現状の1.9は「1.9に乗り換える」という覚悟がないとそもそもインストールしにくい
make install するとgemごとユーザーディレクトリにインストールされるような親切セットが欲しい

>>191
ぐぐってレジストリ書き換えろ

193:デフォルトの名無しさん
08/08/18 13:14:14
gem開発者はRubyに関してちょっと詳しいだけであって、
その他のことに関しては素人に毛が生えた程度だと思ったほうがいいよな
自分用Rubyと際新安定版RubyとRuby1.9の3つくらいは維持しないといかんわけで
それに対するフォローはあっても面白いかもしれん

194:デフォルトの名無しさん
08/08/18 13:56:07
PerlでいうことろのTemplate ToolkitやFillInFormみたいなモジュールはありますか?

195:デフォルトの名無しさん
08/08/18 14:58:05
uri = "URLリンク(example.com?aaa=123&bbb=456&ccc=789)"

ここからquery param形式でURIをパースしてくれるものってあるでしょうか?
今は正規表現でパースしてますが面倒で…

196:デフォルトの名無しさん
08/08/18 16:03:24
query param 形式ってなんじゃらほい

irb> require 'cgi'
irb> require 'uri'
irb> uri = URI.parse('URLリンク(example.com?aaa=123&bbb=456&ccc=789)')
irb> p CGI.parse(uri.query)
{"aaa"=>["123"], "bbb"=>["456"], "ccc"=>["789"]}

こんなん?

197:デフォルトの名無しさん
08/08/18 18:06:11
>>194
あるはずだが、見つからないなあ

フォーム入りHTMLを自動生成して送る
      ↓
ユーザーがフォームを埋めて送り返してくる
      ↓
解析したが内容が不足または不当だった
      ↓
ユーザーの入力内容がフォームに記入された状態のHTMLを再度生成して再送


198:195
08/08/18 20:48:03
>>196
まさにその通りです
自分も書いた後に「query param形式」って変な表現だと思ってました
ありがとうございます!

199:デフォルトの名無しさん
08/08/19 00:24:58
JRubyを使ってSwingを叩いていてはまったのでどなたかお助けください。

Javaのクラス(具体的にはjavax.swing.event.MouseInputAdapter)を基底としてRubyのクラスを作りました。
そこで初期値を与えてnewしようとしたところ、
base.rb:24:in `__jcreate!': wrong # of arguments for constructor (NameError)
とのエラーが出てしまいます。

初期値を与えなければ正常に動作するため、Javaクラスを基底とするRubyクラスでは
初期化に工夫がいるのかと思い、調べてみたのですが、言及を発見することができませんでした。

どなたか回避方法、或いは他の原因に心当たりの方がいらっしゃいましたら教えてください。

200:デフォルトの名無しさん
08/08/19 00:34:00
>>199
コンストラクタの先頭でsuper()を呼べばいいんじゃない?


201:199
08/08/19 00:55:17
>>200
あうあ。どうもありがとうございます。
書き込み前にsuperを試したときにもsuperを括弧無しで呼んだ時には引数が引き継がれる、
というのを知らなかったので、二重にはまっていたみたいです。
明示的にsuper()を呼ばなければ引数引継ぎで自動的にsuperが呼ばれるのかしらん。
色々と調べてみます。どうもありがとうございました。

202:デフォルトの名無しさん
08/08/19 18:41:40
ruby script/server -p 80

このコマンドを実行し、ポート80を使っていたapacheを停止させたところURLリンク(localhost)でも接続できるようになりました。
これはapacheの代わりにmongrelが動いているということでしょうか。
初歩的な質問ですいません

203:デフォルトの名無しさん
08/08/19 19:28:29
Railsに関する質問はRailsスレで

204:202
08/08/20 01:20:53
ありがとうございます

205:デフォルトの名無しさん
08/08/20 17:58:01
rubyって
(2..0).to_a
ってしたらなんで[2,1,0]って配列を作ってくれないの?

そもそもRubyのRangeクラスって昇順しか認められてないの?

206:デフォルトの名無しさん
08/08/20 18:42:12
失敬な
降順だろうが昇順だろうがきちんと存在しマニュアル通りに動作するぞ
2.succ は 3 で 0 より大きいから each も即終了する

…まあ、Range#first > Range#end なときは
Range#each の中で逆方向の配列作ってくれてもいいじゃんという気は
全くしないわけではない

207:デフォルトの名無しさん
08/08/20 21:04:20
..はsuccを使うので、2.step(0, -1).to_aで我慢してくれ。


208:デフォルトの名無しさん
08/08/20 21:05:55
それくらいならreverseする


209:デフォルトの名無しさん
08/08/21 00:38:55
p (2..0).to_a # => []
p (0..2).to_a # => [0, 1, 2]

たしかに気分悪いなこれ


210:デフォルトの名無しさん
08/08/21 00:48:15
>>206の言う通り以外の何物でもない
> 2.succ は 3 で 0 より大きいから each も即終了
succ を辿る実装を変えるとは思えないから、each を書き換えるしかないな

211:デフォルトの名無しさん
08/08/21 02:44:59
そういえば1.9のString#succはなかなか変態らしいな。
次の意味のあるバイト列までいかに素早く進むか、みたいな。



212:デフォルトの名無しさん
08/08/21 11:06:44
akr氏のあれか

213:デフォルトの名無しさん
08/08/21 18:30:19
これか
cvs.m17n.org/~akr/pub/string-succ-rejectkaigi2008.pdf


214:デフォルトの名無しさん
08/08/21 19:54:18
initialize 内部で望ましくない動作をしている外部クラスがあります。
特定の引数 param2 のハッシュから特定のキー 'danger' に関連するペアを、
param2.delete('danger') のように事前削除すれば問題ありません。
クラスを利用するときの引数でいちいち削除すればいいんですが、
できれば同クラス名のクラス定義をスクリプト開始時にこっそり上書きすることで楽に済ませたいです。

最初

class Hoge
alias _initialize initialize
def initialize(param1, param2)
param2.delete('danger')
_initialize
end
end

と書いたんですが、これだと self が書き換わりません。いい方法はありますか?

215:デフォルトの名無しさん
08/08/21 22:31:12
どこのself

216:デフォルトの名無しさん
08/08/22 01:19:03
Net::HTTP を利用してるモジュールがあるんですが、中で

body = StringIO.new
http.request_get(uri.path){|res|
res.read_body {|part|
size += part.size
body.write(part)
}
}

としてる部分がありました(request_getはrequest_postのもあります)
どうせ最後には全部メモリに入るわけだし、ふつーに

body = request_get(uri.path).body
size = body.size

でいいと思うんですが、わざわざ細かく読み込んでるのは何か理由があるんでしょうか?

217:デフォルトの名無しさん
08/08/22 08:57:37
>>216
マルチスレッドのためじゃね?
最後は書いた人に聞かないとわかんないから、この質問はメーリングリストで聞いてみるのがいいだろうね。
書いた人はだれかしらんけど、たぶんメーリングリストは読んでいると思うよ。

218:デフォルトの名無しさん
08/08/22 11:19:47
Ruby1.8.6 と Ruby1.8.7 をうまく共存させる方法はない?
> lib/ruby/1.8/i686-linux/rbconfig.rb:7: ruby lib version (1.8.7) doesn't match executable version (1.8.6) (RuntimeError)

219:デフォルトの名無しさん
08/08/22 11:31:28
>>216
Net::HTTP の中でも同じような書き方をしてるから、それ自体は net/http.rb の改変コピペだと思う

で、>>215の言うように、net/http.rb での採用理由はたぶんマルチスレッドというかマルチタスクというかそんなのの対策だと思われる
たとえば、サーバからのファイルを HDD 上のファイルと同じノリで最初から最後までずーっとひと息に待ってると、
でかいファイルの場合はそれだけでタスクというかジョブがいっぱいになってしまう
一昔前のWindowsのフリーソフト(や現在のピーとかピーとかピーとか)に稀にあった、
ファイルをダウンロード中にビジーになって他に何もできなくなるヘボいフリーソフトのダウンローダーの動作を考えてもらうといい

220:デフォルトの名無しさん
08/08/22 11:34:11
>>219 の 215 は >>217 の間違い
ぶっちゃけ net/http にお任せしてればわざわざ自前でそんなとこまで意識して書く必要はないんだけど、
繊細動作させるダウンロードクラスでも作ってるのかな?

221:デフォルトの名無しさん
08/08/22 11:38:48
>>218
既にあった lib/ruby/1.8/ とかが新しくインストールした 1.8 系列で上書きされてるっぽい
lib/ruby/1.8.7/ って明示的に作れないんだっけ?
どっちにしても両方再インストールだな

222:デフォルトの名無しさん
08/08/22 11:57:48
>>221
configure --with-ruby-version=full

223:デフォルトの名無しさん
08/08/22 12:02:17
>>218
漏れは ./configure --prefix=/usr/local/ruby_1_8_6 とかやっとります。

224:デフォルトの名無しさん
08/08/22 17:32:27
現存するクラスを完全に上書きしたいです

require 'uri'
URI = nil
require 'my-uri'

とすると希望どおりの動作にはなりますが、
> warning: already initialized constant URI
という真っ当な警告が出てしまいます

225:デフォルトの名無しさん
08/08/22 17:40:00
質問なんだぜ

1. Array を継承する
2. @data = Array.new してから、@data をいじるArrayと同名のメソッドを完全自作
3. @data = Array.new してから、 @data に対してメソッドを委譲

細かいレベルの一般的実行速度で言えば 1 が一番速くて 3 が一番もったりだよな?
1 は微妙にキケンで 2 はめんどくさいから 3 をやる、という思考の流れでいいんだよね?

226:デフォルトの名無しさん
08/08/22 18:38:19
>>224
require 'uri'
class Object
remove_const :URI
end
require 'my-uri'

227:デフォルトの名無しさん
08/08/22 21:25:18
誰だこんな220行の建て増し温泉旅館メソッド書いたの

228:デフォルトの名無しさん
08/08/22 21:33:53
rubygemsには時々すごい変なソースが転がってる
まあインプットとアウトプットが妥当なら使うけどな

229:デフォルトの名無しさん
08/08/23 01:02:49
かなり間抜け気味の質問なんですが、net::SMTPでのメール送信て、
同一ドメイン内のメアドへの送信のみでしょうか。

メールフォームCGIでそのような動作になっていて、
外部のメアドに送信しようとするときに限りエラーになります。
エラーメッセージもでているのですが、なんとなく上記部分がひっかかったので、
詳細なしで質問させていただきましたm(_ _)m

230:デフォルトの名無しさん
08/08/23 01:36:31
外部にも送れるよ。


231:229
08/08/23 01:48:11
>>230
ありがとうございます!すっきりしました。
エラーを見てチェックしなおしてみます。

232:デフォルトの名無しさん
08/08/23 23:50:39
Keep-Alive と COOKIE が使える Web アクセス用のクラスで何か良いのあるかな?

httpclient は何でもかんでも RuntimeError になって不便だった。


233:デフォルトの名無しさん
08/08/24 02:19:53
gem の WWW::Mechanize が一応両方とも使える
gem isntall mechanize で Hpricot と一緒に入るはず

234:232
08/08/24 11:58:23
>>233
WWW::Mechanize って Keep-Alive 使えたのか…知らなかった。ありがと。

ただ、割と大きいファイルを落とすつもりなので
>>216 みたいにブロックが渡せるようなのが欲しかったんだけど、
WWW::Mechanize はパっと見無理っぽいですね、残念。

235:デフォルトの名無しさん
08/08/24 12:09:27
どこをどう「探した」のか気になる
ブロックなんてただのブロックなのに

236:デフォルトの名無しさん
08/08/24 12:24:12
いまさらだけど、>>216のコードでなんで「全部メモリに入る」んだ?
読み込んだ部分ごとに出力に書き出してるように見えるけど

237:デフォルトの名無しさん
08/08/24 12:27:50
>>220の通りで、Net::HTTPを利用している限りはソケットからfragment単位で読むからダウンロード負荷自体は問題にならない

「これまでのresponseをメモリ内で破棄しつつ最新のみIOに出力する」というダウンローダー芸はNet::HTTPではできないと思う
100MBのファイルを取得したら100MBのファイルはresponseの取得履歴としてメモリ内にどーしても一瞬保持されるはず

238:232
08/08/24 13:36:57
>>237 まぢで?
だとすると、ブロック渡しする意味は進捗状況の確認ができるだけってこと?

ちょっと net/http.rb の中見てみた限りでは、BufferedIO にも、ReadAdapter にも
読み込んだデータを保存しているような挙動は確認できなかった。
保存されるとしたら、どこに保存されてるんだろう。

実際、read_body にブロック渡した場合と渡さない場合で
HTTPResponse#body の挙動が変わるようだ

http = Net::HTTP.start("www.example.com", 80)
p http.request_get("/index.html") {|req| req.read_body{} }.body
# >> #<Net::ReadAdapter>

http = Net::HTTP.start("www.example.com", 80)
p http.request_get("/index.html") {|req| req.read_body }.body
# >> "<html><head>...."


239:デフォルトの名無しさん
08/08/24 17:58:12
YAMLの Anchor, Aliase でノードを参照する時に、
別の.ymlファイルのノードを参照するのって
どうすれば良いんでしょうか?

240:デフォルトの名無しさん
08/08/24 21:23:42
>>239
できない。
やるとしたら
s = ''
s << File.read('file1.yml')
s << File.read('file2.yml')
p YAML.load(s)
とするしかない。

241:デフォルトの名無しさん
08/08/24 21:24:42
>>236
>読み込んだ部分ごとに出力に書き出してるように見えるけど
部分的に書き出しても、書き出し先がStringIOオブジェクトだから
結局は全部メモリに入る。

242:デフォルトの名無しさん
08/08/24 21:27:30
>>224
>現存するクラスを完全に上書きしたいです
Rubyは既存クラスを自由に書き換え可能だから、「完全に上書き」する必要はないと思うけどなあ。
もしよければ、既存クラスを書き換えるのではなく完全に上書きしたい理由を語ってみてください。
なにか新しい発見があるかも。

243:デフォルトの名無しさん
08/08/24 22:58:02
module A
 def self.hoge
  puts 'Hoge'
 end
end

class B
 include A
end

これで A.hoge が B.hoge という形に mix-in されないのはどうしようもない?
継承だったらクラスメソッドも継承されるみたいなんだけど

244:デフォルトの名無しさん
08/08/24 23:30:15
>>243
こゆことがしたい?
module A
  def hoge
    puts 'Hoge'
  end
end

class B
  extend A
end


245:243
08/08/24 23:35:22
>>244
なるほど、そういうのもあるんですね。
ただ、A の中にインスタンスメソッドもたくさんあるんですが、何とかなりませんか?

246:デフォルトの名無しさん
08/08/25 00:30:26
委譲の考え方の基本がなんとなくわかった気がする

247:デフォルトの名無しさん
08/08/25 00:40:24
>>245
ええっと、どういう風に書きたいってこと?

248:243
08/08/25 01:14:50
module A
 def self.hoge # クラスメソッド
  puts 'Hoge'
 end
 def fuga # インスタンスメソッド
  self.class.hoge # self がどのクラスのインスタンスかによって変えたい
 end
end

class B
 include A
 # B は hoge を再定義するかもしれないけど、しなくてもいいようにしたい
end

b = B.new
b.fuga # B で再定義されていれば B.hoge、そうでなければ A.hoge が使われるようにしたい

# もしくは、
class C
 include A
 hoge # こういうふうにclassのコンテキストで呼び出したり・・・
end

だいたいこんな感じになってくれるとうれしいです。

249:デフォルトの名無しさん
08/08/25 04:31:05
こんちは
はじめてRubyでスクリプト書いてみました
下記コードでうまいこと画像を保存できたのですが、なぜかアニメーションGIFがぶっ壊れてます
RubyでアニメーションGIFを扱うことは不可能なんでしょうか
もし可能であればライブラリや書き方など教えてほしーです

require 'open-uri'
def main
  # ニコニコ動画の画像があるパス
  url = 'URLリンク(www.nicovideo.jp)'
  # 画像のパスを全部いれておくための配列
  image_url_list = []
  # ローカルの保存先のパス
  savepath = "D:/Data/IMG/"
  # URLの生成
  0.upto(10) do |i|
  image_url_list << url + "%03d" % i + ".gif"
    puts image_url_list
  end
  # 画像を保存
  image_url_list.each do |image_url|
    filename = File.basename(image_url)
    File.open(savepath + filename, "w"){|output|
      open(image_url){|data|
        output.write(data.read)
      }
      puts("#{filename} has saved.")
    }
  end
end
main

250:デフォルトの名無しさん
08/08/25 05:21:27
"wb"

251:デフォルトの名無しさん
08/08/25 05:30:51
うお すげぇ
朝っぱらからありがとうございます
バイナリモードっていうのがあったんですね

あざーっす!


252:デフォルトの名無しさん
08/08/25 07:53:27
>>243
こんな話?

irb(main):001:0> module M
irb(main):002:1>   def self.included(m)
irb(main):003:2>     m.module_eval do
irb(main):004:3*       def self.foo; p :foo; end
irb(main):005:3>     end
irb(main):006:2>   end
irb(main):007:1>
irb(main):008:1*   def bar; p :bar; end
irb(main):009:1> end
=> nil
irb(main):010:0> class C
irb(main):011:1>   include M
irb(main):012:1> end
=> C
irb(main):013:0> C.foo
:foo
=> nil
irb(main):014:0> C.bar
NoMethodError: undefined method `bar' for C:Class
        from (irb):14
        from :0
irb(main):015:0> C.new.bar
:bar
=> nil
irb(main):016:0> class C
irb(main):017:1>   foo
irb(main):018:1> end
:foo
=> nil

253:デフォルトの名無しさん
08/08/25 08:16:45
Rubyって日本語のファイル名を開けるの?

254:243
08/08/25 09:11:30
>>252
おー!include されるごとにメソッドを定義するわけですか。
それでいけそうです。ありがとうございます。

255:デフォルトの名無しさん
08/08/25 09:50:20
open-uriでurlを開いたら自動的にbodyも読まれてテンポラリファイルができてしまいます
headを読んで色々処理してからbodyを読むようにしたいんですけど
そういうのってnet/httpとか使って自作しないといけないんでしょうか

256:デフォルトの名無しさん
08/08/25 20:35:17
def config_file=(path)
h = YAML.load_file(path)
@username ||= h[:user]||h[:username]||h[:id]||h['user']||h['username']||h['id']
@password ||= h[:pass]||h[:password]||h['pass']||h['password']
end

使うキーくらいマニュアルに書いておけよ俺

>>255
はい
HEAD対応open-uriの改造をスクリプトの初めで上書きするモンキーパッチを誰かが作ってたと思ったが忘れた
とここまで書いてHTTPヘッダのことかいなと思う
まあどっちもたいして変わらんな
open-uriはFile.openが思想のベースなのでファイル読み込みは避けられないよ

257:デフォルトの名無しさん
08/08/25 20:41:55
「モンキーパッチ」ってそういう意味だったんだね。

258:デフォルトの名無しさん
08/08/25 20:52:07
>>257
Rubyではね
本来はゲリラパッチで、Rubyのようなシステム的に許されたなあなあのクラス上書きとはちょっと違う
代わりにduck punchingという言葉を使おうと言ってる人が一部にいるけど
本気でRailsの一部の人なので全く広まる気配はない

259:デフォルトの名無しさん
08/08/25 20:56:28
変数に結果を代入したいんだけど、三項演算子と1行if文ってどっちがいいかな?

260:デフォルトの名無しさん
08/08/25 21:01:33
s = (cond ? 'yes' : 'no')

s = if cond then 'yes' else 'no' end

s = if cond then
'yes'
else
'no'
end

if cond then
s = 'yes'
else
s = 'no'
end

まあ好きにせえ
3番目は微妙に嫌われてるということは知っておくといい
「Rubyのif構造は値を返す!!」とか興奮した初心者が多用するが冷静に読むと面倒だ

261:デフォルトの名無しさん
08/08/25 21:48:19
>>259
あるJavaの有名人が『三項演算子は難しい機能だからif文を使いなさい』といってた。
だからif文のほうがいいよ。
だって有名人のいうことだからね!

262:デフォルトの名無しさん
08/08/25 21:55:44
よく以下のような文を見るのですが、何のためにしているのでしょうか?

if __FILE__ == $0

263:デフォルトの名無しさん
08/08/25 22:02:40
>>262
そのif文の中はCで言うmainにあたるってとこかな

そこより上で定義したclassのテスト的なコード書いて
おいて、requireされた場合には実行させないための
おまじない


264:デフォルトの名無しさん
08/08/25 22:06:41
>>263
なるほど、そういうことか


265:デフォルトの名無しさん
08/08/25 22:07:34
>>264
>>263の補足というか、googleで、そのまんま "__FILE__ == $0" で検索して
トップに出てくるページを見ればいいと思うんだ。

初心者スレでググれ!って言うのは無し?


266:デフォルトの名無しさん
08/08/25 23:28:23
>>262-263

それは知らなかった。
勉強になった。
機会をくれてありがとう。


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

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

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

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

269:デフォルトの名無しさん
08/08/26 00:41:04
>>268
使ってみてから質問しろ。
あほか

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

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


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

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

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

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

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

276:デフォルトの名無しさん
08/08/26 07:36:19
windowsなら、ユニコードのファイル名は無理

277:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/08/26 08:17:18
>>276
ユニコードは日本語じゃなとでも言いたいわけ?

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

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


280:デフォルトの名無しさん
08/08/26 08:30:10
>>278
Windowsが異常なだけ。


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

282:デフォルトの名無しさん
08/08/26 08:38:59
困ったことあったらpythonを使え

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

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

256

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

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

287:デフォルトの名無しさん
08/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('URLリンク(www.google.com)')
irb> p res.header['Location']
["URLリンク(www.google.co.jp)"]


288:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/08/26 11:08:10
succ大人気w

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

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

291:デフォルトの名無しさん
08/08/26 11:30:48
それは普通

292:デフォルトの名無しさん
08/08/26 11:43:37
'99'.succ が "100" になるのは変態

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

293:デフォルトの名無しさん
08/08/26 11:50:38
perlの ++ -- 由来
rubyが異常なわけではない

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

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

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

296:デフォルトの名無しさん
08/08/26 20:29:54
alias suck succ

297:デフォルトの名無しさん
08/08/26 22:44:20
>>294
揮発してもかまわないなら memcached

298:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/08/27 02:34:14
>>298
[7,6,5].each_with_index.inject(0){|r, (x, i)| r+x*i}

300:デフォルトの名無しさん
08/08/27 18:02:07
rails2.1の入門教えてください

301:デフォルトの名無しさん
08/08/27 18:12:11
アバウトだのう

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

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

303:デフォルトの名無しさん
08/08/27 18:21:47
Rangeクラスではfirst、lastが使われている

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

305:デフォルトの名無しさん
08/08/27 20:21:49
start finish


306:デフォルトの名無しさん
08/08/27 20:27:06
finishはないわー

307:デフォルトの名無しさん
08/08/27 20:27:28
a z

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

309:デフォルトの名無しさん
08/08/27 21:00:29
start と stop
@begin と @end

310:デフォルトの名無しさん
08/08/27 21:01:43
>>302
>範囲の開始と終了を表す変数名

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

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

312:デフォルトの名無しさん
08/08/27 21:19:30
_beginと_endで

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

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

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

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

317:デフォルトの名無しさん
08/08/28 02:27:59
ええー

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

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

ruby - ?

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

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

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

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

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

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

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

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

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

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

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

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

331:デフォルトの名無しさん
08/08/28 22:36:41
>>326,>>327

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

332:デフォルトの名無しさん
08/08/29 06:33:27
小林と申します。

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

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

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

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


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


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

338:デフォルトの名無しさん
08/08/29 22:11:31
質問です

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

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

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

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

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

342:デフォルトの名無しさん
08/08/29 23:34:35
URLリンク(slashdot.jp) を思い出した

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

343:デフォルトの名無しさん
08/08/29 23:42:39
require 'open-uri'
require 'benchmark'
uris = %w(URLリンク(www.yahoo.co.jp) URLリンク(pc11.2ch.net) URLリンク(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:デフォルトの名無しさん
08/08/29 23:52:01
外部待ちがないぶん、スレッド使ったほうが全体としては速いな

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

346:デフォルトの名無しさん
08/08/30 01:55:11
変数名::メソッド

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

347:デフォルトの名無しさん
08/08/30 02:36:56


348:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/08/30 10:14:30
てゆーか実はダラダラしてるほうが行儀正しいって突っ込みは無いのかよ

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

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

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

352:デフォルトの名無しさん
08/08/30 18:06:25
刷新中の新リファレンスマニュアルはどう?
URLリンク(doc.loveruby.net)

353:デフォルトの名無しさん
08/08/30 18:08:17
と思ったけどリテラル一覧はないか。

これが見づらいということなんだよねぇ?
URLリンク(www.ruby-lang.org)

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

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

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

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



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

356:デフォルトの名無しさん
08/08/30 18:30:55
C#とかDとかrubyはリテラル多すぎw

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

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

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

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

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

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

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

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

360:デフォルトの名無しさん
08/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:デフォルトの名無しさん
08/08/30 22:41:54
>>360
挿入して削除したら、増えてないじゃん

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

363:デフォルトの名無しさん
08/08/30 23:15:09
再帰的に、というのがわからんが、
単純に、

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

と書けば?

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

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

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

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

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


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

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

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

368:デフォルトの名無しさん
08/08/31 01:25:17
よくよく考えると反復処理とは言えないようなことを、イテレータでやっちゃうもんだから
ややこしいんじゃないか

369:360
08/08/31 01:39:14
>>366,367,368
精進します。
とりあえず動くっぽいので動いてから
設計見直してみます。

370:デフォルトの名無しさん
08/08/31 02:18:00
>>368
なんかそんなかんじするね

arr = [1]
while !arr.empty?
 elem = arr.shift
 value = somefunc(elem)
 unless value.nil?
  arr << value
 end
end

わかんねーや

371:デフォルトの名無しさん
08/08/31 03:32:49
設計とか言う言葉を使うレベルじゃないと思うんだけど?

372:デフォルトの名無しさん
08/08/31 07:06:42
#! ruby -Ks

s1="あいう"
p s1.length

ar=s1.split (//)
p ar.length

日本語文字数を計算するのはコレしかないんですか?

それと、size/lengthは何か違いがあるんですか。
内部の実装で、sizeの方がsizeof (byte) * count
lengthの方が自動で str.split(//).size みたいな遅延評価
とかになってないんでしょうか?

373:デフォルトの名無しさん
08/08/31 07:57:05
>>372
jcodeをrequireしてjsize/jlength
内部の実装は知らんがsize/lengthは同じだろ

374:デフォルトの名無しさん
08/08/31 14:23:42
ruby-1.8.7-p72/string.c
rb_define_method(rb_cString, "length", rb_str_length, 0);
rb_define_method(rb_cString, "size", rb_str_length, 0);

再定義しない限り、Cのレベルで実体は同じ処理って事だ。


375:デフォルトの名無しさん
08/08/31 15:16:59
includeのたびに新しく定義しなおすのはイケてない。
module A
 module ClassMethods
  def hoge
   puts 'Hoge'
  end
 end
 extend ClassMethods
 def self.included(m)
  super
  m.extend(ClassMethods)
 end
end
というのが定番。


376:デフォルトの名無しさん
08/08/31 15:26:16
%w[A Z AA IV].map {|s| s.downcase.succ.tr("a-z", "1-9a-z").to_i(26)} # => [1, 26, 27, 256]

377:デフォルトの名無しさん
08/08/31 15:31:10
すまん、アンカーつけ忘れた。
>>375>>252
>>376>>277


378:デフォルトの名無しさん
08/08/31 21:31:49
初心者なんですが質問です

処理を書くとき、classにした方が素敵ですか?

イテレータはeachの繰り返しにしか使ってないのですが
他に便利な使い方はありますか?


379:デフォルトの名無しさん
08/08/31 21:46:40
> classにした方が素敵ですか?
メソッドにしないと非常にかっこ悪い

オブジェクト指向におけるクラスの概念はわりと高潔なものだが、
Rubyでは「処理をまとめてnewメソッドでスタートさせるもの」でもいいと思う
特に初心者のうちはクラスの使用条件というものについてうだうだ悩むのは無駄
てきとーにまとめて便利に使いながら自分で考え方見つければいい

あと、eachは基本だが、mapとfind_allの使用頻度と便利度は異常なので、
EnumerableやArrayクラスのメソッドはなるべく早く把握して適宜調べて使えるようになるといい

380:デフォルトの名無しさん
08/08/31 22:08:58
>>378
>処理を書くとき、classにした方が素敵ですか?
基本的にはclassにした方が素敵
どこからどこまでをclassにするかは、プログラムの目的や個人の趣向などによる

慣れないうちは設計が難しいので
分かりやすいデータのまとまりを、class化することから始めるのがオススメ
掲示板の1記事をArticleクラスにするとか

381:デフォルトの名無しさん
08/08/31 22:15:48
irb> def h(*p) ; p p.class; end
irb> h(1)
Array
irb> h(1=>2,3=>4)
Array

うわー困るうううっていうかめんどくさいいいい

382:デフォルトの名無しさん
08/08/31 22:20:13
>>378
繰り返しじゃないから厳密にはイテレータの話じゃなくなるけど
IO#openみたいに後始末を自動でしたいときにも便利

383:デフォルトの名無しさん
08/08/31 22:22:21
>>382
それ関係ないだろ
単にensure節の効果だ

384:デフォルトの名無しさん
08/08/31 22:22:48
メソッドもクラスもしくはクラスもメソッドだったらいいのに

385:デフォルトの名無しさん
08/08/31 22:32:32
たかがメソッド実行するたびに new する言語なんて遅くてやってられねえぞ

386:デフォルトの名無しさん
08/08/31 22:40:10
>>381
def method(*para) は引数がまず配列になるからな
キーワード引数風ハッシュの処理するのもけっこうめんどくさい
なんかうまいライブラリとかないもんかね

387:デフォルトの名無しさん
08/08/31 22:55:49
>>381
def h(a, *b) でいいんじゃないの?

388:デフォルトの名無しさん
08/08/31 23:52:11
>>386
ActiveSupportを使うと、*argsで受けて、options = args.extract_options!


389:デフォルトの名無しさん
08/09/01 01:48:09
feed-normalizerってどうですか?
検索してもほとんど情報が出てこないんですが

390:デフォルトの名無しさん
08/09/01 02:41:35
perlおぼえたあと、
PHPとRubyでは、
どっちを学んだら相性いいですか?

391:デフォルトの名無しさん
08/09/01 03:52:48
>>390
そりゃここじゃなくてperlのスレで聞きなよ
その時は「相性」という言葉を、どういう意味で使ってるのかも添えといた方がいい

392:デフォルトの名無しさん
08/09/01 06:55:48
perlおぼえたら、perlを使うんじゃないの?まずはプログラムやりたいみたいだし、簡単だからVB.NETやるといいよ。

393:デフォルトの名無しさん
08/09/01 08:21:08
んなもんなんのためにPerl覚えたかによると思うが。
趣味だってんなら好きにしろ

394:デフォルトの名無しさん
08/09/01 08:47:10
>>390
WebやりたいならPHP、小物アプリならRuby
本格的アプリならJavaやC#

395:デフォルトの名無しさん
08/09/01 10:32:08
それ、全部VBでいいんでない?

396:デフォルトの名無しさん
08/09/01 10:46:23
全部common lispでできるよ

397:デフォルトの名無しさん
08/09/01 10:58:01
>>390
順番に意味はない。

398:デフォルトの名無しさん
08/09/01 11:11:56
>>394
ぜんぼ覚えるの大変だなw
C++は習得できなかったからないの?
JRubyがあるから、今のうちにJavaかな。

399:デフォルトの名無しさん
08/09/01 19:05:30
サーバーサイドC++ってごっつすぎだろ

400:デフォルトの名無しさん
08/09/01 20:47:46
>>390
結論からいうとPythonを覚ればそれでなんでも出来る。
軽くて速くてソースが美しいPython。文書も豊富でライブラリも充実してるPython。
仕様はかっちり、世界規模で開発されているPython(Google, MS, Yahoo!, etc.)

オープンソース系ならほぼもうPythonが事実上の標準言語になってる。

日本だけで閉じこもってて、遅くてソースが汚くて開発もいい加減なRubyとかやっても
無駄に終わる可能性があるよ


401:デフォルトの名無しさん
08/09/01 21:36:57
ソースが美しい・汚いとは、例えばどういうソースのことだ

402:デフォルトの名無しさん
08/09/01 21:39:56
読み難い、読み辛いって読み替えればいいんじゃね?

403:デフォルトの名無しさん
08/09/01 21:54:31
どうしても分からないことがあります。

hash = Hash.new([])
array_a = [1, 2, 3]
array_b = [:a, :b, :c]
array_one.each do |a|
  array_two.each do |b|
    hash[b] << a
  end
end
hash # => {}

でhashに値が入らないのは何故でしょうか?
{:a=>[1,2,3], :b=>[1,2,3], :c=>[1,2,3]}
となってほしいのですが。一方、下はOKです。

hash = Hash.new(0)
array_a = [1, 2, 3]
array_b = [:a, :b, :c]
array_one.each do |a|
  array_two.each do |b|
    hash[b] += 1
  end
end
hash # => {:a=>3, :b=>3, :c=>3}

404:デフォルトの名無しさん
08/09/01 21:57:34
あーしまった。変数書き間違った。訂正します。

hash = Hash.new([])
array_a = [1, 2, 3]
array_b = [:a, :b, :c]
array_a.each do |a|
  array_b.each do |b|
    hash[b] << a
  end
end
hash # => {}

hash = Hash.new(0)
array_a = [1, 2, 3]
array_b = [:a, :b, :c]
array_a.each do |a|
  array_b.each do |b|
    hash[b] += 1
  end
end
hash # => {:a=>3, :b=>3, :c=>3}

???

405:デフォルトの名無しさん
08/09/01 21:59:23
読みやすいかどうかなら、記号が多いよりもJavaやC#のように長いメソッド名のほうが読みやすいんじゃないの?
もう、パイソンと関係ないけおd

406:デフォルトの名無しさん
08/09/01 22:08:05
 [:a, :b, :c] 
は何か意味あるの?

407:デフォルトの名無しさん
08/09/01 22:10:44
>>406
ないです。単にシンボルの方がタイプ数が少ないという理由です。

408:デフォルトの名無しさん
08/09/01 22:13:16
>>404
カッコ付きのHash.newは、該当キーがなかったときにその引数オブジェクト
自体を返す。つまり、

x = []
hash = Hash.new(x)
each/each
if hash.has_key?(b)
hash[b] << a # ここには絶対来ない
else
x << a
end
end/end
みたいな感じ。

たぶんやりたいことは、ブロック付きのnewで
hash = Hash.new {|h, k| h[k] = [] }
じゃないかな。該当キーがなかったときに、
新しく空の配列を作って hash に代入する。


409:403
08/09/01 22:29:06
> たぶんやりたいことは、ブロック付きのnewで
> hash = Hash.new {|h, k| h[k] = [] }
> じゃないかな。該当キーがなかったときに、
> 新しく空の配列を作って hash に代入する。

その通りなんですが、
x = Hash.new([])
x[:a] << 1
x[:b] << 2
x # => [1, 2]
これは大丈夫なのに、何でだろうと思って。


410:404
08/09/01 22:32:02
あーすみません。また書き間違った上に、なんか根本的に誤解してる>自分
出直してきます。

411:デフォルトの名無しさん
08/09/01 22:41:51
>>407
タイプ数が少ないって何のこと?

412:デフォルトの名無しさん
08/09/01 22:42:16
x = Hash.new([]) # だいたい x = Hash.new; x.default = [] に同義
>> x[:a] << 1
=> [1]
>> x
=> {}
>> x[:b] << 2
=> [1, 2]
>> x
=> {}
>> x.default
=> [1, 2]


413:403
08/09/01 22:50:04
ほんといろいろすみません。

>411
文字列じゃなくシンボルを使った理由を聞かれているものと勘違いしました。

>412
なるほどやっと分かりました。
というか、探したらちゃんと書いてあった・・・orz
URLリンク(www.ruby-lang.org)

414:デフォルトの名無しさん
08/09/01 23:22:22
>>413
rubyのhtml help入れれ

415:デフォルトの名無しさん
08/09/02 03:07:58
パイトンはやったことないからわからんなぁ。

416:デフォルトの名無しさん
08/09/02 17:09:52
Loggerでログファイルを毎日Rotateさせようと思ったんだけど

>> require "logger"
=> true
>> log = Logger.new("foo.log", 'dairy')
=> #<Logger:0x33fe50 ...以下略>
>> log.info "foo"
=> true
>> log.info "foo"
Logger::ShiftingError: Shifting failed. 'foo.log.20080902' already exists.
>> log.info "foo"
Logger::ShiftingError: Shifting failed. 'foo.log.20080902' already exists.

ログを出力しようとするたびに ShiftingError が出るんだけどこれって何の冗談?


うちの環境は↓
$ ruby -v
ruby 1.8.6 (2008-03-03 patchlevel 114) [universal-darwin9.0]


417:デフォルトの名無しさん
08/09/02 17:11:21
infoってメソッド名がおかしいんだよ
writeに改名しろ

418:416
08/09/02 17:17:46
logger.rbを見たら 'dairy' じゃなくて 'daily' だった.あー恥ずかしい.
しかし引数間違っててもスルーって不親切だよなあ


419:デフォルトの名無しさん
08/09/02 17:21:31
ruby厨きめえwwwwww
これからはpythonの時代だろks
うぇwっうぇwwwww

420:デフォルトの名無しさん
08/09/02 17:33:45
Rubyだけ使ってるとでも思ってるのかね

421:デフォルトの名無しさん
08/09/02 17:34:42
煽っているようでちゃんとsageているところに
育ちの良さがにじみ出てしまっているな

422:デフォルトの名無しさん
08/09/02 17:37:31
>>420
そうじゃないと都合悪すぎるだろ
やろうと思えば複数言語の比較検討ができるとか断じてあってはならない

423:デフォルトの名無しさん
08/09/02 17:41:19
釣れますか?

424:デフォルトの名無しさん
08/09/02 17:47:22
結局rubyなんてwebProgでしかないし、pythonのほうが将来がある

425:デフォルトの名無しさん
08/09/02 18:27:19
ルビみたいにメインストリームの横に張り付いているちっぽけな貧乳は今後成長する可能性も2.3%くらいあるが、
醜く大きくなったおっぱいそんは後は垂れるだけ。

426:デフォルトの名無しさん
08/09/02 18:43:07
だっておwwwwww

427:デフォルトの名無しさん
08/09/02 18:57:20
どうでもいいけど最近貧乳の良さが分かってきた

428:デフォルトの名無しさん
08/09/02 20:16:15
俺は最初から貧乳が好き

429:デフォルトの名無しさん
08/09/02 20:36:26

もともと巨乳好きだが最近貧乳にも興味あり

430:デフォルトの名無しさん
08/09/02 21:07:59
何つうか、適材適所を知らない奴はPythonあたりでもダメなんだろうな。

431:デフォルトの名無しさん
08/09/02 21:13:21
Pythonの威を借るDQN

432:デフォルトの名無しさん
08/09/02 21:31:36
虎ってか蛇か

433:デフォルトの名無しさん
08/09/02 22:32:23
恋するプログラムを読み始めたんだけど、2-2最初のサンプルからつまづいた・・・
「ワンツー」と日本語が入力できないんですが、どうしたらいいですか?
半角英数しか使えないよ

434:デフォルトの名無しさん
08/09/02 22:35:35
コマンドプロンプトならAltを押しながら、半/全キーだったかな

435:デフォルトの名無しさん
08/09/02 23:04:50
企業や学校の場合はconime対策でそもそも日本語入力機能が無効にされてることも稀にあるので注意だ

ちなみにタイトルバーを右クリックすると編集用のショートカットキーコンボがわかるので利用するといい

436:デフォルトの名無しさん
08/09/03 00:17:02
下手に最初から日本語使って予期せぬエラー増やすよりも
慣れるまでは全部半角英数でやるのが無難

437:デフォルトの名無しさん
08/09/03 00:17:24
>434
ありがとう。解決しました。
>435
よくわからない。
範囲指定(K)ってあるけどシフト、ctrl、altと組み合わせても発動しないし

というかセーブする方法がまだ出てきてなくてこの先生きのこれるか心配です

438:デフォルトの名無しさん
08/09/03 00:20:43
俺たちの先生は、キノコだったのか!!

439:デフォルトの名無しさん
08/09/03 01:09:46
>>437
えーとだな、コマンドプロンプト(DOSプロンプト)は、Alt+スペース で右クリックメニューの1階層目が開く
で、Eを(単独で)押すと編集メニューがさらに開いて、貼り付けとかが選べる
たとえば、クリップボードにあるURLを貼り付けたい場合は「Alt+スペース、E、P」の順にリズミカルに押せばいい

で、範囲選択だが、これは「Shift+方向キー」でコピー元の範囲選択を矩形で開始できる機能だ
コピーしたい部分を選択し終わったらEnterを押すと、それまでの反転部分が改行つきでクリップボードに入る
ぶっちゃけ使用頻度は高くないし、マウスで範囲を選んでEnterすれば同じことなのでありがたみも薄い

440:デフォルトの名無しさん
08/09/03 01:21:06
rubyのCPANはどこにあるの?

441:デフォルトの名無しさん
08/09/03 01:27:58
CPANはPerlの(以下略

Rubyforgeをgemコマンドで利用するのがデファクトスタンダード
CPANほどには洗練されていないし、CPANほどには無闇大量に登録されてない(そもそも少ないというかPerlが異常)

Windows版Rubyなら、最初からgemコマンドが使えたはず
LinuxとかBSDとかの場合はrubygemsのような名前のパッケージがあると思われ

442:デフォルトの名無しさん
08/09/03 01:31:52
サイトとしては存在してないってこと?
ブラウザでみれるようなの。

443:デフォルトの名無しさん
08/09/03 01:32:39
ああサイトはあるけど
利用の形態はgemコマンドということね。

444:デフォルトの名無しさん
08/09/03 01:33:57
>>442
URLリンク(rubyforge.org)
# rubyforgeでぐぐれ、と書こうとしたが、ぐぐったらトップが出てこなかった。

445:デフォルトの名無しさん
08/09/03 09:10:12
拡張ライブラリを作ろうと思ったんだけど
解説してるサイトに書いてある「$ make」の意味が分かりません。


446:デフォルトの名無しさん
08/09/03 09:16:33
>>437
xyzzyでshell起動すると、エディタ画面でコマンドプロンプトが使えるよ。

Alt+x → 'shell' と打ってリターン

447:デフォルトの名無しさん
08/09/03 10:15:09
>>445
makeコマンドを実行しろってこと。

448:デフォルトの名無しさん
08/09/03 11:06:53
まあCとRubyでのプログラミングはできるわけだし、それくらいの推測はできて欲しいよな

make は UNIX コマンドだ(語弊あり)
UNIXやらLinuxやらにはたいてい入ってるが、Windowsには普通入ってない
make だけをどっかからインストールするといいが、
プロンプトが $ であるところから見て、そのサイトはWindows考慮してないんじゃないかとも思う

449:デフォルトの名無しさん
08/09/03 11:20:50
まぁ、要するに仮想マシンかなんかにLinux(語弊あり)を入れた方がいいってこった

450:デフォルトの名無しさん
08/09/03 11:22:39
Linux以外でRuby使う奴って馬鹿だろ?

451:デフォルトの名無しさん
08/09/03 11:27:27
ううん そうでもないよ

452:デフォルトの名無しさん
08/09/03 13:28:27
FreeBSDで使ってますが何か?

453:デフォルトの名無しさん
08/09/03 13:54:40
BSDは基本でしょwww

454:デフォルトの名無しさん
08/09/03 14:08:53
>>453
kwsk

455:デフォルトの名無しさん
08/09/03 14:12:44
いや、今はMacOSバージョンXでしょ。
実質的にBSDの商用GUIバージョンのヂストリブーションだしwww
MacOSXはINTELもあったんじゃなかったか?

456:デフォルトの名無しさん
08/09/03 14:17:51
つまんねえ

457:デフォルトの名無しさん
08/09/03 14:18:01
本物のハッカーはソラリスじゃないの?x86あるし無料だし。
FreeBSDの設定とかよりソラリスをHPで紹介してるのとか凄くない?

458:デフォルトの名無しさん
08/09/03 14:30:33
ブリヂストン?

459:デフォルトの名無しさん
08/09/03 14:30:35
>>456
変なの居ついたよな
当人はスレに参加しているつもりなのだろう

460:デフォルトの名無しさん
08/09/03 14:58:43
そうやって排他的だとperlみたいにコミュニティーが宗教っぽくになっていくと思わないか?

461:デフォルトの名無しさん
08/09/03 15:01:31
rubyはもともとモルモン教なんだが?

あの貧困層の宗教で有名なモルモン教だからrubyの洗脳はperlよりもひどいよ

462:デフォルトの名無しさん
08/09/03 15:02:44
実際のところ、モルモンも創価学会とドッコイだろww

463:デフォルトの名無しさん
08/09/03 15:11:24
perlと比べれば、rubyは後発だけあって現状の要求をみたしている言語としての出来はいいんだけどな。

464:デフォルトの名無しさん
08/09/03 15:21:48
>>460
どっちかってえと公平に受け入れよとわめくほうが宗教っぽい

465:デフォルトの名無しさん
08/09/03 15:35:52
惑星ソラリスは破壊されたんじゃ?

466:デフォルトの名無しさん
08/09/03 17:56:58
おメーラいい加減にせえよ
スレ違いにもほどがあるw

467:デフォルトの名無しさん
08/09/03 20:40:34
すいまメ~ン!

468:デフォルトの名無しさん
08/09/03 21:18:20
SonOS 4.1あたりまでの人にとってはSolarisはまがい物なんじゃなかろうか。


469:デフォルトの名無しさん
08/09/03 21:40:09
>>900までこのスレはOSの話!
Rubyは別でどうぞ(違

470:デフォルトの名無しさん
08/09/03 22:57:18
rubyでExcelを読み込みたいのですが、日本語が化けてしまいます
かなり調べてみたんですが、何が悪いのかわからないです。。不適切な箇所を指摘してもらえないでしょうか

require 'win32ole'
class Excel_test2

def getExcel
xl = WIN32OLE.new('Excel.Application')

book = xl.Workbooks.Open(ファイルの絶対パス)
begin
book.Worksheets.each do |sheet|
sheet.UsedRange.Rows.each do |row|
record = []
row.Columns.each do |cell|
record << cell.Value
end
puts record.join(",")
end
end
ensure
book.Close
xl.Quit
end
end
Excel_test2.new().getExcel
End

Rubyのバージョンは1.8.6
WIN32OLEのバージョンは0.7.2と出てました

471:デフォルトの名無しさん
08/09/03 23:10:11
日本語が化けるだけならwin32oleはたぶん関係ないな

472:デフォルトの名無しさん
08/09/03 23:18:31
「Excelを読み込む」という表現に危機感を感じる
ダブルクリックするとExcelが起動するからExcelだと思ってる人が日本中に10万人くらいいるがその類かもしれん
csvファイルやtsvファイルも読めるわけで、端末文字エンコードとあってないファイルの場合は当然化けるぞ

473:デフォルトの名無しさん
08/09/03 23:29:19
どんな日本語がどう化けたか書きなさいって

474:デフォルトの名無しさん
08/09/03 23:43:56
>>473
発生日 名称 マグニチュード 死者・不明者 死者の有無
              ↓
, , } O j ` [ h, ҁE s , ҂̗L
こういう感じです

475:デフォルトの名無しさん
08/09/03 23:51:50
そうして>>471-472を無視する

476:デフォルトの名無しさん
08/09/03 23:54:21
単に文字エンコードやExcelが扱うファイルの知識がないんだろう
Ruby以前の問題だな
win23oleはRubyほとんど関係なくて、Windowsプログラミングの知識が大量に要るぞ

477:デフォルトの名無しさん
08/09/03 23:59:14
なんにも知らないくせにw

478:デフォルトの名無しさん
08/09/04 00:03:00
煽ったってこれ以上は別に出ないぞ

479:デフォルトの名無しさん
08/09/04 00:04:04
WIN32OLE.codepageを変えてみるとか

480:デフォルトの名無しさん
08/09/04 00:10:51
読めてる以上、文字コードだけの問題だしなあ
まさか本当にUTF-8のCSVファイルだとかそんなオチだったり

481:デフォルトの名無しさん
08/09/04 00:11:18
FreeBSD使ってる人は、やっぱりSunOSも知ってる人なんじゃないの?
その流れでソラリスに辿り着くか、派手好きはMacOSXかなってことなんだけど。
デビアンはイマイチゴチャゴチャだし、オープンで英語得意なら、やっぱFreeBSDのままかなw
そういえば、物理学科のハッカー先生元気かな…

482:デフォルトの名無しさん
08/09/04 00:15:58
MacやLinuxは女々しい奴か宗教家ぶれの奴しかいないけど、BSDは本物のハッカーしかいない。
別板にある犬小屋スレ見ればわかるだろw
windoはエサ待ち状態のサルばかりか?

483:デフォルトの名無しさん
08/09/04 00:18:41
とりあえず Excel 2007 で直接日本語を入力して xls および xlsx 両方で保存した上で
>>470 をコマンドプロンプトからそれぞれ実行したが、特に文字化けはしなかった。
cell.Value から返るのは Shift_JIS だから、あとは表示環境の問題かと。

484:デフォルトの名無しさん
08/09/04 00:20:46
>>479
WIN32OLE.codepageをUTF-8にしてみたら正常に出力されました
ありがとうございます

文字コードが正直さっぱりわかってないのでもっと勉強します。。

485:デフォルトの名無しさん
08/09/04 00:24:46
スクリプトがUTF-8なのかね

486:デフォルトの名無しさん
08/09/04 00:30:54
おお、勘でアドバイスしたら当たったぜ

487:デフォルトの名無しさん
08/09/04 01:29:06
エスパー覚醒おめ

488:デフォルトの名無しさん
08/09/04 08:26:31
>>481
BSDが染みついた人ならソラリス(2以降)にたどり着いたらUターンするだろJK


489:デフォルトの名無しさん
08/09/04 09:09:46
今の時代x86で十分だし、そうするとwinかbsd/linuxでしょ。
3Dの凄い計算とか気象予測みたいなのが必要なわけでもないし。
ただ、PCを部屋に5台以上おくとクーラーとか空調もやんないといけなくなるし、PC技能とは別問題に遭遇する。

490:デフォルトの名無しさん
08/09/04 09:14:26
じじいは隔離スレにカエレ

491:デフォルトの名無しさん
08/09/04 09:55:38
>>490
当人はスレに参加しているつもりなのだろう

492:デフォルトの名無しさん
08/09/04 10:06:20
rubyはモルモンじゃなくて、エホバじゃなかったか?
あの、デザインパターン本のキリスト教の人と同じで。

493:デフォルトの名無しさん
08/09/04 10:07:57
モルモンです。

494:デフォルトの名無しさん
08/09/04 10:26:08
結城さんはモルモンなの?

495:デフォルトの名無しさん
08/09/04 10:26:38
プロテスタントのクリスチャンというのが怪しいよな
日本でカトリック以外なんてエホバか統一教会だし

496:デフォルトの名無しさん
08/09/04 12:21:27
rubyは型の宣言は不要なんですけど、実際はメソッド呼び出した後、何の型が戻るのか分からないと
次の操作が出来ないので、なんだかやりにくくないですか?
特に正規表現で引数とか戻り値がいろいろあるので、結局はOOだと型の明示が必要なのかなと思っちゃいます。エラーでも型の注意が入るし。

とにかく =~ とか $~ の旧世代のレガシーはもうOOじゃないし、廃止して欲しい。

497:デフォルトの名無しさん
08/09/04 12:22:13
と思いませんか?

498:デフォルトの名無しさん
08/09/04 12:24:23
javaでも使ってろよ

499:デフォルトの名無しさん
08/09/04 12:29:09
配列に正規表現がマッチするわけないし
数値に正規表現がマッチするのは変だろ
result = str.scan(re) でいちいち配列の配列が返ってくるのはなんか違わね? というのは確かに連綿と指摘はあるが
まあそれなら re.match(str) で MatchData オブジェクト使えばいいんじゃねという話ではある

500:デフォルトの名無しさん
08/09/04 12:37:48
その辺りはマニュアルにしつこく書いとくと、日本人ならrubyに流れるんじゃないですか?
=~ [] MatchData String Regexp とかどれなのか覚えて整理するのに1日使ったんで。
perlよりはまとまってるみたいですけど、perl awkのしがらみでもあるんでしょうかw
触ってみた感想は、Javaみたく、MatchDataでまとめていいんじゃないかな。

501:デフォルトの名無しさん
08/09/04 12:39:24
というか、連綿とかムズカシイ言葉知ってますねww

502:デフォルトの名無しさん
08/09/04 12:54:31
開発者たちは、数学知ってるんだろうし、多価返却はダメだってことを分かってると思うんですけど。
既存の=~ $~ とか、class Regexpはそのままで、新規にruby regexpと称して戻りは全て1つのクラスで返るようにrubyのAPIとして新しくクラスとメソッド名を設計すればいいんじゃないですか?

あれこれクラスにまたがっていて、まったく意味不明でした。

$~はスレッド・ローカルみたいですけど、OO的というかスレッド的に馴染まないというかどうかと…

503:デフォルトの名無しさん
08/09/04 13:03:28
>>502
お前実際にはスクリプト書いてないだろ

504:498
08/09/04 13:05:00
>>502
っ【ソースコード】
っ【直談判】
っ【>>499

なんかスレのターゲットから超えてる気がするw

505:デフォルトの名無しさん
08/09/04 13:09:34
>>503,504
いや、別に初心者じゃないんでw

506:デフォルトの名無しさん
08/09/04 13:14:11
以上、壮大な釣りでした。

507:デフォルトの名無しさん
08/09/04 13:20:42
あと意味不明だったのは、
p => Object.inspect
puts => to_a => to_s
print / printf => to_s

だったかな。コレもよくオーバーライドしたり参照するんで、マニュアルによろしくですです。

ほとんど
for line in file : p line end
while line=file.gets : p line.chomp!.strip! end
しか使ってませんよ。結局やってることはOOじゃないし、eachとかいちいちAPIみるの面倒でしょw

508:デフォルトの名無しさん
08/09/04 13:34:36
リテラルも多いし、返却値もいくつものクラスにまたがっていて、さらにデバグの出力先もいろいろあって、忙しい言語ですね。
これでも十分複雑なんで、半年も触らないときっと忘れちゃいますよ。
javascriptの方はプロトタイプ言語で少し概念が違うんですけど、ほぼジャバと同じだし半年しても忘れることはないでしょうな。
OOとかクラスについてはjava使えるんで、regexpは、jsでIO使えるならjsでいいかなってのが感想ですw

509:デフォルトの名無しさん
08/09/04 13:56:38
じゃあJavaScriptスレに行ってください。
このスレは2度と見る必要ないですよね?

510:デフォルトの名無しさん
08/09/04 14:20:33
本屋で見かけた初めてのRubyが第3刷だった件について

511:デフォルトの名無しさん
08/09/04 15:00:02
よい本が売れるのは問題ない
店によっては入った週に売り切れたりするのは立ち読みしにくいのでやめてほしい

512:デフォルトの名無しさん
08/09/04 19:22:54
>>500
>=~[]MatchDataStringRegexpとかどれなのか覚えて整理するのに1日使ったんで。

StringとRegexpをマッチさせたらMatchDataが作成される、というだけで、
何も難しくないと思うんだけど、どのへんがわかりにくかったですか?

>触ってみた感想は、Javaみたく、MatchDataでまとめていいんじゃないかな。

Javaもjava.lang.Stringとjava.util.regex.Patternとjava.util.regex.Matcherを使っているから同じだと思うんですけど、どこが違うと思いますか?

>>502
>既存の=~$~とか、classRegexpはそのままで、新規にrubyregexpと称して戻りは全て1つのクラスで返るようにrubyのAPIとして新しくクラスとメソッド名を設計すればいいんじゃないですか?

これは意味がよくわからないんですけど、どういうクラスとAPIを提案しているのか、もっと詳しく説明してみてください。
もしかしたら、すごくいいクラス設計が提案されているかもしれないので。
よろしくお願いします。


513:デフォルトの名無しさん
08/09/04 19:28:04
>>507
>あと意味不明だったのは、
>p=>Object.inspect
>puts=>to_a=>to_s
>print/printf=>to_s
>
>だったかな。コレもよくオーバーライドしたり参照するんで、マニュアルによろしくですです。

この書き込みのほうが意味不明。どれもマニュアルにそのまんま書いてあるんだけど、マニュアルをどうして欲しいの?

514:デフォルトの名無しさん
08/09/05 01:20:25
pack/unpack の指定も記号的で意味不明なんで、一文字で略さないで、ちゃんと定数やエナムにして
意味を含めてくれませんか?パブリックなライブラリなわけで、自分仕様のライブラリじゃないでしょw

パールのしがらみをもったままなんでしょうけど、このままだと第2のパールに成り下がるだけじゃないですかね。
regexpは別言語でもできるんですけど、ネイティブへのアクセスは、POSIXの機能が結構使えるルビーが(グルーとしては)一番かなって思うんですけど、この辺りどうでしょうか?


515:デフォルトの名無しさん
08/09/05 01:22:10
それと、クラスの設計はやっつけ仕事じゃなくて、普通は後から変更できないんで、数年かけてちゃんと設計してもらって、パールの猿真似ばかりやってないで、仕様をまとめてもらった方がいいですよ。
ルビーには特異クラスって業もあるんですけど、初めのライブラリを新規に用意するのは、そういうプロトタイプ的な機能に頼って期待する以前の問題じゃないかなと思います。

516:デフォルトの名無しさん
08/09/05 01:22:11
>>514
お前実際にはスクリプト書いてないだろ
マニュアル逐次読みしながら論う釣りは帰れ

517:デフォルトの名無しさん
08/09/05 01:31:15
自 分 で 作 れ

518:デフォルトの名無しさん
08/09/05 01:48:04
>>516-517
コードを書こうとして、packの機能を使おうとしたら「複雑すぎw」てことじゃないの?まあ、サルにはこの気持ちは一生理解できないんだろうけどw

519:デフォルトの名無しさん
08/09/05 01:53:41
pack/unpack は機能が豊富だから独立したクラスにして欲しい。1.9のfutureで頼んます。

520:デフォルトの名無しさん
08/09/05 01:58:07
packはあれはUNIXそのままが一番わかりやすいしなあ
正規表現が全くオブジェクト指向じゃないとか
sprintfやstrftimeのフォーマット文字列が意味不明だと文句言われるのと
割と似ていると思う

521:デフォルトの名無しさん
08/09/05 01:58:09
>Ruby 1.9.1の仕様は9月25日で凍結されます
急げ

522:デフォルトの名無しさん
08/09/05 02:10:16
急いでないんで、1.9.8まで待ちますw

printfはインタプリタなんで、packの引数による機能指定と、全然関係ないと思うんですけど?

APIも仕様も熟読しないような、ナンチャッテさんはその程度ですかw

523:デフォルトの名無しさん
08/09/05 02:16:40
>>520
るびまで青木さんが、
packの書式なんて誰も覚えてねーよバーカバーカとか書いた上で
自前で簡単なDSLを定義してたようなw

524:デフォルトの名無しさん
08/09/05 02:24:10
なんか、rubyが旧世代のダメ出しされてるってかんじーww


525:デフォルトの名無しさん
08/09/05 02:41:14
>printfはインタプリタ
詳しく説明願います

526:デフォルトの名無しさん
08/09/05 02:45:10
あなたが勉強不足なだけなんでしょうな。

527:デフォルトの名無しさん
08/09/05 02:55:19
初心者スレで粋がるのがかわいいじゃないか

528:デフォルトの名無しさん
08/09/05 02:58:22
仕様に対する不満はスレ違いだ。本スレかアンチスレにでも行け。
つーか、メーリングリストで言えよ…

529:デフォルトの名無しさん
08/09/05 02:59:55
メーリングは、「あーでも、こーでも」いってて皆でモルモンしてるじゃんw

530:デフォルトの名無しさん
08/09/05 03:03:46
API君の日本語が意味わからなくて、対応に困ります

531:デフォルトの名無しさん
08/09/05 03:05:22
本スレってあそこか。
業界通っぽくしてるサルばかりじゃないの?
所詮下請けにかわりないし、愚痴ってるだけで、BSDじゃないけどサル小屋かなww

532:デフォルトの名無しさん
08/09/05 03:06:15
日本語でおk

533:デフォルトの名無しさん
08/09/05 03:10:37
>>529-532

はいはい。IPAが男女共同参画会議に出席するようですよ。

534:デフォルトの名無しさん
08/09/05 03:12:38
ボクちゃんは賢いですねー
おりこうさんだからv8でもいじって、遊んでましょーね

535:デフォルトの名無しさん
08/09/05 03:15:12
>>527
そうやって羨ましがってばかりいないで、少しはプログラミング言語 Ruby に貢献したらどうよ?
どうせおまえみたいな無能は、指くわえてみてるだけじゃないの??

536:デフォルトの名無しさん
08/09/05 03:18:12
IPAは税金ばっかり使って、結局フォントだけが成果物じゃん。もう国がサポートすることもないし、解散でいいよ

537:デフォルトの名無しさん
08/09/05 03:19:21
誰が何の話してるかわけわからんぞ

538:デフォルトの名無しさん
08/09/05 03:20:12
はいはい。ここは初心者スレなんで、愚痴は「サル小屋」でやってくださいましww

539:デフォルトの名無しさん
08/09/05 03:43:25
あのー、IPAでいいんで、漢字コンソール(KONのクローン)作ってもらえまんせか?
konが今となっては機能不足なので、freebsd入れずにwindows使う羽目になってるんですが。
英語には不自由はしてないんですけど、クライアントの送信とかログとかも含めて開いたファイルの中身が文字化けしたら何のファイルなのかさっぱりなんで、漢字端末よろしくです。

540:デフォルトの名無しさん
08/09/05 04:38:04
ジャバとかルビーとかパールとかカタカナ表記が流行ってるんですか

541:デフォルトの名無しさん
08/09/05 04:43:48
>>539
使ったことないけどjfbtermとか

542:デフォルトの名無しさん
08/09/05 12:09:44
jfbtermはポーツにあるみたい

543:デフォルトの名無しさん
08/09/05 12:19:21
konって何年前だよ。ほんと生きた化石みたいなやつだな。

544:デフォルトの名無しさん
08/09/05 12:21:30
konの表示は当時からしょぼかった・・・やっぱ資本の差かな・・・フォントの次はIPAさん、俺からも頼のんます

545:デフォルトの名無しさん
08/09/05 18:11:37
おっさんは引き際というものを知らんな

546:デフォルトの名無しさん
08/09/05 19:58:37
カタカナ表記で書いてる奴は基本的に釣りでしょ。

547:デフォルトの名無しさん
08/09/05 22:35:11
ルビー

548:デフォルトの名無しさん
08/09/06 00:30:31
>>514
>pack/unpackの指定も記号的で意味不明なんで、一文字で略さないで、ちゃんと定数やエナムにして
>意味を含めてくれませんか?
これは無理です。printf()の書式とおなじようなものだと考えてください。
あなたがprintf()の書式にも文句言う人だとどうしようもないですが。。。

>>515
>それと、クラスの設計はやっつけ仕事じゃなくて、普通は後から変更できないんで、数年かけてちゃんと設計してもらって、パールの猿真似ばかりやってないで、仕様をまとめてもらった方がいいですよ。

どうも正規表現あたりのクラス設計に不満があるようですが、どういう設計をお望みでしょうか。
String, Regexp, MatchData の3つがあるのは Javaでも同じですが、どこがわかりにくいですか?またどう変更してほしいのですか?

>ルビーには特異クラスって業もあるんですけど、初めのライブラリを新規に用意するのは、そういうプロトタイプ的な機能に頼って期待する以前の問題じゃないかなと思います。

言っていることが意味不明なので、わかりやすく書き直してください。


549:デフォルトの名無しさん
08/09/06 04:01:49
なんだこいつ?新手の荒らしか?

550:デフォルトの名無しさん
08/09/06 04:29:03
require/includeでクラスやモジュールを使いたいのですが、

ruby "-I c:\myruby\mylib" source.rb

とやってソース内部でrequire/includeとやってもロードされてないようです。
何が足りないんでしょうか?

551:デフォルトの名無しさん
08/09/06 04:51:35
>>548
おまえが無能だって事はよく分かった。

552:デフォルトの名無しさん
08/09/06 05:03:00
頭が良いが性格は悪い、というキャラを目指す奴の大半は
どっちも悪いキャラに終わるよな。

553:デフォルトの名無しさん
08/09/06 05:25:14
>>552
どれとどれが「どっちも」ってのなんだ?
これだけで、おまえが低学歴なのがよーく分かるw

554:デフォルトの名無しさん
08/09/06 05:45:12
目の前の文章の意味すらわからないのに、
目に見えない色んなことは次々と「わかっちゃう」のも
特徴の一つだね。

555:デフォルトの名無しさん
08/09/06 06:41:29
低学歴は夜間の大学を受験したらどうだ?学歴でバカにされるの嫌だろw

556:デフォルトの名無しさん
08/09/06 08:27:04
ロジックとかは経験でカバーできます。


557:デフォルトの名無しさん
08/09/06 08:34:40
>>552 カンベとかルビキチとか。

558:デフォルトの名無しさん
08/09/06 08:57:57
>>556
そうすると、経験でカバーできないのはなんでしょうか?

559:デフォルトの名無しさん
08/09/06 10:44:41
>>550
サーチパスにC:¥myrubyを追加して、そこからmylibをrequireするなら、
ruby -I C:¥myruby -r mylib source.rb


560:デフォルトの名無しさん
08/09/06 11:04:42
>>550
バックスラッシュは直後の文字をエスケープするから、
"c:\myruby\mylib" は c : \m y r u b y \m y l i b と解釈される

ruby -I "c:/myruby/mylib" source.rb

または

ruby -I "c:\\myruby\\mylib" source.rb

で動作するはずだ

スクリプト開始時の require 前に $LOAD_PATH 配列に "c:/myruby/mylib" という文字列を要素として追加してもよい
なるべく配列の先頭に入れるといいと思う

561:デフォルトの名無しさん
08/09/06 11:22:07
ご親切にありがとうございます。
 $: . push ("c:/myruby") ;
としてるんですけど、ソース1行目に、
 #! ruby -I "c:/myruby"
だと無理みたいです。

それと、ruby -help でみると、-Idirectory -rlib -Kcode とかなっていて、空白いるのかいらないのか不明だし、なんかヘルプの方が混乱しているみたいです。
公式レファレンスの説明も1行あるかないかだし、やる気なくなりました。
BSDのインストールと日本語化が困難でやる気なくなって、vine linuxで済ますアレと同じ感覚ですw

あと、module Mymo とinclude/require関数とかも日本語だと説明不足で英語サイトだと著者の思想も込みで説明が詳しすぎて、結局モルモン思想はウザくてやる気が起きません。
rubyのコミュニティーは、rubyプラットフォームをツールとして広める気があるんのか疑っちゃいますw

562:デフォルトの名無しさん
08/09/06 11:27:24
関数とカッコの前後に空白どうとか言う警告を削除してもらえませんか?

 obj . push ( a , b )

じゃ言語としてダメでありサポートしないのか、それともいいのかハッキリしてもらえませんかねー
こんなところまでモルモン思想の押し付けをワーニングするのはもう止めませんか?ウザいんですけどw

563:デフォルトの名無しさん
08/09/06 11:34:32
>>561
スクリプト1行目のShebang行は規則に則った単なる文字列だ
シェルで実行されるわけではない
シェルと同じ動作をすることを期待されても困る

564:デフォルトの名無しさん
08/09/06 11:57:30
お前らが優しいのは十分わかったから、いい加減かまってちゃんの相手をするのはやめてくれ

565:デフォルトの名無しさん
08/09/06 12:02:05
ライブラリの設計が悪いんだろw

566:デフォルトの名無しさん
08/09/06 13:12:43
ここんとこ毎日初心者スレにくるところをみると、どこでも相手にされてないようだな。

567:デフォルトの名無しさん
08/09/06 13:15:47
というよりも、戻り値の型で

p nil==false # false

は勘弁して欲しいけど。
このスレのレベルだと、どうしてなのか分からないんだろうと思う。

568:デフォルトの名無しさん
08/09/06 13:17:36
ルビーは犯罪者も使ってるんですよ!刑務所の犯罪者たちにエサを上げないで下さい!!

569:デフォルトの名無しさん
08/09/06 13:22:22
本スレのITドカタたちよりは技術的な質問が多いな。あのスレはカスばっかりでもうダメだろ…

570:デフォルトの名無しさん
08/09/06 13:25:40
たしか…

571:デフォルトの名無しさん
08/09/06 13:40:21
>>566
おまえもスレに張り付いて、いったい何やってんだ?仕事もしてないんだろw

572:デフォルトの名無しさん
08/09/06 13:46:21
それが罵り言葉になる環境にいるなんて可哀想


573:デフォルトの名無しさん
08/09/06 13:46:56
土方は蔑称だから使っちゃダメだよ。

574:デフォルトの名無しさん
08/09/06 13:47:30
571は今日が土日だということを理解できていないらしい

575:デフォルトの名無しさん
08/09/06 13:47:49
宇宙大王の言い分
このスレ: 低学歴・無能の集まりなので分かってくれない
ML: モルモンなので分かってくれない
リアル: 大人は分かってくれない

アドバイス
あなたを分かってあげられるのはあなただけ。自分を大切にしてあげて。

576:デフォルトの名無しさん
08/09/06 13:52:49
はいはい。もう分かったから死ね

577:デフォルトの名無しさん
08/09/06 13:56:57
rubyを使うようなのはwebクーチャーとか言う職業の人たち、つまりITドカタでしょwwww
たーまにbsdとかも使ってるシステムの奥の方の人も居るけどwwwww
2chでIPAの愚痴を言うようじゃ、仕事も大したことやってないし、せいぜい雑用係のカス野郎ってことが良く分かるwwwwwwwwカスw

578:デフォルトの名無しさん
08/09/06 13:58:32
いや、IPAは無駄だろ。除法処理技術者の資格をもっていても、もっていなくても、別に金にならないし。

579:デフォルトの名無しさん
08/09/06 14:14:12
WEB開発とか雑魚だろ。しかも文系でどこにも就職出来なかったような雑魚だしな。

べつにrubyのCソースを追いかけてるわけでもないし、なんか生意気な奴が多いようだけど、雑魚だろw

いちど、みっちりCをやって、GCのソースとか見てみたらどうよ?雑魚ちゃんww

580:デフォルトの名無しさん
08/09/06 14:16:05
そんな雑魚相手に弱いものいじめしなくても…彼らは雑魚なりに一所懸命生きてるんだからさ……

581:デフォルトの名無しさん
08/09/06 14:19:16
>>340
いやいや、デンターシステマ超極細毛(かため)以外認めんぞw

582:デフォルトの名無しさん
08/09/06 14:23:01
僕だってれっきとしたWEBクリエーターだ!クリーチャーじゃないぞ!!

583:デフォルトの名無しさん
08/09/06 14:26:09

弱いものいじめ反対!

いつか必ず天罰が下るぞ!!




584:デフォルトの名無しさん
08/09/06 14:37:10
>除法処理技術者
煽りじゃなく「割り算のプロ」っぽくていいな。それ。

585:デフォルトの名無しさん
08/09/06 14:41:13
>>581
君、いつもつまんない

586:デフォルトの名無しさん
08/09/06 18:10:54
s="あい"#sjis
puts s.dump

dump以外に、
”あい”を文字コードの列(配列)にするのと、
その配列から”あい”(SJIS)に戻す方法はどうやるのでしょうか。

587:デフォルトの名無しさん
08/09/06 18:45:25
dumpのどのへんが不満? バックスラッシュが邪魔?
配列にならないところ? 数値が8ビット整数じゃないところ?

588:デフォルトの名無しさん
08/09/06 19:12:45
RUBY_VERSION >= "1.8.7" だったら
[*str.each_byte]
とかかな

589:デフォルトの名無しさん
08/09/06 20:02:53
あのーバイト列(特にバイト配列)からStringにするにはどうするんでしょうか?
packとかは無しですよw



590:デフォルトの名無しさん
08/09/06 20:04:01
dumpは、戻り値がStringなんでArrayじゃないし、たぶん外部用(serialization)じゃないですか?
なので、関数内部のローカルで処理する用途とは少し違います。

とくに、str[k]="あ"というかんじに出来るのないでしょうか?
結局ルビーは、パールと同じで日本語(多言語)対応じゃないしなんか使いにくいのでどうせなら、
jcodeでStringにアドオンなんかしないで組み込みクラスをrubyの方が用意したらどうですか?
class JapaneseString とかかな。

591:デフォルトの名無しさん
08/09/06 20:06:07

str.setJavaneseCharCodePointAt(index, "あ");

APIはこんなところでしょうか。

592:デフォルトの名無しさん
08/09/06 20:14:52
不覚にもJavaneseに吹いた

でも初心者スレを荒らすのは勘弁してね

593:デフォルトの名無しさん
08/09/06 20:20:11
javaを語る人はjavanese

594:デフォルトの名無しさん
08/09/06 20:39:48
いやいや、マジで困ってるんですが…
serializationは、dumpのStringはrubyだとtaint/untaintの腐ったレベルに影響あると思うんでdumpは外部用だと思います。
それでdumpは使えないので、他にsjis, euc, u16, u8とかの一文字をstrに追加できるセッターないですか?

595:デフォルトの名無しさん
08/09/06 20:49:09
matz.dump # ダンプ松本

596:デフォルトの名無しさん
08/09/06 20:58:56
Matzは神ですけど、matz は orz みたく凹んこで反省してるように見えませんか?

597:デフォルトの名無しさん
08/09/06 21:02:05
[*str.bytes]
↑↓
bytes.map{|b| b.chr }.join

だろうか

598:デフォルトの名無しさん
08/09/06 21:44:48
Javaneseってジャワ語という意味だったな


599:デフォルトの名無しさん
08/09/06 21:54:41
str.concatとarr.push使って自分で実装しました。
というか、スクリプトはテキスト(日本語)処理が主要な用途なんで、これぐらい(ライブラリ作成者側が面倒でも)当然用意しておくべきじゃないですか?

>>597
ruby 1.8.5 (2006-12-25 patchlevel 12) [i386-mswin32]
なんで無理です。あと、よくわかないんですけど、[*str.each_byte]は間接参照か何かですか?
イテレータとか使うといちいちAPIみないといけなくなって面倒なんで、この程度の処理はwhileで実装です。
というか、こういう処理はwhileで十分あって、関数ポインタやデリゲートの用途じゃあるまいし、イテレーターなんてカッコつけて使うもんじゃないですよw


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