Ruby 初心者スレッド Part 56©5ch.io
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん 転載ダメ©2ch.net
2014/12/13(土) 09:29:12.93ID:DLY4IovQ質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で
前スレ
Ruby 初心者スレッド Part 55
http://peace.2ch.net/test/read.cgi/tech/1403361584/
るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
逆引きRuby
http://www.namaraii.com/rubytips/
0002デフォルトの名無しさん
2014/12/13(土) 11:36:58.78ID:rv+X6bjI尻穴用心 クソ用心
尻穴用心 クソ用心
一日一回 よいクソを
ブリブリ モリモリ 日曜日
「ケツを大切にしよう 一日一便」
尻穴用心 クソ用心
尻穴用心 クソ用心
月に一度は 浣腸を
ビチビチ 水便 月曜日
「腸をきれにしよう 一日一便」
尻穴用心 クソ用心
尻穴用心 クソ用心
屁には用心 屁の用心
カンチョー カンチョー 火曜日だ
「クソ我慢はやめよう 一日一便」
尻穴用心 クソ用心
尻穴用心 クソ用心
クソは便酒の お母さん
グイグイ グイグイ 水曜日
「クソを大切にしよう 一日一便」
0003名無しさん@そうだ選挙に行こう
2014/12/13(土) 18:07:33.37ID:wupMBGRm本には、次のように書かれています。
「試しに、Rubyのソースからクラスやメソッドの構成を参照するrdefsというgemパッケージを検索してみましょう。
% gem search rdefs
*** REMOTE GEMS ***
rdefs (0.0.2)」
これをやってみようと、最初に試みたのは、
Rubyと書いてあるやつをダブルクリックしてコマンドプロンプトっぽい黒いやつが出てきたところで
「% gem search rdefs」と打ち込むことで、これはエンターを押した直後に一瞬で消えてしまいました。
次に、Rubyコマンドプロンプトの方でやってみましたが、
「% gem search rdefs」と打ったら失敗(『'%'は、内部コマンドまたは外部コマンド...』のエラー)して、
「gem search rdefs」と打ったらちゃんと「*** REMOTE GEMS ***」が出ました。
(でも、rdefs (0.0.2)は出てこなかった)
疑問はいろいろありますが、特に次がわかりません。
1.「% gem search rdefs」はどこに打ち込めばいいのか?
2.コマンドプロンプトでは"%"を除外しないとうまくいかなかったっぽいが、"%"とはどういう存在なのか?
3.結局、正しく「gemパッケージをインストール」するにはどうすればいいのか
お願いします。
0004名無しさん@そうだ選挙に行こう
2014/12/13(土) 18:33:39.73ID:cDWMVZ6e1. コマンドプロンプト
2. '%' はコマンドを打ち込むことを表すことが多い。'>' が使われることもある
したがって実際に実行させる場合は '%' や '>' は省略しなければならない
3. gem install <gem名>
0005名無しさん@そうだ選挙に行こう
2014/12/13(土) 19:16:06.90ID:qpx34oJTありがとうございます!
0006名無しさん@そうだ選挙に行こう
2014/12/13(土) 19:30:49.35ID:gn9mQ4CYtruncateを使うことにしました!
回答どうもありがとうございました
0007デフォルトの名無しさん
2014/12/14(日) 21:58:28.43ID:8U4w7i4KJavaScriptにおける(function(){})()みたいなやつです
0008デフォルトの名無しさん
2014/12/14(日) 22:05:37.58ID:ivAaTykD0009デフォルトの名無しさん
2014/12/14(日) 22:53:18.03ID:igCzp+zo->(x){x+1}[1]
0010名前は開発中のものです。
2014/12/14(日) 22:59:57.18ID:Jnvv+4N5ruby触りたい・・・
せっかくある程度身に付いたのに身に付いたばかりで触る時間減ると
また忘れていく・・・
0011デフォルトの名無しさん
2014/12/14(日) 23:33:15.46ID:8U4w7i4K有難うございました
0012デフォルトの名無しさん
2014/12/15(月) 10:05:50.58ID:X5+DHKvY自分がレスしといてなんだけどイリーガル系全然考慮してないよ
今更だけど注意しといてくれ
0013デフォルトの名無しさん
2014/12/15(月) 17:40:49.57ID:kTAaEB1yご指摘ありがとうございます。
私の用途の範疇では件の方法で大丈夫でしたが、注意しておきたいと思います。
0014デフォルトの名無しさん
2014/12/16(火) 09:04:06.25ID:lqhDdyeKイリーガル=非合法。
イレギュラーの間違いでは?
0015デフォルトの名無しさん
2014/12/16(火) 12:49:34.17ID:vHDhcsvC視点によっては間違ってない
0016デフォルトの名無しさん
2014/12/16(火) 12:54:30.91ID:e7BH2hjc0017デフォルトの名無しさん
2014/12/16(火) 20:26:18.61ID:/G1f9edX例えばbase64やRFC〜とか
0018デフォルトの名無しさん
2014/12/16(火) 23:02:53.13ID:e7BH2hjc0019デフォルトの名無しさん
2014/12/17(水) 21:30:01.70ID:BeU/9l9q0020デフォルトの名無しさん
2014/12/17(水) 21:34:53.72ID:lhoaDEbVRuby 2.2 が(多分)でる
0021デフォルトの名無しさん
2014/12/18(木) 09:57:24.52ID:wFynChwC年齢確認がある場合、年齢確認と確認後のurlが同一なためopen-uriで開いても年齢確認ページのソースを取得してしまい困っています
回避する方法はあるのでしょうか?
0022デフォルトの名無しさん
2014/12/18(木) 19:25:53.72ID:lnYTNFCYの0x1234567って何を意味しているんですか?
object_idとも思いましたが違うようです
0023デフォルトの名無しさん
2014/12/18(木) 20:03:07.94ID:siOJVJ1kなぜその値なのかは知らん
0024デフォルトの名無しさん
2014/12/18(木) 21:07:14.04ID:48UW7eHVでいうところのVALUE
0025デフォルトの名無しさん
2014/12/18(木) 21:24:27.11ID:nUQSuv6d0026デフォルトの名無しさん
2014/12/18(木) 21:57:20.80ID:wCefEqGMクッキーだろ
0027デフォルトの名無しさん
2014/12/19(金) 23:48:25.45ID:Ak6+g1yPのスムーススクロールの機能って邪魔なだけじゃない?
あれで移動すると戻るボタンが機能しないからメソッド一覧からいろいろ飛んで戻ってってすごいやりにくい
手元ではchm再コンパイルして機能削除したやつ作ったけど
0028デフォルトの名無しさん
2014/12/20(土) 07:16:59.37ID:dWuhsWfVもしURLの最後に、クエリ情報をつけ足して、
認証前後のURLを変えると、
いつも認証せずに認証後のページに、アクセスできてしまう
ttp://〜?キー1=値1&キー2=値2&〜
それを避けるため、毎回認証させるように、
例えばPHPなら、PEAR::Authというライブラリで、フォーム認証する
ただし、同一セッション間では、再認証がいらないように、
クッキーとか、フォームの隠しフィールドに、
値を入れているのだろう
0029デフォルトの名無しさん
2014/12/20(土) 16:40:35.14ID:lEZ+5INX0030デフォルトの名無しさん
2014/12/20(土) 19:55:34.17ID:KBX+SOS/0031デフォルトの名無しさん
2014/12/20(土) 23:49:49.62ID:B5CT9989ありがとうございます、解決できました
0032デフォルトの名無しさん
2014/12/21(日) 17:53:16.95ID:HnwskcxIgem install nokogiri が失敗します
OSはwindows8.1でRubyは2.0.0p481です
エラーメッセージは以下の通りです
ERROR: Could not find a valid gem 'nokogiri' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - SSL_connect retur
ned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (
https://rubygems.org/latest_specs.4.8.gz)
原因または解決方法が分かる方がいたら教えてください
0033デフォルトの名無しさん
2014/12/21(日) 21:26:50.73ID:XFFvzADQhttp://qiita.com/shimoju/items/394818b4989b94680aaf
0034デフォルトの名無しさん
2014/12/21(日) 23:24:06.42ID:OZE/nfT+file.write 0
}
上の
バイナリモードの書き込み(wb)とそうじゃないの(w)
でhoge.txtを出力したんすが、まったく同じでした。
結局バイナリモードってなんですが?
いろいろ見たけどよくわかりませんでした。
0035デフォルトの名無しさん
2014/12/21(日) 23:53:39.57ID:NfmN1WugWindowsじゃなきゃ関係ないよ
0036デフォルトの名無しさん
2014/12/21(日) 23:55:59.18ID:NfmN1Wug0037デフォルトの名無しさん
2014/12/21(日) 23:57:45.70ID:HnwskcxIおかげさまでSSL通信のエラーは解決しました。ありがとうございます。
ただNokogiriのインストールに関してはその後も山ほどエラーが出たので
最終的にはビルド済みのバイナリーファイルをダウンロードしてそのままインストールしました
0038デフォルトの名無しさん
2014/12/22(月) 21:46:18.28ID:QU4NlpEKxmlファイルは、アプリケーションと同じファイルフォルダにあります。
doc = REXML::Document.new("a.xml")
次の方法だと、エラーになります。
doc = REXML::Document.new(File.new("a.xml"))
rexml.rb:4:in `initialize': No such file or directory @ rb_sysopen - a.xml(Errno::ENOENT)
from rexml.rb:4:in `new'
from rexml.rb:4:in `<main>'
0039デフォルトの名無しさん
2014/12/22(月) 22:06:46.38ID:+y3wtk/E実行時のカレントディレクトリにあることを確認すべし
0040デフォルトの名無しさん
2014/12/22(月) 22:07:56.12ID:wGmzBE1B再現するための最小のスクリプトください
0041デフォルトの名無しさん
2014/12/22(月) 22:28:16.24ID:DFOZol/g若しくはa.xmlがあるディレクトリに移動
0042デフォルトの名無しさん
2014/12/23(火) 06:15:39.85ID:Wq4N9ufpこんな感じです。
require 'rexml/document'
doc = REXML::Document.new(File.new("a.xml"))
ZZZ = Struct.new(:aaa, :bbb, :ccc)
zzzs = REXML::XPath.match(doc,"/yyy/zzz").map do |zzz|
aaa_element = zzz.elements["AAA"]
aaa = aaa_element ? aaa_element.text : nil
bbb_element = zzz.elements["BBB"]
bbb = bbb_element ? bbb_element.text : nil
ccc_element = zzz.elements["CCC"]
ccc = ccc_element ? ccc_element.text : nil
end
いくつかのサイトを参考にしてみたのですが、うまくいきませんでした。
http://docs.ruby-lang.org/ja/2.1.0/library/rexml=2fdocument.html
http://d.hatena.ne.jp/aoi_273/20090311/1236764850
http://k-shogo.github.io/article/2013/09/03/ruby-xml/
0043デフォルトの名無しさん
2014/12/23(火) 06:41:07.77ID:Wq4N9ufp「カレントディレクトリ」を「Ruby interpreter」が置いてあるフォルダのことだと勘違いしていました。
書いたプログラムのあるフォルダに移動したら動きました。
初心者過ぎてすみません。
0044デフォルトの名無しさん
2014/12/24(水) 10:44:21.44ID:cuUtxhMJeval('v')のようにする以外に何か方法はあるでしょうか?
0045デフォルトの名無しさん
2014/12/24(水) 13:40:07.76ID:kEZAS2wh0046デフォルトの名無しさん
2014/12/24(水) 14:23:58.90ID:cuUtxhMJありがとうございます!
0047デフォルトの名無しさん
2014/12/24(水) 14:46:08.90ID:ioNhDOivもし無ければ、要素をソートしてから比べるけど
集合(set)では、同じ要素を持てないため、
同じ要素を持てるもので
[1,2,2] == [2,1,2]
[1,2,2] != [1,2,2,3]
0048デフォルトの名無しさん
2014/12/24(水) 18:32:20.60ID:4+blJEbJ0049デフォルトの名無しさん
2014/12/24(水) 19:24:33.39ID:kde12yWRそれならO(n)だからソートより速いでしょ
0050デフォルトの名無しさん
2014/12/24(水) 22:01:27.51ID:kEZAS2wh0051デフォルトの名無しさん
2014/12/24(水) 22:50:49.52ID:kde12yWR際限なく依存関係が増えて無茶苦茶になる
0052デフォルトの名無しさん
2014/12/24(水) 22:54:40.10ID:ZFXquuAL005347
2014/12/25(木) 18:03:50.49ID:GZxGVqtyH.Hiro は日本人?日本語の説明はどこ?
[1,2,2] == [2,1,2]
簡単にこういう感じで、比較できない?
005447
2014/12/25(木) 18:20:34.69ID:GZxGVqtyttp://maraigue.hhiro.net/multiset/
Multisetの逆引きリファレンス
ttp://maraigue.hhiro.net/multiset/reverseref.ja.html#s26
ここに日本語の説明があった
== で比較できる
0055デフォルトの名無しさん
2014/12/25(木) 20:25:03.94ID:30SwzOSe何かいい単純な書き方がありますでしょうか?
今のところ以下のように、
何かを出してから足し合わせたりと1段間に処理を挟むような考え方でしか出せていません
a=[1,2,3]
n=a.size
p (0..n).flat_map{|i|a.combination(i).to_a}
#=> [[], [1], [2], [3], [1, 2], [1, 3], [2, 3], [1, 2, 3]]
p (0..2**n-1).map{|i|a.select.with_index{|j,k|2**k&i>0}}
#=> [[], [1], [2], [1, 2], [3], [1, 3], [2, 3], [1, 2, 3]]
0056デフォルトの名無しさん
2014/12/25(木) 22:09:01.66ID:lIYOW+qdサンプルコード見るとうまく切り出してあるのですが、ブラウザでソースを表示させても全然わかりません。
0057デフォルトの名無しさん
2014/12/25(木) 22:35:42.38ID:EJcNEjL/0058デフォルトの名無しさん
2014/12/25(木) 22:40:28.35ID:dAMLPR9kidが付いてる近くの要素からXPathで相対指定
0059デフォルトの名無しさん
2014/12/25(木) 22:41:03.06ID:/SHsWe6V0060デフォルトの名無しさん
2014/12/25(木) 23:37:56.28ID:6x6Injm4powersetで調べてみたが、多分無い
a.inject([[]]){|i, j|i+i.map{|k|k+[j]}}
0061デフォルトの名無しさん
2014/12/26(金) 07:02:56.94ID:abtjB2iMありがとうございます。
nokogiriを使っています。
XPathについて調べてみます。
0062デフォルトの名無しさん
2014/12/26(金) 07:08:18.74ID:exs6NRdchttps://getfirebug.com/html
他のブラウザも似たような機能があるはず
Rubyに直接関係ないから他に投げたほうがよかったかも
0063デフォルトの名無しさん
2014/12/26(金) 07:21:16.94ID:uiZ6TSzq<tag id="~">
<tag class="~">
idはそのページの中の、ある部分をピンポイントに指定するためにつけられるので、
ある特定部分だけ切り出すときにはidが目印に使える。
classはそのページの中で繰り返しあらわれる部分をまとめて指定するためにつけられるので、
繰り返しあらわれる部分をすべて抜き出すときにclassが使える。
ただしすべてのサイトがidやclassを使っているとは限らないので、
そういうときはソースにつけられたコメント部分を目印にしたり、
本文部分の特徴的な言葉や、本文の言葉とタグの組み合わせを目印に抜き出したりもする。
以上は正規表現等を使って自分で切り出す場合の基本的な考え方です。
要はプログラムが判断できる特徴的なパターンを見つけられるか、
また繰り返し使う場合はそれに加えて変化のないパターンを見つけられるか、です。
006456=61
2014/12/26(金) 08:13:14.79ID:abtjB2iMおぉ、見やすいです。
ソースを表示させる方法がわからなくて、Chrome入れて使っていたところです。
>Rubyに直接関係ないから他に投げたほうがよかったかも
すいません。
「プログラミング」と「Webプログラミング」の区別もついていないので。。。
>>63
ありがとうございます。
やっぱり人力なんですね。
まずはニュースサイトで試してみます。
0065デフォルトの名無しさん
2014/12/26(金) 09:58:24.25ID:exs6NRdcソースを整形して表示してくれるだけのものじゃない
画面上のオブジェクトがHTMLのどの要素に該当するかとか
その要素へのXPathやCSSセレクタも調べられる
わけわかんなければ最低でもHTMLとCSSはやったほうがいいよ
0066デフォルトの名無しさん
2014/12/26(金) 10:20:05.28ID:4oEvTEY8xpath とかcss による選択はあれを地道にやるのが一番早道と思う。
http://www.nokogiri.org/
正規表現でやるのは、この場合、苦しい・・・
0067デフォルトの名無しさん
2014/12/26(金) 13:52:30.12ID:5vBQJBUkありがとうございます
これ元が集合なら冪集合(powerset)っていうんですね勉強になりました
提案のコードも2**nになってるのが分かりやすそうなので参考にさせていただきます
0068デフォルトの名無しさん
2014/12/26(金) 13:56:53.41ID:+ZEo3HL0bundler (1.7.9, 1.7.2, 1.6.1)
みたいに複数のバージョンが表示されたんですけどなぜですか?
最新のバージョンのみあればいいんですけどどうしたらいいんですか?
0069デフォルトの名無しさん
2014/12/26(金) 14:40:55.61ID:abtjB2iM1個だけですが、Yahoo!のニュースの記事を読むことができました。
>>65
なんか、firebugの凄さがわかってきた気がします。
メイン画面のカーソルとリンクしているから目印も見つけやすいんですね。
あと、HTMLとCSSは、codecademyで一通りやってみました。
>>66
チュートリアルの英語は簡単そうですが、プログラミングの素養がないと読むのが難しそうです。
0070デフォルトの名無しさん
2014/12/26(金) 21:14:00.65ID:5tJd12mYgem uninstall でバージョン指定して消せばいい
0071デフォルトの名無しさん
2014/12/26(金) 23:48:23.09ID:5vBQJBUk0072デフォルトの名無しさん
2014/12/27(土) 14:44:36.68ID:bemsRSfWstr.gsub(/\d/){|i|
???? if i == '7'
i*2
}
0073デフォルトの名無しさん
2014/12/27(土) 14:52:07.92ID:bemsRSfWブロックの処理を途中で終わらせてしまうことってできないでしょうか?
下の例で、 next if i > '6' などとせずに、なおかつ i == '7' の時にブロックの処理を終了させて
str == "024681012" となるようにしたいんです。
breakに何か良い引数を与えられればできそうなんですが……。
str = "0123456789"
str.gsub!(/\d/){|i|
???? if i == '7'
i*2
}
0074デフォルトの名無しさん
2014/12/27(土) 15:00:31.01ID:bemsRSfW>>73の i*2 は i.to_i*2 でしたorz
0075デフォルトの名無しさん
2014/12/27(土) 15:12:46.01ID:/8XYRH5a>>71
gem cleanupしても消えてないgem
bigdecimal (1.2.5, 1.2.4)
minitest (5.5.0, 4.7.5)
rake (10.4.2, 10.1.0)
rdoc (4.2.0, 4.1.0)
test-unit (3.0.8, 2.1.1.0)
これらはバージョンを指定して消したら消せますけど、cleanupで消えなかったのには重要なものであり消さないほうがいいから消えてないのでしょうか?
0076デフォルトの名無しさん
2014/12/27(土) 15:49:18.59ID:tc//XukKsubやgsubのブロックは正規表現の闇をなんとかするために仕方なく導入されたので、
いわゆる繰り返しブロックとは使われ方が違う
そしてその使われ方をきちんと勉強すればどうすればいいのかわかるはず
irb> str = "0123456789"
irb> p str.gsub(/\d/){|s| i=s.to_i; if i < 7 then (i*2).to_s else '' end}
"024681012"
0077デフォルトの名無しさん
2014/12/27(土) 16:43:56.59ID:Ot9S3ylYそいつらは Ruby をインストールしたときにデフォルトで入ってる gem だな
0078デフォルトの名無しさん
2014/12/27(土) 20:00:20.18ID:LBkOC5Taこれじゃあかんか?
"0123456789".scan(/\G[^7]/){|s|p s.to_i*2}
or
"0123456789".scan(/\G[^7]/).map{|s|s.to_i*2}.join
0079デフォルトの名無しさん
2014/12/28(日) 12:15:55.82ID:8XwUHTCvありがとうございます!
\Gなんてメタ文字知りませんでした。
これでうまくできそうです。
0080デフォルトの名無しさん
2014/12/28(日) 19:00:20.64ID:EhJlAFnh0081デフォルトの名無しさん
2014/12/28(日) 19:08:58.77ID:0BcgJOIK1.8.7になっちゃいますが、ここにありますよ
http://docs.ruby-lang.org/ja/1.8.7/doc/spec=2fregexp.html#regexp
あとこことかも
http://magazine.rubyist.net/?0020-BundledLibraries
0082デフォルトの名無しさん
2014/12/28(日) 19:17:55.56ID:EhJlAFnhるびまの記事ですか。
読み応えあるんですが、目次の列挙や概説だけだと必要な検索が出来ず必要な記事が得られないんで、結局チェックしてないし購読もしてなかったです。
0083デフォルトの名無しさん
2014/12/29(月) 10:21:21.48ID:ewjsxoFuどこが間違っているのでしょうか?
require 'open-uri'
require 'nokogiri'
require 'sqlite3'
db = SQLite3::Database.new('books.db')
db.execute('DROP TABLE amazon')
db.execute('CREATE TABLE IF NOT EXISTS amazon (title varchar(200), auther varchar(100));')
url = "http://www.amazon.co.jp/(ランキング)"
user_agent = 'Chrome'
charset = nil
html = open(url, "User-Agent" => user_agent) do |f|
charset = f.charset
f.read
end
doc = Nokogiri::HTML.parse(html, nil, charset)
doc.xpath("/html/body/div[1]/div[2]/div[4]/div[2]/div/div[2]/div/ul/li/div/div/div/div[2]/div[1]").each do |title|
puts title.xpath("a/h2").text
puts title.xpath("div/span[2]").text
db.execute 'INSERT INTO amazon values ( ?, ? );', ["#{title.xpath("a/h2").text}", "#{title.xpath("div/span[2]").text}"]
end
Webスクレイピングを用いたデータ検索クローラ構築入門
(アドレスが長すぎるため省略)
0084デフォルトの名無しさん
2014/12/29(月) 10:34:41.21ID:QBEoZzS/0085デフォルトの名無しさん
2014/12/29(月) 11:02:05.88ID:ewjsxoFuすみません。長すぎてエラーになったので削りました。
アマゾン、キンドル、無料、洋書、英語のランキングです。
「Amazon.co.jp: 無料本: Kindleストア」で検索
→「 Kindle洋書 (22,870) 」
→「Language (言語):英語(English)」のリストです。
0086デフォルトの名無しさん
2014/12/29(月) 12:08:46.32ID:oVO4sOnAサンプルが最小サンプルでないので、クラクラしそう。
とりあえず、db部分コメントアウトしてして、
処理を puts title.xpath("a/h2").text の部分だけ残して
それだけうまく動作するかまずやってみては?
0087デフォルトの名無しさん
2014/12/29(月) 12:15:01.97ID:tirsBVZi>/html/body/div[1]/div[2]/div[4]/div[2]/div/div[2]/div/ul/li/div/div/div/div[2]/div[1]
さすがにこれはHTMLのデザインの詳細に依存しすぎだろ
ブラウザのデバッガ使ったのかもしれないけど、
勉強せずに目的を達成したいだけならkimonoでも使えば?
0088デフォルトの名無しさん
2014/12/29(月) 12:21:17.37ID:QBEoZzS/1. open-uriでHTMLを取得してテスト
2. nokogiriで目的の情報を抽出してテスト
3. 1と2が正しく書けたらデータベースに保存してテスト
と分けてやらないとどこがまずいのかわからない
というわけで2だけ書くと
require 'nokogiri'
doc = Nokogiri::HTML.parse(open(ARGV[0]))
doc.css("li[id^=result]").each_with_index do |li, rank|
rank += 1
title = li.at_css("a[title]")["title"]
author = li.at_css("div[class*=a-spacing-none]").text
puts "rank: #{rank}"
puts "title: #{title}"
puts "author: #{author}"
puts
end
----
$ ruby amazon.rb tmp.html
rank: 1
title: Salads To Go (English Edition)
author: Arnel Ricafranca、 Jesse Vince-Cruz
...
rank: 16
title: Oliver Twist
author: Charles Dickens
0089デフォルトの名無しさん
2014/12/29(月) 14:52:52.86ID:ewjsxoFuありがとうございます。
86さんのアドバイスに従ってコメントアウトしてみると、データの取得ができていませんでした。
88さんのcssに代えたら全部取得出来ました。
87さんの仰るとおり、自分でも長すぎるなぁとは思っていたので、これからkimonoを試してみます。
0090デフォルトの名無しさん
2014/12/30(火) 01:59:12.31ID:RRcZT/Fu作ったフォルダーにファイルを移動するスクリプトを作りたいです
フォルダーを作るまではできたのですが、
File.move(file, $1)
の部分が動きません
アドバイスいただけないでしょか? お願いします
Windows7
ruby 2.0.0p481 (2014-05-08) [i386-mingw32]
my_dir = "D:/Desktop/tmp/"
Dir.chdir(my_dir)
Dir.foreach('.') do |file|
if File.file?(file)
file =~ /\[(.*?)\]/
unless $1.nil?
unless Dir.exist?($1)
Dir.mkdir($1)
end
File.move(file, $1)
end
end
end
0091デフォルトの名無しさん
2014/12/30(火) 02:19:33.25ID:+3NH/drrエラー貼らなきゃ
File.moveじゃなくてrequire 'fileutils'してからFileUtils.mv
0092デフォルトの名無しさん
2014/12/30(火) 10:56:45.60ID:eF/E6diu少し調べたところでは、
Ruby/Tk
・日本語の解説が充実
・Tcl/Tk8.6の対応パッチが2.1.3までしかない
Shoes
・なんかかっこいい
・日本語の解説が少ない
wxRuby
・難しそう
0093デフォルトの名無しさん
2014/12/30(火) 11:19:36.39ID:dxBK7ujRPython
RubyでGUI作るならサーバー立ててWebベース一択
0094デフォルトの名無しさん
2014/12/30(火) 16:41:39.40ID:RRcZT/Fuエラーコードがなかったですね、すいません
教えていただいた修正でうまく動きました
ありがとうございました!
0095デフォルトの名無しさん
2014/12/30(火) 17:39:46.79ID:k+HJ9cRIRubyでGUIという時点で初心者向きではない
PythonもGILがあるのでちょっと複雑化すると詰まる
実はPerlが一番素直なのかもしれない
0096デフォルトの名無しさん
2014/12/30(火) 18:20:21.32ID:UE3DpMfRruby付属のwebrick サーバーでcgi がいいかも。ホントは
Sinatra がよさげなんだけど、いいガイドとなる文書がなさげ。
オライリージャパンにepub の本が売ってるようだが、内容は知らない。
rails は重量級すぎるという前に、規約ならなんやらでものすごく難しい。
0097デフォルトの名無しさん
2014/12/30(火) 18:41:27.01ID:+3NH/drrオライリーから出てる本の内容はそのチュートリアルがベースで
下層のRaccの説明とブログツールの作成が加筆されてる
0098デフォルトの名無しさん
2014/12/30(火) 19:12:08.34ID:UE3DpMfRああ、そうなんだ。勉強になった。
rails もう挫折したので(覚えることあまりに多すぎ)、Sinatra に挑戦しよう。
0099デフォルトの名無しさん
2014/12/30(火) 19:20:52.56ID:lUNz8ksh作られただけあってRubyらしくない。
どうがんばってもC++の機械翻訳みたいなコードになっちまう。
もっとRubyらしい黒魔術的なGUIライブラリの登場を期待しちまうぜ。
0100デフォルトの名無しさん
2014/12/30(火) 19:43:36.78ID:FhLkhhfT悲しいけれどこれが現実
GUIはやらなければならないことや背負わなければならないことがあまりに多い
GUIを捨てたからこそPerlやPythonやRubyは今のかたちになり得た
0101デフォルトの名無しさん
2014/12/30(火) 19:55:13.04ID:+3NH/drr0102デフォルトの名無しさん
2014/12/30(火) 19:55:21.23ID:UE3DpMfRjava のデスクトップだって半ば以上、死んでますがなwww
swingは死亡だし、javaFXなんぞどこかで使われてる?
cgi (やSinatra)は付属のwebrick 使う限りruby で完結できるし、
簡易のデスクトップGUI になると思うよ。
0103デフォルトの名無しさん
2014/12/30(火) 21:27:55.01ID:dxBK7ujRそして苦労して作り上げてもあの品質…
Javaのawtやswingの設計が変なだけで、GUIってシングルスレッドでも十分だから
スクリプト言語だからダメってわけじゃない
GUIはどうせRAD必須だから言語の手軽さより静的解析の容易さの方が重要なのと
サーバーと違ってさくっとコード差し替えたいという要件もないから使われないだけ
0104デフォルトの名無しさん
2014/12/31(水) 13:04:25.59ID:6ri8I8c2アドバイス有難うございました。
とりあえずPython2をやってみようと思います。
0105デフォルトの名無しさん
2015/01/01(木) 04:15:45.81ID:i/B8D+Dj0106デフォルトの名無しさん
2015/01/02(金) 13:12:07.71ID:0wQ6/mod0107デフォルトの名無しさん
2015/01/02(金) 14:01:10.86ID:UoXQYS7HWinなら無理にスクリプト使うよりVC#でも使ったほうが遥かに楽
0108デフォルトの名無しさん
2015/01/02(金) 14:22:53.44ID:yFH6oi7y初めて知ったときなんて素晴らしいものがあるんだろうと思った
0109デフォルトの名無しさん
2015/01/02(金) 15:37:29.99ID:wtvUITab0110デフォルトの名無しさん
2015/01/03(土) 08:29:43.66ID:+Bjd+Viohttp://www.softantenna.com/wp/unknown/ruby-spec-end/
>RubySpecの開発者Brian Shirai氏はブログ記事「Matz’s Ruby Developers Don’t Use
> RubySpec and It’s Hurting Ruby」にてプロジェクトが終了する理由を説明。2014年12月25日に
>リリースされたRuby 2.2.0がRubySpecのテストをパスせず、そればかりか深刻なエラーである
>セグメンテーションフォールトで異常終了すると指摘し、これはMRI (いわゆる本家Ruby)の
>開発者がRubySpecを使ってテストすれば容易に避けられることだとしています。
0111名前は開発中のものです。
2015/01/03(土) 12:19:48.94ID:ABCE5tDXいまだにまともに使えるデバッガが見つからない・・・
まぁ趣味で使ってるだけだからprintデバッグでもいいんだけどさ・・・
0112デフォルトの名無しさん
2015/01/03(土) 12:29:19.76ID:ZfusUSn5それで手におえなきゃ pp
0113デフォルトの名無しさん
2015/01/03(土) 12:54:00.29ID:ZfusUSn5sample.rbがあったとして
jruby -r debug sample.rb
でデバッガ立ち上がるよ。頭のj とって
ruby -r debug sample.rb
でデバッガ立ち上がらない?
$ ruby -r debug sample.rb
...
(rdb:1)
のところでhelp でhelp 出るが。
しかし、デバッガいる? めんどいだけだよ。
0114デフォルトの名無しさん
2015/01/03(土) 13:16:22.01ID:hr4W0lJF俺は minitest/unit しか使わないけど、プロの人たちが使うテスト環境
が進化している印象があるよ。
0115デフォルトの名無しさん
2015/01/03(土) 14:09:49.31ID:ZfusUSn5スタブとかモックの仕様をコロコロ変えやがって、
頭にこない?
結局、alias_method とかでメソッド名一時的に付け替えたりしてから、
元の名で中身再定義してテスト、
そのあとメソッド名戻し、とかやったりしてみるけど、
なんなんだよって感じ。
rspec とかも、特定の外国語書かせちゃダメだろっての。
日本語でrspec 書くとかいう話になったら、もう狂ってるとしか。
結局、minitest/unit が言葉に異存してなくて一番いいかなって思うのに、
スタブとかモックとか、ころころ意味もなくどんどんやり方変えて、
いまはもう、メソッド名付け替えでやるヒドイやり方しか分からん。
なんでこんなに意味なく仕様を変えるのか。ぜんぜん分からん。
0116デフォルトの名無しさん
2015/01/03(土) 14:23:23.94ID:RGN7nsRn0117デフォルトの名無しさん
2015/01/04(日) 12:03:20.47ID:+rZjO+Yw0118デフォルトの名無しさん
2015/01/04(日) 12:04:00.19ID:4AdveR220119デフォルトの名無しさん
2015/01/04(日) 12:18:18.48ID:+rZjO+Ywnurseがbrixen許さないとか言ってるから何かと思った
結果として軋轢が減ってハッピーだね
0120デフォルトの名無しさん
2015/01/04(日) 14:51:18.14ID:uzz8isay0121デフォルトの名無しさん
2015/01/04(日) 15:00:07.40ID:IRouHCH+0122デフォルトの名無しさん
2015/01/04(日) 15:23:09.29ID:rT0F3HRmお勧め参考書教えてください、って、一言で言われてもナア。
0123デフォルトの名無しさん
2015/01/04(日) 15:49:05.21ID:+rZjO+Yw0124デフォルトの名無しさん
2015/01/04(日) 16:15:39.47ID:gY/dfetX「たのしいRuby」
0125デフォルトの名無しさん
2015/01/04(日) 18:13:58.34ID:uzz8isay0126デフォルトの名無しさん
2015/01/04(日) 20:21:08.34ID:mDqV+MlIRubyが予告無しの仕様可変更とかセグフォ出してるんで、Rubyspecですら分かるレベルのテストをやってないMRIに愛想が尽きたようだ。
俺も今でもRubyは好きだが、最近は仕事ではPythonを勧めてる。
0127デフォルトの名無しさん
2015/01/04(日) 20:39:42.07ID:2n2BUP4oしまくってくれるもんで、MRI実装者としてもRubySpecスルーは苦渋だが仕方ない決断
だったんだが。
0128デフォルトの名無しさん
2015/01/04(日) 20:45:01.08ID:x+sstHNqそれは言い訳でしょて。Java でその言い訳は通らないよ。
意図しようが意図しなかろうが、
明確に宣言した変更部分以外に動作の変更があってはならない。
当たり前の話だ。
0129デフォルトの名無しさん
2015/01/04(日) 20:53:34.12ID:+rZjO+Yw他所は他所だ
お前はOracleさんちの子じゃないんだよ
0130デフォルトの名無しさん
2015/01/04(日) 20:59:05.28ID:x+sstHNq実装次第で動作はどう変わるか分かりませんで、
世間が納得すると思ってるのか?
Ruby を採用した宇宙ロケットはどこへ向かうんだ?
実装に聞いてくれなのか???
0131デフォルトの名無しさん
2015/01/04(日) 21:01:42.60ID:+rZjO+Yw君はライセンス読んでるの?
嫌ならPythonにでも行けばいいじゃないか
0132デフォルトの名無しさん
2015/01/04(日) 21:02:52.49ID:+rZjO+Yw用途も分からない馬鹿の責任まで言語が負うんですか?
すげぇ社会だな
もはや誰も言語なんか作らんよ
0133デフォルトの名無しさん
2015/01/04(日) 21:03:28.14ID:2n2BUP4oRubySpecがもしまともなものだったら標準の意味なんて無かっただろうが、
現実ではそうではなかった、というのがRubySpecの現実。
0134デフォルトの名無しさん
2015/01/04(日) 21:03:51.15ID:x+sstHNqお前、Python使いだろ!
俺はJava 以外は信用せん。話にならん。
0135デフォルトの名無しさん
2015/01/04(日) 21:05:01.27ID:+rZjO+YwOracleとやMSと契約してサポート付きのJavaか.NET使ってろってことだ
0136デフォルトの名無しさん
2015/01/04(日) 21:07:14.65ID:d+7FYTBT0137デフォルトの名無しさん
2015/01/04(日) 21:09:45.87ID:HG6rCP3A0138デフォルトの名無しさん
2015/01/04(日) 21:21:18.51ID:x+sstHNqそういう言い訳自体が情けなさすぎる。
プラットフォーム自体がJvm という単一環境のJava は特殊かもしれないが、
Java でそんな言い訳したら、フルボッコ間違いなしだ。
そもそも、実装次第で動作がどう変わるか分かりませんって、
具体的にはどういう事例なんだ。それにしても情けない。
どうしても動作が変わるんなら、
動作を変更しますと明確に宣言すればいい話なのに。
0139デフォルトの名無しさん
2015/01/04(日) 21:38:12.71ID:x+sstHNqJava ならば互換性テストに通過しない限り、絶対にOKとはならない。
しかし、それがRuby ならば、
互換性テストで不合格となっても、「まあ、実装次第なので、テヘヘ」で
通ったことになってしまうということ。
要するに、互換性テストはなんの意味があるのか全然分からんという話。
それはそんな互換性テストがあるんだと、いま初めて知った。
Java の奴らに聞いてみろ。ひっくり返るだろうよ。
0140デフォルトの名無しさん
2015/01/04(日) 21:41:35.75ID:x+sstHNqPhthon はもっとマシな状態なのか? それとも、テヘヘですんじまうのか?
0141デフォルトの名無しさん
2015/01/04(日) 21:43:08.53ID:x+sstHNqプログラミングというものに対する作法とかマナーの問題。
世間をなめてる状態。
0142デフォルトの名無しさん
2015/01/04(日) 22:01:32.01ID:2n2BUP4o貴様こそ、世のプロダクトは全て手前の要求を満たすべきとか、
世の中なめすぎてる。
0143デフォルトの名無しさん
2015/01/04(日) 22:02:36.75ID:x+sstHNq作るなよ。
不合格で通す互換性テストの存在意味ってなによ!
0144デフォルトの名無しさん
2015/01/04(日) 22:03:23.27ID:7tz5JoXD0145デフォルトの名無しさん
2015/01/04(日) 22:07:17.85ID:2n2BUP4o0146デフォルトの名無しさん
2015/01/04(日) 22:17:29.21ID:NNsAVH+s当たり前だとおもうけど。
0147デフォルトの名無しさん
2015/01/04(日) 22:17:31.27ID:F3GLovba×)実装に依存した本来いつどう変わってもおかしくない振舞いをRubySpecがチェックしまくってた
○)MRI開発者が思いつきで仕様変更するのを片っ端からRubySpecがチェックするから都合が悪かった
0148デフォルトの名無しさん
2015/01/04(日) 22:17:58.92ID:x+sstHNq仕様の変更を宣言したもの以外は、仕様を変えちゃいけない。
それは出来ないという。
Java の世界でそれは出来ませんと言ったら、クビだろうな。
0149デフォルトの名無しさん
2015/01/04(日) 22:40:03.64ID:x+sstHNqお前の作ったプログラムは、
気まぐれに毎回違う答えをだすんだろう。
Ruby2.0で計算した結果は、Ruby2.1では違う値をだすかもしれん
ということだぞ。
仕様の変更を宣言したわけでもないのに。
どうなるかは、その時の気まぐれと言われているのだ。
ええかげんにせいと言っているところだ。
0150デフォルトの名無しさん
2015/01/04(日) 22:58:38.12ID:ZfOt7GlQ無理して追っかけなくても良いのでは。
俺んとこはまだ1.9.3だが不満なく使えておる。
ここで騒がれてることは1年後に来る変更の予告ぐらいに思っとるわ。
0151デフォルトの名無しさん
2015/01/04(日) 23:01:42.40ID:x+sstHNq同じようなものと考えていた。
が、その常識はまったく通じないと知った。
Javaプログラマならひっくり返る事態なんだが、それがRubyの普通らしいwww
0152デフォルトの名無しさん
2015/01/05(月) 00:21:15.47ID:Y6BCcXgq10年遅れの言語と一緒にするな
0153デフォルトの名無しさん
2015/01/05(月) 00:26:12.09ID:Y6BCcXgqそれで都合が悪いなら屁こいて寝てろって言われてんだろ
便秘か?多い日か?
0154デフォルトの名無しさん
2015/01/05(月) 01:09:57.84ID:UWxA88joそれを見て使う使わない決めるのも自由だし
そんな酷い開発体制じゃ使えないと批評するのも自由ですよ
0155デフォルトの名無しさん
2015/01/05(月) 01:35:33.07ID:dcfpz3x0Rubyの開発者でもなんでもない人が作ったただのRubyプログラム。
Specという名前で誤解したんだと思うが、
まさにそう誤解させるためにつけられた名前。
極端に言えば、既成事実的にRubyの仕様を掌握しようとした。
RubySpecが終了したってのは、
ぶっちゃけて言えば乗っ取りを断念したというだけ。
0156デフォルトの名無しさん
2015/01/05(月) 01:36:35.78ID:dcfpz3x0https://gist.github.com/nateberkopec/11dbcf0ee7f2c08450ea
例の日本語記事に「まとめ」としてリンクされてるやつだけど、
実際のところはRubySpec作者への批判ばかり。
0157デフォルトの名無しさん
2015/01/05(月) 02:10:21.80ID:MXjCpp19プログラムに信頼性を求めるものは Rubyは避けろ。
Java が一番。無理なら Pythonでも検討しろ。
それで議論は終了。
0158デフォルトの名無しさん
2015/01/05(月) 02:32:50.08ID:3qqCgoQ1Pythonも実装依存だよ
実数型も64bitが多いとか、はっきりしない
動作するアーキテクチャが20種類ぐらいあって、
組み込み用もあるし、実装は様々
0159デフォルトの名無しさん
2015/01/05(月) 02:59:15.66ID:G38O0HWvこういう勘違い野郎を生み出してしまったんだろうな
当時のリリースメンテナはMRI界でも黒歴史化されてるYuguiさんだけど
(技術力はあるのかもしれないけど、リリースメンテナとしては失格レベルと断言してもいい人だね)
0160デフォルトの名無しさん
2015/01/05(月) 03:24:58.15ID:MXjCpp19アホか。そういう次元の問題じゃないだろ。
Java をやってるヤツに聞け。
仕様変更を宣言していない機能をほいほい変更してて、
問題ないよなと。
仰天して絶句するだろうよ。
俺もJava やってるんでな。悪かったな。
0161デフォルトの名無しさん
2015/01/05(月) 03:25:43.30ID:MXjCpp190162デフォルトの名無しさん
2015/01/05(月) 03:27:40.80ID:G38O0HWv「問題ないよな」って部分のソースは?
RubySpecで見つけられたバグはMRIに報告されれば直されてるし、MRIは仕様変更をどちらかというと
嫌ってる方なんだが
MRIがRubySpecを受け入れなかったのは別の理由でしょ
0163デフォルトの名無しさん
2015/01/05(月) 03:39:59.64ID:MXjCpp19絶対に動作が変更されることはない。
Ruby の世界では、そのような常識は通用しない。
仕様は変更の宣言なくして、そのときの気分で変更される。
それがいまここにハッキリした。
0164デフォルトの名無しさん
2015/01/05(月) 03:41:34.41ID:G38O0HWv> それがいまここにハッキリした。
嘘乙
Rubyでも意図しない仕様変更はバグだよ
バグは報告されれば直される
0165デフォルトの名無しさん
2015/01/05(月) 06:54:11.15ID:LT7ljLaaNokogiriのMacへのインスコで四苦八苦したので
Yorickが作ってるogaってHTML/XMLパーサが楽しみだった(過去形
0166デフォルトの名無しさん
2015/01/05(月) 08:01:15.27ID:FjQWap8Tだから、Javaの世界から出てくんなよチンカス
おまえが存在するだけで世界が一割臭くなるんだよ
0167デフォルトの名無しさん
2015/01/05(月) 09:30:47.32ID:gGkKjc+d使うだけ使っといて、用がなくなったら
「問題が多かった。むしろ邪魔だった」と切り捨てる
クールで素敵
0168デフォルトの名無しさん
2015/01/05(月) 09:52:43.69ID:3J2GSmZ2disりたいだけの何も知らないド素人だというバカを晒すだけだよw
0169デフォルトの名無しさん
2015/01/05(月) 10:44:58.38ID:OM1ot5X0rubyの仕様変更っぷりに文句つけまくったから
「ちゃんと仕様チェックしますよー、しかもCRubyだけじゃなくJRuby等の処理系も含めて横断的にですよー」
ってイメージ戦略に利用されたのがRubySpecを。
ただ実際には使ってなかったんだからイメージだけの詐欺だったんだけどね。
0170デフォルトの名無しさん
2015/01/05(月) 11:08:12.55ID:dcVDuqIP0171デフォルトの名無しさん
2015/01/05(月) 11:19:53.97ID:FjQWap8Tライブラリやフレームワークはそれぞれでテストスイートは用意してるものだし、それでパスすればいいわけ
0172デフォルトの名無しさん
2015/01/05(月) 13:03:12.11ID:MXjCpp19言ってないんだからな。
仕様変更するなら、ちゃんと宣言してから変更してくれ、
と言ってるんだ。
だから、仕様変更するといってない部分は変更されないだろうと
期待する。
しかし、そうではなく、まあ、そのへんはテキトーに。という。
納得いくか。アホやろう!!!
0173デフォルトの名無しさん
2015/01/05(月) 13:08:59.59ID:ngAfv5DN0174デフォルトの名無しさん
2015/01/05(月) 13:13:12.70ID:MXjCpp19俺はJava を使う。偉大なるJava を。
0175デフォルトの名無しさん
2015/01/05(月) 13:31:40.62ID:tY3Eiv8l0176デフォルトの名無しさん
2015/01/05(月) 13:35:34.62ID:G38O0HWv> しかし、そうではなく、まあ、そのへんはテキトーに。という。
嘘つくな
意図されない仕様変更はバグであり、バグは報告すれば修正される
これが事実
0177デフォルトの名無しさん
2015/01/05(月) 14:07:37.89ID:gGkKjc+dつまり1.8と1.9以降のどっちかでしか動かないコード書いてるやつは全員
実装依存の未定義コードかいてるアホって事だね
0178デフォルトの名無しさん
2015/01/05(月) 14:12:57.56ID:X/XHMwkiプログラマはMatzの意図を汲み取り、
なるべくその中でも安定してそうな仕様にのみ依存するように注意してコーディングすることが求められる
いかにも日本人らしい言語だね
0179デフォルトの名無しさん
2015/01/05(月) 14:18:44.32ID:MXjCpp19互換性テストこそが仕様だろうが!
なのに誰も使わないという www
文書の仕様など、後回しでいいから、まとまな互換性テストを作り、
しっかり使え。
Java は天地開闢のころからそうしていたぞ!
0180デフォルトの名無しさん
2015/01/05(月) 14:25:36.92ID:MXjCpp19ならばというので、CRuby の動作を互換性テストで規定すると、
それは実装異存だとか抜かし始める。
どっちなのよ。
C言語のコードで作ったRuby の動作が仕様でないってんだなら、
Java で作りなおせや。ドアホ!
0181デフォルトの名無しさん
2015/01/05(月) 14:38:07.22ID:MXjCpp19バグまで規定されている、とほざいてたはずだが、
そのCのソースの動作は仕様じゃないんだとよ。
未定義なんだそうだ。
とんだお笑いだ。
0182デフォルトの名無しさん
2015/01/05(月) 14:51:07.49ID:E44mn9F+言語のグラグラに振り回されたくないな
0183デフォルトの名無しさん
2015/01/05(月) 14:51:13.91ID:gGkKjc+d日本人開発者が勝手に後方互換性を壊して、
何処で議論したんだよ勝手に変えんなと外国人に責められてる
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/67215
0184デフォルトの名無しさん
2015/01/05(月) 15:41:05.13ID:5EG7YR710185デフォルトの名無しさん
2015/01/05(月) 16:21:07.74ID:3J2GSmZ20186デフォルトの名無しさん
2015/01/05(月) 16:22:09.65ID:MXjCpp19馬鹿はRuby 使ってるお前だろ。
0187デフォルトの名無しさん
2015/01/05(月) 16:49:00.76ID:dcVDuqIP0188デフォルトの名無しさん
2015/01/05(月) 16:51:07.63ID:dcVDuqIP何故か仕事に使いたがる人達が居るけど
0189デフォルトの名無しさん
2015/01/05(月) 17:14:52.44ID:3J2GSmZ2頭悪いんだから、その世界でおとなしくしてればいいのに、他の世界に手を出して、
結局こういうところで暴れてうさ晴らしするしか面白いことがないんだろうな、
という馬鹿さ加減をバカと言ってるんだが?
0190デフォルトの名無しさん
2015/01/05(月) 17:16:20.15ID:MXjCpp19仕様を変えた途端、過去に書いたコードが動かなくなるかもしれない、
て意味なんだぞ。
ネット見てて、スクリプトが置いてあったとする。
それがBash じゃなくて Ruby で書かれてたときのガッカリ感分かるか?
なんでBash なら嬉しくてRuby ならガッカリなのか。
Ruby のコードは動かないことが大半だからだ。
分かるよな?
なんで動かないのか。仕様を変えたからだ。
仕様を変えること自体は、言語の進歩のために必要なことだ。
だから、それに反対するものはいない。
ただ、気まぐれや無意味な変更はやめてくれと言っているのだ。
変更するよ、と宣言してから変えてくれ、というのはそういうことだ。
0191デフォルトの名無しさん
2015/01/05(月) 17:18:11.79ID:MXjCpp19お前のような態度を、天にツバするような態度というのだ。
プログラミング界の巨人 Java に比べたら、Ruby などうたかたのようなものだ。
0192デフォルトの名無しさん
2015/01/05(月) 17:18:22.62ID:RFTM0vSVでは次の方どうぞー
0193デフォルトの名無しさん
2015/01/05(月) 17:28:28.81ID:obl0akM30194デフォルトの名無しさん
2015/01/05(月) 17:29:18.68ID:MXjCpp19事実を書いてるだけだ。
0195デフォルトの名無しさん
2015/01/05(月) 17:30:56.98ID:MXjCpp19これがRails も使ってみろ。
誰かを殺したくなるから。
0196デフォルトの名無しさん
2015/01/05(月) 17:35:16.10ID:WxDkkAlh人を嘘つき呼ばわりしたんだから、
「ゴメンなさい。やっぱりRubyは思い付きで仕様変更するゴミです。嘘つきは僕でした」
って謝らないとダメじゃん
0197デフォルトの名無しさん
2015/01/05(月) 17:35:30.02ID:DnfimQcO死んだ方がいいやつら、ばっかりだな。死ね
0198デフォルトの名無しさん
2015/01/05(月) 17:35:40.53ID:LT7ljLaa後方互換とセキュリティどっちがお好みですか
0199デフォルトの名無しさん
2015/01/05(月) 17:36:26.68ID:FjQWap8T0200デフォルトの名無しさん
2015/01/05(月) 17:37:56.28ID:5EG7YR710201デフォルトの名無しさん
2015/01/05(月) 17:39:26.11ID:ZLlYuDk8ざまあ
さっさと自殺しろよ
0202デフォルトの名無しさん
2015/01/05(月) 17:40:53.83ID:3J2GSmZ2居るけど、そういうのが外に出てくるとこうなるんだろうなw
0203デフォルトの名無しさん
2015/01/05(月) 17:42:44.25ID:h4yXwV7Rだからと言って特に困らんがね
0204デフォルトの名無しさん
2015/01/05(月) 17:50:45.39ID:MXjCpp19モックとかスタブとか、変わったよなぁ。
ここにも書いたろ。
いちいちどうでもいいこと、ころころ変えやがって。
モックやスタブの正しいやり方、いまどうやるんだ?
alias_method でメソッド名付け替えなら分かるけどよ、
くだらことで、ごちゃごちゃ変えやがってよー。
早く教えろよ。
0205デフォルトの名無しさん
2015/01/05(月) 17:54:05.23ID:h4yXwV7R自分で言ってて奇妙な論理だとは思わないか?
0206デフォルトの名無しさん
2015/01/05(月) 17:56:02.92ID:MXjCpp190207デフォルトの名無しさん
2015/01/05(月) 17:58:13.24ID:MXjCpp19スタブやモックだけ、以前のが非互換になったんだな。
で、それからやり方知らないwww
いや、知らんでもいいんだけどさ、メソッド名付け替えでやれるからさ、
それはいいけどさ、
腹たたない? いちいちこんなとこで変えやがってよ。もう、ホントに
0208デフォルトの名無しさん
2015/01/05(月) 18:02:51.61ID:YzHIHF4l0209デフォルトの名無しさん
2015/01/05(月) 18:07:27.99ID:MXjCpp19なに出し惜しみしてるんだ?
まさか、知らないんじゃないだろうな???
知ってんなら、教えろよ
0210デフォルトの名無しさん
2015/01/05(月) 18:17:55.57ID:J4h7NkXrそういうのはこちらでどうぞ。
正直RailsはRubyであってRubyじゃないし、さっさと別言語になればいいと思うの。
【RoR】Ruby on Rails Part19
http://kanae.2ch.net/test/read.cgi/php/1409423461/
0211デフォルトの名無しさん
2015/01/05(月) 18:22:16.28ID:MXjCpp19仕様変更の嵐にうんざりしたが、あれの問題はそれだけじゃない。
大規模サイトに最適化されてるのかしらんが、
そのやり方をほんの小規模のものでも要求されるんだな。
なんていうか、ほんのちょっとしたことさせるのでも、
戦艦ヤマトに駆逐艦の役回りをさせる感じというか。
Sinatra がよさげだな。
0212デフォルトの名無しさん
2015/01/05(月) 21:44:19.99ID:UWxA88jo今は勘違いしたアホ共が好き勝手にぶっ壊して
非互換なんて当たり前と逆ギレする始末
0213デフォルトの名無しさん
2015/01/05(月) 21:53:18.58ID:G38O0HWvはいはい、嘘はもうやめようね
今のRubyでも意図しない非互換はバグだから
0214デフォルトの名無しさん
2015/01/05(月) 22:04:48.23ID:YRAvaX+S0215デフォルトの名無しさん
2015/01/05(月) 22:07:55.36ID:G38O0HWvRubySpecが受け入れらなかったことを根に持ってMRIを中傷しまくるという
まぁ、Brianは嘘まで交えて中傷したりはしないだろうが
0216デフォルトの名無しさん
2015/01/05(月) 22:26:58.96ID:UWxA88jo>>183の件とか、むしろ意図的に(全く合意を得ずに)非互換入れてるから
うっかりミスよりタチが悪いわ
しかし面白いよな。バグレポートしたら「It's a bug fix.」だけでリジェクトされて、
どんなバグだよって突っ込まれたら全然関係ないバグを持ち出すんだぜ
(ちなみに持ち出したバグってのは、Time.strptime が "%s %z" をパースできるのに DateTime はできないって内容)
そのバグ直すのに弄ったのは DateTime のはずなのに、何で Time.strptime のデフォルトの挙動が変わってるんだよww
頭オカシイだろ。そういうのはbugfixじゃなくて仕様変更っていうんだよ
0217デフォルトの名無しさん
2015/01/05(月) 22:29:02.48ID:UWxA88joでも頭オカシイって結論は一緒
合意も得ずに勝手に変えんな
0218デフォルトの名無しさん
2015/01/05(月) 22:29:12.31ID:5EG7YR71意図したかどうか分からないのが困るんだよなあ
0219デフォルトの名無しさん
2015/01/05(月) 22:44:00.06ID:c9ZlVZT1Rubyで時々互換性が壊れることくらい知ってんだろって
メーリングリストに堂々と書いてたなw
0220デフォルトの名無しさん
2015/01/05(月) 22:44:03.08ID:Y6BCcXgqお前はどこかの国王か?
0221デフォルトの名無しさん
2015/01/05(月) 22:50:48.77ID:UWxA88jo見せかけてるけど、アレはただのポーズで
誰の合意も得ずに日本人だけで好き勝手に仕様変更します
これが公式見解なら何の問題もないよ
で、そうなの?
0222デフォルトの名無しさん
2015/01/05(月) 22:52:47.81ID:Y6BCcXgq問題なんて何もありはしない
どこぞのアホが勝手に舞い上がって勝手に墜落しただけである
勝手に土に帰れ
0223デフォルトの名無しさん
2015/01/05(月) 23:03:24.36ID:UWxA88joRubyは一部の特権的日本人だけが思いつきで仕様変更できる言語
これでOKだな?
0224デフォルトの名無しさん
2015/01/05(月) 23:04:23.33ID:Y6BCcXgq合意なんかしてるのは基本コミッター連中だけだ
他は箸にも棒にもかからない外野だ
砂粒とも思ってない
0225デフォルトの名無しさん
2015/01/05(月) 23:06:40.21ID:Y6BCcXgq0226デフォルトの名無しさん
2015/01/05(月) 23:12:47.63ID:oPHJgSMu日本在住の外国人さんですか?
日本語がとてもお上手ですね
0227デフォルトの名無しさん
2015/01/05(月) 23:17:24.71ID:dcVDuqIP「MRIはRuby言語の方言のひとつです」じゃ何か不満なの?
0228デフォルトの名無しさん
2015/01/05(月) 23:21:12.02ID:Y6BCcXgq0229デフォルトの名無しさん
2015/01/05(月) 23:42:35.11ID:Y6BCcXgqサルに管理させておけるか
コンチネンタルなOSSの流儀でビシッとキメてやるよっていうお節介
互換性が壊れると言えば
島根県CMSがRubyのバージョンアップで壊れたら面白いなあって常々思ってる
RoRだから壊れる確率は結構高いんじゃねえかな
0230デフォルトの名無しさん
2015/01/05(月) 23:49:58.55ID:X/XHMwki1年前からRails更新してないんだから
0231デフォルトの名無しさん
2015/01/05(月) 23:53:08.93ID:dcVDuqIP他の環境作ったり、他の環境を互換性準拠っつーて盛り上げればいいのに
キレたら終わっちゃうって分からないんだろか
0232デフォルトの名無しさん
2015/01/05(月) 23:56:59.80ID:X/XHMwkiRailsを説得して互換実装の方に乗り換えてもらえばあっという間だよ
0233デフォルトの名無しさん
2015/01/05(月) 23:57:16.11ID:Y6BCcXgqまあ大元のRubyも1.8だしなあ
あとBrianってアメリカ人だからコンチネンタルは不適切でしたね
アングロアメリカでした
0234デフォルトの名無しさん
2015/01/06(火) 07:19:43.77ID:7Rp7KoRaほとんどの女性が、Rubyを選ぶ
本屋でもパッと女が来て、「たのしいRuby」を買っていく
一方、Pythonの本棚の前に、女は来ない
それに、Pythonのソースコードは、
男性的でゴツゴツしている
{}があまり無いからか、ぶっきら棒に見える
self,__init__()
など内部構造が見えているのも、粗野な感じ
一方、Rubyは洗練されている感じ
男のPython、女のRuby
0235デフォルトの名無しさん
2015/01/06(火) 07:31:55.32ID:p7OGgrn1サイバー案件のアウトソージング要員として刑期終了で出所した後でもサイバー的に通用する女Ruby部隊を作るって感じだったけど。
0236デフォルトの名無しさん
2015/01/06(火) 08:20:53.72ID:1EPJpbNA1.8といえば、もうurabeさんってリリースマネージャやんねーの?
2.3からまた彼がやれば良いのに本人にはメリットないかもしれんけど
0237デフォルトの名無しさん
2015/01/06(火) 08:28:56.77ID:Hei5/B5jselfが見えるのがPython ■ 政治で揉めるのがRuby
教育に広く使われるなのがPython ■ エロサイトスクレイピング指向言語Ruby
PEPがあるのがPython ■ 別府が近いのが島根
0238デフォルトの名無しさん
2015/01/06(火) 10:03:13.08ID:iarVVv2tPython 風で読みやすく感じる。行数は増えるけど。
0239デフォルトの名無しさん
2015/01/06(火) 11:51:32.35ID:Kgstyqvm0240238
2015/01/06(火) 13:18:23.47ID:iarVVv2t関数型っぽく書いてないんです。
0241デフォルトの名無しさん
2015/01/06(火) 13:24:01.30ID:FRUB2kXNそれで良いと思うよ
0242デフォルトの名無しさん
2015/01/06(火) 17:42:05.52ID:juo+bVCyJavaこそメジャーバージョンUPが一番信用出来ない言語じゃねーか。
仕様で固まってる部分だけじゃ性能が微妙過ぎて、
仕様未定義の部分はメジャーバージョンUPの度に挙動変わる確率が高くて
事前に大規模テストしないと安心して更新OK出せないとかアホらしい。
うちはJava1.8対応進めてるけど余所じゃ未だにJava1.6とか1.5でバージョン上げられない
要件だってある現実なのに。
0243デフォルトの名無しさん
2015/01/06(火) 18:16:10.79ID:W2F4pWSuお前のせいで昨日のアレが召喚されちゃったら責任取ってよね
0244デフォルトの名無しさん
2015/01/06(火) 20:19:24.56ID:LdQXg158そりゃJavaでは高い信頼性を持つシステムを作るからだよ
書き捨てスクリプト専用のRubyと一緒にしちゃいかん
0245デフォルトの名無しさん
2015/01/06(火) 23:12:09.52ID:Q7R46vB5お願いだからJカスは引っ込んでろって
0246デフォルトの名無しさん
2015/01/07(水) 00:09:01.98ID:41LSeHIlバージョンあげるやつってシステムの目的見えてないよね
上げることが目的になってる
0247デフォルトの名無しさん
2015/01/07(水) 01:10:19.80ID:fRApCFQJhttps://www.ruby-lang.org/ja/news/2014/12/25/ruby-2-2-0-released/
0248デフォルトの名無しさん
2015/01/07(水) 09:46:36.62ID:B7bGhXQ6変な人
0249デフォルトの名無しさん
2015/01/08(木) 13:16:36.84ID:FsXUJliCいうだけで、これだけの不平不満が吹き出す言語、
それが Ruby の現実。
そのRuby の真実の姿をあぶり出すことができた。
それだけでも、一連の議論は大いに意味があった。
Java は偉大だ。眩しくて光り輝いているな。
0250デフォルトの名無しさん
2015/01/08(木) 13:27:32.47ID:BEmVRfK/0251デフォルトの名無しさん
2015/01/08(木) 13:28:27.44ID:FsXUJliCRuby 本体の上をいく仕様変更の嵐。
それだけではなく、ごく小規模のサイトの構築でさえ、大規模サイトの流儀を要求されるというポリシー上の理不尽。
なにかが根本から間違っている。
コンセプトからみて、Rails よりSinatra が優れていると思えてならない。
Rails推しから Sinatra推しへ転換を図るべきだ。
女性にも広めようと上にあるのを見たが、であればなおさらだ。
前に Rails やろうと思うんですが、どうですかって聞かれたことがあった。
その人のことをいろいろ考えて、俺は PHP を薦めた。
無念だが、その人のためだと思ったから。
0252デフォルトの名無しさん
2015/01/08(木) 13:31:03.19ID:FsXUJliCお前の責任ある答えを聞きたい。
5年前のコードはへっちゃらで動くことはない言語 Ruby をお前は勧める。
そのようなRuby をお前が勧める理由はなんだ?
それを心ゆくまで述べてみよ。
Ruby の将来はお前にかかっている。期待してるぞ。お前の屁理屈を。
0253デフォルトの名無しさん
2015/01/08(木) 13:31:57.35ID:5iJyKn99殺すぞ
0254デフォルトの名無しさん
2015/01/08(木) 13:34:52.14ID:FsXUJliC>殺すぞ
意訳すると、Java は素晴らしい、となる。
0255デフォルトの名無しさん
2015/01/08(木) 15:37:23.40ID:OZuEqed0バカなの
0256デフォルトの名無しさん
2015/01/08(木) 16:25:14.04ID:FsXUJliCなんなの、お前? お前もJava 使え。
0257デフォルトの名無しさん
2015/01/08(木) 16:31:29.01ID:OZuEqed0バカなの
0258デフォルトの名無しさん
2015/01/08(木) 18:20:37.79ID:FsXUJliC大人になれや。
0259デフォルトの名無しさん
2015/01/08(木) 18:21:32.87ID:0An2B4E8他言語を扱うプログラマが手元でちょこちょこ使うものって感じ
とりあえず作るとか、一人でパパッと小規模のプログラムを書くってのには向いてると思う
アルゴリズムの動作確認したり、プロトタイプ作って試した後にそれを他言語に変換するスクリプト作ってたり
RailsはRubyの上で動作する別言語なのでRailsスレで
0260デフォルトの名無しさん
2015/01/08(木) 19:04:55.76ID:g/RxkgEC0261デフォルトの名無しさん
2015/01/08(木) 19:18:31.79ID:BEmVRfK/非RubyistがわざわざこんなところでRubyを腐し続けるって異常だな
0262デフォルトの名無しさん
2015/01/08(木) 19:35:23.31ID:5iJyKn990263デフォルトの名無しさん
2015/01/08(木) 19:37:25.44ID:FsXUJliC死にいく言語だそうな。
それはたぶんRuby じゃなくてRails がみんなに愛想つかされてきたからだろ。
なぜみんなはRails に愛想つきてきたか。
それは、上でみんな書き尽くされてることで・・・
0264デフォルトの名無しさん
2015/01/08(木) 19:52:42.38ID:FsXUJliCRuby も一緒に死ぬぞ。泥船からは逃げろ。
悪いことはいわん。Sinatra 推しに切り替えろ。
みんなのためでもある。苦行のわりに利がないもの。
0265デフォルトの名無しさん
2015/01/08(木) 20:02:45.39ID:g/RxkgEC0266デフォルトの名無しさん
2015/01/08(木) 21:21:42.24ID:vJWeyEjbやめたほうがいいとこんなトコで言われても、あっそう、としか言えないよ
0267デフォルトの名無しさん
2015/01/08(木) 21:23:40.45ID:sg4geDubQiitaあたりで叫ぶとよく釣れると思うよ
あそこRailsとマカーしかいないから
0268デフォルトの名無しさん
2015/01/08(木) 21:27:25.85ID:FsXUJliCだってさ、死にいく言語とか言われてヤバイと思わん?
俺もRails いじっていたから、見放したくなる気持ちはよく分かる。
PHP とかはるかに簡単だも。それがベストとはいわんけどさ。
0269デフォルトの名無しさん
2015/01/08(木) 21:30:58.23ID:Zn9KkZAG代謝していくだけだ
代謝を恐れたなら、その時が老いた時なのだ
0270デフォルトの名無しさん
2015/01/08(木) 21:39:53.96ID:FsXUJliCJava もクソ文法でな www
だいたい、ウチのマシンにnetbeans はシンドイ・・・
0271デフォルトの名無しさん
2015/01/08(木) 22:45:38.90ID:68t0IsL5Javaで書くよりも早く完成するよ
0272デフォルトの名無しさん
2015/01/08(木) 22:49:19.72ID:ZIphMHjtRubyで1000人月とかただの集団自殺
0273デフォルトの名無しさん
2015/01/10(土) 09:01:51.29ID:/KNCgu+aアメリカ夏時間判定するのに、isdstメソッド使ってたらなんか変な結果が出て、
ENV['TZ'] = 'US/Pacific'
p Time.local(1975, 4, 15).isdst # => true
ENV[' TZ '] = nil
wiki/夏時間を見ると「1986年までは現地時間4月最終日曜日午前2時から10月最終日曜日午前2時までの間」
とあるから、1975年4月15日は冬時間だと思うんだが。
wikiの方が間違ってるのかisdstが間違ってるのかどっちだろうか?
rubyのバージョン1.9.2ってのが問題かもしれないがw
0274デフォルトの名無しさん
2015/01/10(土) 10:08:23.26ID:YN4LC6Iq$ jruby -v
jruby 1.7.18 (1.9.3p551) 2014-12-22 625381c on Java HotSpot(TM) 64-Bit Server VM 1.8.0_25-b17 +jit [linux-amd64]
ENV['TZ'] = 'US/Pacific'
p Time.local(1975, 1, 1).isdst # => true
p Time.local(1975, 2, 1).isdst # => true
p Time.local(1975, 3, 1).isdst # => true
p Time.local(1975, 4, 1).isdst # => true
p Time.local(1975, 5, 1).isdst # => true
p Time.local(1975, 6, 1).isdst # => true
p Time.local(1975, 7, 1).isdst # => true
p Time.local(1975, 8, 1).isdst # => true
p Time.local(1975, 9, 1).isdst # => true
p Time.local(1975, 10, 1).isdst # => true
p Time.local(1975, 11, 1).isdst # => true
p Time.local(1975, 12, 1).isdst # => true
ENV[' TZ '] = nil
# 実行結果
false
false
true
true
true
true
true
true
true
true
false
false
0275デフォルトの名無しさん
2015/01/10(土) 11:16:25.70ID:/KNCgu+a(1975, 3, 1)がtrueで夏時間になってるのはなんか結果がおかしいですね
自分の環境ではfalseになりました。実行環境に影響されてるのかな?
ruby 1.9.2p0 (2010-08-18 revision 29036) [x64-mswin64_80]
0276デフォルトの名無しさん
2015/01/10(土) 11:21:45.84ID:YN4LC6Iq$ruby -v
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-linux]
ENV['TZ'] = 'US/Pacific'
p Time.local(1975, 1, 1).isdst
p Time.local(1975, 2, 1).isdst
p Time.local(1975, 3, 1).isdst
p Time.local(1975, 4, 1).isdst
p Time.local(1975, 5, 1).isdst
p Time.local(1975, 6, 1).isdst
p Time.local(1975, 7, 1).isdst
p Time.local(1975, 8, 1).isdst
p Time.local(1975, 9, 1).isdst
p Time.local(1975, 10, 1).isdst
p Time.local(1975, 11, 1).isdst
p Time.local(1975, 12, 1).isdst
ENV[' TZ '] = nil
#
false
false
true
true
true
true
true
true
true
true
false
false
0277デフォルトの名無しさん
2015/01/10(土) 11:25:23.66ID:YN4LC6Iq違っちゃダメだろって…
0278デフォルトの名無しさん
2015/01/10(土) 12:25:29.21ID:/KNCgu+aruby 1.9.2p0 (2010-08-18 revision 29036) [x64-mswin64_80]
ENV['TZ'] = 'US/Pacific'
p Time.local(1975, 4, 5).isdst
p Time.local(1975, 4, 6).isdst
p Time.local(1975, 4, 7).isdst
ENV[' TZ '] = nil
false
false
true
1975年4月の第一日曜日は6日で、第一日曜日で切り替えられてる
Wikiのデータでは夏時間のスタートは
●1986年までは現地時間4月最終日曜日午前2時から
●1986年より、開始日は4月第1日曜日
●2007年から開始日は3月の第2日曜日
wikiが正しいかどうかはわからないが、.isdst の内部では第一日曜日にされてますね
0279デフォルトの名無しさん
2015/01/10(土) 12:33:07.62ID:YN4LC6Iqjruby 1.7.18 (1.9.3p551) 2014-12-22 625381c on Java HotSpot(TM) 64-Bit Server VM 1.8.0_25-b17 +jit [linux-amd64]
ENV['TZ'] = 'US/Pacific'
p Time.local(1975, 4, 5).isdst
p Time.local(1975, 4, 6).isdst
p Time.local(1975, 4, 7).isdst
ENV[' TZ '] = nil
# 実行結果
true
true
true
$ ruby -v
ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-linux]
# 実行結果
true
true
true
鬱だ。死のうwww
ruby がというよりもlinux(ubuntu14.04) というのが悪いのん???
0280デフォルトの名無しさん
2015/01/11(日) 07:17:02.79ID:v5/BUYYs>>279
なんで結果に差が出るんでしょうね?
rubyのバージョンによって、.isdstもアップデートされてて内容が違うのかな?
0281デフォルトの名無しさん
2015/01/11(日) 09:09:45.14ID:G2IbQ7ek夏時間の判定もそこで行われている。
0282デフォルトの名無しさん
2015/01/11(日) 11:25:05.94ID:A1IfSqzeruby の仕様を過度に信用せずに、手元でテストをキチンと
組み上げるしかないんだろうな。
あと、このような環境依存のコマンドはむしろ非推奨にした上で、
将来的には廃止した方がいいと思う。
それか、Ruby内でアルゴリズムが完結するように組み直すか。
結局のところ、理由はどうあれ、間違った答え返ってきて、
それで納得する人いないと思う。
0283デフォルトの名無しさん
2015/01/11(日) 12:04:00.24ID:I5t5eddk0284デフォルトの名無しさん
2015/01/11(日) 12:04:06.90ID:5XIek4oklocaltime_r を廃止すべきだと?
C言語に文句つけるとは、ずいぶん大きく出ましたね
0285デフォルトの名無しさん
2015/01/11(日) 12:08:14.94ID:RxLZDfKEあれ。日本でやらないのは正解。
0286デフォルトの名無しさん
2015/01/11(日) 15:32:50.82ID:aOUO6IlL…プッ
0287デフォルトの名無しさん
2015/01/11(日) 15:47:02.08ID:A1IfSqzeちゃんとテスト書いてるか?
テストの仕様の変更に関して質問しても、ここでは誰も答えるヤツがいないんだがwww
0288デフォルトの名無しさん
2015/01/11(日) 15:49:27.42ID:A1IfSqze0289デフォルトの名無しさん
2015/01/11(日) 18:12:30.87ID:VJq3iYCs0290デフォルトの名無しさん
2015/01/11(日) 18:12:53.90ID:8wkZhlLxhttp://www.iana.org/time-zones
確認したところ、
># From Arthur David Olson (2005-08-22):
># Paul has been careful to use the "US" rules only in those locations
># that are part of the United States; this reflects the real scope of
># U.S. government action. So even though the "US" rules have changed
># in the latest release, other countries won't be affected.
>(snip)
>Rule US 1975 only - Feb 23 2:00 1:00 D
TZInfo は、直接このデータからソースを生成しているはず。
確かに、
tz = TZInfo::Timezone.get('US/Pacific')
p tz.period_for_local(Time.local(1975, 2, 22, 12)).dst? #=> false
p tz.period_for_local(Time.local(1975, 2, 23, 12)).dst? #=> true
p tz.period_for_local(Time.local(1975, 2, 24, 12)).dst? #=> true
0291デフォルトの名無しさん
2015/01/11(日) 18:54:44.49ID:FurkmZnS0292デフォルトの名無しさん
2015/01/11(日) 18:59:20.42ID:GhDmFV+h0293デフォルトの名無しさん
2015/01/11(日) 19:11:41.29ID:G2IbQ7ekSystemTimeToTzSpecificLocalTimeに依存していることを確認した。
ttp://msdn.microsoft.com/ja-jp/library/windows/desktop/ms724949%28v=vs.85%29.aspx
こいつのバグについては今のところ調査できてない。
>290
TZInfoの扱いもプラットフォームによって違うから注意されたし。
ttp://sugamasao.hatenablog.com/entry/2014/04/13/184137
0294デフォルトの名無しさん
2015/01/11(日) 20:31:29.36ID:BkMuWsUG自分が書いたロジックのテストは当然書くが
言語が返す値が違うものになるとかそこまでテスト書かないだろ
0295デフォルトの名無しさん
2015/01/11(日) 20:37:56.67ID:A1IfSqze俺はいつも linux (ubuntu)しか使わないが、
windows で書いたものを linuxに持ち込むという人もいるだろう?
ベースとなるOS が異なると、Rubyの返す結果が異なる
場合があるというのだから、
であれば、自前のテストで確認するしかないのでは???
結果は実装・環境次第という人ばかりなので、仕方ない。
そんな馬鹿なとは思うけど・・・
0296デフォルトの名無しさん
2015/01/11(日) 20:46:11.35ID:BkMuWsUG今回は事前に気づいたケースだから書けるけど
事前に気づかないケースじゃテスト書きようがないと思うけど
0297デフォルトの名無しさん
2015/01/11(日) 21:01:30.54ID:A1IfSqze結局、RubySpec の問題に戻るんだよねぇ。
環境や実装の違いなんてことに関わらず、同じ値を返すように
仕様として互換性テストを構築したら、拒否されたという・・・
でも、互換性でチェックしてほしいのはまさにそこなんだけど。
しかし、 RubySpec的やり方の拒否は公式的なものなんでしょ。
自前のテストでそこまでチェックするのがイヤだとなら、お手上げなんじゃ?
0298デフォルトの名無しさん
2015/01/11(日) 21:55:17.81ID:XNnfmRhDそりゃ外部で勝手に仕様決めつけられてテスト作られても受け入れ拒否するわな
0299デフォルトの名無しさん
2015/01/11(日) 22:01:10.17ID:A1IfSqzeロジックを組むしかないんだと思う。
でないと、外部のライブラリなりなんなりに投げる形になって、
返ってくる結果はそれ次第という話になってしまう。
0300デフォルトの名無しさん
2015/01/11(日) 22:04:53.92ID:A1IfSqze誰かが責任もって運用し、プラットフォームに依存しない
テストを実行して、バグをその都度発見できるようにするか…
0301デフォルトの名無しさん
2015/01/11(日) 22:13:51.66ID:A1IfSqzelinux(ubuntu)を規範的OS と定め、それ以外はフォークと考え、
規範OS 以外の実行結果は無保証としてしまうか…
これが一番安上がりだが。
0302デフォルトの名無しさん
2015/01/11(日) 22:17:59.69ID:BkMuWsUGRubyを選択するやつなんていないでしょ
0303デフォルトの名無しさん
2015/01/11(日) 22:32:23.40ID:8e7vlna2ミドルウェアのバージョン上げたら動作変わるとか日常茶飯事なんだから、些細なことだよ
あくまで「Webなら」な
0304デフォルトの名無しさん
2015/01/11(日) 23:03:32.99ID:jQsmpaL2A | B | C
ABCは完全に独立した組織で、独立していること
AはBに依存し、BはCに依存する。
Aが直接、Cを決定してはいけない
外人が他国語を決めたり、
他国が他国の法律・慣習を決めたり、
他国が他国のオリンピック選手などを選抜してもいけない
中央の官僚が、地方行政を決めてもいけない。
国を道州制とし、決定はなるべく近くで、
物事を見ている人が決める
0305デフォルトの名無しさん
2015/01/11(日) 23:13:40.37ID:A1IfSqzeもういいんだ、その話は。
Ruby にはすでに仕様互換性テストは存在しない。
終わったことだ。
0306デフォルトの名無しさん
2015/01/11(日) 23:15:13.03ID:FurkmZnS0307デフォルトの名無しさん
2015/01/11(日) 23:18:18.44ID:A1IfSqze結果をチェックするというのが、俺も現実的と思う。
それ以外に、現実的な解決策はないだろうなぁ。
そういう方向で検討してほしい。
0308デフォルトの名無しさん
2015/01/11(日) 23:27:05.16ID:8e7vlna2テストスイート走らせるだけなんだから大した手間じゃないよ
つまりテストケースが漏れてただけ
0309デフォルトの名無しさん
2015/01/11(日) 23:30:33.97ID:A1IfSqze違う違う。
どれが仕様として正しいのかの定義がない、という話。
Linux 上の動作が正しく、Windows上のは、合わせたいなら
お好きにどうぞ。それは未定義、という考え方。
0310デフォルトの名無しさん
2015/01/11(日) 23:35:19.01ID:8e7vlna2定義があったところでそれを保証するのはテストケースに他ならないんだから
結局テスト漏れに帰着するってことだよ
0311310
2015/01/11(日) 23:47:39.58ID:8e7vlna2Rubyはそうじゃないし、それを求めるのが非現実的である以上、
テストケースを増やせとしか言いようがない。
0312デフォルトの名無しさん
2015/01/12(月) 00:30:20.41ID:BRNsR1niそれをRubyで再実装するなんて時間の無駄もいいところだし
0313デフォルトの名無しさん
2015/01/12(月) 03:03:48.44ID:KGNTKkPE今までもなかったわけじゃないんでしょう?
0314デフォルトの名無しさん
2015/01/12(月) 03:26:02.46ID:XKz3buBDCで書いてあれば、他のマシンでも「動きやすい」と
そのまま動くというわけではない
書き換えなければならないところもあるという話
RubyはC程度の移植性
Java は、他のマシンにもっていくためにチョコチョコ
書き直すようなことは、やめようという言語
"Write once, run anywhere"
でも、Java はコレで犠牲にしている部分があるよね
0315デフォルトの名無しさん
2015/01/12(月) 04:24:25.08ID:/MXYzLjYそもそもこれが曲がりなりにも形になるのに時間がかかったし、今だって
そんないうほど自慢できる状態じゃない
0316デフォルトの名無しさん
2015/01/12(月) 10:16:41.44ID:keLLoj3iOSの問題だとしたらwindowsアメリカ産OSなのに何やってんだ…
ww.timeanddate.com/time/dst/1972.html
1972 Sunday, 30 April
1973 Sunday, 29 April
1974 Sunday, 6 January
1975 Sunday, 23 February
1976 Sunday, 25 April
1977 Sunday, 24 April
1978 Sunday, 30 April
1979 Sunday, 29 April
1980 Sunday, 27 April
1981 Sunday, 26 April
0317デフォルトの名無しさん
2015/01/12(月) 11:08:08.17ID:Il3tkbbbLinuxとOSX(BSD系)でも標準コマンドの挙動とか微妙に違うからそこも気にするし
0318デフォルトの名無しさん
2015/01/12(月) 12:08:37.76ID:tkOOh7AyRubySpecの件で心身を病んだらしいよ
・・・元からの可能性もあるが
0319デフォルトの名無しさん
2015/01/12(月) 14:19:49.03ID:PuwpJFVg笑ってしまった
0320デフォルトの名無しさん
2015/01/12(月) 14:23:08.78ID:PuwpJFVg0321デフォルトの名無しさん
2015/01/12(月) 14:57:52.73ID:tkOOh7Ayお前の考える「対応」と、俺の考える「対応」は違うんだ
の一言であらゆる文句は一蹴できる
0322デフォルトの名無しさん
2015/01/12(月) 16:32:01.48ID:AB7X7vXD米国特有のローカライズなどはgemで対応すれば問題ない
0323デフォルトの名無しさん
2015/01/12(月) 17:55:52.60ID:nU3hkfq40324デフォルトの名無しさん
2015/01/13(火) 08:22:37.85ID:mo25xfmBだめぽ
0325デフォルトの名無しさん
2015/01/13(火) 11:37:21.04ID:dH/0Ok+dそのコミュニティーも完全にそれを了解事項にしている。
しかし、Ruby も含めてその他の言語はすべて、
その次元には至っていない。それだけのことだ。
Linux での動作だけは死守してくれ。
もはや、それ以上のことは無理だし出来もしないことを望んでも仕方ない。
0326デフォルトの名無しさん
2015/01/13(火) 12:05:44.64ID:JztOXwMpいつまでも寝ぼけてんなよチンカスくん
0327デフォルトの名無しさん
2015/01/13(火) 12:56:29.31ID:uHQW56BE0328デフォルトの名無しさん
2015/01/13(火) 14:20:28.65ID:dH/0Ok+dubuntu のLTS だけサポートすればいいんじゃないかな。
mint も派生だし、debian も似たようなもんだし。
RedHat のサポートは、RedHat自身がやるべきでしょ?
それが仕事なんだし、人のメシのタネを取るべきじゃない。
0329デフォルトの名無しさん
2015/01/13(火) 16:12:28.68ID:xXiFYeMUそれにOSチームの仕事は各ソフトの動作をサポートすることじゃないだろ
0330デフォルトの名無しさん
2015/01/13(火) 16:24:20.43ID:dH/0Ok+dWinはプロプラじゃないか。
OSS の唯一サポートするOS がプロプラだったら笑い話だろ。
RedHat は金さえ払えばなんでもやるよ。
メシのタネなんだから。
0331デフォルトの名無しさん
2015/01/13(火) 16:39:06.88ID:dmdtWWUzhttp://www.rubyist.net/~matz/20080219.html
2008-02-19
0332デフォルトの名無しさん
2015/01/13(火) 16:45:38.60ID:dH/0Ok+dubuntu は派生じゃないけど、準派生みたいなもんだし。
RedHat は有料なんだからさ、個人じゃ入れるのもままならない。
cent はRedHat のただの後追いコピーだから、
あれにメンテしたところで、次バージョンには反映しないでしょ www
0333デフォルトの名無しさん
2015/01/13(火) 18:44:09.72ID:j81RojAW0334デフォルトの名無しさん
2015/01/13(火) 21:23:10.83ID:CPQbXHFjパッケージのメンテはディストリビュータの仕事だろ
カーネルとディストリビューションの区別がついてない人?
0335デフォルトの名無しさん
2015/01/13(火) 21:37:29.22ID:QfRKSulCdebianのメンテナが辞めた事が無かったっけ?
0336デフォルトの名無しさん
2015/01/13(火) 21:42:18.61ID:/ApZh3CFこれだけで全て解決するんだからそれ以上考える必要ない
0337デフォルトの名無しさん
2015/01/13(火) 21:51:06.88ID:dH/0Ok+dだから、 linux だけのサポートでなにも問題はない。
俺は使ったことないがCygwinだってあるだろ。
Cygwinのサポートだってちょっと頑張れば可能かもしれないし。
さらにいえば、win など入れず ubuntu常用で本当はなにも問題ないよ。
だから、Rubyとしては Linux のサポートだけが必要で、
あとはサポート外でいい。win でも仮想でLinux いれりゃいいだけだ。
0338デフォルトの名無しさん
2015/01/13(火) 21:53:21.41ID:dH/0Ok+dせっかくOS を一つだけセレクトしてサポートするっていうんだったら、
そのOS では最新の安定版をパッケージとして提供すりゃいいじゃん。
まあ、別にそうしなくてもいいけど。
0339デフォルトの名無しさん
2015/01/13(火) 21:56:56.91ID:hvSQliED0340デフォルトの名無しさん
2015/01/13(火) 22:00:33.83ID:dH/0Ok+dMac だって Virtualbox動くだろ?
なら、win と同じ扱いでいいよ。サポート外で。
0341デフォルトの名無しさん
2015/01/13(火) 22:06:10.90ID:ycL/0qgm似ていて微妙に異なるというのが実は一番困るのだと思い知らされる。
同じ理由でBSDも・・・
窓はなんというか取り掛かる前から腹がくくれるというか
バッドノウハウもそれなりに蓄積されてるのでなんとかなる感じ。
0342デフォルトの名無しさん
2015/01/13(火) 22:20:52.68ID:dH/0Ok+d互換性などカオスだというのに、口をつぐんでるだけだからな。
Ruby はLinux のdebianか ubuntu だけをサポートします、
あとはwin のruby も macのruby もフォークなので、
有志で勝手にやってください、とハッキリ宣言すれば、
Java の立場には及ばないが他の言語より正直さという点で
数段上だ。
0343デフォルトの名無しさん
2015/01/13(火) 23:35:04.34ID:F3k0DSNtということだな
0344デフォルトの名無しさん
2015/01/14(水) 00:06:13.44ID:pAFniLdU買う価値ありそう?
0345デフォルトの名無しさん
2015/01/14(水) 02:50:19.91ID:fsU+CQX20346デフォルトの名無しさん
2015/01/14(水) 07:50:31.76ID:0jHyb9lO0347デフォルトの名無しさん
2015/01/15(木) 02:23:41.29ID:tU5eqjdo0348デフォルトの名無しさん
2015/01/15(木) 08:25:07.49ID:4e7cSDMB0349デフォルトの名無しさん
2015/01/16(金) 04:01:08.51ID:Uo0Zlj+1# A〜D
Person = ('A'..'D').to_a
TimeOfP = [1, 2, 5, 10]
# transposeで行列変換
ary = [Person, TimeOfP].transpose
# * で配列の多重代入
# flattenで、配列を平滑化
h = Hash[*ary.flatten]
p h
{"A"=>1, "B"=>2, "C"=>5, "D"=>10}
0350デフォルトの名無しさん
2015/01/16(金) 06:25:45.08ID:Uo0Zlj+1# 4つから2つを選ぶ、組合せ
# combiは、Enumerator
combi = Person.combination(2)
ary3 = combi.collect do |ary2|
ary2.join('+')
end
p ary3
["A+B", "A+C", "A+D", "B+C", "B+D", "C+D"]
0351デフォルトの名無しさん
2015/01/16(金) 22:26:16.94ID:lGFhyuso処理系の実装が現在こうなってるからこう動作するので、帰納的に
こういうコードはこういう意味と考えられる、という言語なので
静的解析が極めて困難
0352デフォルトの名無しさん
2015/01/16(金) 23:22:34.62ID:2bPtIKnKRuby界は全力で拒否ったわけだから、
そういう互換性は諦めるしかない。
しかし、ターゲットのOS を一つに絞るなら、
仕様としての動作の確定は可能だし、メンテも楽だ。
それしか道はない。キチンとした公式見解が求められる。
客観的にみて、debianかubuntuのどちらかしかありえない。
0353デフォルトの名無しさん
2015/01/16(金) 23:26:18.32ID:EHV2pid7よく、生きてられるなぁ
0354デフォルトの名無しさん
2015/01/16(金) 23:42:31.52ID:2bPtIKnKじゃあ、お前が全OS をメンテしろよ。
0355デフォルトの名無しさん
2015/01/17(土) 00:25:48.09ID:OhSrciBg特定のOSの特定のディストリビューションの
特定のライブラリの特定のバージョンに依存したテストを書きまくれってこと?
俺がMRIメンバーなら絶対脱退するわw
0356デフォルトの名無しさん
2015/01/17(土) 00:39:06.15ID:54e9ps0Z二つに一つじゃないのか?
1 全OS 対応のコードを書く。(その保証が互換性テスト)
2 でなきゃ、特定OS にターゲットをしぼり、他のOS はすべて
フォークであり無保証。
Ruby は2を選ぶしかないだろ。
心配するなって。Javaを除く他の言語は黙ってるだけで、
Ruby と同等かそれ以下なんだから。
0357デフォルトの名無しさん
2015/01/17(土) 00:58:55.58ID:OhSrciBg細かい挙動は全部その特定OS依存ということにして一切責任を持たないってこと?
それだとOSやライブラリのバージョンアップでいつのまにか挙動が変わっている可能性があるよね
結局君が糾弾してるRubyのいい加減な互換性ポリシーの解決にはなってないように思うけど?
0358デフォルトの名無しさん
2015/01/17(土) 01:02:31.67ID:wTJ7pWQH0359デフォルトの名無しさん
2015/01/17(土) 01:31:57.43ID:GVSMjF7o仕事が増えて良かったじゃないかw
0360デフォルトの名無しさん
2015/01/17(土) 01:35:42.96ID:54e9ps0Zlinux の主要ディストリのうちの一つをターゲットにする以上の
どんなことが出来ると?
無理じゃん。出来ないことを言うのは無責任だ。
0361デフォルトの名無しさん
2015/01/17(土) 01:46:01.93ID:lr/+xWwFで、RubyとしてはCライブラリのどの機能を使っているかさえ言っていれば後はどうでもいい
世の中のスクリプトの大半はそういうものなんだし
0362デフォルトの名無しさん
2015/01/17(土) 01:55:04.37ID:54e9ps0Zただし、Java の除く言語はそういうもんだというのはその通り。
0363デフォルトの名無しさん
2015/01/17(土) 01:58:03.05ID:KTLYytk10364デフォルトの名無しさん
2015/01/17(土) 01:59:07.30ID:lr/+xWwFそれ以上のものを目指しているJavaはそういう思想であり、Rubyなどのスクリプト言語は
用が足りてる以上のものにリソースをかけないという思想
思想の問題であり、どっちがいいとか悪いとかはない
0365デフォルトの名無しさん
2015/01/17(土) 02:04:38.39ID:KTLYytk12.0はこんなのあったけど。
ttps://bugs.ruby-lang.org/projects/ruby-trunk/wiki/20SupportedPlatforms
0366デフォルトの名無しさん
2015/01/17(土) 04:02:49.01ID:RHwmJIArdef go(layer=0)
p layer
return if 3 == layer
layer += 1
go(layer)
end
go()
0367デフォルトの名無しさん
2015/01/17(土) 07:03:46.29ID:RHwmJIArrow_1 = [10, 11]
ary4 = []
# 参照を代入する。ジャグ配列
ary4[0] = row_0
ary4[1] = row_1
row_0[1] = 'A'
p row_0
[0, "A", 2]
p ary4
[[0, "A", 2], [10, 11]]
0368デフォルトの名無しさん
2015/01/17(土) 10:52:19.15ID:RHwmJIArary4 = []
これは参照の代入になるけど(同一オブジェクト)、
ary4[0] = row_1
これはすべての要素がコピーされる。
別々のオブジェクト
ary4[1] = row_1[0..1]
0369デフォルトの名無しさん
2015/01/17(土) 10:52:43.46ID:8Ci9w5pzスレチだからJavaマンセー君は専用スレッドでも立ててそちらで仕様がない議論でもしていてください。
0370デフォルトの名無しさん
2015/01/17(土) 10:55:00.82ID:ZprTe1JK従う理由がないだろw
0371368
2015/01/17(土) 13:23:23.57ID:RHwmJIArary4 = []
これはすべての要素がコピーされる。
別々のオブジェクト。参照のコピーではない
ary4[0] = row_1[0..1]
Pythonなら[0:2]で、0〜2未満をコピーする
x = row_1[0:2]
[:]と開始・終了インデックスを省略すると、
すべての要素をコピーする
x = row_1[:]
Rubyにも、このように簡単に、
すべての要素をコピーする方法がありますか?
0372デフォルトの名無しさん
2015/01/17(土) 13:45:41.57ID:v/9DdXFvx = row_1.dup
Pythonと同じくshallow copyなのでそこは注意
0373デフォルトの名無しさん
2015/01/17(土) 19:58:27.07ID:EKnWULGyそもそもruby界隈でObject#freezeはあまり使われていないような気がするのだが
どうか
0374デフォルトの名無しさん
2015/01/17(土) 20:09:48.80ID:OhSrciBgあるメソッドAの引数にfrozenなBを渡してエラーにならないかどうかは結局Aの実装次第であって、
そもそも破壊されないのがわかってるなら別にfreezeする必要ないっていう
0375デフォルトの名無しさん
2015/01/17(土) 20:26:14.62ID:v/9DdXFvオブジェクトの汚染っていう概念も初めて知ったわ
web対応って大変ね
0376デフォルトの名無しさん
2015/01/17(土) 20:43:09.46ID:OhSrciBgサーバーで実行すること自体絶対にありえないからね?
taintはRuby上で複数のドメインのコードを動かすのを想定した仕組みだけど、
普通はそんなことしないでプロセス単位で扱うののが普通だし
0377デフォルトの名無しさん
2015/01/17(土) 21:32:28.17ID:EKnWULGyttp://m.onkey.org/ruby-i-don-t-like-3-object-freeze
こういう問題もあるんだな・・・
たしかにこの挙動はイラっとくる。論理的な一貫性はあるけど
欲しいものと微妙にズレてるというか・・・
俺が欲しいのはものすごく単純なconstなんだけど。
0378デフォルトの名無しさん
2015/01/17(土) 22:16:42.97ID:OhSrciBgRubyでC++のような連鎖的なconstを実装するんならオブジェクトの状態としてfrozenを持たせるんではなくて、
constなメソッド呼び出しの先の全てのスタックフレームにfrozenフラグを立てて
frozenなフレーム内では一時的にレシーバが変更できなくなる仕様にするのが筋かと思う
0379368
2015/01/18(日) 08:58:17.52ID:64baGbNBary[0] = 'A'
p ary
end
ary = [1, 2]
bb(ary)
p ary
["A", 2]
["A", 2]
関数の引数に、配列を渡すと、参照渡しになり、
関数の内部で、配列に加えた変更が、
関数の外で定義された配列にも及ぶ(同一の配列)
ary = [1, 2]
bb(ary)
の時に自動的に、配列のすべての要素を、
コピーして渡すことは出来ないか?
つまり、別々の配列となる
bb(&:ary)
こういう簡単な記法はないの?
0380デフォルトの名無しさん
2015/01/18(日) 10:01:34.23ID:QxSzEZO/0381デフォルトの名無しさん
2015/01/18(日) 11:47:12.82ID:g7at9IyQ最近はrubyでも副作用は嫌われる傾向にあるので、
bbは渡された配列を変更せず新しい配列を返す実装にすべき。
bbの実装が変更できずやむを得ない場合は>380
0382デフォルトの名無しさん
2015/01/18(日) 12:12:41.32ID:YQ/T1PKNbbが引数の内容を変更するってことはその変更された結果を後で使うんだろ?
ならコピーして渡したところで意味がないんじゃないの?
もしくはbbが引数を変更しつつまた別の結果を戻り値として返したり別の場所に副作用を起こすような意味不明な仕様なのか?
0383デフォルトの名無しさん
2015/01/18(日) 14:22:54.74ID:AMauTogubb(ary.dup)
でいいよ
配列をコピーするというメソッドはあるが記法はない
0384デフォルトの名無しさん
2015/01/18(日) 14:52:01.11ID:QxSzEZO/0385デフォルトの名無しさん
2015/01/18(日) 15:02:37.63ID:AMauToguダメとだけ書いても理解されない
0386デフォルトの名無しさん
2015/01/18(日) 16:17:34.94ID:UJDOWW1C0387デフォルトの名無しさん
2015/01/19(月) 00:38:55.11ID:kt81hAibrubyで遊ぶのに適した環境てやっぱりlinuxですか?
winのrubyを触ってて楽しいなと感じていたんですが、gemで蹴られたり、エンコードに癖があったりで
章を進めるにしたがい不便を感じ初めています。
最初からlinuxを選択するべきか悩みましたが
linxについてまるで経験がないので、rubyの前にlinux仕様を覚えなければならない手間の増加に腰が引け・・・winを選択したしだいです。
rubyを始めたばかりなので、「まずrubyの足元」を固めたい。
そのために「ハードルを下げたい」のですが
OSの選択と開発環境について何かアドバイスがあればお願いします。
独学で相談する相手もいないので、ubutuにしようか、winで続けようか、それともCentOs・・悩んでいます
(手違いで2ch.scに投稿したので2ch.netに書き直しです。.scは.net側から読めないため移動しました)
0388デフォルトの名無しさん
2015/01/19(月) 00:54:14.54ID:hwzu+AsPエンコードってそんなに面倒かな?
0389デフォルトの名無しさん
2015/01/19(月) 01:05:43.71ID:kt81hAib対処法を「探しあてる」までちょっと面倒だったりします。
まだ参考コードを片手に本と画面のにらめっこの段階なので・・・
参考コードをタイプして動かないと時間と精神的に・・・
0390デフォルトの名無しさん
2015/01/19(月) 01:15:33.96ID:m1sXYci2文法に慣れて標準ライブラリをいくつか使えるようになってからで十分
0391デフォルトの名無しさん
2015/01/19(月) 01:42:43.59ID:QnWCi45e目的もなく勉強しても身につかない
0392368
2015/01/19(月) 03:02:48.75ID:aeY3ubQMdef bb(ary)
ここで配列を変更しながら、何回かbb()を呼ぶ
bb(ary)
end
ハノイの塔・将棋などのゲームの手順などを、
深さ優先のスタックの代わりに、
再帰関数で実装しているので、
個々の関数の中では、配列を変更するのだが、
別々の配列を使う方が、
変更した配列を捨てるだけでよいので、
元に戻す手間が省ける
>>387
漏れはWin8なので、TeraPadで書いて、
ttps://paiza.io/
にコピペして、実行している
0393デフォルトの名無しさん
2015/01/19(月) 07:44:53.64ID:eQbtjaRRもろ初心者ね
0394デフォルトの名無しさん
2015/01/19(月) 08:01:08.16ID:UWF/JaigWebがやりたいんだったらRuby云々よりも運用知識の方が重要なくらいだから
当然実際の稼働環境(UNIX系)となるべく似た環境で開発しないと意味がないし、
Winから他へ乗り換える予定もUNIXで何か運用する予定もないならLinuxで開発しても仕方ないだろう
言語なんかたかが道具だよ
0395デフォルトの名無しさん
2015/01/19(月) 09:42:39.75ID:aeY3ubQMRubyをすること自体が目的
そんな小難しい話はいらない
Let's Ruby!
Ruby, Matz、鳥取・島根 万歳!
ここは初心者スレだから、難しい話をする人は、
もう一つのスレの方でやって
0396デフォルトの名無しさん
2015/01/19(月) 10:44:00.79ID:D2Bly1oFたとえば『作りながら学ぶRuby入門』は Windows/Mac OS X 対応だったよ。
0397デフォルトの名無しさん
2015/01/19(月) 19:14:10.29ID:UWF/JaigVirtualBoxのインストールから始まる本が多いけどなw
0398デフォルトの名無しさん
2015/01/19(月) 19:44:38.39ID:m1sXYci2書くのも読むのも苦痛だからな・・・
0399デフォルトの名無しさん
2015/01/19(月) 22:45:58.11ID:kJb8u5XbWindowsでも無価値ではないぞ。俺はShellscript代わりに重宝している。
Rubyとしては邪道な使い方かもしれんがそれでも
PowerShell人口よりは多いだろうよ・・・
0400デフォルトの名無しさん
2015/01/20(火) 04:05:02.59ID:ce3GiAbDf.puts line.chomp!
end
ちょっぷしてぇええ!!
0401368
2015/01/20(火) 06:11:14.89ID:tR2SZl1Mx = aa[0..100]
xx = aa[0..-1]
aa[1] = 'B'
p aa #=> [1, "B", 3]
p x #=> [1, 2, 3]
p xx #=> [1, 2, 3]
うおー![0..-1][0..100]など、
終わりのインデックスを、-1か、
最後の要素より、大きい数字を入れたら、
すべての要素が簡単にコピーできる!
0402デフォルトの名無しさん
2015/01/20(火) 07:02:00.36ID:quI2Csppそれ配列が空だったらエラーになるから一貫性のない頭の悪い方法
0403デフォルトの名無しさん
2015/01/20(火) 07:24:19.26ID:q7S0YejK0404402
2015/01/20(火) 07:36:46.41ID:quI2Cspp頭の悪いのは俺だった
0405デフォルトの名無しさん
2015/01/20(火) 07:45:02.30ID:Y4m7VuCx0406デフォルトの名無しさん
2015/01/20(火) 08:14:30.35ID:tR2SZl1Mdef bb
cc = 'A'
p cc #=> A
end
bb
p cc #=> 1
Rubyでは内外のccが、別々の変数(スコープ)となる
外側で宣言したccを、簡単に関数の内側で使いたいが、
どうすればよい?
ただし、グローバル変数以外で
0407デフォルトの名無しさん
2015/01/20(火) 08:33:36.19ID:quI2Cspp簡単じゃないだろうけど避けて通れない道
0408406
2015/01/20(火) 08:55:45.97ID:tR2SZl1Mcc = 1
# トップレベルで、define_methodを呼び出す
Kernel.send :define_method, :bb do
# def bb
cc = 'A'
p cc #=> A
end
bb
p cc #=> A
def bb の代わりに、
トップレベルで、define_methodを呼び出すと、
Kernel.send :define_method, :bb do
内外のccが、同一の変数(スコープ)となった
0409デフォルトの名無しさん
2015/01/20(火) 10:07:56.04ID:mp2703SQcc = 1
bb=->{
cc = 'A'
p cc #=> A
}
bb.call
p cc #=> A
0410406
2015/01/20(火) 11:21:08.26ID:tR2SZl1Mたくさんあるのよ
それらをすべて簡単に、関数の内側で使いたい
0411デフォルトの名無しさん
2015/01/20(火) 11:54:53.29ID:Y4m7VuCx0412406
2015/01/20(火) 12:47:13.19ID:tR2SZl1M配列の各要素をコピーしないから、
同一の配列を変更していて、
それに気づくまで、延々とはまった
関数の中で、すべての要素をコピーすればよいのか?
def aa(ary)
xx = ary[0..-1]
end
0413デフォルトの名無しさん
2015/01/20(火) 13:33:23.01ID:h23euKpJちゃんとレス読めよ
0414406
2015/01/20(火) 13:47:50.26ID:tR2SZl1M関数の中で、配列を変更しないように、
気をつけているが、それもすぐに忘れてしまう。
どこかで、代入してしまう
それだけ無意識で、コーディングが速い。
無想の境地。Ruby 恐るべし
0415デフォルトの名無しさん
2015/01/20(火) 13:54:47.99ID:M5BHFTcG0416デフォルトの名無しさん
2015/01/20(火) 15:33:53.92ID:e9cTGLx20417406
2015/01/20(火) 17:24:06.78ID:tR2SZl1M["A", "B", "C", "D"]
["AB", "B", "C", "D"]
ttps://paiza.io/
で実行しているが、p で表示すると、
いつの間にか配列の'A'が、'AB'に変わってしまう。
配列に代入している箇所は無い
環境のバグ?
それにそもそも、大文字で始まる変数名は、
定数じゃないのか?
トップレベルで、define_methodを呼び出して、
関数外で定義した配列を、関数内で使っているから?
さらに、この関数は再帰関数なのです
Kernel.send :define_method, :go do |
per_ary, layer=0, total_time=0 |
元の配列を変更しないように、
すべての要素をコピーして、関数に渡しているのですが、
ary2 = Person_ary[0..-1]
go(ary2)
0418デフォルトの名無しさん
2015/01/20(火) 17:25:29.93ID:7ow9yZfBruby上で配列として実行したいんですがうまくいきません。何か良い方法はありますか?
0419デフォルトの名無しさん
2015/01/20(火) 17:45:03.42ID:q7S0YejKちょっと状況がよくわからない
配列を標準出力に出力するスクリプトがあってそれをRubyスクリプトで受け取りたいのか
それともRubyスクリプトに定義してある配列を他のRubyスクリプトでも使いたいのか
それともそれ以外?
0420デフォルトの名無しさん
2015/01/20(火) 17:56:37.98ID:7ow9yZfBruby側で"[[1,2],[3,4]]"という状態で受けた文字列を
そのまま配列として使いたいのですがうまくできません。
0421406
2015/01/20(火) 18:05:32.81ID:tR2SZl1MKernel.send :define_method, :go do |
per_ary, layer=0, total_time=0 |
トップレベルで、define_methodを呼び出すのをやめて、
def go(per_ary, layer=0, total_time=0)
このように普通の関数に戻して、
関数内で使う変数を、すべてグローバル変数に替えたが、
やはり同じ現象が起こる。原因不明
0422デフォルトの名無しさん
2015/01/20(火) 18:09:03.35ID:bOdKTSkA例えば
ary = ("A".."D").to_a
ary2 = ary.dup
ary2[0] += "B"
だとary2だけ変更されるけど
ary2[0] << "B"
とか
ary2[0].downcase!
だと両方変更される
この時、aryとary2は別の配列オブジェクトだけど、それで参照される要素は同じオブジェクトだから
代入なら一方だけしか変更されないけど、参照されるオブジェクトの破壊的メソッドを呼び出すと両方変更される
定数が定数じゃないのはrubyの仕様
0423デフォルトの名無しさん
2015/01/20(火) 18:12:22.71ID:tR2SZl1Mそのまま変数に代入できないの?
.to_a は?
ary = ('A'..'D').to_a
["A", "B", "C", "D"]
0424デフォルトの名無しさん
2015/01/20(火) 18:15:39.95ID:M5BHFTcGevalじゃダメなの?
0425デフォルトの名無しさん
2015/01/20(火) 18:24:07.45ID:7ow9yZfBありがとうございます。
evalあったんですね(^_^;) あっさりできました。
ずっと#{ }でなんとかするのかと格闘してました。スレ汚しすみませんでした。
0426406
2015/01/20(火) 18:54:32.80ID:tR2SZl1Mary2 = $Person_ary[0..-1]
go(ary2)
このgoが再帰関数になっていて、引数に配列を渡していくから、
ずっと同じ配列をいじくっているのかな?
ary2 = $Person_ary[0..-1]
でもこの文で、すべての要素がコピーされて、
ary2と$Person_aryは、別々のオブジェクトにならないの?
0427406
2015/01/20(火) 19:10:13.93ID:tR2SZl1M>ary2 = $Person_ary[0..-1]
>でもこの文で、すべての要素がコピーされて、
>ary2と$Person_aryは、別々のオブジェクトにならないの?
object_idは異なっていた
0428デフォルトの名無しさん
2015/01/20(火) 19:11:36.56ID:bOdKTSkAary2[0]とPerson_ary[0]のオブジェクトIDを調べてみ
0429デフォルトの名無しさん
2015/01/20(火) 19:19:52.78ID:jzLWySUR答えてもらっても実践しないなら初めから質問なんかしなければいいのに。
0430406
2015/01/20(火) 19:39:26.27ID:tR2SZl1Mary2と$Person_aryの、object_idは異なっていたが、
ary2[0]と$Person_ary[0]の、object_idは同じだった!
もう気が狂いそう。爆発します
カタカタ、カタカタ、カタ、ドッカーン!
0431デフォルトの名無しさん
2015/01/20(火) 19:48:41.70ID:I5Fz89mC0432デフォルトの名無しさん
2015/01/20(火) 19:48:48.59ID:5Fj8tUhx>>422の人が丁寧に解説してくれてるだろ
0433デフォルトの名無しさん
2015/01/20(火) 19:51:03.94ID:q7S0YejK弁護はまかせろ
0434406
2015/01/20(火) 19:57:22.33ID:tR2SZl1Mでは、aa[1]に代入しても、
配列x,xxは変化しなかったのに、なぜ、
>>430 のような事が起きるの?
aa[1]に代入した瞬間に、
別のオブジェクトが作られるのかな?
aa = [1, 2, 3]
x = aa[0..100]
xx = aa[0..-1]
aa[1] = 'B'
p aa #=> [1, "B", 3]
p x #=> [1, 2, 3]
p xx #=> [1, 2, 3]
0435デフォルトの名無しさん
2015/01/20(火) 20:05:02.74ID:5Fj8tUhxだから>>422読めっての
0436406
2015/01/20(火) 20:19:04.50ID:tR2SZl1Mすべての要素をコピーして、関数に渡しているのですが、
Person_ary = ('A'..'D').to_a
ary2 = Person_ary[0..-1]
go(ary2)
def go(per_ary)
go(再帰関数に、また別の配列を渡す)
end
どこで、ary2, per_aryを変更しているのか、
変更箇所が見当たらない
そして知らぬ間に、まるで魔法のように、
Person_aryの'A'が、'AB'に変わってしまう
["A", "B", "C", "D"]
["AB", "B", "C", "D"]
0437デフォルトの名無しさん
2015/01/20(火) 20:25:57.00ID:JNlE/+5w首の上にカボチャでも載せてんですか
0438デフォルトの名無しさん
2015/01/20(火) 20:28:40.86ID:w3vLPuuc答えても無視して同じ質問ダラダラ繰り返すんだから邪魔で仕方がない
0439デフォルトの名無しさん
2015/01/20(火) 20:32:23.61ID:7DC6CjZy>>349あたりから読んでも同じことが言えるかな?
0440デフォルトの名無しさん
2015/01/20(火) 20:35:37.31ID:JNlE/+5w頭がついてないか空洞なんだと思ったけど違ったか?
0441デフォルトの名無しさん
2015/01/20(火) 20:36:27.21ID:7DC6CjZy0442デフォルトの名無しさん
2015/01/20(火) 20:44:23.29ID:q7S0YejK>>425
念のためだけど外部からの入力にevalしないでね
eval "[1, 2, `del yourfile`]" とかで死ぬから
0443デフォルトの名無しさん
2015/01/20(火) 21:24:14.75ID:4I0Y1qEsinclude Math
とするとyardの中にもMathにもlogというメソッドがあるため不具合が生じてしまいました
yardのlogはほとんど使わないしまた使われてもいないのでファイル中のlogを別の名前に置き換えて対処しているのですが、とても良い方法とは思えません
何かうまい方法はないでしょうか?
0444406
2015/01/20(火) 21:53:24.90ID:tR2SZl1M#=> ["A", "B", "C", "D"]
ary2 = $Person_ary[0..-1]
go(ary2)
def go(per_ary)
combi = per_ary.combination(2)
combi.each_with_index do |p_ary, i|
# per_ary[0] → p_ary[0]は同じobject_id
per_0 = p_ary[0]
何でこの代入が(値は'A')、同じオブジェクトやねん!
これぐらい別のオブジェクトにしろよ
$Person_ary[0] → ary2 → per_ary[0]
→ p_ary[0] → per_0
なんと、これらがすべて同じobject_id
per_0 << 'B'
per_0には'A'が入っているが、
最後にこれらがすべて、'AB'に変わってしまう!
ここまですべてが同じオブジェクトだって、誰がわかる?
0445デフォルトの名無しさん
2015/01/20(火) 22:03:00.40ID:tR2SZl1Mその関数だけ、
モジュール名を付けて呼び出せないの?
Math::log
0446デフォルトの名無しさん
2015/01/20(火) 22:06:10.20ID:B3TactEM恐らく誤って変更してしまっているのは配列ではなく、文字列のほう。
Rubyの文字列は変更可能。そして += と << が等価ではないのもそれに起因する。
「str<<式」はstrが参照する文字列自体を変更する。
「str+=式」はstr+式の新たな文字列を作成し、strが新たな文字列を参照するように変える。
0447デフォルトの名無しさん
2015/01/20(火) 22:10:24.86ID:4I0Y1qEsrequire 'foo'
require 'bar'
実際は上のように使っていて、
fooではrequire 'yard'、barではinclude Mathしており
どっちもモジュール名などを付けずに書かれているので困っているのです。
0448デフォルトの名無しさん
2015/01/20(火) 22:10:58.55ID:OvbknBRr文字列の変更可能性と定数の扱いで混乱しちまう。
0449デフォルトの名無しさん
2015/01/20(火) 22:14:39.33ID:q1aCw1+q初心者が嵌りやすいトラップだ。いい勉強になって良かったね
昔ruby trapっていうドキュメントがあったけど無くなっちゃったのか?
0450406
2015/01/20(火) 22:28:19.59ID:tR2SZl1Mcombi.each_with_index do |B, i|
C = B[0]
A[0] → B[0] → C
文字列が入っているとして、
これらが同じobject_idなのは、予想できんわ
0451デフォルトの名無しさん
2015/01/20(火) 22:33:30.37ID:mp2703SQ0452デフォルトの名無しさん
2015/01/20(火) 22:35:08.90ID:mp2703SQポインタの配列をコピーしても中身はコピーされないし
ポインタ自体をconstにしても参照先は書き換え可能だし
0453デフォルトの名無しさん
2015/01/20(火) 22:45:19.24ID:LYCYgqf6YARD が「トップレベル」の名前空間でメソッド log を宣言しているのが問題だね
さらに bar でも「トップレベル」でモジュール Math をインクルードしているから、
名前 log が衝突していると ....
YARD と bar、どちらの作者ともに作品がライブラリとして再利用される事に対する
想像力が欠けていた、あるいは思慮が足りなかったと言うしかない
もしも bar を作ったのが >>447 自身であるなら、
bar 全体を独自のモジュールとして定義し、
その中で Math をインクルードすれば衝突を回避できる(Math.log が優先される)
module Foo; include Math; .... end
そうでないなら、お手上げだなあ
0454デフォルトの名無しさん
2015/01/21(水) 01:22:41.56ID:nNlZ8uj4http://jbbs.livedoor.jp/study/3729/storage/1069408696.html#82
↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑ ↑
この掲示板に優秀な書き込みをして、総額148万円の賞金をゲットしよう!(*^^)v
0455デフォルトの名無しさん
2015/01/21(水) 01:57:16.89ID:xWoGAr8y特に2次元で初期化しようと思ってうまく出来た事がない。
いつも結局バカみたいに代入することになる。
0456デフォルトの名無しさん
2015/01/21(水) 02:41:54.86ID:/GBHGoCO多次元の初期化は手間がかかって困る
0457デフォルトの名無しさん
2015/01/21(水) 03:15:12.53ID:qBatZcehイテレーター使ってる?
二次元配列を
Array.new(10, Array.new(3))
みたいにやっても駄目
Array.new(10){Array.new(3)}
ならちゃんと二次元配列になる
上の書き方だとArray.new(3)が呼び出されるのは一回だけで、その一つのオブジェクトをすべてが参照してる状態になってる
下だと要素の数分Array.new(3)が呼び出されて、それぞれが別のオブジェクトを参照してる状態になる
0458デフォルトの名無しさん
2015/01/21(水) 04:27:38.93ID:Jm/vxooPirb(main):001:0> mtx = Array.new(3) { |y| Array.new(2) { |x| [x, y] } }
=> [[[0, 0], [1, 0]], [[0, 1], [1, 1]], [[0, 2], [1, 2]]]
irb(main):002:0> puts mtx.map { |xs| xs.map {|(x, y)| format("(%d, %d)", x, y )}.join(', ') }.join("¥n")
(0, 0), (1, 0)
(0, 1), (1, 1)
(0, 2), (1, 2)
=> nil
irb(main):003:0>
0459デフォルトの名無しさん
2015/01/21(水) 11:01:19.39ID:NFFhaRBc>念のためだけど外部からの入力にevalしないでね
>eval "[1, 2, `del yourfile`]" とかで死ぬから
ありがとうございます。
そんな高度な事はしてないので問題ないのですが、考えてみると怖い命令ですね。
0460デフォルトの名無しさん
2015/01/21(水) 12:30:39.60ID:aA1tn61G0461デフォルトの名無しさん
2015/01/21(水) 21:20:45.16ID:UODHxGjGゆえにnilの代わりにカラ配列を使ってるような構造には弱い。
0462デフォルトの名無しさん
2015/01/21(水) 23:32:42.08ID:2ayQ13oI大抵は
(1..n).map{|i|(1..m).map{|j| i+j }}
みたいにmapで作るわ
0463デフォルトの名無しさん
2015/01/21(水) 23:46:58.80ID:e6Du7UL/関数型スタイルに近づくと配列をインプレースで更新すること自体あんまりやらなくなるからな
0464デフォルトの名無しさん
2015/01/22(木) 23:36:58.70ID:7mvG+vzBnilだとmethod_missingになっちまうし。
俺はnil?で場合分けする方が特異に感じる。
0465デフォルトの名無しさん
2015/01/23(金) 00:28:00.11ID:jEuXrIMXそうじゃなくて、使うときに作るんだよ
大抵、事前に配列を初期化する必要があるのは配列作った後で中身を更新する場合だ
0466デフォルトの名無しさん
2015/01/23(金) 07:55:08.06ID:0oMxYtZz亀だけど、他スクリプトの文字列配列を“任意記号でつなげた単なる文字列”にしといて、受け取る側でsplitする方法もある
多少面倒臭いけどeval乱用しなくて済むと思う
0467デフォルトの名無しさん
2015/01/23(金) 08:03:28.83ID:4FZvpJWIぜひ標準で欲しい
0468デフォルトの名無しさん
2015/01/23(金) 10:26:57.08ID:kLOpfBTA文 if 条件2
end
if修飾子(後置if)
これでも、文の構造を間違わないのには感心する。
たぶん、if,endの数を数えているのだろう
それに、++,-- のインクリメント・デクリメントが無い。
グローバル変数には、'$'を付ける。
内側のスコープで、外側の変数を使えない
これらにより、ややこしい間違いを防げるなど、
Matzはよく考えているな
0469デフォルトの名無しさん
2015/01/23(金) 11:33:14.50ID:jEuXrIMX初心者向けの本一冊読めば>>468でも作れるよ
0470デフォルトの名無しさん
2015/01/23(金) 15:30:18.97ID:rINQxVSH対処として本家メーリングリストを覗いてみたのですが・・
お馬鹿な質問してる人はほぼいないので迷惑がかかりそう・・
いまの対処法はサンプルコードを時間をかけて探す・・
その中に理解できないのがコードがあると、さらに積み重なり・・・ それを調べるとどんどんと深みにハマっていき
いったい何を探しているのか・・・ 泥縄式
0471デフォルトの名無しさん
2015/01/23(金) 15:36:10.47ID:ca5XUMYE0472デフォルトの名無しさん
2015/01/23(金) 16:06:21.22ID:3yNzan63答えられるかわからないけどためしに質問してみては
0473デフォルトの名無しさん
2015/01/23(金) 16:15:03.63ID:uMcR+6pK何か作りたいものを決めて、どうやって作るかという観点で学習したほうが速いと思う。
0474デフォルトの名無しさん
2015/01/23(金) 17:08:49.68ID:kLOpfBTA漏れが今から、初心者としての手本を見せてやろう↓
=begin
〜
〜
=end
ファイルAの中で、=begin,=endで囲まれた部分を、
すべて除いたものを、ファイルBに出力したい
そういうツールある?
無ければ、誰かソースコードを書いて!
お願いしま〜す
0475デフォルトの名無しさん
2015/01/23(金) 17:21:36.65ID:3yNzan630476474
2015/01/23(金) 17:39:05.42ID:kLOpfBTA>>470
ほらね。ものの10分ほどで、
誰かが書いてくれまっしゃろ
ttps://paiza.io/
そしてこれをここにコピペして、実行しますのよ
0477デフォルトの名無しさん
2015/01/23(金) 17:45:50.50ID:flsP1yuaコード読むとかまじめ過ぎんよ
0478デフォルトの名無しさん
2015/01/24(土) 07:15:10.75ID:CE2XF3sB0479デフォルトの名無しさん
2015/01/24(土) 10:28:15.06ID:sa+x1Xzypure windowsは諦めてvagrant使うのが一番手っ取り早い
0480デフォルトの名無しさん
2015/01/24(土) 17:50:50.26ID:zRrZ/E6bRuby開発者・まつもとゆきひろ氏の新言語「Streem」のソースコードを読んでみよう! 〜 文法と構造を規定する「lex.l」と「parse.y」
0481デフォルトの名無しさん
2015/01/24(土) 22:42:20.52ID:sZsKSyLoとおもったら言語設計の学習向けサンプルか
0482デフォルトの名無しさん
2015/01/24(土) 23:03:03.44ID:sa+x1Xzy今更C & yaccとか紹介されてもなあって感じ
こんなもんわざわざMatzが解説しなくてもどの教科書にも載ってるだろ…
0483デフォルトの名無しさん
2015/01/24(土) 23:13:51.32ID:4gU3kMxY0484デフォルトの名無しさん
2015/01/24(土) 23:33:26.92ID:sZsKSyLoMatzのは日経Linuxに載るそうな
0485デフォルトの名無しさん
2015/01/24(土) 23:41:25.90ID:uW+Hb/Mt自分は使う側だからと思ってる人も一度はトライすべき
だとわかっていながらやらずに10年が経った
0486デフォルトの名無しさん
2015/01/24(土) 23:57:28.38ID:sa+x1Xzy考え方には同意するが、勉強目的で処理系を作るなら字句解析や構文解析は手書きするべきだと思う。
他で役立つのって特にその部分だから。
0487デフォルトの名無しさん
2015/01/25(日) 00:20:22.56ID:J7dtxD4Gそうかぁ?
構文解析とか泥臭い部分はライブラリに投げた方が勉強する部分にフォーカスできると思うけどなー
lexとかyaccは実績も超がつくほどあるものなんだし
0488デフォルトの名無しさん
2015/01/25(日) 00:29:56.97ID:6mma36Hgあとはノードに対応する処理を適当に書いていくだけで、それこそ単純作業だわ
ソースコードのパースは再帰とか抽象化とかプログラミングの基礎体力を付けるにはいい練習だよ
0489デフォルトの名無しさん
2015/01/25(日) 00:33:47.61ID:J7dtxD4Gプログラミングと言語設計とは別の話だと思うが
0490デフォルトの名無しさん
2015/01/25(日) 00:45:12.52ID:DUp54GVi配列の要素は配列([...])、正の10進数(123)、ダブルクォート文字列("...")に限定
例 [1, 234, [5, "67", []], 8]
30分で解けたらこのスレ卒業
0491デフォルトの名無しさん
2015/01/25(日) 14:43:11.53ID:R3Fg53INなんか簡単にできるほうほうありませんか?
毎回ソースコードをダウンロードして解凍してgemをインストールしないとダメなんでしょうか?
0492デフォルトの名無しさん
2015/01/25(日) 17:00:44.18ID:n4z0u1el公式のSVNリポジトリからチェックアウトするようにしてもいいけど、
実運用でheadを使うのはさすがに危険だから結局バージョンは選ばなきゃいけないので大して手間変わらん
0493デフォルトの名無しさん
2015/01/25(日) 18:11:58.87ID:3aXiO/4Egit pullしたら楽でした
でもgit tagに2.6が含まれていませんでした
githubのredmineのtagを見に行ったら2.6.1まであったのに何故ですかね
0494デフォルトの名無しさん
2015/01/25(日) 18:39:45.60ID:KIPmV6lxbad response Not Found 404って出てきてできないんですが
どうしたらいいですが?
0495デフォルトの名無しさん
2015/01/25(日) 20:47:42.10ID:6mma36Hg公式のSVNリポジトリ使いなよ
gitのはあくまでミラー
0496デフォルトの名無しさん
2015/01/26(月) 17:03:01.35ID:5plsOsTaありがとうございました
0497デフォルトの名無しさん
2015/01/26(月) 19:42:21.97ID:vPTi7mVlこれ日曜から始まるようにする設定て何処でするんですか?
0498デフォルトの名無しさん
2015/01/26(月) 22:29:09.39ID:BphtuPQwhttps://groups.google.com/forum/#!forum/redmine-users-ja
0499474
2015/01/27(火) 10:05:23.11ID:giG1hU9r475のやり方だと、
=begin
〜
=end
〜この部分も、削除されてしまう
=begin
〜
=end
=begin,=end間は(=begin,=endも含めて)削除したいが、
=end,=begin間はそのまま残したい。HELP!
0500デフォルトの名無しさん
2015/01/27(火) 11:29:39.64ID:JO7zk1Y+0501デフォルトの名無しさん
2015/01/27(火) 17:05:12.78ID:AnZGR/ca「最初のbegin〜endしか削除されません」とか言ってきそう・・・
0502デフォルトの名無しさん
2015/01/27(火) 23:03:18.27ID:6gdvwZDa何か変なんですがこれはどういう現象なんでしょうか?遡って代入されてる?
a = b = 1
a = 3
p a #=>3
p b #=>1 bは弄ってない
p "-----"
a = b = []
a << 3
p a #=>[3]
p b #=>[3] 何も入れてないのに勝手に3入ってる
aとbを逆にしてもaに勝手に3入ります
0503デフォルトの名無しさん
2015/01/27(火) 23:34:18.96ID:w1lsmrbK一口で言えば、代入演算子(参照先変更)と<<演算子(参照先は変更しない)の違い
>a = b = 1
a と b が 1 という同一のオブジェクトを参照するようにする
>a = 3
a が 3 というオブジェクトを参照するよう変更する
>a = b = []
a と b が新規の、同一の空配列オブジェクトを参照するように変更する
>a << 3
a の参照先オブジェクト(b と同じ配列)に対して << メソッドを、3 を引数として呼び出す
その動作として、a の参照先オブジェクト(b と同じ配列)に 3 という要素が追加される
と言うわけで、勝手には入ってない
0504デフォルトの名無しさん
2015/01/27(火) 23:42:27.51ID:/EXITyOc例えば、
p a["山田","田中"] #=>8
p a["田中","山田"] #=>8
p a["山田","加藤"] #=>2
のような感じです
どのようにすればいいでしょうか?
0505デフォルトの名無しさん
2015/01/27(火) 23:52:53.45ID:ed+BP8Ek0506デフォルトの名無しさん
2015/01/28(水) 00:01:14.15ID:e5hkyOyGありがとうございます
やっぱりソートしてから引数にとるしか方法は無いんでしょうか…
呼び出したい時に一々ソートするのはスマートで無い気がして…
0507デフォルトの名無しさん
2015/01/28(水) 00:36:13.90ID:UCeJVedt小手先の実装のスマートさなんかどうでもよくなる
0508デフォルトの名無しさん
2015/01/28(水) 00:50:00.54ID:e5hkyOyGなるほどそうですね
ソートしてアクセスする構造をクラスでラップして使うことにします
ありがとうございます
0509デフォルトの名無しさん
2015/01/28(水) 06:54:30.56ID:PxKHvaRd返信遅れましたありがとうございます
代入って単純に引数与えるだけじゃないんですね
配列も"n"と同じようにリテラルぶっ込んでるだけだと思ってたのに複雑だ・・・
0510406
2015/01/28(水) 09:32:53.14ID:g/K+Ovy5Rubyでは、このようにいくら代入しても、コピーが作られず、
単に参照(変数のアドレス)がコピーされるだけだから、
同一のオブジェクトを指す
ここで、文字列の連結に、<< を使うと、
すべての変数が変わってしまう。
+ を使えば別のオブジェクトが作られる
ここで、b=10とすれば初めて、
bは別のオブジェクトとして作られる。Cow(Copy on write)
必要に迫られるまで、なるべく
新たなオブジェクトを作らないようになっているのだろう
オブジェクトの内容そのものを変える、
破壊的なメソッドを呼ぶ際は、同一のオブジェクトは、
すべて変更されてしまうので要注意
漏れも、<< で苦しんだ。この辺を見て
>>434 >>444
0511デフォルトの名無しさん
2015/01/28(水) 10:15:58.27ID:PxKHvaRd質問するときは原因箇所を絞って簡略化したほうがいいですよ
その経過で解決する事もありますし
0512406
2015/01/28(水) 11:14:40.77ID:g/K+Ovy5にも書いたけど、Rubyのさかのぼり代入は怖い
$a=b=c=d=3
ここで、d << 10 とするだけで、すべての変数が310になる。
この参照の連鎖は順次、
関数の引数に渡していっても、断ち切れない
グローバル変数までさかのぼって、変更されてしまう
0513デフォルトの名無しさん
2015/01/28(水) 11:46:52.90ID:H7DQugwdunlessなんて削除するべきだ
pとかよりもっとわかりやすい名前を付けるべきだ
0514デフォルトの名無しさん
2015/01/28(水) 11:54:27.66ID:slxhZiXo0515デフォルトの名無しさん
2015/01/28(水) 11:55:41.74ID:slxhZiXo彼らは多少頭のネジが緩いんで
0516デフォルトの名無しさん
2015/01/28(水) 13:03:50.23ID:g/K+Ovy5Pythonだと、print, pprint
だから面倒くさい
0517デフォルトの名無しさん
2015/01/28(水) 13:12:56.41ID:RMHK3Bx60518デフォルトの名無しさん
2015/01/28(水) 20:51:43.59ID:JcHJzKklさかのぼる、と考えるから破綻するんよ。
変数に入ってるのは、あくまで参照。それだけ頭に入れてれば破綻しない。
0519デフォルトの名無しさん
2015/01/28(水) 21:00:02.47ID:JcHJzKkl基本的にRubyの変数は「何かを指し示しているだけ」であり「中身は無い」
中身のように見えるものは「名もなき場所にある」
代入という操作をしたとき、変数は別の場所を指すように書き換わる
それ以外の操作は、中身に対して行われる
そんだけだよ
さかのぼり代入なんてことは何もしてない
同じ人を指さしてるのに、別人に見えたらおかしい
0520デフォルトの名無しさん
2015/01/28(水) 21:10:51.95ID:ncVbnS0H0521デフォルトの名無しさん
2015/01/28(水) 21:38:51.40ID:GG6BgqZu0522デフォルトの名無しさん
2015/01/28(水) 22:01:28.15ID:93RLbcHPちょっと思いつかない
0523デフォルトの名無しさん
2015/01/28(水) 22:05:04.76ID:OirFWuRy0524デフォルトの名無しさん
2015/01/28(水) 22:51:58.62ID:wg9ENB6e0525デフォルトの名無しさん
2015/01/28(水) 23:15:29.17ID:93RLbcHP0527デフォルトの名無しさん
2015/01/29(木) 01:33:39.82ID:3hN9k9gR代入はヒモを握ること
それまで別の風船のヒモを握っていたなら手放すことになる
<< は風船そのものに字を書き加えること
0528デフォルトの名無しさん
2015/01/29(木) 03:22:32.34ID:4rYhRek3puts b
a = " added"
puts a
b << a
puts b
(c = "base") << " added"
puts c
# C:\work>ruby base.rb
# base
# added
# base added
# base added
0529デフォルトの名無しさん
2015/01/29(木) 10:07:40.13ID:GmAMxhIRInteger#<<は破壊的じゃないから
a=b=3; b<<10
とかやってもaもbも3072にはならない
0530デフォルトの名無しさん
2015/01/29(木) 10:11:39.06ID:GmAMxhIR0531デフォルトの名無しさん
2015/01/29(木) 10:30:49.47ID:3kqkMOuX不用意に連鎖代入 a = b = [] を使わない
変数は箱というよりはむしろ名札なり矢印なり風船のヒモを握る手
オブジェクトそのものを書き換える操作に注意
風船の例えは元ネタがあるのか知らないけどいい例えだと思った
誰も風船掴んでなかったらどこかへ飛んで行ってしまうわけだし
0532デフォルトの名無しさん
2015/01/29(木) 19:19:40.18ID:IUSSB121アンタの解釈した情報もうしわけないが不要だわ
0533デフォルトの名無しさん
2015/01/29(木) 20:09:54.90ID:OMwCYHUr簡単なGUIもどきを作ろうと試みているのですが
可能なのかアドバイスをお願いします。
クイズのような問題提示→ユーザー回答→rubyからの解答
を作ると仮定します
1.
メモ帳等のファイルを開いて、問題文を提示
コンソール上で選択し、結果をメモ帳などに表示すると仮定した場合
リロードの手段をどうしたらよいのか・・・
2.
リロード問題を回避するため
rubyでhtmlを生成し、問題を提示
javascriptでリロードと選択ボタンとフォーム入力を提示
ファイルに回答番号を保存し、rubyが読み込むのを待つ
この場合、ファイルの読み書きをrubyとjavascriptの双方でするため
干渉して不具合にならないのか・・・
そんなことをせずに
鯖を立ててerubyでやれ・・とかナシでお願いします。
cvs形式で保存し、htmlかメモ帳程度の表示でやりたいのです。
身の丈にあった低レベルの覚える事が少ない環境で学んでいこうかなと・・
でもコンソールは目がチカチカするので・・・そちらもナシの方向でw
0534デフォルトの名無しさん
2015/01/29(木) 20:14:04.36ID:bcTkTriTコンソールの背景色を白、文字色を黒にしたらいいんじゃね?
あと鯖ってのは別にマシン1台用意したりする必要はないからな?
0535デフォルトの名無しさん
2015/01/29(木) 20:18:01.12ID:y6zSBPNzruby要らねえじゃん
0536デフォルトの名無しさん
2015/01/29(木) 21:07:53.31ID:3kqkMOuX> 身の丈に合った低レベルの覚えることが少ない環境
ならまず1をコンソール(ターミナル)上でやるべきで
次に2をHTTPサーバとブラウザでやるべきかと思う。そのほうがずっと簡単
1は loop { 問題読み込み; 回答読み込み; 答え合わせ; 結果表示 }
2は標準添付のWebrickが使える
0537デフォルトの名無しさん
2015/01/29(木) 21:09:13.09ID:zGbE6mz9ってやりたいってこと?
これをわざわざrubyとHTMLとjsを絡めて実現するなんてそれこそ身の丈に合ってない気がする
GUIにしたいなら全部jsでやりなよ
0538デフォルトの名無しさん
2015/01/30(金) 02:45:08.71ID:X9ozRA2khttp://daily.2ch.net/test/read.cgi/newsplus/1422528823/
0539デフォルトの名無しさん
2015/01/30(金) 05:32:55.78ID:mjc4GdHjありがとうございました
0540デフォルトの名無しさん
2015/01/30(金) 07:31:01.31ID:aVk8cNPyHTML,CSS,JSを使うのは面倒
0541デフォルトの名無しさん
2015/01/30(金) 07:45:37.27ID:x2QQOjZO0542デフォルトの名無しさん
2015/01/30(金) 10:38:25.34ID:4AGK3OqT0543デフォルトの名無しさん
2015/01/30(金) 10:54:29.13ID:bwBigbzQary.map{$a**2}
みたいに書けないかということです
0544デフォルトの名無しさん
2015/01/30(金) 11:07:09.14ID:bYNQdyK70545デフォルトの名無しさん
2015/01/30(金) 11:12:34.31ID:Abjby/dC聞いたこと無いね
普通のメソッドの引数でもそんな書き方無いから、ブロックもないでしょ
0546デフォルトの名無しさん
2015/01/30(金) 11:32:32.70ID:Abjby/dCyieldはそれに近いな
0547474
2015/01/30(金) 11:33:46.02ID:aVk8cNPy最長マッチ .*
最短マッチ .*?
最初の1か所だけ置換 sub
すべての箇所を置換 gsub
最終的にこれですべての、=begin =end間を削除できますた
print File.read('File1').gsub(/^=begin.*?^=end/m, '')
0548デフォルトの名無しさん
2015/01/30(金) 12:15:45.16ID:aVk8cNPyFile.read('fileA').scan(/abc/){|matched| count += 1}
ブロック変数を使わず、
abc にマッチした回数だけを知りたい場合、
このブロック変数を省略できますか?
0549デフォルトの名無しさん
2015/01/30(金) 12:21:19.07ID:hVjevdcMp File.read('fileA').scan(/abc/)
で確認してみるといい
0550548
2015/01/30(金) 15:23:09.41ID:aVk8cNPy2
p 'aabccababca'.scan(/abc/)
["abc", "abc"]
ありがとう
ところで、Rubyには変数宣言を強制する、
JSの"use strict"のような、厳格モードはありますか?
var a=0;
0551デフォルトの名無しさん
2015/01/30(金) 18:57:53.85ID:gb3cROEI0552デフォルトの名無しさん
2015/01/30(金) 20:33:27.30ID:dK03mtQo何度か提案はされてはいるが、受け入れられてないね
0553デフォルトの名無しさん
2015/01/30(金) 20:46:23.90ID:BzgyBeS/RubyはJSと違ってグローバル変数には必ず$付けなきゃいけないから、
「ローカル変数のつもりで代入したらグローバル変数だった」というのがまずありえない
だから変数宣言がなくても問題ないんだよ
JSのvarってブロックの中で使ってもスコープはメソッド全体になってしまうクソ仕様だから、
varの有無は「ローカル変数か、より広域な変数か」を指定する以上の意味はないので
Rubyの変数名で上記2つを区別する方式に比べてJSのvarが何ら安全性に勝るということはない
0554デフォルトの名無しさん
2015/01/30(金) 21:59:14.01ID:gb3cROEI0555デフォルトの名無しさん
2015/01/30(金) 22:24:09.78ID:+5BNGDg80556デフォルトの名無しさん
2015/01/30(金) 22:59:32.61ID:3CnRTZyK0557550
2015/01/31(土) 00:57:27.52ID:uC1xfWdZ同じスコープ内で、
1, l(エル)、0, O(オー)などの書き間違いで、
別の変数の宣言になってしまうのを防ぎたい
0558デフォルトの名無しさん
2015/01/31(土) 02:13:10.51ID:SZVKn3yTまあ宣言と定義が未分明なRubyじゃ100年たっても実装されるか微妙だな
0559デフォルトの名無しさん
2015/01/31(土) 06:53:11.40ID:s4+AsH4m0560デフォルトの名無しさん
2015/01/31(土) 08:06:56.70ID:Ozkgovrmそれが問題になるほど巨大なメソッドを書くなアホ
0561デフォルトの名無しさん
2015/01/31(土) 09:30:07.21ID:SZVKn3yTコードの長さとは関係ないよ
0562デフォルトの名無しさん
2015/01/31(土) 10:24:29.01ID:gojz97z40563デフォルトの名無しさん
2015/01/31(土) 10:38:26.24ID:Xj+5RYHD0564デフォルトの名無しさん
2015/01/31(土) 10:48:20.45ID:bF0SVAwCプログラミングっていったい何なんやろな
いにしえのタイプライター打つオバちゃんみたいなモンなんやろか
0565デフォルトの名無しさん
2015/01/31(土) 10:52:32.73ID:Ozkgovrm0566デフォルトの名無しさん
2015/01/31(土) 10:54:54.05ID:gojz97z40567デフォルトの名無しさん
2015/01/31(土) 10:56:21.22ID:SZVKn3yT0568デフォルトの名無しさん
2015/01/31(土) 11:05:37.44ID:gojz97z40569デフォルトの名無しさん
2015/01/31(土) 11:10:29.97ID:gojz97z4自分が理解しやすい変数名にして_1 _2 とか付けなきゃいんじゃない
レビューで変なネーミングが気になるなら最後に置換すりゃいいだけだし
0570デフォルトの名無しさん
2015/01/31(土) 11:10:40.58ID:SZVKn3yT0571デフォルトの名無しさん
2015/01/31(土) 11:16:11.00ID:gojz97z40572デフォルトの名無しさん
2015/01/31(土) 11:16:37.37ID:29y+W13dそれは止めた方がいいと思います
0573デフォルトの名無しさん
2015/01/31(土) 11:18:26.81ID:29y+W13dtypoなんかリテラル文字列以外では無縁なのです
活用できるものを活用してないだけでセンスゼロなのです
0574デフォルトの名無しさん
2015/01/31(土) 11:45:59.15ID:Hs82A+Y60575デフォルトの名無しさん
2015/01/31(土) 12:09:16.42ID:Xj+5RYHDruby-lintってのはしてくれる
0576デフォルトの名無しさん
2015/01/31(土) 12:54:23.05ID:iD+tawguRubyで気軽に使えて標準で補完ができるIDE的なものがあればいいのに
それがないから厳格モード的なのがあってもいいと思う
技術的に難しい部分ってあるのかな?
Matzがいらないと思ってるだけかな?
0577デフォルトの名無しさん
2015/01/31(土) 13:49:00.77ID:gojz97z40578デフォルトの名無しさん
2015/01/31(土) 13:59:36.70ID:29y+W13dなんか力点がおかしいんですよ
もしくは制限プレイとでも言うんですかね
0579デフォルトの名無しさん
2015/01/31(土) 14:05:24.47ID:gojz97z40580デフォルトの名無しさん
2015/01/31(土) 16:19:23.10ID:fH2ezq9N0581デフォルトの名無しさん
2015/01/31(土) 17:13:09.77ID:RulzY4Di0582デフォルトの名無しさん
2015/01/31(土) 17:18:51.24ID:Hs82A+Y6くれないと思う
が、そもそもundefinedはユニットテスト通らないし
0583デフォルトの名無しさん
2015/01/31(土) 17:21:16.06ID:fH2ezq9Nそうだね
未定義変数への参照は通った瞬間にエラーなのでそこを通るテストを書いただけで検知できるね
代入の方はその後その変数は使われないだろうから、rubocopが検知してくれる
0584デフォルトの名無しさん
2015/01/31(土) 18:00:35.57ID:Xj+5RYHDと思うのでいまどきの入門書書く人はそこらへん留意していただけると嬉しいです
0585デフォルトの名無しさん
2015/01/31(土) 18:08:45.92ID:L1WBwZOUなぜ__send__だけにしておかなかったのだろう。
0586デフォルトの名無しさん
2015/01/31(土) 18:26:49.34ID:Hs82A+Y6どういった状況で?
0587デフォルトの名無しさん
2015/02/01(日) 15:00:59.60ID:cy2W8bd9数値.to_s が必要だが、
一々面倒なので何とかならないか?
global変数は、すべてのファイルで共通になるが、
そのファイル内だけのglobal変数は無いの?
C言語で言うと、extern, staticの区別
0588デフォルトの名無しさん
2015/02/01(日) 15:08:13.07ID:3vNkahG1#{...} を使えばいいんじゃね?
0589デフォルトの名無しさん
2015/02/01(日) 16:50:47.88ID:lQgEbHmF0590デフォルトの名無しさん
2015/02/01(日) 16:56:53.64ID:XkAsCPXm新型のputsを自作すればいい
0591デフォルトの名無しさん
2015/02/01(日) 17:13:44.38ID:zDAnvj5f仕様
aが文字列か数値か判別して、数値なら文字列に変換
bが文字列か数値か判別して、数値なら文字列に変換
a + bを標準出力
0592デフォルトの名無しさん
2015/02/01(日) 17:48:23.39ID:cgGRoexen = 1
puts "#{n} + 1 = #{n+1}"
puts "%d + 1 = %d" % [n,n+1]
0593デフォルトの名無しさん
2015/02/01(日) 18:04:22.58ID:CCPA60Z6irb(main):001:0> def my_puts(*xs); puts xs.map { |x| x.to_s }.join; end
=> :my_puts
irb(main):002:0> my_puts "x = ", 123
x = 123
=> nil
irb(main):003:0>
0594デフォルトの名無しさん
2015/02/01(日) 19:07:56.22ID:jb7bJiwhむしろString.+をいじった方がいいのでは
0595デフォルトの名無しさん
2015/02/01(日) 19:11:56.17ID:idWDCOsc使いたくもないです
0596デフォルトの名無しさん
2015/02/01(日) 19:16:31.23ID:esW6O74B他の特定の言語では当然だったかもしれないが、その言語ではない言語では当然ではない
no = 596
puts "このレスは#{no}番目です"
0597デフォルトの名無しさん
2015/02/01(日) 19:26:10.02ID:ymu35Jul0598デフォルトの名無しさん
2015/02/01(日) 19:30:08.08ID:OM+Gcdnk動的型だと実行してみるまでどっちの意味になるかわからないからまずいわけ
0599デフォルトの名無しさん
2015/02/01(日) 20:18:03.21ID:QmWK2eIJ0600デフォルトの名無しさん
2015/02/01(日) 20:27:04.35ID:esW6O74B組み込み基本のクラスを使う限りどっちの意味にもならない
irb> 1 + "one"
TypeError: String can't be coerced into Fixnum
from (irb):1:in `+'
irb> "one" + 1
TypeError: no implicit conversion of Fixnum into String
from (irb):2:in `+'
自作クラスの自作メソッドの挙動やto_strの乱用にまでは責任を持てない
0601デフォルトの名無しさん
2015/02/01(日) 20:57:21.24ID:j8xgKLPZファイル所属の変数は無いが
モジュール所属の変数はあるので、ファイル毎にモジュール作れば良い
0602デフォルトの名無しさん
2015/02/01(日) 22:17:06.17ID:dK11pYT40603デフォルトの名無しさん
2015/02/01(日) 22:23:41.26ID:lVVBipUTつぎ込めば、いつか見返りがある儲けられる、と思い込んでいるのです。
絶対に抜けられません。
0604デフォルトの名無しさん
2015/02/01(日) 23:17:13.34ID:3vNkahG1あぁ、「どうせあの葡萄はすっぱいに決まってる」という寓話を地で演じてるのか
0605デフォルトの名無しさん
2015/02/02(月) 06:12:00.34ID:hiXwrLan0606デフォルトの名無しさん
2015/02/02(月) 07:13:04.85ID:r+Lk9y7y0607デフォルトの名無しさん
2015/02/02(月) 08:27:04.62ID:2QTFDeMY楽しいと感じないのにタイプしてるのはバカか仕事なのです
呪うべきは楽しくないのに選択した自分か、仕事を押し付ける上司
それが答えなのです
0608デフォルトの名無しさん
2015/02/02(月) 08:36:52.46ID:KT6cnHtO0609デフォルトの名無しさん
2015/02/02(月) 08:40:34.31ID:2QTFDeMY0610デフォルトの名無しさん
2015/02/02(月) 08:42:13.17ID:aWW6SCxB泣きながら他の言語で書き直すことになる
0611デフォルトの名無しさん
2015/02/02(月) 08:45:32.43ID:2QTFDeMY餅は餅屋、何でも出来ると勘違いしてる判断ミスじゃないの
0612デフォルトの名無しさん
2015/02/02(月) 09:43:03.46ID:rJw1gGUcほんとこれ
0613デフォルトの名無しさん
2015/02/02(月) 10:02:26.21ID:eLVqBz1I0614デフォルトの名無しさん
2015/02/02(月) 10:54:44.07ID:hvFmtfufおなじ疑問を持ってここに来ました
そういうところ見つかりましたか?
あったら教えてください
ここは流れをみるのがつらい
0615デフォルトの名無しさん
2015/02/02(月) 14:02:29.47ID:2QTFDeMY道具とは最適化を図るための手段であって
目的でもゴールでもない
部分最適化を突き詰めれば道具は細分化し、
さらに各自の手に合う物が求められる
その細分化の一部がrubyに過ぎない
求める者がいればその道具を使い、使いにくければ捨てられるだけだ
個々人に差があるのであれば、道具も応じて違いが生じる
手に馴染めば道具
それが最適化ってもんだよ
好きなもんを選べば良いだけの話だ
0616デフォルトの名無しさん
2015/02/02(月) 14:15:15.15ID:dFh+3r/9スタック・オーバーフローでRubyタグを選択して
興味ありそうな投稿を読んだり
わからないことを質問してみたりするのはどうかな?
別に超初心者質問でもいいと思うよ
http://ja.stackoverflow.com/
0617614
2015/02/02(月) 15:59:24.40ID:hvFmtfufありがとうございます
さっそく質問してきました
0618614
2015/02/02(月) 16:46:04.23ID:hvFmtfufコメントに「ありがとう」は避けてくださいとか
スタックオーバーフローの使い方に馴染むのにも時間がかかりそう
0619デフォルトの名無しさん
2015/02/02(月) 17:54:24.83ID:F8krgf3P道具としてもふさわしくない
0620デフォルトの名無しさん
2015/02/02(月) 17:58:55.77ID:w/aGrY+/まあ技術に真摯とかいう言い訳を盾にストレス解消してるカスよりはいいか
0621デフォルトの名無しさん
2015/02/02(月) 18:26:36.59ID:YvYF+i45なにその昭和的解釈
対処上迷惑だから来ないでくれ
0622デフォルトの名無しさん
2015/02/02(月) 18:31:29.83ID:y8op27fVもうここにはくるなよノシ
0623デフォルトの名無しさん
2015/02/02(月) 18:50:05.83ID:V3GmxBlb0624デフォルトの名無しさん
2015/02/02(月) 22:57:16.55ID:P9prHaW7if文でthenは省略できるそうですが、
一行で書くのでなければthenは省略するのが普通の書き方ですか?
0625デフォルトの名無しさん
2015/02/02(月) 23:05:21.29ID:vLsFqgHchttps://github.com/fortissimo1997/ruby-style-guide/blob/japanese/README.ja.md
0626デフォルトの名無しさん
2015/02/03(火) 00:34:40.41ID:zLVytOR3>データファイルの内容はバイナリになるため、
エディタなどでデータファイルの内容を直接編集することは出来ません。
と書かれているので、CSVのように扱えないし、データベースとしては中途半端に見えるのですが。
0627,,・´∀`・,,)っ-○○○
2015/02/03(火) 02:03:48.12ID:ZTQRufFpテキストやSQLiteデータベースならたしかに他のアプリからは読み出しやすいかもしれないが
Rubyから読み出すときにいちいち解析が必要だ。
変数の実体が単一のIntegerやStringだったらありがたみは感じないかもしれない。
だがArrayやHash, Classなど複数まとめたデータ構造になると話は変わってくる。
汎用のRDBに保存するにもデータ構造を定義するスキーマが必要だが
Rubyのデータ構造は動的で、配列ひとつとっても、要素ごとに別々のオブジェクト型を持つことができる。
そんなものを汎用のデータベースに保存しようと思ったら手間が大変です。
だからRubyネイティブのデータ構造を保ったまま保存するライブラリが必要なわけ。
0628デフォルトの名無しさん
2015/02/03(火) 06:49:11.99ID:Oq2Uxu+K一般論としてあんまり省略はしない
なぜならわかりにくいから
「省略が許されているから」という理由で省略したりはしない
一方、省略したほうがわかりやすい場合は省略する
たとえばいくつかの関数的メソッドの引数カッコ()
わかりやすいってなんやねんという話に帰着
0629デフォルトの名無しさん
2015/02/03(火) 15:03:34.31ID:kH1e55rkmodule A
def foo
end
end
module B
def foo
#ラップ
super
end
end
class C
extend A
foo
end
これって可能なのでしょうか?
0630629
2015/02/03(火) 15:54:13.59ID:kH1e55rk0631デフォルトの名無しさん
2015/02/03(火) 17:32:14.67ID:jSs0xbxAインデックスが渡ってこないのですか?
一々、自分でカウントするのが面倒くさい
while 条件 do |i|
end
i = 0
while 条件
i += 1
end
それと、後判定の構文はありますか?
do
while 条件
do |i|
while 条件
0632デフォルトの名無しさん
2015/02/03(火) 19:48:01.54ID:fwrgjvoe1. each_with_index
2. begin ... end while
0633デフォルトの名無しさん
2015/02/03(火) 22:00:20.05ID:8WdQQTPe0634デフォルトの名無しさん
2015/02/03(火) 23:51:10.62ID:bJajSEkiまたこのガイドラインによれば省くべきらしい
https://github.com/bbatsov/ruby-style-guide#no-then
0635,,・´∀`・,,)っ-○○○
2015/02/04(水) 02:13:03.76ID:mZ2NyWa4あれはC系というよりPascalの文法からの輸入だと思ってるが
0636デフォルトの名無しさん
2015/02/04(水) 10:45:02.52ID:iowEZhLp[1,2,3]
[1,2,[3,4]]
{ a: 1, b: 2 }
{ a: 1, b: 2, c: { d: 4 } }
これらを区別したいんですが
この区別をしたいです
0637デフォルトの名無しさん
2015/02/04(水) 11:25:54.95ID:o8a0pYfq0638デフォルトの名無しさん
2015/02/04(水) 11:56:45.85ID:gXcODlq6# p f.class
p f.kind_of?(Array)
}
print "\n"
gg = { a: 1, b: 2, c: { d: 4 } }
gg.each {|h,m|
# p h.class
#p m.class
p m.kind_of?(Hash)
}
0639デフォルトの名無しさん
2015/02/04(水) 11:57:42.44ID:gXcODlq60640636
2015/02/04(水) 16:54:44.49ID:iowEZhLpただ、これで両方ともtrueなのはなぜですか?
{ a:1 }.none? { |v| Hash === value }
{ a:1, b: { c: 2 } }.none? { |v| Hash === value }
0641デフォルトの名無しさん
2015/02/04(水) 17:17:03.80ID:XrYBwfOz0642636
2015/02/04(水) 17:32:01.21ID:iowEZhLp0643デフォルトの名無しさん
2015/02/05(木) 20:18:03.06ID:smQR/Z44いつもhoge.class <=> Klassとかってしてたから便利だ
0644デフォルトの名無しさん
2015/02/05(木) 20:25:21.86ID:jLw4sTHC0645デフォルトの名無しさん
2015/02/05(木) 20:46:47.76ID:Tpxi4Jvuともあれ、Rubyでは文と式はきちんと使い分けることができるので使いわけよう
他人に説明するときはなおさら
0646デフォルトの名無しさん
2015/02/05(木) 20:50:01.20ID:2+nUOnq40647デフォルトの名無しさん
2015/02/05(木) 21:05:34.07ID:4svq36dE0648デフォルトの名無しさん
2015/02/05(木) 21:16:13.66ID:4svq36dE従って、文法上は「case式は式である」というのと同程度には「式は文である」というのも正しい
0649デフォルトの名無しさん
2015/02/06(金) 05:12:36.55ID:FeYXODPI0650デフォルトの名無しさん
2015/02/06(金) 07:12:51.33ID:VJ9IpT0aだが少なくともcase式の値を使わなければそれは文そのもの
0651デフォルトの名無しさん
2015/02/06(金) 11:36:20.81ID:MMq1EYgoEMPTY = ""
puts EMPTY
base = EMPTY
base << " added"
puts base
puts EMPTY
puts "orz"
empty = ""
base = empty
base << " added"
puts base
# C:\work>ruby empty.rb
#
# added
# added
# orz
# added
0652デフォルトの名無しさん
2015/02/07(土) 11:23:55.99ID:tuovU1tZどのようにすれば良いですか?
【sample.rb】
-------------------------------------------------
#! ruby -EWindows-31J
# -*- mode:ruby; coding:Windows-31J -*-
require 'webrick'
require 'webrick/httpproxy'
ProxyHandler = Proc.new(){ |req,res|
puts res.body
}
ProxyServer = WEBrick::HTTPProxyServer.new({})
ProxyServer.start
-------------------------------------------------
0653デフォルトの名無しさん
2015/02/07(土) 12:10:13.92ID:tuovU1tZ0654デフォルトの名無しさん
2015/02/07(土) 12:30:30.00ID:PMml+WYKrequire 'webrick'
require 'webrick/httpproxy'
server = WEBrick::HTTPProxyServer.new(
ProxyContentHandler: Proc.new{|req, res| p req.header, res.header },
Port: 8929)
trap('INT'){ server.shutdown }
server.start
0655デフォルトの名無しさん
2015/02/07(土) 13:12:14.03ID:uwz1/LFp0656デフォルトの名無しさん
2015/02/07(土) 14:10:42.49ID:zogMm8qcProxyがHTTPS通信を開始するためにはConnectメソッドを処理する必要があるが
Webrickはこれを処理できる仕組みになっていないから
あと、透過型Proxy自体はヘッダーと何の関係もない
たぶんSSLによる暗号化を複合しないとリクエストが分からないから転送しようがないのでは?
と考えたのだと思うが、Proxyはそんなことしない
Connectメソッドによって確立されたトンネルにデータを流すだけ
0657デフォルトの名無しさん
2015/02/07(土) 14:41:58.65ID:tuovU1tZ今自社の開発案件でスマホアプリのHTTPS通信の
解析を行う必要があったんですが、Webrickでは無理という事でしょうか?
単純にmitmproxyと同じ事をrubyで実装したいのですが
その場合どのように行えば良いでしょうか?
0658デフォルトの名無しさん
2015/02/07(土) 17:07:04.01ID:zogMm8qcHTTPとSocketを知っているなら数十行くらいで書けるでしょう
ProxyはConnectで指定されたホストではなく
解析用のホストに接続するようにする
解析用のホストで動くサーバーは普通にWebrickで書いていい
HTTPSを受け付けるようにし、証明書を設定しておくこと
ところで、これは素朴なMITM攻撃の手法であるから
普通のアプリなら証明書検証過程でエラーにされる
したがってmitmproxyで通信を解析できるのは
自分で証明書検証方法を指定できるもの(または検証していないもの)に限られる
Androidは検証漏れのあるアプリが多く
IPAから注意喚起が行われている
0659デフォルトの名無しさん
2015/02/07(土) 20:50:36.17ID:tuovU1tZ親切に教えて下さってありがとうございました。
どうにか実装したかったんですけど、自分のスキルでは
困難である事がよくわかりました。
0660デフォルトの名無しさん
2015/02/09(月) 01:08:14.17ID:lI/ZsD+9def == (other)
true
end
end
こんなクラスを作って
false == Hoge.new
-> false
Hoge.new == false true
->true
って右辺と左辺を取り替えて評価すると結果が違うんですが、イコールで
結んでいるのに結果が違うのは欠陥じゃないですかね?
0661デフォルトの名無しさん
2015/02/09(月) 01:34:42.68ID:xK+TuziD結果が同じじゃなくて当たり前
foo(hoge)とhoge(foo)の結果が違うのは欠陥じゃないですかねって言ってるのと同じレベル
0662デフォルトの名無しさん
2015/02/09(月) 01:48:07.63ID:nauiaCPK> => false
メソッド False#==(other) は自身のクラス TrueClass と引数 other のクラス Hoge が
同値でないから、false を返している
> Hoge.new == false
> =>true
メソッド Hoge#==(other) は(引数 other が何であれ)常に false オブジェクトを
返すよう定義されている
どこにもおかしな振る舞いは見当たらないけど、
もしも「右辺と左辺を取り替えて評価しても結果が同じになる」ことを期待しているならば、
>>660 におけるクラス Hoge の定義が間違っている、と言うしかないね
0663662
2015/02/09(月) 01:49:40.94ID:nauiaCPKX: メソッド False#==(other) は ....
O: メソッド FalseClass#==(other) は ....
0664662
2015/02/09(月) 01:52:57.92ID:nauiaCPKX: .... 自身のクラス TrueClass と ....
O: .... 自身のクラス FalseClass と ....
0665デフォルトの名無しさん
2015/02/09(月) 01:58:41.05ID:xK+TuziD他にも訂正すべき箇所が2箇所あると思うんだがw
0666デフォルトの名無しさん
2015/02/09(月) 14:21:07.56ID:AxVgErBeパイプ '|' のような記述で、
マルチスレッド並行処理を行う、
新言語streemを作っている。
ソースコードはgithubにある
libevent, libev, select, epoll
などの関数が出てくる
昨今、CPUのコア数が増えてきたから、
これからは、すべてのコアを使い切ることが求められる
ただし、排他処理に気を使うマルチスレッドよりも、
マルチプロセスの方が、間違いが少ないような気がする
0667デフォルトの名無しさん
2015/02/09(月) 16:06:20.11ID:lErY/OJd0668デフォルトの名無しさん
2015/02/09(月) 17:15:32.39ID:cxy5oANg0669デフォルトの名無しさん
2015/02/09(月) 21:00:23.45ID:sphOw1wNに対し
=> [[1,2],[2,3],[3,4],[4,5]]
=> [[1,2,3],[2,3,4],[3,4,5]]
=> [[1,2,3,4],[2,3,4,5]]
を得るCoolなやつありませんか?
0670デフォルトの名無しさん
2015/02/09(月) 21:04:43.91ID:NXlsRYy4each_consをうまく使えばできるよ
一発じゃないけど
0671デフォルトの名無しさん
2015/02/09(月) 21:13:06.96ID:sphOw1wNそれだ!ありがとう
0672デフォルトの名無しさん
2015/02/10(火) 01:50:57.21ID:tIfgcH5Iあるのでしょうか。
タスクマネージャで見ているとexcel VBAだと、両CPUの負荷が同じように上がっているが、
ruby だと片CPUの負荷だけが上がり、もう片方はあまり働いていないようです。
0673デフォルトの名無しさん
2015/02/10(火) 02:11:44.78ID:pMPiEmrcVBA は COM で部品化されていてそれぞれ別プロセスだから
0674デフォルトの名無しさん
2015/02/10(火) 02:33:56.95ID:tIfgcH5Iありがとうございます
rubyだとダメなんだ
0675デフォルトの名無しさん
2015/02/10(火) 07:03:23.97ID:w6L2FJ5J頑張ってコア使い切ったところでなあ
0676デフォルトの名無しさん
2015/02/11(水) 02:04:55.42ID:hnLG61DmそれでもJavaは使いたくないと思わせるレベルではあるんだが
0677デフォルトの名無しさん
2015/02/11(水) 02:54:42.43ID:TLA2PyrC100倍の方が近い
0678デフォルトの名無しさん
2015/02/11(水) 03:19:59.79ID:hnLG61Dmじゃ、ベンチ出してみ
10倍の方が正しいのが分かるから
0679デフォルトの名無しさん
2015/02/11(水) 03:22:36.75ID:TLA2PyrCおまえが出せよ
ちゃんとCPUがボトルネックになっているやつな
0680デフォルトの名無しさん
2015/02/11(水) 07:11:34.41ID:XzdqNrdaそうでないとRubyのときの処理中にIO待ち時間が占めていた割合を測っているだけになってしまう
0681デフォルトの名無しさん
2015/02/11(水) 09:49:50.21ID:00aeaMNo0682デフォルトの名無しさん
2015/02/11(水) 10:05:25.00ID:7KIXpa8D直感的に10倍は差が小さすぎると考えてベンチマークを疑うのが普通じゃないかな
0683デフォルトの名無しさん
2015/02/11(水) 10:10:42.68ID:r3BddX0b0684デフォルトの名無しさん
2015/02/11(水) 10:12:59.39ID:XzdqNrda10倍の根拠を示すのは>>678の方だ
0685デフォルトの名無しさん
2015/02/11(水) 10:15:58.43ID:uxm1HOmW第三者
0686デフォルトの名無しさん
2015/02/11(水) 10:30:31.62ID:HV6QGBu9速さが必要な用途にrubyを使った覚えはねえ
低能力者だけ何でもrubyで書いてろよ
0687デフォルトの名無しさん
2015/02/11(水) 10:45:07.71ID:v2pXwonN0688デフォルトの名無しさん
2015/02/11(水) 11:31:06.51ID:x6JgCX17gem list | grep パッケージ名
↑これ以外で
0689デフォルトの名無しさん
2015/02/11(水) 11:43:03.82ID:HV6QGBu9提案した方法も同じ理由で駄目とか言われると萎えてチン子切り落としたくなる
0690デフォルトの名無しさん
2015/02/11(水) 11:46:44.93ID:r3BddX0bgem query -i PACKAGENAME
0691デフォルトの名無しさん
2015/02/11(水) 11:56:30.28ID:x6JgCX17スクリプトから使いたいからです
>>690
これです
0692デフォルトの名無しさん
2015/02/11(水) 12:11:33.44ID:xHvIcpQairbとpryは出ません
0693デフォルトの名無しさん
2015/02/11(水) 12:42:44.80ID:cDpEjOcI#p ary1 = str.slice(/\d\d:\d\d/)
ary2 = str.split(/\d\d:\d\d/)
ary3 = str.split(/(\d\d:\d\d)/)
#ary2.each { |e| p e }
時間を頼りに配列に分割したいのですが
10:35快晴66子供,
12:44曇り23中年,
13:20雨05幼児
どうも上手くいきません。 アドバイスをお願いします
0694デフォルトの名無しさん
2015/02/11(水) 13:10:09.11ID:sK01Ui9b0695デフォルトの名無しさん
2015/02/11(水) 13:12:07.38ID:73gQVPeZこれじゃダメか?
0696デフォルトの名無しさん
2015/02/11(水) 13:15:52.01ID:73gQVPeZ0697693
2015/02/11(水) 15:21:58.95ID:cDpEjOcI?=
に関して、資料を探してみてるのですが
正規表現なのでしょうか? それともsplitのオプションなのでしょうか?
一応、手元の資料、(楽しいruby、レシピブック)を参照してるのですが発見できず、
リファレンスをざっと眺めたのですが・・
合わせて参考になる図書を紹介して頂けると助かります。
正規表現の本を別途購入した方がよいのかな・・・ ruby関連の。
0698デフォルトの名無しさん
2015/02/11(水) 15:32:08.71ID:u2Y4u6H8>もしも「右辺と左辺を取り替えて評価しても結果が同じになる」ことを期待しているならば、
代入じゃないんだから、等号の前後で意味が変わるってのは間違いを呼び込みやすい
良くない仕様だと思う。
こういうのに違和感を感じない奴って数学的センスがないんだろうなあ、と思う。
0699デフォルトの名無しさん
2015/02/11(水) 15:46:18.57ID:uxm1HOmWRubyにこだわらず正規表現の資料に当たるのがいいと思うよ
(?=〜)は肯定先読み
0700デフォルトの名無しさん
2015/02/11(水) 15:52:52.72ID:73gQVPeZ数学的センスとは一体……w
0701デフォルトの名無しさん
2015/02/11(水) 15:54:49.91ID:r3BddX0b横からだけどこれの「先読み、後読み」のところ
http://docs.ruby-lang.org/ja/2.1.0/doc/spec=2fregexp.html
詳説正規表現って本が定番で三章ぐらいまで読めば普段使いには十分
0702デフォルトの名無しさん
2015/02/11(水) 15:55:06.55ID:73gQVPeZとりあえずこれ読んでおけば良いと思う
ttp://docs.ruby-lang.org/ja/2.2.0/doc/spec=2fregexp.html
0703デフォルトの名無しさん
2015/02/11(水) 15:56:45.20ID:73gQVPeZ0704デフォルトの名無しさん
2015/02/11(水) 16:01:09.99ID:sK01Ui9b数学的に違和感があっても
Rubyの仕組み的に違和感がない(むしろ全てレシーバのメソッドで統一されてる)
Rubyは数学じゃなくてプログラミング言語だからそんなにおかしな仕様じゃないと思うけど
0705693
2015/02/11(水) 16:15:37.27ID:cDpEjOcI早速読んでみましたが、何となくでしか理解できないので
紹介された書籍を今からポチってきます
皆さん、ありがとう
0706デフォルトの名無しさん
2015/02/11(水) 16:25:36.31ID:PYSPfi0Q0707デフォルトの名無しさん
2015/02/11(水) 16:50:02.25ID:r3BddX0b0708デフォルトの名無しさん
2015/02/11(水) 16:56:43.99ID:sDJf85Ja∃f∃g s.t. ¬( o(f) = o(g) ⇔ o(g) = o(f) ).
と言おうとしたら既出だった
0709デフォルトの名無しさん
2015/02/11(水) 17:03:48.99ID:X7wVt/Fu「詳説正規表現」を買うのか?
漏れなんか、「たのしいRuby」で正規表現を覚えたけど、
ちょっと使うには十分だよ
それ以上のことは、2chの正規表現スレで、聞けばよい。
一々、買わなくてもよいだろう。
もし買うのなら、そいつのリンクから買ってやれ
0710デフォルトの名無しさん
2015/02/11(水) 17:06:47.22ID:HV6QGBu90711デフォルトの名無しさん
2015/02/11(水) 17:54:07.50ID:xOldc4y+gem install mysql2
すると
ruby/thread.hが無い
と言われるのですが、
thread.hはどうすればインストールされるのでしょうか?
Debianのaptで
ruby
ruby-dev
は入ってます。(1.9.3)
0712デフォルトの名無しさん
2015/02/11(水) 17:58:59.39ID:PYSPfi0Q0713デフォルトの名無しさん
2015/02/12(木) 07:46:08.52ID:9gMH9uw0>>711
https://github.com/brianmario/mysql2#linux-and-other-unixes
libmysqlclient-devかmysql-devel入れろって書いてあるけど入れた?
0714デフォルトの名無しさん
2015/02/12(木) 12:03:09.39ID:gfPr4M9Iクラスで定義したメソッドを.なんちゃらで呼び出せますってはずなのに
メソッド作ってもいないnewが使えてしまうのが謎
0715デフォルトの名無しさん
2015/02/12(木) 12:11:42.06ID:oLOcoqWqCalls allocate to create a new object of
class's class, then invokes that object's
initialize method, passing it args.
This is the method that ends up getting called whenever
an object is constructed using .new.
0716デフォルトの名無しさん
2015/02/12(木) 13:50:20.19ID:pmmZp4nIputs z # →2
こんなことが出来るのを知った
いままでいちいち
if 3==4 then x=1 else x=2 end
puts x # →2
などとやっていた
0717デフォルトの名無しさん
2015/02/12(木) 13:56:04.42ID:oLOcoqWqa = 3 == 4 ? 1 : 2
0718デフォルトの名無しさん
2015/02/12(木) 14:03:01.16ID:vZuNWRuz0719デフォルトの名無しさん
2015/02/12(木) 14:12:14.17ID:pmmZp4nIありがとうございます
知らないことアバカン(=多いの熊本語)
0720デフォルトの名無しさん
2015/02/12(木) 16:27:53.76ID:qdUt/p4n勝手にObjectクラスを継承するから、何も書いてなくてもObjectクラスのメソッドは使える
0721デフォルトの名無しさん
2015/02/12(木) 21:01:46.12ID:ACguu+ql0722デフォルトの名無しさん
2015/02/13(金) 00:21:20.42ID:qAadHGJaRubyではifも式だからね
たぶんLISP由来だろう
最近の言語ではScalaもそうだね
0723デフォルトの名無しさん
2015/02/13(金) 00:21:39.71ID:CzCNKwo/何かいい方法はないでしょうか?
一応Shell::teeというのを見つけたのですがリファレンスマニュアルが
投げやりな感じで困っています・・・
0724デフォルトの名無しさん
2015/02/13(金) 00:28:06.47ID:qAadHGJaログファイルに出しておいて、tail -F でコンソールで見ればいいんじゃない?
0725デフォルトの名無しさん
2015/02/13(金) 01:20:51.80ID:SVZa3gOzif 式だけでなく、 case 式もある
color_num = case color
when :blue; 0
when :red; 1
when :Yellow; 2
else; -1
これらは「関数型プログラミング」と呼ばれるプログラミング・スタイルのひとつ
詳しくは、以下を参照:
・Rubyによる関数型プログラミング
http://www.h6.dion.ne.jp/~machan/misc/FPwithRuby.html
Ruby は「オブジェクト指向な手続き型スクリプト言語」であるけれど、
「関数型プログラミング」にも(他の手続き型言語と比較すれば)極めて適している性質がある
状況に応じて、常識的な「手続き型プログラミング」と簡潔な「関数型プログラミング」とを
自在に使い分けることができるようになることが望ましい
0726デフォルトの名無しさん
2015/02/13(金) 02:16:33.14ID:Hocs4IwUこのスレみているような人は必読の良書だった。
0727デフォルトの名無しさん
2015/02/13(金) 05:54:31.12ID:3tmdVICO個人的に一行whenの場合、文の前はthenだな
何つーか、汎用的な文区切りになっちゃうセミコロンより
whenの一部である以上そうとしか解釈されないthenのが安心感あるというか
…まあ、どうせ複数行whenのときはthen書かずに改行しちゃうから同じっちゃ同じか
0728デフォルトの名無しさん
2015/02/13(金) 13:42:31.60ID:W6lKBquTcaseが値を返すのは関数型で必要とされることの多い性質ではあるけど
それ自体は別に関数型でも何でもないぞ
0729デフォルトの名無しさん
2015/02/13(金) 23:29:34.48ID:v7o1vyZw0730デフォルトの名無しさん
2015/02/13(金) 23:35:16.88ID:qAadHGJaいっそのことLISPぐらいまでいってしまえば、整形はあまり悩まなくてすむのになw
emacs lisp はたまに書くが、整形で悩んだことはほぼない
0731デフォルトの名無しさん
2015/02/14(土) 00:12:54.67ID:/i+i2oPj0732693
2015/02/14(土) 00:27:23.04ID:ng5YU6yI趣味の範疇でruby始めたのですが、
独学の悪いくせで好きなものしかやらない・・・ し覚えない・・。
そこで全体的な知識不足の指標となるかな?
この試験も目指してみようかなと思い立ったしだいです。
別のruby参考資料を買おうか、こっちにしようか悩み中
0733デフォルトの名無しさん
2015/02/14(土) 01:07:33.88ID:ISQup94G広く知識を身につけたいなら基本情報にでも挑戦したほうがRubyプログラミングにおいてもよっぽど役に立つし
Rubyを「使う」スキルが欲しいならRailsでWebサービスでも運営すれば嫌でも身に付く
言語の重箱の隅をつつくのは時間の無駄
0734デフォルトの名無しさん
2015/02/14(土) 01:37:38.64ID:4ueOEeTW変に思えるかもしれないけど他の言語を2つくらい覚えるといいよ
言語の違いなんて大したことではないというのが理解できるとすごく視野が広がる
あんまり特定の言語に執着しないほうがいい
0735デフォルトの名無しさん
2015/02/14(土) 10:04:33.41ID:3EPsJ3bRエディタの対括弧表示見てりゃ間違えないよ
と言うか、括弧を足したり削ったりするときは
現在カーソル位置でなくてそっち見てるかも
0736デフォルトの名無しさん
2015/02/14(土) 13:40:26.34ID:dTMvU3xTRubyのcaseはパターンマッチ(正規表現じゃないぞ)が使えないから、
関数型としては全くもって不足
0737デフォルトの名無しさん
2015/02/14(土) 15:28:57.41ID:15MsuvIHまあ複数できないことが大きな差かもしれんが
0738デフォルトの名無しさん
2015/02/15(日) 10:28:43.99ID:SklWaN/q教えていただけると助かります。
0739デフォルトの名無しさん
2015/02/15(日) 10:46:38.75ID:ABT28a22DSLガ〜とかメタプログラミングが〜とか言ってるのは真似しないほうがいい
元々そんな変態言語ではない
0740デフォルトの名無しさん
2015/02/15(日) 11:28:16.40ID:SklWaN/qありがとうございます。
Nokogiri読みやすそうなので参考になりそうです。
0741デフォルトの名無しさん
2015/02/15(日) 12:50:33.82ID:wv9Dnfvm正解でした、ありがとう。
なにしろRubyは始めたばかりで、ドキュメントの在り処も手探りなんですワ。
0742デフォルトの名無しさん
2015/02/16(月) 03:56:38.95ID:Zn9bWbFW年末に出た外人の翻訳本で、
Rubyの実装系、Ruby1.9のRuby仮想マシンの本。
内容は新しく、Ruby2.0のキーワード引数まで含む
RubyVMは、笹田という日本人が作っていたんだね
2 + 3
2が主体となる数値オブジェクト(レシーバ)
'+'がそのオブジェクトのメソッド
3がそのメソッドの引数
左がオブジェクトで、演算子の左右で、意味が違うんだね。
つまり、関数の糖衣構文
(A + B + C + D).to_s
漏れが、あればよい機能と思うのは、
型の異なるオブジェクトを、幾つかつなげて、
簡単に文字列に変換できるもの
0743デフォルトの名無しさん
2015/02/16(月) 04:44:23.59ID:cj2/WV/Rダウンロードしたフォルダに.rbばかりで.gemが入っていない場合、
どうすればよいですか?
0744デフォルトの名無しさん
2015/02/16(月) 07:44:02.00ID:2rxNb6Sn>(A + B + C + D).to_s
>漏れが、あればよい機能と思うのは、
>型の異なるオブジェクトを、幾つかつなげて、
>簡単に文字列に変換できるもの
'%s%s%s%s' % [A, B, C, D]
"#{A}#{B}#{C}#{D}"
0745デフォルトの名無しさん
2015/02/16(月) 21:06:14.75ID:/Le2iIgbせめて、OracleとLPICにしとけ
0746693
2015/02/16(月) 23:10:02.23ID:aIhcyWTgそれなりに書けるようになってきたのに、以前として読みが厳しい・・・
自分で書いた正規表現も数日立つと・・読めないこともあったり
なにかコツありますか? 演算子の優先順位みたいなコツあるのかしら
0747デフォルトの名無しさん
2015/02/16(月) 23:25:17.19ID:GiwwQ3NFフクロウ本ポチったんじゃなかったのか
0748デフォルトの名無しさん
2015/02/16(月) 23:32:23.50ID:bsos2N+l0749693
2015/02/16(月) 23:34:38.96ID:aIhcyWTgふくろうはちょっと重い(書きぶり)ので
別冊のドリル解きながらふくろうチラ見してる段階です。
0750デフォルトの名無しさん
2015/02/17(火) 00:02:23.67ID:K0RsylMY0751デフォルトの名無しさん
2015/02/17(火) 01:22:40.02ID:Jv+uJpkb[A, B, C, D].join
0752デフォルトの名無しさん
2015/02/18(水) 09:40:42.56ID:49+iv0KkWindowsでsassをコンパイルすると、"\f012"のような文字を収めた変数が文字化けしたようになります。
変数を使用せずに直接スタイルに記述するとちゃんと"\f012"と出力されます。
私の環境のせいかもしれませんが、バックスラッシュがある文字に原因があるように思えます。
これを解消したいのですが、どうしたら良いでしょうか?
Rubyは1.9.3を使っています。
-- test.ssss
$test : "\f012";
.test {
content : $test;
}
-- compile.bat
set LANG=ja_JP.utf8
cmd /c C:\Ruby193\bin\sass %SCSS%\test.scss:%CSS%\test.css --style compressed --sourcemap=none
出力結果 => .test{content:"?"} // ←これを content:"\f012" としたい
0753デフォルトの名無しさん
2015/02/18(水) 15:17:15.21ID:KMXsePc+https://github.com/sass/sass/issues/1395
unquoteを使えばいいらしい
$test1 : \f012;
$test2 : unquote(\f012);
$test11 : unquote('"') + \f012 + '"';
$test22 : unquote('"') + unquote(\f012) + '"';
.test {
content : "\f012";
content : unquote('"') + $test1 + '"';
content : unquote('"') + $test2 + '"';
content : $test11;
content : $test22;
}
文字化けの原因は
$test : "\f012"
をutf16leと解釈されるからみたい
たまらなんなこりゃ
0754デフォルトの名無しさん
2015/02/18(水) 18:49:22.02ID:49+iv0Kkありがとうございます!
色々と試行錯誤してたのですが解決できなくて泣きそうでした。
無事に解決できました、本当に感謝です!
0755デフォルトの名無しさん
2015/02/19(木) 02:24:04.45ID:lDFiAK4+特別に解釈されるんでしょ?
' シングルクォートか、ヒアドキュメントを使えば?
0756デフォルトの名無しさん
2015/02/19(木) 08:45:11.80ID:oS1fF8P8シングルクォートとか関係ない
せめて2つ上のレスくらい読んでから発言しよう
0757デフォルトの名無しさん
2015/02/19(木) 11:18:05.36ID:iGdP7Vg9reg = /25(?=65)/,
/25(?=65)\d*/,
/(?=65)\d*/
reg.each{|ex|
puts target.match(ex)
}
結果
25
25659565564
659565564
先読みのあとに記述があると
この結果になるのはなぜでしょうか
0758デフォルトの名無しさん
2015/02/19(木) 12:57:30.27ID:fdKBoaCSそのreg3つはそれぞれ以下のような意味だよ
・/25/ただし25まで読み込んだ時点でその先に65が続くもの
・/25\d*/ただし25まで読み込んだ時点でその先に65が続くもの
・/\d*/ただし先頭が65であるもの
先読みした部分は結果には入らないし、読み飛ばされもしない
あとは先読み以外の部分が結果として表示されてる
0759デフォルトの名無しさん
2015/02/19(木) 13:32:07.49ID:iGdP7Vg9結果25で、65が除外されるのは理解できるのですが
/(?=65)\d*/ な場合
65が除外されずに 65....とマッチします
評価として点(・)を用いいます
(?=65)の時点で
25・659565564
25・6595.....
(?=65)の時点で一度65を除外してるが
\dにより 6595が読み込まれるので 65除外のあとから6595がヒットする 2565・95ではなく、25・6595の理由からって意味でしょうか
0760デフォルトの名無しさん
2015/02/19(木) 14:10:36.73ID:00AGhhL10761デフォルトの名無しさん
2015/02/19(木) 14:29:02.05ID:fdKBoaCSたぶん考え方はあってると思うよ
先読みの場合は、点(・)の先に65があることを確認するだけで、点の位置は動かない
なので、その後に\d*とマッチする部分に65が含まれる
だからマッチに使われる(点が進む)ことを除外というのなら、先読みでは除外しないっていうことになると思う
0762デフォルトの名無しさん
2015/02/19(木) 16:18:09.18ID:Q7B3YZ4lほんとセマンティックバージョニングの意味ねえな
パッチアップデートで壊したわけじゃないだけマシか?
マシって何と比べてマシなんだ(自問)
0763デフォルトの名無しさん
2015/02/19(木) 16:20:42.35ID:DC8iLU1Gそのあと同じファイルに、読み込んだ行数分を削除したいのですが、何かいい方法ありませんか?
例えば、
hoge.txt
1.れもん
2.いちご
3.りんご
4.ばなな
5.パイナップル
を2行分読み込んで削除
hoge.txt
1.りんご
2.ばなな
3.パイナップル
0764デフォルトの名無しさん
2015/02/19(木) 16:43:02.17ID:Xd3keHXW0765デフォルトの名無しさん
2015/02/19(木) 16:50:15.33ID:ra0CCNS1各行をリンクや配列にして新たに書くかシークしてまるまるコピーか
0766デフォルトの名無しさん
2015/02/19(木) 17:03:30.07ID:00AGhhL1>構造上前を詰めるのはそのままじゃ無理なのはわかるべ
ってどういうこと?
0767デフォルトの名無しさん
2015/02/19(木) 17:08:06.98ID:ra0CCNS10768デフォルトの名無しさん
2015/02/19(木) 17:17:55.65ID:00AGhhL10769デフォルトの名無しさん
2015/02/19(木) 23:24:09.47ID:/rXoqLFuhttps://ideone.com/pyWQL9
実行例:
$ ruby enum-drop.rb hoge.txt
3.りんご
4.ばなな
5.パイナップル
$
28行目のメソッド Enumerable#drop(n) を利用することがポイント
http://docs.ruby-lang.org/ja/2.2.0/method/Enumerable/i/drop.html
なお Enumerable#drop はリターン値として配列(Array オブジェクト)を返すから、
入力データ(の行数)が膨大になるとメモリ効率が悪くなる
この問題は代わりに Enumerator::Lazy#drop(n) を使うと、行単位にオブジェクトが
生産/消費されるようになるから、メモリ効率を改善できる
http://docs.ruby-lang.org/ja/2.2.0/method/Enumerator=3a=3aLazy/i/drop.html
具体的には、28行目のメソッドチェーンで drop の前に lazy を挿入するだけで終わる:
....(前略).... .each_line.lazy.drop(num). ....(後略)....
ただし Enumerator::Lazy は Ruby 2.0 で追加された組込みモジュールだから、
Ruby 1.8/1.9 で利用するなら enumerable-lazy という Gems パッケージが必要になる
0770デフォルトの名無しさん
2015/02/20(金) 02:35:25.81ID:2YGngXGF0771デフォルトの名無しさん
2015/02/20(金) 02:46:11.83ID:EBONnwDBいったん違うファイルに書いて、
元のファイルを削除してから、renameする方が安全
行1,2,3,4 とあれば、上から順に、1行ずつ処理していく。
行1 → 読み込むだけで、データは捨てる
2 → 同様に捨てる
3 → 書き込む
4 → 書き込む
0772デフォルトの名無しさん
2015/02/20(金) 03:04:50.52ID:h4oRuNjd$ tail -n +3 hoge.txt | sponge hoge.txt
0773デフォルトの名無しさん
2015/02/20(金) 07:53:47.32ID:fEal40kx0774デフォルトの名無しさん
2015/02/20(金) 08:04:39.98ID:Qj8W36XI単に実行するだけのものを定義する時は
def my_func
yield
end
みたいにしたり&blockというような引数を使うことはわかったのですが
open( "aa.txt", "r" ){ |file|
}
のopen関数のような、他の値も引数にもっていて、ブロックも引数を持っているような関数はどうやって作れば良いのでしょうか
もし良ければ教えて下さい
0775デフォルトの名無しさん
2015/02/20(金) 08:11:05.65ID:pk2QnuVc0776デフォルトの名無しさん
2015/02/20(金) 08:26:35.79ID:KoZ8UZGe普通にmy_funcf(普通の引数)にするだけ
ブロック引数は暗黙的に渡るので引数として明示的に宣言する必要はない
0777デフォルトの名無しさん
2015/02/20(金) 09:40:29.75ID:2q5bsCKhありがとうございます。
さっそくためしてみます!
0778デフォルトの名無しさん
2015/02/20(金) 13:47:34.06ID:NRgYnesQPythonスレになぜかRubyコード投下してたときも同じだったが
関数化して書くのならちゃんとFile.closeするかcloseが必要ないようにしなよ
再利用したときにハマるよ
0779デフォルトの名無しさん
2015/02/20(金) 17:58:04.38ID:NOsWQdQaなんか変な動きするなーって思ってたらこれが原因だったわ
ためになった
0780769
2015/02/20(金) 19:50:56.52ID:8OUkX7Zl指摘ありがとん
ということで、訂正してみた
https://ideone.com/0IemVC
0781デフォルトの名無しさん
2015/02/21(土) 11:19:24.57ID:zv91iaBv# CR・CRLF 改行を、LF 改行に置き換える
str = str_ary[0].encode(:universal_newline => true)
str.each_line do |line|
end
漏れはこんな風に、File.read で、
1行ずつ処理しているが、なぜ、File.open を使うの?
0782デフォルトの名無しさん
2015/02/21(土) 11:57:28.42ID:YnThFa9Sメモリ所要量がファイルサイズに依存しないとか
小っさい小っさいファイルしか使わないんなら気にしなくていいよ
0783デフォルトの名無しさん
2015/02/21(土) 15:44:56.37ID:K/x//vvW0784デフォルトの名無しさん
2015/02/21(土) 16:20:01.62ID:kawK2KK0そういうのは分割しろとは思うがDBに入れるべきかといわれるとそうじゃないと思う
0785デフォルトの名無しさん
2015/02/21(土) 16:37:36.72ID:1ts2mUR/この程度の用事にメモリ効率とか考える方が時間の無駄
いまある用事に対してできることを最小限の労力でやるのが一番
「こういう用事もあるかも」を考えて設計するのは愚の骨頂、とDHHあたりも言ってた気がする
0786デフォルトの名無しさん
2015/02/21(土) 17:05:47.11ID:T2DgAzdTRuby以前にコマンドやそういったものに関しても初心者で、このVpkツールをインストールするだけで一週間ほどかかりました…
VPKファイルフォーマットのパーサー
https://github.com/kimoto/vpk
本来Linux用に作られたものらしいのですが、Macでも使用できるとツールの作者が書いていました
まずVPKファイルの生成よりも展開のほうが簡単かと思い、試しにデスクトップにVPKファイルを置いて
require 'vpk'を書いてエンターを押すと-bash: require: command not foundと出ました
これは別に入力する必要のないものなのでしょうか?
続いてVPK::VPKFile.new("./path_to.vpk").extract_to("./")をやってみましたが
MacName:Desktop UserName$ VPK::VPKFile.new("./Users/UserName/Desktop/test.vpk ")を実行すると
-bash: syntax error near unexpected token `" /Users/UserName/Desktop/test.vpk "'と出て駄目でした
ちなみに、このツールを作った人は日本人でどのように使うかも日本語で説明しています
VPKファイルの展開
require 'vpk'
vpk = VPK::VPKFile.new("./VPKのパス.vpk")
vpk.extract_to("./どこに解凍するか")
VPKファイルをディレクトリから生成する
require 'vpk'
vpk = VPK::VPKFile.archive("./ディレクトリのパス")
vpk.write_to("./生成後のVPKのパス")
ここまで書かれていてまだ理解できません…誰か馬鹿にも分かるように説明して下さるかたいらっしゃいませんか…
0787デフォルトの名無しさん
2015/02/21(土) 17:28:20.44ID:sa43Zcnrrequire 'vpk'
VPK::VPKFile.new(ARGV[0]).extract_to("./")
と書いたファイルをvpktest.rbって名前でデスクトップに保存したらターミナルを起動して
$ cd Desktop
$ ruby vpktest.rb test.vpk
とかする(もちろんtest.vpkがDesktopにあるのが前提)
できればRubyとBashの入門書を一冊ずつ入手して勉強したほうがいい
0788デフォルトの名無しさん
2015/02/21(土) 17:31:41.15ID:sa43ZcnrRubyスクリプト書かなくてもターミナルから次でいけるらいし
$ vpk -x ~/Desktop/test.vpk
0789デフォルトの名無しさん
2015/02/21(土) 18:09:59.96ID:T2DgAzdT$ cd Desktop
$ ruby vpktest.rb test.vpk
をするとvpktest.rb:1: syntax error, unexpected $undefined, expecting '}'
{\rtf1\ansi\ansicpg932\cocoartf1187\cocoasubrtf400
^
と出ました
$ vpk -x ~/Desktop/test.vpkのほうは
/Library/Ruby/Gems/1.8/gems/vpk-0.0.2/lib/vpk.rb:162:in `extract_to': undefined method `write' for File:Class (NoMethodError)
from /Library/Ruby/Gems/1.8/gems/vpk-0.0.2/lib/vpk.rb:156:in `each'
from /Library/Ruby/Gems/1.8/gems/vpk-0.0.2/lib/vpk.rb:156:in `extract_to'
from /Library/Ruby/Gems/1.8/gems/vpk-0.0.2/bin/vpk:40
from /usr/bin/vpk:23:in `load'
from /usr/bin/vpk:23
これは成功してたのでしょうか…!? しかし展開後のフォルダのようなものはデスクトップに見当たりませんでした
787さんがおっしゃるように、最初に本を買って勉強しようと思います
それでも分からなかったらまた質問しにきます
ありがとうございました
0790デフォルトの名無しさん
2015/02/21(土) 18:50:52.11ID:lQiGN8keパスの概念が分かってないようだから
gemを使って入れたらいいのでは?
$ sudo gem install vpk
// $ gem install vpk
$ mkdir -p ~/tmp/vpktest
$ cd ~/tmp/vpktest
$ mkdir hoge
$ touch hoge/testfile_{01..5}.txt
$ ls hoge
testfile_01.txt testfile_02.txt testfile_03.txt testfile_04.txt testfile_05.txt
$ vpk -c hoge
compressed hoge -> hoge.vpk
$ mkdir hoge_out && cd hoge_out
$ vpk -x ../hoge.vpk
extracted!: ../hoge.vpk
$ sudo gem uninstall vpk
$ gem uninstall vpk
0791デフォルトの名無しさん
2015/02/21(土) 19:01:34.99ID:sa43Zcnrそれはおそらくライブラリ側でtest.vpkに対応できなくてエラーを吐いてる
そのライブラリのリリース後にフォーマットが変更されたりしてない?
test.vpkか他のvpkファイルをうpしてもらえれば調べてみるけど
0792デフォルトの名無しさん
2015/02/21(土) 19:21:53.03ID:T2DgAzdTありがとうございます!
vpkツールのインストールはgemを使って入れました、後は教えてもらった通りにやってみましたが未知の世界すぎて…
MacName:~ UserName$ mkdir -p ~/tmp/vpktest
MacName:~ UserName$ cd ~tmp/vpktest
-bash: cd: ~tmp/vpktest: No such file or directory
MacName:~ UserName$ mkdir hoge
MacName:~ UserName$ touch hoge/testfile_{01..5}.txt
MacName:~ UserName$ ls hoge
testfile_1.txt testfile_2.txt testfile_3.txt testfile_4.txt testfile_5.txt
MacName:~UserName$ vpk -c hoge
compressed hoge -> hoge.vpk
/Library/Ruby/Gems/1.8/gems/vpk-0.0.2/lib/vpk.rb:178:in `archive': undefined method `binread' for File:Class (NoMethodError)
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/find.rb:39:in `find'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/find.rb:38:in `catch'
from /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/find.rb:38:in `find'
from /Library/Ruby/Gems/1.8/gems/vpk-0.0.2/lib/vpk.rb:174:in `archive'
from /Library/Ruby/Gems/1.8/gems/vpk-0.0.2/bin/vpk:31
from /usr/bin/vpk:23:in `load'
from /usr/bin/vpk:23
0793デフォルトの名無しさん
2015/02/21(土) 19:27:58.61ID:T2DgAzdTMacName:~ UserName$ mkdir hoge_out && cd hoge_out
MacName:hoge_out UserName$ vpk -x ../hoge.vpk
not found specified file: ../hoge.vpk
MacName:hoge_out UserName$ vpk -x ../hoge.vpk
not found specified file: ../hoge.vpk
MacName:hoge_out UserName$ extracted!: ../hoge.vpk
-bash: : unrecognized history modifier
この文字列を保存しておいて、後でゆっくりどういうことか調べてみようと思います
>>791
ライブラリのリリース後にフォーマットが変更というのがよく分かりませんでした…すみません
このVPKツール自体2012年あたりに作られたものみたいなので、バージョンが古くて対応していないということもあるのかもしれません
ファイルはこれです
元々はvocalizev8.vpkというL4D2というゲーム用ファイルを、分かりやすいようにtest.vpkに名前だけ変えたものです
http://www1.axfc.net/u/3416997
0794デフォルトの名無しさん
2015/02/21(土) 19:50:06.41ID:sa43Zcnrうpしてもらったファイルは問題なく解凍できるみたい
RubyよりもBashの使い方勉強したほうがいいと思う
Amazonでシェルスクリプトで検索するとそれ系の本が出てくる
$ ls
test.vpk test.vpk.zip
$ vpk -x test.vpk
extracted!: test.vpk
$ ls
addonimage.jpg addoninfo.txt scripts test.vpk test.vpk.zip
$ irb
irb(main):001:0> require 'vpk'
=> true
irb(main):002:0> VPK::VPKFile.new('./test.vpk').extract_to('testdir')
[Ctrl+D]
$ ls testdir
addonimage.jpg addoninfo.txt scripts
0795デフォルトの名無しさん
2015/02/21(土) 20:08:10.84ID:T2DgAzdTわざわざ試してくれたんですか…ありがとうございます
Bashを先に学んだ方がいいのですね、頑張って勉強します
他の方も親切に教えてくださってありがとうございました
0796デフォルトの名無しさん
2015/02/21(土) 21:00:28.05ID:sa43Zcnr勉強するなら手始めにこことかよさそう(ぐぐったら出てきた)
http://www.pxt.jp/ja/diary/article/292/
がんばってねー
0797デフォルトの名無しさん
2015/02/21(土) 23:01:02.82ID:sa43Zcnr>>792でFile.binread(Ruby1.9から)ってメソッドがないって言われてるので
Rubyのバージョン上げたらあっさり動くかも
0798デフォルトの名無しさん
2015/02/22(日) 04:25:07.65ID:HpFGsXnKやコマンドの基本を学ぶ
端末で、pwd(positioning working directory)コマンドを実行すると、
今自分がいる(着目している)ディレクトリ(フォルダ)を表示する
端末を開くとたいてい、そのユーザのホームディレクトリから始まる
ディレクトリのパスが、~/ (チルダ)から始まっていたら、
それはそのユーザのホームディレクトリと同じ。
Linuxでは、/home/ユーザ名/ と同じ
パスには、/ (root)から始まる絶対パスと、相対パスがある
./ は相対パスで今自分がいるディレクトリ
../ は相対パスで今自分がいるディレクトリの親ディレクトリ(1階層上)
cd を使うと、今自分がいる場所を変えられる(移動できる)
コマンドを実行する際は、半角空白区切りで、
コマンド名 -オプション コマンドの引数
オプションは、- が付くことが多い。
コマンドの引数の内容に、半角空白を使っているが、
別個の引数と解釈されたくないのなら、
ダブル・シングルクォーテーションで引数を囲むと、
1つの引数とみなされる
"a b c", 'a b c'
たのしいRuby、2013、第4版を読む
0799デフォルトの名無しさん
2015/02/22(日) 08:22:39.59ID:4QR1V68p\bは単語境界を指しており、\wと\Wの隙間であると説明がありました。
\wは[a-zA-Z09_] \Wは[^a-zA-Z09_] なので\Wに\sが含まれます。
ニュアンスとして隙間は\sであるとの表現かな?とも思うのですが
そうであれば\bは\sの変種,何がどう違うのかピンときませんでした
string = "j abc C"
\s(abc)\s
\b(abc)\b の使い方で
「」abc「」 注「」は空白表現
abc
の結果が出ました。
1)\bは\sの「」を抜いたもの,それが「」とabcの隙間って意味でしょうか?
「」・abc → ・が\bであり
「」abc → 「」が\s
であるって理解で正しいでしょうか?
2)\wと\Wの隙間とは 英数字と英数字以外の隙間
では
str = 太郎abc C で実験した結果 .... なし
太郎・abc になるかと期待したのですが・・
疑問
\wと\Wの隙間 ... 単に 前に\s相当の空白があるのが条件であるならば
「\w と \W」 の隙間の表現が理解できません。
0800デフォルトの名無しさん
2015/02/22(日) 08:49:50.33ID:vZEo6Gpi>単語を成す文字、成さない文字の定義はエンコードによって 異なります。
0801デフォルトの名無しさん
2015/02/22(日) 09:29:53.07ID:vZEo6Gpi'@abc{'.match(/\babc\b/) #=> #<MatchData "abc">
\sとはまったくの別物
0802デフォルトの名無しさん
2015/02/22(日) 09:45:25.54ID:JLUSIAF5/^foo$/ における\nの役割が\Wに変わっただけって考えれば理解できないかな?
0803デフォルトの名無しさん
2015/02/22(日) 11:18:14.91ID:E5S/oWCJirb> 'Larry Guido Nocchi'.gsub(/¥b/, '+')
=> "+Larry+ +Guido+ +Nocchi+"
0804デフォルトの名無しさん
2015/02/22(日) 11:43:43.92ID:E5S/oWCJpwdのpはprint
0805デフォルトの名無しさん
2015/02/22(日) 12:41:40.52ID:JLUSIAF5元凶はWikipediaだなw
0806デフォルトの名無しさん
2015/02/22(日) 16:24:18.83ID:PdWqOzTz0807デフォルトの名無しさん
2015/02/22(日) 16:30:10.94ID:tq8+HI3u0808デフォルトの名無しさん
2015/02/23(月) 02:20:47.22ID:OtsoZsN/配布後に(私の支持の下)個々人の要望にかなった変更が行えるようにexeファイル自体は
require_relative 'hoge'
のみから作り、同梱のhoge.rbを自由に編集できるようにしようと思っているのですが、これっておかしいでしょうか? こういう場合、普通だったらこうするよみたいな意見があればお聞かせ願います。
今まで他人に公開するといった機会がなかったのでこの辺のさじ加減がさっぱりわかりません。
0809デフォルトの名無しさん
2015/02/23(月) 02:48:05.91ID:n+U4e1Dx明るくない人向けにWSH(VBS)で配布
0810デフォルトの名無しさん
2015/02/23(月) 05:58:52.55ID:2dcX2lQGRubyなら普通はWebだよ
0811デフォルトの名無しさん
2015/02/23(月) 22:37:30.98ID:gGy05t/rインストールしようとするとこのような↓エラーがでるのですがどう
対処したら良いですか?ちなみにrubyはRuby 2.0.0-p598を使用しています
エラー
C:\Users\rock111\Downloads>gem install nokogiri-1.6.1-x86-mingw32.gem
ERROR: While executing gem ... (Gem::DependencyError)
Unable to resolve dependencies: nokogiri requires mini_portile (~> 0.5.0)
0812デフォルトの名無しさん
2015/02/23(月) 22:52:41.89ID:cY48eAodgem install nokogiriは試した?
gem list mini_portileするとどうなる?
0813デフォルトの名無しさん
2015/02/23(月) 22:58:43.39ID:gGy05t/r指示のとおりやってみました
結果は以下のようになりました
C:\Users\rock111\Downloads>gem install nokogiri
ERROR: While executing gem ... (Gem::DependencyError)
Unable to resolve dependencies: nokogiri requires mini_portile (~> 0.5.0)
C:\Users\rock111\Downloads>gem list mini_portile
*** LOCAL GEMS ***
0814デフォルトの名無しさん
2015/02/23(月) 23:15:26.57ID:8Nm5wO4G0815デフォルトの名無しさん
2015/02/23(月) 23:42:06.22ID:cY48eAodgem install mini_portileしたら
https://rubygems.org/downloads/nokogiri-1.6.6.2-x86-mingw32.gem
をダウンロードして
gem install --local nokogiri-1.6.1-x86-mingw32.gem
それでうまくいかなかったらちょっとわからない
0816デフォルトの名無しさん
2015/02/23(月) 23:43:40.34ID:cY48eAodgem install --local nokogiri-1.6.6.2-x86-mingw32.gem
要は落としてきたgemファイルのパスを指定して
0817デフォルトの名無しさん
2015/02/23(月) 23:50:36.48ID:gGy05t/rこういう結果になりました。アドバイスありがとうございました
後は自分で考えて見ます。。。
C:\Users\rock111\Downloads>gem install mini_portile
ERROR: Could not find a valid gem 'mini_portile' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - SSL_connect retur
ned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (
https://rubygems.org/latest_specs.4.8.gz)
C:\Users\rock111\Downloads>gem install --local nokogiri-1.6.6.2-x86-mingw32.gem
ERROR: While executing gem ... (Gem::DependencyError)
Unable to resolve dependencies: nokogiri requires mini_portile (~> 0.6.0)
0818デフォルトの名無しさん
2015/02/23(月) 23:56:49.59ID:cY48eAodhttps://gist.github.com/luislavena/f064211759ee0f806c88#installing-using-update-packages-new
0819デフォルトの名無しさん
2015/02/24(火) 04:55:39.99ID:hwXyjfLaary[2][3] = [1, 2]
上なら突然でも設定できるのだが、
突然に下のようにすると、エラーで追加できない
ary[2][3] << [1, 2]
ary[2][i]で、iが5, 10など突然に、
ランダムなインデックスに、
次々と追加していくには、どうするの?
設定ではなく、iが同じ場合には、追加していきたい
0820819
2015/02/24(火) 05:20:13.18ID:hwXyjfLaary = []; ary[2] = []
いったん、空配列で初期化した後なら、追加できる
ary[2][3] = []
ary[2][3] << [1, 2]
ary[2][i]で、iが5, 10など突然に、
ランダムなインデックスに、
次々と追加していくには、どうするの?
最初の1回目だけは、空配列で初期化して、
2回目以降は初期化せずに、追加のみしていきたい
0821デフォルトの名無しさん
2015/02/24(火) 05:36:48.05ID:2T0G4BSR0822デフォルトの名無しさん
2015/02/24(火) 06:48:53.58ID:hwXyjfLattps://paiza.io
print RUBY_VERSION
2.2 になっている
0823819
2015/02/24(火) 07:04:42.78ID:hwXyjfLaary = []; ary[2] = []
いったん空配列で初期化した後なら、追加できる
ary[2][3] = []
ary[2][3] << [1, 2]
一方、初期化する前は、nil だから、<< メソッドを呼べない
つまり、空配列とnilは、異なる扱い
0824デフォルトの名無しさん
2015/02/24(火) 09:33:24.04ID:ztCGtY4P0825デフォルトの名無しさん
2015/02/24(火) 11:04:07.70ID:YPtW8awo0826デフォルトの名無しさん
2015/02/24(火) 11:18:02.66ID:CiqLyyCO0827デフォルトの名無しさん
2015/02/24(火) 11:41:50.94ID:2y9qGJ70届くの楽しみ・・・ しかし絶版本中古しか買えなかったわ 高いよ
0828デフォルトの名無しさん
2015/02/24(火) 20:23:26.10ID:+pjYUFm3初心者におすすめのエディタってありますか?
いまのとこサクラエディタを考えてますが・・・
0829デフォルトの名無しさん
2015/02/24(火) 20:35:47.29ID:wMWkMGk+開発者向けじゃない普通のエディタに比べると複雑に感じるかもしれないが、
操作自体は普通でviやemacsのように熟練を要するものではない
0830デフォルトの名無しさん
2015/02/24(火) 20:36:34.72ID:9OYj7FQ2それがないなら適当にフリーのエディタ(サクラでよい)使ってみて気に入らなきゃ別のを探せばよい
0831デフォルトの名無しさん
2015/02/24(火) 20:38:04.38ID:2T0G4BSR0832デフォルトの名無しさん
2015/02/24(火) 20:39:49.43ID:+pjYUFm3プログラミングはsasとかMQLとかしかやったことないので
自前のエディタないんですよね。
atom使ってみます。ありがとうございます。
0833デフォルトの名無しさん
2015/02/24(火) 20:52:02.57ID:xSG7hOYtどうもありがとうございます。
VBSについて調べてみることにします。
0834デフォルトの名無しさん
2015/02/24(火) 21:01:21.70ID:uqCdmZ4lWindowsでRubyを使い続けたいなら、
あまり新しいものや周りに目を向けずにこういうもんだと思って地道に使うのが吉
0835デフォルトの名無しさん
2015/02/24(火) 21:12:23.56ID:2y9qGJ70emacsるびきち本にお布施払って信者になる道もある
winは茨の道に同感
三ヶ月以内にwin捨ててると思う
どうしてもクローラーのお手軽GUIがいいならmacって道もあるんじゃないの
linuxだと無料だけど・・w
0836デフォルトの名無しさん
2015/02/24(火) 22:22:04.69ID:C9vda/HG技術的負債だし
0837デフォルトの名無しさん
2015/02/25(水) 01:37:03.71ID:e/Qay/4t「-」で挟まれた部分が最小となるような正規表現って書けますでしょうか?
/-\w*?-/だと-12345-にマッチしますが、
-12-にマッチするようなものが欲しいんですけど。
0838デフォルトの名無しさん
2015/02/25(水) 02:08:59.82ID:UWnGWlrp0839デフォルトの名無しさん
2015/02/25(水) 02:32:48.94ID:e/Qay/4tありがとうございます。
.scan(/\d+/).sort_by{|i| i.length}
で代用することにします。
0840デフォルトの名無しさん
2015/02/25(水) 02:47:40.94ID:lwlbnzFN0841デフォルトの名無しさん
2015/02/25(水) 03:05:36.04ID:e/Qay/4tありゃりゃ、確かに。
min_byで十分ですね。
0842デフォルトの名無しさん
2015/02/25(水) 07:45:32.49ID:lwlbnzFN0843デフォルトの名無しさん
2015/02/25(水) 08:24:49.99ID:e/Qay/4tはい、最短のものがいくつかあったときは先の方にあったもので大丈夫です。
0844デフォルトの名無しさん
2015/02/25(水) 08:45:30.40ID:AHECRfewarry = '-12345-12-123-'.scan(reg)
p arry.min
#puts "-#{arry.min}-"
0845デフォルトの名無しさん
2015/02/25(水) 08:55:13.44ID:e/Qay/4t初めに挙げた例が悪くて恐縮なのですが
任意の文字列に対して、ハイフンで挟まれた文字列の長さが最短になるような挙動を期待していたので
これだとちょっとマズいです。
0846デフォルトの名無しさん
2015/02/25(水) 08:55:34.29ID:AHECRfew配列のデータのバラつきを集計できる
0847デフォルトの名無しさん
2015/02/25(水) 08:59:03.50ID:AHECRfew0848819
2015/02/25(水) 09:09:27.71ID:4HjDfertary = []; ary[2] = []
結局、要素がnilなら、nil要素には追加できないため、
空配列で初期化した後に、追加する。
こういうやり方でいいの?
ary[2][3] = [] if !ary[2][3]
ary[2][3] << [1, 2]
>>828
漏れはWin8にも対応しているので、
寺尾さんのTeraPadを使っている
0849デフォルトの名無しさん
2015/02/25(水) 09:18:28.42ID:e/Qay/4tそうですね。
>>841のように目下のところは次のようにすることにしました。
.scan(/\d+/).min_by{|i| i.length}
0850デフォルトの名無しさん
2015/02/25(水) 09:20:57.88ID:KXtTFTSD0851デフォルトの名無しさん
2015/02/25(水) 09:39:45.36ID:g5n/F/bU> true && false
false
> true || false
true
になる理由がわからない
わかる人教えてください
0852デフォルトの名無しさん
2015/02/25(水) 09:42:20.61ID:g5n/F/bU2行目は
> true && false
です
0853デフォルトの名無しさん
2015/02/25(水) 09:46:55.35ID:AHECRfew0854デフォルトの名無しさん
2015/02/25(水) 10:15:06.04ID:4HjDfert0 OR 0 → 0
0 OR 1 → 1
1 OR 0 → 1
1 OR 1 → 1
どちらか一方が真なら、真となる。
結果が偽となるのは、入力がともに偽の場合だけ
0855デフォルトの名無しさん
2015/02/25(水) 10:28:48.23ID:4HjDfert0 AND 0 → 0
0 AND 1 → 0
1 AND 0 → 0
1 AND 1 → 1
どちらか一方が偽なら、偽となる。
結果が真となるのは、入力がともに真の場合だけ
0856デフォルトの名無しさん
2015/02/25(水) 10:31:31.93ID:AHECRfew|
|
スイッチ
電球が点灯するのはどれか
と同じ内容
0857デフォルトの名無しさん
2015/02/25(水) 10:35:14.91ID:AHECRfewS
| ---- 電球 ( S 2個 点灯
S
0858デフォルトの名無しさん
2015/02/25(水) 10:42:29.54ID:e/Qay/4tたとえ多値理論であろうと同じで、その論理の根幹をなす部分だからね
0859デフォルトの名無しさん
2015/02/25(水) 11:04:35.81ID:e/Qay/4t&&や||は証明以前の、「&&や||はこういう風に定義して始めていこう」っていうスタート地点だから
残念ながら覚えるしかない。(XORやIMPから導けるけどそれじゃ意味がないからね)
覚えるにあたっては、日常言語からの類推から>>857などのように考えてみると良いと思う。
0860デフォルトの名無しさん
2015/02/25(水) 12:52:04.46ID:J7BSNQ3u0861デフォルトの名無しさん
2015/02/25(水) 17:11:45.61ID:AHECRfew配線つなぎ変えてボタンパチパチしてたら体で覚える
2進数だし
0862デフォルトの名無しさん
2015/02/25(水) 21:03:34.70ID:g5n/F/bUみなさん教えてくれてありがとう
0863デフォルトの名無しさん
2015/02/25(水) 22:58:14.23ID:0p0IDwyyそろそろ絶滅してもいいと思うんだが
回路の動作自体が自明ではない(回路とスイッチの定義問題に置き換えただけ)ということを何故か理解できない
0864デフォルトの名無しさん
2015/02/25(水) 23:00:32.52ID:rRy1+utqドコモメールで未読のメールを転送しているのですが、処理後に既読にする際にエラーが出ます。
具体的には
imap.store(ids, '+FLAGS', [:Seen])
の部分で
/usr/lib/ruby/1.9.1/net/imap.rb:1141:in `get_tagged_response': store failed (Net::IMAP::NoResponseError)
と出ます。
原因がわかればお願いします。
0865デフォルトの名無しさん
2015/02/26(木) 02:17:30.42ID:o1bjypl8http://www.redmine.org/projects/redmine/wiki/RedmineUpgradeをみて
svn update
bundle updateをしても3.0に上がるどころか2.6の最新にアップグレードされました
どうやってアップグレードするんですか?
0866デフォルトの名無しさん
2015/02/26(木) 02:39:49.14ID:ukhMPz9x0867デフォルトの名無しさん
2015/02/26(木) 02:49:14.00ID:TYC1vclcRuby2.0では、Module#prepend (先頭に追加)で、
メソッド探索の際の、継承チェーンの順番を変えられる
module A
f()
end
class B
f()
# include A
prepend A
end
A,Bに同名のメソッド、f()があるとき、
B.f()を呼ぶと、include A では、B.f()が呼ばれるが、
prepend A だと、A.f()が呼ばれる
0868デフォルトの名無しさん
2015/02/26(木) 18:12:44.88ID:efkBDVloVerUpのRubyを再インストール(Win8.1x64)しようと考えています
Ruby2.2系を選んだ場合、不都合はおきないでしょうか
又、妥当なVerはいつと考えれば良いでしょうか
ご教授下さい。 宜しくお願いします。
0869デフォルトの名無しさん
2015/02/26(木) 19:30:31.84ID:Hqc0hAXx両方入れて試せばいいだけじゃん
0870デフォルトの名無しさん
2015/02/26(木) 21:12:05.08ID:Zl1401DB0871デフォルトの名無しさん
2015/02/26(木) 23:13:33.88ID:H+zP2m+jそれともrubyはWinとlinuxでも互換性が無かったりするのか?
0872デフォルトの名無しさん
2015/02/26(木) 23:22:41.86ID:3SZexjMKmsysやCygwinが必要な時点で不都合極まりない
0873デフォルトの名無しさん
2015/02/26(木) 23:34:55.05ID:Zl1401DB個人的には開発用のLinuxサーバーを立ててSSHがお勧めだけど
0874デフォルトの名無しさん
2015/02/27(金) 05:22:17.24ID:PNxpeXH7# 配列を結合。重複なし
res_ary = ary.inject(:|)
p res_ary => [1, 2, 9, 3]
Array.inject(:|)
うぉー、めっちゃ便利!
0875デフォルトの名無しさん
2015/02/27(金) 08:23:31.06ID:oFuiO+pqの方が分かりやすくないかそれ
0876デフォルトの名無しさん
2015/02/27(金) 09:54:27.45ID:RzxKPtwm0877デフォルトの名無しさん
2015/02/27(金) 10:25:57.70ID:n2hPkGdaこれ良い本だった
全部は把握しきれてないけど毎日少しづつ反芻しながら消化していこうかな
ある程度終わったらMatzのコードの未来を買いに行こうと思う
0878デフォルトの名無しさん
2015/02/27(金) 11:12:44.34ID:PNxpeXH7def func
num = ARY[0]
end
ttps://paiza.io
RUBY_VERSION 2.2 でプログラミングしてますが、
関数外で定義した、グローバルではない定数が、
関数内のスコープで使えるのだが、最初から使えたっけ?
>877
Rubyのしくみ、2014
Ruby1.9のRuby仮想マシンを説明した本はいかが?
0879デフォルトの名無しさん
2015/02/27(金) 12:27:34.40ID:QkugUeYGhttp://docs.ruby-lang.org/ja/2.1.0/doc/spec=2fvariables.html#const
0880デフォルトの名無しさん
2015/02/27(金) 21:53:00.68ID:vbRXIhSV以下のエラーが出ますどうしたらよいでしょうか?
ちなみにrubyのバージョンは2.1です
プログラム
print("KCODE=", $KCODE);
エラー
warning: variable $KCODE is no longer effective
0881デフォルトの名無しさん
2015/02/27(金) 22:06:02.51ID:n2hPkGda0882デフォルトの名無しさん
2015/02/27(金) 22:27:12.72ID:vbRXIhSVありがとうございます
0883デフォルトの名無しさん
2015/02/28(土) 11:11:48.02ID:wH9OCIcmhttps://ideone.com/GwDNWM
0884デフォルトの名無しさん
2015/02/28(土) 11:26:07.11ID:BgScRhfimatrixモジュールを使いましょう
0885デフォルトの名無しさん
2015/02/28(土) 11:55:15.16ID:0XiMknGfy = (y == y.abs) ? y.abs : y
これ何したいの
0886デフォルトの名無しさん
2015/02/28(土) 19:16:08.25ID:IHV+CD5O==やabsで何かやってるのかもしれないw
0887デフォルトの名無しさん
2015/02/28(土) 21:59:33.88ID:2CXIROWHできませんどうしたらよいでしょうか?
プログラム
print(("こんにちは\nお元気ですか"), "\n")
print(("こんにちは\nお元気ですか"), "\n")
結果
こんにちは\nお元気ですか\nこんにちは\nお元気ですか\n
0888デフォルトの名無しさん
2015/02/28(土) 22:44:19.09ID:6MRbMFB/環境は?とくにOS
0889デフォルトの名無しさん
2015/02/28(土) 22:46:15.33ID:wIOQnSZg0890デフォルトの名無しさん
2015/02/28(土) 23:04:38.46ID:wH9OCIcmググったら0が解のときに-がつくことがあるみたいなことが報告されてたので、念のため。
0891デフォルトの名無しさん
2015/02/28(土) 23:12:19.06ID:2CXIROWHwindows7です
rubyはバージョン2.1
0892デフォルトの名無しさん
2015/02/28(土) 23:15:44.83ID:pM+RKKwVx = x.abs
でいいのでは?
0893デフォルトの名無しさん
2015/02/28(土) 23:55:15.91ID:6MRbMFB/ごめんすぐにはわからない。以下の手順を試してくれる?
1. >>887のコードをhoge.rbに保存
2. 次のコードをhd.rbって名前で保存してhoge.rbのあるフォルダに置く
puts ARGF.read.bytes.map{|c|'%02X' % c}.each_slice(16).map{|ary| ary.join(' ') }
3. コマンドプロンプトから次のように実行
C:¥hd.rbとhoge.rbのあるフォルダ> ruby hd.rb hoge.rb
0894デフォルトの名無しさん
2015/02/28(土) 23:56:55.29ID:6MRbMFB/0895デフォルトの名無しさん
2015/03/01(日) 00:20:59.67ID:/quXJ0y40896デフォルトの名無しさん
2015/03/01(日) 00:49:57.79ID:8He3Ckgj>>895
解決しましたありがとうございました
原因はたぶん>>895だったと思います
コピペしてたプログラムを自分で書き直したら
ちゃんと改行できました
0897デフォルトの名無しさん
2015/03/01(日) 01:50:50.75ID:0lBNnzFDだんだんとPythonに流れていってる気がする
0898デフォルトの名無しさん
2015/03/01(日) 01:55:18.50ID:Z+lfbyupそれってトレンドを追いかける層じゃないの
0899デフォルトの名無しさん
2015/03/01(日) 02:26:59.22ID:1cXWH4jo0だけマイナスを外したいんじゃない?
0900デフォルトの名無しさん
2015/03/01(日) 02:38:06.70ID:vUz0ZLJIunless (denom = coe[0]*coe[4] - coe[1]*coe[3]).zero?
x = (coe[2]*coe[4] - coe[1]*coe[5])/denom
y = (coe[0]*coe[5] - coe[2]*coe[3])/denom
あとputs "%.3f %.3f"%[x, y]って書くな。
-0はなったこと無いからわからん。
0901デフォルトの名無しさん
2015/03/01(日) 02:39:47.66ID:ciqMShcX誤解してた
ありがとう
0902デフォルトの名無しさん
2015/03/01(日) 02:47:46.19ID:vUz0ZLJIってなったわ。なるほど。
puts -0.0+0 #=> 0.0
これでもいけるみたい。
0903デフォルトの名無しさん
2015/03/01(日) 02:56:02.92ID:ciqMShcXawkかよw
0904デフォルトの名無しさん
2015/03/01(日) 03:08:40.08ID:ewolcDIQ>>902
なるほど、計算量減らせますね。
ところでputsのところはなぜだめなんでしょう?
0905デフォルトの名無しさん
2015/03/01(日) 03:18:04.07ID:ciqMShcXhttp://ja.wikipedia.org/wiki/%E2%88%920
らしいよ
0906デフォルトの名無しさん
2015/03/01(日) 03:19:22.20ID:vUz0ZLJI"%.3f"%[x] + " " + "%.3f"%[y]は
String#%とString#+を2回ずつやってるから
"%.3f %.3f"%[x, y]ってやった方が早いよ。読み易いし(個人的に)。
あと例の部分は
x = x.abs if x.zero?
とかってした方が分かり易いような。
0907デフォルトの名無しさん
2015/03/01(日) 05:06:33.52ID:1B6jpH8lNumeric#zero?(Fixnum#zero?) と Numeric#nonzero? は ==0よりもだいぶ遅いんですが、これらの使いどころってどういう場面でしょう?
0908デフォルトの名無しさん
2015/03/01(日) 05:18:05.10ID:ciqMShcX0909デフォルトの名無しさん
2015/03/01(日) 07:06:52.31ID:pZeLnU6y速度=存在意義だとするとそもそもゲロ遅いRubyの存在意義は無い
コードの見易さの問題
0910デフォルトの名無しさん
2015/03/01(日) 08:16:56.62ID:ewolcDIQ>>906
ありがとう
確かにその方が良いかも。
0911デフォルトの名無しさん
2015/03/01(日) 21:22:33.57ID:4MmbhF/Iそれを条件によって出力するメソッドってどう定義すればいいのかな?
def hello(a,b)
みたいな感じで始めてaが条件にマッチしたらxを出力
bが条件にマッチしたらyを出力、って感じでa,b両方出力するやつを書きたい
0912デフォルトの名無しさん
2015/03/01(日) 21:25:12.38ID:pZeLnU6yputs y if 条件(b)
0913デフォルトの名無しさん
2015/03/01(日) 21:31:21.20ID:4MmbhF/Iありがとう...
0914デフォルトの名無しさん
2015/03/02(月) 00:07:14.99ID:oT97RUxu0915デフォルトの名無しさん
2015/03/02(月) 00:11:34.49ID:oT97RUxuruby -e 'puts %@5Z;R[YJ^;Y8>ZXX&FXX&^XX&9XX*(@::gsub(/&/, "&"[0])::unpack(?u)'
0916デフォルトの名無しさん
2015/03/02(月) 07:37:37.94ID:inbvIq+5=== とか ||= とか >> とか
検索ワードが単純すぎるのかリファレンスマニュアルで検索できません
0917デフォルトの名無しさん
2015/03/02(月) 07:53:55.50ID:R5NgJSqu0918デフォルトの名無しさん
2015/03/02(月) 23:02:30.62ID:wVZtgmYGhoge
end
条件部分が長くなって読みにくくなってしまうことがあるんですが
いい方法は無いでしょうかね?
0919デフォルトの名無しさん
2015/03/03(火) 00:07:11.81ID:zVvpeWzV0920デフォルトの名無しさん
2015/03/03(火) 00:11:35.52ID:vR9EUcujbar = true
zoo = true
b = true
unless foo
b = false
end
unless bar
b = false
end
unless zoo
b = false
end
if b
p foo
p bar
p zoo
end
0921デフォルトの名無しさん
2015/03/03(火) 00:25:06.51ID:zwt6IiMP自分なら、以下のようにコードの論理構造に沿って
改行とインデントを挿入して書く
if (
foo &&
bar &&
...
)
hoge
end
たとえば、もし foo や bar が一行に収まらないほど長くなっても同じ
if (
(
foo_1 +
foo_2
) && (
bar(
param1,
param2
)
) && (
...
)
)
hoge
end
コーディング規約の一貫性が大切だと思う
0922デフォルトの名無しさん
2015/03/03(火) 00:28:27.47ID:rb+ajjEU0923921
2015/03/03(火) 00:34:20.64ID:zwt6IiMP組み込みメソッド Enumerable#all? を使うとより単純になる
http://docs.ruby-lang.org/ja/2.2.0/class/Enumerable.html#I_ALL--3F
if [
foo,
bar.
zoo
].all?
hoge
end
もし「すべて || で結合されている」ならば、Enumerable#any? を使う
http://docs.ruby-lang.org/ja/2.2.0/class/Enumerable.html#I_ANY--3F
if [
foo,
bar.
zoo
].any?
hoge
end
0924デフォルトの名無しさん
2015/03/03(火) 02:01:03.10ID:ZJqo3Jjwどうもありがとうございます!
どの意見もとてもためになりました。
0925デフォルトの名無しさん
2015/03/03(火) 09:43:04.98ID:rb+ajjEUアトラシアンCo-CEOとRuby開発者まつもと氏が見るソフトウェアの今後 [2015/03/03]
0926デフォルトの名無しさん
2015/03/05(木) 02:42:45.93ID:X+jzIOn3File.writeで保存したデータを見ると改行がCRLFになっていることがあるんですが
元の内容(res.body)を確認してみると該当箇所がLFであることが結構な頻度であります。
inspectで見てみても\nだけになっています。
これは一体どういうことが起こっているのでしょうか?
handler = proc{|req, res|
p res.body.match(/\r\n/)
File.write("log", res.body)
}
config = {
BindAddress: hoge,
Port: hogehoge,
ProxyContentHandler: handler
}
WEBrick::HTTPProxyServer.new(config).start
0927デフォルトの名無しさん
2015/03/05(木) 18:34:28.01ID:C3m5LJXPwiki とか markdown とか、html を生成する表記法っていろいろあるけど、この表記法ってナニ?
* continuous integration: <{img src="https://travis-ci.org/halostatue/minitest-bonus-assertions.png" /}[https://travis-ci.org/halostatue/minitest-bonus-assertions]>
Additional assertions for {Minitest}[https://github.com/seattlerb/minitest].
0928デフォルトの名無しさん
2015/03/05(木) 19:25:12.04ID:nZIZZ25gp a.inject(Hash.new{[]}){|map, x| map[x] += [x]; map} #1
p a.inject(Hash.new{[]}){|map, x| map[x].concat([x]); map} #2
p a.inject(Hash.new{[]}){|map, x| map[x] << x; map} #3
p a += [100]
p a.concat([101])
p a << 102
実行結果
{1=>[1, 1], 2=>[2, 2], 3=>[3], 4=>[4], 5=>[5]}
{}
{}
[1, 2, 3, 4, 5, 1, 2, 100]
[1, 2, 3, 4, 5, 1, 2, 100, 101]
[1, 2, 3, 4, 5, 1, 2, 100, 101, 102]
質問
なぜ、#2や#3が#1のような結果を出してくれないのでしょう?
ruby 2.0.0p598です
0929デフォルトの名無しさん
2015/03/05(木) 19:44:28.85ID:Bj74d4BH勝手にはキーに登録してくれないから
ちゃんとキーに登録するように書けば#1と同じようになる
p a.inject(Hash.new{|h,k|h[k]=[]}){|map, x| map[x].concat([x]); map} #2
p a.inject(Hash.new{|h,k|h[k]=[]}){|map, x| map[x] << x; map} #3
0930デフォルトの名無しさん
2015/03/05(木) 20:16:34.95ID:PnPYgYXw> Hash.newのブロックは戻り値を決めるだけで
> 勝手にはキーに登録してくれないから
即レスありがとうございます!
おわあああああ!!!
勝手にキー登録されるもんだと勝手に思い込んでた!!
map[x] = map[x] + [x]になるから
Hash#=[]=とArray#+ってことになるのか
Array#[]=を呼んでるつもりだったけどもw
0931デフォルトの名無しさん
2015/03/05(木) 20:18:26.70ID:p3Fl2hJLHash#[]=とArray#+ってことになるのか
Array#+=を呼んでるつもりだったけども
0932デフォルトの名無しさん
2015/03/05(木) 21:15:27.06ID:xYJzrRgDinjectのブロックの中でオブジェクトの中身を書き換えるなんて関数型信者にぶん殴られるぞ
0933デフォルトの名無しさん
2015/03/05(木) 21:31:45.65ID:Bj74d4BHこれでいっすか
0934デフォルトの名無しさん
2015/03/05(木) 21:44:38.63ID:Bj74d4BH省略したり何か別の自身であることを直接示す書き方ってありますか?
==0じゃなくて.zero?にするのと同じように
自身を返すメソッドってあったらそれを指定したいイメージだけどないよね
0935デフォルトの名無しさん
2015/03/05(木) 21:51:49.84ID:sljD0ZJl>injectのブロックの中でオブジェクトの中身を書き換えるなんて関数型信者にぶん殴られるぞ
心理的抵抗があるんだよな
0936デフォルトの名無しさん
2015/03/06(金) 07:45:11.48ID:m+byGEX+Object#itself
[1,2,3,1].group_by(&:itself)
0937デフォルトの名無しさん
2015/03/06(金) 08:02:28.91ID:qwFgbeNs2.2で新しく入ったのか
知らなかったありがとう!
0938デフォルトの名無しさん
2015/03/06(金) 16:05:00.89ID:r9/Lx2G50939デフォルトの名無しさん
2015/03/06(金) 20:22:30.99ID:PQkPUtV7ま、Scalaあたりかな
0940デフォルトの名無しさん
2015/03/06(金) 21:55:01.26ID:me7M4fm7多大な犠牲と火傷を払って、やっと(本来Rubyが不要な人たちに)理解された
静かで退屈で幸せな日々が戻ってくる
0941デフォルトの名無しさん
2015/03/06(金) 22:11:20.59ID:qwFgbeNsでもJavaのライブラリをどうしても使いたい人でもなければ特にScalaを使う理由はない
0942デフォルトの名無しさん
2015/03/06(金) 22:42:58.00ID:PQkPUtV7なんでもかんでもJavaで片付けようとしてた人たちにRubyという選択肢もあるよ、という
ことを知らしめることができたのはいいことだね
今までは他のまともな選択肢としてはPHPぐらいしかなかったのだから
0943デフォルトの名無しさん
2015/03/06(金) 23:03:28.14ID:r9/Lx2G50944デフォルトの名無しさん
2015/03/06(金) 23:25:40.73ID:vO+G6CJH0945デフォルトの名無しさん
2015/03/06(金) 23:50:22.70ID:bYz+Y5q2情弱には助かるぜ
0946デフォルトの名無しさん
2015/03/07(土) 11:46:38.09ID:UbZLtcdCgroup_byなんてあったのか
1.8.6を長く使ってたのでその存在に気付けなかった
これってモロにSQL由来なのかな?
0947デフォルトの名無しさん
2015/03/07(土) 11:52:18.96ID:MlGEwDRl0948デフォルトの名無しさん
2015/03/07(土) 15:02:53.80ID:MaguiqUS0949デフォルトの名無しさん
2015/03/07(土) 19:13:00.81ID:54pgo+OO後で泣きながら他の言語で書き直す羽目になる
0950デフォルトの名無しさん
2015/03/07(土) 19:49:45.23ID:MlGEwDRl0951デフォルトの名無しさん
2015/03/07(土) 20:21:39.13ID:sKPR5r8d構造だけ練って書き換えるのは賢い使い方
0952デフォルトの名無しさん
2015/03/07(土) 21:02:48.61ID:XVcFmamb書き直すハメになるまで育つビジネスなんてそうそうないんだから、育った後に考えればいいこと
その前に書き直しのことを考えるのはただの「捕らぬ狸の皮算用」ですな
0953デフォルトの名無しさん
2015/03/07(土) 21:19:11.20ID:sKPR5r8d法人ならクライアントの指名で選択権なんてないんだしw
ある程度儲かるなら鯖との兼ね合いで結局リニューアルで書き換えになるんだしw
0954デフォルトの名無しさん
2015/03/07(土) 21:23:37.05ID:54pgo+OO今はメリット皆無
0955デフォルトの名無しさん
2015/03/07(土) 21:27:19.66ID:XVcFmamb残念だなぁ、君の希望通りに世の中が推移してなくてw
0956デフォルトの名無しさん
2015/03/07(土) 22:04:30.14ID:54pgo+OO0957デフォルトの名無しさん
2015/03/07(土) 22:09:25.40ID:XVcFmamb残念だなぁ、君の希望通りに世の中が推移してなくてw
0958デフォルトの名無しさん
2015/03/07(土) 22:16:11.89ID:zDrJhe3l0959デフォルトの名無しさん
2015/03/07(土) 23:31:19.46ID:5/MzqEvw導入、運用、改修ならWordPressで済んでしまうし。
いままで、夢をありがとう
0960デフォルトの名無しさん
2015/03/08(日) 00:03:05.33ID:OIrWM5if0961デフォルトの名無しさん
2015/03/08(日) 00:30:29.13ID:yzx/IE4zそこはNだけでいい
0962デフォルトの名無しさん
2015/03/08(日) 01:15:00.39ID:jl3+9tmLよく覚えていないが、RubyVMの中では、
改行コードは、\n で統一されている
外部環境 → RubyVM → 外部環境
外部環境がWindowsなら、
\r\n → \n → \r\n
0963デフォルトの名無しさん
2015/03/08(日) 05:05:20.61ID:dB2moAQV確かに、Webrickなぞ使わなくともFile.writeとかFile.readを使うことで状況が再現できました。
どうもありがとうございます。
0964デフォルトの名無しさん
2015/03/08(日) 17:40:33.34ID:nkTbr3EURubyの勉強の仕方を教えて下さい。
0965デフォルトの名無しさん
2015/03/08(日) 18:12:55.61ID:srsOwzq5まずは目的を教えて下さい。
無いなら諦めて下さい。
0966デフォルトの名無しさん
2015/03/08(日) 21:40:22.77ID:fg6UZd+Eまずは「Ruby 入門」でぐぐってその中からいくつか読んでみたらいいんじゃないかな
0967デフォルトの名無しさん
2015/03/08(日) 21:51:14.87ID:OIrWM5if暇を見て読んでタイプするだけ
理解したらタイプ、難しかったらググってタイプ
「作りながら学ぶruby入門」を買ってきてタイプ
改造して手直ししながら運用できるようになれば
初心入門者卒業
そっから先はlinuxとかrailsとかsqlとか色々複合的な知識が必要になる
0968デフォルトの名無しさん
2015/03/09(月) 04:26:57.37ID:i5vehHCWhttp://tryruby.org/
0969デフォルトの名無しさん
2015/03/09(月) 08:01:24.40ID:Wd5OU0nX自分のコードが動くことが楽しいと感じ、モチベを維持できてたら
いつの間にか初心者卒業してる
最初は効率よくとか、人より早くとか考えない
失敗しないと身につかないスキルがあるから失敗も大事
0970デフォルトの名無しさん
2015/03/09(月) 17:26:12.01ID:vIhT64TYfor a, b in コンテナ
ここで、a, bを使う
一方、Rubyはブロック一つで、のし上がった言語。
コンテナ do |a, b|
ここで、a, bを使う
end
この右側に、| | で囲むアイデアが、世界を驚かせ、
多くの人が、Rubyを神と崇める
Python, Rubyはほとんど同じなのだが、
本を読む順番は、「たのしいRuby」をみっちり読んだ後に、
「みんなのPython」を読めば、一石二鳥!
1+1=2 ではなく、1.4 程度で、両方の言語を学べる(エコ学習)
0971デフォルトの名無しさん
2015/03/09(月) 20:31:37.23ID:3H3hf/iH特に関数型的に使いたい人たちには大不評だけどな
そもそもPythonとRubyがほとんど同じだとか言ってる時点でブロックの何が嬉しいのか全く理解してなさそうだけど
0972デフォルトの名無しさん
2015/03/09(月) 20:34:26.51ID:LVVJpWoE横からだけど、ブロックの何が嬉しいの?
Procのインスタンスと比較して、みたいな話?
0973デフォルトの名無しさん
2015/03/09(月) 20:48:29.93ID:3H3hf/iH「コールバックを自然に書ける」に尽きる
Javaだと
readFile(new ReadFileCallback() {
void callback(string content) {
use(content); }
}
);
こうなるのが、JavaScriptだと
readFile(function(content) { use(content); });
となり、Rubyなら
read_file do |content|
use content
end
となる
他のはいかにもハック感があるのに対し、Rubyはあたかも言語組み込みのループ構文のように見えるのが特徴だね
Pythonのlambdaは副作用書くのに使うようなものではないので省く
0974デフォルトの名無しさん
2015/03/09(月) 21:21:46.21ID:4fC/PUC7そうすると今の引数の仕組みとかがうまくいかなくなるのか
0975デフォルトの名無しさん
2015/03/09(月) 21:59:44.32ID:2o+rbul/ブロックの引数の仕組み、や return の理解があやしければ lambda を使おう
0976デフォルトの名無しさん
2015/03/09(月) 22:52:00.21ID:T6nKbDrgjavascriptの連中はOSぐらい書いちゃうんだよ?
優れた言語のはずなのに悲しいよね。
0977デフォルトの名無しさん
2015/03/10(火) 01:49:25.31ID:Z23I42wA言語は関係ないな
0978デフォルトの名無しさん
2015/03/10(火) 01:50:17.49ID:Z23I42wA言語は関係ないな
0979デフォルトの名無しさん
2015/03/10(火) 05:38:41.64ID:mQZ0aY7ihttp://news.mynavi.jp/news/2015/03/09/204/
0980デフォルトの名無しさん
2015/03/10(火) 06:45:43.86ID:ZyX65yHpて言うか、Rubyに >>971 的な意味で無名関数は無いので
やるならそこにも手を入れないといけないが、そうすると
「関数とはある種のメソッドのことである」
「メソッドは必ずどこかのオブジェクトに所属しなければならない」
「インスタンス変数は必ずメソッドを経由でアクセスしなければならない」
ってポリシーにも波及してくるからね
0981デフォルトの名無しさん
2015/03/10(火) 12:26:29.09ID:YcE4vHSD->表記も無理がありすぎる
0982デフォルトの名無しさん
2015/03/10(火) 21:36:18.82ID:4EFpqRHUとあるスクリプト(RBファイル)なんですが、制作者のサイトからダウンロードしたものはちゃんと実行できるのに、中身をコピーして新規に作ったRBファイルだと実行できません。解決法を教えてください。
Ruby1.9.3.-p551
WindowsVistaSP2
サクラエディタ2.1.1.4
0983デフォルトの名無しさん
2015/03/10(火) 21:44:31.64ID:3P4ym/J50984デフォルトの名無しさん
2015/03/10(火) 21:52:42.78ID:4EFpqRHUエンコーディング…
ググってきます。゚(゚´Д`゚)゚。
0985デフォルトの名無しさん
2015/03/10(火) 22:03:31.56ID:3P4ym/J5コピーしたファイルに対してruby -Ka ファイル名 とか ruby -Ks ファイル名 とかってしてもうまく行くかも知れないよ
0986デフォルトの名無しさん
2015/03/10(火) 23:55:57.09ID:6ILv8fjjありがとうございます!
今度は別の問題が発生してくじけそうです。゚(゚´Д`゚)゚。
0987デフォルトの名無しさん
2015/03/11(水) 00:12:17.31ID:XtiAka4m0988デフォルトの名無しさん
2015/03/11(水) 00:19:43.44ID:409Xxc8o⚪︎バッドノウハウ
0989デフォルトの名無しさん
2015/03/11(水) 00:30:43.30ID:XtiAka4m一度は経験しとかないとね
0990986
2015/03/11(水) 01:39:26.18ID:MLKxjfw5コマンドプロンプトで実行しても、エラーが出てしまい出力できません。
http://imgur.com/8Ioq7PK.jpg
これはスクリプト制作者のブログに貼られた画像で、出力成功したものです。
http://imgur.com/EzDr6SI.png
そしてこれが私自身が操作したもので、出力できずにいます。
何が原因でしょうか?
0991デフォルトの名無しさん
2015/03/11(水) 02:29:09.33ID:Vrr9zXxI「if true」か「if false」にして試してみてはいかが
0992デフォルトの名無しさん
2015/03/11(水) 02:31:08.69ID:Vrr9zXxI「 if work.size < 1」に直せばうまく行くと思うよ
0993デフォルトの名無しさん
2015/03/11(水) 02:31:24.12ID:GxyWGyaM107行目に定義されていないメソッドまたは変数のgtってのがあるよって書いてあるし、元のソースコードとそこらへん比べてみたらどうだろう
0994デフォルトの名無しさん
2015/03/11(水) 02:32:12.62ID:Vrr9zXxI「if work.size > 1」の間違いだわ
これは作者のミスだね
0996デフォルトの名無しさん
2015/03/11(水) 08:11:12.43ID:hyga96Fuエスパー乙。
コードの意味も分からずにコピペして動かしてたわけだ。
>995
今回はHTMLにエスケープされたような文字列でエラーになってたから994はエスパー出来たけど、質問するならコピペしたソースのURLかせめてソースの断片くらいは示しなさいよ。
0997デフォルトの名無しさん
2015/03/11(水) 09:17:02.12ID:NkBCbaPC0998986
2015/03/11(水) 09:55:05.10ID:MLKxjfw5わかりました!
また壁にぶつかったときはお世話になるかもしれません。その時はよろしくお願い致します!
ありがとうございます!
0999デフォルトの名無しさん
2015/03/11(水) 12:51:49.32ID:Wt/f1P/Gそれが出来ないのが初心者
1000デフォルトの名無しさん
2015/03/11(水) 16:17:49.24ID:cFDo18bs10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。