Rubyについて Part 8
レス数が1000を超えています。これ以上書き込みはできません。
0001親父!俺もやっとスレ立てたよ!
NGNGRuby Home Page
http://www.ruby-lang.org/ja/
= 前スレ
: Rubyについて Part 7
http://pc2.2ch.net/test/read.cgi/tech/1074235226/
= 過去スレ
: Rubyについて Part 6
http://pc2.2ch.net/test/read.cgi/tech/1067623825/
: Rubyについて Part 5
http://pc2.2ch.net/tech/kako/1063/10630/1063028224.html
: Ruby について Part 4
http://pc2.2ch.net/tech/kako/1056/10569/1056944114.html
: Ruby について Part 3
http://pc2.2ch.net/tech/kako/1042/10420/1042004759.html
: Rubyについて Part 2
http://pc3.2ch.net/tech/kako/1028/10289/1028906179.html
: Rubyについて
http://pc3.2ch.net/tech/kako/1012/10120/1012096319.html
0002おかん!見てるか!?
NGNG: Matzにっき
http://www.rubyist.net/~matz/
: Ruby Weekly News @ Ruby Garden
http://www.rubygarden.org/rurl/html/
: <rubyXML/>
http://www.rubyxml.com/
: ruby-cvs
http://rrr.jin.gr.jp/rwiki?cmd=view;name=ruby-cvs
: Ruby hotlinks 五月雨版
http://znz.jin.gr.jp/samidare/
: リファレンス
http://www.ruby-lang.org/ja/man/
= 関連スレッド
: rubyを語るスレッド 4
http://pc.2ch.net/test/read.cgi/unix/1060537252/
0003デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNG0006デフォルトの名無しさん
NGNG自分で張れや知障が
0007いちにんまえのスレ建て人>>1
NGNG例のってどれだよハゲ
0008デフォルトの名無しさん
NGNG乙
0009デフォルトの名無しさん
NGNG具体的には、CGIと同じフォルダに65KBぐらいの大きさの a.dat を用意し、
以下のCGIを実行して現れるボタンを押すと固まります。
#!/usr/bin/ruby
print "Content-Type: text/html\n\n"
if !ENV['CONTENT_TYPE'].nil?
File.open('./a.dat') do |f|
while str = f.gets; print str; end
end
else
print "<form method=post><input type=text name=a><input type=submit></form>"
end
環境はOS Windows、Ruby 1.8.1mswin32、Apacheで発生しました。
ちなみにLinuxだとうまくできてしまいました。
どうにかしてちょ(´・ω・`)
0010デフォルトの名無しさん
NGNGa.datって中に改行ある?
なんとなく、
File.open('./a.dat', 'rb') do |f|
while str = f.read(1024); print str; end
end
とすればいいような気がするが、試してないし根拠もない。
0011デフォルトの名無しさん
NGNGそんな設定をするやつの気が知れんのだが。
なぜそんな設定をするやつのことを考慮しなきゃいけないのか。
0012デフォルトの名無しさん
NGNGもうちょっと世界を知れ。
0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNG0015デフォルトの名無しさん
NGNGヲレもそれおもった。
MLはとらずに、いつもblade見ている人間なので。
0016デフォルトの名無しさん
NGNG改行あります。
a.datは2ちゃんのdatファイルを想定してます。
今試しているdatでは167行目を超えると反応なしに。
改行ばっかりのファイルを作成してみたら8000行くらいで反応なしになりました。
(ファイルサイズは56KBくらい)
>>10のコードも試してみましたが駄目でした。
Linux上でテストしようかなぁ(´・ω・`)
0017デフォルトの名無しさん
NGNG0018デフォルトの名無しさん
NGNG0019デフォルトの名無しさん
NGNGsjis = Regexp::compile("[\x82\x9f-\x82\xaa]", nil, 's')
buf.each do |str|
if ($sjis == 1) # 無駄なループを減らす
break
end
case str
when sjis
$sjis = 1
end
end
buf.each do |str|
if ($sjis == 1)
なんとか
end
かんとか
end
end
今こんな感じに、処理すべきテキストがSJIS の場合$sjis に1 が
代入されるようにしているのですが、ものすごく非効率的な感じがします
もう少しきれいに書けないでしょうか?
0020デフォルトの名無しさん
NGNG0021デフォルトの名無しさん
NGNGネタかよ!
0022デフォルトの名無しさん
NGNG# グローバル変数やめれ。
require "nkf"
def hoge(buf)
sjis = (NKF::guess == NKF::SJIS)
buf.each do |str|
なんとか if sjis
かんとか
end
end
0023デフォルトの名無しさん
NGNGsjis = Regexp...
jis = Regexp...
buf.each do |str|
if ($ja == 1) # 無駄なループを減らす
break
end
case str
when sjis, jis
$ja = 1
end
end
buf.each do |str|
if ($ja == 1)
str = NKF::nkf('-e', str)
end
なんとか
end
19は簡略化して書いたんですが、本当はこんな感じのことがやりたかったんです。
nkfがもの凄く重いので事前に日本語だとわかってるときだけ動いて欲しい。
上の日本語判定のところがどうにも無駄なような気がして
0024デフォルトの名無しさん
NGNGそんな重くないかも知れないし重いかも知れない。
しかし nkf ってそんな重いかね?
0025デフォルトの名無しさん
NGNG002616
NGNG返信ありがとうございます。
flush と each を試してみましたが、やはりファイルが大きいと固まります。
ただ、テスト環境でWindows使ってるだけで、最終的にはLinux上で使うので、
50KBぐらいの小さいファイルでテストすれば動作するようなのでそれでやります。
0027デフォルトの名無しさん
NGNG$ja = 1のところですぐにbreakしないのはなぜ?
0028デフォルトの名無しさん
NGNGほかの部分がほとんど何にもしてないような場合なんじゃないかな。
0029デフォルトの名無しさん
NGNGnkfってCで書かれたやつだろ。あっ、ですわよね。
Rubyで判定コード書くより相当早いんじゃねーの?あっ
0030デフォルトの名無しさん
NGNGbuf.each do |str|
case str
when なんとか
$ja = 1
break #ここでbreakしてもcase~whenを抜けるだけだと思ってたから
end
かんとか
end
あれからしばらくしてbreakですぐ抜けるよう書き直しました
0031デフォルトの名無しさん
NGNG0032デフォルトの名無しさん
NGNGundefined local variable or method `ja' for #<Probability:0x402881d0> (NameError)
こういうエラーが出るから
0033デフォルトの名無しさん
NGNG最初に0代入しとかなきゃならんのか
http://www.ruby-lang.org/ja/uguide/uguide22.html
0034デフォルトの名無しさん
NGNGつか、グローバル使うくらいならインスタンス使う方が普通な気も?
0035デフォルトの名無しさん
NGNG0036デフォルトの名無しさん
NGNGそれやっても34は変わらないぞ。
34.sub!(/初期化する/, '\1言語の')
0037デフォルトの名無しさん
NGNG0038デフォルトの名無しさん
NGNGえ、じゃ、何使うの?
0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNGですよ。
0041デフォルトの名無しさん
NGNG一目では理解できないスクリプト用。
0042デフォルトの名無しさん
NGNG0043デフォルトの名無しさん
NGNGじゃあtabって一体何のためにあるんだ
0044デフォルトの名無しさん
NGNG0045デフォルトの名無しさん
NGNGtab コードの話と tab キーの話がごちゃまぜになってない?
0046デフォルトの名無しさん
NGNGエクセルでタブ区切りでcsvに吐かせたり、
まあいろいろある。
0047デフォルトの名無しさん
NGNG0048デフォルトの名無しさん
NGNG0049デフォルトの名無しさん
NGNG補完
0050デフォルトの名無しさん
NGNGいや、だから、「tab キー」の話をここでするのは混乱するからやめたほうが。
0051デフォルトの名無しさん
NGNG0052デフォルトの名無しさん
NGNG34.sub!(/(初期化する)/) do $1+'言語の'; end
ブロックと$1をつかう。かな?
>>37じゃないからわからn
0053デフォルトの名無しさん
NGNG0054デフォルトの名無しさん
NGNGそうすれば黙っておとなしく従うよ。
もともとインデントサイズ・キャラクタコードなんて何の必然性もないんだからな。
0055デフォルトの名無しさん
NGNGネイティブスレッドと相性が悪い問題とかどう解決したのか知りたいね。
0056デフォルトの名無しさん
NGNG0057デフォルトの名無しさん
NGNGなぜ $& を使わないのかと
0058デフォルトの名無しさん
NGNGperlにするか。
005952じゃないけど
NGNGへぇー $& って知らなかった。
$1 よりもわかりにくくない?
俺は可読性をとくに高めたいときは
Regexp.last_match[0] とか Regexp[0] って
冗長にタイプするときもあるよ。
でも余計なリテラル増えるし。
0060デフォルトの名無しさん
NGNG# 更にPerlだと遅いから使うなというのも常識
## Rubyでは $&, $', $` は遅くない
0061デフォルトの名無しさん
NGNGなぜブロック引数を使わないのかと
個人的には、ブロック付き sub, gsub(あと scan)は
ブロックに MatchData を渡して欲しいかも。
0062デフォルトの名無しさん
NGNGあえて言うけど「一般的な」用途向けには、
String が来たほうが便利というかタイプ数が少なくなると思う。
MatchData だとリテラル増えるし、別に Regexp.last_match でアクセスできるし。
そのへんのバランスはよく考えられてると思う。角度とか。
0063デフォルトの名無しさん
NGNG何の「角度」?
まあ、ruby は「統一性」優先よりも「使用感」優先だもんな。
0064デフォルトの名無しさん
NGNGでは返り値0の時困るんですが
どう書けばいいですか?
できればperlから離れ過ぎない書き方がいいです
0065デフォルトの名無しさん
NGNG> # 更にPerlだと遅いから使うなというのも常識
> ## Rubyでは $&, $', $` は遅くない
$ time perl -e 'for(1..1000000){/(\d+)/;$s+=$1}print "$s\n"'
500000500000
1.79user 0.00system 0:01.79elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
$ time perl -e 'for(1..1000000){/\d+/;$s+=$&}print "$s\n"'
500000500000
1.68user 0.00system 0:01.68elapsed 98%CPU (0avgtext+0avgdata 0maxresident)k
「Perlだと$&が遅いという常識」はデマだと分かりました
0066デフォルトの名無しさん
NGNGていうかRuby自身が新規のバッドノウハウ撒き散らしててウザ杉。
0067デフォルトの名無しさん
NGNGttp://www.media-k.co.jp/jiten/wiki.cgi?%A1%E3%A4%AB%A1%E4#i23
0068デフォルトの名無しさん
NGNG0069デフォルトの名無しさん
NGNGよく分かったよ。
0070デフォルトの名無しさん
NGNG> MatchData だとリテラル増えるし
何の話だ? コードに書いた以上のリテラルができることはないぞ。
0071デフォルトの名無しさん
NGNG0072デフォルトの名無しさん
NGNGString#gsub に渡すブロックの引数が
String になる場合と比べてね。
0073デフォルトの名無しさん
NGNG0074デフォルトの名無しさん
NGNGそうそう
0075デフォルトの名無しさん
NGNG0076デフォルトの名無しさん
NGNGやりたいことは、ERB::Util#escape_html()ってのがあるんだけど、これをCGIスクリプトで使いたいの。
でも暮らすメソッドじゃないから、CGI.escapeHTMLのようには使えない。
importeかextendでなんとかなるのかと思ったけどできないし。
0077デフォルトの名無しさん
NGNGインスタンスに対して作用するか、インスタンスの情報が必要かだか
らこそインスタンスメソッドにするわけだ。もしインスタンスが必要
でないなら、クラスメソッドにしてそれを使うか、module_function
にしたほうがいい。
ところで、標準のerb.rbにはERB::Utilなんてないようなんだが。
0078デフォルトの名無しさん
NGNGあるよ。
$ grep Util /usr/lib/ruby/1.8/erb.rb
# ERB::Util
module Util
あと
http://www2a.biglobe.ne.jp/~seki/ruby/erbway.html
とか。
いや、Rubyなら特異メソッドなりを使えばなんだってできるような気がしたもんだから。
やっぱ無理っすか。
ERB::Util.h()はクラスメソッドもつけて欲しかった。require 'cgi' するしかないか。
0079デフォルトの名無しさん
NGNGとりあえず自分で module_function したら?
module ERB::Util
module_function :html_escape
end
p ERB::Util.html_escape("&") #=> "&"
0080デフォルトの名無しさん
NGNG% ruby -rerb -e 'include ERB::Util; p html_escape("<p>")'
"<p>"
% ruby -v
ruby 1.8.1 (2003-12-25) [i686-linux]
という話ではなく?
008180
NGNG"&lt;p&gt;"
0082デフォルトの名無しさん
NGNGあれーなんでできるの?おれはぜんぜん出来なかったのに・・・
と思ったら
>>79
メソッド名を間違えてただけでした。真できます。
0083デフォルトの名無しさん
NGNG本題は解決したようですが。
これって明らかにクラスメソッドであるべきだと思わない? >all
もしそう思ったら、ぜひメンテナ(咳さん)に報告してあげてよ >>79
こういう細かい改良の報告を積み重ねる事こそ、バザールモデルの
力の源だと思うのだけれど。
# やけに高尚になってスマソ
0084デフォルトの名無しさん
NGNGクラスメソッドにしてしまうとクラス名つけないと使えなくなるのでそれはそれで不便だろう。
どちらの形でも使えるようにモジュール関数にすべきだという意見なら賛成だな。
自分で>>76のようにすれば今のままでもいいといえばいいが、はじめからそうなってた方が
なにかと便利だろうし。
0085デフォルトの名無しさん
NGNG>>64-67 には、流れを切ってしまってスマンかった。
それと、>>72, >>74 の名前は以下になってました。
>>59=>>62
変更しわすれますた……ごめんなさい。
0087デフォルトの名無しさん
NGNG0089デフォルトの名無しさん
NGNGdef test_1
end
def test_2
end
end
とあって、test_2 だけ実行したいときはどうすればいい?
コマンドライン引数でやれるとのことでしたが:
$ ruby footest.rb test_2
cygwin rubyではできませんでした
他でも多分、できないと思うんですけども
0090デフォルトの名無しさん
NGNGruby -r footest -e 'footest = FooTest.new; footest.test_2'
0091デフォルトの名無しさん
NGNGそれはRWikiがぜんぜん広まらないからです。
RWikiは、インストールの難しさもあるけど、それ以上に見た目のデザインがダメすぎます。
英語ばっかりで恐いし、色も気持ち悪いです。
こんなんじゃ一般プログラマは誰も使う気にならないでしょう。
Rubyの未来のためになんとかしてください。
PukiWiki
http://pukiwiki.sourceforge.jp/pukiwiki1.4/pukiwiki.php?FrontPage
RWiki
http://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=top
0092デフォルトの名無しさん
NGNG0093デフォルトの名無しさん
NGNGRubyを使っていることを全面に押し出してもらいたい。
0094デフォルトの名無しさん
NGNG0095デフォルトの名無しさん
NGNG0096デフォルトの名無しさん
NGNG短く書きすぎ。
「どう」なんとかしろとか言っている奴が、「何を」いろいろと勘違いしている
のかを言わないと。
0097デフォルトの名無しさん
NGNG0098RPI ◆3x0ES2jpL2
NGNGRuby Professional Institute は、Ruby の専門家それぞれのレベルを測るために、
各国共通の基準となる認定制度 RPIC の創設を計画中です。
# RPIC は「アルピック」と発音します。
Ruby の専門家の雇用主や契約先といった団体組織や専門家自身のニーズを満たす
技術者資格を目指しています。
資格は、Level 1 (初級)、Level 2 (中級)、Level 3 (上級) の3つに
分かれる予定です。
Level 1 の試験内容は、逐次、このスレで発表があります。
0099デフォルトの名無しさん
NGNGさらに短く書くと。
「クレクレ君うざい」
0100デフォルトの名無しさん
NGNGどんなところで使われてるの?
0101デフォルトの名無しさん
NGNGJavaの代わりに決まってるだろ?
煽りはドトネトすれいってやれよ。
0102デフォルトの名無しさん
NGNGなんじゃこりゃー
Rubyもなんか認定試験がつくようになったんだね
0103デフォルトの名無しさん
NGNG知らなかった、Rubyの資格ができるとは。
やっぱりスクリプト言語が社会的に認知されるようになって来た、ということかな?
参考になりました。サンクス。
0104デフォルトの名無しさん
NGNGまつもとひろゆき氏は4月1日、自身が開発するオブジェクト指向スクリプト言語の次世代実装、通称Liteのβバージョンを発表した。
LiteのLはLispを意味し、LiteはすべてEmacs Lispによって書かれている。このため移植性は非常に高い。
この他のLiteの優れた特徴としては
・動作の重量感
・「;;」によるコメントアウトの実現
・新標準ライブラリ「psychiatrist」
・Kernel#car・Kernel#cdrなどを実装
・処理系自身がGCの恩恵を受けるため、segmentation faultとは無縁
・「)」を文の終端とし不要な「(」を無視することによって、カッコまみれのLisp風新文法を実現
・いちいちEmacsを立ち上げる必要があり、思考が寸断され同氏の掲げる「苦しいプログラミング」を体感できる
・新正規表現処理エンジン「Onigoroshi」により、Emacs Lisp由来のバックスラッシュを多用した分かり辛い表記に対応
などが挙げられる。
ダウンロード開始時期は未定。
0105デフォルトの名無しさん
NGNGload と require の違いって何ですか?
load も require もロード&実行するみたいなんですが。
0106デフォルトの名無しさん
NGNG前スレでもあったな。その質問。
requireは同じものを1度しか読まない。
loadは呼ばれたら必ず読む。
で、合ってる?
0107デフォルトの名無しさん
NGNG何か最近おんなじ話をどこかで見たな。
デジャブュか?
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=FAQ%3A%3A%A5%AF%A5%E9%A5%B9%A1%A2%A5%E2%A5%B8%A5%E5%A1%BC%A5%EB#a6.2e11.20load.a4.c8require.a4.cf.a4.c9.a4.a6.b0.e3.a4.a4.a4.de.a4.b9.a4.ab
0108デフォルトの名無しさん
NGNGリファレンスマニュアルのFAQにあるから読んできなされ。
ttp://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Ruby+FAQ
次からは質問する前にこことマニュアルをチェックしてくだされ。
わかんなかったら require だけ使ってれば問題ないと思うよ。
0109105
NGNGありがとうございます。
FAQだったようですみません。
マニュアルは読んだのですが、「load が必ず読む」ということが
明記されていなかったので、両者の違いがみいだせず
混乱したしだいでございます。
以後、FAQ を気をつけて読むように致します。
0110デフォルトの名無しさん
NGNG誰かが書き直してくれたよ(君かもしれんが)。
0111デフォルトの名無しさん
NGNG0112デフォルトの名無しさん
NGNG0115デフォルトの名無しさん
NGNG正直なところ >>104 はつまらなかった。
0116スクリプト未経験者
NGNG0117デフォルトの名無しさん
NGNGあんたよりはある。
0118デフォルトの名無しさん
NGNGおれよりもある。
0119デフォルトの名無しさん
NGNG0120デフォルトの名無しさん
NGNG何を必死こくの?
RZope とか、RCSV とか、RSubversion とか?
0121デフォルトの名無しさん
NGNG0122デフォルトの名無しさん
NGNGZend社のようなことを言ってんだよ。
0123デフォルトの名無しさん
NGNG0124デフォルトの名無しさん
NGNG0125デフォルトの名無しさん
NGNG0126デフォルトの名無しさん
NGNG0127デフォルトの名無しさん
NGNG網道は後半がビミョー。場外乱闘は買って損した。
0128デフォルトの名無しさん
NGNGリファレンスが尻切れトンボだった罠。
DBIのやつ買おうと思って立ち読みしたら、
半分以上違う話で、さすがに金を出そうとは思えんかった。
0129デフォルトの名無しさん
NGNG> DBIのやつ
買っとけよ!話のネタになるだろ!
0130デフォルトの名無しさん
NGNGまあ、好意的に書くと、
「Emacs由来のバックスラッシュ多用正規表現」というのにはそれなりに同情。
0131デフォルトの名無しさん
NGNG前 UnixUserで連載してたやまだあきらってひとは、
なかなかいい記事書いてたから彼の本買ってみたいんだけど
0132デフォルトの名無しさん
NGNGhttp://www.amazon.co.jp/exec/obidos/search-handle-url/index=books-jp&field-author=%E3%82%84%E3%81%BE%E3%81%A0%20%E3%81%82%E3%81%8D%E3%82%89
ruby way は訳書だが、初心者向き。
rubyアプリケーションプログラミングは、もうちょっと中級向き。
0133デフォルトの名無しさん
NGNG0134デフォルトの名無しさん
NGNGあとはリファレンスに「プログラミングRuby」かね。
これくらいあれば十分かな。
0135デフォルトの名無しさん
NGNGRubyプログラミング入門
http://www.amazon.co.jp/exec/obidos/ASIN/4274063852/249-5918135-2015557
0136デフォルトの名無しさん
NGNGありがとうございます。
Ruby way は探したんですけど、なかった(´・ω・`)。
0138デフォルトの名無しさん
NGNG環境:Windows98 + Ruby1.8.0(mswin32版)
このアプリケーションの実行に必要なライブラリファイルの1つが見つかりません
-D:/DEVELOP/Ruby/lib/ruby/1.8/i386-mswin32/tcltklib.so (LoadError)
と怒られてしまいます。ですが
D:\DEVELOP\RUBY\lib\ruby\1.8\i386-win32\tcltklib.so
は所定の場所に見つけることができました。
Tcl/Tkを D:\Develop\Tcl以下に導入したので
RUBY_TCL_DLL=D:\Develop\Tcl\bin\tcl84.dll
RUBY_TK_DLL=D:\Develop\Tcl\bin\tk84.dll
で環境変数を与えています。
Tcl/Tkのデモスクリプトが実行できたのを確認しました。
ためしに同じスクリプトをmingw版で実行するときちんと通ります。
cygwin版はmswin32版と同じでLoadDrrorが出てしまいました。
インストールしたファイルは
ftp://ftp.ruby-lang.org/pub/ruby/binaries/
から落としたバイナリ版です。
これはmingw版を使えってことなのでしょうか。
何かよきアドバイスをお願いします
0139デフォルトの名無しさん
NGNGD:\DEVELOP\RUBY\lib\ruby\1.8\i386-win32\tcltklib.so
よーく比べてみよう
0140138
NGNGD:/DEVELOP/RUBY/lib/ruby/1.8/i386-mswin32/tcltklib.so (LoadError)
D:\DEVELOP\RUBY\lib\ruby\1.8\i386-mswin32\tcltklib.so
0141デフォルトの名無しさん
NGNGttp://www.starware.one.pl/software/sws/index.html
それか、おとなしくCGIKitつかっとけ。どっちも似たようなもんだ。
0142デフォルトの名無しさん
NGNGよくわからんが、D:\Develop\Tcl\binにPATHを通してみては?
0143138
NGNGやっぱりLoadErrorと言われました。
win32版はあきらめて
動いてくれているmingw版を使うことにします。
0144デフォルトの名無しさん
NGNGWebObjectsを参考にしているだけあって、生産性の向上はかなり微妙だが
何も使わないほうがよいと漏れは思うよ
0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNG花見もいいのだけど。
0147デフォルトの名無しさん
NGNG0149デフォルトの名無しさん
NGNGサンクスコ
0150デフォルトの名無しさん
NGNGちょんまげが乱れた落ち武者を想像してしまったぞ。
0151デフォルトの名無しさん
NGNGknuタンだ。FreeBSD界ではportupgradeの作者として高名かな。
0152デフォルトの名無しさん
NGNGRPGツクールでRubyが使えるようになるんだってさ。一ヶ月近く昔のニュースだけど。
0153デフォルトの名無しさん
NGNG本人の表記に従うなら"musha"のはず。
0154デフォルトの名無しさん
NGNGスレ立つたびに宣伝レスするのやめれ。
0155デフォルトの名無しさん
NGNGhttp://www.musha.org/~akinori/diary/
0156デフォルトの名無しさん
NGNGだから、そのアドレスは 301 (Moved Permanently) だって。
正しくはこっち
http://d.akinori.org/
0157デフォルトの名無しさん
NGNG前スレにあったの?
スマソ
01589
NGNGruby が固まると書きましたが、同じようなコードをperlで書いても固まったので、
ruby ではなくapacheとか環境が問題っぽいことがわかりました。
お騒がせしました。
0159デフォルトの名無しさん
NGNG┌-┴-┐ l l
├──┤ | _ l -┼─
├──┘  ̄| ̄ ヽ | _ | ─-
| l / | │  ̄ ヽ |
⊥-ーヽ、_ | ヽl _ノ | ヽ__ o
0160デフォルトの名無しさん
NGNGWindows:
File.basename('d:\kirai\demo\suki') #=>sukiが得られる
Linux:
File.basename('d:\kirai\demo\suki') #=> d:\kirai\demo\sukiが得られる
できれば動作を一緒にしてもらいたかった…。
0161デフォルトの名無しさん
NGNG0162デフォルトの名無しさん
NGNGOS によって同じ動作にしたければ、普通はこうすると思うけど。
File::basename('d:/kirai/demo/suki')
0163デフォルトの名無しさん
NGNGls d:\kirai\demo\suki で引っかかるし
0164デフォルトの名無しさん
NGNGどっちかというとこっち。
File.basename('d:\kirai\demo\suki') #=>sukiが得られる
>>162
ありがとうございます。やっぱりその方法ですか。trでもしときます。
>>163
それはいいんですが、File.basenameではベース名が取得できてほしいんです。
今作ってるものはCGIなんですが、その中で \ 区切りパス文字列をブラウザが送ってくるもので…。
いちいちtrするのも・・・。
0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNG> その中で \ 区切りパス文字列をブラウザが送ってくるもので…。
そのへん詳しく教えれ。
0167デフォルトの名無しさん
NGNGhttp://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=DOSISH+%C2%D0%B1%FE
0168デフォルトの名無しさん
NGNG0169デフォルトの名無しさん
NGNG自分がいなくてもスレは回る、地球は回る…('・ω・`)ショボーン
0170デフォルトの名無しさん
NGNG0171デフォルトの名無しさん
NGNG>>166
CGIなんで微妙にスレ違いですが、multipart/form-data のfilenameの部分です。
↓の filename="D:\data\ruby\a.rb" の部分です。
-----------------------------7d45c21102aa
Content-Disposition: form-data; name="uploadfile1"; filename="D:\data\ruby\a.rb"
Content-Type: application/octet-stream
print File.basename("http://www.2ch.net/2ch.htm"), "\n"
print File.dirname("http://www.2ch.net/2ch.htm"), "\n"
-----------------------------7d45c21102aa--
>>167 うーん、unix系でも同じような動きがいいんだが。正直スマンカッタ
>>170 正直スマンカッタ
0172デフォルトの名無しさん
NGNGFile.basename とは別に CGI::XXX.basename みたいなのを作って、
そっちはプラットフォームにかかわらず DOSISH 対応、ってのがいいやり方なのかなあ。
うpろだ作るなら避けて通れない問題っぽいけど、普通はどうしてるんだろうか。
ちらっと調べたら、
File.basename(params['foo'][0].original_filename.gsub(/\\/, '/'))
みたいなことしてるのを発見したけど。
0173デフォルトの名無しさん
NGNGperl の -T -B みたいな機能。
0174デフォルトの名無しさん
NGNGないと思う。
……っていうか、perl にはそんな演算子があることを始めて知った。
「テキストファイル」と「バイナリファイル」の定義を知りたいものだ。
0175デフォルトの名無しさん
NGNGhttp://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=NKF
0176デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNGファイルの先頭の数百バイトを見て判断してるらしい。
ちなみに日本語入りファイルはバイナリファイル。
0178デフォルトの名無しさん
NGNGオフィシャルのサンプル使ってもmd5、md5sumとかで生成した値と一致しないんだけど?
0179デフォルトの名無しさん
NGNG0180デフォルトの名無しさん
NGNG> うーん、unix系でも同じような動きがいいんだが。
UNIX だと '\' もファイル名に使えるからあまりよろしくないんじゃないかと。
'/' なら UNIX でも DOSISH でもファイル名に使えないので、
'/' に path 区切りを揃えてから File::basename に食わせるという方が良いと思う。
0181デフォルトの名無しさん
NGNGD:\WINNT\system32>ruby -rmd5 -e "p Digest::MD5.hexdigest( ARGF.read() ) " NTOSKRNL.EXE
"ab349b95d62bf9770a17959c00a8b022"
D:\WINNT\system32>ruby -rmd5 -e "ARGF.binmode;p Digest::MD5.hexdigest( ARGF.read() ) " NTOSKRNL.EXE
"dccb693e32ca945462bf4f12185a1e82"
D:\WINNT\system32>\\tpi\d$\cygnus\bin\md5sum.exe NTOSKRNL.EXE
dccb693e32ca945462bf4f12185a1e82 *NTOSKRNL.EXE
というオチ?
0182178
NGNGの
> require 'digest/md5'
> p Digest::MD5.hexdigest(File.read("ruby-1.8.0.tar.gz"))
です。
同じファイルをこのスクリプト(ファイル名の部分だけ変更)とmd5とかmd5sumでmd5値を作ると合致しないんです
0184171
NGNGおお。納得。そういえば \ ってつかえますもんね。
path 区切り揃える方向でつくります。
そう考えると確かに >>172 のようなものを用意して、
それを使うようにする方がいいですね。
0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNGMutex風のクラスはありませんか?
0188デフォルトの名無しさん
NGNGrequire 'sync'
0190デフォルトの名無しさん
NGNG印字できないバイトが入ってたらバイナリファイル、ってくらいでいいなら自分で作れるだろ。
0191デフォルトの名無しさん
NGNG0192デフォルトの名無しさん
NGNGhttp://raa.ruby-lang.org/list.rhtml?name=filemagic
0193デフォルトの名無しさん
NGNG全部CR+LFにそろえることはできますか?
$KCODE="s"としておくと全部表示がShift_JISになるような。
Rubyスクリプトと生成データをLinuxとWindowsで使いまわすもので…
0194デフォルトの名無しさん
NGNG回答になってないけど、ふつー print "hoge\n" でなくて puts "hoge" 。
0195デフォルトの名無しさん
NGNGWindowsでputsするとCR+LFになるの?
0196デフォルトの名無しさん
NGNGやってみほ。Windowsが周りに無いの?
0197デフォルトの名無しさん
NGNG0198デフォルトの名無しさん
NGNGprecision do
《Rationalになる演算》
end
みたいな。面倒か。
0199デフォルトの名無しさん
NGNG漏れもそんな感じが良いと思ってた。
0200デフォルトの名無しさん
NGNGWindwos版Ruby(mingw32、mswin32、bccwin32、djgpp)では出力される改行は全てCR+LF。
UNIXのようなもの版Rubyでは出力される改行は全てLF。
Cygwin版Rubyでは出力される改行は全てLF。
Rubyに限らず3番目でハマる人が時々います。
cygwin向けにコンパイルされたプログラムをcygwin外でも使おうとする人ね。
>>193
つーことで多分できません。生成されたデータファイルの改行を適宜再加工してください。
0201デフォルトの名無しさん
NGNG0202デフォルトの名無しさん
NGNGCygwin って、text mode で mount してる時も LF になるんだっけ?
0203デフォルトの名無しさん
NGNGうーん、mount -tで明示的にマウントされた場合は
改行がファイルに書き込まれた時にCR+LFに変換されるっぽい。
マウントポイントごとに設定しわけることはできるけど…めんどいね。
Cygwin環境用にコンパイルされたプログラムをCygwinシステム外の
普通のWindowsプログラムとしてこっそり使うときはどういう処理になるんだろう。
よくわかめ。
0204デフォルトの名無しさん
NGNGリソースの分散はあまりにももったいない。
Pythonに対する明確なアドバンテージを示せないなら今すぐ開発をやめるべきだと思うがいかがかな?
0205デフォルトの名無しさん
NGNG0206デフォルトの名無しさん
NGNGPythonに対する明確なアドバンテ−ジは、わしが使ってること。
0207デフォルトの名無しさん
NGNG統一厨が宗教戦争を仕掛けるスレはここでつか?
0208デフォルトの名無しさん
NGNG0209デフォルトの名無しさん
NGNG\/ ● 、_ `ヽ ======
/ \( ● ● |つ
| X_入__ノ ミ こんな餌で俺がクマーーーーー!!
、 (_/ ノ /⌒l
/\___ノ゙_/ / =====
〈 __ノ ====
\ \_ \
\___) \ ====== (´⌒
\ ___ \__ (´⌒;;(´⌒;;
\___)___)(´;;⌒ (´⌒;;
(´⌒; (´⌒;;
0210デフォルトの名無しさん
NGNG今更別の言語に移る価値はないだろ。
0211デフォルトの名無しさん
NGNG0212デフォルトの名無しさん
NGNGRubyはいらないんだけどな。
0213デフォルトの名無しさん
NGNGRiteよりは(ry
0214デフォルトの名無しさん
NGNGうちの会社は UNIX 上のサーバサイドアプリしか作らないので
.NET に縁がありません。
0215デフォルトの名無しさん
NGNGでなきゃIntercalなんて生まれてない。
0216デフォルトの名無しさん
NGNG$/ を使うのはどうですか。
0217デフォルトの名無しさん
NGNG自分は147ではないけれど、
リンク先を読んでも、言わんとするところがよく分からなかったっす。
よかったらもうちょい解説お願いします。
# 「もしそれがアヒルのように歩き、アヒルのように鳴くなら、それはアヒルに違いない。」??
0218デフォルトの名無しさん
NGNG0219デフォルトの名無しさん
NGNG自分は >>147 ですけれど、
「もしそれが String と同じメソッドを持ち、String のようにふるまうなら、
それは String の duck type に違いない」
と読みました。
0220デフォルトの名無しさん
NGNGテストを書かずにリファクタリングってどうやってるんだろうか?
0221デフォルトの名無しさん
NGNG彼って、matz? テスト書いてるよ。
http://www.rubyist.net/~matz/20040309.html#p01
0222デフォルトの名無しさん
NGNG0223デフォルトの名無しさん
NGNGああ、そっちの人か。
誰か勝手に CVS にテストを突っ込んどいたら。
0224RPI ◆3x0ES2jpL2
NGNGRuby Professional Institute は、Ruby の専門家それぞれのレベルを測るために、
各国共通の基準となる認定制度 RPIC を創設しました。
# RPIC は「アルピック」と発音します。
Ruby の専門家の雇用主や契約先といった団体組織や専門家自身のニーズを満たす
技術者資格を目指しています。
資格は、Level 1 (初級)、Level 2 (中級)、Level 3 (上級) の3つに
分かれています。
Level 1
101 試験 Ruby 基本文法
102 試験 標準ライブラリ
Level 2
201 試験 オブジェクト設計
202 試験 ライブラリ
Level 3
作成中。
試験は、ピアソンVUE、アール・プロメトリックで受けられます。
0225デフォルトの名無しさん
NGNGもう2週間も前の話だろ。遅すぎ。
0226デフォルトの名無しさん
NGNG学生の漏れには、15000 円は高すぎる。
学割とかないのか?
0227デフォルトの名無しさん
NGNG学割あるよ。
Level 1 取った。
認定カードがピンクだぞ。
なんでピンクなんだ?
0228デフォルトの名無しさん
NGNGLevel 2 橙色
Level 3 赤
0229デフォルトの名無しさん
NGNG引っ掛け問題多すぎ。
15000円がパー。
RPIC 対策本は、翔泳社の赤本しかないのでつか?
0230デフォルトの名無しさん
NGNG1. 組み込み型
2. 式
3. メソッド
4. 正規表現
5. クラス、モジュール
6. 基本入出力
7. 例外
8. スレッド、プロセス
9. デバッガ
0231デフォルトの名無しさん
NGNGまだ学生なんで、就職時使おうと思っています。
0232デフォルトの名無しさん
NGNGマジでか?
101 は Ruby を普通に使っていたら絶対受かるぞ。
0233デフォルトの名無しさん
NGNGもうだめぽ。
0234デフォルトの名無しさん
NGNGアホか。
国家資格にしろ。
学生なら情報処理技術者試験の方を受けた方がはるかに良い。
プログラミング言語の試験だったら
Sun Certified Programmer for the JAVA
にしておけ。
Ruby に将来なんてない。
0235デフォルトの名無しさん
NGNG0236デフォルトの名無しさん
NGNG貯金が数万しかありません。どうしたらいいんでしょうか。
0237デフォルトの名無しさん
NGNG確か1円でも起業できるんじゃなかったっけ?
0238デフォルトの名無しさん
NGNGうちの会社では、Ruby でプロトタイプを作る。
最後に Java で作る。
移植しやすいように Ruby で Java スタイル。
attr_reader/writer ではなく、セッターゲッターを使う。
ヘビ式でなく、ラクダ式の命名規則に従う。
0239デフォルトの名無しさん
NGNG蛇式って?
0240デフォルトの名無しさん
NGNG_ で繋げる命名法じゃない?
bar_obj.foo_method() みたいな。
0241デフォルトの名無しさん
NGNG101 は 620 点、102 は 640 点でした。
普通に Ruby を使っていて、翔泳社の対策本をやれば受かります。
102 の Complex クラスとか、普段使わないので
対策本は必要です。
0242デフォルトの名無しさん
NGNG0243デフォルトの名無しさん
NGNGマチクタヒ゛レタ〜
☆ チン 〃 ∧_∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
ヽ ___\(\・∀・) < レベル2合格記まだ?
\_/⊂ ⊂_) \________
/ ̄ ̄ ̄ ̄ ̄ ̄/|
| ̄ ̄ ̄ ̄ ̄ ̄ ̄| |
| 三ヶ日みかん |/
0244デフォルトの名無しさん
NGNGでも面白い。
めげずに、もっとふざけてみ。
0245デフォルトの名無しさん
NGNG0246デフォルトの名無しさん
NGNG尋常でないずれ方だろ。
0247デフォルトの名無しさん
NGNGうん、おれもそこが面白いと思った。
0248デフォルトの名無しさん
NGNGいかにも2ちゃん初心者が宣伝しにきたって感じがします。
まぁどうでもいいけど。
0249デフォルトの名無しさん
NGNGそれとも無難にPerlにしておく方がいいですか?
0250デフォルトの名無しさん
NGNG(利点)
・あなたのプログラム感が広がる
・あなたのプログラミング技術が広がる
・あなたの選択肢がひとつ増える(このときにはRubyを使おう)
・あなたの宣伝文句がひとつ増える(Rubyも使えます)
・Perlに比べるとライブラリが少ないので、自作する機会が増える
・rubyを使える人とのコミュニケーションの機会が増える
(欠点)
・新しい言語を覚えるための時間的、経済的コスト
・Perlに比べるとライブラリが少ないので、自作する機会が増える
・「まだPerlを使ってるの?」と言ってもらえる機会が減る
・Perlで悪戦苦闘する機会が減る
くらいかな。
0251249
NGNG分かり易い回答ありがとうございます。
時間があればやってみてもいいって感じで受け止めました。
0252デフォルトの名無しさん
NGNGわざとずらしているように見える。
0253デフォルトの名無しさん
NGNG変数に$をつけなくて良い
文末に;をつけなくて良い良い
欠点
他の言語で書いたときに付け忘れるようになる
0255デフォルトの名無しさん
NGNGいまさら Perl なんてやる必要ないと思うけど。
せめてPHPにしたら?
0257デフォルトの名無しさん
NGNGもうCGIそのものが主流じゃないと思われ。
それに、あなたは自分の趣味としてウェブを運営しているのではなかったのですか?
趣味ならば、世の中の多勢に従う必要はありません。
まあ、ruby も十分多勢になりつつありますが。
0258デフォルトの名無しさん
NGNGそのうちある程度スキルが上がったころになれば、
嫌でもその言語のダメなところや各言語毎の利点欠点がわかってくるので、
そうなったら一番自分にしっくりきそうな言語に乗り換える。
そのときには、それまでに書き貯めたコードは無駄になるかもしれないが、
それまでに身に付けた知識は無駄にならない。
0259249
NGNGCGIはもうすたれてるのですか?
何故、Perlにしようと思ったかというと、Perlは過去の遺産が多いからです。
だから、自分の作ろうと思うCGIに似たCGIを容易に探せますよね。
後は自分用にカスタマイズすればいい訳ですから。
>>258
自分的にはrubyをしてみたいのですが、すぐに恩恵を受けられる実益(遺産が多いということ)を
考えると、Perlかなと思ったわけです。
PHPも結構、流行ってるみたいなので(あるサイトにはPHPの出現でPerlを学ぶ利点がなくなった
と書いてあった)結構、悩みます。
0260デフォルトの名無しさん
NGNG0261デフォルトの名無しさん
NGNGいやあ、もうそこまで考えてるなら、あとは自分で決めるだけっしょ。
決めることは、自分で出来るよね?
0263デフォルトの名無しさん
NGNG・成功するまで3回試行する
・3回試行してダメならあきらめる
の時、
result = nil
RETRY = 3
i = 0
begin while ( i < RETRY && ! result )
i += 1
puts "Try: " + i.to_s
result = do_something()
rescue
retry
end
puts "end."
と、ruby-lang.orgのrubyリファレンスマニュアルにある"while 修飾子"に
従って書いたつもりなんですが、rescueの行とputs "end."の行でparse error
で叱られます。
自分にはなぜparse errorになるのかがわからないのです。
どうすればうまく行くのでしょうか?
0264デフォルトの名無しさん
NGNG0265263
NGNGbegin
while ( i < RETRY && ! result )
i += 1
puts "Try: " + i.to_s
result = do_something()
end
rescue
...
なのね。
まだ文法が壊滅的だ...
0266デフォルトの名無しさん
NGNG古い話でスマンが
> 「Perlだと$&が遅いという常識」はデマだと分かりました
$1を使っても遅い。
0267デフォルトの名無しさん
NGNG「成功する」ってのはdo_smoethingがnil/false以外を返すってことなのか?
retryを使ってるあたりは例外が発生しなけりゃ、とも取れるんだが。
>>265だと、例外のときは試行せずに終るだろうし。
「成功」の定義と例外の扱いをどう考えてるのがよくわからん。
0268デフォルトの名無しさん
NGNGていうか、「$&を使うと他のマッチが巻き添えで遅くなる」なので65のベンチじゃわからんよ。
プログラムのある部分に出現した$&が「どのマッチの$&なのか?」を静的に決定するのが
カナーリ難しいので、プログラム中に$&が出てきたら全てのマッチについてとりあえず$&を
毎回保存しとくモードにしといて参照されたときに最新のを返すって実装にしちゃったから。
パターンマッチが1つしかなければ$&を使うのもカッコでくくって$1で取り出すのも同程度。
0269デフォルトの名無しさん
NGNGこゆことかな?
% time perl -e '$&;for(1..1000000){//}'
perl -e '$&;for(1..1000000){//}' 1.11s user 0.00s system 99% cpu 1.110 total
% time perl -e '$1;for(1..1000000){//}'
perl -e '$1;for(1..1000000){//}' 0.76s user 0.02s system 100% cpu 0.768 total
デマじゃなさそう。
0270デフォルトの名無しさん
NGNG"foo-bar.rb" か "foo_bar.rb" のどちらにするかの基準ってありますか?
0271デフォルトの名無しさん
NGNG"foo/bar.rb"
e.g. net/ftp.rb digest/mdg.so
0272デフォルトの名無しさん
NGNGそういう意味ではなくて、ファイル名が 2語以上で構成されている場合のはなしです。
標準添付のライブラリを見てみたら、結構いい加減ですね。
irb/input-method.rb
rdoc/generators/html_generator.rb
soap/netHttpClient.rb
好きにしる、ってことでしょうか。
0273デフォルトの名無しさん
NGNG0274デフォルトの名無しさん
NGNGmsg = `command -opt args`
result = $?
でresultにtrue/falseが格納されてることを期待しちゃダメ?
0275デフォルトの名無しさん
NGNG$?はProcess::Statusオブジェクト。
0276デフォルトの名無しさん
NGNGttp://www.ruby-lang.org/ja/のリファレンスマニュアル→組み込み変数に
1.6以前は整数。1.7からProcess::Statusオブジェクトだって明記してある
じゃん。
よく読め。
0277デフォルトの名無しさん
NGNG最新がなければ、例えば ruby 1.8.0 版のリファレンスマニュアルとか。
0278デフォルトの名無しさん
NGNGx = 1
x.taint
x.tainted? # => false
0279デフォルトの名無しさん
NGNG1.taint.tainted? # => false
1.0.taint.tainted? # => true
(10**100).taint.tainted? # => true
Fixnum だけか。まあ、「Fixnum は汚染さないという仕様だ」と主張されれば、
納得できるけど。
# その場合は Fixnum#taint は undef して欲しいが。
それよりも
"1".taint.to_f.tainted? # => false
の方が気持ち悪い。
ちなみに ruby 1.8.1 (2003-12-25) [i386-cygwin]。
以降で変更されてるのならスマソ
0280デフォルトの名無しさん
NGNGC++ から スクリプトとデータを char の配列で渡して、結果を自作の Tree クラスで返してもらいたいんですが、
その辺について解説したホームページとかあったら教えてもらえないでしょうか?
ちなみに C++ Builder 使ってるんですけど、Visual C++ でも全然問題ないです。
0281デフォルトの名無しさん
NGNGruby.hに"#if defined(__cplusplus)"とか書いてあるし、そのまま普通にやればいいんじゃない? なにか問題があるなら具体的に書いた方がよいと思います。
「どうしてももっとC++らしく書きたい」という理由なら、ttp://rubyxx.sourceforge.jp/でもどうぞ。
0282デフォルトの名無しさん
NGNGいろいろ突っ込みたいところはあるけど、とりあえず一箇所だけ。
> Fixnum は汚染さないという仕様だ
揚げ足を取りたいわけじゃないんだけど、脳内補完がうまくいきませんでした。
どういう意味っすか? もう一度書き直してもらえるとありがたい。
0283280
NGNGえ〜っと C++ / C の違いについて知りたいわけではなくて、
C から Ruby(の変数) にどうアクセスしたらいいか知りたいです。
どっかにそういうドキュメントがあったような気がしてるんですが、
思い出せないので;;
0284デフォルトの名無しさん
NGNGREADME.EXT.jaの事でしょうか。
0285デフォルトの名無しさん
NGNGマニュアルの表紙の下のほう、付録「HTML Help版と分割HTML」
http://www.ruby-lang.org/ja/man/
http://www7.tok2.com/home/misc/ruby.html
http://www7.tok2.com/home/misc/files/ruby/refm/temp/list.html
0286279
NGNGスマソ。「汚染さない」→「汚染されない」
現在のRubyの仕様は
・任意のオブジェクトは Object#taint で汚染することができる。
だと、オレは理解している。
でも実際に試してみると、Fixnum, Symbol, {Nil,True,False}Class は
:foo.taint.tainted? # => false
などとなる。
これは上に書いた仕様と違うのでマズイ。これの解決策は二つある。
(a) Fixnumなども、ちゃんと汚染できるようにする
(b) 「Fixnumなど、一部のオブジェクトは汚染できない」という仕様に変更する
普通に考えると(a)なんだけど、このケースでは(b)を選択しても、特に問題は
起きないような気がする。それだったらエラい人の好きな方に決めてもらって
いいよ……というのが>>279の前半で書きたかった事。
でも再考してみると、Bignum と Fixnum の関係だとか、よく分かんなく
なってきたので、その主張は保留。
後半の話は、オレが Ruby の汚染モデル(というか、汚染状態の伝搬モデル)を
勘違いしてそうな気もする。「foo.tainted? == true の時、foo を元にして
作ったオブジェクトは全て自動的に汚染される」という理解は合ってる?
リファレンス「セキュリティモデル」
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%A5%BB%A5%AD%A5%E5%A5%EA%A5%C6%A5%A3%A5%E2%A5%C7%A5%EB
0287デフォルトの名無しさん
NGNGRubyExtensionProgrammingGuide も参考になるかも。
ttp://i.loveruby.net/w/RubyExtensionProgrammingGuide.html
0288デフォルトの名無しさん
NGNG>>283 のやりたいのは逆じゃない?
0289デフォルトの名無しさん
NGNGimmutable なオブジェクトは汚染され得ない、ってことじゃないの?
0290デフォルトの名無しさん
NGNGごめん。「immutable なオブジェクト」ってのがよく分かってない。
Fixnum は immutable だけど、Bignum は immutable でない?
実装上の理由(VALUE にポインタじゃなくて即値が入ってる)から
taint のフラグが保持できないんだろうな、と想像はつくけど、
実装と immutable とは別の話だと思う。
0291280
NGNG>>287
>>288
「え〜、それって拡張ライブラリ作る時に読むやつちゃうん?」と思いましたが、
よく読むと、アプリケーションから ruby の機能を使うのも同じインターフェースなんですね^^;
1.8.x だとコンパイルエラーになっちゃってだめだったんですけど、
1.6.8 だとちゃんと動きました。
これでやりたいことが実現できそう。これから研究してみるっす。
ありがとう!
0292277
NGNGありがとうございます。
HTML Help 版だと内容が古いようですので
ttp://www.ruby-lang.org/ja/man/man-rd-ja.tar.gz
↑これをダウンロードして使うことにしました。
0293277
NGNGそちらを使わせていただくことにしました。
0294デフォルトの名無しさん
NGNGたしかに現在の実装は美的完全性を損ねているが、実用上は問題ないのと違うか
0295278==282
NGNGどうもです。
> 「foo.tainted? == true の時、foo を元にして作ったオブジェクトは全て自動的に汚染される」
自分もそういう理解でいます。
>>294
自分も最初はそう思っていました。
しかし例えば正の数を仮定しているところで負の数を指定されると困るとか、考えようと思えばいくらでも考えられると思うんです。
抽象的なのを承知で書くとすれば、「オブジェクトの意味を決定するのはスクリプト次第」ではないでしょうか。
だとすれば、どんなオブジェクトでも汚染が伝播しないとおかしいと思います。
0296デフォルトの名無しさん
NGNG294が「実用上は問題ない」と言ってるのにそれに対する反論として「抽象的なのを
承知で書」いても弱いんじゃないかな?
おそらく294も「どんなオブジェクトでも汚染が伝播しないとおかしい」とは思っている
のだろうが、理想と実装のトレードオフを考えた結果、現状の実装で実用上は問題
ないだろう、と述べているのだろうし。
0297デフォルトの名無しさん
NGNG汚染されたからって他のまったく関係ないところまで影響されちゃうのはまず
いんよ。
このモデル自体が問題だというかも知れないけれど、しかし、1+1の2と5-3の2、
あっちのtrueとこっちのtrueを区別したいかといわれると、俺なら区別したく
ない。
0298デフォルトの名無しさん
NGNG全く触れられてないので読む方は混乱するわけで。
最初の「オブジェクトの汚染」のところに一言注釈なりありゃいいだけの
ことのような気がする。
0299デフォルトの名無しさん
NGNGdef initialize(a,b,c)
end
end
p X.method(:new).arity
p X.method(:initialize).arity
p X.new(1,2,3).class.method(:new).arity
p X.new(1,2,3).class.method(:initialize).arity
////////////////////////////////////////////////
-1
-1
-1
-1
コンストラクタの引数の数を数えるにはどうすればよいですか
0300デフォルトの名無しさん
NGNGX.new(1,2,3).method(:initialize).arity
その initialize はクラスX のインスタンスメソッド。
クラスX はクラスクラスのインスタンス。
new は クラスクラスのインスタンスメソッド。
0301デフォルトの名無しさん
NGNGFixnumが即値である限り絶対に汚染に対応できないわけで。
汚染されているべき危険な値でも素通りでシステムコールに渡せるってのは正直どうかと。
Symbolやnilといったオブジェクトはともかく、頻繁に使うであろうFixnumはヤバイよ。
この辺matzはどう思ってるんだろう?「仕様です」だけ?
0302デフォルトの名無しさん
NGNGつーよりも、外部からどうやって Fixnum を取り入れて、そんな危険なことをしたがるのかが分からん。
実際にやって見せてよ。
0303デフォルトの名無しさん
NGNG・「Symbol や nil がオッケーだけど、Fixnum が特にヤバい」という
シチュエーションがよく分からない。
・Fixnum などが汚染できないことに関して、公式なコメントは出てないと思う。
(調べ足りないだけかもしれないので情報キボンヌ)
・即値でも、汚染用に1ビット割り当てれば対応できそう。
バイナリ互換はなくなるが(・∀・)キニシナイ!!
「汚染された1」と「汚染されてない1」という2つの singleton オブジェクトが
存在するイメージ。
0304デフォルトの名無しさん
NGNG0305デフォルトの名無しさん
NGNGFixnum を汚染したりされたりするときに warning 出ればよいんじゃないのかな。
$SAFE によっては SecurityError になるのもよいかと。
0306デフォルトの名無しさん
NGNG汚染エラーにならなければ、少なくとも危険な値をuntaintせずに渡して
はいないということが保証される。untaint操作の場所は特定しやすいし
きれいに書けば妥当なチェックをしてからuntaintしていることを確認する
こともたやすい。即値をはさむとそれが言えなくなるので、同じことを
保証するにはプログラムを追いかけるしかなくなるだろう。
もっともエラーがでたら出た場所にその都度.untaintを足していく
香具師には全く関係ないことだがな(笑)
0307301
NGNGvalue = cgi["value"].to_i
とか、普通にしてそうだが。
ああ、だがFixnumが特にヤバイ、ってことはないか。to_symとかやるしな。
1bit割り当てるってのは思いつかなかったな。これは漏れの考えが浅かった。
0308デフォルトの名無しさん
NGNG1bit割り当てるってことは毎回ビットシフトしなきゃいけないってことだろ?
0309デフォルトの名無しさん
NGNG何回も発生するので今更その回数を気にしてもあまり意味がない。
まあ減るにこしたことないが、せこいチューンと同じ。
それよりは実行コード断片化によるキャッシュミスヒット・
ページフォルトの方が深刻なんでね。
0310301
NGNGビットシフトはFixnum, Symbolは値を得る為に既にしている。
問題があるとすれば、Fixnumが30bitになってBignumに変化しやすくなるくらいなもんだろう。
0311デフォルトの名無しさん
NGNG操作が禁止されてうまく動かないバグを仕込みそうだな。fixnumが
汚染されないという仕様なら他の数も汚染されない方がいいような
気がする。
0312デフォルトの名無しさん
NGNG>他の言語で書いたときに付け忘れるようになる
俺もそれある。最近、CやJavaで ; のつけ忘れが多い。
C言語しか知らなかったときはこのミスはほとんどしなかったのに
0313デフォルトの名無しさん
NGNGo = Object.new
def o.()(s)
puts s
end
o("OK") #-> OK
0314デフォルトの名無しさん
NGNG慣れの問題かと。漏れも以前はそうだったけど、最近は無くなった。
むしろ、コードをパッと見たとき、 ; や変数名の $ の有無で、
今どの言語を見てるかのスイッチが切り替わるようになってきた。
>>313
def o(s); puts s; end とどう違うの?
0315デフォルトの名無しさん
NGNG[] で我慢する、ではダメ?
0316デフォルトの名無しさん
NGNGその「我慢」をしたくない、って意味でね
operator() があれば
・[]のもつ意味を単純化できる。つまりプログラムを読みやすくする。
・ProcやMethodの呼び出しを自然に出来る。
0317デフォルトの名無しさん
NGNG0318280
NGNGracc で作られたパーサってエラーが発生すると、エラーの原因となった文字列を
表示してくれますが、その文字列のある行番号は表示してくれません。
スキャナいじったり、文法ファイルを修正してみましたがなかなか思う結果が得られません。
だれか解決策知りませんか?
0319デフォルトの名無しさん
NGNG0320デフォルトの名無しさん
NGNGパーサには行番号の情報がないので出せない。
自分でパーサの on_error メソッドをオーバーライド
して出すしかないね。現在読み込み中の行番号は
だいたいトークンかスキャナのどっちかから得られるはず。
0322デフォルトの名無しさん
NGNGStringScanner 使ってたから pos しかわからんもんでさ、
on_error でもう一度スキャナ回して pos までの改行数えたよ。
0323デフォルトの名無しさん
NGNGruby 1.8.1 (2003-12-25) [i386-cygwin]
% ruby -e '"0" > 0'
-e:1:in `>': comparison of String with 0 failed (ArgumentError)
from -e:1
% ruby -e '0 > "0"'
-e:1:in `>': comparison of Fixnum with String failed (ArgumentError)
from -e:1
メッセージを統一しる!ヽ(`Д´)ノ
0324デフォルトの名無しさん
NGNGそうはいくか!ヴォケ!
0325デフォルトの名無しさん
NGNGん? 統一したら、まずいんじゃない?
0326デフォルトの名無しさん
NGNG0327325
NGNGまずいっしょ。
0328デフォルトの名無しさん
NGNGFixnum にそろえるとどこがまずいかな?
0329デフォルトの名無しさん
NGNG「統一」って、前者を「String with Fixnum」にしる、ってことか?
それならなんとなく納得。
0330デフォルトの名無しさん
NGNG% ruby -e '"0" > 1000000000'
-e:1:in `>': comparison of String with 1000000000 failed (ArgumentError)
from -e:1
% ruby -e '"0" > 10000000000'
-e:1:in `>': comparison of String with Bignum failed (ArgumentError)
from -e:1
0331デフォルトの名無しさん
NGNG0332323
NGNGもういっちょ。
% cat ~/hoge.rb
def foo(args)
args.min
end
foo(["0", 0])
% ruby ~/hoge.rb
/home/ore/hoge.rb:4:in `min': comparison of Fixnum with String failed (ArgumentError)
from /home/ore/hoge.rb:2:in `each'
from /home/ore/hoge.rb:2:in `min'
from /home/ore/hoge.rb:2:in `foo'
from /home/ore/hoge.rb:4
4行目に min なんてないよヽ(`Д´)ノ
0333デフォルトの名無しさん
NGNGそれともハードには余り興味が無くて、言語にしか興味がないとか、、、
0334デフォルトの名無しさん
NGNGあなたの、他人に対する興味の持ち方に
興味がある。
0335デフォルトの名無しさん
NGNG実際のところは知らんけど、MLなどでのやり取りを見てる範囲では、
ご自身の環境(ノートPCにdebianだったか)以外についてのrubyの動作の検証とかは、
(自分で環境を用意してするのは)かなり億劫のようなので、PCがゴロゴロというのは創造できないです。
まあ、会社とかでいろんな環境に触れる機会はあると思うのですが。
「言語にしか興味ない」というのは当たってると思います。
まったく他人の私が思うには。
0336デフォルトの名無しさん
NGNG「想像できない」
0337デフォルトの名無しさん
NGNGhttp://www.hirax.net/pukiwiki/pukiwiki.php?AmetPerl#content_1_6
0338デフォルトの名無しさん
NGNGぐおぉ…すげえなそれ。ATOKが欲しくなってきたよ。
0339デフォルトの名無しさん
NGNG誰か教えてくれ。
0340デフォルトの名無しさん
NGNGざっくり加工できるっぽいところが便利そう。
たとえばエディタとしては貧弱なブラウザのフォーム内で、
置換処理ができるようになるわけだし。
ランチャーとしても十分便利そうだけどね。
HTTPで天気予報を引っ張ってくるスクリプトを書いておいて、
「てんき」でその場に出力されるってのとか。
メモしたい内容をクリップボードに放り込んでから「めも」で、
メモツールに記録されるとか。
0341デフォルトの名無しさん
NGNG既存のもののrubyへの置き換えが多いような気がするのは気のせい?
資産が少ないので作らなならんというのは分かるけど。
穿った見方をすると、rubyの美しいコードになんでも
書き換えようとする言語ヲタのナルチシズムに見える気もする。
0342デフォルトの名無しさん
NGNG移植で済むなら一から設計することもないってことかと。
0343デフォルトの名無しさん
NGNG「何が出来るのか」の確認と、
「何が出来ないのか(何が必要か)」の
洗い出しになってイイんじゃないかな。
0344デフォルトの名無しさん
NGNG使ってみたかっただけなのではないかと。
0345デフォルトの名無しさん
NGNGどうすりゃいいんかい。
lib と dumpbinがないみたい?でも、win64/にはある???よーわからん。
0346デフォルトの名無しさん
NGNG> Platform SDKのCore SDK(ttp://www.microsoft.com/msdownload/platformsdk/sdkupdate/)を
> インストールする必要あり。
らしい。ハズしてたらスマソ。
0347デフォルトの名無しさん
NGNG「perlじゃコレがあるのに、なぜrubyでは無いのか」という人も多いし。
あとそれと、同じようなものが必要になったときには、
既にあるものの仕様を参考にすることが多いので、
そういう意味では再発明とも言えるかな。
0348デフォルトの名無しさん
NGNGCore SDK とdebug SDKは入れたんですけど lib.exe と dumpbin.exe
は入ってきませんでした。
ほかの SDK もいるのかなぁーと。
Internet Development SDK
IIS SDK
MDAC SDK
Windows Installer SDK
WMI SDK
Tablet PC SDK
・・・関係ないよなぁぁぁ。
0349デフォルトの名無しさん
NGNG0350デフォルトの名無しさん
NGNG電球の再発明じゃ新しすぎる感じ
0351デフォルトの名無しさん
NGNG0352デフォルトの名無しさん
NGNG0353352
NGNGGET_PARSER(recv, parser);
VALUE content = makeContentArray(parser, model);
を
VALUE content;
GET_PARSER(recv, parser);
content = makeContentArray(parser, model);
にしたら通った。
0354デフォルトの名無しさん
NGNGlib.exe/dumpbin.exe は .NET Framework SDK に入っている。(ランタイムじゃないぞ)
それから,byacc と sed が必要なので ttp://gnuwin32.sourceforge.net/ からGET。
bisonを使いたければ同じく GET して YACC=bison -y を Makefile に追加。
0355デフォルトの名無しさん
NGNG多様性は保険だ。
0356デフォルトの名無しさん
NGNG0357デフォルトの名無しさん
NGNGhttp://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=9b3a2ca6-3647-4070-9f41-a333c6b9181d
↑入れたんですけど、入ってなかった・・・_no _no _no _no _no
0358デフォルトの名無しさん
NGNGポーカーで任意の枚数を捨てて、出来得る役を全部表示するのを考えてます。
トランプ1枚は1から52の通し番号で識別してます。
def koukan(ary,rej)
if ary.size >= 5
puts ary.join(',')
return
end
for i in 1..52
next if (ary + rej).include?(i)
ary.push i
koukan(ary,rej)
ary.pop
end
end
myAry = [1,2,3] # 残すカード
myRej = [4,5] # 捨てるカード
koukan(myAry,myRej)
これで、一応動くんですけど、[1,2,3,6,7]と[1,2,3,7,6]みたいな
同種別配置を排除することができないかなと考えましたが、分かりません。
何かいい方法ないでしょうか。
0359デフォルトの名無しさん
NGNGArray じゃなくて Set (順番や重複の無い集合を扱うクラス) を使ってみるとか。
0360デフォルトの名無しさん
NGNGを
for i in ary.last..52
にするのは?
0361デフォルトの名無しさん
NGNG>>359
Setクラスは初耳ですが、リファレンス見たところ、
この場合はこっちの方が速そうですね。
できた役をぶちこんでいけば勝手に重複は削除されると。で、
irb(main):016:0> set1 = Set.new [1,2]
=> #<Set: {1, 2}>
irb(main):017:0> set2 = Set.new [2,1]
=> #<Set: {1, 2}>
irb(main):018:0> sset1 = Set.new [set1,set2]
=> #<Set: {#<Set: {1, 2}>, #<Set: {1, 2}>}>
あれ?重複してるはずなのに削除されない?
なんか使い方間違ってますかね?
>>360
うーん、それだと、[1,2,3,5]で[6]捨てる場合とかで
4が無視されてしまうような…
0362デフォルトの名無しさん
NGNGすると、 Set#eql? と Set#hash を再定義してやらないとダメかも。
ちょっと漏れにはすぐには思い付かない。
0363デフォルトの名無しさん
NGNGgcc3.3はC99デフォルトだからな。
まぁ、バグだろう。作者にレポートするよろし。
0364359
NGNG考えてみた。イマイチだなぁ・・・
class CardSet < Set
def eql?(oth); self == oth; end
def hash; self.size; end
end
set1 = CardSet::new([1, 2])
set2 = CardSet::new([2, 1])
set3 = CardSet::new([2, 3])
sset1 = Set::new
sset1 << set1
sset1 << set2
sset1 << set3
p sset1
0365デフォルトの名無しさん
NGNGここ見てくれてた人のおかげで、現在のリファレンスは>>298氏の言うとおり
> * 実装の都合上、Fixnum・Symbol・true・false・nil は汚染されない。
> なお Bignum・Float は汚染されることは注意が必要。
と追加されているが(青木さんありがとう)、BignumとFloatを汚染する意味があるのか・ないのか、自分ははっきりと読み取れなかった。
もし「本来は汚染させるべき」ということなら、大量のOBJ_INFECT()忘れが発覚するわけだが。
0366デフォルトの名無しさん
NGNG続きは ML でやった方が良いのでは?
0367デフォルトの名無しさん
NGNGほんとだ、知らなかった。
ていうか-std=c89とかしても通る。なんじゃこりゃ…
0368デフォルトの名無しさん
NGNGどっかにバイナリあるでしょうか?
0369デフォルトの名無しさん
NGNGDATA.binmode
data = DATA.read
こうしたけど駄目でした。助けてドラエもん
0370デフォルトの名無しさん
NGNGばーじょんは?
0371デフォルトの名無しさん
NGNGDATA.binmode
DATA.seek(0, 0)
data = DATA.read
でどうよ?
msvcrt版だと、改行コードはstdioでバッファリングされた時点ですでに変換
されてたと思った。seekすりゃ一度バッファを捨てるはず。
0372デフォルトの名無しさん
NGNGみたいな処理をしたいのですがどうしたらいいでしょうか?
$<、ARGF、から取得しようとするとそこでスクリプトが止まっちゃうので…
0373369
NGNGC:\>ruby -v
ruby 1.8.0 (2003-08-04) [i386-mswin32]
>>371
おおおお!さすがドラエもん。できました。
ただ、DATA.seek(0, 0) とすると__END__の前の部分(スクリプト部分)まで出てきてしまいました。
DATA.seek(DATA.tell, IO::SEEK_SET ) # ←の一行加えたら__END__以降のデータが取得できました。
DATA.binmode
data = DATA.read
ありがとうございました。
0374デフォルトの名無しさん
NGNGとりあえず最初の5行くら動かしながらテストするってのを
よくやるので、
while gets
break if $.>=5 ###
# なんかの処理
end
なんてコードを書いて動くようになったら ### の行を削除
ってのをよくやります。
これと同じことを。 イテレータでやる場合、
c=0
vec = readlines
vec.each do |i|
break if (c+=1)>=5
# なんか処理
end
と書くしかないでしょうか?いちいち変数cを宣言するのが
めんどうなんですけど、なんかいいほうほうあったら
教えてちょんまげ。
0375デフォルトの名無しさん
NGNGeach_with_index使ったらどう?
0376374
NGNG正直スマンかった。
0377デフォルトの名無しさん
NGNGrubyはマシどころかものすごく使いやすいのでいいのではないかなと。
0378デフォルトの名無しさん
NGNGという意味では、Ruby はそれを地で行って (そして成功して) いると思うのだが。
0379358
NGNG遅レスですいません。ありがとうございます。
$ ruby cardset.rb
#<Set: {#<CardSet: {1, 2}>, #<CardSet: {1, 2}>, #<CardSet: {2, 3}>}>
うーん、重複削除されませんね。
sset1をCardSetクラスにしてみてました
#<CardSet: {#<CardSet: {1, 2}>, #<CardSet: {1, 2}>, #<CardSet: {2, 3}>}>
やっぱり削除されません。
ちょっとクラス定義について勉強してみます。
あと、Cのアルゴリズム事典でビット演算使った、
テクニカルで爆速な組み合わせ生成が載ってたので
こいつをrubyで試してみようと思います。
0380358
NGNG枚数が31枚を超えるとfixnumからbignumの変換の関係でバグるみたいですが
とりあえず、26枚で実行。rubyで書いても結構爆速で感動しました。
$ time ruby koukan_array.rb > /dev/null ←358のヤツ
real 3m12.084s
$ time ruby koukan_bit.rb > /dev/null ←ビット演算
real 0m6.705s
0381358 koukan_bit.rbソース
NGNGdef first(n); (1 << n) - 1; end
def nextset(x)
smallest = x & -x; ripple = x + smallest
new_smallest = ripple & -ripple
ones = ((new_smallest / smallest) >> 1) - 1
ripple | ones
end
def printset(s)
for i in 1..N
printf(" %d", i) if ((s & 1) != 0)
s >>= 1
end
print "\n"
end
i = 1; x = first(K)
while((x & ~first(N)) == 0)
printf("%4d:", i); printset(x)
x = nextset(x); i += 1
end
0382358
NGNGN>30で変な所で止まったり、5枚以上選択して止まらなくなったり。
fixnumを使わないでbignumのみ使うような
整数クラスって定義できないんでしょうか?
0383デフォルトの名無しさん
NGNGbigdecimal?
0384358
NGNG| & ^ << >> ~ みたいなビット演算をサポートしてませんでした。
0385デフォルトの名無しさん
NGNGヽ(`Д´)ノウワァァァン
そんなのあったのかYO!!
0386358
NGNG正常に動いているみたいです。
どうやらcygwin版固有のバグみたいですた。
0387デフォルトの名無しさん
NGNG確かにアヤシい動きするな。空行の有無で出力が違ったりするし……。
0389358
NGNGnCk (n=52,k=5) = 2598960 通りを吐き出して無事終了。
これで逝くとします。
0390デフォルトの名無しさん
NGNG> 空行の有無で出力が違ったりするし……。
そういうのはおおむねGC関連のバグ。
最新版だとどう?
0391デフォルトの名無しさん
NGNG0392デフォルトの名無しさん
NGNG0393デフォルトの名無しさん
NGNGまじっすか!!
regexやgcは置き換えできたのか
この辺がクリアされていれば組み込みが楽になりそうで嬉しい限り
0394デフォルトの名無しさん
NGNGregexはとっくの昔にOnigurumaになってる。
GCのどこにLGPLなコードがあるんだか、自分は知らないんだけれど。
0395デフォルトの名無しさん
NGNG組み込みの障害になんかなるの?
0396デフォルトの名無しさん
NGNG単語が欠けすぎてて何言ってんだか分からない。
プロプライエタリなコードがLGPLなコードにダイナミックリンクをするのは、OK。
LGPLなコードをプロプライエタリなコードと混ぜて使うのは、(プロプライエタリ的には)NG。
0397デフォルトの名無しさん
NGNG0398デフォルトの名無しさん
NGNG用語がいい加減で何言ってんだかわかんない。
「混ぜて」ってスタティックリンクのことを言いたいんだろうか・・・・
0399デフォルトの名無しさん
NGNGコードを混ぜるというのは、同一のソフトウェアの中に出身ライセンスの異なるコードを入れるということ。
同一のファイル内であろうが、異なるファイル同士をスタティックリンクさせようが、変わらない。
これくらいの日本語も読めないのか?
0400デフォルトの名無しさん
NGNGあなたの同僚は苦労しますね。
0401デフォルトの名無しさん
NGNGまぁ組み込みのためには、まだまだ技術的な課題も残ってるんだが。
0402デフォルトの名無しさん
NGNG0403デフォルトの名無しさん
NGNGloop {
while true
throw :hoge, some, value
end
}
}
0404デフォルトの名無しさん
NGNG0405デフォルトの名無しさん
NGNG0406デフォルトの名無しさん
NGNG0407デフォルトの名無しさん
NGNG0408デフォルトの名無しさん
NGNG| |\ / |\
|____ ____|:::::| / , ─── /\|
\::::::::::::::::| |:::::::::::::::::::::::\| / <:::::/ / /:::::/
┏┓ ┏━━┓ | ̄ ̄ ̄  ̄ ̄ ̄|\ ̄ ./ \._/ /:::::/ ┏┓
┏┛┗┓┃┏┓┃ |_________|:::::| < /\ /:::::/ ┃┃
┗┓┏┛┃┗┛┃┏| ○ ○ |:::::|━━ \/:::::/ > / ̄ ̄ ̄ ̄ ̄ ̄|\.━┓┃┃
┏┛┗┓┃┏┓┃┃| \──/ |:::::|  ̄  ̄/ / ___ |:::::| ┃┃┃
┗┓┏┛┗┛┃┃┗| \/ |:::::|━| ̄ ̄ ̄ ̄ / /::::, '━| |:::::|━┛┗┛
┃┃ ┃┃ |____ ____ |:::::| |_____/ <:::::/ / |:::::| ┏┓
┗┛ ┗┛ \ \:::::::::::::/ /\l \:::| \ . / /\.| ┗┛
| ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄||______/\ /:::::/
|_______________|\::::::::::::::::::::\/ \ ./:::::/
\:::::::::::| |\:::::::::::::\| ̄ ̄ ̄ ̄ / /:::::/
 ̄ ̄| ┌────┐ |:::::| ̄ ̄ ̄ / /:::::/
| └────┘ |:::::| | ̄ ̄ ̄ ̄ ̄ /:::::/
|_________|:::::| |______/:::::/
\:::::::::::::::::::::::::::::::::::::::::\| \::::::::::::::::::::::::::::\/
0409デフォルトの名無しさん
NGNG0410デフォルトの名無しさん
NGNG0411デフォルトの名無しさん
NGNG上司を説得するのに障害になる…
0412デフォルトの名無しさん
NGNG以下のプログラムで、プログラム実行中はtestdbが有効なのですが、
プログラムが終了するとtestdbのファイルサイズは0になってしまい、
その後読み込めません。何が原因でしょうか?
また、
データを入れるのに
ary=Array.new
ary[0]=123,"abc"
ary[1]=456,"def"
while data = ary.shift
#gonyogonyo
end
を使って一括して入れる方法はあるでしょうか?
0413412
NGNGdef create_table(dbi)
dbi.do(<<EOF)
CREATE TABLE R (
r1 INT,
r2 CHAR)
EOF
end
def test(dbi)
dbi.do(<<EOF, 123, "abc")
INSERT INTO R VALUES (?, ?)
EOF
dbi.do(<<EOF, 456, "def")
INSERT INTO R VALUES (?, ?)
EOF
end
dbi = DBI.connect("dbi:SQLite:testdb", "test", "test")
create_table(dbi)
test(dbi)
row = dbi.select_all(<<EOF)
SELECT * FROM R
EOF
print row
0414デフォルトの名無しさん
NGNGcommit してないからかな。
DBI:SQLite はアヤシイので、SQLite/Ruby を使うのがオススメです。
0415デフォルトの名無しさん
NGNG0416デフォルトの名無しさん
NGNGはい、私も悲しいんですけど、
UNIX 板の Ruby スレの 325 で報告したような感じなのです。
0417デフォルトの名無しさん
NGNG普段はdbh['AutoCommit'] = trueにしておいて、transaction開始時に
falseにする、とかして逃げられないのかなーと思った。かなり姑息
だし試してもいませんが。
0418412
NGNGもう少し、DBI:SQLite試して見ます。
#ようやく環境整えたのに...
0419デフォルトの名無しさん
NGNG0420デフォルトの名無しさん
NGNG0421デフォルトの名無しさん
NGNGどうでしょうね。件の記事 ([ruby-talk:75057]) を読んだ感じだと、
そもそも DBI がクソだから直すのはしんどいよ、ってことのようなのですが。
# 誤読していたらすいません。
0422デフォルトの名無しさん
NGNG使えるとしたら、サンプルはあるでしょうか。
0423デフォルトの名無しさん
NGNGageるな
0424デフォルトの名無しさん
NGNG>423
0426デフォルトの名無しさん
NGNGどういう意味?具体的に何がやりたいの?
0427デフォルトの名無しさん
NGNG>423
0428デフォルトの名無しさん
NGNGSQLにはLIKE式があるようですが、
Rubyの正規表現をLIKE式の代わりに使えないかなー、と。
0429デフォルトの名無しさん
NGNG0430デフォルトの名無しさん
NGNG結局 DBMS に渡すときに SQL になるんだが。
0431デフォルトの名無しさん
NGNG折角「SQL」で検索オペレーションが抽象化されてるんだから、
あんまり姑息なこと考えずに SQL でがんがれ。
0432デフォルトの名無しさん
NGNG0433デフォルトの名無しさん
NGNGはぁ?
0434デフォルトの名無しさん
NGNGおまへは既に答えを知っているはずだ
0435デフォルトの名無しさん
NGNG0436デフォルトの名無しさん
NGNGmodule M
v = 0
def get() v end
module_function :get
end
M::get
NameError: undefined local variable or method `x' for M:Module
0437デフォルトの名無しさん
NGNGmodule M
@@v = 0
def get() @@v end
module_function :get
end
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%CA%D1%BF%F4%A4%C8%C4%EA%BF%F4
0438デフォルトの名無しさん
NGNGv = 0
define_method(:get) {v}
module_function :get
end
p M.get
0439デフォルトの名無しさん
NGNG煽ってるんでしょう。
0440デフォルトの名無しさん
NGNG0441デフォルトの名無しさん
NGNGというか、あの引用でSubjectに関係ない質問を付け加えてるんだから
煽りだろう。
元のメールも相当の煽りだが。
0442デフォルトの名無しさん
NGNGどうすればいいでしょうか?
たとえば、http://www.yahoo.co.jp/ にアクセスしたいとき、
Net::HTTP.get('www.yahoo.co.jp',[???])
[???]の部分に何を入れればいいんでしょうか?
よろしくお願いします。
0443デフォルトの名無しさん
NGNG0444デフォルトの名無しさん
NGNG遅れましたが、どうもありがとうございます。
raise - rescue とはべつに、throw - catch なんてのもあるんですね。
勉強になりました。
両者の違いはこれから調べてみます。
0445デフォルトの名無しさん
NGNG・・・それは、気がつかなかったよ;-)
0446デフォルトの名無しさん
NGNGstr.gsub!(/\(.+?\)/) {$&.tr!('\w', ' ')}
print str
で
昔、あるところでうんこした。
おわり
となってしまうんですが、
昔( )、あるところ( )でうんこした。
おわり
としたいのですが、どうすればいいのですか。
ruby 1.8.1 (2003-12-25) [i386-mswin32]
0447デフォルトの名無しさん
NGNGstr.gsub!(/\(.+?\)/) {$&.tr!('\w', ' ')}
print str
で
昔、あるところでうんこした。
おわり
となってしまうんですが、
昔( )、あるところ( )でうんこした。
おわり
としたいのですが、どうすればいいのですか。
ruby 1.8.1 (2003-12-25) [i386-mswin32]
0448デフォルトの名無しさん
NGNGp "昔(2000年前)、あるところ(北海道)でうんこした。\nおわり\n".gsub(/\((.*?)\)/m){|m|
s = '('
m.length.times{s << ' '}
s << ')'
}
0449デフォルトの名無しさん
NGNG* ていうか tr で \w は使えない
やり方はいろいろありそうだけど、とりあえずオレなら
str.gsub!(/\(.+?\)/) { "(#{' '*($&.size-2)})" }
かな。他の人のコードもみてみたい。
0450448
NGNGあなたのコード方がよっぽどスマートだ・・。
0451デフォルトの名無しさん
NGNG>>447のstrがalphabetだと動くんで、アホーな頭が混乱してしまいます。
0452デフォルトの名無しさん
NGNG0453デフォルトの名無しさん
NGNG便所の落書き2chに相応しいなぁーと思ったのですが。
便所の水で顔洗って出直してきます。
0455デフォルトの名無しさん
NGNGわかりました、SQLでやります。
0456デフォルトの名無しさん
NGNGすでに開かれてるエクセルのブックにアクセスするには、どうすればいいでしょうか?
つまり
エクセルファイルとして存在してるブックを開いて、編集っていうののやり方はわかったのですが、
編集中のエクセルファイルを、rubyから操作する方法がわかりません。
どうすればいいでしょうか?
0457デフォルトの名無しさん
NGNGVBS での書き方を調べれば自ずとわかるはず。
0458デフォルトの名無しさん
NGNG@arr=();
while(<>){ push(@arr,$_);}
print $#arr+1, ": end\n";
rubyで
arr=[]
while gets
arr << $_
end
puts "#{arr.size} : end"
10万行位のテキストデータを食わせると圧倒的に
Perl君の方が速いんですが、改善できるですかねえ。
0459デフォルトの名無しさん
NGNG0460デフォルトの名無しさん
NGNGだとしたら全く同じコードが生成されるかもしれないが。
0461デフォルトの名無しさん
NGNG0462デフォルトの名無しさん
NGNGうちでやったら、大差ない(rubyの方が微妙に速かった)けど環境キボンヌ
$ wc data
100000 100000 10588890 data
$ time ruby hoge.rb data
100000 : end
real: 0.69s(user: 0.51s, system: 0.18s)
$ ruby -v
ruby 1.8.1 (2003-12-25) [i386-cygwin]
$ time perl hoge.pl data
100000: end
real: 0.77s(user: 0.54s, system: 0.18s)
$ perl -v | grep "This is perl"
This is perl, v5.8.2 built for cygwin-thread-multi-64int
0463デフォルトの名無しさん
NGNGそれからmacがわるいのかも。
データサイズを増やして露骨にわかるようにした以下を動かした。
perl -e'foreach $i (0..1000000){ printf("%07d\n", $i); }' > data ;\
uname ;\
perl -v | head -2; time perl -e '$a=(); while(<>){push(@arr,$_); }' < data ;\
ruby -v; time ruby -e 'arr=[]; while gets; arr << $_; end;' < data ;\
echo "readlines" ; time ruby -e 'arr=readlines' < data
その結果orz
Darwin
This is perl, v5.8.1-RC3 built for darwin-thread-multi-2level
4.840u 0.730s 0:06.41 86.8% 0+0k 0+0io 0pf+0w
ruby 1.8.1 (2004-04-16) [powerpc-darwin]
22.590u 2.290s 0:47.20 52.7% 0+0k 0+0io 0pf+0w
readlines
13.100u 2.060s 0:30.78 49.2% 0+0k 0+0io 0pf+0w
0464デフォルトの名無しさん
NGNG0465デフォルトの名無しさん
NGNGんなこたない。
0466デフォルトの名無しさん
NGNG0467デフォルトの名無しさん
NGNG0468デフォルトの名無しさん
NGNG次要素へのアドレスが算出可能だから省略されているだけの話。
0469デフォルトの名無しさん
NGNG> 配列だってリンクリストだ。
勉強いちからやり直してね。
0470デフォルトの名無しさん
NGNGアドレスが決まった後のアクセスが同じってこと?
リンクではないようだが。
0471デフォルトの名無しさん
NGNGそれCのこと?
0472デフォルトの名無しさん
NGNG放っとけよ。屁理屈だろ。
0473デフォルトの名無しさん
NGNGはて、rubyはぜろオリジンだったはずだが。
0474デフォルトの名無しさん
NGNG話を RHG で読んだ気がする。ある程度は先読みして確保してるかもしれない
けど。だからそんな風に毎度毎度 Array に追加するコードは書かない方がい
い。
Perl の実装がどうなのか知らないんだけど、そのあたりの差なんじゃないか
と思われ。行数カウントなら IO#lineno を使うとかでしょうね。
0475デフォルトの名無しさん
NGNGArrayのサイズが不足している場合、
現在のサイズ/2 か、 ARY_DEFAULT_SIZE(16) のうち大きい分だけ
増やすようになってるよ。毎度reallocしているというのは嘘。
0476デフォルトの名無しさん
NGNG0477デフォルトの名無しさん
NGNG0478デフォルトの名無しさん
NGNGruby-1.8.1, ruby-gtk2-0.9.1 の環境で GUI の勉強をしています。
API References と rbbr-0.6.0 を参考にして
文字列検索のために下のように TextIter#forward_search を使おうとしました。
text_buf.start_iter.forward_search("Hello", Gtk::TextIter::SEARCH_TEXT_ONLY)
このとき
`forward_search': GtkTextSearchFlags is not a GEnum (TypeError)
というエラーが出てしまうのですが、これはどこに問題があるのでしょうか?
0479デフォルトの名無しさん
NGNG+2: 参考になる
0480デフォルトの名無しさん
NGNG0481デフォルトの名無しさん
NGNGかきくけこ。
(2)さしすせそ。
たちつてと。
↓
(1)あいうえお。かきくけこ。
(2)さしすせそ。たちつてと。
という風に整形するプログラムなんですが
filename = ARGV[0]
file = open(filemname)
while text = file.gets.do
if /^(/ =~ text
elsif /\s/ =~ text
text.chomp!
end
これじゃどう考えてもダメだよね・・・
手元の本は初心者向きじゃないからわかんねえ。
0482デフォルトの名無しさん
NGNGfilename = ARGV[0]
file = open(filename)
txt = file.readlines
txt = txt.join("")
txt.gsub!( "\n","")
txt.gsub!( "(","\n")
puts txt
0483デフォルトの名無しさん
NGNGputs listitems.map {|item|
item.map {|line| line.strip }.join('')
}.join("\n")
0484483
NGNGlistitems = ARGF.read.strip.split(/(?=^\()/)
puts listitems.map {|item|
item.map {|line| line.strip }.join('')
}.join("\n")
0485デフォルトの名無しさん
NGNGよいのでしょうか?タスクトレイを扱いたい(Win32API ごり押し^^;)
と思ってみたものの、メッセージループがどこにあるのやら。
TForm なら WndProc をオーバーライドするらしいのだけども、
Phi.Form にそれっぽいのはないし。
0486デフォルトの名無しさん
NGNGありがとうございます。やっぱネットがあると、学習速度が上がります。
0487デフォルトの名無しさん
NGNG手抜きだけど、
ARGF.read.gsub(/\n(?!\n)/m,'').display
じゃだめ?
0488デフォルトの名無しさん
NGNGなぜ、プロパティの取得や設定の式が
p book.title
でなく、わざわざ
p book["title"]
としてあるんでしょうか?(わざわざというのは、もとのVBAがbook.titleでアクセスしてるから)
http://homepage1.nifty.com/markey/ruby/win32ole/win32ole03.html#propaty
Winのpropertyっていうのは、そんな特別なもの(?)なんですか?
僕的には、Workbookオブジェクトのtitleインスタンス変数とみた方がわかりやすい気がするのですが。。
単にカプセル化ってことですかね??
みなさん、どう思います?
0489デフォルトの名無しさん
NGNGインスタンス変数にしたら、COM インターフェイスのラッパクラスとして
効果的に働かないと思います。
アクセッサとして定義しない理由は、メソッドとプロパティを区別したい
という意図かと思います。
0490デフォルトの名無しさん
NGNG$KCODE = 's'
puts "予約" => 蘭
puts "予定" => 嵐
ruby 1.8.1 (2003-12-25) [i386-cygwin]
0491デフォルトの名無しさん
NGNG0492デフォルトの名無しさん
NGNG0493デフォルトの名無しさん
NGNG試してみたけどエラーは出なかった。
エラーの出る例全体希望。
# エラーにならなかった例:
require 'gtk2'
text_buf = Gtk::TextBuffer.new
p text_buf.start_iter.forward_search("Hello", Gtk::TextIter::SEARCH_TEXT_ONLY)
text_buf.text = "Hello"
p text_buf.start_iter.forward_search("Hello", Gtk::TextIter::SEARCH_TEXT_ONLY)
0494デフォルトの名無しさん
NGNGy = ARGV[1].to_i
z = x + y
p z
これのフローチャートなんですが、
コマンドラインから数値を入力
↓
数値を変数に代入
↓
画面に出力
という書き方でいいのですか?
0495デフォルトの名無しさん
NGNGどこまで細かく書くかによるのだろうけど。
第1引数を整数に変換したものを変数 x で指し示す
↓
第2引数を整数に変換したものを変数 y で指し示す
↓
x と y の和を変数 z で指し示す
↓
z を出力する
こんな感じ?
0496デフォルトの名無しさん
NGNGttp://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.3.3.html
> フローチャートに、代入文とかをいちいち書くものではありません。
> それでは、プログラム設計ではなく、コーディングをフローチャートを使ってしているだけです。
> これはフローチャート以前のことで、そもそもプログラム設計とは何かということが理解できていないようです。
0497デフォルトの名無しさん
NGNG自分はフローチャートは絶対書かないが、前任者が残しておいてくれると
助かることもある(フローチャートがなければ理解できない、スパゲティ
ソースコード書かれた場合の話だけど)
フローチャート書いてるヒマがあったら、わかりやすいコード書くほうに
時間かけろと言いたい。
0498デフォルトの名無しさん
NGNG思考の手助けのために自分用としてなら、まれに書くことはあるけど。
で、個人的には「他人に見せるためのフローチャート」は
プログラムソースの読解の手助けになれば十分だと思ってるから、
>>494 程度の書き方で十分だと思われ。
入力ってところに違和感は感じるけどね。コマンドラインはそのプログラム
ではないから、入力するってよりはプログラム自身が引っ張り出してくる
イメージがある。>>495 みたくね。
それと、足し算は省略しちゃダメ。
それはこのプログラムの本質であり目的でしょう?
冗長な部分は省く。大切なところはきちんと残す。
文章を要約するみたいなもんさ。
0499デフォルトの名無しさん
NGNG授業でやらされてるんじゃないの?
0500デフォルトの名無しさん
NGNGみたいなシチュエーションだとたとえばwhile構文とはなにかを
示すのに流れ図あったほうが教えやすそうってのはもはや
考えが古いのかな。iteratorとかあるしなぁ...
0501デフォルトの名無しさん
NGNGdef initialize(str); @msg = str; end
def sayHello; puts "hello, #{str}"; end
def createInner; InnerHoge.new; end
class InnerHoge
def method
OuterHogeの sayHelloを呼ぶ
end
end
end
obj1 = OuterHoge.new("obj1").createInner()
obj2 = OuterHoge.new("obj2").createInner()
というコードで以下のようにしたいのですが、
obj1.method #==> hello, obj1
obj2.method #==> hello, obj2
こんなクラスがあるときjavaだとstaticでない内部クラスなら
OuterHoge.this.sayHello
で自分が関連付けられている外側のクラスのインスタンスメソッドにアクセスできますよね?
rubyだとどうするんですか?
InnerHogeをnewするときにselfを明示的に渡してやらないと駄目?
0503デフォルトの名無しさん
NGNGYEAH!
0504デフォルトの名無しさん
NGNGruby では、ネストの外側のクラスは名前空間くらいの意味しかないよ。
javaは全く詳しくないんでカンが働かないんだけど、
javaでそんな感じのコードを書いて実現したい事ってのは、
Ruby では(ネストしたクラスじゃなくて)もっと別のやり方で実現するのが
普通なんじゃないかな。
「自分が関連付けられている外側のクラスのインスタンスメソッドにアクセス」じゃなくて
「自分が生成されたコンテキストで評価(実行)」でよければ↓みたいにやる手はあるけど。
class OuterHoge
def initialize(str); @msg = str; end
def sayHello; puts "hello, #{@msg}"; end # <== @msg だよね
def createInner; InnerHoge.new{}; end # <== block付けた
class InnerHoge
def initialize(&block); @binding = block.binding; end # <== 追加
def method
eval("sayHello", @binding) # <== blockが生成されたコンテキストで評価
end
end
end
OuterHoge.new("obj1").createInner().method #==> hello, obj1
OuterHoge.new("obj2").createInner().method #==> hello, obj2
0505デフォルトの名無しさん
NGNGOuterHoge.this ってなに?
0506デフォルトの名無しさん
NGNGJavaで、内部クラスのインスタンスから外部クラスのインスタンスを参照する書き方
0507デフォルトの名無しさん
NGNGそれとも obj1.OuterHoge.this ってこと?
0508デフォルトの名無しさん
NGNG0509デフォルトの名無しさん
NGNG全然違う。わからんのなら自分で調べろよ、低脳。
0510デフォルトの名無しさん
NGNG「クラスの中のクラス」という構文は似てるけど、Java と Ruby では
全然別物って結論みたいだよ>>501
0511デフォルトの名無しさん
NGNGそれが正解。OuterHogeとInnerHogeでは、両者のクラスは外・内の関係があるけど
両者のインスタンスはまったく関係がない。
0512デフォルトの名無しさん
NGNGClass としてじゃなくて、Class の親クラスである Module として、だね。
0513デフォルトの名無しさん
NGNG0514デフォルトの名無しさん
NGNGそれに Ruby の内部クラスって何を指しているの?
(俺言葉を使われても困る)
非建設的で乱雑な比較を行い、低質な質問を浅墓に繰り返しても
答える人の時間がもったいないだけ。
比較サイトでも覗いてみたら。
http://www.google.co.jp/search?num=100&hl=ja&oe=UTF-8&q=ruby+java+%E6%AF%94%E8%BC%83
0515デフォルトの名無しさん
NGNG0516デフォルトの名無しさん
NGNG0517デフォルトの名無しさん
NGNG0518デフォルトの名無しさん
NGNG0519デフォルトの名無しさん
NGNGとやったら foo の中身が表示されるのを期待したのですが、
なぜか空文字列が無限に出続けて終了しません。
間違ってますでしょうか?
0520デフォルトの名無しさん
NGNG$/ = nil な状態だと、終端に来ても gets などが nil を返してくれないみたい。
なんとなく実装ミスっぽい気がする。
ruby 1.8.1 (2003-12-25) [i386-mswin32]
とりあえずこんな感じで。一つしかファイルを与えられないのが難点だけれど。
ruby -0777 -e "p gets" foo
0521デフォルトの名無しさん
NGNG@a="abc"
def initialize
@b="def"
end
def p_a
p @a
end
end
irb>a=A.new
irb>a.p_a
nil
"abc"って結果を期待していたんですが、代入されてないのはなぜ?
irb>A.instance_variables
["@a"]
irb>a.instance_variables
["@b"]
@aと@bは同じインスタンス変数なのに扱いが違うのはなぜ
なんでしょう?上のプログラムの場合、@aは何に属する
インスタンス変数なんでしょう?
0522デフォルトの名無しさん
NGNGClass クラスに属する、A という名前がつけられたインスタンスの変数。
だから A クラスに属する a という名前がつけられたインスタンスからは
直接は参照できない。
0523デフォルトの名無しさん
NGNGclass A
@a = "abc"
def self.a; @a; end
def p_a; p self.class.a; end
end
0524デフォルトの名無しさん
NGNG0525デフォルトの名無しさん
NGNG0526デフォルトの名無しさん
NGNGすばやいレスありが�d。
なんとなくわかってきたよ。もうちょいいじくりまわしてみます。
0527デフォルトの名無しさん
NGNGイメージ的には str.gsub(regexp1..regexp2, '') なんだけど。
str.gsub(/#{regexp1.source}(?:.*)#{regexp2.source}/, '') かしら。
もっとスマートな方法ない?
0528デフォルトの名無しさん
NGNGstr2=regexp2.match(str).post_match
str=str1+str2
0529デフォルトの名無しさん
NGNGそれだと sub はできても gsub は無理なような。
0530デフォルトの名無しさん
NGNG0531RPI ◆3x0ES2jpL2
NGNGfrom=/123/
to=/xyz/
mm=nil
i=-1
arr=[]
str.gsub!( from ){ |mm|
i+=1; arr[i]=mm; "\x00from#{i}\x00";
}
str.gsub!( to ){ |mm|
i+=1; arr[i]=mm; "\x00to#{i}\x00";
}
# from - to, \x00 は間にないと見なす。
str.gsub!(/\x00from\d+\x00[^\x00]*\x00to\d+\x00/, '')
# from - to , ペアになっていないものを戻す。
str.gsub!(/\x00(?:from|to)(\d+)\x00/){ arr[$1.to_i] }
puts str
# 0000 になる。
# str='0xyz012345vwxyz012345vwxyz012345vwxyz0' ならば
# 0xyz0000 になる。
# 例は簡単すぎるが。
0532RPI ◆3x0ES2jpL2
NGNG1from2from3to4 は 1234 にしていいのね。
0533デフォルトの名無しさん
NGNG1from2from3to4 はどうする。
1from2to3to4 はどうする。
1from2from3to4to5 はどうする。
from にマッチする文字列集合と
to にマッチする文字列集合の関係も気になります。
たとえば、完全同一の from==to はどうします。
設問が一般的すぎ。個別具体的でないと。
str.gsub(/#{regexp1.source}(?:.*)#{regexp2.source}/, '')
str.gsub(/#{regexp1.source}(?:.*?)#{regexp2.source}/, '')
で終了。
0534508
NGNG0535デフォルトの名無しさん
NGNG0536508
NGNGあなたには聞いてませんよ。
raa のエントリのデータを取得する API として、以前は、
http://raa.ruby-lang.org/xmlrpc/1.0/
という XML-RPC のエンドポイントが用意されていたのですが、
現在は 404 Not Found になっているようなのです。
SOAP のエンドポイントは、現在もあるようです。
http://raa.ruby-lang.org/soap/1.0/
http://raa.ruby-lang.org/soap/1.0.2/
0537デフォルトの名無しさん
NGNGTcl/TkはActiveTclを三日前にダウンロードしてインストールしました。
で、以下のスクリプトを実行したのですが。。。
=========================================
require 'tk'
x = TkVariable.new('適当な文字列を入れてください')
TkEntry.new(nil, 'textvariable'=>x).pack
TkButton.new(nil, 'text'=>'値を表示', 'command'=>proc{p x.value}).pack
Tk.mainloop
========================================
Entryを書き換えずにそのまま「値を表示」ボタンを押すと、以下のような出力になり、日本語が出力されません。
========================================
"\223K\223\226\202\310\225\266\216\232\227\361\202\360\223\374\202\352\202\304\202\255\202\276\202\263\202\242"
========================================
何か設定ができてないためだろうと推察しているのですが、どうすればきちんと日本語が出力できるようになるでしょうか?
ちなみに、普通のRubyスクリプトではきちんと日本語がDOSプロンプトに出力されます。
0539デフォルトの名無しさん
NGNGp (ていうか String#inspect) は、
$KCODE か -K オプションで出力する文字列の文字コードをセットしないと、
日本語の文字列はバイナリとみなして出力しちゃうね。
0540デフォルトの名無しさん
NGNGtext_buf.start_iter.forward_search("foo", "bar")
のように意図的に違うものを渡しても
TypeError: not a Gtk::TextIter::SearchFlags
にしかならないからruby-gtk2のインストールがなんか変なのかも。
0541デフォルトの名無しさん
NGNG要素が 1000 個ぐらいの Array があって、それぞれの要素は
['apple', 'orange', 'mango'] とか ['kiwi', 'banana', 'apple'] みたいな単語からなる Array だとします。
1000 個の要素のうち、以下のようにすくなくとも一度だぶっている要素、を抽出したいんですが、
1000 個の全体全で & をとっていく方法以外に、なにかうまい方法はあるでしょうか?
['apple', 'orange', 'mango'] ['kiwi', 'banana', 'apple'] ['kiwi', 'melon']
-> ['apple', 'kiwi']
0542デフォルトの名無しさん
NGNG配列をなめつつ単語をキーにしたハッシュで出現回数を数えて
最後に出現回数>=2なものを抜きだすといったあたりじゃないですかね。
0543デフォルトの名無しさん
NGNGワオーそれでできました大変ありがとう!
0544デフォルトの名無しさん
NGNGdict, result = {}, {}
[
['apple', 'orange', 'mango'],
['kiwi', 'banana', 'apple'],
['kiwi', 'melon'],
].each { |set|
set.each { |word|
if dict[word]
result[word] = true
else
dict[word] = true
end
}
}
p result.keys # -> ['apple', 'kiwi']
0545デフォルトの名無しさん
NGNGary=[
['apple', 'orange', 'mango'],
['kiwi', 'banana', 'apple'],
['kiwi', 'melon'],
]
ary0=ary.flatten
ary1=ary0.uniq
ary1.each{|x|
ary0.delete_at(ary0.index(x))
}
p ary0.uniq # => ["apple", "kiwi"]
0546デフォルトの名無しさん
NGNG…と、つい書きたくなるけど、これはダメ。
0547デフォルトの名無しさん
NGNG0548デフォルトの名無しさん
NGNGあぁ、それだと漏れの >>544 もダメか。
元の各要素は Array じゃなくて Hash か Set にするか uniq しとくべきだな。
0549デフォルトの名無しさん
NGNG集合の差演算。self から other の要素を取り除いた内容の新しい配列を返します。重複する要素は取り除かれます。
この「重複する要素は取り除かれます]は直観的でないよね。
0550デフォルトの名無しさん
NGNGたぶんみんなそう思ったらしく
ruby 1.8 feature: 重複した要素は保持されます。
だって。しかしこの文、オレは読んだだけじゃどういう意味なのか
さっぱりわからなかった。
ruby 1.8 featureの変更点一覧には例があるけどね。
p([1, 2, 1, 3, 1, 4, 1, 5] - [2, 3, 4, 5])
=> ruby 1.6.8 (2002-12-24) [i586-linux]
[1]
=> ruby 1.8.0 (2003-02-16) [i586-linux]
[1, 1, 1, 1]
0551デフォルトの名無しさん
NGNG0552デフォルトの名無しさん
NGNG[
['apple', 'orange', 'mango'],
['kiwi', 'banana', 'apple'],
['kiwi', 'melon'],
].each {|set|
set.uniq.each {|word| result[word] += 1}
}
result.reject! {|key, cnt| cnt == 1}
p result.keys # -> ['apple', 'kiwi']
0553デフォルトの名無しさん
NGNGなにも浮かばなくて涙が出た。
0554デフォルトの名無しさん
NGNG[1, 2, 1, 2] - [1] #=> [2, 2]
確かに中途半端な感じだね……。
array.c の 1.108 -> 1.109 で以前の仕様から変更されてるみたいだけど、
2003-02-03 前後の ChangeLog や ruby-{dev,list,talk} を見ても、現在の仕様に
なった経緯について触れてないっぽい。
Array#- を使ったことなかったけど、↓こんな動作するんだと思ってた。
class Array
def -(other)
occur = Hash.new(0)
other.each{|elm| occur[elm] += 1}
result = []
self.each do |elm|
if occur[elm] == 0
new_ary << elm
else
occur[elm] -= 1
end
end
result
end
end
0555デフォルトの名無しさん
NGNG0556デフォルトの名無しさん
NGNGたんに system とかから実行するのではなく、以下のようなことがしたいと思っています。
* 実際にはコマンドを実行しないモード(dry run)みたいのがある。
* シェルスクリプト中の各コマンドについて、エラーハンドリングができる。
* そのほかシェルスクリプトから呼び出される各コマンド・プロセスの仮想化
いろいろぐぐってみたんですが、warlus プロジェクトの OBAQ というライブラリがそれっぽいことをやってくれそうです。
http://walrus-ruby.hp.infoseek.co.jp/pfm/func.html
とりあえず、ここにある pfm をインストールしようとしたんですが、以下のエラーで失敗します。
/usr/lib/ruby/1.6/pfm/pfmsupp.rb:15: uninitialized constant Resource at LocalResourceBase (NameError)
from /usr/lib/ruby/1.6/pfm/pfmmodel.rb:3:in `require'
from /usr/lib/ruby/1.6/pfm/pfmmodel.rb:3
from /usr/lib/ruby/1.6/pfm/pfmjob.rb:3:in `require'
from /usr/lib/ruby/1.6/pfm/pfmjob.rb:3
from /usr/bin/pfm:5:in `require'
from /usr/bin/pfm:5
メーリングリスト等は止まっているみたいなので、作者の中島@ブレーンさんに直メールでうかがったところ、
このプロジェクトは開発途中で終了とのことでした。。。
(中島さん、もしこのスレッド見てたら、お返事ありがとうございました)
OBAQ を今も使用してる方はいらっしゃいますか?
もしくは、上記のような目的をみたすライブラリってなにかあるでしょうか?
0557デフォルトの名無しさん
NGNG> Ruby からシェルスクリプトのように、コマンド群を実行したいのですが、
> たんに system とかから実行するのではなく、以下のようなことがしたいと思っています。
外部のコマンドを実行するには、fork&execとかsystemとか1.9ならspawnとか
IO.popenとか``とか使うしかないんだが。
> * 実際にはコマンドを実行しないモード(dry run)みたいのがある。
単なるフラグの処理だろ。
> * シェルスクリプト中の各コマンドについて、エラーハンドリングができる。
例外処理? それとも$?.exitstatusについて?
> * そのほかシェルスクリプトから呼び出される各コマンド・プロセスの仮想化
意味が分からない。
0558デフォルトの名無しさん
NGNG0559デフォルトの名無しさん
NGNG0560デフォルトの名無しさん
NGNGhttp://spa.jssst.or.jp/2003/program/papers/03007.pdf
0561デフォルトの名無しさん
NGNG|Ruby ユーザにとって新しい言語の習得の必要がない
0562デフォルトの名無しさん
NGNG�@Perlでは別インストールで多くの人が知らないデーターベース利用を標準で使用できるようにし、「データーベースが簡単に取り扱える」というイメージを特に強く植えつけた。
�Aウェブサイト作成への特化。例えば、セッション管理がそうだ。
�Bソースの隠蔽による著作権保護を可能にした。
データーベースを使いたいが、使い方がわからない。そこに、PHPなら使えるという情報が先に入る。これで、PHPに入った人もかなり多いはず。
PHPの言語仕様はZendに大きく左右される。
二年ほど前、PHPが出始めた頃には、変数のスコープがPerlとまったく同じ仕様だった。
もともと、Perlのソースコードを改編して作成されたPHP。
↓PHPの歴史
http://php.planetmirror.com/manual/ja/history.php
PHPには、Perlコードの退行による高速化の意図が言語のいたるところに見える。
マイクロソフトは、オブジェクト指向への対応というのが大義にVB6.0からVB.NETに言語仕様を大幅に変えた。
今後も大きく言語仕様が変わることはないのか?
オープンソースとは言っても、Zend社の
http://www.zend.com/management.php
の数人のスタップによって大きく左右される。
再帰的定義とされる「PHP:Hypertext Preprocessor」という名前にも理由がある。これは、要するに、正確には、「Perl Hypertext Preprocessor」としたいところだが、GNUの「GNU is Not UNIX」という再帰的な定義をもじったものだ。
要するに、「GPLのフリーソフトのライセンスには違反していませんよ!」と一つには主張し、また、一つには、「PHP is Not Perl」とでも言って、Zendの社としての姿勢を、先人の「Perl開発者たち」から擁護する意図があったのだろう。
Nではなく、Hなのが、そのための味噌だ!Perl開発者たちは、当然、面白くないはずだ。
PHP信奉者は、六芒星(hexagram)マークのユダヤ教にでも、入信せよ!
0563デフォルトの名無しさん
NGNG0564デフォルトの名無しさん
NGNG0565デフォルトの名無しさん
NGNGhttp://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=open-uri.rb
0566デフォルトの名無しさん
NGNG節穴でした。しょうもない質問してしまってスマソ。
0567デフォルトの名無しさん
NGNG大変お忙しい中お手数ですが、
Ruby/Tkをmswin32かmingwで動かす方法を丁寧に教えて頂けないでしょうか。
0568デフォルトの名無しさん
NGNGインストールするだけでOK
http://rubyforge.org/frs/?group_id=167
0569567
NGNG0570デフォルトの名無しさん
NGNGwarlus 開発終了なの?お疲れ様でした。
…自作アプリ、warlus使わなくてよかった。
…… amrita の行く先は大丈夫かな。
0571デフォルトの名無しさん
NGNGダブルクォートだけでは困るケースがあるのでしょうか?
0572デフォルトの名無しさん
NGNGhttp://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=%A5%EA%A5%C6%A5%E9%A5%EB
0573デフォルトの名無しさん
NGNGまた実際、""で書いた方が楽な場面もあれば、''で書いた方が楽な場面もある。
a = 1
p "#{a}" # => "1"
p '#{a}' # => "#{a}"
とか。
0574デフォルトの名無しさん
NGNG\ が混じるとめんどい。特に Win のファイルパスを貼り付けた時。
0575デフォルトの名無しさん
NGNG0576デフォルトの名無しさん
NGNG0577デフォルトの名無しさん
NGNG納品せにゃならんプログラムの各に英語/日本語のコメントをつけるとき、
私は↓のように併記してますが、なにかうまいやりかたあるでしょうか?
#
# Returns current rcs timestamp.
#
# 現在の RCS タイムスタンプを返す
#
def rcs_date
...
end
0578デフォルトの名無しさん
NGNGRubyで仕事。
イイナー、イイナー。
0579デフォルトの名無しさん
NGNGまあいいんだけど。
0580デフォルトの名無しさん
NGNGjavadocな人はどうやってんだろ。
0581デフォルトの名無しさん
NGNG会社辞める時の引継ぎが大変
普通使わねって。
0582素人
NGNG何故エラーが出てるのかわかりません
[Tue May 25 20:15:31 2004] [error] mod_ruby: error in ruby
\n/usr/local/apache2/htdocs/ruby/test/TestMain.rb:2:
in `load': ./TestTool.rb:12: dynamic constant assignment (SyntaxError)
\n\t\tAAA1=CGI.escape(szEucKey)\n\t\t ^
\n\tfrom /usr/local/apache2/htdocs/ruby/test/TestMain.rb:2
\n\tfrom /usr/local/lib/ruby/1.8/apache/ruby-run.rb:53:in `load'
\n\tfrom /usr/local/lib/ruby/1.8/apache/ruby-run.rb:53:in `handler'\n
とapacheのerror_logに出力されてしまいます
0583デフォルトの名無しさん
NGNG馬鹿?
0584素人
NGNGTestMain.rb
------------
require "cgi"
load "./TestTool.rb"
szEucKey="&&"
AAA1=CGI.escape(szEucKey)
print "1:",AAA1,"\n"
TestTool.testMethod()
--------
0585素人
NGNG-------------
require "cgi"
require "uri"
require "kconv"
class TestTool
def TestTool.testMethod()
cgi=CGI.new
keyword=cgi["keyword"]
szEucKey=Kconv.toeuc(keyword)
p szEucKey
AAA1=CGI.escape(szEucKey)
print "2:",AAA1,"\n"
end
end
-------------
0586素人
NGNGTestMainの
AAA1=CGI.escape(szEucKey)は
うまくいくのですが
TestTool.rb だとエラーになってしまいます
全然わからなくて、困ってます。
0587デフォルトの名無しさん
NGNGって書いてあるじゃん
0588デフォルトの名無しさん
NGNGdynamic constant assignment - 動的な定数への代入
定数への代入はメソッドの外でなくてはならない。
定数のじゃなくて変数を使うこと。
0589素人
NGNGすみません
気づきました
「AAA1」が駄目だったのですね
小文字にしたら旨くいきました
ありがとうございました、とても感謝しています。
0590デフォルトの名無しさん
NGNGやめちゃえ
0591デフォルトの名無しさん
NGNG俺たちが悪かった。
どうか使ってやってくれ。
0592デフォルトの名無しさん
NGNG「小文字にしなかったのが原因」
という結論は、*nixでshとか使ってるやつなら直感的にわかる様な事だろうか。
そうだとしても、shも妙な仕様を抱えている言語の1つでもあるし、
ここは考察すべきところであると思う。
rubyがめざす言語ポリシーとして正しい道を歩んでいるのかどうか。
0593デフォルトの名無しさん
NGNG数が大文字というネタくらいか。でもこれって慣例だよね)。
たとえばメンバ変数が @ から開始される、とかいった決まりとほとんど同じ
だと思うし、大文字と小文字というのは区別としてはわかりやすいと思うなぁ。
ruby-mode ならかなり目立つ色になってくれるし。定数と覚えなくても「大文
字はクラス名という慣習である」という程度の理解でも、回避する役には立つ。
現実問題としては、これをやめた場合に Class や Object といった定数をど
う保護するか、というのが問題となる気はする。
そういうわけで、けっこう妥当な方針だと思うけど。
0594デフォルトの名無しさん
NGNGそんなの Ruby のちゅーとりあるナナメ読みすれば
わかることじゃん。
自分でコーディングして、自分で調べるのが面白い、
それがプログラミングの楽しさと私は考えてます。
初学者でも、マニュアル読むくらいの丁寧さというか
学ぶ積極性というか周到さというか、そういうのは必ず持っているハズ。
そういった謙虚さが足りないと、学ぶスピードが落ちるし、
自分にとって大きなマイナスになる。
トライアル&エラーだけでコーディングを学ぼうとする人は
面倒臭がりすぎというか、頭のネジとか肛門とか、どこかゆるんでると思う。
0595デフォルトの名無しさん
NGNG小数点4位以下を丸める方法はどうするのが一番簡単ですか?
0596デフォルトの名無しさん
NGNG0597デフォルトの名無しさん
NGNG0598デフォルトの名無しさん
NGNG0599デフォルトの名無しさん
NGNG「丸める」の意味次第で、>>596の to_i の部分を
ceil, floor, round のどれかに置き換える必要があるかもしれない。
0600595
NGNGで、いくことにします。ありがとうございました。
0601デフォルトの名無しさん
NGNG0602デフォルトの名無しさん
NGNG四捨五入にもいろいろ種類があるんだぞ。
0603デフォルトの名無しさん
NGNGごめん、よければ詳しく教えて。
0604デフォルトの名無しさん
NGNG負数で .5ちょうどの場合に、正の無限大側に切り上げる(-1.5 -> -1.0)のか、
絶対値で考える(-1.5 -> -2.0)のか、とかかな。
あと、一つ上の桁の数字が奇数か偶数かで、.5の扱い(切り上げ・切り捨て)を
変えるような方式もあった気がするけど、これは「四捨五入」じゃないかも。
0605デフォルトの名無しさん
NGNG0606602
NGNGなんだ、情報処理に関係してる人には割と有名だと思ってたんだけど、そうでもないのか。
0607デフォルトの名無しさん
NGNGメソッド名はaliasばら撒いて解決。
0608デフォルトの名無しさん
NGNGそういう数値演算とかの話って、知らなくていいひとは全然知らない気がする。
0610デフォルトの名無しさん
NGNG0611デフォルトの名無しさん
NGNG0612デフォルトの名無しさん
NGNG0613デフォルトの名無しさん
NGNGそれともsort()みたいに、round()にブロックを渡すとか。そりゃやり過ぎ。
0614デフォルトの名無しさん
NGNG変数命名の仕様は、知ってさえいれば十分に直観的。
そして今回の場合は、エラーメッセージを読めば十分に原因の見当は
つく(定数のつもりはないのにconstantとか言われてる)のだから、
こんなところで直感なんて使うなと。
>rubyがめざす言語ポリシーとして正しい道
とりあえずこれ嫁。特に2番目あたり。
http://slashdot.jp/articles/03/03/14/0258247.shtml
0615デフォルトの名無しさん
NGNGわけ分からん。
0616デフォルトの名無しさん
NGNG起こり、困っています。
---
p Dir::entries(hoge + '/')
Dir::entries(hoge + '/').each {|filename|
path = hoge + '/' + filename
next if FileTest::directory?(path.untaint)
p Dir::entries(hoge+ '/')
File::unlink(path)
}
p Dir::entries(hoge + '/')
Dir::rmdir(hoge)
---
これを実行すると
---
(下の行のようなファイル名の配列がずらずら消えてゆく)
[".", "..", "body", "style", "lock"]
[".", "..", "style", "lock"]
[".", "..", "lock"]
[".", "..", ".nfs0c3e6b4700000d9a"] ←これ
./lib/Database.rb:50:in `rmdir': Directory not empty - "./database/bc9189406be84ec297464a514221406d" (Errno::ENOTEMPTY)
なぜ、突然 .nfs0c3e6b4700000d9a のようなファイルが作成されるのが
不思議です。 そして、そのファイルのおかげでディレクトリを削除できな
いのですが。 理由をご存知の方、いらっしゃいませんか?
0618616
NGNGありがとうございます。 ようやく納得できました。
まさか作業ディレクトリがNFS上だとは知りませんでした…。
.nfs* が File::unlink の後に残っているということは、クローズ処理なるものが
完了していないという事ですよね。 仮にそうだとすると、プログラムが終了
するまで、そのファイルは消えない事になりますよね。
そうすると、ディレクトリを削除するには、別のプロセスを立ち上げて消すしか
方法はないものでしょうか。 意外とNFSって曲者ですね。
0619デフォルトの名無しさん
NGNG数学屋
0620デフォルトの名無しさん
NGNG0621616
NGNG何か勘違いしてるかも。
出直してきます。
0622デフォルトの名無しさん
NGNGまあ確かに素人が↓のエラーを見たときに、
in `load': ./TestTool.rb:12: dynamic constant assignment (SyntaxError)
大文字が定数になるから。なんてわかるわけないよなぁ。
正直、定数は const 修飾子みたいなのがほしかった。
大文字小文字で区別するのはちょっとなぁ。
0623デフォルトの名無しさん
NGNGそお? どーせ、ハンガリアンうんたらで大文字で記述されたりするんだから
それを言語仕様に組み込むのってのは、いいアイディアじゃね?
大文字小文字関係なしにクラスだの変数たの定数だのがでてきたら、それだけで
コードを追う手間が増える。 部分を見ただけで、一発でそれが何かわかるってのは
すごく重要だと思うんだけどなー。
まつもと氏の「初心者はいつまでも初心者に甘んじるべきではない」ってのに一票。
0624デフォルトの名無しさん
NGNG0625デフォルトの名無しさん
NGNG調べてないんでしょ?わかるわけがないよ。
手持ちの知識と勘だけでいつでもどうにかなるなんて大間違い。
「なんで定数になってるの?」という疑問から、ふつうは言語仕様を調べる。
ていうかコーディングする前に、言語仕様ぐらいざっとでも目は通す。
素人に優しく玄人にも便利、っていうならかまわんけど。
でも素人とか初心者(≠初級者)なんぞのために、とっつきやすくも
不便な仕様に変えるようなら、きっと自分はrubyを見限る。
…優しい独裁者はそんな決断をしないと、信じてるけどね。
0626デフォルトの名無しさん
NGNGああぁ、そのスクリプト、ホームディレクトリで実行しちまったよ・・・
なんかスッキリしたみたいだよ。鬱死・・・
0627デフォルトの名無しさん
NGNG0628デフォルトの名無しさん
NGNG0629デフォルトの名無しさん
NGNG0630デフォルトの名無しさん
NGNG"kyonkyon" は "kyon"*2 ではなくて "kyon"**2 じゃねえの?って話みたい。
0631デフォルトの名無しさん
NGNGDOS/Windowsのファイル名の仕様で慣れてるってのがあるかもね < 初心者
そういや、VBって区別するのかな?
0632デフォルトの名無しさん
NGNG0633デフォルトの名無しさん
NGNG加算で交換法則が成り立たないことはないはずだけど、
乗算では成り立たないケースがあるんだよ。
その習慣に倣えば、文字列結合は乗算となる。
言い分はいちおう理解はできるんだけど、そもそも文字列で
数学やってるのが間違いなんだよなぁ。
0634デフォルトの名無しさん
NGNGLAN上のPC1から、PC2へバックアップを取ろうとすると、
>pdumpfs.exe C:\temp \\PC2\backup
pdumpfs:444:in `main': undefined method `fprintf' for #<IO:0x8ce980> (NoMethodError)
from pdumpfs:462
なるエラーが出るのですが、LAN経由でのバックアップはできないのでしょうか。
PC1 XP NTFS
PC2 2000 NTFS
0635デフォルトの名無しさん
NGNGruby 的な解法じゃないけど、ネットワークドライブを割り当てたらどう?
0636デフォルトの名無しさん
NGNGエラー嫁。
>pdumpfs:444:in `main': undefined method `fprintf' for #<IO:0x8ce980> (NoMethodError)
fprintf なんてメソッドあるのか?
ネットワークには関係なさそうだけどな。
0637デフォルトの名無しさん
NGNGちなみにそこのまわりは
if windows?
fstype = get_filesystem_type(dest)
if fstype !~ /ntfs/i
STDERR.fprintf("pdumpfs: only NTFS is supported but %s is %s.",
dest, fstype)
exit 1
end
end
てな感じだった。fprintfは単にprintfの間違いだと思うけど結局NTFSじゃ
ないってエラーはいて終わるだけだね。とりあえずprintfに直して走らせ
ればそこが何になってるか調べることができると思う。windowsはよくわか
らんけど、LANで共有した奴はNTFSにはならないのかな?
0638634
NGNGありがとうございました。
0639デフォルトの名無しさん
NGNG初心者だけってわけじゃなさそうですよ。どざの多くはそうなのかも。
ttp://linux.ascii24.com/linux/allascii/ascii/1999/07/30/176000-009.html
> ファイル名の大文字小文字を識別するのも生理的に受け入れ難い。
0640デフォルトの名無しさん
NGNGあと文字列中の
_____^H^H^H^HTEXT
みたいなのは何を意味しているんでしょうか?
0641デフォルトの名無しさん
NGNGホンモノのデータを見ないとどっちかはわからん。
とりあえず「コントロールコード」について調べてみ。
>_____^H^H^H^HTEXT
HTML で表現するとこんな感じ。
<del>_____</del>TEXT
0642デフォルトの名無しさん
NGNG0643デフォルトの名無しさん
NGNGネットワークドライブに割り当てられたドライブは SMBFS になると思うぞ。
その先がNTFSだろうとFAT32だろうと、リモートホスト側で変換するはず。
NFSでも相手のファイルシステムいかんに依らず、NFSとして扱えるだろ?
以上、想像でした。
0644デフォルトの名無しさん
NGNGroffベースの man か何かのエスケープシーケンスだな。
0645デフォルトの名無しさん
NGNG暗号のライブラリってありますか?
0646デフォルトの名無しさん
NGNG0647デフォルトの名無しさん
NGNG環境によって違うからダメでしょ。md5 とかにした方がマシ。
0648デフォルトの名無しさん
NGNG0649デフォルトの名無しさん
NGNGclass Foo; end
class Foo::Bar; end
こう書けるようになったのは嬉しいのだが、
class Foo; class Bar; end; end
class Foo::Baz < Bar; end
これがエラーになるのはちょっと悲しい。
0650デフォルトの名無しさん
NGNGunix 系の場合はそうかもね。
ちなみにエクスプローラのプロパティを見ると、ネットワークドライブ
の場合はしっかり NTFS と認識してる。元が FAT32 の場合はシラネ。
0651デフォルトの名無しさん
NGNGclass Foo::Bar; end は
class Foo; class Bar; end end の省略記法では*ない*からな。
0652デフォルトの名無しさん
NGNGclass Foo::Bar; end は
class Foo; class Bar; end end の省略記法では*ない*からな。
0653デフォルトの名無しさん
NGNGFoo::Baz の定義は main で行われているのだから、当然 ::Bar を探しに
行くわけだ。Foo::Bar と指示してやらないと。
0654デフォルトの名無しさん
NGNGFoo::Baz の定義は main で行われているのだから、それだと当然
::Bar を探しに行くわけだ。Foo::Bar と指示してやらないと。
0655デフォルトの名無しさん
NGNG0656デフォルトの名無しさん
NGNGだとすると、 class Foo::Bar; end と書けてもあまり嬉しいことないなあ。
class Foo; class Bar; end; end のままでいった方が良さげだなあ。
0657デフォルトの名無しさん
NGNGclass Foo::Bar; end は
class Foo; class Bar; end end の省略記法では*ない*からな。
0658デフォルトの名無しさん
NGNGclass Foo::Bar; end は
class Foo; class Bar; end end の省略記法では*ない*からな。
0659デフォルトの名無しさん
NGNGclass Foo::Bar; end は
class Foo; class Bar; end end の省略記法では*ない*からな。
0660デフォルトの名無しさん
NGNGライブラリの再定義をするときとかに便利だよ。
特に名前空間が深い時ね。
module Foo; class Bar; end; end
class Foo::Bar; def baz; end; end
あと class Foo::Bar は、クラス Foo そのものには影響を
与えないことが明瞭になる。
class Foo; end
class Foo; class Bar; end; def baz; p 'Foo#baz'; end; end
0661デフォルトの名無しさん
NGNGこれ全部俺か? ケイタイだとよく分からん。
スマソ逝ってくる。orz
0662デフォルトの名無しさん
NGNGこれ全部俺か? ケイタイだとよく分からん。
スマソ逝ってくる。orz
0663デフォルトの名無しさん
NGNGその調子で1000までたのむよ
0664デフォルトの名無しさん
NGNGCVS周りのアップデート中か?
0665デフォルトの名無しさん
NGNG0666デフォルトの名無しさん
NGNGこのタイミングだと、namazu.orgやらmozilla.gr.jpやらの話
http://slashdot.jp/article.pl?sid=04/05/27/1453244&topic=92&mode=thread
を思いだしてしまうのだけど。やっぱクラックされたんじゃ?
0667デフォルトの名無しさん
NGNGやっぱり。
0668デフォルトの名無しさん
NGNG0669デフォルトの名無しさん
NGNGhttp://www.ruby-lang.org/announce-ja.txt
0670デフォルトの名無しさん
NGNG0671デフォルトの名無しさん
NGNG0672デフォルトの名無しさん
NGNGもみあげを伸ばすのか?
0673デフォルトの名無しさん
NGNGttp://www.rubyist.net/~matz/20040529.html
0674デフォルトの名無しさん
NGNG0675デフォルトの名無しさん
NGNG0676デフォルトの名無しさん
NGNG【オフィシャル】Rubyはこのまま消えていく言語にノミネートされました 【サイト消滅】
http://pc5.2ch.net/test/read.cgi/php/1060009605/
0677デフォルトの名無しさん
NGNGツッコミわろた
0678デフォルトの名無しさん
NGNGこれからはクローズド・ソース!
0679デフォルトの名無しさん
NGNGいまさらだが、あまりの感動に泣いた。( ´Д⊂ヽ
0680デフォルトの名無しさん
NGNG0681626
NGNGあれからというもの、コツコツあちこちから設定ファイルの断片をかき集めて、
最近ようやく普通の暮らしになれてきたところです。
バックアップは重要、そんな平凡であたりまえな言葉の、
本当のありがたみが身にしみてきている、
そんな今日この頃です。
0682デフォルトの名無しさん
NGNGttp://namazu.org/~satoru/pdumpfs/
0683デフォルトの名無しさん
NGNGif ss =~ /,/
print ss
else
print "\"" + ss + "\""
}
これはカンマで区切られた文字を""で囲むコードなんですが、
二度も/,/でチェックしていて無駄な感じです。
ssがsplitの引数にマッチしたのか、マッチしていないのかは
どこかに保存されていないのでしょうか?
0684デフォルトの名無しさん
NGNG0685デフォルトの名無しさん
NGNGsplitの正規表現にカッコを使わないのはどうよ
print s.split(/,/).map{|ss| '"' + ss + '"'}.join(',')
あるいはgsub使うとか
print '"' + s.gsub(/,/,'","') + '"'
0686デフォルトの名無しさん
NGNGruby -ropen-uri -e "puts URI::parse('file:///tmp/hoge').read"
みたいな。
0687デフォルトの名無しさん
NGNGその辺どういう見解ですか?>開発者ども
0688デフォルトの名無しさん
NGNG$ time ruby16 -ep
real 0m0.047s
user 0m0.030s
sys 0m0.010s
$ time ruby18 -ep
real 0m0.030s
user 0m0.020s
sys 0m0.010s
0689デフォルトの名無しさん
NGNG自分で外してビルドすれば。
0690デフォルトの名無しさん
NGNGruby 本体を埋め込みして、不特定多数のデベロッパが作った
ruby スクリプトをネットワークでやりとりするんです。
セキュリティ上、埋め込みした ruby からは File などを
はずしておきたいんですが、そういう ruby のソースコードの腑分けを
解説してくれてるサイトってないですかねぇ。
ttp://i.loveruby.net/ja/rhg/index.html
↑こちらとかは、とても参考にさせていただいてます。
できれば Thread ははずしたくないんですが、これは残しておいて
大丈夫ですかね?
0691デフォルトの名無しさん
NGNG$SAFE = 4 じゃだめなの?
0692デフォルトの名無しさん
NGNGなるほど、目からウロコです!
それでいけそうですね。
とりあえずセキュリティはセーフレベルにゆだねる形で
作っていって、なにか不具合があったら、また検討したいと思います。
ありがとうございました。
(こういうスレで聞いてみるもんだなぁ・・)
ついでに質問で恐縮なのですが
私は embedded ruby はまるきり初心者なのですが、
みなさんはどういう風に勉強されましたか?
トライアル&エラーでしたか?
0693デフォルトの名無しさん
NGNGRubyRobots?
0694デフォルトの名無しさん
NGNGなんと、もうあったのですね…。
まぁ勉強にはなりますので助かります。
参照させていただきます。
0695デフォルトの名無しさん
NGNG本体スクリプトとのデータの受け渡しはどうやるのがいい?
わざわざ設定用のAPIを作るほどでもなくて、いくつかの変数に
代入してもらう程度なんだけど。
0696デフォルトの名無しさん
NGNG0697デフォルトの名無しさん
NGNG日本語で『こんにちはと、言う。』と入力すれば
ダイアログに『こんにちは』と出るプログラミング言語登場!!
PNGもサポートしてるので、かなりおすすめです!!
また、【『http://www.xxxx.xx/』を、『index.htm』へ、HTTPダウンロード。】
とすれば自動的にダウンロードできる優れ物です!!
↓日本語プログラミング言語『ひまわり』
http://hima.chu.jp/index.htm
↓日本語プログラミング言語『ひまわり』スレッド
http://pc5.2ch.net/test/read.cgi/tech/1083053283/l50
0698デフォルトの名無しさん
NGNG>Rubyで書いてもらってそれを読み込み
この時点で、
* load
* 読み込んで eval する
のどっちかじゃないかな。
require はムダに再読込を防止されちゃうから使わない方がよさげ。
たとえば tDiary は load してる。
>>696
Marshal(PStore) は手書きできないし、互換性も保証されない
んじゃなかったっけ?
0699デフォルトの名無しさん
NGNGtDiary は load じゃなくて eval してる。
$ ident tdiary.rb ; grep -n \"tdiary.conf\" tdiary.rb
tdiary.rb:
$Revision: 1.190 $
471: eval( File::open( "tdiary.conf" ){|f| f.read }.untaint, binding, "(tdiary.conf)", 1 )
0700695
NGNGサンクス
0701デフォルトの名無しさん
NGNG他と比較してない時点で無駄なデータ
0702デフォルトの名無しさん
NGNGぅげぇ
0703デフォルトの名無しさん
NGNGバージョン上がって機能が増えると遅くなるんじゃないか、
という話とは違うのん?
0704デフォルトの名無しさん
NGNG以下のような、現在の時刻を表す文字列を生成したいのですが、
(用途は Debian の debian/changelog ファイルなどの生成)
、
'Wed, 2 Jun 2004 10:48:57 +900'
こういう形式の文字列って Time クラスだけで作ることできるでしょうか?
自分がやってみたのは、
t = Time.new
t.strftime("%a, %d %b %Y %X %Z")
=> 'Wed, 02 Jun 2004 10:48:57 JST'
となり、自分が求めているフォーマットと比べると、
日付 2 -> 02
タイムゾーン +900 -> JST
となってしまい、いまいちでした。。。
0705デフォルトの名無しさん
NGNG0706デフォルトの名無しさん
NGNG"Wed, 2 Jun 2004 13:35:14 +0900"
0707デフォルトの名無しさん
NGNG%z が使えるかどうかは環境依存と思われ。
0708デフォルトの名無しさん
NGNG0709デフォルトの名無しさん
NGNG漏れは手元にダウンロードしてきて見てる。
http://www7.tok2.com/home/misc/ruby.html
0710デフォルトの名無しさん
NGNGそれがどこのコードによるものかがわからない場合
どうしたらいいんでしょう?
0711デフォルトの名無しさん
NGNG0712デフォルトの名無しさん
NGNGRu by
普通Ruを’ラ’とは読まんよなあ・・
狙ったボケだったりしたら萎えるなあ・・
寒いよなあ・・
0713デフォルトの名無しさん
NGNGメール欄よく読もうね。
0714デフォルトの名無しさん
NGNG0715デフォルトの名無しさん
NGNG0716デフォルトの名無しさん
NGNGレシピブック、早いとこ項目見出しも公開して欲しい。
田舎なんで本屋に置いてないから中身確かめることもできんよ。
0717デフォルトの名無しさん
NGNGとりあえず、きれいな方法でなくても良いなら。
set_trace_func(
Proc.new {|event, file, line, id, binding, classname|
if event == 'c-return' and id = :puts
puts ['trace:', file, line, classname].join("\t")
end
}
)
0718デフォルトの名無しさん
NGNGgrep で関連コードを絨毯爆撃か、デバッガで追うのがふつうかな。
ruby ならではということで >>717 と同様に STDOUT.print を
書き換えることも考えたけど、出力のメソッドが print とも puts
とも限らないのが悩みどころなんだよね。
たぶん print か write あたりが比較的低レベルだと思うんだけど、
調べる気力が今はない :-)
どーでもいいけど、デーモンだからって、モジュールの使い回しをする
関係で出力してしまうことがあると思うんだけどな。
出力しないように作り直すのもめんどくさいし。
個人的には、IO 派生のログ出力クラスを作ってそこに繋いどく。
0719デフォルトの名無しさん
NGNGそんな糞モジュール(ry と言いたいところだけど、そういうのは意外と多いのかね?
そんなの漏れなら全部 /dev/null 行きにしちゃうんだけど、
でも、Ruby 本体の例外終了時のエラー出力だけはどうしようもない、
というかどうにかして欲しいんだけど、どうにか拾わないとメチャメチャ困るので、
STDOUT, STDIN, STDERR は /dev/null 行きにしつつも、
$stderr はどっかのファイルかログ出力用クラスに繋ぐ、くらいはやるかな。
0720710
NGNGありがとうございます。解決しました。
メソッドの名前をdataにしていたのが原因でした。
名前を変えたら直りました。
けど、dataって特別なメソッドでしたっけ?
0721デフォルトの名無しさん
NGNG俺は北米系の英語しかわからんが、 u は、日本語だと「う」じゃなくて「あ」に近いね。
南の方いくと「う」に近い感じになってくるかもしれん。 特にスペイン語系の奴らは。
まあ、どうでもいいね。
0722デフォルトの名無しさん
NGNG0723デフォルトの名無しさん
NGNG0724デフォルトの名無しさん
NGNG長いって何?
よくわからんが、一応、ありふれた単語で例をあげておく
Urgent -> あーじぇんと(×うーじぇんと)
Upload -> あっぷろーど(×うっぷろーど)
Cut -> かっと(×くっと)
Curry ->かりー(×くりー)
Tully's -> たりーず(△とぅりーず)
Starbucks -> すたーばっくす(×すたーぶっくす)
Fuck -> ふぁっく(×ふっく)
Suck -> さっく(×すっく)
さ、カタカナ英語の時間はおしまい。 オフトピsage
0725デフォルトの名無しさん
NGNG0726デフォルトの名無しさん
NGNG> けど、dataって特別なメソッドでしたっけ?
違う。
そのコードやSTDOUTに出てたっていう出力でも見ないことには何もいえん。
0727デフォルトの名無しさん
NGNG0728デフォルトの名無しさん
NGNG0729デフォルトの名無しさん
NGNG0730デフォルトの名無しさん
NGNGが出てくるんだけど、原因がさっぱりわからない
このwarningで例外投げるようにしてほしいのだけど、どうすればよいですか
0731デフォルトの名無しさん
NGNGNetscape は ネッツカーペ と読みます
Builder は ブイルデー と読みます
0732デフォルトの名無しさん
NGNG>>730
変数名のはじめに大文字つかってるっぽいな
変数名のはじめが大文字の場合は定数扱いになるから。
だからょお、constとか作ろうze
0733デフォルトの名無しさん
NGNGならば>>724をみて納得した俺も真性バカ決定
0734デフォルトの名無しさん
NGNGたしか ruby-list に要望があがってたはず。
とりあえず >>717 を if event == "line" then に書き換えて、
代入を全て追いかけるとかは?
やたら冗長だけど、目星をつける役には立つんじゃないかな。
0735デフォルトの名無しさん
NGNG0736デフォルトの名無しさん
NGNGx-y
end
puts a(10) # => 9
puts a(10, 2) # => 8
0737デフォルトの名無しさん
NGNG0738デフォルトの名無しさん
NGNG0739デフォルトの名無しさん
NGNG0740デフォルトの名無しさん
NGNG0741デフォルトの名無しさん
NGNGの話だった。[ruby-list:39567]
>>737
デフォルトはともかく、strict なモードがあってもよいと思われ。
0742デフォルトの名無しさん
NGNGグローバルなモード(?)ならやっぱり組み込みで困るような。
0743デフォルトの名無しさん
NGNGそれはオーバーライドなんでわ?
0744736
NGNGす……スマソ。
メソッドを引数の数でオーバーライドって、こんな感じ?
class A
def a(x, y); x + y; end
end
class B < A
def a(x); x ** 2; end
end
B.new.a(10) # => 100
B.new.a(10, 1) # => 11
これはできないと思うけど。
0745デフォルトの名無しさん
NGNGハァ?
0746735
NGNGclass C
def initialize(str)
# 文字列から生成
end
def initialize(a, b, c, d)
# パラメータを与えて生成
end
end
デフォルト引数を駆使するか、メソッド名を変えるしかない?
def C.parse(str)
# ...
new(a, b, c, d)
end
0747デフォルトの名無しさん
NGNGチミは無害なので仮性
0748デフォルトの名無しさん
NGNGただIISだとぽろぽろCGIエラーや警告が出る。
ところで運用中にフィールド削ったらいけないの?
担当者削ってレス書き込んだらassignedが無いとか怒られた。
0749デフォルトの名無しさん
NGNGこんな感じとか?
漏れはメソッド名変えた方がおすすめするけど。
def initialize(*arg)
if arg.size == 1
# 文字列から生成
else
# パラメータを与えて生成
end
end
0750デフォルトの名無しさん
NGNG$DEBUG みたいなものをイメージしてたけど、
$SAFE のようにスレッドローカルなら問題ないのでは?
>>746
def initialize(a, b=nil)
if b == nil
init_a(a)
else
init_b(a,b)
end
end
protected
def init_a(a)
:
こんな感じの方法もあるけど、nil を渡せない欠点あり。
でも一般的に、メソッド変える方がわかりやすいコードになるんじゃないかな。
そーいや modruby.net もヤラれてたんだね。
あっちもこっちもで前田さん大変だ。
http://modruby.net/ja/announce.txt
0751デフォルトの名無しさん
NGNGフィールド削除でエラーは、影舞の BTS:154 だな。
Win32 での動作は BTS:190 あたり。
CVS の release-0_8-branch を取得するのがベストかも。
Win32 まわりの修正もコミット済みっぽいし。
つーかそろそろバグ修正をまとめてリリースして欲しいんだが。
0752デフォルトの名無しさん
NGNG大丈夫、キミはズルムケだ。
>>724 は>>712 の Ru に対して言ったんだろ?
きっと、>>729 はアメリカの国防長官の名前を「ルムズフェルド」とか発音してるはずだ。
酒場に行っても「ルム・コーク」。 さすが真性。
0753デフォルトの名無しさん
NGNG方向キーを押した瞬間、なんらかの動作をする
みたいなことはできるのでしょうか?
Enterだけなら
if STDIN.gets == "\n"
do_something
end
とかでできそうですが… 他のキーだとやり方が思いつかないです。
0754デフォルトの名無しさん
NGNGcurses とか使った方が良さげ。
0756デフォルトの名無しさん
NGNGわざわざ赤で <発音注意> と書いてあるんだけど。
http://dictionary.goo.ne.jp/search.php?MT=ruby&kind=ej&mode=0&base=1&row=1
の音声も、上記のようにしか聴こえないのだが...
0757デフォルトの名無しさん
NGNGおいおい、そこまで引っ張るネタかよ!?
0758デフォルトの名無しさん
NGNG0759デフォルトの名無しさん
NGNG改行コードが入ってるグローバル変数なかったっけ?
いま、ドキュメントが見れんからわからんが・・・。
いつ、公式サイトは復活するんだ?
>>768 さんよ、必死なのはわかったが、どこで掛け違えてるのか、俺はすぐにわかったよ。
Ru は、一般的にどう読めるかって話だろ? 別にラビーが正しいなんて、誰も言ってないが。
0760デフォルトの名無しさん
NGNG本当オマエ必死だな
0761デフォルトの名無しさん
NGNG開音節と閉音節の区別ぐらいつけろと
0762デフォルトの名無しさん
NGNGputsは再定義しないと無理ぽ。printなら$\ = "\r\n"
0763デフォルトの名無しさん
NGNG0764デフォルトの名無しさん
NGNG公式復活させたってホント?
0765デフォルトの名無しさん
NGNGお前がクラッカーだったって聞いたけどどうやったの?
0766デフォルトの名無しさん
NGNGおおお!!!そんな技があったとは目から鱗です。勉強になります。
ありがとうございました。
0767デフォルトの名無しさん
NGNGラ・・・ラビー・・・なのか・・・?
0768デフォルトの名無しさん
NGNG0769デフォルトの名無しさん
NGNGまぁこういうので期待に応えたレスなんて見たとき無いしな
よく頑張ったよお前は
0770デフォルトの名無しさん
NGNG/ ノ ヽ ( ノ⊂ ̄))) ̄⊃
/|ヽ (_ノ ._ ̄ 0'ヽ 0'
/ |ノ .) (_) ヽ i ( むしゃむしゃしていた。
∋ノ | /――、__ ./(∩∩) 草なら何でもよかった。
/ /| ヽ__ノ | / ./ 今はモー反芻している。
| ( | ( ’’’ | ( /
|__ヽ.L_ヽ Lヽ_ヽ
''" ""''"" "'''''" ""''"" ''" ""''"" ''" ""''"" ''" ""''"" "'''.
0771デフォルトの名無しさん
NGNGしてやると、なぜか改行コードが変換されない・・・。なぜ・・
0772デフォルトの名無しさん
NGNG「オプション」→「転送1」の「転送モード」と「アスキーモードのファイル名」の
設定を確認しる。
おそらく激しくスレ違いなので、それでダメなら、以後はソフトウェア板あたりへ。
0773デフォルトの名無しさん
NGNG0774デフォルトの名無しさん
NGNG0775デフォルトの名無しさん
NGNG0776デフォルトの名無しさん
NGNG0777デフォルトの名無しさん
NGNG' HTMLヘルプを開き、単語を検索する
dim searchword
'if WScript.Arguments.Count = 1 then
'searchword = WScript.Arguments(1)
'end if
searchword = "sleep"
set ws = WScript.CreateObject("WScript.Shell")
ws.Run "C:\Ruby\docs\rubymanjp.chm", 1, False
WScript.Sleep 100
ws.SendKeys "%n"
WScript.Sleep 100
ws.SendKeys searchword
WScript.Sleep 100
ws.SendKeys "{ENTER}"
0778デフォルトの名無しさん
NGNGスクリプト言語は詳しく無い(UNIXのBシェルとDOSのバッチファイル位)ので、
PerlとRubyはどっちが強いか分かりません。
今からはじめるならどっち?
0779デフォルトの名無しさん
NGNGあるいは仕事で使うならPerlにしとけ。
0780778
NGNG画面をちょこちょこ作れて、
クラスをふつーに記述できるスクリプト言語が欲しいなー、と思いまして。
Rubyのホームページみたら、なんか今止まってますね。
0781デフォルトの名無しさん
NGNG残念、27でした。
0782デフォルトの名無しさん
NGNGPerl5の末期に来た今始めても、腐った知識をたくさん詰め込んだころには他の言語(あるいはPerl6)が主流になってそう。
0783デフォルトの名無しさん
NGNGでも、
* delphi知っててwinのGUIもやりたい
* クラスをふつうに記述したい
ならRubyでしょ。
VCLのラッパがあるし、Perl5のクラスはひどすぎるし。
0784デフォルトの名無しさん
NGNGこれってどのくらい実用的なの?
apolloだっけ。
0785778
NGNGVCLのラッパは使わないかも。
昔はVBとDLLの組み合わせで開発したことあるけど、今はクラスの時代でしょ。
MACのアプリをRubyから操作出来たりしたら、仕事でも使いまつ。
0786デフォルトの名無しさん
NGNGどちらなりと。
0787デフォルトの名無しさん
NGNGまぁ、それでもいいと思うけどね。管理、大変そうだし
0788デフォルトの名無しさん
NGNGレシピブックに出てきた例なんですが、
レシピ 57 で、
/(.*?)\t/n って正規表現が出てくるんですけど、これって/(.*)\t/n と
どう違うんでしょうか?
なにか具体的な違い(マッチする String)などがあればおしえてください。
0789デフォルトの名無しさん
NGNG"FOO\tBAR\tBAZ" とかでマッチしてみそ。
普通はできるかぎり長い文字列にマッチしようとするんだけど、
? を付けるとマッチする最短の文字列のところでマッチをやめちゃう。
0790デフォルトの名無しさん
NGNGマッチするしないという意味ではどちらもマッチする文字列は同じ。
ただし、.*?は最短マッチ,.*は最長マッチなので、文字列のどの部分
にマッチするかは異なることがある。
% ruby -e 'a="a\tb\tc"; a.match(/(.*?)\t/n); p $1'
"a"
% ruby -e 'a="a\tb\tc"; a.match(/(.*)\t/n); p $1'
"a\tb"
0791788
NGNGなるほど。。。
ご説明と具体例ありがとうございます。
とってもよくわかりました!ありがとう!
0792デフォルトの名無しさん
NGNG最短だと".*"は必ず空列にマッチするから、
そうすると、/(.*?)ABC/は/ABC/と等しくなって意味なしのような。
最短マッチって仕様的な矛盾感じるなぁ。
0793デフォルトの名無しさん
NGNG通常の貪欲マッチに対応した非貪欲マッチなだけだ。
0795デフォルトの名無しさん
NGNG長さ 0 に対して「長い短い」を比較するのに違和感がある。
「大きい小さい」なら数学的な感じだから、「最小マッチ」なら 0 を
含んでもしっくりくるんだけど。
0796デフォルトの名無しさん
NGNGperl本で見た「最左最短」という説明がオレ的にはいちばん
わかりやすかった。
0797デフォルトの名無しさん
NGNGまるで駄目。
/(.*?)ABC/ を "123ABC" にマッチさせた場合、ヒットするのは
0("ABC")でも1("3ABC")でも2("23ABC")でもない。
おまいの思考は数学的じゃない、というか論理的じゃないよ。(・д・)
0798デフォルトの名無しさん
NGNG0799デフォルトの名無しさん
NGNGまず、なぜstatic変数にしたいか、そこからだ。
0800デフォルトの名無しさん
NGNG例えばメソッドが呼ばれた回数を記録したり、
メソッド内で複雑な計算をする場合にキャッシュしたり。
インスタンス変数でもできるけれど、そのメソッド内でしか使わない場合
メソッドローカルなスタティック変数が欲しい。
0801デフォルトの名無しさん
NGNGそのクラスのシングルトンメソッドからクラス変数を使うとか。
0802デフォルトの名無しさん
NGNGだいたい呼ばれた回数を記録したって外から観測できなきゃ意味ないのと違うか?
0803デフォルトの名無しさん
NGNGオレも同じようなレスを書こうとしたけど、
>>800にある「メソッド内キャッシュ」みたいなのは、
メソッドに属するデータなんじゃないかと思えてきた。
OO的には、メソッドオブジェクトのインスタンス変数、って感じか。
--[思い付いたけどダメな例]--
def func_with_cache(x)
name = caller(0)[0].match(/`(.*)'/)[1] #メソッド名取得
m = method(name) #メソッドオブジェクト取得
m.instance_variable_set(:@cache,{}) unless m.instance_variable_get(:@cache)
cache = m.instance_variable_get(:@cache)
unless cache[x]
cache[x] = func(x)
end
cache[x]
end
--[ダメな理由]--
def foo() end
foo1 = method(:foo)
foo2 = method(:foo)
p foo1 == foo2 #=> true
foo1.instance_variable_set(:@var,1)
p foo1 == foo2 #=> true
p foo1.instance_variable_get(:@var) #=> 1
p foo2.instance_variable_get(:@var) #=> nil <= 1 を期待してた
というか、メソッドオブジェクトの位置付けがよーわからん。
0804デフォルトの名無しさん
NGNGジェクトを返す。これを同一のオブジェクトにするには、すべての
Methodオブジェクトを覚えておかなきゃならない。
0805デフォルトの名無しさん
NGNGコンテキストを離れたキャッシュなんてナンセンス。
インスタンスから独立なら、クラス変数でも使え。
0806デフォルトの名無しさん
NGNG0807デフォルトの名無しさん
NGNG0808デフォルトの名無しさん
NGNGCVS でソース取ってこれねー。
nightly snapshot みたいなのってどっかにありましたっけ?
0809デフォルトの名無しさん
NGNGもちろん不可能じゃないが、単に必要とは思われてないだけだろう。
>>807
class Method
orig = instance_method(:method)
cache = {}
fin = cache.method(:delete).to_proc
define_method(:method) do |*args|
m = orig.bind(self).call(*args)
cache.fetch(id = m.object_id) do
ObjectSpace.define_finalizer(m, fin)
cache.store(id, m)
end
end
end
0810デフォルトの名無しさん
NGNGすぐ外のブロックだけでスコープが終わるので、クラス変数みたいに
どっかからこっそりいじられる心配からは解放されるんじゃないかと。
class A
end
catch (:foo) {
sum = 0
A.__send__(:define_method, :f) { |x| sum += x; sum }
A.__send__(:public, :f)
}
a = A.new
p a.f(10)
p a.f(10)
catchは無引数のブロックを1回だけ実行する関数として使ってる
だけです。
0811デフォルトの名無しさん
NGNG0812デフォルトの名無しさん
NGNG・HSPに関係の無い話題でスレッドを上げまくる
・HSPオフィシャルサイトの住人を名指しで誹謗中傷する
・重複スレを乱立させる
などの荒らし行為を行っています。
みんなで団結してム板のゴミどもを追い出しませんか?
【HSP関連スレ】
【皆のレイプ魔】HSP初質P25【WWEヲタ=ハゲ】
http://pc5.2ch.net/test/read.cgi/tech/1086878505/
HSP>>>>>>>>>>>>>C=糞w
http://pc5.2ch.net/test/read.cgi/tech/1071899663/
今日もどこかでHSP初心者が質問ですP19
http://pc5.2ch.net/test/read.cgi/tech/1084089079/
HSPについて
http://pc5.2ch.net/test/read.cgi/tech/1085149790/
0813キャッシュだけならば
NGNGhash = Hash.new{|h,k|
k < 0 ?
k:
h[k] = h[k-2] + h[k-1]
}
hash[0],hash[1] = 1,1
return hash
end
f = get_fib
p f[10]
0815デフォルトの名無しさん
NGNGこんなことできるんですね。
でも、びっくりしたというか、どこか心地が悪いかも。
ブロックが閉じた時点で、ライフラインが切れたように思えるからかな。
0816デフォルトの名無しさん
NGNGどうしたらセッション保持できるの?
0817デフォルトの名無しさん
NGNG0818デフォルトの名無しさん
NGNGhttp = Net::HTTP.new( ADDRESS , 443)
http.use_ssl = true
http.get2(PATH1) { |resp|
puts resp.body
}
http.get2(PATH2) { |resp|
puts resp.body
}
0819デフォルトの名無しさん
NGNGhttp.use_ssl = true
http.start {
http.get2(....) {....}
http.get2(....) {....}
}
とする
0820デフォルトの名無しさん
NGNG2つ目のget2で
/usr/lib/ruby/1.8/net/protocol.rb:199:in `sysread': SSL_read:: (OpenSSL::SSL::SSLError)
っていうエラーが出る・・・
0821デフォルトの名無しさん
NGNG0822デフォルトの名無しさん
NGNGOpenSSL: 0.9.7d-3
OS: Debian sid
0823デフォルトの名無しさん
NGNG0824デフォルトの名無しさん
NGNGウホッ
0825デフォルトの名無しさん
NGNGまあとりあえず書いてみろ
0826デフォルトの名無しさん
NGNGPythonにはループにelse節をつけられるんだけど。
http://www.python.jp/pub/doc_jp/tut/node6.html#SECTION006400000000000000000
0827デフォルトの名無しさん
NGNG% ruby -e'
(2..10).each do |n|
print n.to_s, (2..n).inject(" is in prime¥n") {|r,x|
if n != x and n % x == 0 then
break " == #{x} * #{n/x}¥n"
else
r
end
}
end
'
2 is in prime
3 is in prime
4 == 2 * 2
5 is in prime
6 == 2 * 3
7 is in prime
8 == 2 * 4
9 == 3 * 3
10 == 2 * 5
0828デフォルトの名無しさん
NGNGサンクス。
いまいち明示的じゃないのが気になるけどね…
0829デフォルトの名無しさん
NGNG良い方法がみつかりません。 gsub(/\'/,\\\')を試して
みましたが、エラーが出てしまいます。
0830デフォルトの名無しさん
NGNGString#gsub(pattern, replace) は使っちゃダメ。絶対。
String#gsub(pattern) {|matched| .... } の方を使いましょう。
puts "aa'aa'aa".gsub(/\'/) { "\\'" }
0831デフォルトの名無しさん
NGNGどうして?
そこらへんどっかにまとまってたりするの?
0832736
NGNGといっても、何故か漏れのところでも不思議な置換のされ方をする。\\' って何かあったっけ?
そういうわけで、
"aa'aa'aa".gsub(/'/) { |s| "\\'" } # => "aa\\'aa\\'aa"
だった。
0833デフォルトの名無しさん
NGNGありがとうございました。
0834830
NGNG初心者は絶対 '\' でハマるから。
もちろん、理解できてて使う分には構わないんだけど、
「どうして?」とか言ってる香具師は理解できてないはず。
リファレンスマニュアルだと「Ruby の落し穴」の「\の影響」のところとか。
0835デフォルトの名無しさん
NGNGXML を出力するのに何か定番というかおすすめツールやライブラリはありますか?
0836デフォルトの名無しさん
NGNGおまいの自信満々に乾杯
0838デフォルトの名無しさん
NGNG0839デフォルトの名無しさん
NGNG「#」とか「$」にすればよかったのにね。
0840デフォルトの名無しさん
NGNG0841デフォルトの名無しさん
NGNGクラスに to_xml というメソッドでも作って適当に生成。
0842デフォルトの名無しさん
NGNGperlよりはむしろelispでしょ。
とりあえず、subst/gsubst みたいな新しいメソッドを作って
sub/gsub から徐々に移行すれば何も傷は残らない気がする。
する価値があるかはしらん。
0843デフォルトの名無しさん
NGNGよかった気がする。
0844デフォルトの名無しさん
NGNGいや、その to_xml の中で使うのに便利なライブラリはありますか、
という質問なわけのですが・・・
皆さん手でゴリゴリ XML を書いてるんでしょうかね?
0845デフォルトの名無しさん
NGNG逆ってどういう意味で?
0846デフォルトの名無しさん
NGNG今は
gsub(pattern, replace) #=> replace の '\\' はメタ文字
gsub(pattern){replace} #=> replace の '\\' は普通の文字
なんだけど、
gsub(pattern, replace) #=> replace の '\\' は普通の文字
gsub(pattern){replace} #=> replace の '\\' はメタ文字
のほうが嵌りにくそう。
0847デフォルトの名無しさん
NGNGs.gsub!(/foo(.+)boo/) { $1.strip.downcase } があるから逆にできなかった。
ごめん、忘れて。
0848デフォルトの名無しさん
NGNG0849デフォルトの名無しさん
NGNGこういうのはいちいちブロックで書いてたらめんどくさい
0850デフォルトの名無しさん
NGNG0851デフォルトの名無しさん
NGNG0852デフォルトの名無しさん
NGNG0853デフォルトの名無しさん
NGNGフラッシュメモリにRubyのバイナリをいれて、
Rubyがインストールされてないパソコンで使うとか。。
dllとかsoとか、よくわからないけど、関係してる気がするんですが
その辺の知識がなくて、よくわかりません。
教えてください。
0854デフォルトの名無しさん
NGNGインストールって・・・
0855デフォルトの名無しさん
NGNG使える状態にすることをインストールといいます。
0856デフォルトの名無しさん
NGNG0857デフォルトの名無しさん
NGNG--enable-shared なしで作れ
ということではありませんか?
0858デフォルトの名無しさん
NGNGEnum1=1
Enum2=2
...
と根性でやるしかないですかね
0859デフォルトの名無しさん
NGNG引数のためかな?
0860デフォルトの名無しさん
NGNGとりあえずは状態を表すフラグとしてcase/whenで使いたいです。
0861デフォルトの名無しさん
NGNGmodule Enum
def define_enum(*symbols)
n = 1
symbols.each {|s| const_set(s, n); n+=1}
end
end
class C
extend Enum
define_enum(:Enum1, :Enum2)
end
2つぐらいじゃよっぽどこっちの方が面倒だが(笑)
0862デフォルトの名無しさん
NGNG直接enumをサポートしてないということすよね。了解です。
追加モジュールなしの標準で
enum(
:Enum1,
:Enum2
)
とでも書けたら使いたいけど字面がRubyっぽくないか・・・
ありがとうございます。
0863デフォルトの名無しさん
NGNG自分で正解にカスってる。
状態を表わす定数が欲しかったら、単にシンボルを使えばいい。
@state = :OPEN
case @state
when :OPEN
...
when :CLOSE
...
when :UNKNOWN
...
end
タイプミスで未定義のシンボルを使ってしまうというリスクはあるけど
0864デフォルトの名無しさん
NGNG0865デフォルトの名無しさん
NGNGuconvだと自分でコンパイルしないといけないですよね?
0866デフォルトの名無しさん
NGNG0867デフォルトの名無しさん
NGNGそれを言うなら、unkf でしょ?
環境依存になっても良いなら、iconv。
レシピブックに詳しく載ってたよん。
0868デフォルトの名無しさん
NGNGPure Ruby で utf8 へ変換するのは聞いたことないな。
uconv も unkf も iconv も lv も自分でコンパイルしなきゃダメだし、
観念して自分で uconv コンパイルしる。
0870デフォルトの名無しさん
NGNGシステム次第。
例えばLinuxなら、LD_LIBRARY_PATHとRUBYLIBを指定すればできるはず。
*BSDだとRPATHが固定されるので無理かも知れない。
Windowsなら最初から位置独立になってるのでそのまま使えるはず。
もちろんPATHを追加するのは前提。
0871デフォルトの名無しさん
NGNG> Pure Ruby で utf8 へ変換するのは聞いたことないな。
RbUconvを知らんのか?
http://www.yoshidam.net/Ruby_ja.html#rbuconv
0872865
NGNG0873デフォルトの名無しさん
NGNGスマソ。無知だった・・・
0874デフォルトの名無しさん
NGNG0875810
NGNG0876デフォルトの名無しさん
NGNGん?それは Ruby の問題?
0877デフォルトの名無しさん
NGNG<<STDIN
aaa
bbb
ccc
STDIN
while gets ...
0878デフォルトの名無しさん
NGNGaaa
bbb
ccc
STDIN
while input.gets ...
0879デフォルトの名無しさん
NGNGrequire 'stringio'
input = $debug ? StringIO.new(<<STDIN) : STDIN
かな。あるいは input.each { |line| ... } か。
0880デフォルトの名無しさん
NGNGaaa
bbb
ccc
EOM
while gets
じゃあだめだっけ?
0881デフォルトの名無しさん
NGNG0882デフォルトの名無しさん
NGNGextconf; make すると
undefined reference to `_rb_w32_fclose`
となってしまいます。これはRubyの方のものだと思うのですが
何をリンクすればいいんでしょうか?
0883デフォルトの名無しさん
NGNGruby 1.8.1 (2003-12-25) [i386-cygwin]
で試したけど駄目でした。普通に標準入力からになってしまいます。
0884デフォルトの名無しさん
NGNG$stdio は $stdin の間違い。
0885デフォルトの名無しさん
NGNG0886デフォルトの名無しさん
NGNGp $_ while gets
__END__
foo
bar
baz
0887デフォルトの名無しさん
NGNGmake -n の結果は?
0888デフォルトの名無しさん
NGNG0889デフォルトの名無しさん
NGNGruby は全ての変数がオブジェクト(インスタンス)で、
変数の代入は参照渡しなので
「メソッドに変数(インスタンス)の参照を渡して,
メソッドの中でそのインスタンスの内容を変えてもらう」が
できると思います. 実際できますね.
とろこが, 以下の code で, 変数の内容が変わってくれないのはなぜでしょうか?
Java とかと違い Integer もオブジェクトで, 参照渡しなのでできると期待していました.
しかし, 以下のメソッド inc で, 引数にもらったインスタンスの内容を変えることができませんが,
なぜでしょうか?
#--------
def inc i # Integer 型のインスタンスの参照をもらう
i += 1 # もらったインスタンスの中身を変えてしまう
end
j = 7
print j, "\n" # これは 当然 7 と表示される.
inc j
print j, "\n" # これは 8 と表示されて欲しいが, 7 と表示される.
#--------
0890889
NGNG/*--------*/
void inc(int *i){
(*i)++;
}
void main(){
int j =7;
printf("%d\n", j); /* 7 と表示される */
inc(&j);
printf("%d\n", j); /* 8 と表示される */
}
/*--------*/
上記 Ruby の inc メソッドの中の挙動ですが,
メソッド開始時は, i と j は同じインスタンスを参照しているのだと思いますが,
i += 1
を行うと, 内容が ``8''である新しい Integer 型 Object が作成され,
i は その新しいオブジェクトへを参照するようになるだけで,
元々のオブジェクト(j が参照しているオブジェクト)に変更が加わっていないように見えますが,
それは正しい認識でしょうか?
(私は, i が "+= 1" のメッセージの レシーバになると期待していました)
def inc i
i += 1
print i # 8と表示される
end
では 8 と表示されます.
また, 上記の C 言語と同じ挙動を ruby で実装するにはどうしたら良いでしょうか?
0891889
NGNG一応 こんな感じにラッパーで囲ったら
インクリメントできまた.
つまり, Integer 型のインスタンスに "+= 1" の様なメッセージを受けさせて
そのインスタンスの内容が変わってもらうことは無理なのでしょうか?
#--------
class IntWrapper
def initialize n
@i = n
end
def get
return @i
end
def set n
@i = n
end
end
def w_inc i
i.get
i.set(i.get+1)
end
j = 7
w_j = IntWrapper.new j
print w_j.get, "\n" # 7 と表示される
w_inc w_j
print w_j.get, "\n" # 8 と表示される
#--------
0892デフォルトの名無しさん
NGNGi = i + 1 って意味でしかないんだよ。
i + 1 という新しいオブジェクトを代入によって i で指し示すようにしただけ。
+= というメソッドを起動したんではない。
0893デフォルトの名無しさん
NGNGOpen3 使うと良いよ。
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Open3
でも、変換には Iconv か Uconv を使うのがおすすめ。
0894889
NGNGruby 1.8.1 (2003-12-25) [i686-linux]
0895デフォルトの名無しさん
NGNG>つまり, Integer 型のインスタンスに "+= 1" の様なメッセージを受けさせて
>そのインスタンスの内容が変わってもらうことは無理なのでしょうか?
(1)よく勘違いされるんだけど、変数それ自身はオブジェクトではない。
(2)整数オブジェクトはその値それ自身によってアイデンティティを定義されているわけ。つまり、7と8は別のオブジェクト。
ようするに
(3)内容が違うのに同じオブジェクトであるような整数は存在し得ない。
(4)変数の指すオブジェクトを弄ることは=以外では不可、なぜなら変数はオブジェクトじゃないから。
結論として
(5)Rubyに++はない。(*i)++みたいなことはできない。理由は上記(1)から(4)。
0896デフォルトの名無しさん
NGNGFixnum はそうだけど、 Bignum は違うよね?
このへんの事情ってどこかにまとめて説明してないかな?
このスレでも頻出問題だし、ここ読め、みたいなのが欲しいところ。
0897889
NGNG>つまり, Integer 型のインスタンスに "+= 1" の様なメッセージを受けさせて
>そのインスタンスの内容が変わってもらうことは無理なのでしょうか?
(1)よく勘違いされるんだけど、変数それ自身はオブジェクトではない。
(2)整数オブジェクトはその値それ自身によってアイデンティティを定義されているわけ。つまり、7と8は別のオブジェクト。
ようするに
(3)内容が違うのに同じオブジェクトであるような整数は存在し得ない。
(4)変数の指すオブジェクトを弄ることは=以外では不可、なぜなら変数はオブジェクトじゃないから。
結論として
(5)Rubyに++はない。(*i)++みたいなことはできない。理由は上記(1)から(4)。
お返事ありがとうございましたm(_ _)m
まず, 多分(1)に勘違いは無いと思います.
ここが本質の様なので, ここに勘違いがあったら話が通じなくなってしまうので
もし, 勘違いがあったらご指摘頂けると幸いです.
私の理解は,
インスタンス:メモリ上にあり実際にデータを保持している.
変数:インスタンスへの参照情報だけ. Cの様な即値は存在しない.
という感じです.
0898889
NGNG次に, (2)もかなり本質的なことのようですね.
このようなことは知りませんでした.
値が変わったら絶対に「別のインスタンスになる」のですね.
となると,「メソッドに Integer 型のインスタンスへの参照を渡して,
メソッド側でそのインスタンスの値を変えてもらう」は不可能っぽいですね...
(4)ですが, ご指摘を受けて自分のひどい勘違いに気がつきました.
"+=" はてっきり メソッドであり, Integer クラスライブラリの実装で処理しているのかと思っていました.
今 調べたところ, "+=" は 演算子( x = x + y の省略形)で, 言語仕様だったのですね_| ̄|○
(2),(3)より, = 演算子("変数の指すオブジェクトをいじる")では 絶対に不可能ですね.
理解致しました. ありがとうございましたm(_ _)m
"Integer 型も即値でない"ので何かしら方法があると期待していたのですが,
となると, 私の希望は Java のように ラッパークラスを作成する様な方法でしか解決できないのでしょうか?
0900デフォルトの名無しさん
NGNG[Ruby-list:126]によると「++を使うためだけに言語仕様としてラッパを(暗黙に)生成するのはコストが大きすぎて、やめた」みたいなことが書いてある。
0901デフォルトの名無しさん
NGNG-inc j
+j = inc j
じゃだめっすか? カコワルイ?
0902デフォルトの名無しさん
NGNG0903892
NGNG892は無視かい
0904デフォルトの名無しさん
NGNGおうよ
0905デフォルトの名無しさん
NGNG例えば関将俊氏のプロフィールは分からないけど、大きな企業が支援してくれないと惜しすぎる気がする。
趣味だからとか、これがオープンソースだからとか、それはそうなのかもしれないが、
これが正しい状況なのかはかなり謎。理想的なテクノロジが受け入れられるかは、
わからない。今から数年たったときにようやく理解されそうな気は漏れはしてるが、
クソなテクノロジ選んでソフト作る香具師がどんどん増えてる今の状況どうにかしなきゃ
いかん。
0906デフォルトの名無しさん
NGNG糞なテクノロジとは具体的に何?
某MSILとか?
0907デフォルトの名無しさん
NGNGいやぁ、それもそうだが、例えばPHPとかね
0908デフォルトの名無しさん
NGNG0909デフォルトの名無しさん
NGNGPERLのパチモンという印象しかなくて仕様すら知らないw
0910デフォルトの名無しさん
NGNG1行目に何かいたか忘れるとは、俺も老いた・・・
0911デフォルトの名無しさん
NGNG証明しているんだよな。テクノロジを選択する立場にある人が結局いかに下請けに出すかってこと
しか考えてないところに問題がある気がする。誰もが使えそうで事例がなんとなくでもあるものを選択する。
クソなプログラマ大量に使ってモノ作るより、少数でも経験豊かでソフトウェア設計に理解がある
人たちを使ったほうが安いってことに気づかないといけない。プログラマも少数精鋭で働ける場所を
しっかり選ばないといけない。
0912デフォルトの名無しさん
NGNG> プログラマも少数精鋭で働ける場所をしっかり選ばないといけない。
選べない上に自己修練する暇も与えられない可能性ありw
0913デフォルトの名無しさん
NGNGやっぱ、キソ技術作る人には後ろ盾が要ると思うんよ
KDE と Gnome の違いを見ても思うが、資金援助。これ重要
Ruby Foundation とか設立できないか
しっかりしたプログラミング言語が発展することで得する企業は探せば沢山あると思う
0914デフォルトの名無しさん
NGNG0915デフォルトの名無しさん
NGNG企業相手に延々とロビー活動する人が何人か必要になるが
そういう人材はなかなかいない。
0916デフォルトの名無しさん
NGNGいないのかな
そういうの大好きな人たくさんいると思ってた
0917デフォルトの名無しさん
NGNGるびべんだったりして。
禿しく却下。
0918デフォルトの名無しさん
NGNG早く乗せて欲しいな。ライブラリが同じなら言語仕様の優位性が際立つと思うんだけど。
正直UNIX信者(作者含めて)置いてきぼりにしてWindows上で栄えて欲しいよ。
0919デフォルトの名無しさん
NGNG0920889
NGNG>>892>>903
すみません. 見落としていました.
失礼をお詫びいたしますm(_ _)m
ご指摘の通りです. 意味分かっていませんでした(>>898参照)..
新しいオブジェクトが生成されて, その新しい方を指すようになるんですね.
ここに, 大きな勘違いが一個がありました.
今更ですが, 重要なご指摘ありがとうございます
i.plus(1) とかで,「i が指しているインスタンスの中身が変わる」メソッドでもあればまた違ったと思いますが,
>>895 の (2), (3) の理由により, 不可能っぽいですね.
>>900
了解です. では ラッパを書く手法で行きたいと思います.
>>901
すみません.
"-inc" という表現も,
"+j =" という表現も 知らない表現方法です.
今から ちょっと試してみます.
0921デフォルトの名無しさん
NGNGrubyって、”スクリプト”ってイメージが強すぎて、windows上で栄えてるところが
想像できないなー。
0922デフォルトの名無しさん
NGNGWSHが流行ってない時点でねw
しかもその存在自体ActivePerl入れたずっと後だったし(遅っ
0923889
NGNGすみません. 手元で実行してみましたが,
"syntax error"
になってしまいました. 何か基本的な知識が足りてないのかな?orz
これは,
#--------
def inc i
return1
end
j = 3
print j, "\n"
j += inc j
print j, "\n"
#--------
という 感じで「戻り値」を使用するという感じに理解してよろしいのでしょうか?
私が使用している局面が「これが戻り値になるのは, 意味的に変」なのもありましたが,
変更を加えたいインスタンスが2個以上あるとダメなので採用しませんでした.
(もちろんメソッドが配列を返してきて, 受け取り側で全部処理すれば問題ないわけですが)
0924デフォルトの名無しさん
NGNGinc j の部分を、j = inc j にしてはどうすか? という意味でした。
行頭の + とか - とかは diff -u の形式のつもりだったニダ。
0925デフォルトの名無しさん
NGNGほかの人も書いてるけどIntegerはimmutableだから
状態を変更するメソッドはありえない。
mutableなオブジェクト、たとえばArrayを使えば
似たようなことは出来なくもない。
def inc(x) x[0] += 1 end
x = [3]
p x #=> [3]
inc(x)
p x #=> [4]
0926889
NGNGすみません. しつこく i.plus() とか話題を振ってしまいましたが(笑)
immutable なので状態を変更できないのは 理解致しました.
ありがとうございます.
あぁ, 確かにラッパーを作るにしても Array でやるのがお手軽ですね.
(Array の中に入れるのも一種のラッパーと考えて)
これは 良いアドバイスをいただきました.
感謝ですm(_ _)m
0927デフォルトの名無しさん
NGNGていうか、これだけシンタックスシュガーてんこもりの言語なのに、
++だけ気に入らないのか。
0928デフォルトの名無しさん
NGNG0929デフォルトの名無しさん
NGNGへえー。そうなのかぁ。
0930889
NGNGすみません. またしても見落としていました. お返事をいただいていたのですね.
了解です. 私の理解で良かったのですね.
diff だったのか. 気がつきませんでした(^^;
>>928
>10に「1増えろ」というメッセージを送っても意味無いんですよね.
なるほど. 分かりやすいです.
++が無いことよりも, >>897の
>(2)整数オブジェクトはその値それ自身によってアイデンティティを定義されているわけ。つまり、7と8は別のオブジェクト。
が, ことの本質っぽいですね.
0931デフォルトの名無しさん
NGNG結局fixnumは効率のために即値になっていて、変数には
オブジェクトへのポインタではなくて、値+これはfixnumだという
印が入ってるだけなのよね。
0932デフォルトの名無しさん
NGNG0933デフォルトの名無しさん
NGNG0934デフォルトの名無しさん
NGNGamstd/rbparamsとかいうしょうもないパッケージに依存しない形にしてさ
0935デフォルトの名無しさん
NGNG.NETのクラスをそのまま利用したいってことだろ。
今あるクラスだけではなく将来新しいクラスが提供されても自動的に使えるようにしたいと。
0936デフォルトの名無しさん
NGNG作者がやる気ないからな>RDtool
いちおう
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/38903
を適用すればamstd非依存になるはず。
0937デフォルトの名無しさん
NGNG一体.NETの何にそんなに惹かれるのか わからん
0938デフォルトの名無しさん
NGNGなんで適用したものを配布しないのだろうか
0939デフォルトの名無しさん
NGNGバイナリも誰も、難しすぎて作れないのかどうなのか。win32版配布してないし。
Rubyの標準ドキュメント形式といわれているくせにこのていたらくぶりはなんだろうか。
0940デフォルトの名無しさん
NGNG漏れは悪くないと思うんだけど
0941デフォルトの名無しさん
NGNG分かった RDは捨てる
0942デフォルトの名無しさん
NGNGドキュメントはどんな形式で書いておくのがおすすめですか?
海外のライブラリとかだと、 Web 上にあがってるドキュメントは、
Smalltalk のクラスブラウザみたいなフレームのページになってることが多いですが、
あれも元ファイルは何か特殊な共通フォーマットで書かれてるんでしょうか?
0943デフォルトの名無しさん
NGNGRDOC
0944デフォルトの名無しさん
NGNGありがとうございます。これはいいっすね。
0945デフォルトの名無しさん
NGNGプロジェクトじゃないとほとんどやらないしね。
そういう市場を狙っていないRubyには本来不要なものかも知れないけど、
やっぱりマニアのおもちゃとしてははずせない仕様だね。
コメントとドキュメント関連の文法・仕様はそろそろ全言語統一して欲しい。
0946デフォルトの名無しさん
NGNG非現実的
無茶いうなよ
0947デフォルトの名無しさん
NGNGRDtoolのバイナリってどんなもんだ?
0948デフォルトの名無しさん
NGNG0949デフォルトの名無しさん
NGNGバイナリというのは間違いだった
raccはコンパイルいるけど、これは配布されてる。
しかし、rdtoolにmake要るってところで、どうも
最近のLinuxディストリには入ってないのも多いんじゃないかしら
0950デフォルトの名無しさん
NGNGコメント開始記号とコメント内で使うドキュメント用の
タグなり記号なりを統一すればいいだけじゃね?
それで無理が出るのってネタで作られた言語くらいだろ。
共通のツールで処理できるようになればjavadocやらRDやら再発明しなくていいし。
0951デフォルトの名無しさん
NGNG0952デフォルトの名無しさん
NGNG本気で言ってるとすればあなたはとてもおめでたい方ですね。
0953デフォルトの名無しさん
NGNG0954デフォルトの名無しさん
NGNG重要さが世間に認められれば成らんとも限らんよ。
0955デフォルトの名無しさん
NGNGRubyっぽいマクロでかなり細かく制御できるっぽい。
やべぇちょっと欲しくなってきたよ。
0956デフォルトの名無しさん
NGNG>コメントとドキュメント関連の文法・仕様はそろそろ全言語統一して欲しい。
.NETならXMLDocで統一されている上にNDoc通せばいろんなフォーマットに出力できるのにね。
相変わらずオプソプロジェクトって多様性と非効率性を混同してるよね。
0957デフォルトの名無しさん
NGNGスレ立つたびに宣伝レスするのやめれ。
0958デフォルトの名無しさん
NGNGそだねURL書いてないのはよくないよね。
RPGツクールXP体験版、ダウンロード開始!!
ttp://www.enterbrain.co.jp/digifami/index.html
『Ruby』を『RPGツクール』専用にカスタマイズ
した言語『Ruby Game Scripting System(以下、『RGSS』)』が採用
0959デフォルトの名無しさん
NGNGスレ立つたびに宣伝レスするのやめれ。
0960デフォルトの名無しさん
NGNGif "foo" =~ /bar/ ...
という行は毎回正規表現をコンパイル?してるんですか?
それとも最初に一度だけですか?
前者だとしたらオブジェクトを明示的に生成して使いまわしたほうが速くなるんですか。
0961デフォルトの名無しさん
NGNGruby -e '1000000.times do if "hoge" =~ /foo/ then end end' 0.89s user 0.05s system 104% cpu 0.898 total
% time ruby -e 'r = /foo/; 1000000.times do if "hoge" =~ r then end end'
ruby -e 'r = /foo/; 1000000.times do if "hoge" =~ r then end end' 1.06s user 0.08s system 102% cpu 1.105 total
0962デフォルトの名無しさん
NGNGよりそのまま書いたほうが速いってことになるのかな。
0963960
NGNGrubyでは最適化してくれるんですね。
コンパイラな言語で正規表現オブジェクトを毎回作ろうか
あらかじめ作って変数に代入しようか悩んでいたところで
ふと疑問に思ったので聞いてみました。
パターン文字列をキーにハッシュにオブジェクトをぶら下げておこうかな・・・
0964デフォルトの名無しさん
NGNGドキュメントの整備と、あと他の人が作ったライブラリなどの取り扱いを考え
て欲しいな、と思う。例えばRAAとか。
perlではppmがあるけど、phpにも似たものがあってこれは便利。rubyにも同じ
ような仕組みがあったら良いなと思う。pythonのライブラリやschemeならば
SRFIとか。
簡単なインストールというだけではなくて豊富なライブラリがある事で安心感
すら憶える。スクリプト言語らしい環境が整う。
オープンソースなのだから誰が資金的な援助を考える前に、そうした草の根
で作ったライブラリをもっと活用する"仕組み"が必要ではないだろうか。
>907
の意見は私は反対。phpは糞とは思わない。phpの概念はある意味stdioを介すcgiとは
異なるし特殊だから始めはこの習慣を理解するのには困難だろうけれど、
Webアプリケーションの立場からすると非常に面白いと思う。それとデータベース
との連携がとてもよい。これは宣伝(marketing?)の効果かもしれないけれど。
よくLAMP(Linux,Apache,MySQL,Php)と聞く。
php5になってからはコードはJava風にも書けるようになった。完全なオブジェクト指向になった
のでphp5では大規模なシステム開発例が出てくるかもしれない。
eRubyがphpのコンセプトに近いですね。
0965デフォルトの名無しさん
NGNGhttp://www.notwork.org/~gotoken/mag/cmagazine/gokudo/8th/
似た話としてはこのへんかな。けど 1.8 でだいぶ状況が変わった気がする。
>いつでも通用する鉄則
必見。それにせっかくの LL なんだし、我慢できる範囲の遅さは無視して
よいかと。
0966デフォルトの名無しさん
NGNGPHPがクソなのは埋め込み言語な点ではなく安易な言語仕様。
参照渡しの不完全な実装方法とか
関数名が大文字小文字区別しないとか
ファーストクラスの関数オブジェクトがないとか
配列とハッシュが混ざってるとか
行き当たりばったりで同じよーなのがいくつもある配列関連の関数群とか
可変引数関数の実装方法とか…
0967デフォルトの名無しさん
NGNG漏れもなんだよう、 Ruby で仕事してえよう・・・
0968デフォルトの名無しさん
NGNG言語が悪くても環境はよさそう。インストールも楽そうだし。
ところであまり PHP 使わないからよく知らないんだけど、
Ruby + mod_ruby + eRuby + Ruby/DBI でPHP と機能的に同等に
なれるもの?
0969デフォルトの名無しさん
NGNG24の倍数を出力した直後に改行を入れる。
それぞれの数値は4桁(あるいは空白+3桁)の幅で出力される。
for i in ????
???
end
このプログラムを教えていただけないでしょうか。。本当にわからなくて・・
0970デフォルトの名無しさん
NGNG宿題は自分でやろうな
0971デフォルトの名無しさん
NGNG0972デフォルトの名無しさん
NGNG2.24の倍数を出力した直後に改行を入れる。
3.それぞれの数値は4桁(あるいは空白+3桁)の幅で出力される。
1.だけのプログラム, 1.2.だけのプログラム。1.2.3.を満たしたプログラム
と順番に拡張しながら作っていけばいいよ。で、どこが分からないんだ?
0973デフォルトの名無しさん
NGNGdrubyで簡単にアプリケーションサーバ立てられるところがよいと思う
クラスタリングも自由自在
ウェブ層の分離ができているとテストしやすいしメンテナンスしやすい
Javaよりはるかにによいと思うよ
0974デフォルトの名無しさん
NGNG0975デフォルトの名無しさん
NGNGそれは「いい」の基準によると思うけど。
処理速度しか頭に無くない?
0976デフォルトの名無しさん
NGNG0977デフォルトの名無しさん
NGNG0978969
NGNGfor i in 1 . . 120
�@はでいいのでしょうか??
どの記号を入れればいいのかも全然わかりません・・
0979デフォルトの名無しさん
NGNG0980デフォルトの名無しさん
NGNG0981969
NGNG�A�Bの意味が全然わからないので、試しようもなくて・・
0982デフォルトの名無しさん
NGNGここは宿題スレじゃないから煽られないうちに移動した方がいい
0983デフォルトの名無しさん
NGNGお前みたいなへそ曲がりがRubyコミュニティの評判を貶めていることに気づけよ。
0984デフォルトの名無しさん
NGNGそういいながら教えないお前はちんこでも曲がってるの?
0985デフォルトの名無しさん
NGNGfor i in 1..120
printf "%4d%s", i , i%24==0 ? "\n" : ""
end
こんなんでいいのかな。
全然面白くも楽しくもないな。
0986デフォルトの名無しさん
NGNG0987969
NGNGありがとうございます。
クラスメートに質問スレでは983のように煽ると答えが出てきやすいと
教わったのですがうまくいきました。
0988デフォルトの名無しさん
NGNGfor i in [false]
a = Array.new(5) {|i| Array.new(24){|j| i*24 + j + 1 } }
s = a.map{|i| i.map{|j| '%4d' % j }.join('') }.join("¥n")
print s
end
0989969
NGNG私のせいでご迷惑かけてすいませんでした。。
0990デフォルトの名無しさん
NGNG他のスクリプト言語が既にポーティングされてるらしいけど、愛称はこっちのが良さそう
0991デフォルトの名無しさん
NGNG1. どっかの学校では Ruby で授業があるのだろうか。
2. その学校では Ruby でわざわざ for を使わせてるのだろうか。
1.だけだと羨ましいが、2.も込みならそんなでもないな。
0992デフォルトの名無しさん
NGNG0993デフォルトの名無しさん
NGNG0994デフォルトの名無しさん
NGNG0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNG0997デフォルトの名無しさん
NGNGinject を使いこなすようになればズルムケ
0998デフォルトの名無しさん
NGNGWSHとか使ったほうが良かったんじゃねーのかなw
0999デフォルトの名無しさん
NGNGどっちがどっちだかなかなか覚えられないのがつらい
1000デフォルトの名無しさん
NGNGしかし、こんなしょーもないレスでこのスレも終了か。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。