Rubyについて Part 39at TECH
Rubyについて Part 39 - 暇つぶし2ch1:デフォルトの名無しさん
10/02/06 23:48:01
オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。
まったりと行きましょう。

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

= 前スレ
Rubyについて Part 38
スレリンク(tech板)

過去スレ・関連スレは >>2-

2:デフォルトの名無しさん
10/02/06 23:51:40
Rubyリファレンスマニュアル刷新計画
URLリンク(doc.loveruby.net)
ライブラリ一覧
URLリンク(doc.loveruby.net)
RubyExtensionProgrammingGuide
URLリンク(i.loveruby.net)
Ruby Hacking Guide
URLリンク(i.loveruby.net)
Symbol < Stringも止める。
URLリンク(www.rubyist.net)
クラスローカルインスタンス変数
URLリンク(www.rubyist.net)
クラス変数
URLリンク(www.rubyist.net)
ローカル変数
URLリンク(www.rubyist.net)
可視性メモ
URLリンク(www.rubyist.net)
URLリンク(blade.nagaokaut.ac.jp)
URLリンク(blade.nagaokaut.ac.jp)
YARV without 1.9
URLリンク(www.rubyist.net)
URLリンク(www.atdot.net)
URLリンク(i.loveruby.net)
JSON
URLリンク(json.rubyforge.org)
URLリンク(webos-goodies.jp)
URLリンク(webos-goodies.jp)
YAML
URLリンク(www.ruby-lang.org)
URLリンク(jp.rubyist.net)
URLリンク(www.namikilab.tuat.ac.jp)

3:デフォルトの名無しさん
10/02/06 23:53:44
Ruby/Gtk+
URLリンク(www.unixuser.org)
URLリンク(takeposo.sakura.ne.jp)
URLリンク(ruby-gnome.sourceforge.net)
URLリンク(ruby-gnome.sourceforge.net)
URLリンク(ruby-gnome2.sourceforge.jp)
URLリンク(psux1.kek.jp)
URLリンク(www.rubycgi.org)
URLリンク(ruby.gfd-dennou.org)
URLリンク(www.magicianmaster.jp)

Ruby on Rails
スレリンク(tech板)
URLリンク(jp.rubyist.net)
URLリンク(www.onlamp.com)
URLリンク(kyotosanga.com)
URLリンク(blog.hacklife.net)
URLリンク(www.metadata.co.jp)
URLリンク(japan.cnet.com)
URLリンク(japan.cnet.com)
URLリンク(journal.mycom.co.jp)
URLリンク(www.atmarkit.co.jp)
URLリンク(www.atmarkit.co.jp)
URLリンク(www-06.ibm.com)
URLリンク(itpro.nikkeibp.co.jp)
URLリンク(itpro.nikkeibp.co.jp)

4:デフォルトの名無しさん
10/02/06 23:59:21
 ○  >>1 乙 もうお前に用はない 
 く|)へ
  〉   ヽ○ノ
 ̄ ̄7  ヘ/
  /   ノ
  |
 /
 |


5:デフォルトの名無しさん
10/02/07 01:13:31
おつ

6:デフォルトの名無しさん
10/02/07 01:16:49
..           (.
.            )
      ,―ヽ__(__、―
   ,/  ノ       ヽ  ~\
  /   ノ   IPA    ヽ   ~\
/   ノ           ヽ、  `ヽ
|    ノ / ̄\   / ̄~ヽ ヽ    i
|   ノ              |  ノ
\  |  <●>  <●>  (  )
 \ |      | |       i /
    |      /  ヽ       レ
   i     (●_●)      /  
    i、    ,-―-、   ・ /
    i、  <(EEEEE)> ∵/    スレ立て乙ピョん☆
      i、  \   ./  /
       \   ーー   ,ノ       
  ,,.....イ.ヽヽ、ー-―一ノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |
      >   ヽ. ハ  |   ||

7:デフォルトの名無しさん
10/02/08 21:15:51
Mechanizeアップデートされたのか
なんかgem installでは入ってこないんだが

8:デフォルトの名無しさん
10/02/08 22:21:43
..           (.
.            )
      ,―ヽ__(__、―
   ,/  ノ       ヽ  ~\
  /   ノ   IPA    ヽ   ~\
/   ノ           ヽ、  `ヽ
|    ノ / ̄\   / ̄~ヽ ヽ    i
|   ノ              |  ノ
\  |  <●>  <●>  (  )
 \ |      | |       i /
    |      /  ヽ       レ
   i     (●_●)      /  
    i、    ,-―-、   ・ /
    i、  <(EEEEE)> ∵/    おまえらInfoQのインタビュー記事見ろよな☆
      i、  \   ./  /
       \   ーー   ,ノ       
  ,,.....イ.ヽヽ、ー-―一ノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |
      >   ヽ. ハ  |   ||

9:デフォルトの名無しさん
10/02/08 22:24:30
↑心の底からたのしそうでなによりです

10:デフォルトの名無しさん
10/02/08 22:36:13
>Ruby開発者をむっとさせるのは簡単だ。言語内でendが重要な役割を果たすことをなじるか、
>グローバルインタプリンタロック(GIL)があることで、インタプリンタ内で一度にひとつのスレッドしか実行できないことを指摘すればいい。
まで読んだ

11:デフォルトの名無しさん
10/02/08 22:42:05
なんで++がないの、も可。


12:デフォルトの名無しさん
10/02/08 22:44:58
Windowsの話題を出すのでも可

13:デフォルトの名無しさん
10/02/08 22:55:35
>>11-12のレベルの低さに失望した

14:デフォルトの名無しさん
10/02/08 22:56:48
ウィンドウズでのインストーラネタは定番だしな。
すなおにvb使えw

15:デフォルトの名無しさん
10/02/08 22:58:28
Windows使いならPythonでも使ってろよ

16:デフォルトの名無しさん
10/02/08 23:07:06
powershell 辺りも悪くはない・・・

17:デフォルトの名無しさん
10/02/08 23:10:14
遅すぎる。
PS使ってからRubyに戻ると羽の生えたように軽く感じる。

18:デフォルトの名無しさん
10/02/08 23:24:41
早さは微妙だけどぐぐりやすいので重宝する
ひとには意外と会うんでないかという・・・

インデント強制はやっぱりめどい

19:デフォルトの名無しさん
10/02/09 01:39:59
とりあえずレスに Windows ってキーワードを添えるだけでレスいっぱいもらえることは判った

20:デフォルトの名無しさん
10/02/09 01:50:26
>>19
二番煎じじゃいまいちだな。もすこし頑張れ。

21:デフォルトの名無しさん
10/02/09 01:55:37
まあ煽りじゃなくてWindowsとの親和性は残念だけどRubyよりPythonの方が高いな

22:デフォルトの名無しさん
10/02/09 01:59:13
てめぇ、IronRubyナメてんのか

23:デフォルトの名無しさん
10/02/09 02:08:45
>>22
悔しかったら1.0出してみろよ!!!

24:デフォルトの名無しさん
10/02/09 02:11:40
Windows方面はIronRubyに任せるというのも……
せっかく処理系たくさんあるんだし
まあ、少なくとも安定してからの話か

25:デフォルトの名無しさん
10/02/09 08:02:25
jython と ironruby

ふたりは不人気!!!

26:デフォルトの名無しさん
10/02/09 08:52:54
Python側の親和性ってどんな感じ?
Windows用GUIアプリがサクサク作れるとか?

27:デフォルトの名無しさん
10/02/09 12:20:25
RubyとかPythonでGUIって発想が怖い・・・

28:デフォルトの名無しさん
10/02/09 12:25:29
GUIほどオブジェクト指向を楽しめるジャンルないのに

29:デフォルトの名無しさん
10/02/09 12:28:32
GUIのAPIを操作するサブ言語として自分の見知ったスクリプト言語を使えるというのは利点だろう

きちんと隠蔽されてきちんとライブラリが作られているということが最低条件だが
「これなら直接書いたほうが早いわぼけー」というラッパーは存在価値がないぞ

30:デフォルトの名無しさん
10/02/09 13:52:50
頭悪そうな奴

31:デフォルトの名無しさん
10/02/09 14:06:36
>>27
こんな風に思ってる人いるんだ。
お手軽でいいのに。


32:デフォルトの名無しさん
10/02/09 15:10:45
>>29
>きちんと隠蔽されて
の意味が良くわからない。
一体何を隠蔽するのだろう。

33:デフォルトの名無しさん
10/02/09 15:57:11
>>26
PyQt4 おすすぬ

34:デフォルトの名無しさん
10/02/09 15:58:02
>>29
それどこのMFC

35:デフォルトの名無しさん
10/02/09 20:03:42
>>31
ただ、Javaでもぶっちゃけそんなに変わらないんじゃないかと
C#もあるし
Pythonでそんなに楽できるのかな~という気はする

それに、スクリプトからGUIを起動するのはなんか気持ち悪い
いちいちexe化してたらスクリプトの利点もなくなりそうだし

36:デフォルトの名無しさん
10/02/09 20:09:40
そもそもスクリプト言語って用途的にはフィルタに使うもんだべ?

37:デフォルトの名無しさん
10/02/09 20:13:43
んなこたない
ただIDEと高度に結びついてないとGUIはダルい

38:デフォルトの名無しさん
10/02/09 20:53:05
IDEまでいかなくても、デザイナレベルのものがあれば十分だと思うけどね。


39:デフォルトの名無しさん
10/02/09 20:55:50
そこまでしてスクリプトにこだわらなくても
LinuxならJava、WinならC#使えよ気持ち悪い

40:デフォルトの名無しさん
10/02/09 21:06:32
別にこだわっちゃいないけど、逆に何でそんなにスクリプトでGUI書くことを
否定したがってんの?


41:デフォルトの名無しさん
10/02/09 22:31:19
そりゃLLで本格的にGUI使われたらJavaやC#の商売あがったりだからだよ

42:デフォルトの名無しさん
10/02/09 22:36:37
if String.new.respond_to?(:force_encoding) はやっぱりカッコ悪いしわかりにくいと思う

43:デフォルトの名無しさん
10/02/09 22:43:36
defined?(::Encoding) が

module M; module Encoding; end; end
include M

に対して無力だと知ったとき俺は大人の階段を一段のぼった

44:デフォルトの名無しさん
10/02/09 22:45:00
      ,―ヽ_(((((_、―
   ,/  ノ       ヽ  ~\
  /   ノ   IPA    ヽ   ~\
/   ノ           ヽ、  `ヽ
|    ノ / ̄\   / ̄~ヽ ヽ    i
|   ノ              |  ノ
\  |  <●>  <●>  (  )
 \ |      | |       i /
    |      /  ヽ       レ
   i     (●_●)      /  
    i、    ,-―-、   ・ /
    i、  <(EEEEE)> ∵/    時代はオープンソース。Windowsなんてほっとけ
      i、  \   ./  /
       \   ーー   ,ノ       
  ,,.....イ.ヽヽ、ー-―一ノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |

45:デフォルトの名無しさん
10/02/10 01:24:48
RUBY_VERSION <'1.9' 撲滅派の人に質問

pp の表示が「日本語」になるかどうかで場合分けしたいんだけど、どう書けばいい?
Ruby 1.9 ってエンコーディングがあってれば p の表示が日本語になることがあるよね

46:デフォルトの名無しさん
10/02/10 09:38:52
>>45
初心者スレで質問したほうがよかったんじゃない?

var = "日本語"
if var.inspect =~ /\P{ASCII}/
puts "厳密には非ASCII文字"
else
puts "ASCII"
end

47:デフォルトの名無しさん
10/02/10 09:40:23
あとp と pp は
inspect と pretty_indpect で使い分けて

48:デフォルトの名無しさん
10/02/10 09:58:08
>>45
だいぶ前に似たようなことで迷って調べたことがある
そのときのスクリプトではこう書いた

STDOUT.respond_to?(:external_encoding)

たぶんこれがわかりやすいはず

49:デフォルトの名無しさん
10/02/10 15:31:56
Array#sampleが有ってArray#sample!が無いのはどなーいして?

50:デフォルトの名無しさん
10/02/10 15:47:10
なんでsample!が欲しくなったのか、一言どうぞ。


51:デフォルトの名無しさん
10/02/10 16:46:15
せんせいしつもん

$KCODE が使われてたらテストの動作変えたいです
でも $KCODE にアクセスしたら警告が表示されてしまう Ruby もあると聞きました

警告を出すことなしに
「$KCODE が時代遅れな場合は処理を変える」
ということをやる方法おしえてくださいチュ

52:デフォルトの名無しさん
10/02/10 16:47:23
1.9 への移行準備ってゆーか、注意事項とか確認したいんだけど、
読み物ありませんか?

53:デフォルトの名無しさん
10/02/10 17:02:20
>>51

$KCODEは実体がなく読み取りと読み出しのC関数があることによって
存在しているように見える仮想変数なんだが、1.9ではこの読み取りと
読み出し両方の関数で rb_warn という関数が常時呼ばれて警告が出る。

rb_warn は $VERBOSE.nil? が真なら出力することなくリターンするので、
テスト時に一時的にnilを代入すればよいと思う。(falseだとだめ)


54:デフォルトの名無しさん
10/02/10 17:13:24
>>52
URLリンク(jp.rubyist.net)

55:デフォルトの名無しさん
10/02/10 17:17:24
>>53
先生それは「警告うざければその前後で$stderr乗っ取って警告捨てればいいんじゃね」レベルです
その間に $VERBOSE を利用する人がいたらどうするんですか責任とってくれるんですか蒼い時代ですか

要は個別に制御する方法は特に用意されてないのね
ちょっとがっかり

56:デフォルトの名無しさん
10/02/10 17:24:53
テストが済んだら元に戻せばいいじゃない
割り込まれたくなければ Thread.criticalをいじればいいじゃない

57:デフォルトの名無しさん
10/02/10 17:27:08
tmp = $VERBOSE
$VERBOSE = nil
begin
 hogehoge()
ensure
 $VERBOSE = tmp
end

58:デフォルトの名無しさん
10/02/10 17:28:49
ActiveSupportにsilence_warningsあるね。


59:デフォルトの名無しさん
10/02/10 17:39:50
>>58
irb1.9> silence_warnings{ $KCODE }
nil
irb1.9> $KCODE
(irb):3: warning: variable $KCODE is no longer effective
nil

キャーステキー

60:デフォルトの名無しさん
10/02/10 17:47:09
中身は>>57だけどな
スレッドには対応してなさそうだ

silence_stream(STDERR){ $KCODE } は 標準エラー出力乗っ取りだが mingw では動かなさそう

61:52
10/02/10 20:39:25
>>54
あんがと

62:デフォルトの名無しさん
10/02/11 00:44:50
やっぱりここはRubySpecFeatureみたいなクラス持ったgem作って配布するしか。

RubySpecFeature.has_feature?(Spec番号) とかやると実行してる処理系での当該Specをサポートしてるか教えてくれるの。

63:デフォルトの名無しさん
10/02/11 00:47:44
よしまかせた。


64:デフォルトの名無しさん
10/02/11 12:50:32
URLリンク(www.ruby-lang.org)
> 外部の攻撃者がエスケープシーケンスをWEBrickのログに挿入しそのログを閲覧したとすると、
> 攻撃者は端末エミュレータを攻撃する目的に利用することができます
これって p str でも起こる?
String#inspect を通してる限りは $KCODE があっても Encoding つき String でも大丈夫?

65:デフォルトの名無しさん
10/02/11 14:46:24
>>64
String#inspect では起こらない
エスケープ目的で使うのは勧めない(たとえば今回のようなとき、ログ文字列を inspect する)
あくまで結果的にエスケープもされるという程度

とここまで書いて、Shift_JIS 文字列として inspect すると引っかかるかもと思った

66:デフォルトの名無しさん
10/02/13 13:29:03
URLリンク(www.ustream.tv)
松江Ruby会議02やってるのか


67:デフォルトの名無しさん
10/02/13 23:11:26
cgi書いたんだけど、実行時間の半分以上が
require "rubygems" と require "rmagick"の二行に費やされてる。

68:デフォルトの名無しさん
10/02/14 00:40:24
会議までに1.9.2の正式リリースがほしかった

69:デフォルトの名無しさん
10/02/14 02:28:45
>>67
wrs

70:デフォルトの名無しさん
10/02/14 10:36:12
# Ripper で #on_const_ref, #on_void_stmt, #on_stmts_new, #on_stmts_add
# フック時の Ripper#lineno の返り値が1行ずれる場合があるような気がするんだけど
# これバグ?

require 'ripper'
class MyRipper < Ripper
[:const_ref, :void_stmt, :stmts_new, :stmts_add].each do |e|
define_method(:"on_#{e}"){|*a|puts "#{e}, lineno:#{lineno}, column:#{column}"}
end
end

puts RUBY_DESCRIPTION #=> ruby 1.9.1p378 (2010-01-10 revision 26273) [i386-mingw32]

p code = "class C\nend"
MyRipper.new(code).parse
# const_ref, lineno:1, column:3
# void_stmt, lineno:2, column:3
# stmts_new, lineno:2, column:3
# stmts_add, lineno:2, column:3
# stmts_new, lineno:2, column:3
# stmts_add, lineno:2, column:3

p code = "module M\nend"
MyRipper.new(code).parse
# const_ref, lineno:1, column:3
# void_stmt, lineno:1, column:3
# stmts_new, lineno:1, column:3
# stmts_add, lineno:1, column:3
# stmts_new, lineno:2, column:3
# stmts_add, lineno:2, column:3


71:デフォルトの名無しさん
10/02/15 21:24:17
URLリンク(doc.okkez.net)
* Regexp.new(string, option = nil, code = nil)
> 第一引数が正規表現であれば内容が同じ(ただし、上記フラグの内容はクリアされた)正規表現を複製して返します。
> このとき、複製した正規表現に対して、第二、第三引数の指定が設定されます。
> 第一引数が正規表現であれば第一引数を複製して返します。第二、第三引数は警告の上無視されます。

どっちやねん

72:デフォルトの名無しさん
10/02/15 21:29:31
最初の方は「文字列」なんだろうけど、まあありがちだよ

73:デフォルトの名無しさん
10/02/15 21:34:29
>>71
1行目と2行目は1.6の挙動だな
3行目は1.8の挙動
1.9では
「正規表現のエンコーディングを指定するには第一引数の文字列のエンコーディングを直接変更してください」
となるはず

74:デフォルトの名無しさん
10/02/15 21:40:07
irb> /[[:cntrl]]/ =~ "わんこ".encode('ISO-2022-JP')
Encoding::CompatibilityError: incompatible encoding regexp match (US-ASCII regexp with ISO-2022-JP string)

irb> Regexp.new("[[:cntrl]]".encode('ISO-2022-JP')) =~ "わんこ".encode('ISO-2022-JP')
RegexpError: can't make regexp with dummy encoding: /[[:cntrl]]/

ガッデム

75:デフォルトの名無しさん
10/02/15 21:43:32
ISO-2022-JPはなー。


76:デフォルトの名無しさん
10/02/15 21:52:34
irb> Regexp.new("[[:cntrl:]]".encode('ISO-2022-JP'))
RegexpError: can't make regexp with dummy encoding: /[[:cntrl:]]/
irb> Regexp.new("[[:cntrl:]]".encode('stateless-ISO-2022-JP'))
/[[:cntrl:]]/
irb> Regexp.new("[[:cntrl:]]".encode('stateless-ISO-2022-JP')) =~ "わんこ".encode('stateless-ISO-2022-JP')
nil
irb> Regexp.new("[[:cntrl:]]".encode('stateless-ISO-2022-JP')) =~ "わん\eこ".encode('stateless-ISO-2022-JP')
Encoding::UndefinedConversionError: "\e" from EUC-JP to stateless-ISO-2022-JP in conversion from UTF-8 to stateless-ISO-2022-JP

なんかだんだんどうでもよくなってきた

77:デフォルトの名無しさん
10/02/15 21:56:20
初心者スレでコントロールコードを取り除きたいって言ってた人と同じかな

78:デフォルトの名無しさん
10/02/16 19:21:57
日本製なのにJISが処理出来ないのもどうかとw

79:デフォルトの名無しさん
10/02/16 20:28:20
【研究】 世界一ロマンチックじゃない「愛の告白」は、日本語…クリンゴン語よりも酷いと判定★4
スレリンク(newsplus板)

80:デフォルトの名無しさん
10/02/16 21:59:29
ISO-2022-JPを素で扱える正規表現エンジンはさすがにないだろ。

81:デフォルトの名無しさん
10/02/16 22:34:42
日本語版マニュアルになんらかのコメントくらいはあってもいいかもしれない

82:デフォルトの名無しさん
10/02/16 22:49:32
>>81
それはRubyにおけるダミーエンコーディングの意味の説明が該当するのでは



83:デフォルトの名無しさん
10/02/17 00:51:02
以前このスレでBigdecimalのバグと対処を上げていた人が
いろいろあってコミッターになったみたいだな。

ともあれ人手が増えたことはめでたい。

84:デフォルトの名無しさん
10/02/17 01:43:38
あ~、「バグっぽいの見つけたけど、報告はここでいいんですかね?」みたいな

いいわけないだろと心の中で突っ込んだが

85:デフォルトの名無しさん
10/02/17 01:46:52
普遍的にバグであるかどうかを確認するためにスレで話題を振る、というのはアリではあるが

ライセンス上、パッチを2chに投稿したら取り込めないのでそこだけは注意

86:デフォルトの名無しさん
10/02/17 02:29:47
ああ、著作権が2chに移っちゃうって話か。確かにそうだわな。

87:デフォルトの名無しさん
10/02/17 02:45:42
まあそのまま取り込まなきゃ回避策はいくらでもある。
オープンソースなんて、どこかのをパクりまくり出し。

著作権は権利が認められれば、その作者が持ってるので放棄出来ないけどな。
著作権法よく読もうぜ。

88:デフォルトの名無しさん
10/02/17 02:51:51
>>87
2chの書き込み規約よく読め

89:デフォルトの名無しさん
10/02/17 07:11:25
1,2行の簡単なパッチに著作権が発生するかどうかは微妙なところ。

90:デフォルトの名無しさん
10/02/17 08:59:55
あんな規約法的におkなのか?

91:デフォルトの名無しさん
10/02/17 09:09:30
個別に争われる余地はあると思われ
少なくとも「アホ言うなバカ」と裁判所に門前払い食らうような内容ではない

余談だが、世の中の訴状は裁判所によってある程度、審議以前の問題だと却下されている
「○○を訴えました」という報道発表と実際の裁判の数は必ずしも一致しない
訴状を見てから判断する、という発言は本来は正しいんだがなぜか悪役になってる不思議

92:デフォルトの名無しさん
10/02/17 09:55:28
>>88
あんなもんが法的に有効だとか思っちゃうお花畑は黙ってろ

93:デフォルトの名無しさん
10/02/17 10:00:02
有功じゃないってことは具体的に何かに反してるってこと?

94:デフォルトの名無しさん
10/02/17 13:15:27
>>89
「絶対に発生しない」のでなければ避ける以外の判断はできない
Rubyライセンスと整合するのでなければそもそもさわれないよ

ひろゆき…今はそうじゃないのか、2ch、が書き込まれたソースコードを利用するという意味ではなく
事前に2chという掲示板で公開されたソースコードをRubyにライセンス上取り込めるかどうかという話

俺は「取り込めるとは限らない(裁判での判断が必要)」と思う
だから「めんどくさいので2chにRubyライセンス関係のパッチを書き込むべきではない」と考える

95:デフォルトの名無しさん
10/02/17 13:22:26
他のうpろだに揚げたものをリンクすれば医院で内科医

96:デフォルトの名無しさん
10/02/17 13:23:45
>>94
初出の方が優先すると思う

97:デフォルトの名無しさん
10/02/17 13:29:49
出来合いのブログサービスでソース公開してしまうのも結構マズい

というか、ライセンス上マージ可能なソース公開場所を挙げるほうがよさそうだな
githubとか?

98:デフォルトの名無しさん
10/02/17 13:38:08
> 出来合いのブログサービスでソース公開してしまうのも結構マズい

そういう法的におかしな条項に、諾々と従ってしまうのが一番マズい

99:デフォルトの名無しさん
10/02/17 13:41:04
俺の嫁の飯が一番マズイ

100:デフォルトの名無しさん
10/02/17 13:42:49
>>98
君が私費を投じて戦って、トラブルがある(と予測される)たびに法的根拠のある判断を勝ち取ってくれるなら
誰も何も言わないよ(おまけに勝敗も問わない)

そうでないのなら何も言うべきではない

101:デフォルトの名無しさん
10/02/17 13:47:44
無闇に安全側に倒すな、という人は危険側に寄ったぶんのコストを支払ってくれ
>>100の言うように別に負けてもいいんだが、それにかかる金額と時間がひたすら鬱陶しい

誰からも権利上の突っ込みを受けえない、という状態の有り難味を噛み締めて欲しいもんだ

102:デフォルトの名無しさん
10/02/17 13:48:26
せんせい質問!
CentOS5.4にRails環境作ったんだけど、script/serverのログの文字が一部化けます。
「サーバ2」=>「サーバ\357\274\222」
こんな感じ
CentOSのコンソール、Windowsのターミナルともに同じ化け方なので、ターミナルの問題ではなさそう。
ソース中のコメントはviで日本語で表示されます。

103:デフォルトの名無しさん
10/02/17 13:54:11
Rubyのパッチレベルをちょっと戻すか、あるいは開発版使う
inspectの最後のマルチバイト文字がそのままになるんだよ

irb> $KCODE="u"; p "えびしおポテコが食べたいのに全然売ってない"
"えびしおポテコが食べたいのに全然売ってな\343\201\204"

ユーザーレベルでの対処法があるなら知りたい
最後がマルチバイト文字でなければきちんとなるんだけど、そんなの全部やるの無理だよな

irb> $KCODE="u"; p "えびしおポテコが食べたいのに全然売ってない\n"
"えびしおポテコが食べたいのに全然売ってない\n"


104:デフォルトの名無しさん
10/02/17 13:58:48
去年も全く同じ話題が出てたな
URLリンク(b.hatena.ne.jp)
てことでgistとかSimple Paste使いましょう

105:デフォルトの名無しさん
10/02/17 13:59:30

latin1

106:デフォルトの名無しさん
10/02/17 14:00:50
>>102
今日のruby-listのメールくらいは読んでくれると嬉しい
URLリンク(blade.nagaokaut.ac.jp)

107:デフォルトの名無しさん
10/02/17 14:02:35
>>106
メーリングリストはアーカイブが適切な語でGoogleに引っかかってこそ価値があるのですよ

108:デフォルトの名無しさん
10/02/17 14:06:02
>>106-107
…まあどっちもどっちではあるな
というか、修正されること自体はそもそも確定で、現時点でどーすればいいかということのほうが問題なような
っていうかこのへんのテストとかしてないのなんで漏れてんの

109:デフォルトの名無しさん
10/02/17 14:33:42
>>108
確かめてないが、改行のテストも兼ねようと思って

"テスト\n".inspect assert_equal('\343\203\206\343\202\271\343\203\210\n')

みたいな感じだったんだと推測
まさか末尾がマルチバイトなときだけ問題になるとは間隙突かれたヒデキ感激みたいな

110:デフォルトの名無しさん
10/02/17 14:37:46
>>103
そうなんだ。
調べたけど、そういう問題抱えてるのみつけられなかったかったから助かりました。
ありがとう。


111:デフォルトの名無しさん
10/02/17 14:51:13
>>102
8.1.7は既に枯れたバージョンという認識だったので見ていませんでした。
Rubyのチケットを見ると上がってるんですね。
触り始めて2週間なのですが、検索エンジンで見つけられそうなキーワードを把握していませんでした。


112:デフォルトの名無しさん
10/02/17 15:34:24
コミットしてからリリースまで誰も気づかなかったというのが物寂しいな
上の人はもう1.8系列で日本語表示なんて誰もしてないのだろう

113:デフォルトの名無しさん
10/02/17 15:38:09
修正されているのはいいけど、
テストコードがないといつかまた再発しそう。
URLリンク(redmine.ruby-lang.org)


114:デフォルトの名無しさん
10/02/17 18:31:52
>>112
$KCODE設定してpで日本語表示しないと気づけないからねえ
スルーされる可能性は高い

115:デフォルトの名無しさん
10/02/18 12:32:31
困ってる人一杯いるだろうから、これだけでも先にリリースして欲しいよな。
ダウングレード面倒だし。

116:デフォルトの名無しさん
10/02/18 13:56:56
unrecognized options: --with-readline-dir

安定板ビルドしようとしたらこんなエラーでた
ぽにょ挫けそう

117:デフォルトの名無しさん
10/02/18 14:18:42
URLリンク(dl.dropbox.com)

何かmake途中エラーみたいのに遭遇したような気がするけど
気にしない。絵が出たから良し何ら問題なしあ...

118:デフォルトの名無しさん
10/02/18 14:49:41
./configure --help |grep with

119:デフォルトの名無しさん
10/02/18 23:29:46
そういう問題を先送りが後で響いて困る訳でw

120:デフォルトの名無しさん
10/02/19 02:34:52
初心者スレで質問したところ、本スレ行ってこいと言われたので失礼します。

Kernel#lambdaで作られるProcオブジェクトはブロック内でreturnしたときに
Proc#callから抜けるという特殊な挙動になっていますが、これはどのような仕組みなのでしょうか。

Kernel#lambdaはおそらくCで実装されているのだとは思いますが、
Rubyでも実装できるようになっていると思います。お願いします。

121:デフォルトの名無しさん
10/02/19 10:03:18
これが政府のオープンソース関連事業だ、年間約5億円を仕分けられるか!?
URLリンク(itpro.nikkeibp.co.jp)

Rubyもいろいろ金かかってるんだなー

122:デフォルトの名無しさん
10/02/19 10:47:07
      ,―ヽ_(((((_、―
   ,/  ノ       ヽ  ~\
  /   ノ   IPA    ヽ   ~\
/   ノ           ヽ、  `ヽ
|    ノ / ̄\   / ̄~ヽ ヽ    i
|   ノ              |  ノ
\  |  <●>  <●>  (  )
 \ |      | |       i /
    |      /  ヽ       レ
   i     (●_●)      /  
    i、    ,-―-、   ・ /
    i、  <(EEEEE)> ∵/    オープンソース情報データベースOSS iPediaの活用秘技. IPA OSSセンター 研究員 岡田 賢治
      i、  \   ./  /
       \   ーー   ,ノ       
  ,,.....イ.ヽヽ、ー-―一ノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |

123:デフォルトの名無しさん
10/02/19 12:47:41
1.9だと def []=(*keys, value) って書けて素敵よね

124:デフォルトの名無しさん
10/02/19 13:55:41
むしろそれ以前でできなかった理由を知りたい
できるようにしてても特段デメリットないようにも見えるが

125:デフォルトの名無しさん
10/02/19 14:07:36
意図的にできないようにしてたわけじゃないと思うけど。


126:デフォルトの名無しさん
10/02/19 14:12:02
Emacs Lispの&rest とか &optional のような使い方がしたくて
実装しただけだと思う。少なくとも当初は。



127:デフォルトの名無しさん
10/02/19 14:13:13
1.6くらいで思いついてて欲しかったとちょこっとだけ思う

128:デフォルトの名無しさん
10/02/19 14:15:58
我々にできるのは1.9系列の周辺を使いやすくすることしかない
初級を抜けたランク4くらいの人を全部1.9ユーザーにしないと
gemライブラリも全部1.9対応にするくらいの勢いで
解説や記事も1.8用と1.9用の記述を並立

129:デフォルトの名無しさん
10/02/19 16:22:32
>>123ってどういう使い方をするのですか?

130:デフォルトの名無しさん
10/02/19 17:20:46
>>123って普通に可変長引数を通常の引数の前に置けるってこと?
それともブラケットメソッド関係で何か特殊なの?

131:デフォルトの名無しさん
10/02/19 17:46:34
ary[x, y] みたいに多重配列が作れたりとかする?

132:デフォルトの名無しさん
10/02/19 18:17:16
いや見たまんまだと思うが
最後の引数以外は可変

133:デフォルトの名無しさん
10/02/19 19:33:52
1.9の普及が足りんな。 def test(a,*b, c) とか出来るぞ

134:デフォルトの名無しさん
10/02/19 20:56:12
>>120
1.9の、しかもあくまで俺の理解した範囲でいうけど、まずコンパイル結果からして違う
ブロックの中のreturnはthrow 1っていう特殊な例外を投げる命令になるけど
普通のメソッド中のreturnはleaveっていうフレームを終了させる命令になる

で、ブロックがフレームに積まれるとき、lambdaかどうかはフレームに記憶されていて
前述の例外が通知されると、実行中のフレームがlambdaかメソッドならリターン処理
普通のブロックなら例外をさらに上のフレームに伝播させる、って感じでやってる
とそういうわけで、この特殊例外を発生させる方法がRubyにはないので無理です

あーあと、フレームってのは動的な処理の単位ね、メソッドとかクラス定義とかブロックとか
詳しく種類を知りたかったらvm_core.hにVM_FRAME_MAGIC_なんちゃらって並んでるから

135:デフォルトの名無しさん
10/02/19 20:59:41
>>134
×発生させる方法が
○発生させる方法もキャッチする方法も

136:120
10/02/19 21:04:49
>>134
回答有難うございます。どうやら、VMの理解が必要そうですね。
とりあえず、ブロックのreturnとlambdaのreturnが別物ということはわかりました。

C言語は苦手ですが、勉強がてらソースコードを読んでみたいと思います。

137:デフォルトの名無しさん
10/02/21 10:13:42
RubyForgeへいってoneclickrubyダウンロードしてるんですが、滅茶苦茶遅いのはなぜでしょう?
どこかにミラーとかって無いんですかね?

138:デフォルトの名無しさん
10/02/21 10:45:55
>滅茶苦茶遅いのはなぜでしょう?
善悪属性値が下がってるんじゃね

とりあえず巷で話題になってないので、回線か経路的なもんだと推測される
何人か症状出てる人がいれば推測もできるんじゃないかと

139:デフォルトの名無しさん
10/02/21 23:11:48
リファクタリング:Rubyエディション
URLリンク(www.amazon.co.jp)

140:デフォルトの名無しさん
10/02/21 23:12:41
ショッピングを続ける: 最近の履歴に含まれている商品を買った人は、こんな商品も買っています
ページ: 1 / 17 (最初に戻る)
前に戻る

*
恍惚美女~潤う甘い果実~ 菜摘四季 [DVD] DVD ~ 宇田マサル
¥ 2,952

おすすめ商品を修正
*
乙姫VOL.5 桜木久美子 [DVD] DVD ~ 桜木久美子
5つ星のうち 4.0 (5) ¥ 2,952

おすすめ商品を修正
*
快感ヌーディーフロント 阿井原すみれ [DVD] DVD ~ 宇田マサル
5つ星のうち 4.0 (2) ¥ 2,952

おすすめ商品を修正



141:デフォルトの名無しさん
10/02/21 23:30:06
>>139
> 価格: ¥ 5,040
絶対的価格がなんか微妙に高ッ!
450ページの大型本だから妥当なんだけどさ

142:デフォルトの名無しさん
10/02/22 11:51:43
自称中級者でJAVA版のリファクタリングを読んだことは無いんだが読むべき?

143:デフォルトの名無しさん
10/02/22 11:58:52
URLリンク(www.amazon.com)
「好評のJava版のコードをRuby用にコピペ改変して載せただけなんじゃねっていうか動かないぞ金返せ」
「Java版を読んだなら読まなくてよしっていうか誤植直したのを売れバカ」
というツッコミが入ってるな

144:デフォルトの名無しさん
10/02/22 12:39:44
そろそろ1.9に乗り換えないと流行に乗り遅れそうだ。

145:デフォルトの名無しさん
10/02/22 12:42:39
手元でライブラリのメソッド再定義できるくらいの力のある人は普段使いを1.9.1にできるレベル
前はなんとかしないとならないgemライブラリが多すぎて諦めたもんだが

146:デフォルトの名無しさん
10/02/22 13:41:59
戻り読みのできない正規表現エンジンとか使ってられないよ!!!

147:デフォルトの名無しさん
10/02/22 13:43:22
>>143
だめぽいね
翻訳で大幅手直しが入っていれば、といったところか

148:デフォルトの名無しさん
10/02/22 13:52:03
>>147
訳者が長尾さんだから期待したいところ

149:デフォルトの名無しさん
10/02/22 14:21:04
内容変えちゃったらそれは翻訳じゃないじゃん
シドニィ・シェルダンみたいに別もんになるぞ

150:デフォルトの名無しさん
10/02/22 14:24:07
明らかな誤植は直してほしいな。

151:デフォルトの名無しさん
10/02/22 14:27:16
動かないYO!くらいのヤク中はつけてくれるだろ

152:デフォルトの名無しさん
10/02/22 15:30:47
意味ねー

 † 現行では動作しません

とかいう注釈が毎ページにある状態

153:デフォルトの名無しさん
10/02/22 15:53:09
>I've found errors on almost every page I've read.
>It looks as if someone cut and paste the text from
>the original into a new document, quickly converted
>the Java examples to Ruby (without testing or review,
>given some of the errors), and went to press.

mjd?

154:デフォルトの名無しさん
10/02/22 16:15:10
つかなんでこれ翻訳しようと思ったんだ

155:デフォルトの名無しさん
10/02/22 16:39:16
そのうち、Yuguiさんが別本として出してくれるのではなかろうか

156:デフォルトの名無しさん
10/02/22 16:42:34
書名は「Rubyリファクタリング」でよろしく

157:デフォルトの名無しさん
10/02/22 18:50:49
元ネタのリファクタリング本が優れていたのは
コードを綺麗にする方式の提示もさることながら、
ある方式を実施するにあたってコードを壊さない一連の手順を
提示したのが大きい訳で、サンプルとして例示したコードが動かないんじゃ
有り難みも半減だよなあ。

158:デフォルトの名無しさん
10/02/22 21:22:21
この動かないプログラムを動くようにしてさらにリファクタリングもしろという
作者からの課題かもしれない。

159:デフォルトの名無しさん
10/02/22 21:25:11
もともと動かないものを動くようにしちゃったら、
それは仕様を変えたということでリファクタリングになってないだろ

160:デフォルトの名無しさん
10/02/22 21:43:33
>>156
なんであんなわかりにくいだろうね
めちゃくちゃ区別しにくい

161:デフォルトの名無しさん
10/02/22 21:44:50
>>159
なんでやねん

162:デフォルトの名無しさん
10/02/22 21:49:16
だが待ってほしい

163:デフォルトの名無しさん
10/02/22 22:13:47
リファクタリングとは,プログラムの動作を変えずにソースコードを整理すること.
ということらしいので,動作を変えるような変更はリファクタリングではない.

164:デフォルトの名無しさん
10/02/22 22:25:39
つまり動かないコードを動くようにするフェーズと
動くようになったコードをリファクタリングするフェーズとを厳密に分離する必要があるという話だな。
1フェーズ目の成果をリファクタリング前のコードとして掲載して
2フェーズ目の成果をリファクタリング後のコードとして掲載せよと。


……もういいからYuguiさんが凄いリファクタリング本書いてくれるの期待しようぜwww

165:デフォルトの名無しさん
10/02/22 22:26:56
ちうかRubyistって基本的にスパゲッティ大好きだろ?
リファクタリングなんてせずに黙って食え。

166:デフォルトの名無しさん
10/02/23 00:04:09
【政治】民主・石井一氏「鳥取、島根は日本のチベット。人が住んでるのか。牛が多いのか。山やら何やらあるけど、人口が少ない所」★2
スレリンク(newsplus板)

167:デフォルトの名無しさん
10/02/23 01:32:28
なに頭でっかちな脳内だけの空論を言ってるんだよ
リファクタリングで不安定なプログラムが安定するなんて当たり前にあることだろ
役に立たない言葉の定義なんてどうでもいいわ

168:デフォルトの名無しさん
10/02/23 02:03:59
ネタにキレレス(ry

169:デフォルトの名無しさん
10/02/23 02:35:35
だよなwネタにマジレスとかありえねー

170:デフォルトの名無しさん
10/02/23 02:44:07
どれがネタなのかよくわからん

171:デフォルトの名無しさん
10/02/23 06:02:42
突っ込まれるまでマジで、突っ込まれたらネタ。

172:デフォルトの名無しさん
10/02/23 07:02:27
ネットで、ましてや2ちゃんで体裁なんて気にすんなよw

173:デフォルトの名無しさん
10/02/23 08:11:41
>>167
それは普通に改善とか修正とかリストラクチャリングって
呼べばいいんじゃね。

機械的な手順やツールによる自動化が提供されていなかったり、
単に作業者がプアだったりした時に、
リファクタリングのつもりで違う何かをしているというのは
よくある話。

174:デフォルトの名無しさん
10/02/23 10:37:07
とりあえず、リファクタリングはきちんと専門用語だから
プログラミングだけでは金にならんし意味がないからという理由で
営業もプログラミングに含めるというような行為と同じ

175:デフォルトの名無しさん
10/02/23 10:43:12
>>167のような人にこそリファクタリング本が必要だ

176:デフォルトの名無しさん
10/02/23 10:49:59
「新しい良い動作」に書き換えることなら誰でもできるんだよ(それこそ初心者にも)
それでいいのならリファクタリングという概念が持て囃されることは永遠になかったはず

リファクタリングはソフトウェアとして新しい動作を一切組み入れない
ソースコード管理において安全度優先の書き換えを行えるようにする知識を供給する
うまくいかないことも少なくないが、俺コードで書き換わって不用意に破壊されるよりは諦めがつく

177:デフォルトの名無しさん
10/02/23 11:27:09
用語の定義をないがしろにするやつは死んだらいいと思うw

178:デフォルトの名無しさん
10/02/23 11:57:48
リファクタリングという言葉の定義って
どこかできっちりと決めたものがあるのか?

179:デフォルトの名無しさん
10/02/23 12:08:06
>リファクタリングはソフトウェアとして新しい動作を一切組み入れない

ちがう罠

180:デフォルトの名無しさん
10/02/23 12:23:38
>>178
あるよ

181:デフォルトの名無しさん
10/02/23 12:29:34
wikipediaには厳密な定義がないって書いてあるんだがどっちよ
あるというならどこにあるのかも書いてくれないと

182:デフォルトの名無しさん
10/02/23 12:34:21
>>180
つうかそれを提唱したのがファウラーのリファクタリング本だよな。

そのレベルのクォリティを期待されてたRuby版がうんこだったからこそ
大炎上なんだし。

183:デフォルトの名無しさん
10/02/23 12:43:53
変更の影響を考えたらコードを綺麗にするなんて机上の空論、
なんて言ってたような連中へ突きつけられた現実解が
リファクタリングだしな。

本読んでなきゃ開発ツールに付いてる便利なリネーム機能ぐらいの
認識かもしれないが。

184:デフォルトの名無しさん
10/02/23 12:53:43
定義という言葉の定義すらわかってないのがこのスレのクオリティ

185:デフォルトの名無しさん
10/02/23 13:13:30
>>181
リファクタリング本に書いてあるし、著者本人のwikiにも引用されてるし、
それの有志による邦訳すらあるなあ。
URLリンク(capsctrl.que.jp)

まあWikipediaを根拠にしてるあたり釣りなんだろうけどさ。

186:デフォルトの名無しさん
10/02/23 13:25:38
>>167のような人を赦すようにはなってないな
少なくとも「リファクタリングとは本に書いてある一連のやつ」という認識は共通だ
そういうレベルでオレオレの入り込む余地はない

本を読んだ上で個々の効果の議論をするのは有効

187:デフォルトの名無しさん
10/02/23 13:26:40
>>185
pediaにしたって英語版にはそんな記述なくて要出典ものだけど
それでも「外部からの動作を変えずに」と書いてるな


188:デフォルトの名無しさん
10/02/23 13:28:54
デザインパターンもそうだが、基本「あるあるあるあるwwwwwwwwwwwwwwwww」の集大成だ
逆にいうと、そういうので困った参った恨んだ吐いた経験がないと意味がわからないかもしれない
それこそ、「俺が書き換えたほうが早い」

189:デフォルトの名無しさん
10/02/23 13:39:15
例の本、ひょっとして
URLリンク(d.hatena.ne.jp)
の件が関係してるのかな

190:デフォルトの名無しさん
10/02/23 13:43:13
>>188
「○○○で困った経験があるだろ?」
「ないよ」

というのは意外と地味に困る

191:デフォルトの名無しさん
10/02/23 19:57:44
>>190
いつも他人に尻拭いさせてりゃ困ることは無い罠

192:デフォルトの名無しさん
10/02/23 20:23:13
勝手に頭の中で状況作って明後日の方向にスレを持って行くなよ

193:デフォルトの名無しさん
10/02/23 20:56:26
Ruby Best Practices って本はどうなのよ?
誰か読んだ?

194:デフォルトの名無しさん
10/02/23 23:16:13
>>193
とても気になるが、対象範囲が漠然としてるタイトルだな
Railsなのか、生Rubyなのか、それともWEBアプリ関係ない汎用的な
クックブック的な物なのか

そもそもRubyの一般的なフィールドってのがよくわからんのに
best practiceも何もって気がする

195:デフォルトの名無しさん
10/02/24 01:00:25
Amazonに概要が書いてあるじゃん
興味あるけど英語でオライリーの本1冊はおれにはきついなあ
英語の技術書をまるごとは読んだことないのだが、
サンプルプログラムとかあるから実は割といけるのだろうか

196:デフォルトの名無しさん
10/02/24 01:42:27
Rubyテクノロジーリーダーを訪ねて - 第1回 「まつもとゆきひろ氏」
URLリンク(edn.embarcadero.com)


197:デフォルトの名無しさん
10/02/24 10:00:20
ソートの概念自体を教えたいのならCとかFORTRANとか使えよ…

198:デフォルトの名無しさん
10/02/24 10:15:25
そもそも授業としてソートの中身そのものを教えるということが
昨今のコンピュータ序論または一般教養的にホントに有効なのかどうかという

199:デフォルトの名無しさん
10/02/24 10:31:46
「しかしこれを使ってはいけません安心確実高速な組み込みのを使ってください」という授業は糞ではあるな
というかインタビュー内容の感想書け

200:デフォルトの名無しさん
10/02/24 10:37:25
このインタビュー中身空っぽだな
「継続は力なり」くらいしか伝わってこない

201:デフォルトの名無しさん
10/02/24 10:38:44
今日の成功を予感させるものを感じる。

ワロタw

202:デフォルトの名無しさん
10/02/24 10:46:22
インタビューをするほうの人はもうちょっと根性入れたほうがいいかも
本人の今日夕飯に何々食いましたとかいうブログ記事以下の興味内容しかもてないとか悲しすぎる

203:デフォルトの名無しさん
10/02/24 11:13:10
>>193
> Ruby Best Practices って本はどうなのよ?

無料公開中。今のところ、5章まで。

URLリンク(blog.rubybestpractices.com)


204:デフォルトの名無しさん
10/02/24 11:14:33
インタビューするならRite(笑)がどうなってるのか聞いてほしかった

205:デフォルトの名無しさん
10/02/24 12:39:46
>>203
thx

206:デフォルトの名無しさん
10/02/24 16:11:21
>>201
歌が下手なアイドル歌手の「熱唱」みたいな表現ですね。

207:デフォルトの名無しさん
10/02/24 21:47:15
>>196
のサイトによると、
「Rubyがカタログ上のスペックで劣るため、採用されないというのも不本意」
ということなんだけど、RubyInlineというCを埋め込むライブラリを標準添付
にして、単純な比較は上位になるようにしてしまえばいいのに。

RubyInlineは、今ではWindows(mingw版)でも動くみたいだし。


208:デフォルトの名無しさん
10/02/26 02:27:43
Rubyベストプラクティスは来月出るんだね

209:デフォルトの名無しさん
10/02/26 21:58:00
気づいたんだがコマンドラインオプションの-xってすげー便利だな
外部コマンドを実行できて,かつ複数行コメントの機能がある
プログラム言語やマクロ言語ならなんでもRubyスクリプトを埋め込めるのな
Windowsのバッチファイルのためだけに存在するのかと思ってた

今日から秀丸マクロにRubyスクリプトを埋込みまくりだぜ

210:デフォルトの名無しさん
10/02/26 22:07:56
Perlから受け継いだ機能ですな。
ネットニュース(掲示板)やメールに載せたスクリプトを、
記事の件名などのヘッダ込みのまま実行できる。


211:デフォルトの名無しさん
10/02/27 01:58:24
rubyってperlの機能どのくらい引き継いでるんですか

212:デフォルトの名無しさん
10/02/27 09:30:08
定量的には分からんが、オプションの多くとか、$+1文字の変数の
多くとか、elifとか、BEGIN END(これはさらにawk由来でもある)とか
__END__ とか。正規表現の拡張のうちPerlが初めてやったものも結構
入ってるよな。初期からあるドキュメンテーションコメントが=begin
=endなのもPOD由来と見た。


213:デフォルトの名無しさん
10/02/27 11:31:29
インパクトのでかいのは正規表現リテラルかな
クオートのエスケープ抜きで正規表現書けるのはちょっと素敵

214:デフォルトの名無しさん
10/02/28 03:05:20
Rubyで以下のPHPコードをやろうとするとどうなりますか?

$curl = curl_init();

curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, ‘track=#NowPlaying’);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_URL, ‘URLリンク(stream.twitter.com)’);
curl_setopt($curl, CURLOPT_USERPWD, $_CONFIG['twitter']['username'] . ‘:’ . $_CONFIG['twitter']['password']);
curl_setopt($curl, CURLOPT_WRITEFUNCTION, ‘progress’);
curl_exec($curl);
curl_close($curl);

function progress($curl, $str)
{
print “$str\n\n”;
return strlen($str);
}

215:デフォルトの名無しさん
10/02/28 03:16:19
よくわからんが、syntax errorを出せばいいのか?

216:デフォルトの名無しさん
10/02/28 04:34:06
>>214
PHPはよく知らんがたぶんこんな感じ

require 'uri'
require 'net/http'
postfields = {'track'=>'#NowPlaying'}
uri = URI('URLリンク(stream.twitter.com)')
uri.user = $_CONFIG['twitter']['username']
uri.password = $_CONFIG['twitter']['password']
res = Net::HTTP.post_form(uri,postfields)
print "#{res.body}\n\n"

217:デフォルトの名無しさん
10/02/28 18:22:56
>>214
あと、CurlはRubyバインディングがあることはあるが、
作者いわく「Linuxでしかテストしてないよ」な代物なので注意な。

Windowsとかの場合はDLとか使って無理矢理呼ぶ必要がある。

218:デフォルトの名無しさん
10/02/28 21:00:30
スレリンク(tech板)
Rubyの宿題教えてください。2限目

219:214
10/03/01 04:38:35
>>216,>>217
ありがとうございます。

trackurl = 'URLリンク(stream.twitter.com)'
c = Curl::Easy.new do |curl|
curl.url = trackurl
curl.userpwd = USERNAME + ':' + PASSWORD
end
$VERBOSE = nil
while true
body = c.on_body do |data|
result = body ? body.call(data) : data.length
next if !result.is_a?(Integer)
s = JSON.parse(data) rescue next
user = s['user']
next unless user && user['lang'].include?('ja')
links = s['text'].scan(/(https?:\/\/[-_.~a-zA-Z0-9;\/?:\@&=+\$,%#]+)/).flatten
links.each do |link|
p "url => #{link}"
end
result
end
c.perform
end

見よう見まねでこんな感じになったんですが、これをずっと動かしているとStackErrorとかで止まります。
後は>>218の方で聞く事にさせて頂きます。どもでした。

220:デフォルトの名無しさん
10/03/01 20:25:39
うわあ、Pathname#to_str はもうないのか
open 用だなんて俺場面的に超便利な使い分け機能だと思ったのに

てかこのマニュアル古いな

221:デフォルトの名無しさん
10/03/02 22:26:12
>>220
Pathname#to_s と Pathname#to_str って実質的に同じメソッドですよね?
to_s ではダメで to_str でないと具合が悪い状況が思いつかないのですが。

222:デフォルトの名無しさん
10/03/02 22:30:18
irb> class C; def to_s; "./"; end; end
irb> open(C.new){}
TypeError: can't convert C into String
irb> class C; def to_str; "./"; end; end
irb> open(C.new){}
irb>


223:221
10/03/03 00:01:46
>>222
なるほど Kernel#open が引数に対して to_str を呼ぶという仕様絡みですか。

ググッてみたら、open 内で to_open を呼ぶようになったので Pathname#to_open
を実装したら、みたいな話が以前にあったようですが、最終的にどうなったのかな?

Pathname#open があるのでそれを使えということなんですかね。


224:デフォルトの名無しさん
10/03/03 00:26:24
/ 区切りは Windows の Ruby の open とかでも使えるんだっけ?
ドライブ文字とかどうしてるの?

225:デフォルトの名無しさん
10/03/03 00:34:51
/ を使用しているときはドライブの指定はできない
ドライブ名つきのフルパスを扱いたいときは D:\somedir のように \ を区切り文字に使う

ということだったと記憶

226:デフォルトの名無しさん
10/03/03 00:39:30
>>152
リファクタリングRuby版が届いたが

  † 現行では動作しません

という訳注はどうやらないようだ

まだ手は動かしてない

227:デフォルトの名無しさん
10/03/03 00:41:47
>>225
マイコンピュータは仮想的なフォルダであり、Windowsのドライブ変更はUNIXではルートのマウントし直しに該当する

…とRubyでは考えてる、ように見える
/ はカレントドライブのルートを返す(つまり普通は C:\)
時々、/c/windows や /d/somedir のようにマウントされてるとみなすソフトもあるけどね
こっちのほうが正直便利なんだけども、いまさらそんなこと言っても

228:デフォルトの名無しさん
10/03/03 02:41:15
教祖がウィンドウズ使ってない故の実装の甘さだな。

229:デフォルトの名無しさん
10/03/03 02:46:41
>>224-225
気にせず使ってるけど、それでエラーに遭遇したことがないよ。

230:デフォルトの名無しさん
10/03/03 03:08:01
WindowsはAPIレベルでは / と \のどっちでもディレクトリセパレータとして扱ってくれるので(注:正確かどうかは知らん)
ドライブ指定があろうが、UNCだろうが / で通る
Ruby内で閉じてるのなら \ は使わずにすむよ

確かDOSのころから \でも/でもよかったんじゃないの?
スイッチのキャラクタが/だったんで コマンドライン引数では\のみがディレクトリセパレータになっただけで

Windowsのコマンドプロンプトでもコマンド自体は
>c:/windows/notepad.exe
とかで起動できるよ


231:デフォルトの名無しさん
10/03/03 03:19:03
>c:/windows/notepad.exe

確かに起動出来るね

>dir "c:/windows/notepad.exe"

ファイルが見つかりません

232:デフォルトの名無しさん
10/03/03 03:20:41
cygwin 版なら
/cygdrive/c/hogehoge
/cygdrive/d/fugafuga


233:デフォルトの名無しさん
10/03/03 10:51:52
>>230
> Windowsのコマンドプロンプトでもコマンド自体は
> >c:/windows/notepad.exe
> とかで起動できるよ
だからそれはcmd.exeの処理だと何度言えばわかるですかもう堪忍袋の緒が切れました

234:デフォルトの名無しさん
10/03/03 11:05:12
どっちかってとルートである / の扱いがへぼいという話に見える

235:デフォルトの名無しさん
10/03/03 11:44:05
だからって今更¥使うってのもあり得ないけど。

236:デフォルトの名無しさん
10/03/03 13:41:39
マカー発見
まああんたには関係ない話だろうな

237:デフォルトの名無しさん
10/03/03 14:02:03
>>235
お前らは素直にコロン使ってろよ
しかも相対パスと絶対パスの見かけが逆とか

/A/B/C → A:B:C
B/C   → :B:C

238:デフォルトの名無しさん
10/03/03 14:10:12
まあ使いたくてもOS9ではRuby動かないんですけどね

239:デフォルトの名無しさん
10/03/03 14:19:18
>>236 は何を以てマカーと判定しているのでしょうか。


240:デフォルトの名無しさん
10/03/03 14:29:17
¥

241:デフォルトの名無しさん
10/03/03 14:54:30
なるほど。そういえばそうでした。



242:デフォルトの名無しさん
10/03/03 18:14:53
>>233
cmd.exeがなにか特別な処理をしてるとは思えんのだが
コマンド名はそのまま プロセス起動APIに渡してるんじゃないの?(これも正確か知らんけど)

直接CreateProcessに/区切りで渡しても起動するよ
Rubyで system('C:/windows/notepad.exe') だとあまり直接っぽくないし、かといって
require 'Win32API'
Win32API.new('kernel32','CreateProcess','PPPPILPPPP','I').call('c:/windows/notepad.exe','',nil,nil,0,0,nil,nil,[68].pack("L")+"\0"*64,"\0"*64)
じゃ長いかなと
Win32APIで例をあげるなら、カレントディレクトリの変更なんてのが短くていいか
require 'Win32API'
Win32API.new('kernel32','SetCurrentDirectory','P','I').call('c:/windows/')
p Dir.pwd


243:デフォルトの名無しさん
10/03/03 18:30:06
で?

244:デフォルトの名無しさん
10/03/03 18:59:57
っていう

245:デフォルトの名無しさん
10/03/03 21:05:48
WindowsはUnix系のノリでシェルとOSとの分担がなされていると考えると
驚愕させられることになるよな
ワイルドカード展開が各プログラムで自力とか
プロセスの引数がARGVで取れるのはCランタイムが
頑張って分割してるだけとか


246:デフォルトの名無しさん
10/03/03 21:31:27
で?

247:デフォルトの名無しさん
10/03/03 21:54:18
大量にファイルがあるディレクトリで
echo * | grep hoge すると out of memory とかなんとかで死ねる

248:デフォルトの名無しさん
10/03/03 22:04:27
ソフトエイジェンシー、Rubyのソースコードを暗号化する「RubyEncoder」 - Enterprise Watch
"ソフトエイジェンシー、Rubyのソースコードを暗号化する「RubyEncoder」
del.icio.usに追加
Twitterに投稿
livedoorクリップに追加
Google Bookmarks に追加
Yahoo!ブックマークに追加
はてなブックマークに追加

 株式会社ソフトエイジェンシーは3月3日、Ruby/Ruby on Railsのソースコードを暗号化する「RubyEncoder」を発表した。
価格は3万1500円/ライセンスで、3月8日より提供する。

 RubyEncoderは、Ruby/Ruby on Railsのソースコードをバイトコード形式に変換する製品。簡単に解読できなくすることで、
商用アプリケーションとして配布する際などに知的財産の保護が実現する。特長は、多彩なアプリケーションロック機構を搭載する点。
IPアドレス、MACアドレス、ドメイン名が一致しないとアプリケーションをロックして動作不能にできる。これにより、安易なコピーを防げるほか、
アプリケーションに有効期限を設定して体験版も容易に作成可能。また暗号化とは別に、アプリケーションの実行に必要なライセンスファイルも作成できる。
これにより、評価版や製品版など異なったライセンス配布が可能だ。

 製品構成は、エンコーダとスクリプトローダの2種類。暗号化するエンコーダは1ライセンスで1台のみインストールが可能。複合するスクリプトローダは無制限で利用できる。

 動作環境は、Windows/Mac OS X/Linux/FreeBSD、Ruby 1.8.6/1.8.7/1.9.0//1.9.1。 "
URLリンク(enterprise.watch.impress.co.jp)

249:デフォルトの名無しさん
10/03/03 22:37:43
なんていうかさあ、コピペするならするでもうちょっとちゃんとやれよ

250:デフォルトの名無しさん
10/03/04 00:25:58
ねー質問、URI.parseが自動でURI.escapeしないのはなんで?

251:デフォルトの名無しさん
10/03/04 01:27:43
自動でするようになったらなったでうがぁーってなると思うようがぁーって
どこをパース時にエスケープしたのかきちんと区別して喋れって思うはず

というか、parse なんだから、文字列をそのままオブジェクト化するでいいんじゃないの
オブジェクトにする際に不正なものがあれば例外出して落ちると
ユーザーの利便性はラッパーとか作ってねみたいな

build2 があるなら parse2 があってもいいじゃんという感じはする

252:デフォルトの名無しさん
10/03/04 09:43:52
不正なURLを扱えるようにしたいときにも困るかもしれないしな
日本語URLなんてのもあるし

253:デフォルトの名無しさん
10/03/04 10:20:23
そんな需要は極一部だから、独自で実装すればいいだけだな。

254:デフォルトの名無しさん
10/03/04 13:04:32
というか既にそういうgemがあって既存のURIクラスを差し替える形で
取り込む話になってたような

255:デフォルトの名無しさん
10/03/04 13:12:36
じゃあ日本全国で毎日うがぁーってなると思うようがぁーって

256:デフォルトの名無しさん
10/03/04 13:48:33
>>254
Addressable?

257:デフォルトの名無しさん
10/03/04 22:27:41
>>256
そう。不正URIをどうするかは知らんけど。

258:デフォルトの名無しさん
10/03/04 22:43:46
>>256
オーケー自作のURIクラス破棄した

259:デフォルトの名無しさん
10/03/05 00:55:23
>>258
嬉しい半面悲しくなるよな。
もっと早くに知ってればっていう。

260:デフォルトの名無しさん
10/03/05 00:58:45
自力でライブラリのアッパーバージョンを実装するためには
RFCとか他言語の類似ライブラリとか読み込まないといけないことが多いので
ただ出来合いのを見つけて利用するだけの時よりも確実に実力がついていることは間違いない


問題はその実力とやらが役に立つ機会が低いと危惧されることかな

261:デフォルトの名無しさん
10/03/06 02:50:39
rubyの次の言語を作るときぐらいだろうな。役に立つのは。

262:デフォルトの名無しさん
10/03/08 00:10:26
"アンエンコード" に一致する日本語のページ 約 803 件
"アンエスケープ" に一致する日本語のページ 約 9,350 件

うううん…

263:デフォルトの名無しさん
10/03/08 04:23:57
アンアンエンコード の検索結果 約 278,000 件中 1 - 10 件目 (0.24 秒)
アンアンエスケープ の検索結果 約 99,600 件中 1 - 10 件目 (0.22 秒)

うううん…

264:デフォルトの名無しさん
10/03/10 11:07:21
「うううん…」がちょっとエロいと思ってしまう俺は童貞

265:デフォルトの名無しさん
10/03/10 18:39:52
アンアンの方じゃないのか

266:デフォルトの名無しさん
10/03/10 23:13:33
アンアンがあるから、その下のうううん…がエロく感じるんだよ



…ちきしょう

267:デフォルトの名無しさん
10/03/11 06:50:31
どうでもいいけどメーリングリスト、いやメールといってしまってもいいけどさ。
「暗号化されていないメールは煮るなり焼くなり転送するなり印刷するなり好きにしてくれ」
というのが常識だと思ってたんだけど今はそうでもないのな。

268:デフォルトの名無しさん
10/03/11 07:11:58
まじめにレスすると馬鹿を見そうだからやめとくお

269:デフォルトの名無しさん
10/03/11 12:58:04
スレリンク(tech板:230-231番)
なんか地味に酷い遣り取りが

270:デフォルトの名無しさん
10/03/11 13:14:51
るびまは随時アップデートすべき?
それもなんか違うよねえ

271:デフォルトの名無しさん
10/03/11 13:21:27
でも古くて使えない情報をいつまでも放置しとくのもどうかと。
もうこの情報は古いの注釈ぐらい入れたほうが、検索でたどり着いた初心者には有用かもしれない。

272:デフォルトの名無しさん
10/03/11 13:27:12
>>271
よしじゃあ君を「るびまの情報が古いかどうか全ページ調べて毎週報告する係」に任命だ

273:デフォルトの名無しさん
10/03/11 13:33:15
MLで報告なりすれば時間があるときに編集部注的なものはつけられるかもしれないが
一番の問題はアクティブメンバーはるびまの過去記事に触れる機会がないということだな

たとえば、このスレにいるような人は「Ruby CGI」でわざわざぐぐったりしないだろ
URLリンク(www.google.com)
だから、「古い情報の害」にぶち当たるのは常に初心者だけだ

274:デフォルトの名無しさん
10/03/11 13:47:52
この記事は参考になりましたか?

 ・ 参考になった
  ○ 記事自体が有用だった
  ○ 参考程度にはなった
 ・ 参考にならなかった
  ○ 期待した内容と違った
  ○ 記事通りに動作しなかった

みたいなアンケートを一番下にくっつけとくというのはどう

275:デフォルトの名無しさん
10/03/11 13:54:43
記事を寄稿した人に頼むしかない現状が…

本気でアップデートしたら別記事になってしまう

276:デフォルトの名無しさん
10/03/11 15:05:45
バージョン対応の管理は面倒だよねえ
うまくやる方法はあるのかな

277:デフォルトの名無しさん
10/03/11 15:16:42
今回でいえば「RubyでCGIをつくろう2010」という記事が1本書けることが示された

ネタの確保には成功したが誰が書くのかまでは知らん


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