Rubyについて Part 19

902デフォルトの名無しさん:2006/04/17(月) 20:56:24
~/.irbrc
ってWinだとどこのディレクトリになるの?
903デフォルトの名無しさん:2006/04/18(火) 00:02:12
>902
"~"がどこに当たるかって話だよね?

NT系だと%USERPROFILE%
(たいていC:\Documents and Settings\ユーザー名)

9x系は分からん。
904デフォルトの名無しさん:2006/04/19(水) 01:04:21
>>903
1.9ユーザ発見。

> NT系だと%USERPROFILE%

基本的には%HOME%だけど、1.9では、初期化時に設定されていなければ、
以下の順序で最初に見付かったものをセットするようになっている。

1 %HOMEDRIVE%%HOMEPATH%
2 %USERPROFILE%
3 マイ ドキュメント
905903:2006/04/19(水) 02:41:50
>904
あり? 漏れ1.8.4(i386-mswin32)だがそれでいけたけど。
ちなみにHOMEを別途設定して、%HOME%に.irbrcを置いても
%HOMEDRIVE%%HOMEPATH%に.irbrcを置いても読んでるぽい。(両方に置いたらどうなるかは試してない)
ひょっとしてirbが自力更生(?)してるのかな。ソース読む気力無いので後は知らない(ぉぃ)

てか%USERPROFILE%より%HOMEDRIVE%%HOMEPATH%が先なのか。スマソ>902
906デフォルトの名無しさん:2006/04/19(水) 09:34:07
>>905
irbはカレントディレクトリにあるのも読むぞ。
そういうことじゃないか?
907デフォルトの名無しさん:2006/04/19(水) 21:41:13
x = [[1, 2, 3], [5, 3, 7], [1, 1, 7], [3, 2, 9], [5, 4, 8]]
みたいなArrayを
p x.sort_ex
#=>[[1, 2, 3], [1, 1, 7], [3, 2, 9], [5, 3, 7], [5, 4, 8]]
みたいに一番最初の要素のみでソート(重複した場合はソースの順番)したいんですが何かお手軽な方法はありますか?
普通にsortすると2番目以降も反映されてしまいますし
def sort_ex
 self.sort{|a, b|
  a[0]<=>b[0]
 }
end
みたいにすると重複した場合にソースの順番がバラバラになってしまいます
908デフォルトの名無しさん:2006/04/19(水) 22:12:08
>>907
[[1, 2, 3], [5, 3, 7], [1, 1, 7], [3, 2, 9], [5, 4, 8]].sort_by {|e| e[0]}
909デフォルトの名無しさん:2006/04/19(水) 22:18:03
>>908
sort_byだと安定じゃないみたいなので907の望むのとは違ってるよ。

ヘルプに載ってた例だけど、下のような感じで書けばいいらしい。
i = 0
ary.sort_by {|v| [v, i += 1] }

でも、i が綺麗じゃないねぇ。
910デフォルトの名無しさん:2006/04/20(木) 00:18:16
>906
……その通りですたorz
重ね重ね相済まぬ>902
911デフォルトの名無しさん:2006/04/20(木) 01:17:53
stable_sort_by実装すればいいやんけ
912デフォルトの名無しさん:2006/04/20(木) 03:02:57
def stable_sort_by
self.zip((0..self.size).to_a).sort_by{|e| [yield(e[0]),e[1]]}.map{|e| e[0]}
end
913デフォルトの名無しさん:2006/04/20(木) 19:15:47
zip のところを enum_for(:each_with_index) にするとより変態チックでよいと思います
914912:2006/04/20(木) 21:56:14
>>913
enum_for知らなかった。こりゃ便利。

def stable_sort_by
self.enum_for(:each_with_index).sort_by{|e,i| [yield(e),i]}.map{|e,| e}
end
915デフォルトの名無しさん:2006/04/21(金) 01:30:36
enum_with_indexも思い出してあげて。
916907:2006/04/22(土) 02:07:35
レスありがとうございます
出来ました…が、使ってみてリバースソートできないことに気が付いた…il||li ○| ̄|_
もう少しいじってみます…
917デフォルトの名無しさん:2006/04/22(土) 04:49:26
- e[0] では?
918デフォルトの名無しさん:2006/04/23(日) 03:28:45
環境が連続してると勘違いしてんのか
919デフォルトの名無しさん:2006/04/23(日) 09:39:04
>>918
kwsk
920デフォルトの名無しさん:2006/04/23(日) 16:38:35
↓の2つのクラスのf.puts以外のところを共通化したいんだけどいいパターンないですか?
class BBS
 FILE='bbs.txt'
 def initialize
  @db=PStore.new('bbs.db')
 end
 def print
  @db.transaction{
   @db.roots.each{|name|
    x=@db[name]
    file=File.join(x['dir'],FILE)
    if(!File.exist?(file),'w') then
     open(file){|f| f.puts(x['url'])
    end
   }
  }
 end
end
class Sure
 FILE='sure.txt'
 def initialize
  @db=PStore.new('sure.db')
 end
 def print
  @db.transaction{
   @db.roots.each{|name|
    x=@db[name]
    file=File.join(x['dir'],FILE)
    if(!File.exist?(file)) then
     open(file,'w'){|f| f.puts(x['title'])
    end
   }......
921デフォルトの名無しさん:2006/04/23(日) 16:58:31
#テキトー。細かい仕様は知らぬ。
class MyPrint #モジュールでも良いかもね
 def print
  @db.transaction{
   @db.roots.each{|name|
    x=@db[name]
    file=File.join(x['dir'],FILE)
    if(!File.exist?(file),'w') then
     open(file){|f| fputs f, x }
    end
   }
  }
 end
end
class BBS < MyPrint
 FILE='bbs.txt'
 def initialize
  @db=PStore.new('bbs.db')
 end
 def fputs(f, x)
  file.puts(x['url'])
 end
end
class Sure < MyPrint
 FILE='sure.txt'
 def initialize
  @db=PStore.new('sure.db')
 end
 def fputs(f, x)
  file.puts(x['title'])
 end
end
922921:2006/04/23(日) 16:59:33
ミス。fputs メソッドの中身は file.puts じゃなくて f.puts だった。
923デフォルトの名無しさん:2006/04/23(日) 21:47:12
>>911
FILEは?
924デフォルトの名無しさん:2006/04/23(日) 22:35:39
ActiveScriptRuby対応エヂタ
http://www.emeditor.com/jp/pro6.htm
925デフォルトの名無しさん:2006/04/24(月) 08:53:47
>>920
f.putsのところを別メソッドに切り出す。
class AbstractBBS
 def func()
  raise NotImplementedError.new # 切り出した部分
 end
 def print
  ...
  func()
  ...
  end
end

class BBS < AbstractBBS
 def func()
  # f.putsの処理その1
 end
end

class Sure < AbstractBBS
 def func()
  # f.putsの処理その2
 end
end
926デフォルトの名無しさん:2006/04/24(月) 10:56:09
>>925
ありがとうございます
NotImplementedErrorなんてのがあるのか
抽象メソッドが作れるですな
927デフォルトの名無しさん:2006/04/25(火) 13:51:15
なんかこのスレにウィルスがいるとノートン先生に怒られるなあ。
928デフォルトの名無しさん:2006/04/25(火) 13:52:02
929デフォルトの名無しさん:2006/04/25(火) 14:56:22
こんなmail欄ごときに反応してるのか orz
930デフォルトの名無しさん:2006/04/25(火) 18:24:30
>>929
なるほど、そういうことでつか。
931デフォルトの名無しさん:2006/04/25(火) 18:51:11
UNIX/Linuxさえなければこんな迷惑をこうむらずにすんだのにな。
932デフォルトの名無しさん:2006/04/25(火) 21:20:03
vbs反応するから、どっちにしてもかわらんよ
933デフォルトの名無しさん:2006/04/25(火) 22:00:50
単に、こんなもんに反応するノートン先生が狂ってる。
934デフォルトの名無しさん:2006/04/25(火) 22:12:05
ノートン先生に感染するウィルスは無いのだろうか
935デフォルトの名無しさん:2006/04/25(火) 23:40:24
ノートン先生って神経質なマッドサイエンティストっぽいな。
936デフォルトの名無しさん:2006/04/26(水) 00:22:19
>935
ttp://nijiura-os.hp.infoseek.co.jp/security/norton/01.jpg
まさにその通りなんですけど?
937デフォルトの名無しさん:2006/04/26(水) 20:17:31
これで相殺
938デフォルトの名無しさん:2006/04/26(水) 20:58:47
普通に迷惑だからやめてくれ
939デフォルトの名無しさん:2006/04/28(金) 00:08:52
>>872
忘れかけてた。これどうなった?>>882くらいで終わってる感じだけど。
ソース読み切れなくてもいいからさ、確認できた人が報告した方が将来の誰かのためにもなると思うよ。複数の環境で再現できるのが確認できてるわけだし。
940デフォルトの名無しさん:2006/04/28(金) 00:49:13
>>939
Cygwin だと Ruby に限らずファイル開けないっぽいね。
941・∀・)っ-○●◎ ◆Pu/ODYSSEY :2006/04/28(金) 00:56:55
ActiveScriptRubyならおkじゃね?
Cygwin版使うのはApache立ち上げて自作CGIのテストやるとき
942デフォルトの名無しさん:2006/04/28(金) 01:19:30
>>939
Cygwin 側の問題ならスレ違い
別の言語や別の環境で試してみてくれよ
943デフォルトの名無しさん:2006/04/28(金) 01:41:09
再現スクリプトきぼーん。
944デフォルトの名無しさん:2006/04/28(金) 05:28:30
945デフォルトの名無しさん:2006/04/28(金) 13:49:53
>>939
メンテナが対応パッチまで作ってたから、報告はいらないんじゃね?
946939:2006/04/28(金) 17:53:39
>>940
>>942
>>945
洩れが無知でした。情報さんくす。ていうか正直すまんかった
947デフォルトの名無しさん:2006/04/28(金) 22:08:59
Rubyで名前付きパイプを扱う方法ありませんか?
948デフォルトの名無しさん:2006/04/28(金) 22:27:19
どういうプラットフォームで?

ext/dl 使えばなんでもできそうな気はする、とは言っておこう。
949・∀・)っ-○●◎ ◆Pu/ODYSSEY :2006/04/28(金) 22:37:07
ActiveScriptRubyなら普通にAPIコールでCreatePipe呼べばいいと思うよ
950デフォルトの名無しさん:2006/04/28(金) 22:40:58
ぷう
951デフォルトの名無しさん:2006/04/29(土) 00:31:58
おねにぃさま
952デフォルトの名無しさん:2006/04/29(土) 01:19:00
Rubyリファレンスマニュアルのwikiの字句構造の埋め込みドキュメントの説明だけど、今時は、もはやRDじゃなくてRDocスタイルを推奨すべきでは?
953947:2006/04/29(土) 05:31:18
>>948
Linux です

system("mkfifo hoge") で、FIFO作るのはできるんだけど、
opneして、getsで読み込み一回したあとは gets が即 nil で返ってきちゃう。
あと、書き込み側がopenするまで open() から返ってこないのも・・・

Cで
mkfifo()
open("hoge", O_RDONLY|O_NONBLOCK) した時と同様の挙動をさせたいんですが、
どうすればいいんでしょうか。
954デフォルトの名無しさん:2006/04/29(土) 14:29:13
>>953
File.open("hoge", File::RDONLY|File::NONBLOCK)
955デフォルトの名無しさん:2006/04/29(土) 20:10:32
今日のざっと見て3倍の速度(赤い彗星?)
今日のドナドナ夫
今日の黄金水
今日の「やっぱこれからはデジモでしょ」
今日のがまん汁委員会
今日の「あーそうさ.オレらはどうせしもじもですよ.」
今日の「やっぱイジメたいです.とことんまで.」
今日の「最近ヤツの動きが少なくてツマラン」
今日の「tDiaryはモテ系ってマジ?」
今日の「クソババァって誰のことよ?」
956デフォルトの名無しさん:2006/04/30(日) 00:06:36
>>952
日本の Ruby コミュニティは RDoc 好きじゃないんじゃない?
標準ライブラリには入ってるけど積極的に使ってる人いない気がする
957デフォルトの名無しさん:2006/04/30(日) 10:04:48
ていうかみんな使い方分かってないんじゃまいか。
いいサイト紹介キボン。
958デフォルトの名無しさん:2006/04/30(日) 13:09:04
試してないだろ?
ちょこちょこ使う分なら、ググった出てくる情報をさっと読めば使えると思うが。
最近は、日本語の説明も見掛けるし。
下手すりゃ RD よか、よっぼど分かりやすい。
959デフォルトの名無しさん:2006/04/30(日) 13:55:37
RDoc使う利点て何?
いや、煽りじゃなくて。
どんな時につかうのかなーと思って。
ソース内のコメントに使う?
960デフォルトの名無しさん:2006/04/30(日) 15:16:28
ソースから文書を生成できるから。最近の言語にはみんな付いてるよ。使われてるかはさておて。
961デフォルトの名無しさん:2006/04/30(日) 15:33:48
Rubyのライセンスって、GPLとどう違うの?
COPYING読んだら「GPLに基づく」と書いてあるけど、でもGPLそのままというわけではないんだよね。
962デフォルトの名無しさん:2006/04/30(日) 17:04:39
GPLだと著作権も放棄同然、
BSDだと論文と同じ扱いで著作権は堅持、
この中間で行くってことじゃないの?
963デフォルトの名無しさん:2006/04/30(日) 17:44:08
>>962 日本語でおk
964デフォルトの名無しさん:2006/04/30(日) 20:55:10
>>963
むしろ日本語としては問題ないが意味がわからない。
A=B,B=CなのでA=(B+C)/3
と言ってるようなもん。
965デフォルトの名無しさん:2006/04/30(日) 21:00:00
どっちかって言うとBSDのほうがゆるいライセンスだと思うんだけどな。
966・∀・)っ-○●◎ ◆Pu/ODYSSEY :2006/04/30(日) 21:03:25
GPLに基づくってのはGPLそのもの。
いちどGPLを選択したら他のライセンスに変更できない融通のきかなさ。


>>965
商用利用考えるなら普通はBSDライセンスのほうが流用しやすい
967デフォルトの名無しさん:2006/05/01(月) 16:37:29
英文を読んで意味がわからないならCOPYING.jaを読めばいいのに。
デュアルライセンスだからGPLまたは下記のライセンスに従え、と書いてあるだけじゃん。
968デフォルトの名無しさん:2006/05/02(火) 00:19:17
end end end end end end end
↑これどうにかならない?
969デフォルトの名無しさん:2006/05/02(火) 00:43:59
>>968
スーパー括弧みたいのが欲しいってこと?
970デフォルトの名無しさん:2006/05/02(火) 01:02:04
begin と end ってのは、大失敗だったと思う。
{と}で良かった。
971デフォルトの名無しさん:2006/05/02(火) 01:08:09
補完なしでしこしこ作ってるから閉じるのが面倒になってきたんだ
end*8 みたいにすると do の数を数えなきゃならないから逆効果

解決方法思いついたけどPythonになった orz
972デフォルトの名無しさん:2006/05/02(火) 01:13:27
973デフォルトの名無しさん:2006/05/02(火) 08:15:23
endclass, enddef, endif, enddo
974デフォルトの名無しさん:2006/05/02(火) 09:40:14
ssalc, fed, fi, od
975デフォルトの名無しさん:2006/05/02(火) 10:20:32
補完とかそういうことが問題じゃないんだ
end乱舞は見た目がきもい
976デフォルトの名無しさん:2006/05/02(火) 10:23:10
} 乱舞は気にならないの?
977デフォルトの名無しさん:2006/05/02(火) 10:24:40
おまえはきもいだろうが、俺はきもくない。以上。終了。
978デフォルトの名無しさん:2006/05/02(火) 11:25:48
>>976
end よりはマシ
スクリプト言語だぞゴラァと言いたいためだけに
わざわざbegin end を使っているとすら感じる
979デフォルトの名無しさん:2006/05/02(火) 11:46:01
vi なので { } でないと辛い。
980デフォルトの名無しさん:2006/05/02(火) 11:48:24
そこまでネストするプログラムを書く、
お前のヘタレプログラミングをなんとかするか、
Pythonに鞍替えすればいいじゃん。

今更どーこー言おうが、{}にはならんよ。
互換性がどうこううるさいヤツもいるってのに。
981デフォルトの名無しさん:2006/05/02(火) 11:52:00
>解決方法思いついたけどPythonになった orz

おぇっ やめてくれ
あの趣味の悪さと中途半端さ、途中でどの言語で
書いてるか判らなくなる文法の汚さは、悪魔の言語

982デフォルトの名無しさん:2006/05/02(火) 12:00:41

はいはい、貴方が大好きなC系の言語に似てないと、全部汚い文法なんだよねー。
983デフォルトの名無しさん:2006/05/02(火) 12:18:05
>>982
良くわかってんじゃん。
984デフォルトの名無しさん:2006/05/02(火) 12:55:53
↑自分が低脳晒してるのに気付いてないのね
985デフォルトの名無しさん:2006/05/02(火) 14:20:14
>>979
vimに乗り換えればOK
986デフォルトの名無しさん:2006/05/02(火) 14:33:42
ネストしないプログラムをかけれるような文法と言語ってどんなんだろう

Perlの暗黙標準出力なんかがぱっと浮かんだけど
987デフォルトの名無しさん:2006/05/02(火) 15:04:49
条件文や繰り返し文がクロージャを引数として取る関数として実装されていて、かつ、無名クロージャを書くことができない文法であればネストしないプログラムを書くしかなくなるのではないだろうか。
988デフォルトの名無しさん:2006/05/02(火) 16:44:09
テキストでプログラム表現しないこと前提にすればいいんじゃね
989デフォルトの名無しさん:2006/05/02(火) 17:11:37
RubyはC系じゃない文法だから逆によい。
C系は普段使う/使わざるを得ない古女房。Rubyは誰にもないしょで出会う秘密の恋人。

つまりだな、Rubyは一夫多妻制という教祖の思想を反映した言語だったんだよ!
990デフォルトの名無しさん:2006/05/02(火) 17:42:10
な、なんだってー(AAry と返してやりたいが、内容はふーんそうでしかないな
991デフォルトの名無しさん:2006/05/02(火) 18:00:30
endで文句いう人って、対応関係がわからないから文句いってるのかな。
カッコだったら簡単にわかるけど、endだとそれがわからない。
もしそれだけが問題なら、例えばendにカーソルをおくと対応するifやdefをハイライト表示するような、
エディタのマクロやIDEのプラグインを誰かが用意してあげればいいってこと?
それ以外に問題点ってある?
992デフォルトの名無しさん:2006/05/02(火) 18:17:49
ワンライナーが ; だらけで汚くなるとか?
993デフォルトの名無しさん:2006/05/02(火) 18:49:35
1.9 で一年弱ほどの間、end のかわりに ;; が使えるようになってたけど
不評なので取り下げるそうだ。

[ruby-dev:28608]
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/28608
994デフォルトの名無しさん:2006/05/02(火) 19:46:10
そりゃbeginが残ってendだけ;;にしたら、pythonもびっくりの汚さになっちゃうからねw
995デフォルトの名無しさん:2006/05/02(火) 19:47:13
>>991
ハイライト表示用の設定ファイル有った希ガス
996デフォルトの名無しさん:2006/05/02(火) 21:33:09
endが3文字なのに対してbeginが5文字もあるのがバランス悪いと言われる原因


begにしよう
997デフォルトの名無しさん:2006/05/02(火) 21:36:12
(そうだ、括弧にしよう)
998デフォルトの名無しさん:2006/05/02(火) 21:44:41
>>994
beginが残ってて…

お前本当にRubyやってんのか?
999デフォルトの名無しさん:2006/05/02(火) 22:10:31
Rubyについて Part 20
http://pc8.2ch.net/test/read.cgi/tech/1146575324/

テンプレに不備とかあったらスマン
1000デフォルトの名無しさん:2006/05/02(火) 22:17:34
1000
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。