[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 03/16 20:51 / Filesize : 256 KB / Number-of Response : 901
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Ruby 初心者スレッド Part 22



1 名前:730 [2008/09/15(月) 17:25: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を読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

577 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 09:35:18 ]
そろそろ解決してる頃だろうか

>>576
require 'hoge' は カレントディレクトリの hoge.rb ファイルを読み込む
rmagick.rb (大文字小文字問わず)という自作ファイルを改名しろ

「hoge ライブラリを試そうとして hoge.rb を作って実行し、次にまた別のスクリプトを作って変なエラーにはまる」というのは
そろそろ FAQ にしてもいいと思う

578 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 09:46:44 ]
>>577
ああ、まさにそれでした。
5時間くらい悩んでの書き込みだったので、今はRMagickのマニュアルを読んでました。
有難うございました。

579 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 20:24:43 ]
文字列中のすべての"\"を"\\"に、"'"を"\'"に置きかえたいときに
gsubってものすごくつかいづらいんですけど、
なんか他にいい方法はありませんか?


580 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 21:00:31 ]
str.gsub(/['\\]/){|s|"\\#{s}"}
十分簡潔に思うが、どの辺が使いづらく感じた?

581 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 21:19:06 ]
str.gsub(/['"]/) { %Q|¥¥#{$&}| }
あたりで手を打たないか?


582 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 21:19:40 ]
遅すぎたリロード


583 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 21:42:38 ]
ブロック使わずに表現できないの?

584 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 21:45:41 ]
str.gsub(/([\\'])/, "\\\\\\1")

・・・うん、ブロックのほうがいい。

>>579-580
後方参照使わずにgsub繰り返すっていう力押しをしてた人が
ハマるパターンだろうね。

585 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 22:04:09 ]
>>580
なるほど、ブロックを使えばいいんですね。

>十分簡潔に思うが、どの辺が使いづらく感じた?
perl なら、 s/([\\'])/\\\1/; と、比較的直感的なところを
>>584 のように"\\\\\\1"と書くとバックスラッシュが多くなりすぎて
後で読みにくいと思ったわけです。




586 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 22:06:36 ]
おっと、 s/([\\'])/\\\1/g; でした。

587 名前:デフォルトの名無しさん mailto:sage [2008/10/14(火) 23:56:30 ]
str.gsub(/[\\']/, /\\\&/.source)


588 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 00:44:09 ]
Windows限定でいいんですけど、OSが32ビット版か64ビット版か調べる方法はあるでしょうか。
ENV["OS"]だと32bit版XPでも64bit版XPでも"Windows_NT"と表示されて区別が付きません。



589 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 00:51:21 ]
Ruby関係ねえええ

ENV['PROCESSOR_ARCHITECTURE'].include?('64') が true なら 64BitなCPUなのできっと 64Bit版Windows
ttp://support.microsoft.com/kb/827218/

590 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 01:06:42 ]
じゃあruby関係で
ruby -e 'p RUBY_PLATFORM'

64bit環境を持ってないのでどんな出力がされるのかは知らんけど

591 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 01:10:11 ]
RUBY_PLATFORMはコンパイル時に決まりそう

592 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 01:15:50 ]
Fixnumを地道にカウントアップしていってBignumになる境界を見つける -> そこから推定
とかそういうアホを思いついた

593 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 01:21:56 ]
64bitのOSで32bitのバイナリ使ってたら無理じゃないか

594 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 02:22:11 ]
WIN32 API の GetSystemInfo() とか呼んだら良さそうな気がする。
呼び方はあれ、dl 使うなり何なり工夫してくれと。

595 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 03:01:15 ]
Ruby の Web アプリケーションによくでてくる、

class CGI
def valid?( param, idx = 0 )
self.params[param] and self.params[param][idx] and self.params[param][idx].length > 0
end
end

というコードの著作権者、またはライセンスってわかりますか?
GPL だとしてもソースを配布する際には著作権表示が必要ですよね。

tDiary や hiki にも登場していますが、特別そういう表示がないので
勝手に使っても差し支えないんでしょうか?



596 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 03:12:41 ]
その程度の誰が書いても同じになるコードには
著作権が発生するほどの創作性はないよ。

597 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 06:11:16 ]
適当に書き換えればおk

if self.params[param]
if self.params[param][idx]
if not self.params[param][idx].size.zero?
return true
end
end
end
return false


598 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 06:42:47 ]
>>588
64bit の Windows で試していないから動いたらラッキーぐらいで

require 'Win32API'

GetCurrentProcess = Win32API.new('kernel32', 'GetCurrentProcess', 'v', 'i')
hProcess = GetCurrentProcess.call()
isWow64Process = "\0" * 4
is64BitWindows = false
begin
 IsWow64Process = Win32API.new('Kernel32', 'IsWow64Process', ['p', 'p'], 'i')
 IsWow64Process.call(hProcess, isWow64Process)
 is64bitOS = true unless isWow64Process == "\0" * 4
rescue RuntimeError
end
p is64BitWindows

599 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 07:08:01 ]
CamelCaseキモすぎる

600 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 08:10:27 ]
PascalCaseだね

601 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 08:20:52 ]
LCCだろ

さりとて、Windows の API にはハイフン区切りは似合わないのも事実

602 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 08:25:44 ]
CamelCaseは力強さを感じる

603 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 12:36:20 ]
MSは先頭大文字のCamelCase好きだよね
クラス名でもないのに何故?と違和感を感じる

604 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 14:33:09 ]
クラス名は許せるが、rubyでは_区切りとisPredicateではなくpredicate?を使ってほしい

605 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 15:06:15 ]
>>604
>isPredicateではなくpredicate?
変数に?使えたっけ



606 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 15:17:48 ]
使えないよ。
けどpredicateってことは多分604はメソッド名のつもりで言ったんだと思う

607 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 17:14:47 ]
何気に
attr_reader :hoge?
って書けないんだよな

608 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 20:37:53 ]
@hoge? がだめだからなぁ。
Module#attr_readerが再定義されていればその限りじゃないぜ
意義はないけど。

609 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 20:39:11 ]
?付きメソッドを定義したくなるのはよくあることなのに、attrで定義できないのがな・・・
自分でattr_readerを拡張するか、rubyplusのboolattr使うと便利
つーかActiveSupport辺りにも入ってそうな気がする

610 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 21:32:47 ]
?付きメソッドを自分で定義すれば済むだけなので、漏れは必要ないかなあ。

611 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 21:48:34 ]
>>610
メソッドごとに一つ一つ?付きを定義していくのって凄く面倒じゃね? 変更に弱くなるし

612 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 21:59:26 ]
?末尾のシンボルを渡されたら、メソッド名はそのままに
末尾削った変数にアクセスするっていうのも便利かもしらんね

でも真偽値のアクセサが面倒になるほど多いっていうのも
設計見直せる可能性はない?

613 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 22:29:30 ]
class Hoge
 def self.def_predicate(name)
  attr_accessor name
  private name
  private "#{name}="
  define_method("#{name}?"){ __send__(name) }
  public "#{name}?"
 end

 def_predicate :hoge
end

こんなんとか。リフレクションを用いるほど多く使うんじゃなければ
ちゃんと書いたほうがいいと思うけど

614 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 22:40:14 ]
>>611
>>612の言うように?付きメソッドをそんなに定義することあるかな?

615 名前:611 mailto:sage [2008/10/15(水) 22:43:31 ]
>>612 >>614
4〜5つ程度の?付きメソッドでも、似たような定義を続けて書くことになるからかなり面倒だと俺は思う
この辺は個人の意見もあるとは思うが



616 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 22:51:08 ]
attr はあまり使わない
メソッドはきちんと定義する

617 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 23:34:27 ]
そもそも @hoge? ができないことに疑問を感じるんだが

618 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 23:45:48 ]
だから ? つきはメソッドだっつーの述語だっつーの

data= っていう変数が作れないのは不自然か?
change! っていう変数が作れないのは不自然か?

619 名前:デフォルトの名無しさん mailto:sage [2008/10/15(水) 23:56:18 ]
@is_foo みたいな変数名をどれだけ見かけることか
変数名が述語になれないのはおかしい

620 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 00:08:25 ]
@hoge? = 123
まず見た目がきもい
そして三項演算子の文法と衝突しそう

621 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 00:08:33 ]
変数名が述語になるほうがおかしい飢餓す

622 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 00:12:41 ]
@foop か @foo_p でいい

623 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 00:14:27 ]
「○○が二者択一のどちらかか、を格納する変数」というのはあまり Ruby っぽくない
二者択一の判断自体をメソッドで参照するのがフツーな気がする

624 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 00:32:23 ]
>>620
そんなこと言ったらメソッド foo? がどんなオブジェクトも返すことのできる点もおかしくないかい?

625 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 00:36:58 ]
見た目がきもい、ってのはほんとに見たまんま、?で終わる識別子が左辺値にくるのが
きもいってことだよ。
別に @hoge? = true ならいいってことじゃない



626 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 00:41:29 ]
>>621
変数名とメソッド名の間で、言葉づかいの上でのセマンティックスが違っている「べき」なら、attr 系は廃止すべきってことになるな

>>625
@hoge? = true なら悪くないと思うけど

627 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 00:46:06 ]
やだよ。
メソッド名の慣習のせいで、「hogeっすか?」って訊いてるようなイメージがあるじゃん。>@hoge?
で、「そうっすよ」とか「違いますよ」とか返事しようとしてるところに値突っ込むってのは変な感じだ。観念的な言い方でアレだが

628 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 00:50:34 ]
何も @hoge? があってもそう書かなきゃいけないわけじゃないから、? を使わない自由を奪っているわけではないでしょ。
それよりも、attr 系によって変数名とメソッド名を関連付ける機能が提供されているにもかかわらず、? 付のメソッドだけ特例でそれができないほうが一貫性に欠けて嫌だ。

629 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 00:54:28 ]
>変数名とメソッド名を関連付ける機能
単なるメソッド。とあるリフレクションのラップなだけ。

>? 付のメソッドだけ特例でそれができない
できないのはそこじゃなくて変数名に?を付けること。
でもってこっちは処理系本体の機能の話。

パーサとかに手を入れて?付き変数を許してまで@hoge?とか書きたいか?

630 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 00:58:26 ]
そりゃ現状じゃ @hoge? が書けないようにパースしてるんだから、パーサを変えるしかないわな。
別に難しいことじゃない。
あと、attr_reader が処理系そのものが提供しているかどうかなんて関係ないじゃん。飽くまで意味論の話だし、built-inで入ってるんだから。

631 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 01:02:56 ]
だって…再定義できるもの

632 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 01:06:57 ]
>>627
メソッドvalueと変数@valueがあったとして、メソッドのほうは「valueは何か?」と問う意味なのに対して@valueはそのままの意味だよね?
同じようにhoge?がメッセージだと解釈されても、@hoge?までメッセージと解釈する必要はないのでは?

633 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 01:20:26 ]
変数名だからその通りなんだけど、あくまでイメージというか馴れや先入観の問題だよ。>@hoge?がメッセージっぽい

また別の問題として、
変数名に?が付けられて、attr系もそんな名前を受け取るとすると
hoge.foo? = true とか
hoge.bar! = false とかが出て来る。後者なんて比較の否定と見間違う。

さらにいうと、?や!を許すとして、[]とか[]=とか@-は変数名に許す? 全部メソッド名としては有効なはずだよ。
attr_accessor :foo=
-> foo.foo= = 123
こんなことになる

634 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 01:44:47 ]
hoge.foo? = true はできてもいいと思う。
hoge.foo! = ってのはまあちょっとヘンだけど、attr系で ! つけたかったことないから、あってもなくてもいいや。
[] や = が「メソッドの一部である」というのは別の側面で筋を通すための論法であって必ずしも名前の一部ではないので
(その証拠にメソッド「foo=」は、「foo.foo = 」のようにスペースを入れることができる)、
attr_accessor :foo= 等はなくてもよいかと。

635 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 01:55:24 ]
>その証拠にメソッド「foo=」は、「foo.foo = 」のようにスペースを入れることができる
いやいや、メソッド名はあくまで「foo=」だよ。__send__(:foo=, 123)とか出来る。
パーサが頑張って「foo.foo = value」を「foo.foo=(value)」と同じような扱いにしてくれているだけで。



636 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 06:05:11 ]
隔離スレでやれ

637 名前:デフォルトの名無しさん mailto:sage [2008/10/16(木) 09:41:53 ]
本スレが隔離スレってのも難儀な話だよなあ

638 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 07:15:54 ]
RDEのツールバーとコンソール窓の設定などが上手く動作してくれません
ツールバーを移動して1段にまとめたりしても、RDEを最起動すると別の位置へ
勝手に移動した状態になってしまいます
コンソール窓は、フォントの設定が初期値に戻ってしまうのと、
ctrl+alt+cで開閉したりができません

コンソール窓のフォント設定だけは致命的なんで、そこだけでもなんとかできればと

639 名前:638 mailto:sage [2008/10/21(火) 07:27:47 ]
一応環境も
ActiveScriptRuby 1.8.7(p72)
Windows XP SP3
です

640 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 14:20:14 ]
ツールバーの問題は俺の環境(XP)では何年も前からあるよ。

641 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 15:51:59 ]
てかRDE薦めてるサイトでもあるのか?
俺なら間違ってもRDEなんて使わせないんだが

642 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 15:56:44 ]
統合環境使わせるなら EclipseかNetBeansあたりじゃね?

643 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 15:58:04 ]
本筋以外での障壁が大きいからねえ…
「我慢して使う」時点で何か間違っとる
素直にエディタとプロンプトをAlt+Tabで切り替えて使うほうがマシ

644 名前:638 mailto:sage [2008/10/21(火) 17:13:53 ]
コンソール窓のフォント設定は自分のミスでした
コンソール窓で右クリして「設定」からフォントを設定していたのですが、
直ぐ上に「フォント」というのがありました… 見逃してました

>>640
どもです
ツールバーはしょうがないみたいですね

>>641-643
どもです
winの人がrubyを始めようと思うと、RDEがまず最初に目に入るような気がします
NetBeansはDLしてあったのですが、JAVAが云々…とまたやることが増えそうなので
後回しになってました
とりあえず簡単なプログラムを書いて試したかったので、RDEをという感じで
日常はEmEditorのフリー版(かなり古い)を使っていたので、それでやればよかったのですが
コマンド操作には不慣れなwin人なんで、お手軽(そう)なRDEから初めてみようと思い

初心者〜中級者?への道筋がすっぽり抜けてる感じがしていて先行き不安ですが
書いて直ぐ実行できるのはやっぱり楽しいし勉強になります

645 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 18:04:59 ]
RDEはirbと似たような感じでSandBoxとしてしか使わないなぁ。
ファイルに保存はしなきゃならんけど、EmEditorも言語モード別のキー設定と、
外部プログラムのを実行して標準出力を下窓に出す機能が(少なくともVer6からには)
備わってるから、キー1発で実行はできるよ。



646 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 18:48:59 ]
RDEはいろいろなところで紹介されてるから、知名度はかなり高いし
動作はけっこう軽くて多機能、日本語対応と利点は多い
が、不安定さ(特に文字コード関連)とレジストリ使用がそれらの魅力を帳消しにしている

647 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 19:42:48 ]
RDEを普段使ってない人がファーストインプレッションあるいは又聞きで薦めてんじゃないかと思ってる
普段から使っていれば、少なくとも初心者には勧めようとは思えないはずだ

単一言語用だからといってIDE作成が簡単になるわけではない
1種類の言語にしか対応しなくても、10種類の言語に対応してても、IDEとしての作り方は同じだと思う
Rubyに特化すればIDEが俺でも作れそうとか最初に思った人は罪深いなと思ってみる

648 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 19:58:42 ]
FreeRIDEが日本語や他の文字コードに対応してくれれば無敵なんだが

649 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 22:52:51 ]
rubyの表記法の質問なのですが、
Test::Sample
のように書かれていたら、TestとSampleはともにクラスでTestがSampleの親クラス
という認識で合ってますか?
::という記号は定数やクラス変数なども表すとネットで見たのですが
区別は付くのでしょうか?

650 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 23:13:36 ]
:: は 「の」 だ
Test::Sample は Test 「の」 Sample だ
それ以上の意味はないよ
クラスかどうかは普通に識別子で判断する
先頭が大文字なら定数かクラス
先頭が小文字かアンダースコアならメソッド
ただ、あからさまに面倒なのでメソッドを :: で繋ぐことはRubyでは意図的にしない
(他の言語での書き方をしないと死ぬ人が稀に使う)

651 名前:649 mailto:sage [2008/10/22(水) 00:09:42 ]
>>650
ありがとうございます。
そんな曖昧なものだったんですね。メソッドは#でしたっけ?
この業界っていやに自己主張強い人が多いから統一できないのかな

652 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 07:50:20 ]
RDEってRubyのサンプルプログラムとして付いているもんだと思ってた・・・

653 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 09:30:08 ]
>>651
スクリプト上での表記とマニュアルでの表記は違う

…違ってちゃいけないと思うんだが、まあ、
「○○クラスのインスタンスメソッド××を…」と書く代わりに「○○#××を…」と
「○○クラスのクラスメソッド××を…」と書く代わりに「○○.××を…」と
「○○クラスの定数××を…」と書く代わりに「○○::××を…」と書けたほうが
一度理解してしまえば便利ではある

654 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 18:04:18 ]
>>653
> スクリプト上での表記とマニュアルでの表記は違う
>
> …違ってちゃいけないと思うんだが、まあ、

とはいえ、あるクラスのインスタンスメソッドというのは、直接コード上には
現れないから、そもそも同じ表記にはしようがない。
いちいち X.new.m とか書くのもめんどくさいだろ。


655 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 20:22:05 ]
>>650
Test::Sample だったら普通はmoduleかclassがネストされてるやつじゃね?



656 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 09:59:06 ]
>649
::で示されるのは主に
・モジュール内クラス
・クラス内クラス
・モジュール内モジュール
・クラス内モジュール
・モジュールの持つ定数
・クラスの持つ定数
などであって、クラス間の親子関係ではない。
どちらかと言えば所有、もしくは所属の関係。

657 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 17:43:37 ]
Windowsなら、既に更新停止状態だがJmEditorでぜんぜんいける。
コマンドライン登録しとけば、キー一発で実行できるし、プロンプト
勝手に閉じてほしくないなら、ruby.exe実行してからpauseするバッチ
ファイル登録すればいい。

658 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 18:56:51 ]
まさかJmEditor使いが俺の他にもいたとは
動作軽いしUSBで運べるし、便利だよね

659 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 22:50:55 ]
irb とかでいっつも忘れるんだけど、NKF.guess の返り値の数字と文字エンコード名の関係ってどっかに書いてないかな?

660 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 22:57:18 ]
NKF.constants.map{|s|[NKF.const_get(s),s]}
こんな感じで出せばいいんじゃないか?

661 名前:デフォルトの名無しさん mailto:sage [2008/10/23(木) 23:42:46 ]
refeで引いてみたら出てるかと思ったが

$ refe NKF.guess
require 'nkf'
NKF.guess
--- guess(str)

文字列 str の漢字コードを判別して返します。
返される値は、NKF モジュールのモジュール定数です(下記参照)。
ruby 1.8.2 より前は現在の NKF.guess1 と同じものです。
ruby 1.8.2 以降では NKF.guess2 と同じものです。


下記参照て言われても、下記がない・・・

662 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 08:30:26 ]
.chmもちあるけば解決するお

663 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 09:07:06 ]
>>659
あれは inspect で文字列が出るべきだと思う

664 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 09:07:51 ]
>>662
書いてねえって

665 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 10:01:53 ]
>>664
キーワード:NKF.guess(str) (nkf)
でとんだページの下に定数が書いてあるけど・・・



666 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 11:02:43 ]
> NKF.guess の返り値の数字と文字エンコード名の関係

667 名前:デフォルトの名無しさん mailto:sage [2008/10/24(金) 23:52:29 ]
ああ、そりゃソース嫁としかw

668 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 13:34:31 ]
>>656
じゃあクラスの継承はどうやって表すの?

669 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 13:55:39 ]
「表しようがない」が正解かと
「XXXを継承したYYY」のように文章で書くしかないな

670 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 23:39:57 ]
Win32OLEを使ってエクセルの自動処理をしようと思っているんですがうまくいきません。

require 'rubygems'
require "win32/clipboard"
require 'win32ole'

excel = WIN32OLE.new('Excel.Application')
excel.visible = false
excel.displayAlerts = false

excel.workbooks.open 'filename' => 'foo'
workbook = excel.workbooks(1)
sheet = workbook.sheets(1)
sheet.select
excel.Columns("B:B").select
excel.selection.copy
excel.quit
↓に続く

671 名前:デフォルトの名無しさん mailto:sage [2008/10/25(土) 23:40:47 ]

class Excel
end
excel = WIN32OLE.new('Excel.Application')
WIN32OLE.const_load(excel, Excel)
excel.visible = true
excel.displayAlerts = true

book = excel.workbooks.add('bar')
sheet = book.worksheets(1)
sheet.Columns("B:B").Insert Shiftt = Excel::XlToRight

excel.Range("B1").ColumnWidth=11  #セル幅設定                       ←幅や領域が違うっていうエラーが出るのでなんとなく

excel.Columns("B:B").select
excel.selection.parent.paste

book.Save
excel.quit

エラーメッセージは以下
 `method_missing': paste (WIN32OLERuntimeError)
    OLE error code:800A03EC in Microsoft Office Excel
      Worksheet クラスの Paste プロパティを取得できません。
    HRESULT error code:0x80020009
      例外が発生しました

pastespecialなんてのも試してみてもダメ、エラーコードでググってもダメ、"ruby excel paste"などもググって見ましたがダメでした。
よろしくお願いします。

672 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 11:07:36 ]
>>670-671
Excel.Application ペースト でググるんだ
Win32OLEの情報を探すときはRubyに限定しないほうが良い
俺excel持ってないから動作検証できないけどごめんね

673 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 12:43:20 ]
関係ないけど gemで入れられる excel用のライブラリ見つけたぜ
spreadsheet-0.6.1.5 Documentation
spreadsheet.rubyforge.org/


674 名前:670-671 mailto:sage [2008/10/26(日) 17:37:00 ]
>>672-673
ありがとうございます。解決しました。

原因は貼り付ける際に列で指定していたからダメだったようで、
貼り付ける先頭セルの値をRangeで受け渡したらうまく行きました。
また上のプログラムだとちゃんと保存できないのも注意です。
開き方の問題なのか読み取り専用になっているようです。
名前を付けて保存するようにしたらちゃんと保存されました。

675 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 19:29:35 ]
掲示板スクリプトを作ってるんだけど、動かない。
どこがおかしいのかな。

使っているサーバー @pages (www4サーバー)

一応誘導を受けて来たので誘導元
□規制解除要望□ dion.ne.jp専用 Part727
ex24.2ch.net/test/read.cgi/accuse/1224841217/

スクリプトはここからダウンロードして
www4.atpages.jp/mh35jp/bbsmake.html



676 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 19:33:52 ]
excelのvlookupのようなものをrubyで書きたいのですが
遅いので速くしたいです。(元々excelのものが遅いのが発端です。)
アドバイスをいただけないでしょうか。
よろしくお願いします。

###################
想定する入力データ

1,0.25,2.25
2,0.75,1.76
3,1.24,1.24
4,1.76,0.75
5,2.25,0.25



677 名前:676 mailto:sage [2008/10/26(日) 19:34:59 ]
#676の続きです
def Vlookup(vs,v)
vx=vs.to_f
if (vx<v[0][0]) then
return -99.9
break
elsif (vx>v[v.size-1][0]) then
return 99.9
break
end
for i in 0..(v.size-1)
vpre=v[i][0]
vpst=v[i+1][0]
if (vx>vpre)&&(vx<=vpst) then
if (vpre-vx).abs<=(vpst-vx).abs then
num=i
elsif (vpre-vx).abs>(vpst-vx).abs then
num=i+1
end
break
end
end
return v[num][1]
end







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<256KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef