1 名前: 【大吉】 mailto:sage [2009/01/01(木) 13:13:22 ] プログラミング言語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を読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
2 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 13:14:07 ] 【よくあるしつもん】 Q: いちからRubyを始める初心者向けのRuby入門書は何がおすすめでしょうか? A: プログラム作成の初心者だったら 「たのしいRuby 第2版 Rubyではじめる気軽なプログラミング」 www.amazon.co.jp/dp/4797336617/ 他の言語経験があるんだったら 「プログラミングRuby 第2版 言語編」 www.amazon.co.jp/dp/4274066428/ 「初めてのRuby」 www.amazon.co.jp/dp/4873113679/ 「Ruby Way 第2版」 www.amazon.co.jp/dp/4798115339/
3 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 13:19:01 ] ■前スレ Ruby 初心者スレッド Part 23 pc11.2ch.net/test/read.cgi/tech/1227123021/ ■関連スレ Rubyについて Part 33 pc11.2ch.net/test/read.cgi/tech/1223709050/ Rubyの宿題教えてください。2限目 pc11.2ch.net/test/read.cgi/tech/1200175247/ RubyCocoa 初心者質問【Leopardバンドル記念】 pc11.2ch.net/test/read.cgi/mac/1193373811/ 【ActiveScript】RubyをWindowsで使うスレ【GUI】 pc11.2ch.net/test/read.cgi/tech/1155031689/ デザパタ + Python/Ruby/Smalltalk part2 pc11.2ch.net/test/read.cgi/tech/1175959706/ 魁け! Ruby 1.9.X pc11.2ch.net/test/read.cgi/tech/1201603546/ Rubyについて(アンチ専用) Part003 pc11.2ch.net/test/read.cgi/tech/1207233348/ 【Ruby/SDL他】Rubyでゲーム制作・総合スレッド pc11.2ch.net/test/read.cgi/gamedev/1207069887/ 【Ruby】RubyonRailsPart6 pc11.2ch.net/test/read.cgi/php/1224838013/ 【Rails】便利なRubyGemsを共有するスレ【Hpricot】 pc11.2ch.net/test/read.cgi/tech/1216829388/
4 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 13:22:21 ] Ruby>>>>>Java pc11.2ch.net/test/read.cgi/tech/1158807229/ Rubyは難しすぎ pc11.2ch.net/test/read.cgi/tech/1156496224/ 【カルト】Ruby開発者Matz【モルモン】 pc11.2ch.net/test/read.cgi/prog/1148712641/ ■公式/非公式関連リンク Ruby Home Page www.ruby-lang.org/ja/ Rubyリファレンス(よくサーバーエラーになります) www.ruby-lang.org/ja/man/ www.ruby-doc.org/ (英語) リファレンスのHTMLヘルプ版配布 elbereth-hp.hp.infoseek.co.jp/ruby.html # Windowsで便利 Ruby FAQ ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ Programming Ruby - The Pragmatic Programmer's Guide www.ruby-doc.org/docs/ProgrammingRuby/ # 好評書籍をWebで公開中、ただし英語 逆引きRuby www.namaraii.com/rubytips/
5 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 13:23:07 ] RAA - Ruby Application Archive raa.ruby-lang.org/ RubyForge www.rubyforge.org/ # Rubyのアプリやライブラリが検索できる GitHub RubyGems gems.github.com/ github.com/ # 最近は RubyForge より GitHub が人気 日本Rubyの会 公式Wiki jp.rubyist.net/ # メニューに表示されていない埋もれた情報ページ多数 Rubyist Magazine - るびま jp.rubyist.net/magazine/ # コードレビューが好評 Ruby hotlinks 五月雨版(日記やblogのアンテナ) www.rubyist.net/~kazu/samidare/ Rubyの本一覧 www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Ruby%A4%CB%B4%D8%A4%B9%A4%EB%BD%F1%C0%D2 <rubyXML/> www.rubyxml.com/ Matzにっき(Ruby作者の日記) www.rubyist.net/~matz/
6 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 13:24:18 ] ■ちょっと前にできたWiki Ruby 初心者スレッド Hiki starlet.s145.xrea.com/ruby/hiki/ Ruby Portal ruby.morphball.net/portal/ ■プレゼンテーション Ruby会議2008 jp.rubyist.net/RubyKaigi2008/ www.nicovideo.jp/tag/rubykaigi2008 Ruby会議2007 jp.rubyist.net/RubyKaigi2007/ www.nicovideo.jp/tag/RubyKaigi2007
7 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 13:31:03 ] Cで書かれたアプリの組み込み言語としてRubyを使う方法なら ttp://eto.com/d/EmbededRuby.html XmlSimpleってライブラリがあるよ ttp://xml-simple.rubyforge.org/ Ruby による Win32OLE プログラミング ttp://www.morijp.com/masarl/homepage3.nifty.com/masarl/article/ruby-win32ole.html
8 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 15:34:51 ] . \\ ィ ─ァ 立 |了 // ┴ ∠ 」 口 | ,ィ' ̄` ー、_ ((”Y:ハMリソY ち ,ゞ-{|モュ tチ|ト. く, ,ノ⌒ヽ-、_ `tー'ゝ ワ,.イ:`イ ,.ィ'" 入 ヽ i_,,. /::::::_:ィヤ'Y::/7`ー-ゥ=、-―=ー―--y'" ,./_ゝ i Y }_ /:::イ キ/|./::/f / /| { ヤi | |ヘ、_ /:/Y ヤ"|:::| キィ、 ヤフ`ー--=、..,,__i i / | `ー' イ/Yー' /::/イ i. , i::| /::::`Y"::\ ∨. |. 変 .| >>1 .| Yモ`、_,,.=-―ー{(.>、Y i || /::::::::::::::::::::::\. ヽ } 身 .| 乙 | `ー--zー―-イノ:::::::ノ }{ ):::::::::::::::::::::::::::\ } / 部 .| 部 | /:::::::::::::::::::::::::/ リ Y:::::::::::::::::::::::::::∧ i{ノ| 部 .| 部 | /:::::::::::::::::::::::::イイT"T"T ̄| ヤー―--==;;;_::::} | 長 | 長 |  ̄ ̄" ̄`ー/7フ ̄ii ̄ii ̄iT∧ ヾ . | | |
9 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 15:38:05 ] >ruby -v ruby 1.8.6 (2007-06-07 patchlevel 36) [i386-mswin32] (1) 変数を取り消すことはできるのでしょうか? var = "somthing" (varを取り消す処理) p defined? var #=>nil (2) 手続きオブジェクトのブロックパラメーターにデフォルト値を設定する方法はあるのでしょうか? proc = lambda { |i=1| puts i } proc[2] #=>2 proc[] #=>1
10 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 16:06:45 ] DBマイグレーションでデータベースにカラムを作ろうとしましたが 以下のようなエラーが出て困っています. ** Invoke db:migrate (first_time) ** Invoke environment (first_time) ** Execute environment ** Execute db:migrate rake aborted! undefined method `each' for #<Mysql:0x351bf78> コードは次の最低限のものです class Test < ActiveRecord::Migration def self.up t.timestamp end def self.down end end どうすればいいかどうかよろしくお願いします
11 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 16:25:34 ] >>9 >(1) 変数を取り消すことはできるのでしょうか? ないんじゃないかなあ。 >(2) 手続きオブジェクトのブロックパラメーターにデフォルト値を設定する方法はあるのでしょうか? 1.8 ではできない。1.9 ではできるらしい。 obj = proc {|x=10| p x } obj.call(123) #=> 123 obj.call() #=> 10 >>10 > undefined method `each' for #<Mysql:0x351bf78> というエラーだから、PostgreSQL使おうとしているのにMysqlが使われているのが問題の原因じゃないかな。
12 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 16:57:31 ] >>11 (1)は無理だけど、(2)は1.9でできるんすね サンクス
13 名前:10 mailto:sage [2009/01/01(木) 16:57:44 ] >11 どうもです PostgreSQLをいっさい使わず mysqlのみない設定のつもりなんですが, database.yml以外に使用するDBを指定する場所があるのでしょうか? 設定を変更したい場合どこをいじればいいのでしょう... すみませんがお願いします. 現在は以下の設定 development: adapter: mysql encoding: utf8 database: dbname username: user_id password: * host: localhost test: adapter: mysql encoding: utf8 database: dbname_test username: user_id password: * host: localhost production: adapter: mysql encoding: utf8 database: dbname_production username: user_id password: * host: localhost
14 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 17:21:48 ] >>13 すまん、「PostgreSQL使おうとしている」なんてどこにも書いてなかったな。勘違いしてた。 使ってるOS名と、Railsのバージョンを書いてみるといいかもね。
15 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 17:24:18 ] 「undefined method `each' for Mysql」でぐぐると、こんなんが見つかった。 けっこう問題になってるみたいね。 ttp://plaza.rakuten.co.jp/tkrdorg/diary/200609010000/ ttp://plaza.rakuten.co.jp/tkrdorg/diary/200609040000/
16 名前:デフォルトの名無しさん mailto:sage [2009/01/01(木) 17:27:24 ] なんかMySQLのバージョンが問題らしい。 5.1はだめ、5.0.24もだめ、5.0.67だとうまくいったとか。 ttp://www.nabble.com/rake-aborted!-undefined-method-%60each'-for--%3CMysql:-td20760472.html
17 名前:10 mailto:sage [2009/01/02(金) 04:14:35 ] MySqlのバージョンを5.0.67に落とすことで正常に動作しました. >ALL ありがとうございました しかし,最新版使うから正常に動かないって... いろんな環境で使われるソフトウェアって大変だなぁ...
18 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 04:19:14 ] x.0->x.1の大バージョンアップで何か仕様が変わったかしてかみ合わなくなったんじゃない? 例えば、5.0.72なら動きそうな気配。
19 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 10:27:40 ] ネットを移動していくプログラムを動かしていると、 相手からの反応がないと(もしくはaddressにたどり着けないと?) time outでrescueに引っかかることなく、rubyプログラムが終了してしまうんですが。 そのまま次を続けるのは、どうすればいいですか。
20 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 10:32:06 ] 引数無しrescueはStandardErrorとその子クラスしか補足しないから TimeoutError( < Interrupt < Exception )が補足できない。 rescue TimeoutError rescue Interrupt rescue Exception のどれかを使う。
21 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 14:10:18 ] >>20 ありがとうございました。 助かります。
22 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 20:29:59 ] ロングIPアドレスを普通のIPアドレスに変換するライブラリってありますか?
23 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 20:33:27 ] ロングIPアドレスって何?
24 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 20:40:55 ] 自己レス。32オクテットを10進整数とみなしたモノか。 [192*2**24 + 168*2**16 + 0*2**8 + 1].pack('N').unpack('CCCC') こんなもん?
25 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 20:41:13 ] 32ビット4オクテットの間違いorz
26 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 20:41:17 ] >>23 irb(main):001:0> require 'ipaddr' => true irb(main):002:0> IPAddr.new("192.168.1.1") => #<IPAddr: IPv4:192.168.1.1/255.255.255.255> irb(main):003:0> ip1 = IPAddr.new("192.168.1.1") => #<IPAddr: IPv4:192.168.1.1/255.255.255.255> irb(main):004:0> ip1.to_i => 3232235777 ↑これです この例なら、3232235777から192.168.1.1を得たいのです 自力で計算してもいいですが、既にあるならそれを使いたいなと
27 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 20:45:49 ] 最後に .join('.') しないとな。
28 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 21:38:08 ] IPAddr.new(3232235777)
29 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 21:40:06 ] IPAddr.new_ntoh(3232235777)
30 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 21:57:59 ] new_ntohの引数はネットワークバイトオーダーのバイト配列とのこと $ truby -ripaddr -ve 'puts IPAddr.new_ntoh(3232235777)' ruby 1.9.1 (2009-01-02 patchlevel-5000 trunk 21272) [i386-darwin9.6.0] /usr/local/lib/truby/1.9.1/ipaddr.rb:104:in `ntop': undefined method `unpack' for 3232235777:Bignum (NoMethodError) from /usr/local/lib/truby/1.9.1/ipaddr.rb:96:in `new_ntoh' from -e:1:in `<main>' $ truby -ripaddr -ve 'puts IPAddr.new_ntoh([3232235777].pack("N"))' ruby 1.9.1 (2009-01-02 patchlevel-5000 trunk 21272) [i386-darwin9.6.0] 192.168.1.1 # trubyはウチのtrunk rubyの名前
31 名前:デフォルトの名無しさん mailto:sage [2009/01/02(金) 22:15:57 ] >>23-30 packを見落としていました ありがとうございました
32 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 09:10:06 ] [3232235777].pack("N") [192*2**24 + 168*2**16 + 0*2**8 + 1].pack('N').unpack('CCCC') >自力で計算してもいいですが、既にあるならそれを使いたいなと もう自力で出来てるね
33 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:13:09 ] Emacs使っていると、ruby のファイルを書いて保存すると # -*- coding: utf-8 -*- というのが勝手に先頭につくようになったのですが、やめさせることはできますか。
34 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:16:47 ] できますよ
35 名前:デフォルトの名無しさん mailto:sage [2009/01/03(土) 23:19:43 ] 1.9以降では実質的に必須になるから慣れておいた方がいいとは思うけど。
36 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 01:41:14 ] 結婚式2週間前、IPA勤務の新郎がつこうた tsushima.2ch.net/test/read.cgi/news/1230997845/ 仁義なきキンタマ ウイルス情報 Part80 changi.2ch.net/test/read.cgi/download/1229742858/546 546 :[名無し]さん(bin+cue).rar :sage :2009/01/04(日) 00:24:59 >>500 報告する時は、詳しく的確に、一部だけ報告しないでお願いね [殺人] Administrator(20081230-101522)のキンタマ.zip 2,263,376,860 09ed98f10653c3fc2555621ceeed6bc33e8f6228 [殺人] Administrator(20081230-101522)のメール.zip 59,426,579 4da9459b30eec31f58b86530dbb48d1cf86ef4be [写真集][IV] Administrator(20081230-101522)のアルバム.zip 2,205,946,474 9d87cc0e08dc0e3afd959fcead6c48d569787cee 膨大な量のファイル数キンタマ ファイル数 13508 フォルダ数2381 以前勤めてた会社の資料など多数 独立行政法人情報処理推進機構などの資料など無いと思うが 有るかも知れない、あまりにも数が有り過ぎる、メールなどは、古いものばかりメルマガなど膨大な量 個人情報などは、披露宴主席者などの住所、名前、電話、メール 数十人分しかしエロばっかり落としてるな ちなみに ハメ撮りscr 踏んだみたいね 早稲田実業学校中等部卒業 早稲田実業学校高等部卒業 早稲田大学政治経済学部政治学科卒業 卒論「知的財産権とインターネット技術」 当時の同大学理工学大学院の大川功 賞佳作を受賞 コンピュータ関連会社に入社ソフトウェア開発の仕事を経て 2005年に独立行政法人情報処理推進機構に入社 ソフトウェア・エンジニアリング・センター企画グループに配属 同グループ主任 岡田さん33歳 2009年1月19日結婚式・・・
37 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 02:10:22 ] >>34 なにこの役立たずなレス
38 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 10:24:44 ] >>37 なにこの役立たずなレス
39 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 17:38:56 ] >>38 なにこの役立たずなレス
40 名前:デフォルトの名無しさん [2009/01/04(日) 19:23:59 ] 100マス計算をするプログラムを書いてください。 プログラムがランダムに出題し、人間が100個の マスに回答を入力し、確認ボタンを押すと 全問正解なら回答にかかった時間を表示して終了。 間違った場合は間違った場所にカーソルが止まり、 別の値が入力されるまで待ちます。 横10個、縦10個の数字は各々11〜99までの乱数、 演算は +,-,x のみでよいです。 よろしくおねがいします。
41 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 19:38:58 ] >>40 Rubyの宿題教えてください。2限目 ttp://pc11.2ch.net/test/read.cgi/tech/1200175247/
42 名前:デフォルトの名無しさん mailto:sage [2009/01/04(日) 23:06:49 ] >>40 マルチだぞ。Pythonの宿題スレにも
43 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 01:23:13 ] Pythonスレはすぐ回答でたのに Rubyのスレはだれも作れてないのがワロスwww
44 名前:デフォルトの名無しさん [2009/01/05(月) 01:39:06 ] 今年って平成何年だっけ?
45 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 01:48:50 ] 煽っても何も出ませんよ
46 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 02:12:31 ] 前スレで「データとパーサを分けるのは設計の常識みたいなもの」って 書いてあったけど、なんで分けたほうがいいの? そのへん解説したサイトあったら教えてもらえないだろうか?
47 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 02:23:44 ] 前スレ見てないけど混乱するからじゃないの? スーパプログラマならごちゃ混ぜでも大丈夫だろうけど。 AWT弄ると割と楽しいな。 rubyにもjavaのAWTみたいなの欲しい。
48 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 02:44:48 ] >>46 パーザの差し替えが効かなくなるから。 だから個人用なら好きにしろって言われてたでしょ。
49 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 03:42:10 ] >>46 クラスと、クラスの生成を分離するのが いわゆるFactoryパターン こう問題を分割することで、コードの見通しが良くなり変更に強くなる
50 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 05:55:40 ] I used "-d" option to run ruby. However, following errors are occured. What is the menning? Exception `LoadError' at c:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:871 - no such file to load -- rubygems/defaults/operating_system Exception `NoMethodError' at c:/ruby/lib/ruby/1.8/rational.rb:78 - undefined method `gcd' for Rational(1, 2):Rational debug_mode
51 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 05:56:59 ] >>50 ups, sorry... note: last "debug_mode" string are output my code
52 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 05:57:31 ] > note: last "debug_mode" string are output my code note: last "debug_mode" string are output from my code
53 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 06:48:21 ] Rubyで、文字列として記述するさい、 \をエスケープしないで記述する方法はありますでしょうか? C#の @"c:\windows" みたいな機能です。
54 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 07:27:33 ] >>50 > Exception `LoadError' at c:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:871 > - no such file to load -- rubygems/defaults/operating_system It fails to execute "require 'rubygems/defaults/operating_system'" > Exception `NoMethodError' at c:/ruby/lib/ruby/1.8/rational.rb:78 > - undefined method `gcd' for Rational(1, 2):Rational You might execute a code like Rational(1, 2).gcd, but the Rational class does not have a method named gcd.
55 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 07:50:12 ] >>53 'c:\windows'
56 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 08:52:35 ] >>55 レスありがとうございます。 シングルクォートだとそのままいけるんですね。助かりました。
57 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 09:06:48 ] >>54 > It fails to execute "require 'rubygems/defaults/operating_system'" Humm.... Ignoring this exception is no problem? > > Exception `NoMethodError' at c:/ruby/lib/ruby/1.8/rational.rb:78 > > - undefined method `gcd' for Rational(1, 2):Rational > You might execute a code like Rational(1, 2).gcd, > but the Rational class does not have a method named gcd. I found "Rational::gcd" in rational.rb ... But, the error has occurred. This is why? sample code is here. ----cut here---- #!ruby -Ku puts "hello" ----cut here---- Run command "ruby -d foobar.rb" to confirm.
58 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 10:38:35 ] require 'rubygems'って重い重い言われてるけどそんなに 重くないんだな linuxのruby1.9でnokogiriでリンクを抽出して表示するだけのコードなら require 'rubygems'するのと直接nokogiriをrequireするのとで差が無かったーよ active rubyとかだと違うのかなぁ
59 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 11:07:42 ] >>58 Ruby1.8でも比較してみるんだ!
60 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 11:20:15 ] オブジェクトを外部ファイルに格納して呼び出して使うにはどうしたら良いんでしょうか。 ちなみにオブジェクトの中身は単なるファイルのパスです。 例えば、外部ファイル path.rb の中身を、 file = 'D:/hoge.txt' とします。それを別の Rubyファイル open.rb で、 open(file) と書いて開きたいのです。
61 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 11:28:57 ] >>56 一切のエスケープをしない文字列リテラルが欲しい! シングルクォート文字列だと クォート文字をエスケープすることでクォート文字自体を含ませられる よって\自身やクォート文字直前の \ はエスケープしなければならない したがって \\ と書きたい場合は \\\もしくは\\\\にしなければならず \\PC1\share\doc\text1.txt みたいなUNCパスや c:\doc\ みたいに、最後に\が付いたディレクトリ名とかで注意が必要 '\\\PC1\share\doc\text1.txt' # => \\PC1\share\doc\text1.txt 'c:\doc\\' # => c:\doc\ 実際のことろは、ruby内で完結するならば パスの区切りは / にしとけば問題ないのだけれども dirname = <<'EOS'.chomp \\PC1\share\doc\ EOS シングルクォートのヒアドキュメントだと、まったくエスケープされないが どうしても末尾に改行がつくし、ワンライナー出来ない まったくエスケープしない代わりにクォート文字が含められなくてもかまわない文字列リテラル希望 %b!もじれつ! みたいのだとクォート文字を変えられるのでクォート自体は記述できなくてもいいんだけど
62 名前:デフォルトの名無しさん [2009/01/05(月) 12:15:45 ] なんという国際的なスレッド。。あっぱれ!
63 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 14:13:45 ] >>61 ワンライナーするだけなら%s記法でto_sするとか? 個人的には改行無視のバックスラッシュって使ったことないから %qをバックスラッシュ記法無効にするぐらいでもかまわないけど ハマる人はいるんだろうぁ。
64 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 15:03:49 ] C# の s = @"hogemage"; みたいなの?
65 名前:デフォルトの名無しさん [2009/01/05(月) 15:09:25 ] cygwinにruby・rubygems・rails(1.2.6)・sqlite3-rubyを入れています。 データベースにアクセス(例えばrake db:migrate)すると、↓のようなWarningが表示されます。 /home/***/depot/config/boot.rb:20:Warning: Gem::SourceIndex#search support for String patterns is deprecated Warningが出る原因、対処法などあればご教授下さい。
66 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 15:24:16 ] 2年前ぐらいのlinux環境で動いてたrubyのスクリプトを動かしたい 最新のrubyでは動かなかった 2年前だとバージョンいくつぐらいだといいのかな
67 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 15:27:57 ] >>60 何がしたいのか良く分からんが文面通りに解釈すると ---open.rb--- require 'path.rb' open(file)
68 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 15:32:00 ] >61 hoge=%(\\PC1\share\doc\text1.txt) fuga=%(c:\doc\)
69 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 15:33:06 ] >>66 1.6
70 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 15:43:15 ] >>68 >ruby -ve "puts %(\\PC1\share\doc\text1.txt)" ruby 1.8.6 (2007-09-24 patchlevel 111) [i386-mswin32] \PC1 haredoc ext1.txt 1.9の話?
71 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 15:58:35 ] >>67 できました。ありがとうございます。
72 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 16:07:45 ] >>65 cygwinでrailsなんて無理だからやめとけ。
73 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 20:09:17 ] >>67 それだとうまくいかないんじゃない? path.rb には file = 'D:/hoge.txt' と書かれてあるから、変数fileはローカル変数だよね? require 'path.rb' しても、ローカル変数は path.rb の中だけで有効で、open.rb からは参照できないと思う。 解決策としては、fileじゃなくて$fileにするとか? >>71 なんでこれでうまくいくの?
74 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 20:13:16 ] >>73 www.ruby-lang.org/ja/man/html/_CAD1BFF4A4C8C4EABFF4.html#a.a5.ed.a1.bc.a5.ab.a5.eb.ca.d1.bf.f4 >トップレベルのローカル変数はプログラムの終了まで
75 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 21:50:33 ] >>74 げげ、しらんかった。さんくす。
76 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 21:51:20 ] >>57 Humm... It's kinda odd. It may be that the instalation of Ruby was failed??
77 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 21:55:39 ] トップレベルのローカル変数はファイル内に閉じてるよ
78 名前:デフォルトの名無しさん [2009/01/05(月) 22:09:21 ] なんという国際的なスレッド。。あっぱれ!!
79 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 22:12:31 ] Railsで "fooBarBaz" を "foo_bar_baz" に変換するメソッドって何ですか。 あと後学のために知りたいんですけど、こういう場合って何をキーワードにしてぐぐればいいでしょうか。
80 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 22:27:51 ] >>79 "キャメルケース アンダースコア rails" でググったら、それらしいのが一番上にでてきたYO! Rails 使ってないんで、よく分からんが。 recorder.komasui.org/conventions-of-ruby-on-rails#l16
81 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 22:39:03 ] >>63 書きたいのは、連続したバックスラッシュと 末尾のバックスラッシュだから それでもだめなんですよ >>64 そんな感じのが欲しい C#の @"hogehoge" だと 唯一 "" が "になるっていうエスケープのみが効くようで バックスラッシュは全部そのままになる Windowsのパスや正規表現を書くには必要だったのでしょうね C#環境をインストールしてないので、マニュアル見ただけだけですが Pythonの raw文字列とか三連クォートのraw文字列はかなり理想的なのかも? と思って調べたら 末尾にバックスラッシュが書けなかった Win版Inkscapeに付いてた2.5.1なんですけど r"""ほげほげ\""" はNGで文字列が閉じない かといって r"""ほげほげ\"""" # => ほげほげ\" マニュアル見たら raw 文字列を奇数個連なったバックスラッシュで終わらせることはできません と書いてありました
82 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 22:41:55 ] C# だと @"foo\bar\dirname\" でもおkなのは良いよね Matzパクってくれないかしら
83 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 22:43:14 ] >>80 ありがとう!
84 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 22:47:21 ] >>79 調べ方の一例 $ irb -ractive_support irb> String.ancestors => [String, ActiveSupport::CoreExtensions::String::Multibyte, ActiveSupport::CoreExtensions::String::Behavior, ActiveSupport::CoreExtensions::String::Filters, ActiveSupport::CoreExtensions::String::Conversions, ActiveSupport::CoreExtensions::String::Access, ActiveSupport::CoreExtensions::String::Inflections, Enumerable, Comparable, Object, ActiveSupport::Dependencies::Loadable, Base64::Deprecated, Base64, Kernel] このうち、目的のメソッドはInflections(語形変化)の中にある。 irb> ActiveSupport::CoreExtensions::String::Inflections.instance_methods => ["titleize", "constantize", "singularize", "classify", "demodulize", "underscore", "titlecase", "foreign_key", "tableize", "humanize", "pluralize", "camelize", "camelcase", "parameterize", "dasherize"] irb> "fooBarBaz".underscore => "foo_bar_baz"
85 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 22:49:45 ] あ。 gemで入れたactive_supportが、-rubygemsがなくても動いているのは ~/.irbrcでrequireしてるからデス… 適当に自分の環境にあわせてね。
86 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 23:40:09 ] irb(main):005:0> puts %(\\samba\test\hoge"mage") \samba esthoge"mage" だめっぽいっすね・・・
87 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 23:43:55 ] Rubyだと ファイルパスは / でかくだろJK、というのもわかるんですが ちょっとしたファイルパスのコピペでも/に置換が必要だったり、 win32のプログラムに渡すのにパスが / じゃ通らなケースが多々あったり 細かいところで不便なところがあるんですよね・・・。
88 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 23:45:21 ] >>57 Ok. I see. I will re-install ruby programs. Thanks all. Best regards,
89 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 23:46:16 ] ups.. s/>>57 />>76 /
90 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 23:53:39 ] >r"""ほげほげ\""" はNGで文字列が閉じない >かといって >r"""ほげほげ\"""" # => ほげほげ\" r"""\"ほげほげ""" # => \"ほげほげ r"""ほげ\\ほげ""" # => ほげ\ほげ >C# だと @"foo\bar\dirname\" でもおkなのは良いよね >Matzパクってくれないかしら いちどVBのマニュアル見るといいよ
91 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 00:06:50 ] > いちどVBのマニュアル見るといいよ なぜVBが出てくるのかさっぱりだが とりあえずどの辺を読めばいいのかkwsk
92 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 00:37:24 ] 何で最後に \ が来るような文字列が必要なの? 最後が \ の時はディレクトリ、みたいな判断でもしてるとか?
93 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 01:06:33 ] ライブラリ(Rubyで書かれたかどうかは問わない)が そういう文字列を欲しがることは結構ある。
94 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 01:15:43 ] てかなんでwindowsのパス区切りは\なんだ? \\にしたりしなかったり一体どれだけの混乱を強いていると思ってるんだ
95 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 01:22:45 ] +がエンコードできないですけど、どうやればいいでしょうか。 p URI.escape("+") 結果 "+" ってなっちゃうですけど。
96 名前:デフォルトの名無しさん [2009/01/06(火) 01:50:29 ] >>95 + って空白文字を表すんじゃないの?
97 名前:96 [2009/01/06(火) 01:54:14 ] ごめんうそ。
98 名前:デフォルトの名無しさん [2009/01/06(火) 01:54:26 ]
99 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 02:10:52 ] >>95 URI.escapeはURIの中に出てきたらおかしいものだけをエスケープする。 +はURIの中に入っていても全く問題ないのでエスケープされない。 +をエンコードしたいなら、CGI.escapeを使えばおk。
100 名前:デフォルトの名無しさん [2009/01/06(火) 02:19:22 ] _ /,.ァ、\ ( ノo o ) ) R )ヽ ◎/(. F (/.(・)(・)\ . C (/| x |\) 嫁 //\\ . (/ \)
101 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 02:21:07 ] >>99 御解答ありがとうございます。 うまくできました。
102 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 02:25:01 ] かなり初歩なんですけど、配列、ハッシュ、構造体をどのように使い分ければいいでしょうか? Rubyに限ったことではないですけども・・・・。
103 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 02:25:49 ] >>94 MS-DOSはCじゃなくてBasicで書かれていたから バックスラッシュでエスケープの問題は無かった
104 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 02:29:29 ] >>102 用途によって使い分ける 想像付かなければとりあえずアルゴリズム辞典とかでも読んでください
105 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 02:44:20 ] >>102 www.codelogy.org/archives/2007/10/post_4.html 簡単な奴なら配列やハッシュテーブルを構造体代わり使えばいいけど、 他人に渡したり、再度使おうとするときには構造体を使った方がいいんじゃないかな? struct使うまでのプログラムかいたことねーけど
106 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 06:06:35 ] >>87 pathnameのWindows正式対応版が出てくれれば一番良いんだけどなー pathname2は他の外部ライブラリに依存してたりするし >>102 基本的には「臨機応変に」としか言えない 俺の場合、ハッシュはどうしても必要な時以外には使わないようにしている 間違ったキーを使っても、エラーが出なくて困ることがあるし
107 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 10:05:36 ] >>94 パス区切りが\でコマンドオプションが/なのは、VMS由来。
108 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 10:34:33 ] >>107 まじで? CP/M由来だと思ってたんだが
109 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 11:34:19 ] >>107 VMSはディレクトリを[]でくくり、区切りは '.' 相対パス [.foo.bar.baz]filename.ext 絶対パス [foo.bar.baz]filename.ext
110 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 11:38:59 ] CP/M にはディレクトリないだろ
111 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 12:16:41 ] CP/M++ DQN
112 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 12:29:20 ] >>109 command.comがこれをお手本にしてるから。 h50146.www5.hp.com/products/software/oe/openvms/manual/v82-1/html/DEBUG/DOCU_052.HTM#122_usingsymbolsandoperat
113 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 13:05:14 ] DOS は CP/M を元にして作った(参考にした?) CP/M はコマンドオプション指定に"/"を使ったので DOS もそうなった んで、ディレクトリを実装する時に"/"を使えないので"﹨"を使った というのが、普通に聞く説だと思うが
114 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 14:17:20 ] しかし「MS-DOSはCじゃなくてBasicで書かれていたから」には吹いた。 ちなみに最初はフルアセンブラです。
115 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 14:29:45 ] イメージで言いたいことはわからんでもないがぬ
116 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 17:37:08 ] 0終端じゃなくて$終端だったような
117 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 17:57:59 ] >>116 それはファンクションコール9番の特殊仕様。 たしかキルドールが「その仕様の理由をゲイツに訊いてみな、答えられないから」と 言ってるという話を読んだ記憶がある。ソース忘れた。
118 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 18:14:47 ] >>117 俺もその話聞いたことがある。 同じくソース忘れたけど。
119 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 21:19:49 ] スレ眺めてたら自分の質問が初歩的過ぎて申し訳ないんですが、質問です。 [23,6,58,345]みたいな配列をコピペしてgetsなどで入力させるとき、 "[23,6,58,345]"となってしまって、これ自体が1つのオブジェクトとして認知されてしまうのですが、 23,6,58,345のように4つのオブジェクトとして一度に認識させる方法はあるのですか?
120 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 21:23:04 ] eval でも他所様からの入力はevalしたら死ねるので注意
121 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 21:24:23 ] ありがとうございます 早速ためして見ます
122 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 22:06:48 ] >>120 おかげで完成しました。 ありがとうございます!
123 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 22:58:42 ] >>120 他所様の入力をevalの前に正規表現で (\[[\d\,]+\]) とかしてからevalしても死ぬ?
124 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 23:02:02 ] >>123 入力がその正規表現に限定できるならそれでもいいんじゃない?
125 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 23:02:24 ] >>123 安全と確信できるパターンなら大丈夫いいのだが、 そのパターンだと [,,,,,,,] みたいなのを受け入れてしまわんか? あと、$SAFEおよびtaint/untaintについても調べておくとよい。
126 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 23:05:03 ] >>123 数値だけなら自分でscanとかsplitととかした方が安心な気がする
127 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 23:40:58 ] inspect な記述を数値か文字列のどちらかの配列かハッシュに変換するライブラリとか作ったら それなりに人気が出ると思う
128 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 23:45:14 ] >>127 こういうことじゃなくて? eval({5 => 8.5, :a => 'b'}.inspect)
129 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 23:48:03 ] 今回の記法に限れば YAML.load('[1, 2, 3]') => [1, 2, 3] とかもありかな。
130 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 23:50:36 ] JSONやYAMLとしてパースしてもいいんじゃない?
131 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 00:03:16 ] "[-1,0,1,2,3]".scan(/-?\d+/).map(&:to_i) こんな感じでいいんじゃなかろうか
132 名前:デフォルトの名無しさん [2009/01/07(水) 01:43:30 ] インスタンス変数の値を、GDBMを使ってDBへ書き込みがしたくて こんな風に記述した。 GDBM.open(dbfile, 0644, GDBM::NEWDB){|db| line = @number, "," ,@name, "," ,@age, "," ,@address, "," ,@tel, "," ,@grade, "," ,@department, "\n" db[@number] = line } db[@number] = lineの部分で in `[]=': can't convert Array into String (TypeError) とエラーが出力される。 授業ではインスタンス変数の値ではなく、 CSVファイルから読み込み→DBファイルへ登録としてて、 カンマ区切りのデータならそのままDBへ書き込めるのかと解釈 したんだがそこから間違ってるのか…orz 長文スマソ
133 名前:デフォルトの名無しさん [2009/01/07(水) 01:44:45 ] >>132 sage忘れた…ゴメンorz
134 名前:デフォルトの名無しさん [2009/01/07(水) 01:48:28 ] いや、質問者はむしろageろ
135 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 01:58:50 ] >>132 >line = @number, "," ,@name, "," ,@age, "," ,@address, "," ,@tel, "," ,@grade, "," ,@department, "\n" これは多重代入の怪しいルールでlineには配列が入るんだ で,多分GDBMには文字列しか保存できないからこんなことになってる だからインスタンス変数の値が全部文字列なら+でつなげるといいと思う
136 名前:デフォルトの名無しさん [2009/01/07(水) 02:11:51 ] >>135 試したら先ほどのエラーは消えました! でも + でつなげるってことはカンマ区切りなしの文字列しか DBへ書き込みできないってことになりますか?
137 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 02:14:36 ] line=@number + "," + @name + "," + (以下略 こうだよこう
138 名前:デフォルトの名無しさん [2009/01/07(水) 02:17:09 ] >>137 素で勘違いしてましたorz そして出来ました! 助かりました…ありがとうございました!
139 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 06:41:18 ] 勉強用なら、一旦配列にして結合用文字でjoinするのがスクリプトとしてもわかりやすいんじゃね、と思うぞ data = [@number, @name, @age, @address, @tel, @grade, @department] GDBM.open(dbfile, 0644, GDBM::NEWDB){|db| db[data[0]] = data.join(',') } この場合はDBから読むときには data = db[no].split(',') とかして取り出す 結合用文字はカンマを選んだが、インスタンス変数の中に存在しない文字なら @ でも # でも ^ でも何でもいい
140 名前:デフォルトの名無しさん [2009/01/07(水) 13:54:35 ] '\0' がマジおすすめ
141 名前:デフォルトの名無しさん [2009/01/07(水) 15:09:26 ] >>139 ,140 重ね重ねありがとう! おかげで課題出来そう
142 名前:デフォルトの名無しさん [2009/01/07(水) 18:37:38 ] >>132 の者です DB関連の問題は解決したんですが、 s1 = Student.new(引数) s2 = Student.new(引数) とインスタンスを生成した場合、Studentクラスのクラスメソッド内で 引数の値を判断してインスタンスを返す(s1とs2どちらのインスタンスなのか判断して返す) という処理は出来ますか?
143 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 18:45:53 ] >>142 そのコードの目的も含めてもうちょっと詳しく
144 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 18:50:54 ] そのクラス名は正直どうよと思わなくもない 生徒のもつ個人情報という意味ならふつーに StudentData とかでいいじゃんね >>142 回答は 「クラスメソッドは @@hoge 形式のクラス変数が読めるので インスタンスメソッドの中(今回はinitializeの中)で先頭に@を2つつけたクラス変数に値を入れておけばOK」 だけど、たぶんクラスメソッドの使い方間違ってる でも、間違ってるということが自覚できるのはずっと先なのでまずはどんどん変な構造のスクリプト作れ
145 名前:デフォルトの名無しさん [2009/01/07(水) 18:53:04 ] >>143 課題で学生クラスを生成する課題があって、 ・パラメータ7つ保持(これを引数にして渡してる、7つすべて文字列) ・学生クラスのインスタンス1つは、学生1人を表す ・クラスメソッドfindによって、文字列が一致する引数を持つ 学生インスタンスを取得できること 与えられた条件はこんな感じです
146 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 18:56:00 ] 宿題スレ向けではあるね Rubyの宿題教えてください。2限目 pc11.2ch.net/test/read.cgi/tech/1200175247/ このスレの連中は基本ヒマで、宿題スレも見てる人はいるから答はもらえるとは思うが
147 名前:デフォルトの名無しさん [2009/01/07(水) 18:59:20 ] >>146 課題では他にも色々条件が与えられていて、 他の部分はほぼ実装できてるんだけど 向こうでは>>145 みたいな部分的なこと聞いてもおkなんですか?
148 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:06:08 ] むしろこの初心者スレが、前提条件とか無関係な部分的なことを聞くスレだと思う クラスメソッドというのは、クラスで定義されたメソッドとかそういう意味ではなくて、たとえば見かけで言うと Student.find で動作するタイプのメソッドということでいいのだよね? s1.find s2.find find で動くタイプのメソッドを指してるつもりの言葉ではないのだよね?
149 名前:デフォルトの名無しさん [2009/01/07(水) 19:08:33 ] >>148 Student.findの方です 言葉足らずですみません…
150 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:12:31 ] インスタンスを引数にとるユーティリティなメソッドとしてクラスメソッドにまとめろという課題にも思えるけど、違うんだろうな >>149 Student.find の引数には具体的にどんなものを指定するのが妥当で、 それによってメソッドの返り値としてどんなものが返ってくるべきだと思う?
151 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:14:23 ] class Student @@list = {} attr_reader :name def initialize(name) @name = name @@list[name] = self end def Student.find(name) @@list[name] end end Student.new("foo") puts Student.find("foo").name こんな感じか。
152 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:18:07 ] >>151 initialize の引数はたぶん7つだと思うよ っていうか、それだと個々のインスタンス生成する意味がねえ
153 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:20:39 ] >それだと個々のインスタンス生成する意味がねえ でも課題の内容からすると、まさにその方法を想定してるんだよな、たぶん…
154 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:20:41 ] >>152 そこまで面倒見る気はないw クラスが自分のインスタンスのサーチをするサンプルを示しただけ。
155 名前:デフォルトの名無しさん [2009/01/07(水) 19:24:07 ] >>154 サンプルありがとうございます。 でも最終的に欲しい値は>>142 でいう"s1"か"s2"なんですorz
156 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:31:20 ] >>155 ( ゚Д゚)<えっ インスタンスを入れた変数の名前を文字列として知ってどうするの? まさかevalするわけじゃないよね。 >>151 で s1 = Student.new("foo") としたあとに p s1 p Student.find("foo") このふたつが等しくなるんだけど、それでも変数名が必要? (Class.newやStruct.newは代入した変数名に依存した処理をしてるけど あれってスクリプトレベルでできたっけ?)
157 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:36:22 ] >>155 >>150 に答えて これがしっかりしてないと外部の人間はメソッドが作れないよ 課題の一部だっていうんだから、きっとfindメソッドを他のどこかで使うんじゃないかい?
158 名前:デフォルトの名無しさん [2009/01/07(水) 19:39:55 ] s1 = Student.new(引数7つ) s2 = Student.new(引数7つ) s3 = (ry Student.find("引数に対して検索文字列") # ↑ここで検索文字列を引数に持つのがs1〜s3のどれか判定 s●.他の処理 としたかったんです… 最初からこう聞いてれば良かったですねorz
159 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:43:34 ] >>158 じゃあもうひとつ その find メソッドを作ろうと決めたのはもしかしてあなた自身? 「Studentクラスのインスタンスの集団から該当するモノを抽出する」というのが本来必要な処理だったりしない? そのために必要だと「あなたが思ったもの」が、「Student クラスにあるべきだと考えた find メソッド」だったりしない?
160 名前:デフォルトの名無しさん [2009/01/07(水) 19:45:01 ] >>157 見落としてましたorz 返ってくるべき…ということは>>158 に示したのが答えでは ダメですよね?;
161 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:45:46 ] >>158 selfっていうのはnewされたオブジェクト本体で そのあとに代入される変数の中身そのものだから s = Student.find("引数に対して検索文字列") s.他の処理 これでいい。変数名は知る必要がない。 s1をひっぱりだす検索をすれば、sの中身はs1と合致する。
162 名前:デフォルトの名無しさん [2009/01/07(水) 19:47:09 ] >>159 findメソッドを作るというのは課題の条件です
163 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 19:57:42 ] >>162 こういうのは、ふつーに作ると、こういう処理になる s1 = Student.new(arg1) s2 = Student.new(arg2) s3 = Student.new(arg3) ... students = [s1, s2, s3, ...] hit = students.find{|s| s.name = 'なまえ'} と書きかけて、ちょっと思う もしかして、データの検索って>>132 みたいなDBで行う?
164 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 20:03:25 ] 質問者は名前に一貫したレス番入れてくれないか カオスすぎる
165 名前:デフォルトの名無しさん [2009/01/07(水) 20:03:32 ] >>163 >>161 で出来ました! レスくださった皆様、長々とすみませんでしたorz
166 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 20:18:19 ] まさに初心者スレだな。 エスパー衆、おつ
167 名前:初心者 mailto:sage [2009/01/07(水) 22:26:54 ] rubyで画像サイトを巡回して画像を保存したいです よろしくおねがいします
168 名前:初心者 mailto:sage [2009/01/07(水) 22:27:33 ] 失礼しました。 環境はシグウィンです
169 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 22:28:49 ] コマンドラインで動作するWebクローラをシェルスクリプト的にRubyで制御するのが近道です ゼロまたはイチから作ることもできるけれど、おそらくそのための知識は無いことでしょう
170 名前:デフォルトの名無しさん [2009/01/07(水) 22:31:35 ] >>169 それだっ(・∀・)!
171 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 22:31:58 ] >>169 そういや、完全初心者だった4年くらい前の頃に作った画像フェッチャは中でwgetが動いてるな いいかげん書き換えたいんだが、問題なく動作してるし別にいいか、みたいな HTMLとHTTP(と、情緒的Webサーバ管理)に関する知識がないと作れないからねえ
172 名前:初心者 mailto:sage [2009/01/07(水) 22:33:33 ] ユーザエージェントとかクッキーを使わなくてはいけなくて なおかつ画像URLがリンクになっていないので自前で 解析しなくてはいけないのですが、クローラ的なものは使えますか? wgetで挑戦したのですがサーバにはねられました。 ちなみにC++はプロです。
173 名前:デフォルトの名無しさん [2009/01/07(水) 22:35:11 ] >ちなみにC++はプロです。 ならドキュメント嫁、で終了。
174 名前:初心者 mailto:sage [2009/01/07(水) 22:37:22 ] >>173 Rubyは変なキツネの漫画を読んだだけなので どういうモジュールがあるのかとか、どういう作りにすれば いいのかとかわけわかめです
175 名前:初心者 mailto:sage [2009/01/07(水) 22:39:50 ] Net::HTTPなるモジュールがぐぐれたので使ってみようと思います。
176 名前:初心者 mailto:sage [2009/01/07(水) 22:43:01 ] Net::HTTP.version_1_2 # おまじない Net::HTTP.start('www.yahoo.co.jp', 80) {|http| response = http.get('/index.html') puts response.body } これでなんかアクセスできたっぽいのですが、 構文が意味不明です。 解説きぼんぬ
177 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 22:43:53 ] open-uri使えば。
178 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 22:46:20 ] Mechanizeというのがある。 Hpricotとopen-uriで満足したから使ったことないんだけれど。
179 名前:デフォルトの名無しさん [2009/01/07(水) 22:46:37 ] ほんとうにC++のプロなの?
180 名前:初心者 mailto:sage [2009/01/07(水) 22:49:30 ] なるほど、open-uriもつ変えそうですね ありがとうです
181 名前:初心者 mailto:sage [2009/01/07(水) 22:52:52 ] ブロック付きメソッド呼び出しという構文があるんですね 新しい言語は刺激的です
182 名前:デフォルトの名無しさん [2009/01/07(水) 22:54:46 ] そっからかよw
183 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 22:55:20 ] >>178 ちゃんとリンクになってるならMechanizeも楽だけどね。 Mechanizeのメソッドを上書きして、 取得してきたHTML書き換えてリンクにしてからパースさせるという手もできそう。
184 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 22:58:41 ] http://で始まって.jpgとか.pngとか.gifとかで終わる文字列探すとかでも それなりになんとかなりそうなならなそうな
185 名前:初心者 mailto:sage [2009/01/07(水) 23:07:24 ] open-uriではStringIOオブジェクトが渡されて・・・ StringIOの中味をダンプ松本したいのですが printメソッド読んでもなにも表示されないです
186 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:08:36 ] IOはとりあえずreadだ
187 名前:初心者 mailto:sage [2009/01/07(水) 23:13:56 ] >>186 ありがとうございます。 print f.read でいけました。
188 名前:初心者 mailto:sage [2009/01/07(水) 23:16:57 ] 処々でみかける p って組み込み関数なんですね。 これはちょっと受け入れがたい衝撃でした。 タイプ量減らすためでしょうかね
189 名前:初心者 mailto:sage [2009/01/07(水) 23:25:10 ] ハ・・・ッシュ??
190 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:25:44 ] p はデバッグ用の出力関数。 タイプ量を減らすためなのは確実。
191 名前:デフォルトの名無しさん [2009/01/07(水) 23:31:51 ] >>189 連想配列のこと。と言えばいいのかな。
192 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:33:18 ] まとめサイトのurl渡すと画像DLしてzipに固めるってのを以前作ったなぁ
193 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:33:58 ] 根拠がないくせに「確実」だってさwwwwww 開発者がpって打ったとき冷蔵庫にザッハトルテがあることを思い出して食べてたら うっかり忘れちゃってたのが今でもそのままになってるに決まってるんだぜ
194 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:35:29 ] だから外部プログラムのwget使え wgetを使ったこともないような人間はそもそもまともなものを作れない Webブラウザを使ったことのない人間がWebブラウザを作れるか?
195 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:37:23 ] 最初のwebブラウザを作った人はどうしたんだ
196 名前:初心者 mailto:sage [2009/01/07(水) 23:38:12 ] std::map の特殊版みたいなもんですね > ハッシュ metaにレスポンスヘッダが格納されているはず・・・ でもSet-Cookieが見つからない・・・
197 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:40:31 ] >>195 通信に必要な仕様を読んだ 他人に聞かないと作れないってことは、仕様の知識がないということ 仕様の知識がないのなら、他人が作ったお着せのプログラムを使い倒すことから始めるべき それで不満が出てきてから勉強を始めても遅くはない
198 名前:初心者 mailto:sage [2009/01/07(水) 23:42:12 ] f.meta.each_key { |key| p key } でみたら"set-cookie"で入ってました。。。 ブロックつきなんたら構文、便利ですね
199 名前:デフォルトの名無しさん [2009/01/07(水) 23:42:36 ] >>193 根拠がないくせに 「決まってるんだぜ」 ____ /_ノ ヽ、_\ ミ ミ ミ o゚((●)) ((●))゚o ミ ミ ミ <だっておwww /⌒)⌒)⌒. ::::::⌒(__人__)⌒:::\ /⌒)⌒)⌒) | / / / |r┬-| | (⌒)/ / / // | :::::::::::(⌒) | | | / ゝ :::::::::::/ | ノ | | | \ / ) / ヽ / `ー'´ ヽ / / | | l||l 从人 l||l l||l 从人 l||l ヽ -一''''''"~~``'ー--、 -一'''''''ー-、 ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒))
200 名前:デフォルトの名無しさん [2009/01/07(水) 23:48:16 ] >最初のwebブラウザを作った人 だれだっけ 事務クラーク?
201 名前:初心者 mailto:sage [2009/01/07(水) 23:48:55 ] グローバルスコープで変数宣言したいのですが、 cookie だけだとundefined local variableとか怒られて cookie = '' だと通ったのですが、Why?
202 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:49:30 ] アラン・ケイ
203 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:53:54 ] >>201 ruby-lang.org/ja/man/
204 名前:デフォルトの名無しさん [2009/01/07(水) 23:54:16 ] >>200 ティム・バーナーズ・リー氏だと思う。
205 名前:デフォルトの名無しさん mailto:sage [2009/01/07(水) 23:55:51 ] undefined local variableすら読めないのにC++ではプロって あまりに恥ずかしい 仕事して金もらってれば一応プロではあるが、実力はアマチュア未満じゃないか
206 名前:204 [2009/01/07(水) 23:56:13 ] いや、彼はHTTP、URL、HTMLの設計だけかもしれない。。。
207 名前:204 [2009/01/07(水) 23:58:16 ] いや、あってた。 # 1990年11月 - ティム・バーナーズ=リーが最初のWebサーバとウェブブラウザを試作する。 # 1991年2月 - バーナーズ=リーが開発したウェブブラウザであるWorldWideWebをインターネットに公開する。 ja.wikipedia.org/wiki/%E3%82%A6%E3%82%A7%E3%83%96%E3%83%96%E3%83%A9%E3%82%A6%E3%82%B6#.E6.AD.B4.E5.8F.B2 >>205 釣りじゃねーの?
208 名前:初心者 mailto:sage [2009/01/08(木) 00:11:06 ] >>205 Rubyでは未初期化での変数定義は許されないんですか? C/C++では許されるので、そのあたりに疑問を抱いただけですが・・・ ちなみに私の書いたプログラムのユーザは全世界で数千万単位です。
209 名前:初心者 mailto:sage [2009/01/08(木) 00:19:47 ] Cookie偽装でむふふ画像のありかをしめすhtmlの取得まで たどりつけました。 みなさまのご指導のおかげです。 画像取得&Zip化は明日にします。 どうもありがとうございました。
210 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 00:29:39 ] >>197 >他人に聞かないと作れないってことは、仕様の知識がないということ >仕様の知識がないのなら、他人が作ったお着せのプログラムを使い倒すことから始めるべき >それで不満が出てきてから勉強を始めても遅くはない 仕様の知識がないのはRubyについてで、 wgetとかHTTPの仕様には詳しそうじゃん。 wgetがRubyで実装されてるっていうなら別だが。 てかお前の読解力がなさすぎ
211 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 00:39:45 ] 他の言語経験があるなら、仕様については人に聞かなくても ドキュメント読めばいいだけの話じゃん。 仕様を理解するのが面倒だから人に聞いたのかも知れないけど。
212 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 01:20:21 ] wgetよりcurlを使ってください
213 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 01:26:49 ] そうそう連番jpgを落すならcurlに限る
214 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 02:33:53 ] Hpricotでsearchした要素から再度searchするにはどうすればいいでしょうか? class Blog def chk_aaa(site) content = Array.new site.search("div.AAA").each { |entry| content << entry.to_s.toutf8 } return content end end site = Hpricot(open("hogehoge.net ").read) aaa =Blog.new.chk_aaa(site) 上ので言えばdiv.AAAの中にdiv.BBBという要素があるときに aaaからsearchするにはどうすればいいでしょうか?
215 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 02:37:07 ] >>214 entry.search
216 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 02:38:23 ] 質問の意図がわからなくなってきた。こっちかも? site.search("div.AAA").search("div.BBB").each
217 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 02:48:00 ] >>215-216 すいません。 やりたいのはaaa.search("div.BBB")なのです。 しかし、aaa.searchするにはaaaはArrayなので それをまたHpricotに投げないといけないのかなとおもいまして・・・。
218 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 07:03:39 ] そんなとこでメソッド分けるなよめんどいからさ p でいろいろ表示してみるとわかるが、Hpricot の構造は ・ parse でパースした最初のHTML … Hpricot::Doc ・ 条件などで抽出されたタグ単体 … Hpricot::Elem ・ 条件で抽出された複数のタグ … Hpricot::Elememts になってる。で、search や at は Hpricot::Elem にも Hpricot::Elememts にも定義されてるから、 search や at をし続ける限りにおいて、メソッドチェーンは途切れない。 ということで、「chk_aaa の返り値を Hpricot::Elememts のままにしておく」が正解。 Hpricot のオブジェクトを文字列にするのは検索や抽出操作が完全に終わった最後の最後に行う。 それまでは「○○タグを表すオブジェクト(が複数詰まった配列互換の何か)」として扱うのが楽。 class Blog def chk_aaa(doc) return doc.search("div.AAA") end def pick_BBB(doc) return doc.search('div.BBB') end end doc = Hpricot(open("example.com ").read) aaa =Blog.new.chk_aaa(site) puts "aaaの最初は #{aaa[0].inner_html} だよー" # ← たとえば画面表示時に文字列にする bbb = aaa.pick_BBB(aaa)
219 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 07:08:37 ] で、aaaが途中でどーしても必要でないのなら、 class Blog def pick_BBB(doc) return doc.search('div.AAA').search('div.BBB') end end doc = Hpricot(open("example.com ")) bbb = Blog.new.pick_BBB(doc) とかしてくっつけてしまう、または、もしCSSセレクタの記法を勉強できるなら class Blog def pick_BBB(doc) return doc.search('div.AAA div.BBB') end end doc = Hpricot(open("example.com ")) bbb = Blog.new.pick_BBB(doc) としてしまうのがコンパクトだとは思う。aaa が途中で必要なのなら仕方ないけれど。
220 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 07:55:32 ] ああっ、ヒマだから正月中の遣り取り読んでたらなんかヒドいのがっ >>99 > URI.escapeはURIの中に出てきたらおかしいものだけをエスケープする。 > +はURIの中に入っていても全く問題ないのでエスケープされない。 という妥当な流れから、 > +をエンコードしたいなら、CGI.escapeを使えばおk。 なんでこういう結論になるんだよ。っていうか最初にこれ言い始めた奴誰よ出てこいやオラ >>95 URI.escape には2番目の引数がある。以下マニュアル > URI.escape(str[, unsafe]) > URI 文字列をエンコードした文字列を返します。 > unsafe には、URI として指定できない文字を正規表現か文字列で指定します。 ということで require 'uri' url = 'www.google.com/search?hl=ja&q=Ruby+on+Rails&lr= ' p URI.escape(url).to_s p URI.escape(url,'+').to_s とすると "www.google.com/search?hl=ja&q=Ruby+on+Rails&lr= " "www.google.com/search?hl=ja&q=Ruby%2Bon%2BRails&lr= " になる。CGIのエスケープはURIエスケープの代わりにはできないから、これにすべき。
221 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 08:04:54 ] 御説ごもっともだが、それだと URI::UNSAFE が消えるぞ irb> puts URI.escape('example.com/q= ねこだいすき', '+').to_s example.com/q= ねこだいすき irb> puts URI.escape('example.com/q=cat だいすき', Regexp.union(URI::UNSAFE, /\+/)).to_s example.com/q=cat%20%E3%81%A0%E3%81%84%E3%81%99%E3%81%8D うーん、めんどくさいっすな
222 名前:デフォルトの名無しさん [2009/01/08(木) 14:03:24 ] #!/usr/bin/ruby -Ku require 'jcode' s = '平成21年1月1日~平成21年12月31日' p s.split('〜') s = '平成21年1月1日~平成21年12月31日' p s.split('~') なんですが、全角の〜では分割できない? ruby 1.8.6 (2008-03-03 patchlevel 114)です。
223 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 14:12:30 ] ruby 1.8.6 (2008-03-03 patchlevel 114) [universal-darwin9.0] ["平成21年1月1日", "平成21年12月31日"] ["平成21年1月1日", "平成21年12月31日"] できたよ。 Unicodeの全角チルダ(FULLWIDTH TILDE)と波ダッシュ(WAVE DASH)の区別が どーのこーのという問題だろうか。
224 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 14:22:44 ] ・ スクリプトが UTF-8 ではない ・ 2バイト文字…ああ、Unicode だから2とは限らないのか…の正規表現には u をつける p s.split(/〜/u) というのはどうだろ
225 名前:222 [2009/01/08(木) 14:45:13 ] >>223 >>224 サンクス p s.split(/〜/u)でうまくいった
226 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 21:28:38 ] >>218-219 ありがとうございました. やりたいことはブログタイトルや個々のエントリを構造体に入れて,構造体.エントリ.searchのようにしたかったので aaaが発生するようになりました. まず,returnのさいにHpricot::Elementsで返すようにして修正していこうと思います.
227 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 22:00:20 ] 226がhpricotのこと言ってるからついでに href内にcat_xxxxx.htmlがあるaの要素をsearchするにはa[*=cat_]だけでOK? これでやるといらないところまでついてくるんだよな
228 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 23:30:43 ] Rubyの調べ方について質問です 例えば blog.codezine.jp/editor/2007/10/rubyhpricot.php を読んでいると (doc/:h1).each do |h1| のような表記が出ます これについて自力で調べたいのですが、Googleは記号類を無視するようで これが何かわからないと調べることができません そのようなときに、皆様はどう調べていますか? この例だと、/:h1って何だとかです h1はHTMLのタグなのは判りますが、なぜ文字列として""で囲まないのか また each do |h1|の|h1|は何だとか これは例ですが、Rubyを最近使い始めてこういうところで困っています 何かいい方法があればご教授下さい
229 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 23:38:23 ] Google先生の性癖はよくわからんが、俺だったら Ruby "/:" みたいにクォーテーションで括るかな。
230 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 23:40:51 ] : はシンボルを表すやつで、 / は除算演算子をオーバーロードしたものじゃないのか? /: で一塊じゃないはずだ。 まあ、普通はリファレンスマニュアルの索引で調べるよ。
231 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 23:44:36 ] Rubyを始めたばかりでhpricot使っちゃったのが不幸の始まりとしか
232 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 23:44:40 ] ここでの/はHpricotのメソッドだね。 searchの別名だ。 最近始めたばかりというならもう少し基礎やる時間を作ればいいと思う。
233 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 23:44:59 ] (doc/:h1).each do |h1| の場合、 doc →Hpricot::Doc のインスタンス / →docのインスタンスメソッド(/演算子の多重定義) :h1 →/ の第2引数であるシンボル |h1| →eachに与えられたブロックの単なる引数の名前 と、まず構文の要素を正しく認識しなきゃいかんね。
234 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 23:50:34 ] >>228 はCSSセレクタやXPathをRubyマニュアルで調べるに一票
235 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 23:51:24 ] ソース追うのに慣れてなければ irb 上で実行して, それぞれの変数にどんなオブジェクトが入ってるのか調べるのも大事 p object.class p object みたいな感じで まあわかる人ならソース追うのが一番だけど
236 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 23:54:22 ] >>234 うわああああああ説明めんどくさああああ >>231 がそのまんまだな
237 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 23:55:18 ] >>228 ぐぐる以前に、そのページのコードの前にある参考ページに全部 書いてあるじゃん。 一般論としてということであれば、やっぱりぐぐる以前にリファレンスなり 入門なりを読むべきでしょう。
238 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 00:17:42 ] XP SP3、Ruby 1.8.6、エクセル2003使用者で、WIN32OLEを使ったプログラムを書いてるんですが、 エクセル操作の命令をメソッドの定義内で書いたときにエクセルのメソッド名?に空白が 含まれているものだとエラーが出てうまく動きません。 例: def hoge excel.Sheets(2).Select end は正しく動くのですが、 def fuga excel.Sheets(2).Move After = excel.Sheets(1) end は"Move After"の"Move"と"After"の間に空白が入っているために ”dynamic constant assignment”というエラーが出てしまいます。 スペースをなくしたりするとこのエラーは消えますが、当然他のエラーが出ます。。 おそらく空白があるために後ろの"After"を定数と認識しているのではないかと思うんですが、どうなのでしょうか? 色々なエクセルのメソッドを自作のメソッドに定義して呼び出して一度に実行、みたいなことをさせたいと思っているんですが 文法上メソッドの定義内でこういったエクセルのメソッドを定義するのは無理なのでしょうか? 何かうまい解決策がありましたらご教授お願いします。
239 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 00:32:02 ] >>238 > おそらく空白があるために後ろの"After"を定数と認識しているのではないかと思うんですが、どうなのでしょうか? その通り スペース含んでたりしてRubyがメソッド名としてうまくパースしてくれないときは Object#send を使うといい excel.Sheets(2).send('Move After') = excel.Sheets(1) ただWIN32OLEでExcel使ったことないから動作確認はしてない
240 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 00:37:19 ] おなじくExcelは詳しくなくて申し訳ないが MoveがメソッドでAfterは引数だって情報が引っ掛かったのよ ()でくくってみるってのはどう?
241 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 00:39:38 ] win32oleは使ったことないが多分invoke使うべきだろう ttp://doc.loveruby.net/refm/api/view/method/WIN32OLE/i/invoke
242 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 00:42:06 ] >>229 でも>>228 の該当部分の構文要素を分解すると、 「doc」「/」「:h1」なんだよな……。
243 名前:238 mailto:sage [2009/01/09(金) 01:07:01 ] >>239 助言ありがとうございます。 教えていただいた方法を試してみたのですがダメでした・・・ syntax error, unexpected '=', expecting kEND excel.Sheets(2).send('Move After') = excel.Sheets(1) >>240 助言ありがとうございます。 Move(After)ってことですよね。こちらも同様にダメでした。。 syntax error, unexpected '=', expecting kEND excel.Sheets(2).Move(After) = excel.Sheets(1) >>241 助言ありがとうございます。 これも同様にダメでした・・・orz syntax error, unexpected '=', expecting kEND
244 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 01:10:32 ] そもそもメソッドの返り値に代入なんかできないからね
245 名前:238 mailto:sage [2009/01/09(金) 01:13:01 ] すみません、>>243 に書き忘れていましたが、 >>241 excel.invoke('Sheets(2).Move After') =excel.Sheets(1) excel.Sheets(2).invoke('Move After') =excel.Sheets(1) excel.Sheets(2).Move.invoke('After') = excel.Sheets(1) と試してみましたがすべて下記のエラーでした。 syntax error, unexpected '=', expecting kEND
246 名前:227 mailto:sage [2009/01/09(金) 01:17:37 ] わかりにくかったかもしれないから再度。 たとえば blog.livedoor.jp/techblog/ ここのカテゴリの部分の要素を抜き取りたいのです。 div.entry-categoryで抜き出せばいいのですけど、複数あった場合はだめで、 複数あった時の共通するのはURLにcat_xxxxx.htmlとなります。 ので、hrefにcat_があればその要素を抜き出したいのですが・・・
247 名前:227 mailto:sage [2009/01/09(金) 01:20:36 ] わかりにくいかもしれませんね。 <a href="example.com/test/cat_1234.html> カテゴリ</a> <a href="example.com/test/cat_5678.html> カテゴリ2</a> のカテゴリ、カテゴリ2を抜き出したいです。
248 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 01:23:08 ] あーVBにキーワード引数が有ってそれをそのまま書こうとしてハマってるのか 多分こうだ excel.Sheets(2).Move("After" => excel.Sheets(1) ) ttp://homepage1.nifty.com/markey/ruby/win32ole/win32ole05.html
249 名前:初心者 mailto:sage [2009/01/09(金) 01:28:42 ] >>247 inner_htmlでおkです
250 名前:227 mailto:sage [2009/01/09(金) 01:31:10 ] >>249 inner_textだとカテゴリ,カテゴリ2と抜き出せるのですがね。 URLにcat_を含むaタグのinner_textを抜き出したいのです。
251 名前:238 mailto:sage [2009/01/09(金) 01:32:54 ] >>248 出来ました! ありがとうございます!! なるほど、そんな書き方があったんですね。 これで他のキーワード引数付きのメソッドも問題なく使えそうです。 本当にありがとうございましたm(_ _)m
252 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 01:33:11 ] a要素を全部取ってきてselectすれば?
253 名前:228 mailto:sage [2009/01/09(金) 01:44:46 ] みなさま、ありがとうございます >>229 クオーテーションでくくっても、その場合Rubyのみの検索と同じです Javaのように、やたら長いAPIだとぐぐると一発で出てくるのですが >>230 >>232 オーバーロードだったのですね リファレンスは見てみましたが、該当するものを見つけられませんでした お手数をおかけしました >>231 そうかも知れませんが、mechanizeを使うことが結構大きなモチベーションでした >>233 丁寧にありがとうございます |h1|はここに限らずよく使う構文ですので何となく判るのですが 一例として、これも調べるのに苦労したことがあります 使うだけなら、黙って書き写せばいいのだけど、欲張ると急に難しくなる >>234 ありがとうございます、CSSセレクタとかは詳しくはないものの別件で調べてみました >>235 mechanizeは結構複雑で苦労していますが、よくやっています >>237 ごもっともですが、こういうとき普通はどう調べるのかなと疑問に感じました Rubyは便利な機能が多いのですが、他人のコードを見て何をしているのか 今のところ自分の理解を超えているものが多く、読み解くヒントが欲しかったのです
254 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 02:03:14 ] >>227 XPathで //a[contains(@href, "cat_")] という風に指定すれば意図している要素が得られる が,HpricotのXPath対応がお粗末だから(少くとも手元のHpricotでは)うまくいかない そこで,>>252 が言うように search('a').select{|a| /cat_/ =~ a['href']}.map{|a| a.inner_text} みたいな感じでごまかしとけばいいんじゃない? まあ,nokogiri使えばXPathでうまくいくかもね
255 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 02:28:09 ] ソース見て分からないってのは基礎が出来てないからだと思うから、 詳細な解説付きの本でも読む事を勧める。 いちいちソースの解説求めてたら、答えるほうも大変だし飽きるでしょ。自分で調べて苦労してないからすぐ忘れて何度も同じ事訊くだろうし。
256 名前:227 mailto:sage [2009/01/09(金) 02:29:12 ] >>252 ,>>254 ありがとうございます。 search('a').select{|a| /cat_/ =~ a['href']}.map{|a| a.inner_text} でやりたいことができました。 XPATHの方はnokogiriいれてやってみます!
257 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 03:29:21 ] 自分のサイトのアドレスを取得する方法ってりあますか。 直にURL記述している部分があって、サーバ変えた際に色々と書き換えなどめんどうなので、 この部分をプログラムが今動いているサーバ(サイトURL)アドレスを取得して使ってくれるようにしたいのですが。
258 名前:227 mailto:sage [2009/01/09(金) 04:45:41 ] 何度もすいません。 div.abcかdiv.efgがある場合に抽出するにはsearch("div.abc||div.efg")でよいのでしょうか? それかsearch("div.abc")がnilになった時にsearch("div.efg")するように分岐させればよいのでしょうか? いまいち論理演算の使い土器がわからないです。
259 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 04:49:38 ] >257 その方法を考える前に「直にURLを記述」するのを1回だけにするのはどうよ。 コードの頭の辺りで定数として入れておいて、後はコード内で補完って感じで。 そうすると書換えの時も1回で済むし、無駄なアクセスも増えないから重くもならないかと。
260 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 04:54:26 ] url=yoursite.net みたいにね。 外部参照(だっけ?)できるようにすればそれ参照すればいいんじゃね?
261 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 05:53:39 ] >>257 どんなフレームワーク使ってるかわからんけど クライアントのリクエスト情報が入ったインスタンスの中を探せばあるだろ WEBrick::HTTPRequest#hostとかCGI#server_nameとか
262 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 06:34:16 ] >>258 search の引数には「CSSセレクタ」か「XPath」が使える(Hpricot独自の拡張も入ってるが) どちらも「HTMLとかのタグの位置を表記する方法」だ(大雑把) というわけでCSSセレクタの使い方でも調べとけ 他人にいちいち書き方を聞くことはなくなるだろう
263 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 06:54:42 ] >>257 定数ENVの中に何かいいの入ってるかも さくらインターネットと自前のLANサーバでスクリプトを共有させてたときは LOGIN_NAMEで初期値変えてたなあ
264 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 07:25:17 ] >>257 奥の手 require 'open-uri' open('forts.jp/ip ').read.strip
265 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 08:59:47 ] ruby で argv を書き換える方法ってありますか? Cだと **argv をいじると、プロセス一覧(ps等)に反映されるのですが ruby でも同じことをやりたいです
266 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 12:11:12 ] $0
267 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 12:41:44 ] >>257 RackならRequest#urlがある
268 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 15:46:56 ] >>259 >>260 >>261 >>263 >>264 >>267 とりあえずファイルに設置サーバのアドレス書き込んで、 それから読み出して使うように処理変えることにしました。 色々とアドバイスありがとうございます。
269 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 17:03:54 ] >>265 $0 = 'winny' OSによっては駄目かもしれない。
270 名前:デフォルトの名無しさん [2009/01/09(金) 17:29:53 ] Mechanizeで教えてください。 ブラウザでサイトに接続。 あるフォームをポストすると,ファイルがダウンロード。 そのページはかわらずそのまま。リンクやボタンをクリック可能。 (あたりまえといえばあたりまえなのですが) という作業をMechanizeでやろうとしてます。で agent = WWW::Mechanize.new agent.get(hogeサイト) agent.submit(agent.page.form(hogeフォーム)) agent.page.bodyでファイルを取得 なのですが,この段階で,agent.pageのクラスが WWW::Mechanize::Fileになってしまって,agent.page.backとかもできない。 フォームをsubmitする前のところから,次の作業をするにはどうすればいいでしょうか? reserve=agent.get(hogeサイト) みたいにしても,reserveは参照だから,同じでした。
271 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 17:34:24 ] transactとかあったような
272 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 17:36:59 ] めんどくさいなあ 見た目に簡単なのは、WWW::Mechanize#transact を使うこと ttp://d.hatena.ne.jp/kitamomonga/20080330/ruby_www_mechanize#www_mechanize__transact ブロック開始時の履歴が保存されて、ブロック終了時に書き戻される agent.get(hoge_uri) agent.transact{|a| a.page.form_with(:method => value).click_button.save_as(path_to_save) } agent.page # hoge_uriを維持
273 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 17:45:14 ] リクツとしてわかりやすいのは、WWW::Mechanize#visited_page d.hatena.ne.jp/kitamomonga/20080330/ruby_www_mechanize#www_mechanize__visited_page URL を引数に渡すと、そのURLにアクセスしたときの Page オブジェクトを履歴から探してきて返す agent.get(hoge_uri) agent.page.form_with(:method => value).click_button.save_as(path_to_save) agent.visited_page(hoge_uri).links_with... agent.page の代わりに agent.visited_page(hoge_uri) を使うことで、いつでも過去の Page オブジェクトを引き出せる いちいち書くのめんどい場合は prev_page = agent.visited_page(hoge_uri) とでもして変数に入れとけ あ、Mechanize 0.8.5 より前の Mechanize を使ってる場合は form_with(:method => value) や click_button が動かないんで、 代わりに forms.method(value) や submit 使ってくれ
274 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 17:56:07 ] transact ってそう使うのか
275 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 18:01:50 ] >>274 たぶん、そもそもこういう用途向けに作られたんじゃないかと思われる トランザクションと銘打っておきながらブロック内で履歴が新規に開始されていない (ブロック直前のページがブロック内初回アクセスのリファラ候補になってる)あたりが怪しい
276 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 18:08:08 ] >>267 Rack(笑) Rackって使ってる人多くない感じがセンデロルミノソ
277 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 18:13:10 ] 個々に好きなの使ってる感じは嫌いではない俺
278 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 18:48:50 ] プログラミング言語 Ruby David Flanagan, まつもと ゆきひろ 著 、卜部 昌平 監訳、長尾 高弘 訳 2009年01月24日 発売予定 ttp://www.oreilly.co.jp/books/9784873113944/ > 1章 イントロダクション > 2章 Rubyプログラムの構造と実行 > 3章 データ型とオブジェクト > 4章 式と演算子 > 5章 文と制御構造 > 6章 メソッド、proc、lambda、クロージャ > 7章 クラスとモジュール > 8章 リフレクションとメタプログラミング > 8.5 フック > 8.6 トレーシング > 8.7 ObjectSpaceとGC > 8.8 カスタム制御構造 > 8.9 method_missingとconst_missingの活用 > 8.10 メソッドの動的な作成 > 8.11 エリアスチェイン > 8.12 ドメイン固有言語(DSL) > 9章 Rubyプラットフォーム > 9.1 文字列 > 9.2 正規表現 > 9.3 数値と数学 > 9.4 日付と時刻 > 9.5 コレクション > 9.6 ファイルとディレクトリ > 9.7 入出力 > 9.8 ネットワーキング > 9.9 スレッドと並列処理 > 10章 Ruby環境
279 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 18:52:07 ] >>278 これもっと早く出すべきだったんじゃね? なにこのわかった人向けの基本の解説本
280 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 18:55:58 ] >>278 > 2.4 プログラムのエンコーディング > 2.4.1 プログラムのエンコーディングの指定 > 2.4.2 ソースエンコーディングとデフォルト外部/内部エンコーディング > 3.2 文字列 > 3.2.6 文字列のエンコーディングとマルチバイト文字 お。
281 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 19:04:33 ] Matzが直接本を書くのは、1.6ごろの宝石本以来?
282 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 19:18:29 ] それとほとんど内容同じ鴨試練
283 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 19:23:42 ] 今のバージョンに合わせた内容にしてるだけだろうな。 それでも大きな違いはあるだろうけど。
284 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 19:26:58 ] 良くも悪くも目次が「普通+言語作者周辺が語るディープツッコミ」で終わってるからな
285 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 20:13:07 ] 本の最初の部分で「他の言語経験がなく、これからRubyでプログラミングを始める人を対象とする。」みたいに 書いてあるが、実際にはまったくのプログラミング初心者には向かないかもしれない。 一番不思議に思ったのは、練習問題。 ふつう、その章に出てくる練習問題は、その章までに学んだことを応用できるような 問題にするべきなのに、Stringクラスの練習問題では、次の章に出てくるハッシュや 正規表現を使わせる問題が出てくる。 これじゃプログラミング初心者はつまずいてしまうのではないだろうか。 なんとなく、プログラミングの感覚を「Ruby」に染めさせるような本に思えてくる。
286 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 20:15:58 ] プログラミングPerlもプログラミング初心者が1ページ目から読むようにはできてなかった気がする (まああれは厚さも問題だが)
287 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 20:51:12 ] >>278 100冊カートに入れた。 そしてカートから出した。
288 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 21:11:27 ] カートには99冊残ってるわけか
289 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 21:11:31 ] いまRubyマニュアルを読めてるような人には有り難味の薄い書物であるように見える
290 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 21:13:03 ] >>289 購入者の6割はお布施だと思うよ
291 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 21:14:15 ] 原著を斜め読みした限りでは、初心者向けの本ではない。 1.9の解説書として考えるのが妥当だと思う。
292 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 21:18:23 ] >>288 それは必ず成り立つのですか?
293 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 21:19:34 ] 詳説Rubyと名付けるのが妥当
294 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 21:20:49 ] オライリーの "プログラミング#{言語名}" という本は総じてガチ初心者お断りだから、 間違って買ってしまう人以外は平気だと思う
295 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 21:22:04 ] 設計者の書いた本は、仕様と同時に言語の思想とかも与えてくれるから バイブル扱いされやすい気がする K&R、ラクダ、D&Eみたいに・・・・・本家amazonの評価が異様に良いのも気になる
296 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 21:23:12 ] >>293 だよなぁ・・。 なんかこう、プログラミング初心者向けですよ〜みたいなこと言っておいて 「プログラミングの世界ってどんなんだろう?」という純粋な初心者が、いつのまにか「Rubyだけの世界」に洗脳されそうだ。 もっとプログラミングの本質にこだわった本かと思ったのに。。
297 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 21:28:58 ] プログラミングの本質に触れたいなら特定の言語名を冠した本は違うと思うな。 といってプログラミングの初心者にそれを理解しろってのは酷だけど。
298 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 21:31:12 ] >>297 > プログラミングの本質に触れたいなら特定の言語名を冠した本は違うと思う ttp://www.amazon.co.jp/dp/4873112923 イエスこの本マジお勧め
299 名前:デフォルトの名無しさん mailto:sage [2009/01/09(金) 21:33:12 ] >>298 それなんでRuby採用したんだろうな
300 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 01:51:35 ] > Rubyは変なキツネの漫画を読んだだけなので www ホワイの感動的なやつだな >>205 C++のプロは「C++のプロ」とは自分で言わんだろ。 自称「C++のプロ」と言えばなんとなくニュアンスはわかる
301 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 02:40:12 ] >>285 >ふつう、その章に出てくる練習問題は、その章までに学んだことを応用できるような >問題にするべきなのに、Stringクラスの練習問題では、次の章に出てくるハッシュや >正規表現を使わせる問題が出てくる。 >これじゃプログラミング初心者はつまずいてしまうのではないだろうか。 それは既にhashや性器表現を知ってるからそう思うだけで教育的効果はあると思うよ 初心者の場合hashや性器表現を使わずにその問題を解こうとして悩むのがいい そうすれば次の章で出てくるhashや性器表現の意味や必要性を理解しやすい 唐突にhashや性器表現が出てくる方が初心者は混乱する >なんとなく、プログラミングの感覚を「Ruby」に染めさせるような本に思えてくる。 どの辺が?
302 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 02:43:11 ] >>300 大学生のときは上には上がいる、というか、上しかいない状況だったが、 就職してからは、下が果てしない、というか、下しかいない状況だった。 プログラミングで食ってりゃプロなのは間違いないが、それとスキルは直結しない。
303 名前:デフォルトの名無しさん [2009/01/10(土) 02:52:58 ] まつもとゆきひろって2ちゃんねるの管理人だった人?
304 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 03:33:40 ] >>301 ネタとわかってても性器表現が気になってしょうがないんだがw
305 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 07:07:39 ] >>302 下ばっかり見てると腕落ちますよ
306 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 09:24:05 ] rubygemsってどう呼ぶんですかね? ルビィゲムズ?
307 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 09:28:57 ] >>306 gem(ジェム): 宝石。宝玉。 ttp://dictionary.www.infoseek.co.jp/?ii=2&lp=0&sm=1&sc=1&gr=ml&qt=gem&sv=KO&se=on
308 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 09:44:34 ] >>307 d
309 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 13:08:05 ] >>266 >>269 遅くなりましたがありがとうございます!! perl と同じなんですね 助かりました!
310 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 13:10:27 ] >>301 なるほどね。
311 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 14:01:03 ] 青空文庫形式のテキストを処理しています。 青空文庫形式では親文字とルビを次のように書いています。 |親《おや》|文《も》|字《じ》 これを一つにまとめる形で、 |親文字《おやもじ》 という形に変換(置換処理)したいのですが、どうすれば良いでしょうか。 親文字が幾つあるかは一定していません。 この処理を一行毎に行いたいのです。
312 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 14:59:15 ] >>311 irb> s = '|魑《ち》|魅《み》|魍《もう》|魎《りょう》が|跋《ばっ》|扈《こ》する' irb> 1 while s.gsub!(/|(.*?)《(.*?)》|(.*?)《(.*?)》/, "|¥¥1¥¥3《¥¥2¥¥4》") => "|魑魅魍魎《ちみもうりょう》が|跋扈《ばっこ》する" gsub!は置換が行われればレシーバ(s)を、行われなければnilを返す。 1っていうのはとくに意味はない。後置whileを繰り返すためだけの存在。
313 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 15:13:57 ] s.gsub(/(|.+?《.+?》)(?!|)/){"|%s《%s》" % $1.scan(/|(.+?)《(.+?)》/).transpose} 正規表現であまり悩みたくない人向け >>312 gsub の第 2 引数は使うなとお達しが来てるはずだが
314 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 15:27:57 ] 初心者スレで transpose と sprintf 使って手抜きしてる人には言われたくないだろうな s.gsub(/(|.+?《.+?》)(?!|)/){ base = Array.new ruby = Array.new $1.scan(/|(.+?)《(.+?)》/){|m| base.push(m[0]) ruby.push(m[1]) } # 以下の文字列が gsub(re){str} の str に当たるもの "|#{base.join('')}《#{ruby.join('')}》" } 前にも gsub の 2番目の引数使ってた人がいたけど同一人物かね 無駄にエスケープ連打せずにブロック使えという認識になってたと思う
315 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 15:42:35 ] >>312 s = "|日《に》|本《ほん》|語《ご》の|漢《かん》|字《じ》" 1 while s.gsub!(/|(.*?)《(.*?)》|(.*?)《(.*?)》/, "|\\1\\3《\\2\\4》") puts s |日本語字《にほんご》の|漢《かんじ》
316 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 15:43:46 ] > gsub の第 2 引数は使うなとお達しが来てるはずだが kwsk
317 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 16:28:35 ] 正規表現で漢字のかんむりやへんやつくりをマッチさせるにはどうするんですか?
318 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 16:32:31 ] >>317 無茶言うな どっかの誰かに「部首と漢字文字との対応表データ」を作ってもらうしかないね ネット上には適当なデータを作ってる熱心な人がいるから、それをRubyでどうにか使うしか
319 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 16:37:40 ] 発想としては斬新でけっこう好きだ その視点を失わずにプログラミングして欲しいなと思う
320 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 17:11:49 ] このスレの少し前でRackの話が出てたけど 実際のところ、Rackって日本ではどのくらい使われてるんだろうね 日本語の解説記事もいくつかあるから、少なくともドマイナーって程ではないと思うが
321 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 17:49:37 ] 流石って さす+が さ+すが どっちになってます?
322 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 17:56:54 ] >>321 熟字訓だから「さすが」で分かれない 明日が「あし - た」でも「あ - した」でもないのと同じ
323 名前:デフォルトの名無しさん [2009/01/10(土) 19:33:38 ] (3.2-2.0) == 1.2 がfalseの理由を教えて下さい。
324 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 19:34:58 ] >311です。皆さんありがとうございました。
325 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 19:47:19 ] >>323 等しくない たぶん浮動小数点数の誤差のせい irb(main):024:0> sprintf("%.16f", 3.2 - 2.0) => "1.2000000000000002" irb(main):025:0> sprintf("%.16f", 1.2) => "1.2000000000000000"
326 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 19:51:08 ] >>323 浮動小数点だから 何かを計算した結果の浮動小数点の値と、 それ以外の数式で何かを計算した(あるいは計算していない)浮動小数点の値が、 全く同じになるというようなことはふつう無い だから、小数を含んでいる数値は絶対にイコールで比較してはいけない どうしても比較したい場合は、たとえばその差を誤差並に小さな数 Float::EPSILON と比較する irb> (3.2 - 2.0) -1.2 < Float::EPSILON false irb> (3.2 - 2.0) -1.2 < Float::EPSILON*10 true 10倍や100倍以内なら同じ数値とみなしてよい
327 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 19:53:11 ] >>323 なるほど。 てことは、浮動小数点数の比較は安易にするなってことですかね。
328 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 19:55:18 ] >>326 ありがとうございます! そうゆうもんなんですね。 PHPから入った素人なんで、勉強になりました。
329 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 19:55:38 ] あ、いかん、絶対値とらないと ((3.2 - 2.0) -1.2).abs < Float::EPSILON*10 こういうのでよろしこ
330 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 19:55:47 ] rubyに限らず実数の比較をしないってのは基本 おおむね>>326 の通りなんだけど、欲を言えば絶対値を取っておくほうがいい
331 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 19:57:40 ] 厳密じゃなくていいのなら、文字列にして比較してしまうというのがいいかもしれん 一般的な用途では文字レベルでしか判断しないからな irb> (3.2-2.0).to_s == 1.2.to_s true
332 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 20:29:17 ] なぜ文字列にして比較を?? 数値の比較の話じゃなかったの?
333 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 20:59:37 ] >>332 文字列は てか浮動小数点の指数の基数って 初心者の頃はずっと10なんだと思ってた。 で、なんで誤差が発生するんだとさんざん悩んでみたり 今からしたら俺アホかと
334 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:02:00 ] しまったメインの話題を途中やめにしてた 数値を文字列に変換する過程である程度の誤差を丸めてくれるなら、 >>329 みたいな過程を記述する必要がないってこと たとえruby内で記録されている値が 1.19999999999 であっても 1.20000000001 であっても 表示するときは最下位を丸めて 1.2 になると。 浮動小数点はちょっとわかりにくいからwikipediaで調べてみそ ja.wikipedia.org/wiki/ 浮動小数点数
335 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:05:56 ] irb> (3.2 - 2.0) -1.2 < Float::EPSILON false これが true になるような左辺ってあるんだろうか
336 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:09:41 ] 左辺が絶対値ってことだと思うが左辺の方が小さかったらEPSILONの意味がないな
337 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:10:10 ] 0では?
338 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:11:50 ] nil?
339 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:19:19 ] www.google.co.jp/trends?q=php%2Cperl%2Cruby%2Cpythoin%2CASP.NET ちょびっと逆転してる
340 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:20:10 ] www.google.co.jp/trends?q=php%2Cruby&ctab=0&geo=US&geor=all&date=all&sort=0 間違えたこっちだった
341 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:27:17 ] >>332 目に見える範囲の小数が等しいかどうかを調べるだけなら これが「我々がアタマの中で考えてる」処理に一番近い どちらが大きいかということが必要な場合はあまり(あるいは全く)使えないので用途に注意
342 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:32:43 ] >>335 irb> (5.5 - 2.25) - 3.25 < Float::EPSILON => true
343 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:40:17 ] >>326 <=にしたらtrueになった irb> (3.2 - 2.0) -1.2 <= Float::EPSILON true
344 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 21:41:18 ] >>342 それは単に 0.0 なのでは 0.5 も 0.25 も割り切れてるもの
345 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 22:25:21 ] Float::EPSILON < Float::EPSILON false Float::EPSILON <= Float::EPSILON true 0.0 < Float::EPSILON true って話?
346 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 22:27:51 ] Float::EPSILON とは <= で比較するのが正しいのかな
347 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 22:30:50 ] A <= B と A < B || A == B の動作違うのってまずくね
348 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 23:00:14 ] rubyってDLL作れる? rubyで作ったプログラムをVBAやC#みたいな他ので使いまわせるようにしようと思ったら どういう形式がいい?
349 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 23:05:35 ] >> 336 マシンイプシロン Float::EPSILON は 1.0 + Float::EPSILON != 1.0 になる最小の数って意味だから違う。 IEEE754 の浮動小数点表現では、32 ビットの単精度でも指数部は 8 bits、仮数部 23 bit あるから EPSILON はせいぜい 2.0**(-23) 程度 >> Float::EPSILON + 1.0 == 1.0 => false >> Float::EPSILON/2 + 1.0 == 1.0 => true >> 1e-20 < Float::EPSILON => true だから、ちゃんと比較するなら絶対値で割ってから比較するべき abs((a-b)/b) < Float::EPSILON とか。b < Float::EPSILON のときの処理も必要だけど。
350 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 23:23:19 ] 1.0 + Float::HOGE == 1.0 になる最大の値 HOGE のことを何と言いますか
351 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 23:25:12 ] マシンウプシロン
352 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 23:29:49 ] Delphiだと引数にEpsilonを指定できる浮動小数用の比較関数(SameValueだっけか)が あるんだけど、Rubyにはないのん? いちいち絶対値とってそれがEpsilon以下って書かなきゃならない? 組み込みかライブラリであれば教えて頼む
353 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 23:32:30 ] i.loveruby.net/d/20040502.html
354 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 00:00:41 ] Ruby Cookbookに載っているコード class Float def approx(other, relative_epsilon=Float::EPSILON, epsilon=Float::EPSILON) difference = other - self return true if difference.abs <= epsilon relative_error = (difference / (self > other ? self : other)).abs return relative_error <= relative_epsilon end end 100.2.approx(100.1 + 0.1) # => true 10e10.approx(10e10+1e-5) # => true 100.0.approx(100+1e-5) # => false
355 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 00:04:56 ] 浮動小数点を比較しなきゃ逝けない用途って何? コンピュータに向いてない作業の一つだな。
356 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 00:14:26 ] シミュレーション?
357 名前:デフォルトの名無しさん [2009/01/11(日) 00:27:31 ] RubyでGUIアプリケーションは作成可能でしょうか? 友人からは、GUIアプリケーションは VC++、VBとかじゃないと無理と聞いたのですが・・・
358 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 00:37:12 ] >>340 日本ではまだまだ遠いな www.google.co.jp/trends?q=php%2Cruby&ctab=0&geo=JP&geor=all&date=all&sort=0
359 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 00:37:34 ] >>354 self と other を比較する前に絶対値とらないと駄目なんじゃ。
360 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 00:38:08 ] def check(name) /name/ =~ "hiroyuki" 以下略 で/name/ をnameでマッチさせるのではなく引数の値を使うにはどうすればいいでしょうか?
361 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 00:50:37 ] >>357 pc11.2ch.net/test/read.cgi/tech/1200175247/302-312
362 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 01:08:45 ] ここまでBigDecimalへの言及無し。 ttp://www.ruby-lang.org/ja/man/html/BigDecimal.html irb> require 'bigdecimal' => true irb> BigDecimal.new("3.2") - BigDecimal.new("2.0") == BigDecimal.new("1.2") => true
363 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 01:11:56 ] 浮動小数点数の比較の話をしてるんだからBigDecimalの出る幕は無いだろ
364 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 01:20:00 ] >>354 サンクス。組み込みではないっつーことか。 >>355 まーゲーム作るときとかちょっとした数値計算、 後ユニットテスト書くときなんかにはいるけど、 確かに最後の例以外Rubyには不適だかなあ
365 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 01:21:22 ] >>360 def check(name) name =~ "horioyuki" で、 check呼ぶ時に正規表現リテラル渡せばよいのでは? check(/.+oyu.+/)
366 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 01:26:58 ] ちょっとお聞きしたいのですが、 wikiとかの表示によくあるプログラムの実行時間を 自分のスクリプトで表示したいのですが、 簡単にmsecの実行時間を測る方法はないでしょうか? スクリプトの終了前に puts Process.times.to_yaml とかやってみたんですが、表示がさっぱり?です。 utimeとstime を足したものが実行時間なのかな?
367 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 01:28:51 ] あれは単にWikiテキストの処理開始時と 処理終了時の差を取っただけなんじゃないか?
368 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 01:31:14 ] >>366 基本的な計測はbenchmarkライブラリ(標準添付)でOK あと、「Ruby プロファイラ」で検索すると色々出てくる
369 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 01:33:47 ] >>363 おおもとは、>>323 > (3.2-2.0) == 1.2 がfalseの理由を教えて下さい。 だから、小数を含む数の扱いについて一通り言及すべきだと思うんだ。
370 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 01:40:08 ] >>365 nameに渡す文字列はARGV.shiftで受け取ったものなんですよ・・・。 グローバル変数にすればよかったりしますかね・・・。
371 名前:370 mailto:sage [2009/01/11(日) 01:54:40 ] グローバルしてみましたが結局 =~ の 左辺,右辺に変数がきてもいいのでしょうか?
372 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 02:10:29 ] def check(name) /#{name}/ =~ "hiroyuki" end p check("hiroyuki") # => 0
373 名前:370 mailto:sage [2009/01/11(日) 02:17:30 ] >>372 ありがとうございました!!!!!!!!!うまくいきました。 =~の左辺の#{name}っていうのは変数としてみるってことですか?
374 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 02:18:34 ] >>368 サンクス benchmarkクラス使ってみる
375 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 02:28:14 ] >>373 まあそんな感じだ 「式展開」について勉強すればよくわかる www.ruby-lang.org/ja/man/html/_A5EAA5C6A5E9A5EB.html#a.bc.b0.c5.b8.b3.ab
376 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 02:28:22 ] 変な質問なうえにおそらく出来ないんだろうけど一縷の望みをかけて質問 メソッドの入れ子って出来ますか? たとえば、 def method1 処理 def method2 処理 end end としたら、method1だけ呼びだしたらmethod1の処理のみで終了。 method1.method2みたいに呼びだしたら両方の処理を実行、みたいな。 この書き方だと ttp://www.ruby-lang.org/ja/man/html/_A5AFA5E9A5B9A1BFA5E1A5BDA5C3A5C9A4CEC4EAB5C1.html#a.a5.e1.a5.bd.a5.c3.a5.c9.c4.ea.b5.c1.a4.ce.a5.cd.a5.b9.a5.c8 みたいになっちゃうから無理なのは明白だけど・・・ method1に引数を与えてmethod2の処理をif文でくくって引数の値で処理するか否かを 決めるって方法もあるけど、見た目的にごちゃごちゃするから嫌というか・・・ なんかいい方法あったら教えてください。
377 名前:370 mailto:sage [2009/01/11(日) 02:31:30 ] >>375 ありがとございます。 昨日Rubyはじめたばっかりでいろんなサイトからつぎはぎで趣味プログラムしてたんで リファレンスマニュアルというのをみてませんでした。まず、一読してみます!
378 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 02:32:20 ] >>376 無理 素直にモジュール使って、Mod1.method1としなされ
379 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 02:34:20 ] >>376 それではmethod2を定義しているだけで,method2を呼び出してはいない def method1 puts "call method1" def method2 puts "call method2" end method2 end
380 名前:379 mailto:sage [2009/01/11(日) 02:35:59 ] ごめんはやとちりした
381 名前:376 mailto:sage [2009/01/11(日) 02:45:25 ] >>378 無理かぁ・・・ありがと Mo1.method1・・・method2はどこへ? 実はmethod1の処理がイテレータを含んでいて、変数を一周するたびに初期化して使うんだけど、 場合によっては初期化する前にmethod2の処理でその変数を使いたいから↑のようなことに・・・ モジュールだとダメそうなのでおとなしく引数と条件文で動かします。。 >>380 ドンマイw
382 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 02:47:47 ] >>376 def method1 処理1 Proc.new do 処理2 end end method1 method1.call 近いことを無理やりやろうとすれば、 こんなのは思いつくが、普通はやらない 端的に言って不気味すぎる
383 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 03:00:57 ] いやいや、初心者のこんな突拍子もないアイデアから、すごいアイデアがでたりする。 1000個に1個ぐらい。 だから初心者は1000個のアイデアを出すんだ!
384 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 03:14:53 ] callが気に食わない def method1 処理1 pr = Proc.new do 処理2 end pr.instance_eval "alias :method2 :call" pr end method1 method1.method2
385 名前:376 mailto:sage [2009/01/11(日) 03:22:55 ] >>382 おお、できるんだ!? ありがと〜 ぶ、不気味なのか・・・ >>384 求めていたものが完璧に・・・お見事です。 お二方、ありがとうございます。
386 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 03:40:36 ] 開発環境なに使ってますか? 自分はLinuxでは基本Netbeansで、ちょっとした修正はemacsで。 eclipseとかもあるけどどんな開発環境使っているか気になったので・・・。
387 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 03:59:55 ] vi
388 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 04:07:59 ] 今時 vi はないだろう vi は。 俺は断然 vim だな。
389 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 04:10:20 ] メモ帳
390 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 04:14:26 ] 俺はEclipseにRubyプラグイン editer使ってる人は補完なくて大丈夫なの?
391 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 04:25:12 ] いや、もちろんエディタにも補完はあるよ VimのRubyに対する補完はかなり強力。それ以上に操作性が好きで使っているけど
392 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 04:29:52 ] ずっとEmacs ちなみにMatzもEmacs まあ人に何が良いか,って聞かれたらNetbeans勧めるかもな
393 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 04:30:07 ] viの学習曲線の最初でくじけたのでemacsで
394 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 07:48:14 ] 俺は断然 vi
395 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 08:18:34 ] あんな日本語も通らない化石エディタよく使う気になるな
396 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 08:56:02 ] 個人用途なので基本的にはどうでもいいんですが気になるので質問します HTMLとかから正規表現とかでデータ抜き出して、データ保管クラスのインスタンス変数に保管します。 initialize の時点でたくさんのインスタンス変数に値を入れたいんですが、 def initialize(params, data) @a = params[:a] @b = params[:b] @c, @d, @e = parse_in_init(data) end と def initialize(params, data) @a = params[:a] @b = params[:b] make_c_d_e(data) end def make_c_d_e(data) @c = someprocess1(data) @d = someprocess2(data) @e = someprocess3(data) end って、どっちが見通しいいもんでしょう? ちょっと面倒でも明示的に代入の形を見せる前者のほうが初期化プロセスっぽく見えて好ましい?
397 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 09:03:43 ] >>396 YES ただ、make_c_d_e みたいなそれっぽいのが initialize の直後に定義されてれば 「あーinitializeの続きかー」と思って読むから別に気にはしない Util.parsehtml とかどっか遠いとこに定義されてるクラスメソッドがinitializeで呼ばれてるとやる気なくす
398 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 09:38:12 ] def initialize(params, data) @params = params @data = parse_in_init(data) end
399 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 09:43:49 ] >>398 なにそのユーザー丸投げルーチン いちいちハッシュの引数で参照するのがめんどいまたは間違いやすいからインスタンス変数にしてんじゃねの
400 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 09:45:50 ] >>399 @params を書き込み可能にしておけば外部からデータ追加するのも楽々だぜ?
401 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 10:09:51 ] >>400 外部からデータを追加する必要があって、なおかつその方法しか考えられないようなときなら一理あるけど そうでなければ、ここでハッシュを使うのは問題が大きすぎる
402 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 10:15:06 ] Javascriptだと a={'hoge': huga, 'hage': fuga}; a.hoge a.hage にアクセス出来ていいんだよね
403 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 10:17:30 ] Ruby でもやろうと思えば出来るっしょ
404 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 10:17:39 ] アクセサ作ればいい めんどくさいけど
405 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 10:24:49 ] StructA = Struct.new(:hoge, :hage) a = StructA.new('huga', 'huga') p a.hoge p a[:hoge] p a[0] "huga" "huga" "huga" オーイエー >>402 どっかのgemにそんなのあったな
406 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 10:44:53 ] 来たなStruct厨 総員迎撃準備
407 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 10:51:36 ] Structって嫌われてんの?
408 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 11:01:58 ] Struct.newにJSONぶっこめる?
409 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 11:09:18 ] >>407 他言語から来た人がArrayやHashを使い込むことなく安易に使うものの代表だから、嫌がられてはいるね まずはArrayとHashを使い倒してからにして欲しいなと思う所存 >>408 分けてくれ
410 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 11:38:19 ] >>395 通るぞ?@Solaris10
411 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 11:39:19 ] ttp://www.ruby-lang.org/ja/documentation/ ここの検索こわれてるみたいなんだけどいつ治りますか
412 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 11:41:36 ] >>410 動物は一度鎖に繋がれてしまうと鎖が杭から外れていても 逃げられないと思い込んでしまうものなのです
413 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 11:42:25 ] >>410 それは日本語パッチ当たってるんじゃね てか、「お前らが使ってるのは vi じゃなくて vi クローンのどれかまたは vim だろ」というツッコミを 誰かがしないと終わらんな
414 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 12:25:43 ] >>413 OS標準。つか、Solarisは遠い昔から、日本語localeが入ってりゃちゃんと日本語使える。(viに限らず。そのせいで痛い目にあうこともまれにあるが)
415 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 13:15:48 ] emacs入ってない環境はたくさんあるけど、viが無い環境は稀。 まあ開発環境は何でも好きなの自分で入れろよと思うけどな。
416 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 14:49:23 ] だからメモ帳最強って何度言わせるんだよ!!
417 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 14:55:18 ] Windows環境でJmEditorとRDEとNotepad++を使い分ける俺に隙はなかった
418 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 15:08:19 ] >>415 のようなことを稀に聞くが、vi でファイル編集できない人間などおらん
419 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 15:21:16 ] Windows環境で、class Hoge(もしくは、def hoge、each do |x|)と打ってリターンをすると、 以下のように、endを付けインデントした位置にカーソルを持ってくるエディタはありますか? class Hoge[Retrun] ↓ class A | end
420 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 15:25:32 ] Meadow(or Xyzzy)を入れて自分で作れってのはなし?
421 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 15:25:41 ] >>419 xyzzyをカスタマイズ
422 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 15:46:14 ] >>420-421 自分でカスタマイズする技量がないのであきらめます
423 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 15:53:58 ] Solarisのviはずいぶん昔から日本語通るぞ。SunOS4は忘れたが。 ただ、Localeに縛られるので、Shift_JISのファイルなんかが来ちゃうと面倒。 LANG=とsettermでなんとかなった気もするけど、もう忘れた。 って無駄レスだな。
424 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:08:58 ] 以下、Personクラスの配列membersを、名前→性の順でソートすると、名前のソートがくずれます。 くずれないようにソートするにはどうすればいいのでしょうか? class Person attr_reader :name, :sex def initialize(name, sex) @name, @sex = name, sex end def show [@name, @sex] end end members = [] members.push Person.new("sasaki", "male") members.push Person.new("kato", "famale") members.push Person.new("fukada", "male") members.push Person.new("akai", "female") p members.map {|p| p.show } #=> [["sasaki", "male"], ["kato", "famale"], ["fukada", "male"], ["akai", "female"]] p members.sort_by {|p| p.name}.sort_by {|p| p.sex}.map {|p| p.show } #=> [["kato", "famale"], ["akai", "female"], ["fukada", "male"], ["sasaki", "male"]] #=> 望ましい結果 [["akai", "female"], ["kato", "famale"], ["fukada", "male"], ["sasaki", "male"]]
425 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:12:32 ] members.sort_by {|p| [p.name, p.sex]} じゃね?
426 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:21:48 ] 配列の比較に関してはドキュメントが弱いんだよね [1,2,2] < [1,2,3] [1,1,2] < [1,2,2] [1,4,4] < [2,1,1] x でソートしたあとに y でもソートしたいという場合は、Rubyでは data.sort_by{|a| [a.x, a.y]} と書く
427 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:28:14 ] >>425 それだと、 [["akai", "female"], ["fukada", "male"], ["kato", "famale"], ["sasaki", "male"]] となり、性のソートがくずれてしまいました。
428 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 16:55:33 ] >>427 どうソートしたいのか考えれ 崩れるも何も、ソートする順番の問題に過ぎない class Person attr_reader :name, :sex def initialize(name, sex) @name, @sex = name, sex end def show [@name, @sex] end def Person.sort_sex(sex) if sex=='male' then 1 else -1 end end end members = [] members.push Person.new("sasaki", "male") members.push Person.new("kato", "famale") members.push Person.new("fukada", "male") members.push Person.new("akai", "female") members.sort_by {|p| [Person.sort_sex(p.sex), p.name]}
429 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 17:09:06 ] >>428 うまくいきました。 サンクス。
430 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 18:13:53 ] diaspar.jp/node/185
431 名前:デフォルトの名無しさん [2009/01/11(日) 19:37:19 ] Hpricot::Elem.new(Hpricot::STag.new('form')) をノコギリで書き換えようと思い Nokogiri::XML::Node.new('form')としたら ArgumentError: wrong number of arguments (1 for 2) のエラーが出ました。 RDocには,new(name)、と引数は一つなのですが,どうしてでしょう。このnameはStringで与えてもだめ?
432 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 19:53:44 ] >>431 ttp://nokogiri.rubyforge.org/nokogiri/classes/Nokogiri/XML/Node.src/M000044.html 第2引数はNokogiri::XML::Documentっぽい ドキュメントが間違ってるんだろうな
433 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 22:53:05 ] >>419 Aptanaとか、EclipseベースのIDEならいけるんじゃないかな。
434 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 23:17:19 ] >>419 どうせEmacs使わんだろうけどコメントしとく emacsのruby-electric-modeだと defスペース と打った時点でendが補完される その後 ruby-mode の ruby-reindent-then-newline-and-indent を使って改行すればインデントも同時にされる この程度ならEmacsユーザならごく当たり前のこと というかRuby用の動作があるエディタならみんな似たようなことできるでしょ?
435 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 00:38:32 ] >>419 Vim の場合 runtime/ftplugin/ruby.vim runtime/indent/ruby.vim を調べてみたけど、そういうのなかった。 %HOME%/vimfiles/ftplugin/ruby.vim か $HOME/.vim/ftplugin/ruby.vim に、 以下を入れておけば、OK inoreab <buffer> module module<cr>end<up><end> inoreab <buffer> class class<cr>end<up><end> inoreab <buffer> def def<cr>end<up><end> inoreab <buffer> do do<cr>end<up><end> inoreab <buffer> case case<cr>end<up><end> inoreab <buffer> begin begin<cr>end<up><end>
436 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 01:06:25 ] hash = {} [:a, :b, :c].each {|k| hash[k] = @hash[k] } という処理をもっと簡単に書く方法があれば教えてください。
437 名前:デフォルトの名無しさん [2009/01/12(月) 01:14:36 ] hash = @hash.dup()
438 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 01:45:16 ] >>435 endwise.vim というプラグインがある www.vim.org/scripts/script.php?script_id=2386
439 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 03:17:20 ] >>419 EclipseかNetBeansでsnipet使うのはどうだろうか? リターンでは無理だが別のキーで、コードの展開はできるぞ
440 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 04:15:34 ] >>436 hash.merge!(@hash)
441 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 07:19:55 ] >>436 それが一番短い部類 「○○というキーを持つペアを [k, v] の配列で返す」みたいなメソッドって標準には無いんだよね hash = Hash[@hash.find{|k, v| [:a, :b, :c].include?(k)}]
442 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 07:22:22 ] 書いててなんか短いなとは思ったんだ hash = Hash[*@hash.find{|k, v| [:a, :b, :c].include?(k)}.flatten] うーん
443 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 07:31:20 ] hash という変数名は全てのオブジェクトに存在する hash っていうメソッド名と被るから、 特に拘りがあるのでなければ避けておいたほうが吉 プログラム(1行のみ): p hash 結果: 22412530 適当なハッシュの変数名は h が人気 h と書かれていれば、ほぼ全員がハッシュかなと推測してくれる
444 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 09:09:34 ] 遅延評価はあるから バックくおーとみたいなのはできるかもしれない
445 名前:デフォルトの名無しさん [2009/01/12(月) 10:04:50 ] ActiveRecordでsqlite3のDEFAULT CURRENT_DATEに 相当するのは何? 今,record.date = Date::todayみたいにいちいちやってるのだけど, なんだか,もっとスマートな方法がある気がするので,質問
446 名前:デフォルトの名無しさん [2009/01/12(月) 11:02:22 ] 質問です。 スキルアップのためにRubyでビジネス向けシステムを作れという課題が出ました。 勤怠管理システムのような物を作ろうかなと考えています。 私の言語スキルはCのみでオブジェクト言語は概念しかわかりません。 Cは基本情報合格しました。 とりあえずRuby1.8をインストールしようとしましたが失敗しました。 (コンソール画面から先に進めません) こんな初心者にお勧めのRuby書籍を教えてください。 前述の通り、インストールから失敗してしまいましたので インストール方法も解説している物が欲しいです。 最終的に簡単なシステムを作らなければいけないので 入門系と実践系の物をお勧めいただければと思います。 どうかよろしくお願いします。
447 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 11:08:49 ] >>446 何をもって「失敗した」と言ってるの? Rubyインストールしただけだったら別に開発環境が入るわけじゃないぞ。 あと使ってるOSは?
448 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 11:14:05 ] Ruby学習者に必要なもの(ある程度持っていると暗黙のうちに仮定されているもの) ・ OSへのある程度の習熟 ・ コマンドライン操作 ・ HTTPとウェブに関する基礎知識 ・ データベース利用に関する基礎知識(Rails限定) ・ PerlかUNIX Cの教科書的な基礎知識
449 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 11:19:00 ] >>448 …持ってなくてもいいが、まあ、持ってないとひたすらに遠回りではあるな 歩行練習と自転車乗る練習を同時にするようなもんで、学習量と学習時間が倍くらいになる >>446 本当にCで自分用プログラム作れるだけの技量があるか怪しいと思うんだが、コマンドライン操作はできるかい
450 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 11:22:55 ] できるだろ Cができるってことはmakeとかも使えるってことなんだから
451 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 12:13:45 ] >私の言語スキルはCのみでオブジェクト言語は概念しかわかりません。 >Cは基本情報合格しました。 Cができるなんてどこにも書いてないぞ
452 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 12:16:51 ] Cが出来てRUbyで着ない香具師なんていない 初心者詐称 釣り決定
453 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 12:19:53 ] > こんな初心者にお勧めのRuby書籍を教えてください。 >>2
454 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 12:21:46 ] >>446 よろしければその会社でのあなたの給料と実質労働時間を教えてください
455 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 12:23:32 ] >スキルアップのためにRubyでビジネス向けシステムを作れという課題が出ました。 会社員だなんてどこにも書いてないぞ
456 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 12:26:23 ] インストールも出来ない初心者向きの本を勧めれば回答終了じゃないのか、これ。
457 名前:446 mailto:sage [2009/01/12(月) 12:35:30 ] 早いお答えありがとうございます。 こちらの回答が遅くて申し訳ありません。 下で個別にもレスしますがCの実践的な開発経験はありません。 資格試験(基本情報)で問題として出されるレベルのプログラムを 一人で完成させる事はできます。 わかりにくいようでしたらプログラムの基礎の基礎(ループやメモリ)だけは わかるズブの素人としてご指導頂ければ、と思います。 >>447 RailsをインストールするためにDOS画面にコマンドを打ち込んでも NoFound〜的文章が表示されて先に進みません。 今、手元にインストールしようとしたマシンがないので 正確なエラー文はわかりません。 インストールガイドはネット上で見つけた動画を参考にしたのですが これもインストールするパソコンにブックマークしていたので 今この場ではわかりません。 わからない事が多くてすいません。 「これが必要」という情報があれば調べてきます。 OSはWindowsVistaです。
458 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 12:36:15 ] オライリーの「初めてのRuby」。まじおすすめ。 Railsやるならなんだろう?
459 名前:446 mailto:sage [2009/01/12(月) 12:36:27 ] >>448 ・ OSへのある程度の習熟 ある程度、がどのくらいかわからないのですがマニュアルを見て 再インストールはできました ・ コマンドライン操作 ほとんど使用したことがありません。 試験勉強のためにログオンやログオフ、プリンタの操作を数回だけ。 ・ HTTPとウェブに関する基礎知識 基礎知識なら何とか… ウェブページが表示される仕組み程度はわかります。 ・ データベース利用に関する基礎知識(Rails限定) データベースの概念やSQL文までは一通りわかります。 >>449 図々しいのですが、持っていない人間が効率的に学習できる順番など もしありましたら教えていただけませんか…? >コマンドライン操作 ほとんど使用したことがありません。 試験勉強のためにコマンドライン一覧のようなマニュアルを見てやった時は とりあえずできました。 自分用プログラムを作ったことはありません。 ・ PerlかUNIX Cの教科書的な基礎知識 Perl・UNIXはわかりません。 Cの教科書的なことならわかります。(解説書も持っています)
460 名前:446 mailto:sage [2009/01/12(月) 12:50:45 ] >>450 Cの知識はありますが実践経験はありません。 makeのやり方も解説を読む限りでは理解できたのですが そこまで辿り着けませんでした…。 >>451 試験に合格できただけなのでたぶんできないと思います。 >>452 Cもできないようです… >>453 入門・はじめて〜と付いている物が多すぎて… 一番最初に読むと良い物を教えていただけないでしょうか。 (できればインストール法が詳細に載っているとありがたい)
461 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 12:51:17 ] >RailsをインストールするためにDOS画面にコマンドを打ち込んでも >NoFound〜的文章が表示されて先に進みません。 >今、手元にインストールしようとしたマシンがないので >正確なエラー文はわかりません。 インストールしようとしたマシンが使える環境になったらまたおいで
462 名前:446 mailto:sage [2009/01/12(月) 12:51:32 ] >>454 >>455 会社員ですがプログラミング職ではありません。 ずっと経理でやってきました。 自主的に基本情報を取得したところ社長がそれを聞きつけて 「手当て出すからもっと本格的に勉強しろ。 今度経理システムの作成をソフトウェア会社に依頼するから それまでに一通りわかるようになって開発に加われ。 依頼予定の会社はRuby使うって言ってるからRuby勉強しろ 」 要約するとこんな感じです。 「とりあえず実際に使える物を作ったら覚えるだろ」という事らしい。 29歳の高卒女。情報系の学歴はなし。 実質労働時間は9時間くらいかな。 今までの仕事(経理)をする時間を引いたら毎日3時間程度。 でも来週で引き継ぎ終わるから、そしたら9時間Ruby学習に充てていい。 >>456 そういう物を教えていただけるとありがたいです。
463 名前:446 mailto:sage [2009/01/12(月) 13:01:04 ] >458 ありがとうございます。 レビューなどを見ると入門より少し難しいようなのでこれを一冊と もっと基礎的な物がないか捜してみようと思います。
464 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 13:19:44 ] >>462 それはチャンスって言えばチャンスだね。でも、フルタイム学習に あてていいとなると、失敗した時のリスクも結構大きいかも。 研修参加も可能かどうか相談したほうがいい。 環境のインストールから、ということであればまずはこのへんの本でも。 www.amazon.co.jp/%E3%81%8B%E3%82%93%E3%81%9F%E3%82%93Ruby-Rails%E3%81%A7Web%E5%88%B6%E4%BD%9C-%E9%BB%92%E7%94%B0-%E5%8A%AA/dp/4798116793/ref=sr_1_2?ie=UTF8&s=books ただし、環境のインストールについては過剰に詳しく書いてあるけど、 言語要素についてはあまりにさらっとしてるし本質的な理解には至らない かもしれないので、これでざっと環境を作ってサンプルとか動かして みたら、さっさと他の方法もあたったほうがいいと思う。 あと、ギブアップするなら傷が深くならないうちにお早めに。
465 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 13:33:43 ] >>463 だから >>453 も言ってるが >>2 を見れ しかし、プログラミングもできないのに SI 名乗る人たちがいるのに、 >>462 のような理由でプログラミングの勉強をしろとは、 社長はなかなかの大人物。(か、ちょっと勘違いしちゃってるのか、分からんが) 先は途方も無く長いけどがんがって下さい。
466 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 14:13:30 ] 断ったほうがいいと思う
467 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 14:16:57 ] 良いチャンスだとは思うが、 ちゃんとした研修を受けれないなら断るのも手か。
468 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 14:28:34 ] >>466 だな 自社のシステムを学習者に任せるとか根本的にありえない こっちから人出せば開発依頼費が浮くとか勘違いしてるだけに過ぎない
469 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 14:38:27 ] >>468 馬鹿発見 こういうのは社長がシステム会社側に余分に数百万金積んでんの
470 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 14:45:08 ] なにそのお妾さんシステム
471 名前:446 mailto:sage [2009/01/12(月) 14:47:06 ] いろいろアドバイスありがとうございました。 とりあえず今から都市部の大きな本屋に行って自分に合いそうな 初心者向け書籍を探してみようと思います。 あとはみなさんのアドバイス頂いた物をネット注文予定。 最後の方、個別にお礼をレスできなくてすいません。 うちは小さな会社で社長もワンマンなので残念ながら研修や断るという選択肢はありません。 社長が大昔に配送業務を外部委託したときに超ぼったくりされた苦い思い出から 外部と提携する時は必ず社員も加える事になっています。 もし私が断ったらエクセルワードくらいしか使えない経理部長がやらされそう… 一応期間的には半年くらいは貰えるようですが、厳しい道のようですので 最悪の場合は転職の覚悟もしておくことにしますw 丁寧にいろいろありがとうございました!
472 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 14:56:09 ] > 外部と提携する時は必ず社員も加える事になっています いやそんなこたわかってる(というかそんな理由しかありえん) それでもなお、 「依頼する会社が○○で開発するから話合わせるために○○を覚えろ」 というのは完全に間違っている というか、それでは何の解決にもなっておらず、遠からず同じ大火傷が起こるだろう
473 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 15:29:14 ] 会社の事情も何も分からんのに、そんな脊髄反射でスレ違いな話することもなかろう
474 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 15:36:57 ] 企業様におかれましては仕様固めるとか意思伝達スムーズにするとかのほうにリソース割いてほしいのう 開発言語なんて1ミリも知らなくていいのにっていうかむしろそっちに入り込まれると邪魔
475 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 18:21:32 ] >>445 created_on というカラムを作ればレコードの作成日が 勝手に残る(ようにActiveRecordが面倒みてくれる)けど、それではだめ?
476 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 18:32:32 ] 今日さ、普段使ってるファイルでFile#flock(File::LOCK_EX)のテストしてたんだよね。 そしたらFile.open("hoge", "w")したとたん中身消えちゃって涙目になった。
477 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 18:51:39 ] この前、アホアホに彼女と行きましたそうしたら、奥の座敷に、芸能人が10人ぐらいいました。 その中でアホアホ鍋食べていたら、芸能人の人が一緒に飲もうよと、誘ってくれました。 凄くうれしいかたよ。 それから、毎週アホアホに言っています。
478 名前:デフォルトの名無しさん [2009/01/12(月) 20:31:09 ] プログラム上でウェブサイトにpostしたいのですが、 そういうライブラリがあれば教えて下さい
479 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 20:33:41 ] 標準の net/http gem の httpclient gem の Mechanize 好きなの選べ
480 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 20:38:35 ] ありがとうございます!
481 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 00:03:14 ] >>478 Mechanizeが直感的で一番かんたんじゃないかな? わかりにくいけど
482 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 01:26:33 ] >>481 >Mechanizeが直感的で一番かんたんじゃないかな? >わかりにくいけど パラドックス?
483 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 08:38:42 ] おまいら高卒アラサーだと雌でも食いつき悪いのな。 どんだけ二次元嗜好なんだよwww まあコンピュータ言語知識のあるPGやSEでも糞な仕様作るのはいくらでもあるので、ユーザ側でコンピュータ言語知識有ってもいいでしょ。 結局、IT業界って客商売だし、お金出す側の客が、システムの奥深くまで把握して金出したいって要求なんだから迷惑とか関係無いわな。 ほぼ、Cの実務知識無さそうだし、現状取り組むならrubyもCも変わらないね。 >>448 に上げてある、システム開発するうえで前提と成る基礎スキルの習得がまずは必要だと思う。 依頼予定の会社のruby使用のシステムの詳細をもう一度確認したら? Ruby on Rail使う予定というなら、 【Ruby】Ruby on Rails Part6 pc11.2ch.net/test/read.cgi/php/1224838013/l50 とか、どーぞ。 貴重な体験だと思うので、日記でも付けて、あとで書籍化でもすると、ルビー神の一人に成れて世界変わるかもしれないwww
484 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 10:32:08 ] >>436 >hash = {} >[:a, :b, :c].each {|k| hash[k] = @hash[k] } >という処理をもっと簡単に書く方法があれば教えてください。 たぶん、ない。 class ::Hash def elems_at(*keys) h = {} keys.each {|k| h[k] = self[k] } h end end とでもして、hash = @hash.elems_at(:a, :b, :c)としとけ。 >>437 >hash = @hash.dup() これは違うだろ。選択した要素だけを選び出すのであって、要素をすべてコピーするわけではない。 >>440 >hash.merge!(@hash) 上に同じ。 >>442 >hash = Hash[*@hash.find{|k, v| [:a, :b, :c].include?(k)}.flatten] include? は線形探索だから、それを何度も行うのは効率悪そう
485 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 11:20:42 ] >>hash = Hash[*@hash.find{|k, v| [:a, :b, :c].include?(k)}.flatten] >include? は線形探索だから、それを何度も行うのは効率悪そう [:a, :b, :c]に対しての探索だから3要素ならたいしたことないんじゃないの
486 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 12:02:02 ] そりゃ本来のデータなんてスレに書きこまんだろ 例示のために3要素にしてるに過ぎない可能性が高い ていうか、>>436 で用が済むんだけどね これより妥当で遅れない汎用な書き方はまず無いと思われ 基本的な記法を使い倒せる技術最強伝説
487 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 13:20:46 ] うん、>>436 が一番、やりたいことが素直にコードになってていいと思う。 hash = [:a, :b, :c].inject({}){|h, k| h[k] = @hash[k] ; h } こんなんもあるけど、自分ならやらない。
488 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 21:30:11 ] でもまあ初心者はmapとか使わずeachしか使ってなかったりするからなあ。 eachじゃない書き方があれば教えてあげるのは悪いことでもない。
489 名前:デフォルトの名無しさん [2009/01/13(火) 22:34:17 ] 今、ドラクエやってるんだけど、太陽の石ってどこにありましたっけ?
490 名前:デフォルトの名無しさん mailto:sage [2009/01/13(火) 23:19:46 ] みつかりました ありがとうございました
491 名前:デフォルトの名無しさん [2009/01/14(水) 00:13:04 ] >>490 ざけんなw
492 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 01:04:46 ] >>436 keys = [:a, :b, :c] hash = Hash[*keys.zip(@hash.values_at(*keys)).flatten] これでもできるような気がするけど、自分ならやらない。
493 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 02:57:57 ] Time.nowを簡単に日本語で出力する方法はないでしょうか? 今は、 puts Time.now.strftime('%Y-%m-%d(%a) % %H:%M:%S') とやっています。%aは ["日", "月", "火", "水", "木", "金", "土"][Time.now.wday] に置き換えればよいと思いますが・・・ > ruby -v ruby 1.8.7 (2008-06-20 patchlevel 22) [i386-mswin32]
494 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 03:02:36 ] 標準ではない。そのへんはその要領で自分で書いておくれ。
495 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 03:45:37 ] >>494 ありがとう。適当に書いてみます
496 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 03:50:57 ] >>493 TimeでなくDateTimeクラスなら以下のように: $ irb -rdate -rational -Ku -f irb> RUBY_DESCRIPTION => "ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-darwin9.5.0]" irb> Date::const_set('ABBR_DAYNAMES', %w(日 月 火 水 木 金 土)) warning: already initialized constant ABBR_DAYNAMES # ミナカッタコトニ => ["日", "月", "火", "水", "木", "金", "土"] irb> t = Time.now => Wed Jan 14 03:47:50 +0900 2009 irb> dt = DateTime.civil(t.year, t.month, t.day, t.hour, t.min, t.sec, Rational(t.utc_offset, 86400)) => #<DateTime: 21209863247/8640,3/8,2299161> irb> dt.strftime('%Y年%m月%d日(%a) %H:%M:%S') => "2009年01月14日(水) 03:47:50"
497 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 10:56:07 ] // / / パカッ //⌒)∩__∩ /.| .| ノ ヽ / | | ● ● | / | 彡 ( _●_) ミ まピョーん☆ / | ヽ |∪| /_ // │ ヽノ \/ " ̄ ̄ ̄ ̄ ̄ ̄ ̄(..ノ
498 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 11:12:39 ] >>488 map は写像製造だし、写像を作ること以外に使うべきではない
499 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 11:33:28 ] 498の読解力のなさは委譲
500 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 12:24:21 ] Array.new と Array::new の違いは何ですか?
501 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 12:40:02 ] >>500 字面の雰囲気
502 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 12:41:33 ] >>500 スクリプト作者の出身言語および硬直思考の頑な度
503 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 12:45:21 ] >>500 タイプ数 ネタなのかも知れんが、一応マジレスしとくと定数とかのからみで "::" を使うと 面倒引き起こす可能性が無いとはいえないから、理由が無いなら "." を使っとこ
504 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 12:56:20 ] メソッド起動に :: を使うことは Ruby では極めて稀というかメリットは何もないよ 他人の書いたスクリプト中で クラス::メソッド という記法を見つけたら心の中でm9(^Д^)プギャーしとくといい 自分から使う理由はないからさ
505 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 13:01:33 ] >>501-504 サンクス 違いはないけど、ドットを使ったほうRuby流なんすね
506 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 13:29:36 ] クラスメソッドとインスタンスのメソッドの呼び出し方に違いはありますか
507 名前:デフォルトの名無しさん [2009/01/14(水) 16:59:10 ] rubyでアンテナサイトつくってみたいんですけど 何をしたらよいのかわかりません。 何かよい書籍とかありませんか? 実際のアプリケーション作成となると、全くわかりません。
508 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 17:01:03 ] >>506 ないっす File = Class.new(IO) def Fie.basename(...) ... end File.basename("aaa/bbb") # => "bbb" クラスもClassクラスのインスタンスなもんで。
509 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 17:59:41 ] (゚∀゚)ラヴィ!!
510 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 18:26:19 ] >>507 作るな
511 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 18:35:30 ] まあねえ ネットに関するプログラムは自力で学んでもらってなんぼだしな 何していいのかわからないなら作るのはまだ早い
512 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 18:56:25 ] アンテナみたいな、作り方によっては他人に迷惑をかけまくるものは、 「何をしたらよいのかわかりません」レベルの人間には手を出して ほしくないね。 とりあえずもっと別のところから修行するんだ!
513 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 19:13:47 ] その別のところというお題で適当なものを考えてあげようか。 初心者が上達するには題材が必要だろう。 youtubeのRSSを定期的にとってきて、関心のあるキーワードに引っかかったエントリをメールで送信してくれるようなプログラム。
514 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 20:51:58 ] >>507 まずはHTTPの仕組み、それと既存のアンテナがどんなことやってるのかを学ぶべき 513のお題も学習に良さそうだ ただメール送信はちょっとややこしいから、エントリの表題をシェルに表示するぐらいでいいかも
515 名前:デフォルトの名無しさん [2009/01/14(水) 21:58:54 ] すいません、まだドラクエやってるんですが、竜王ってどこにいましたっけ?
516 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 21:59:53 ] 竜王城
517 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 22:00:52 ] 玉座の後ろの隠し階段だよ
518 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 22:12:27 ] ryuou.castle.search('ryuou')
519 名前:デフォルトの名無しさん [2009/01/14(水) 22:15:02 ] 一緒に世界征服しようとしたらバッドエンドだ、気を付けろ
520 名前:デフォルトの名無しさん mailto:sage [2009/01/14(水) 22:26:02 ] 昔ファミコンでやってた時何も知らずにバッドエンドだった時は放心した。。。 パスワードとらずにやってたから初めからやり直しだったなwww 苦い青春だったぜ
521 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 00:41:39 ] Mac OS X で ruby-1.9.1-rc1 をコンパイルすると、i686ではなくi386になる。 $ ruby -v ruby 1.9.1 (2008-12-30 patchlevel-0 revision 21203) [i386-darwin9.6.0] i386用にコンパイルされていると遅いよね? i686用にコンパイルしたいんだけど、どうしたらいい?
522 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 04:03:10 ] 誰かrarff使っている人いますか?
523 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 07:29:43 ] >>520 2か3で誰かと入れ替わるイベントもあったよな。どっかの王様だっけ? あん時はパニックになって友達に泣きついたが、あとから考えると 恥ずかしかったな。
524 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 08:41:56 ] 古いバージョンで動いてたスクリプトを最新版で動くようにする変換機とかありますか?
525 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 10:03:15 ] >>524 原理的に無理でしょう 人間の手で書き換えるしかないんじゃないかと
526 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 15:20:40 ] >>523 3で王様になるイベントだな。 あれは最初どうにもならんでリセットしたわw
527 名前:デフォルトの名無しさん mailto:sage [2009/01/15(木) 17:31:34 ] irb> file.scan(re[:method]) RegexpError: Stack overflow in regexp matcher ぬう これでカッコ多いか生意気な
528 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 04:09:51 ] 下位互換性確保のために、古いバージョンの実行環境を残しておくのは重要。
529 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 05:16:24 ] Ruby 初心者スレッド Part 22 pc11.2ch.net/test/read.cgi/tech/1221467121/322 322 名前:デフォルトの名無しさん[sage] 投稿日:2008/10/02(木) 18:02:43 バッチファイルにしてやればエラーが出てもポーズさせるようにできるよ。 ruby -x "%~0" || pause と書けばエラーが出たときに限ってとまる。 test.bat ruby -x "%~0" pause goto :eof #!ruby put "hello"
530 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 05:18:42 ] うぉ途中で送信した >>529 について質問なのですが、 ruby -x (スクリプト名) と指定することはどういう意味があるのでしょうか? 特に -x なのですが、マニュアルを読んでも意味がわかりません。 これはバッチを実行した時にその作業ディレクトリをスクリプトのディレクトリに移動するという意味でしょうか?
531 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 05:32:56 ] #!ruby より上を読み飛ばすってことじゃないかな? 全体でバッチファイルになってるけど、rubyスクリプトとして実行されるのは下の2行だけっていう。
532 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 10:23:47 ] 最近、『ケント・ベックのSmalltalkベストプラクティス・パターン』に中身が似てるっぽい 『実装パターン』て本が出ましたが、Ruby使いにとってはどちらがより役に立ちますか? 前者がSmalltalkのコードで説明してて、後者はJavaですよね。 両方読んでみた人いますか?
533 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 11:55:55 ] >>532 似たことが書いてありますが、SBPPは動的言語向け、IPは静的言語向けの内容なので どちらかを選ばなければならないなら、Ruby使いにはSBPPのほうを薦めます。 もちろん、お金と時間に余裕があるならば、両方読むのが吉です。
534 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 13:30:06 ] >>531 あーーそういう意味か!わかりました。 batファイル自身がRubyスクリプトになっててそのまま実行できるようになってるんですね。
535 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 20:29:35 ] win32oleをつかってADO経由でsqlserverのテーブルに 対して読み書きを行おうと思っています。 connectionオブジェクトのゲットは出来ました。 recordsetオブジェクトのゲットも出来ました。 recordsetの各feilds("項目名").valueに値をセットして updateメソッドで反映出来るのも確認できました。 「よし、出来た」 そう思ったのもつかの間。 「テストテーブルだけど初期値(null)に戻しておくか」 そう思った時に壁につぶかりました。 rsTest.feilds("項目名").value = nil こうすると例外が出てしまいます。 初期値(null)が入っている時は p rsTest.feilds("項目名").value 結果:nil になったのですが…。 DBのnull≠nilで初期値がp関数でnil表示されるのは 型が返還された結果だというのはおぼろげながら 想像はつくのですが、ではADOのFeildオブジェクトに nullをセットするにはどうしたらいいのでしょうか? レコードセットでの操作を諦めてSQL文で操作した 方がいいのでしょうか? 環境 OS:WINDOWS2000 rubyのバージョン1.8
536 名前:デフォルトの名無しさん mailto:sage [2009/01/16(金) 21:10:26 ] うちはnilで出来てる
537 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 00:01:52 ] ADOのconnectionが作れたならSQL発行すればいいじゃん
538 名前:535 mailto:sage [2009/01/17(土) 02:06:05 ] >>536 nilのままでOKなんですか。 となると呼び出し方がおかしいとか バージョンとかの相性の問題ですかねぇ >>537 最終的にはそうなりそうです。 ただ、nil以外は値をちゃんと設定できるだけに 何か手順があるのかなと思いまして。 まぁ、ちょっと悔しくてなんとか 足掻けないかなぁと思っただけなんです。
539 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 06:38:14 ] ml.postgresql.jp/pipermail/pgsql-jp/2006-November/021242.html
540 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 06:50:04 ] ttp://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=59578;id=excel
541 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 07:13:16 ] ttp://www.atmarkit.co.jp/fdotnet/basics/adonet06/adonet06_03.html
542 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 07:49:14 ] >>533 ありがとうございます。参考になりました。
543 名前:535 mailto:sage [2009/01/17(土) 09:43:17 ] >>539-541 ありがとうございます。 Ruby側じゃなくて、ADOサイドの問題の可能性が高そうですね。 色々試してみます。
544 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 10:28:41 ] テーブルの定義の問題だと思う
545 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 11:11:32 ] 自分のコーディングが怪しいと思わないところが問題だと思う
546 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 14:14:56 ] PStore.new('test.pstore').transaction(read_only=true) do |pstore| ... end の read_only=true がただのメソッド説明用の表現であり、 実際は引数に true を渡す普通のアレだということを数年使ってきてやっとさっき気づいた PStore.new('test.pstore').transaction(true) do |pstore| ... end pstore の時だけなんか引数で代入?みたいな特別な記法があるんだなーとずっと思ってた
547 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 15:01:17 ] 特別な記法はある
548 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 15:49:46 ] >>547 特定のクラスだけ通用する記法みたいなのは特にないよ 返り値が評価されるだけだ
549 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 16:06:28 ] いや、トップレベルに read_only= という関数的メソッドを定義するライブラリかもしれないじゃないか
550 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 03:57:37 ] KDE3 の korundum.rb にはあった、KDE モジュールの ListView クラスと ListViewItem クラスが、 KDE4 の korundum4.rb にはありません。 これは何か別のクラスで置き換わったのでしょうか。 よろしくお願いします。
551 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 15:25:00 ] ちょっとした質問があります。 UTF-8(BOM付き)とUTF-8n(BOMなし)を判別する簡単な方法はありませんでしょうか? NKF.guess だと 両方とも 5(=UTF8) としか帰ってこず、 判別できませんでした。
552 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 15:28:41 ] 対象をUTF-8のBOMと照合したらいいじゃまいか
553 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 15:29:45 ] BOMとマッチさせるだけだよなぁ。
554 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 15:55:56 ] 特定のウィンドウやソフトから流れる音楽の音量を音楽編集ソフトで音量増幅したようにリアルタイムで増幅したいのですが。 ルビーでできますか。どのような方法で可能なのですか。
555 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:09:01 ] >>554 できるとしてもRubyとしての仕事ではなく、 他のプログラムのコア部分に処理を形通り依頼する(データを丸投げして呼び出す)というやり方になる Rubyは関係ないな
556 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:16:20 ] >>550 一応答える 知らんがな KDEスレのほうがたぶん変更理由とかに詳しいと思われ
557 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:26:36 ] >>554 OSやウィンドウ(アプリ)が何なのかによるんじゃないの? ↓LeopardでAppleScriptを介してiTunesのボリュームを変える とか書かれても参考にならんでしょ? require 'osx/cocoa' include OSX def iTunesVolume(volume) script = NSAppleScript.alloc.initWithSource <<-EOF tell application "iTunes" set sound volume to #{volume} end tell EOF error = OCObject.new script.executeAndReturnError(error) end
558 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 16:33:04 ] >>556 そうですか。すまんす。 KDEスレを探してみます。
559 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 17:21:34 ] >>557 特定の曲だけにしたいんです
560 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 18:04:17 ] .wavとか.mp3とかの元データを変えずに、 再生中に特定の曲だけボリュームを上げたいってことか。
561 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 18:06:14 ] Windowsなら腐るほど該当アプリケーションあるけどな
562 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 18:21:32 ] >>560 >>561 その方は私の質問に便乗している方ですのでお間違いないように。 私の希望はあくまでも、ウィンドウやソフトから流れる音をミュート以上にリアルタイムで増幅する方法です。 >>555 >>557 そうですか..。 いや、SDLとかいうルビーのゲーム用ライブラリーで音楽が扱えていたことと、 パソコン上で再生された音や特定のウィンドウの音を録音できるフリーウェアがたくさんあったので、そんなに難しいことではないのかなと質問させていただきました。 ミュートの調整による増幅以上に増幅する方法をさがしているので。
563 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 19:10:47 ] 意味が分からない
564 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 19:25:49 ] >>562 他のフリーウェアがどうやってるのかは分からないが Ruby覚え立てでスパッと出来るほど簡単なものではない OSによってもやり方が違うし
565 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 19:52:49 ] ミュートの意味がおかしくね?
566 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 20:37:45 ] >>562 出来ないから諦めろ、て言われたら諦めてくれる?
567 名前:デフォルトの名無しさん [2009/01/18(日) 21:30:31 ] >>564 OSはウィンドウズです。 >Ruby覚え立てでスパッと出来るほど簡単なものではない そうですか?初心者向けと聞きましたが。 それに分からないから(これから勉強するので)初心者質問スレに質問したのですが。 >>566 分かる人を待ちますよw
568 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:32:54 ] このスレは成りすましお断りですよ
569 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:44:28 ] >>567 初心者向けだと言ったやつに聞けばいいのでは? 特定のアプリを外部制御するならまだしも Windowsで再生してる音の波形から曲を判定し音量コントロールなんて俺はやりたくない。
570 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:50:22 ] タスクトレイにある「音量」をいじればいいよ。 それと同等の操作ならRuby初心者でもできるだろうけど それ以上を求めるなら間違いなく待ちぼうけになる。
571 名前:デフォルトの名無しさん [2009/01/18(日) 21:54:19 ] >>569 >特定のアプリを外部制御するならまだしも >Windowsで再生してる音の波形から曲を判定し音量コントロールなんて俺はやりたくない。 pcに流れる音全体でもいいですよ(できれば個別にですが)。 ただリアルタイムで音量を増幅できれば。 それとフリーの録音かソフトが個別の音を録音できていることから考えると、 pc上に流れた全ての音がミックスされてスピーカーで流れているだけで、 スピーカーから流れる前段階のどこかで、個別の音声はプログラムで取得する方法があるような気がします。
572 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:56:21 ] よくわからないが,>>561 や>>567 を見ると煽りたくなる衝動に駆られる この気持ちどうしよう
573 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:56:27 ] だから、できるって ただし、Rubyは無関係 他のサウンドとOSの深いとこを触るドライバやライブラリを直接いじるしかない そのいじり方を学んでから、Rubyで通信する方法を聞きに来な
574 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 22:05:26 ] >>567 >そうですか?初心者向けと聞きましたが。 Rubyは初心者向けかもしれんが お前がやろうとしていることは、確実に上級者向けどころか前人未踏に近い領域だ > それに分からないから(これから勉強するので)初心者質問スレに質問したのですが。 他の人も散々言ってるように、それは「Rubyの」初心者質問スレで解決できる質問じゃない 素直に諦めてくれ
575 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 03:00:31 ] >>567 できりょ。 ・Rubyをインストールする ・Vistaをインストールする ・タスクトレイから音量ミキサを開く ・アプリケーションごとの音量を調整する な?簡単だろ? ちなみに、Win32のデバイスドラバとかWin32APIとか絡みそうなものはRubyと激しく相性が悪い。 そもそも、Win32をゴリゴリやるのは向かないだろ。 C#(.NET)とかC++の方がまだ向いてる。
576 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 04:25:20 ] >Win32のデバイスドラバとかWin32APIとか絡みそうなものはRubyと激しく相性が悪い。 mjsk kwsk
577 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 05:10:11 ] >・Rubyをインストールする >・Vistaをインストールする >・タスクトレイから音量ミキサを開く >・アプリケーションごとの音量を調整する これは上から順に見てワロタwww 上から順にしようとしたらできない事書いてあるし久々オモローwww
578 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 08:55:50 ] オモローって自分から使ってる人久しぶりに見た
579 名前:デフォルトの名無しさん [2009/01/19(月) 09:39:59 ] rubyのRPMを探しているのですが、見つかりません どこにありますか?
580 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 09:53:00 ] >>579 最新のものにこだわらなければ、 大抵のLinuxディストリなら標準で入ってるんじゃね? OSと、欲しいRubyのバージョンは何?
581 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 11:22:21 ] yum install ruby で入らないのか? 下手に探すより環境をしっかりさせろ。
582 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 11:23:09 ] yum じゃなければ apt-get
583 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 11:56:52 ] 1.8.6に1.8.7のinjectでのシンボルによる二項演算子指定を実現するのは以下でいいと思います? class Symbol def to_proc proc { |obj, *args| obj.__send__(self, *args) } end end module Enumerable alias _inject inject def inject(*init, &block) if not block begin return _inject(&init[0]) rescue return _inject(init[0], &init[1]) end end _inject(*init, &block) end end
584 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 18:14:58 ] emacs(meadow)でRuby書くときにこれこそ入れておけっていうelispありますか? ruby-modeとruby-electric位しかruby周辺は入れてません.
585 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 18:35:54 ] ハッシュってキーもバリューも日本語いけるんだな!ちとおらびっくりしたぞ!
586 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 22:16:48 ] 激しく実行環境依存で嵌まりそうだけどな。
587 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 22:24:07 ] 可搬性がなければならないプログラムを作らなければならない必要性というのは 現代のRuby用途では意外と低い
588 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 22:58:55 ] 自分んとこ(か、日本語が通ることが確定してる特定の環境)で使っておしまいというスクリプトのほうが多いな、確かに 外に出すんでなけりゃ日本語使ってもいいと思うけどね 日本語べったりになってるとアルファベットでどう書くか悩むことになるけど
589 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 23:01:44 ] 形態素とか使ってたら日本語使った方が簡単そうだな
590 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 00:22:14 ] Ruby1.8.6です。REXMLのverは3.1.6です。 URLを与えたらそこから文書を抜き出してきて、それをyahooの形態素解析にかけるとXML形式でレスポンスが返るので それをREXMLで解析するプログラムを作ったのですが、 wikipedia(全体ではなく開けるものもある)やその他一部のページで、REXMLの解析中にParseExceptionエラーが起きてしまうのですが、 エラー文を見ても意味がよく分からなく、同じような症状?が出た方も中々いないようなのでお手上げです。 以下エラー文です。 #<REXML::ParseException: Declarations can only occur in the doctype declaration. Line: Position: Last 80 unconsumed characters: <!doctype html public "-//W3C//DTD HTML 4.01//EN" "www.w3.org/TR/html4/str>
591 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 00:32:17 ] 明らかにXMLじゃないじゃん、それ Yahooからの返事がXMLじゃないエラーか何かなんだと思うよ
592 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 00:35:52 ] !DOCTYPE宣言が二重になってるとかなんだろうな
593 名前:590 mailto:sage [2009/01/20(火) 01:51:53 ] >>591 エラーでしたら400等が表示されるはずなのですが、、 >>592 二重になるのってどこが問題なんですかね..
594 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 02:07:54 ] >>593 400等が表示って、ちゃんとHTTPレスポンスヘッダはチェックしてる?
595 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 02:09:06 ] しまった脊髄反射的なレスだった。 とりあえずREXMLに食わせるまえにファイル出力してみればいいよ。
596 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 02:33:58 ] エラーになるURL晒すのが早いと思うが
597 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 04:34:23 ] ネット系の問題に自分でデバックすら出来ないレベルか。なんか目的にたどり着くのは無理っぽい。 いつも使う必須のスクリプトが環境依存で引っ越して問題が出るのは良くある事。 まあその時に必要に迫られて書き直すと見通しよく成っていいプログラムに成る事は多いが。車輪の再生産気味だが。
598 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 06:11:08 ] リファクタリングが車輪の再生産って言われるとやる気なくします><
599 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 06:25:09 ] >>593 ステータスコードが200だからといって信頼していいわけじゃないぞ
600 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:21:46 ] ruby 1.8.6 WindowsXP SP3です。 実例ではないのですが、100までの数をカウントするプログラムに、 標準入力から入力された数字を現在の数字に足す機能を加えたいと思っています。 色々調べたところ、スレッドというものを使えばよいのかな、という結論に達したので 以下のようなプログラムを書いてみましたが、思うような動作をしてくれません。 どなたかお知恵を貸していただけないでしょうか? j = 1 t = Thread.new do while (j < 100) sleep 1 p j.to_s j += 1 end end while (j < 100) i = gets.chomp j += i.to_i end
601 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:41:42 ] これは・・・
602 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:45:58 ] 自然数k,p,q,m,nについて k=mp+nq(m>=0,n>=0)を満たす(m,n)の組の数をv(k)とするとき p=3, q=7, kが1から100までのときの結果vの一覧を出力したいです Rubyではどのように書いたらいいですか?
603 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:53:52 ] >>600 うちではうごいた
604 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:55:22 ] >>602 m=0あるいはn=0のとき自然数じゃなくなるけどいいの?
605 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:58:43 ] >>604 すみません間違えました x 自然数k,p,q,m,nについて o 自然数k,p,qについて あと、m,nは「0以上の整数」です よろしくおながいします
606 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:59:23 ] >>603 うちでは数の表示がgets.chompに邪魔されて、リターンを押すまで 数え上げるほうのスレッドの実行がとまっているみたいなんです。 環境はLinuxとかでしょうか?
607 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:09:14 ] >>606 cygwinです
608 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:10:44 ] >>602 p = 3 q = 7 (1..100).each do |k| v = 0 (0..(k/p)).each do |m| (0..((k-m*p)/q)).each do |n| if k == m*p + n*q v += 1 end end end print "v(#{k})=#{v}\n" end
609 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:20:36 ] >>607 ありがとうございます。 実際にこの処理を使用するプログラムでは拡張ライブラリ使用&exerbでexe化を 考えています。Cygwinでは正常にexe化できないようなのでmswin32でなんとかならないか もうちょっと調べてみます。
610 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:21:13 ] >>600 mswin32ではgetsがブロックする。
611 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:27:05 ] リファレンスのどっかにあったと思ってたんだけど、やっと見つけた。 www.ruby-lang.org/ja/man/html/trap_timeout.html
612 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:30:49 ] >>608 こうかな p = 3 q = 7 t = 0 u = 0 (1..100).each do |k| v = 0 (0..(k/p)).each do |m| if (k-m*p)%q == 0 v += 1 end end print "v(#{k})=#{v}\n" u += v if v > 0 t += 1 end end print "total #{t}, #{u}\n"
613 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:41:30 ] >>609 exerb+cygwinでexe化うまくいってるよ なんか変なライブラリくっつけてない?
614 名前:デフォルトの名無しさん [2009/01/20(火) 09:59:05 ] >>602 参考になるのかな ttp://d.hatena.ne.jp/octech/20080118
615 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 10:09:17 ] アンカミス >>600
616 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 10:34:43 ] >>614 ドンピシャです。ありがとうございます! >>610-611 なるほど、mswin32だと修正を待つしかない・・・のかな? と思ったけど回避策ってあるもんなんですね。引き出しを増やさなきゃ。 >>613 win32/sapi5を使っているのと、HDD容量に難があったのでCygwinは入れてませんでした。 2日前にHDDを注文したので届いたらCygwinでもやってみます。 レス下さった方々、ありがとうございました。
617 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 12:17:42 ] >>616 >なるほど、mswin32だと修正を待つしかない・・・のかな? バグじゃないから修正はされないんじゃないかな。 1.9では問題ないみたいだけど。
618 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 12:52:49 ] >>608 共通一次ですね
619 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 12:54:26 ] >>616 _kbhit入れたバージョンでも 一文字だけ入れてenterしないときって止まるよね
620 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 13:05:14 ] >>617 バグじゃないんですかね?ruby-list 36068ではバグみたいに言われてる気がするけども。 1.9では問題ないとは!バージョンあげようかなぁ。 >>619 止まりますね。でも、そのほうが便利な気がしないでもないです、私の場合。
621 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 13:51:52 ] >>614 の方法だとキー入力するまでひたすらビジーループなんだが
622 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 15:42:40 ] >>620 Windowsでselectがコンソールに対して効かないのは仕様だろう。 バグだと思うならMSに言ってみるのがいいんじゃないか。
623 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 19:56:56 ] >>621 そんなことないですよ
624 名前:デフォルトの名無しさん [2009/01/20(火) 22:05:16 ] h = {"direct"=>"5", :list=> {"6"=>"南西","7"=>"西","8"=>"北西","1"=>"北","2"=>"北東","3"=>"東","4"=>"南東","5"=>"南"}} 上のハッシュをh.ya2yaml すると direct: "5" ? !ruby/symbol list : ? "1" : 北 ? "2" : 北東 ? "3" : 東 ? "4" : 南東 ? "5" : 南 ? "6" : 南西 ? "7" : 西 ? "8" : 北西 となるのですが、’?’はどういう意味ですか。 そもそも "8":北西 という感じで出力されると思っていたのですが, 期待と違った結果でした。 ruby 1.8.6 (2008-03-03 patchlevel 114)
625 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 22:48:19 ] 1.9っていつリリースされる予定なの?
626 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 01:17:39 ] RC2出てから
627 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 02:00:38 ] >>626 知らないなら答えきゃいいじゃん
628 名前:デフォルトの名無しさん [2009/01/21(水) 02:08:46 ] Japanese O.K.
629 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 02:09:29 ] RC2出たな
630 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:13:17 ] a=[1,1,1,2,2,3,4,5,5,5]の配列を b=a|aにしたら[1,2,3,4,5]となりますが、 1->3個,2->2個,3->1個,4->1個,5->3個のように どの要素が何個かぶっていたかというのはどのようにしたらいいでしょうか?
631 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:26:54 ] とりあえずは普通に数えればいい overlap = Array.new b.each do |bb| count = 0 a.each do |aa| count = count + 1 if aa == bb end overlap << [bb, count] end overlap.each do |i, n| puts "#{i} の重複は #{n} 個です" end めんどくさい人向け overlap = b.map{|e| [e, a.grep(e).size] }
632 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:27:07 ] h=Hash.new h.default=0 a.each do |i| h[i]+=1 end 俺も初心者に毛が生えた程度なので、より良いのがあれば指摘求む
633 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:28:53 ] def uniq_c(org) counts = {} org.uniq.each{|e| counts[e] = org.count(e) } counts end とか。#countがどっから入ったか怪しいけど。 こーいう要望は割と定番なのでRuby "uniq -c"とかでググるとよろし
634 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:32:36 ] 確認したらArray#countはRUBY_VERSION >= '1.8.7'だった。代わり org.count(e) -> org.select{|x| e == x }.size
635 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:40:38 ] 最初のが一番マシだな それ以降のはただのオナニー もしかしたら演算記号メソッドで何かどうにかすればなんかどうにかなると思ったかもしれないけど、 残念ながらそういうのは無い 2つの配列の関係を解析して返すメソッドというのはあっても面白そうだとは思うが、きっとおおむね無駄だ
636 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:53:14 ] >>631-634 ありがとございました 書き込んだ後,配列について調べてたらuniqっていうのがあるんですね. >>635 そうです.なにかメソッドがあるのかなと思ったのですが. 数え上げしていけばいいくらいなんで無駄になりますよね.
637 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 05:27:54 ] どこがオナニーなんだよ。数え上げる時は普通にHashを使うだろ つーか>>631 の最初のコードはズボラ過ぎる
638 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 05:38:19 ] a.inject(Hash.new{0}){|h,v| h[v] += 1 ; h }
639 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 05:54:27 ] >>632 が一番マシですね
640 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 06:12:44 ] 普通に考えれば>>632 だよな 少なくとも「最初のが一番マシ」はねーよw
641 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 09:10:58 ] ハッシュは順番が保存されないのがなー
642 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 09:22:00 ] この場合はたぶん順番必要ないよね
643 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 11:52:07 ] 正規表現を使って一致を見てるんだけど 正規表現のパターンの中に「図」っていう漢字をいれると warning: regexp has `}' without escape ってwarningでるんだけど何とかならないですか?
644 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 11:55:22 ] その漢字の文字エンコード(普通、そのスクリプトのファイルの文字エンコード)を正規表現に指定しろ っていうか、そのへんは解説なりなんなりでフォローがあったと思うんだが
645 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 12:04:10 ] >>643 ファイルのエンコードは何つかってる?
646 名前:643 mailto:sage [2009/01/21(水) 12:30:03 ] >>644-645 返事ありがとうございます。 /図/ ってやってるのでエンコードの指定は特に何にもやってないです Regexpクラスかなんかをつかってそのインスタンスにエンコードを指定するってことですか? ファイルはShift-Jisでやってます
647 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 13:00:30 ] require 'jcode' $KCODE = 'SJIS' でとりあえずいいんじゃないの
648 名前:643 mailto:sage [2009/01/21(水) 13:06:04 ] >>647 うまく行きました ありがとうございます
649 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 13:07:18 ] jcode厨がまだいたとは jcodeは正規表現には全く関与しない
650 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 13:39:33 ] >>643 -Kオプションについて調べるがよい
651 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 14:10:38 ] いちいち起動するたびに -K オプション付けなくちゃいけないの?
652 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 14:16:18 ] 1行目 #!ruby -Ks
653 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 14:29:03 ] >>652 i see.
654 名前:デフォルトの名無しさん [2009/01/21(水) 18:46:15 ] データが文字列の内容に数字をふったものを対象にして 数字でソートする場合どんな感じでやればいいでしょうか。 文字数字のままやると小さい数字が後にきたりして、ソートがおかしくなるのですが。
655 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:01:10 ] 全部同じ桁にする
656 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:02:29 ] sort メソッドの説明は気の利かない書き方をしてるからね あれはブロックの結果がどうなるかでソートされるんだ irb> puts ['30歳', '2歳', '10歳'].sort 10歳 2歳 30歳 irb> ['30歳', '2歳', '10歳'].each{|a| puts a.scan(/\d+/)[0].to_i} 30歳 2歳 10歳 irb> puts ['30歳', '2歳', '10歳'].sort_by{|a| a.scan(/\d+/)[0].to_i} 2歳 10歳 30歳
657 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:05:00 ] >>654 数字を振るというのが文字列と別枠なら hash = {3=>"c",2=>"b",1=>"a"} hash.sort.map{|v| v.last}
658 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:12:11 ] irb> ['30歳', '2歳', '10歳'].each{|a| puts a.scan(/\d+/)[0].to_i} 30歳 2歳 10歳
659 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:25:19 ] >>658 あ、すまんね そこのへんだけ直前に書き換えたんだ 案の定間違ってるな irb> ['30歳', '2歳', '10歳'].each{|a| p a.scan(/\d+/)[0].to_i} 30 2 10 ってことで、ブロック内で数字部分を抜き出して整数にしてるんだということがわかってもらえればよかった それぞれの要素に対して「数字部分を抜き出して整数にしたもの」で比較してソートすれば、おそらくうまくいく
660 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 01:31:38 ] >>600 とりあえずC#(.NET3.5)では int j = 1; Thread t = new Thread(new ThreadStart(() => { while (j < 100) { Thread.Sleep(1000); Console.WriteLine(j); j += 1; } })); t.Start(); while (j < 100) { String i = Console.ReadLine(); j += Convert.ToInt32(i); } これが動いたから、IronRubyなら動くかもよw
661 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 04:51:23 ] >>659 そこまで書いたなら最後まで書けばいいのに。 ['30歳', '2歳', '10歳'].sort_by {|a| a.scan(/¥d+/)[0].to_i } または ['30歳', '2歳', '10歳'].sort_by {|a| a =~ /¥d+/; $&.to_i }
662 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:26:38 ] ['30歳', '2歳', '10歳'].sort_by {|a| a[/\d+/].to_i }
663 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:40:21 ] いや短くすることに意味はないから そんなこと言ったら %w.30歳 2歳 10歳..sort_by{|l|l.to_i} が標準で最短だぞ
664 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:45:30 ] たぶん単位とかだと思うけど、そういうのデータの中に含めるのってどうなんだろう 「1.5メートル」より「90センチ」の方が大きくなったりするんだろ? さすがに「2メートル」と「5キロ」とかは混在していないと思うが
665 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:51:57 ] 生のデータを生のまま極力取り込んでおきたいという需要はそこそこあると思うよ 数値だけとかに正規化しとけというのはいやもう全くその通りではあるんだが
666 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 14:58:56 ] >>665 そういうのはラッパクラス作って都合の良い方でアクセスできるようにしとく
667 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:11:59 ] >>664-665 の見てる世界と>>666 の見てる世界は違うな
668 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:20:43 ] データがアクセスされるのは一つの言語からだけとは限らないぞ 3つ言語使ってたら全部の言語でラッパークラスを実装するのか?
669 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:32:09 ] それはまんどくさい(´・ω・`)
670 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:34:58 ] >>668 1つの言語からだけのことのほうが圧倒的に多いと思うがどうかね 君は移植性の高いC言語を使うべきだと思うよ
671 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 15:46:13 ] >君は移植性の高いC言語を使うべきだと思うよ うむ
672 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:10:58 ] データきたないと前の担当者に殺意を抱いたりするよなw
673 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:24:45 ] >>667 全くだ 汎用DBソフトに格納される業務データしか扱ったことがないのだろう
674 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 16:33:35 ] ほんとにどうでもいい話なんだけど >>673 そういう人って稀にいるよね 業務でしかプログラミングに関わってない人 それはそれで仕事として効率もいいし好ましいことも多いが、話が全然合わんので困る
675 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 20:13:33 ] 仕事でやっててプログラミングを好きな人はまだ良いが 好きでもなく仕事だからってやってる奴のソースはだいたい汚い。 そういう時は殺意抱くなwww
676 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 01:33:48 ] >>664 >たぶん単位とかだと思うけど、そういうのデータの中に含めるのってどうなんだろう Measureというライブラリを使うと単位系を操ることができる ttp://d.hatena.ne.jp/mrkn/20081025/sappororubykaigi01
677 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 02:30:36 ] >>675 たしかに a1=1 a2=2 a3=3 ... と延々と書かれていたことがある 配列+ループにするとか考えろと思ったが 行数で単価計算されるなら上の方が正解なのかも知れない
678 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 03:00:00 ] 配列として保持するコストを嫌ったのかもしれない
679 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 03:09:40 ] 世の中には虚しいこともあるんだね
680 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 03:57:53 ] >>678 がたぶん正解だと思う 行数稼ぎか配列利用法が理解できなかった(または利用禁止)な可能性も充分あるが
681 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 04:01:09 ] つか、言語と実行環境に強く依存するな 配列にしてしまうと保持と参照コストが妙に高くなる言語というのはなんかどっかにあったはず
682 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 04:39:18 ] array=[a,b2c,d2e,f,g]を[a,[b,c],[d,e],f,g]に分解するにはどうすればいいですか?
683 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 04:46:41 ] >>682 標準的な方法はないから、まあ好きにやれ 要素ごとに正規表現で分割して自力で配列を作るしかないな
684 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 04:55:12 ] >>682 split("2")とpushでOKじゃね?
685 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 05:18:20 ] [a,b2c,d2e,f,g] は ['a','b2c','d2e','f','g'] という意味なのか?
686 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 05:23:33 ] >>685 この文脈ではそう考えるのが自然じゃね 配列の要素が参照している変数名の英字部分を ネストした配列の要素の参照の変数名に反映したいという込み入った希望かもしれんが
687 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 05:34:30 ] こうですか?わかりません >> ['a','b2c','d2e','f','g'].map{ |e| /2/ =~ e ? e.split(/2/) : e } => ["a", ["b", "c"], ["d", "e"], "f", "g"]
688 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 06:33:01 ] EOFにマッチする正規表現、または"末尾"がEOFであることを手短にチェックする方法ないですかね キー1: 値1 キー2: 値2[EOF]
689 名前:227 mailto:sage [2009/01/23(金) 07:22:40 ] 昔のことになりますが、カテゴリ取得に関して質問したものです。 ログを見ていたら同じようなことが質問されていたのでまた、質問をさせていただきます。 search('a').select{|a| /cat_/ =~ a['href']}.map{|a| a.inner_text} カテゴリが一つだけ指定されている場合は上のものでうまく言っていたのですが、 一つの記事で二つ以上指定されている場合にうまくいきません。 理想としてはcategory=["A",["A","B"],"A","B",["A","B","C"]] のようにしたいのですが
690 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 07:50:36 ] rubyってhtmlspecialcharsあるの?
691 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 07:52:37 ] >>689 もっと具体的なhtmlの例を出してくれないと答えられないような…
692 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 07:58:05 ] >>689 selectってなんだっけ、findだっけfind_allだっけ …allのほうか カテゴリってのは一番下にあるやつだな、他のブログではタグとか言われてるものだ >>246 では例が悪いので、適当な大手のアルファルアモザイク例に出すぞ ttp://alfalfa.livedoor.biz/archives/cat_50026947.html これから [ ["ネット・PC・技術", "短レス"], ["ネット・PC・技術", "短レス"], ["ネット・PC・技術", "知識・薀蓄"], … ] という配列を抽出したいという要望でいいか? 「記事単位でsearchかけてから、それの返り値のHpricot::Elemなどに対してmapを使う」が答 なにをどうやって記事単位とみなすかはそのサイトのHTML構造読め
693 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:11:05 ] >>690 あるよ
694 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:17:26 ] >>691 >>692 さんが例に上げたサイトのようなものです。 >>692 さんが書かれたような配列です。記事単位はデザインの雛形によって変わってくるので調査済みです。 今移動中なんで確認できませんが, 記事単位.search('a').select{|a| /cat_/ =~a['href']}.map{|a|a.inner_text}みたいなものですか?
695 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:17:35 ] require 'rubygems' require 'hpricot' require 'open-uri' require 'kconv' doc = Hpricot.parse(URI.parse('blog.livedoor.jp/dqnplus/ ').read) result = doc.search('div.hentry').map{|div| [div.at('h3.title%20entry-title').inner_text, div.search('a').find_all{|e| /archives\/cat_/ =~ e['href']}.map{|e| e.inner_text}] } result.each do |post| puts "#{post[0]}[#{post[1..-1].join(', ')}]".toutf8 # 画面表示のエンコードに合わせること end けっか: FF11、バグを利用してアイテムを複製した500人の廃人を強制退会処分に [びっくりニュース, ゲーム] 次期ロシア正教会総主教のネット人気投票、日本人大主教がダントツ1位に…「日本アニメのファンが原因」とロシアマスコミ [びっくりニュース, 国際] 「孫悟空」の起源は韓国のサルだった…韓国教授が主張 [痛いニュース, 韓国・北朝鮮] パッケージに萌えキャラが描かれた「ツンデレカレー」「萌カレー」他が馬鹿売れ [おバカなニュース, 食生活] 「若者、結婚が遅い…どんな恋愛してるのか」「日本はなぜ子供産むのが難しいのか」など、小渕大臣が少子化分析チーム [痛いニュース, 政治・経済] … タグのネスト云々はこういうことをやりたいのだと推測 タグが1個しかない場合も要素1の配列になるので注意
696 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:23:21 ] >>695 ありがとうございます。すぐに確認できませんが,帰宅したら確認します!
697 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:27:31 ] スクリプト作るの早いな
698 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:30:58 ] >>697 過去に似たようなの作った経験があれば見当つくから あとはサイトの特徴調べるだけでこんなもんよ 早い人はもっと早いはず というか、このスクリプトは見たままの処理しかしてないので泣きたくなるほど遅い なんかスゴい人がXPathとか駆使して爆速に仕上げてくれることを期待
699 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:32:08 ] >>693 名前は?
700 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:42:52 ] >>699 def CGI::escapeHTML(string) string.gsub(/&/n, '&').gsub(/\"/n, '"').gsub(/>/n, '>').gsub(/</n, '<') end ということで CGI::escapeHTML require 'cgi' して使ってね シングルクオートをエスケープすることはありません
701 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:50:58 ] 今なら cgialt/util を薦めた方が良いのでは
702 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:52:46 ] 標準でなくていいのならたくさんあるよそりゃ 4つgsubするだけだから自前でやれというのもありだろうし cgiライブラリがCGI作成に最早使われてないのは公然の暗黙
703 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 08:56:32 ] 最近は文字列エスケープユーティリティと化してるな
704 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 09:39:17 ] ここでスモーカー抜けるのは痛いな
705 名前:704 mailto:sage [2009/01/23(金) 09:43:02 ] ごめんなさい
706 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:01:47 ] >>699 ttp://www.ruby-lang.org/ja/man/html/cgi.html 結構いろいろそろってる
707 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:03:15 ] 揃ってるも何も(PHPの)htmlspecialcharsの動作をするのは CGI.escapeHTML だけだぞ
708 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:12:43 ] >>707 全然知らんようだからほかにもいろいろあるって紹介したのだが URLエンコードするのありますか?とか追加質問されたらバカバカしいだろ リロードしてなかったから>>700 は気づかなかった
709 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:18:11 ] Ruby1.9が入っていないと端末に「アナログ」と表示する.bashrc - aikeの日記 d.hatena.ne.jp/aike/20090118
710 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:24:50 ] Rails1.2.6を使って作成しているのですが、selectを動的に変化させようとすると ActionView::TemplateError (undefined method `number_select' for #<HashWithIndifferentAccess:0xb722adf0> というのが出てしまいます。回避策があればご教授ください。 <やっていること> index.rhtmlの中を次のようにしています。 <div id="all"> <table> <tr><td id="first"><%= render :partial => 'first_info' %></td id="first"></tr> <tr><td id="second"><%= render :partial => 'second_info' %></td id="second"></tr> <tr><td id="third"><%= render :partial => 'third_info' %></td id="third"></tr> </table> </div id="all"> _first_info.rhtmlには次のような selectがあります。 <%= select(:first_info, :number_select, @numbers, {:selected => @select_value}, {:onchange => remote_function(:submit => :first_info, :url => { :action => :change_select }}) %> @numbersはコントローラー側で @numbers = ActiveSupport::OrderedHash.new してデータベースから値を格納しています。 _second_info.rhtml のテキストボックスに値を入力し、ボタンを押したら、その値をDBに登録し、_first_info.rhtmlの selectのリストに入力値を追加しようと以下のように処理しています。 1.コントローラーの_second_info.rhtmlから次の関数が呼ばれる def second データベースへ登録 @numbers = ActiveSupport::OrderedHash.new @numbers へデータベースの値を格納 @select_value = 1 end 2. second.rjsは _first_info.rhtmlを更新するため、次のようになっている page[:first_info].replace_html :partial => 'first_info'
711 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:28:02 ] >>710 【Ruby】Ruby on Rails Part6 pc11.2ch.net/test/read.cgi/php/1224838013/
712 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:42:15 ] instance_variable_set の 変数名に指定する文字列って、ユーザの入力そのまま渡しても大丈夫?
713 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 10:51:53 ] >>712 そのクラスでありえそうな変数名用文字の集合(おおむね英数字とアンダースコア)にマッチしないものは 事前に弾いとくとかしておいたほうがいいと思う あるいはアクセサの提供を条件にしておいて instance_methods に指定文字列があるかどうかチェックするとか 中のほうでevalしてるんじゃないかという疑問に答える知識はない
714 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 11:58:26 ] >>712 既存のインスタンス変数をどうされてもかまわないなら、大丈夫。 >>713 内部でevalとかはしてない。
715 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 12:19:33 ] >>710 >ActionView::TemplateError (undefined method `number_select' for #<HashWithIndifferentAccess:0xb722adf0> エラーの意味は分かってる? HashWithIndifferentAccess のオブジェクトに対して number_select メソッドを呼び出して、それで undefined method になっている。 呼び出すメソッド名を間違っていないなら、呼び出す対象となるオブジェクトを確認してみてはどうだろうか。 もしそれであっているなら、Railsのバグかもね。
716 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 19:59:53 ] 継承したクラスのオブジェクトの配列で困ってるんだけど class SuperClass def <=> other true end end class Class1 < SuperClass end class Class2 < SuberClass end arry = [] array << Class1.new array << Class2.new array.sort で、『Class1 と Class2 は比較できねぇよゴラ!』 といわれてしまうんだけど。 どうにかなんないかな? C++の SuperClassVecter* array = new SuperClassVecter() Class1* c1 = new Class1() array.push((SuperClass*)c1); Class2* c2 = new Class2() array.push((SuperClass*)c2); みたいなことがやりたいんだけど、よくわからんちん。
717 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 20:10:23 ] エラーメッセージを勝手に訳す人間に発展の未来はないのでよく覚えておくとええぞ あとマニュアルくらい見れ ttp://www.ruby-lang.org/ja/man/html/String.html#self.20.3c.3d.3e.20other > self <=> other > self と other を ASCII コード順で比較して、self が大きい時に正、等しい時に 0、小さい時に負の整数を返します。 ということで、<=> メソッドは整数を返すように作らなければ sort で比較できない
718 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 20:13:46 ] >>716 Comparableメソッドをインクルードしましょ
719 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 20:42:21 ] というか、基本的にはクラスが違うと比較はできないよ でもそれだと困るので (10 < 11.1 だとエラーで、いちいち明示的に 10.to_f < 11.1 しなければならないとか超困る) Rubyではcoerceのようなメソッドを作って汎用的なデータ構造に変換を依頼するというのが普通らしい でもめんどいので、スーパークラスで自分のデータの大きさを規定するというのはどうだろう class SuperClass def initialize(data); @data=data; end def <=>(other); self.length - other.length; end def length; @data.length; end end class Class1 < SuperClass; end class Class2 < SuperClass; end arr = [Class2.new('second'), Class1.new('first')] p arr.sort 結果 [#<Class1:0xb7c415f0 @data="first">, #<Class2:0xb7c41618 @data="second">]
720 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 20:53:57 ] >>719 標準の配列に入ってる状態で標準の sort をすると Class1 のオブジェクトが Class2 より前に出るとか そういうほのかに邪悪の香りがする処理をしたいのでは class SuperClass def <=>(other); self.class::PN - other.class::PN; end end class Class1 < SuperClass; PN=1; end class Class2 < SuperClass; PN=2; end class Class3 < SuperClass; PN=3; end arr = [Class3.new, Class2.new, Class1.new] p arr.sort [#<Class1:0xb7d0ce94>, #<Class2:0xb7d0cea8>, #<Class3:0xb7d0cebc>]
721 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 21:04:30 ] rubyのスレって親切に教えてくれるよね。 PHPは気持ち悪い連中ばっかりで寒気がする
722 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 21:15:30 ] どの言語も人気が出て使う人が増えてコモディティに接近するとああなるよ このへんの待遇は単にユーザーの数の少なさの裏返しというだけに過ぎない
723 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 21:36:47 ] ドキュメントが完備されていないから、まだまだまともな質問が来るので、 答える方もまだブチ切れてなわけだ。
724 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 21:49:05 ] でもオンラインリファレンスに乗ってることでもみんな寛容に答えてるよね。 新規参入促進にはいいのかな? 俺はまだ初心者だけどrubyは書いてて楽しいね
725 名前:716 mailto:sage [2009/01/23(金) 22:55:11 ] みんなありがとう。 継承クラスのどっからでも比較できるようになったよ! あと、ドキュメントって読みにくいよね。 せめて単語で引けるインデックスがあれば・・・ 月曜にRuby始めたばっかりなんだけど ドキュメント調べてる時間が9割以上ってどういうことなのさ! しかも知りたいことにはほとんどたどり着けない。
726 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 22:58:55 ] ソース嫁ってことなのか。
727 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:04:07 ] プログラミングなんて8割くらいは調べものだと思うよ 始めたばかりならなおさら でまあそれとは別にRubyのドキュメントは機能的に非常に貧弱だ どうにかしないといけないという話は出るが、本当にマシになったことはまだ一度もない
728 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:21:48 ] >>727 > プログラミングなんて8割くらいは調べものだと思うよ > 始めたばかりならなおさら おまいは時代に追い付け
729 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:25:03 ] >>728 打鍵時間以外はほとんど全部調べ物だと思うんだが 仕様書読んだりマニュアル読んだりRFC読んだりネットの事例読んだり
730 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:27:03 ] >>725 >ドキュメント調べてる時間が9割以上ってどういうことなのさ! 初心者はまず入門書から始めることをオススメする Webのドキュメントだけで済まそうとするのは、他の言語に精通している人だけにしとけ
731 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:30:16 ] 半分はテストじゃないのか?
732 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:32:38 ] そんな時間かかるか? っていうか、テストやらデバッグってプログラミング作成時間とは別にとって考えるもんなんじゃね?
733 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:36:59 ] Rubyのドキュメントががっかり品質なのはどう言い訳しても事実
734 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:44:52 ] どこに言い訳が?
735 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:47:03 ] 思春期後期の症例の一つです<言い訳してる人を見出したい
736 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:52:26 ] じゃあ>>733 は見えない人を相手してるだけか、失礼
737 名前:デフォルトの名無しさん mailto:sage [2009/01/23(金) 23:55:50 ] >>732 「テスト駆動開発(TDD)」「振る舞い駆動開発(BDD)」「継続的インテグレーション」あたりでぐぐれ。
738 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 00:57:16 ] >>725 ドキュメントはchm版を見るのがおすすめ ちゃんとキーワードでインデックスされてるのでメソッドを調べたりするのが早い
739 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 01:57:46 ] >>737 それだってカウントしないと思うぞ
740 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 06:56:49 ] 慣れないうちはchm版リファレンスマジおすすめ つーかRubyリファレンスががっかり品質だって言われるけど 他の言語のドキュメントってそんなに充実してたっけか? >>739 テストコード→アプリコード→テストコード→アプリコード→… の手順で進めるなら 両方ともプログラミング時間に含めるべきだろう
741 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 07:30:00 ] Ruby ドキュメントといえば Dave Thomas と Andy Hunt の Programming Ruby の Web 版が 見れたときは感動した。 日本語訳が出たときは、お布施のつもりで買った。
742 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 09:00:21 ] >>721 最近、php使い始めたんでphpの質問スレもいってるんだけど、 何故かみんな少しカリカリしているイメージw ただ、やぱphpはリファレンスマニュアルがしっかりしている(特に公式がすばらしい) のがいいわ。 マニュアルにコメントがつけられるらしくて(細かいところは知らん) FAQが補足されてることも多々ある >>740 chm使ってるけど、がっかり品質ということはないな・・・ サンプルコード的なのをものとか、メソッドに関するFAQとかをもっと載せて欲しいと思うことはあるが Rubyに慣れるまでは使いにくかったけど、慣れてからはそこそこ使えると思った。 まあ、リファレンスだしね
743 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 12:09:14 ] 見て、使い方を理解するのに時間がかかる感じだな。 書いてるほうは、こんなの一目見りゃ分かるだろ的ノリなんだろうけど、見てるほうはそうでもないギャップがある。 お腹いっぱいに成るほどにサンプル手繰れてもいいと思うけどね。 でもオブジェクト指向自体が、ある日突然閃くまでは意味不明の苦痛の日々だしなあ。 そういう意味で教典読んでも、修行の後、悟り開けないと付いて行けない感じ。 phpのほうは、思想的な物は無くてどうとでも使える節操無い所があるからな。結果的に出来りゃなんでもいいじゃんみたいな。 便利そうな機能も無節操に突っ込みまくってるし、実際便利ではある。rubyだと便利そうなライブラリを探して読み込む所から始まるし。
744 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 12:30:50 ] >でもオブジェクト指向自体が、ある日突然閃くまでは意味不明の苦痛の日々だしなあ。 はぁ?
745 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 17:22:24 ] >>744 閃く遥か前の段階で「自分は既に悟っている」と勘違いしてる馬鹿には 縁のない次元の話だから、無理に関わろうとしなくていいです。
746 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 18:02:39 ] うわぁ・・・
747 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 19:12:20 ] もうやめようぜ!おまいらの好きなアイドルはだれだ? 俺は長島海輝だぜ!
748 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 19:31:42 ] ここ↓にあるように、数字を日本語表記にするようなモジュールはありますでしょうか? そろそろ FizzBuzz に飽きた blog.livedoor.jp/nipotan/archives/50985988.html
749 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 19:42:31 ] >>748 特にないと思う たぶん、世界中で何十回も生産されてるコードだ どっかであってもいいのにね
750 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 20:29:35 ] >>746 俺もネットやりたての中二病真っ盛りの頃、 グウの音も出ないけどそれでも何か「相手に痛いところがある」風に装いたいとき、 よくそういうの書き込んだなー。
751 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 20:31:30 ] calコマンドのようにカレンダーを表示したいのですが、定石みたいなのってありますか?
752 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 20:49:58 ] 宿題スレに書き込んだのが残ってた calコマンドのように表示するように作ったのは確かなんだが、 ぶっちゃけ表示部で何やってんだかわからん #!/usr/bin/ruby require 'date' ### Usage: ./cal.rb [YYYY MM] ### ./cal.rb 2007 3 #=> Mar 2007 calender ### ./cal.rb 3 2007 #=> Mar 2007 calender ### ./cal.rb #=> this month's calender if ARGV.empty? then t = Date.today else argv = ARGV[0,2].map{|s| s.to_i} t = Date.new(argv.max{|a,b| a <=> b}, argv.min{|a,b| a <=> b}, 1) end (d_one, d_last) = Date.new(t.year, t.month, 1), Date.new(t.year, t.month, -1) cal = "#{Date::MONTHNAMES[d_one.month]} #{d_one.year}".center(3*7) << "\n" cal << Date::ABBR_DAYNAMES.inject(''){|days,name| days << name.chop.rjust(2) << ' '} << "\n" (d_one-d_one.wday).upto(d_last+6-d_last.wday) do |d| (cal << ' ';next) unless d.month == d_one.month cal << d.day.to_s.rjust(2) << ' ' << "\n"*(d.wday / 6) end puts cal
753 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 20:55:45 ] >>749 自分で作ってみて、宿題スレにでも行きます
754 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 20:55:53 ] >>752 ありがとうございます。 読んでみますね。
755 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 21:02:39 ] >>754 要は、 String#rjust ってのがあるんだよ これは指定数で右詰めする "A".rjust(2) は "+A" を返すし(+は本来は空白) "AB".rjust(2) は "AB" を返す この2バイト確定の文字を空白で挟んで7つ表示して1週間を作ってる
756 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 21:04:28 ] joinでいいじゃんね、これ
757 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 21:38:17 ] >>748-749 文字を音声で読んでくれるソフトは結構出回ってる Ruby 的には不評な Windows 系なら Microsoft Windows Speech っつーソフトが無料だから試してみれ 日本語・ドイツ語あたりまでならなんとかなるんだが フランス語だと死にそうだな
758 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 21:40:18 ] ja.wikipedia.org/wiki/Speech_Application_Programming_Interface これをRubyから叩けば良いかも
759 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 21:47:44 ] …?
760 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 21:52:55 ] 松本教信者のみなさん今日は。
761 名前:デフォルトの名無しさん mailto:sage [2009/01/24(土) 22:44:08 ] >>757-758 Rubyの練習として、NabeAtzz問題を解いてみたかっただけなんすよ
762 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 09:14:59 ] Rubyのrequireという命令が、使う頻度の高い割に すごくタイプしづらい文字なので困っています。 COBOLに慣れているので、copyというキーワードで 代替できるようにRubyを改造する方法があれば教えてください。
763 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 09:19:01 ] copyという文字列をrequireに置換するスクリプトをかけばいいやん
764 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 09:21:28 ] alias copy require ただし、他の人がいじるスクリプトではお奨めしない タイプしづらくてもrequireに慣れるべき
765 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 09:23:42 ] >>762 COBOLやれ
766 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 09:30:57 ] ちょっとしたbotを書いてみましたが、何か変なところがあったら教えてください。 なんか定数まわりで警告が出てますがあまり気にしないでください ダウンロードキーは2000、2時間で消えます www1.axfc.net/uploader/He/so/186680
767 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 10:01:25 ] ワロタ
768 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 10:03:57 ] >>762 補完系使えよ
769 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 10:19:02 ] require は COPY ではないので、それやりたいなら COBOL やれとしか
770 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 10:44:01 ] >>762 copyって入力したらrequireと変換されるように辞書に登録してしまえば
771 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 10:50:49 ] def copy arg require arg end
772 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 11:57:24 ] if then →if { end → } に置換するC言語のマクロ思い出したww さすが、COBOLerは発想が一味違う
773 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 11:59:45 ] COBOLer に限った話ではないぜ ttp://www.kojima-cci.or.jp/fuji/computerbooks/c/c.modula2.html
774 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 12:04:59 ] 天下の元祖B shellだってそういう風に書かれていたんだけどな
775 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 12:05:55 ] B shell は if 〜 then; ...; fi だ
776 名前:デフォルトの名無しさん [2009/01/25(日) 12:15:51 ] ふぃ〜
777 名前:762 mailto:sage [2009/01/25(日) 12:22:01 ] アドバイスありがとうございます。 いろいろ検討したのですが、 あらかじめ先頭行にreqireと打ち込んだ ひな形テキストファイルを用意しておき、 ソースを書き始める時はそれを読み込む ことにしました。
778 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 12:25:22 ] ほんとにrequireって打つのが苦手なんだな・・・。
779 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 12:29:39 ] q以外は、人指し指と中指を単純に動かすだけなんだけど、 まぁ、指の仕様も人それぞれってことなんだろうな。
780 名前:デフォルトの名無しさん [2009/01/25(日) 12:34:00 ] require
781 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 12:36:57 ] キーボードを見ずにrequireって打てたら神 その3 gimpo.2ch.net/test/read.cgi/toilet/1200207879/
782 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 12:38:17 ] >>775 こういう意味だよ。 minnie.tuhs.org/UnixTree/V7/usr/src/cmd/sh/mac.h.html
783 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 12:56:40 ] requireとloadを逆にしておけばよかったのになあ
784 名前:デフォルトの名無しさん [2009/01/25(日) 13:14:08 ] >>781 requrie
785 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:17:21 ] 余裕だろ。 require
786 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:18:01 ] require なんてキーの配置と流れは簡単じゃん req→右から左。キーは隣+一つ飛ばし ui→左から右。キーは隣 re→右から左。キーは隣 3回にわけてリズムをつかめばすぐに慣れると思う って全然Rubyの話じゃないな
787 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:19:31 ] QWERTY
788 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:20:21 ] 英単語的に、qのあとはuが来ることが多いので、その部分はほとんど間違えなく指が勝手に動くな
789 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:23:48 ] test require
790 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 13:36:28 ] ていうか、スクリプトの一番最初にまとめて、 またはライブラリ追加の必要性があるときにファイル先頭に移動して改めて書くようなもんだから、 その時だけゆっくり(手元見ながら)打ち込めばいいじゃんね キーボード全体から強い光が発せられていて注視できないような構造になってるとかそういうのですか?
791 名前:デフォルトの名無しさん [2009/01/25(日) 13:37:17 ] 私の好きなフィギュアスケートの澤田亜紀ちゃんの名前は打ちにくい
792 名前:デフォルトの名無しさん [2009/01/25(日) 13:43:48 ] | │ 〈 ! | |/ノ二__‐──ァ ヽニニ二二二ヾ } ,'⌒ヽ /⌒!| =彳o。ト ̄ヽ '´ !o_シ`ヾ | i/ ヽ ! Require ... ! ハ!| ー─ ' i ! `' '' " ||ヽ l |
793 名前:772 mailto:sage [2009/01/25(日) 14:19:58 ] >>773 それそれw そのことだよまさに >>777 俺ならエディタのスニッペにrequire登録しておいて、 r(スニペット補完キー) でrequrieを補完するな
794 名前:772 mailto:sage [2009/01/25(日) 14:20:39 ] スニッペってなんだww 「スニペット」な「コードテンプレート」とかエディタや開発環境で呼び名は違うと主ウケ緒d
795 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 14:25:24 ] 落ち着け。
796 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 16:12:24 ] require よりも、elsif の方が、打ちにくい。 エディタの設定で、*.rb ファイルで、elseif と書いたら、 elsif に置換しているけど。
797 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 16:13:27 ] ZAQ のうちにくいこと
798 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 16:28:50 ] ZAQは小指の爪を使ってキーボードの下から上へすべらすように z za zaa z za ・・・できねえ
799 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 16:32:16 ] そんなん右手薬指で右Shift押さえながら左薬指でzaw押せばいいじゃん ホームボジションなにそれ
800 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 16:42:36 ] >>799 押せてねぇw ホームポジションなにそれは同意で、小指薬指中指で順にZAWと押せば ( ゚Д゚)・・・。 ところで>>771 みたいなことするよりは>>764 のほうがいいよね? >>771 みたいにラップしたほうがいいときってある?
801 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 17:49:11 ] requireは上段に集中してむしろ打ちやすいような。 どうしても打てないなら、つ 最終兵器dvorak
802 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 18:47:55 ] req(単語補完(ry だろ、JK
803 名前:デフォルトの名無しさん [2009/01/25(日) 19:13:48 ] ttp://www.sanspo.com/sports/images/090125/spf0901251746010-p2.jpg
804 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 19:17:12 ] >>803 誰もそんなんrequireしとらん。
805 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 19:50:19 ] word = ["apple", "orange", "lemon"] を検索のキーとして sentence = ["apple is red","orange is not blue","lemon is yellow","apple is not orange","lemon is not red"] から何個、検索結果が出てきたか知りたいのですが、どうすればいいでしょうか?
806 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 20:03:10 ] >>805 配列要素をeachで枚挙することを厭ってはいけない 特にRubyではね words = ["apple", "orange", "lemon"] sentence = ["apple is red","orange is not blue","lemon is yellow","apple is not orange","lemon is not red"] counts = {"apple"=>0, "orange"=>0, "lemon"=>0} sentence.each do |s| words.each do |word| if /#{word}/ =~ s then counts[word] = counts[word]+1 end end end p counts 結果: {"orange"=>2, "apple"=>2, "lemon"=>2}
807 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 20:14:18 ] counts = {} words.each do |word| counts[word] = 0 end
808 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 20:15:04 ] >>807 スレタイ6回くらい読め
809 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 20:43:13 ] unko
810 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 21:52:42 ] 久しぶりにスレみたら>>747 で吹いた。 男じゃん。と思って検索したら、こんなに可愛い子が女の子なわけないじゃないか
811 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 22:18:03 ] ググってしまったじゃないかww
812 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 23:26:45 ] 調べたらショタアイドル。ぐぐr必要なし
813 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 23:38:45 ] >>812 ぐぐってしまったじゃないか
814 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 23:45:15 ] 密林で注文したじゃないかw
815 名前:デフォルトの名無しさん [2009/01/26(月) 03:25:48 ] puts "文字" puts "文字" puts "\n" srand require 'readline' def try_answer(prompt) while buf = Readline.readline(prompt, true) yield buf end end difficulty = ($*[0] || 1).to_i difficulty >= 1 or raise "#{difficulty}: Invalid difficulty direction" answer = rand(30 * difficulty + 1) judge_table = ["文字1","文字2","文字3"] try_answer("文字 > ") do |line| try = line.to_i result = try <=> answer puts "#{try}#{judge_table[result]}" break if result.zero? end プログラミングに興味が出て、いろいろさがしてたら 学校の過去の資料にこんなプログラムがありました。 これはどんなプログラムなんでしょうか? 一文一文の意味を教えていただけないでしょうか?よろしく おねがいします。
816 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 03:31:54 ] マルチは感心しないな
817 名前:デフォルトの名無しさん [2009/01/26(月) 03:32:21 ] ruby経由でwgetしつつ出力を表示しつつ、log.txtにもはきつつってことをやりたいのですが、上手くいきません。 画面には表示されますが、log.txtには何も書き込まれないという・・・ これは何がおかしいものなんでしょう Dir::chdir("/work") do system("wget example.com/ | tee log.txt") puts "read log.txt" puts File.read("log.txt") end
818 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 03:45:55 ] >>817 wget の出力は標準エラー出力に表示する tee は標準出力を取り込むことしかできないから、そもそも log.txt にはなにも書き込まれない wget localhost/ 2>&1 | tee log.txt Ruby あんま関係ないな
819 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 03:57:25 ] >>818 いけた!そっかwgetエラー出力だったのか・・・ 基本的なところをうたがうべきなのにすっかり忘れてた
820 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 04:00:33 ] これを意識してる人はまずいないよ これはむしろ wget の欠陥だと思う
821 名前:デフォルトの名無しさん [2009/01/26(月) 05:47:44 ] Rubyでwebサーバーにアクセスしたとき そのサイトにどんなファイルがあるか調べる方法はありますか?
822 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 06:03:15 ] index許可してあればリスト取り出せるけど そうじゃなければ_
823 名前:デフォルトの名無しさん [2009/01/26(月) 09:16:34 ] robotでも作るつもりなのかな
824 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 11:26:53 ] >>820 wget の場合、標準出力は -O - で取ってきたものを出力するためにあるので (他のツールにパイプで直接流し込んだりとか)、そういう時にも一貫性を保てる ように、メッセージは標準エラー出力というのは理にかなっている。 メッセージをファイルに取りたいなら -o filename オプションを使うという手もあるが。 Ruby 関係ないな。
825 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 11:30:37 ] >>822 Ruby関係ないよね っていうか、HTMLやHTTPの勉強はしてもらってるのかね Rubyは魔法じゃねえぞ
826 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 11:39:31 ] Ruby関係ないということがわかるだけでも勉強としては前進だから、どんどん聞くだけ聞いてもらってもいいけどな 回答としても「ちげーよRuby関係ねーよ」と答えるだけでいいから楽だし Ruby内でwget使ってログ管理しようとして嵌るというのは順調なテンプレの範囲だと思う
827 名前:817 mailto:sage [2009/01/26(月) 12:24:18 ] そもそも、コマンドラインで wget example.com/ | tee log.txt ってやってみてRubyの問題なのか、そうじゃないのか切り分けるべきでしたね なにあれ、解決したので助かりました。
828 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 13:40:37 ] Ruby 1.8でDir.globに複数のパターン(というか拡張子)を指定する方法は ありませんでしょうか? (Dir.glob("**/*.css") + Dir.glob("**/*.html")).each do |file| : end のようにするしかない?
829 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 13:44:36 ] >>828 マニュアルに初心者お断りな感じできちんとわかりにくく書いてあんじゃんよ irb> Dir.glob("*") ["002.txt", "001.txt", "aaa.jpg", "bbb.jpg"] irb> Dir.glob("*.txt") ["002.txt", "001.txt"] irb> Dir.glob("*.txt\0*.jpg") ["002.txt", "001.txt", "aaa.jpg", "bbb.jpg"]
830 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 13:49:16 ] あれわかりにくいよね 素直に第一引数は配列受け取るようにすればよかったのに
831 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 15:37:35 ] ネットワーク上にあるExcelファイルを、 open-uriを使わずにnet/httpを使ってFileオブジェクトに格納する方法はあるでしょうか
832 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 15:52:09 ] >>831 bodyをそのままwriteするだけじゃダメなんだっけ?
833 名前:828 mailto:sage [2009/01/26(月) 15:52:40 ] >>829 本当だ! > パターンを "\0" で区切って 1 度に複数のパターンを指定することもできます。 > > p Dir.glob("f*\0b*") > => ["foo", "bar"] マニュアルみたつもりで見落としていました。 ありがとうございました。
834 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 15:57:50 ] >>832 bodyメソッドを実行すると「string contains null byte」とエラーが出てしまいます・・
835 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 16:05:54 ] めんどくへえ イントラ限定のサーバかなんかで変な形式で送られてきてると予想 ヘッダはなんて言ってる?
836 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 16:10:15 ] レスポンスのヘッダでしょうか? HTTP/1.1 200 OK Date: Mon, 26 Jan 2009 07:08:59 GMT Server: Apache/1.3.27 (Unix) (Red-Hat/Linux) mod_ssl/2.8.12 OpenSSL/0.9.6b DAV/1.0.3 PHP/4.1.2 mod_perl/1.26 Last-Modified: Mon, 26 Jan 2009 00:11:23 GMT ETag: "3f1629-48000-497cffab" Accept-Ranges: bytes Content-Length: 294912 Content-Type: application/vnd.ms-excel こんな感じです
837 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 16:10:22 ] >>834 エラー箇所どこ? win32なのにバイナリモードでFile.openしてないとかいうオチはない?
838 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 16:14:04 ] >>837 さすがにそれはないと思いたい
839 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 16:23:08 ] >>837 orz おさわがせしました
840 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 16:29:17 ] >>838-839 初心者スレだしこんなミスもいいんじゃね?w 解決したならなによりだし(あのエラーを見たことは無いから自信はなかった) 騒がせたと懲りてるようなら、もう同じミスをしてもすぐ自分で気づくだろうから。
841 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 17:16:29 ] >>833 glob 構文だけを純粋に使って、*.{css,html} これでもいんじゃない。
842 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 17:29:56 ] >>833 ・{ } コンマで区切られた文字列の組合せに展開します。 Dir.glob("**/*.{css,html}") do |file| puts file end 1.9だと配列で複数のパターンを渡せるようになった
843 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 17:39:27 ] あらら、かぶっちゃった Dir[pattern] 形式だと1.8でも複数のパターンを指定できるよ Dir["**/*.html","**/*.css"].each do |file| puts file end
844 名前:828 mailto:sage [2009/01/26(月) 17:40:13 ] >>841-842 おお、便利だ! > { } コンマで区切られた文字列の組合せに展開します。 > 例えば、 foo{a,b,c}はfooa, foob, foocに展開されそれぞれに対してマッチ判定を行います。 > 括弧は入れ子にすることができます。例えば、 {foo,bar{foo,bar}} は > foo, barfoo, barbar のそれぞれにマッチします。 これですね。ありがとうございました。
845 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 20:20:17 ] >>843 完全に単なるエイリアスだと思い込んでた… glob構文めんどいから ["**/*.html","**/*.css"].inject([]){|r, i| r.concat Dir.glob(i) } こんなことしてたぜ…横から感謝
846 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 22:36:34 ] >>843 すげー。知らんかったわw globとは別なのね
847 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:20:28 ] >>843 はオレも知らんかったので助かるんだけど、でもこれっておかしいよね。 ほんとはglob()と同じにすべきだよな。わざわざこんなふうにしている意味が分からん。
848 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 23:24:54 ] > ほんとはglob()と同じにすべきだよな いまさらglobを変えるわけにいかないからせめて関数的メソッドDir[]は配列を受け取るようにしたという流れだと思った よく覚えてない
849 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 02:16:31 ] Dir[]とDir.globの違いはなんだろ(引数以外) Dir[]全部列挙で、Dir.globはブロック渡すと逐一処理可能ってことか?
850 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 03:32:53 ] glob2とか作ってコンパチ目指したほうが。 なんか先に作った香具師の実装がアレでみんな迷惑してるの多いよね。cgiとかwww Content-Transfer-Encoding: base64とか付いてるとか?
851 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 09:23:26 ] >なんか先に作った香具師の実装がアレでみんな迷惑してるの多いよね。cgiとかw あほか それは事実だが結果的にそうなった つまりそういう開発ポリシーだからそうなる必然 文句云うな
852 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 09:25:48 ] 日本語でおk
853 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 09:37:46 ] まぁ文句あるならもっと良いもの自分で作れってことだろ そうやってMatzんは煽って北
854 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 11:11:36 ] 「開発ポリシー」で互換性を残したままにするから、 結果的に古いのが残っているってことでしょ
855 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 11:36:22 ] Rubyのコアライブラリ近辺って「1つ目」を作る人は大量にいるけど「2つ目」を作る人がいないんだ 全部自前でクラスやメソッド改造してしまうから Ruby1.2くらいで「このライブラリの存在は大きいので、では本格的なものを添付しましょう」という流れにならないのがRuby
856 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 13:16:40 ] cgi2chとかいうライブラリができたら楽しいなw
857 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 14:00:45 ] >>844 シェルのワイルドカード展開と一緒だよ。コマンドラインで多用しない? diff -c nagainamaenofairumeiwonandomoutitakunai.rb{.orig,}とか。
858 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 14:16:40 ] 確か次世代cgi.rbは、候補はあるけど決定的なものがないという理由で今のままなんだよね
859 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 14:24:55 ] cgi.rbをとりあえずな感じで添付したらそのまま数年維持されて癌になったという経験が尾を引いてるな
860 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 15:40:24 ] 互換性なんかどこに残ってんだよ
861 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:26:19 ] クラス CGI2ch::BBS クラスメソッド CGI2ch::BBS.new([index]) 最新の板一覧取得用URL(複数候補可)を指定 インスタンスメソッド menu() 板一覧を取得 戻値 (cat, host(FQDN), board, name) のリスト 例: [('', 'www.2ch.net', '', '2chの入り口'), ('', 'info.2ch.net', 'guide', '2ch総合案内'), ..., ('ニュース', 'mamono.2ch.net', 'newsplus', 'ニュース速報+'), ..., ('PC等', 'pc11.2ch.net', 'unix', 'UNIX'), ... ('PC等', 'pc11.2ch.net', 'tech', 'プログラム技術'), ...] board(name) CGI2ch::Boardのインスタンスを生成
862 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:26:43 ] クラス CGI2ch::Board クラスメソッド CGI2ch::Board.new(host, board) インスタンスメソッド subject() スレ一覧を取得 戻値 (key, title, res) のリスト(スレッドキー, タイトル, レス数) 例: [(1223709050, 'Rubyについて Part 33', 624), (1233033091, '愛国Ruby', 14), ...] thread(key) CGI2ch::Threadのインスタンスを生成
863 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:27:07 ] クラス CGI2ch::Thread クラスメソッド CGI2ch::Thread.new(key) CGI2ch::Thread.create(name, email, body) 新スレを立ててインスタンスを生成 インスタンスメソッド read(key) write(name, email, body)
864 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:27:32 ] >>856 こんな感じで計画中だけど どう?
865 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:32:48 ] クラスメソッド CGI2ch::Thread.new(board, key) CGI2ch::Thread.create(board, name, email, body) 新スレを立ててインスタンスを生成 boardが必要かな
866 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 16:42:18 ] >[(1223709050, 'Rubyについて Part 33', 624), > (1233033091, '愛国Ruby', 14), ...] なにこれ
867 名前:710 mailto:sage [2009/01/27(火) 17:22:38 ] >>711 Railsのスレあったんですね。 気づきませんでした。 >>715 コメントありがとう。 結局原因がわからなかったので、rjsの中でhtml(<option></option>)を組み立てて、selectボックスに 対してreplace_htmlしたら回避できました。
868 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 17:29:56 ] >>864 計画倒れにならんようにがんがれ
869 名前:デフォルトの名無しさん [2009/01/27(火) 17:42:31 ] 2chの仕様なんて面倒だぞ。 専用ブラウザ開発者はマゾヒストとしか思えない。
870 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 18:00:13 ] >>864 スレ違い 2ch専用ブラウザの作り方 ttp://pc11.2ch.net/test/read.cgi/tech/1180406037/
871 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 18:14:12 ] >>862 愛国はかんべんw
872 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 18:17:05 ] >>871 はいはい面白いね至高のギャグだね
873 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 19:18:57 ] リファレンスマニュアルの使いにくさをどうにかしてください。 例えば、タイムアウトさせたい処理について調べたい場合、目次を見てもどこを見ていいのかさっぱりわかりません。
874 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 19:26:10 ] あ、オフィシャルサイトは検索休止中なんだっけ timeoutで全文検索すると出てくるぞ
875 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 19:35:31 ] 「Ruby マニュアル」でぐぐると「ruby マニュアル 検索」が関連で出てくる現状はどうにかしたほうがよい ttp://www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=Ruby+%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB&num=10
876 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 21:08:35 ] ttp://doc.loveruby.net/refm/api/view/search?q=timeout るりまはいつになったら公式化するのだろうか
877 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 21:22:00 ] >>876 MLいわく、静的HTMLを吐くツールが整備されてから
878 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 23:59:46 ] >>864 期待してます
879 名前:デフォルトの名無しさん [2009/01/28(水) 00:01:28 ] >>864 そんなことしてる暇あるんなら Rubyのリファレンスマニュアルを検索出来るようにしてくれさい
880 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 03:16:09 ] つ refe2
881 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 04:26:03 ] Rubyラブじゃ☆
882 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 05:49:46 ] >>879 さっさとchm版を使ってください
883 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 11:53:50 ] require "active_support" すると、 あらゆるオブジェクトに daemonize というメソッドが付いてくるんですが、 これって ActiveSupport が意図してやってるんでしょうかね? こうするメリットが良くわからないんですけれども。
884 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 12:03:24 ] Kernel や Object クラスのようなものに外部モジュールがメソッドを追加するというのは議論を呼ぶ設計なのは確か ActiveSupport::Daemon.daemonize(obj) みたいなのでいいじゃんというのも指摘としては真っ当 そこで笑ってこっち見てる YAML 君もこっち来なさい
885 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:25:11 ] require "active_support"を使わなければ問題ない
886 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:45:39 ] String#each_line(sep) って、中で事前に巨大な配列作ってますか? 「ちょっとずつ」改行まで読み込んで返している動作ですか?
887 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:47:17 ] フラッグ型に保ち合ってきた。どっちかにブレイクするかもな。
888 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:50:12 ] 誤爆・・・
889 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:55:36 ] >>886 String#each_lineだから「読み込んで」は不適当な気がするが、 改行を探しては1行作ってyieldし、という挙動ではある。
890 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 13:59:42 ] str.split(/sep/).each do |line| と str.scan(/\G#{sep}/){|line| なら、String#each_line は後者のイメージに近いと思われ 「str が 大きかったら each_line 1回のためだけにでっかい配列ができて胃が痛い」とか考える必要はないかと
891 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 14:06:07 ] やっぱ str.to_a.each_with_index do …はあんまりよくないのか each_line_with_index って each がえにゅめらぼーウンタラの関連でどっかのバージョンで登場してたりする?
892 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 14:19:37 ] >>891 行番号が知りたいんだろうけど、each_lineは行ごとにループ呼ばれるから 自分でカウントアップすればいいんじゃない?
893 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:05:28 ] str.each_with_indexじゃダメなん?
894 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:21:04 ] String から呼ぶ Enumerable のメソッドって String をどう扱うかイマイチわからん
895 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:29:55 ] >>892 > 自分でカウントアップすればいいんじゃない? なにそのwith_indexの存在意義自体を土足で踏みにじる暴言
896 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:36:40 ] >>893 ,895 1.9のStringってeachがなくなってEnumerable非対応に なるんじゃなかったっけ? >>894 Enumerableのメソッドは全てeachに依存してるから、eachに準ずる。 直観的じゃないという話なら同意。
897 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:37:02 ] Rubyには放っておいても増える隠し定数のループカウンタとかないの
898 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 15:43:37 ] >放っておいても増える そんなもんあったら問題だw
899 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 16:59:30 ] 1.8.7以降限定ならstr.each_line.with_indexでいいんじゃないの。 それより前だったらstr.each_with_indexでいいし。
900 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 17:02:23 ] each_with_index自体あんまり使わないから正直どうでも良い
901 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 17:06:36 ] 行志向のファイルを処理するスクリプトを書かない人には無用の長物だな
902 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 17:15:11 ] 全機能使って書いてるのはRubyを作ってるモルモンくらいでしょ
903 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 17:20:55 ] 昔どのメソッドが何するもんかは覚えても実際使わないと忘れて逝くのが人類です
904 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 17:55:08 ] >>894 1.9でString#eachがなくなって Enumerableじゃなくなったのはそれが理由だよね バイト単位なのか、文字単位なのか、行単位なのか一般的には決まらないので 自分で明示して each_byte か each_char か each_line を使えと でも自分スクリプトで Stringが行単位のEnumerableなのを利用して いきなり文字列の sort とかuniqとかしてたんだよね で、1.8.6以前と1.9以降の両方で動くようにスクリプトの頭で unless String.method_defined?(:each) class String alias each each_line include Enumerable end end
905 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 18:31:47 ] >897-898 $.
906 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 23:19:41 ] よいまとめがあったんでシェア Ruby1.9をこれから使う人のためのM17Nまとめ - 福島でRailsを使って仕事を頑張る計画 d.hatena.ne.jp/xibbar/20090126/1232946944 >>887 市況2?w
907 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 03:47:31 ] >>864 wktk
908 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 04:19:58 ] 1.9なら str.each_line.with_index {|line, idx| ... } でFA。でかい配列を作ったりもしない。
909 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 10:32:14 ] 1.9知りたきゃ、これ見ろってことっすかね? 日本Rubyの会 公式Wiki - 1.9 Links jp.rubyist.net/?1.9+Links
910 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 11:02:09 ] >>909 リファレンスマニュアル見ろよ