Ruby 初心者スレッド Part 25
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2009/01/31(土) 11:31:07【Ruby1.9.1 は従来版とは別物であり、書籍や解説やライブラリのサポートがまだありません】
【自力で解決できない壁で悩むことのない最新安定版の Ruby1.8.7 での学習をお勧めします】
※1.8.7 は 1.8 系と 1.9 系の橋渡しをするためのリリースで、1.9 系 の便利新機能の一部が利用可能です
※ただし 1.8.6 より安定しているとはまだ言えないので、安定性を第一とする用途には 1.8.6 をどうぞ
関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。
■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
・モジュール名やエラーメッセージでググる
・マニュアルで引っかかったクラスの記述を探す http://www.ruby-lang.org/ja/man/
・FAQを一応読む http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
・詳しい内容(「動きません」「うまくできません」では回答しようがない)
・エラーメッセージ(自力で訳さずなるべくそのままで)
・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0002デフォルトの名無しさん
2009/01/31(土) 11:31:50Q:
いちからRubyを始める初心者向けのRuby入門書は何がありますか?
A:
プログラム作成自体の初心者なら
「たのしいRuby 第2版 Rubyではじめる気軽なプログラミング」
http://www.amazon.co.jp/dp/4797336617/
文法は理解済み(orリファレンスで乗り切る既言語習得者)の場合のRuby様式を知る必携2冊目
「初めてのRuby」
http://www.amazon.co.jp/dp/4873113679/
以下は外れが少ないとされている本です。必ず立ち読みした上で自分の目的とレベルに応じて購入してください
「Rubyレシピブック 第2版 268の技」(初心者向け)
http://www.amazon.co.jp/dp/4797340045/
「プログラミングRuby 第2版 言語編」(初心者向け)
http://www.amazon.co.jp/dp/4274066428/
「Ruby Way 第2版」(脱初心者向け)
http://www.amazon.co.jp/dp/4798115339/
「Rubyクックブック ―エキスパートのための応用レシピ集」(脱初心者向け)
http://www.amazon.co.jp/dp/4873113245
以下の本は言語作者が書いた最新本ですがとりあえず初学者向けではありません
「プログラミング言語 Ruby」(言語として深く知りたい人向け)
http://www.amazon.co.jp/dp/4873113946/
0003デフォルトの名無しさん
2009/01/31(土) 11:32:22Ruby Home Page 【公式、お役立ち度が微妙】
http://www.ruby-lang.org/ja/
Rubyリファレンスマニュアル 【検索機能休止中、Googleなどの併用を】
http://www.ruby-lang.org/ja/man/
http://www.ruby-doc.org/ 【詳しい英語版】
HTMLヘルプ版リファレンスマニュアル配布さん 【Windowsで便利、検索も無論可能】
http://elbereth-hp.hp.infoseek.co.jp/ruby.html
Programming Ruby - The Pragmatic Programmer's Guide 【好評書籍の初版がネットで、ただし英語】
http://www.ruby-doc.org/docs/ProgrammingRuby/
Rubyist Magazine - るびま 【ライブラリ紹介などの読み物、過去のコードレビューは一読の価値あり】
http://jp.rubyist.net/magazine/
逆引きRuby 【やりたいことから探すWiki、最近元気ないので編集者募集】
http://www.namaraii.com/rubytips/
はてなキーワード > Ruby 【うっかりどっさりまとまったリンク集、説明なし】
http://d.hatena.ne.jp/keyword/Ruby
RubyForge 【○○をやりたい管理されたライブラリを探すならここ、英語】
http://www.rubyforge.org/
GitHub 【○○をやりたいコードをとにかく探すならここ、英語】
http://github.com/
日本Rubyの会 【最近はオフライン勉強会の寄り合い場と化しているので近くで勉強会があれば】
http://jp.rubyist.net/
0004デフォルトの名無しさん
2009/01/31(土) 11:32:550005デフォルトの名無しさん
2009/01/31(土) 11:35:56b = "乙"
puts a + b
0006デフォルトの名無しさん
2009/01/31(土) 11:39:35io[0] = ">>1"
io[1] = "乙"
print io[0] + io[1]
0007デフォルトの名無しさん
2009/01/31(土) 11:46:04本スレ
Rubyについて Part 33
http://pc11.2ch.net/test/read.cgi/tech/1223709050/
アンチスレ
Rubyについて(アンチ専用) Part003
http://pc11.2ch.net/test/read.cgi/tech/1207233348/
Railsスレ
【Ruby】Ruby on Rails Part6
http://pc11.2ch.net/test/read.cgi/php/1224838013/
0008デフォルトの名無しさん
2009/01/31(土) 11:49:47io[0] = ">>1"
io[1] = "乙"
print io.join
0009デフォルトの名無しさん
2009/01/31(土) 11:50:15web系をやりたい初心者ならあれは良いものですよ。
0010デフォルトの名無しさん
2009/01/31(土) 12:04:28あーこれか、出版時期がマズくてみんなに全く評価されずにスルーされた不遇の本だな
0011デフォルトの名無しさん
2009/01/31(土) 12:12:580012デフォルトの名無しさん
2009/01/31(土) 12:15:12秀和システムの本の時点で諦めろ
0013デフォルトの名無しさん
2009/01/31(土) 15:37:420014デフォルトの名無しさん
2009/01/31(土) 16:15:150015デフォルトの名無しさん
2009/01/31(土) 16:55:05・著者が良い
・おまけが良い
・他の出版社は手を出さないような内容や分野
15年以上そんな感じだと思う
0016デフォルトの名無しさん
2009/01/31(土) 17:28:27・入門書の類
・初心者向けと推しがある
秀和の場合この二点は中級/上級向けの本から抜粋して作ってある場合がある
内容的にも大事な部分を端折って書いてあったりする場合もあるので注意
0017デフォルトの名無しさん
2009/01/31(土) 17:38:11これわかるwww
昔なんとなくドトネトの入門書と全機能解説書買ったら
入門書の内容が全部全機能解説にまんま載ってた、さすがにショックだったなぁorz
端折ってるのもわかるけど、全体的にまとめ方が下手糞じゃね?
それ以来買ってないから今がどうなってるかは知らんのでなんとも言えんけどさ。
0018デフォルトの名無しさん
2009/01/31(土) 17:45:150019デフォルトの名無しさん
2009/01/31(土) 17:48:46そう思うためには、それ用の巧妙な飛ばし読みを必要とするぞw
0020デフォルトの名無しさん
2009/01/31(土) 17:51:500021デフォルトの名無しさん
2009/01/31(土) 18:01:090022デフォルトの名無しさん
2009/01/31(土) 18:02:520023デフォルトの名無しさん
2009/01/31(土) 18:03:59原因は何?インストールしたのはwxruby。実行した文はrequire 'wx'のみ
C:/ruby-1.9.1-p0-i386-mswin32/lib/ruby/gems/1.9.1/gems/wxruby-1.9.9-x86-mswin32-
60/lib/wxruby2.so: [BUG] Segmentation fault
ruby 1.9.1p0 (2009-01-30 revision 21907) [i386-mswin32]
-- control frame ----------
c:0008 p:-8714696 s:0021 b:0021 l:000020 d:000020 TOP
c:0007 p:---- s:0019 b:0019 l:000018 d:000018 CFUNC :require
c:0006 p:0011 s:0015 b:0015 l:000014 d:000014 TOP C:/ruby-1.9.1-p0-i386-mswin
32/lib/ruby/gems/1.9.1/gems/wxruby-1.9.9-x86-mswin32-60/lib/wx.rb:12
c:0005 p:---- s:0012 b:0012 l:000011 d:000011 FINISH
c:0004 p:---- s:0010 b:0010 l:000009 d:000009 CFUNC :require
c:0003 p:0011 s:0006 b:0006 l:000adc d:00081c EVAL -:1
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:0000 s:0002 b:0002 l:000adc d:000adc TOP
---------------------------
-- Ruby level backtrace information-----------------------------------------
C:/ruby-1.9.1-p0-i386-mswin32/lib/ruby/gems/1.9.1/gems/wxruby-1.9.9-x86-mswin32-
60/lib/wx.rb:12:in `require'
C:/ruby-1.9.1-p0-i386-mswin32/lib/ruby/gems/1.9.1/gems/wxruby-1.9.9-x86-mswin32-
60/lib/wx.rb:12:in `<top (required)>'
-:1:in `require'
-:1:in `<main>'
[NOTE]
You may encounter a bug of Ruby interpreter. Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html
This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.
0024デフォルトの名無しさん
2009/01/31(土) 18:05:16Ruby1.9.1 は従来版とは別物であり、書籍や解説やライブラリのサポートがまだありません
自力で解決できない壁で悩むことのない最新安定版の Ruby1.8.7 での学習をお勧めします
0025デフォルトの名無しさん
2009/01/31(土) 18:06:23お決まりの応答ですか
0026デフォルトの名無しさん
2009/01/31(土) 18:06:36[BUG] 表記である以上>>24でFA
現実的には放っておけば誰かが連絡していつか直る
0027デフォルトの名無しさん
2009/01/31(土) 18:13:31ファイル読み込めないとかメソッドで例外で落ちるとかそういうのならよかったんだけど
0028デフォルトの名無しさん
2009/01/31(土) 18:17:05あらかたライブラリが呼び出し方法変更あったのを対処してないという
オチだろうからバージョンいったん戻した。
0029デフォルトの名無しさん
2009/01/31(土) 18:25:580030デフォルトの名無しさん
2009/01/31(土) 18:32:240031デフォルトの名無しさん
2009/01/31(土) 18:45:57[NOTE]
Ruby本体のバグに遭遇しました。バグレポ歓迎。
詳細は http://www.ruby-lang.org/bugreport.html
このアプリはRubyに異常終了するように要求しました。
更なる情報を得るにはアプリのサポートチームに連絡を取ってください。
0032デフォルトの名無しさん
2009/01/31(土) 18:47:21あのー、レポートすりゃいいことはわかってるんですが…
どうやってレポートしろと?
0033デフォルトの名無しさん
2009/01/31(土) 18:48:240034デフォルトの名無しさん
2009/01/31(土) 18:48:50http://www.redmine.org/guide
0035デフォルトの名無しさん
2009/01/31(土) 18:50:080036デフォルトの名無しさん
2009/01/31(土) 18:51:580037デフォルトの名無しさん
2009/01/31(土) 18:53:590038デフォルトの名無しさん
2009/01/31(土) 18:56:44メンツがあるのかなんなのか知らんけどはっきり「開発者向けリリース」だと公知すべきだと思うんだ
0039デフォルトの名無しさん
2009/01/31(土) 18:59:25Rubyを使う人: 定番ライブラリも動いて当然と思う。
という行き違いかね。
0040デフォルトの名無しさん
2009/01/31(土) 19:01:32そもそも開発者と利用者の見解が違うの原因
0041デフォルトの名無しさん
2009/01/31(土) 19:02:05そだな
外部ライブラリは外部ライブラリ作者の責任で、それが妥当で真っ当で自然だが、
一般ユーザーにしちゃそんなん知ったこっちゃねえ全部今まで通り動かせって感じだ
0042デフォルトの名無しさん
2009/01/31(土) 19:03:400043デフォルトの名無しさん
2009/01/31(土) 19:06:54いや、悪くないと思うよ
require を使いたい人はruby-library-1.8.7 (あるいはそもそも同梱版)をインストールしてください、みたいな
今回の1.9.1は core だけのリリースで ruby-library-1.9.1 はパッケージとしては用意されてない状態
欲しい人がリポジトリから1.9.1対応できたってタグついてるのだけ持ってってーってことで
0044デフォルトの名無しさん
2009/01/31(土) 19:09:210045デフォルトの名無しさん
2009/01/31(土) 19:10:47それ普段のまんまじゃん
パッケージとして配布する意味ねえよ
0046デフォルトの名無しさん
2009/01/31(土) 19:14:03第三者が配布しているライブラリはまた違うと思うんだが。
0047デフォルトの名無しさん
2009/01/31(土) 19:16:470048デフォルトの名無しさん
2009/01/31(土) 19:18:15Ruby1.9.1が不安定なわけではなく、まわりが対応し切れてないのが原因だし
まーどっちにしても、初心者からすれば同じようなことか
次スレのテンプレからその辺書き加えたら良いんじゃないかな
0049デフォルトの名無しさん
2009/01/31(土) 19:18:540050デフォルトの名無しさん
2009/01/31(土) 19:20:200051デフォルトの名無しさん
2009/01/31(土) 19:29:230052デフォルトの名無しさん
2009/01/31(土) 19:33:510053デフォルトの名無しさん
2009/01/31(土) 19:50:150054デフォルトの名無しさん
2009/01/31(土) 20:18:39Debianパッケージのリポジトリから適当なソフトウェアを探しているのですが、
どれもPythonやPerlで書かれたものばかりです。
Rubyで書かれたソフトウェアありますか?
できれば管理ツールみたいな簡単なものから読んでみたいのですが。
0055デフォルトの名無しさん
2009/01/31(土) 20:23:44気になる。。。
影舞で良いじゃまいか
0056デフォルトの名無しさん
2009/01/31(土) 20:25:36puppetとか。
いや、簡単でありさえすれば管理ツールじゃなくてもいいのか?
0058デフォルトの名無しさん
2009/01/31(土) 20:41:08Yuguiさんが語ってたと思う。BitClustとか
0059デフォルトの名無しさん
2009/01/31(土) 20:58:371.8用のバイナリがインストールされたのが原因
wxrubyのパッケージングがクソなのか、rubygemsの仕様が根本からクソなのかは知らん
0060デフォルトの名無しさん
2009/01/31(土) 21:08:15ローカルに1.9用のgemをダウンロードして
gemのオプションで1.9用gemを指定してインスコしてみたら?
0061デフォルトの名無しさん
2009/01/31(土) 21:49:41×1.9.1が安定するまで
○主要なライブラリが1.9.xに対応するまで
0062デフォルトの名無しさん
2009/01/31(土) 21:53:180063デフォルトの名無しさん
2009/01/31(土) 23:30:39その方法がわからんわけなんだが
0064デフォルトの名無しさん
2009/02/01(日) 00:20:14gem使っててどこからダウンロードして入れてるのか知らないとか大丈夫??
あくまでもgemパッケージが配布されてる前提の話。
ttp://rubyforge.org/
ここにアクセスして自分に必要なプロジェクト選んで入る。
自分の環境にあった***.gemを自分のパソコンにダウンロードする。
プロンプトからダウンロードした***.gemまで行く。
gem install ***.gem --local
オプション指定でネットワークインストールしなくてもWindowsに入る。
ネットワークインストールのオプション指定でも入れたいgemは選べたし好きなほうどうぞ。
まさか、zipファイルで配布しているソースの入れ方わからないは勘弁な。
0065デフォルトの名無しさん
2009/02/01(日) 00:22:3764だが一つ忘れた。
ReadMeくらい嫁、以上。
0066デフォルトの名無しさん
2009/02/01(日) 00:29:50>>64も答えるな、カス
0067デフォルトの名無しさん
2009/02/01(日) 01:00:36Ruby は自力救済が必要な状態が長く続いていたんだけど、1.9 で先祖がえりだね。
0068デフォルトの名無しさん
2009/02/01(日) 01:02:170069デフォルトの名無しさん
2009/02/01(日) 01:08:11自分たちの知識が古くなるのを認めたくないのか?
0070デフォルトの名無しさん
2009/02/01(日) 01:12:20お前周りからつまんないって言われてるだろ
0071デフォルトの名無しさん
2009/02/01(日) 01:12:52> 1.9.1使うなって言ってるやつらはなんでそんな必死なの?
必死には到底見えないけど、積極的にそれを打ち出す理由は、
馬鹿が馬鹿なトラブルを抱えて馬鹿な質問でスレを埋め尽くすのが
鬱陶しいからじゃないかな。
君がそういう馬鹿の馬鹿質問に馬鹿丁寧に答えて回る仕事を引き受けるなら、
ありがたいから是非やって欲しいけど。
0072デフォルトの名無しさん
2009/02/01(日) 01:20:12結局この時期に1.9.1に上げたから起こった問題かと思う
0073デフォルトの名無しさん
2009/02/01(日) 01:25:050074デフォルトの名無しさん
2009/02/01(日) 01:28:410075デフォルトの名無しさん
2009/02/01(日) 01:31:51馬鹿質問が鬱陶しいなら初心者スレに来るなよ馬鹿w
0076デフォルトの名無しさん
2009/02/01(日) 01:32:51自力で解決できないならエコーズアクトワン達はこの時期は使うな
0077デフォルトの名無しさん
2009/02/01(日) 01:34:20だから開発者リリースなんだって
実際に動作する新Rubyを提供して外部ライブラリ作者とかに対応してもらうのが実質的な目標
Ruby1.8だって1.8.2の前半くらいまではほぼ誰も使ってなかったんだし
バグを自分で直したり自前で回避したりできない一般ユーザーが使うようなシロモノじゃないんだよ、まだ
0078デフォルトの名無しさん
2009/02/01(日) 01:34:360079デフォルトの名無しさん
2009/02/01(日) 01:36:34正式リリースなんだし当然入れるだろ、jk
みたいな流れが巷で流行ってるみたいです。
0080デフォルトの名無しさん
2009/02/01(日) 01:36:46それを言ったら、初心者に有効な注意をしているのに
必死だの言い出すほうがおかしい。
それに、無用な馬鹿質問を防ぎたい、ということを言っているのであって、
初心者の馬鹿質問がこのスレに1つでも存在していることが嫌だと言っているわけでもない。
無理に興奮しなくていいです。
0081デフォルトの名無しさん
2009/02/01(日) 01:37:37それは1.9.0の話。1.9.1は公式の安定版だよ。
0082デフォルトの名無しさん
2009/02/01(日) 01:39:060083デフォルトの名無しさん
2009/02/01(日) 01:40:07stable の表記がないよ
http://core.ring.gr.jp/archives/lang/ruby/stable/
本当にstableなら入れてもらえ
0084デフォルトの名無しさん
2009/02/01(日) 01:40:29なら入れたら良いじゃん
でもここで質問はダメだよ、君には安定版が入るんだから
0085デフォルトの名無しさん
2009/02/01(日) 01:41:34すまん、それどこに書いてある?
こないだからちょくちょく探してるんだが
0086デフォルトの名無しさん
2009/02/01(日) 01:41:41そこ1.8.xのバージョンしか無いぞw
0087デフォルトの名無しさん
2009/02/01(日) 01:43:01ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/45836
> Ruby 1.9.1をリリースしました。これは1.9系統初の安定版リリースです。
0088デフォルトの名無しさん
2009/02/01(日) 01:43:19安定版だから、まだ1.9.x系は一つも無いのよ
0089デフォルトの名無しさん
2009/02/01(日) 01:44:55安定版ならstableに入ってないのはなぜ?
0090デフォルトの名無しさん
2009/02/01(日) 01:47:43知らん。ringの管理人にでも聞いてくれ。
推測するなら、1.8系列のstableって意味なんじゃね。
0091デフォルトの名無しさん
2009/02/01(日) 01:48:24>Ruby 1.9.1 リリース!!
>たいへんお待たせしました。
>Ruby 1.9.1 が、ついにリリースされました (リリースについてのアナウンス:[ruby-list:45836])。
>本リリースは、Ruby 1.9系統の、初めての公式な安定版のリリースとなります。
堂々とトップページにも書いてあるしな。
0092デフォルトの名無しさん
2009/02/01(日) 01:51:14stable 系列は 1.8 で 1.9 は先進実験的リリースというのを守ってるだけじゃね
正直なとこ、1.9で安定版とか言われても脳がついていかん
1.9から安定版が出るとするならそれはつまるところ2.0なのではないかと思う
0093デフォルトの名無しさん
2009/02/01(日) 01:53:370094デフォルトの名無しさん
2009/02/01(日) 01:54:21正式リリースしたなら、初心者が嵌まらないようにするのも親切じゃないの? 義務とまでは言わないけど。
初心者に厳しい言語を目指すのも有りとは思うけど、こんなノリだとユーザ数は正直増えないね。
まだ使い物に成らないなら、RCか開発者バージョンに戻してじっくり煮込んだほうがいいのでは?
松本教団には、まともなリリースエンジニアって居ないの?
0095デフォルトの名無しさん
2009/02/01(日) 01:54:32お前の脳ちょっとやばいんじゃないかw
>>93
デマを流すなw
0096デフォルトの名無しさん
2009/02/01(日) 01:55:01それは行き過ぎw
2.0出るまでに安定版が1.9から出るだろ、2.0だってもるもんが脳内に温めてて
どこまで現状実装できてるかが怪しいんだし
0097デフォルトの名無しさん
2009/02/01(日) 01:55:06知らん人がほとんどなのではないかと
MLの片隅でひっそり宣言されたようなもんだし
0098デフォルトの名無しさん
2009/02/01(日) 01:56:590099デフォルトの名無しさん
2009/02/01(日) 01:57:39サードパーティのライブラリが対応するまでリリースするなってこと?
リリースしないと対応進まないだろjk
初心者がいきなりサードパーティのライブラリ使おうとするのがおかしい。
0100デフォルトの名無しさん
2009/02/01(日) 01:57:531.9.9が出たら安定するよ☆
0101デフォルトの名無しさん
2009/02/01(日) 01:58:31具体的になにか問題見つけたんなら報告すれ
0102デフォルトの名無しさん
2009/02/01(日) 01:59:28実質的な内容を鑑みた上で、「公式ではこういう名目になってるけど・・・」という切り口で
モノを推奨するのも、こういう場所の機能の一つだと思うし。
0103デフォルトの名無しさん
2009/02/01(日) 01:59:30>初心者がいきなりサードパーティのライブラリ使おうとするのがおかしい。
それが昨今の初心者はそういう香具師が多いんでつよ。。。
0104デフォルトの名無しさん
2009/02/01(日) 02:00:500105デフォルトの名無しさん
2009/02/01(日) 02:01:35最後が1かそれ以上なら安定版
1.9.0 より上の開発版を作るとすれば、それはたぶん 1.10.0
1.9.1 が発表されたことをもって現行の stable Ruby は 1.9.1 となる
というようなことだったはず
ニュースが手抜いてるから混乱するんだよね
0106デフォルトの名無しさん
2009/02/01(日) 02:04:30>1.9.0 より上の開発版を作るとすれば、それはたぶん 1.10.0
なんか珍しいな、その形式
0107デフォルトの名無しさん
2009/02/01(日) 02:04:41「本体は安定しつつあるけど外部ライブラリは全然対応してないから遊びにだけ使ってたほうがいいよリリース」
を一言で
0108デフォルトの名無しさん
2009/02/01(日) 02:05:080109デフォルトの名無しさん
2009/02/01(日) 02:06:10ファイル名でソートすると変な並び方になるからホントはやめて欲しいんだけどね、2桁
0110デフォルトの名無しさん
2009/02/01(日) 02:07:12あまり凝らず、シンプルに「使えない安定版」で。
0111デフォルトの名無しさん
2009/02/01(日) 02:07:290112デフォルトの名無しさん
2009/02/01(日) 02:08:02安定版Ruby・対応ライブラリ募集編
0113デフォルトの名無しさん
2009/02/01(日) 02:09:31安定コア版
0114デフォルトの名無しさん
2009/02/01(日) 02:11:13大人向けRuby
0115デフォルトの名無しさん
2009/02/01(日) 02:11:270116デフォルトの名無しさん
2009/02/01(日) 02:11:421.9に関する話はするな、レスもするな、とまで言うことはないだろ。
答えられないならスルーすればいいよ。
今から1.9で勉強を始めれば、一通り覚えたころには主要ライブラリの
対応が終わってて、むしろいいタイミングだと思う。
0117デフォルトの名無しさん
2009/02/01(日) 02:11:530118デフォルトの名無しさん
2009/02/01(日) 02:12:530119デフォルトの名無しさん
2009/02/01(日) 02:14:02全て真に受ける純真な君向けのいいスレがあるぞ
http://pc11.2ch.net/test/read.cgi/tech/1207233348/
あと外部ライブラリを使いたくなるほうが早いと思う
というか外部ライブラリ使わずにRubyを勉強とか修行僧かなんかですか
0120デフォルトの名無しさん
2009/02/01(日) 02:14:040121デフォルトの名無しさん
2009/02/01(日) 02:15:54すまん間違えてた。x→0が開発版、x→1以上が安定版、だな
0122デフォルトの名無しさん
2009/02/01(日) 02:16:08ただの真性Mなだけです。
0123デフォルトの名無しさん
2009/02/01(日) 02:16:10とにかくRubyというものを一から勉強するという人は今は稀なんじゃないかな
0124デフォルトの名無しさん
2009/02/01(日) 02:17:23いや別に他の言語から流れてきただけなんすけどね。。。
0125デフォルトの名無しさん
2009/02/01(日) 02:18:08つperl5.10.0
>>109
Perlのモジュールで、perl5.10.0に突っ込んだら5.1と解釈されてハマったものがあった。2つ目が10になると困るケースは出そうだな。
0126デフォルトの名無しさん
2009/02/01(日) 02:23:390127デフォルトの名無しさん
2009/02/01(日) 02:24:41メジャーバージョンでそれは痛いw
0128デフォルトの名無しさん
2009/02/01(日) 02:30:55そんなん,ユーザが増えてきたらどの言語でも同じでしょ
ライブラリがあるから言語は便利になってユーザが増える
標準ライブラリ以外存在しないのに多用途に便利な言語があったらそれはすごいな
0129デフォルトの名無しさん
2009/02/01(日) 02:31:03irb> "1.1.99" < "1.10.0"
true
n文字目を抽出して比較とかそんなめんどくさいバグの根源となる処理はしなくてもOKです
0130デフォルトの名無しさん
2009/02/01(日) 02:32:11> つperl5.10.0
ピリオド2つあるなら、いわゆる「小数」の意味ではないのもちゃんとわかるし、
そんなに珍しくもないよな。
Dの場合、0.99から0.100に行ったから凄いと思った。
誰もが1の99%の大きさであるところの「れーてんきゅうきゅう」をイメージしていたところで、
ガツンと来たからな。
0131デフォルトの名無しさん
2009/02/01(日) 02:33:29Python 3が後方互換性を捨ててでも求めたもの
ttp://www.atmarkit.co.jp/fcoding/articles/python3/01/python301a.html
0132デフォルトの名無しさん
2009/02/01(日) 03:06:48ruby 1.9だと、ブロック引数がブロックローカルになったのとか
後々になってまずかったのが判明したけど
互換性なくすから手がつけられなかった仕様
あと
バージョン番号は必ず1桁だったはず
1.9.9までいったあとはどうなるんだろ?
2.0 系列になったらネームスペースやらキーワード引数とかが入るのかなぁ
いつになることやら、さっぱりわからんが
0133デフォルトの名無しさん
2009/02/01(日) 03:16:38さすがに1.9.9が出るまでには2.0が出るんじゃないか。
0134デフォルトの名無しさん
2009/02/01(日) 04:09:26来年の今頃か、また何か起きるのカナ
0135デフォルトの名無しさん
2009/02/01(日) 04:40:25ttp://japan.cnet.com/news/media/story/0,2000056023,20387408,00.htm?ref=rss
やっぱなんかあったんだな、その時間全てのサイトに対して表示出たから
可笑しいと思ったんだよ
0136デフォルトの名無しさん
2009/02/01(日) 06:26:18初心者がいきなりサードパーティのライブラリ使おうとするのは自然。目的があってrubyを使うのだし。rubyを使うために修行してる訳でもない。ある物は再利用して使うのがオブジェクト指向でしょ。
でも1.9は互換性が無くてオブジェクトを再利用できない出来損ない。
0137デフォルトの名無しさん
2009/02/01(日) 08:35:532点
やり直し
0138デフォルトの名無しさん
2009/02/01(日) 12:32:49書籍や解説やライブラリのサポートがまだありません】ってテンプレに書いてある
からもういいと思う。
0139デフォルトの名無しさん
2009/02/01(日) 12:36:01安定版ではないからだと言い張るのも痛いと思う。
未対応gem入れてトラブッてる人と同じで、rubyとしての配布物と、
サードパーティのライブラリの追随の区別が付いてないんじゃ?
それはともかく、ripper面白いな。
0140デフォルトの名無しさん
2009/02/01(日) 13:52:55まともなパッケージ配布管理システムならその程度の機能ぐらい付いてるぞ。
0141デフォルトの名無しさん
2009/02/01(日) 13:56:22ほとんどのライブラリ作者が手を抜いて記述してないだけ
まあ、1.9.1 より前の 1.9 に対応しとけということ自体が実際は酷だと思う
どっかのレスにもあったが、1.9.1 が出たことではじめて「真面目に」外部ライブラリ対応が始まると思われる
だから、使うだけのユーザーさんには 1.9.2 くらいを使ってもらうのが一番いいんだよ
0142デフォルトの名無しさん
2009/02/01(日) 13:58:430143デフォルトの名無しさん
2009/02/01(日) 14:05:150144デフォルトの名無しさん
2009/02/01(日) 14:06:521.9 対応にしたことで別途対応が必要になるほど不安定になるとかまずありえないと思うんだが
っていうかそういうのがあったとしたらそのライブラリ自体が変だ
0145デフォルトの名無しさん
2009/02/01(日) 14:23:58自分がやってやろうとは夢にも思わないんですね
0146デフォルトの名無しさん
2009/02/01(日) 14:29:11他人が地雷踏んで安定させるのを口開けて待ってるだけのようなやつらが
中級者面して他人に教えるスレなんです。
0147デフォルトの名無しさん
2009/02/01(日) 14:33:23やる人はやりたいからやってるだけだからな。
0148デフォルトの名無しさん
2009/02/01(日) 14:33:54ライブラリ作ったことも公開したこともない初心者さんこんにちは
0149デフォルトの名無しさん
2009/02/01(日) 14:35:20別にあってもいいが激レア事象で一般化無理だ
0150デフォルトの名無しさん
2009/02/01(日) 14:38:41外部者が1.9パッチ投げる→メンテナが1.8用新バージョン作る→外部者が新版の1.9パッチ投げる→
0151デフォルトの名無しさん
2009/02/01(日) 14:40:10えー? 「動かないよ。これパッチ」って普通じゃん。
0152デフォルトの名無しさん
2009/02/01(日) 14:40:421.9用だけど1.8でも動くとかそういう書き方って稀だよね?
0153デフォルトの名無しさん
2009/02/01(日) 14:44:371.9 版は誰かが作ってくれだってさ
0154デフォルトの名無しさん
2009/02/01(日) 14:50:08そこまで別言語じゃないよ。
どっちでも動く記述方法はだいたい提供されてる。
>>153
なんてライブラリ?
0155デフォルトの名無しさん
2009/02/01(日) 15:05:44配列の参照のコピーじゃなくて、値そのものを別の変数に代入して
元の配列の中身を壊さないように、コピー先の変数の中身を変更したいのです。
0156デフォルトの名無しさん
2009/02/01(日) 15:09:02コードでおk
0157デフォルトの名無しさん
2009/02/01(日) 15:09:38単なる数値の配列なら dup で事足りる。
もっと深いコピーが必要なら、少し工夫が必要になる。
0158デフォルトの名無しさん
2009/02/01(日) 15:14:170159デフォルトの名無しさん
2009/02/01(日) 15:15:22ただし、Marshalできないオブジェクトが含まれていると使えない
0160デフォルトの名無しさん
2009/02/01(日) 15:15:34b = a
b[0] = "X"
p a, b
#=> ["X", "B", "C"], ["X", "B", "C"]
これを
#=> ["A", "B", "C"], ["X", "B", "C"]
にしたいってこと?
>>157の言うように b = a.dup でよろし
>>158
配列の全体コピーはRuby書き始めの頃は毎回やってたが、最近はほとんどしないな
0161デフォルトの名無しさん
2009/02/01(日) 15:18:18to_a を作るか to_ary を作るかで迷ってるのでアドバイスください糞どもお願いします
0162デフォルトの名無しさん
2009/02/01(日) 15:19:550163デフォルトの名無しさん
2009/02/01(日) 15:23:08to_a
Object#to_a は obsolete だが、あれは全クラスに影響する Object クラスだからなので気にしなくていい
配列にしたいという陽な意図なら to_a を作るべきだと思う
0164デフォルトの名無しさん
2009/02/01(日) 15:29:550165155
2009/02/01(日) 15:31:42解決できたんですが、がんばってサンプルコード書いてたので、
やりたかったのは下のようなことでした。
ORIG =
{
:test1 => "1:%1%",
:test2 => "10:%1%",
}
a = ORIG[:test1]
puts "original=" + ORIG[:test1] + "\n"
puts "change=" + a + "\n"
a.gsub!("%1%", "change")
puts "original=" + ORIG[:test1] + "\n"
puts "change=" + a + "\n"
で、
a = ORIG[:test1].dup
で希望通りになりました。
ありがとうございました。
0166デフォルトの名無しさん
2009/02/01(日) 15:42:32a2 = a.gsub("%1%", "change")
というように別変数が作れるように書くと思う
dup でオリジナル丸ごとコピーはしないかも
0167デフォルトの名無しさん
2009/02/01(日) 16:05:52のちのちフックする処理が発生しそうな気がするのでアクセサを経由しようと思います
class Hoge
attr_accessor :val1, val2, val3
def main(params)
val1 = params[0]
val2 = params[1]
...
こんな感じです
が、なんかローカル変数っぽくてちょっと残念です
1. val1 = params[0] でいいじゃん
2. val1() = params[0] でどうだ
3. self.val1 = params[0] が妥当
4. val1 = params[0] # @val1
どんなもんでしょう
0168デフォルトの名無しさん
2009/02/01(日) 16:11:47次点で4
val1のように名前がローカルっぽい雰囲気で紛らわしい場合は3
2は「引数のないメソッド呼び出しは ( ) を省略する傾向にある」というRubyの書き方のほうに踏み込んでて超キモい
0169デフォルトの名無しさん
2009/02/01(日) 16:12:53例えばクラス生成時に initialize でデータベースに接続し、デストラクタで切断
みたいにやりたのだけども。
自前で接続、切断のメソッドを作成して明示的に呼ぶのが ruby っぽいやり方でしょうか?
0170デフォルトの名無しさん
2009/02/01(日) 16:18:36ローカル変数っぽいっていうか、実際ローカル変数の代入になってると思うぞ。
その選択肢なら3以外は動いてない。
0171デフォルトの名無しさん
2009/02/01(日) 16:19:34ブロック終了時に切断とかの終了処理すればいい
0172デフォルトの名無しさん
2009/02/01(日) 16:21:00class DB
def self.transaction
db = DB.new
yield db
db.close
end
def close
# 終了処理
end
end
みたいなメソッドを用意する。
DB.transaction do |db|
# db をいじる
end
0173デフォルトの名無しさん
2009/02/01(日) 16:26:41文脈依存でやや紛らわしい
やや
0175デフォルトの名無しさん
2009/02/01(日) 16:50:54常に val というローカル変数への代入とみなされて、アクセサ経由で代入をすることはできない?
っていうかそうなってるな
irb> def val=(a); p "Woo!"; end
irb> val=(1)
1
irb> self.val=(1)
"Woo!"
1
0176デフォルトの名無しさん
2009/02/01(日) 17:01:24yield内のユーザーコードで何か起こっても終了処理が行われるように
db = DB.new
begin
yield db
ensure
db.close
end
のようにensureを使うのを推奨。
0177デフォルトの名無しさん
2009/02/01(日) 17:02:43メソッド呼ぶときは常に self つけておいたほうがいいのかなあ
0178デフォルトの名無しさん
2009/02/01(日) 17:04:27privateメソッドが呼べなくなるぞ
0179デフォルトの名無しさん
2009/02/01(日) 17:39:202はキモいどころかsyntax error
0180デフォルトの名無しさん
2009/02/02(月) 02:55:270181デフォルトの名無しさん
2009/02/02(月) 03:04:18考えまでは当たってるけど、若干間違ってるので突っ込んでおく。
1.2、1.4、1.6、1.8、2.0等の偶数番号のリリースが安定公開版。
1.3、1.5、1.7、1.9等の奇数番号のリリースは開発版。
0182デフォルトの名無しさん
2009/02/02(月) 03:39:10全角20文字分の文字を先頭から取り出す処理したいのですが、
文字数で指定すると取り出した文字に半角が多かった場合、全角20文字のスペースが余りますよね。
どのようにして全角20文字分の文字を全角・半角が混在した文字列から取り出したらいいのでしょうか。
0183デフォルトの名無しさん
2009/02/02(月) 03:40:38知ってたような知らんかったような、とりあえずthx☆
0184デフォルトの名無しさん
2009/02/02(月) 04:08:371.9からその方針は変わった。1.9.1は純然たる安定版。
0185デフォルトの名無しさん
2009/02/02(月) 05:45:07>>182
「全角半角関係なく20文字取り出したい」だと判断
str.split(//E)[0..20]
E は str の文字エンコード、ShiftJISならs、EUC-JPならe、UTF-8ならu
irb> str = "外部ライブラリ不備のRuby1.9.1はうんこ"
irb> puts str[0..19]
外部ライブラ懽
irb> puts str.split(//u)[0..19].to_s
外部ライブラリ不備のRuby1.9.1は
0186デフォルトの名無しさん
2009/02/02(月) 05:47:38なんとしても2.0を出したくないからってポリシー変えたんだよな
安易にメジャーバージョン上げないという点では好ましいが、
そこまでするかという気もする
0187デフォルトの名無しさん
2009/02/02(月) 07:02:26なんとしても2.0を出したくないって変なところで強気だよなwww
0188デフォルトの名無しさん
2009/02/02(月) 07:49:02そうすれば「ああ2.0.xでは仕様が大きく変わってるんだなぁ」と、初心者にもある程度分かったはず
そうして次期Ruby(Rite?)を3.0.xにしてくれれば丸く収まっていた
0189デフォルトの名無しさん
2009/02/02(月) 07:51:580190デフォルトの名無しさん
2009/02/02(月) 10:01:120191デフォルトの名無しさん
2009/02/02(月) 11:23:08だから1.9系は違うと・・・初めてのRuby(P10)で開発者メンバーが書いてるんだから間違いない
1.9.0→開発版、1.9.X(X > 0)安定版
0192デフォルトの名無しさん
2009/02/02(月) 11:42:03さりとて、1.10にもしたくない。
仕方なく、奇数でも安定バージョンにしたと。
0193デフォルトの名無しさん
2009/02/02(月) 11:50:45最新数レスしか世界が無いみたいで可哀想
0194デフォルトの名無しさん
2009/02/02(月) 12:47:21str[/.{20}/e]がおすすめ。
ちなみに1.9ならstr[0, 20]だけでいい。
0195デフォルトの名無しさん
2009/02/02(月) 13:17:47亀だが3
ローカル変数への代入との区別の兼ね合いで、3みたいな形は
val1=()がprivateでも呼べる。
0196デフォルトの名無しさん
2009/02/02(月) 13:33:48C
irb> C.new.m1
NoMethodError: private method `xxx' called for #<C:0xb7c12304>
irb> C.new.m2
NoMethodError: private method `xxx' called for #<C:0xb7c10388>
irb> class C; def m1; C.new.xxx=0; end; def m2; self.xxx=0; end; def xxx=(s); end; private :xxx=; end
C
irb> C.new.m1
NoMethodError: private method `xxx=' called for #<C:0xb7bf0100>
irb> C.new.m2
0
変な挙動…
0197デフォルトの名無しさん
2009/02/02(月) 13:43:21trapにも書いてあるな
ttp://www.ruby-lang.org/ja/man/html/trap_A5B9A5B3A1BCA5D7A1A2C0A9B8E6B9BDC2A4.html
> ローカル変数と等号付きメソッド
> レシーバを省略するとメソッドではなくローカル変数として扱われます。
> 普通のメソッドはselfのレシーバを省略できますが、この場合は不可。
class Foo
def bar=(v)
end
def baz
bar = 0 # ローカル変数 bar への代入
self.bar = 0 # メソッド bar= の呼び出し
end
end
0198デフォルトの名無しさん
2009/02/02(月) 14:01:47その過去レスを見ないやつのためにソースも出してレスし直したわけだが
0199デフォルトの名無しさん
2009/02/02(月) 16:49:02つ おまいの出したのはソースじゃなく本な件について
0200デフォルトの名無しさん
2009/02/02(月) 17:07:190201デフォルトの名無しさん
2009/02/02(月) 17:08:140202デフォルトの名無しさん
2009/02/02(月) 17:12:45ひどすぎるいいがかりだなw
>>198
ずいぶん前に、バージョンの名づけポリシーが変わった記憶はある。
でも、↓見ると元に戻ったのかとか、何かの勘違いだったんだろうかとか思ってしまう。
http://www.atmarkit.co.jp/news/200712/25/ruby.html
まあ、これより新しいソースがあると知って安心したよ。
0203デフォルトの名無しさん
2009/02/02(月) 17:47:04マージとかindexとかもうわけわかめ
0204デフォルトの名無しさん
2009/02/02(月) 17:52:55hash1.merge(hash2) {|key, self_val, other_val| self_val + other_val }
0205デフォルトの名無しさん
2009/02/02(月) 17:53:560206デフォルトの名無しさん
2009/02/02(月) 18:00:07やりたいことを頭に描いてひとつひとつ実装してくといい
ベンリ機能でカッコよく書き換えようとするのはそのあとだ
頭の中ではっきりしてないから、わけがわからなくなる
hash_a = {"a" => "1", "b" => "2"}
hash_b = {"a" => "1", "c" => "3"}
hash_a.each_pair do |key_a, val_a|
if hash_b.has_key?(key_a)
hash_a[key_a] = val_a + hash_b[key_a]
end
end
0207デフォルトの名無しさん
2009/02/02(月) 18:01:30ハッシュは一つでその中でキーが同じときなんだけど 大丈夫かしら?
0208デフォルトの名無しさん
2009/02/02(月) 18:08:24そういうことか、ハッシュに代入するときとか言ってくれw
+が破壊的じゃないという前提で
h = Hash.new(0)
h[:key] += 1
h[:key] += 2
puts h[:key] # -> 3
文字列だったらHash.new("")とか。
ただこの初期値は共通のオブジェクトを使い回すというクセがあるから
取り扱いに注意。
0209デフォルトの名無しさん
2009/02/02(月) 18:10:240210デフォルトの名無しさん
2009/02/02(月) 18:10:37if hash.key? key
hash[key] += value
else
hash[key] = value
end
こっちのほうがHash.newの罠もないし確実。
0211デフォルトの名無しさん
2009/02/02(月) 18:15:28k, v = "a", "3"
if h.has_key?(k)
h[k] = h[k] + v
end
これでいいじゃんね
…自動でやりたい?
class MyData < Hash
def []=(k, v)
if self.has_key?(k) then
store(k, self[k] + v)
else
store(k, v)
end
end
end
data = MyData[{"a" => "1", "b" => "2"}]
data["a"] = "3"
p data
#=> {"a"=>"13", "b"=>"2"}
0212デフォルトの名無しさん
2009/02/02(月) 22:46:570213デフォルトの名無しさん
2009/02/02(月) 22:54:15欲しいのはwordがkey1で何回,key2で何回・・・って
最初に呼び出すときにhash1.each{|key,value|・・・てやるとその括弧ないではhash1は呼び出せないよね?
0214デフォルトの名無しさん
2009/02/02(月) 23:03:33word = ["a", "b", "c"]
h1 = {"1"=>"a", "2"=>"b", "3"=>"b", "4"=>"c", "5"=>"c", "6"=>"c"}
counts = Hash.new
word.each do |e|
counts[e] = 0
end
h1.each_pair do |key,val|
if counts.has_key?(val) then
counts[val] = counts[val] + 1
end
end
p counts
結果
{"a"=>1, "b"=>2, "c"=>3}
0215デフォルトの名無しさん
2009/02/02(月) 23:22:12word = ["a", "b", "c"]
h1 = {"A"=>"abcabc", "B"=>"abbbc", "C"=>"aaccc"}
だと
結果が
{
"a"=>{"A"=>2,"B"=>1,"C"=>2},
"b"=>{"A"=>2,"B"=>3,"C"=>0},
"c"=>{"A"=>2,"B"=>1,"C"=>3},
} になってほしいのですけど・・・・・
0216デフォルトの名無しさん
2009/02/02(月) 23:33:44words = ["a", "b", "c"]
h1 = {"A"=>"abcabc", "B"=>"abbbc", "C"=>"aaccc"}
results = Hash.new
words.each{|e| results[e] = Hash.new}
h1.each_pair do |key, val|
results.each_pair do |word, counts|
counts[key] = val.scan(/#{word}/).flatten.size
end
end
require 'pp'
pp results
結果:
{"a"=>{"A"=>2, "B"=>1, "C"=>2},
"b"=>{"A"=>2, "B"=>3, "C"=>0},
"c"=>{"A"=>2, "B"=>1, "C"=>3}}
っしゃ
0217デフォルトの名無しさん
2009/02/03(火) 00:15:50は
val.count(word)
でよくね?
0218デフォルトの名無しさん
2009/02/03(火) 00:30:27count で用が済むのならそっちのほうが字面もいいかも
0219デフォルトの名無しさん
2009/02/03(火) 00:41:25kwsk
0220デフォルトの名無しさん
2009/02/03(火) 11:09:38もうちょっとだけ続くんじゃ
0221デフォルトの名無しさん
2009/02/03(火) 12:39:072005年4月1日に、1.8.0x1FFFFFまでやることが決まってるよ?
0222デフォルトの名無しさん
2009/02/03(火) 17:10:070223デフォルトの名無しさん
2009/02/03(火) 17:16:33初心者にはそれほど役立たないまたは初心者が読めないので1.9変更点を記述したものなら既にあるが
0224デフォルトの名無しさん
2009/02/03(火) 17:23:25オライリーの最新Ruby本の2冊は1.9系対応だよ
0225デフォルトの名無しさん
2009/02/03(火) 17:27:39>>224
ありがとうございます☆
0226デフォルトの名無しさん
2009/02/04(水) 03:59:17標準ライブラリだけじゃ意味無いだろ。
0227デフォルトの名無しさん
2009/02/04(水) 04:50:12周りの対応次第なのでなんとも言えない状況
0228デフォルトの名無しさん
2009/02/04(水) 05:15:24周りの対応状況で1.9を地雷というのは可笑しい
標準ライブラリ以外は基本的に第三者提供のもの
対応するもしないも作成した第三者が決めるものであって
Rubyのリリースする人達は関係無い話
それでも文句あるなら1.9を使用しなきゃ良いだけ
0229デフォルトの名無しさん
2009/02/04(水) 05:21:510230デフォルトの名無しさん
2009/02/04(水) 06:08:220231デフォルトの名無しさん
2009/02/04(水) 06:35:390232デフォルトの名無しさん
2009/02/04(水) 07:03:23そんなこと言い出したら、C言語で十分とか、きりがない
0233デフォルトの名無しさん
2009/02/04(水) 07:24:13> そんなこと言い出したら、C言語で十分とか、きりがない
言い出したが最後、キリなく突き詰める奴が馬鹿なだけだろう。
0234デフォルトの名無しさん
2009/02/04(水) 09:18:540235デフォルトの名無しさん
2009/02/04(水) 16:14:490236デフォルトの名無しさん
2009/02/04(水) 16:41:14[1.0],
[1.0]]
っていう配列があって、内側の[[0][0]+[1][0]+[2][0],[0][1]+0+0]という
配列が欲しいっすけど、普通に足したらnilってなるんですけどnilってなんですか?
やっぱ、0で初期化しないといけないんっすかね?
0237デフォルトの名無しさん
2009/02/04(水) 16:44:34エスパー募集ですか。。。
分かるところだけ答えると、nilは「値がない」とかそんなような意味。
0238デフォルトの名無しさん
2009/02/04(水) 16:46:50他の言語やってたら「null」ってあるだろ、「nil」はそんなもん
0で初期化って概念も無い
0239デフォルトの名無しさん
2009/02/04(水) 16:47:550240デフォルトの名無しさん
2009/02/04(水) 16:48:310241デフォルトの名無しさん
2009/02/04(水) 16:50:220+1 #=> 1
0+0 #=> 0
0242デフォルトの名無しさん
2009/02/04(水) 16:55:27a = [[0.5, 0.5], [1.0], [1.0]]
res0 = a[0][0] + a[1][0] + a[2][0]
res1 = a[0][1] + 0 + 0
ということで、
>>236
Rubyには多重配列というものはない
多重配列のように見えるものはそのひとつ前のオブジェクトにメソッドを作用させたものに過ぎない
a[1][0]は「配列a の [0, 1] 番地の要素」ではなく「a[0] の返り値に対しての [1]」
よって、[1.0][1] は配列要素が 1個なのに2要素目を参照してるから、nil だ
0243デフォルトの名無しさん
2009/02/04(水) 17:00:48>>242
> a[1][0]は「配列a の [0, 1] 番地の要素」ではなく「a[0] の返り値に対しての [1]」
a[1][0]は「配列a の [1, 0] 番地の要素」ではなく「a[1] の返り値に対しての [0]」
a = [[0.5, 0.5], [1.0], [1.0]]
を、事前に
a = [[0.5, 0.5], [1.0, 0.0], [1.0, 0.0]]
に相当する配列に事前に自動で書き換えるか生成時に固定サイズで0.0で埋めておくか、
あるいは加算処理時に「nilなら0.0とみなす」という処理を書くのが妥当かと
0244デフォルトの名無しさん
2009/02/04(水) 17:09:28配列作ったときに 0.0 で埋めてもらうべきだね
最初のデータ生成処理部分が手ぇ抜いてるんだな
0245デフォルトの名無しさん
2009/02/04(水) 17:44:39でaをeachで>>236みたいに足すときってどうすればいい?
0246デフォルトの名無しさん
2009/02/04(水) 17:47:47落ち着いて配列要素ごとにひとつずつ書け
最初から「カッコいい」短い書き方である必要性は何もない
0247デフォルトの名無しさん
2009/02/04(水) 17:49:06数が多いし数十のファイルで走らせるから汎用性が欲しいんだお
0248デフォルトの名無しさん
2009/02/04(水) 17:54:49だから汎用的に書けばいいだろ
汎用的に使える処理を組み出すんだよ
0249デフォルトの名無しさん
2009/02/04(水) 17:59:56VBAで作られているわけではない。
C++で作られているのだ。
0250デフォルトの名無しさん
2009/02/04(水) 18:07:22test2 = [[0.5, 0.5], [1.0, 1.0], [1.0, 1.0, 1.0], [0.5]]
def addup(arr)
result = Array.new
maxsize = arr.map{|a| a.size}.max
0.upto(maxsize-1) do |i|
subtotal = 0.0
arr.each do |a|
if a[i] == nil then
subtotal = subtotal + 0.0
else
subtotal = subtotal + a[i]
end
end
result << subtotal
end
return result
end
p addup(test1)
p addup(test2)
0251デフォルトの名無しさん
2009/02/04(水) 18:24:26a = [[0.5, 0.5], [1.0], [1.0]]
sum = [0, 0]
a.each_index do |i|
a[i].each_index do |j|
s = a[i][j] || 0
sum[j] += s
end
end
p sum
0252デフォルトの名無しさん
2009/02/04(水) 18:46:05Ruby人口が増えて某言語みたいになったらなんかさびしいな
0253デフォルトの名無しさん
2009/02/04(水) 18:47:44やっぱきめえ
早く each_index の寿命無くなって死なないかな
0254デフォルトの名無しさん
2009/02/04(水) 19:43:03そうやって、Ruby(やらそのコミュニティ)を引き合いに出して、
他言語を貶めるのはやめようぜ。
0255デフォルトの名無しさん
2009/02/04(水) 19:46:550256デフォルトの名無しさん
2009/02/04(水) 19:55:57each_index は他の一般的なブロックつきメソッドとは違う動作をしている
0257デフォルトの名無しさん
2009/02/04(水) 20:06:43each_index 的につかうならば、
obj.size.times{ |i| } とか使いそうだけどな。
0258デフォルトの名無しさん
2009/02/04(水) 20:28:48requireで子ファイルを呼び出して実行させる時に子ファイルでfileを参照(?)したいのですが
undefined local variable or methodって言われるのですが
fileを定義してねーぞっていう意味とは理解できるのですが
たのしいRuby2版P28の絵のイメージだとあたかも1つのファイルの様に子ファイルを呼び出している様に感じたのですが
やっぱり 子ファイルでもfile=xxxxxとしないといけないのでしょうか?
0259デフォルトの名無しさん
2009/02/04(水) 20:42:020260デフォルトの名無しさん
2009/02/04(水) 20:48:29現時点では絶対ダメ。1.8.7から入るのが正しい
理由はテンプレ見れ
0261デフォルトの名無しさん
2009/02/04(水) 20:58:45さんくす。
背伸びせず1.8.7で頑張る。
0262デフォルトの名無しさん
2009/02/04(水) 21:09:58ローカル変数のスコープはファイル毎
0263デフォルトの名無しさん
2009/02/04(水) 21:45:15ファイル単位っていうか…
>>258
普通ではできない
eval を使うとできる
a = nil
eval(File.open('define_a.rb'){|f| f.read})
p a
わりとめんどくさい
「インスタンス変数を“用意”した外部ファイルを読み込んでその場で即変数を利用」
という曲芸は標準ではできね
なんかbindingとProcを駆使すれば似たような動作させられそうな気もちょっとしたがパス
0264デフォルトの名無しさん
2009/02/04(水) 21:53:45irb でちょっと欲しいときがある
毎回全く同じように require 連打して 決まりきったローカル変数作るのめんどい
0265デフォルトの名無しさん
2009/02/04(水) 22:01:25上のは見ることが出来るんだけど,
標準ライブラリと添付ライブラリの記述があると思われる
http://www.ruby-lang.org/ja/man/archive/ruby-refm-1.8.7-20081229.chm
このヘルプファイルがどのページも読めない。(エラー内容は末尾に添付)
見るとこ間違ってるのかな・・
-------------表示されるエラー--------------------
このプログラムではこの Web ページを表示できません
可能性のある原因:
インターネットに接続されていない。
Web サイトに問題が発生している。
アドレスに入力の間違いがある可能性がある。
-------------------------------------------------
0266デフォルトの名無しさん
2009/02/04(水) 22:13:59フォルダパスに#が含まれていたら別のとこに移す
chmファイルのプロパティに「ブロックの解除」があれば適用する
セキュリティの警告ダイアログボックスがあるなら「この種類のファイルであれば常に警告する」を外す
0267デフォルトの名無しさん
2009/02/04(水) 22:15:54ネットワークドライブ上に置いたchmファイルでそういう現象が起きた。
ローカルに持っていったらちゃんと見える。
IEのセキュリティ設定に依存するのかも。
0268デフォルトの名無しさん
2009/02/04(水) 22:16:14シリアライズしたのを読めば医院で内科
0269デフォルトの名無しさん
2009/02/04(水) 22:17:05「標準でできない」というのが、どういう事なのかよく分からないが
instance_eval使えばできるじゃないか
0270デフォルトの名無しさん
2009/02/04(水) 22:51:25さんくすブロックの解除で見れました。恥ずかしい。。
0271デフォルトの名無しさん
2009/02/05(木) 00:33:35一個一個正規表現で指定していったら level too deep になってしまうのです。
しかも、半角と全角が混じってるからめんどくさい・・・・。
0272デフォルトの名無しさん
2009/02/05(木) 01:04:41とりあえずパターンごとにgsub繰り返すのはどう?
0273デフォルトの名無しさん
2009/02/05(木) 01:07:35それだけで研究対象になるくらい難しいと思う。
記号の出現数とか、全文字数に対する割合とか、連続出現とか、
ざっくりと判定した方がいいんじゃないだろうか。
ピンポイントで自動削除じゃなくて、注意を出して入力訂正してもらうことになるが。
0274デフォルトの名無しさん
2009/02/05(木) 01:12:21ニューラルネットワークによるパターン分析とかそんなん使わないと
顔文字辞書があるならもうちょっと楽だが、正規表現の出る幕じゃないな
形態素解析にぶち込むのが簡単だと思う
0275デフォルトの名無しさん
2009/02/05(木) 01:15:45()()/^\とかでも結構きえるんじゃね?
0276デフォルトの名無しさん
2009/02/05(木) 03:16:01手続き型風に書くならこれでいい。
sum = [0, 0]
a.each do |b|
b.each_with_index do |x, i|
sum[i] += x
end
end
transposeが好きならこうかな。
m = a.map {|b| b.size }.max
sum = a.map {|b| b + [0] * (m - b.size) }.transpose.map {|b| b.inject {|s, x| s + x } }
メソッドチェインが好きならこんなのとか。実際に書く勇気はないが。
sum = a.max_by {|b| b.size }.zip(*a).map {|b| b[1..-1].inject {|s, x| s + (x || 0) } }
0277デフォルトの名無しさん
2009/02/05(木) 10:12:05line という 文字列配列があるとして
line.each do |str|
# ここで line[x] の内容を変更したい
end
何かよい方法はありますか?
0278デフォルトの名無しさん
2009/02/05(木) 10:30:32Array#map または Array#map!
arr = [1, 2, 3, 4, 5]
p arr.map{|e| e*2} #=> [2, 4, 6, 8, 10]
puts arr.map{|e| if e == 3 then 'さぁ箸キん' else e end} #=> [1, 2, "さぁ箸キん", 4, 5]
0279デフォルトの名無しさん
2009/02/05(木) 10:31:02まいっか
0280デフォルトの名無しさん
2009/02/05(木) 10:38:04ありがとうございます、ばっちしです。
化けた文字が気になりますがw
0281デフォルトの名無しさん
2009/02/05(木) 11:04:44csv = CSV.open('test.csv', 'w')
data = ["あいうえお", "かきくけこ", "さしすせそ"]
csv.add_row(data)
csv.close
だと、
あいうえお、かきくけこ、さしすせそ
と出力され、
csv = CSV.open('test.csv', 'w')
data = ["あいうえお", "かきくけこ", "さしすせそ"]
data[0] = '"' + data[0] + '"'
data[1] = '"' + data[1] + '"'
data[2] = '"' + data[2] + '"'
csv.add_row(data)
csv.close
だと
"""あいうえお""","""かきくけこ""","""さしすせそ"""
となります。
"あいうえお","かきくけこ","さしすせそ"
このように出力するにはどうしたらいいのでしょうか?
0282デフォルトの名無しさん
2009/02/05(木) 11:30:54""が必要な要素のときに自動的に挿入される。
どうしても常に括らせたいならたぶんこんな感じ?
class << CSV
private
def generate_body(cell, out_dev, fs, rs)
if cell.nil?
else
cell = cell.to_s
row_data = cell.dup
out_dev << '"' << row_data << '"'
end
end
end
0283デフォルトの名無しさん
2009/02/05(木) 12:32:15> このように出力するにはどうしたらいいのでしょうか?
その書き方「CSVではない」ので、csvライブラリではできない
csvライブラリは配列をコンマ区切りで書き出すライブラリではないから
0284デフォルトの名無しさん
2009/02/05(木) 12:50:37ま、そういうこったな
読み書きを自前でやるしかあるまい
0285デフォルトの名無しさん
2009/02/05(木) 14:07:10ちなみにrails2.3を使うのが目的です
0286デフォルトの名無しさん
2009/02/05(木) 14:12:18Ruby1.8.7を使う
以上
0287デフォルトの名無しさん
2009/02/05(木) 14:15:38Railsやgemが動作しなくてもスクリプトを書ける実力があるのなら1.9.1使え
0288デフォルトの名無しさん
2009/02/05(木) 14:28:04ありがとうございます
1.8.7にします
ところでアップデートはバイナリを上書きすればよいのでしょうか
0289デフォルトの名無しさん
2009/02/05(木) 14:48:33たしかにこれでいいよなぁ
ary = [["a","b"],["c","d"]]
%(") + ary.map{|a| a.join %(",")}.join(%("\n")) + %(")
0290デフォルトの名無しさん
2009/02/05(木) 14:49:40OSの提供するパーッケージを使う
自力で make install できるくらいならアップデートの方法も見当つくだろ
0291デフォルトの名無しさん
2009/02/05(木) 15:00:05bin ディレクトリは上書きしてOK
稀に ruby1.8 と 1.8ruby と ruby がぐっちゃになってるが
0292デフォルトの名無しさん
2009/02/05(木) 15:35:10class A
def hoge
B.new
end
end
class B; end
end
module M2
class A < M::A
end
class B < M::B
end
end
p M2::A.new.hoge
これで M2::B が返って欲しいんですがいい方法はありますか?
M2::A.hoge を定義すればいいんですが、M::A.hoge の丸々コピペになるので避けたいです
0293デフォルトの名無しさん
2009/02/05(木) 16:20:20module M
class A
def hoge
::Object.const_get(self.class.name.split('::')[0...-1].join('::'))::B.new
end
end
end
ようはそんな構成にしたのが間違いです。
0294デフォルトの名無しさん
2009/02/05(木) 16:28:40hogeでself.class::B.newとでもしてやるのがいいと思う
ところでこの場合Aに対してのBってなんていうの?内部クラス?入れ子クラス?
0295デフォルトの名無しさん
2009/02/05(木) 16:44:04行う方法はないんだっけ?
Module#ancestorsとModule#included_modulesの差分取ればいいんだろうか。
>>294
こんな書き方できるのかw
0296デフォルトの名無しさん
2009/02/05(木) 16:57:49Eso言語本が1.9対応
0297デフォルトの名無しさん
2009/02/05(木) 17:41:040298デフォルトの名無しさん
2009/02/05(木) 17:50:02moduleでもclassでもお好きな方で。
0299デフォルトの名無しさん
2009/02/05(木) 18:09:060300デフォルトの名無しさん
2009/02/05(木) 18:12:48RubyをやるならRubyに沿った考え方をした方がいいと思うが。
0301デフォルトの名無しさん
2009/02/05(木) 20:30:57include すればいい
module M2
include M
class A;end
class B;end
end
p M2::A.new.hoge
0302デフォルトの名無しさん
2009/02/05(木) 20:35:58自分で実行してから書き込むことをお勧めします
0303デフォルトの名無しさん
2009/02/05(木) 20:41:07class A
def hoge
B.new
end
end
class B; end
end
という相互構造のモジュールは巷に結構あると思うんだが、これを継承したようなイメージの別名モジュールは作れないということ?
素直に M をいじるしかない?
0304デフォルトの名無しさん
2009/02/05(木) 21:11:35include されることを目的としたモジュールは module の下に def が並んでるもんだと思う
0305デフォルトの名無しさん
2009/02/05(木) 21:29:43module M
class A; end
class B; end
end
module M2
include M
p ::M::A == A
p ::M::B == B
end
結果
true
true
はい終了
0306デフォルトの名無しさん
2009/02/05(木) 21:57:150307デフォルトの名無しさん
2009/02/05(木) 22:11:02module Enumerable def each_with_index(i=0) self.each{|e|yield e,i;i=i.succ} end end
見たいな感じだったらいいのにと
こんなことも可能に
%w(a b c d).each_with_index(1){|e,i|p [e,i]}
%w(a b c d).each_with_index('v'){|e,i|p [e,i]}
0308デフォルトの名無しさん
2009/02/05(木) 22:23:100309デフォルトの名無しさん
2009/02/05(木) 22:25:56module MaKaizou
def ... end
end
module URI
class HTTP
include MaKaizou
end
end
URI2 = URI
試してないがこれなら多分動く
0310デフォルトの名無しさん
2009/02/05(木) 22:29:28面白いけど、ステップもオプション指定したいとか、succ以外とか
いう要望に対応しようとして破綻しそうな気もする。
0311デフォルトの名無しさん
2009/02/06(金) 21:19:080312デフォルトの名無しさん
2009/02/07(土) 09:00:02たのしいRubyの構文位まで見て、乗ってなかったから どうなのかな?と
0313デフォルトの名無しさん
2009/02/07(土) 09:07:08ループの中に置いて次の繰り返しから、ってやつなら next
漏れが持ってるのは初版だが たのしいRuby にも多分載ってるぞ
0314デフォルトの名無しさん
2009/02/07(土) 09:09:25速く2chでタブが表示されるように左翼活動を開始せよ!
0315デフォルトの名無しさん
2009/02/07(土) 09:21:08第2版持ってるけど載ってるよ
確認してないけど繰り返しのloopメソッド付近に載ってたはず
0316デフォルトの名無しさん
2009/02/07(土) 09:55:320317デフォルトの名無しさん
2009/02/07(土) 10:46:15どの辺りに何が載ってるかなんとなくで
覚えてるじゃん、そんな感じですよ
0318デフォルトの名無しさん
2009/02/07(土) 10:49:53ありがとー 313,315
少しやる気が出てきた
0319デフォルトの名無しさん
2009/02/07(土) 10:52:570320デフォルトの名無しさん
2009/02/07(土) 11:28:190321デフォルトの名無しさん
2009/02/07(土) 11:33:36retry使うって事は何か処理が失敗してもう一度やり直す場合だから
成功するまでretryし続けるって言う事は成功しないと脱出しないに
言い換えれて、無限ループになり易い
そう思って漏れはretryは使わない
0322デフォルトの名無しさん
2009/02/07(土) 11:39:120323デフォルトの名無しさん
2009/02/07(土) 11:45:38rescue
retry
end
的なループはGUIアプリでは普通に使うよ。
まあRubyのGUIライブラリはウンコだからRubyではやらんけど。
0324デフォルトの名無しさん
2009/02/07(土) 11:48:250325デフォルトの名無しさん
2009/02/07(土) 11:51:34raise "something goes wrong"
else
@frag = true
retry
end
というコードなら稀に書く
たいてい次の次くらいの書き直しで消えるが、悩むの面倒だし
0326デフォルトの名無しさん
2009/02/07(土) 11:56:16なにそのRubyにおける典型的なバグ混入
0327デフォルトの名無しさん
2009/02/07(土) 12:01:361 2 3 4
. __ __ _
,i,_,i_ ,-,_ ,-i,_,l 、 :.. :. ≡=-i'__l,
| `i /'-' `i //l l iコ==ラ`'i ti
| lヽi li, → | lヽl li → l i,,l l | → ./ /l/
| l-'l |,l | | // l `"|iコ='' / /
. 'Fヲ|,H E三l_l_A | .i .| / /
,i_| .| | | || | i' /l .l,
-'‐' | || |_ l l .ヽ,ヽ,
‐' ' `‐' -'-' -'-'
ローカル変数は インスタンス スクリプトを L と R を
未定義だと 変数を つくる まちがえる。
エラー つかう
0328デフォルトの名無しさん
2009/02/07(土) 12:37:41retryで一定回数やったらあきらめることはあるけど
0329デフォルトの名無しさん
2009/02/07(土) 16:46:52停止条件を書かないと再帰が終わらない、
と同程度の問題ではないの?
制御構造としてそれほど重要でもない、って点には同意だけど
0330デフォルトの名無しさん
2009/02/07(土) 17:20:480331デフォルトの名無しさん
2009/02/07(土) 17:23:59if 条件 then 終了 else retry end のような書き方ならそりゃマジキチだが
0332デフォルトの名無しさん
2009/02/07(土) 20:09:02回数制限つけてなら使うね
0333デフォルトの名無しさん
2009/02/08(日) 01:55:22Sat Feb 14 08:31:30 +0900 2009
0334デフォルトの名無しさん
2009/02/08(日) 02:05:030335デフォルトの名無しさん
2009/02/08(日) 02:19:561.9 用に書かれたライブラリが安定するまで、絶対に出てこないよ。
0336デフォルトの名無しさん
2009/02/08(日) 02:25:560337デフォルトの名無しさん
2009/02/08(日) 06:47:030338デフォルトの名無しさん
2009/02/08(日) 09:31:56それはない
0339デフォルトの名無しさん
2009/02/08(日) 09:46:25PythonはWindows上で単体アプリケーションとしての配布がしやすいように見えます。
Rubyでこの辺の配布サポートするような仕組みやドキュメントの類ってないでしょうか?
(rubyscript2exeやexerb以外でです)
具体的に何をやりたいかというと、
例えばBazaarのWindows版では、
Bazaar\*.exe #コマンドラインインターフェス
Bazaar\msvcr71.dll #VCランタイムDLL
Bazaar\python25.dll #pythonのDLL
Bazaar\tbzr.dll #多分TorotiseBzr(GUIインターフェス)のシェル拡張用DLL
Bazaar\lib\*.pyd # コンパイル済みpythonファイル
Bazaar\*.dll # QTとかsqliteとかlibなんとかの拡張ライブラリのDLL
Bazaar\library.zip # 標準ライブラリを全部zipで固めたもの(膨大なソースが散らばらない!)
Bazaar\plugins # ここにディレクトリ掘ってソースおくと、動的にプラグインとして読み込む
というような、ファイル構成で
rubyscript2exeとかのように本当にでっかい1個のexeにならずに、
最小限のファイル郡で構成されていて、うまいこと配布しているなと思います。
(ソースとかパッチ当てたり更新も一応しやすい)
過去の例では、rubyscript2exe などのツール以外には、
・Open FastLadder(Livedoor Reader (RSSリーダー)のRails実装)
http://fastladder.org/ja/download.html
では、Rubyディレクトリgemsごと全部ぶっこみ、みたくなっててファイル数が膨れ上がってたりします。
いってしまうと、RPGツクールXPなんかのようなような、
自前ローダーでlib以下をアーカイブされていて、rbは暗号化(まではしなくていいと思うけど)
というような仕組みになるんでしょうけど・・・。
0340デフォルトの名無しさん
2009/02/08(日) 10:26:59言ってることは理解できるんだけど、どの辺を問題視してるのかがよく分からない
既存の方法(exerbやrs2exe)では、zip ファイル内のスクリプトを読み込めない
(=Rubyスクリプトが多くのファイルとして散らばってしまう)のが問題だということ?
0341デフォルトの名無しさん
2009/02/08(日) 10:47:53試してみたいと思います。
File: ziprequire.rb
http://rubyzip.sourceforge.net/files/lib/zip/ziprequire_rb.html
>>340
基本的には Pythonのzipimport+アルファみたいのができればなあ、ということなのですが、
4.12 zipimport -- Zip アーカイブからモジュールを import する
http://www.python.jp/doc/2.3.5/lib/module-zipimport.html
問題としている点は、
・exerbやrs2exeでスクリプト込みこみで全部入り一個の巨大なファイルになるのが
Windowsアプリケーションとしては何かダサい気がする。
(・組み込み言語よりな視点で使いたい)これはどうでもいいかも
・exerbなどを使わない方法だと、Open FastLadderのように非常に多くのソースを散らばかせてしまう。
せめて標準ライブラリのソースだけでも固めておきたい。
・場合によっては、標準ライブラリ以外のアプリケーションの*.rbソースも固めてもよいのかも
冷静に考えてみると、精神衛生上+何かの問題なのかもしれません。
0342デフォルトの名無しさん
2009/02/08(日) 12:42:37ziprequire.rb面白いね。
でもrubyzipのコードは、生で置くか、全exeに埋めるかすることになる?
0343デフォルトの名無しさん
2009/02/08(日) 15:19:24そこまでいろいろ気になっちゃうなら、
配布を前提としたWindowsアプリはVC、VB、C#のどれかで作る。
って事でいいんじゃないかとさえ思えてくるな。
自分だけが使うアプリだけRubyで作るとか。
0344デフォルトの名無しさん
2009/02/08(日) 15:21:26それ付きで欲しいと思う人間が実際のところどのくらいいるのよって感じ
0345デフォルトの名無しさん
2009/02/08(日) 15:33:49標準ライブラリ全部固めて同梱したら、必要以上にサイズ大きくならないか?
ちなみに最近だとZip/Rubyという拡張ライブラリも出てるので
そっち用のrequireを自分で書くこともできるかもしれない
>>344
事前にわざわざ言語のインストールが必要なアプリケーションを、どのくらいの人が使ってくれるんだ
しかもaptも何もないWindows環境で
0346デフォルトの名無しさん
2009/02/08(日) 20:18:40インスタンスメソッドであれば、
Book#write
クラスメソッドであれば
Book.write
定数であれば
Book::TITLE
と書くのは正しいでしょうか?
また、インスタンス変数やクラス変数の表記法はありますか?
0347デフォルトの名無しさん
2009/02/08(日) 20:31:45インスタンス変数やクラス変数は特にないはず
「○○クラスのインスタンス変数@val」とかそんな感じだ
クラスが明瞭なら「@valを…」という書き方でもいいと思う
0348339
2009/02/08(日) 23:21:08うん、たぶん、好みの問題な気がしてきたw
> 配布を前提としたWindowsアプリはVC、VB、C#のどれかで作る。
いやーまあ、実際はそうなんですけどね。
もともと、私はDelphiつかってたんですが、
Rubyの記述の簡易さにほれてしまったのと、
Python使ったアプリを見かけるようになったんで、Rubyでもやりたいなあ、という。
最近だと、DropboxのWindowsクライアントもPython含んでるね
>>344
ヒント:Windows
>>345
> ちなみに最近だとZip/Rubyという拡張ライブラリも出てるので
これかな?
Zip/Ruby - Ruby bindings for libzip.
http://zipruby.rubyforge.org/
0349デフォルトの名無しさん
2009/02/09(月) 11:07:03環境は、XP professional SP3、VS 2005です。
ttp://www.limber.jp/?Software/OpenSSL%20for%20Windows#h619b72d
を参考にOpenSSLをコンパイル。
\OpenSSLをコンパイルしたディレクトリ\ms\testで正常に動作することを確認
\OpenSSLをコンパイルしたディレクトリ\out32dllからlibeay32.dllとssleay32.dllをrubyをインストールしたディレクトリのbinにコピー
同じコピー元のフォルダからlibeay32.lib、ssleay32.libをrubyのソースのext\openssl以下にコピー
\OpenSSLをコンパイルしたディレクトリ\include\opensslをrubyのソースのext\openssl以下にコピー
vs2005付属のコマンドプロンプトから、
cd rubyのソースのext\openssl
ruby extconf.rb
nmake
このnmakeでコンパイルエラー
cl -nologo -I. -I. -IC:/ruby-1.8.7_dir/lib/ruby/1.8/i386-mswin32_80 -I.
-MD -O2b2xty- -DRUBY_EXTCONF_H=\"extconf.h\" -D_CRT_SECURE_NO_DEPRECATE -D_CRT
_NONSTDC_NO_DEPRECATE -c -Tcopenssl_missing.c
openssl_missing.c
c:\ruby_sourcd\ruby-1.8.7-p72\ext\openssl\openssl_missing.h(68) : error C2143:
構文エラー : ')' が '*' の前にありません。
あとは同じようなエラーが続く。
openssl_missing.h(68) を覗くと、
#if !defined(HAVE_HMAC_CTX_COPY)
void HMAC_CTX_copy(HMAC_CTX *out, HMAC_CTX *in);←(68行目)
#endif
このようになっていました
何が原因でコンパイルエラーになっているのか分かりません。
どうすればいいんでしょうか?
0350デフォルトの名無しさん
2009/02/09(月) 11:20:08板違いだったらすまん
0351デフォルトの名無しさん
2009/02/09(月) 11:20:170352デフォルトの名無しさん
2009/02/09(月) 13:11:27そう言わずに教えてください。ここまで苦労してやってきたんで・・・
0353デフォルトの名無しさん
2009/02/09(月) 15:08:22>\OpenSSLをコンパイルしたディレクトリ\include\opensslをrubyのソースのext\openssl以下にコピー
この辺がおかしい。
まず、どっかに適当なフォルダ(fooとする)を作って、その中にincludeというフォルダを作ってそこにOpenSSLのヘッダ類を、
同じくfooの中にlibというフォルダにOpenSSLのライブラリ類を入れる。
rubyのext\opensslに余計なものを入れちゃいけない。
その上で、rubyのext\opensslで、ruby extconf.rb --with-openssl-dir=foo だ。
fooはできればフルパスで。
0354349
2009/02/09(月) 17:32:03言われたとおりにやってみたところ、エラー内容が変わらなかったので、
よく自分がコピーしたincludeファイルを見たら間違ってましてそこを直しました。
で、ruby extconf.rb --with-openssl-dir=C:\openssl0.98jinclude_lib_dllとして(フォルダ名はopenssl0.98jinclude_lib_dllですがdllは入れてない)、nmakeをすると
cl -nologo -I. -I. -IC:/ruby-1.8.7_dir/lib/ruby/1.8/i386-mswin32_80 -I.
-MD -O2b2xty- -DRUBY_EXTCONF_H=\"extconf.h\" -IC:\openssl0.98jinclude_lib_dll/
include -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE -c -Tcopenssl_missing.c
openssl_missing.c
C:\openssl0.98jinclude_lib_dll/include\openssl/x509.h(207) : error C2059: 構文エラー : '型'
C:\openssl0.98jinclude_lib_dll/include\openssl/x509.h(929) : error C2059: 構文エラー : '型'
以下似たようなエラーが続く
上記のようなエラーが出ているため
ttp://d.hatena.ne.jp/OkadaHiroshi/20080817/p1を参考に
makefileのCFLAGSを
CFLAGS = -MD -DWIN32_LEAN_AND_MEAN -O2b2xty-
と書き換えてnmakeしたところ 、
ossl_bio.obj : error LNK2019: 未解決の外部シンボル _FPTR_TO_FD が関数 _ossl_obj2bio で参照されました。
ossl_ssl.obj : error LNK2001: 外部シンボル "_FPTR_TO_FD" は未解決です。
ossl_x509req.obj : error LNK2001: 外部シンボル "_rb_define_copy_func" は未解決です。
ossl_hmac.obj : error LNK2001: 外部シンボル "_rb_define_copy_func" は未解決です。
以下似たようななリンカエラーが続く
このような状況で、またお手上げ状態になっています。
もし何か原因が分かるなら教えてください
0355デフォルトの名無しさん
2009/02/09(月) 18:07:22しかし、どうやったらそんなことができるかわからん。
0356341
2009/02/09(月) 21:16:59zlibのgzip って複数ファイルを格納するようなアーカイバ形式じゃないんですよね?
unix流だと別にtarで固めてからってことなのかな?
rubyzipは別に埋め込んでみるかあ・・・
0357デフォルトの名無しさん
2009/02/10(火) 02:42:30c:\openssl\lib\なんとか
ruby extconf.rb --with-openssl-include=c:\openssl\include --with-openssl-lib=c:\openssl\lib
これで普通にいけてるけど
0358デフォルトの名無しさん
2009/02/10(火) 17:49:59そもそも、仮に標準ライブラリ(zlib)でできたとしても
生で置くかexeに埋め込むかしないといけないから同じことじゃないか?
0359デフォルトの名無しさん
2009/02/10(火) 18:07:11明日たのしいRuby買ってきます
よろしくねお兄さんたち
0360デフォルトの名無しさん
2009/02/10(火) 20:03:420362デフォルトの名無しさん
2009/02/10(火) 20:29:44そうやって基地外に触れるから世界が不幸になる
0363デフォルトの名無しさん
2009/02/11(水) 00:21:52print("hello world");
PHPのhello worldの例
hello world
圧倒的じゃないか!
0364デフォルトの名無しさん
2009/02/11(水) 00:32:17> PHPのhello worldの例
> hello world
PHPは<?php 〜 ?>の部分しかパースしないんじゃなかった?
もし<?php hello world ?>なんてやったら文法エラーになるはず。
正しくは
<?php print("hello world") ?>
0365デフォルトの名無しさん
2009/02/11(水) 00:46:170366デフォルトの名無しさん
2009/02/11(水) 01:03:30PHPは<?php 〜 ?>で囲まれた部分以外はそのまま入力を出力に渡すので、
単に hello world と書くだけでいい、という話だろ。
0367デフォルトの名無しさん
2009/02/11(水) 02:52:33Javaだと「ハァ?」となるわけですね。分かります。
0368デフォルトの名無しさん
2009/02/11(水) 07:44:190369341
2009/02/11(水) 10:12:27確かに確かにwww
標準ライブラリでできても、それを読むためのライブラリソースを外部か内部にもっておかないといけないんなら、
外部ライブラリでも変わらんな
>>363
ワロタ。phpソースはHTMLやテキストも含むというw
0370デフォルトの名無しさん
2009/02/11(水) 10:16:440371デフォルトの名無しさん
2009/02/11(水) 11:56:56FAQのリファレンスマニュアルのことも書いてあるから、テンプレにいれとといてもいいかと。
Rubyist Magazine - Ruby の歩き方
http://jp.rubyist.net/magazine/?FirstStepRuby
0372デフォルトの名無しさん
2009/02/11(水) 12:31:54毎号全く同じリンクが張られてる
0373デフォルトの名無しさん
2009/02/11(水) 15:10:54CentOS5にインストールしたいのですが、公式ページを見ると、
rpm -i ruby-バージョン-リリース.アーキテクチャ.rpm
のようなコマンドが示されていますが、バージョン、リリース、アーキテクチャというのが分かりません。
何を見て決めればいいのでしょうか?
0374デフォルトの名無しさん
2009/02/11(水) 15:15:38そのへんは rpm パッケージのお約束でもあるので rpm の解説でも読め
バージョンは 1.8.7、無ければ 1.8.6 、無ければ 1.8.5
リリースは同じバージョンで数字がなるべく大きいほう(無ければ 0 のでも構わない)
アーキテクチャは i686 がなければ i386 かなんかそんなもん
というか、rpm パッケージ扱ったことないのか?
0375デフォルトの名無しさん
2009/02/11(水) 15:24:52yum install ruby でインストールされるはずだ
これだと本体だけしか入らなくて寂しいので普通は複数入れる
yum install ruby ruby-devel ruby-libs ruby-irb ruby-rdoc
CentOS5 のバージョンは 1.8.5 だっけ?
0376373
2009/02/11(水) 15:25:23ありがとうございます。
Linux自体初めてなのでrpmは扱ったことありませんでした。
windowsのインストールならすぐ出来るのですが。。
とりあえず rpm -i ruby-1.8.7-0-i686.rpm としてインストールしてみます。
慣れている人は何を見てリリースのバージョンなどを決めているんでしょう?
0378デフォルトの名無しさん
2009/02/11(水) 15:30:29ruby-1.8.5-5.el5_2.6.i386.rpm
が最新なのかな。
ディストリで配布しているもので十分なら、
rpm直叩きせずともyumで入れられるはず。
0379デフォルトの名無しさん
2009/02/11(水) 15:33:50>>376
rpm コマンドはインターネットからファイルを取得したりはしない
別途ダウンロードしたファイルのファイルパスを指定してるだけだ
どっかからCent用のRuby1.8.7パッケージ群をダウンロードしたほうがいい
…って無いのかよ!
tar から自力で rpm 作ってインストールするしかないな
なんも難しいことはないからやっておくといい
ttp://moimoitei.blogspot.com/2008/08/centos-52-ruby.html
0380デフォルトの名無しさん
2009/02/11(水) 15:37:47変換できない文字は?とかに置き換えできればいいのですがどうすればできますか?
os は ubuntu linuxです。
0381デフォルトの名無しさん
2009/02/11(水) 15:46:50ttp://www.ruby-lang.org/ja/man/html/iconv.html
「変換に成功してる部分の文字列」と「変換に最初に失敗した部分の文字列」がわかるから、
その「失敗した文字列」の先頭から適切なバイト数だけ ?? とかに置換してもっぺん iconv すればいい
たいていは元が ShiftJIS などではなく CP932 だったとかなんかそんなんだと思うが
0382デフォルトの名無しさん
2009/02/11(水) 15:47:18iconvの場合は rescue IllegalSequence => e のあと、
e.success に変換できた部分、e.failed に例外が出たところ以降
が含まれるのでどうにかする。
failed の中の何バイトを取り除けば以降再び成功するようになるか
を判定するのはめんどくさそうだ。
0383デフォルトの名無しさん
2009/02/11(水) 18:09:08を
[[1,4,7],[1,4,8],[1,4,9],[1,5,7],[1,5,8],[1,5,9],[1,6,7]…]
見たいに再帰的にお手軽に展開する方法ってありますか?
0384デフォルトの名無しさん
2009/02/11(水) 18:25:25=> [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
> x.inject(&:product).map(&:flatten)
=> [[1, 4, 7], [1, 4, 8], [1, 4, 9], [1, 5, 7], [1, 5, 8], [1, 5, 9],
[1, 6, 7], [1, 6, 8], [1, 6, 9], [2, 4, 7], [2, 4, 8], [2, 4, 9],
[2, 5, 7], [2, 5, 8], [2, 5, 9], [2, 6, 7], [2, 6, 8], [2, 6, 9],
[3, 4, 7], [3, 4, 8], [3, 4, 9], [3, 5, 7], [3, 5, 8], [3, 5, 9],
[3, 6, 7], [3, 6, 8], [3, 6, 9]]
あってる?
0386デフォルトの名無しさん
2009/02/11(水) 20:02:42ソースがShift_JISじゃないんじゃないの?
丸文字とかはShift_JISには無いぞ。
iconvで変換するなら、CP932で変換すればいけると思う。
0387デフォルトの名無しさん
2009/02/11(水) 20:23:38すごーい!つーか>>383の1行目の最後の",…"余分だよな?
あと、みんな普通に1.8.7とか1.9系を使ってるんだ。面倒でまだ入れかえてない
0388デフォルトの名無しさん
2009/02/11(水) 21:25:53"・・・"は深さは決まってないよってことだろ
0389380
2009/02/11(水) 23:55:12Iconvで変換掛けて例外でた分だけ痴漢しようと思ったんですけどうまくいかないっす。
http://headline.2ch.net/bbynews/news.rss
のrssをutf-8に変換したいのですがなんか時々例外が出てるんですよね。
下のコードでやると日本語の部分でいきなり例外になります。
日本語の部分だけIcomv掛ける必要があるんでしょうか?
open('http://headline.2ch.net/bbynews/news.rss') do |http|
begin
response = Iconv::iconv("shift_jis", "utf-8", http.read.to_s)
rescue Iconv::IllegalSequence
logger.debug $!.failed
end
#response = http.read
result = RSS::Parser.parse(response, false)
puts "Channel: " + result.channel.title
>>382
1.9だとスームスにいくんでしょうか?
がんばって無理そうなら1.9にあげてみます。
>>386
xmlのソースにはshift_jisって書いてあるのでshift_jisだと思って処理してるんですが違うのかなぁ・・・
0390デフォルトの名無しさん
2009/02/11(水) 23:56:240391デフォルトの名無しさん
2009/02/12(木) 00:07:16> xmlのソースにはshift_jisって書いてあるのでshift_jisだと思って処理してるんですが違うのかなぁ・・・
その指定は、そのデータを生成するプログラムを作った人間が付けてるだけだから、正しいとは限らない。
世の中にあるShift_JISと称するテキストデータの大半はCP932だと思って扱うのが無難。
(この仮定が外れて困るようなことはまずない)
0392デフォルトの名無しさん
2009/02/12(木) 00:23:480393デフォルトの名無しさん
2009/02/12(木) 00:28:36という文字列データを貰ってRubyで手っ取り早く正規表現置換する方法ってないですか。
0394デフォルトの名無しさん
2009/02/12(木) 00:31:45�dとか�_とか�@とか�ケとかは Shift JIS には存在しないからエラー起こすはず
これらは CP932 にある NEC 特殊文字とか IBM 拡張文字とか呼ばれるものだ
これらが入ってる場合は CP932 と指定しないと iconv はエラーを起こす
日本語文字が入ってるのに US-ASCII とみなすとエラーが起こるのと同じ理屈
おおむね Shift JIS より CP932 のほうが範囲が大きいから、CP932 と指定するのが無難
…というか、素の Shifft JIS を使ってる人なんてそう多くないんじゃないかね
0395デフォルトの名無しさん
2009/02/12(木) 00:39:46よーわからんが Regexp.new とか Regexp.join とか駆使すればたいていできる
0396デフォルトの名無しさん
2009/02/12(木) 01:38:08以下の分割数を求めるプログラムの動作が知りたいです
門外漢がみると、もはや暗号です
もっとわかりやすく書くか、
あるいはC,C++,Java,あたりのどれかの言語で書きなおしてもらえると
嬉しいのですが・・
def partition_number(n, m=1)
pn = 1
(n-m).step((n+1)/2, -1) do |i|
pn += partition_number(i, n-i)
end
pn
end
0397デフォルトの名無しさん
2009/02/12(木) 01:46:28わかりづらそうな箇所って A.step(B, C) くらいかな。
A.step(B, C) do |i| ... endは、C系の記法だと
for (i = A; i <= B; i += C) { ... } みたいな感じ。
あ、"関数"が最後に書いた値を返す場合は、return付けなくていい。
変数や関数の名前の前に型はいらない。
0398デフォルトの名無しさん
2009/02/12(木) 02:08:41それに沿って書くと、増分が-1なので i<=Bの所を勝手に解釈して
i>Bとしてみたら、こんな感じになった
pnは
n=1..10で、1 2 3 5 7 11 15 22 30 42となるはずなんだが
n=1..10で、1 2 3 5 7 11 14 22 27 40..となるわ。ショボーン
int pnm2(int n,int m){
int pn=1;
for(int i=n-m;i>(n+1)/2;--i){
pn+=pnm2(i,n-i);
}
return pn;
}
int pn(int n){
int c=0;
for(int i=1;i<=n;++i){c+=pnm2(n,i);}
return c;
}
0399デフォルトの名無しさん
2009/02/12(木) 02:11:410400デフォルトの名無しさん
2009/02/12(木) 02:11:53ループがネストしてたら「j」とか「k」とかつけるんだろうな
再帰でなんかやってるんだろうけど、たった7行なのに全く読む気をなくす恐るべきプログラム
そもそも「分割数」ってなんなの?
0401デフォルトの名無しさん
2009/02/12(木) 02:15:31分割数については、ここみると実際にわかるよ
ttp://www.tandess.com/music/pro/intparse.shtml
0402デフォルトの名無しさん
2009/02/12(木) 02:19:44おっと、サンクス。有名なものだったのか。これは失態だった。
0403デフォルトの名無しさん
2009/02/12(木) 02:26:23これでぐっすり寝られる。
int pnm2(int n,int m){
int pn=1;
for(int i=n-m;i>=(n+1)/2;--i){
pn+=pnm2(i,n-i);
}
return pn;
}
よびだし
pnm2(10);
0404デフォルトの名無しさん
2009/02/12(木) 06:04:05数字を入力しても、偶数奇数判定をしてくれません
何が悪いのかを教えていただけないでしょうか
-------------------------------------------
print "数字入力:"
n = gets.chomp
if n.to_i % 2 == 0 then
h = "偶数"
else
h = "奇数"
end
print n.to_s + "は" + h + "です"
0405デフォルトの名無しさん
2009/02/12(木) 06:26:54$stdout.flush
を追加するとどうなる?
0406404
2009/02/12(木) 06:34:45やってみたのですが変わらないみたいです
0407デフォルトの名無しさん
2009/02/12(木) 07:09:36やってて表示されないならごめん、わからん
0408デフォルトの名無しさん
2009/02/12(木) 07:11:13n = gets.chomp
p n
p n.to_i
p n.to_i % 2
p n.to_i % 2 == 0
とかやって確認してったら
0409デフォルトの名無しさん
2009/02/12(木) 07:50:57エンター押してます
コマンドから直接実行するとできるんですけどねぇ・・
ありがとうございました
>>408
ありがとうございます
そうやってテストしていくんですね。勉強になります
いろいろ試してみます
0410デフォルトの名無しさん
2009/02/12(木) 08:28:15標準入力を使うスクリプトはうまく動作しないよ
0411デフォルトの名無しさん
2009/02/12(木) 08:44:23gets.chomp を正確に $stdin.gets.chomp と記述すればたぶん動く
0412デフォルトの名無しさん
2009/02/12(木) 08:51:11Ruby の ARGF は変態だから仕方ないな
>>411
それ正確に書いたんじゃなくて入力先限定した別物だぞ
gets が読みに行くオブジェクトは $stdin じゃなくて ARGF だから
0413デフォルトの名無しさん
2009/02/12(木) 14:12:48同じような現象に合われた方はいないでしょうか?
具体的には、まずrubyをcheckinstallでrpmパッケージを作ります。
その際に--prefix=/usrを指定します。
このrpmパッケージをインストールすると/usr/bin/rubyにバイナリの実行ファイルが作成されました。
次にrubygemsをcheckinstallでrpmパッケージを作ります。
これをインストールしようすると、/usr/bin/rubyファイルが競合するためにインストールできません。
仕方なくcheckinstallではなく、ruby setup.rbを直接叩いてインストールしたところ
/usr/bin/rubyファイルが上書きされてしまい、rubyコマンドが使えなくなってしまいました。
上書きされたのはバイナリではなくスクリプトファイルでした。
rubygemsのインストールに成功している人のブログを見ると、
/usr/bin/gemというスクリプトファイルが出来ているようです。
何らかの原因でgemというスクリプトファイルがrubyという名前に変わってしまったのでしょうか?
ググって調べてみたのですが自力ではここまでが限界でした。
分かる方がいましたら教えて下さい。よろしくお願いします。
0414デフォルトの名無しさん
2009/02/12(木) 21:42:201.9.1にはgemコマンド付いてるから、もろに競合すると思うよ。
0415413
2009/02/12(木) 21:46:22おぉなるほど…ありがとうございます!助かりました;;
gemのインストール自体が要らなかったんですね。
rubyだけもう一度入れ直してみます。
0416デフォルトの名無しさん
2009/02/12(木) 22:17:41gemは無いから、rpmfindからrubygems-1.3.1-1.el5.src.rpmをDLして
作りなおした方が、楽かも
gem install passenger は通った(気がする)
#初めてだと、そこまでいくのはしんどいかな・・・
0417デフォルトの名無しさん
2009/02/12(木) 22:24:30>>413
> ruby1.9.1
0418デフォルトの名無しさん
2009/02/12(木) 22:34:580419デフォルトの名無しさん
2009/02/12(木) 22:35:530420デフォルトの名無しさん
2009/02/12(木) 22:48:200421デフォルトの名無しさん
2009/02/12(木) 22:48:540422デフォルトの名無しさん
2009/02/12(木) 22:49:37いやディストリビューションパッケージのバージョン古いのって別に Ruby 悪くないから
0423デフォルトの名無しさん
2009/02/12(木) 22:54:49sidだとほぼ最新だった気がする。
0424デフォルトの名無しさん
2009/02/12(木) 22:59:47Version: 1.8.7.72-1ubuntu0.1
Version: 1.8.7.72-1
手でmake install したのより新しい件について
いつの間に…
0425デフォルトの名無しさん
2009/02/13(金) 01:45:15HTML形式で最近の物ってありますか?
オフィシャルにあるのは2005年とか無茶苦茶古いし…(汗
>>3のHTML Helpの物だとタブブラウザで複数の項目を開いて…
という使い方が出来ないので不便です
0426デフォルトの名無しさん
2009/02/13(金) 01:55:09ttp://doc.loveruby.net/wiki/
静的HTMLはない。
オフラインでブラウザで見るなら付属のCGIサーバを動かす必要がある。
静的HTMLを書き出すツールの整備もTODOに入ってるからそのうちと。
0427デフォルトの名無しさん
2009/02/13(金) 02:33:42多分過去に公開された奴は全部ここにあると思う
http://www.ruby-lang.org/ja/man/archive/
0428デフォルトの名無しさん
2009/02/13(金) 02:51:52ちょっと何かやろうとするとググりまくって断片的な資料探し。
今日もRSSを取り込んで何かやろうと思ったが、リファレンスのひどさに呆然。
車輪の再発明は無駄だと言うのに、
開発者が皆ソースを読まなきゃいけないことにおかしさは感じないのだろうか。
いい言語だとは思うのだが、無駄に調べる時間が多すぎてあまり楽しくない。。。
0429デフォルトの名無しさん
2009/02/13(金) 02:57:06同意。
0430デフォルトの名無しさん
2009/02/13(金) 03:20:30参考程度にRSSの何やろうとしたか聞かせて
0431デフォルトの名無しさん
2009/02/13(金) 03:20:42充実したドキュメントがある=本家の日本語訳、てのが現状かなと思ったり
0432デフォルトの名無しさん
2009/02/13(金) 03:20:500433デフォルトの名無しさん
2009/02/13(金) 04:14:10レジストリへの登録がないとImageMagick(dll版)が動かないのは勘弁 orz
RMagickを使った物を配布したいときにレジストリ登録が無いと動かないのでは敷居が高いです…
0434デフォルトの名無しさん
2009/02/13(金) 04:57:55本だって自分で書かないで他人が書いた本に名前乗せてお金もらってるだけだし。
0435デフォルトの名無しさん
2009/02/13(金) 05:09:51ところどころ日本語がおかしいところがあったなあ。
著者二人とも初めてか。
0436デフォルトの名無しさん
2009/02/13(金) 08:01:37「本当に」まったくマニュアル的手がかりが無いわけじゃないんだ
普通のRubyユーザーは、マニュアルの代わりにコードを読むし、そのようにされることをある程度意識してコードを書く
多くの場合、自国語のマニュアルで30行の解説を読むよりも実際のRubyスクリプト10行のほうが「わかりやすい」
わかりにくいとしたら引数の形式くらいだ
だから、本当は、外部ライブラリなんかはRubyスクリプトが読めるようになってから使うのが望ましい
まあ、オフィシャルの添付ライブラリのマニュアルのはずなのに
参考と称して [外部] とだけ書かれたリンク1行とかなめてんのかむしろ氏ねという感じではあるんだが
0437デフォルトの名無しさん
2009/02/13(金) 08:23:34仕事で phpやるってんでいじってたんだが、phpの書籍いくつも買ったのに
オンラインヘルプで事足りるから無駄になってしまった。
あの公式の充実度はやっぱ、絶対的なユーザー数が多いからなんかね?
Rubyはひどいいうけど、以前Pythonいじった時はとかけっこうひどかった憶えある
0438デフォルトの名無しさん
2009/02/13(金) 08:34:40PythonいじったあとRuby触ると本当にありがたいよねw
Python良いところは沢山あるのに
インデントでブロック構造決めるってのがメンテナンス性を著しく損ねる性質があるのでうちのチームでは採用していない。
ワンマンで進められるならPythonもまあありかも知れないけどね・・
まあわざわざコスト高になるのが分かってるプロジェクトは組みたくないわ
しかしperlはほんと触ることがなくなったね
思い起こせばほんとろくでもない体系だったあれはw
0439デフォルトの名無しさん
2009/02/13(金) 09:13:45MSDNライブラリから比べたらよっぽどまともだと思うけどなぁ
0440デフォルトの名無しさん
2009/02/13(金) 09:41:42ソースってどっちの意味だ
サンプルコードに関しては、>>436の言う通り日本語の長い説明よりはサンプルコードの方がありがたい
ライブラリのソースコードに関しては、そうそうソースを読む必要なんてないと思うが
0441デフォルトの名無しさん
2009/02/13(金) 09:55:35最新版をsrcから入れないといかん理由は、いまのところ自分にはないからなぁ
始めたばかりで依存関係がわからないのもあるけどな
phpとpostgres上げるのは趣味だけどw
0442デフォルトの名無しさん
2009/02/13(金) 12:49:41Borland後期、CodeGear時代の Delphi のヘルプに比べたら、MSDNはまだまだ優秀w
キーワード登録されていてもページがない、リンク切れ上等、状況感知ヘルプが効かない、度重なるupdateのたびにひどくなる、etc
下を見ればきりないぜwww
0443デフォルトの名無しさん
2009/02/13(金) 12:53:1010行のプログラムを30行で解説って、そんな現実的でない極端な例を出されても・・・
そもそもプログラムより解説の方がわかりにくいというのは、
その書き手の頭の中で仕様がきちんとまとめられてないか、
論理的な文章表現能力の欠如であって、解説という存在そのものが原因じゃないと思う。
0444デフォルトの名無しさん
2009/02/13(金) 12:55:340445デフォルトの名無しさん
2009/02/13(金) 13:29:07解説は基本的に後追いのもので、まずは動くサンプルがないと話にならないよ。
0446デフォルトの名無しさん
2009/02/13(金) 13:57:15読解力の問題もあるしなぁ。
それといま問題にしてるのは解説そのものではなく、サンプルもない
解説に頼り切った説明のことかと。
0447デフォルトの名無しさん
2009/02/13(金) 14:01:14中にはサンプルコードすらないgemもあるからそういうときにはテストコードを見るようにしている
0448デフォルトの名無しさん
2009/02/13(金) 14:04:02いま問題にしてるのは解説が不備な、
断片的なサンプルコードメインのリファレンスじゃないのか?
メソッドの解説なんて空白の穴だらけやん。
サンプルがすべてのメソッドを網羅してるわけじゃないし。
0449デフォルトの名無しさん
2009/02/13(金) 14:14:09>サンプルがすべてのメソッドを網羅してるわけじゃない
サンプルすらないことが不備なんだろw
0450デフォルトの名無しさん
2009/02/13(金) 14:39:070451デフォルトの名無しさん
2009/02/13(金) 17:36:13ちなみに自分はchm版使ってる
普通に便利だと思うんだけどなあ
0452デフォルトの名無しさん
2009/02/13(金) 18:04:53これ見て満足はできないだろ
0453デフォルトの名無しさん
2009/02/13(金) 18:22:59要約だけっていうのがうけるw
0454デフォルトの名無しさん
2009/02/13(金) 18:26:19標準ライブラリで不満を持った覚えがないけど、添付ライブラリが荒い
0455デフォルトの名無しさん
2009/02/13(金) 18:27:07マニュアルの表示形式の問題なんだよな……
本当はFiberクラスに解説があるのに、リンクが張られてない
ttp://doc.loveruby.net/refm/api/view/class/Fiber
ところで、新リファレンスの一覧性(閲覧性)はかなりヤバいと以前から思ってたんだけど
これって今更言ってももう遅いかな
0456デフォルトの名無しさん
2009/02/13(金) 18:30:190457デフォルトの名無しさん
2009/02/13(金) 19:31:01ソースにコメントや usage を書くノウハウが致命的に溜まらなかったのが Ruby
PoD と cpan の関係がいいとは言わんが、オフィシャルでクラスやメソッド説明の書式くらい固めて欲しい
0458デフォルトの名無しさん
2009/02/13(金) 20:26:570459デフォルトの名無しさん
2009/02/13(金) 20:33:52煽りはいらない
0460デフォルトの名無しさん
2009/02/13(金) 20:41:09確かまとめれる人がまとめて下さいって昔言ってたべ
0461デフォルトの名無しさん
2009/02/13(金) 20:49:04ただ、開発者自身がちゃんとしたドキュメント書いてほしいよね。
rdocのついてないソースはコミット出来なくするとか、rdocにtestを同梱させて
記述が正しいかどうかチェックできればいいと思う(pythonはやってんだっけ?)
ま、一般的には文章を書くのが下手くそな日本人と欧米人との差だろうね。
Wikipedia見ててもわかるじゃん。論理性から言っても日本人の書いた文章より
英語文書を日本語に訳したもののほうがわかりやすいのと一緒。要は国力の差。
0462デフォルトの名無しさん
2009/02/13(金) 20:58:17違う
単に教育の違い
ディベートを義務教育に入れなかった日本の負け
0463デフォルトの名無しさん
2009/02/13(金) 20:59:090464デフォルトの名無しさん
2009/02/13(金) 20:59:55「Rubyで○○するときのデファクトスタンダード」なんてのはRuby開発陣が提示したものじゃない
みんなユーザーが開発したもんだ
0465デフォルトの名無しさん
2009/02/13(金) 21:09:500466デフォルトの名無しさん
2009/02/13(金) 21:24:51終わったところから色塗ってけば多少マシになると思うんだが、
どうやって実現しようかね。
初心者スレで言うような話じゃないかもしれんが。
0467デフォルトの名無しさん
2009/02/13(金) 21:38:29…。
0468デフォルトの名無しさん
2009/02/13(金) 21:55:17docで未完了のは結構あるな
ttp://redmine.ruby-lang.org/projects/rurema/issues?category_id=4&set_filter=1&status_id=o
0469デフォルトの名無しさん
2009/02/13(金) 22:03:10文法:
for lhs ... in 式 [do]
式..
end
の「lhs」って何の略ですかね?
0470デフォルトの名無しさん
2009/02/13(金) 22:13:24Left Hand Side
0471デフォルトの名無しさん
2009/02/13(金) 22:23:17ディベートなんてとんでもない。議論に負けた子が可哀想と思わないのか!
0472デフォルトの名無しさん
2009/02/13(金) 22:26:38わーひどい
die とかもあったよね
これは>>470の言うように左辺
Ruby 関係ない
for 変数 in 式 [do]
式の要素を変数として扱う処理記述
end
が妥当
0473デフォルトの名無しさん
2009/02/13(金) 22:36:20Set.each {|x| ... }が好き。
単なる繰り返しなら#times, #upto, #downtoを使ったほうが読みやすい。
だいたい外人はforを使う人が多い。英語と日本語の違いか?
0474デフォルトの名無しさん
2009/02/13(金) 22:50:54for ○○ in ×× という書き方が読み下しやすい模様
in がポイント
「キーワード引数風ハッシュ引数」の一般的な名称って何?
hoge(:param1 => val1, :param2 => val2)
こんなん
0475デフォルトの名無しさん
2009/02/13(金) 22:57:230476デフォルトの名無しさん
2009/02/13(金) 23:00:38少なくともハッシュではある
間違いなく引数である
「キーワード引数風ハッシュ引数」でいいんじゃね?
0477デフォルトの名無しさん
2009/02/13(金) 23:01:280478デフォルトの名無しさん
2009/02/13(金) 23:04:21限定したかったからだろうか。
0479デフォルトの名無しさん
2009/02/13(金) 23:04:45勝ち負けとか言ってる時点で
0480デフォルトの名無しさん
2009/02/13(金) 23:36:08それって課題が一通り洗い出されてる状態なのかなぁ。
0481デフォルトの名無しさん
2009/02/13(金) 23:39:15ほらあれだ、ブレーンストーミングな状態
0482デフォルトの名無しさん
2009/02/13(金) 23:39:480483デフォルトの名無しさん
2009/02/13(金) 23:45:300484デフォルトの名無しさん
2009/02/14(土) 00:37:47動かないこととはまったく無関係だが、Integer#even? や Integer#odd? を使うが吉
0485デフォルトの名無しさん
2009/02/14(土) 04:06:49何なんですかこの怪しいエラーは・・・
rubyコマンド実行するだけで出る
0486デフォルトの名無しさん
2009/02/14(土) 06:16:48読んで字の通りだろう
メモリに十分余裕があるはずなのにエラー出るなら、もはや初心者スレの範囲を超えている
0487デフォルトの名無しさん
2009/02/14(土) 09:33:54class C
class self << attr_accessor :hoge end
end
クラス変数の別名かと思ったら @@hoge で読めないんでやんの
0488デフォルトの名無しさん
2009/02/14(土) 09:58:05<< の位置間違ってね?
class << self; attr_accessor :hoge; end はスタティックメンバ変数モドキの作成イディオム
・ @@hoge がクラス外から直接読めない
・ @@hoge が未定義だと例外を起こす。スクリプトは死ぬ
ということを嫌がる人が、てきとうスクリプト作成時にときどき使う
irb> class C
class << self; attr_accessor :hoge; end
def use_hoge; p self.class.hoge; end
end
irb> C.hoge
irb> C.new.use_hoge
nil
irb> C.hoge="foo"
irb> C.new.use_hoge
"foo"
irb> C.new.use_hoge
"foo"
細かいこと抜きに言うと「アクセサつきクラス変数」のように振舞う
クラスの外でも中でも一定して「クラス名.名前」でアクセスしなければならないことに注意
0489デフォルトの名無しさん
2009/02/14(土) 10:14:560490デフォルトの名無しさん
2009/02/14(土) 11:56:40親の心子知らず
0491デフォルトの名無しさん
2009/02/14(土) 13:19:47> 要は国力の差。
ワロタ
0492デフォルトの名無しさん
2009/02/14(土) 13:53:320493デフォルトの名無しさん
2009/02/14(土) 18:29:53クラス変数とクラスのインスタンス変数は別
class C
@@hoge = 'クラス変数'
@hoge = 'クラスのインスタンス変数'
def initialize ; @hoge = 'インスタンスのインスタンス変数' ; end
class << self ; attr_reader :hoge ; end
end
puts C.hoge #=> "クラスのインスタンス変数"
0494デフォルトの名無しさん
2009/02/15(日) 03:08:11C:\hoge>ruby -v
ruby 1.9.1p0 (2009-01-30 revision 21907) [i386-mswin32]
C:\hoge>type test1.rb
p "abcde"
C:\hoge>ruby test1.rb
"abcde"
C:\hoge>type test2.rb
p "あいうえお"
C:\hoge>ruby test2.rb
test2.rb:1: invalid multibyte char (US-ASCII)
test2.rb:1: invalid multibyte char (US-ASCII)
C:\hoge>ruby -Ks test2.rb
"あいうえお"
0495デフォルトの名無しさん
2009/02/15(日) 03:25:49# -*- coding: utf-8 -*-
0497デフォルトの名無しさん
2009/02/15(日) 07:20:110498デフォルトの名無しさん
2009/02/15(日) 07:24:25あとはRuby公式サイトに情報を載せてくれれば完璧なんだが
>>496
というわけでRubyist Magazineの最新号を参照
でも初心者スレ的には、そもそもまだ1.9.1を使わないことをお奨めする
0499デフォルトの名無しさん
2009/02/15(日) 07:47:35どれか一つに統一すればいいのに
0500デフォルトの名無しさん
2009/02/15(日) 07:54:13UTF-8が今通っている道です
0501デフォルトの名無しさん
2009/02/15(日) 08:34:36そもそもリリース番号が大きいほどバグが減っている、という認識だったのに
この考え方は間違い?
例えば1.9.0で発見されたバグを直して1.9.1にするんじゃないの?
0502デフォルトの名無しさん
2009/02/15(日) 08:39:410503デフォルトの名無しさん
2009/02/15(日) 08:44:151.9.1 が出た今、1.9.0 を使う理由はゼロどころかマイナスだ
Ruby単体としては日常・趣味用途にはおおむね問題ないレベルを実現している
ライブラリがまだ全然対応してないから全部自力でゼロから書かないとどうにもならんがね
0504デフォルトの名無しさん
2009/02/15(日) 10:09:45RUBY_VERSIONを見て振り分けとかはしないほうがいいよねえ。
いっそのこと、sourceのURLをわけてくれたらよかったのに。
0505デフォルトの名無しさん
2009/02/15(日) 10:26:31ってemacsの慣習だよね?
ruby開発者の中にはemacsユーザが多いの?
0506デフォルトの名無しさん
2009/02/15(日) 10:36:53エンコーディングを指定する文字列ならマジでなんでもよかった
たまたま Emacs 用の表記がそこそこ広まってたんで流用しただけに過ぎない
Python も似たような判断をしてる
ttp://www.python.jp/doc/2.4/ref/encodings.html
0507デフォルトの名無しさん
2009/02/15(日) 12:22:44-*-とかなくてもいいし、vim: fileencoding=UTF-8 とかでもいい。
0508デフォルトの名無しさん
2009/02/15(日) 12:23:19[:=] ね。閉じてなかった。
0509デフォルトの名無しさん
2009/02/15(日) 12:26:24Pythonも似たようなっていうより
Pythonをお手本にしましたって感じじゃないの?これ
0510デフォルトの名無しさん
2009/02/15(日) 12:54:460511デフォルトの名無しさん
2009/02/15(日) 12:56:51多い。少なくともこの仕様を決めたのはEmacsユーザ。
>>507
それは後付けで追加された仕様。
最初はEmacsスタイルのみだった。
0512デフォルトの名無しさん
2009/02/15(日) 12:59:20なんで今更1.9.0なんて過去のものを?
すでに1.9.1がリリースされてるし開発も1.9.2に向いている。
0513デフォルトの名無しさん
2009/02/15(日) 13:25:14>>498のこれ
>まだ1.9.1を使わないことをお奨めする
少しでも安定した(枯れた)「一つ前のバージョン」を使えという
意味だとはわかっても、それを「一つ前のメジャーバーション」
つまり1.8系(1.8.7)と解釈せずに、バージョン番号が一つ前の
1.9.0だと思ったんだろう。
1.8.7をお勧めするとはっきり言った方が初心者スレ的かもね。
0514デフォルトの名無しさん
2009/02/15(日) 13:42:38なるほど、納得した。
>>501
ということで、1.9.0は初心者向けどころか通常のユーザ向けですらない。
1.9系列自体の開発用であり、すでに役目を終えたバージョン。
0515デフォルトの名無しさん
2009/02/15(日) 15:55:060516デフォルトの名無しさん
2009/02/15(日) 16:11:061.9.0 : 1.9.1のベータ版
0517デフォルトの名無しさん
2009/02/15(日) 16:17:130518デフォルトの名無しさん
2009/02/15(日) 16:19:46な気がする…1.6.?→1.8.?の時も大分はまったし
0519デフォルトの名無しさん
2009/02/15(日) 16:49:31まずrakeをインストールしようとする。トホホ。
0520デフォルトの名無しさん
2009/02/15(日) 17:19:58というのを叩きこまれてきたので
1.9.1って字面がいやだ
0521デフォルトの名無しさん
2009/02/15(日) 17:28:150522デフォルトの名無しさん
2009/02/15(日) 18:15:12なんて訳すべき?暫定版?
0523デフォルトの名無しさん
2009/02/15(日) 18:30:54いや、素直に訳すと「不安定」になるんだけど
なんかこう不安をあおっているように聞こえるんだよねw
0524デフォルトの名無しさん
2009/02/15(日) 19:07:14どう意訳したら納得できるものになるのかという話だw
0525デフォルトの名無しさん
2009/02/15(日) 19:10:390526デフォルトの名無しさん
2009/02/15(日) 19:16:070527デフォルトの名無しさん
2009/02/15(日) 19:17:590528デフォルトの名無しさん
2009/02/15(日) 19:19:090529デフォルトの名無しさん
2009/02/15(日) 20:14:220530デフォルトの名無しさん
2009/02/15(日) 21:42:100531デフォルトの名無しさん
2009/02/15(日) 21:46:46Fxだって2->3の移行のときについていけず脱落したし、公式ライブラリが
対応してれば言語としては安定版といっていいんじゃね。
(ただ、irbでさえ多言語対応できてないんだよね)
0532デフォルトの名無しさん
2009/02/16(月) 10:32:44gsub('[', '\[').gsub(']', '\]')とやるしかないんでしょうか。
0533デフォルトの名無しさん
2009/02/16(月) 11:40:080534デフォルトの名無しさん
2009/02/16(月) 19:47:33別のファイルとして出力したいんだけど、どうしたら良いですかね。
一つ一つ指定して置換できないことはないけど、
もっとスマートに処理できれば良いなと思って。
0535デフォルトの名無しさん
2009/02/16(月) 20:06:54irb> s = "るびー1.9はウンコ"
irb> puts NKF.nkf('-h1W8w8',s)
るびー1.9はうんこ
irb> puts NKF.nkf('-h2W8w8',s)
ルビー1.9ハウンコ
0536デフォルトの名無しさん
2009/02/16(月) 21:36:32t = CSV.readlines(foo, :encoding => 'SJIS')
ってしたらいつまでたっても終わらず途中であきらめてCtrl+Cしました。
CPU使用率ほぼ100%で15分以上は過ぎていたと思います。
ASCIIのCSVだとencoding指定なしで1秒程度で終わりました。
何かやり方間違ってますか?それともこういうものですか?
WindowsXPでruby1.9.1です。
0537デフォルトの名無しさん
2009/02/16(月) 21:38:380538デフォルトの名無しさん
2009/02/16(月) 21:39:45>>536
1.8.7で再現する?
0540デフォルトの名無しさん
2009/02/16(月) 21:46:370541デフォルトの名無しさん
2009/02/16(月) 21:54:35>>536
たぶん合ってる
現行ではそんなもんなのだろう
0542デフォルトの名無しさん
2009/02/16(月) 21:56:48C:/Program Files/Ruby-1.9.1/lib/ruby/1.9.1/csv.rb:2264 -
"\x90" from ASCII-8BIT to UTF-8 in conversion from ASCII-8BIT to Shift_JIS
こんな例外でループしてるな
0543デフォルトの名無しさん
2009/02/16(月) 22:08:00スクリプト全体読まないとわからんな
0544デフォルトの名無しさん
2009/02/16(月) 22:19:340545536
2009/02/16(月) 22:28:21>>541 そんなもんですか…
>>543 全体はこんな感じで、上3行は付けたり消したり、SJISもWindows-31Jに変えたり
# coding: SJIS
Encoding.default_external = 'SJIS'
Encoding.default_internal = 'SJIS'
require 'csv'
#t = CSV.readlines('aaa.txt', :encoding => 'Windows-31J')
#t = CSV.readlines('aaa.txt', :encoding => 'SJIS')
t = CSV.readlines('aaa.txt')
p t.size
0546デフォルトの名無しさん
2009/02/16(月) 22:34:33できた。ありがとー!
0547デフォルトの名無しさん
2009/02/16(月) 22:36:310548デフォルトの名無しさん
2009/02/16(月) 22:47:31こんな糞めんどくさい改悪されたらそら批判されるのもやむを得ない。
0549デフォルトの名無しさん
2009/02/16(月) 22:48:590550デフォルトの名無しさん
2009/02/16(月) 22:52:27単に不具合書いてるだけだと思えばおk
騒げば直してくれるかもしれないからね
0553デフォルトの名無しさん
2009/02/17(火) 00:56:03そこまで判明してるなら、redmineかruby-devに行くこと推奨。
再現コードもあるようだし。
0554536
2009/02/17(火) 08:06:54素直にExcel使おうと思います。皆さんどうもありがとうございました。
0555デフォルトの名無しさん
2009/02/17(火) 08:11:31動作不良時に1.8.7に切り替えられないような人は1.9.1使ってもたぶん意味がないぞ
0556デフォルトの名無しさん
2009/02/17(火) 08:16:360557デフォルトの名無しさん
2009/02/17(火) 14:19:33これらは実際はどこかに属したメソッドのはずですよね。
一般的に関数と呼ばれるメソッドは
ObjectクラスまたはKernelモジュールで定義されたメソッド
という認識で間違いないでしょうか?
0558デフォルトの名無しさん
2009/02/17(火) 14:26:41File.openとかのmodule_functionもその名前の通り広義の「関数」だから
文脈次第だけど、openといきなり書いて通じる「関数」はKernel。
0559デフォルトの名無しさん
2009/02/17(火) 14:27:21はい
どこででもインスタンスメソッド形式で使える、ObjectクラスまたはKernelクラスなどのインスタンスメソッドのことを、
Rubyでは簡単のために「関数的メソッド」、あるいは手を抜いて省略し単に「関数」と呼んでいます
なお、コンピュータプログラミングの一般的に考えられている function の動作をするわけではないので、
そういうパラノイアな意味では関数ではありません(関数は存在できません)
0560デフォルトの名無しさん
2009/02/17(火) 14:30:08selfが必ずObjectを継承していてselfが省略可能だから
Objectのメソッドも見かけ上は「関数」になるのか。
0562デフォルトの名無しさん
2009/02/17(火) 14:55:45…そうでもないな
っていうかガンガン使いまくってるな
実際の動作がどうこうではなく、単に見かけがレシーバ省略(ドットの前が何も無い)であるだけで関数と呼んでる気がする
Ruby においては「イテレータ」並に曖昧な存在っぽい
最近はやっとイテレータでないものをイテレータと呼ばなくなってきたように思うんだが、関数はいつになることやら
0563デフォルトの名無しさん
2009/02/17(火) 15:09:590564デフォルトの名無しさん
2009/02/17(火) 15:17:340565デフォルトの名無しさん
2009/02/17(火) 15:40:500566デフォルトの名無しさん
2009/02/17(火) 15:44:320567デフォルトの名無しさん
2009/02/17(火) 15:51:34それはもう初心者じゃないんじゃね
0568デフォルトの名無しさん
2009/02/17(火) 15:54:070569デフォルトの名無しさん
2009/02/17(火) 16:07:450570デフォルトの名無しさん
2009/02/17(火) 16:24:54おれ基本的にメソッドにはreturnを書かないなあ
returnはメソッドの途中で処理を終わらせるときに限定して区別してる
0571デフォルトの名無しさん
2009/02/17(火) 16:27:200572デフォルトの名無しさん
2009/02/17(火) 16:52:090573デフォルトの名無しさん
2009/02/17(火) 17:06:36returnの有無ってそういう意味じゃないw
0574デフォルトの名無しさん
2009/02/17(火) 17:26:430575デフォルトの名無しさん
2009/02/17(火) 17:35:56だか(20行くらい省略)
0576デフォルトの名無しさん
2009/02/17(火) 17:42:29どの道すべて関数
0577デフォルトの名無しさん
2009/02/17(火) 17:48:030578デフォルトの名無しさん
2009/02/17(火) 17:56:410579デフォルトの名無しさん
2009/02/17(火) 19:05:56ゲム?ジェム?グェム?
0580デフォルトの名無しさん
2009/02/17(火) 19:16:180581デフォルトの名無しさん
2009/02/17(火) 19:24:380582デフォルトの名無しさん
2009/02/17(火) 19:27:14嘘だ
すまんこう
0583デフォルトの名無しさん
2009/02/17(火) 19:29:420584デフォルトの名無しさん
2009/02/17(火) 19:39:31普通に英単語として読むと思われる
0585デフォルトの名無しさん
2009/02/17(火) 23:08:39統合デスクトップgnomeのGは発音するとか、
普通ではない例があるから心配なのかもしらんが、
ふつうに宝石の意味のgemだな。
0586デフォルトの名無しさん
2009/02/17(火) 23:14:440587デフォルトの名無しさん
2009/02/17(火) 23:42:220588デフォルトの名無しさん
2009/02/17(火) 23:46:13ttp://www.akitaonrails.com/2007/11/12/chatting-with-john-lam-ironruby
John Lam: Our #1 priority is being as compatible as possible with
MRI 1.8.x. The one feature that we will not support is continuations,
which is consistent with JRuby. Other than that (and in the absence
of a Ruby spec), compatibility will be judged by whether we can run
real Ruby applications and community developed Ruby test suites.
Obviously Rails is an extremely important Ruby application, which we
will absolutely run on top of IronRuby.
.NET interop is our #2 priority. We will integrate with the .NET
platform, and allow you to write Ruby applications using the rich set
of .NET libraries. Obviously things like Silverlight, WPF, LINQ,
WinForms, and ASP.NET will be supported.
0589デフォルトの名無しさん
2009/02/18(水) 00:50:430590デフォルトの名無しさん
2009/02/18(水) 08:11:59requireの変な拡張はやめたのかね
0591デフォルトの名無しさん
2009/02/18(水) 11:20:09hoge(:data1 => odj1, :data2 => nil)
とやったとき、「デフォルト値を使うような動作」にするべき?
それとも、「data2を使わない動作」にするべき?
0592デフォルトの名無しさん
2009/02/18(水) 11:25:07つ 正解!!
0593デフォルトの名無しさん
2009/02/18(水) 11:25:41data2 のデフォルト値を nil 以外にしておいた上で、
「data2 を使わない動作にする」というのがよいかと思われマッスル
状況がさっぱりわからんが
・ ユーザー指定の data2 を使う動作
・ ユーザーが指定しなかったときの基本動作
・ data2 が空のときの動作
3つを使い分けたいんだろ
nil は空っぽという意味をもたせるものじゃない(存在していないという場合に使うべき)という考え方もあるがぬ
str = "" と str = nil が違うようにな
0594デフォルトの名無しさん
2009/02/18(水) 11:44:440595デフォルトの名無しさん
2009/02/18(水) 11:44:58おれは :data2 => nil は「デフォルト値を使う」ようにしている。
で、:data2 => false をしたときは「data2を使わない」ようにしている。
0596デフォルトの名無しさん
2009/02/18(水) 13:01:49うへきめえ
やっぱ use_date2action = true/false とかやるのが妥当なのかね
data2 => Data2::EMPTYDATA とか
0597デフォルトの名無しさん
2009/02/18(水) 13:05:18data2 => :empty でいいんじゃない?
0598デフォルトの名無しさん
2009/02/18(水) 13:15:05case
when params[:data2].nil?
data2 は(nil以外かもしれない)初期値
when params[:data2].is_a?(Symbol)
data2 は空っぽとみなす
when params[:data2]
data2 はユーザー指定の data2 のまま
end
…
こんなん?
0599デフォルトの名無しさん
2009/02/18(水) 13:23:48Symbolならなんでも空っぽというのはさすがに乱暴じゃないかw
case params[:data2]
when nil
when :empty
else
end
0600デフォルトの名無しさん
2009/02/18(水) 14:14:36意味わかんねよー
0601デフォルトの名無しさん
2009/02/18(水) 14:19:51・タイムスタンプを持つ
・タイムスタンプを持たない
・現在日時を使う(デフォルト)
でもこれなら「存在しない」だしnil使うなぁ。
0602デフォルトの名無しさん
2009/02/18(水) 14:28:15こいつは open-uri みたいに引数の URL にアクセスしてファイルを返すんだが
:referer を指定する → そのURL がリファラーになる
:referer を省略(nil) → 規定のリファラーがつく(前ページの URL)
はできるものの、
リファラーを送らない
という選択肢が無い
もしこれに :empty という指定ができるのなら
:referer に :empty を指定 → リファラーヘッダ自体を使わない
という芸ができることになる
0603デフォルトの名無しさん
2009/02/18(水) 16:14:08その動作だと、オプションの値として明示的にnilを渡したくなったときに困る
ところで、そういうキーワード引数的なものの解析を
自動でやってくれるライブラリって何かない?
0604デフォルトの名無しさん
2009/02/18(水) 17:08:08nilを渡せばよかろう
別に困らない
0605デフォルトの名無しさん
2009/02/18(水) 17:13:29まあnilは渡せるな。
デフォルト値にされるという前提だから期待したことにならないだろうけど。
0606デフォルトの名無しさん
2009/02/18(水) 18:36:49と
hoge(data1, nil)
を両方有効にしてなおかつ区別したいという話かもしれない
0607デフォルトの名無しさん
2009/02/18(水) 20:58:37配列の最後がHashならそれをpopして返し、そうでなければ
空のHashを返すという。
便利だが気持ち悪い。
def foo(x, y, *rest)
options = rest.extract_options!
options.reverse_merge(:default1 => value1, :default2 => value2)
# 云々
end
0608デフォルトの名無しさん
2009/02/19(木) 00:45:32もう面倒だったので、5000行のファイルを読み込んで
適当にテキスト処理して、配列にぶち込んで
if list.include?('apache2')
puts "インストール済み"
end
みたいなことをやったのですが、処理時間が早すぎてワロタ。
こんな糞みたいな処理はもっと時間がかかると思っていました。
まさか一瞬で検索できるとは・・・
0609デフォルトの名無しさん
2009/02/19(木) 01:20:180610デフォルトの名無しさん
2009/02/19(木) 01:29:15いやぁ、大量のテキストを配列にぶち込んで、そこから
include?メソッドで値が一致するかを一つひとつ調べるもんだから、もっと
時間がかかると思っていました。
意外すぎて感動です^^
0611デフォルトの名無しさん
2009/02/19(木) 01:37:19初rubyでversion 1.9.1 をcentos 5.2にインストールしたんですが、
コマンドラインからはhello world プログラムを実行しようとすると成功したり失敗したりします。
失敗したときは
failed to allocate memory (NoMemoryError)
とか
ruby: [BUG] iseq_compile_each: unknown node: NODE_METHOD
みたいなエラーが出ます。。同じような症状の人いるでしょうか??
ハードウェア的になんかおかしいのか・・?
PHPは普通に動いているんですが・・
0612デフォルトの名無しさん
2009/02/19(木) 01:43:390613デフォルトの名無しさん
2009/02/19(木) 02:33:43>>1
0614デフォルトの名無しさん
2009/02/19(木) 03:06:14sjis で「あいうえお,かきくけこ」を 50 行繰り返した csv で
>>545 を実行したけど再現しない。データと環境を詳しく教えて
0615デフォルトの名無しさん
2009/02/19(木) 07:13:57コメントの位置が違うのでは?
0616デフォルトの名無しさん
2009/02/19(木) 07:15:52ttps://hasseidoko.mhlw.go.jp/Byogentai/Csv/data15j.csv
0617デフォルトの名無しさん
2009/02/19(木) 13:40:22でわかりやすくて短いのってどんなの?
WEBrick::HTTPServer#startした時点でそれ以上実行できないよね?
0618デフォルトの名無しさん
2009/02/19(木) 14:09:16普通は Thread 使うんじゃね、と思う
server = WEBrick::HTTPServer.new(:Port => 8080)
server.mount('/test', MyServlet)
server.start
p open('http://localhost:8080/test').read
server.shutdown
これで「start から先が動かない(ついでに Ctrl+C で終了もできない)」と困る人は意外と多い
0619デフォルトの名無しさん
2009/02/19(木) 14:15:54=> Object
irb> Fixnum.superclass
=> Integer
なのに、
irb> Session.superclass
=> NameError: uninitialized constant Session from (irb):3
とエラーになってしまうのは何故ですか?
0620デフォルトの名無しさん
2009/02/19(木) 14:19:26それはそのまんまだ
エラーくらい読め
0621デフォルトの名無しさん
2009/02/19(木) 14:20:190622デフォルトの名無しさん
2009/02/19(木) 14:39:12クラスのパスくらいフルで書いてもいいじゃんね
組み込みクラスなのかなんのか一見の人にはわからんわ
0623デフォルトの名無しさん
2009/02/19(木) 14:40:26CGIを付けてもエラーになります。
というか、CGI::Sessionという記述はCGIクラスのサブクラスのSessionクラス、という意味ですよね。
Integer::Fixnum.superclassとしなくてもFixnum.superclassとするだけでIntegerが出力されるので
Session.superclass => CGI
と出力されることを期待したのですが。何か間違っているのでしょうか?
0624デフォルトの名無しさん
2009/02/19(木) 14:47:380625デフォルトの名無しさん
2009/02/19(木) 14:51:04だからエラー読めよ
Session という定数またはクラスが存在しないんだよ
もし本当に CGI::Session を調べたいなら、require 'cgi' してから CGI クラスを適当に使用したあとに調べるか、
あるいは自力で require 'cgi/session' しろ
irb> require 'cgi/session'
irb> CGI::Session.superclass
Object
0626デフォルトの名無しさん
2009/02/19(木) 14:52:23ObjectをわざとtypoしたObujectにも同じことやってみればいい
要は「Sessionなんて定数しらねーよ」ということ
ちなみにRubyの全てのクラスは定義の際に定数に代入され
「定数に収められたオブジェクト」としてアクセスされる
0627デフォルトの名無しさん
2009/02/19(木) 15:02:50self.method(:some_method).inspect
のようにして取得できるのですが、「:some_method」のところを省略して取得できないでしょうか
イメージとしてはこんな感じです
self.current_method.inspect
0628デフォルトの名無しさん
2009/02/19(木) 15:05:31そしてCGIクラスやSessionクラスは組み込みクラスのように見えて実は違うので
使う時はrequireしなければならない、ということですね。
すっきりしました。ありがとうございました。
0629デフォルトの名無しさん
2009/02/19(木) 15:09:110630デフォルトの名無しさん
2009/02/19(木) 15:11:44添付ライブラリだよ。ややこしくするなw
0631デフォルトの名無しさん
2009/02/19(木) 15:30:31そもそも定義も曖昧だし
0632デフォルトの名無しさん
2009/02/19(木) 15:33:48他にset_trace_funcぐらいしか思いつかなかった、すまん
>>631
rubyバイナリ単体で使えるのが組み込み
0633デフォルトの名無しさん
2009/02/19(木) 15:44:590634デフォルトの名無しさん
2009/02/19(木) 15:47:260635デフォルトの名無しさん
2009/02/19(木) 15:51:28やはり明示的に指定しなければだめなんですね。
set_trace_funcを調べたところ目的よりも少し大がかりなようなので見送りましたが、
この機能は知らなかったので勉強になりました。ありがとうございます。
0636デフォルトの名無しさん
2009/02/19(木) 16:38:02CGIも標準でruby本体に付いてるんだから組み込みみたいなもんだろ
0637デフォルトの名無しさん
2009/02/19(木) 16:54:160638デフォルトの名無しさん
2009/02/19(木) 16:58:14どこかで見かけて使うかもと思ってメモっといたやつだけど、
caller.first.scan(/`(.*)'/).to_s
って、どう?
自分は今のところ使ってないから良く調べてないけど、使えるかも。。。
0639デフォルトの名無しさん
2009/02/19(木) 17:09:120640デフォルトの名無しさん
2009/02/19(木) 17:16:40そりゃ標準関数だしそもそもCの呼び方とかどうでもいい
0641デフォルトの名無しさん
2009/02/19(木) 17:33:22ありがとうございます!
マニュアルを参照したところ引数によって以下のようになるようです。
def foo
p caller(0)
p caller(1)
p caller(2)
p caller(3)
end
def bar
foo
end
bar
=> ["-:2:in `foo'", "-:9:in `bar'", "-:12"]
["-:9:in `bar'", "-:12"]
["-:12"]
[]
デフォルトは「1」で呼び出し元を返すようですが、「0」とすればほしい値が返ると思います。
サンプルもマニュアルにあったので実装できます。お世話さまでした!
0642デフォルトの名無しさん
2009/02/19(木) 18:29:391.8.7 から __method__ が使えるはず
0643デフォルトの名無しさん
2009/02/19(木) 18:39:43「組み込みみたいなもん」?
「組み込み」とはどう違うの?
0644デフォルトの名無しさん
2009/02/19(木) 19:07:55賢い人は曖昧が嫌い。違いが分かるから。
0645デフォルトの名無しさん
2009/02/19(木) 19:14:00そのくらい読み取るべき。そして問題はそこではない。
0646デフォルトの名無しさん
2009/02/19(木) 19:23:42>>629
呼び出さなくても使えるものと、
わざわざ呼び出さなきゃいけないものを似てるとかw
こいつの会社では「動かないぞ!くそ言語が!」←requireしてないだけ
が多発してそうだな。
0647デフォルトの名無しさん
2009/02/19(木) 20:22:31あ、できました!!!ありがとうございます!
これでモジュール・クラス名こみのメソッド名+呼び出しもとのメソッド名と行数でいいログがとれそうです。
メソッド名の指定間違いも起こらなくて安心です!
0648デフォルトの名無しさん
2009/02/19(木) 20:38:50組み込みではないことを明確にするためなのだが、それでもバカには難しいのかね。
というか、それだと1.9.1の売りの一つである、
「EnumeratorやRational等の組み込み化」も理解できないわけだな
0649デフォルトの名無しさん
2009/02/19(木) 20:53:08ダシかなんかか
0650デフォルトの名無しさん
2009/02/19(木) 21:14:21あれ酷いよね
start した時点で何が起こるのかくらいは説明してほしいと思う
0651デフォルトの名無しさん
2009/02/19(木) 21:24:05以下のようにするとエラーが出ます。どう書いたらいいのでしょうか。
test = ""
p test if test =! ""
0652デフォルトの名無しさん
2009/02/19(木) 21:28:33逆だ逆。
Rubyっぽく書くなら
p test unless test.empty?
0653デフォルトの名無しさん
2009/02/19(木) 21:31:23hoge 自体が定義されてない場合は hoge.empty? でエラーが出る
その場合は設計自体があまりよろしくない
p hoge if (defined?(hoge) and !hoge.empty?)
あと、関数的メソッド test があるから、test というインスタンス変数を使うのはあまりよくない
0654デフォルトの名無しさん
2009/02/19(木) 21:34:07ありがとうございます。
0655デフォルトの名無しさん
2009/02/19(木) 22:04:480656デフォルトの名無しさん
2009/02/19(木) 22:10:580657デフォルトの名無しさん
2009/02/19(木) 22:11:15prelink ってのが ruby バイナリをいじって、おかしくしてるんじゃないかな。
たしか、 CentOS って cron で定期的に prelink がはしってるんだったっけ?
インストール直後はうまく動いていて、そのうちおかしくなったというのなら、それっぽい。
自分でビルドした、 ruby 1.9.1 ソースディレクトリに残っているバイナリのサイズと、
/usr/bin/ruby かどこかのインストールしたバイナリのサイズが微妙に違っていたら、かなりそれっぽい。
/etc/prelink.conf に、「-b /usr/bin/ruby」とか行を追加すると、 prelink されなくなるみたい。
はずしてたらごめんね。
0658デフォルトの名無しさん
2009/02/19(木) 22:18:10また、4G以上の数値は使えますか?
0659デフォルトの名無しさん
2009/02/19(木) 22:40:3731ビットより長い桁数だとそれなりに遅くなる。
2**1024
=> 1797693134862315907729305190789024733617976978942
3065727343008115773267580550096313270847732240753602
1120113879871393357658789768814416622492847430639474
1243777678934248654852763022196012460941194530829520
8500576883815068234246288147391311054082723716335051
0684586298239947245938479716304835356329624224137216
とか普通に計算できる。
0660デフォルトの名無しさん
2009/02/19(木) 22:48:510661デフォルトの名無しさん
2009/02/19(木) 22:49:320662デフォルトの名無しさん
2009/02/19(木) 22:53:31BigDecimalかRational使ってやればどうとでもなるけど
0663デフォルトの名無しさん
2009/02/19(木) 22:58:11制限なしは知ってたが実際に見るとすげえなw
0664デフォルトの名無しさん
2009/02/19(木) 23:02:52irb> false.object_id
=> 0
irb> 0.object_id
=> 1
irb> true.object_id
=> 2
irb> 1.object_id
=> 3
irb> nil.object_id
=> 4
irb> 2.object_id
=> 5
0665デフォルトの名無しさん
2009/02/19(木) 23:09:430666デフォルトの名無しさん
2009/02/19(木) 23:34:04stdio.hは単なる定数とかマクロの定義だけだと思った
マクロ等の展開・パーサー・コンパイルじゃ無かったかな?
#(g)ccのオプションがそれぞれあるはず
ライブラリはlinkするときに参照するから(バイナリの実行時に使う)
#インタープリタじゃ無いんだから・・・
#スレチ すまん
0667デフォルトの名無しさん
2009/02/20(金) 04:56:14正しい値を得るにはどうしたら良いですか?
rubyのバージョンは1.8.6です。バージョンアップした方が良いですか?
0668デフォルトの名無しさん
2009/02/20(金) 07:51:03FileTest で呼んでいる Windows 版のライブラリか何かの制限だったはず
0xffffffff と & を取ると正しいサイズが出ることがある
win32ole 経由だと正しい値が出そうな気もする
gem で win32-file あたりをインストールすればいいような気もする
0669デフォルトの名無しさん
2009/02/20(金) 07:57:380670デフォルトの名無しさん
2009/02/20(金) 07:58:22/usr/lib/ruby 以下を探してもプログラムがみつからないのですが、、
0671デフォルトの名無しさん
2009/02/20(金) 08:07:053.5Gのファイルを FileTest.size してみた
ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-mingw32] はダメ
ruby 1.9.1p0 (2009-01-30 revision 21907) [i386-mingw32] はOKっぽい
0672デフォルトの名無しさん
2009/02/20(金) 08:38:06*.rb も *.so も見つからなければ ruby 実行ファイル内に組み込み
0673デフォルトの名無しさん
2009/02/20(金) 08:42:13「組み込みクラス」(Builtin Class)ってのは、
インタプリタ自身のバイナリに内蔵されているクラスを指す。
FileTestはこっち(厳密なことを言えば、モジュール)
require せずに使える。
「添付ライブラリ」(Bundled libraries)と用語がまざってるな。
こっちは、Rubyを入手するとついてくるが、requireして使う。
内容の定義はRubyだったり、そうでなかったり。
0674デフォルトの名無しさん
2009/02/20(金) 08:43:49ことがあるから、インタプリタのバイナリに内蔵とは限らないな。
requireしなくてよいところが本質か。
0675デフォルトの名無しさん
2009/02/20(金) 08:48:41Windowsライブラリの制限なら仕方ないけど
高級言語なんだし、よしなにしてほしいところではある。
>>669
Ruby正式プラットフォームのGNU/Linuxを使うのが一番の正解。
0676デフォルトの名無しさん
2009/02/20(金) 11:29:36controller内で
session あるいは session.session_id
と記述するとCGI::Sessionオブジェクト あるいは セッションIDが返ります。
しかし通常はsession[:login_member]のようにハッシュを使ってセッションオブジェクトにデータをセットしたり取得したりしますよね。
このハッシュのようなsessionと前者のCGI::Sessionオブジェクトのsessionは別物なのでしょうか?
「Rails2.0からセッションオブジェクトはCookieに保存されるようになった」のような言い方で使われるセッションオブジェクトという言葉は、
前者のCGI::Sessionオブジェクトのことではないのですか?
0677デフォルトの名無しさん
2009/02/20(金) 11:43:41> railsについて質問させて下さい。
【Ruby】Ruby on Rails Part6
http://pc11.2ch.net/test/read.cgi/php/1224838013/
0678デフォルトの名無しさん
2009/02/20(金) 15:18:37「File.open の引数に指定しても問題ないように改変または警告例外を吐く」
ようにするライブラリとかありませんかね
| で始まっていたら popen なので例外出すとか
結果的にカレントディレクトリ以下以外へのアクセスになってたら例外出すとか
0679デフォルトの名無しさん
2009/02/20(金) 16:21:14Pathname ならやってくれるんじゃないか、と思って irb で試してみたが
path = '| invalid'
Pathname.new(path) # => Pathname
Pathname.new(path).cleanpath # => Pathname
Pathname.new(path).realpath # Errno::EINVAL
どうやら realpath を取らない限りエラーにはならないようだ
0680デフォルトの名無しさん
2009/02/20(金) 16:29:190681デフォルトの名無しさん
2009/02/20(金) 16:31:34ライブラリがほしいという話だろう
0682デフォルトの名無しさん
2009/02/20(金) 16:35:32・ 全世界で車輪の再発明が行われている
・ 漏れがある可能性も否めず、漏れがある場合はいろいろヤバい
というものはオプション満載でライブラリとして公開したほうがいいよね
0683デフォルトの名無しさん
2009/02/20(金) 16:53:450684デフォルトの名無しさん
2009/02/20(金) 17:15:45> | で始まっていたら popen なので例外出すとか
$ ruby -e 'File.open("|echo")'
-e:1:in `initialize': No such file or directory - |echo (Errno::ENOENT)
> 結果的にカレントディレクトリ以下以外へのアクセスになってたら例外出すとか
File.expand_path(path).rindex(Dir.pwd, 0) or raise
1.8.7以降なら
File.expand_path(path).start_with?(Dir.pwd) or raise
0685デフォルトの名無しさん
2009/02/20(金) 17:25:11なるほど。役割ごとにプログラムを分割するなんてアホらしいな。
ぜんぶごちゃまぜでいいかもな。
0686デフォルトの名無しさん
2009/02/20(金) 17:42:35文章中の二重母音(au ai ou eu といったもの)と
ann inn unn enn onn の撥音の出現回数を調べたいです
rubyがkakasiに対応しているようなので
外部であらかじめ変換する必要はないと思いました
ハッシュでカウントを増やすのではないかと考えていますが
単語を数えるのとはことなり前後に空白がないばあいがあって
これをどうすればよいのかわかりません
ご教示ください
0687デフォルトの名無しさん
2009/02/20(金) 18:20:26各論出してどうする
0688デフォルトの名無しさん
2009/02/20(金) 19:04:43内容が使えなくなりますよね?
1.9のヘルプはありますか?
0689デフォルトの名無しさん
2009/02/20(金) 19:34:02あなたは1.9にアップデートしない方がいいと思います
0690デフォルトの名無しさん
2009/02/20(金) 19:46:310691デフォルトの名無しさん
2009/02/20(金) 19:59:090692デフォルトの名無しさん
2009/02/20(金) 20:03:000693デフォルトの名無しさん
2009/02/20(金) 20:30:58用途に合うライブラリがあるか知らないので、ベタな方法だと
a="auaioueuanninnunnennonn"
a=a.gsub(/ai/," ai ")
...
a=a.gsub(/ann/," ann ")
-> " au ai ou eu ann inn unn enn onn "
0694デフォルトの名無しさん
2009/02/21(土) 00:07:29なるほど
そういう手がありましたか
やってみます
0695デフォルトの名無しさん
2009/02/21(土) 01:24:371.9.1のChangeLogに
Sat Aug 12 15:55:32 2006 Nobuyoshi Nakada <[email protected]>
* configure.in, bcc32/Makefile.sub, win32/Makefile.sub, win32/dir.h,
win32/win32.c, win32/win32.h: large file support for win32.
とあるので、1.9系なら2G超のファイルも大丈夫そう
msvcrt-ruby191.dll を見ると msvcrt.dll の _fstati64 やら _lseeki64 をインポートしてるので
ファイルサイズを64bit整数で扱ってるのでしょう
手持ちの最大ファイルが3.5Gだったので実際の所はわからんのですけど
残るは、ユニコードファイル名対応
0696デフォルトの名無しさん
2009/02/21(土) 01:40:560697デフォルトの名無しさん
2009/02/21(土) 06:27:37最初からやってなかったのはパフォーマンスに影響するからに過ぎない
理屈的には1.9のほうがファイルアクセスは遅い
0698デフォルトの名無しさん
2009/02/21(土) 12:24:06>>695さんの言っているunicode対応の問題だと思いますが。
どう対処したらよい物か・・・
0699デフォルトの名無しさん
2009/02/21(土) 12:26:380700デフォルトの名無しさん
2009/02/21(土) 12:27:250701デフォルトの名無しさん
2009/02/21(土) 12:33:340702デフォルトの名無しさん
2009/02/21(土) 12:37:460703デフォルトの名無しさん
2009/02/21(土) 12:41:252G越えのファイルサイズ取得をしようとしてたのですが、1.8.6でダメだったんで、
1.9.1入れて試してみたら、
d:/Tmp/rb41.tmp:1: invalid multibyte char (US-ASCII)
d:/Tmp/rb41.tmp:1: invalid multibyte char (US-ASCII)
d:/Tmp/rb41.tmp:1: syntax error, unexpected $end, expecting ')'
p FileTest.size('D:\vpc\hoge\Hard Disk.vhd')
というエラーを吐かれたので。
マルチバイトキャラクターはインバリットですって言われても・・・
$KCODE="SJIS"
してるのに。1.9だと書式が違うのかな。
0704デフォルトの名無しさん
2009/02/21(土) 12:45:22取得はできる
本体の File クラスでサポートされてないだけ
0705デフォルトの名無しさん
2009/02/21(土) 12:45:59>>1
0706デフォルトの名無しさん
2009/02/21(土) 12:46:08http://jp.rubyist.net/magazine/?0025-Ruby19_m17n#l72
この記事ひととおり読むの推奨。
0707デフォルトの名無しさん
2009/02/21(土) 12:50:36>なお、非 ASCII な文字を含むリテラルを magic comment
>なしに書いていた場合、US-ASCII ではない文字が存在して
>いるとして、invalid multibyte char というエラーになります。
これそのまんまか。
0708デフォルトの名無しさん
2009/02/21(土) 13:10:02つまり、文字コードの依存性を排除するための仕組みを組み込もうとしてるわけですね。
文字の指定方法が変わっちゃったのか。
今まで書いたスクリプトは全部修正しないとダメなんですかね。
付け加えるだけで良いのかな。
0709デフォルトの名無しさん
2009/02/21(土) 13:28:39無理に1.9.1使う必要性ゼロなのにね
0710デフォルトの名無しさん
2009/02/21(土) 13:40:00まあ、慣れればいい話なので、いいけど。
0711デフォルトの名無しさん
2009/02/21(土) 13:54:37threads = []
1.upto(1000) do |index|
threads.push(Thread.new(index) do |t_index|
using_thread_method # *****このメソッドの中でもスレッドを使ってる*****
end)
end
threads.each do |t| t.join end
たとえばこんな感じです
ご存じの方、よろしくお願いします
0712デフォルトの名無しさん
2009/02/21(土) 14:04:440713デフォルトの名無しさん
2009/02/21(土) 14:26:51スレッドの中でスレッドが実行されるって、
中できちんと処理してくれるのか分からなかったので。
0714デフォルトの名無しさん
2009/02/21(土) 14:28:581行目に以下の行を入れてtry。
# -*- coding: utf-8 -*-
0715デフォルトの名無しさん
2009/02/21(土) 14:48:44デフォルトUTF-8にしたら今までのEUC-JPやらlatin1のコードが中途半端に動いてもっとはまるだろボケ
0716デフォルトの名無しさん
2009/02/21(土) 15:04:30少しずつ使われ出してる気がする
0717デフォルトの名無しさん
2009/02/21(土) 15:08:48まあこればっかりは最適解が全く存在しないという恐ろしいシロモノだ
>>716
今は「使うなバカ」でいいよ
100の山が待ち構えてるのに最初の山だけ中途半端に登らせてどうする
そんなオナニーは止めろ
0718デフォルトの名無しさん
2009/02/21(土) 15:12:48このスレの外でサイト作るなりコラム書くなり本出すなり自主サポートするのがよろしいかと
外堀からじっくり埋めないと小手先では1.9.1はどうにもならんわ
0719デフォルトの名無しさん
2009/02/21(土) 15:13:41同じ質問が繰り返されたら共通の場所に入れるのは当然。
おまえのプログラムは同じことがいろんなところで繰り返されてるんだろうな。
0720デフォルトの名無しさん
2009/02/21(土) 15:15:520721デフォルトの名無しさん
2009/02/21(土) 15:21:301.9.1で引っかかるのは>>716だけじゃないぞ
これだけ書いてうまくいくということは、スクリプトでやってることにもよるがかなり稀
現状は「いいから素直に1.8.7使っておけ」か「手を抜かず1.9.1を一から全部学べ」の2択しかない
0722デフォルトの名無しさん
2009/02/21(土) 15:27:42ボタンが30個もついたリモコンのHDDレコーダー渡すより、
録画、再生、早送りくらいしかついていない、ビデオデッキ渡した方がマシ
0723デフォルトの名無しさん
2009/02/21(土) 15:28:510724デフォルトの名無しさん
2009/02/21(土) 15:28:54用途を満たせれば簡単な方でやった方が早いだろ、といいたい。
言語は手段でしかない。
言語もこだわりたいと言う人ならがんばれ!としかw
0725デフォルトの名無しさん
2009/02/21(土) 15:29:470726デフォルトの名無しさん
2009/02/21(土) 15:36:23然り
初心者スレとしては要は>>1だな
Ruby1.9.1を敢えて選択して学ぶことを否定はしないが、マジックコメントだけちょろっと言及とかありえん
0727デフォルトの名無しさん
2009/02/21(土) 16:11:010728デフォルトの名無しさん
2009/02/21(土) 16:16:410729デフォルトの名無しさん
2009/02/21(土) 16:24:08アレを見て怖じ気づく人は1.8.7を使った方がいいし、マゾの血が騒ぐって人には派手に散っていただきたい。
0730デフォルトの名無しさん
2009/02/21(土) 16:24:150731デフォルトの名無しさん
2009/02/21(土) 16:26:110732デフォルトの名無しさん
2009/02/21(土) 16:26:310733デフォルトの名無しさん
2009/02/21(土) 16:29:430734デフォルトの名無しさん
2009/02/21(土) 16:58:470735デフォルトの名無しさん
2009/02/21(土) 17:04:530736デフォルトの名無しさん
2009/02/21(土) 17:19:01「同じクラスに属するオブジェクトのみアクセス可能」
とのことですが、これはJavaのprivateと同等と考えてよいのですか?
0737デフォルトの名無しさん
2009/02/21(土) 17:22:06言語としての強制力はない
名前だけだと思ってよし
0738デフォルトの名無しさん
2009/02/21(土) 17:25:00サブクラスもOKじゃなかったか?
>>737
は?
0739デフォルトの名無しさん
2009/02/21(土) 17:27:08rubyのprotectedはあまり使わないだろうから気にするな
0740デフォルトの名無しさん
2009/02/21(土) 17:29:320741736
2009/02/21(土) 17:49:58公式の説明を見る限り、rubyのprotectedはサブクラスからのアクセスは許してないようですが。
http://www.ruby-lang.org/ja/man/html/_A5AFA5E9A5B9A1BFA5E1A5BDA5C3A5C9A4CEC4EAB5C1.html
javaのprotectedとrubyのprivateが似ているというのもよく聞くけど全然違うように見えます。うーん難しい。。
0742736
2009/02/21(土) 17:55:27privateもprotectedもサブクラスから呼べるようですね。ちゃんと読めてなかった。
0743デフォルトの名無しさん
2009/02/21(土) 18:01:01Module#private を使うかどうかなんかは完全に趣味の領域
0744デフォルトの名無しさん
2009/02/21(土) 18:05:41----8<-- ツ --8<-- カ --8<-- イ --8<-- マ --8<-- セ --8<-- ン --8<-----
という意図で private と書くことはある
0745736
2009/02/21(土) 18:08:21まぁスクリプト言語とビジネス指向言語の差かな
0746デフォルトの名無しさん
2009/02/21(土) 18:30:40gemの中の適当なソースでも見ろよ
0747デフォルトの名無しさん
2009/02/21(土) 18:35:290748デフォルトの名無しさん
2009/02/21(土) 18:38:51ドキュメントも書かない、全部publicメソッドで後任者を混乱の渦に巻き込むんですね
わかります。ほんとにいます、そういう人
0749デフォルトの名無しさん
2009/02/21(土) 18:45:39アクセス制御はリフレクションやeval系を使えばいくらでも崩せるので、
744 が書いているくらいの役割にしかできない。
後は rdoc で出力しないとかか。
0750デフォルトの名無しさん
2009/02/21(土) 18:47:340751デフォルトの名無しさん
2009/02/21(土) 18:51:17eval が「private だから実行できません」という例外吐くようになったら俺は Ruby を捨てるだろう
0752デフォルトの名無しさん
2009/02/21(土) 18:52:36Ruby で「このメソッドは private だから使わないようにしよう」と思ったことってある?
ないよね?
private かどうかってのは全然本質じゃないよね?
0753デフォルトの名無しさん
2009/02/21(土) 18:53:26当たり前の方法でアクセスできるのと
当たり前じゃない方法でアクセスするのじゃ大違い
evalだのなんだのが当たり前だと思ってるなら勝手に自滅してくれ
0754デフォルトの名無しさん
2009/02/21(土) 18:55:44見所がある!COBOLプログラマにならないか?
0755デフォルトの名無しさん
2009/02/21(土) 18:59:04public かどうかが砦かというとそんなことはないと思う
マニュアルで縛るべき
マニュアルじゃなくプログラム側にユーザーがやることの責を負わせるのは、
ソースコードと実行ファイルが分かれていないスクリプト言語においてはたぶん筋違いだ
0756デフォルトの名無しさん
2009/02/21(土) 19:00:42CとかJavaみたいに整理されてないよね色々と
0757デフォルトの名無しさん
2009/02/21(土) 19:03:10というか、Javaが言語の成り立ちや仕様としてかなり特殊
どんな言語もJavaに比べれば混沌
0758デフォルトの名無しさん
2009/02/21(土) 19:04:290759デフォルトの名無しさん
2009/02/21(土) 19:09:19そもそもRubyは継承とか委譲とかMix-inとかのごちゃ混ぜがバカみたいに気楽だからな
責任を重視するJavaの論理はなかなか通用しない
0760デフォルトの名無しさん
2009/02/21(土) 19:12:13変数でもメソッドでもスコープには常に気を配ってますが
ものすごく非常識ですね。どこの会社ですか?w
0761デフォルトの名無しさん
2009/02/21(土) 19:24:04privateとpublicの区別を否定してるやつって、
組み込みライブラリと添付ライブラリを一緒って言ってたやつと同じか?
なんでもごちゃまぜだな。こいつがMr.1.8.7だったら笑えるのだが。
0762デフォルトの名無しさん
2009/02/21(土) 19:27:03放置されている
0763デフォルトの名無しさん
2009/02/21(土) 19:35:06大学や専門で勉強してない人間がプログラミングのもっと奥の実装を知るにはどうすればいいんだろう
難しそうな書籍を見ても、メモリとかスレッドとかOSに絡む話とかが出てきた瞬間にもう意味不明になる
初心者向けにOSの仕組みを解説してる書籍ってあるんでしょうか?
0764デフォルトの名無しさん
2009/02/21(土) 19:36:220765デフォルトの名無しさん
2009/02/21(土) 19:37:350766デフォルトの名無しさん
2009/02/21(土) 19:47:36\ / .::::::::::::::::::::::::;;:;;::,ッ、:::::: ) く ホ す
\ l ,ッィrj,rf'"'"'" lミ::::::: く れ モ ま
Y ,!ミ::::::: ヽ な 以 な
`ヽ、 | くミ:::::::: ノ い 外 い
|、__ ャー--_ニゞ `i::::,rく か は
``''ー- ゝ、'l  ゙̄´彑,ヾ }::;! ,ヘ.) ! 帰
゙ソ """"´` 〉 L_ っ
/ i , /| て r
≡=- 〈´ ,,.._ i 't-'゙ | ,へ ,r┘
,、yx=''" `ー{゙ _, -、 ; l レ' ヽr、⌒ヽ'
゙、`--─゙ /! `、
_,,、- ゙、 ー'' / ; `、
-''"_,,、-''" ゙、 /;;' ,' / 、\
-''" / `ー─''ぐ;;;;' ,' ノ ヽ `ヽ、
// / ヾ_、=ニ゙、、,,_
/// // ,、-'´
// // / /
0767デフォルトの名無しさん
2009/02/21(土) 19:49:020768デフォルトの名無しさん
2009/02/21(土) 19:50:080769デフォルトの名無しさん
2009/02/21(土) 20:01:370770デフォルトの名無しさん
2009/02/21(土) 20:52:250771デフォルトの名無しさん
2009/02/21(土) 20:56:10いや、privateは使ってるよ。protectedは使ったことないけどさ。
ただ、使うと便利で役に立ち必要であれば破ることもできる、という使い方をしたい。
0772デフォルトの名無しさん
2009/02/21(土) 21:00:58家宝にして誰の目にも触れないようにしておこうと思います
0773デフォルトの名無しさん
2009/02/21(土) 21:23:42Rubyを使ったときにスコープの問題で気になったことはなかったのですが、
記事に書かれている、Larry Wallから批判されたRubyのレキシカルスコープの問題とはなんでしょうか?
0774デフォルトの名無しさん
2009/02/21(土) 21:41:06a = [1,2,3]
a.sort_by{|a| a}
p a
3
Perl の my との比較だから、きっと
str = "!"
def hoge
p str
end
これが動かないのが嫌なのかもしれない
0775773
2009/02/21(土) 22:03:09上の例はまさに1.9で変更された箇所でしたか
下の例は確かに外側のスコープを参照できるというCやPerlとは違っている感じですね
ありがとうございました
0776デフォルトの名無しさん
2009/02/21(土) 22:13:09上のは変更されてよかったと思う
下のはRuby的には当然
0777デフォルトの名無しさん
2009/02/21(土) 22:44:14@str = "!"
@@str="!!"
def hoge
p @str, @@str;
end
0778デフォルトの名無しさん
2009/02/21(土) 23:50:13ここにruby関連の質問がいっぱいポストされてる
0779デフォルトの名無しさん
2009/02/22(日) 13:10:09case foo
when String
# do something...
when Numeric
# do something...
end
# 他人様
case foo
when String
# do something
when Numeric
# do something
end
このようにcaseの中でwhenをインデントしない人が多いのはなぜ?
0780デフォルトの名無しさん
2009/02/22(日) 13:13:07elsif bar
elsif boo
else
end
とするの?
0781デフォルトの名無しさん
2009/02/22(日) 13:26:25Cのswitch文でのインデントに沿ってるんじゃないかな
switch文のcaseは飛び先を示すラベルだから
switch (n) {
case 1:
do_something();
break;
case 2:
do_something();
...
case 1: の部分を手で隠してみるとなんとなくわかるよ
0782デフォルトの名無しさん
2009/02/22(日) 13:27:29Emacs の ruby-mode のインデントが他人様仕様になってるから、が理由
素の Ruby では case-when ではインデントしないのが多数派で、Rails ではインデントするのが多数派
たのしい Ruby でもここでインデントはしてなかったはず
0783779
2009/02/22(日) 13:30:56ありがとうでおじゃる。
0784デフォルトの名無しさん
2009/02/22(日) 13:33:18クラスのトップレベルにインスタンス変数やクラス変数があるのがキモい
0785デフォルトの名無しさん
2009/02/22(日) 14:03:31トップレベルってmainという名前のオブジェクトになるだけじゃなかったっけ?
0786デフォルトの名無しさん
2009/02/22(日) 15:14:00correctなら分かるけど
0787デフォルトの名無しさん
2009/02/22(日) 15:25:410788デフォルトの名無しさん
2009/02/22(日) 15:29:35いやその方がさっぱりわからん。何を「訂正 (correct)」するんだ?
……中身を適切に訂正した配列を生成するっていう解釈か。
…… map でいいじゃんもう面倒臭い。
Smalltalk の Collection 由来なんだから collect / select / detect / reject / inject はそういうもんだと思っときゃいいんだもう。
0789デフォルトの名無しさん
2009/02/22(日) 15:33:29collection は(収集物ではなく)系
map は(地図ではなく)写像
0790デフォルトの名無しさん
2009/02/22(日) 15:37:50そのへんはさっぱりわからん
map と find_all と find と delete_if か
inject はインパクトがあるので覚えてる
0791デフォルトの名無しさん
2009/02/22(日) 15:39:490792デフォルトの名無しさん
2009/02/22(日) 15:50:170793デフォルトの名無しさん
2009/02/22(日) 15:50:31…畳込み関数という概念自体、一般ピーポーには馴染みがないがぬ
「あーfoldって畳込み関数ね」とわかる人は100人に1人もいない可能性が
0794デフォルトの名無しさん
2009/02/22(日) 15:53:48頑張ってるが惜しい
…というか、元の文書が既に議論経験したわかった人向けの体裁なのだな
0795デフォルトの名無しさん
2009/02/22(日) 15:56:32詳細全部書いてたら死ぬというのはわかるけど、さっぱり要領得ないよね
「要はアレです」
「あなるほど」
これじゃわからんわな
暇な人のフォローを期待
0796デフォルトの名無しさん
2009/02/22(日) 16:01:37「結局どうなってるのかがよくわからないので保留します」という判断した作者さんがいた
ruby スクリプトとして添付されてないクラスの変更は解説したほうがいいと思う
0797デフォルトの名無しさん
2009/02/22(日) 16:07:34趣味レベルでしか使う気になれないし。
0798デフォルトの名無しさん
2009/02/22(日) 16:11:54演算子を差し込む(inject)というイメージらしい
1.9ではもっと露骨になってる
(1..10).inject(:*) # 10!
0799デフォルトの名無しさん
2009/02/22(日) 16:16:59例えばJavascriptの関数を実行させて、その戻り値をRubyの変数に格納するとか。
調べたところGoogle ChromeのV8を使うみたいなものは見つけましたが、
それ以外の方法で何かあればお願いします。
0800デフォルトの名無しさん
2009/02/22(日) 16:19:3910.factorial #=> 3628800
0801デフォルトの名無しさん
2009/02/22(日) 16:37:11使ったことは無いが
Ruby会議で発表してたJohnsonってのがある
ttp://github.com/jbarnette/johnson/tree/master/
後はJRuby+Rhinoとか出来るかも
0802デフォルトの名無しさん
2009/02/22(日) 16:44:10サンクス!GoogleのAPI動くだろうか。やってみます。
0803デフォルトの名無しさん
2009/02/22(日) 16:58:110804デフォルトの名無しさん
2009/02/22(日) 17:05:10これは言語設計のポリシーになると思うけど、言語仕様に取り込むか、ライブラリで提供するか
必要に応じて自分で実装して下さいとするかの考え方じゃないかな。
階乗みたいな数列系はニーズの数だけ大量びあると思われるので、個人的には簡単に実装出来る
部品と糊があれば十分という気がする。
0805デフォルトの名無しさん
2009/02/22(日) 18:19:56いや、popenについては元々チェックされてるし、
>>683のいうとおりそもそも各論にしかなりようがない要求だし。
0806デフォルトの名無しさん
2009/02/22(日) 20:15:48簡単なテキストエディタを
作りたいと思っています。
各行をつなぐデータ構造は
どうやって実現すべきでしょうか。
連結リストやポインタは
Rubyにはないんですよね?
0807デフォルトの名無しさん
2009/02/22(日) 20:36:35ギャップバッファとか使いたいなら拡張ライブラリを探すといいんじゃない?
って、http://i.loveruby.net/ja/projects/textbuffer/ とか放置ギミなのか。
0808デフォルトの名無しさん
2009/02/22(日) 21:00:07えーと、ラインエディタかなんかですよね
Rubyでウィンドウ作るとかマゾのすることですぞ
0809デフォルトの名無しさん
2009/02/22(日) 21:22:24統計屋さん?
式に階乗たくさん出てくるからね。
2000個の玉のうち、赤い玉は300個で残りは白い玉でした。
ここから100個取り出して、赤い玉が50個以下の確率は?
のときは、階乗なんて使わない。
ここから100個取り出して、赤い玉が50個の確率は?
のときは、階乗使う。
無いと不便だから、自分で書くけど、あんまり使わない。
パスカル以降、再起呼び出しの見本みたいになってるけど、
まぁ普通に書いたのが良いと思う。
0810デフォルトの名無しさん
2009/02/22(日) 21:29:39本格的なものじゃないです。
エディタ自体作ったことがないので、
そのライブラリを利用する方が楽そうですね。
>>808
俺コマンド満載の会話型ラインエディタを想定しています。
Rubyの強力なテキスト編集能力を活かして
100行くらいでできたら、と思ったんですが
現実は甘くないみたいで・・・
0811デフォルトの名無しさん
2009/02/22(日) 21:37:270812デフォルトの名無しさん
2009/02/22(日) 21:49:510813デフォルトの名無しさん
2009/02/22(日) 22:02:100814809
2009/02/22(日) 22:08:120815デフォルトの名無しさん
2009/02/22(日) 22:09:540816デフォルトの名無しさん
2009/02/22(日) 23:00:22オンメモリでいいなら、こんな方法もあるけど、ラインエディタである事が必須?
ttp://codezine.jp/article/detail/2180?p=1
0817デフォルトの名無しさん
2009/02/23(月) 01:21:00処理は終わってるようなのにプロセスが残る現象が結構起こる。
確実にプロセスを終了させる方法はないですか?
0818デフォルトの名無しさん
2009/02/23(月) 01:24:03ありがとうございます。
動くサンプルがあるのはとても助かります。
ただ、最初は小規模でやりたいので
ラインエディタで行ってみます。
スクリーンエディタはその次の課題とします。
0819デフォルトの名無しさん
2009/02/23(月) 11:03:37残ってるってサブプロセス?
具体的にどういうことをしてる?
0820デフォルトの名無しさん
2009/02/23(月) 11:23:230821デフォルトの名無しさん
2009/02/23(月) 14:36:39親rakeの中でループさせて子rakeをバックスラッシュを使って何回も呼び出してる
子rakeの中ではネット上のデータをとってきて必要な物をDBに蓄えてる(ActiveRecord使って)
ループをさせて呼び出してるのは、1回でやるとプロセスが大きくなりすぎちゃうから
なんかまずいとこあるだろうか orz
0822デフォルトの名無しさん
2009/02/23(月) 17:31:59バッククォートのことか?
実際に残るプロセスって何だよ
0823デフォルトの名無しさん
2009/02/23(月) 17:41:50あ、バッククオート。子rakeのプロセスが残って消えないことがある。
タスクマネージャーで強制終了すると、
親rakeのループが動いて次の子rakeのプロセスが立ち上がる。
データの入り具合をDBの中を見て確認すると、
プロセスが消えない子rakeの処理自体は終わってるみたい。
0824デフォルトの名無しさん
2009/02/23(月) 22:14:050825デフォルトの名無しさん
2009/02/23(月) 22:22:05レスサンクス。だとすると納得なんだけど心当たりがないのだが・・・
0826デフォルトの名無しさん
2009/02/23(月) 22:33:550827デフォルトの名無しさん
2009/02/23(月) 22:58:160828デフォルトの名無しさん
2009/02/23(月) 23:01:480829デフォルトの名無しさん
2009/02/24(火) 11:47:48似たようなことができそうなスクリプトがありました。
AllInOneRuby - A "Just-in-Time and Temporary Installation of Ruby"
http://www.erikveen.dds.nl/allinoneruby/index.html
rubyscript2exeの全部いりバージョンみたいな感じですね。
作ったのはrubyscript2exeの作者みたいです。
検索したところ使っている人がいない気もしますが・・・w
しかし、この人変なものつくっててうけるw
RubyWebDialogs - The Web Browser as a Graphical User Interface for Ruby Applications
http://www.erikveen.dds.nl/rubywebdialogs/index.html
0830デフォルトの名無しさん
2009/02/24(火) 12:07:19> gem install allinoneruby
> allinoneruby myallinoneruby.exe
> time ./myallinoneruby.exe -e "puts 'hello'"
hello
real 0m10.333s
user 0m0.000s
sys 0m0.031s
myallinoneruby.exe が5MBくらいあった
0831デフォルトの名無しさん
2009/02/24(火) 14:29:040832デフォルトの名無しさん
2009/02/24(火) 16:08:21なんでこんなに遅いのかと思ったら
中のファイル(bin/ lib/)を全部ユーザーディレクトリに展開してるのね
なんという力業
0833デフォルトの名無しさん
2009/02/24(火) 16:27:040834デフォルトの名無しさん
2009/02/24(火) 16:32:45なんだかんだ言ってほとんどの組み込みライブラリ使うからな
0835デフォルトの名無しさん
2009/02/24(火) 18:38:26都度展開すればlibの展開せずに済むだろ
0836デフォルトの名無しさん
2009/02/24(火) 19:55:45FasterCSVを使っているのですが、CSVの読み込む文字コードを変えたい時はどうすればいいんでしょうか?
$KCODE='u' 状態で、SJISのcsvを読みたいのですが・・・
csv = FasterCSV.read(filename)
みたいに読んで、帰って来たcsvの配列を後でKconvで変換する方法だと、
ハゲ,冷,冷蔵庫
みたなCSVの場合、
"ハゲ", "冷", "冷蔵庫"
でなく、
"ハゲ", "冷,冷蔵庫"
と認識され困っています。
0837デフォルトの名無しさん
2009/02/24(火) 20:01:42ありがとうございました。
c = FasterCSV.read("sex.csv", :encoding => 'sjis');
FasterCSV Documentation
http://fastercsv.rubyforge.org/
0838デフォルトの名無しさん
2009/02/24(火) 20:47:03gifやpng形式のQRコード画像からURLなどのデータを取得するライブラリーはあるでしょうか
0839デフォルトの名無しさん
2009/02/24(火) 21:21:23あんまスクリプトの仕事じゃねえな
Javaならある
0840デフォルトの名無しさん
2009/02/24(火) 21:55:37>>839よりこうすりゃいいと思う。
1.Rubyでサーバーソケットをあらかじめオープン
2.fork
3.子プロセスでサーバーソケットをclose
4.子プロセスでJavaをexec
5.JavaでQRコード処理
6.結果URLを得たらRubyのさっきのサーバーに接続
7.Rubyサーバーはaccept
8.Javaプログラムでデータ送信
9.Rubyプログラムは結果を得たらソケットクローズ
10.Javaはソケットクローズして終了
11.あとは煮るなり焼くなり御好きにどうぞ
ソケットでぐだぐだやらずにパイプでもOK
0841デフォルトの名無しさん
2009/02/24(火) 23:34:44Rubyの導入に関して躓いており、お知恵を貸していただけると幸いです。
One-Click Installerの186-26を使ってRuby(と、Rubygems)をインストールしたのですが
コマンドプロンプトからgemのコマンドを実行することができません。
no such file to load optparse のエラーメッセージが表示されます。
ググって色々と探してみたのですが、徒労に終わりました。
これの原因って何でしょうか?
0842デフォルトの名無しさん
2009/02/24(火) 23:57:482009のウイルス検索で引っかかってロックされたw
gemを起動しようとすると、"no such file to load install_command"と言われる。
(これもロックされた)
0843841
2009/02/25(水) 00:29:50うちもウイルスバスター2009入れているので、まさかと思ってウイルスバスターを
停止してから再度インストールし直してみました。
結果、gem使えるようになりました。
ありがとうございます。
ウイルスソフトが原因で何かが動かなくなるとか最近無かったので、すっかり盲点になっていました。
的確な助言助かりました。
0844デフォルトの名無しさん
2009/02/25(水) 00:32:02大変そうですね。。。もう少し調べてみます。
0845デフォルトの名無しさん
2009/02/25(水) 01:08:37ウイルスバスター=ウイルスソフトと思ってる者が多いな。
0846デフォルトの名無しさん
2009/02/25(水) 02:02:18まぁ、学習目的なら、とりあえず文字列の配列から始めてみることをお勧めする。
> 連結リストやポインタは
> Rubyにはないんですよね?
「連結リスト」や「ポインタ」って何か理解してる?
irb> class ListElem; attr_accessor :value, :next; end
irb> a = ListElem.new; a.value = "A"
irb> b = ListElem.new; b.value = "B"; a.next = b
irb> c = ListElem.new; c.value = "C"; b.next = c
irb> a.value
=> "A"
irb> a.next.value
=> "B"
irb> a.next.next.value
=> "C"
0847デフォルトの名無しさん
2009/02/25(水) 02:11:24ポインタの代わりなんて言うまでもない
0848デフォルトの名無しさん
2009/02/25(水) 13:39:080849デフォルトの名無しさん
2009/02/25(水) 14:26:440850デフォルトの名無しさん
2009/02/25(水) 14:42:12Linux版で用が済むならLinux版を使うことをお勧めする
0851デフォルトの名無しさん
2009/02/25(水) 14:51:160852デフォルトの名無しさん
2009/02/25(水) 15:17:140853デフォルトの名無しさん
2009/02/25(水) 16:13:27OSはwinです
inputダイアログ(テキストボックス、YESNOボタン)
が実現できるぐらいm
0854デフォルトの名無しさん
2009/02/25(水) 16:21:47不特定多数に配布するのでなければ好きなの使い放題
0855デフォルトの名無しさん
2009/02/25(水) 16:52:09Rubyのprivate の使い道って何なんでしょうか?
ここ読むと、C++なんかのprivateとは違うなあ、くらいしかよくわからんです。
FAQ::メソッド - Rubyリファレンスマニュアル
http://www.ruby-lang.org/ja/man/html/FAQ_A5E1A5BDA5C3A5C9.html
外部からメソッドを隠す用途には、protectedでいいんですよね?
0856デフォルトの名無しさん
2009/02/25(水) 17:03:56逆。どうしてもprotectedじゃないとダメなときにだけprotectedを使って
日常的な隠蔽用途にはprivateを使う。
0857デフォルトの名無しさん
2009/02/25(水) 17:14:41hoge.hidden
という形式で呼んで欲しくない場合は hidden をprivate に設定する
Hoge クラスでのメソッド定義内や Hoge を継承したクラスの中では普通に使えるが、self.hidden という形式では呼べなくなる
0858デフォルトの名無しさん
2009/02/25(水) 17:24:21GUIライブラリ本体がついてるパッケージなんてある?
0859デフォルトの名無しさん
2009/02/25(水) 17:40:56Rubyistは、こういうこと言う人ばかりなんだけど、そもそもRubyのprivateが変なので、
もっともらしく仕様が変更される可能性だってあるのに、なんでそんなにprivateを推すのか
理解できない
Rubyには本当のprivateはないので、privateなんて使うなとか言う人はいないのか
0860デフォルトの名無しさん
2009/02/25(水) 17:42:35え、そうなんですか?
>>857
実際問題、self.hiddenで読めなくなるすることの利点は何があるんでしょうか?
self.hiddenという呼び出し方をしたことがほどんどないのでよくわからんす・・・
0861デフォルトの名無しさん
2009/02/25(水) 17:45:37RDocの書き方は、以下のサイトが参考になりました。
プログラミング言語/Ruby/RDoc - プログラミングスレまとめ in VIP
http://vipprog.net/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E/Ruby/RDoc.html
これを見るに、wiki風の書式は決まっているけれど、javadocやphpdocみたいに
引数はこうこう、帰り値はこうこう、と決まっているわけではないんですよね?
とはいえ、参考にできるものがあればよいと考えています。
何か「これのドキュメントのつけ方を習っておけばよいよ」というソースはありませんでしょうか?
0862デフォルトの名無しさん
2009/02/25(水) 17:52:45恐ろしいことに公式な指針も何もない、が回答
前に誰かが個人的にまとめてたのがあったがどこだったかな
0863デフォルトの名無しさん
2009/02/25(水) 17:56:40ドットつきの形式で呼び出せなくするのが private
ドットの左のレシーバが何かは問わない
とにかくドットつきで呼べなくするのが private
>>859
一応、Ruby は Java でも C++ でもない、というのが答なんだけども
Java や C++ のアクセス制御は Java や C++ 固有の「文法」であって、OOP にくっついてくる概念ではない
0864デフォルトの名無しさん
2009/02/25(水) 17:59:280865デフォルトの名無しさん
2009/02/25(水) 18:01:40ttp://www.rubyist.net/~matz/20070208.html#p04
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/30107
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/30275
0866デフォルトの名無しさん
2009/02/25(水) 18:02:510867デフォルトの名無しさん
2009/02/25(水) 18:05:59そういうオブジェクト指向なんたるかみたいのは静的なJavaでやってよ、というのが大体のとこなんじゃないかな、と思う
0868デフォルトの名無しさん
2009/02/25(水) 18:09:180869デフォルトの名無しさん
2009/02/25(水) 18:10:50自分の書いたレスよく読め
何も疑問が湧かないなら今日はもう寝ろ
0870デフォルトの名無しさん
2009/02/25(水) 18:11:560871デフォルトの名無しさん
2009/02/25(水) 18:12:50現行のprotectedの動作は無視かよ
0872デフォルトの名無しさん
2009/02/25(水) 18:14:160873デフォルトの名無しさん
2009/02/25(水) 18:14:42具体的に述べてください
0874デフォルトの名無しさん
2009/02/25(水) 18:16:060875デフォルトの名無しさん
2009/02/25(水) 18:16:180876デフォルトの名無しさん
2009/02/25(水) 18:17:35移植でもやってるのか?
0877デフォルトの名無しさん
2009/02/25(水) 18:19:08君は根本的に何を議論しているのか理解してない
0878デフォルトの名無しさん
2009/02/25(水) 18:22:390879デフォルトの名無しさん
2009/02/25(水) 18:23:19ヒント:++
0880デフォルトの名無しさん
2009/02/25(水) 18:26:11publicが必要ならpublic。privateとprotectedのどちらでもいいなら当然private。
0881デフォルトの名無しさん
2009/02/25(水) 18:28:52でも使われ方はprotected。じゃあprotected使えばいいじゃん。
privateで済むならって言うけど、privateなんてないんだよ
0882デフォルトの名無しさん
2009/02/25(水) 18:41:36言語による仕様の違いは本質的じゃない
本質は「必要のない権限は与えない」ということ
これはどんな言語にも言えるし、もっといえばプログラム言語に限った考えでもない
0883デフォルトの名無しさん
2009/02/25(水) 18:47:570884デフォルトの名無しさん
2009/02/25(水) 18:51:38みんな社長の裁量があれば便利かもしれんが、組織が大きくなれば通用しない。
どうでもいいものなら全部のメソッドに社長の権限を持たせてもいいけどな
C++だのJavaだのと比較するのは、
主任に相当するのはグループリーダー?係長はマネージャー?ちょっと違くね?
と言ってるのと変わらんw
0885デフォルトの名無しさん
2009/02/25(水) 19:03:35カプセル化が云々とかって試みが進展してたのはC++系統の言語でしょ?
参考にしてないはずがないと思うんだが
C++とEiffelを触ったらしいMatzが知らないってことは無いし
0886デフォルトの名無しさん
2009/02/25(水) 19:05:52そのprivateの欠陥を前提として、privateを勧めまくるRuby界隈の人たちにはうんざりする
0887デフォルトの名無しさん
2009/02/25(水) 19:10:18そのときはいいと思ったのさ・・・
0888デフォルトの名無しさん
2009/02/25(水) 19:14:40言語が違えば設計思想も違う
0889デフォルトの名無しさん
2009/02/25(水) 19:17:15結局>>859-はどうしたら満足するのかが分からん
0890デフォルトの名無しさん
2009/02/25(水) 19:20:120891デフォルトの名無しさん
2009/02/25(水) 19:46:31・ダックタイピングや動的メソッドの柔軟さをとる考え方
・privateと書いてあっても使ってしまうような不注意な者から守る考え方
を両立させた言語は無いだろ?
0892デフォルトの名無しさん
2009/02/25(水) 19:46:560893デフォルトの名無しさん
2009/02/25(水) 20:58:450894デフォルトの名無しさん
2009/02/25(水) 22:03:59wiki曰く
「引数以外の変数を実行時の環境ではなく、自身が定義された環境(静的スコープ)において解決する関数」
とのことですが、何がなにやら・・・。
0895デフォルトの名無しさん
2009/02/25(水) 22:17:020896デフォルトの名無しさん
2009/02/25(水) 22:21:46クロージャというものを理解してる人向けの説明であって、それからクロージャを学ぼうとするのは不適当
0897デフォルトの名無しさん
2009/02/25(水) 22:49:15def counter
c = 0
Proc.new { c += 1 }
end
c1 = counter
c1.call # => 1
c1.call # => 2
c1.call # => 3
c2 = counter
c2.call # => 1
メソッドcounterは、まず変数cを宣言して初期化し、
次に無名関数を作ってこれを戻り値としている
無名関数内では、変数cの値が1増やされている
問題は、無名関数が値を増やしている「変数c」は何処から来たのか?ということ
(もちろん、無名関数の内部でcなんて変数は宣言されていない)
この場合は、無名関数と同じく、メソッドcounterの中で宣言された変数cを指している
”自身が定義された環境(静的スコープ)において解決する”とは、そういう意味
0898デフォルトの名無しさん
2009/02/25(水) 22:51:340899デフォルトの名無しさん
2009/02/25(水) 23:08:37「ああ,これクロージャっていうのか」ってなったな
こういうものは使ってみたほうがはやい
0900デフォルトの名無しさん
2009/02/25(水) 23:11:35むむむずかしいが少し分かった気がする!ありがとうございます。
クロージャって言語仕様で作られるような複雑なものだと思ってたけど
実際は関数の定義の仕方ってことですね。
0901デフォルトの名無しさん
2009/02/25(水) 23:21:470902デフォルトの名無しさん
2009/02/26(木) 08:48:15名前つけてみました関数」だよな>クロージャ
0903デフォルトの名無しさん
2009/02/26(木) 09:40:47不吉な名だな
0904デフォルトの名無しさん
2009/02/26(木) 09:48:340905デフォルトの名無しさん
2009/02/26(木) 12:12:330906デフォルトの名無しさん
2009/02/26(木) 14:36:27データをもった手続き → クロージャ
この辺とか参考になるのでは↓
関数、オブジェクト、クロージャ
http://d.hatena.ne.jp/brazil/20060131/1138692196
後、高階関数でググれ
そして、最後に SICP を読んでインタプリタを自作すれば完璧w
0907デフォルトの名無しさん
2009/02/26(木) 16:27:280908デフォルトの名無しさん
2009/02/26(木) 17:56:19クロージャの特徴は、「その関数が生まれた環境」をその関数が保持していて、
1行目で言っている「子環境」を、実行時にその下に作ることにある。
>>897の例でいうと、関数counterは親玉の環境env0で作られている(env0を保持している)。
これが実行されると、まずenv0の下に新たな環境env1を作る。変数cはenv1に作られる。
次に無名関数が作られ返されるわけだけど、この無名関数(以下クロージャ)は、
counterがenv0を保持しているのと同様に、自分の生まれ故郷であるenv1を保持している。
counterを出ると、環境は再びenv0に戻る。
c1は、counterが返したクロージャ。
c1.callでそのクロージャが実行されるのだけど、2〜3行目に書いた通り、
クロージャは「自分が保持している環境の下に新たな環境を作る」ので、
つまりこのクロージャは、env1の下に子環境env2を作り、そこで処理(変数cのインクリメント)を
行うことになる。
env2における変数cというのは、親環境env1のcのことで、つまりc1.callが実行されるたびに
これがインクリメントされることになる。
c2もcounterが返したクロージャだけど、ポイントは「子環境は関数実行時に作られる」ということ。
つまり、c1の時にcounterが作った子環境と、ここで作られる子環境は別のもの。
従って、c2に代入されたクロージャが保持している「自身の生まれ故郷」はenv1ではなく、
env0の下に新たに作られたenv3。人間でいえばenv1の弟か妹にあたるが、要するに「別物」。
従ってc2.callが実行されると、「env3の子環境env4」上で「env3の変数c」がインクリメントされる。
0909デフォルトの名無しさん
2009/02/26(木) 18:15:57要するに、こうやってだらだら解説しないと伝わらないような、
しょうもないもの。
無くても全然問題ないです。
0910デフォルトの名無しさん
2009/02/26(木) 18:27:10やっと理解できた。。すばらしい解説をありがとう
環境という概念がネックなのかな、目に見えないしね。
0911デフォルトの名無しさん
2009/02/26(木) 18:29:06>>896が一番妥当な説明だ
0912デフォルトの名無しさん
2009/02/26(木) 18:37:58Procオブジェクトの説明をすれば「そういうもん」で済むんだが
0913デフォルトの名無しさん
2009/02/26(木) 18:43:39まず世の中には原理があって、そこから現象が導き出されていると考えるのが科学者の思考
0914デフォルトの名無しさん
2009/02/26(木) 18:46:030915デフォルトの名無しさん
2009/02/26(木) 18:50:230916デフォルトの名無しさん
2009/02/26(木) 18:52:140917デフォルトの名無しさん
2009/02/26(木) 18:56:24公理というか実験結果だろ?実験否定したら科学にならんだろ。
0918デフォルトの名無しさん
2009/02/26(木) 18:57:320919デフォルトの名無しさん
2009/02/26(木) 18:58:130920デフォルトの名無しさん
2009/02/26(木) 19:01:53Proc.newしたとこの変数とかがcallしたときにも使える、持ち運び可能なインスタンスメソッドっぽい便利な子
0921デフォルトの名無しさん
2009/02/26(木) 19:04:19タダで高品位な情報を得ようとするのは乞食のはじまり。
Rubyの公式ドキュメントはピッケル本な。飯抜いて買え。
0922デフォルトの名無しさん
2009/02/26(木) 19:16:31いくつかの言語で、同じ仕様のプログラムを書いてみれば書く言語の得手不得手がわかるよ。
クロージャについては「上位メソッドまたはトップレベルの変数値を取り込んだ関数を返す」
時に重宝してる。
0923説明が面倒になった人
2009/02/26(木) 19:29:28とりあえず、いったん scheme 処理系で遊んでみよう
0924デフォルトの名無しさん
2009/02/26(木) 19:31:50関数言語って用語がたまに出てきてずっと気になってるんだけど
0925デフォルトの名無しさん
2009/02/26(木) 19:41:46非常に役に立ちます
最終的には(最終って何よって話ではあるが)嗜まなければならない言語体系
あと関数型言語とLispはそれほど関係ない
普通に過ごすぶんにはあんまし必要ないけどな
C言語の知識が結局は必須というのにかなり近いレベルでの話だ
知ってるのと知らないのとではかなり考え方に違いが出る
ただ、まあ、別に無理してまでどうにかしようとしなくてもいい
暇と余裕があれば、という
0926デフォルトの名無しさん
2009/02/26(木) 19:46:40アセンブラ→C→OSの勉強
この3つは必須
0927デフォルトの名無しさん
2009/02/26(木) 19:51:00gasなのかnasmなのか?
でアセンブリはどの石のだよ x86? sparc? mips?
つうか、アセンブリに詳しい化石グラマーほどウェブ2.0時代に対応できずに
糞みたいなコード書くから信用できない
0928デフォルトの名無しさん
2009/02/26(木) 19:51:55Javaと
Schemeと
Haskellと
Ruby
いやまあそこまで凝らなくてもいいという説もあるが
0929デフォルトの名無しさん
2009/02/26(木) 19:52:290930デフォルトの名無しさん
2009/02/26(木) 19:56:28そういうのは大学行かないとスキルアップできませんか?
ちなみに僕のお父さんは独学だそうです。
将来はハッカーになろうと考えています ><
0931デフォルトの名無しさん
2009/02/26(木) 19:59:51趣味のプログラミングやパソコンいじりやネット遊びがいちばん伸びるのが
大学生期間であることは今も昔も変わらない
社会人になってからプログラミングやネットワークに(仕事として)触れた人は、ある意味可哀想
0932デフォルトの名無しさん
2009/02/26(木) 20:05:450933デフォルトの名無しさん
2009/02/26(木) 20:14:54中学生なら高校と大学行くことを第一にしろ
意味がわからなくてもいいから、そのラインだけは外すな
時々パソコンで若年人生を持ち崩してしまう人がいるが、それだけは避けとけ
0934デフォルトの名無しさん
2009/02/26(木) 20:17:10転職してPG素人から勉強始めた人でもすごく優秀な人はいる
0935デフォルトの名無しさん
2009/02/26(木) 20:20:280936デフォルトの名無しさん
2009/02/26(木) 20:23:03CとJavaとPHPやっとけ
0937デフォルトの名無しさん
2009/02/26(木) 20:24:02他の職についた友達と話したりすると毎日深夜まで勉強する俺の生活は皆理解できないと言うし。
0938デフォルトの名無しさん
2009/02/26(木) 20:25:42Rubyは良くも悪くも学生にいちばんマッチする言語だと思うよ
仕事のこと考えるならそれこそ時間の無駄だからJavaだけやっとけ
0939デフォルトの名無しさん
2009/02/26(木) 20:30:56たまーにあっても妙に器用でハイレベルな人が刺さってくるし
サラリーマンや請負のいわゆる「かいしゃではたらくぷろぐらまー」を目指すならRubyに傾倒するのはちとまずい
0940デフォルトの名無しさん
2009/02/26(木) 20:35:060941デフォルトの名無しさん
2009/02/26(木) 20:41:210942デフォルトの名無しさん
2009/02/26(木) 20:42:33Rubyだけはマニュアル見ないで使えるほど覚えられたんだよね
(ANSI CもJavaもVJ++もPHP3/4/5もPerl4/5もDelphiもHSPもECMAScriptもJavaScriptもTcl/Tkもダメだった)
自分でも不思議
0943デフォルトの名無しさん
2009/02/26(木) 20:44:59Ruby使える人は他の言語の習得が早い傾向にあるそうだよ(だから初学者向け)
リベンジしてみるといいかもしれない
ただしJ++は糞だったから忘れていい
0944デフォルトの名無しさん
2009/02/26(木) 20:52:120945デフォルトの名無しさん
2009/02/26(木) 20:53:31まあ Web に業務で関わりたいならたとえ薄くでも広く学ぶしかないってことだね
0946デフォルトの名無しさん
2009/02/26(木) 20:56:57なくていいんだよ
JavaとPHPの仕事は「技術がいらない」のがメリットなんだからさ
これは別に馬鹿にしているわけではない
たとえば事務仕事の多くは特殊な技術はいらない
工場の、直接職人寄りなことをしてない分野は技術がいらない部類だろう
それ自体は問題ないし、むしろ「誰でも慣れれば働ける」のは好ましいことだ
プログラミングの分野でもJavaやPHPならそういう仕事が一定数存在できるということ
0947デフォルトの名無しさん
2009/02/26(木) 20:59:29もうちょっと根性ある人はRubyとサーバで起業するが、人生として安定性にかなり欠けるのが難
0948デフォルトの名無しさん
2009/02/26(木) 21:13:030949デフォルトの名無しさん
2009/02/26(木) 21:15:44自社開発や研究に打ち込んでる技術指向の人たちよりは大抵多くもらえる。
だけど仲のいい仲間と企業して苦労してる奴らを見てると少し羨ましい
0950デフォルトの名無しさん
2009/02/26(木) 21:22:03そういう話はしてない
中小企業でも役職つけば給料高くね? というのと全く変わらん
0951デフォルトの名無しさん
2009/02/26(木) 21:39:42DBも色々(RDB、オンメモリ、オブジェクト、クラウド等)あるけど
趣味でやるんだったらオンメモリが無料でとっつき易い。
0952デフォルトの名無しさん
2009/02/26(木) 21:44:02スクリプト開始時にファイルから読み込んでスクリプト終了時にファイルへ書き戻すという用途ならHashとPStoreで充分だったりする
0953デフォルトの名無しさん
2009/02/26(木) 22:51:430954デフォルトの名無しさん
2009/02/26(木) 22:56:590955デフォルトの名無しさん
2009/02/26(木) 23:48:53ありがとう。
じゃあ、引数と返却値とか明示する時は、
# mage no method
# [arg] arg desu...
# [return] unko ga kaeri masu
def mage(arg)
:
みたいに用語の定義みたいに書いても差し支えないんだね
>>943
> ただしJ++は糞だったから忘れていい
おおっと、ヘジルスバーグを馬鹿にするのはそれまでだ
0956デフォルトの名無しさん
2009/02/27(金) 00:02:25ttp://arton.no-ip.info/collabo/backyard/?RDoc%A4%CE%A5%C6%A5%F3%A5%D7%A5%EC%A1%BC%A5%C8
コメントはこれでいいとしても、
RDocそのものに指針がないもんだから、メソッドやクラスのメタデータに関しては他のツールが勝手に決めてたりする
YARD
ttp://yard.rubyforge.org/
Merb
ttp://yehudakatz.com/2008/01/14/merbnext/
このへんに乗っかるといいぞ
だいぶ前にこのへんのマニュアル記述法に関する議論がスレでもあったんだが、これらに辿り着いた人は結局いなかった
0957デフォルトの名無しさん
2009/02/27(金) 00:03:280958デフォルトの名無しさん
2009/02/27(金) 00:03:550959デフォルトの名無しさん
2009/02/27(金) 08:59:47うおーなんか明らかに文章としてなんか違うぞ
ネイティブっぽくない文だから割り引いて読めばわかってもらえるよねとかいうレベルではない
of が5個くらいくっついてるのはやっぱどうかと思うぞ俺
0960デフォルトの名無しさん
2009/02/27(金) 09:56:10外人の話す多少変な日本語だって、日本人なら聞き取れるのと同じように
それに同じRuby使いなら、コードは通じるはずだ
・・・・・しかしofが5コは不味いんでないか
0961デフォルトの名無しさん
2009/02/27(金) 10:55:28文章の
”の”の数の
多さの
分かりにくさの
度合いは大したことがない。
よし通じるじゃないか。
マジレスすると、日本語の”の”を全部ofと訳しちゃダメ。状況によってwithとか
forに変える必要がある。
0962デフォルトの名無しさん
2009/02/27(金) 12:34:12自分が書いた英文を、英->日翻訳すると結構おもしろい。
0963デフォルトの名無しさん
2009/02/27(金) 12:36:590964デフォルトの名無しさん
2009/02/27(金) 12:38:47ありがとう。
YARDってJavaDoc風のドキュメント生成ソフトなのかな?
とりあえず、Merb(webフレームワークだっけ?)に習ってみようかな
0965デフォルトの名無しさん
2009/02/27(金) 16:42:460966デフォルトの名無しさん
2009/02/27(金) 17:35:58EclipseのRadRailsでスクリプトを記述してみているのですが、
以下のようなスクリプトに対して、
class UnkoMan
attr_accessor :unko
def change_unko
unko = 1234 * 456
: # unkoに対する処理
@unko = unko
end
end
エディタ上で以下のような、警告がリアルタイムに出現するのですが、
> Local variable assignment might be possible attribute access attempt?
(オプションのエラー/警告では、「属性にアクセスすることを意図したローカル変数の割り当て」とあった気がします)
0967デフォルトの名無しさん
2009/02/27(金) 17:39:290968デフォルトの名無しさん
2009/02/27(金) 17:42:46ちなみにその処理は
attr_reader :unko
def unko=(arg)
_unko = #arg で色々
@unko=_unko
end
とか unko= 内部に処理を閉じ込めるように書くのが普通な気がするぞ
0969デフォルトの名無しさん
2009/02/27(金) 18:25:02いや、>>966のエラーを出さないようにする作法がないかなーと。
>>968
なるほど、属性とかぶる可能性がある名前はローカルにつけない、ということでよいのかな?
_unkoというように
0970デフォルトの名無しさん
2009/02/27(金) 18:34:47あーまあスクリプト的には
「インスタンスメソッド名と同じ名前のローカル変数は素人さんには紛らわしいので使わないようにする」
ということを守れば警告は消えると思う
メソッド定義内で unko = と一度書いた時点で、
そのメソッド定義内での unko はアクセサメソッドの返り値ではなくローカル変数の値を返すようになる
「アクセサメソッドの返り値を使おうとしたがローカル変数の値が返ってきてなんじゃこりゃ」
ということを防ぎたい警告なんだろうと思う
別にメソッド定義内でなくてもスコープの関係で変数横取りは起こるが省略
0971デフォルトの名無しさん
2009/02/27(金) 18:46:10なんか何度読み直しても分かりにくい警告文だな(和訳も含めて)
俺が日本人だからだろうか
0972デフォルトの名無しさん
2009/02/27(金) 18:49:52Ruby 初心者スレッド Part 26
http://pc11.2ch.net/test/read.cgi/tech/1235727504/
0973デフォルトの名無しさん
2009/02/27(金) 18:52:20>>970
> 「アクセサメソッドの返り値を使おうとしたがローカル変数の値が返ってきてなんじゃこりゃ」
なるほど!まさにそれだと思います。
ピンときました。
0974デフォルトの名無しさん
2009/02/27(金) 18:56:59まだちょっと早い気もするが、乙
0975デフォルトの名無しさん
2009/02/27(金) 19:00:151日で50レス消費しておいて何を言う
0976デフォルトの名無しさん
2009/02/27(金) 20:14:22オフィス文書の操作を自動化したいんですけど。
0977デフォルトの名無しさん
2009/02/27(金) 20:23:05可能であれば、素直に VBA を使うことをお勧めする
VBAであれば何の制限もなく高速確実に Office 製品やそのファイルを制御できる
0978デフォルトの名無しさん
2009/02/27(金) 20:33:19と思ってXML保存のWord文書をテキストファイルで開いたが、
ちょっとしか書いてないのにすげータグの量だったからやめた方がいいと思う。
0979デフォルトの名無しさん
2009/02/27(金) 21:09:41というRubyの文字列があるんですけど、これがUNICODEのどの文字か分からず困ってます。
上の文字列がUNICODEのどの文字に対応するのかを調べるよい方法があれば教えてください。
0980デフォルトの名無しさん
2009/02/27(金) 21:10:45まずエンコーディングを調べて、対応する文字を決定して、その文字をUnicodeの表から探す。
0981デフォルトの名無しさん
2009/02/27(金) 21:19:01ありがとうございます。
エンコーディングはUTF8らしいです。unicodeコンソーシアムのページに行きましたが、一覧表はなさそうです。
0982デフォルトの名無しさん
2009/02/27(金) 21:21:000983デフォルトの名無しさん
2009/02/27(金) 21:22:51ありがとうございます。仕事速いですね。
今気づいたのですが、これはwindowsだと表示されるのでしょか。
Macだと文字化けしています。
あと、これをどうやって調べたのかも簡単でいいので教えてください。
お手数をかけますがお願いします!
0984デフォルトの名無しさん
2009/02/27(金) 21:40:54invalidって言われるから違うような気もするぞ
>>983
"\355\257\200\355\262\203".unpack('U*')
irb> str = "Ruby1.9はうんこ"
"Ruby1.9\343\201\257\343\201\206\343\202\223\343\201\223"
irb> a = s.unpack('U*')
[82, 117, 98, 121, 49, 46, 57, 12399, 12358, 12435, 12371]
irb> puts a.pack('U*')
Ruby1.9はうんこ
0985デフォルトの名無しさん
2009/02/27(金) 22:13:24これ可愛い
0986デフォルトの名無しさん
2009/02/27(金) 22:26:130987デフォルトの名無しさん
2009/02/28(土) 02:17:12Ruby 1.9.1 の irb で
"\355\257\200\355\262\203".force_encoding("utf-8").valid_encoding?
=> false
ってことは utf-8 では無いのでは?
ちなみにコード表はIMEのツールにたいてい付いてるはず
0988デフォルトの名無しさん
2009/02/28(土) 03:20:38自動でインデントしてくれません。
C-M-\ とコマンドするとインデントちゃんとしてくれるのですが。
自動インデントの機能は無いのでしょうか?
ruby-1.8.7のソースにくっついてきたelispパッケージを入れてます。
0989デフォルトの名無しさん
2009/02/28(土) 06:45:440990デフォルトの名無しさん
2009/02/28(土) 07:00:17一般論としては、どの mode でも C-j あたりでスマートインデントつき改行が実行される
Enter キーにスマートインデントを設定すると意外とウザいことが知られてるので普通は敢えて設定はされてない
Enter キー押したあとに Tab キー(>>989的にはたぶん C-i)を押せば用は足りるからな
それでも Enter キーで自動インデントして欲しいという人は emacs.el (旧称 .emacs) に書け
(add-hook 'ruby-mode-hook
'(lambda ()
(inf-ruby-keys)
(define-key ruby-mode-map "\C-m" 'ruby-reindent-then-newline-and-indent)
(define-key ruby-mode-map "\C-j" 'newline)))
inf-ruby-keys でエラーが出る環境の人は行ごと消してよし
0991デフォルトの名無しさん
2009/02/28(土) 08:14:18http://www.rubular.com/
Rubyの正規表現をリアルタイムにチェックできるソフト
0992デフォルトの名無しさん
2009/02/28(土) 08:15:190993デフォルトの名無しさん
2009/02/28(土) 09:12:19というか irb があるだろう
0994デフォルトの名無しさん
2009/02/28(土) 10:09:430995デフォルトの名無しさん
2009/02/28(土) 10:11:39>>991と関係あるかわからんが、ついでに聞く。
Ruby win32だとirbがUTF-8対応ターミナルから使えないのだが、
UTF-8の文字コード関係のテストしたいとき、どうすりゃいいんだ?
コマンドプロンプトはSJISになってしまうみたいだし
0996デフォルトの名無しさん
2009/02/28(土) 10:12:200997デフォルトの名無しさん
2009/02/28(土) 10:32:05irb> str = "Ruby1.9はうんこ"
=> "Ruby1.9\202\315\202\244\202\361\202\261"
irb> str = str.toutf8
=> "Ruby1.9\343\201\257\343\201\206\343\202\223\343\201\223"
irb> /うんこ/ =~ str
=> nil
irb> /うんこ/s =~ str
=> nil
irb> /#{"うんこ".toutf8}/u =~ str
=> 10
こういうことではなくて?
0998デフォルトの名無しさん
2009/02/28(土) 14:21:230999デフォルトの名無しさん
2009/02/28(土) 14:51:431000デフォルトの名無しさん
2009/02/28(土) 14:58:5110011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。