- 1 名前:デフォルトの名無しさん mailto:sage [2008/11/20(木) 04:30:21 ]
- プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
【Ruby1.9 は不安定な開発版であり初心者には全く向きません】 【最新安定版の Ruby1.8.7 の使用をお勧めします】 ※1.8.7 は1.8 と 1.9 の橋渡しをするためのリリースです。 1.9 の新機能の一部が利用可能なので初学者にお勧めです。 ※ただし十分安定しているとは言えないので プロダクション環境での利用にはお勧めしません。 関連スレやURLは>>2-8あたりを見てください。Ruby on Railsの質問はRailsスレへ。 ■質問する人へ 質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。 ・モジュール名やエラーメッセージでググる ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/ ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ 質問には以下を書くこと。へたくそな質問は再提出を要求される。 ・詳しい内容(「動きません」「うまくできません」では回答しようがない) ・エラーメッセージ(自力で訳さずなるべくそのままで) ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる)) ・最終的にやりたいこと(もっとよい方法がある場合が多いので) 回答してくれた人には「ありがとう」のひとことをいってあげて。 ■回答する人へ 相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。 それができないならこないこと(だって初心者スレだもん)。 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
- 673 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 20:44:50 ]
- >>660
Matlab持ってる研究室尋ね歩いて使わせてもらえ
- 674 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 21:33:35 ]
- 1.91はまだか。
- 675 名前:670 mailto:sage [2008/12/20(土) 22:26:30 ]
- Vista64を使ってるから、1.9.1最新(64bit)入れたけどgemが動かず。
1.9.0最新(64bit)入れたけど動かず。1.9.1最新(32bit)入れてようやくRailsのインストールまで終わった。 落としたバイナリのzlibがだめなのかなと思ったが、疲れたから完璧ということにした。
- 676 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 22:40:31 ]
- Vista 64ビット版で1.9.1に挑戦するとは……なんという茨の道
でもそんな根性のあるユーザーは嫌いじゃないぜ
- 677 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 22:48:29 ]
- >>676
嫌いになる可能性しかないような気がするんだが 問題切り分けできない状態でなにが勉強か
- 678 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 23:46:21 ]
- 32bitや64bitという言葉が出てくるんだから、まるっきりコンピュータの素人というわけでもなかろう。
たぶん誰も助けてやることはできないだろうけど、がんばれ。
- 679 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 09:12:31 ]
- >>673
とりあえずなんとかOctaveでテキスト形式に変換完了。 今延々回してるがかなり長くなりそうorz
- 680 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 09:35:39 ]
- そもそもRubyは学術計算には向かない
- 681 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 12:18:43 ]
- >>680
何をするかに依るが、簡単な数値計算には俺は使うよ。 一行で書いて答ポンと出す感じのコード。向いてると思う。 ちょっと入り組んでる計算(シミュレーション、微分方程式、FFT etc) だと C++ で書くけど。
- 682 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 12:34:26 ]
- 計算が多少複雑でも、コード書くことだけ考えればRubyで十分扱えると思う
むしろ問題なのは処理速度
- 683 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 12:35:45 ]
- 行列演算の結果狂ってるとかいうのなかったっけ
- 684 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 14:07:22 ]
- 学術計算にいまどきプログラミング言語か
入り組んでいる計算なら mathematicaとかmatlabのほうが向いてると思うね 簡単な計算ならlinuxについているbcが向いてる
- 685 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 14:09:34 ]
- mathematicaも立派な関数型言語搭載のプログラミング環境ですから
- 686 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 14:10:34 ]
- はいはい、「汎用の」が抜けてた抜けてた
- 687 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 14:29:33 ]
- 巨大な計算をする時はやっぱmathematicaやmatlabは遅い。
とは言え、代替物としてRubyを使うのもどうかとは思うが。
- 688 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 17:00:04 ]
- nokogiriのgemインストールが失敗します。
riの生成に失敗しているようなのですが、これはどのように対処したもんでしょうか? > gem install nokogiri Successfully installed nokogiri-1.0.7-x86-mswin32-60 1 gem installed Installing ri documentation for nokogiri-1.0.7-x86-mswin32-60... ERROR: While executing gem ... (NoMethodError) undefined method `new' for nil:NilClass > ruby -v uby 1.8.7 (2008-06-20 patchlevel 22) [i386-mswin32]
- 689 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 17:31:48 ]
- >>681
計算時間の見積もりが4日とかorz 256次元のベクトルの距離を頻繁に求めるので手間かかりすぎ。 ある1本と別の4000本との距離を求めるだけで45秒。 使ってるクラスはmatrixに入ってるVectorクラス。
- 690 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 19:55:22 ]
- >>688
$ gem install --no-ri nokogiri とりあえず。ちなみに gem help install で調べられる。 ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-mswin32] gem 1.3.1 では問題は起きなかったっす。
- 691 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 21:08:15 ]
- >>690
rdocもなんか失敗したので、これでいけました。 gem install --no-ri --no-rdoc nokogiri ありがとう。
- 692 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 21:10:09 ]
- ちょいと質問なのですが、
HTMLファイルの一部を書き換えたいのですが、 nokogiriとか使うとパースや部分的なノード置換がすごく楽なのですが、 出力すると(to_html)元のHTMLがかなり崩れてしまいます。 元のHTMLをなるべく維持したい場合はどうしたらよいものでしょうか?
- 693 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 21:13:02 ]
- 見掛けが崩れるだけで、htmlとしては大部分が同じはずだが
HTML上の改行位置や空白数なんかも維持したい場合は正規表現で置換するしかないな
- 694 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 21:19:33 ]
- フラットな処理で何とかなるならHTMLSplitとか
- 695 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 21:35:38 ]
- rubygemsのsyntaxってあんじゃん
なんていうか、マトモなCSSってどこかにない? vimやEmacsのハイライト意識したやつとか RubyとHTMLのだけあればいいんだけど あのRubyのとか酷過ぎるだろ常識的に考えて
- 696 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 21:42:02 ]
- >>693-694
レスありがとう。 なるたけ維持したかったので、頑張って正規表現でgsubしてみました。 そんなに複雑じゃなかったのでなんとかなったみたいです。 お騒がせしました
- 697 名前:デフォルトの名無しさん [2008/12/21(日) 22:03:17 ]
- for i in 1..50
hoge end の 50 を a を Array として for i in 1..(a.size) としたらだめのようでした。 aのサイズだけ for を走らせたい場合、Ruby はどうするのがよいでしょうか?
- 698 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 22:07:31 ]
- 普通はこうする。
a.size.times { |i| p a[i] }
- 699 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 22:09:38 ]
- >>697
a.each do |e| p e end Ruby では for はまず使わない
- 700 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 22:10:35 ]
- >>697
よのどのことがないかぎり、Rubyでは単純ループにforは使わないと慣習があるぞ >>698 でよいかと思う
- 701 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 22:10:50 ]
- インデックスが欲しければこう
a.each_with_index { |e, i| }
- 702 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 22:11:32 ]
- ごめん、>>699だ
- 703 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 22:13:40 ]
- a のサイズ分ループしたいけど、
a の要素を使わない時は >>698 だっしょ。 a の要素を単に順番に使いたいだけの場合は >>699 で、 a の要素とそのインデックスを両方使いたい場合は >>701 だ。
- 704 名前:デフォルトの名無しさん [2008/12/21(日) 22:17:21 ]
- >>698-701
みなさま本当にありがとうです。 for をそもそも使わないのか・・・そもそも入門からおかしかったようです。
- 705 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 22:19:16 ]
- もちろん普通はfor使わないのは分かるんだがなんで>>697が動作しないんだ?
範囲式に制限でもあるのか?
- 706 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 22:21:00 ]
- 0 オリジンじゃないから
配列にアクセスする部分で死んでるとか
- 707 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 22:23:11 ]
- そうだな
50番目の a[i] で nil の NoMethodError でも出てるのだろう
- 708 名前:705 mailto:sage [2008/12/21(日) 22:33:17 ]
- なるほど。自分も初心者だが確かにやりそうだ。
まあこういうのを防ぐ為にもforは使わないってことだな。
- 709 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 23:14:47 ]
- Rubyを書き慣れてくると、forの書き方はちょっと考えないと
思い出せないようになってくる。
- 710 名前:デフォルトの名無しさん [2008/12/21(日) 23:17:48 ]
- freezeしたHashの要素を変更するシンプルな方法はありますか?
freezeの意味ないやんってなるけど仕様変更で一か所だけ要素を変更する必要があります freezeしているクラスと同じクラス内なので影響が他のクラスに及ぶことはありません
- 711 名前:デフォルトの名無しさん mailto:sage [2008/12/21(日) 23:52:38 ]
- >>695
「酷すぎる」って言ってるのが syntax-*/data/ruby.css とかのことだったら、あれ以上のもので公開されてるのは多分ない。
- 712 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 00:08:51 ]
- >>680-687
遅レスだが(というかなぜか今日は流れ速い)、俺がよく ruby 使うのは 簡単な計算でパラメータ変えて繰り返して使う式ですぐ答が欲しいときかな。 わざわざ Mathematica とか Maple, Maxima 立ち上げる気がしない程度のもの。 あと、これらでもプログラム書けるけど個人的には ruby の coding の方が好き。 3次方程式の解レベルの複雑さ。Ruby で端末でパラメータ入力して結果 すぐ帰ってくる。bc, とかではできない。多少複雑なら C++ で書いてる。 ruby は遅いし、書き捨て的に使ってるし、mma, maple, maxima とかでも 遅すぎることも多い。
- 713 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 00:45:33 ]
- >>710
h = {:ary => [1]}.freeze # => {:ary=>[1]} h[:ary][0] = 2 p h # =>{:ary=>[2]} Hashオブジェクトをfreezeしてもその中にあるオブジェクトまでは freezeされてないから、それを直接書き換えるとか。 これ、本来はfreezeの落とし穴だから気をつけて。
- 714 名前:デフォルトの名無しさん [2008/12/22(月) 01:38:05 ]
- 要素を変更したいんですー
h = {:ary => 1}.freeze h[:ary] = 2
- 715 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 01:46:09 ]
- Are you happy?
- 716 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 02:00:18 ]
- じゃあdupしてfreezeされてないコピーに差し替えれば?
と言いたいけど別のところに参照されちゃってるんだろうなぁ。 そもそもfreezeしてるコードをいじれるならfreezeやめれば いいじゃんと思うんだけど、freezeしないといけない理由を詳しく。
- 717 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 03:08:37 ]
- 文字通り邪悪だけど、
evil-ruby gemをインストールして h.unfreeze
- 718 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 06:52:25 ]
- >>710
出来ないことはないけど、不可能と考えて別の方法を探すべきだと思われる そもそも、freezeされてるってことはそれなりの理由があるんじゃないのか?
- 719 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 10:55:22 ]
- >>710
びみょーに違うけど、こんなん(不完全だけど)をextendして freezeを遅延させるとか…? やっぱ変だな # 一箇所だけ変えたいところのキーは'hoge'決めうち module HashLasyFreeze def []=(key, val) ret = super freeze if key == 'hoge' ret end end
- 720 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 15:28:52 ]
- いくつかのサイトの更新状況を取得するプログラム組んでいるのですが、
File::statしてatimeしたいのですが、サイトで公開されているページの最終更新時間など取得する場合どのようにすればいいのでしょうか。
- 721 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 15:33:54 ]
- >>720
require 'net/http' Net::HTTP.version_1_2 Net::HTTP.start('www.example.com', 80) {|http| response = http.get('/index.html') puts response['last-modified'] } こんな感じ。
- 722 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 20:27:20 ]
- WindowsXP SP3、OneClickInstaller
デスクトップ(や他のアプリケーション上)に文字列を表示させるソフトを作りたいのですが、 それが可能なGUIツールキットってあるのでしょうか? ググってみたところ、ウィンドウの半透明化ができれば可能そうだと思ったのですが、 それが可能なツールキットを探すことができませんでした。 ご存知の方いらっしゃれば教えてください。
- 723 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 20:37:03 ]
- いわゆる付箋ソフトだな
Rubyでやるこっちゃないねえ 他のC#とかで作れるようになってからその知識を流用してRuby+GUIでやれ 95パーセントくらいRuby無関係だし
- 724 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 20:40:41 ]
- Win32OLE.rb
- 725 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 20:51:05 ]
-
def getWindowLong(hwnd, index) api = Win32API.new('user32', 'GetWindowLong', 'LL', 'L') return api.call(hwnd, index) end def setWindowLong(hwnd, index, gwl) api = Win32API.new('user32', 'SetWindowLong', 'LLL', 'L') return api.call(hwnd, index, gwl) end def setLayeredWindowAttributes(hwnd, crkey, alpha, flags) api = Win32API.new('user32', 'SetLayeredWindowAttributes', 'LLLL', 'L') return api.call(hwnd, crkey, alpha, flags) end gwl = getWindowLong(hwnd, GWL_EXSTYLE) gwl &= ~WS_EX_LAYERED gwl |= ((ratio != 100) ? WS_EX_LAYERED : 0) gwl &= ~WS_EX_TRANSPARENT gwl |= (transparent ? WS_EX_TRANSPARENT : 0) setWindowLong(hwnd, GWL_EXSTYLE, gwl) setLayeredWindowAttributes(hwnd, (ckey ? color : 0), ((255 * ratio) / 100), (LWA_ALPHA | (ckey ? LWA_COLORKEY : 0)) )
- 726 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 20:55:22 ]
- GWL_EXSTYLE = 0xFFFFFFEC
WS_EX_LAYERED = 0x00080000 WS_EX_TRANSPARENT = 0x00000020 LWA_COLORKEY = 0x00000001 LWA_ALPHA = 0x00000002
- 727 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 20:56:50 ]
- >>723
うむ、95パーセントくらいRuby無関係だな
- 728 名前:722 mailto:sage [2008/12/22(月) 21:11:41 ]
- >>724-726
レスありがとうございます。試してみます! >>723,727 既存のrubyプログラムの処理結果をデスクトップに書きたかったんです。 rubyでどう頑張ってもダメならC#覚えるつもりでした。助言ありがとうございます。
- 729 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 21:33:18 ]
- rubyで幾つかのオブジェクトを生成・初期化したかったので、
a=b=c=d=Array.new とかやったら、全部が同じオブジェクトを指してしまうという大惨事に見舞われました。 Cとかなら int a=b=c=d=0; とか書いて複数の変数の生成・初期化が問題なく行われるんですが、rubyでこれをやると 同じオブジェクトが参照されてしまうのってどうなんですか?
- 730 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 21:37:50 ]
- >>729
だってそれは初期化でもなんでもなく、単に同じオブジェクトを指すように指示してるだけだもの そのオブジェクト内容が変化すれば全部が変化するというそんだけの話 オブジェクトという考え方をRubyでは無視せんでくれ a = Array.new b = Array.new c = Array.new d = Array.new こうだな Arrayオブジェクトを生成する使い方をしてるならArray.newではなくnilでもいいかも
- 731 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 21:38:46 ]
- Cでポインタ使ったことある?
- 732 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 21:46:33 ]
- >>729
Array.newが一度しか実行されなければ、Arrayのオブジェクトは一つしか生成されない って見方もできるかと
- 733 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 21:47:27 ]
- a,b,c,d=Array.new*4
- 734 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 21:50:15 ]
- あーはいはい
>>729 Ruby は代入文も値を返す a=b=c=d=Array.new は d=Array.new c=d b=c a=b と全く同じだ a が b=c=d= を「透過して」 Array.new を起動することはない
- 735 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 21:54:50 ]
- >>730
たとえば、100個のオブジェクトを生成・初期化したいときには、 a1=Array.new a2=Array.new ・ ・ ・ a99=Array.new a100=Array.new って書かなきゃだめなの? a自体をarrayにしろと言われそうだけど、多数のオブジェクトを生成・初期化したい場合は 一行に一個書くしかないの?
- 736 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 21:56:01 ]
- そのためにもArrayを使えよw
- 737 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 21:56:46 ]
- a = Array.new(100)
a.each { |b| b = Array.new }
- 738 名前:735 mailto:sage [2008/12/22(月) 22:00:14 ]
- どうやら俺はデータ構造というものについて真剣に考えるべき時期に来たようだ。
Rubyだけですむ話ではなさそうだ。すまん。このスレからは消えることにする。
- 739 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 22:09:53 ]
- a1=Array.new
a2=Array.new ・ ・ ・ a99=Array.new a100=Array.new まじでこういうソース見たことあるよ 某上場電気メーカーのソフトウェア部門で
- 740 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 22:13:20 ]
- そいつの方が給料いっぱいもらって勝ち組みなんですね
わかります
- 741 名前:デフォルトの名無しさん mailto:sage [2008/12/22(月) 22:30:43 ]
- 1.upto(100) {|i| eval "a#{i} = Array.new" }
1.9だと外側のbindingをevalに渡す必要があったりするのかな。
- 742 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 00:30:25 ]
- >729
その文って、Cで書くとすれば int array[] = {3,4,7,2,9,1}; int *a,*b,*c,*d; a=b=c=d=array; みたいな感じでは?だからCでも全部同じ配列を指してしまうのは変わりないよ Rubyでも、Fixnum同士ならその代入でも問題は起こらん 違うのは構造体やクラスから生成した、実体同士の代入ってのがRubyに無いことかな
- 743 名前:デフォルトの名無しさん [2008/12/23(火) 02:50:57 ]
- Dir.glob("./*")
で、ディレクトリを含まないリストを得るにはどうやったら良いのでしょうか?
- 744 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 02:54:55 ]
- globは糞なのでls, dirを使いましょう
- 745 名前:デフォルトの名無しさん [2008/12/23(火) 02:59:04 ]
- なるべく機種依存のコーディングは避けたいんですが・・・
- 746 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 03:04:57 ]
- Dir.glob("*").select {|f| !File.directory?(f) }
かな。ちなみに "./" は不要。
- 747 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 03:18:27 ]
- 少しスレ違いかもしれませんが、特定のファイルをscanした時だけ
500 Internal Server Errorして落ちてしまうのですが、 タグ内で異様にスペースがやたらあるような文字列にscanすると異様に負荷がかかるとか聞いたことありませんか?
- 748 名前:デフォルトの名無しさん [2008/12/23(火) 04:40:50 ]
- >>746
なるほど。ディレクトリ判定を入れればいいのですね。ありがとうございます。
- 749 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 06:41:46 ]
- >>747
Ruby自体はHTTPのエラーを出さない それは、サーバが実行したコマンドが正規の出力をしなかったという意味しか持たないよ 原因を知りたかったら勝手な推測は止めて、その正規ではない出力が何かを調べる コマンドラインから実行すれば一発だが、どうせコマンドラインから実行できないんだろうから、スクリプト内の実行部分を begin rescue Exception => e File.open('/自分のディレクトリ/error.txt', 'w'){|f| f.print(e)} end で囲んでRubyの出す例外出力を読め
- 750 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 07:43:45 ]
- >>600
wikiみろ
- 751 名前:750 mailto:sage [2008/12/23(火) 07:44:16 ]
- 誤爆
- 752 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 08:30:59 ]
- Windowsで日本語を扱っています。
require 'jcode' $KCODE='SJIS' str = 'aあいbうえおc' 上記のような時に2文字目までを切り出したいんですが、 「str[0, 2]」では2バイト目までということになってしまいます。 下記のような冗長なやり方しか思いつかないのですが、もっとスマートなやり方はないでしょうか? jcodeのリファレンスマニュアルを見てみたのですが使えそうなものが見つかりませんでした。 i = 0 str_part = "" str.each_char do |x| str_part += x if i < 2 i += 1 end
- 753 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 08:41:38 ]
- >>752
str.split('')[0,2]*''
- 754 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 08:50:16 ]
- すごくスマートですね! Array経由とは考え付きませんでした。
- 755 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 09:18:23 ]
- strがめちゃくちゃ長くて
2文字目だけでいいときは もったいない
- 756 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 10:06:48 ]
- 配列内の数値の類似度を求めるのはどうすればいいでしょうか?
偏差なのか、相関係数なのか? スレチですかね・・・・
- 757 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 10:23:04 ]
- >>756
配列の要素にアクセスする方法はRubyだな
- 758 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 10:26:20 ]
- 「類似度」を定義しないことにはどうにも
- 759 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 10:33:02 ]
- >>756
具体例を出してみれば? じゃないと他の人にはわからん
- 760 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 10:37:29 ]
- [1, 2, 3, 4]
[16, 8, 4, 2] の二つの類似度は 100% です
- 761 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 10:51:47 ]
- >>758 さんの言うように定義の問題では。定義をすれば解き方は
いろいろある。逆に定義が無ければ何したいのかわからん。 偏差でも相関係数でも変数のタイプでも良いが。
- 762 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 10:56:24 ]
- Rubyでスマートな書き方して生産性が上がったためしがないな。
もう何年も使ってるけど相変わらず配列にデータ突っ込んで forかeachでまわしてみたいなBASICと大差ないコードしか書いてないw
- 763 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 11:02:18 ]
- >>760
なぜそれが類似度100% ?
- 764 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 11:03:27 ]
- Ruby関係ないな
- 765 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 11:04:53 ]
- そだな
計算式を持ってきてRubyでの実装方法を聞くとかなら手伝う人が出るかも 計算式の出し方そのものは知らん 教科書なり論文なり読め
- 766 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 11:19:07 ]
- Eclipse に RDT を入れて開発しています。
Ruby Explorer で、[Run as]->[Ruby Application] を選択すれば実行できるのですが、 これを、コードを編集するウインドウがアクティブな時に、キーボードショートカットで 実行する方法はないでしょうか? キー割り当てで、[Run Ruby Application] に Binding [F5] When [In Windows] もしくは [Ruby Editor]で割り当てても反応なしでした。 Eclipse のバージョンは 3.4.1 RDT は 1.1.0.200812081651NGT です。
- 767 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 11:20:22 ]
- レーベンシュタイン距離でも求めれば?
- 768 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 13:37:32 ]
- >>749
自機でやるとエラー吐かないのに、鯖で動かすと特定の文字列を含むファイルだけ 500エラー吐くですよね。テストした結果scanで100パー落ちていましたし。 でも他のファイルなら普通に鯖でも動いている点から見て、作りが悪いのではなくて特定の文字が含まれてるファイルに対してscanの処理がいように重くなったことによる、 負荷の掛かりすぎて500なのではないかと。 >>749さんの方法も含めつつindexで処理する方法に切り替えや、怪しい文字列の置き換えなど施して処理するなどの方法をやってみたいと思います。 ありがとうございました。
- 769 名前:768 mailto:sage [2008/12/23(火) 13:47:40 ]
- 今やってみた所、indexで切り出したら鯖実行で100%コケていた場所を抜けられました。
scanに比べて負荷が緩やかなんでしょうかindex。
- 770 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 14:00:56 ]
- 原因を知りたかったら勝手な推測は止めて、その正規ではない出力が何かを調べる
- 771 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 17:54:55 ]
- 130MHz駆動の組み込みマシンでrubyプログラムを走らせたら重すぎて笑った。
- 772 名前:デフォルトの名無しさん [2008/12/23(火) 18:12:34 ]
- apacheで出してるerror_logみるとか
- 773 名前:デフォルトの名無しさん mailto:sage [2008/12/23(火) 18:28:46 ]
- >>769
できるよ。 以上。 はい次の方。
|

|