板検索:
Ruby 初心者スレッド Part 57©2ch.net (1010)
まとめビュー
1
デフォルトの名無しさん[]   投稿日:2015/03/12 22:08:53  ID:qh8O4P61.net(2)
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 55

るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/

Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/

逆引きRuby
http://www.namaraii.com/rubytips/
コメント2件


2
デフォルトの名無しさん[]   投稿日:2015/03/12 22:10:29  ID:qh8O4P61.net(2)
前スレ
Ruby 初心者スレッド Part 56

いろいろミスった すまん

3
デフォルトの名無しさん[sage]   投稿日:2015/03/12 22:56:21  ID:xOWYefW7.net
>1

4
デフォルトの名無しさん[sage]   投稿日:2015/03/12 23:00:25  ID:E4K/qych.net
Ruby 2.2.1 リリース

5
デフォルトの名無しさん[sage]   投稿日:2015/03/13 10:08:50  ID:ua+Lgk3v.net
>1-2

6
デフォルトの名無しさん[sage]   投稿日:2015/03/14 10:46:58  ID:tvgpDvXZ.net
rubyで開発環境にMac使ってる人って
どの機種を買ってるの?
ノートでもいけるもんなの

7
デフォルトの名無しさん[]   投稿日:2015/03/15 03:48:59  ID:GfmgeCmk.net
Rubyプログラム実行したくて今日はじめてDLしたんですが、
実行したら、

写真袋.rb:9:in `require': no such file to load -- json (LoadError)
from 写真袋.rb:9

って出るのはなんでですか?
他の人はたぶん実行できてるみたいなんです
ジャバはインストール済みです

8
デフォルトの名無しさん[sage]   投稿日:2015/03/15 04:06:19  ID:Igs3//KG.net
$ gem install json

9
デフォルトの名無しさん[sage]   投稿日:2015/03/17 08:20:27  ID:jjUxdnY2.net
CentOS7上でRedmine動かそうとしてるんだけど、SELinuxを有効にしたままだと

uninitialized constant ActionView::Helpers::ActiveModelHelper (NameError)

が出る。
エラー発生部分のコードは

include ActiveModelHelper

で, 上のほうで

module ActionView #:nodoc:
module Helpers #:nodoc:
extend ActiveSupport::Autoload

autoload :ActiveModelHelper

などと書かれているんだけれども、これはActiveModuleHelperが読み込まれてないとみるべき?

10
デフォルトの名無しさん[sage]   投稿日:2015/03/17 22:46:50  ID:nsNWbIEZ.net
includeで読み込むのはC言語
コメント1件

11
9[sage]   投稿日:2015/03/18 01:52:07  ID:ZeAfVT3v.net
>10
Rubyさんは初めて触るんですわ・・・・(主にPerl)


とりあえず解決したのでご報告。
redmineのbundleのインストール先ディレクトリ vendor/bundle ディレクトリ以下の全ファイルにセキュリティコンテキスト httpd_modules_t を付与したら正常に起動した。
audit.logにもdeniedのログが残ってなかったので, gemsのあるディレクトリに手当たり次第にセキュリティコンテキスト変えながらテストしたら前述の条件で動いた。

/* RedmineのインストールガイドにとりあえずSELinuxを切りましょうとかあるのはどうかと思う */

12
デフォルトの名無しさん[]   投稿日:2015/03/19 02:25:41  ID:noU2qMQu.net
SELinuxを切るというのは、
どのプログラミング言語でも書いてある


ところで、9bitのフラグを使いたいが、
Rubyにはビットセットは無いのか?

9bitだと、2バイト(16bit)で使うのか?

13
デフォルトの名無しさん[sage]   投稿日:2015/03/19 08:34:25  ID:pl6HuOAu.net(2)
ビットセットってなんぞ。
Cのビットフィールドのことか?ネーヨ。

そーゆーのはFixnumのインスタンス変数と各ビットのアクセサ定義したクラスかな。

Fixnumのサイズはsizeof(long)なんで実装依存な。
http://docs.ruby-lang.org/ja/2.2.0/method/Fixnum/i/size.html

14
デフォルトの名無しさん[sage]   投稿日:2015/03/19 14:08:39  ID:TrzpuitZ.net(4)
Rubyを始めようと思い、Ruby 2.2.1 のwindows installerをダウンロードしました。
しかし、このインストーラーがダブルクリックしてもさっぱり起動しません。ずっと読み込みマークが出たまま
何がまずいのかさっぱりわかりません

15
デフォルトの名無しさん[sage]   投稿日:2015/03/19 14:35:40  ID:Wd74eGtb.net
UACじゃない?
コメント1件

16
デフォルトの名無しさん[sage]   投稿日:2015/03/19 15:04:04  ID:TrzpuitZ.net(4)
>15
それでした。ありがとうございます
まったく、一言「ブロックしました」とか出ればいいのに、何も表示されないからどうしたかと思いました

ついでにもう一つ聞きたいんですが、自分のパソコンが64bitだから64bitのを落とせばいいですよね
コメント1件

17
デフォルトの名無しさん[sage]   投稿日:2015/03/19 18:34:50  ID:eg1mQNFt.net
おっと、15氏宛てだったか
危うく俺が答えそうになったわ
コメント1件

18
デフォルトの名無しさん[sage]   投稿日:2015/03/19 19:16:46  ID:TrzpuitZ.net(4)
>17
そんな意地悪しないで下さいよ
サイトを見てまわったら64bitだと環境を構築するのに面倒だというのがいくつかあって不安なんですよ


19
デフォルトの名無しさん[sage]   投稿日:2015/03/19 19:54:10  ID:pl6HuOAu.net(2)
>16
RubyDevKitでsoをコンパイルできるgemならいいけど、ものによってはコンパイル済みのsoを配布してたりするので、そういうのは32bitの方がいいかも。
つーわけで、答えは両方入れろ。
64bitの広大なメモリ空間を使いたいこともあるかもしれん。

そうそう、まだ2.2.1はmingwに対応できてないgemがあるので、2.0で様子みとくのがいいかも。
2.0は2.0でなんか挙動がおかしかったりするけど。

そもそも、さんざん言われてるけど、WindowsでRubyを使うのが苦行。
最近のバージョンは特にWindowsでろくにテストされてないかんじだし。
1.8から1.9のときは、開発期間が長かったこともあって、非互換は多くても、糞みたいなバグに悩んだりしなかったかったんだけどなー。
コメント1件

20
デフォルトの名無しさん[sage]   投稿日:2015/03/19 20:08:16  ID:TrzpuitZ.net(4)
>19
りょ、両方入れろ…ですか…
最新バージョンが必ずしもいいわけではないんですね(; ・`д・´)
まずは32bitでやってみようと思います
ありがとうございました

21
デフォルトの名無しさん[sage]   投稿日:2015/03/19 20:10:15  ID:rGfQi3lS.net
Rubyはオワコン

22
デフォルトの名無しさん[sage]   投稿日:2015/03/20 09:12:21  ID:63YhLXCj.net(2)
メタプログラミングを覚えてからが
rubyのrubyたる始まり
なので
終わってない

23
デフォルトの名無しさん[sage]   投稿日:2015/03/20 09:41:05  ID:63YhLXCj.net(2)
win版なんか入れずに
win上の仮想linuxでruby使えばいいよ

導入法はドットインストールを参考にすれば猿でも出来る

24
デフォルトの名無しさん[sage]   投稿日:2015/03/20 12:05:27  ID:tF7jVOck.net(2)
Ruby の文法がかなり安定するのはバージョンがいくつになってからなのかなー.
自分のプログラムはいつも 1.8.7 から一通り動くのを試してる.
ついこないだまで 1.9 が最新だったのに,1.9.3 以前はもうサポートしないって,信じられんな.
Rails とかで追従するのは私の能力だともう無理.
Ruby にはレガシーオプションってのがないのかな?
つか,性能はおいといて言語仕様として Common Lisp レベル(とまでいかなくてもいいけど)
のものを作って,せめて言語仕様の開発は止めて欲しい.
Ruby はプログラミングのし易さがとても好きなんで使ってるけど,これだけがなー.

25
デフォルトの名無しさん[sage]   投稿日:2015/03/20 12:07:37  ID:tF7jVOck.net(2)
自分だけのプログラムなら良いけど,
公開してるといろんなバージョン環境で使われるからなー.

26
デフォルトの名無しさん[sage]   投稿日:2015/03/20 22:50:51  ID:kel79wje.net
a=%W(a b c)
x=%W(x y z)
p a
p x
{a,x}.clear
p a
p x

#a, x を clearしたいのですが、できません
#どう書けばいいですか

27
デフォルトの名無しさん[sage]   投稿日:2015/03/20 23:12:09  ID:krs7HuX/.net

28
デフォルトの名無しさん[]   投稿日:2015/03/20 23:47:40  ID:0D64RMiq.net
[a, b].each(&:clear)
コメント1件

29
デフォルトの名無しさん[sage]   投稿日:2015/03/21 00:05:13  ID:/FAWNGWp.net
>27,28
できた、ありがとうございます
>28 のような書き方があるんですね

30
デフォルトの名無しさん[]   投稿日:2015/03/21 14:07:29  ID:4rhekeJv.net
ary = bool ? [x, y] : [y, x]
xとyが長くなると読みにくくなっちゃうんですけど、何かスマートな方法はあるでしょうか?

31
デフォルトの名無しさん[sage]   投稿日:2015/03/21 14:14:15  ID:YzmjW15S.net
2行で良いんじゃないの

ary = [x, y]
ary.reverse! unless bool
コメント1件

32
デフォルトの名無しさん[sage]   投稿日:2015/03/21 17:34:11  ID:PcOPjagP.net
プログラミング初心者です。
Ruby とRuby on Railsを習得したいのですが、どうやったらいいですか?
コメント1件

33
デフォルトの名無しさん[sage]   投稿日:2015/03/21 18:13:15  ID:4pneRj7M.net
>32
入門サイトを探して、そこを見ながら動かしてみるのが一番

34
デフォルトの名無しさん[sage]   投稿日:2015/03/21 19:05:32  ID:Vk/jcLRo.net

35
スッキリ厨[sage]   投稿日:2015/03/22 01:10:13  ID:zalLAL+t.net
たのしいRuby 第4版、2013

この本を読むと、Rubyの文法や正規表現も、学べるけど、
RoRなどのフレイムワークは、オブジェクト指向の理解が必須

プログラミング初心者には、長い長い道のり

以下の本を、順に読んで
http://peace.2ch.net/test/read.cgi/tech/1419964623/309
コメント2件

36
デフォルトの名無しさん[]   投稿日:2015/03/22 03:59:04  ID:L6yG2yVA.net
>31
ary = [x, y].tap{|i| i.reverse! unless bool}
とか色々考えてみたんですけど2行に分けて書くのが一番見易そうですね
どうもありがとうございました!

37
デフォルトの名無しさん[sage]   投稿日:2015/03/22 10:14:32  ID:4BB4Mdp+.net
たのしいRuby読んで
物足りない、複雑なことがしたいと感じてから
他の本に手を出した方が良いと思うけどね

まず
http://dotinstall.com/lessons



1.楽しいRuby
2.レシピブックor逆引き
3.作りながら学ぶRuby
3.5 リーダブルコーディング
--
↑ とりあえず動くコードをたくさん作る

↓ 生産性の高いコードを目指す、
--
4.Rubyによるデザインパターン
5.UML
6.Git
or
進みたい分野の専門知識
コメント2件

38
デフォルトの名無しさん[sage]   投稿日:2015/03/23 02:07:54  ID:WpSM24TQ.net
Ruby/mswinからグラフを書くとしたらやっぱりgnuplotあたりが定石ですか?
他にもっと使いやすいツールとかあれば教えてもらえるとうれしいです

ググるとgruffと言うのもあるようですがRMagick依存らしいのでインストールが
かなり面倒・・・

39
デフォルトの名無しさん[sage]   投稿日:2015/03/23 05:54:37  ID:Mas1vnDZ.net(2)
質問スレみたいなのなかったのでここで質問させていただきたいです
今までずっと1.9.3と2.0.0使ってたんですが、
最近2.2.1がリリースされたと聞いたんでそろそろいれておこうとRubyInstallerを落として実行したんですけど、
一向にインストールが始まる気配が無くて困っています、どうしたらよいでしょうか?

40
デフォルトの名無しさん[sage]   投稿日:2015/03/23 06:56:22  ID:s7C/DHNu.net(2)
UACじゃない?

41
デフォルトの名無しさん[sage]   投稿日:2015/03/23 07:13:14  ID:Mas1vnDZ.net(2)
それがUACも出てこないんですよ……って思ってもう一回実行してみたら、
ちゃんとUAC出てきて普通にインストールできてあれぇ〜!?状態
すみません、お騒がせいたしました……

42
デフォルトの名無しさん[sage]   投稿日:2015/03/23 07:14:19  ID:h9PpfwFW.net
mswinは上級者バージョン

43
デフォルトの名無しさん[sage]   投稿日:2015/03/23 11:32:38  ID:irbxTPxc.net
ちょっと上で似たようなやりとりがあったよ

44
デフォルトの名無しさん[sage]   投稿日:2015/03/23 18:43:43  ID:xnTQJ2sa.net
windows8.1でruby2.2.1を使用している超初心者です。
メモ帳に簡単なプログラムを書いてrubyのコマンドプロントで
実行すると一瞬だけコマンドプロントが表示されて終了してしまいます。
どうしたら治りますか?
コメント2件

45
デフォルトの名無しさん[sage]   投稿日:2015/03/23 18:58:04  ID:pipv5iGo.net
>44
知るか( ゚Д゚)ヴォケ
まず、テメーのカスみたいなソースをさらせ

46
デフォルトの名無しさん[]   投稿日:2015/03/23 19:35:06  ID:s7C/DHNu.net(2)
>44
Windowsキー+R→「cmd」と入力→出てきた黒いウィンドウに「ruby ファイル名(絶対パス)」

47
デフォルトの名無しさん[sage]   投稿日:2015/03/24 03:30:38  ID:UePi+RvZ.net
>35
>37

これどっちが妥当なの

48
スッキリ厨[sage]   投稿日:2015/03/24 04:07:53  ID:figDJ/Iz.net
これが漏れの編み出した、最速メソッドである!
1. スッキリわかる Java入門 第2版、2014

その後、この2冊を順に読む
2. たのしいRuby 第4版、2013
3. みんなのPython 第3版

123の順番で勉強する。
勉強時間は、1,2に各20H、3に10H

これで、オブジェクト指向、正規表現、
UNIX系でシェルスクリプトの代わりに使える

漏れのやり方は、最初に本で、
50H勉強するから退屈かもね

一方、 >37 は手を動かしながら試行錯誤する。
どちらでもお好きに

49
デフォルトの名無しさん[]   投稿日:2015/03/24 13:48:57  ID:t/9qecum.net(2)
ruby -e 'p Time.new(1970,1,4).wday'とかってやってこの日の曜日を調べるとなぜかこの日だけ
1.8.7, 1.9.3, 2.0.0 では0(日曜日)なんだけど、2.1.5, 2.2.0 では1(月曜日)になってしまう。(暦上は日曜日)
環境はWindows VISTA SP2 32bitなんだけどどうしてなんでしょうか?

50
デフォルトの名無しさん[]   投稿日:2015/03/24 13:56:54  ID:t/9qecum.net(2)
2.2.1では次のようになっていました…
1970年1月3日午前8時59分59秒 + 1秒 = 1970年1月4日午前9時0分0秒

51
デフォルトの名無しさん[sage]   投稿日:2015/03/24 20:18:06  ID:lrhN9mZD.net
調べてみると1月2日と3日の午前9時までが、本来なら時差+9時間になるところが、-15時間になってる
これだと24時間分時間が前にずれるはずだけどずれないようになってるみたい
一方で、1月4日も午前9時以降は正常だから、本来1970年1月2日と3日にだけ適用するはずの処理を間違えて掛けてるのかな?
コメント1件

52
デフォルトの名無しさん[sage]   投稿日:2015/03/24 20:58:11  ID:WLCHoINr.net
>51
前スレで似たような話しをみた気がする。

53
デフォルトの名無しさん[]   投稿日:2015/03/25 13:52:18  ID:ZnaXoefX.net(3)
<a =href="http://hogehoge.com">のhogehoge.comだけ正規表現で抜き出したいんだけど
どうすればいいんだろう?
コメント2件

54
デフォルトの名無しさん[]   投稿日:2015/03/25 14:00:58  ID:ZnaXoefX.net(3)
>53だけど抜き出したいのはhogehoge.comじゃなくてhttp://hogehoge.com

55
デフォルトの名無しさん[sage]   投稿日:2015/03/25 15:30:36  ID:VW0J0cUv.net

56
デフォルトの名無しさん[]   投稿日:2015/03/25 17:24:19  ID:ZnaXoefX.net(3)
>55 おお!ありがとう!

57
デフォルトの名無しさん[sage]   投稿日:2015/03/26 02:20:22  ID:uK/WLLbH.net
x=a[i] if true == a.key?(i)
初歩レベルの質問ですが、もっとよい書き方はありますか?
(a は Hash)

ハッシュを二回調べるのを、一回にしたいです。
コメント2件

58
デフォルトの名無しさん[sage]   投稿日:2015/03/26 04:02:10  ID:LA0ApMoS.net(2)
>x=a[i] if true == a.key?(i)
if x = a[i]

キーが存在しなければ、nil を返すから、
そのまま、if の条件に書ける

また、Hash.new("")の引数や、
a.fetch(i, "") の第2引数に指定すれば、
キーが存在しない際、指定した文字列、
例えば、空文字列を返す


ちなみに真偽値は、if にそのまま書ける
>if true == 真偽値
if 真偽値

false, nil は偽。それら以外は真。
!真偽値で、真偽値を反転する
コメント2件

59
デフォルトの名無しさん[sage]   投稿日:2015/03/26 04:45:10  ID:kahQGSuP.net
>57
begin
x = a.fetch(i)
rescue
end
とか

>58
{}[:foo]
=> nil
{:foo=>nil}[:foo]
=> nil
の区別がつかない
コメント1件

60
デフォルトの名無しさん[sage]   投稿日:2015/03/26 09:04:00  ID:LA0ApMoS.net(2)
FROM_ARY = ["AA","BB","CC"] # 置換前
TO_ARY = ["aa","bb","cc"] # 置換後

置換前後の文字列の組が、複数あるとき、
文字列(またはファイル)をどうやって置換するの?
コメント2件

61
デフォルトの名無しさん[sage]   投稿日:2015/03/26 09:08:37  ID:01//DD7r.net(3)
FROM_ARY.map(&:downcase)

62
デフォルトの名無しさん[]   投稿日:2015/03/26 09:45:39  ID:U2cl9cv9.net
anemoneについて質問
http://blog.nogizaka46.com/
このサイトのブログ画像だけanemoneで取得したいんだけど
画像が他のサイトにおいてあるからどうすればいいのかわからない
教えてください

63
デフォルトの名無しさん[sage]   投稿日:2015/03/26 10:26:57  ID:Megmic4v.net
>57
x = a.fetch(i, x)
とか
コメント1件

64
デフォルトの名無しさん[sage]   投稿日:2015/03/26 11:12:33  ID:5qC90pSF.net(2)
質問です
p /a/.! # => false
p !/a/ # => true
後者の挙動が把握できません
CRuby 2.0.0, 2.1.5 で確認しています

65
デフォルトの名無しさん[sage]   投稿日:2015/03/26 11:31:47  ID:01//DD7r.net(3)
前者はBoolean negateで、
後者は$_とのマッチを取っている。
$_ = 'a'
p !/a/ #=> false
コメント1件

66
デフォルトの名無しさん[sage]   投稿日:2015/03/26 11:41:29  ID:01//DD7r.net(3)

67
デフォルトの名無しさん[sage]   投稿日:2015/03/26 11:49:35  ID:5qC90pSF.net(2)
>65-66
おお、なるほど。ありがとうございます
警告が出なかったのではなんででしょうね

68
デフォルトの名無しさん[sage]   投稿日:2015/03/26 12:58:41  ID:ejfTzuZp.net
独学なんで聞くのだけど
ユニットテストってどんな時に使うのかな

もちろん想定外の挙動を認識するためだとは思うのだけど
工程の流れ的にどんな時に、どのように用いのだろう。

69
デフォルトの名無しさん[]   投稿日:2015/03/27 02:48:40  ID:B/xnV6qp.net(3)
テスト駆動開発では、
コーディングとユニットテストは、同時に行う

Javaではコードを修正すると、Test用のTestClassも修正して、
JUnit, Jenkinsなどでテストする

Coberturaでコードカバレッジを測定する。
命令網羅(C0)100%・分岐網羅(C1)90%以上かどうかをチェック

70
60[sage]   投稿日:2015/03/27 05:25:34  ID:B/xnV6qp.net(3)
>60-61
もっと一般的な話で、置換表のようなファイルに、
(置換前, 置換後)のような文字列の組が、
複数定義してあって、それを配列に読み込むと、

FROM_ARY = ["Ruby","Python","JavaScript"] # 置換前
TO_ARY = ["宝石","蛇","JS"] # 置換後

この置換表を使って、
文字列(またはファイル)をどうやって置換するの?
コメント1件

71
デフォルトの名無しさん[sage]   投稿日:2015/03/27 06:03:49  ID:DTkMuG4d.net
s.gsub!(Regexp.union(*FROM_ARY), FROM_ARY.zip(TO_ARY).to_h)
コメント1件

72
デフォルトの名無しさん[sage]   投稿日:2015/03/27 09:02:41  ID:59COlJN1.net
>60の内容でそこまで察しろと言うのも酷な話だな

73
60[sage]   投稿日:2015/03/27 16:35:01  ID:B/xnV6qp.net(3)
FROM_ARY.zip(TO_ARY) do |sFROM, sTO|

str.gsub!(Regexp.new(sFROM), sTO)
end

結局、文字列(またはファイル)全体を、
何回もループして、1つずつ置換していくんだね?

>71
Regexp.union(配列)は、
配列中のどれかの要素と一致したら、
という意味だから、漏れの想定とは違う

74
デフォルトの名無しさん[sage]   投稿日:2015/03/27 17:14:58  ID:9ORSmkz6.net
>70
そんなもんHashでやれよ。
ゴルフのネタでも提供してるつもりなのか。おまいは。

75
デフォルトの名無しさん[sage]   投稿日:2015/03/27 21:44:19  ID:4Pr9ruNj.net
想定が違うだのなんだの後から条件小出しにされたんじゃかなわんわ

76
デフォルトの名無しさん[sage]   投稿日:2015/03/28 00:29:01  ID:NvPvIHKe.net
>58 >59 >63
ありがとうございます。
fetch 試してみます、使ったことないです。

77
デフォルトの名無しさん[sage]   投稿日:2015/03/28 09:55:00  ID:eS6PuzJC.net(3)
>35
その手順で読んでみたけど理解出来た気がしなかった
コメント1件

78
デフォルトの名無しさん[]   投稿日:2015/03/28 19:04:32  ID:9D6q6DQr.net(3)
先生、RubyでGUIって作れますか?
コメント1件


79
デフォルトの名無しさん[sage]   投稿日:2015/03/28 19:18:47  ID:eS6PuzJC.net(3)
webをguiと認識するなら出来るんじゃないの

80
デフォルトの名無しさん[]   投稿日:2015/03/28 19:41:05  ID:9D6q6DQr.net(3)
webをguiと認識するってどういうことっすか?
プログラミングのスーパー初心者の僕にわかりやすくおしえてくだせえ…
コメント2件

81
デフォルトの名無しさん[sage]   投稿日:2015/03/28 20:20:08  ID:3hbPl+o9.net
>80
そういう奴はGUI自体が分かってないから、何言っても無駄
コメント1件

82
デフォルトの名無しさん[sage]   投稿日:2015/03/28 21:20:26  ID:eS6PuzJC.net(3)
コマンドプロンプトからテキスト落として読んでるやつなんて少数だろ

83
デフォルトの名無しさん[]   投稿日:2015/03/28 21:55:51  ID:9D6q6DQr.net(3)
>81
そう言わずに、兄さぁぁん!!

84
デフォルトの名無しさん[sage]   投稿日:2015/03/28 22:58:25  ID:Rm/MLphK.net
よっしゃ、俺が教えたる

85
デフォルトの名無しさん[sage]   投稿日:2015/03/29 00:28:25  ID:t4hqKB21.net
はよ

86
デフォルトの名無しさん[sage]   投稿日:2015/03/29 01:58:18  ID:cbZ+OAuX.net
まずMVCはわかるよな?

87
スッキリ厨[sage]   投稿日:2015/03/29 02:26:23  ID:abbduuww.net
>77
繰り返し読むと、最初は20Hかかっていたのが、
次には10Hで読める

まあ、2,3回読めばよいと思う

88
デフォルトの名無しさん[sage]   投稿日:2015/03/29 10:18:33  ID:PdgsgtyB.net
んだ、繰り返し読むことは大事

89
デフォルトの名無しさん[sage]   投稿日:2015/03/29 12:29:11  ID:tbam8Rya.net
>78
どれがいいかは知らない

Rubyist Magazine - Ruby de GUI
http://magazine.rubyist.net/?0001-RubyGUI
コメント1件

90
デフォルトの名無しさん[]   投稿日:2015/03/29 22:14:44  ID:yrIUYa7M.net(2)
>>先生、分りません。
プログラミング始めたばかりです。
GUIつくるとかレベル高杉ますか?

91
デフォルトの名無しさん[]   投稿日:2015/03/29 22:30:51  ID:yrIUYa7M.net(2)
>89
ありがとうございます!
ちょい読んでみる!

92
デフォルトの名無しさん[sage]   投稿日:2015/03/30 01:30:09  ID:tZH83wbT.net
htmlとCSS、eruby覚えた方が
使いまわし効くと思うけどね

93
デフォルトの名無しさん[]   投稿日:2015/03/30 12:52:21  ID:5htnBXQS.net(2)
下のマージソートを真似してやると成功するんだけど、ちょっと理解できない・・・
http://melborne.github.io/2010/10/12/Ruby/
a,bに1つずつ入ったらmergeに行って小さい順にresに入れていく、を繰り返してると思うんですが、
これだと整列された2つが次々resに入ってもres全体では整列されてないように思えます・・・ご教授おねがいします


class Array
def merge_sort
tmp = self.dup
return tmp if tmp.length <= 1
a, b = self.half.map { |e| e.merge_sort }
merge(a, b)
end
def half
mid = length/2
return slice(0...mid), slice(mid..-1)
end

def merge(a, b)
res = []
until a.empty? && b.empty?
res <<
case
when a.empty? then b.shift
when b.empty? then a.shift
when a.first < b.first then a.shift
else b.shift
end
end
res
end
end

94
デフォルトの名無しさん[sage]   投稿日:2015/03/30 13:57:02  ID:KemAcwb4.net
具体例考えてみれば納得行くんじゃない。

95
デフォルトの名無しさん[sage]   投稿日:2015/03/30 14:00:25  ID:5htnBXQS.net(2)
再帰で結果待ちのe.mergesortに整列されたのが帰ってきて
それがa,bに渡されて整列されていくのかな

96
デフォルトの名無しさん[sage]   投稿日:2015/03/30 17:09:10  ID:vd5gzrat.net
再帰は理解するのが難しいから、

図や表に描いて、一つずつ考える

97
デフォルトの名無しさん[sage]   投稿日:2015/03/30 18:09:54  ID:vBLCev70.net
最小まで分割されて整列されたのがresとしてどんどん帰ってきてゴニョゴニョ

98
デフォルトの名無しさん[]   投稿日:2015/03/30 19:01:19  ID:CNWSB7MqN
8.6秒バズーカ「ラッスンゴレライの振り付けですけど、戦火があるんですよ、前に。よけるんです。熱いの嫌やと」 [586999347]
http://maguro.2ch・sc/test/read.cgi/poverty/1427532738/
> 6:18〜「南京の」←うっかり言い間違いかける、女の子達は意味不明でだんまり

> 53 名前:番組の途中ですがアフィサイトへの\(^o^)/です[] 投稿日:2015/03/29(日) 14:00:01.90 ID:RpK1u1Kg0.net
>   >> 37
>   これ、長崎のこれも加えないと
>  http://www.kantei.go.jp/jp/koizumiphoto/2001/08/images/09nagasaki1.jp...
>  これと広島の原爆の子を合わせたのがこいつらのポスターって、
>  8.6秒という一見イミフなネーミングと合わせると、ガチだったんだと戦慄したわ
>  http://www.hiroshima-navi.or.jp/sightseeing/assets_c/2012/11/genbakunoko-thum...
>  http://pbs.twimg.com/media/CAtrv5YUkAAuDli.jpg

99
デフォルトの名無しさん[sage]   投稿日:2015/03/30 22:52:03  ID:jOu/nfHk.net
配列の1要素だけ別名を付けることってできないでしょうか?
例えば、$a[1]を$bという名前で扱いたいです。
$bに変更をかけると$a[1]も変更される、aliasのような扱いが望ましいのですが、
alias $b $a[1] と書くとエラーが出てしまいます。
どなたかご教授くださいますようお願いいたします。
コメント1件

100
デフォルトの名無しさん[sage]   投稿日:2015/03/31 07:46:50  ID:E5ZmHRmL.net
できない

101
デフォルトの名無しさん[sage]   投稿日:2015/03/31 13:58:02  ID:meXl7bV+.net
>99
条件付きでできる
配列の要素に別名を付けるというわけではなく
配列の要素であるオブジェクトを別の変数名でも参照するようにする(2行目)
そのオブジェクトを破壊的に変更すればどちらから見ても変更されていることになる(3〜6行目)

ただし、別のオブジェクトを参照するように再代入した場合は
参照するオブジェクトが変わっただけで元のオブジェクトは変更されていないので
もう片方から見ると変わっていないことになる(7〜8行目)

下記例では配列の要素がArray型のオブジェクトなのでうまくいくが、ただの整数とかだと破壊的変更ができないのでできない

irb(main):001:0> a=[[1,2],[2,3]] #=> [[1, 2], [2, 3]]
irb(main):002:0> b=a[1] #=> [2, 3]
irb(main):003:0> b<<5 #=> [2, 3, 5]
irb(main):004:0> a #=> [[1, 2], [2, 3, 5]]
irb(main):005:0> b.delete(2) #=> 2
irb(main):006:0> a => [[1, 2], [3, 5]]
irb(main):007:0> b=3 #=> 3
irb(main):008:0> a #=> [[1, 2], [3, 5]]
コメント1件

102
デフォルトの名無しさん[sage]   投稿日:2015/03/31 13:59:55  ID:aNarOGXw.net
hashじゃダメなん
コメント1件

103
デフォルトの名無しさん[sage]   投稿日:2015/03/31 23:15:44  ID:oj+ySTd6.net
そういう扱いにして解決したい問題は何?
コメント1件

104
デフォルトの名無しさん[sage]   投稿日:2015/03/31 23:59:25  ID:emRDa7+p.net
クラスでラップすればええんやで


105
デフォルトの名無しさん[]   投稿日:2015/04/01 00:31:47  ID:N2hhpQD6.net
横だけど、クラスでラップってどういうこと??

106
デフォルトの名無しさん[sage]   投稿日:2015/04/01 01:35:01  ID:UVT1+zz0.net
(共通語訳)クラスメイトみんなでラップミュージックを歌えばよいのですよ

107
98[sage]   投稿日:2015/04/01 01:40:10  ID:0SHwilWW.net
皆様ありがとうございます。

>103
変更が困難な基盤システムのデータ管理方法として、
バックアップの必要なデータはある1つの配列に集約するという
ルールになっております。
配列名が汎用のものなので可読性に欠けるため、
別名での管理が出来ればと考えておりました。

>102
hashでも構いませんが、
何かしら方法があるだろうと思って調べておりました。
またRubyを扱い始めたばかりなため、勉強の一環として
hashではなく別名で管理するという方法を覚えてみようと考えたのも理由です。
C言語におけるdefineのようなことが、まさか出来ないはずはないと思い
同様の手軽さで出来ることを前提に考えていましたが、
一筋縄ではいかないようで……。

>101、103、その他ご検討いただいた皆様。
ありがとうございました。
ご意見は手法のひとつとして参考にさせていただきましたが、
今回Ruby初心者の私が安全に実装できるかは少し疑問だったので
結局、hashでの管理に落ち着くことにいたしました。

108
デフォルトの名無しさん[]   投稿日:2015/04/02 14:36:03  ID:qqPJ8aIO.net
Pythonで、モジュールに別名を付ける
import math as m

cos関数に、別名を付ける
from math import cos as c


JavaScriptで、オブジェクトチェーンを作る
var objA = {
objB: {
objC: { foo: 'bar' }
}}
objA.objB.objC.foo

Rubyにはこういうものや、
Alias、名前空間などは無いの?
コメント1件

109
デフォルトの名無しさん[sage]   投稿日:2015/04/02 16:53:57  ID:Jdu7FtOn.net
<<

110
デフォルトの名無しさん[sage]   投稿日:2015/04/02 18:43:53  ID:z8Sedsrd.net
>108
モジュールや関数もファーストクラスオブジェクトなんだから変数に代入すれば別名になる
もしくは関数ならaliasやalias_methodで別名を付けられる

オブジェクトチェーンって言ってるのと名前空間は別な気がするが・・・
オブジェクトチェーンって言ってるやつはネストした構造体でしょ?Rubyはもちろん大体どの言語でもできるのでは
Rubyで名前空間っていうならModuleやClass内Classかな

111
デフォルトの名無しさん[sage]   投稿日:2015/04/03 15:29:12  ID:ECHkgOPX.net(2)
http://itpro.nikkeibp.co.jp/atcl/idg/14/481542/040300096/?ST=cm-hardware&...;P=2

Raspberry Pi 2を使ったノートパソコン組み立てキット「Pi-Top」

https://www.youtube.com/watch?v=jb6hVe1fRzI


組み込み用Ruby「mruby」でモノ作りを始めよう日経LINUX
マイコンボードでmrubyを動かす

http://itpro.nikkeibp.co.jp/article/COLUMN/20130712/491148/

112
デフォルトの名無しさん[sage]   投稿日:2015/04/03 19:29:04  ID:V4mE3d7Z.net
よく知らんのだけどマイコンをノートPCに近づけたとして
ノートPCと比べて何が嬉しいもの?
マイコンは小ささが大きな利点だと思ってたんだけど違うのか

113
デフォルトの名無しさん[sage]   投稿日:2015/04/03 20:03:45  ID:LDkJND5+.net
作るのが楽しいんだよ

114
デフォルトの名無しさん[sage]   投稿日:2015/04/03 20:04:48  ID:ECHkgOPX.net(2)
取り外ししながらイジる遊びでしょ
PCの前だけで完結する訳じゃないから
出先で稼働チェック、バグ発見できるじゃないの

115
デフォルトの名無しさん[sage]   投稿日:2015/04/05 03:13:12  ID:6AkiVh1a.net
配列にメソッドを入れて呼び出す書き方を教えて下さい。


subf=[]
subf[0]="aa0()" #配列にメソッドaa0を登録
subf[1]="aa1()"

[1,0].each{ |i|
subf[i] #メソッド aa0 などを呼び出したい
}

eval を使えばできましたが遅くなりそうです。
他の方法はありますでしょうか

116
デフォルトの名無しさん[sage]   投稿日:2015/04/05 08:41:52  ID:/p4ZvisL.net
[:aa0,:aa1].each{|i|send i}
コメント1件

117
デフォルトの名無しさん[sage]   投稿日:2015/04/06 00:18:11  ID:YJS2Vz5l.net
>116
ありがとうございます。
send(:メソッド名)でできました。
ぐぐったら method(変数).call という方法もありました。
どれもマニュアル本にのっていなかった。

118
デフォルトの名無しさん[sage]   投稿日:2015/04/06 12:39:37  ID:azS7WBIj.net
sendメソッドの存在は、3冊目に“メタプログラミングRuby”呼んで始めて知ったわ
たのしいRubyにもパーフェクトRubyにも無かったのに…
便利だからもっと布教して欲しいな

119
デフォルトの名無しさん[]   投稿日:2015/04/09 16:19:46  ID:RpdxwBCT.net
Ruby/DBIについて
一番左は行数ね

1:dbh = DBI.connect('DBI:SQLite3:hoge.db')
2:dbh.select_all('select * from fuga') do |row|
3:print "row = #{row}\n"
4:print "name = #{row[0]}\n"
5:end

4行目は返ってくるんだけど,3行目が何も返ってこない
ほんとは,row=[X,Y]みたいな感じで返ってくると思うんだけど
なんでだろ?
コメント1件

120
デフォルトの名無しさん[sage]   投稿日:2015/04/09 18:30:31  ID:l3U3HHix.net
これで何も返ってこないのは確かにおかしいですね
最低でもrow=""くらいは出力されそうですが…
コンソールの故障ではないでしょうか?

121
デフォルトの名無しさん[]   投稿日:2015/04/10 01:41:52  ID:yrWgqEIF.net(2)
すみません
row =
これは返ってきます

122
デフォルトの名無しさん[sage]   投稿日:2015/04/10 09:29:55  ID:RfX1D9w4.net
DBIって知らないけど、rowのクラスのto_sを調べてみたら?

123
デフォルトの名無しさん[]   投稿日:2015/04/10 17:08:35  ID:yrWgqEIF.net(2)
>119だけどto_sとか調べてみてもよくわからないし諦める
答えてくれた人ありがとう

124
デフォルトの名無しさん[sage]   投稿日:2015/04/10 22:27:53  ID:iSKCb4Co.net
.class か .inspectだとどうなるんでしょうか

125
デフォルトの名無しさん[sage]   投稿日:2015/04/11 10:28:57  ID:ncuFBFa5.net
to_sとinspectの出力が違うんでしょ。

126
デフォルトの名無しさん[sage]   投稿日:2015/04/11 12:26:53  ID:OMIW7dLX.net(5)
え、いや出力してる対象がそもそも違いますし

127
デフォルトの名無しさん[sage]   投稿日:2015/04/11 16:13:24  ID:UKPnNYb6.net
p row

なら、配列の中身を表示してくれる

128
デフォルトの名無しさん[sage]   投稿日:2015/04/11 16:54:15  ID:OMIW7dLX.net(5)
rowがArrayならそうだけど118の場合はそうじゃない
DBI::Rowのto_sがnilか何かを返すから何も表示されなく見えるんでしょう

129
デフォルトの名無しさん[sage]   投稿日:2015/04/11 19:35:20  ID:jprZbhPv.net(3)
(0..9).to_a + ('A'..'Z').to_a

これもっと短くかけない?

130
デフォルトの名無しさん[sage]   投稿日:2015/04/11 20:07:28  ID:OMIW7dLX.net(5)
[*0..9,*?A..?Z]
コメント3件

131
デフォルトの名無しさん[sage]   投稿日:2015/04/11 20:20:11  ID:jprZbhPv.net(3)
>130
ありがとう。

これなんて言葉でググったら出てくるのかさっぱりわからんw

132
デフォルトの名無しさん[sage]   投稿日:2015/04/11 20:21:42  ID:jprZbhPv.net(3)
あぁ、なるほど。配列を引数に展開するあれと一緒なわけか?

133
デフォルトの名無しさん[sage]   投稿日:2015/04/11 21:03:05  ID:OMIW7dLX.net(5)
YES
splat展開とか*をsplat演算子とかいう
コメント1件

134
デフォルトの名無しさん[sage]   投稿日:2015/04/11 22:42:31  ID:gihZD1Jp.net
>130
?
syntax error

135
デフォルトの名無しさん[sage]   投稿日:2015/04/11 23:11:06  ID:m2InqXq3.net
さして短いように感じないけどw
コメント1件

136
デフォルトの名無しさん[sage]   投稿日:2015/04/11 23:44:42  ID:OMIW7dLX.net(5)
>135ゴルファー解答は任せた

137
デフォルトの名無しさん[sage]   投稿日:2015/04/12 00:30:37  ID:kD7m9Q1o.net
>133
一生に三回くらいしか使わなさそうだからいいや
うっかり使ってしまうと5年後、自分で読めなくなりそう

使った方がいい人もいるのだろうが
コメント1件

138
デフォルトの名無しさん[sage]   投稿日:2015/04/12 03:14:45  ID:Ve5wxvO+.net
>137
そうか?結構使うぞ

139
デフォルトの名無しさん[sasge]   投稿日:2015/04/12 15:06:38  ID:u+bXlDiV.net(2)
以下のような文字列で人名部分のみ正規表現でマッチさせるには
どのように記述すればよろしいのでしょうか?

____4____4__5_山田_太郎________9
__8______田中_次郎________5
____13___9___オサマ_ビン_ラディン___28
____________加藤_花子________7

※半角スペースをアンダースコアで表してあります。
※人名の前の数字は最小0で最大4つ存在します。
※数字は最大2桁です

よろしくお願いします。

140
デフォルトの名無しさん[]   投稿日:2015/04/12 16:19:45  ID:MTxsiU+i.net(3)
もっと上手い方法があるかもしれないが。

/(?!_)[_日本語]*[日本語]/

[]の中の日本語は用途に合わせて
\p{Han}\p{Hiragana}\p{Katakana} なり
[亜-熙ぁ-んァ-ヶ] なり適宜入れ替えてくれ。

141
デフォルトの名無しさん[sage]   投稿日:2015/04/12 16:32:16  ID:MTxsiU+i.net(3)
名前に半角数字が含まれないならこっちの方が良いかも。

/(?!_)[\D]*[^_\d]/

142
デフォルトの名無しさん[sage]   投稿日:2015/04/12 16:48:53  ID:MTxsiU+i.net(3)
連投すまん。こっちの方が意味が明瞭で良いと思う。

/(?!_)[_日本語]+(?<!_)/
/(?!_)\D+(?<!_)/
コメント1件

143
デフォルトの名無しさん[sage]   投稿日:2015/04/12 16:52:22  ID:4195b+YJ.net
正規表現で、\r\n と \r と \n を
同一視してくれるメタキャラクタってないですよね・・・?
コメント1件

144
138[sage]   投稿日:2015/04/12 17:08:52  ID:u+bXlDiV.net(2)
>142
マッチできました!

ただこの表現(先読み、後読み?)が理解できていないので、これから調べてみます。

ありがとうございました!

145
デフォルトの名無しさん[]   投稿日:2015/04/13 16:22:45  ID:gNPn7XlC.net
railsで今一番おススメの書籍はどれですかね?

146
デフォルトの名無しさん[sage]   投稿日:2015/04/14 02:09:34  ID:FDWB7Bl3.net
>143
出来なければ、universal_newline で、

\r, \r\nを、\nに置き換えたら?
コメント1件

147
デフォルトの名無しさん[sage]   投稿日:2015/04/15 04:51:37  ID:jXTy0Fxm.net
逆引きレシピ(2009)は今のバージョンでも役に立ちますか?

148
デフォルトの名無しさん[sage]   投稿日:2015/04/17 23:47:40  ID:eE8aPdvb.net
>146
そうも行かんのよ。

なぜなら、hogehoge(\r|\n|\r\n) のhogehogeを置き換えたいが、
それ以外の\r, \n, \r\n はそのままにしておきたいから。

149
デフォルトの名無しさん[]   投稿日:2015/04/18 01:27:35  ID:zEo+1i3a.net(2)
a = ['a','b','c']
a.values_at(* a.each_index.select {|i| i.even?})

配列の要素のうち、インデックス番号が奇数のものだけ取り出したいとき、
うえのようにすればよいみたいだ、というのはわかったのですが、
この values_at(* ... )の "*" はどういう処理を行っているのでしょうか

150
148[]   投稿日:2015/04/18 01:57:13  ID:zEo+1i3a.net(2)
すいません>130とかで出てました。。。こういうのggるときはどうすればよいんだろ

151
デフォルトの名無しさん[sage]   投稿日:2015/04/18 03:47:15  ID:j/wjXDDU.net
ruby * array
ruby * 引数
ruby 記号
などで検索する

* は余りとか、配列にまとめて扱う、
数のわからない引数リスト

152
デフォルトの名無しさん[sage]   投稿日:2015/04/18 14:56:46  ID:vWBjvHtT.net
ruby でネットワークのお勉強したいです。
オススメの教科書ありますか?

153
デフォルトの名無しさん[]   投稿日:2015/04/18 22:32:35  ID:JaNp7CB/.net
appleという文字列の文字と文字の間にカンマを挿入して
それを全て表示するにはどういう処理を書けばいいんだろ?
具体的には
a,pple
ap,ple
app,le
appl,e
apple,
みたいな感じにしたい
コメント1件

154
デフォルトの名無しさん[sage]   投稿日:2015/04/18 22:46:30  ID:kJGYLJy1.net
str[0...i] + "," + str[i..-1]
でstrのi番目にカンマを挿入した文字列になる
コメント2件

155
デフォルトの名無しさん[]   投稿日:2015/04/19 00:52:37  ID:JgTbIpQo.net(3)
>154
説明不足だったごめん
それはわかる
俺の知識だとこれを全部表示したいときに

puts str[0...1] + "," + str[0..-1]
puts str[0...2] + "," + str[0..-2]
.
.
.

みたいにしか書けなくてこれだと面倒だし汎用性低いから
うまく繰り返しの処理使って書けないかなと
コメント2件

156
デフォルトの名無しさん[sage]   投稿日:2015/04/19 02:08:39  ID:6VTvXYTp.net(2)
>154
を使って書くと、

str = 'apple'

(1..str.length).each do |i|
puts str[0...i] + "," + str[i..-1]
end

>155
>puts str[0...1] + "," + str[0..-1]
>puts str[0...2] + "," + str[0..-2]

[0..-1], [0..-2]ではなく、[i..-1]だよ
コメント1件

157
デフォルトの名無しさん[]   投稿日:2015/04/19 12:53:42  ID:JgTbIpQo.net(3)
>156
ありがとう

ここにでてくるメソッドとか構文は全部知ってたし
コード読めば理解できるんだけど、自分では全く
思いつかなかった
どうしたら思いつくように、というか自分でコードが書けるように
なるんだろう
コツとか勉強法とかあったら教えて欲しい
コメント1件

158
デフォルトの名無しさん[sage]   投稿日:2015/04/19 13:27:19  ID:wxQ8bpjm.net
str[0...i] + "," + str[i..-1]がわかって、それを繰り返す術がわからないとなると
コードを書く経験が圧倒的に不足しているんじゃない
コメント1件

159
デフォルトの名無しさん[sage]   投稿日:2015/04/19 13:30:52  ID:HWkUOGT6.net
>157
forとifとwhileでかなりのことはできるから、まずそれを思い通りに使えるようにする

160
デフォルトの名無しさん[]   投稿日:2015/04/19 16:20:52  ID:JgTbIpQo.net(3)
>158,158
なるほど、たしかにコードはあまり書いてないし
whileとかもちゃんと理解してないな...

アドバイスありがとう
参考にさせてもらいます

161
デフォルトの名無しさん[sage]   投稿日:2015/04/19 17:09:27  ID:6VTvXYTp.net(2)
str[0...i] + "," + str[i..-1]

i=1なら、str[0...1] + "," + str[1..-1]
i=2なら、str[0...2] + "," + str[2..-1]

i=nなら、str[0...n] + "," + str[n..-1]

>155
で君が既にやっている通り、
簡単な表にして、具体的に考える。
そして具体的なものから、抽象化・一般化する

特に再帰では、表にしないと理解できないよ

162
デフォルトの名無しさん[sage]   投稿日:2015/04/19 20:38:34  ID:ufvWNWCd.net

163
デフォルトの名無しさん[sage]   投稿日:2015/04/19 23:42:27  ID:BlhhoLV3.net
puts "apple".gsub(/\G./, "\\`\\&,\\'|").split("|")
コメント1件

164
デフォルトの名無しさん[sage]   投稿日:2015/04/20 07:52:32  ID:6ZYvOI+Q.net
文字列にもeach使えるんだな
iを見ると何故か反射的にtimesが思い浮かんでしまう

165
デフォルトの名無しさん[sage]   投稿日:2015/04/20 11:13:20  ID:rPDQ4MSJ.net
>163
\G なんて使ったことない
処理速度的にも each などを使うより速いのでしょうか

166
デフォルトの名無しさん[sage]   投稿日:2015/04/20 19:59:50  ID:MvH6tGWq.net(3)
\Gなんてリファレンスマニュアルに記載がないものを使わないでいただけますか

167
デフォルトの名無しさん[sage]   投稿日:2015/04/20 20:39:58  ID:j3ZSM6vs.net(2)
確かにリファレンスマニュアルには載ってない
oniguruma or onigmo の機能なら書いてないけど使えるってことなのかな
柔軟な発想ですごいなあ
まあ実際にコードかくなら155で十分な気がするけど

168
デフォルトの名無しさん[sage]   投稿日:2015/04/20 20:50:49  ID:BD4F5QuZ.net
Ruby 初心者スレッド Part 56
> [ プログラム ] Ruby 初心者スレッド Part 56©2ch.net
> 80 名前:デフォルトの名無しさん [sage]: 2014/12/28(日) 19:00:20.64 ID:EhJlAFnh (2)
> \Gなんて使ってるのは見たことないんですがどういう時に使うものなのか何かサンプルはありませんか?


Ruby 初心者スレッド Part 56
> [ プログラム ] Ruby 初心者スレッド Part 56©2ch.net
> 81 名前:デフォルトの名無しさん [sage]: 2014/12/28(日) 19:08:58.77 ID:0BcgJOIK
> >80
> 1.8.7になっちゃいますが、ここにありますよ
> http://docs.ruby-lang.org/ja/1.8.7/doc/spec=2fregexp.html#regexp
> あとこことかも
> http://magazine.rubyist.net/?0020-BundledLibraries
コメント1件

169
デフォルトの名無しさん[sage]   投稿日:2015/04/20 20:51:26  ID:MvH6tGWq.net(3)
載ってたわ。メンゴ
tp://docs.ruby-lang.org/ja/1.8.7/doc/spec=2fregexp.html#regexp

170
デフォルトの名無しさん[sage]   投稿日:2015/04/20 20:52:35  ID:MvH6tGWq.net(3)
一歩遅かった…

171
デフォルトの名無しさん[sage]   投稿日:2015/04/20 21:45:38  ID:j3ZSM6vs.net(2)
すまん載ってたのか
なんで1.9.3マニュアルからは消えたんだろう?
それとも自分が見つけれてないだけで載ってる?
コメント1件

172
デフォルトの名無しさん[sage]   投稿日:2015/04/20 22:03:30  ID:lBn3AcT1.net
>168で引用された者だが、そのレスをした時点では(そして今も)1.8.7にしかなかったよ

173
デフォルトの名無しさん[sage]   投稿日:2015/04/21 00:54:47  ID:lokfdG/n.net
>171
利用者が少ないので、そのうち機能削除と推定

174
デフォルトの名無しさん[sage]   投稿日:2015/04/21 01:25:01  ID:mlZT6oHh.net
利用者と言う観測しがたい対象の多寡で機能の有無は決まるのか?

175
デフォルトの名無しさん[sage]   投稿日:2015/04/21 03:17:05  ID:2LCbUk1L.net
Ruby-Doc.orgの方には明記されてるのが興味深い

176
デフォルトの名無しさん[sage]   投稿日:2015/04/22 17:04:26  ID:zTSSyZOc.net(2)
erbで画像を表示する方法を教えてください
ファイル名をfoo.erbとして以下のプログラムを
書いたのですがうまく表示されません
<html>
<head>
<title>foo</title>
</head>
<body>
<% a = rand 5 %>
<%= <img src="#{a}.jpg"> %>
</body>
</html>
コメント1件

177
デフォルトの名無しさん[sage]   投稿日:2015/04/22 17:50:18  ID:YVcdWSZh.net
>176
<img src=<%= "\"#{a}.jpg\"" %>>
コメント1件

178
デフォルトの名無しさん[sage]   投稿日:2015/04/22 18:12:10  ID:zTSSyZOc.net(2)
>177
できました!
ありがとうございます!

179
デフォルトの名無しさん[sage]   投稿日:2015/04/25 21:26:53  ID:7JJG1bdn.net
http://www.r-labs.org/projects/r-labs/wiki/
 └プラグインインターナル

Redmineにて、上の「Redmine の本体機能のオーバーロード」をviewsで行いたいと思ってます
そこで複数のプラグインでの同一viewのオーバーロードを試したら
どうもプラグイン名のアルファベットが後のものが優先される気がするのですが、
若いものを優先させる方法はないでしょうか?

180
デフォルトの名無しさん[sage]   投稿日:2015/04/26 01:20:48  ID:asKmOzJa.net
数独を解くプログラムをrubyで簡単に作れますか?
コメント1件

181
デフォルトの名無しさん[sage]   投稿日:2015/04/26 01:55:23  ID:L6M7+b17.net
総当りでいいなら簡単
コメント1件

182
デフォルトの名無しさん[sage]   投稿日:2015/04/26 11:23:26  ID:b8PGU3dG.net
>180
ちょうど数ヶ月前に作ったことがあるけど簡単にできるよ

183
デフォルトの名無しさん[sage]   投稿日:2015/04/26 22:45:41  ID:EyibrkcR.net
rubyじゃなくてもほぼ全ての言語で作れるな

184
デフォルトの名無しさん[sage]   投稿日:2015/04/26 23:12:28  ID:C+a0R1p+.net
どの言語が簡単なのか書かないと意味がないような

185
デフォルトの名無しさん[sage]   投稿日:2015/04/27 13:47:55  ID:EJCz8b3F.net
http://www.lifehacker.jp/2015/04/150427slush_asia_linda_liukas.html
プログラミングは画用紙とクレヨンと同じ:『Hello Ruby』の著者が語る成長の物語 #SlushAsia
Lifehacker

186
デフォルトの名無しさん[sage]   投稿日:2015/04/27 23:46:49  ID:U5G0BE7/.net
>181
総当たり式だと、他に解が無いか(複数解)の確認が必要になり、
かえって複雑になるような気がする。

187
デフォルトの名無しさん[sage]   投稿日:2015/04/28 04:18:05  ID:ZSPnkmQx.net
んなこたーない

188
デフォルトの名無しさん[sage]   投稿日:2015/04/28 09:19:39  ID:YDhB7+fs.net
結構複雑な解法アルゴリズムは背理法より時間かかったから適度に適用するのが良い
解の一意性を仮定するかどうかでも多少変わってくるが

189
デフォルトの名無しさん[sage]   投稿日:2015/04/28 22:07:24  ID:N9lyu4uw.net
数独ぐらいだったら全パターンのデータベースを作っておいて照会するのが一番早いよな
おもしろくないけどw

190
デフォルトの名無しさん[sage]   投稿日:2015/04/28 22:32:50  ID:qVL3+LTP.net
数独の全パターンを網羅するデータベースって

191
デフォルトの名無しさん[sage]   投稿日:2015/04/28 23:23:09  ID:mW9wjtdm.net
対象性を考慮したとしてもデータベース照会が速いとは思えない

192
デフォルトの名無しさん[sage]   投稿日:2015/04/28 23:44:15  ID:RGLkAIGi.net
9^81件のデータベース…
コメント1件

193
デフォルトの名無しさん[sage]   投稿日:2015/04/29 00:01:15  ID:jPUUiyrt.net
>192
解のある場合だけだとそんなに多くない
行や列や数字の入れ替え、回転、裏返し操作で同じ物を除くと更に減る
どれくらいになるかは面白そうだけどrubyではなく、数学の問題かな

194
デフォルトの名無しさん[sage]   投稿日:2015/04/29 00:37:22  ID:LCS8IA96.net(5)
確か数独の解答パターンは60000通りぐらいだと聞いたことがある
それなら十分パターン照会の方が早いかな
まぁそこまでやるならRubyにこだわる必要性は皆無だけど
コメント1件

195
デフォルトの名無しさん[sage]   投稿日:2015/04/29 00:49:01  ID:i2xwsgev.net(2)
ふつうに解く方法考えなよ・・・
万が一パターン漏れてたらどうすんの
コメント1件

196
デフォルトの名無しさん[sage]   投稿日:2015/04/29 00:49:05  ID:LCS8IA96.net(5)
あと、ヒューリスティックに解くプログラムも昔組んだことがあるけど、そんな難しくはなかったね
RCCはちょっと計算時間を要するけど、それ以外は大した計算時間も必要なかったし
(枝刈りはちゃんとやらないと計算量が爆発するけど)

197
デフォルトの名無しさん[sage]   投稿日:2015/04/29 00:53:11  ID:LCS8IA96.net(5)
>195
そういうパターンを数え上げるのはコンピュータの得意とするところでしょ
枝刈りをきちんとやれば現実的な時間で数え上げられるよ

198
デフォルトの名無しさん[sage]   投稿日:2015/04/29 06:09:19  ID:f54jgqM7.net(3)
>194
互いに影響を受けずに独立に値を決められるマスが9マスあるから少なくとも9^9通り以上だろう。

199
デフォルトの名無しさん[sage]   投稿日:2015/04/29 09:53:49  ID:q0yxqD4A.net
http://homepage3.nifty.com/imura/23sudoku/sudokuS/sudokuS.html
並べ替え・反転・回転・数字の入れ替えを考慮して5472730538通りだそうだ
データベース作れなくはないな

200
デフォルトの名無しさん[sage]   投稿日:2015/04/29 10:28:27  ID:g6CBhBxf.net(2)
こういう場合のデータベースってどんな設計にするの?
キーにできる値って何になるのか
コメント1件

201
デフォルトの名無しさん[sage]   投稿日:2015/04/29 10:29:08  ID:f54jgqM7.net(3)
数字の入れ替えありだと検索も一筋縄ではいかんな。
盤面をマス間の同値関係で表現してビットマップインデックスでも使うか。

202
デフォルトの名無しさん[sage]   投稿日:2015/04/29 10:41:20  ID:CB780E1e.net
>200
{x,y,n} を key とするlookupテーブルを用意すればいいんじゃないの?

203
デフォルトの名無しさん[sage]   投稿日:2015/04/29 10:48:29  ID:g6CBhBxf.net(2)
x,y,nって座標とマスの値ってこと?
1マスだけ指定して何が取れるテーブルにするの?
コメント1件

204
デフォルトの名無しさん[sage]   投稿日:2015/04/29 13:47:21  ID:LCS8IA96.net(5)
>203
解答パターンIDみたいなもんじゃない?
複数のx,y,nをANDでつないでいけばパターンIDがひとつに絞り込める、みたいな

205
デフォルトの名無しさん[sage]   投稿日:2015/04/29 14:35:10  ID:i2xwsgev.net(2)
凡人の俺には回答の数値を左上から順番に9 * 9 = 81列のデータベースに入れる方法しか思いつかないんだけどダメなのか
コメント2件

206
デフォルトの名無しさん[sage]   投稿日:2015/04/29 16:51:43  ID:LCS8IA96.net(5)
>205
それでもいいんじゃない?
計算量的にはどちらでも同じになりそうな気がするし

207
デフォルトの名無しさん[sage]   投稿日:2015/04/29 21:44:55  ID:U49c0tb7.net
>205
数字の入れ替えで得られるものは本質的に同じなので、データベース上の局面はすべて1行目が123456789となってる可能性もある
入れ替えと回転・反転だけなら総当りで、どれがデータベースに登録されてるか調べることはできそうだけど
リンク先を見ると総局面はユニークな局面の1兆倍ほどだから、どの局面として登録されてるかを判断するのも一苦労
コメント1件

208
デフォルトの名無しさん[sage]   投稿日:2015/04/29 22:11:51  ID:f54jgqM7.net(3)
こういう問題があったとして

 ABCD
a1 2
b   3

d 2

以下の条件を同時に満たす局面が検索できればいい。

AaとBdは異なる
AaとCaは異なる
AaとDbは異なる
BdとCaは同じ
BdとDbは異なる
CaとDbは異なる

単純にやろうとすると81*(81-1)/2=3240個のフィールドが必要になるけど。

209
デフォルトの名無しさん[sage]   投稿日:2015/04/30 11:37:07  ID:M3WUgXkG.net
なるほど
後は対称な局面を調べればいいだけか

210
デフォルトの名無しさん[sage]   投稿日:2015/04/30 20:46:55  ID:CtownvBX.net
>207
これで言おうとしてる事って、完成状態から9種の数字の個々を入れ替えても同様に完成状態として成立するって事かな?
データベースとしては1行目を一般化してa〜iという記号で固定しておけば件数かなり減りそうだ
反転とかあるから1/9!とまではいかないけど数桁削れそう

211
デフォルトの名無しさん[sage]   投稿日:2015/05/01 11:24:57  ID:eqatqBnD.net
最近勉強始めたんだけどProcクラスってなんて発音してるの
コメント1件

212
デフォルトの名無しさん[sage]   投稿日:2015/05/01 12:37:06  ID:bH7RBw4h.net
ぷろっく

213
デフォルトの名無しさん[sage]   投稿日:2015/05/01 13:46:23  ID:jAM2krsm.net
「ふろく」は無いのか

214
デフォルトの名無しさん[sage]   投稿日:2015/05/01 17:51:23  ID:tPnkV53E.net
>211
読まない、見るだけが8割
プロック
心に余裕がある時はプロセジャー

215
デフォルトの名無しさん[sage]   投稿日:2015/05/02 01:43:23  ID:5VssKqD1.net
もしかしてプロシージャ?
コメント1件

216
デフォルトの名無しさん[sage]   投稿日:2015/05/02 05:30:49  ID:PoUrbjOe.net
プロシジャーじゃない?
コメント1件

217
デフォルトの名無しさん[sage]   投稿日:2015/05/02 06:38:15  ID:xXK42ACJ.net
>215 >216 >217
http://www.merriam-webster.com/dictionary/procedure
ということで、日本語からカタカナ表記がすべて無くなればいいと思います。
コメント1件

218
デフォルトの名無しさん[sage]   投稿日:2015/05/02 10:12:34  ID:RbSXq7CR.net
カタカナ表記が無くなって皆が正確な発音を覚えるならいいけど
結局英語を見ても適当に発音して混乱するしなあ
どうなるのが良いんだろう?

>217
発音記号だけ見るとプロセヤーに見えてしまう そこの発音記号間違ってない?
コメント1件

219
デフォルトの名無しさん[sage]   投稿日:2015/05/02 15:44:39  ID:GdWsYLg4.net
nullは正しくはナルと発音するけど日本でナルって言っても通じない
一人だけ正しい発音してもねー

220
デフォルトの名無しさん[sage]   投稿日:2015/05/02 16:24:41  ID:eD8Z1MUe.net
pingも泣く泣くピングと言ってる。

221
デフォルトの名無しさん[sage]   投稿日:2015/05/02 16:33:05  ID:3eY1bcIm.net
>218
IPA準拠でない発音記号は数多くある。
というか英単語の発音でIPA準拠しているものに遭遇した記憶がない

222
デフォルトの名無しさん[sage]   投稿日:2015/05/02 16:41:51  ID:K///ApN8.net(2)
欧米人自体ラテン文字綴りは、自国語のルールで読んでると聞いたが。
日本人ならラテン文字綴りを全部訓令式ローマ字読むようなもん。
コンピュータ言語の予約語とかは違うかも知れないけど。

223
デフォルトの名無しさん[sage]   投稿日:2015/05/02 16:42:56  ID:K///ApN8.net(2)
×コンピュータ言語
◯プログラミング言語

224
デフォルトの名無しさん[sage]   投稿日:2015/05/02 17:31:20  ID:FKREMwzJ.net
どの言語にも異音があるからIPAじゃなくて音素で表現するのが普通だよね

225
デフォルトの名無しさん[sage]   投稿日:2015/05/04 10:11:15  ID:VrN6lBi/.net
λをlambdaと書かなければならない所にASCIIコードの悲しむべき限界がある。
まぁAPLみたいになられても困るのだが・・・
コメント2件

226
デフォルトの名無しさん[sage]   投稿日:2015/05/04 10:55:31  ID:+ZdhyuUD.net
>225
Jの立場がw

227
デフォルトの名無しさん[sage]   投稿日:2015/05/04 22:25:50  ID:a5/ons/h.net
>225
,\ をパースできるようにするパッチを送るチャンスだ!

228
デフォルトの名無しさん[sage]   投稿日:2015/05/05 09:14:26  ID:6w+bN4p2.net
lambdaあるんだったらblockなんて要らなくね?
関数っぽいのに()で呼べないのおかしくね?
とか考え出すとscalaやC#に近づいていってしまう。

229
デフォルトの名無しさん[]   投稿日:2015/05/10 01:26:12  ID:E8bjKhA4.net
あげ

230
デフォルトの名無しさん[sage]   投稿日:2015/05/12 18:21:52  ID:bBUMqeIN.net
node-webkitみたいな感じでSinatraで書いたウェブアプリをデスクトップアプリみたいに動かしたいんだがそういうライブラリとかあらぬ?

231
デフォルトの名無しさん[sage]   投稿日:2015/05/12 19:00:12  ID:VPfkeJkH.net(2)
複数行の文字列をソースに入力する場合にヒアドキュメントを使う意味ってなんですか?
ダブルクォーテーションやシングルクォーテーションでも改行含んでいても普通に文字列作れますが
コメント3件

232
デフォルトの名無しさん[sage]   投稿日:2015/05/12 19:05:34  ID:VPfkeJkH.net(2)
あと配列やハッシュを作るときに要素ごとにコンマを打つのがすごくめんどくさいんですけど
改行で要素を分ける仕様じゃダメだったんですか?

[
"aaa",
"bbb",
"ccc",
]

ではなく
[
"aaa"
"bbb"
"ccc"
]

でいいんじゃないかということです。
一行で書くならもちろん必要ですが、改行で要素が分かれていることは自明なわけで。
コメント4件

233
デフォルトの名無しさん[sage]   投稿日:2015/05/12 20:04:24  ID:E78u8ziX.net
俺俺言語作れや

234
デフォルトの名無しさん[sage]   投稿日:2015/05/12 20:14:26  ID:uJjQzeKQ.net
>231
ヒアドキュメントだと最初の行をその行じゃなく次の行の行頭から書けるという違いはある

>232
JSONやYAMLとかほかの言語とかとあえて違う記述を可能にする理由が無かったんでしょ
それに個人的な感想としてはブロックみたいな雰囲気を出してるからそのままだと最後の行の値を返しそうにも見える

235
デフォルトの名無しさん[]   投稿日:2015/05/12 21:23:42  ID:U8xXMNdZK
C言語以来多くの言語では文字列リテラルは改行を含む空白で
区切られていても一つのリテラルにまとめられることになっている

[
"aaa"
"bbb"
"ccc"
]

ruby でも ["aaabbbccc"] として扱われるわけであるが、
自分はこちらの挙動のほうがしっくり来る。

236
デフォルトの名無しさん[sage]   投稿日:2015/05/12 21:32:28  ID:T2eyCbcC.net
>231
ヒアドキュメントはうっかり閉じてしまう確率が格段に低い。

>232
そういう提案はある。

https://bugs.ruby-lang.org/issues/8956
https://bugs.ruby-lang.org/issues/10528

積極的に推し進める人がいないので話が進んでないみたいだけど
強い反対もなさそうなのでそのうち採用されるのかもね
コメント1件

237
デフォルトの名無しさん[sage]   投稿日:2015/05/12 22:30:23  ID:UZCLQ5ym.net
その程度の内容であればパーサ書いて自分だけ使っとけ
面倒に感じるほど配列をソース中に埋め込まなければならない
設計なんか見たら俺はリジェクトする

238
デフォルトの名無しさん[sage]   投稿日:2015/05/12 23:07:24  ID:a39hBEOU.net
>236
さすがにうっかり閉じてしまうようなケースはエディタのハイライトで気づけると思うが…
それすらできないようなエディタは窓からポイーだろうし

俺も考えてみたけど、ヒアドキュメントは単純にPerlとかからもらってきたからあるだけで
そこまでメリット・デメリットを考えて導入されたものじゃない気がする

なのでそんな違いはないので好きな方を使っとけ、ってのが結論じゃないかと
コメント1件

239
デフォルトの名無しさん[sage]   投稿日:2015/05/12 23:24:19  ID:McgsoQJk.net
>232
%W(aaa bbb ccc)

240
デフォルトの名無しさん[sage]   投稿日:2015/05/12 23:33:39  ID:avMjEYTK.net
文字列リテラルの間が空白類だと連結された一つの文字列になるんじゃなかったっけ?
空白類は改行も含む

241
デフォルトの名無しさん[sage]   投稿日:2015/05/13 01:48:17  ID:9i6gM8IV.net
>231
>232

ary = <<EOT.split
aaa
bbb
ccc
EOT

みたいに書けることは意外に知られていない気がする

242
デフォルトの名無しさん[sage]   投稿日:2015/05/13 08:48:10  ID:PDARsX4g.net
>238
いちいちエスケープするの面倒だろ
ほぼそのまま書けるのがヒアドキュメントのメリット
コメント1件

243
デフォルトの名無しさん[sage]   投稿日:2015/05/13 10:21:10  ID:5w+SdhWJ.net
>242
%記法ってのもあるんですが…

244
デフォルトの名無しさん[sage]   投稿日:2015/05/13 17:31:25  ID:/vC2Ckq+.net
PCを買い替えたのでrubyの環境構築していたのですが
Ruby2.2.2 にてbyebugのgemインストールにてdevkit入れろとエラーがでてしまいます
2.2系のDevkitが探しても無いようなのですが
まだないということでしょうか?
コメント1件

245
デフォルトの名無しさん[sage]   投稿日:2015/05/13 18:35:35  ID:AOVYLWkN.net
>244
こんなとこに書き込む暇があったら試せよ
コメント1件

246
デフォルトの名無しさん[sage]   投稿日:2015/05/13 18:47:43  ID:dkMaBjgg.net
>244
Ruby 2.0.0 and above: mingw64-32-4.7.2
Ruby 2.0.0 and above x64 (64bits): mingw64-64-4.7.2
って書いてあるから2.2.2でもいけるんじゃない?

247
デフォルトの名無しさん[sage]   投稿日:2015/05/13 19:20:26  ID:peiJ2wcY.net(2)
>245
ダウンロードページを少し読めばすぐ分かるようなことを簡単に教えちゃダメだって…。
初心者スレとはいえ、ここの住人は優しすぎると思うよ。
コメント1件

248
デフォルトの名無しさん[sage]   投稿日:2015/05/13 19:21:24  ID:peiJ2wcY.net(2)
安価間違えたカコワルイ

249
デフォルトの名無しさん[]   投稿日:2015/05/20 01:55:45  ID:JquZNGcV.net
保守

250
デフォルトの名無しさん[sage]   投稿日:2015/05/20 15:55:40  ID:PrWBPEio.net
>247

>245は教えてないじゃん
初心者スレだと、installするのがやっとで、何日もかけて何とか成功する人もいるので。

251
243 245 246[sage]   投稿日:2015/05/20 18:23:03  ID:JDqrHdgv.net
安価間違えたって書いてるでしょ。

242はRuby使うのは初めてじゃなさそう(多分1.8 or 1.9からの乗り換え)だったから、もうちっと自分で調べろよ。
と言う思いで、突き放したレスをしたのよ。
2.2とDevkitは俺も使ってるから、Devkitが問題なく動くことは知ってたんだけどさ。

そもそも、ホントの初心者なら、WindowsでRubyを使うこと自体をお勧めしないのが親切なんじゃね?

ないしは、gemがきちんと整備されてる1.9系をまず使うように案内するとか。

252
デフォルトの名無しさん[sage]   投稿日:2015/05/20 22:03:37  ID:ptbOhCsA.net
1.9以降はみんなgithubで好き勝手に作ってて整備なんかされてない気がする

253
デフォルトの名無しさん[sage]   投稿日:2015/05/21 15:30:14  ID:GdS2dqGm.net(2)
Rubyのリファレンスなどに出てくる「::」が何を表しているのかよくわかりません
例えばNokogiri::XML::NodeSetというのは何を表しているのですか?
親子関係なのかメソッド呼び出しによる返り値からさらにメソッドを呼び出してるのか……
::は一体なんなのですか?調べてもしっくりするものが出てきません
PHPであれば::はstaticのメソッドやプロパティにアクセスするための記号だなぁとわかるのですが。
手元にある「たのしいRuby」には「.」と「::」同じ意味と書いてありましたがどうもライブラリのリファレンスなどでは::と.を使い分けてるように感じます
コメント1件

254
デフォルトの名無しさん[sage]   投稿日:2015/05/21 17:59:42  ID:TIfvV/jT.net

255
デフォルトの名無しさん[sage]   投稿日:2015/05/21 19:12:10  ID:GdS2dqGm.net(2)
>254
リンクありがとうございます
すごくわかりやすいです。助かりました感謝致します。

256
デフォルトの名無しさん[sage]   投稿日:2015/05/22 21:21:58  ID:6YiaeImK.net
Rakeでファイルがローカルにすでにあればそれを使って
なければwgetするタスクってないのん?

257
デフォルトの名無しさん[sage]   投稿日:2015/05/24 19:53:45  ID:BGt14oQU.net
rake単体でできない事もないがBundlerを使った方が簡単だろう

258
デフォルトの名無しさん[sage]   投稿日:2015/05/25 21:09:31  ID:bs/1Uzyk.net
curbで gem install curbは完了して
Curlで何か書こうかなーと思ったら
ruby -e "$(curl -fsSL https://www.google.co.jp/";)ってやったら
-e:1: `$(' is not allowed as a global variable name

ってなちゃって(´・ω・`)
curl --help は動くんだけどなんででしょー(´・ω・`)
Windows7 64bit Ruby2.2.2 コマンドプロンプトです。

スキルはdotinstall ruby半年前に全部見た程度です。

259
デフォルトの名無しさん[sage]   投稿日:2015/05/25 21:43:06  ID:z53Lnibbr
curb関係ない
"$()"が"$(")になってる
コマンドプロンプトで"$()"はおそらく使えない
curlで得たHTMLをRubyでevalする意味が分からない

260
デフォルトの名無しさん[sage]   投稿日:2015/05/25 22:17:45  ID:o6nCxH6o.net
とりあえずダブルクォーテーションの対応おかしくね

261
デフォルトの名無しさん[sage]   投稿日:2015/05/26 01:24:33  ID:w5o9scD7.net
なんでって、そうなるように書かれたから

262
デフォルトの名無しさん[sage]   投稿日:2015/05/26 14:38:46  ID:ty86ilJR.net(2)
Mechanize::PageオブジェクトにあるメソッドをNokogiri::XML::NodeSetで使う方法はありますか?

263
デフォルトの名無しさん[sage]   投稿日:2015/05/26 14:39:14  ID:ty86ilJR.net(2)
2重書き込みのため表示しません 内容を確認する

264
デフォルトの名無しさん[sage]   投稿日:2015/05/27 00:39:56  ID:nI5vt9oP.net
Yes.

265
デフォルトの名無しさん[]   投稿日:2015/05/28 15:47:34  ID:o+E2fSxO.net
p '! 1 2 3'.scan(/(!)(\s\d)+/)

[['!', ' 1', ' 2', ' 3']]
ではなく
[['!', ' 3']]
になるのはなんで?

266
デフォルトの名無しさん[sage]   投稿日:2015/05/28 16:17:58  ID:4ci5OfPn.net
!と連続してるから当然だろ。
p '! 1 2 3'.scan(/\s?[!\d]/)

267
デフォルトの名無しさん[sage]   投稿日:2015/05/28 16:24:26  ID:DR5ziRfz.net
テスト
p '1 2 3 4'.scan(/\s\d/) #→ [" 2", " 3", " 4"]
p '1 2 3 4'.scan(/(\s\d)/) #→ [[" 2"], [" 3"], [" 4"]]
p '1 2 3 4'.scan(/(\s\d)+/) #→ [[" 4"]]
p '1 2 3 4'.scan(/\s?\d/) #→ ["1", " 2", " 3", " 4"]

268
デフォルトの名無しさん[sage]   投稿日:2015/05/28 22:21:18  ID:k3niE8s3.net
'! 1 2 3'.scan(/(!)(\s\d)(\s\d)(\s\d)/)
なら
[["!", " 1", " 2", " 3"]]
なのにね

'! 1 2 3'.scan(/(!)(\s\d){3}/)

[["!", " 3"]]

269
デフォルトの名無しさん[sage]   投稿日:2015/05/28 22:48:12  ID:hjZS/GsK.net
いや, キャプチャを量指定子で繰り返したらキャプチャ対象なるのはキャプチャ部分に対する最後のマッチだけだろ(正規表現の一般論として)
コメント1件

270
デフォルトの名無しさん[sage]   投稿日:2015/05/28 23:03:42  ID:dLu0WU3T.net
繰り返し何回マッチしたかによってそれ以降のキャプチャを参照する番号が変わるなんてことになったらいやすぎる

271
デフォルトの名無しさん[sage]   投稿日:2015/05/28 23:41:22  ID:fjZg4KPN.net
>269
それが結論のようですね

p '1234'.scan(/(.)/) #→ [["1"],[" 2"], [" 3"], [" 4"]]
p '1234'.scan(/(.)+/) #→ [[" 4"]]
コメント1件

272
デフォルトの名無しさん[sage]   投稿日:2015/06/01 02:21:48  ID:Y1SfGQAR.net
>271
これと逆なんですけど

p "1234".slice(/./) # "1"
p "1234".slice(/.+/) # "1234"

273
デフォルトの名無しさん[sage]   投稿日:2015/06/01 08:21:10  ID:vSxmWzhu.net
それの何が問題なの

274
デフォルトの名無しさん[sage]   投稿日:2015/06/02 00:28:30  ID:8518yJU4.net
そりゃ逆に書いてるんだから逆になるだろ

275
デフォルトの名無しさん[sage]   投稿日:2015/06/02 00:57:14  ID:9qmhtiu9n(2)
scanとsliceを比較する意味が分らん

276
デフォルトの名無しさん[sage]   投稿日:2015/06/02 01:32:52  ID:YSKGxbzH.net
すいません
+があると出力が少なくなる場合と多くなる場合があったのを発見

277
デフォルトの名無しさん[sage]   投稿日:2015/06/02 02:36:26  ID:Im+YEyTj.net

意味不

278
デフォルトの名無しさん[sage]   投稿日:2015/06/02 18:15:19  ID:vepkkYh3.net
Railsの質問なのですが
<%= form_tag({controller: 'ajax', action: 'result'}, remote:true) do %>
...
<% end %>
上記form_tagを実行した場合

<form accept-charset="UTF-8" action="/ajax" data-remote="true" method="post">
<div style="display:none"><input name="utf8" type="hidden" value="&#x2713;" /></div>
...
</form>

指定したactionではないページが作成されてしまうのですが、このような場合なにか原因が考えられるでしょうか?
Windows
Ruby 2.1.5
Rails 4.2.1 を使用しています

279
デフォルトの名無しさん[sage]   投稿日:2015/06/02 19:01:49  ID:NaslPVjy.net

280
デフォルトの名無しさん[sage]   投稿日:2015/06/02 22:00:34  ID:jU2A440n.net
1 && 2がなんで1になるんでしょうか?
コメント2件

281
デフォルトの名無しさん[sage]   投稿日:2015/06/02 22:17:04  ID:w3ztcJiD.net
1 は真だから、2 は評価しない
偽は nil か false だけ
コメント1件

282
デフォルトの名無しさん[sage]   投稿日:2015/06/02 22:34:51  ID:9qmhtiu9n(2)
>280
ならんぜよ
http://ideone.com/HeMIED

>281
それは||ぜよ

283
デフォルトの名無しさん[sage]   投稿日:2015/06/03 00:13:17  ID:JxGyv6Qf.net
irb(main):001:0> 1 && 2
=> 2

284
デフォルトの名無しさん[sage]   投稿日:2015/06/03 00:31:54  ID:0f9O3Aau.net
すいません、頭がごっちゃになってたみたいです

irb(main):001:0> 2 && 1
=> 1
irb(main):002:0> 1 && 2
=> 2

x && yは、xが真ならyの値を返す仕様と理解しました

285
デフォルトの名無しさん[sage]   投稿日:2015/06/03 02:16:48  ID:OhDMuo8z.net(2)
「x && y」は結果が
真の時にyを
偽の時にxを
返すみたいだね。
コメント1件

286
デフォルトの名無しさん[sage]   投稿日:2015/06/03 02:16:50  ID:+cj40TuI.net(2)
逆に x || y はxが真ならxの値を返す仕様です

これらの仕様はちょっとした条件分岐のイディオムとして使ったりする
多用すると糞コードだけど

287
デフォルトの名無しさん[sage]   投稿日:2015/06/03 02:20:18  ID:OhDMuo8z.net(2)
&&も||も真偽が確定した時の値を返すってことだね
コメント1件

288
デフォルトの名無しさん[sage]   投稿日:2015/06/03 16:48:17  ID:bMkxvijs.net
>285-287
知らなかった、これから使おう

x=false
y=true

p x && y #false
p y && x #false
p x || y #true
p y || x #true

289
デフォルトの名無しさん[sage]   投稿日:2015/06/03 17:03:31  ID:tdUAPzML.net
&&は、且つ。||は、または。
x && yの場合、xがnot falseなら、次にyが評価される
x || yの場合、xがfalseなら、次にyが評価される。
&&、||ともに条件式の真偽値が確定した段階で評価を終了する

290
デフォルトの名無しさん[sage]   投稿日:2015/06/03 17:27:47  ID:mLaeXcpL.net
ruby は1/0 で true/faliseとしないが敢えて
 1 = true = 真
 0 = false = 偽
で説明

http://upload.wikimedia.org/wikipedia/ja/7/7b/Venn-Diagram-AND.png
【論理積 / AND演算 / &&】
1 x 1 = 1
1 x 0 = 0
0 x 1 = 0
0 x 0 = 0
 積ってある通り、両方とも 1 でないと 1 にはならない。逆に言うと片方が 0 なら 0 だ。

http://upload.wikimedia.org/wikipedia/ja/5/5e/Venn-Diagram-OR.png
【論理和 / OR演算 / ||】
1 + 1 = 1 ← まぁ 0 ではないよって事w
1 + 0 = 1
0 + 1 = 1
0 + 0 = 0
 和ってある通り、両方とも 0 でないと 0 にならない。逆に言うと片方が 1 なら 1 だ。


>287 の指摘通り
A && B はAが偽ならBがどうだろうと全体で偽が確定なのでBは評価(実行)せず
A || B はAが真ならBがどうだろうと全体で真が確定なのでBは評価(実行)せず

・・・わかりづらいかw

291
デフォルトの名無しさん[sage]   投稿日:2015/06/03 20:59:25  ID:+cj40TuI.net(2)
長い
3行にまとめろ

292
デフォルトの名無しさん[sage]   投稿日:2015/06/03 23:24:11  ID:ciz6E00S.net
話をややこしくするけど C とかだと && や || は 0 か 1 しか返さないから 1 && 2 とか 2 || 1 みたいなのも 1 になるんだよな
Ruby だとどっちも 2 になるのな

http://ideone.com/X28ve7
https://ideone.com/90E5kx

293
デフォルトの名無しさん[sage]   投稿日:2015/06/04 07:10:03  ID:/AL4RUwW.net
Perl 由来なんじゃない?
コメント1件

294
デフォルトの名無しさん[sage]   投稿日:2015/06/04 07:45:29  ID:UDpXUDZ8.net
Perlだと open or die とかやるよね

295
デフォルトの名無しさん[sage]   投稿日:2015/06/05 02:46:17  ID:vgtnI7Mx.net
>293
OSSで配布されるshスクリプトを覗けばわかるけど、&&や||なんて幾らでも見かけるよ
こうい評価式に関しては、一度、schemeやelispを触ってからだと理解しやすいのかも
(and () ())
(or () ())

296
デフォルトの名無しさん[sage]   投稿日:2015/06/07 20:56:05  ID:tz2PkCph.net
2.2系でwebrickを一旦停止から再始動するのはどしたらいいの?
二回目のstartで例外が起きてしまうんだけど
環境は ASR 2.2.0 Win7(32) / 2.2.2 Freebsd11(64) / 2.2.[0-2] Ubuntu14.04(64)

require 'webrick'
s = WEBrick::HTTPServer.new
Thread.new { sleep 2; s.stop }
s.start
Thread.new { sleep 2; s.shutdown }
s.start
puts 'Success'

<<エラーログ>>
[2015-06-07 20:37:27] ERROR NoMethodError: undefined method `[]' for nil:NilClass
/opt/rubies/2.2.2/lib/ruby/2.2.0/webrick/server.rb:174:in `block in start'
.<2050 回リピート>

/opt/rubies/2.2.2/lib/ruby/2.2.0/webrick/server.rb:333:in `cleanup_shutdown_pipe': undefined method `each' for nil:NilClass (NoMethodError)
from /opt/rubies/2.2.2/lib/ruby/2.2.0/webrick/server.rb:202:in `block in start'
from /opt/rubies/2.2.2/lib/ruby/2.2.0/webrick/server.rb:32:in `start'
from /opt/rubies/2.2.2/lib/ruby/2.2.0/webrick/server.rb:162:in `start'
from /tmp/web.rb:9:in `<main>'

297
デフォルトの名無しさん[sage]   投稿日:2015/06/08 01:34:35  ID:mgWlS5+H.net
停止っていうのが何のかよくわからんが
['INT', 'TERM'].each{|i| Signal.trap(i){puts"Hello, world!"}}
とかじゃダメなのかな
コメント1件

298
デフォルトの名無しさん[sage]   投稿日:2015/06/08 04:20:13  ID:jibIjF7D.net(2)
>297
それではサービスが稼働しっぱなしなのでよろしくないのです
やりたいのは、webrickを生かしたままで任意の時点で改造すること
弄っている最中はなるべくリクエストを受けたくないわけでして
Rubyを使わずファイヤーウォールで止める手もあるけれども……


それと停止とはどういう状態なのか分かってなかったので軽く調べてみた
netstat と telnetで観察してみるとこんな感じ

2.2: stop時 port closed 接続確立不能
  再開後 例外発生
2.1: stop時 port lisning 接続確立可能 リクエスト送信可能
  再開後 受信キューに貯まったリクエストを取得し、応答を開始

もしや2.2はlisten portを閉じてるから、再startでaccept出来なくなってる?

299
デフォルトの名無しさん[sage]   投稿日:2015/06/08 14:20:56  ID:jibIjF7D.net(2)

300
デフォルトの名無しさん[sage]   投稿日:2015/06/09 00:26:22  ID:X2ZYuZ0V.net
文字列 "abxcd(exfgxhij)klmnxoxpq" で
かっこ内のxだけ削除する簡単な記法はありまでしょうか?

これまで "("でsplitして削除し、最後にjoin("(")を していました。
コメント1件

301
デフォルトの名無しさん[sage]   投稿日:2015/06/09 02:37:13  ID:d2G2JwTT.net(2)
文字列が"abxcd(exfgxhij)klmnxoxpq"ってあらかじめ分かってるんだから
削除済みの文字列リテラルを書けばOK。
意図が分かりずらくなりそうならコメントに # かっこ内のxだけ削除 とか書けばよい。
コメント1件

302
デフォルトの名無しさん[sage]   投稿日:2015/06/09 08:06:56  ID:ms43utQc.net(2)
>301
どう曲解したら文字列が固定になるんだよ。頭弱いのか?それとも295を煽ってるつもりか?

295の提示した条件も曖昧過ぎだけどさ。
コメント1件

303
デフォルトの名無しさん[sage]   投稿日:2015/06/09 09:23:17  ID:wLd87YRu.net(2)
>300
こんな感じでどう?
str="abxcd(exfgxhij)klmnxoxpq"
puts str.gsub(/((?<=\().*(?=\)))/){|c| c.gsub(/x/,"")}
コメント1件

304
デフォルトの名無しさん[sage]   投稿日:2015/06/09 09:26:34  ID:ms43utQc.net(2)
改めて読むとsplitとjoinで元に戻るということは、

■確定
・小カッコは1つのペアだけが必ずある。
・小カッコ中にxは2個発生する可能性がある。
・小カッコの前後にもxは発生する。

■不確定
・小カッコ中のxは2個以外発生するかも知れない。発生しないかも知れない。

・・・と思ったけど295のやり方だと、splitしたあとの"("後ろの文字列は
"exfgxhij)klmnxoxpq"
になる。これからxを消してしまうと")"の後ろのxも消えない?
コメント1件

305
デフォルトの名無しさん[sage]   投稿日:2015/06/09 10:02:23  ID:t6/3em7f.net
>303
その正規表現において、先読み・後読みは不要

素直に /\(.*\)/ でOK
コメント1件

306
デフォルトの名無しさん[sage]   投稿日:2015/06/09 10:20:24  ID:wLd87YRu.net(2)
>305
本当だ。キャプチャするんだから必要ないですよねw

307
デフォルトの名無しさん[]   投稿日:2015/06/09 12:04:23  ID:J2H5hRFH.net
教えてください。

undefined method `cache' for Gem:Module (NoMethodError)
とエラーが出ます。
gem install cacheとインストール済みのはずです。

よろしくお願いします。

308
デフォルトの名無しさん[sage]   投稿日:2015/06/09 21:31:19  ID:d2G2JwTT.net(2)
いや
あえて的外れな答を提示しておいて反論として正答を引き出すのが狙いだ

309
デフォルトの名無しさん[sage]   投稿日:2015/06/09 21:43:45  ID:+VzixiOx.net
>302-306
ありがとうございます。
gsub(/ /){|c| c.gsub(/x/,"")}
でトライしてみます。 そんなやり方があるのを知りませんでした。

じっさいは htmlソース中の <a ..> のカギ括弧内から
不要な要素を削り、必要な要素(たとえばhref)だけを残すすっきりした書き方がわからなかったからでした。

<a title="**" href="http://**"target="** rel="**" class='**' onmouseout="**">

>304
>これからxを消してしまうと")"の後ろのxも消えない?
ありゃ、そうでした、バグでした。
コメント1件

310
デフォルトの名無しさん[sage]   投稿日:2015/06/10 05:45:48  ID:T+RB9DK5.net
>309
その目的ならnokogiri を使った方がいい。

311
デフォルトの名無しさん[]   投稿日:2015/06/11 05:38:31  ID:PXBCUrWo.net(4)
p %q(#{a+1})実行した時に、"#"の前に出力される"\"ってなぜ出力されるのですか?

irb(main):002:0> p %q(#{a+1})
"\#{a+1}"
=> "\#{a+1}"

312
デフォルトの名無しさん[sage]   投稿日:2015/06/11 06:35:26  ID:ROKJmOMSv
そう出力されるようになってるからじゃない?
p
inspect

313
デフォルトの名無しさん[sage]   投稿日:2015/06/11 07:13:05  ID:8bPOERyx.net
p は出力したものをそのままRubyに食わせてもいいように変換しているから(デバッグ用)

314
デフォルトの名無しさん[sage]   投稿日:2015/06/11 07:16:43  ID:FjLBTU+U.net(4)
p '"'実行した時に、"の前に出力される\ってなぜ出力されるのですか?
ってのと同じこと。
コメント1件

315
デフォルトの名無しさん[sage]   投稿日:2015/06/11 08:24:52  ID:PXBCUrWo.net(4)
>314
p '"'の結果の\はエスケープ(?)って理解したのですが、
p '#'とした時に\が出力されないのって何でなんでしょうか?

irb(main):019:0> p '#'
"#"
=> "#"

316
デフォルトの名無しさん[sage]   投稿日:2015/06/11 10:00:55  ID:FjLBTU+U.net(4)
#じゃなくて#{}などとして初めてエスケープする必要があるから

317
デフォルトの名無しさん[sage]   投稿日:2015/06/11 10:28:19  ID:FjLBTU+U.net(4)
puts "#" #=> #
puts "#{1+2}" #=> 3
puts "\#{1+2}" #=> #{1+2}
これで分からない?

318
デフォルトの名無しさん[sage]   投稿日:2015/06/11 11:47:30  ID:PXBCUrWo.net(4)
'#{'は'#'と'{'で別々じゃなくて、'#{'でまとめて処理すると理解しました。

irb(main):033:0> p '#{'
"\#{"
=> "\#{"

319
デフォルトの名無しさん[sage]   投稿日:2015/06/11 12:03:09  ID:PXBCUrWo.net(4)
これで完全に理解しました

1. pメソッドはputsとinspectの機能を併せ持ったメソッド
2. inspectメソッドは制御文字や非アスキー文字をバックスラッシュ記法に置き換えた文字列を返すので
"#{"は"#{"に置き換わる

320
デフォルトの名無しさん[sage]   投稿日:2015/06/11 12:17:34  ID:FjLBTU+U.net(4)
"#$foo", "#@foo", "#@@foo"なんかもあるけどね

321
デフォルトの名無しさん[age]   投稿日:2015/06/11 17:07:28  ID:k6fmyMb0.net(2)
ary = [1, 2, 2, 3, 4]
ary2 = Array.new

以上のようなaryって配列があったとしてここから2(数値)の位置を
ary2に入れる方法ってありますか?
ary2 << ary.find_index(2)だと1しか入りませんでした
この場合だと1,2が入っていてほしいのですが
コメント2件

322
デフォルトの名無しさん[age]   投稿日:2015/06/11 17:54:24  ID:k6fmyMb0.net(2)
>321 ですが
ary.each_index.select{|i| ary[i] == 2}
で、できました

323
デフォルトの名無しさん[sage]   投稿日:2015/06/11 23:29:37  ID:tlYNnI/3.net
俺も昔同じ事したことある!って思って確かめてみたらずっと劣悪な方法だったww
コメント1件

324
デフォルトの名無しさん[]   投稿日:2015/06/12 08:18:37  ID:H4QZivGM.net
Rubyのような無駄に電力使う言語は使うべきではない
Rubyは人類の地球の敵

325
デフォルトの名無しさん[sage]   投稿日:2015/06/12 10:18:54  ID:Zv8/wash.net
と、無駄にサーバに負荷をかけているお前はより害悪

326
デフォルトの名無しさん[sage]   投稿日:2015/06/12 11:20:08  ID:X4ZGEAJo.net
Array.selectのブロック内部でary[i]とか使いたくないな

ary.map.with_index {|item, index| item == 2 ? index : nil }.compact

人それぞれ

327
デフォルトの名無しさん[sage]   投稿日:2015/06/13 00:07:45  ID:pXK4iExZ.net
ちなみに>323で言った俺バージョンはこちら。

ary.each_with_index.reduce([]){|s, i| i[0] == arg ? s << i[1] : s}

328
デフォルトの名無しさん[sage]   投稿日:2015/06/13 03:19:47  ID:+mI+miZs.net
>321 をみて、最初に思いついたやつ
ary.each_with_index.select{|a,b| a==2}.map(&:last)

329
デフォルトの名無しさん[sage]   投稿日:2015/06/13 14:24:50  ID:upMXSc0p.net(4)
utf8が\nnnの8進数エスケープに変換されてしまっている時に
お手軽に元のutf8に戻すやり方はありますか?

330
デフォルトの名無しさん[sage]   投稿日:2015/06/13 14:29:15  ID:upMXSc0p.net(4)
pythonだと
.decode('string_escape')
でできるみたいなんですが
rubyだとstring_escapeがないみたいです

331
デフォルトの名無しさん[sage]   投稿日:2015/06/13 15:37:54  ID:NUKk6CPY.net(2)
pack/unpackじゃね

332
デフォルトの名無しさん[sage]   投稿日:2015/06/13 18:23:37  ID:upMXSc0p.net(4)
gsub(/(\\\d{3})+/){|str| str.force_encoding("UTF-8").scrub}
みたいな感じでできることはできるんですが
irbで直接入力したら表示できるので
eval使ったりしてシンプルにならないかなぁと
コメント1件

333
デフォルトの名無しさん[sage]   投稿日:2015/06/13 18:27:32  ID:NUKk6CPY.net(2)
ソースを書き換えたいの?

334
デフォルトの名無しさん[sage]   投稿日:2015/06/13 18:45:10  ID:8LIXyQs2N(2)
>332
> '\343\201\273\343\201\222'
=> "\\343\\201\\273\\343\\201\\222"
> eval '"' + '\343\201\273\343\201\222' + '"'
=> "ほげ"

335
デフォルトの名無しさん[sage]   投稿日:2015/06/13 18:37:21  ID:upMXSc0p.net(4)
すいません、書き方悪かったです
irb上で"\nnn"表記の文字列を評価すると
正しく日本語表示できるので
上に書いたみたいな直接的なやり方でなくて
eval使えないかなと思った次第です

336
デフォルトの名無しさん[sage]   投稿日:2015/06/13 18:56:38  ID:8LIXyQs2N(2)
意味が分らん

337
デフォルトの名無しさん[sage]   投稿日:2015/06/14 22:41:43  ID:mX+deoEx.net
解決しました
普通にpなりputsなりするだけでokでした

338
デフォルトの名無しさん[]   投稿日:2015/06/15 05:26:05  ID:TKCLtNo1.net
x 書き方悪かった
o 頭が悪かった

339
デフォルトの名無しさん[]   投稿日:2015/06/15 08:28:37  ID:f/UEz8h4.net(2)
できたと思ったらできてませんでした
結局、以下のような感じで無理やりやってます
str.gsub(/((\\\d{3})+)/) do
$1[1..-1].split("\\").map{|b| b.to_i(8)}.pack("C*").force_encoding("UTF-8").scrub
end
賢い方にシンプルな方法を教えていただけると嬉しいです

340
デフォルトの名無しさん[sage]   投稿日:2015/06/15 10:05:48  ID:623SBX0v.net
str='A \343\201\202'
puts str

str.gsub!(/\\([0-7]{3})/){ [$1.to_i(8)].pack("C")}
puts str
とか?
コメント1件

341
デフォルトの名無しさん[]   投稿日:2015/06/15 12:59:22  ID:f/UEz8h4.net(2)
>340
ありがとうございます!
なんか無駄なことしてますね、自分
文字数制限で途中のバイトで切れてしまうことがあるので
force_encoding('UTF-8').scrub
つけてバッチリです

342
デフォルトの名無しさん[]   投稿日:2015/06/16 13:43:30  ID:2URK/h9L.net(2)
t = Thread.new {p "test"}
で"test"と表示されないのですが、なぜでしょうか?

t = Thread.new {p "test"}
t.join
だと"test"と表示されます。 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)

343
デフォルトの名無しさん[sage]   投稿日:2015/06/16 14:17:00  ID:GRyCax2n.net
メインスレッドが終わったらプロセスも終わるから

344
デフォルトの名無しさん[sage]   投稿日:2015/06/16 14:33:03  ID:2URK/h9L.net(2)
理解しました、ありがとうございます。

345
デフォルトの名無しさん[sage]   投稿日:2015/06/17 04:14:33  ID:HjULUL/P.net
>280-295
Pythonでもそうだけど、A && B, A || B は、
先にAを評価して、答えが決まれば、Bを評価しない短絡評価

ただし短絡評価は、A,Bが評価された時に、
変化しない変数なら問題はないが、

C() && D() のような関数(メソッド)の場合には、
後のD()が、実行されるかされないのか、
一目でわからないため、バグを生みやすく、
こういう書き方は推奨されない
コメント2件

346
デフォルトの名無しさん[sage]   投稿日:2015/06/17 05:04:34  ID:C7srkQEQc(2)
> C() && D() のような関数(メソッド)の場合には、
> 後のD()が、実行されるかされないのか、
> 一目でわからないため
わかるよ…w

347
デフォルトの名無しさん[sage]   投稿日:2015/06/17 07:23:03  ID:q4tkpwL/.net
>345
推奨されないって、何かのガイド?
それとも君の感じた雰囲気?
今時、短絡評価すら理解してないプログラマ向けの事まで気にしながら書くんじゃあ、COBOL並の表現力しか無くなるだろ。

348
デフォルトの名無しさん[sage]   投稿日:2015/06/17 10:36:28  ID:N2ZtzNxW.net(2)
>345
なぜ関数なら一目でわからず変数なら一目で分かるの?

349
デフォルトの名無しさん[sage]   投稿日:2015/06/17 11:55:40  ID:C7srkQEQc(2)
あんまりいじめるなよ

350
デフォルトの名無しさん[sage]   投稿日:2015/06/17 11:50:38  ID:oWNuaF3B.net
変数なら一目でわかるから問題ないのではなく、変数なら一目でわからなくても構わないから問題ないということでしょ

351
デフォルトの名無しさん[sage]   投稿日:2015/06/17 12:07:28  ID:7KhQ6AFD.net
そんなこと
内部状態を変更するメソッドと
真偽判定するためだけの関数を
見てすぐ判るようにしておけばいい
そのために Ruby は ! を選んだ
コメント1件

352
デフォルトの名無しさん[sage]   投稿日:2015/06/17 13:01:51  ID:N2ZtzNxW.net(2)
だからさ、関数に副作用があろうが短絡評価に何の影響もないでしょ
内部状態を変更しようが返り値がわかればいいんだから

353
デフォルトの名無しさん[sage]   投稿日:2015/06/17 22:27:23  ID:7BaHL0e3.net
デフォルト値を代入するイディオムとか君使ってないの?

そもそもrubyでメソッドっていうと
内部状態を変更する意図の全くないアクセサとかさえも
メソッドなんだけど?

354
デフォルトの名無しさん[sage]   投稿日:2015/06/17 22:30:42  ID:DKqtm4ef.net
話が噛み合っていない人が混ざると全てがカオスに見えてくる

355
デフォルトの名無しさん[sage]   投稿日:2015/06/18 09:25:40  ID:TyCwIxIX.net
おまいら忘れてるかも知れないが、ここは初心者スレだぜ。
その程度のドカタであるおまいらに向けて、337さんが、テストも書かずにカスみたいなバグを量産してで同僚を困らせるなよ。
と忠告してあげてるんだ。
ありがたく聞きなさい。

356
デフォルトの名無しさん[sage]   投稿日:2015/06/18 09:32:05  ID:7/h/PzkV.net
>351
驚き最小の原則のためにビックリマークを増やした訳か

357
デフォルトの名無しさん[sage]   投稿日:2015/06/18 19:36:51  ID:sk5olvXp.net
そして、ビックリマークがついてるのに内部状態が変わっていない!
ビックリマークがついてないのに内部状態が変わってる!

という驚きを増やしてしまったわけだなw


そんなルールを作る前に、ビックリマークがついている時だけ
内部状態が変わるような仕組みを言語自体に搭載しろよ・・・。
コメント1件

358
デフォルトの名無しさん[sage]   投稿日:2015/06/19 08:55:27  ID:QPr8sq8T.net
>357
自分は経験無いんだけど、参考までに具体例が出せれば教えてください。

359
デフォルトの名無しさん[sage]   投稿日:2015/06/19 09:41:02  ID:fjcNZFIQ.net
String#clearとかいくらでもあるだろうに
コメント1件

360
デフォルトの名無しさん[sage]   投稿日:2015/06/19 13:16:56  ID:X+CwqWOz.net
http://qiita.com/tadsan/items/7baab2605a4d8ac1858e
> みなさまだいすきな Ruby on Rails さんは「!は破壊的」なんて虚構の原則にはまるっきり従ってません。

ワロタw

361
デフォルトの名無しさん[sage]   投稿日:2015/06/19 14:37:09  ID:0iuq1jE/.net
定期的にこの話題になるな

362
デフォルトの名無しさん[sage]   投稿日:2015/06/19 15:02:44  ID:FzphauAa.net
Railsはメソッドどころか言語体系を破壊しているな

363
デフォルトの名無しさん[sage]   投稿日:2015/06/19 17:00:56  ID:Cuyp0r6Z.net
>359
いわれればそうだな
出力のないメソド
他動詞と自動詞

364
デフォルトの名無しさん[]   投稿日:2015/06/20 04:49:37  ID:TX3yB/JP.net
hashメソッドで取得した値は何に使うんでしょうか?
(何か使い道ってありますか?)

irb(main):001:0> "string".hash
=> 1997604647
コメント1件

365
デフォルトの名無しさん[]   投稿日:2015/06/20 05:44:22  ID:m/GPi3MC.net
>364
文字列の比較を何度も行うときは
hashで比較して一致するときだけ文字列でもう一度比較

366
デフォルトの名無しさん[]   投稿日:2015/06/20 19:37:56  ID:avbrfGtl.net
ruby3.0出たら本気出す


367
デフォルトの名無しさん[sage]   投稿日:2015/06/20 23:15:39  ID:ysSeXR2X.net
ruby 2.1.6p336 (2015-04-13 revision 50298) [x64-mingw32]
win7 64
を使用しています

nokogiriを使用してwebスクレイピングを始めたのですが
コマンドプロンプトに出力される内容が文字化けしてしまいます。

対処方法を教えていただきたいです

よろしくおねがいします。
コメント2件

368
デフォルトの名無しさん[sage]   投稿日:2015/06/20 23:18:29  ID:g/mzTnpr.net
nokogiriはutf8だろうから、sjisに変換すればいいんじゃないかな
と何も調べずに書いてみる

369
デフォルトの名無しさん[sage]   投稿日:2015/06/21 01:12:17  ID:3VZnQzoZ.net
逆にコマンドプロンプトを、UTF-8に出来ないのか?


それか、コマンドプロンプトに出力せずに、
ファイルに出力するとか

370
デフォルトの名無しさん[sage]   投稿日:2015/06/21 01:26:51  ID:trS59Vlk.net
スレチかも知れんがコマンドプロンプトなら
「chcp 932」でsjisへ
「chcp 65001」でutf8へ
文字コードを変更できるよ。

371
デフォルトの名無しさん[sage]   投稿日:2015/06/21 04:15:08  ID:/JS5ft5/.net
chcp 65001 バグがあって
右端まで表示するとボロボロになるんだよなー

372
デフォルトの名無しさん[sage]   投稿日:2015/06/21 05:15:32  ID:GwSFg/Wt.net
comspecをpowershellに変更する(超適当)

373
デフォルトの名無しさん[]   投稿日:2015/06/23 02:38:29  ID:C02P46O1.net
powershell または、powershell_ise は、

.NET環境だけど、Rubyも動くの?

374
デフォルトの名無しさん[sage]   投稿日:2015/06/23 02:43:03  ID:UdZmnE2/.net
>367
cygwinを使えばいいんじゃね?

375
デフォルトの名無しさん[sage]   投稿日:2015/06/26 09:10:38  ID:s8FXX7HP.net(2)
ruby 2.2.2を使っている状態で
$ bundle install --path vendor/bundle
すると、vendor/bundle/ruby/2.2.0
が作られるんだけど、なんで2.2.0なの?
Gemfileにrubyのバージョンは指定していない

376
デフォルトの名無しさん[sage]   投稿日:2015/06/26 09:31:54  ID:QfFX6qdc.net
最後の0はワイルドカードみたいなもの

377
デフォルトの名無しさん[sage]   投稿日:2015/06/26 15:05:39  ID:s8FXX7HP.net(2)

378
デフォルトの名無しさん[]   投稿日:2015/06/26 18:36:13  ID:Kh92atrX.net(2)
rubyでsqlite3使いたくて
sqlite-shell-win32-x86-3081002.zip、sqlite-dll-win32-x86-3081002.zip
をダウンロードして、「gem install sqlite3-ruby」、「gem install dbi」、「gem install dbd-sqlite3」を実行したんだけど、
C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/dbi-0.4.5/lib/dbi.rb:300:in `block in load_driver': Unable to load driver 'SQLite3' (underlying error: uninitialized constant DBI::DBD::SQLite3) (DBI::InterfaceError)
from C:/Ruby22-x64/lib/ruby/2.2.0/monitor.rb:211:in `mon_synchronize'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/dbi-0.4.5/lib/dbi.rb:242:in
`load_driver'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/dbi-0.4.5/lib/dbi.rb:160:in
`_get_full_driver'
from C:/Ruby22-x64/lib/ruby/gems/2.2.0/gems/dbi-0.4.5/lib/dbi.rb:145:in`connect'
from db_sample.rb:6:in `<main>'
って表示されました。これってどういう意味ですか?

ちなみに
require 'rubygems'
require 'dbi'

studentsdb = DBI.connect ( 'DBI:SQLite3:students01.db' )

studentsdb.select_all( 'select * from students' ) do |row|
print "----\n"
print "name = #{row[0]}\n"
print "age = #{row[1]}\n"
end

studentsdb.disconnec

こんな感じのプログラム

(作りながら学ぶRuby入門をそのまま試してみた感じです)

379
デフォルトの名無しさん[]   投稿日:2015/06/26 22:01:02  ID:Kh92atrX.net(2)
ruby 2.1.6 でやったらいけた
んー

380
デフォルトの名無しさん[]   投稿日:2015/06/27 14:21:12  ID:+6vnIAsZ.net
bundler gem GEM [OPTIONS]
の、オプションの仕様が書かれてるサイトを教えてくれ。
1.10系のドキュメントはこれしか見つからない。
http://bundler.io/v1.10/man/gemfile.5.html

381
デフォルトの名無しさん[sage]   投稿日:2015/06/27 22:40:19  ID:aFv5L/Yw.net
bunder のソースコードを嫁!

382
デフォルトの名無しさん[]   投稿日:2015/07/02 16:24:19  ID:umOe3By3.net(2)
質問なのですが
配列aの要素と配列bの要素を全通り足し算させるにはどんなコードを書けばいいのでしょうか?

例えばa=[1,2,3] b=[4,5,6]のときに
(1+4)、(1+5)、(1+6)、(2+4)、(2+5)、(2+6)、(3+4)、(3+5)、(3+6)
と、全通り計算させたいです

a.each do でできそうなんですがそれ以降の書き方が分からないので教えて下さい
よろしくお願いします
コメント1件

383
デフォルトの名無しさん[sage]   投稿日:2015/07/02 16:58:19  ID:v1gphKVf.net
>382
a.product(b).map{|item| item.inject(:+)}

こんなかんじ?

384
デフォルトの名無しさん[sage]   投稿日:2015/07/02 21:44:53  ID:a8SK9Eq7.net(2)
計算したいだけならproductに直接ブロック渡せる
https://ideone.com/ihpSvW

回答者が求めていたのはこういう感じのコードな気がする
http://ideone.com/1bx9cp
コメント1件

385
デフォルトの名無しさん[sage]   投稿日:2015/07/02 21:45:38  ID:a8SK9Eq7.net(2)
回答者じゃなくて質問者ね

386
デフォルトの名無しさん[]   投稿日:2015/07/02 22:26:53  ID:umOe3By3.net(2)
>384
求めていたのはまさしくその下のプログラムです
しかしプロダクトも勉強してみます
ありがとうございました

387
デフォルトの名無しさん[sage]   投稿日:2015/07/02 22:30:52  ID:fqyYssiJ.net
関数型プログラミングが流行りだからね
product使う方がこれからの中心になっていくのかな

388
デフォルトの名無しさん[sage]   投稿日:2015/07/02 23:25:13  ID:RxSUeAcb.net
わざわざ、method用意されてるのに、eachで回す意味がわかんない

389
デフォルトの名無しさん[sage]   投稿日:2015/07/03 00:18:33  ID:CxuijVE/.net(2)
何をするかじゃなくて何ができるかが問題
組み合わせは列挙出来たけど二重ループは書けませんじゃ困る

390
デフォルトの名無しさん[sage]   投稿日:2015/07/03 00:29:48  ID:Laz7VlDf.net
ちょっと何言ってるのかわかんないです

391
デフォルトの名無しさん[sage]   投稿日:2015/07/03 04:42:28  ID:KvdZ0QS5.net
そりゃ、ソースコードが少ない方が、バグが少ないから、
関数が使えるなら、それを使えばよい

逆に、異なるバージョンなどで、
使えないなら、自作すればよい

392
デフォルトの名無しさん[sage]   投稿日:2015/07/03 19:40:46  ID:CxuijVE/.net(2)
自作もできないうちはバグなんてどうでもいいでしょ

393
デフォルトの名無しさん[sage]   投稿日:2015/07/04 18:51:53  ID:aORV0gQX.net(2)
荒らす気はないんだけど、Rspecの書き方なんかわからずに
ソース探すのに疲れて、rubyMine買うと決めたんだけど、
参考までに、皆 pryで調べてるんですか?
コメント1件

394
デフォルトの名無しさん[sage]   投稿日:2015/07/04 18:58:56  ID:aE1SWTzm.net
やべえ、3回読み返したけど、さっぱり分からんw
解読班はよ

395
デフォルトの名無しさん[sage]   投稿日:2015/07/04 19:38:00  ID:2O5lVBCk.net
>393
rspec の記法はちゃんとドキュメントあるから、RubyMine 使わなくても大丈夫だ。
github とかにホスティングされてるgemのspec を読むのが手っ取り早い。
コメント1件

396
デフォルトの名無しさん[sage]   投稿日:2015/07/04 19:54:14  ID:aORV0gQX.net(2)
>395
ありがとうございます。すごく丁寧に書かれてました。

397
デフォルトの名無しさん[sage]   投稿日:2015/07/05 14:42:04  ID:19q/SObD.net
ruby xxx.rb でエラーが出て
ruby -U xxx.rb でエラーが出なくなるコードがあるのですが、
このオプション-Uに関する記述はどこにあるのでしょうか

http://docs.ruby-lang.org/ja/2.1.0/doc/spec=2frubycmd.html#cmd_option
にも-Uの記述が全く有りません。
コメント1件

398
デフォルトの名無しさん[sage]   投稿日:2015/07/05 15:20:20  ID:tVdhCBhpS
>397
man ruby

399
デフォルトの名無しさん[sage]   投稿日:2015/07/05 16:06:04  ID:vNDQviuw.net
単純にリファレンスがメンテしきれてないだけでしょうね
manには書いてあるね
Sets the default value for internal encodings (Encoding.default_internal) to UTF-8.
だそうな

400
デフォルトの名無しさん[]   投稿日:2015/07/12 23:58:48  ID:RydZEeqm.net
保守

401
デフォルトの名無しさん[sage]   投稿日:2015/07/15 19:54:06  ID:rBiIOBeb.net(2)
rubyからTeraTermを制御(逐次入力、出力結果取得)したいんですが、どうやれば。
出力結果は最悪TeraTermでログ出力したファイルを読み込むのでもかまいません。

Open3.popen3を使う? でもこれって標準入力閉じずに標準出力取得できないと聞きました。
TeraTerm出力結果をもとにruby側で判断、TeraTermに再度入力したいのです。

402
デフォルトの名無しさん[]   投稿日:2015/07/15 21:08:04  ID:NoeQQAWM.net
TeraTermいらね

403
デフォルトの名無しさん[]   投稿日:2015/07/15 21:21:26  ID:PlIpDVLp.net(2)
puttyじゃいかんのか?

404
デフォルトの名無しさん[sage]   投稿日:2015/07/15 21:29:50  ID:rBiIOBeb.net(2)
複数人にTeraTermがインストールされている状況なのでTeraTermが望ましいですが、
PuTTyでもかまいません。

405
デフォルトの名無しさん[sage]   投稿日:2015/07/15 21:41:30  ID:Kluh4htZ.net(2)
先輩方、お世話になります。

Ruby 2.0.0.481
Windows8.1
であります。

テキストエディタに表示している文字列、数値などを、読みだしたり、書き出したりできるのでしょうか。
たとえは、エディタに、
x=1.2
と書いてあるときに、この「1.2」を読み取って、Rubyで繰り返し計算をして、
最期の結果をテキストエディタの最後の行に書き出せるのでしょうか。

つまり、エディタでから数値データを取り出して、計算して、返す、という動きであります。

406
デフォルトの名無しさん[sage]   投稿日:2015/07/15 21:52:24  ID:PlIpDVLp.net(2)
なんのエディタかによるがたとえばEmacsやJEDなら可能
テキストエディタのバッファの中身を読み書きするメソッドが用意されてるかどうかによる
コメント1件

407
デフォルトの名無しさん[sage]   投稿日:2015/07/15 21:55:00  ID:d0uSs4Pt.net
windowsならxyzzyで簡単にできるよ

408
394[sage]   投稿日:2015/07/15 22:23:38  ID:Kluh4htZ.net(2)
>406,396
どうもです。
エディタによるんですね。
すると、いきなり、ノートパッドでやるなんてのは無茶ということですね。
コメント1件

409
デフォルトの名無しさん[sage]   投稿日:2015/07/15 22:40:14  ID:2OhrzIaS.net
あるアプリと別のアプリ(スクリプト)を連携させる場合、AutoHotKey使うと便利

{Home}+{END}^c
でカレント行をコピーしてからRubyスクリプト起動してあれこれ計算して
クリップボードにコピーしてから
^vで結果を書き戻すというのも可能

410
デフォルトの名無しさん[sage]   投稿日:2015/07/15 23:05:54  ID:1u1xQ4w9.net
スクリプトが動いている間自分は操作できないとか
動作が重くなるとタイミングがずれて芋づる式に変な操作してしまうとか

AutoHotKeyってそうはならない?

411
デフォルトの名無しさん[sage]   投稿日:2015/07/16 00:23:12  ID:HOH6O9xm.net
そういう時私ならほっときーますね。

412
デフォルトの名無しさん[sage]   投稿日:2015/07/16 01:46:01  ID:vW5tNoO7.net
AutoHotkeyは力技過ぎて最終手段だなあ
使い所を間違えなければいいツールだとは思うが

413
デフォルトの名無しさん[]   投稿日:2015/07/16 04:47:19  ID:MREKRM2C.net
>408
win32ole

414
デフォルトの名無しさん[sage]   投稿日:2015/07/16 19:35:47  ID:/YzLSp2x.net
>401
net-ssh gemとか標準のtelnetじゃだめなの?
コメント1件

415
デフォルトの名無しさん[sage]   投稿日:2015/07/18 11:03:37  ID:XqruX5K0.net
>414
おーこれでなんとかやれそうです。
外部ツールに頼らないでやればよかったんですね。
対象機器はtelnet接続は許可されていないのでsshでやってみます。
net-sshはdl/*を使っているので2.2.xでは使えないようで…ひとまずRubyのバージョン落としてみます。
先に進めそうです。ありがとうございました。

416
デフォルトの名無しさん[sage]   投稿日:2015/07/18 11:17:37  ID:xTrOg+7r.net
なんと、そういうことだったのか…w

417
デフォルトの名無しさん[sage]   投稿日:2015/07/19 15:09:50  ID:GWdtmhTK.net(2)
390です。

sshでのやりとりをメインスレッドでやるのはうまくいきましたが、
実用上は別スレッドにする必要があるため分けたところ、躓いてしまいました。

簡略化したコードを以下に貼りました。
http://pastebin.com/ABH6ak0p

gdb実行時の標準出力が得られません。
上記コードで言えば"connect success"の後に何も表示されません。

何が悪いかご教示いただけないでしょうか。

※ サーバ上で、gdbでa.outを動かしているプロセスは居ました。(別口でサーバにログイン、"ps -ef"で確認)

418
デフォルトの名無しさん[sage]   投稿日:2015/07/19 15:13:49  ID:GWdtmhTK.net(2)
あああコメントアウト外すの忘れてました
Net::SSH.start 〜 の行はコメントアウトしていないものとして見てください。すいません。

419
デフォルトの名無しさん[sage]   投稿日:2015/07/20 21:18:13  ID:Tkp70n/r.net
たびたび申し訳ありません。390=406です。
サーバ再起動させたあとはうまく動きました…。何かゴミプロセスが残っていたのかもしれません。
強制終了させてもプロセスきちんと片付けるような修正を加えようと思います。
今後はもう少し色々試してから聞くようにします…連投失礼しました。

420
デフォルトの名無しさん[sage]   投稿日:2015/07/22 19:28:52  ID:RRhD77eq.net(2)
質問です。

puts 1.0 - 0.92
を実行すると

ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32] → 0.08
ruby 2.0.0p645 (2015-04-13) [i386-mingw32] → 0.07999999999999996

のように1.8と2.0で結果が違います。
2.0でも1.8同様の結果が欲しい場合どのように記述したらよいでしょうか?

421
409[sage]   投稿日:2015/07/22 20:01:21  ID:RRhD77eq.net(2)
409です。
以下の記述でできました。

require 'bigdecimal'
puts (BigDecimal("1.0") - BigDecimal("0.92")).to_f

422
デフォルトの名無しさん[]   投稿日:2015/07/22 22:16:42  ID:/LcTIUwd.net
環境に関わらず統一したいならRational使うしかないんじゃないの
コメント1件

423
デフォルトの名無しさん[sage]   投稿日:2015/07/23 00:13:59  ID:ZoFYpsVn.net
>422
Rationalは2.1以上じゃなかったっけ?
コメント1件

424
デフォルトの名無しさん[sage]   投稿日:2015/07/23 00:15:06  ID:oARZ3zU4.net
じゃあNationalは?

425
デフォルトの名無しさん[sage]   投稿日:2015/07/23 00:41:35  ID:8g5M7/3K.net
>423
1 + 1/3rみたいなことはできないけど、あるよー
http://docs.ruby-lang.org/ja/1.8.7/class/Rational.html

426
デフォルトの名無しさん[sage]   投稿日:2015/07/23 09:10:34  ID:fAWwlZE2.net
Ruby Tools for Visual Studio 2015マダー

427
デフォルトの名無しさん[sage]   投稿日:2015/07/26 18:22:06  ID:2VKiOwqX.net(2)
gets.chopで入力した文字列をclassインスタンス名にすることはできますか?
↓のコードで明らかに欠陥があるのは分かってるのですが、どうすればいいのかわかりません。
ようはirbでそのクラスやメソッドを記述したrbファイルで開いてから
データを収めるインスタンスを任意で追加できるような仕組みをつくりたいのですが。

class Hello
def setName(name)
@name = name
end

def hello
print "Hello ", @name,"\n"
end
end

def int
print "名前は?:"
yourname = gets.chop
yourname = Hello.new
yourname.setName(yourname)
end
コメント2件

428
デフォルトの名無しさん[sage]   投稿日:2015/07/26 18:24:46  ID:2VKiOwqX.net(2)
まちがい
×記述したrbファイルで開いてから

○記述したrbファイルを開いてから

429
デフォルトの名無しさん[sage]   投稿日:2015/07/26 19:20:01  ID:rYLcV8o2/
>427
エスパーするとeval

430
デフォルトの名無しさん[sage]   投稿日:2015/07/27 21:33:25  ID:TgAx1E6z.net
メソッド定義を
class Hello
end
でくるめばいいんじゃね?

431
デフォルトの名無しさん[sage]   投稿日:2015/07/28 00:40:56  ID:SY7oXFPU.net
>427
eval "#{yourname} = Hello.new"
としたいということ?

432
デフォルトの名無しさん[]   投稿日:2015/07/29 16:14:29  ID:2q2ZdS20.net
テキストファイルに名前その横に点数が書いてあるファイルがあって
それを左から国語、算数、理科、社会、合計、平均点を計算するプログラムを作らないといないのですが
カラの配列つくってファイルを読み込むとこまでやったんですがこの先ちんぷんかんぷんです
助けてぇ・・・・・

433
デフォルトの名無しさん[]   投稿日:2015/07/29 17:03:46  ID:1zEW+9y+.net
宿題なら宿題スレで

434
デフォルトの名無しさん[sage]   投稿日:2015/07/29 21:15:01  ID:5riumSBq.net
array.inject(:+) で合計を求める

a = [1, 2, 3]
a.inject(:+) # => 6

平均は、合計を配列の要素数
(array.length または、array.size)で割って求める


コテ 50
ショパン 70
ななまる 30

でも、こういうファイルでは、科目はわからないだろう

435
デフォルトの名無しさん[sage]   投稿日:2015/07/30 17:42:41  ID:2wiyWeYf.net(3)
イニシャライザに渡すブロックについて教えてください。

require 'tk'
button = TkButton.new {
text 'exit'
command proc { exit }
pack
}
Tk.mainloop

↑ここのブロック { text 'exit' ... } が
{|w| w.text 'exit' ... } (これでも動きます) と同等に機能する仕組みを教えてください。

436
デフォルトの名無しさん[sage]   投稿日:2015/07/30 18:43:29  ID:2wiyWeYf.net(3)
class Foo
attr_accessor :text

def text(_text="defalut")
self.text = _text
end

def pack
print "pack, OK!\n"
end

def initialize
yield if block_given?
rescue NameError => err
if defined? err.args
self.send(err.name, err.args)
else
self.send(err.name)
end
end
end

obj = Foo.new {
text "Hello"
pack
}

試しにこんな感じで書いてみましたが、当然ながら text "Hello" だけ実行されます。
エラーのあった次の文から再開 (retryだと最初からやり直し) 的な書き方があるんでしょうか?

437
デフォルトの名無しさん[sage]   投稿日:2015/07/30 22:41:08  ID:e7NCTD1Y.net
def initialize(&block)
self.instance_exec(self, &block)
end
コメント1件

438
デフォルトの名無しさん[sage]   投稿日:2015/07/30 22:53:56  ID:2wiyWeYf.net(3)
>437
ありがとうございます

439
デフォルトの名無しさん[sage]   投稿日:2015/08/02 22:26:38  ID:3ZR8eaCb.net
(a,b),c =[1,2,3]

p a #=> 1
p b #=> nil
p c #=> 2

なぜこういう結果になるのか仕組みが分かる方いらっしゃったら教えてください。

440
デフォルトの名無しさん[]   投稿日:2015/08/02 23:09:21  ID:dTRZmQiN.net
(a, b) = 1
c = 2
cyberspace = 3

441
デフォルトの名無しさん[sage]   投稿日:2015/08/02 23:10:51  ID:fovtrXXc.net
http://docs.ruby-lang.org/ja/1.9.3/doc/spec=2foperator.html#multiassign

多重代入は括弧により、ネストした配列の要素を代入することもできます。
(foo, bar), baz = [1, 2], 3 # foo = 1; bar = 2; baz = 3

442
デフォルトの名無しさん[sage]   投稿日:2015/08/03 17:32:28  ID:+rvo8Bqt.net
ありがとうございます。

ヒント貰って試していて、理解出来ないケースがあって

test1
(a,b),c=[1,2,3]
#=> a=1 b=nil c=2

test2
a,(b,c),d=1,2,[3,4]
#=> a=1 b=2 c=nil d=[3,4]

test3
(d1,d2),d3,(a,b),c=[1,2,3],4,[5,6,7]
#=> d1=1 d2=2 d3=4 a=5 b=6 c=nil

test4
(d1,d2),d3,(a,b),c=[1,2,3],4,[5,6,7],8
#=> d1=1 d2=2 d3=4 a=5 b=6 c=8

このtest1とtest3のa,b,cが違うことをどう理解すればいいのか分からなくて

(a,b),c=[[1,2],3]
#=> a=1 b=2 c=3

ここで、やっと「ネストした配列」の意味が分かりました。

443
デフォルトの名無しさん[]   投稿日:2015/08/07 14:15:41  ID:yhyLjZsM.net
CSV::Tableのパースで教えてください。

UFJ銀行の入出金明細をcsvで出力したものをつぎのコードで読み込んでます。
(パースする前にnkfでsjisからutf8に変換済み)

table = CSV.table(path, :header_converters => lambda { |h| h.to_sym unless h.nil? })

そうすると一部の金額が,StringでなくFixnumになってしまうのです。
すべてStringとして読み込むにはどんな対処方法がありますか?

元データ(コード変換済み)
"2015/8/4","振込IB2","ホゲホゲ フガフガ","80,000","","145,141"
"2015/8/4","為替手数料","フリコミ テスウリヨウ","324","","144,817"

p table
#<CSV::Row 日付:"2015/8/4" 摘要:"振込IB2" 摘要内容:"ホゲホゲ フガフガ" 支払い金額:"80,000" 預かり金額:"" 差引残高:"145,141">
#<CSV::Row 日付:"2015/8/4" 摘要:"為替手数料" 摘要内容:"フリコミ テスウリヨウ" 支払い金額:324 預かり金額:"" 差引残高:"144,817">

桁区切りのカンマの有る無しに影響されているようです。
tableの2行目,column 支払い金額が"324"ではなく324になってしまっている。

よろしくお願いします。
コメント1件

444
デフォルトの名無しさん[]   投稿日:2015/08/11 09:08:22  ID:Lj7Gr5q2.net
rubyのつかえるオススメサーバーってどこ?
っていう質問はここでいいのかな。
コメント1件

445
デフォルトの名無しさん[sage]   投稿日:2015/08/11 09:15:41  ID:AySGymUB.net
自宅に眠ったノートPC

446
デフォルトの名無しさん[sage]   投稿日:2015/08/11 13:57:16  ID:3pKn71t8.net
>443
http://docs.ruby-lang.org/ja/2.1.0/method/CSV/s/table.html
ってことなので
数値変換器の動作を無効化してみてはどうか

table = CSV.table(path, converters: nil, header_converters: lambda { |h| h.to_sym unless h.nil? })
コメント1件

447
デフォルトの名無しさん[sage]   投稿日:2015/08/11 14:34:22  ID:SeETvk3M.net
むしろ数値のままで何が問題なのか

448
デフォルトの名無しさん[sage]   投稿日:2015/08/12 00:09:19  ID:2p58Flem.net
>446
つうか普通に read とか open を headers: true 付けて呼べばいいんじゃね。

449
デフォルトの名無しさん[sage]   投稿日:2015/08/12 12:30:08  ID:DAPBN+R4.net
>444
さくらのレンタルサ−バ

ただし、新しいversionは自分でinstallする必要がある

450
デフォルトの名無しさん[sage]   投稿日:2015/08/14 02:50:53  ID:tVC0EFYk.net
初歩的な質問だとは思いますがレス貰えるとありがたいです
bitbucketにあがっているとあるgemをrubyにインスコしたいんですがrubyがそのgemを認識してくれません
古いバージョンはコマンドでインスコ出来たのですがbitbucketのリポジトリにある
最新版のgemをどうインスコ(?)アップデートすればいいのか分かりません
listでもsearchでも古い方しか認識されません
これを参考にいくつか試してみましたが無理でした
http://bundler.io/git.html

windows 7
ruby 1.9.3
宜しくお願いします
コメント1件

451
デフォルトの名無しさん[sage]   投稿日:2015/08/18 15:10:19  ID:YJRjd7XD.net
>450
自己解決しましたのでレスはもう要りません

452
デフォルトの名無しさん[sage]   投稿日:2015/08/30 05:53:05  ID:+htnx8/P.net
>367
rubyバージョン同じ
win7 32bit
同じく文字化けします。

解決策が見つかりそうもないので
諦めてcentosかmacでやっています。

453
デフォルトの名無しさん[sage]   投稿日:2015/08/30 07:40:26  ID:/PELE0GV.net
UTF-8のソースをそのままコマンドプロンプトに出力したらそりゃあ文字化けするわ
出力前にShift-JISに変換すればいい

454
デフォルトの名無しさん[sage]   投稿日:2015/08/30 08:17:44  ID:Nn/Oa5bk.net(3)
「Rubyがミニツク」というサイトの演習問題をやっているが
http://pastie.org/10384578
上記のようなコードを書いて実行すると

Library contents:
Title: Moby-Dick, Author: Herman Melville
Title: The Ugly Duckling, Author: Hans Christian Andersen
#<Library:0x007f9e7b1e7640>

最後の一行で余計な情報が出力されてしまう。
(Objectクラスのto_sメソッドが呼ばれている?)

自作クラスのto_sメソッドはどのように記述すればいいですかね。

455
442[sage]   投稿日:2015/08/30 08:25:23  ID:Nn/Oa5bk.net(3)
rubyのバージョンを書き忘れていました。
2.2.0p0
です。

456
デフォルトの名無しさん[sage]   投稿日:2015/08/30 10:49:29  ID:uddDd/Fp.net
to_sの中でputsしちゃいかんがなw
…いけないことはないが、使う人からしたらギョッとするでしょ
to_sは普通にstringを返すだけにしたら?

それで呼び出し側で puts my_library みたいにすれば十分では?
コメント1件

457
442[sage]   投稿日:2015/08/30 11:27:13  ID:Nn/Oa5bk.net(3)
>456
なるほど、ギョッとしました!
確かにstringを返すのが自然ですね。
ありがとうございました。

458
デフォルトの名無しさん[sage]   投稿日:2015/08/30 17:53:04  ID:py1e6P0M.net
終了時リターンコードって、正常に終われば0、
文法ミスなどのエラー終了は1でいいですか。

459
デフォルトの名無しさん[sage]   投稿日:2015/08/30 19:01:06  ID:ZGwv1hqi.net
関数のこと言ってるなら例外あげろ
プロセスならそれでいいんじゃね?

460
デフォルトの名無しさん[]   投稿日:2015/09/01 04:54:53  ID:/DoXUIG1.net
そういうの気にしてやる言語じゃなくね
作法学ぶならJAVA,C#で

461
デフォルトの名無しさん[]   投稿日:2015/09/02 17:02:40  ID:eDqiT8Wq.net
シェルスクリプトなどの戻り値は、0〜255を使う

0が正常で、1以上がエラー

462
デフォルトの名無しさん[sage]   投稿日:2015/09/03 00:43:19  ID:iQnjIkb4.net
shのように0が真ならいいんだけど、偽として扱われる言語で関数の戻り値に
使っちゃうような悪習が蔓延っているのはなんでなんだろうな。

463
デフォルトの名無しさん[sage]   投稿日:2015/09/03 01:47:57  ID:o02/AS18.net
コードは上から下へ。例外的な処理を if 文の中へ入れるのだ。なんてな

464
デフォルトの名無しさん[sage]   投稿日:2015/09/05 00:27:46  ID:3U9xihI0.net
スレ違いかもだけど、何処で聞いたらいいのか分からないので、ちと質問です

さっき何の気なしにVirtualBoxにLubuntu15.04インストールして、そのまま続けて何の気なしにrvmインストールしてたら
# ----,
#
# Thank you for using RVM!
# We sincerely hope ・・・・・・以下略
ってメッセージが出て
一番上の「----,」の所に自分のTwitterとかgmailで使っているアカウント部分が出てたんだけど、
そもそも上にも書いたとおりOS新規インストール後、直でrvmを入れようとしたわけなのに
この仮想PCには一度も入力した事のないアカウント名をどうやって割り出したんすかね?
(もちろん、PC名やユーザ名はそのアカウント名とは全然違うものを入力してます)
何か凄い気になったので・・・

公式に書いてある手順の「gpg --keyserver hkp://key〜」とかと関係あるんすかね?

465
デフォルトの名無しさん[sage]   投稿日:2015/09/08 02:03:37  ID:K9PLTp8k.net
url = "http://www.example.com/register?url="; +
CGI.escape('http://www.example.com/index.rss')
p url
#=> "http://www.example.com/register?url=http%3A%2F%2Fwww.example.com%2Fi...;

www.example.com
のところとかも強引にエスケープするのはどうやればいいですか

466
デフォルトの名無しさん[sage]   投稿日:2015/09/09 13:14:52  ID:4cI6pG8V.net
置換
"A".ord.to_s(16) # => "41"

467
デフォルトの名無しさん[sage]   投稿日:2015/09/09 14:45:57  ID:pS2N2yop.net
1文字ずつ自力でやれということですね
ありがとうございます

468
デフォルトの名無しさん[sage]   投稿日:2015/09/10 20:43:46  ID:UFEDaipD.net
tapって盗聴するって意味らしいけど
ブロック変数で破壊的に操作できるから
盗聴ってよりspyじゃね?

469
デフォルトの名無しさん[sage]   投稿日:2015/09/11 00:35:52  ID:EBu7PyHn.net
有識者の方、教えて下さい。

1.Rubyのグラフィカルなデバッグ環境って何がお薦めなんですか?
2.apache経由で動いているRubyにアタッチしながらデバッグする、お薦めの環境ありますか?

470
デフォルトの名無しさん[sage]   投稿日:2015/09/11 22:11:21  ID:Z6BYqfNY.net
有識者「にゃーん」

471
デフォルトの名無しさん[sage]   投稿日:2015/09/11 22:20:42  ID:GHVwR1ig.net(2)
javascript覚えて結構便利で使いやすいなあと感じてるんですが、ruby覚えるとそれ以上の感動有りますか?

472
デフォルトの名無しさん[sage]   投稿日:2015/09/11 22:26:02  ID:rVr5mLkZ.net
何をするのかによる
文字列操作するならとても便利で感動するかも
javascript何に使ってるの?
コメント1件

473
デフォルトの名無しさん[sage]   投稿日:2015/09/11 22:27:07  ID:vI/Sge8p.net
JavaScriptは標準ライブラリがクソだからなぁ

474
デフォルトの名無しさん[sage]   投稿日:2015/09/11 22:30:50  ID:GHVwR1ig.net(2)
>472
webサイトです
コメント1件

475
デフォルトの名無しさん[sage]   投稿日:2015/09/12 22:34:32  ID:dK13GhPG.net
>474
ほとんど何も言ってないに等しいぞ。

476
デフォルトの名無しさん[]   投稿日:2015/09/16 10:50:32  ID:fQczy5Yc.net(2)
以下の様な数値群から、重複しない要素を使って任意の数値(例えば2360)に最も近い和を求めるにはどうしたら良いでしょう?
115,135,215,352,358,655,885,925,936,1250,1285,1620,1850
コメント1件

477
デフォルトの名無しさん[sage]   投稿日:2015/09/16 12:32:29  ID:d+PGYxxz.net
>476
お題スレ行けよ!

478
464[]   投稿日:2015/09/16 13:01:57  ID:fQczy5Yc.net(2)
では、お題スレにいってみます。

479
デフォルトの名無しさん[sage]   投稿日:2015/09/17 04:00:34  ID:7nhq2dTy.net
linuxで一からインスコしてたけど
挫折した
もういいおwinでやるよ

gemがエラー吐きすぎ

480
デフォルトの名無しさん[sage]   投稿日:2015/09/17 07:19:20  ID:0IN9fIB7.net
RubyはWindowsの方が茨の道じゃないか?

481
デフォルトの名無しさん[sage]   投稿日:2015/09/17 13:19:29  ID:PZjZi1q6.net
英数字の全角半角変換方法がわからなかったが
require 'jcode'
で trを使って全角半角ができた
(初心者の発見)
コメント1件

482
デフォルトの名無しさん[sage]   投稿日:2015/09/17 17:39:15  ID:Deuez3d+.net
a = Mechanize.new { |agent|
agent.user_agent_alias = 'Mac Safari'
}

a.get('http://google.com/') do |page|
search_result = page.form_with(:name => 'gbqf') do |search|
search.q = 'Ruby'
end.submit

上の「a = Mechanize.new { |agent|」という部分はどういった意味になるんでしょうか?
Mechanizeのインスタンスであるaを更にagentに入れてるんですか?
コメント2件

483
デフォルトの名無しさん[sage]   投稿日:2015/09/17 20:02:58  ID:2BhOyj3T.net
>482
mechanizeのインスタンスのaがどっかアクセスするときに使うuser-agentをmacのsafariで使われる感じの文字列に設定してる
a = Mechanize.new
a.user_agent_alias = 'Mac Safari'
と同じ意味

484
デフォルトの名無しさん[sage]   投稿日:2015/09/18 14:34:25  ID:Q3xKeKMY.net(2)
ブロック引数の扱いはライブラリ実装によってまちまちで
Mechanize#initialize がたまたま self を引数にブロックを呼んでるだけ。
初期化をまとめて明示的に書けるイディオム

485
デフォルトの名無しさん[sage]   投稿日:2015/09/18 14:55:24  ID:GAuLG231.net
>482のような
block付きinitializerはどうも好きになれなかったが
Class.initializeの仕様を知って驚いた。

486
デフォルトの名無しさん[sage]   投稿日:2015/09/18 17:15:12  ID:F9/JIS/o.net
自分自身をブロックパラメータにもらえるのってある?
1.tap{|i| break [i, i*2]}
みたいなことを素直にできる
1.xxx{|i| [i, i*2]}
みたいなxxxってある?

487
デフォルトの名無しさん[sage]   投稿日:2015/09/18 19:23:09  ID:Q3xKeKMY.net(2)
nilだと動かないけどrailsのtry!

488
デフォルトの名無しさん[sage]   投稿日:2015/09/18 19:55:48  ID:qK9BPuWU.net
れすとん!
railsにはあるんやね
http://api.rubyonrails.org/classes/Object.html#method-i-try

489
デフォルトの名無しさん[]   投稿日:2015/09/20 04:26:05  ID:vBjKt0IW.net
>481
String#upcaseで大文字に、
String#downcaseで小文字に変換します

String#capitalizeを使うと、
先頭だけ大文字に変換します

大文字と小文字を入れ替えるには、
String#swapcaseを使います

「ruby 大文字 小文字 変換」で検索する

490
デフォルトの名無しさん[sage]   投稿日:2015/09/20 08:44:38  ID:OSUmrGRk.net
大文字小文字じゃなくて全角半角やって言ってんやろーが

ruby2.0以降ならrequire'jcode'は非推奨だし不要
コメント2件

491
デフォルトの名無しさん[]   投稿日:2015/09/20 09:44:23  ID:t6sFQCTm.net
神調教 → ネ申 言周 孝攵 みたいにしたいの

492
デフォルトの名無しさん[sage]   投稿日:2015/09/20 14:55:13  ID:rSqoApkT.net
たのしいrubyの8章と9章の抜粋されたサンプルコードってどう書き換えればいいの?
コメント1件

493
デフォルトの名無しさん[sage]   投稿日:2015/09/21 00:00:43  ID:UwK67s0X.net(2)
>490-491
Windowsには、LCMapString という、
半角/全角を変換する関数がある

半角カナ・英数字 ←→ 全角


>492
抜粋された箇所だけを、見ればよい
コメント1件

494
デフォルトの名無しさん[sage]   投稿日:2015/09/21 01:45:08  ID:UwK67s0X.net(2)
>490-491

nkf ライブラリで、できるかも

495
デフォルトの名無しさん[sage]   投稿日:2015/09/21 12:34:09  ID:ImbkXCPB.net
>493
書き写して実行したいときは点々の部分は気にしないでいいのね
一応すべてのサンプルを打ち込んで実行してるんだけどそこだけ解らなかった

496
デフォルトの名無しさん[sage]   投稿日:2015/09/21 13:59:27  ID:ZB4SMmGZ.net(2)
スレ違いかもしれませんが、質問場所が分からないので、こちらでさせてもらいます。
環境構築でつまずいてます。

■症状
OpenSSL::SSL::SSLError: SSL_connect のエラー

■環境など
レンタルサーバー、ruby2.1.5
■問題の内容
証明書が無いと怒られてます。証明書を置く場所は、レンタルサーバーなので、アクセス不可。
最終的に、cronで動かしたいので、 .bashrc に記述する方法は出来ない
rubyのスクリプトの頭に、下記を記述してみたのですが、エラーが消えない。

ENV['SSL_CERT_FILE'] = "/virtual/name/lib/ruby/etc/cert.pem"
p ENV['SSL_CERT_FILE']

リンクは間違ってないようですが、何か思い当たることなどありませんか?
コメント1件

497
デフォルトの名無しさん[sage]   投稿日:2015/09/21 15:04:40  ID:dq2ooNt1.net
>496
https = Net::HTTP.new(url, 443)
https.use_ssl = true
https.ca_file = "/xxxx/cacert.pem"
https.verify_mode = OpenSSL::SSL::VERIFY_PEER
https.start {
..
}

みたいにやった、素人芸なのでもっといい方法があるのかも知れない
コメント1件

498
デフォルトの名無しさん[sage]   投稿日:2015/09/21 15:53:33  ID:ZB4SMmGZ.net(2)
>497
ありがとうございます。少し変更して、下記の形で行けた気がします。
助かりました。

https = Net::HTTP.new(url, 443)
https.use_ssl = true
https.verify_mode = OpenSSL::SSL::VERIFY_PEER

https.cert_store = OpenSSL::X509::Store.new
https.cert_store.set_default_paths
https.cert_store.add_file("/virtual/name/lib/ruby/etc/cacert.pem")

499
デフォルトの名無しさん[sage]   投稿日:2015/09/23 04:24:10  ID:NIZtVs7u.net
railsとかsinatraってプログラムはどこに記述するの?
コントローラーやテンプレートには変数もらったりイテレーターとか条件文しか書けないみたいだし

500
デフォルトの名無しさん[sage]   投稿日:2015/09/23 09:58:52  ID:+BBxqjZk.net(2)
すみません、変数について教えてください。
1.sliceした場合、fの元の値が書き換わってしまうものなのですか?
2.sliceする前の値を得たい場合、どう記述すべきでしょうか?
3.gは何もしていないのに、値が変わるのはなぜでしょうか?

f = "abcdefg"
g = nil

g = f
print f,"<=f1回目\n"
print g,"<=g1回目\n"
print "---------\n"
charset = f.slice!(0,1)

print charset,"\n"
print f,"<=f2回目\n"
print g,"<=g2回目\n"
■結果
abcdefg<=f1回目
abcdefg<=g1回目
---------
a
bcdefg<=f2回目
bcdefg<=g2回目
コメント2件

501
デフォルトの名無しさん[sage]   投稿日:2015/09/23 12:02:33  ID:t1geCVCC.net

502
デフォルトの名無しさん[]   投稿日:2015/09/23 18:01:52  ID:I9Zkhl7t.net(2)
TCPserverのacceptが動作してくれてなさそうなので、助言がありましたらお願いします。


■環境
Server : Windows7 PC
Client : Mac Book Air
Ruby ver 2.2.3

■やりたいこと
Server <-> Client間でTCP通信で単純なメッセージのやり取りができること

■症状
Server側のRubyコード acceptで実行が止まっており接続が正常にできていない模様。

■やったこと
Server <-> Client間のpingは通る。

だめもとでC言語で書かれたServerプログラムをコンパイルして実行して
Client側のMacだけRuby clientを実行したら意図通りにメッセージのやり取りができた。

■コード
Ruby
 http://qiita.com/nekogeruge_987/items/23312e53b15ebfeb0607
ここのサイト様のコードをそっくりコピペして実行しました。

C言語Socketプログラムコードは
 http://capm-network.com/?tag=C%E8%A8%80%E8%AA%9E-TCP%E3%82%B5%E3%83%B...

503
デフォルトの名無しさん[sage]   投稿日:2015/09/23 18:09:26  ID:+BBxqjZk.net(2)
>501
慣れが必要そうですが、何となく分かりました。ありがとうございます。

504
490[]   投稿日:2015/09/23 22:01:26  ID:I9Zkhl7t.net(2)
自己解決しました。
サンプルのRubyのコードでは不十分で、
server = TCPServer.open(2000)
とするとlocalhostをlistenするので、他のIPからの接続を受け付けていませんでした。
server = TCPServer.open('IP address',2000)
IP addressはServerとなるPCのIP
で接続出来ました。

505
デフォルトの名無しさん[sage]   投稿日:2015/09/24 01:54:38  ID:KIwTvfAf.net
>500
Array.sort!、 String.slice! など、
メソッド名の最後に「!」が付いているものを、
破壊的メソッドと言って、
そのオブジェクト自体を変更してしまう、メソッドを言う
(「!」が付いていない破壊的メソッドもある!)

また文字列の追加で、「+」を使うと通常のメソッドで、
「<<」を使うと破壊的メソッドとなるので要注意!

Rubyでは、数値などのPrimitive型(単純型)も含めて、
すべてがオブジェクトであり、メソッドの引数で渡す際にも、
参照渡しとなり、そのアドレス値をコピーして渡すので、
同じオブジェクトを指す

一方、Javaでは、Primitive型は値渡し(コピー渡し)となり、
その値をコピーして渡すので、別のオブジェクトとなる

だから変数xを、メソッドa()に渡して、そこからb()に渡して、
さらにc()に渡しても、参照渡しなので、
同じオブジェクトを指すため、
元のxを変更すると、すべてが変更される!

506
デフォルトの名無しさん[]   投稿日:2015/09/25 11:07:09  ID:VhYt0QvP.net
ruby2.2.3入れていくつかgems入れたら
全くエラー出る事なくインストールできやがった・・・・
何事だよ・・・

507
デフォルトの名無しさん[sage]   投稿日:2015/09/27 18:37:06  ID:UYzM99J3.net(2)
rubyってどこで使われてるんですか?
コメント3件

508
デフォルトの名無しさん[]   投稿日:2015/09/27 18:44:37  ID:UYzM99J3.net(2)
ネエネエwwww ドコデwwww るbywwww ツカワレテルノーwwwwwwwwwwwwwwんんんんんっwwwwwww

509
デフォルトの名無しさん[sage]   投稿日:2015/09/28 10:38:16  ID:0RjOK4Zp.net

510
デフォルトの名無しさん[sage]   投稿日:2015/09/28 22:22:05  ID:pdVcHsD8.net
レレレレレイルッズwwwwwwwwwwww

511
デフォルトの名無しさん[sage]   投稿日:2015/09/29 00:22:15  ID:2Af20K9J.net
>507
個人用途だとDOS画面から、
こまごまとした身の回りの処理や日曜プログラム

512
uy ◆e6.oHu1j.o [sage]   投稿日:2015/09/30 06:23:46  ID:ZFzEM6SP.net
質問です


module Uy_ha_initiator
refine Proc do
def + n
->{
self.call
n.call
}
end
a = -> { p 1 }
b = -> { p 2 }
c = a + b
c.call
end
end


こうゆう事したいんですけど、
メソッドa , b に引数ついてる場合も考慮してスマートに実装する方法ないですか?

513
デフォルトの名無しさん[sage]   投稿日:2015/09/30 12:35:41  ID:iRWak9My.net
>507
自治体HP

514
デフォルトの名無しさん[]   投稿日:2015/10/02 04:52:29  ID:j2xAjxnc.net
Ruby資格の教科書を見たが、5年前の求人割合では、
Java:Ruby = 10:1 だが、今では、5:1 で、
5年後には、2:1 と予測されている

JavaからRubyへの流れが、止まらない

515
デフォルトの名無しさん[sage]   投稿日:2015/10/02 10:40:39  ID:7Md9hlDd.net
もしその予測通りなら失業者が10倍くらいになってるかな

516
デフォルトの名無しさん[sage]   投稿日:2015/10/04 20:19:03  ID:OIYCaleY.net
cronでの実行で質問です。

レンタルサーバーで、cronからスクリプトを動かしたいのですが、動かせずにいます。
・ターミナルから、直接叩く =>動く
・ターミナルから、シェルスクリプトを介して、スクリプトを動かす =>動く
・cronでシェルまたは、rubyのスクリプトを叩く =>動かない
・cronで別のスクリプト(requireなど記述していないもの)を叩く =>動く

起動時のパスが動かない原因だと考えているのですが、エラーの吐き出し方が分からず困っています。
こういったときは、どうデバッグすべきでしょうか?
コメント1件

517
デフォルトの名無しさん[sage]   投稿日:2015/10/05 02:33:29  ID:igCu1GJ5.net
>509
レンタルサーバーやlinuxスレの方がいいと思うが

/... /test.rb 引数 >/dev/null 2>&1
みたいにしている

518
デフォルトの名無しさん[]   投稿日:2015/10/07 10:01:49  ID:0iwSPjqO.net(2)
>/dev/null 2>&1
もし上記のようにして、エラーを捨てているのなら、
エラーを捨てないで、cron, rubyのエラーを見る

まず、rubyスクリプトの冒頭に、
logかファイル出力でも書いておいて、
それが出力されないのなら、cronでの起動エラーになる

まあ、Linux板で聞いた方がよさそう

519
デフォルトの名無しさん[sage]   投稿日:2015/10/07 11:32:20  ID:0iwSPjqO.net(2)
ディストリに最初から入っている、rubyを使うのなら、
これで、実行されるのでは?
ruby test.rb

http://www.lab.ime.cmc.osaka-u.ac.jp/~kiyo/pub/lecture/unixpro/ruby/

echo $PATH
として、サーチパスを見れば、最初からパスが通っている、
/usr/local/bin があるから、そこにスクリプトを置いて、
そのスクリプトに、以下のように実行権限を付ける

chmod +x test.rb

520
デフォルトの名無しさん[]   投稿日:2015/10/08 01:21:17  ID:ax9qeEL5.net
>516
STDERR.reopen() でSTDERRをファイルに書き出す

521
デフォルトの名無しさん[]   投稿日:2015/10/08 11:52:56  ID:vEe59M97.net
Fiber(笑)使ってる奴いる?
スレッドの壁超えられない

522
デフォルトの名無しさん[sage]   投稿日:2015/10/08 20:10:42  ID:Gm31FEMf.net
GILあるならFiberが適当

523
デフォルトの名無しさん[]   投稿日:2015/10/09 10:48:34  ID:AnphRb22.net
OS X El Capitan‎をクリーンインストールしてSassとかCompassを入れたあと
$ gem update --systemしたら、そのあとパーミッションの問題で
$ gem install ***ができなくなってしまいました

& gem envをみてみたら「EXECUTABLE DIRECTORY:/usr/local/bin」が「EXECUTABLE DIRECTORY: /usr/bin」に変わってたんですが、EXECUTABLE DIRECTORYを変える方法ってありますでしょうか

わかる方がいらっしゃったらご教示ください!

524
デフォルトの名無しさん[sage]   投稿日:2015/10/09 20:32:34  ID:zXylNyAd.net
単にOS標準のgem(ruby)が使われているだけじゃないん?
以前が/usr/local/binだったならたぶんHomebrewでいれたんだろうね。
さらにいうとrvmやrbenvとbundler使ったほうがいい。

525
デフォルトの名無しさん[sage]   投稿日:2015/10/09 20:47:38  ID:a6l66mp2.net
GILとFiberって何か関係あるの?

526
デフォルトの名無しさん[sage]   投稿日:2015/10/10 00:24:59  ID:u1b7Ierj.net
何も関係ない

527
デフォルトの名無しさん[sage]   投稿日:2015/10/10 14:38:26  ID:UP2dWSIf.net
railsのエラー処理で挫けそうになるんだけど
バージョンいっぱいあるせいでエラーググっても意味を成さない事が殆ど
一回安定した環境にしたら二度とアップデート出来ないな
その前にrailsやめそうだけど

528
デフォルトの名無しさん[]   投稿日:2015/10/10 15:33:35  ID:/egW/Cb1.net
わかります

529
デフォルトの名無しさん[sage]   投稿日:2015/10/10 16:04:43  ID:yLWmOzh6.net
・アップデート?アップグレードでしょ?
・railsやめたところで他の言語やプラットフォームでも同じこと
・エラー?ソース読めばわかる(他のOSSでも同じ)
・ソース読めない?じゃあ使うな(他のOSSでも同じ)
・安定した環境にしたらアップグレードできない?
 ・テスト書いてないってことじゃん。そんなの今は安定っていわねーんだよw

530
デフォルトの名無しさん[sage]   投稿日:2015/10/10 21:04:12  ID:wylVu18O.net
gem upgrade rails?

いやもうrailsとかほんと良いんで・・・・・
他の手段でWebサイトは現状管理出来てるけど
ruby繋がりでrails一応やっとくかー → あーーーーーー・・・・・・もうやんね
と、なったのでした。おしまい。

531
デフォルトの名無しさん[sage]   投稿日:2015/10/11 10:52:35  ID:ngi+Bnfd.net

532
デフォルトの名無しさん[sage]   投稿日:2015/10/11 20:03:17  ID:p0ViGygC.net
趣味だから扱い易いのでいいや

533
デフォルトの名無しさん[sage]   投稿日:2015/10/16 13:41:19  ID:CYEljn+R.net
今の時代に個人サイトでCGI使う必要性すらなくなってきてるな
CGI動かなくてもかなりのものが外部委託
大体動的なページ生成とか、あらかじめメタするかjsでページ内変更で十分出来るし
それはサーバーサイドにやらせなくても実現出来るけど管理が楽だからって理由でサーバーサイドにやらせてるだけ
URLに?とか=くっつけてparam受け取るのって脆弱性しか残らんよ
いずれURLからparam受け取る情弱設計は淘汰される運命

534
デフォルトの名無しさん[]   投稿日:2015/10/16 17:56:09  ID:MCgyDKhx.net
jsだとソース見られるけど
jsで済んでしまうんだよな

535
デフォルトの名無しさん[sage]   投稿日:2015/10/16 20:11:02  ID:N6Jh2d8+.net
初心者スレで初心者が知識を披露して自分の知識のバグ取りする流れは飽きたな

536
デフォルトの名無しさん[sage]   投稿日:2015/10/16 21:24:47  ID:+G3m5iUJ.net
飽きるほど2ch張り付いてる事に驚く
よっぽど暇なんだな

537
デフォルトの名無しさん[sage]   投稿日:2015/10/18 01:33:19  ID:WOyChqNZ.net
うん、最近は仕事も順調でかなり暇
コメント1件

538
uy = ruby^rb ◆hBlkfWm2Xc [sage]   投稿日:2015/10/18 11:33:50  ID:WvPHJe2x.net
コテでもやれよ

539
デフォルトの名無しさん[sage]   投稿日:2015/10/18 13:06:49  ID:Q87slw7q.net
>537
紹介して

540
デフォルトの名無しさん[]   投稿日:2015/10/19 04:34:17  ID:3gr1qLW4.net
んんんんwwwwwwwwww

541
デフォルトの名無しさん[sage]   投稿日:2015/10/20 14:21:04  ID:aDq7wlfP.net
rubyinstallerでruby&nbsp;2.2.3をインストールしたのですが、
irbなどでコンソールから日本語を入力すると
Error:&nbsp;Invalid&nbsp;argument&nbsp;@&nbsp;io_write
というエラーが出ます
なんとかなりませんか?

542
デフォルトの名無しさん[sage]   投稿日:2015/10/20 19:58:42  ID:Rs0+C/fu.net
Windowsだとコマンドプロンプトの入力はShift_JISになるからじゃね?

543
デフォルトの名無しさん[sage]   投稿日:2015/10/20 20:13:03  ID:5FrvHuNh.net(2)
つーか今試したらマルチバイト文字をなに入力しても
bbbbbなってワロタw
Windowsからirb使えないじゃん

544
デフォルトの名無しさん[sage]   投稿日:2015/10/20 20:18:12  ID:5FrvHuNh.net(2)
ゴミ

545
デフォルトの名無しさん[sage]   投稿日:2015/10/21 03:47:58  ID:tbQLNnPC.net
便利すぎる
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" -app=http://fatiherikli.github.io/fil/

546
デフォルトの名無しさん[sage]   投稿日:2015/10/21 05:35:54  ID:YZnuen5o.net
ブラクラ貼るなぼけ

547
デフォルトの名無しさん[]   投稿日:2015/10/21 07:43:09  ID:BEOnjFkl.net
100万行ある日本語まじりの、カンマ区切りで30フィールドもあるようなファイルを読み込んで、
2行目以降が、きっちり、1行目とまったく同じだけのフィールドの数で統一されてるかをチェックしたいんだけど、
こういうのってRubyでは出来るもんでしょうか?

548
デフォルトの名無しさん[sage]   投稿日:2015/10/21 07:48:24  ID:zc5Cc/IW.net(2)
出来るか出来ないかで言えば出来るにきまってるだろ

549
デフォルトの名無しさん[sage]   投稿日:2015/10/21 10:30:40  ID:4fxeGd4H.net
rubyでもexcelでも

550
デフォルトの名無しさん[sage]   投稿日:2015/10/21 11:34:58  ID:zc5Cc/IW.net(2)
後ろから前から

551
デフォルトの名無しさん[sage]   投稿日:2015/10/21 18:35:32  ID:ZXMR/M8n.net
ただし、巨大なファイルは、File.read()などで、
一度に全部読み込んじゃダメ

1行ずつ読み込む、IOクラスを使う

io.each_line do |line|
line.chomp!
処理
end

552
デフォルトの名無しさん[sage]   投稿日:2015/10/21 18:42:16  ID:eyra7kkr.net
仕事でちょっとしたツールを書いているのですが
同じようなコードを再利用する場合は
モジュール化すれば良いのでしょうか?

553
デフォルトの名無しさん[sage]   投稿日:2015/10/22 01:29:40  ID:TbUL0QMn.net
コード使い回したいだけなら単にそのファイルをrequireするだけ
使いまわしたいコード(関数)が増えてきたらmoduleやclassで囲って用途ごとにグルーピングする

554
デフォルトの名無しさん[sage]   投稿日:2015/10/23 10:51:54  ID:Rrtmqjxl.net
再帰関数の中でrequireをたくさん使いたいのですけど
requireってスタック消費しますか?

555
デフォルトの名無しさん[]   投稿日:2015/10/23 12:58:24  ID:x5v4qLUm.net
ruby初心者です
あるソースコードで以下のようなメソッドを見かけたんですが
どういう意味でしょうか?
教えて下さい

def self.[](key)
{
'test1' => 'aaa',
'test2' => 'bbb'
}[key]
end
コメント2件

556
デフォルトの名無しさん[sage]   投稿日:2015/10/23 16:50:34  ID:vpVrL7dw.net
>555
Ruby のクラスメソッド定義まとめ
http://qiita.com/Linda_pp/items/b7135ae1f0def6058c6c

557
デフォルトの名無しさん[sage]   投稿日:2015/10/23 23:46:19  ID:KbxpAfMH.net
[ ]演算子を、再定義しているのかも

558
デフォルトの名無しさん[sage]   投稿日:2015/10/24 23:48:55  ID:Qgv+LRcU.net
ご無沙汰しております。前スレ982です。
前スレで問題を解決していただき、無事にVistaで運用しておりましたが、
8.1のマシンで同じRBファイルを実行しようとすると以下のようなエラーが…どなたかお分かりになりませんでしょうか?

http://imgur.com/z4S2yUE.png

559
デフォルトの名無しさん[sage]   投稿日:2015/10/25 00:09:06  ID:U+zphv13.net(4)
エラーメッセージを読もう

560
デフォルトの名無しさん[sage]   投稿日:2015/10/25 00:13:36  ID:dvCcO/ow.net(3)
エラーメッセージが何を指しているのかが分からないのですw

561
デフォルトの名無しさん[sage]   投稿日:2015/10/25 00:32:26  ID:U+zphv13.net(4)
「エラーメッセージの言っていることはわかるがどうしてエラーが起こっているのかわからない」のか、
「エラーメッセージの英語が読めないまたは読んでない」のか、
「そもそもどれがエラーメッセージかわかってない」のか
コメント2件

562
デフォルトの名無しさん[sage]   投稿日:2015/10/25 00:41:54  ID:dvCcO/ow.net(3)
>561
すみません、全部です…

563
デフォルトの名無しさん[sage]   投稿日:2015/10/25 00:45:35  ID:dvCcO/ow.net(3)
>561
いや、最初のパターンですね!

564
デフォルトの名無しさん[sage]   投稿日:2015/10/25 00:48:58  ID:kAzb4U8m.net(3)
no such file or directory が読めないのか

565
デフォルトの名無しさん[sage]   投稿日:2015/10/25 00:54:46  ID:udh7cbN2.net(3)
Vista機と同じように運用しようとしてる(つもり)なのにエラーが出る理由が知りたいとです…

566
デフォルトの名無しさん[sage]   投稿日:2015/10/25 00:58:24  ID:U+zphv13.net(4)
C:\調教分析\temp\kol_den2.kd3 がないと言っている
どっかから拾ってきたスクリプトなんだったらきっとあなたが使い方を間違えてるので作者に聞いて下さい
コメント1件

567
デフォルトの名無しさん[sage]   投稿日:2015/10/25 00:59:41  ID:kAzb4U8m.net(3)
C:\調教分析\temp\kol_den2.kd3 が見つからないってエラーじゃないですか
エクスプローラでそのファイルが存在するか確認しました?
コメント1件

568
デフォルトの名無しさん[sage]   投稿日:2015/10/25 01:03:29  ID:udh7cbN2.net(3)
>566
>567
わざわざありがとうございます!
検証してみたらVista機からdropbox経由でコピーしてきたtempフォルダの中身がいつの間にか消えてしまうんです。

569
デフォルトの名無しさん[sage]   投稿日:2015/10/25 01:12:37  ID:U+zphv13.net(4)
temp (一時ファイル) っていうくらいだしスクリプトが最後にtempフォルダの中身を消す仕様なんじゃない?
Vista機で正常に実行し終えたあとにはtempフォルダの中身は残ってるの?
コメント1件

570
デフォルトの名無しさん[]   投稿日:2015/10/25 02:06:13  ID:IGihUR6P.net
>555-557
def func(overwrites = {}){
:a => AAA
:b => BBB
}.merge(overwrites)

「Selenium デザインパターン & ベストプラクティス」2015
という本に載っていたけど、

この関数の引数に、ハッシュを渡すことで、
任意のフィールドを上書きできたり、
新たなキーと値を追加できる

571
uy ◆ggMix6r0fY [sage]   投稿日:2015/10/25 07:04:34  ID:Pm66QtwE.net(2)
VimからAtomに移行したよ
http://soz.hatenablog.com/entry/2015/03/23/150317

Atom を Vim っぽく扱う vim-mode と ex-mode
http://loumo.jp/wp/archive/20150727064627/

vim使いがAtomに乗り換えを試みる
http://codeofsea.hatenablog.com/entry/2015/05/01/232954

竹上、vimmerやめるってよ
http://utage.headwaters.co.jp/blog/?p=3835

Atomチートシート
http://qiita.com/ryo0301/items/e06ea6bf95910cdbcc29




Matzって人は確か、Emacs(笑)だっけ?

572
デフォルトの名無しさん[sage]   投稿日:2015/10/25 07:06:57  ID:Pm66QtwE.net(2)
Hi マッツ

573
デフォルトの名無しさん[sage]   投稿日:2015/10/25 07:23:21  ID:udh7cbN2.net(3)
>569
レスありがとうございます。Vista機ではtempフォルダの中身は残ったままなんです。8.1だと本当に「いつの間にか」消えてしまってるんです。

574
デフォルトの名無しさん[sage]   投稿日:2015/10/25 08:16:09  ID:wzNiY0Sm.net
8.1だめだな。添付ファイルが消えるなんてメールも送れないじゃない。
というとでも思ったのか? 
いつの間にか消えるのを臨時スペースや一時スペースといいます。

575
デフォルトの名無しさん[sage]   投稿日:2015/10/25 08:25:06  ID:kAzb4U8m.net(3)
tempフォルダは消して良いものか定期的(プログラムの終了とか)に消すものを入れておくフォルダですよ

576
デフォルトの名無しさん[sage]   投稿日:2015/10/26 00:18:30  ID:405X1S7m.net
RubyでPython風のインデントでブロックを書くやりかたしたいんだけど
やり方教えてよ
コメント1件

577
デフォルトの名無しさん[sage]   投稿日:2015/10/26 09:44:07  ID:7klYI+GR.net
まずPhyhonを覚えます。
覚えたら教えて。

578
uy ◆BfeYkzFGdo [sage]   投稿日:2015/10/26 11:44:01  ID:PFFVX39o.net(2)
>576
CoffeeScriptはendのないrubyだよ


AA テスト
  ┴ァ 
  イヽ

579
Uy ◆2uwIzfDc1. [sage]   投稿日:2015/10/26 13:13:15  ID:PFFVX39o.net(2)
質問です
物凄くネストしたコードを書きたいんですけど

lambda do
 lambda do
  lambda do
   ...

これってスタック使っているんですか?
いくつくらいまでのネストが可能ですか?

580
デフォルトの名無しさん[]   投稿日:2015/10/27 21:07:10  ID:sS/wkUVJ.net
もういいです

プログラミング飽きた

581
デフォルトの名無しさん[]   投稿日:2015/10/28 11:15:34  ID:dfvAkVtP.net
質問です

extendの時に引数を渡してメソッドの初期化をしたいのですが
クラスでラップしたりmy_extend定義以外の方法はありませんか?
一応下記の方法で出来ましたが冗長してしまいます

# 1
o = Object.new
o.extend Module_A_rapper_class.new("text").module # メソッド func を追加
o.func # => text

# 2
o.my_extend(Module_A, "text")
コメント2件

582
デフォルトの名無しさん[]   投稿日:2015/10/28 20:18:57  ID:WdTv92Vj.net
もういいです

レス来る前に
実装終わっちゃった

583
西行寺うゆ ◆e6.oHu1j.o [sage]   投稿日:2015/10/29 10:29:29  ID:R4RgirF7.net(4)
初めましての方は初めまして 西行寺 うゆと申します

rubyって自由度が高いといわれていますけれど
>581このような事をやる場合に、結局ネックになるのは

「クラス」には存在して「モジュール」には存在しない機能です
extended , includedが呼び出し側から引数を取れないのは何故ですか?

それでも無理やりにmoduleのextendedをinitializeの代わりにプログラミングしていった先にあるひとつの壁は
extendedが「引数を取れない事」と「super」を呼べない事です

このせいで結局「クラスにラップされたモジュール」というのが、コード上の冗長性を抜きにした場合
最も効果的な手段となってしまいます


しかしながら他にも問題はあります

 ラ イ ブ ラ リ の ほ と ん ど は ク ラ ス で 提 供 さ れ て い る 

o = Object.new
o.extend Module
よってこの記述は、モジュールだから出来ているだけで

o.extend Class
は出来ないです

584
西行寺うゆ ◆e6.oHu1j.o [sage]   投稿日:2015/10/29 10:30:53  ID:R4RgirF7.net(4)
よってextend Module型のプログラミングを、rubyが可能だとしても出来ないんです
その場合
o = Object.new
o.extend Module.new { attr_accessor :mod }
o.mod = Lib_Class.new
このような形になってしまいます




これって結局「自由なプログラミング言語」と謳っていても、
結局「クラスを使った"常識的なプログラミング"」の中だけの「自由」なんです

実際classではなく module extended式のプログラミングをしてみるとわかりますが
moduleのスコープとmodule内特異クラスの最低でも2つ以上のスコープを意識しながら組む事になります

このスコープは「カプセル化」の恩恵を与えてくれるものではなく、ただ煩雑にさせるだけのスコープです
よって
@var = 1
def self.extended | mod |
@ var
end
def func
 @var # error
end
klassの違いからなる制約が頻発します

585
西行寺うゆ ◆e6.oHu1j.o [sage]   投稿日:2015/10/29 10:31:19  ID:R4RgirF7.net(4)
なので、このような煩雑なklassスコープを意識しながら組むよりは
var = 1
self.define_singleton_method :extended do | mod |
 p var
 mod.define_singleton_method :func do
  p var
 end
end


と、書いてしまったほうが、明らかにわかりやすいです


extended プログラミングの中では
「 def 」を使わずに一見冗長define_singleton_methodを使ったほうがまだマシなように思います
@つきメンバ変数を使わず
ローカル変数スコープを全てのmodule内の定義メソッドで突っ切らせたほうが、簡潔になります


先にも言いましたが、extend extended は引数を得られない
これってユーザー引数によって、extendedからメソッドを「追加」ではなく「定義」しようと思った時に
無理なんです
extendの利用価値がガタ落ちじゃないですか?

「引数」ではなく、内部変数等の「状態保存」だけならできます

extend でメソッドを作っても、
「引数」ではなく、内部変数等の「状態保存」%まで% しか出来ない、

586
西行寺うゆ ◆e6.oHu1j.o []   投稿日:2015/10/29 10:32:37  ID:R4RgirF7.net(4)
そしてそれを打開するために、このようにしました
o.extend My_module_rappar_class.new("extendedで使いたい引数").new.module ## My_module_rappar_class#module # => #<Module:0x0000FF0>

rubyのシンタックスシュガーの外に出た感じです

参道から外れて獣道に入ったようなイメージ

自分の通ろうとしている獣道をruby言語で開拓していただけませんか?


自分が欲しい機能を以下に並べます

アジェンダ
 ・extend で「引数に沿ってメソッド生成・メソッド定義」が可能なモジュール機構
   これが出来ない時点で、基本的には状態保存をしないで済むメソッドの追加しかextendでは出来ない制約があります
 ・ライブラリがクラスで作られていても容易にextendが可能な機能
   これは「o.extend Module.new { attr_accessor :mod }」のひと手間かければ良いのですが
   

この二つです


 では、何か質問等ございましたら

 【JavaScript】スクリプト バトルロワイヤル52【php,py,pl,rb】

   こちらまでメールをお願いします 

587
デフォルトの名無しさん[]   投稿日:2015/10/30 00:01:17  ID:k5vGnOwJ.net
Rubyのしくみ、2014

黒魔術の書
メタプログラミングRuby 第2版、2015

この2冊を読め!
コメント1件

588
uy ◆e6.oHu1j.o []   投稿日:2015/10/30 14:33:43  ID:J4qdTdgZ.net
>587
ruby関連の書籍で読んでない本が自分にあると思ってんの?

全部読んでるから

589
デフォルトの名無しさん[sage]   投稿日:2015/10/30 15:06:03  ID:+puIhN5e.net
Rubyプログラミング基礎講座(広瀬雄二)も?

590
うy ◆e6.oHu1j.o []   投稿日:2015/10/30 21:59:26  ID:37Q7KUOb.net
10万3000冊の技術書を暗記してる

591
デフォルトの名無しさん[sage]   投稿日:2015/10/30 22:01:29  ID:olSnnU8y.net
何そのゼロみたいな人

592
デフォルトの名無しさん[sage]   投稿日:2015/10/31 11:45:00  ID:zwNlcJhb.net
>581
よくわかんないけど、こういうんじゃダメなの?

module M; def foo; p "foo" end end

class Module
  def my_exec(p, &b); module_exec{ b.call(p) }; self end
end

obj = Object.new
obj.extend M.my_exec("bar"){ |s| define_method(:bar){ p s } }
obj.foo #=> "foo"
obj.bar #=> "bar"
コメント1件

593
uy ◆e6.oHu1j.o []   投稿日:2015/10/31 16:03:04  ID:eogiaEdE.net
>592
その発想なかったです、
self.extendedを捨てればよかったのですね
これで出来ましたありがとうございます

module UY
def self.my_exec arg
define_method(:func){ p "hallo "+arg }
self
end
end

o = Object.new
o.extend UY.my_exec("uy")
o.func

594
デフォルトの名無しさん[sage]   投稿日:2015/10/31 20:41:27  ID:h/fOQC4f.net
refineってモジュールに対して使えないみたいですけど
moduleの特異クラスに適用する方法ってありますか?
コメント1件

595
デフォルトの名無しさん[sage]   投稿日:2015/11/01 05:13:28  ID:u91GrISs.net
>594
クラスと同じようにできるみたい。

module M; def self.foo; p "foo" end end

module ModuleMethodRefine
 refine M.singleton_class do
  def bar; p "bar" end
 end
end

using ModuleMethodRefine

M.foo #=> "foo"
M.bar #=> "bar"

http://qiita.com/joker1007/items/68d066a12bc763bd2cb4

596
デフォルトの名無しさん[sage]   投稿日:2015/11/01 17:19:20  ID:t/1K3INb.net(2)
基本的な質問ですみません。
Windowsのコマンドプロンプトからruby(main.rb)を実行するとき、あるファイル(stdin.txt)から標準入力を与えるにはどうすればいいですか?

一応こんなコマンドを指定してみましたが、なぜか標準入力がmain.rb自身になってしまいます。
ruby main.rb < stdin.txt
コメント1件

597
デフォルトの名無しさん[sage]   投稿日:2015/11/01 17:23:46  ID:t/1K3INb.net(2)
>596
すみません、勘違いのようでした。質問取り消しでお願いします
コメント1件

598
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/01 17:59:27  ID:hwVDg0hR.net(2)
前から疑問なんだけど、デストラクタ (゚゚)イラネ のruby使いさんたちは、

例えば花火のように「爆発前」と「爆発後」で別オブジェクトが必要な時
つまり、物体Aが消滅する時に「消滅エフェクト」として火花を生成したい。
デストラクタ無しでこの「消滅エフェクト」ってどこに書くんですか?

花火は打ち上げられてから時間で爆発します

def delete_count
 if ( self.count -= 1 ) < 0
   < ここ? >
  self.delete
 end
end


時にはデストラクタに処理直接書いたほうが楽なケースってあるんですけどぉ

599
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/01 18:00:21  ID:hwVDg0hR.net(2)
>597
良いよ
今度から気をつけろよ

600
デフォルトの名無しさん[sage]   投稿日:2015/11/02 11:40:32  ID:xhNmMlq/.net
def f
5.instance_exec do
p to_s # => 5
yield
end
end

f do |s|
p to_s # => main
end

こんなの書いてみたんですけど
ブロック側から 5のselfを得るのって無理ですか?
コメント1件

601
デフォルトの名無しさん[sage]   投稿日:2015/11/02 12:59:22  ID:z6P56ki9.net(2)
>600
5 を self で得るのは無理ですが、わざわざ用意している s で受けるのはどうして駄目なんですか?

def f
 5.instance_exec do
  p to_s # => 5
  yield(self)
 end
end

f do |s|
 p s.to_s # => 5
end
コメント1件

602
デフォルトの名無しさん[]   投稿日:2015/11/02 13:28:27  ID:hDe7Ebe3.net(2)
>601
f do |s|
 ...
end
ここに多くのコードを書く場合にs. が何度も登場して冗長だからです
コメント1件

603
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/02 14:10:05  ID:NBJZmpcU.net
こんなこともわからない奴いるってマジ?


def func
  file = nil , line = nil
  caller().each do |str|
    str =~ /(.*?):(\d+)/
    file, line = $1, $2
  end
  5.instance_exec do
    p to_s # => 5
    eval open(file).each_line.to_a[line.to_i-1].sub( __method__.to_s, "1.times") # => 5
  end
end

func do p to_s end
コメント1件

604
デフォルトの名無しさん[sage]   投稿日:2015/11/02 14:56:08  ID:z6P56ki9.net(2)
>602
じゃあ、こんな感じで。

def f(&b)
 5.class.class_exec(5){ |s| define_method(:anon, &b); instance_method(:anon).bind(s) }.call
end

f{ to_s } #=> "5"

605
デフォルトの名無しさん[sage]   投稿日:2015/11/02 15:28:08  ID:hDe7Ebe3.net(2)
>603-604
凄いですね・・・
流石にここまでrubyで出来るとは思いませんでした
ありがとうございます

606
uy ◆Qawu9.2l1E []   投稿日:2015/11/02 16:02:08  ID:Pq0uxgZZ.net
def f
5.instance_exec &amp;proc
end
f {p to_s}

はいわろ

607
デフォルトの名無しさん[sage]   投稿日:2015/11/02 16:05:07  ID:QGaoT7BM.net
あれ?このスレちょくちょく文字化けしてる
どのエンコード選べば読めるようになるの?

608
uy ◆Qawu9.2l1E []   投稿日:2015/11/02 17:07:33  ID:MPfeNe3M.net(2)
スマホが文字化けする

609
うゆゆゆゆゆゆ ◆Qawu9.2l1E [ゆゆゆゆゆくゆゆぬゆくゆ]   投稿日:2015/11/02 17:10:12  ID:MPfeNe3M.net(2)
オブジェクト思考はゴミ

610
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/02 19:06:55  ID:YzpIGAAp.net
高度なオブジェクト思考が出来て、関数型思考が出来て
ruby並に記述が簡潔で再帰の速い言語ください

rubyの再帰はマジでおそいと思う
コメント1件

611
デフォルトの名無しさん[sage]   投稿日:2015/11/02 20:09:49  ID:JLYNx9SG.net(2)
>610
なければ作っちゃえばいいんじゃなーい?
Matzだって自分好みの言語がなかったから作っちゃったんだしー

612
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/02 21:47:32  ID:gLS3ib7d.net
Matzほど暇人じゃないんで。

VM関連のソースは漁るかもしれない
コメント2件

613
デフォルトの名無しさん[sage]   投稿日:2015/11/02 21:52:34  ID:JLYNx9SG.net(2)
>612
まるでヒマがあれば作れるみたいな言い方じゃなーい
だとしたらあとは必要なのは時間じゃなくて情熱だよねー
コメント1件

614
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/02 23:31:24  ID:5/Pq42i4.net
時間ねーっつってんだろタコ
コメント1件

615
デフォルトの名無しさん[sage]   投稿日:2015/11/02 23:43:34  ID:WyDMkyCX.net
BMPからPNGに変換する処理を書いたが、1980x1200で2桁秒程度しか出ていません

特に時間がかかっているのが、BMP→PNGの画素表現の変換処理

a255 = "\xFF".force_encoding("ASCII-8BIT")
bmpi.each do |line|
pos = 0
posp = 0
pngl = a255*(4*ihdr.width)
while pos<line.size # BGR => RGBA
pngl[posp ] = line[pos+2]
pngl[posp+1] = line[pos+1]
pngl[posp+2] = line[pos ]
pos += 3
posp += 4
end
pngi << [0, pngl]
end


それとIDAT作成時の
[[フィルタメソッド、RGBAイメージ]×ライン数] の連結処理

image.each do |line|
pngi += line.pack("Ca*")
end

なのですが、これ以上高速に動く記述法は無いでしょうか?
コメント5件

616
デフォルトの名無しさん[sage]   投稿日:2015/11/03 01:12:24  ID:rm6qzEkF.net(2)
離散フーリエ変換を自分で作ってみたんだけど適当に直してくれ
FFTにはしないでね

class Array
 def dft
  n = self.length
  w = Complex.polar(1, -2*Math::PI/n)
  w_arr = (0...n).map.with_index{|row, _n| (0...n).map.with_index {|e, _k| w**(_n*_k)}}
  dft_arr = (0...n).map.with_index do |e, _k|
   sum = 0
   n.times{|_n| sum += w_arr[_n][_k] * self[_n]}
   sum/(n**0.5)
  end
 end
end

p [0,1,0,1].dft #=> [(1.0+0.0i), (-6.123031769111886e-17+0.0i), (-1.0-2.4492127076447545e-16i), (1.836909530733566e-16+0.0i)]
コメント1件

617
デフォルトの名無しさん[sage]   投稿日:2015/11/03 02:16:12  ID:rm6qzEkF.net(2)
>616
どうでもいいけどMatrixってのがあるんだな、いまいち配列ほど使いこなせないけど
これは便利だ

require 'matrix'
require 'complex'

v1 = Vector[0,1,0,1]
n = v1.size
w = Complex.polar(1, -2*Math::PI/n)
w_matrix = Matrix.rows((0...n).map.with_index{|row, _n| (0...n).map.with_index {|e, _k| w**(_n*_k)}})
v2 = w_matrix * v1 / (n**0.5)
p v2 #=> Vector[(1.0+0.0i), (-6.123031769111886e-17+0.0i), (-1.0-2.4492127076447545e-16i), (1.836909530733566e-16+0.0i)]

618
デフォルトの名無しさん[sage]   投稿日:2015/11/03 03:37:04  ID:yudcS5lQ.net
>612
crystal 以上のものができるとは思えない。

619
デフォルトの名無しさん[sage]   投稿日:2015/11/03 07:57:22  ID:ZahXSpxi.net(3)
>614
2ちゃんやってる時間はあるのにねw

620
デフォルトの名無しさん[sage]   投稿日:2015/11/03 10:47:01  ID:7fKHty9q.net
>615
元は、
pngl += line[pos+2] + line[pos+1] + line[pos]
と、
pngi += [line[0]].pack("C")+line[1]
としてて、
これを>615に変えたら3割ほど早くなったのですが、
そこからどうすれば時間削減できるか思いつきませんでした
全コードは以下です
http://codepad.org/RMuparfO
どなたか高速化のアイデアありましたらご意見お願いいたします
コメント2件

621
デフォルトの名無しさん[sage]   投稿日:2015/11/03 11:31:08  ID:bls6utNu.net(2)
Core i7-6700、DDR4-2133 8GBメモリ、GeForce GTX960
より低スペックだったら買い替える

622
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/03 13:23:55  ID:IUDjoANu.net
興味も向かず金にもならない事をやらない事が逃げみたいな風潮

ひとりでやってろよ暇人
コメント1件

623
デフォルトの名無しさん[sage]   投稿日:2015/11/03 13:28:42  ID:ZahXSpxi.net(3)
>622
まさに>613の言ってる通りじゃん
足りないのは時間じゃなくて情熱でしょ

624
デフォルトの名無しさん[]   投稿日:2015/11/03 14:34:36  ID:C0Kah9v/.net
>615,608
rubyならCで書いてモジュール化したら?

625
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/03 15:13:05  ID:dozR5F+q.net(2)
では、適当な有名人を思い浮かべてください。

IT分野以外の。第一線で活躍して日々忙しく生きている人です。

実はその人は余暇を使って趣味でプログラミングをしていました。

しかし言語に足らない機能があると思い「この機能なくね?」と愚痴をこぼしました

そしたら周りが「じゃあお前が作れよw」「情熱が足りてねーよw」とか言うの?

言わないでしょ。
そのレベル
コメント1件

626
デフォルトの名無しさん[sage]   投稿日:2015/11/03 15:29:49  ID:ZahXSpxi.net(3)
>625
キレてる意味が分かんない
「自分が作れよ」とか「情熱がない」をけなし言葉だと受け取っちゃったのかな?

627
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/03 15:30:13  ID:C3Kp9NP8.net
ぼくには知識がありますけれど、それは「とある魔術のINDEX」のインデックス

インデックスでありインデックス以下でもない、インデックス === インデックス
( インデックス != インデックス ).false?

一度読んだものを全て覚えてしまう能力があるので
知識をため込む事が容易過ぎるだけなんです
その能力がIT分野では特に発揮される

でも何があっても絶対に、他人の為・社会の為に技術力を使いません

628
デフォルトの名無しさん[]   投稿日:2015/11/03 15:45:30  ID:oINh57iv.net
             ,.'´        ``ヽ、
        /              `ヽ
        /              ヽ  \
      |   /              _」    |
      |  }ー----------…… '´/.:l   |
       !  l:r┐   //  // // /l   |
       !  l:l !   //  // // //\  |
      l/ ,.イ /-- ── ─┬┬ < トト、ト、 1
      l 「7 ⌒ヽム_/ノl/ ヽ┼仆ハVV〉  |
      ///   ‐{ l/ニ     _.._,  1i!   |
     〃    ソー=='      ̄ '' j.:.l  |
      ,′   ハ'゙     ,      ,.イ.:.l  |
      i   イ:: : ヽ    t -- -ァ /.:.l.:.:l  |
      |    |:: :: ::_」> _ゝ-_'. イ`ヽl.:l.:.:l   |
     ./|    ∧l l:: i.:\` ー----‐' 人 l.:.:l  |
    /. |  / ∧ l:: l.:.:.:.\     イ /l.:l.:. l   |
   /.: . |/  // l:: lヽ.:.:.:.:.\ __,  /.l.:l \ l |
  〈__/   //  .l:: l  \.:.:.:.:\. /.:.:l.:l  \1
  /\   //   .l:: l   \.:.:.:.:V.:.::/l:.l   ∧,

629
デフォルトの名無しさん[sage]   投稿日:2015/11/03 16:21:56  ID:bls6utNu.net(2)
 発 者 同         . 。_   ____           争
 生 同 .じ     .    /´ |  (ゝ___)          い
 .し 士 .レ      .__/'r-┴<ゝi,,ノ   ro、      は、
 .な で .ベ      ∠ゝ (ゝ.//`   ./`|  }⌒j     
 .い し .ル        } ⌒ /`ヽ、_∠l,ノ ・ヽ´
 .! ! か の       /  ´..:.} >、、___,  .r、 ソ、`\
             /   ..:.:.}   /   |∨ ` ̄
            /   ..:.:./    |   丶
           / _、 ..:.:.:.{    .{.:.:.   \
          {   ..:Y  .ゝ、   {.:.:.:.:.    ヽ
          |、  ..:/ 丿 .:〉   >.- ⌒  .  ヽ
          / {. ..:./ ソ ..:./  .(    ..:.:.:`  ..:}
         ./..:.:}.:.:./ ヘ、 ..:./   .\ ..:.:r_,ノ、.:.:}
        ./..:.:/|.:/   {.:./     X.:.:}.}   X X
        /..:.:/ .}.:|    }:/       .Y丶ヽ  Y.:Y
  . __/.:/ { }  《.〈、     _,,__>.:》丶   Y.:\
  /.:.:.:.:.::/   !.:.:ゝ  ゝ.:. ̄ヾ ´:.:.:.:.:.:.:.:.:ヾゝ   \.: ̄>

630
uy ◆Qawu9.2l1E []   投稿日:2015/11/03 16:24:41  ID:c9KPlTxg.net
人間っていうデバイス使ってるくせに「同じレベルじゃない」とか思ってる奴のほうが痛いな

ゴキブリやカメムシか何かですか?(生命力強い的な意味で)

631
uy ◆Qawu9.2l1E []   投稿日:2015/11/03 16:40:21  ID:dozR5F+q.net(2)

632
デフォルトの名無しさん[sage]   投稿日:2015/11/03 20:24:39  ID:WDR9dJBW.net
NG一つで快適快適
コメント1件

633
uy ◆Qawu9.2l1E []   投稿日:2015/11/04 00:20:49  ID:9yLsNv2L.net
>632
このスレで名無しの自演がどんだけ含まれてると思ってる?
誰もuyから逃げられないんだよ
コメント1件


634
デフォルトの名無しさん[sage]   投稿日:2015/11/04 07:59:12  ID:IENSYbNF.net
>633
ちくわ大明神

これも覚えたな?

635
uy@紫の鏡 ◆Qawu9.2l1E [sage]   投稿日:2015/11/04 12:52:14  ID:i1eTFo0U.net
そんな単語覚えたところで何の意味もない

636
uy@紫の鏡 ◆Qawu9.2l1E [sage]   投稿日:2015/11/04 13:02:57  ID:aNCvQtC0.net
ちなみに自分は、紫色より「もう一段階」波長の短い「色」を見る事が出来る
コウモリは赤外線を見れるけど、その逆側の波長だ

普通の人は見る事が出来ない、可視光線の外側
これが「紫の鏡」なのでは無いかな?
コメント1件

637
デフォルトの名無しさん[sage]   投稿日:2015/11/04 14:29:06  ID:D2Xkj+uK.net
>636
鳥の目は4原色対応
人間は3原色だが女性に少数だが4原色がいるらしい
女性ホルモンが多いとそうなるのかな
色覚障害の人は2原色やモノクロ
猫は2原色

638
デフォルトの名無しさん[sage]   投稿日:2015/11/04 22:46:34  ID:+yNa4eFA.net(2)
入力した整数が2のべき乗かどうかを効率的に判定するにはどうしたらいいですか?

639
デフォルトの名無しさん[sage]   投稿日:2015/11/04 22:50:03  ID:Ly3yLQ9c.net
2で割っていけばいいんじゃないの?
コメント1件

640
デフォルトの名無しさん[sage]   投稿日:2015/11/04 22:52:20  ID:+yNa4eFA.net(2)
>639
ありがとうございます
やってみます
コメント1件

641
デフォルトの名無しさん[sage]   投稿日:2015/11/04 23:07:16  ID:aW05L/Nl.net
>631
Rubyはインストール可能だけどXnViewは使用可能なソフト一覧に含まれてないしZlibも使用可能なライブラリには名前ないので(汗
同じ理由でRubyの拡張ライブラリでという手も打てません

>640
たっているビットが1ビットのみかを判定するでもいけますね

642
uy@紫の鏡 ◆Qawu9.2l1E [sage]   投稿日:2015/11/05 01:05:05  ID:BygappPf.net

643
デフォルトの名無しさん[]   投稿日:2015/11/06 00:56:29  ID:YVUNOzRU.net
おい、おまえら、

「誰もuyから逃げられないんだよ 」

644
デフォルトの名無しさん[sage]   投稿日:2015/11/06 01:43:15  ID:ARx20cVI.net
>642
ありがとうございます・・・
計測してみましたが1%ほど早くなっているようです
やり方根本的に変えないとこれ以上は無理かもしれません、う〜ん

645
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/06 16:52:48  ID:aIehvATR.net
問題はループ回数だろうね
誰もuyから逃げられないんだよ

646
デフォルトの名無しさん[sage]   投稿日:2015/11/06 18:31:20  ID:Vobfpb3W.net
>615
String の += は破壊的連結ではなくて使った分だけオブジェクトができる
なのでループ中とかでたくさん呼び出すと速度低下の原因になる
破壊的連結でいい場合は String#<< というメソッドがあるのでそっちを使いましょう

あとは、String#[] には Range を渡す使い方もできるので、
pngl[posp..posp+2] = line[pos..pos+2].reverse!
とすると String#[] の呼び出し回数を1/3にできる
コメント2件

647
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/06 18:59:35  ID:AWzYOs1s.net
>646
^^;



>642 更新

  atmp = "\xFF".force_encoding("ASCII-8BIT")
  for line in bmpi do
    pos  = 0
    pngl = ""
    while pos < line.size
    # BGR => RGBA
      pngl << line[pos+2] + line[pos+1] + line[pos] + atmp
      pos+=3
    end
    pngi << [ 0 , pngl]
  end

648
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/06 19:57:47  ID:6VBxeh94.net(2)
速度は出ないけど変数減らしてみるとこうなる

atmp = "\xFF".force_encoding("ASCII-8BIT")
res << bmpi.map do |line|
[0 , line.chars.each_slice(3).inject("") do |s,(b,g,r)| s << r+g+b+atmp end ]
end

649
デフォルトの名無しさん[sage]   投稿日:2015/11/06 20:23:16  ID:ZLqSRBgO.net
申請すれば許可してくれるんじゃね?
趣味でやってて公けにできないんなら別だが
コメント1件

650
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/06 21:37:20  ID:DzTyHAnl.net(2)
>642 , 635 更新

  atmp = "\xFF".force_encoding("ASCII-8BIT")
  for line in bmpi do
    pos  = 0
    pngl = ""
    while pos < line.size
    # BGR => RGBA
      pngl << line[pos+2] + line[pos+1] + line[pos] + atmp
      pos+=3
    end
    pngi << [0 , pngl]
  end



ruybの :+ ってカスだわ

651
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/06 21:38:25  ID:6VBxeh94.net(2)
同じの貼ってしまった上のは間違い。


  atmp = "\xFF".force_encoding("ASCII-8BIT")
  for line in bmpi do
    pos  = 0
    pngl = ""
    while pos < line.size
    # BGR => RGBA
      pngl << line[pos+2] << line[pos+1] << line[pos] << atmp
      pos+=3
    end
    pngi << [0 , pngl]
  end

652
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/06 22:33:38  ID:Y2REc2we.net
速くなってきた

653
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/06 22:44:45  ID:DzTyHAnl.net(2)
http://codepad.org/dP52ktEI

とりあえず一桁秒になったはず


つうか重いのは最初に最適化してた場所じゃなくて
png_to_binary
↑ これだろ

文字連結には:+=ではなく:<<を使うべき
コメント1件

654
デフォルトの名無しさん[sage]   投稿日:2015/11/07 18:38:08  ID:Rb6TxNfK.net
Rubyでは配列の添え字を0からさらに1をひいて-1を指定すると
後ろから参照されます
MatzもHPがゼロになると声が裏返るんでしょうか?
コメント1件

655
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/07 18:52:01  ID:YPPH2uE6.net

656
デフォルトの名無しさん[sage]   投稿日:2015/11/07 19:24:50  ID:can/VOFL.net
>646
ありがとうございます、 << は存じませんでした
来週実環境で計測してみます

>649
たぶん許可は出るともいます…が、手続きが結構めんど(汗

>653
png_to_binaryは>615で述べてるように手を入れてましたよ
修正前と後で30%違ってましたが、なるほど、+が減った分で効いていたのですね
コメント1件

657
デフォルトの名無しさん[sage]   投稿日:2015/11/08 05:27:50  ID:eTPvEeSN.net
質問です。

e = Enumerator.new(ObjectSpace, :each_object)
# warning: Enumerator.new without a block is deprecated; use Object#to_enum

この構文が警告出るようになってるんですけど
これは以下のようにEnumeratorを継承して使う事は出来なくなるという事ですか?
警告を出さない書き方がわかりません

class A < Enumerator
  def initialize _
    super
  end
  def my_each
    self
  end
end

x = A.new([1,2,3])
p x.my_each

658
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/09 13:46:22  ID:VP0GkkkJ.net
rubyじゃ無理

659
デフォルトの名無しさん[]   投稿日:2015/11/09 16:10:55  ID:ddVcBsOP.net
健全でない言葉が含まれているため表示しません 内容を確認する

660
デフォルトの名無しさん[sage]   投稿日:2015/11/11 23:42:19  ID:qynC6Zv6.net
>656 の結果
http://codepad.org/nktsZViC
1920x1200サイズの画像が1枚1.2秒で変換できるようになりました。

一番最初のコードからすると8〜10倍くらい早くなって十分実用できる出来になりました。
いろいろと教えてくださった方に感謝いたします。
コメント1件

661
デフォルトの名無しさん[sage]   投稿日:2015/11/12 13:37:53  ID:63YCCmxd.net
効率には関係ないですけど
"〜".force_encoding("ASCII-8BIT")

"〜".b
でOK

662
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/13 03:47:30  ID:8gPiU2/Q.net
def Fixnum_uy n
  return n if n.class == Fixnum
  p :err
end
def String_uy n
  return n if n.class == String
  p :err
end
def func n
n * 2
end

x = 10
p func Fixnum_uy x # => 20
p func x # => 20
x = "abc"
p func String_uy x # => "abcabc"
p func x # => "abcabc"

func Fixnum_uy x # err


ぼくの考えた静的型チェック

663
デフォルトの名無しさん[sage]   投稿日:2015/11/13 07:36:36  ID:0Gwam1l3.net
まじかよ! 天才じゃねーの?!

664
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/13 09:24:15  ID:TDianL6O.net(2)
見つけたバグを報告しようかどうか迷う

665
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/13 09:25:30  ID:TDianL6O.net(2)
とりあえず、>660
PNGSIG = "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A".force_encoding("ASCII-8BIT")
res = [PNGSIG]
↑ これ複数のbmp変換の時にバグる
コメント1件

666
デフォルトの名無しさん[sage]   投稿日:2015/11/13 12:54:02  ID:BvUUurmn.net
新型Ruby開発へ 設計者表明、IT高度化・複雑化に対応
2015/11/13 9:56

http://www.nikkei.com/article/DGXLZO93937240S5A111C1LC0000/

松江発のプログラミング言語「Ruby(ルビー)」を開発した、
まつもとゆきひろ氏が新しいバージョンとなる「ルビー3.0」の開発に着手した。
12日に松江市で開幕した「Rubyワールドカンファレンス」の基調講演で、
IT(情報技術)環境の高度化・複雑化にルビーを対応させる実験を進めていると述べた。

667
デフォルトの名無しさん[sage]   投稿日:2015/11/13 23:30:22  ID:GJbbkJB1.net
>665
ありがとうございます。
たまたま1起動で1枚の変換だったので発覚しませんでしたが複数枚を一度に変換した場合、
png1
png1+png2
png1+png2+png3
のように次々と連結されたファイルに変換されてしまってました(汗

res = [PNGSIG.dup]
で修正できました。

668
デフォルトの名無しさん[]   投稿日:2015/11/14 11:20:12  ID:Hu5fAc9a.net
RubyでGUIアプリを作るなら、JRuby+JavaFX+Rawrで決まり!
http://blog.supermomonga.com/articles/jruby/javafx-rawr.html


このサイトのような人もいるけど、皆さん、WindowsでRubyで、
普通のGUI画面を作るには、どうやっているの?

Rubyで出来ないのなら、Python, Groovyかな?
コメント3件

669
デフォルトの名無しさん[sage]   投稿日:2015/11/14 11:52:01  ID:hCpncyRd.net
初心者スレってことは新たにRubyを使い始めたいって人がいるってことなの?(´・ω・`)
なんで先のないことを始めようなんて思ったの?(´・ω・`)

670
デフォルトの名無しさん[sage]   投稿日:2015/11/14 12:30:10  ID:erHlxJOJ.net
綺麗なコードっていうけどスレだけ見てたらPerlと大差ないね

671
デフォルトの名無しさん[sage]   投稿日:2015/11/14 13:29:45  ID:kYx4kaK6.net
>668
ルビー()をウインドウズ()で使うと不幸になるよ

672
デフォルトの名無しさん[sage]   投稿日:2015/11/14 18:29:15  ID:mv+oMLfo.net
>668
以前ならRuby+VCLのApolloがオススメだった……
1.8ベースであることを気にしないなら今でも使えるけどね

673
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/14 20:41:01  ID:Shexr7Cq.net
>668
dxrubyサンプルかいた
http://www1.axfc.net/uploader/so/3566728

674
デフォルトの名無しさん[sage]   投稿日:2015/11/16 11:36:08  ID:7yHHnP/U.net
職種別、資格別、スキル別の平均最低月給リスト(ほぼ毎日更新)
http://jobinjapan.jp/cate/
全掲載求人109,160件の平均最低月給195,800円

Rubyの求人 の平均最低月給221,800円
http://jobinjapan.jp/job-listing/keyword-ruby.html

675
デフォルトの名無しさん[sage]   投稿日:2015/11/16 17:29:45  ID:voKrxMtV.net
IT業界の初任給
日本500万円、シリコンバレー1500万円って最近どっかにあった

676
デフォルトの名無しさん[sage]   投稿日:2015/11/16 19:32:26  ID:28cafqJz.net
RBGとHSVの変換をエレガントに書いてください

677
デフォルトの名無しさん[sage]   投稿日:2015/11/16 19:54:09  ID:HbX6xNB+.net
よくわかんないけどまずお風呂に入って
真っ白いバスローブ着て猫を膝に乗せて書けばいいの?

678
デフォルトの名無しさん[sage]   投稿日:2015/11/16 20:27:05  ID:+SAjp3uD.net
それは私の思うエレガントとは違います

679
デフォルトの名無しさん[sage]   投稿日:2015/11/17 00:01:16  ID:UqVfqUOl.net
エレガンスC、でググッてはいけない。

680
デフォルトの名無しさん[sage]   投稿日:2015/11/18 06:20:14  ID:m00kBiNc.net
HSV→RGBなら前に書いたけど逆方向?

681
デフォルトの名無しさん[]   投稿日:2015/11/18 07:22:08  ID:nLopjri3.net
Rubyスレにソースコードや計算式貼ると
著作権ガーって言ってたひとは居なくなったの?

682
デフォルトの名無しさん[sage]   投稿日:2015/11/18 21:03:57  ID:zeYTnh9x.net
RGB→HSVみたいな対称性のあるものって対称性を保ったままコーディングできないのかな

683
デフォルトの名無しさん[]   投稿日:2015/11/20 12:12:51  ID:hF6sOdis.net
ファイルを開きたいのですが
パスの区切り文字ってwindowsとlinuxは違うんですけど
どちらでもいいのですか?

684
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/20 13:00:56  ID:QlSu2hgW.net(2)
殆どのものはどっちでも動く
たまに \\ か / の片方でしか動かないものがあるだけ

685
デフォルトの名無しさん[sage]   投稿日:2015/11/20 13:11:04  ID:FnrKl1QX.net
どちらでもいいなんて事は無い。
require 'pathname'
してPathnameクラスを使うのが正しい。

686
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/20 13:25:37  ID:QlSu2hgW.net(2)
やだ

687
デフォルトの名無しさん[]   投稿日:2015/11/20 14:19:32  ID:LnAg0HCn.net
頼まれても使いたくないですね

688
デフォルトの名無しさん[sage]   投稿日:2015/11/21 00:58:19  ID:bHtpd329.net
なんでやねん

689
デフォルトの名無しさん[sage]   投稿日:2015/11/21 02:18:40  ID:8J5MXxtT.net
BOM付きutf-8を書き出すにはどうすればよいのでしょうか

690
デフォルトの名無しさん[sage]   投稿日:2015/11/21 03:14:39  ID:M+Mq0fql.net
Encoding クラス

nkf ライブラリ

691
デフォルトの名無しさん[sage]   投稿日:2015/11/21 08:00:25  ID:NwMGeQu6.net
jsonでハッシュテーブルからpretty_generateするには
ハッシュテーブルをアンパースしてパースして
pretty_generateするしかないのですか?
3段階もあるので
2段階か1段階に縮めたいです

692
デフォルトの名無しさん[]   投稿日:2015/11/21 17:27:46  ID:XOdIEoHK.net
次のようなことが起こってしまうのですが、どなたか原因や解決法をご教示願えませんか。

コマンドプロンプト上でpryを起動して
任意のタイミングでshiftキーを押すと、頻繁に固まります。
(操作が一切できなくなりますが、時間をおけばなおります。)

また、次のことはirbにも共通して発生するのですが、
日本語を入力しているとかなりの確率で改行以外の操作を受け付けなくなってしまいます。
おまけに文字化けも起こしてしまいます。

windows 8.1
ruby 2.2.3p173 (2015-08-18 revision 51636) [x64-mingw32]
Pry version 0.10.1
irb 0.9.6(09/06/30)

693
uy ◆Qawu9.2l1E []   投稿日:2015/11/22 12:08:15  ID:hFpqZnLD.net(2)
irb --noreadline
コメント1件

694
デフォルトの名無しさん[sage]   投稿日:2015/11/22 12:32:12  ID:GQHFag3/.net
>693
ありがとうございます。
確かにreadlineを切れば文字化けは起きなくなりますが、1つ目の問題は解決しないようです。
また履歴機能も使いたいのでreadlineは切らずに済ませたいです。

695
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/22 19:04:43  ID:hFpqZnLD.net(2)

696
デフォルトの名無しさん[]   投稿日:2015/11/23 13:08:02  ID:TRyH0joP.net(4)
既存のcsvファイルを読み込み
a,c列だけ残したcsvファイルを作ろうと思っています

c列内の改行は全体をダブルクォーテーションでエスケープしたLFで
一行の区切りはCRLFです

これを維持したいのですが、wモードだとCRLFに、wbモードだとLFに統一されてしまいます
どうすればLF,CRLF両方共存させられるのでしょうか?
gsub!がマッチしてないような気がします

CSV.open(

697
デフォルトの名無しさん[]   投稿日:2015/11/23 13:09:58  ID:TRyH0joP.net(4)
途中送信失礼しました
CSV.open("元ファイル","w") do |csv|
flag = true
CSV.foreach("新規ファイル") do |row|
row.each{ |k, v| v.gsub(/(\r\n|\r)/, '\n') unless v.nil? }
csv << [row[0],row[2]]
end
end


698
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/23 14:40:09  ID:tOBxxsaN.net
v.gsub!(/(\r\n|\r)/, '\n')
or
v=v.gsub(/(\r\n|\r)/, '\n')
コメント1件

699
デフォルトの名無しさん[sage]   投稿日:2015/11/23 15:38:27  ID:TRyH0joP.net(4)
>698
変化無しでした

700
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/23 17:27:59  ID:QX2C8YaD.net
row.each{ |k, v| v.chomp! unless v.nil? }
csv << [row[0]+"\r\n",row[2]+"\n"]

701
デフォルトの名無しさん[]   投稿日:2015/11/23 18:20:30  ID:TRyH0joP.net(4)
CSV.open("","wb",:row_sep => "\r\n") do |csv|
CSV.foreach("") do |row|
  row[2].gsub!(/(\r\n|\r)/, "\n") unless row[2].nil?
  csv << [row[0],row[2]]
  end
end

これでなんとかなりました。ありがとうございました

702
デフォルトの名無しさん[sage]   投稿日:2015/11/23 19:29:21  ID:6Cv6XcSv.net
Perlより汚い

703
デフォルトの名無しさん[sage]   投稿日:2015/11/25 12:58:48  ID:64f3mw6U.net
vimで配列に<<を使うと文字列として認識してしまうから
pushを使うようにしている

704
デフォルトの名無しさん[]   投稿日:2015/11/29 18:49:25  ID:8CD9EPjb.net(3)
私は ruby 初心者以下の phper でSASS を触った際の質問です。

php での unset($value) に相当するような処理はできますでしょうか?

SASS においては一時的に使用したい変数もグローバル空間を汚染してしまいます。
そこで、一時的に使用した変数を、仕様を終えたところで unset するようなルールを作ろうと思ったのです。

もしそのような仕組みがないのなら諦めます。
よろしくご教授下さい。
コメント1件

705
692[]   投稿日:2015/11/29 18:51:04  ID:8CD9EPjb.net(3)
ちなみに

$value: null;

$value: nil;

では目的を果たせません。

706
デフォルトの名無しさん[sage]   投稿日:2015/11/29 21:47:26  ID:IW3RF4Lm.net
Railsスレで聞いた方がいいんじゃね?
コメント1件

707
692[sage]   投稿日:2015/11/29 22:42:30  ID:8CD9EPjb.net(3)
>706
そうなんですか。
移動します。有難うございました。

708
uy ◆Qawu9.2l1E [sage]   投稿日:2015/11/30 03:22:14  ID:K9XXst/g.net

709
デフォルトの名無しさん[]   投稿日:2015/12/01 07:39:26  ID:5gA5qM1d.net
プログラムを使って2chに書き込むにはどうすればいいですか?
いわゆるスクリプトとか呼ばれてるやつを作りたいんですけど
コメント2件

710
デフォルトの名無しさん[sage]   投稿日:2015/12/01 09:02:01  ID:aM2QGKxt.net
ググればすぐにわかるよ
注意としては秘密のキーと値はクッキーにセットしないと書き込めないということくらいかな

711
uy ◆Qawu9.2l1E [sage]   投稿日:2015/12/01 14:45:35  ID:p3g6QuXB.net
>709
selenium / watir
あるいはwshとかでブラウザの自動操作が一番楽

712
デフォルトの名無しさん[sage]   投稿日:2015/12/01 15:28:49  ID:9BYkXgQy.net(2)

713
デフォルトの名無しさん[]   投稿日:2015/12/01 15:29:59  ID:9BYkXgQy.net(2)

714
デフォルトの名無しさん[sage]   投稿日:2015/12/01 18:17:04  ID:CfMOKjtg.net
おまいら、スクリプトが書きたいとか言う明らかな荒らしにいちいち相手するなよ

715
デフォルトの名無しさん[sage]   投稿日:2015/12/02 00:41:11  ID:R2vt9Ztx.net
<<をpush扱いは嫌いな仕様の一つだ
シフト演算子もいらんよなInteger#bitshiftとか作ればいいし

716
デフォルトの名無しさん[sage]   投稿日:2015/12/02 04:33:58  ID:SG5bn8pD.net(2)
rubyで、ぷよぷよの最大連鎖数を計算するプログラムを組もうかと思ったらどう書く?
https://ideone.com/qMs43L

717
デフォルトの名無しさん[sage]   投稿日:2015/12/02 10:16:13  ID:hK3n/ycX.net
音声認識でダイアキュートなら4連鎖と判断
コメント1件

718
デフォルトの名無しさん[sage]   投稿日:2015/12/02 15:07:31  ID:MsCBqWdx.net
queueが2つくらいなら全検索でもそんなに時間かからんのちゃうか
コメント1件

719
デフォルトの名無しさん[sage]   投稿日:2015/12/02 15:27:49  ID:SG5bn8pD.net(2)
>717
なんつー無駄な処理をww

>718
2つだけなら全探索でも良いんだけど、10個20個になるとだんだん辛くなってくる

720
デフォルトの名無しさん[sage]   投稿日:2015/12/02 17:47:33  ID:N2ji3q8m.net(2)
ぷよぷよってあんまり詳しくないんだけど、queueってなんのこと?

721
708[sage]   投稿日:2015/12/02 17:53:37  ID:N2ji3q8m.net(2)
理解したんでスルーしてください

722
uy ◆Qawu9.2l1E [sage]   投稿日:2015/12/03 10:18:49  ID:z2raHlbz.net
      ハ,,ハ
     ( ゚ω゚ )  お断りします
    /    \
  ((⊂  )   ノ\つ))
     (_⌒ヽ
      ヽ ヘ }
 ε≡Ξ ノノ `J




キュ・・・クエウェwwwwwwwwwwwww

723
デフォルトの名無しさん[sage]   投稿日:2015/12/03 20:41:11  ID:c/3d3tD7.net(2)
PCが重くならないように仮想メモリを、減らしたいのですが、
GC後も100MBぐらい残ってしまいますが、nilを代入するだけで、解放されるというのは間違いですか。
ruby 2.1.6p336 (2015-04-13 revision 50298) [i386-mingw32]

class Dat
def datain
f=open("csv.txt")
da=[]
while f.gets do
ta=$_.split ','.freeze
da.push ta[1]
end
f.close;f=nil
end
end

loop {
a=Dat.new
a.datain
p '+++++++++'
print `powershell -command "Get-Process -Id #$$"`
a=nil
GC.start
print `powershell -command "Get-Process -Id #$$"`
}

CSVは以下で作りました。
f=open("csv.txt", "w+")
1500000.times {f.write "1,2,3,4,5,6,7,8,9,10\n"}
f.close
コメント2件

724
デフォルトの名無しさん[sage]   投稿日:2015/12/03 21:44:14  ID:ygZz+2K/.net
>723
Rubyとして使わなくなったとしても、プロセスがOSにメモリを返すかどうかはOS依存

725
デフォルトの名無しさん[sage]   投稿日:2015/12/03 22:07:35  ID:c/3d3tD7.net(2)
100MBレベルで、繰り返し残るので、使っているようなんですが

726
デフォルトの名無しさん[sage]   投稿日:2015/12/03 22:24:24  ID:LoHjicY3.net
100MBレベルでまだ返さなくていいとOSが判断してるんだろ

727
デフォルトの名無しさん[sage]   投稿日:2015/12/04 08:15:10  ID:0x8EcT4y.net(2)
そもそも、ガベージコレクトしたからといって、その空きメモリをRubyのVMが即座にOSに返却するかどうかなんて実装しだいだろ。
自分でソース読むか本家のメーリングリストで聞いた方がいいよ。
あるいは変数Aに1GBくらいのデータを入れて検証してみれば?

こんな検証結果もある。バージョン古いけど。
http://vcxzasdf.blogspot.jp/2011/08/ruby.html

後は勝手に調べろや

728
デフォルトの名無しさん[sage]   投稿日:2015/12/04 11:11:30  ID:ss/13u2k.net(2)
>727 どうもです
nil代入するだけでいいのか、よくわからないレベルなので
>>自分でソース読むか本家のメーリングリストで聞いた方がいいよ。
こういうのは敷居が高いです。

制限付きGCらしいとは、読んだのですが、何かスクリプト上の工夫余地があるのかが
知りたかったのです。

729
715[sage]   投稿日:2015/12/04 12:52:57  ID:0x8EcT4y.net(2)
自分で調べろといったものの、気になったので調べてみた。

http://qiita.com/yuroyoro/items/14ec7079f6574ad74409
http://wazanova.jp/items/759

GCの挙動は環境変数である程度制御出来るらしい。
Rubyが起動する前に設定が必要だから、Rubyのスクリプトで何とか出来るのか。
という問いなのであれば「出来ない」が回答なのかな。

なお、環境変数変更の結果、頻繁にGCが動作してしまうようになるリスクもあるので、本当にそのチューニングが必要なのかどうか考えた方がいいんじゃね?
おまいさんが暇でGCに興味があるのなら、好きなだけ実験すればよいけど。

730
デフォルトの名無しさん[sage]   投稿日:2015/12/04 14:16:06  ID:ss/13u2k.net(2)
上記のページ 難しいですね。
速度と、メモリ使用量のトレードオフのチューニングっぽいですが、
やりたいことは、使わなくなったデータ領域を、OSに還元さえできれば、満足なんです

class Dat
def datain
 da=["2"]*50000000
end
end
とした場合は、200MBが、GC後5MB位まで、減りますね。。。
コメント1件

731
デフォルトの名無しさん[sage]   投稿日:2015/12/04 16:13:41  ID:u0bQfuw3.net
nilを代入するだけで、解放されるというのは間違いです

732
デフォルトの名無しさん[sage]   投稿日:2015/12/04 20:26:22  ID:52yuQwwP.net
GCっても結局Cのfree呼んでるだけで、CのfreeがOSに返すかどうかは環境依存だよね

733
デフォルトの名無しさん[sage]   投稿日:2015/12/04 23:07:49  ID:JzxqQT0L.net
>730
無知なプログラマーの独りよがりだと思いますよ。

返却しなくてもOSも他のプロセスも誰も困らない。
むしろ何かしようと変なことをして、システム全体の効率を落としますよ。

734
デフォルトの名無しさん[sage]   投稿日:2015/12/05 00:36:53  ID:SSa/axrj.net
喧嘩しないでね?

735
デフォルトの名無しさん[sage]   投稿日:2015/12/05 09:09:33  ID:fWHJ2v3J.net(4)
ルビーの組み込み型のデータのファイルに書き込みって
全部書き込むんじゃなくて
増えた分だけ追加書き込みって出来ないの?
コメント1件

736
デフォルトの名無しさん[sage]   投稿日:2015/12/05 09:23:45  ID:xXNtL6gS.net

737
デフォルトの名無しさん[]   投稿日:2015/12/05 09:37:16  ID:fWHJ2v3J.net(4)
だめだこりゃ

738
デフォルトの名無しさん[sage]   投稿日:2015/12/05 12:09:18  ID:kPO9yvRD.net
日本語だから読めよ

739
デフォルトの名無しさん[]   投稿日:2015/12/05 12:19:09  ID:fWHJ2v3J.net(4)
空気読めよ
マーシャルダンプで追加書き込みするにきまってるだろ
コメント1件

740
デフォルトの名無しさん[sage]   投稿日:2015/12/05 12:33:35  ID:pK0sc289.net
24時間年中無休でスクリプトぶん回して
一定時間毎に処理するよりも
必ず一回毎に終了してcronで何度も起動した方が
OSには優しいですか?
コメント1件

741
デフォルトの名無しさん[sage]   投稿日:2015/12/05 13:34:04  ID:YG+TJC8i.net(3)
OSに優しいとはどういうことか

742
デフォルトの名無しさん[sage]   投稿日:2015/12/05 13:40:41  ID:ylT5mXD4.net
>739
なにそれ

743
デフォルトの名無しさん[sage]   投稿日:2015/12/05 13:43:41  ID:YG+TJC8i.net(3)
Marshalで追加書き込みとかありえなさ過ぎて
空気読んだら誰も言い出さない

744
デフォルトの名無しさん[sage]   投稿日:2015/12/05 13:57:24  ID:T65Hu+4Y.net
OSに優しいがツボに入って腹がやばい

745
デフォルトの名無しさん[]   投稿日:2015/12/05 16:37:40  ID:fWHJ2v3J.net(4)
MarshalといってもYAMLとかいろいろあるわけだが(www
コメント1件

746
デフォルトの名無しさん[sage]   投稿日:2015/12/05 17:29:28  ID:cDKYTAJ8.net(2)
Windows8.1 64ビット版
Ruby-2.2.0 (x64) MIP (rev 49005)(with bug#10819 patch)
たのしいRuby で勉強し始めたプログラミング未経験者ですが
Ruby2.2 consoleでnilが表示されず空白行になります
Ruby2.2 consoleでirb --noreadlineを使用するとnilは表示されますが…
windowsだとこうなるのが普通なのでしょうか?
コメント2件

747
デフォルトの名無しさん[sage]   投稿日:2015/12/05 17:35:10  ID:ckYMWiJu.net
RubyをWindowsで使おうと思わない方が良い

748
デフォルトの名無しさん[sage]   投稿日:2015/12/05 18:48:57  ID:S+43+Er8.net
>746
puts nil
みたいなこと?
putsは to_sが勝手に呼ばれるから
nil.to_sで空文字列に変換された後出力されることになる
nilと表示したいなら p nilで

749
デフォルトの名無しさん[sage]   投稿日:2015/12/05 19:33:16  ID:cDKYTAJ8.net(2)
たのしいRuby3版p46
irb --simple-prompt
/Ruby/=~"ruby"
/Ruby/=~"RUBY"
/Ruby/i=~"ruby"
/Ruby/i=~"RUBY"
/Ruby/i=~"rUbY"
などの例文でirbだとirbの後に色々入力するのが大変なので全部 printを頭に付けてファイルにしてました
pにしたらnil出ました
少しまた分かってきました ありがとうございます

750
デフォルトの名無しさん[sage]   投稿日:2015/12/05 20:44:21  ID:YG+TJC8i.net(3)
>745そんなわけ分からないこと言ってないでもう書くのやめときなよ

751
デフォルトの名無しさん[sage]   投稿日:2015/12/06 01:54:59  ID:aV79RTr4.net
>723
Javaでも、使用メモリを増やすと、
メモリがまだ十分にあるから、GCを呼ばなくなるらしい

ObjectSpace#count_objects
GC::Profiler なども使ってみて

Rubyのしくみ、2014も読んで

>740
プロセスの起動・終了は、重い処理だから、
繰り返さない方がよい。
起動させたままにする

>746
えー!。Windows8.1 64ビット版で、Ruby動くの?

752
uy ◆Qawu9.2l1E [sage]   投稿日:2015/12/06 07:06:05  ID:R7UAkY9T.net
ちなみに僕がbbs等を荒らす為のスクリプトを書く時に標準ライブラリ以外も使ってると
一定時間起動していたり、同じインスタンス使ってるとバグを触る事あるので
書き込み毎に新しくインスタンス生成するコードにしてます
それでも落ちる場合は定期的にプロセス起動し直すコードにします


最初から安定性を信頼してないライブラリはソースコード全体を
begin

rescue

end
で囲ったりして
謎の例外拾ったらプロセスrestartしてます
カス過ぎるとSEGV出すから、これでもダメだったりするよね(′・ω・`)

753
デフォルトの名無しさん[sage]   投稿日:2015/12/06 11:08:56  ID:AeiLPlcL.net
このスレのひとにはなじみが薄いかもしれませんが
32ビットと64ビット両方に対応しないとWindows対応を名乗っちゃダメなんです。
ソフトもパーツも全部そうです。

754
デフォルトの名無しさん[sage]   投稿日:2015/12/07 00:17:11  ID:ClQkmXjX.net
型チェックなしで大規模プログラミングはできる?
コメント2件

755
デフォルトの名無しさん[sage]   投稿日:2015/12/07 04:34:16  ID:7ldc1+VM.net
やりにくくなるだけで、できることはできる。

756
ネトuy ◆Qawu9.2l1E [sage]   投稿日:2015/12/08 00:16:20  ID:ne+/Joxl.net
ひとによっては出来る

757
デフォルトの名無しさん[sage]   投稿日:2015/12/09 00:02:26  ID:vUJ/P0DS.net
文字列メソッドの殆どがinvalid multibyte char (UTF-8)になってしまう
irbではちゃんと動作するのに

758
デフォルトの名無しさん[sage]   投稿日:2015/12/09 00:10:12  ID:WHhV5RKE.net
>754
テストちゃんと書こう
テストがなければ型チェックあり言語でもろくなものはできない

759
デフォルトの名無しさん[sage]   投稿日:2015/12/09 07:58:38  ID:RodzvFpu.net
>754
テストをちゃんと書こうとすると型チェックあり言語の何倍も書かないといけない

760
デフォルトの名無しさん[sage]   投稿日:2015/12/09 12:31:25  ID:DRhJYiKV.net
変更→テストがコケる→修正→グリーン
で、本当にこれで十分なのか?っていうね
自信を持ってyesと言えるレベルのテストを書くには相当なコストをかけなきゃいけないわけ
型チェックの有無でそのコストに大きな差が出るとは思わないけど、
テストにそこまでのコストをかけるなら相対的に本体のコーディングの比重はとても小さくなるから
LLを使うメリットってほとんど無くなっちゃうんたよね

761
デフォルトの名無しさん[sage]   投稿日:2015/12/09 15:58:47  ID:ymvL9hab.net
デスクトップ上のフォルダ内に
1.csv, 2.csv, 3csv…と名前を連番で大きくしていくファイルを出力したいのですがどのように書いたらいいですか
コメント2件

762
デフォルトの名無しさん[sage]   投稿日:2015/12/09 20:04:35  ID:HLl+HTTd.net
perl -e 'for $i (1..5) { `touch $i.csv`; }'
コメント1件

763
uy ◆Qawu9.2l1E []   投稿日:2015/12/12 18:14:08  ID:uQVh6GL6.net
この前起こったバグだけど
@var.hash == v.hash の時に
関数やブロックに@var渡すのとv渡すので挙動が変わるケースってないよね?

v = @var
UY.class_eval do
 @var = v
 def self.func
  @a.f do
   yield @var
  end
 end
end
↑ self.funcをオーバーライド

およそこんな事しながら
ブロックにメンバ変数を渡して「yield」の中から引数の[@var(インスタンス)]の持つメンバ変数のArrayの要素を削除しようとすると、
削除すべきじゃない要素まで削除したり、また削除しなかったり挙動がおかしい

ちなみに
v = @var
UY.class_eval do
 define_singleton_method :func
  @a.f do
   yield v
  end
 end
end
これだとバグらなかった

報告しようにも公開出来ないソースコードなのでここに簡易コードだけ

764
デフォルトの名無しさん[sage]   投稿日:2015/12/12 18:52:39  ID:JF7BD07+.net
まずは実際に再現するコードを出せ
コメント1件

765
デフォルトの名無しさん[sage]   投稿日:2015/12/12 21:55:16  ID:6egCpPrL.net
同じ振る舞いなら同じハッシュであることを期待するというならまだわかるが、逆を期待するのは普通じゃない
それともobject_idの比較のつもりなのか?
コメント1件

766
uy ◆Qawu9.2l1E []   投稿日:2015/12/12 22:22:08  ID:f68kZJl6.net
>765
は・・・?

>764
コードは出せないけどバグったもん
rubyのバグ

767
デフォルトの名無しさん[sage]   投稿日:2015/12/12 22:26:00  ID:B4iyQ5Rc.net
精神障害っぽいな

768
デフォルトの名無しさん[sage]   投稿日:2015/12/12 23:40:16  ID:gYwXaUBA.net
uyだからしょうがないよ

769
uy[]   投稿日:2015/12/13 02:27:40  ID:sfzErp4C.net
そもそも他の場所のバグが、
そこで表面化したのかもしれないし
klassを飛び越えるローカル変数か
メンバ変数か
オーバーライドか
arrayあたり
ちなみに再帰も使ってる
あとloadもつかってguiアプリ
いろいろ要素ありすぎて
ソースコードはアップできないのだよ
ただ何かそこら辺にバグがあるということは掴んでる

770
デフォルトの名無しさん[sage]   投稿日:2015/12/13 03:18:52  ID:X/k3QAPc.net
切り分けちゃんとしてから書こうぜ

771
デフォルトの名無しさん[sage]   投稿日:2015/12/13 03:59:46  ID:Be8+1Kca.net
>761
カレントフォルダに、1〜3の空ファイルが作られる。
PowerShell_ise で試して。
-WhatIf を削除すれば、実際に実行される

for ($i = 1; $i -le 3; ++$i){
$tmp = [string]$i + '.csv'
New-Item $tmp -type file -WhatIf
}

Rubyでは、
3.times do |i|
tmp = (i+1).to_s + '.csv'
File.open(tmp, 'w').close()
end

'w'では、既に同名のファイルが存在する場合、
ファイルサイズを0にするので要注意
コメント1件

772
デフォルトの名無しさん[sage]   投稿日:2015/12/13 13:11:54  ID:aRLjCXwK.net
ダメだendって見るだけで吐き気がしてくる
よくこんなクソ言語使ってられるわ

773
デフォルトの名無しさん[sage]   投稿日:2015/12/13 13:30:52  ID:Ke+V+0rY.net
>762
module MyModule
class MyClass
def my_method
begin
10.times do |i|
if i % 2 == 0
puts i
end
end
end
end
end
end

774
名無しさん@そうだ選挙に行こう[]   投稿日:2015/12/14 12:39:38  ID:tx6Cj+2B.net
>761
ファイル名の文字列内で
#{数値変数}.csv

775
名無しさん@そうだ選挙に行こう[]   投稿日:2015/12/14 13:28:37  ID:baKxaSGv.net

776
デフォルトの名無しさん[sage]   投稿日:2015/12/15 00:59:30  ID:QowKLBZE.net
>771

3.times do |i| { File.open("#{i+1}.csv", 'w').close() }

777
デフォルトの名無しさん[]   投稿日:2015/12/17 11:13:45  ID:l98kMQcJ.net(2)
「Rubyによるクローラー開発技法」が送料込み1000円で売られてるぞ

   <(´`c_,'`)>
     ) )
 (((( > ̄ > ))))

778
デフォルトの名無しさん[]   投稿日:2015/12/17 11:14:25  ID:l98kMQcJ.net(2)

779
デフォルトの名無しさん[]   投稿日:2015/12/17 13:56:55  ID:Szn4FINI.net

780
デフォルトの名無しさん[sage]   投稿日:2015/12/18 23:50:17  ID:a2I0C9t5.net
rubyってどこらへんが良いの?
python使いの俺にもわかるように教えてくれ

781
デフォルトの名無しさん[sage]   投稿日:2015/12/19 00:18:02  ID:LGhGH2LK.net
オフサイドルールじゃないところかな

782
デフォルトの名無しさん[sage]   投稿日:2015/12/19 00:19:27  ID:2jcAGqqg.net
Pythonと比較するなら実質的に特に良いところはない
3.times do を美しいと感じるか一貫性がなくて無駄に複雑なだけだと感じるか、純粋に好みの問題
日本人はExcel方眼紙に見られるように論理性よりも体裁を重視する傾向があるからRubyを好む人が多い

783
デフォルトの名無しさん[sage]   投稿日:2015/12/19 01:02:45  ID:/LhuVD7p.net(2)
体裁についてはむしろPythonの方がうるさい感じだけどなー
Rubyは全体的にゆるい

そのゆるさを気持ち悪いと感じるか心地いいと感じるかかな

784
デフォルトの名無しさん[sage]   投稿日:2015/12/19 11:42:17  ID:8LauFAwB.net
Rubyはゆるい に同感
だから個人的にはでかいプログラムには向いてないと思う
小さい処理したり、成果物を機械的チェックしたりをさっと書くのによく使う

まあ別に小さいのはPythonでもなんでもいいだろうけどね
しいて言えばコンソール上コマンド引数に直接コードを書くのも簡単ってとこか

785
uy ◆Qawu9.2l1E []   投稿日:2015/12/19 14:02:40  ID:z6r6v8NU.net
Pythonとあまり差異が無ければ
あとは日本語資料多いほうの言語が楽

786
デフォルトの名無しさん[]   投稿日:2015/12/19 14:20:44  ID:97l4we9f.net
Windowsならpythonのがよい
macならruby
linuxは知らん

787
デフォルトの名無しさん[sage]   投稿日:2015/12/19 17:40:23  ID:JWNupyto.net
Python使いがあえてRubyをやる理由はRailsだけだと思う
Pythonで書くにはちょっと大袈裟な簡単な自動化とかに使うならRubyよりPerlの方がどこでも使えるしシェル呼びやすい

788
デフォルトの名無しさん[]   投稿日:2015/12/19 19:30:33  ID:KCXD/UEw.net
読みやすさではPerlが僅差で上?

789
デフォルトの名無しさん[sage]   投稿日:2015/12/19 23:51:38  ID:/LhuVD7p.net(2)
Perlは確実に読みにくい
PythonとRubyは同程度かな

790
デフォルトの名無しさん[sage]   投稿日:2015/12/20 00:14:36  ID:gcjL+cZo.net(2)
読みやすさ
自分が書いたRuby >= 自分が書いたPython = 他人が書いたPython > 他人が書いたRuby > 自分が書いたPerl >>>(解読不能の壁)>>>他人が書いたPerl

791
uy ◆Qawu9.2l1E []   投稿日:2015/12/20 01:47:57  ID:XCKyN+j3.net
言語によって調べやすい情報の種類が違うから
やるメリットが0って事はないけどぬ

rubyでやりたい事探して見つからない時にPyrhon Perl で調べると見つかるとかはある
で、出てきたライブラリ名とかを今度はrubyで探してrubyで書くというのが上級者様の検索技術です

792
デフォルトの名無しさん[sage]   投稿日:2015/12/20 12:02:30  ID:0rXSjneF.net(2)
arr1 = []
arr2 = []
arr3 = []
(1..100).each do |i|
 if condition(i)
  arr1 << i
 elsif condition(2)
  arr2 << i
 else
  arr3 << i
 end
end

という処理を、map()で書くことはできますか?
map()じゃなくても、関数型っぽく書く方法があれば教えてください。
コメント2件

793
デフォルトの名無しさん[sage]   投稿日:2015/12/20 14:04:55  ID:Kuy1M1Wj.net(2)
arr1, arr2, arr3 = (1..100).reduce([[],[],[]]){|a, i|if condition(i) then [a[0] + [i], a[1], a[2]] elsif condition2(i) then [a[0], a[1] + [i], a[2]] else [a[0], a[1], a[2] + [i]] end}

arr1, arr2, arr3 = (1..100).group_by{|i|if condition(i) then 0 elsif condition2(i) then 1 else 2 end}.map{|(key, value)|value}

関数型はよくわからないけど、たぶんこんなのが関数型っぽいんでしょ
コメント1件

794
デフォルトの名無しさん[sage]   投稿日:2015/12/20 14:16:17  ID:Kuy1M1Wj.net(2)
二つ目はmapの前にsortがないとほかではうまく動かないかもしれなかったね

795
デフォルトの名無しさん[sage]   投稿日:2015/12/20 15:59:06  ID:Ny1JRpvZ.net(3)
別に全部1行で書くのが関数型っぽいというわけじゃないだろ
arr1, arr2or3 = (1..100).partition{|i|condition i}
arr2, arr3 = arr2or3.partition{|i|condition2 i}
コメント2件

796
デフォルトの名無しさん[sage]   投稿日:2015/12/20 17:08:03  ID:0rXSjneF.net(2)
>793
ありがとう。reduceを使うのね。

>795
説明が足りませんでした。1回のループで複数の作業を行う必要がある場合、
関数型ではどうやるのかを知りたかったです。partition()だと2回のループに
なるのが気になりました。

797
デフォルトの名無しさん[sage]   投稿日:2015/12/20 17:32:10  ID:Ny1JRpvZ.net(3)
関数型だとそもそもループっていう概念もないに近いだろう
気にするのは計算量
計算量はどっちも変わらない

798
デフォルトの名無しさん[sage]   投稿日:2015/12/20 17:48:25  ID:VZ49G1Nt.net
ary1 = (1..100).select {|i| condition(i) }
ary2 = (1..100).select {|i| !condition(i) && condition2(i) }
ary3 = (1..100).select {|i| !condition(i) && !condition2(i) }

関数型は素直に書くのが一番
コメント1件

799
デフォルトの名無しさん[sage]   投稿日:2015/12/20 18:07:00  ID:Ny1JRpvZ.net(3)
計算量は多くなるけどそれもありだね
コメント1件

800
デフォルトの名無しさん[sage]   投稿日:2015/12/20 21:34:37  ID:sNgiTuJS.net
それなら上の partition の良くね?

801
デフォルトの名無しさん[sage]   投稿日:2015/12/20 23:37:50  ID:gcjL+cZo.net(2)
大差ないだろ
中途半端なハックするよりは素直に>799
自分でpartition_by_keyみたいなメソッドを自作したほうがいい

802
デフォルトの名無しさん[sage]   投稿日:2015/12/21 00:09:14  ID:HlTRazJO.net(2)
その自作するメソッドの中身を聞かれているのでは

786と783は定数倍しか違わないので大差ない(ということは素直な方がよいことが多い)のは同意

803
デフォルトの名無しさん[sage]   投稿日:2015/12/21 00:15:35  ID:HlTRazJO.net(2)
メモリが許すならconditionやcondition2をメモ化させておけば定数倍の差も出なくなるか

804
uy ◆Qawu9.2l1E []   投稿日:2015/12/21 04:37:00  ID:pDpL0ZtE.net
>792
def condition n
  rand(2) == 0
end

x = (1..100).map do |i|
  if condition(i)
    [i,nil,nil]
  elsif condition(2)
    [nil,i,nil]
  else
    [nil,nil,i]
  end
end.transpose.map(&:compact)

p x[0]
p x[1]
p x[2]

805
uy ◆Qawu9.2l1E []   投稿日:2015/12/21 06:45:13  ID:YrJaKapA.net
健全でない言葉が含まれているため表示しません 内容を確認する

806
デフォルトの名無しさん[sage]   投稿日:2015/12/21 10:17:54  ID:NofUbt2g.net(2)
Windows環境の人、cmd.exeでこれ実行してエラーになる?
自分の環境だとErrno::EINVALとかいうエラー出るんだけどおま環なのか知りたい

> ruby -e "p gets"

コメント1件

807
uy ◆Qawu9.2l1E []   投稿日:2015/12/21 10:34:52  ID:OvM9PrFx.net
でない

808
デフォルトの名無しさん[sage]   投稿日:2015/12/21 11:47:27  ID:lS2KqIdp.net
普通に"あ\n"が出力された

809
デフォルトの名無しさん[sage]   投稿日:2015/12/21 12:55:16  ID:9a9Pk4jp.net(2)
Windows 8.1 64 bit
ruby 2.2.3p173 (2015-08-18 revision 51636) [x64-mingw32]
コメント1件

810
797[sage]   投稿日:2015/12/21 12:56:17  ID:9a9Pk4jp.net(2)
ごめん。ミスった。
>809の環境では"あ\n"だったよ。

811
デフォルトの名無しさん[sage]   投稿日:2015/12/21 15:05:15  ID:LY2IEbkC.net
配列aをn個の部分集合に分割するすべての組み合わせを列挙したい。
とりあえず空集合は許す、戻り値はEnumurable or Arrayとして。

これをできるだけ短くRubyで書くとどうなる?
aが大きい場合に効率の良い書き方は?

812
デフォルトの名無しさん[sage]   投稿日:2015/12/21 17:06:55  ID:Ph7GU2WN.net
定期的にpermutationネタ出るけど宿題かなんかで流行ってんのか

813
デフォルトの名無しさん[sage]   投稿日:2015/12/21 19:07:52  ID:n9k1C4Zd.net
>806
むかしハマったわ

814
794[sage]   投稿日:2015/12/21 19:11:41  ID:NofUbt2g.net(2)
ansiconが原因でした

815
デフォルトの名無しさん[]   投稿日:2015/12/22 07:02:14  ID:U2GagDf5.net
permutations ではなく、
Groovyの、List#subsequences のことだろ

1, 2, 3,
12, 13, 23,
123
コメント1件

816
デフォルトの名無しさん[sage]   投稿日:2015/12/22 14:46:06  ID:6WVAXWi7.net
それだと各集合のサイズ指定だからちがうんじゃない?(Array#combination)
n=2:
[], 123
1, 23
2, 13
3, 12
にしたいのだとおもう。
コメント3件

817
デフォルトの名無しさん[sage]   投稿日:2015/12/22 20:42:18  ID:rNJ+nMzC.net(2)
質問です。
$a = gets.to_i
def calc(other)
$a * other
end
puts calc(4)
puts calc(2)

要は標準入力から取り込んだ値を関数に使いたいのですが、これだとグローバル変数が汚染されるのでスマートでない気がします。
グローバル変数を汚染せずにする方法はありますでしょうか?
コメント1件

818
デフォルトの名無しさん[sage]   投稿日:2015/12/22 21:10:55  ID:Ped0XTvJ.net
あります

819
デフォルトの名無しさん[sage]   投稿日:2015/12/22 21:55:51  ID:rNJ+nMzC.net(2)
あるのですか、良かったです!
教えてもらえたら助かります!

820
デフォルトの名無しさん[sage]   投稿日:2015/12/22 22:00:09  ID:lhPbrUmR.net
カリー化して部分適用すりゃいいんじゃないの?
コメント1件

821
デフォルトの名無しさん[sage]   投稿日:2015/12/22 23:20:43  ID:G8TSJGI1.net
>798 はDRYじゃないのが嫌。
これなら >795 の方がいい。
でも関数型だと通常リストと再帰使うけど、
そうやって書いたのを ruby に翻訳すると、
>792 が一番近い気がする。
コメント1件

822
uy ◆Qawu9.2l1E [sage]   投稿日:2015/12/23 00:15:22  ID:dpAqe3cZ.net
>817
c = -> a , b { a * b }.curry
c = c[2]
p c[4]
p c[8]
コメント2件

823
デフォルトの名無しさん[]   投稿日:2015/12/23 03:04:29  ID:uB2nj2I/.net
$a は、def calc()内でしか使わないのなら、
自由(グローバル)変数にせず、calc()内の束縛(ローカル)変数にする

クラス内のインスタンス変数か、クロージャ(ラムダ)内の変数とする

def calc(a)
lambda do |other|
return a * other
end
end

f = calc(3)
p f.call(5) #=> 15
p f.call(10) #=> 30
コメント1件

824
デフォルトの名無しさん[]   投稿日:2015/12/23 07:09:27  ID:i1NqqVb+G
>816
irb(main):001:0> require 'array_partition'
=> true
irb(main):002:0> a=[*1..3];n=2;a.partition(n).map{|x|case x.size;when n-1;x<<[];when n;x;end}.compact
=> [[[1, 2, 3], []], [[1, 2], [3]], [[1, 3], [2]], [[1], [2, 3]]]

825
805[sage]   投稿日:2015/12/23 07:45:59  ID:DqWY6q7M.net
>820>822>823
ありがとうございます!すっきり解決しました!
カリー化は初めて聞いた言葉だったのでググって勉強になりました。
いい休日が過ごせそうです。

826
デフォルトの名無しさん[sage]   投稿日:2015/12/23 20:35:16  ID:KL0rgOa8.net
>821
発言内容的にLisp系の人かな?
好みと違うかも知らんが、こんなのどうかね

h = (0..100).group_by {|x| condition(i) ? :ary1 : condition(2) ? :ary2 : :ary3 }
ary1, ary2, ary3 = h.values_at(:ary1, :ary2, :ary3)
コメント2件

827
デフォルトの名無しさん[sage]   投稿日:2015/12/23 21:51:07  ID:L95mHKNc.net

828
uy ◆Qawu9.2l1E [sage]   投稿日:2015/12/24 09:38:29  ID:kjx2km/n.net
>826
この程度の処理で:ary1,2,3とか余計なシンボル作るとか冗談みたいなコードですね^^;
コメント1件

829
799[sage]   投稿日:2015/12/24 14:01:02  ID:srISd0Ns.net
>815, >816
実行結果は>816みたいになる処理を想定してました。
実際に必要だった処理では、配列aも分割数nも小さかったので再帰で済ませたけど、
重複要素がある大きな配列に試すと遅い。
配列の比較を最小限にする書き方はどんなかな、
とか途中配列に溜めないでEnumurableないかな、とか考えた上での質問です。

830
デフォルトの名無しさん[sage]   投稿日:2015/12/24 18:33:58  ID:QFPP7Vz6.net
つ Lazy

831
デフォルトの名無しさん[sage]   投稿日:2015/12/24 23:54:41  ID:LKbtWIA8.net
>826
かっこいい。
>828
0、1、2で事足りるとは言え、シンボル3つ如きで何を言っとる。
コメント2件

832
715[sage]   投稿日:2015/12/25 08:07:17  ID:Us3+3faY.net
健全でない言葉が含まれているため表示しません 内容を確認する

833
デフォルトの名無しさん[sage]   投稿日:2015/12/26 00:34:43  ID:w+fIwRnj.net(2)
>831
変数名のシンボルはどうせパーサが作るので、そのコードでシンボルが新たに増えることはないよ。。
コメント4件

834
デフォルトの名無しさん[sage]   投稿日:2015/12/26 07:30:22  ID:KoYH9+bG.net
スマートじゃないってことでしょ
数字でええがな

835
デフォルトの名無しさん[sage]   投稿日:2015/12/26 20:29:10  ID:w+fIwRnj.net(2)
マジックナンバーを使うよりシンボル使った方がスマートだと思うけどな。まあ感性の違いか
コメント1件

836
デフォルトの名無しさん[sage]   投稿日:2015/12/26 22:27:38  ID:gbQMSnGA.net(2)
こういうのは?
key = -> x { condition(x) ? 1 : condition2(x) ? 2 : 3 }
ary1, ary2, ary3 = (0..100).group_by(&key).sort.map(&:last)

837
デフォルトの名無しさん[sage]   投稿日:2015/12/26 23:16:53  ID:Mh3LsY+/.net
こういうのもなにも最初の回答にそれあるじゃん

838
デフォルトの名無しさん[sage]   投稿日:2015/12/26 23:58:32  ID:gbQMSnGA.net(2)
あ、ほんとだ。^^;

839
デフォルトの名無しさん[sage]   投稿日:2015/12/28 15:55:33  ID:SIjvxUna.net
>835
0,1,2 の役割は位置を示すものなので、マジックナンバーじゃないよ。
逆にシンボルにすればマジックナンバーでなくなる訳でもない。

840
デフォルトの名無しさん[sage]   投稿日:2015/12/28 17:51:00  ID:iwZYneEF.net
Ruby3でシンボル廃止してくれ
シンボルGC(笑)とか完全に当初の意味を失ってる

841
デフォルトの名無しさん[]   投稿日:2015/12/28 18:29:35  ID:Y4DeX8w+.net
連想配列のキーにシンボルと文字列混在させて死ぬパターン多し

842
デフォルトの名無しさん[sage]   投稿日:2015/12/28 21:38:14  ID:BoIp6Qyu.net
位置だからマジックナンバーではない? 意味が分からない。
位置を即値で埋め込んだらそれはマジックナンバーだろう。やるなら定数を定義しないと。
しかしそれは大げさなので、シンボルを使うのがスマートな選択。
もちろん:ary0とかではマジックナンバーと変わらないが、
本番のコード当然意味のわかる名前を使うだろう。

843
uy ◆Qawu9.2l1E [sage]   投稿日:2015/12/29 03:10:19  ID:KaKwDEtA.net(2)
>833

def condition n
rand(2) == 0
end

h = (0..100).group_by {|x| condition(0) ? :ary1 : condition(2) ? :ary2 : :ary3 }
ary1, ary2, ary3 = h.values_at(:ary1, :ary2, :ary3)

p Symbol.all_symbols.grep(/ary\d/)

# => [:ary1, :ary2, :ary3]


はいわろ


820 :デフォルトの名無しさん:2015/12/26(土) 00:34:43.96 ID:w+fIwRnj
>831
変数名のシンボルはどうせパーサが作るので、そのコードでシンボルが新たに増えることはないよ。。





コメント2件

844
uy ◆Qawu9.2l1E [sage]   投稿日:2015/12/29 03:11:55  ID:KaKwDEtA.net(2)
                         ∧_∧         ミ ギャハッハッ 変数名のシンボルはどうせパーサが作るので、そのコードでシンボルが新たに増えることはないよ。。
                              o/⌒(. ;´∀`)つ >833
                              と_)__つノ  ☆ バンバン


p Symbol.all_symbols.grep(/ary\d/)    ∧_∧  
                              o/⌒(゜Д゜ )つ >833
                              と_)__つノ

# => [:ary1, :ary2, :ary3]
                         ∧_∧
                              o/⌒( ゚д゚ )つ >833
                              と_)__つノ

845
デフォルトの名無しさん[]   投稿日:2015/12/29 15:15:20  ID:HQID5Dbw.net(3)
僕のコードが動きません!
引数のファイルを開いて、一行ずつ読んで
パターンマッチした文を表示させたいだけなのに



#coding: Windows-31J

filename = ARGV[0]
file = File.open(filename)
text = file.read

text.each_line do |line|
line.chomp!
line.scan(%r|http://aaa.bbb.com/content/[A-Za-z0-9_-]+.txt|) do |matched|
print matched

end
file.close

846
デフォルトの名無しさん[sage]   投稿日:2015/12/29 15:32:05  ID:5o0CYWec.net
File.open
処理
end
だけでいい。file.close は書かない

text.each_line do |line|
の次の行に、
p line
を付け足して、中身を見れば?

バグが起こったときは、もっとコードを少なくして、
正常に動く所まで戻ること

847
おありがとうございます・・・[]   投稿日:2015/12/29 15:35:25  ID:HQID5Dbw.net(3)
      ,, -─‐-、,,-─-,、
     /        ,'⌒ヽ\
    〈  ,‐-⌒-、ノ,,,  |.  \
    /, ミ、Vヽl〉| | |,,,  |.   \
     '|\Nヘ「ヽ||_|__,|.     \
              |L.|  |       ヽ、
            | | ,,,|,        .l
.              |_|_,||        .ノ
                |::|::: :|_|       ,ノ |
             rrr´‐::: :j. L,,---‐‐'´ ノ
            i´^^i´ ̄~    ̄ ̄ ̄~i‐⌒ヽ,
            ヽ、__ヽ、______」-、__.⌒っ
                           ̄

848
デフォルトの名無しさん[sage]   投稿日:2015/12/29 15:43:02  ID:ITFPdK18.net
ary1 = ary2 = ary3 = 42
p Symbol.all_symbols.grep(/ary\d/)
#=> [:ary1, :ary2, :ary3]

849
デフォルトの名無しさん[sage]   投稿日:2015/12/29 15:44:21  ID:iCcGBsDn.net
おいuy元の質問に対してその回答が良いかどうかは置いといて
uy変数名のシンボルはどうせパーサが作るから実質増えないってのは合ってるだろうがuy

ary1 = 1
p Symbol.all_symbols.grep(/ary\d/)

# => [:ary1]

uy煽りたいならuy正確な内容で煽れやuy

850
デフォルトの名無しさん[]   投稿日:2015/12/29 15:45:40  ID:HQID5Dbw.net(3)
ちがうわボケ
end一つ忘れとんねヤンケ
こんな池沼先生の棲み家には二度と来ねーよ




ふふふ ごめんなさいネ

851
uy ◆Qawu9.2l1E [sage]   投稿日:2015/12/29 20:35:35  ID:4RcqbWns.net
死にますごめんなさい ノシ

852
デフォルトの名無しさん[sage]   投稿日:2015/12/29 21:09:29  ID:2A8C+lrK.net
くやしいのうwwwくやしいのうwww

853
デフォルトの名無しさん[sage]   投稿日:2015/12/29 21:44:35  ID:PLgvp1Hq.net
で、スレの何番と何番のコードがきれいなの?
教科書的なコードが読みやすいのはわかったけど
現実はPerl以下だよね。

854
デフォルトの名無しさん[sage]   投稿日:2015/12/30 00:11:34  ID:6Tvlbjyh.net
言語で比較してる時点でお察し
読みやすいコードを書く人はどっちの言語で書いても読みやすいコードになるだけ

855
デフォルトの名無しさん[]   投稿日:2016/01/01 12:19:57  ID:Z7e2NzBj.net
AptanaStudio3を使うと
puts乱発でエラーチェックするレベルを超えれるのですか?

856
デフォルトの名無しさん[sage]   投稿日:2016/01/02 03:31:28  ID:cqMsfgi2.net
rubyじゃ無理

857
デフォルトの名無しさん[]   投稿日:2016/01/02 15:10:11  ID:dDeNCcj5.net
elixir おぬぬめ

858
デフォルトの名無しさん[sage]   投稿日:2016/01/03 03:46:38  ID:ZCsbV3RO.net
1.8で作ったUTF-8、CP932、バイナリ間で相互にデータをやりとりするスクリプトを2.1に移植しようとして地獄を見た
Encoding例外の嵐で片っ端から文字コードとencodingをチェックしてすりあわせないと動かなかった・・・orz

859
デフォルトの名無しさん[sage]   投稿日:2016/01/03 23:18:40  ID:7E/Rwrfz.net(2)
新春初食糞はいつもに増して苦かったです><
みなさんはいかがでしたか?
コメント1件

860
デフォルトの名無しさん[sage]   投稿日:2016/01/03 23:19:32  ID:7E/Rwrfz.net(2)
>859
誤爆です。板汚しすみません。

861
デフォルトの名無しさん[sage]   投稿日:2016/01/04 02:02:37  ID:TIJ9YlQ3.net(2)
UTF-8からSJISに変換する場合に変換出来ない文字だけエスケープしてその後戻す簡単な方法ってないですか?
コメント1件

862
デフォルトの名無しさん[]   投稿日:2016/01/04 12:57:15  ID:0MKfE4K1.net
座標、x:12, y:3 があるとき、
Hashのキーを、DBみたいに、数値の連結キー(x, y)にできる?

単純につなげると123となり、(12,3), (1,23)の区別がつかない

また、12-3のように文字列のキーにすると、
座標(12,3)に戻すのに、手間がかかる

>861
CP932には、丸で囲んだ数字などの環境依存文字があるけど、
UTF-8には、CP932に変換できない文字があるの?
コメント2件

863
uy ◆Qawu9.2l1E [sage]   投稿日:2016/01/04 18:19:08  ID:zTvWipKl.net
1=>2

864
デフォルトの名無しさん[sage]   投稿日:2016/01/04 18:41:42  ID:htNqmyXwW
>861
CGI.unescapeHTML("\xE8\x8C\xA4".encode('SJIS', :xml => :text).encode('UTF-8'))

865
デフォルトの名無しさん[sage]   投稿日:2016/01/04 20:10:37  ID:TIJ9YlQ3.net(2)
>862
ハートマークとか

美しくない&簡単じゃないけどこんな感じになった
utf8 = "\u2665"
utf8.force_encoding("utf-8")
$> << "#{utf8} / #{utf8.encoding}\n"
begin
cp932 = utf8.encode("cp932")
rescue Encoding::UndefinedConversionError
utf8.sub!($!.error_char){"\\u#{$!.error_char.encode("utf-16be").unpack("H*").first}"}
retry
end
$> << "#{cp932} / #{cp932.encoding}\n"
utf8 = cp932.encode("utf-8").gsub(/\\u(.{4})/){[$1].pack("H*").encode("utf-8", "utf-16be")}
$> << "#{utf8} / #{utf8.encoding}\n"

866
デフォルトの名無しさん[sage]   投稿日:2016/01/05 00:45:25  ID:JZ6JVmZI0
つ primitive_convert

867
デフォルトの名無しさん[sage]   投稿日:2016/01/05 02:11:00  ID:jgjwtOas.net
Encoding::Converter が使えるんじゃない?

868
849[]   投稿日:2016/01/05 03:54:24  ID:RHXILbsO.net
>862
自己レスですが、2次元のハッシュ(ハッシュのハッシュ)がありました

h = {}
h[3] = {}
h[3][10] = 'x'
h[3][5] = 'y'

{3=>{10=>"x", 5=>"y"}}
コメント1件

869
デフォルトの名無しさん[sage]   投稿日:2016/01/05 12:04:20  ID:4ajyxAFr.net
>868
他にArrayをキーにしてしまう方法もあるよ
ただしキーに破壊的操作するとか変なことすると取り出せなくなったりする罠もあるけど

h = {}
h[[3,10]]='x'
h[[3,5]]='y'

h
=> {[3, 10]=>"x", [3, 5]=>"y"}

870
デフォルトの名無しさん[sage]   投稿日:2016/01/06 09:28:16  ID:UtgyJeyz.net(3)
WindowsでUnicodeでしか表記出来ない引数を受け取るにはどうしたらいいですか?
普通にARGVで読み出すとSJISに変換されて破壊されてしまいます
コメント1件

871
デフォルトの名無しさん[sage]   投稿日:2016/01/06 16:28:39  ID:mQsQtNcK.net
最近、Fiberを使ってみようとしてるんだが、

fi = Fiber.new do
Fiber.yield
fi = nil
end

上記みたいにブロック内でFiberオブジェクトへの参照をnilにした場合
GCが走っても安全なのか知っていたら教えて欲しい。
ちなみに目的はNilクラスに空のresumeを定義してalive?チェックを省くだけ。
コメント1件

872
デフォルトの名無しさん[sage]   投稿日:2016/01/06 19:37:54  ID:yluT1kPN.net
>870
コマンドラインはUnicodeを受け取れる
-Ku
コメント2件

873
デフォルトの名無しさん[sage]   投稿日:2016/01/06 21:02:27  ID:UtgyJeyz.net(3)
>872
thx
それでもダメっぽいです。強制的に?へ変換されてしまいます

874
デフォルトの名無しさん[sage]   投稿日:2016/01/06 22:03:21  ID:UtgyJeyz.net(3)
>872をヒントにこんな感じになった
#!/usr/bin/ruby -E utf-8
# encoding: utf-8
require 'win32ole'
cl=nil
l=WIN32OLE.new("WbemScripting.SWbemLocator")
s=l.ConnectServer(nil, "root\\CIMV2")
c=s.ExecQuery("Select * From Win32_Process Where ProcessId=#{Process.pid}")
c.each{|i|
cl=i.CommandLine[/#{$0}\s(.+)$/, 1]
}
p cl
これでUnicodeな文字が入っていてもUTF-8で受け取れました。ARGVは-Ku(-Eも)を付けても
SJISに変換されてしまう模様。このコードでも-Kuや-E utf8を付けないと?に変換されちゃってダメです
無意味にeach呼び出しているのは避けたかったけどItem(0)と書いても例外吐いちゃうし
他の方法が見つからなかったです
コメント3件

875
デフォルトの名無しさん[sage]   投稿日:2016/01/06 22:51:26  ID:tMM9eiuXE(2)
>843
これじゃね?

C:\>chcp 932
現在のコード ページ: 932
C:\>ruby -e 'p "".encoding; p ARGV[0].encoding' ''
#<Encoding:Windows-31J>
#<Encoding:Windows-31J>

C:\>chcp 95001
Active code page: 65001
C:\>ruby -e 'p "".encoding; p ARGV[0].encoding' ''
#<Encoding:UTF-8>
#<Encoding:UTF-8>

876
875[sage]   投稿日:2016/01/06 22:52:39  ID:tMM9eiuXE(2)
アンカミスった
× >843
>874

877
デフォルトの名無しさん[sage]   投稿日:2016/01/07 15:31:45  ID:XOpkkkUz.net
shebangに書くんじゃなくて
ruby -Ku hoge.rb とかやってもだめ?

878
デフォルトの名無しさん[sage]   投稿日:2016/01/07 15:57:24  ID:Pe5rEwkw.net(2)
>874
Win32API で lpCmdLine とか後から unicode 版のを取れなかったっけ
コメント1件

879
デフォルトの名無しさん[sage]   投稿日:2016/01/07 15:59:02  ID:Pe5rEwkw.net(2)
GetCommandLineW() だったかな

880
855[sage]   投稿日:2016/01/07 21:56:26  ID:R2oUu6Ae.net
>878-879
thx。確かにそれでも取れそうですね。最近はWin32APIは非推奨でFiddleを使うらしい?
>type foo.rb
#!/usr/bin/ruby -E utf-8
# encoding: utf-8
require "fiddle/import"
module Kernel32
extend Fiddle::Importer
dlload "Kernel32.dll"
extern "char * GetCommandLineW()"
end
cl = Kernel32.GetCommandLineW()
p cl
>ruby foo.rb hogehoge
#<Fiddle::Pointer:0x******** ptr=0x******** size=0 free=0x000000>
なぜか0byteが返ってきます。GetCommandLineAやGetCommandLineでも同じでした
使い方が間違っているのだろうか?

881
855[sage]   投稿日:2016/01/07 22:43:50  ID:Hmw0mFw8.net
自己レスです。解決しました
>type foo.rb
#!/usr/bin/ruby
# encoding: utf-8
require "fiddle/import"
module Kernel32
extend Fiddle::Importer
dlload "Kernel32.dll"
extern "wchar_t * GetCommandLineW()"
end
module MSVCRT
extend Fiddle::Importer
dlload "msvcrt.dll"
extern "int wcslen(wchar_t *)"
end
gclw=Kernel32.GetCommandLineW()
cl=gclw.to_str(MSVCRT.wcslen(gclw) * 2)
cl.force_encoding("utf-16le")
p cl
>ruby foo.rb aaaaあいう
"aaaa\u3042\u3044\u3046"
>874より正攻法ですがコードは長いですね
コメント1件

882
uy ◆Qawu9.2l1E [sage]   投稿日:2016/01/08 07:10:42  ID:MJgcrbur.net
>871
仕様上は安全だろうけど
その手のコードはバグを触りやすい
それひとつのコードではバグらなくても幾重にもネストしたり再帰したりすると突然何かが起こるのがruby

883
デフォルトの名無しさん[]   投稿日:2016/01/08 14:21:40  ID:oo2zXXZh.net
>881
すごい無駄なことしてるコードに見える
コメント1件

884
デフォルトの名無しさん[sage]   投稿日:2016/01/08 19:06:23  ID:6fogzGHc.net
>883大先生が効率的なコードを披露してくれると聞いて

885
デフォルトの名無しさん[sage]   投稿日:2016/01/09 00:44:17  ID:orvexjc2.net
コードを披露しないまでもどこら辺が無駄でどういった改善の余地があるのか言ってくれたらためになるね

886
デフォルトの名無しさん[sage]   投稿日:2016/01/09 05:15:12  ID:0wrtgmvg.net
いちいち書式指定してstrftimeするのが面倒なんですが
Time.now.to_sの書式を強引に書き換えて読みやすくするのってどうやればいいですか

ローカルの小物ツールくらいしか書かないので影響範囲が大きくても問題無いです
コメント1件

887
デフォルトの名無しさん[sage]   投稿日:2016/01/09 07:55:24  ID:Luk+Oam8.net
モンキーパッチ、class Time ... endで上書きするメソッドを再定義する

888
デフォルトの名無しさん[sage]   投稿日:2016/01/09 12:50:51  ID:TeXBfoOh.net
>886
Timeのto_sをオーバーライドすれば良いんじゃね

889
デフォルトの名無しさん[]   投稿日:2016/01/09 16:11:01  ID:/zf3lzOM.net(3)
moduleを使えば、継承チェーンに割り込める

子 → 親
子 → module → 親

890
デフォルトの名無しさん[]   投稿日:2016/01/09 21:39:34  ID:/zf3lzOM.net(3)
Rubyに、BitSetってある?

メモリを節約したいので、
9, 9, 4, 1 bitのように、自由に定義したい

891
デフォルトの名無しさん[sage]   投稿日:2016/01/09 22:09:08  ID:u9vfZt76.net
メモリを節約したい要求のある場所でRubyを選択したのが間違い
コメント1件

892
デフォルトの名無しさん[sage]   投稿日:2016/01/09 22:21:42  ID:3OVUjhEX.net
ビット演算は出来るんだから作れば?
というか昔の8bitマイコンならともかく今時そこまで省メモリを求められる用途って何だろう
フラグが何百万個もあるのだろうか

893
デフォルトの名無しさん[sage]   投稿日:2016/01/09 22:42:20  ID:lo5XvONC.net
俺のPC数年前のモデルだけどそれでも8GB積んでるもんな
メモリって8MB, 16MBの世界だと思ってたのにいつの間にやら千倍だな…

894
873[sage]   投稿日:2016/01/09 22:53:44  ID:/zf3lzOM.net(3)
例えば、400ある各マス目に、1〜5は置けて、6〜9は置けないなど、
置けない数字を、各マス目に持つのは、もったいない

これをbitにして、1〜5には0、6〜9には1とすると、たった9bit!
コメント1件

895
デフォルトの名無しさん[sage]   投稿日:2016/01/09 23:40:35  ID:w2pqhm9C.net
>894
400万マスならわかるけど400マスやそこらならたかだかキロバイト単位のメモリ消費だろ、そんな節約になんの意味がある?
それでソースコードが読みにくくなったら百害あって一利なしだから普通に書いたら?
普通に書いたらメモリにのらないようなサイズのデータを扱うなら>891の言うとおりRubyでやるなって話で

896
デフォルトの名無しさん[sage]   投稿日:2016/01/10 00:03:44  ID:INJKYkHg.net
ちょっと前までメモリ1.5GByteでWin7を使っていたメモリドケチな俺でも
PCなのにビット単位で操作しようとは思わないなw

あと今時のプロセッサのアクセス単位は64bit?だからそれから外れると
遅くなりそうだよね

897
デフォルトの名無しさん[sage]   投稿日:2016/01/10 00:08:23  ID:6OwkKsim.net
a = 2
puts 4.downto(0).map { |n| a[n]; p a[n]}.join

0
0
0
1
0
00010

なんじゃこれ。
整数[ ]で、その位置のビットを取れるの?
コメント1件

898
デフォルトの名無しさん[sage]   投稿日:2016/01/10 00:32:34  ID:WGiWSmcB.net

899
デフォルトの名無しさん[sage]   投稿日:2016/01/10 12:52:15  ID:UyzGSaeg.net(2)
stringをdumpしてバックスラッシュ記法に置き換えた文字列をまたもとに戻すにはどうやるんですか?

900
デフォルトの名無しさん[sage]   投稿日:2016/01/10 13:05:11  ID:UyzGSaeg.net(2)
evalでいいのかな、処理重そうだけど。

901
デフォルトの名無しさん[]   投稿日:2016/01/12 06:24:52  ID:iDDwmGx/.net
p sprintf("%#b", 1 << 32)
p sprintf("%#x", 1 << 32)

0b100000000000000000000000000000000
0x100000000

sprintfは、桁区切りできないようだが、
これを、_ で4桁区切りにするには、どうするの?
コメント1件

902
デフォルトの名無しさん[]   投稿日:2016/01/12 12:58:44  ID:AcUi9Sgd.net

903
デフォルトの名無しさん[sage]   投稿日:2016/01/12 21:35:22  ID:ZwH6qafS.net(2)
Windowsの32bit用のバイナリはどっかに無いのか? 2.3

904
デフォルトの名無しさん[sage]   投稿日:2016/01/12 22:55:12  ID:HYDzXRco.net
まだないと思うよ

905
デフォルトの名無しさん[sage]   投稿日:2016/01/12 23:03:38  ID:ZwH6qafS.net(2)
そうか

906
884[]   投稿日:2016/01/13 18:47:51  ID:HEyl8rAG.net
>901-902
num = 987_654_321
p num.to_s.gsub(/(?<=\d)(?=(?:\d{3})+(?!\d))/, '_')

num = 987_654_321.987_654_321
p num.to_s.gsub(/(?<=\d)(?=(?:\d{3})+(?!\d))/, '_')

結果は、987_654_321
987_654_321.9_876_543

(?:pat) という記法を使うと、
キャプチャせずにグループ化できて、性能が多少改善する

直後に、patがある
(?=pat) 肯定先読み(positive lookahead)
(?!pat) 否定先読み(negative lookahead)

直前に、patがある
(?<=pat) 肯定後読み(positive lookbehind)
(?<!pat) 否定後読み(negative lookbehind)

(?<=\d)(?=(?:\d{3})+(?!\d))の解説。
直前に数字、(?<=\d)
直後に、(?=(?:\d{3})+(?!\d)
(\d{3})+ 数字3桁が1回以上、(?!\d) 数字以外

907
デフォルトの名無しさん[sage]   投稿日:2016/01/16 05:30:39  ID:UI4Hs62y.net
require 'fiddle'
include Fiddle
$dlls = Hash.new
def reg(dll, ret, func, args)
$dlls[dll] ||= Handle.new(dll)
eval(<<EOS
def #{func}(*args)
Function.new(
$dlls["#{dll}"].sym("#{func}"),
#{args},
#{ret},
abi=Function::STDCALL
).call(*args)
end
EOS
)
end
reg("User32.dll", TYPE_INT, "MessageBoxW", [-TYPE_INT, TYPE_VOIDP, TYPE_VOIDP, -TYPE_INT]) #←簡単に定義を追加出来るようにしたい
MessageBoxW(0, "テキスト".encode("utf-16le"), "タイトル".encode("utf-16le"), 0)
DLLの関数をトップの名前空間?のメソッドとして定義したいのですがもっとスマートな方法はないでしょうか?
グローバル変数を使っているところとかevalを回しているところとかもうちょっと何とか出来ないかなと・・・

908
デフォルトの名無しさん[sage]   投稿日:2016/01/18 15:16:04  ID:hrpSj5fV.net(2)
>type sample.rb
h = {}
p h[:A]
h[:A][:B][:C][:D] = 1
p h
>ruby sample.rb
nil
sample.rb:2:in `<main>': undefined method `[]=' for nil:NilClass (NoMethodError)
となってしまいますが
nil ←[]はnilを返す
{:A=>{:B=>{:C={:D=>1}}}} ←[]=は必要なだけHashを作ってキーと値を格納する
みたいな動作って出来ないでしょうか?
コメント1件

909
デフォルトの名無しさん[sage]   投稿日:2016/01/18 15:45:40  ID:HWtNcFE4.net
Hash#[]=をモンキーパッチしちゃえば


910
デフォルトの名無しさん[sage]   投稿日:2016/01/18 17:16:40  ID:w2phWYX5.net
>908-909
:C までは [] が呼ばれるから無理よ。
2.3 で追加された dig の setter 版を作るのが無難だと思う。

911
891[sage]   投稿日:2016/01/18 20:04:41  ID:hrpSj5fV.net(2)
ありがとうございます。[]で何とかするのは無理がありますか
digのセッターを作ってみようとしましたが、ひょっとして
h.dig(:A, :B, :C) = 11みたいに使えるメソッドは定義出来ない・・・?
コメント2件

912
デフォルトの名無しさん[]   投稿日:2016/01/19 04:40:42  ID:AE6RCJmb.net(3)
# .*? の、? は最短マッチ
str = File.read('File1').gsub(/^=begin.*?^=end/m, '')

print str.gsub!(/^#.*$/, '').gsub!(/^\r\n|^\n|^\r/, '')

=begin, =end のコメントを削除して、
行頭の# コメントを削除して、空行を削除するのだが、

gsub, gsub! ともに、置換するものが無いときに、
nil が返ってきてエラーになってしまう

エラー処理をどう書けばいい?

913
895[sage]   投稿日:2016/01/19 06:19:57  ID:AE6RCJmb.net(3)
>912 自己レス

https://paiza.io のバグかな? 謎だ。
命令文を分割すると、エラーが起きない

# .*? の、? は最短マッチ
str = File.read('File1').gsub(/^=begin.*?^=end/m, '')

# print str.gsub!(/^#.*$/, '').gsub!(/^\r\n|^\n|^\r/, '')
str.gsub!(/^#.*$/, '')
str.gsub!(/^\r\n|^\n|^\r/, '')

914
デフォルトの名無しさん[sage]   投稿日:2016/01/19 08:55:59  ID:sF3aJ+Pj.net
バグでもなんでもないがな

Signature: gsub!(*arg1)
Number of lines: 3

Performs the substitutions of String#gsub in place, returning
str, or nil if no substitutions were performed.
If no block and no replacement is given, an enumerator is returned instead.
コメント2件

915
デフォルトの名無しさん[sage]   投稿日:2016/01/19 13:23:33  ID:TwxtwyWd.net
>911
deep_merge でよくね?
コメント1件

916
デフォルトの名無しさん[sage]   投稿日:2016/01/19 19:05:06  ID:pToVStIW.net
>915
そういう問題ではなくね?そもそもそのメソッドは標準で付いていないだろ

917
デフォルトの名無しさん[sage]   投稿日:2016/01/19 20:14:52  ID:zywzlcNl.net
>911
却下されてる
http://stackoverflow.com/questions/34620469/safely-assign-value-to-nes...
https://bugs.ruby-lang.org/issues/11747
> It's not clear to generate either Hash, Array, or Struct (or whatever) to bury a value.
> So it's better to reject now.
> Matz.

918
891[sage]   投稿日:2016/01/19 23:11:13  ID:eQspgBAx.net
結局Hash#[]とHash#[]=を書き換えて:A, :B, :Cみたいな複数のキーも受け取れるようにしました
これでことあるごとに||= Hash.newを書かなくて済むかなl
コメント2件

919
895[]   投稿日:2016/01/19 23:36:01  ID:AE6RCJmb.net(3)
>914
print str.gsub!(/^#.*$/, '').gsub!(/^\r\n|^\n|^\r/, '')

一つも置換されなかった時は、nilが返るので、
どういうようにエラー処理を書けばいい?
コメント2件

920
デフォルトの名無しさん[sage]   投稿日:2016/01/20 00:01:24  ID:I0mr8dGx.net
>918
Refinement とか使ってるの?
自分のコードや使ってるライブラリが盛大にぶっ壊れても知らんぞ。
コメント1件

921
デフォルトの名無しさん[]   投稿日:2016/01/20 00:31:30  ID:A6cPD9Df.net
そのときはそんな言語使ってる自分が悪いと思う

922
デフォルトの名無しさん[sage]   投稿日:2016/01/20 00:37:07  ID:CKeFiLXY.net
>920
後学のためにどのように盛大にぶっ壊れるのか具体例をplz
Hashは何でも受け付けるしリファレンスマニュアルどおりの動作をさせた上で
拡張するなら問題はないように思うけど。>918も「も」って書いているしな

923
デフォルトの名無しさん[sage]   投稿日:2016/01/20 01:43:49  ID:wyzbWinc.net
>919
str.gsub!(/^#.*$/, ‘’)&.gsub!(/^¥r¥n|^¥n|^¥r/, '')

2.3な

924
895[sage]   投稿日:2016/01/20 02:38:49  ID:7T123+WA.net(2)
>919 自己レス
str = File.read('File1').gsub(/^=begin.*?^=end/m, '')
p str

str.gsub!(/^#.*$/, '')
p str

str.gsub!(/^\r\n|^\n|^\r/, '')
p str

これを、https://paiza.io で実行すると、
たとえ、File1が空ファイルで、
全く置換されなくても、エラーにならない。
strには、nilではなく、空文字列が返る

でも、メソッドチェーンにすると、実行時エラーになる。
わけわからんw Rubyは深い、深すぎるw

str.gsub!(/^#.*$/, '').gsub!(/^\r\n|^\n|^\r/, '')
undefined method `gsub!' for nil:NilClass (NoMethodError)

925
デフォルトの名無しさん[sage]   投稿日:2016/01/20 02:58:46  ID:yPrd8nI2.net
別に深くないけど
nilが返ってくるかもしれんものをメソッドチェーンで呼び出す方がどうかしてる

926
895[sage]   投稿日:2016/01/20 03:10:13  ID:7T123+WA.net(2)
でも、メソッドチェーンにせず、
単独の命令文に分割すると、nilが返ってこない

全く置換されなくても、そのまま置換前の文字列が返ってくる。
わけわからん
コメント1件

927
デフォルトの名無しさん[sage]   投稿日:2016/01/20 08:43:57  ID:UTsS/Gix.net
そんなにメソッドチェーンにしたければgsub!じゃなくてgsubを使えばいいだけなのに
わけわからん

928
デフォルトの名無しさん[sage]   投稿日:2016/01/20 11:15:06  ID:WIh3ROx7.net
str.gsub!(/^#.*$/, '')
p str

str.gsub!(/^\r\n|^\n|^\r/, '')
p str

ここら辺を
p str.gsub!(/^#.*$/, '')

p str.gsub!(/^\r\n|^\n|^\r/, '')

こう書いてみたらわかるんじゃない?

929
デフォルトの名無しさん[sage]   投稿日:2016/01/20 14:09:06  ID:oewfRt8i.net
strがどう変わるかとメソッドの戻り値は別物なんだよ
メソッドの戻り値がnilでもstrがnilになるわけじゃないんだよ

930
デフォルトの名無しさん[sage]   投稿日:2016/01/21 00:51:31  ID:Ybl3jyTF.net(2)
>926
gsub!の戻り値が変換後のstrだと期待してるからおかしなことになるんだよね
君が期待してることを達成するメソッドはgsub!じゃなくてgsubだと気づけばすべて解決

931
デフォルトの名無しさん[sage]   投稿日:2016/01/21 01:01:05  ID:L852Reef.net
こういう作法ってどのくらい現実的なんですか
上級者ならみんなやってるよって感じですか

Rubyによる関数型プログラミング
http://www.h6.dion.ne.jp/~machan/misc/FPwithRuby.html
コメント3件

932
895[]   投稿日:2016/01/21 01:06:53  ID:f4TiidQN.net
そうか、gsub!の戻り値は、変換後のstrでは無かったのか。
それとは別に、戻り値があったのか

うわっはははは。意外な盲点じゃったわいw
でも、別に戻り値は見ないな

gsubよりも、使うメモリが少なそうな、gsub! を使いますわ
コメント2件

933
デフォルトの名無しさん[sage]   投稿日:2016/01/21 01:10:15  ID:Ro+JnAfr.net
>932
>914で既出なんですが

934
デフォルトの名無しさん[sage]   投稿日:2016/01/21 01:16:03  ID:Ybl3jyTF.net(2)
>931
> 関数型プログラミングへの際立った潜在能力があるのだから、 それらを
> いつどのように使うか(そして、いつ使わないか)を知っておくべきである。

この括弧内を意識できるなら、まぁいいんじゃない?って感じ
でもそこまで意識できるようになるには、関数型プログラミングにある程度親しんでおく必要はありそうだ

935
uy ◆Qawu9.2l1E [sage]   投稿日:2016/01/21 03:03:42  ID:8l/ACpWh.net
>932
は?

936
デフォルトの名無しさん[sage]   投稿日:2016/01/21 09:14:52  ID:bLZ10bT+.net
>931
Rubyはオブジェクト指向原理主義だから、関数型のレコードやリストのような、
オブジェクトを振る舞いを持たない単なる値として扱うというのは好まれない
変数やフィールドを再代入不可にできなかったりブロックが式じゃなかったり、関数型に向いてるとも言いづらい

937
デフォルトの名無しさん[sage]   投稿日:2016/01/21 12:20:16  ID:0eFee794.net
>931
再帰やブロックでより宣言的に書くとか、破壊的メソッドの呼び出しに注意する(特にメソッドの引数として受け取ったオブジェクトに破壊的メソッドを適用する場合)とか
作法ってほどルール化されてないけど、有益な考え方は多い

938
デフォルトの名無しさん[sage]   投稿日:2016/01/21 17:31:41  ID:bdQYAVtq.net
f.call(a)とかf.(a)とかf[a]とか萎え萎えですやん
Common Lispの(funcall f a)の形も嫌
Standard MLやOCamlやSchemeの(f a)の形が好き

939
デフォルトの名無しさん[sage]   投稿日:2016/01/21 21:24:57  ID:OmENn3Ct.net(2)
どっちでもいいよ。
俺らは使って便利なものを作りたいだけなんだから
そんな些細な違いは方言程度にしか思ってない。

940
デフォルトの名無しさん[sage]   投稿日:2016/01/21 21:25:27  ID:OmENn3Ct.net(2)
俺らは 言語を 使って便利なものを作りたいだけなんだから

941
デフォルトの名無しさん[sage]   投稿日:2016/01/21 21:45:44  ID:avOtfex3.net
関数とクロージャを区別せずに書けるのは気持ちいいでしょ

942
デフォルトの名無しさん[sage]   投稿日:2016/01/21 21:48:39  ID:jSpegSOL.net
ご苦労じゃな

943
デフォルトの名無しさん[sage]   投稿日:2016/01/22 07:33:53  ID:5jqeGNRb.net
最近は大分マシになったけど本質的にオブジェクトの生成は高コストだから
積極的にオブジェクトを増やす実装は推奨されないのでは

944
914[sage]   投稿日:2016/01/22 08:15:55  ID:1VitLDg8.net
レスありがとうございます

いくつかの書き方は参考になりましたが
やはり状態変更は悪などと極端に走らず
Rubyとして効率的なコードを書くように心がけるのが良さそうですね

945
デフォルトの名無しさん[sage]   投稿日:2016/01/22 08:16:18  ID:Q7uzg+r2.net
Rubyは本質的にクソ遅いからそんなことは問題にならないよ
どうせIOがボトルネックのケースか処理時間が重要でないケースにしか使えないんだから

946
uy ◆Qawu9.2l1E [sage]   投稿日:2016/01/24 18:31:01  ID:JCW4ssXH.net
そうやっていつもすぐどうせどうせってゆうのよくないよ

947
デフォルトの名無しさん[sage]   投稿日:2016/01/26 13:14:16  ID:mkuLwhRZ.net
ruenvで2.1.2をインストールしようとしたら、

> ERROR: Ruby install aborted due to missing extensions
> Try running `yum install -y readline-devel` to fetch missing dependencies.

ってでたのでredline-develをインストールしたら2.1.2をインストールできました。

・・・なんて話を「rbenv で Ruby2.1.2 がインストールできなかった話」というタイトルで
Qiitaとかに投稿するな!!!

わざわざクリックして最後まで読ませやがって。
コメント1件

948
デフォルトの名無しさん[sage]   投稿日:2016/01/26 21:27:41  ID:E7aOa7R/.net
お前のために他人がいる訳じゃない

他人が発信した情報あてにしないと問題解決もできない奴が
他人の記事に文句言うな
コメント3件

949
デフォルトの名無しさん[sage]   投稿日:2016/01/26 22:49:53  ID:GXD8VpF6.net
qiitaは既に糞まみれ
残念ながら

950
デフォルトの名無しさん[sage]   投稿日:2016/01/26 23:14:12  ID:vn2Q4vZq.net
意識高い系はもうRubyから引揚げてるしな

951
デフォルトの名無しさん[sage]   投稿日:2016/01/26 23:39:15  ID:WceGgIjm.net
それって皮肉なのか?

952
デフォルトの名無しさん[]   投稿日:2016/01/27 00:20:56  ID:/TmOpm0o.net(2)
>948 の性格の悪さがディスられてるだけ

953
デフォルトの名無しさん[sage]   投稿日:2016/01/27 12:54:52  ID:E7OQZ8ca.net
>948
「rbenvで2.1.2をインストールしようとしたら、readline_develが無いと怒られた」

というタイトルだったら、まだギリ許せた。
コメント1件

954
デフォルトの名無しさん[sage]   投稿日:2016/01/27 19:53:10  ID:oO7fm3iA.net(2)
玉石混交の情報から自分に必要な情報をピックアップする技術ってのはエンジニアには
必須だと思うけどなー

んなことぐらいでキレてたらやってられんと思うんだが

955
デフォルトの名無しさん[sage]   投稿日:2016/01/27 21:20:24  ID:/TmOpm0o.net(2)
想像だけど>947はたぶんフェイスブックみたいなSNSもやってて
ふさわしくないなと思ったから2chに思いのたけをぶつけたのだと思う。
エンジニアとして適切な行為だと思う。

956
デフォルトの名無しさん[sage]   投稿日:2016/01/27 21:29:22  ID:oO7fm3iA.net(2)
2chに愚痴を書き込むのがエンジニアとして適切って…どこまでが釣り針なんだろう?

957
デフォルトの名無しさん[sage]   投稿日:2016/01/27 21:45:43  ID:iQ3nwyf1.net
そもそもエンジニアとはなんなのか

958
デフォルトの名無しさん[sage]   投稿日:2016/01/27 22:02:26  ID:NkEGFK8F.net
教えてください。

959
デフォルトの名無しさん[sage]   投稿日:2016/01/28 11:32:12  ID:Tq1/h+gy.net
>953
QiitaとかStack Overflowとかは、投稿数に応じてなんらかのステータスが上がる仕組みになってたり、
投稿数を増やそうと誘導する仕組みになってたりするから、ゴミ記事が増えるのは仕方がないよ。

NG機能があればいいんだけどね。
コメント1件

960
デフォルトの名無しさん[sage]   投稿日:2016/01/28 23:35:47  ID:pLiNNOp7.net
>959
情報が多い分には別に構わんでしょ
それが役に立つかどうかは読む人によって変わるんだから

「俺にとって役に立たないからクソ記事だ」とか叫ぶ方が異常なだけなんだよ
コメント1件

961
デフォルトの名無しさん[sage]   投稿日:2016/01/29 00:01:28  ID:tOtoATn6.net
こういうのが新参者をバサバサ切る老害の思考なんだなと分かる例ですね

962
デフォルトの名無しさん[sage]   投稿日:2016/01/29 02:13:31  ID:E1SYsv9d.net(5)
いや、役に立たない情報が多いのは大いに困るだろ
読んでみないと役に立たないかわからないような紛らわしい情報ならなおさら
一つや二つの記事でそれを言い出すのはどうかと思うが、これを否定するのは無理がある
コメント1件

963
デフォルトの名無しさん[sage]   投稿日:2016/01/29 04:26:08  ID:w5vE0Dwg.net(2)

964
デフォルトの名無しさん[sage]   投稿日:2016/01/29 10:33:25  ID:E1SYsv9d.net(5)
何が言いたいんだろう
お前のために公開した情報じゃないんだから、その情報のせいでお前が困っても関係ないってこと?
コメント1件

965
デフォルトの名無しさん[sage]   投稿日:2016/01/29 10:43:53  ID:ocau8PiP.net(2)
自分基準でしか物事考えられないなら明らかに向いてないんだから転職をオススメするよ

966
デフォルトの名無しさん[sage]   投稿日:2016/01/29 10:48:19  ID:+dgjzxQ2.net(2)
>964
>960の通りでしょ。
ある情報があなたには有益ではなくても他の人には有益な可能性もあるのに、
自分の役に立たない情報は世の中にも不要な情報と決めつけているだけ。
コメント1件

967
デフォルトの名無しさん[]   投稿日:2016/01/29 11:40:54  ID:ciUqMjIc.net
話ループさせてるやつはなんなんだ。
ループが上手でこの職に向いてるのか。
もう一度言うが元レス書いた人は
2手先を読んで「2ch.net」に書いたのであればなんの問題もないじゃん。
ここは2ちゃんねるというゴーストタウン。
スマホで見たらエロ漫画の広告しかないよ。
こんな辺鄙とこでも炭鉱があったころはにぎわってたらしいけどな。

968
デフォルトの名無しさん[sage]   投稿日:2016/01/29 11:56:30  ID:qELvr9Oj.net(5)
> > Try running `yum install -y readline-devel` to fetch missing dependencies.
>
> ってでたのでredline-develをインストールしたら2.1.2をインストールできました。

という内容をありがたがる奴なんているんだ
それは盲点だったわ

969
デフォルトの名無しさん[sage]   投稿日:2016/01/29 12:38:04  ID:6UZRSAow.net(3)
記事書いてると気合いいれたのは全然延びなくて
そんなんあたりまえやろ、自分で試せばいいちゃん
って思うような記事が伸びるのはみんな経験すること。
むしろ盲点しかない。
コメント1件

970
デフォルトの名無しさん[sage]   投稿日:2016/01/29 12:59:38  ID:PBp+3Ff3.net
どうしてruby触ってる人はうんこ臭いの??

971
デフォルトの名無しさん[sage]   投稿日:2016/01/29 13:27:44  ID:qELvr9Oj.net(5)
>969
別にその記事伸びてないし
Qiitaでは、普通に良記事が伸びる
コメント1件

972
デフォルトの名無しさん[]   投稿日:2016/01/29 13:44:03  ID:6UZRSAow.net(3)
>971
じゃあなおさらなんのもんだいもない
コメント1件

973
デフォルトの名無しさん[sage]   投稿日:2016/01/29 14:09:13  ID:qELvr9Oj.net(5)
>972
いやだから「rbenv で Ruby2.1.2 がインストールできなかった話」というタイトルに釣られて
クリックして、最後まで読んでやっとクソ記事だったとわかった俺の時間が無駄になった
(同様の奴けっこういるかもよ)

974
デフォルトの名無しさん[sage]   投稿日:2016/01/29 14:11:37  ID:qELvr9Oj.net(5)
さらに言うなら、なぜそのステップが必要なのかも書かずに、だらだらどうやったか
だけを書いた「○○をインストールしてみた系」の記事も、いいかげんにして欲しい
(Qiitaに限らず)
コメント1件

975
デフォルトの名無しさん[sage]   投稿日:2016/01/29 14:14:26  ID:rwMtqIQl.net
>974
健全なネット環境のための法案を作って
ノイズをうpした連中とその家族を焼き払ってほしい
youtubeとか検索してでてくる「歌ってみた」「カバー」
とかもう半笑いで殺意湧く
コメント2件

976
デフォルトの名無しさん[sage]   投稿日:2016/01/29 14:23:06  ID:+dgjzxQ2.net(2)
こんなところでいつもでもグダグダしょうもない書き込みをしておきながら
俺の時間がムダになったとかwww

977
デフォルトの名無しさん[sage]   投稿日:2016/01/29 14:27:21  ID:qELvr9Oj.net(5)
> ある情報があなたには有益ではなくても他の人には有益な可能性もある

とか言い出す奴がいなければ、グダグダしょうもない書き込みはしなかったけどね
マジで驚いた

978
デフォルトの名無しさん[]   投稿日:2016/01/29 14:44:27  ID:6UZRSAow.net(3)
ぼかした言い方でも誰かが実行したら>975
が罪に問われる法律なら結構前に施行されてる

979
デフォルトの名無しさん[sage]   投稿日:2016/01/29 16:03:05  ID:koUnNQGJ.net
> > ある情報があなたには有益ではなくても他の人には有益な可能性もある
>
> とか言い出す奴がいなければ、グダグダしょうもない書き込みはしなかったけどね
意味不明な行動原理ワロ

980
デフォルトの名無しさん[sage]   投稿日:2016/01/29 17:40:13  ID:vhRbN74r.net
>975
お前が見たい奴こそがYoutubeにとってノイズだよ

981
デフォルトの名無しさん[sage]   投稿日:2016/01/29 18:02:18  ID:E1SYsv9d.net(5)
>966
誰か誰にとっても有害だって前提で話をしてるか?
そんなもの世の中のありとあらゆる有害なものを調べてもほとんどないだろうよ
世の中にとって有害だって話もそんなことはないと言ってる人しか言及してないように思うよ
「誰が」とか「誰にとって」の部分が省略されてるときに何でもかんでも「世の中の人すべて」をあてはめて読んじゃだめだよ

982
デフォルトの名無しさん[sage]   投稿日:2016/01/29 18:16:21  ID:w5vE0Dwg.net(2)
「プログラマの三大美徳」も
勘違いすると俺様思考になるんだって例

気に入らなきゃ見なけりゃいいだけじゃん

983
デフォルトの名無しさん[sage]   投稿日:2016/01/29 20:56:20  ID:E1SYsv9d.net(5)
見なきゃわからないからこそ困るって話なんだけどな
ここまで頓珍漢なこと良く言えるわ
コメント1件

984
デフォルトの名無しさん[sage]   投稿日:2016/01/29 21:13:47  ID:sTsCbzbH.net
みんな元気で何よりです

985
デフォルトの名無しさん[sage]   投稿日:2016/01/29 21:15:15  ID:4RN5yrs8.net(2)
>983
別にお前が困ったところで切り捨てればいいだけの話だよね
「こんな記事のせいで俺様の時間が無駄になった」というなら斜め読み能力のなさが原因なだけ

ネットの情報が玉石混交なのは当たり前の話なんだから、それぐらい織り込んどけ

986
デフォルトの名無しさん[sage]   投稿日:2016/01/29 22:48:15  ID:E1SYsv9d.net(5)
別に困ったところで知ったこっちゃないというならそれでいいし、困らないような能力がないせいだというのもいいし
そんな当たり前のことをいちいち愚痴っても仕方がないというのもいいが
そんな理由でいちいち愚痴に突っかかってこられたらたまったもんじゃないだろうね

987
デフォルトの名無しさん[sage]   投稿日:2016/01/29 22:59:00  ID:4RN5yrs8.net(2)
嫌なら2chじゃなくてブログに愚痴こぼしとけばいいのに

どうもネットリテラシーに欠けるきらいがあるねえ

988
デフォルトの名無しさん[sage]   投稿日:2016/01/29 23:01:57  ID:ocau8PiP.net(2)
自分で勝手に火に油注いでおいて何を言ってるんだろう
そんな叩かれたくないならチラシの裏にでも書くに留めておけばいいのに

989
デフォルトの名無しさん[sage]   投稿日:2016/01/29 23:37:02  ID:o83v3zl0.net
しかもここRuby初心者スレっていうね

990
デフォルトの名無しさん[sage]   投稿日:2016/01/30 01:23:45  ID:tN64rwpC.net
嫌なら見なきゃいいのに
叩くこと自体が趣味の性格が悪い人たちなのかな?
コメント1件

991
デフォルトの名無しさん[sage]   投稿日:2016/01/30 09:41:10  ID:uXFVRCYk.net
>990
ID:E1SYsv9d だろお前
いい加減しつこいぞ

992
デフォルトの名無しさん[sage]   投稿日:2016/01/30 12:51:22  ID:/T0e1x1G.net
お前平田だろ

993
デフォルトの名無しさん[sage]   投稿日:2016/01/30 18:28:49  ID:FojFAs7d.net
時々思い出したように Ruby でスクリプト書くといつもインクリメントで syntax error になる
なぜ忘れてしまうのか

994
デフォルトの名無しさん[sage]   投稿日:2016/01/30 21:45:32  ID:QMlo5tQL.net
他の言語でインクリメントをよく書いてるからでしょ
そんなにインクリメントを書く機会ってあるのか

995
デフォルトの名無しさん[sage]   投稿日:2016/01/30 21:49:31  ID:NWwyNWcX.net
Rubyはeachがあるからほとんど書かなくていいよな

996
デフォルトの名無しさん[sage]   投稿日:2016/01/31 13:52:09  ID:XXEMiKnQ.net
まぁ他の言語でも使わなくて済むなら使わないわな
for拡張なりsemaphore的なものなりでインクリメントデクリメントを使わなきゃいけない場面もかなり減ったし

インクリメントデクリメントは登場回数の割にバグを産みやすすぎる

997
デフォルトの名無しさん[sage]   投稿日:2016/01/31 14:28:47  ID:Q+LCs9MU.net
例えばこんなの
n=0; f=filesize; while(f/1024.0>=1){ f/=1024.0; n++; } return [f, " KMG"[n]]
再帰や対数でも書けるだろうけどさすがにちょっと
ruby ならあるだろうという謎の信頼感

ところでループ内で最後の要素だけ別の処理するみたいな場合にスマートな書き方ある?
コメント1件

998
デフォルトの名無しさん[sage]   投稿日:2016/01/31 15:13:59  ID:IomQZ6/B.net
こういうとき俺も困るわ
n += 1で凌いでるけどいい書き方あるの?

999
sage[]   投稿日:2016/01/31 17:39:08  ID:cEIhLW7n.net(3)

1000
sage[]   投稿日:2016/01/31 17:41:00  ID:cEIhLW7n.net(3)
ごめん、本文抜けてた
" KMG#".each_char {|kmg|
  return f, kmg if f < 1024.0 || kmg == '#'
  f /= 1024.0
}

1001
sage[]   投稿日:2016/01/31 17:44:27  ID:cEIhLW7n.net(3)
バグってる、番兵の'#'はいらなくって、kmg=='G'までだったね。

1002
デフォルトの名無しさん[sage]   投稿日:2016/01/31 19:20:47  ID:iwDB+Nos.net
簡単な書き方思いつかんね

f = 100000
%w(B KB MB GB).map.with_index{|u,i|[f/1024**i,u]}.reverse.find{|n,u|n>=1}
=> [97, "KB"]

最後だけ別ってのも直接そういうやり方は知らないなあ
a[0..-2].処理
a[-1].処理
って分けるくらいか

1003
デフォルトの名無しさん[sage]   投稿日:2016/01/31 19:41:35  ID:oGNCocg8.net
本題からは反れるけど、この種のアルゴリズムとしては、除算より乗算、乗算よりビット演算か定数比較を推したいなぁ。

1004
デフォルトの名無しさん[sage]   投稿日:2016/01/31 22:13:03  ID:DPmT4LpP.net
def vp(value, unit, prefixes)
value < unit || prefixes.size <= 1 ? [value, prefixes.first] : vp(value / unit, unit, prefixes.drop(1))
end
p vp(1023, 1024.0, %w(B KB MB GB))
p vp(1024 ** 1, 1024.0, %w(B KB MB GB))
p vp(1024 ** 2, 1024.0, %w(B KB MB GB))
p vp(1024 ** 3, 1024.0, %w(B KB MB GB))
p vp(1024 ** 4, 1024.0, %w(B KB MB GB))

[1023, "B"]
[1.0, "KB"]
[1.0, "MB"]
[1.0, "GB"]
[1024.0, "GB"]

1005
デフォルトの名無しさん[sage]   投稿日:2016/02/01 21:06:53  ID:LsZlPhNI.net
うーん 981 の n+=1 でいくわ
ありがと

1006
デフォルトの名無しさん[sage]   投稿日:2016/02/01 21:55:23  ID:d5xPHHkz.net
ruby は範囲が決まってないループについてスマートに処理書けなくてもやもやする

1007
sage[]   投稿日:2016/02/01 22:42:16  ID:0IqKHljv.net(2)
対数で行くと、こうかな?
scale =

1008
sage[]   投稿日:2016/02/01 22:44:12  ID:0IqKHljv.net(2)
scale = " KMG"
n = [[Math.log( val.abs, 1024 ), scale.size-1].min, 0].max.to_i
return val/1024.0**n, scale[n]
# 0や負でもいける

なんでうまくい書けないんだろう?
コメント1件

1009
デフォルトの名無しさん[sage]   投稿日:2016/02/01 22:58:58  ID:FfN537Ew.net
log_2()の計算するときはたまにFixnum#bit_lengthを使うことがある

1010
デフォルトの名無しさん[sage]   投稿日:2016/02/01 23:02:48  ID:0uPvYgHa.net
>1008
ダブルクォーテーションが入ってるとなぜかそこでレスが途切れることがある
ただし、そのあとなぜかレス投稿に成功したりするからイラつく
更新情報
・スレッド一覧ページで過去ログのタイトル検索・一覧表示ができるようになりました(2016/1/20)
NGワード登録
登録する
スレッド内検索

プログラム板 タイトル検索

このスレッドが人気です(実況系)
NEWS23★1 (1001)TBS実況
NEWS ZERO 2 (415)NTV実況
【マターリ】クレイジージャーニーSP★2【マターリ】&#169;2ch.net (851)TBS実況
歴史のへ〜、ほ〜 あなたの常識が変わります!★2 (710)NHK実況
クレイジージャーニーSP 少数民族を愛する写真家・ヨシダナギ&爬虫類ハンター★10 (597)TBS実況
熱闘甲子園 大会第8日 (410)テレ朝実況
良かれと思って!【初公開!芸能人自慢の家を住宅のプロがメッタ斬り】 (964)フジ実況
刑事7人 第3シリーズ #6★2 (856)テレ朝実況
このスレッドが人気です(ニュース系)
【話題】<牛乳石鹸>広告が炎上!「もう買わない」の声「意味不明」「ただただ不快」批判殺到!★2 (418)音楽・芸能ニュース
【詐欺師】YouTuberヒカルがインサイダー疑惑で炎上 疑似株式サービスVALU(バリュー) ★8 (1001)音楽・芸能ニュース
【話題】<牛乳石鹸>広告が炎上!「もう買わない」の声「意味不明」「ただただ不快」批判殺到! (1002)音楽・芸能ニュース
【詐欺師】YouTuberヒカルがインサイダー疑惑で炎上 疑似株式サービスVALU(バリュー) ★9 (73)音楽・芸能ニュース
【野球】セ・リーグ T3-5C[8/16] 松山先制打に西川・安部・新井・岩本適時打!5適時打広島M「26」 阪神藤浪復帰も制球改善せず (312)音楽・芸能ニュース
【テニス】錦織圭 今年の残り試合欠場を発表 右手首の腱損傷…来年に備え (979)音楽・芸能ニュース
【米国】白人至上主義めぐる衝突 トランプ大統領「双方に責任」に批判高まる 白人至上主義団体(KKK)は称賛★3 (1001)ニュー速+
【ボクシング】山中慎介「効いてなかった」タオル投入に帝拳ジム会長「(トレーナーの)個人的な感情が入った。最悪」★8 (594)音楽・芸能ニュース
プログラム板の人気スレ
オブジェクト指向システムの設計 173 (186)
ふらっと C#,C♯,C#(初心者用) Part130 (491)
Excel VBA 質問スレ Part49 (791)
【初心者歓迎】C/C++室 Ver.101【環境依存OK】 (462)
【統計分析】機械学習・データマイニング17 (139)
次世代言語議論スレ[Go Rust Scala Haskell]第5世代 (830)
スレ立てるまでもない質問はここで 148匹目 (933)
Ruby 初心者スレッド Part 60 (908)
Xamarin Part5 (386)
Visual Studio 2017 Part2 (1001)
Pythonのお勉強 Part53 (736)
本当に必要ものは人工知能ではなくて検索エンジン (363)
Java入門・初心者質問スレ Part.4 (323)
プログラミング言語 Rust 3 (594)
C++相談室 part131 (132)
C#, C♯, C#相談室 Part94 (705)
ねねっちと一緒にプログラムを勉強するスレ第2話 (920)
Swift part11 (238)
Git 15 (988)
推薦図書/必読書のためのスレッド 81 (905)
関数型プログラミング言語Haskell Part30 (887)
C# vs Java どっちが好き? その3 (603)
☆★Java質問・相談スレッド180★★ (461)
Androidプログラミング質問スレ revision53 (727)
Visual Studio 2015 Part8 (797)
このサイトについて
このサイトは2ちゃんねるからデータを取得し、表示するサービスです。
画像のインライン表示機能について
画像のURLの後ろにある[画像をインライン表示]をクリックすると、URLの下に表示します。
表示される画像は横幅100pxに縮小されていて、クリックすると原寸で表示します。
このサイトの特徴
1)スレッド内検索ができます
2)レス(「>>1」など)のポップアップができます
3)不適切な言葉を含む投稿を表示しません
4)ページ内で画像を直接表示できます
5)2ch他スレッドへのリンクはタイトル・板名つきでリンクします
6)すっきりとしたデザインで表示します
7)最新スレや前スレをチェック・一覧表示します
8)NGワード機能の搭載でイヤな言葉が目に入りません
9)荒らしを自動チェックします
10)スレッド内・同一IDの書き込みだけ表示できます
11)レスの返事をレスされた発言の下に表示する「まとめビュー」が利用できます
12)シリーズ化したスレッドの一覧を表示します
13)最新のスレッドがある場合はお知らせします
削除について
こちらをご覧ください
機能要望について
現在機能要望受付中です。
問い合わせについて
こちらのページからどうぞ
広告


首都圏の方、ソフトバンク光オススメですよ


このサイトは2ch.scからデータを取得・表示しています。削除などについてはこちらをご覧ください。 アクセスモード:差分取得 - 新着書き込みなし(304)