Ruby 初心者スレッド ..
[2ch|▼Menu]
294:デフォルトの名無しさん
09/08/19 15:42:14
厳しい言い方だが、

あなたがただのユーザーなら、Rubyで動作するプログラムは現存しないので諦めれ
あなたがプログラミングを行う者なのなら、あなたが自力で全体修繕して作れ

どっちか

295:203
09/08/19 15:58:50
>>286->>288,>>290

ご指摘ありがとうございます。
各クラスのメソッドの知識がないみたいなのでそこを勉強して出直してきます。
また、初期値なども勉強してきます。
昨日からいろいろな人に教えていただきましてまことにありがとうございます。

296:チンパンジー愛ちゃん
09/08/19 16:15:54
mecab坊やはどうなったの?解決したの?

297:デフォルトの名無しさん
09/08/19 16:28:45
的確なレスもできないくせにコテうぜえ

298:デフォルトの名無しさん
09/08/19 16:48:22
ここまで全部読み飛ばした。
寝る。

299:デフォルトの名無しさん
09/08/19 17:02:48
とりあえず
みんな
おつかれ

300:デフォルトの名無しさん
09/08/19 18:36:53
>>293
Ruby1.9なら1.8を
もし引数無しで起動したならリンク先ちゃんと読め

301:デフォルトの名無しさん
09/08/19 19:09:17
1.8w

302:デフォルトの名無しさん
09/08/19 19:48:41
>>290
>初心者が混乱しているときは大抵教え方が悪い
名言だな。こんどから>>1に追加してほしいくらいだ。

303:デフォルトの名無しさん
09/08/19 20:06:36
本人が言うから名言なんであって
もし質問者側からそんなこと言われたらたまったもんじゃないな

304:チンパンジー愛ちゃん
09/08/19 21:29:48
教える側は常に心の奥底で思っていないといけないことですよ。
独りよがりの教えほど迷惑なものはありませんから。

305:191
09/08/19 22:21:17
すまん、俺が変な野郎(>>192)を呼び込んでしまったようだ orz...
あとは俺に任せてくれ。

306:デフォルトの名無しさん
09/08/19 22:30:23
どっちもサルに見えるのだが

307:デフォルトの名無しさん
09/08/20 03:35:31
逆引きRuby誰か書き足してくれ

308:デフォルトの名無しさん
09/08/20 07:19:18
>>307
どっちの逆引き?

309:デフォルトの名無しさん
09/08/20 08:08:59
とりあえず、逆引きRubyという話題を振る時は、
どちらの逆引きか、逆引きの方か、逆引きの方かはっきり囲うな?

310:デフォルトの名無しさん
09/08/20 08:12:14
日本語でおk

311:デフォルトの名無しさん
09/08/20 08:58:41
レシピブック初版にはお世話になったけど
最近いろいろあるから次買うとき迷うな

>>309
書き足すっていうぐらいだからWikiのほうだろう

312:デフォルトの名無しさん
09/08/20 13:38:05
Emacs の ruby-mode で =begin と =end がインデントされてたいそう困ってるんだけど
これって困ってる人いないのかな

313:デフォルトの名無しさん
09/08/20 14:06:37
>>304
そこまで自覚があるなら、さっさと消えろよ

314:デフォルトの名無しさん
09/08/20 17:19:03
>>312
あー,それ確か俺も愕然とした記憶が。
「=begin, =end は使わないことにする」で解決!

315:デフォルトの名無しさん
09/08/21 10:58:26
シリアルポートからデータをgetsで読んでます。
データは一行ずつ出力されるので問題は生じません。
しかし、特殊な設定情報だけは複数行出力で、行数が不定です。
このような何行か分からない出力を受け取るにはどのような手法が適しているでしょうか?

316:デフォルトの名無しさん
09/08/21 11:09:32
行とい考え方を無くせばいい
ただの改行文字だろ

317:デフォルトの名無しさん
09/08/21 11:10:20
設定情報用の一時変数を確保しておいて、
設定情報1行目だったら通常の処理飛ばしてそこに溜めるようにすれば?

318:315
09/08/21 11:26:15
ありがとうございます。
とりあえず、一行ずつ << 演算子で設定情報用の配列の末尾に追加していくことにしました。
EOFがないので終了条件をどうするか悩んでみます。

319:デフォルトの名無しさん
09/08/21 11:40:13
>>318
EOFって全体の?
終了データが流れてこないとかpingみたいな定期送信がないなら
手動停止させるのが普通だと思う

可変長データなのにサイズ情報も終端情報もないのだとしたら
次の通常のデータが送られてきた時にバッファ吐き出して設定処理するとか

320:デフォルトの名無しさん
09/08/21 11:43:57
そりゃデータフォーマットがわからにゃなんとも

321:315
09/08/21 11:58:57
>>319
全てのデータを受信できるまで、timeoutモジュールを使って少し待ってからgetsの待ちを解除してみます。

322:デフォルトの名無しさん
09/08/21 13:43:36
自作のスクリプトがあります
libディレクトリを作ってファイル分けしてみたら10ファイルくらいになりました

んで、これを日常で使いたいと思います
「開発ディレクトリ」と「実行ディレクトリ」を分けなければなりません
(動作しない状態であることが多い開発中のスクリプトをcronなどで触らせたくない)
どこか適当なディレクトリに「インストール」してバージョンを維持するのがいいと思ってます

最初は rubygem パッケージにすることを考えましたが、
require 'rubygems' で1秒近くかかる環境なので正直あまりやりたくありません
(たぶん、スクリプト本体の実行時間のほうが短い)
これ以外になにかてきとーな方法はありませんか?

323:デフォルトの名無しさん
09/08/21 13:52:21
>>322
subversionあたり使うとか

324:デフォルトの名無しさん
09/08/21 13:59:42
>>322
rake install で超適当なディレクトリに超適当に上書きするような rake スクリプトを書く
要は実行可能なときにファイルをコピーしておきたいってことだろ
ファイルをコピーするという行為だけ rake で書け

バージョン戻すという行為が簡単にできないのだけが難点だが、
まあ実行用ディレクトリを適当に圧縮でもしてバックアップしとけ

325:デフォルトの名無しさん
09/08/21 15:25:22
質問です。

ary = [5, 2, 3, 3, 3, 4, 2, 2]
のような配列を
[5, 2, 3, 4, 2]
のようにする、つまり、「隣り合った」同値の要素を
uniqにまとめた配列を得る方法を求めています。

ary = [5, 2, 3, 3, 3, 4, 2, 2]
prev = nil
result = []
ary.each do |n|
result << n if prev != n
prev = n
end
result #=> [5, 2, 3, 4, 2]

とするより、良い方法はないものでしょうか?

これに限らず、配列処理で直前(または 直後)の要素を参照しながら
進めていくスマートな方法があれば教えていただきたいのですが・・・。

326:デフォルトの名無しさん
09/08/21 15:32:32
prev = nil
result = ary.select{|v| v == prev ? false : (prev = v) }

327:デフォルトの名無しさん
09/08/21 15:33:18
前後を参照するほうが注目だったか、スマン出直してくる

328:デフォルトの名無しさん
09/08/21 15:33:53
Enumerable#each_cons

329:デフォルトの名無しさん
09/08/21 15:51:43
>>326
selectをこういうふうに使えるのは知りませんでした。
関数型言語みたいで格好いいなあ。

>>328
こういうのを探していました。ありがとうございます。

330:デフォルトの名無しさん
09/08/21 20:16:48
デバッガ使ってる?

使いこなせてないからかもしれないけども,まだ自分にはpとかppで十分かな.
どんなレベルからデバッガつかってんの?

331:デフォルトの名無しさん
09/08/21 21:20:08
みんななにで開発してるんだろう?
IDE?エディタ+コンソール?

332:デフォルトの名無しさん
09/08/21 22:31:20
>>331
エディタ+コンソール派
軽くて良いIDEがあったら、そっちに乗り換えるつもり

333:デフォルトの名無しさん
09/08/21 23:22:01
デバッガ使ってもバグ直ってないニダ。
謝罪と賠償ニダ。

334:デフォルトの名無しさん
09/08/21 23:24:21
RDEがもっと使いやすかったらいいのにな・・・

335:デフォルトの名無しさん
09/08/22 00:53:03
netbeansで書いて、家ではemacs+putty

336:デフォルトの名無しさん
09/08/22 02:00:36
EclispeからNetbeansに行ってemacsかな。日曜PGなんで結局自分が良く使うエディタがいいや。

337:デフォルトの名無しさん
09/08/22 02:03:57
Aptana+Eclispe
はじめたばっかりですけど

338:デフォルトの名無しさん
09/08/22 08:22:51
ソースコード上でデバッグできるのは?
NetBeansがいいんかな?

339:デフォルトの名無しさん
09/08/22 08:29:08
正直どれもイマイチ
言語仕様的問題だとは思うんだが

340:デフォルトの名無しさん
09/08/22 09:44:00
>325

result = ary.zip([nil]+ary).select{|x,y| x!=y}.map(&:first)

341:デフォルトの名無しさん
09/08/22 09:53:39
>>340
each_consが提示された時点で問題外
オナニー以下

342:デフォルトの名無しさん
09/08/22 13:45:35
色んなやり方が紹介されるのは,初心者スレでは意味があるんじゃないかな。
悪例だったらダメだけど,>>340 は「へーこういうのもあるんだ」的な
例にもなってると思うし。

343:デフォルトの名無しさん
09/08/22 15:15:49
data = ハッシュまたは適当な格納系クラス
Target.new(param).hoge(data)
data #<= Target に関する情報が追加されている

という処理をします
hoge というメソッドにわかりやすい名前を付けたいのですが、なんかいい案ありませんか
凝ってもアレだし update とか register でいいですかね

344:デフォルトの名無しさん
09/08/22 15:17:19
>>342
普通に悪例だと思うが

345:デフォルトの名無しさん
09/08/22 15:23:30
ようそが nil いっこだけのはいれつがかいてあるじてんでかっこわるくてあたまぐるんぐるんぐるんします

346:デフォルトの名無しさん
09/08/22 16:12:11
>>343
Hoge#dup_to(data) とか
updateならHashにならってHoge#update(Target)にすべき
後は
hoge = Target.new(param).to_hoge
とか
hoge = Hoge.new(Target.new(param))

347:デフォルトの名無しさん
09/08/22 16:27:30
>>343
「自分の内容で引数のデータオブジェクト(自分とは別構成)を更新する」というメソッドに
update は似合わない
Ruby の update は自分と引数が同類であるべき
引数に現在のインスタンス変数の内容を適宜コピー、というメソッドは…なんだろうね

動作としてはこんなんだろ

h = Hash.new
Foo.hoge(h)
Bar.hoge(h)
Baz.hoge(h)
p h

で、h が {'foo' => …, 'bar' => …, 'baz' => …} になったり
{111 => {:foo => …, :bar=> …, :baz => …}, 222 => {:foo => …, :bar=> …, :baz => …}, ...} になるって奴

348:346
09/08/22 17:09:40
間違えた
×Hoge#dup_to(data)
○Target#dup_to_(data)

dup_to(data)じゃなくてdup(type=nil)にして
typeがクラスならデータ格納したインスタンスを生成、
インスタンスならそれに情報をコピー、nilならsuperとかどうだろう

349:デフォルトの名無しさん
09/08/22 18:04:05
きめえ
ObjectやModuleの基本メソッドは上書きすんな

350:デフォルトの名無しさん
09/08/22 18:08:08
dupの存在を知らないだけかもしれないじゃないか
irb> a = []
irb> b = a.dup
irb> a << 1
irb> p b
[]


351:デフォルトの名無しさん
09/08/22 18:35:05
>>349
> ObjectやModuleの基本メソッドは上書きすんな
なんで?
inspectとか==とかto_*とか普通上書きするだろ、最たるものはinitialize
それにdupに引数与えなければ以前と同じ動作をするんだから互換性も問題無い

352:デフォルトの名無しさん
09/08/22 18:51:28
>>343
自分なら Target.new(param).hoge は Hash あたりを吐き出すようにして
data側が自分で取り込むようにする
たとえばdata = {} なら data.update( Target.new(param).hoge )

だから名前は、ある種のアクセサとして吐き出すデータに見合った名前か
主要なデータをまるっと吐くなら to_h とか

>>351
機能はそのままに、そのオブジェクトに見合うよう上書きするのと
機能自体を拡張するという違いがあるからなぁ
ダメだと思わないけど積極的にやるのも微妙な感じ

353:デフォルトの名無しさん
09/08/22 19:14:29
Ruby Best Practicesは良い本ですか?

354:デフォルトの名無しさん
09/08/22 20:24:17
Ruby Best Practicesは(どうでも)良い本です。

355:デフォルトの名無しさん
09/08/22 20:35:37
初歩的な質問ですいません。
Linuxで、シェル(bash cshなど)よりrubyの方が優れているところは何でしょうか?

356:デフォルトの名無しさん
09/08/22 20:42:46
>>355
シェルスクリプトでめんどくさい処理も簡潔に書ける

めんどくさいと思った経験が無いならシェルスクリプト使っとけ

357:デフォルトの名無しさん
09/08/22 20:48:58
>>356
すいません、シェルは結構使うんですが、Rubyは勉強しだしたばっかりであまりよくわかってないんです。
なので自分で比較ができないんですが、具体的にはどんなところがRuby優位なのでしょうか?

358:デフォルトの名無しさん
09/08/22 21:01:29
例えば指定したディレクトリとそのサブディレクトリを巡回して
ファイルのサイズを集計してどのフォルダが何%消費しているかを
大きい順にソートして上位50個表示。
なんてユーティリティを書くと差が出てくるかな。

359:デフォルトの名無しさん
09/08/22 21:01:56
>>357
アプリ一つ書いてみればわかるんじゃないだろうか。
WEBアプリなら敷居が低いから、とりあえず掲示板でも。

また例えば、CSVのパースとかしたくなったときに、シェルスクリプトで
どうやったらいいのかちょっとすぐには思いつかない。

360:デフォルトの名無しさん
09/08/22 21:06:49
シェルスクリプトってものがどういうものかっていう知識不足

だからどんなレスしても、理解できない

361:355
09/08/22 21:14:54
シェルでもcpとかrmしかつかってないんで、
難しいことわかりません。

理解できませんので失礼します。

362:デフォルトの名無しさん
09/08/22 21:37:01
>>358
du -h | sort で用が足りそうな気もするな

363:デフォルトの名無しさん
09/08/22 22:54:42
CSV処理やらディレクトリ走査はシェルスクリプトの得意分野じゃねえの。
シェルスクリプトを覚える必要がないならrubyで良いと思うけども。

364:デフォルトの名無しさん
09/08/23 01:53:06
多次元配列の重複要素削除の仕方がわかりません

Cでいうところの、
a[3][5] = {[1,2,3,4,a], [2,3,4,5,b], [2,3,4,5,a]}

って、あったら、aが重複してるので、
[1,2,3,4,a], [2,3,4,5,b]
だけにしたい

a.uniq{|x| x[4]}

ってのは間違い??




365:デフォルトの名無しさん
09/08/23 03:01:15
>>364
Array#uniqはブロックを取らないはず

a[x][4]の値が既出の配列は捨てるってことだよね?
a = [[1,2,3,4,"a"], [2,3,4,5,"b"], [2,3,4,5,"a"]]
tmp = {}
a.select{|v| tmp[v[4]] ? false : (tmp[v[4]] = true) }

どこかで見たと思ったら>>326と似てた

366:デフォルトの名無しさん
09/08/23 04:55:14
>>364
多次元配列など存在しません
ネストした配列とお呼び下さい

で、まあ、ネストしただけの配列なので普通にイテレーションして
exists = Array.new
a.delete_if{|arr| if exists.include?(arr[4]) then false else exists << arr[4]; true end}
とかすればいいんじゃね
Rubyでコレクションをぐるぐるすること厭っちゃダメ

367:デフォルトの名無しさん
09/08/23 05:22:40
【レス抽出】
対象スレ:Ruby 初心者スレッド Part 30
キーワード:select

抽出レス数:11

これ全部同じ奴なんだろうな、とか思う

368:デフォルトの名無しさん
09/08/23 05:47:02
select が条件全体抽出なのは混乱する、という人は少なくなさそうだな

collect
select
reject
detect
inject



map
find_all
reject
find
inject

なら後者のほうがまだマシにも思えるが、あ〜、でもどうだろう
このへんは出身言語にもよるんだろうけどさ
find/map 派と detect/collect 派は結構昔から揉めてる気がする
find と find_all が紛らわしいとか、そんなんセレクトとデテクトのほうが紛らわしいわボケとか

あと、古い ActiveRecord は find_all が上書きされるから新しいの入れて ActiveRecord#all で書け

369:デフォルトの名無しさん
09/08/23 12:23:18
>>364
> a.uniq{|x| x[4]}
> ってのは間違い??

1.9 ならそれで動くよ。

370:デフォルトの名無しさん
09/08/23 13:04:54
1.8はそろそろ分離してスレ立ててほしいな

【まだまだ】Ruby1.8.x 初心者スレ【現役】

とか

371:デフォルトの名無しさん
09/08/23 13:12:45
>>370
1年半で200レスしか行かないトピックスを1ヶ月で1000レス消費するスレから分離要求とか片腹痛いわー
そういうのは1.9スレ繁盛させてから言え

372:デフォルトの名無しさん
09/08/23 13:20:00
時代についていけない老害め

373:デフォルトの名無しさん
09/08/23 13:23:01
え、板を利用させてもらってる分際で何言ってんの
既存スレの利用もできないのに新スレとか何様

374:デフォルトの名無しさん
09/08/23 13:34:00
いまだに1.8.xにしがみつくのはRuby界の足をひっぱってるってことに気がつけ

375:デフォルトの名無しさん
09/08/23 13:34:04
夏の思い出作りなんだろ
自分の提案であの2ちゃんねるにスレが立つんだぜ
俺なら射精するね

376:デフォルトの名無しさん
09/08/23 13:35:53
2chが世界の全てな人には何を言っても無駄
2chのスレ立てとRuby界の関係とかもうわけわからんし

377:デフォルトの名無しさん
09/08/23 13:38:49
>>374
One-Click Installerの1.9版すら出てないのに何を言ってるの

378:デフォルトの名無しさん
09/08/23 14:05:31
夏の思い出うんぬんって流行ってるのか?
前にも薬が切れたみたいなやつが言ってた気がするが

379:デフォルトの名無しさん
09/08/23 14:22:02
お前ら隔離スレに帰ってくれ

380:デフォルトの名無しさん
09/08/23 20:25:41
>>378
というか夏の思い出作りが流行ってる。

381:デフォルトの名無しさん
09/08/23 20:27:52
バージョンの指定をするスレの方がレスが少ないのは当然だろ

382:デフォルトの名無しさん
09/08/23 22:29:36
Rubyでopensslを利用して共通鍵暗号を使う場合、以下のような
コードを書きますが、pkcs5_keyivgenを使うのはセキュリティ上
良くないのですか?

require 'openssl'

a123 = "0123456789"
pass = "hogehoge"
enc = OpenSSL::Cipher::DES.new
enc.encrypt
enc.pkcs5_keyivgen(pass) # <= この記述がよろしくない?
a = enc.update(a123)
b = enc.final
s = a + b


こんなページ↓を見つけたので、気になりました。
URLリンク(wp.serpere.info)

Rubyのソースコード(ossl_cipher.c)には、以下の記載がありますが、
詳しい意味が分かりません。

* WARNING: This method is only PKCS5 v1.5 compliant when using RC2, RC4-40, or DES
* with MD5 or SHA1. Using anything else (like AES) will generate the key/iv using an
* OpenSSL specific method. Use a PKCS5 v2 key generation method instead.


ソースコードの注釈の意味と、pkcs5_keyivgenを使わずに適切に
記述する方法を教えてください。

383:デフォルトの名無しさん
09/08/24 15:48:42
>>382
初心者スレの内容を超えているようにおもうけど、頑張ってみよう。

コメントを翻訳すると、こんな感じでしょうか。暗号についての知識がないのでよくわからないけど。

警告: このメソッドは、RC2やRC4-40を使う場合、あるいはDESをMD5やSHA1とともに使う場合には、PKCS5 v1.5 のみに準拠しています。
他のもの(AESとか)を使うと、OpenSSL固有のメソッドを使ってkey/ivを生成します。
かわりにPKCS5 v2 キー生成メソッドを使ってください。


・・・うん、やっぱわからん。メーリングリストで聞いてみることをお勧めします。


384:デフォルトの名無しさん
09/08/24 16:39:50
すいません。unicodeの文字列を数値に変換してコードに
埋め込んだり複合したりする方法を探しています。Ruby以外での方法は

URLリンク(0xcc.net)

にまとめられているので、Rubyでも可能と思うのですが。

385:デフォルトの名無しさん
09/08/24 16:56:36
irb> puts "あいう".unpack("U*").map{|e| sprintf("\\u%x", e)}.join
\u3042\u3044\u3046

正直、ユニバーサルキャラクタ名に一発で変換できないのは怒っていいと思う

386:デフォルトの名無しさん
09/08/24 16:57:34
1.8にはない。
[ 0x3042 ].pack('U')
#=> "あ"

1.9では
"¥u3042"
#=> "あ"

387:デフォルトの名無しさん
09/08/24 17:07:23
inspect の返り値をそのまま "" で貼ると、
ファイル自体の文字コードによらずにUTF-8文字列になる
ただし 1.8 系列限定

irb> puts "あいう".toutf8.inspect
"\343\201\202\343\201\204\343\201\206"

ruby -Ke
require 'nkf'
p NKF.guess("あいう") == NKF::EUC #=> true
p NKF.guess("\343\201\202\343\201\204\343\201\206") == NKF::UTF8 #=> true


388:デフォルトの名無しさん
09/08/24 17:25:53
url 文字列を new に渡すとなんか便利な追加データを搭載した MyURL オブジェクトが返るクラスがあります

MyURL.new(url)

この url が MyURL クラスのオブジェクトだった場合、何もせずにその url 自体を返して欲しいです

389:デフォルトの名無しさん
09/08/24 17:30:12
>>388
Ruby ではそーゆー芸はできません
initialize 内で self を置き換えることができません

class MyURL
 def initialize(url)
  …
 end
 def self.build(url)
  if url.kind_of?(MyURL) then
   return url
  else
   self.class.new(url)
  end
 end
end

my = MyURL.build(url)

とか運用で回避します

390:デフォルトの名無しさん
09/08/24 17:32:46
newを再定義すればいいんじゃないの?


391:デフォルトの名無しさん
09/08/24 19:08:18
def self.new(url)
return url if url.is_a?(MyURL)
myurl = allocate
myurl.instance_eval { initialize(url) }
myurl
end

is_a? の部分は respond_to? MyURL固有のメソッド とかの方がいいかも

392:203
09/08/24 20:16:26
また,質問です.行列のようになった方がみやすいと思って
>>222さんのものをつかって
require 'pp'
ary = %w(w1 w2 w3 w4 w2 w3 w1 w1 w5 w2 w3 w4)
col = %w (w1 w2 w3)
zero = ary.uniq.inject(Hash.new){|h,w| h[w] = 0 ; h }
window = 6
hout = Hash.new
ary.each_with_index do |key,i|
(hout[key] = zero.dup) unless hout.key?(key)
ary[i+1,window].select{|e| e != key }.each {|word| hout[key][word] += 1 }
end
pp hout

このようにしました.
そして,colを行列の項目のようにして

{"w1"=>{"w1"=>0, "w2"=>4, "w3"=>4},
"w2"=>{"w1"=>4, "w2"=>0, "w3"=>5},
"w3"=>{"w1"=>4, "w2"=>2, "w3"=>0}}

という出力が欲しいのですが,どのように書き換えればいいか分かりません.
前回の1つ1つは理解できたと思っていましたができませんでした・・・・.すいません.

393:デフォルトの名無しさん
09/08/24 21:11:33
だから処理を逐次書けとあれほど
わからないうちからまとめたって変更できないんだから

394:デフォルトの名無しさん
09/08/24 21:46:03
>>392
メソッドチェーンとか駆使しないでもっと愚直にやれば?
それこそ1行1行 p で結果を確認しながら積み上げていく感じでさ

395:デフォルトの名無しさん
09/08/24 21:47:26
>>389
真顔で嘘を言うなよなw

396:デフォルトの名無しさん
09/08/24 22:25:35
>>392を実行すると
{"w1"=>{"w1"=>0, "w2"=>4, "w3"=>4, "w4"=>3, "w5"=>2},
"w2"=>{"w1"=>4, "w2"=>0, "w3"=>5, "w4"=>2, "w5"=>1},
"w3"=>{"w1"=>4, "w2"=>2, "w3"=>0, "w4"=>3, "w5"=>2},
"w4"=>{"w1"=>2, "w2"=>2, "w3"=>1, "w4"=>0, "w5"=>1},
"w5"=>{"w1"=>0, "w2"=>1, "w3"=>1, "w4"=>1, "w5"=>0}}
ってなるんだけど、これが欲しい出力なんじゃないの?
違うんなら、質問をもっとわかりやすく書いて。

397:デフォルトの名無しさん
09/08/24 22:26:50
ruby -vとやったときの出力を以下のように貼ってね。
ruby -v ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]

398:デフォルトの名無しさん
09/08/24 22:31:47
ruby 1.8.7 (2008-08-11 patchlevel 72) [x86_64-linux]

399:デフォルトの名無しさん
09/08/24 22:34:08
1.8

wwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwww
wwwwwwwwwwwwwwwwwwwwwwwwwwww

400:203
09/08/24 23:08:44
>>396
>>392の実行結果ではなくて
{"w1"=>{"w1"=>0, "w2"=>4, "w3"=>4},
"w2"=>{"w1"=>4, "w2"=>0, "w3"=>5},
"w3"=>{"w1"=>4, "w2"=>2, "w3"=>0}}
となってほしいです。
col = %w(w1 w2 w3) がcol = %w(w7 w8 w9)だったら
{"w7"=>{"w7"=>0, "w8"=>0, "w9"=>0},
"w8"=>{"w7"=>0, "w8"=>0, "w9"=>0},
"w9"=>{"w7"=>0, "w8"=>0, "w9"=>0}} となって欲しいです。
colの中身の配列がaryの中にあるかをwindowでずらしながら確認するのです。

とりあえずバージョンは
ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-linux]です。


401:デフォルトの名無しさん
09/08/25 00:07:44
>>400
"w?"=>0 以外の結果は>>222のhoutに入ってるんだから
そこからcolに一致するデータだけ抜き出せばいいじゃん

402:203
09/08/25 01:46:21
>>401
思いつく限りしてみたのですが・・・
require 'pp'
ary = %w(w1 w2 w3 w4 w2 w3 w1 w1 w5 w2 w3 w4)
col = %w(w1 w2 w3 w9)
zero = ary.uniq.inject(Hash.new){|h,w| h[w] = 0 ; h }
window = 6
hout = Hash.new
ary.each_with_index do |key,i|
(hout[key] = zero.dup) unless hout.key?(key)
ary[i+1,window].select{ |e| e != key }.each { |word| hout[key][word] += 1 }
end
pp hout
ar=Hash.new;ar.default=0;ar= hout.values[0].values_at(*col)
p ar
hout.each_pair do |k,v|
if col.include?(k)
puts "#{k}\t#{v.values_at(*col)}"
end
end

# >> {"w1"=>{"w1"=>0, "w2"=>4, "w3"=>4, "w4"=>3, "w5"=>2},
# >> "w2"=>{"w1"=>4, "w2"=>0, "w3"=>5, "w4"=>2, "w5"=>1},
# >> "w3"=>{"w1"=>4, "w2"=>2, "w3"=>0, "w4"=>3, "w5"=>2},
# >> "w4"=>{"w1"=>2, "w2"=>2, "w3"=>1, "w4"=>0, "w5"=>1},
# >> "w5"=>{"w1"=>0, "w2"=>1, "w3"=>1, "w4"=>1, "w5"=>0}}
# >> ["w1", "w2"]
# >> [0, 4, 4, nil]
# >> w1 044
# >> w2 405
# >> w3 420
arにkeyが存在しなければnilではなくて0にしたいのですが何かどうすればいいでしょうか?

403:デフォルトの名無しさん
09/08/25 02:45:24
>>402のコードの方向性は間違ってない
特殊な用件にスマートな解答なんてそうそう無いよ
ないなら自分で作るしか無いんだよ
この行が何やってるか理解すればnilを0にする(?)方法もわかるかも
zero = ary.uniq.inject(Hash.new){|h,w| h[w] = 0 ; h }

404:デフォルトの名無しさん
09/08/25 02:52:01
>>391
> myurl = allocate
> myurl.instance_eval { initialize(url) }
> myurl
の部分はsuperだけでいい

405:203
09/08/25 04:17:16
>>403
injectが自分にはまだ早いのでeachでやってみました。
ary = %w(w1 w2 w3 w4 w2 w3 w1 w1 w5 w2 w3 w4)
col = %w(w1 w2 w3 w9)
non = col - ary
〜〜
zero =Hash.new;ary.uniq.each { |v| zero[v]=0}
czero =Hash.new ;col.uniq.each { |v| czero[v]=0}
p zero;p czero
p zero.merge!(czero)
〜〜
ary.each_with_index do |key,i|
(hout[key] = zero.dup) unless hout.key?(key)
ary[i+1,window].select{ |e| e != key }.each { |word| hout[key][word] += 1 }
end
non.each_with_index do |key,i|
(hout[key] = zero.dup) unless hout.key?(key)
ary[i+1,window].select{ |e| e != key }.each { |word| hout[key][word] =0 }
end
pp hout

かなりお行儀が悪いですが、自分の欲しいものができそうなのでこれから加工してみます。
ありがとうございました。
・・・・また、来るかもしれませんが。そのときは、よろしくお願いしますm(_ _)m

406:デフォルトの名無しさん
09/08/25 08:33:15
メソッドに与えられたブロックは、仮引数の最後に & を付けると
手続きオブジェクトとして得られるらしいけど、

def foo(&block)
 ...
end

このとき「if block_given?」と「if block」は等価なの?
前者の式の方をよく目にするけど、どう違うの??


407:デフォルトの名無しさん
09/08/25 09:32:42
def で定義してるぶんにはなんも変わらんので素直に block_given? 使っとけ

408:名無し学生
09/08/25 10:35:40
Visual Basic の課題で困っております。
誰かお答えください。本当に助けてください。

1.Visual Basicの関数で数値を文字に直すCStr()とStr()の違いについて

2.戻り値の違いが確認できる方法を考え、戻り値の違いについて実際に確認し、
  その確認方法と違いを具体的に述べよ。
注意:実際にやったことと、確認した違いを簡潔かつ具体的に書くこと。

3.下記の計算結果などから、Visual Basicで計算できる数値の桁数について考察をまとめ、
  何故そのような制限があるかについて理由を答えよ
  1) 48 x 100 - 81
  2) 12 ÷ 9.3 x 247
  3) 0.2 - 12 ÷ 69
  4) -12 ÷ 100 + 100

409:デフォルトの名無しさん
09/08/25 10:38:32
VBなら「自分が興味のあるソフトを作りなさい」くらいの課題を出せよ
どこの学校だ?

410:デフォルトの名無しさん
09/08/25 10:44:04
そのような曖昧なテーマの課題を出す学校もどうかと思うが。

411:デフォルトの名無しさん
09/08/25 10:48:19
>>409-410
他のスレでもマルチポストしてる奴をいちいち相手にするな。

412:デフォルトの名無しさん
09/08/25 11:22:05
これってRuby勉強の手助けになりますか?
それはさておき、読んで損のない本でしょうか?

「まつもとゆきひろ コードの世界」は全プログラマ必読の名著
URLリンク(v.japan.cnet.com)

413:デフォルトの名無しさん
09/08/25 11:26:27
> これってRuby勉強の手助けになりますか?
いや特には
> それはさておき、読んで損のない本でしょうか?
お金の余ってる人向け
お金が余ってるなら読んでもよい
お金が余ってないならもっと他に読む本があるはず

414:デフォルトの名無しさん
09/08/25 11:37:32
>>413
そうですか。
今回はパスしておきます。

415:デフォルトの名無しさん
09/08/25 13:49:37
どんだけ金ないんだよ

416:デフォルトの名無しさん
09/08/25 14:09:29
ここは学生スレ

417:デフォルトの名無しさん
09/08/25 15:47:13
s = Path::changeext($0, ".cfg")
t = Path.new(s)
t.changeext(".xml") #==> Path::changeext(s, ".xml")

みたいな使い方をしたいんですけど
クラスメソッドとインスタンスメソッドのoverloadなんて無理?

# Pathはただの例です

418:デフォルトの名無しさん
09/08/25 15:57:06
インスタンスメソッドの中でクラスメソッドを呼ぶとかそういう話ではなく?

class Path
 def change_ext(sfx)
  return self.class.change_ext(@str, sfx)
 end
 def self.change_ext(str, sfx)
  …
 end
end


419:デフォルトの名無しさん
09/08/25 19:00:25
>>417
Path::changeext() と t.changeext() はそれぞれ別のメソッドが呼ばれます。

なおその例で「overload」というのは誤解を招くので使わない方がいいです。
質問するなら、
「クラスメソッドとインスタンスメソッドで同じメソッド名を使うことってできる?」
ぐらいにしておけば、overloadという単語を使わなくても済んだでしょう。


420:デフォルトの名無しさん
09/08/25 19:30:18
てか、クラスメソッドの起動で :: を使う人は Ruby ではまずいない
Ruby では :: の右に来るのは定数で、 . の右に来るのはメソッドだから

Ruby ではクラスも定数として格納されてるから、

irb> CONST = 1
irb> CONST = 2
 (irb)2: warning: already initialized constant CONST
irb> class Foo; end
irb> Foo = 2
 (irb):4: warning: already initialized constant Foo

ネストしたクラスは Foo::Bar::Baz と :: で連結するし、
あるクラス Hoge の定数 CONST は :: で連結して Hoge::CONST と綴る

Ruby ではインスタンスメソッドは一般クラスから作られたオブジェクトに属するメソッドだから、
特定のクラスのオブジェクトというかインスタンス s に属するインスタンスメソッド mes は
特定のクラスのインスタンス s に . でメソッドを繋げて s.mes と書くし、
Ruby では スクリプト中に存在するアクセス可能なクラスは Class(または Module)クラスのインスタンスだから、

irb> p "str".class
String
irb> p String.class
Class

クラス S に属するメソッドつまりクラスメソッド moge は
Class クラスのインスタンス S に . でメソッドを繋げて S.moge と表現する

421:デフォルトの名無しさん
09/08/25 21:18:28
ちょっとはじめたばっかりでしつもんなんですけど
Array.newと[]やHash.newと{}のどっちがいいとかありますか?
始めたばっかりでくせをつけておくなら今のうちかなとおもいましたので
こうやるやるべきとかのってるページとかありますか?

422:デフォルトの名無しさん
09/08/25 21:28:09
機能的には同じなので好きなほう使え

[] や {} のリテラル形式は短い
短いということはそれだけで大きな価値がある
ただし hoge#[] メソッド や ブロック {} と一瞬区別がつけにくいことがありうる
一瞬でも読み下しに詰まる可能性があるということはそれだけでマイナスだ

好きなほう使え

423:デフォルトの名無しさん
09/08/25 21:51:25
おいおい同じじゃないだろ
Hash.new、Array.newはデフォルト値やサイズを設定することができる

オレ的には[]{}を基本に使って、
デフォルト値やサイズを指定したい場合はnewを使うのがおすすめかな

424:デフォルトの名無しさん
09/08/25 21:54:24
そんなこと言ったらリテラルな時点で別物だ
そういう区別をして欲しいわけではないだろう

425:デフォルトの名無しさん
09/08/25 22:01:13
機能的な違いのあるなしと一緒にするな

426:デフォルトの名無しさん
09/08/25 22:01:17
別に {} でもデフォルト値は設定できるよ

h = {}
h.default = 0
p h[:a] #=> 0

マニュアルに書いてあるようなことを知りたいんじゃないと思われ

427:デフォルトの名無しさん
09/08/25 22:14:48
h.default←別のメソッド引っ張り出してきてどうする

質問者の潜在的なニーズがなんであれ間違いを教えるのはよくない
両者は「同じ」と書いてあったから「違いがある」と訂正しただけ
それ以上の意味はない

428:デフォルトの名無しさん
09/08/26 08:28:49
RubyではHTMLのエスケープってどこでやるべき?

429:デフォルトの名無しさん
09/08/26 08:38:43
データ出力時

ただしこれには条件がある
「データ出力者全員が自力でエスケープをしなければならないと認識していること」
これが未来に守られる見込みが全くないのなら、
現在のデータ保管者が親代わりにエスケープするのも致し方ない

430:デフォルトの名無しさん
09/08/26 09:08:39
>>428
template

431:デフォルトの名無しさん
09/08/26 10:09:57
入力時でないことは確か

432:デフォルトの名無しさん
09/08/26 11:42:17
>>420
おまえの文章長いよ
もっと要点を絞って簡潔に書こうぜ

433:デフォルトの名無しさん
09/08/26 12:43:55
>>420を蒸し返すと、

a.some_method(1, "str")
a::some_method(1, "str")

上の2つのスタイルのうち、いずれを使うかは趣味の問題です。
ただしクラスメソッドを呼ぶ場合を除いては第1のスタイルが主流です。
筆者はクラスメソッドに対しても一貫して第1のスタイルを用います。

- 初めてのRubyより -

わざわざリリースマネージャが「〜を除いては」と書くくらいだから、
「まずいない」ということはないだろう。

434:デフォルトの名無しさん
09/08/26 12:56:37
実際の観測として「まずいない」と思うが…
そんな大量にコード見てるわけじゃないが、:: でメソッド呼んだ人は今年一度も見てないぞ
>>417が初めてな気がする

435:デフォルトの名無しさん
09/08/26 13:10:14
大文字で始まるメソッドは、括弧を省略すると::で呼び出せない。
そういう細かい条件を考えると、メソッド呼び出しは.で統一するのが無難。

436:デフォルトの名無しさん
09/08/26 18:45:58
すいませんが、質問させて頂きます。
xmpfilterを使いたいのですが、どうも上手く行きません。
OSはWindowsVista , ruby1.8.6です。

gem install rcodetools  でインストールした後

-------------test.rb--
#! ruby -Ks
p 2+3 # =>
--------------------

上記のファイルに対して

xmpfilter test.rb

を実行すると

-e:1: unterminated string meets end of file
-e:1: warning: useless use of a literal in void context

というエラーが出て、実行してくれません。
空のファイルに対しても、どれも同じエラーが出ます。
どうすれば良いかを教えて下さい。


437:デフォルトの名無しさん
09/08/26 19:18:45
2+3 の後ろに全角空白が入ってるんだけどこれは意図したものかな

438:436
09/08/26 19:24:51
>>437
すいません。全角空白は私の不注意でした。
しかし、これを削っても同じエラーが出てしまいます。

ちなみに、xmpfilterを通さなければtest.rbはきちんと実行することが出来ます。


439:デフォルトの名無しさん
09/08/26 19:34:46
自動生成された \bin\xmpfilter がまずいような気もする
もしかして cygwin か?

440:436
09/08/26 19:51:21
>>439
いえ、cygwinではなくコマンドプロンプトです。
rcodetoolsが自動生成するファイルがどこにあるのか分からないのですが、
どこに作成するのか教えて頂けないでしょうか?


441:デフォルトの名無しさん
09/08/26 20:29:59
>>440
gem contents GEM名
あとバージョンはruby -v結果のコピペで
それとたぶんOneClickInstallerだと思うんだけどそれも明記するとありがたい

442:デフォルトの名無しさん
09/08/26 21:03:14
>>441
申し訳ありません。gem contents rcodetoolsとするとファイル構成は出てくるのですが
そこからどこに一時ファイルが作られるのか私には分かりませんでした。

rubyのバージョンは
ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32] です。
URLリンク(www.garbagecollect.jp)
↑からダウンロードしてきました。



443:デフォルトの名無しさん
09/08/26 23:59:43
ルビーでGUIは作れるのでしょうか?

444:デフォルトの名無しさん
09/08/27 00:02:08
URLリンク(www.google.com)

445:436
09/08/27 00:08:38
すいません、多分解決したみたいです。
ruby 1.8.7 , ruby1.9.1 とverを上げてxmpfilterを実行してみたところ無事に実行出来ました。

お騒がせして申し訳ありませんでした。
返信をして下さった方、どうもありがとうございました。


446:デフォルトの名無しさん
09/08/27 21:17:22
データを突っ込んで行ってそれがあるかないかを高速に判断する場合
ハッシュがベストですか?

list["a"] = true

if list["a"] then ...

で動くんですけどtrueってデータもペアで格納されるのがなんとなく無駄な飢餓

447:デフォルトの名無しさん
09/08/27 21:50:35
とりあえず Hash 使えということになってる
Hash で問題がある場合にのみ他のめんどくさい手段を検討する

あと true はいつどこで呼んでもオブジェクト ID が 2 で固定なので無駄も何もねえよ

448:デフォルトの名無しさん
09/08/28 09:53:51
Hashでいいと思う
標準添付のSet(集合)なんてHashで実装されてるし。

449:デフォルトの名無しさん
09/08/28 11:52:17
こっち↓と

if point > 0
 result['WIN'] += 1
elsif point < 0
 result['LOSE]' += 1
else
 result['DRAW'] += 1
end

こっち↓

win_or_lose = point > 0 ? 'WIN'  \
       : point < 0 ? 'LOSE' \
       :        'DRAW'

result[win_or_lose] += 1

どちらがいいと思いますか?

450:デフォルトの名無しさん
09/08/28 11:54:52
>>449
前者。

451:デフォルトの名無しさん
09/08/28 12:10:04
>>450
d

452:デフォルトの名無しさん
09/08/28 12:17:21
三項演算子は好きこのんで使うものじゃないね

result = if flag then true else false end
どうしても一行で書きたい時にこれよりはマシって程度


453:デフォルトの名無しさん
09/08/28 12:35:54
>>449
case
when point > 0 then result['WIN'] += 1
when point == 0 then result['DRAW'] += 1
when point < 0 then result['LOSE'] += 1
end


454:デフォルトの名無しさん
09/08/28 12:42:10
前どっかで書いたが、条件演算子は便利なんだからどんどん使ってよい
そして、どんどん書き換えろ

条件演算子の中で整頓改行したり ( ) でネストしたり ; つけたりするのは禁止
条件演算子の状態に固執するのはただのアホ
条件演算子の 9 割は最終的には長い条件分岐に書き換えられてしまう
だったらプロトタイプは早くてうまくてやっすいのにしたほうがいいってもんだ

455:デフォルトの名無しさん
09/08/28 12:48:24
Rubyの三項演算子の平均寿命は1日だそうな

456:デフォルトの名無しさん
09/08/28 12:49:23
Rubyの場合ifが式だからifで書けばいいと思うんだけど。
可読性もそのほうが高いと思わない?

457:デフォルトの名無しさん
09/08/28 12:52:28
if のほうがわかりやすそうな気がするときと、
条件演算子のほうがわかりやすそうな気がするときの
2つがあるような気がする

極めて単純な見栄えの問題
他の言語では三項演算子だけが値を返すから入れ替えが効かないけど
Rubyは動作自体は結局一緒だから
(パースの受け方は違うかもしれない)

458:デフォルトの名無しさん
09/08/28 12:55:17
>>453
case文も使えるんだ。
なるほど。

459:デフォルトの名無しさん
09/08/28 13:03:54
case文の意味なくないか?w

460:デフォルトの名無しさん
09/08/28 13:08:40
空 case の例としてはわりと妥当だと思う
else raise の余地がないのがやや弱いがわかりやすかろう

461:デフォルトの名無しさん
09/08/28 13:13:41
このへんは cond をかっちょええと思うかわかりにくくなったと思うかという話になるような気がしないでもない

462:デフォルトの名無しさん
09/08/28 13:16:27
result[ case
        when point > 0 then 'WIN'
        when point == 0 then 'DRAW'
        when point < 0 then 'LOSE'
    end ] += 1

だろJK

463:デフォルトの名無しさん
09/08/28 13:17:36
>>460
その空case自体に疑問
条件に重複する部分がないのを暗示してる、みたいなニュアンス?

464:デフォルトの名無しさん
09/08/28 15:30:39
コードゴルファー登場↓

465:デフォルトの名無しさん
09/08/28 16:12:32
わいは猿や!

466:デフォルトの名無しさん
09/08/28 16:24:10
result[point / 0.0] += 1

467:466
09/08/28 16:25:20
point = 0 のときダメだった。スマン

468:デフォルトの名無しさん
09/08/28 16:25:42
result[{1=>'WIN',0=>'DRAW',-1=>'LOSE'}[point<=>0]]+=1

469:デフォルトの名無しさん
09/08/28 16:30:16
result[%w[DRAW WIN LOSE][point<=>0]]+=1

470:デフォルトの名無しさん
09/08/28 18:07:31
配列で要素が重複していたときに重複している要素の値が知りたいのですが
簡単な方法はないでしょうか?
[1,2,3,4,5,6,3]であれば3が知りたいです
重複は1種類が1回だけしていると仮定してかまいません


471:デフォルトの名無しさん
09/08/28 18:30:43
ありそうでないんだよね、そういう機能
重複は全部消去するのが基本
「配列の構成要素を uniq で決定し、それと同じ値を持つ最初の場所を探してその要素を配列から消す」
という手順でやるとこうなる

arr = [1, 2, 3, 4, 5, 6, 3]
arr.uniq.each{|e| arr.delete_at(arr.index(e))}
p arr

[3]

これだと arr が失われてしまうので他の人の案待つか事前に複製でもしとけ

472:デフォルトの名無しさん
09/08/28 19:17:38
a1 = ary.sort
a2 = a1.uniq
i = 0
a1.find_all {|v|
 if v.eql? a2[i]
  i += 1
  false
 else
  true
 end
}

またselectかと言われそうだけどこのスレでは三回目


473:デフォルトの名無しさん
09/08/28 19:28:17
h = {}
p aryfind {|a| h[a] || !(h[a] = true)}


474:デフォルトの名無しさん
09/08/28 19:30:14
ary.find

475:デフォルトの名無しさん
09/08/28 21:12:35
>>470

arr = [1,2,3,4,5,6,3]
hash = {}
hash.default = 0
arr.each {|x| hash[x] += 1 }
p hash.keys.select {|k| hash[k] > 1 }

476:470
09/08/28 21:24:24
みなさん色々な案ありがとうございます
参考にさせてもらいます!

477:デフォルトの名無しさん
09/08/29 07:31:27
One Click InstallerだかをWindowsで入れると、

 RUBYOPT=-rubygems

だかを環境変数に設定するというような余計な(親切な)ことをしてくれるわけですが、
これって、

 require "rubygems"

する必要がなくなるわけですよね?

他の環境などで同じようなこと(RUBYOPT=-rubygems) している人っていますか?
やっぱり、require "rubygems"をソース内に書いた方がいいものですかね?

478:デフォルトの名無しさん
09/08/29 09:13:38
require "rubygems" は必ず書かなければならない
俺が RUBYOPT を嫌いな理由の一つ
わざわざ可搬性下げて何をしたいのか

479:デフォルトの名無しさん
09/08/29 09:45:31
あとから広まって事実上の標準になる予定だったんだよ

480:デフォルトの名無しさん
09/08/29 09:51:04
別に RUBYOPT は rubygems 用の機能じゃねえが、1.9 で組み込みになったから
RUBYOPT=-rubygems に関してはもう無用の長物だな

481:デフォルトの名無しさん
09/08/29 10:20:24
>>470
ary.group_by{|e|e}.to_a.select{|e|e[1].size>1}.map(&:first)
とか
ary.sort.each_cons(2).select{|x,y|x==y}.map(&:first).uniq
とか

482:デフォルトの名無しさん
09/08/29 10:55:34
>>481
selectするならto_aはいらん
と思ったが、multiple values for a block parameter (2 for 1)とい
う警告が何度も出るのか

ary.group_by{|e|e}.select{|e,l|l.size>1}.map(&:first)


483:デフォルトの名無しさん
09/08/29 10:56:49
>>478
> 俺が RUBYOPT を嫌いな理由の一つ
「江戸の仇を長崎で討つ」ってやつか

484:デフォルトの名無しさん
09/08/29 11:15:11
そもそもrubygemsが嫌い

485:sage
09/08/30 00:10:43
同一のテーブル構造をもつデータベースAとBがあって、
データベースの内容を比較したいです。

どちらのデータベースもSQLiteのファイルです。

ActiveRecordというのを使うのが簡単そうなのですが、
可能なのでしょうか?

というのは調べてみるとActiveRecordでは、
データベースへの接続(ActiveRecord::Base.establish_connection)とか、
レコードの検索を、クラスメソッドで操作しています。

となると、上記のように同一クラスから
別々のデータベースへ接続するインスタンスを作成して、
インスタンス経由で操作するという使い方はできないように見えます。


486:デフォルトの名無しさん
09/08/30 01:08:00
>>485
SQLite3::Database.new(file)で両方のデータベース開いて
テーブル毎にレコードの比較した方が楽な気がする


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

5388日前に更新/180 KB
担当:undef