Ruby 初心者スレッド Part 41
■ このスレッドは過去ログ倉庫に格納されています
0001京 ◆SsSSsSsSSs
2011/02/10(木) 13:47:51★注意★ Ruby 1.9.2 は初心者には若干時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
文字エンコーディング等の外部基礎知識が必要な上、不完全対応の第三者ライブラリでの問題の切り分けが手間です。
迷う点の少ない1.8.7に習熟→おもむろに1.9.2の変更点のみ重点学習、とすればスムーズに移行できるでしょう。
関連スレや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を読め」でいいので、叩かない&怖がらせない。
・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0276デフォルトの名無しさん
2011/03/06(日) 01:10:52.82自分ならこう書くかな。(冗長ではあるけど、可読性を優先して)
def mysort(z, x)
z = z.ord - 1
x.sort_by { |x|
x = x.ord
if x - z > 0
x - z + 26
else
x
end
}
end
p mysort('C','ABCD'.split(//)).join
ポイントは「Rubyの条件分岐が(文ではなくて)式である」こと。
以前は K&R C風の条件演算子(? .. : ..)を使っていたけど、
判定条件が複雑になってくると読み辛くなってきたので、
すべてif/case式を使うようになった。
0277デフォルトの名無しさん
2011/03/06(日) 01:18:36.67馬鹿が増えたぞw
0278デフォルトの名無しさん
2011/03/06(日) 01:21:33.24質問をするためにわざわざ本質部分を抜き出した結果の表記である可能性が極めて高い
なのになんでアスキーコードとか使う気になるの本当に本気で馬鹿なのと思う
0279デフォルトの名無しさん
2011/03/06(日) 01:40:43.48たぶんどっちも退かない(w
今回はコレクションのまま操作するのが正解だけれど
0280デフォルトの名無しさん
2011/03/06(日) 01:53:26.25ソートするんら、ってんでああなるんだろうな。
0281デフォルトの名無しさん
2011/03/06(日) 03:34:42.960282デフォルトの名無しさん
2011/03/06(日) 06:41:57.96を満たすだけのメソッドを定義する
っていうネタをやってるんだろうに
無粋な人たちですな
完全な仕様が提示されてないんだから
間違いとは言い切れないでしょうよ
0283デフォルトの名無しさん
2011/03/06(日) 06:55:02.44少なくとも初心者スレには不要
0284デフォルトの名無しさん
2011/03/06(日) 06:59:19.90実は技術的に興味深い話だったりすることもあるし
(Rubyは文字列同士の比較ができるのでASCIIコードに変換するのは
ネタとしても微妙な気はするけど)
自分もこれを他山の石としたいと以下略
0285デフォルトの名無しさん
2011/03/06(日) 09:43:00.85「初心者の質問にオタクのニヤニヤした仄めかしは不要」
C言語の相談室みたいなの覗いてた人なら痛いほどわかるはずだw
あれもチシキノスイを集めた無意味なコード書く人がとれとれぴちぴちカニ料理
0286デフォルトの名無しさん
2011/03/06(日) 09:50:42.16まあ、参考にすべきでないという突っ込みくらいはその都度適宜入るだろうしなんとかなると思う
次の質問の方どうぞ
0287デフォルトの名無しさん
2011/03/06(日) 13:26:03.070288デフォルトの名無しさん
2011/03/06(日) 13:41:05.47rubyの初心者かな?プログラミング自体初心者かな?
0289デフォルトの名無しさん
2011/03/06(日) 13:46:29.03わからないのはどんな場面?インストール?
環境は?win、mac、linux とバージョンも教えて
0290デフォルトの名無しさん
2011/03/06(日) 14:02:15.47Windowsなんですが種類がいっぱいどれをインストールしたらいいのか分かりません
これはこうって書かれている説明も読みましたが自分の用途に向いているものなのか分からず選択できません
主にWebページ用に利用する場合は何をインストールしたら良いでしょうか?
0291デフォルトの名無しさん
2011/03/06(日) 14:21:51.49> Ruby on Rails の質問は Webプログラミング板の Rails スレへ。
ということでこっち
【RoR】Ruby on Rails Part11
http://hibari.2ch.net/test/read.cgi/php/1292032736/
0292デフォルトの名無しさん
2011/03/06(日) 14:25:44.280293デフォルトの名無しさん
2011/03/06(日) 14:26:58.530294デフォルトの名無しさん
2011/03/06(日) 14:32:50.45自分は330つこーとった・・・バージョンアップしよっとw
0295デフォルトの名無しさん
2011/03/06(日) 14:38:51.91専門性の高いスレのほうがよかんべ
少なくともこのスレはRailsに対するFAQを持ちあわせてない
0296デフォルトの名無しさん
2011/03/06(日) 14:46:22.150297デフォルトの名無しさん
2011/03/06(日) 15:01:56.490298デフォルトの名無しさん
2011/03/06(日) 15:05:29.340299デフォルトの名無しさん
2011/03/06(日) 15:19:12.02最近それが静岡弁だということを知った
0300デフォルトの名無しさん
2011/03/06(日) 15:25:21.99遠州(西部)は三河の影響で「ずら」を使い、
伊豆(東部)は関東系に近かったりする
0301デフォルトの名無しさん
2011/03/06(日) 15:34:28.86田舎はいいね。羨ましいよ。
0302デフォルトの名無しさん
2011/03/06(日) 15:38:04.520303デフォルトの名無しさん
2011/03/06(日) 15:42:25.16県庁に常駐するSEさん達の方言はすごかったなw
0304デフォルトの名無しさん
2011/03/06(日) 15:44:40.86休日の池袋と渋谷にいる人間の5割は埼玉人です。
神奈川に劣等感を持っており、千葉を見下すのが埼玉人。
0305デフォルトの名無しさん
2011/03/06(日) 16:15:26.43pythonも2.7と3.2ありますけど3.2でググリながらやって覚えてます
ライブラリを使ったりするまで時間も掛かりますので標準のもので何か作れればいいのでrubyを覚えられる頃ぐらいに1.9のライブラリとか出てくればいいかななんて思っていたりしてるのですが
1.8っていうのはメンテナンスだけされるってだけですよね?
0306デフォルトの名無しさん
2011/03/06(日) 16:18:07.850307デフォルトの名無しさん
2011/03/06(日) 16:37:14.75>>1-5 あたりとりあえず最初に嫁
0308デフォルトの名無しさん
2011/03/06(日) 16:42:53.63/ \ やる夫に対してうしろめたさを感じるような
/ \
/ ――― ――― \ 人生歩んで欲しくないお
/ _ _ \
/ /´ ,..::::::::::.ヽ ヽ /´ ,..:::::::::::.ヽ ヽ \ 全うな人生をみんなに歩んで欲しいんだお
/ ,' ,;::::::::::::::::::', ', ,' ,;:::::::::::::::::::', ', \
/ { {:::::::::::::::::::::} } { {::::::::::::::::::::::} } \ 過去の行いを悔いながら
/ '、 ヽ::::::::::::::/ / '、 ヽ::::::::::::::/ / \
| (;;;;;;;;;;)) ̄ / | \  ̄ | 過ごす人生なんて楽しくねーお
| /' / ∧ ', |
| {{ { / ヽ } | 今ならまだ許せるお
| ヽ ヽ___/ __ \___ノ |
\ 人 ヽ ´ ` ' / 次回期日が刻一刻と迫ってるお。
\ ( し.) /
\ `¨ / 助けて欲しいんだお。
/ \
/ \ お願いなんだお。
0309デフォルトの名無しさん
2011/03/06(日) 16:43:56.63とりあえず標準のライブラリがあればよくて自分で情報を集める能力がある
→ 1.9系列で鉄板
ってテンプレに入れろということか
0310デフォルトの名無しさん
2011/03/06(日) 16:56:11.74提示されたサンプルやぐぐって見つけたコードが1.9では(一見動作してるようで実は)動かない理由を判別するのが手間だ
完全に1.9だけしかない世界で1.9だけ学んで1.9だけ使うなら1.9.2から始めるのがおすすめだが、
そんな世界は残念ながらまだない
外部の変なファイル、外部の変な文字エンコーディング、1.9を意識しないコードやサンプル、
そういったものと学習と並行して戦わないといけないのでしんどいぞ
たとえば>>246は1.9では動作しない
$ ruby ./hello.rb
/home/ch2/hello.rb:9: invalid multibyte char (US-ASCII)
/home/ch2/hello.rb:9: invalid multibyte char (US-ASCII)
UTF-8 でファイルを作成したとして、hello.rb の先頭に # coding: utf-8 という行を追加する
$ ruby ./hello.rb
デフォルトの名無しさんこんにちは!
http://www.ruby-lang.org/en/ のタイトルは ["Ruby Programming Language"] です!
サンプルの表示となぜか違う
これは Array#inspect の返り値が 1.9 で変更になったことの影響による
title = html.scan(/<title>(.+?)</)[0] を title = html.scan(/<title>(.+?)</).flatten[0] に変更
$ ruby ./hello.rb
デフォルトの名無しさんこんにちは!
http://www.ruby-lang.org/en/ のタイトルは Ruby Programming Language です!
これでやっと「ネットで見つけたサンプルが自分の Ruby で動く」ことになる
この知識を 1.9 で Ruby を最初に学ぶ前提に置くのはやっぱなんか違うだろ
0311デフォルトの名無しさん
2011/03/06(日) 17:00:09.43Pythonっ子にはどうってことないよ
0312デフォルトの名無しさん
2011/03/06(日) 17:00:45.09× これは Array#inspect の返り値が 1.9 で変更になったことの影響による
○ これは Array#to_s の返り値が 1.9 で変更になったことの影響による
じゃあ>>246を
# coding: utf-8
require 'yaml'
require 'open-uri'
のように親切に書いて投稿するようにすればいいのかっていうとね、
「コピペしてファイルに保存」した結果のファイルが UTF-8 だとは限らなくてね、
0313デフォルトの名無しさん
2011/03/06(日) 17:25:34.170314デフォルトの名無しさん
2011/03/06(日) 21:15:49.56ずっと昔からしかも何度も何度も結論出てるだろ。蒸し返すな。
0315デフォルトの名無しさん
2011/03/06(日) 21:21:42.060316デフォルトの名無しさん
2011/03/06(日) 21:24:04.12地道な営業活動はいつか実を結びます
0317デフォルトの名無しさん
2011/03/06(日) 21:26:42.640318デフォルトの名無しさん
2011/03/06(日) 21:36:09.09すまんかった。ガチみたいだ
0319デフォルトの名無しさん
2011/03/06(日) 21:38:16.80>>316-317
1.9.xを使うなと言ってる人は別にいないんだよな
なんかアレルギー持ちがいるっぽいんだが
ここが初心者スレだということを忘れてる人がいるらしい
>>310の問題はわりと根深い
「俺も苦労したんだからお前も苦労しろこれが唯一の道だ」的なスタンスはあんまり好きではない
1.8.7を学んでから1.9.xを学ぶという、おそらく現状躓き最小であろう道の何がまずいというのかさっぱりだ
0320デフォルトの名無しさん
2011/03/06(日) 21:41:43.890321デフォルトの名無しさん
2011/03/06(日) 21:53:05.09そーゆー意味で、経験を元にして正しく初心者にアドバイスできる人は一人もいないハズw
1.8 をベースにしてる時点で、1.9 差分取得の容易さはどーにもならない
たのしい Ruby ですら、いまだに 1.8 ベースでの差分学習になってる
どっかに「1.9 から始めたけどそれから追加で 1.8 学んでも余裕でした」みたいなニューエイジがいないもんか
あるいは完全 1.9 ベースで進めて、1.8 情報は
「ちなみに過去の 1.8 ではエンコーディング指定を書かないので大混乱でしたwwwww」
みたいなコラムに追い出す参考書とか
次の版の本ではそうなったりしないかな
0322デフォルトの名無しさん
2011/03/06(日) 21:57:32.13そんなにも初心者向けならみんな即っと習得して即っと書き換えて即っと移行してると思うの
0323デフォルトの名無しさん
2011/03/06(日) 22:05:16.00差分学習が容易ってほんと?たとえば?
0324デフォルトの名無しさん
2011/03/06(日) 22:09:07.78一応、普段使いは1.9.2なんだけどね
1.8.7がある以上、初心者にいきなり1.9.2勧める気はしないわ
Rubyのこともプログラミングのことも嫌いになってほしくないもん
0325デフォルトの名無しさん
2011/03/06(日) 22:14:51.801.8のことで困った、技術のある人たちが作ったのだということはよくわかるけれど、それってとても……
0326デフォルトの名無しさん
2011/03/06(日) 22:21:11.140327デフォルトの名無しさん
2011/03/06(日) 22:24:42.13unicodeファイル名扱えるしね
0328デフォルトの名無しさん
2011/03/06(日) 22:31:13.750329初心者
2011/03/06(日) 23:03:17.850330デフォルトの名無しさん
2011/03/06(日) 23:16:09.830331デフォルトの名無しさん
2011/03/06(日) 23:25:16.51Railsもすでに対応しているし、まだ1.9に未対応な、メジャーどころのアプリやライブラリって何かある?
0332デフォルトの名無しさん
2011/03/06(日) 23:30:50.24初心者では難しいですか?
C#でMessageBoxなら出せるスキルはあります
0333デフォルトの名無しさん
2011/03/06(日) 23:37:06.82Ruby本体の習得煩雑度の問題な気がする
ぐぐっても1.8ベースの情報が多くて、1.9にコンバートするのには1.8経験がないと困るというのは
まあ実際問題としてよくあることで、初心者の壁になると言われれば、まあ、そうかなという…
0334デフォルトの名無しさん
2011/03/06(日) 23:40:17.331.8と1.9の最新安定版なら、頑張ってくれてる人がかなり早いタイミングでWindowsバイナリを提供してくれる
ので、おおむね自力コンパイルの必要はない
0335デフォルトの名無しさん
2011/03/06(日) 23:40:48.770336290
2011/03/06(日) 23:42:18.440337デフォルトの名無しさん
2011/03/07(月) 02:26:47.46http://www.kkaneko.com/rinkou/ruby/rubyinstalllinux.html
Ruby Facetsってメジャーっぽい扱いなんですが、
みんなさん使っていますか?
0338デフォルトの名無しさん
2011/03/07(月) 08:14:33.82やっべ初めて聞いたw
基本他力本願なんで、人の作ったプラグインやライブラリを入れて
やってます。
0339デフォルトの名無しさん
2011/03/07(月) 08:30:58.27Facetsなんて使わなくていいよ
はしかみたいなライブラリだ
ActiveSupportだけrequireするような滑稽さを感じる
0340デフォルトの名無しさん
2011/03/07(月) 10:13:20.55コードページ65001にするとバッチファイルが動かなくなるからじゃないかな。
Windows 7で直っていると思った。
0341デフォルトの名無しさん
2011/03/07(月) 11:23:05.25公式サイトには古いのしかありませんでした
どこでダウンロードできますか?
0342デフォルトの名無しさん
2011/03/07(月) 12:14:08.20( ) )
(_ヽ_ハ从人_ノ_ノ できることが限られてるんだよね。私はね
| || | |
ノ L,l ,|| |、l、 正義が負けるのか?それが正しいわけないだろ?
⌒:::\:::::/::\
/ <●>::::<●>\ 裁判は証拠主義、証拠主義。そりゃもっともだ、だが
/ (__人__) \
| |::::::| | 俺が正しいってこと分かってんだろーがっ!
\ l;;;;;;l /l!|
/ `ー' \ |i かーっ、腹立つなー!
/ ヽ !l ヽi
( 丶- 、 しE | ドンッ!
`ー、_ノ 煤@l、E ノ >
レY^V^ヽ
/.: ̄ ̄ ̄ ̄ ̄ \ 黙ってるだけ、確かに黙ってるだけだよね
/: : : \ でもさあ、お前らが黙ることで苦しむ人間がいるんだよ
/: : : : \ ねえ、聞いてる?良心が痛まない?
/: : : : : : \ あなた方は真実を知ってるよね?
/ : : : : : : : ___ノ'′ ゙ヽ、___ \ お願いだから、真実を伝えるメールを下さい
l : : : : : :.; '⌒` ´⌒ヽ l 嘘を言って欲しい訳じゃない、真実を知りたいんです
| : : .::;;(。o〇 ) ( 〇o。);;:: | どうしても、どうしても真実と思えないんだ
l : : : :°o゚゚~'"´ `"~゜o゚;° l 準備書面が事実ならば、伝え忘れるわけがないんだよ
\ : : : : : : 。;゚( j ) ; 。+/ 誰が発案者かは間違いなく主張してくる事実なんだ
\: : : : : : ::`┬‐'´`ー┬′ + / そこを主張しなかった理由を知りたい
/ヽ: : : : : : : |/⌒⌒、| イ\ 見当はついている
: : : : : : :゚: : : ゚´ ̄~:j ̄` ; \ そこを証拠で立証したいだけなんだ
: : : : . : : . : : ; '"`` + \
0343デフォルトの名無しさん
2011/03/07(月) 12:20:58.39MinGWをインストールして自力でコンパイルするしかないわ
0344デフォルトの名無しさん
2011/03/07(月) 12:30:41.67他の事実から立証していけばいいんだけど、
楽して裁判に勝ちたいから協力してって言ってるだけだけどね。
0345デフォルトの名無しさん
2011/03/07(月) 12:48:22.34ttp://rubyinstaller.org/downloads/
MinGW の Ruby になるので、思いっきり古い gem ライブラリをインストールするときにエラーが出ることがある
そのときは gem install hogehoge ではなく gem install --platform mswin32 hogehoge とオプションつきにするといい
0346デフォルトの名無しさん
2011/03/07(月) 18:31:05.200347デフォルトの名無しさん
2011/03/07(月) 18:43:49.72おお、ほんとに動かねえ
サンクス
0348デフォルトの名無しさん
2011/03/07(月) 18:46:55.69そこまで大多数にエッジ追いかけてもらって意味のある大人気のソフトウェアじゃないしなあ
クライアントプログラムなら開発版バイナリ公開するのにも意義があるけど、スクリプト言語ではな…
ちなみに、ある程度のマシンスペックがあればRubyのコンパイルは現実的な時間で終わる
ナイトリーはアレだが、週1で更新して遊んで試すということは可能
バイナリ公開されてないだけで、自分用のを適宜開発最新版にしてる人はいるはず
「誰も日本語をpで表示して使ってなかったZEやっちゃったZE!」というエンバグの過去があるので、
ある程度知識のある人が開発版コンパイルして日常使用してもらうのは実はありがたい
ただ、初心者スレ向きの話じゃないなw
0349デフォルトの名無しさん
2011/03/07(月) 19:10:16.58人手が足りてないとか何とか
(まあ人手が足りてるオープンソースなんてあるのか知らんが)
0350デフォルトの名無しさん
2011/03/07(月) 19:24:21.82自力でビルドできる、とかは当然含まれてるので、ナイトリービルドのバイナリとか
あまり意味がない。
0351デフォルトの名無しさん
2011/03/07(月) 19:28:29.89VC++ 6あたりだっけか
0352デフォルトの名無しさん
2011/03/07(月) 19:29:20.36/opt 以下にインストールしちゃえという事で、自前コンパイルしてたけど、仮想環境内で
ものの5分くらいでコンパイルは終わってた気がする
0353デフォルトの名無しさん
2011/03/07(月) 19:31:46.98mswin32 を今から環境そろえて作るのはもう無理
今からやる人は mingw になると思う
コンパイル経験さえあれば怖くないので興味のある方はどうぞ
0354デフォルトの名無しさん
2011/03/07(月) 19:53:53.39最新版あげてくれたらいいのに
0355デフォルトの名無しさん
2011/03/07(月) 19:54:25.78テキスト形式で出納帳をつけており、スクリプトで月別に集計しています。
先日、Ruby のバージョンにより計算時間が4倍ほど異なることに気が付きまして、
どのように修正すれば良いのかアドバイスを頂きたいのです。
ずいぶんと昔に例題をコピーして書いたものなので、実は自分でも何をしているのか
忘れてしまいました。根本的に誤っているのであれば、サンプルのようなもを教えて
頂けると助かります。
1.スペック
マシン: 600MHz, 384MB
Ruby : $ /usr/bin/ruby --version
ruby 1.6.8 (2002-12-24) [powerpc-darwin7.0]
$ /usr/local/bin/ruby --version
ruby 1.9.2p180 (2011-02-18 revision 30909) [powerpc-darwin7.9.0]
出納帳: UTF-8 768KB 11013行
自分 : 40 童貞
0356355
2011/03/07(月) 19:55:20.94$ time /usr/bin/ruby suitou.rb 2000
2000.01月の支出額 253421 円
...
2000.12月の支出額 345123 円
------------------------------------------
2000年の支出総額 3946492 円
real 0m1.285s
user 0m0.980s
sys 0m0.070s
$ time /usr/local/bin/ruby suitou.rb 2000
2000.01月の支出額 253421 円
...
2000.12月の支出額 345123 円
------------------------------------------
2000年の支出総額 3946492 円
real 0m4.456s
user 0m3.720s
sys 0m0.120s
3.出納帳(suitou.csv)
2000.01.01,1000,食費,外食,メイド喫茶,*
2000.02.02,2000,教養,HなDVD,立花書店,*
2000.03.03,3000,交通費,地獄-天国,Rails,*
...
0357355
2011/03/07(月) 19:58:55.81#!/usr/bin/ruby
# -*- coding: utf-8 -*-
# Created by: Cherry 2002.06.26
# Last modified: 2010.04.15
ref_file = "/Users/cherry/suitou.csv"
sum = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
sougaku = 0
$pat = ARGV.shift
hoge = ["#{$pat}.01", "#{$pat}.02", "#{$pat}.03", "#{$pat}.04",
"#{$pat}.05", "#{$pat}.06", "#{$pat}.07", "#{$pat}.08",
"#{$pat}.09", "#{$pat}.10", "#{$pat}.11", "#{$pat}.12"]
0358355
2011/03/07(月) 19:59:38.08open("#{ref_file}") {|file|
while l = file.gets
if l =~ /^#{$pat}/
hairetsu = l.split(/,+/)
for i in 0..11
if hairetsu[0] =~ /#{hoge[i]}/
sum[i] += hairetsu[1].to_i
end
end
end
end
}
for j in 0..11
puts "#{hoge[j]}月の支出額 #{sum[j].to_s.rjust(6)} 円"
sougaku += sum[j]
end
puts "------------------------------------------"
puts "#{$pat}年の支出総額 #{sougaku} 円"
0359デフォルトの名無しさん
2011/03/07(月) 20:22:51.18while l = file.gets
l=l.to_i
ls=@I[ii]
ii=ii+1
lines += 1
fields += l.to_s.split(',').size
l^=(@P_y%(2**8*ls))
for i in 0..31
salt[i]=0
end
while(l>0)
i=0
while(i<ls)
salt[i]=l&0xff
salt[i]=sprintf("%c",salt[i])
l=(l>>8)
i=i+1
end
end
i=ls-1
while(i>-1)
g.write(salt[i])
i=i-1
end
end
これをCで書くとどうなりますか?教えてください。よろしくお願いします。
0360デフォルトの名無しさん
2011/03/07(月) 21:11:25.25# -*- coding: utf-8 -*-
ref_file = "/Users/cherry/suitou.csv"
sums = {"01" => 0, "02" => 0, "03" => 0, "04" => 0, "05" => 0, "06" => 0,
"07" => 0, "08" => 0, "09" => 0, "10" => 0, "11" => 0, "12" => 0}
sougaku = 0
target_year = ARGV[0]
re_target_year = /^#{target_year}/
open("#{ref_file}") {|file|
while line = file.gets
if line =~ re_target_year
hairetsu = line.split(/,+/)
if hairetsu[0] =~ /\d\d\d\d\.(\d\d)\.\d\d/
month = $1
else
raise "日時の表記が不正です:#{line}"
end
sums[month] += hairetsu[1].to_i
end
end
}
sums.sort_by{|pair| pair[0].to_i}.each do |month, sum|
puts "#{target_year}年#{month}月の支出額 #{sum.to_s.rjust(6)} 円"
sougaku += sum
end
puts "------------------------------------------"
puts "#{target_year}年の支出総額 #{sougaku} 円"
0361デフォルトの名無しさん
2011/03/07(月) 21:23:32.37「速くする事もできる」が正確
普通なスクリプトを普通に作ったら、1.8よりも遅い
0362デフォルトの名無しさん
2011/03/07(月) 21:29:15.800363デフォルトの名無しさん
2011/03/07(月) 21:33:15.10全ての文字列がエンコーディング情報つき文字列になったのに、それで速くなるわけないじゃん
0364デフォルトの名無しさん
2011/03/07(月) 21:50:22.48>「速くする事もできる」が正確
詳しく
0365デフォルトの名無しさん
2011/03/07(月) 21:50:35.01これ見たらどうみても1.9のほうが早いみたいだが・・・?
0366デフォルトの名無しさん
2011/03/07(月) 22:02:27.440367デフォルトの名無しさん
2011/03/07(月) 22:08:08.66Rubyにはマイクロベンチマークのセットがあるので、
外部からよくわからんソースを引っ張ってくる必要はない
http://jp.rubyist.net/magazine/?0025-Ruby19_Performance
http://jp.rubyist.net/magazine/?0025-TheGreatRubyShootout
http://programmingzen.com/2010/07/19/the-great-ruby-shootout-july-2010/
1.9ではメソッドディスパッチとかの基本的な足回り部分は高速化されているが
文字列関係の処理はM17Nの関係で遅くなることがある
また、大部分がCで記述されているという点に変化はないので、
実アプリでの高速化はせいぜい数割程度
0368355
2011/03/07(月) 22:13:12.35改良ありがとうございました。これは1.9以降用になりますね?
自分にとって "01" => 0 と sort_by, pair というものが新しい概念ですが、
調べて身に付くようにしたいと思います。
$ time /usr/local/bin/ruby suitou_2ch_360.rb 2000
real 0m0.741s
user 0m0.470s
sys 0m0.090s
ブレはありますが、おおむね 0.8秒以内(5倍増し!)で計算が完了するように
なりました。1.6.8 よりも早くなってる〜。
これでこのマシンをまだまだ使ってやれます。
>>361さん
アルゴリズムを勉強した方が良いということですね?がんばってみます。
0369デフォルトの名無しさん
2011/03/08(火) 01:39:10.61rails installerがいいの?
rubyのホームページには、バイナリを使う場合は
mswin版とmingw版の違いはないって書いてあるけど
実際のとこどうなの?
xpにはmswin、7にはmingwってのはガセ?
0370デフォルトの名無しさん
2011/03/08(火) 08:14:04.25操作するスクリプト書きたいんですが
どのバイナリだと可能でどのバイナリだと不可能みたいのってあるんですか?
-KuというのをつけておけばどれでもOK?
0371デフォルトの名無しさん
2011/03/08(火) 08:19:09.66Railsやるって人はRailsスレに行ったほうが的確なアドバイスがもらえるかと思う
ttp://hibari.2ch.net/test/read.cgi/php/1292032736/
一般論として、Rubyインストール後にgem install railsでRails一式と自分に必要なものをインストールするのは
若干の知識と根性がいる
オールインワンなモノが自分にあったもの全部用意してくれるなら、それに頼ったほうがいんでないかね
mswinとmingwには動作的違いはないことになってるのだが、
「名前は違うけど動作おんなじ」というシステムのことをrubygemsが考えてくれなかったので、
mingwが一般認知される前に作られた古いバイナリつきgemライブラリが時々mingwを弾く、対処は>>345
>>5にもあるんだけど、稀に躓いてもいい(回復できる)のならmingwのほうがいいと思う、なにより新しいw
Ruby学習中に本質でないトラブルがジェットストリームアタックなので、手一杯な初心者には勧めない
>>370
Unicodeファイル名は扱えない(若干の語弊あり)
UTF-8で書かれたテキストファイルの内容は扱える
0372デフォルトの名無しさん
2011/03/08(火) 08:55:23.19内部はA系のAPI固定ってことなんですかね。
Ruby.NET(Iron Ruby?)も軽く調べつつ
とりあえずPowerShellでやることにします。
ありがとうございます。
0373デフォルトの名無しさん
2011/03/08(火) 09:41:33.07「親切」だと思うような危篤な人はあなたぐらいです。
0374デフォルトの名無しさん
2011/03/08(火) 11:34:08.56基本的にHTMLはUTF-8でやりたいので厳しいですね
0375デフォルトの名無しさん
2011/03/08(火) 13:34:01.97Digest::SHA1などのハッシュ関数を使うと思うのですが、
入力元データが無く、単純にランダムな文字列を作成したい場合は
ハッシュ関数を使う必要は無いでしょうか?
0~1とa~zをランダムで選んで適当な数だけくっつければOKですか?
具体的にはユーザーから送られてくる画像に対して、出来る限りダブらないような任意のunique_idを振りたいのです。
よろしくお願い致します。
0376375
2011/03/08(火) 13:39:30.10自分で調べた限り、SecureRandomというモジュールで安全なランダム文字列を作れるとのことですが、
入力元データが無い以上、
0~1とa~zをランダムで選択してくっつける方法よりもセキュアにランダム文字列作る方法があるとは思えないのですが
この考え方は間違ってるのでしょうか。
■ このスレッドは過去ログ倉庫に格納されています