Ruby 初心者スレッド Part 55
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2014/06/21(土) 23:39:44.94ID:rKd1VvW8質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
RoRはスレ違いよ
前スレ
Ruby 初心者スレッド Part 54
http://peace.2ch.net/test/read.cgi/tech/1392598207/
るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
逆引きRuby
http://www.namaraii.com/rubytips/
0002デフォルトの名無しさん
2014/06/21(土) 23:40:40.82ID:z7G+00JR言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
霊長類研究所
0003デフォルトの名無しさん
2014/06/21(土) 23:57:21.14ID:nSPSSkcc0004デフォルトの名無しさん
2014/06/22(日) 00:02:10.62ID:P/6Lf536.NET3.5向けにビルドしたものは
マニフェストファイルで.NET4.5での動作を許可するよう指定すれば.NET4.5上で動く
デフォルトで動かないのはMSのクソ厳格な互換性ポリシー(.NETは業務向けだからね)によるもので、
普通の基準でいえば完全な互換性がある
0005デフォルトの名無しさん
2014/06/22(日) 01:13:10.71ID:upDz43Y5>自分が調べた結果では
>Win7は.NET Framework2.0/3.0/3.5が入っている
>Win8は.NET Framework4.5が入っていて.NET Framework3.5は無効化されている
Win7向けにビルドしたC#アプリを素のWin8へインストールして実行しようとすると、
.NET Frameworkのバージョン不一致で起動すらできないってこと?
そうだとしたらWindowsは糞だけど、信じられんな
OSXならCocoaフレームワークが2つ前くらい迄なら、平気で実行できるのに
0006前1000
2014/06/22(日) 18:36:27.68ID:ZfkThsTa情報ありがとう、そういうことなんだね....
元質問者さんの目的であれば、マニフェストファイルを修正して
差し替えた改変版の IronRuby とスクリプトを irpack でexe化すれば、
解決できる可能性はありそうだ
MSの互換性ポリシーに関しては、それが業務向けであるということなら、
妥当な方針だと言わざるをえない(中途半端に動くよりもベターだから)
とはいえ、OSX上での開発がC++/CarbonからObjC/Cocoaへ完全移行したように、
WidowsでもC++/Win32からC#/.Netへ移行したものだと思い込んでいたけど、
Win8の時代に至っても一般のデスクトップアプリ開発ではC++/Win32が必須なんだね
業務アプリではない元質問者さんが、IronRuby の採用そのものに抵抗を感じるのも分かる
0007デフォルトの名無しさん
2014/06/22(日) 19:08:05.07ID:kD+jIMJ8一般のデスクトップアプリ開発ではC++/Win32が必須
一般のデスクトップアプリ開発ではC++/Win32が必須
一般のデスクトップアプリ開発ではC++/Win32が必須
一般のデスクトップアプリ開発ではC++/Win32が必須
一般のデスクトップアプリ開発ではC++/Win32が必須
一般のデスクトップアプリ開発ではC++/Win32が必須
一般のデスクトップアプリ開発ではC++/Win32が必須
0008デフォルトの名無しさん
2014/06/22(日) 21:40:35.61ID:LFA4ujmd0009前スレ966
2014/06/22(日) 23:19:35.65ID:95RLu5vG.NET Frameworkのバージョン以前に.起動の遅さとRubyコードの実行の遅さが気になります
手近なコードを走らせてみましたが.NET Framework 4.5.1でIronRuby 1.1.3が走り出すまで
3秒強くらいかかります。.NET Framework 3.5だと6秒くらいかかります
さらにコードが実行完了するまで4秒くらいかかります。コードの実行時間は
.NET Framework 4.5.1でも.NET Framework 3.5でも大差ないようです
同じコードをRuby 2.1.2で実行するとコードの実行に0.1秒強くらい(起動は一瞬)なので
ちょっと遅いとかそういうレベルではない感じです
JRubyも同じくはかってみましたがJRuby 1.7.12が起動するまでに5秒くらい、コードの実行完了
に2秒弱くらいでした
VM実装の処理系だと遅いのはさけられなさそうですね。これだと1.8の方がまだ速そうです
Rubyから.NET Frameworkのクラスを呼び出すようなラッパーがあれば・・・っとググって見ると
Ruby/.NET Bridgeなるものがあったらしい?(今は消滅?)。使えるレベルのラッパーがあれば
本家の高速性と豊富な.NETのクラス群を使えて良いとこ取りが出来そうですが
う〜む・・・Rubyで行くならRuby 1.8.7+wxRuby 0.6.0でお茶を濁すしかないのか・・・
RubyにこだわらないならPython+wxPythonやC# for VC#2008EXあたりになるのかな
#計測に使ったコードはStringにconcatしまくる系の物です
0010デフォルトの名無しさん
2014/06/22(日) 23:19:40.68ID:jnseZCAU端っから自分の妄想した結論以外は受け付ける気がないでしょ
0011デフォルトの名無しさん
2014/06/23(月) 01:29:19.73ID:LLEITqEE0012デフォルトの名無しさん
2014/06/23(月) 03:34:48.43ID:owP8nPZ40013デフォルトの名無しさん
2014/06/23(月) 20:00:51.23ID:Jv1bdWLq0014デフォルトの名無しさん
2014/06/23(月) 20:13:31.25ID:9imRHr/Vコンピュータに命令することができます。
0015デフォルトの名無しさん
2014/06/23(月) 22:15:43.67ID:BINMcHFB0016デフォルトの名無しさん
2014/06/23(月) 23:03:36.19ID:7NlEu9GA0017デフォルトの名無しさん
2014/06/23(月) 23:51:44.83ID:owP8nPZ40018デフォルトの名無しさん
2014/06/23(月) 23:57:28.82ID:s879JP9Jattr_accessorの使用例がほしいな
外部からインスタンス変数を参照する方法って何かあったよなと
リファレンスマニュアルとにらめっこすること数十分。メソッド定義の
ところにattr_accessorの使用例が載っているのを見つけて一件落着した
0019,,・´∀`・,,)っ-○○○
2014/06/24(火) 00:09:30.84ID:xHFmkiJx自前でアクセサ定義するときに助けになりますよ
0020デフォルトの名無しさん
2014/06/24(火) 07:58:05.88ID:1kTNOLbustr.concat "\xff\xff\xff\xff"
と書くとデータ列によってCompatibilityErrorが起きる場合がありますが
これを防ぐ方法はありますか?
str.concat [0xffffffff].pack("V")
と書けば同じ結果を得られますが↑の書き方よりかなり遅いです
0021デフォルトの名無しさん
2014/06/24(火) 11:06:05.40ID:VrH3d8m/0022デフォルトの名無しさん
2014/06/24(火) 18:47:07.86ID:r/Uvv29Gstr.concat "\xff\xff\xff\xff".force_encoding(str.encoding)
ではどうだろうか?
0023デフォルトの名無しさん
2014/06/24(火) 19:47:53.32ID:c5+BSms2文字列をバイト列として扱う場合はエンコーディングをASCII-8BITに揃えるがよろし
0024デフォルトの名無しさん
2014/06/24(火) 21:06:26.58ID:3Daegd5rp(
1
2
) #=> syntax error ←分かる
p((
1
2
)) #=> 2 ←分かる
p (
1
2
) #=> syntax error ←2個目のコードの引数の括弧を省略した形だから2になるはず
0025デフォルトの名無しさん
2014/06/24(火) 21:39:43.41ID:c5+BSms2メソッド名とカッコの間にはスペースが許されているので、一番上と同じように解釈される
よって syntax error
0026デフォルトの名無しさん
2014/06/24(火) 22:43:47.80ID:3Daegd5r0027デフォルトの名無しさん
2014/06/25(水) 09:01:04.56ID:jzzlw1rup (( 1
2 )) # => 2
また負けたのかwwwwwwwwwwwww
0028デフォルトの名無しさん
2014/06/25(水) 14:42:21.47ID:A2jEgt78p (( 1
2 )) # => 2
これは
p (( 1; 2 )) # => 2
と同じ
>>25
irb(main):001:0> p(1,2)
1
2
=> [1, 2]
irb(main):002:0> p (1,2)
SyntaxError: (irb):2: syntax error, unexpected ',', expecting ')'
002920
2014/06/25(水) 19:32:24.84ID:y7Yol2H5ありがとうございます。両方とも問題なく動くようです
ascii-8bitの指定はRuby 1.8相当の動作という認識で
良いのかな?
0030デフォルトの名無しさん
2014/06/28(土) 14:23:12.83ID:Vb0rbHjb「requireはソースコードの上の方でやるもんだ」
って言われました。
使うかどうか分からないのにとりあえずrequireするのっておかしくないですか?
gemの依存関係はgemspecに書いてるし、そのソースコードでどんなライブラリが使われているか一覧することに何のメリットがあるんですか?
知りたければgrep requireすればいいですよね?
って言ったら怒られました。
よくわかりません。
0031デフォルトの名無しさん
2014/06/28(土) 17:48:20.84ID:Ik80dgEPソースの上の方でやっておいた方が見通しはよくなるね
0032デフォルトの名無しさん
2014/06/28(土) 18:02:41.94ID:MBrErHLJ0033デフォルトの名無しさん
2014/06/28(土) 18:11:58.34ID:JCL+UsP9そのライブラリの依存関係をgemspecで必須と明示してあるなら、
その仕様(specificationに従って、単純にファイルの先頭で require すべき
ある特定の「条件にマッチした場合」に限るという実装(implementation)は、
ライブラリが必須であるという仕様に違反している
0034デフォルトの名無しさん
2014/06/28(土) 20:27:57.09ID:Vb0rbHjbどうしてもってわけでもないけど、
コマンド叩いてすぐに処理結果が欲しいコマンドツールの類いだとrequireすると遅くならない?
RoRとか立ちあげっぱなプログラムならまだ許容できるけど。
>>33
よくわからんけど、そうすると、
例えばhttpサーバのライブラリがあるとして、
http_server -versionってバージョン表示させるだけでspec.add_dependencyのgemを全部requireしてるのですか?
0035デフォルトの名無しさん
2014/06/28(土) 22:47:38.23ID:JCL+UsP9いや、requireの実行時間が問題になるようなRubyアプリケーションは、ほとんど存在しない
もしアプリケーションの起動時間が気になるほど遅いのであれば、まず性能測定をすべき
多くの状況下では require 以外の処理、たとえばサーバへの接続待ちや
大量のデータファイル読み込み等がボトルネックになっているはず
> http_server -versionってバージョン表示させるだけでspec.add_dependencyのgemを全部requireしてるのですか?
そうだよ、実行時に必須なライブラリはサーバ起動時にすべてrequireする
逆に、必須ではなく条件に応じて必要になるライブラリは spec.add_dependency せず、
サーバ起動後に特定の「条件にマッチした場合」に require する
たとえばプラグインのようなオプション・ライブラリは、設定ファイルで指定された場合、
あるいはプラグイン・ディレクトリにライブラリが存在する場合にだけ require する
0036デフォルトの名無しさん
2014/06/29(日) 01:12:28.28ID:fkqTTz9x最初のrequire"watir"で必要以上のクラス定義までやってない
こうすべきだみたいなのをしつこくいう奴は一種の精神病か高2病みたいなもん
絶対に正しいソースコードの書き方なんてものはないのに
0037デフォルトの名無しさん
2014/06/29(日) 02:19:09.05ID:+CIKJ6ui例えばrails -vしても明らかに必要最低限のスクリプトしかrequireしてないわけだが、
これもやっぱり>>33的には違反してるね。
屁がでそうになってきた。
0038デフォルトの名無しさん
2014/06/29(日) 11:01:30.37ID:Jxhjl2/k0039デフォルトの名無しさん
2014/06/29(日) 11:56:13.78ID:cjgiIXv/Rails級の巨大フレームワークを開発するプロジェクトは、ごくまれな特殊ケース
一般的なRubyアプリケーション/ライブラリ開発プロジェクトの場合:
・動的な require が必要なケースは、組込みの Kernel.#autoload を使う
・つまり「(必須ライブラリを)単純にファイルの先頭で require する」(>>33)が
「(必須ライブラリを)単純にファイルの先頭で autoload する」に代わるだけ
Railsフレームワーク上でのアプリケーション開発プロジェクトの場合:
・開発中(development)では頻繁にRailsの再起動を繰り返すので、
アプリケーションは遅延ロード(lazy loading)される --> デフォルトの動作
・本番運用時(production)では、
アプリケーションは単純に(=貪欲に)ロード(eager loading)される
・ただし、もしも常に(=本番運用時でも)遅延ロードさせたい必須ライブラリがあるなら、
メソッド ActiveSupport.on_load のブロック引数内で明示的に require する
>>30のような、if文を使った条件判定による動的な require は推奨されない
一般的なプロジェクトはもちろん、たとえRailsアプリケーション開発であっても
0040デフォルトの名無しさん
2014/06/30(月) 02:08:57.29ID:BzHZeElB0041デフォルトの名無しさん
2014/06/30(月) 15:42:59.39ID:qlWBcG3y普通に
--foo='bar baz'
ってやると
--foo=bar
baz
ってバラされちゃうんだけど
0042デフォルトの名無しさん
2014/06/30(月) 16:14:43.24ID:9mB1LZ3w0043,,・´∀`・,,)っ-○○○
2014/06/30(月) 20:23:55.18ID:la/ujWVd0044デフォルトの名無しさん
2014/07/01(火) 11:24:36.03ID:WApzAG0A実はあれIDN対応のライブラリを読んでて無駄に重い
国際化ドメイン名なんて99%の人間には不要なのだが
0045デフォルトの名無しさん
2014/07/05(土) 03:05:10.71ID:FujCrvNA0046デフォルトの名無しさん
2014/07/05(土) 09:38:00.53ID:eW5SdgQ8逆に関数が少ないと困ったりしないのかと不安になるのですが。
0047デフォルトの名無しさん
2014/07/05(土) 09:42:51.16ID:MbZ2I/h/0048デフォルトの名無しさん
2014/07/05(土) 10:08:09.40ID:gQAWVLidRubyのように本当の最初からクラスやモジュールがあってそこに整理され(最悪でも詰め込まれて)いるライブラリと比べると、
どうしても存在レベルで冗長でわかりにくく間違いやすい印象が否めない
というような程度の意味だろう
本当に記憶に支障があるという話ではない
0049デフォルトの名無しさん
2014/07/05(土) 10:21:12.46ID:MxOk5d7iたとえば、文字列と配列の長さを取得する場合
Ruby:
string.length
array.length
PHP:
strlen($string)
count($array)
たとえば、文字列と配列を逆順にする場合
Ruby:
string.reverse
array.reverse
PHP:
strrev($string)
array_reverse($array)
確かにPHPのを覚える自信は、俺にはない
0050デフォルトの名無しさん
2014/07/05(土) 10:21:28.25ID:6PKoBQqR0051デフォルトの名無しさん
2014/07/05(土) 10:37:30.05ID:MbZ2I/h/wsprintf
sprintf_s
_sprintf_l
_swprintf_l
__swprintf_l
確かに覚えられん
0052デフォルトの名無しさん
2014/07/05(土) 12:27:47.54ID:mPq5qhEhweb上のドキュメント的なものが一切なくなってて困ってます
知らない間に滅んだ?
0053デフォルトの名無しさん
2014/07/05(土) 12:38:25.10ID:5PqNKKxqWebではないデスクトップ向けGUIツールキットは、
どれも寂しい/厳しい状況みたいだね
Mac限定なら MacRuby、Unix系限定なら Ruby-GNOME3 を選べるけど、
Windows系やマルチプラットフォーム系はどれもこれもメンテされていない
>>4-9 および前スレ終盤あたりも参照
0054デフォルトの名無しさん
2014/07/05(土) 13:21:17.02ID:eW5SdgQ8似たような動きをする関数なのに無駄に細分化されていて面倒だって事なんですね。
確かに文字列も配列も同じ関数(メソッドでしたっけ?)で操作出来たほうが直感的に書けますね。
やはりPHPからは移行した方が良さそうですね。
日本製だから日本語の不具合なんかも起こりにくいだろうし。
0055デフォルトの名無しさん
2014/07/05(土) 14:00:29.85ID:mPq5qhEh丁度似た悩みの方がいらしたんですね
参考に色々試してみます ありがとうございました
本当に滅びつつあったとは凹む
0056デフォルトの名無しさん
2014/07/05(土) 14:02:51.25ID:MbZ2I/h/0057デフォルトの名無しさん
2014/07/05(土) 14:03:50.21ID:5PqNKKxqちなみに Python の場合
長さを取得:
len(string)
len(array)
# len(x) は関数だから、string.len() や array.len() とは書けない
逆順にする:
# string.reverse() ==> 文字列は不変オブジェクトなので反転できずエラー
array.reverse()
# Python のreverse() メソッドは、操作対象を破壊的に操作する(sort() も同様)
# Ruby であれば、非破壊な Array#reverse と破壊的な Array#reverse! という
# 二種類のメソッドが組込みで提供される
Python の一貫性の無さと比較すれば、
・オブジェクト指向言語である Ruby は、オブジェクトへのメソッドとというスタイルで
統一されたプログラミング・インターフェイスを楽しめる
・非破壊メソッドが提供されているので、メソッド・チェーンを使った
流れるような関数型プログラミングを楽しめる
0058デフォルトの名無しさん
2014/07/05(土) 16:01:37.65ID:AM2aRkfD0059デフォルトの名無しさん
2014/07/05(土) 16:59:56.26ID:6PKoBQqRJavaのライブラリとか直交性が過剰なのはすげえ使いづらい
Rubyは客観的な直交性よりも、ユースケースを想定して
一緒に使うものが近くにくるようにまとめてある感じがする
どっちかというと.NETに似てるかな
0060デフォルトの名無しさん
2014/07/05(土) 18:33:03.23ID:pJl1PMF00061デフォルトの名無しさん
2014/07/05(土) 18:53:37.70ID:lUrjnl8FPHPが良いよって知り合いに言われて
どれどれと思って検索したら
「あっ(これはちかづいちゃいけない)」って思って
そいで近所の先生にきいたら
HSPとかすぐに動くのができていいよって言われて
どれどれと思って検索したら
「あっ(これはちかづいちゃいけない)」って思って
そのあとRubyを始めた
0062デフォルトの名無しさん
2014/07/05(土) 18:55:26.27ID:5PqNKKxq直交性という言葉は堅苦しいので、
「驚き最小の原則」と呼ばれることがあるね
ただし、Wikipediaによれば Matz が
この原則を設計哲学に採用したことはないそうな
0063デフォルトの名無しさん
2014/07/05(土) 20:56:37.25ID:eW5SdgQ8Pythonとの違いを教えて頂けて助かりました。どちらにしようか迷っていたので。
表示速度が遅いとGoogleから冷遇されやすいというのが頭にあって「遅い」と言われ続けていたRubyには不安で手を出せなかったんです。最近物凄く速くなったと聞いて真面目に検討していました。
例示していただいたコードみたいに統一感があるのは初心者としては取っ付きやすそうです。
0064デフォルトの名無しさん
2014/07/05(土) 21:10:42.13ID:lUrjnl8F(´・ω・`)RoR秋田…
0065デフォルトの名無しさん
2014/07/05(土) 22:17:07.92ID:gQAWVLid0066デフォルトの名無しさん
2014/07/05(土) 23:37:16.48ID:ZoUg1MJxゲートウェイランゲージRubyは違法化されるべきニダ
0067デフォルトの名無しさん
2014/07/06(日) 01:20:26.14ID:P2yVj5Pdうえーん reverse なんてあったんだ、知らなかった
0068デフォルトの名無しさん
2014/07/06(日) 01:28:14.97ID:+YGfR2l7arr.compact!
上は元の配列を変更しないけど、
下は元の配列を変更する(破壊的なメソッド)
Matzは人間がボトルネックになることを知っているから、
なるべくルールを明確にして、
覚えることを減らそうとしたのだろう
0069デフォルトの名無しさん
2014/07/06(日) 01:53:09.63ID:YqH0gfGj昔は結構速度差があったから!で済むときは!を使った方が
速かったけど、最近はその差がだいぶ縮まった
そういやPythonやJavaScript向けにRuby似の標準クラス
ライブラリとかあったらすごく使いたいと思う
0070デフォルトの名無しさん
2014/07/06(日) 06:13:16.56ID:qu0eEdBG!ついてなくても破壊的なの結構あるよね
はい論破
0071デフォルトの名無しさん
2014/07/06(日) 07:31:07.09ID:hw7hO+cc変数名に!とか?はだめなのはどうして?
変数名の最初の文字に数字が駄目なのはどうして?
0072デフォルトの名無しさん
2014/07/06(日) 11:48:59.33ID:BCJIA2ifより注意が必要なほうを!付きにする、というのがもともとのお約束。
Railsだと、!ありなし2バージョンある場合、!ありは失敗時に例外を投げる、
!なしは偽を返すみたいになってたかな。
0073デフォルトの名無しさん
2014/07/06(日) 11:58:02.96ID:bJUCx13zアンダースコアと同じで、便利に使ってもらって構わない
(その使い方が他の人にとっても便利かどうかは保証しないが)
0074デフォルトの名無しさん
2014/07/06(日) 12:03:33.80ID:GKoC5bbZ0xff
0075デフォルトの名無しさん
2014/07/06(日) 12:32:08.87ID:bJUCx13z「そっちのほうが余計なこと考えなくて速く内部処理できるので、伝統的に人間側に我慢してもらっている」
という程度の回答しかない
全角イコールの=でも変数代入できれば便利かもしれないし、
全角空白と半角空白を同一視すれば初心者に優しいかもしれないが、
処理系はたったそれだけのためにアホみたいに遅くなる
なので誰もやらない
それと似たようなもんだ
0076デフォルトの名無しさん
2014/07/06(日) 12:38:59.42ID:JQNQW/rxそんなパージングの速度なんかたかがしれてるよ
単純に需要がないからやってないだけ
変数名の最初に数字が使えないのは、数値リテラルと区別するためだよ
0077デフォルトの名無しさん
2014/07/06(日) 14:12:09.10ID:bJUCx13z変数名の先頭に数字使えないプログラミング言語は掃いて捨てるほどあるけど、
どれも揃って需要がないから足並み揃えてやってないんですか?
0078デフォルトの名無しさん
2014/07/06(日) 14:20:25.72ID:hw7hO+cc破壊的にお問い合わせする場合とか
0079デフォルトの名無しさん
2014/07/06(日) 14:54:18.29ID:Vjzww54e0080デフォルトの名無しさん
2014/07/06(日) 14:55:10.41ID:JQNQW/rxそうだよ
Lispなんかは数字が先頭でも大丈夫じゃなかったかな
0081デフォルトの名無しさん
2014/07/06(日) 15:12:17.13ID:UgKQDcKg0082デフォルトの名無しさん
2014/07/06(日) 21:55:00.85ID:Nj41+MNM>そういやPythonやJavaScript向けにRuby似の標準クラス
>ライブラリとかあったらすごく使いたいと思う
JavaScript だと Underscore.js とういライブラリが相当品になるね
Ruby の Enumerable 提供メソッドと比較すると
JavaScript の標準ライブラリは貧弱だけど(map/select/inject相当しかない)、
これを Underscore.js が補ってくれる
この Underscore.js とDOM操作ライブラリである jQuery の組合せが、
今時の一般的な JavaScript プログラミングらしい
Python に関しては、よく知らんけど実現不可能じゃないかと思う
>>57では書いていなかったけど、Rubyのブロックに相当する
Python のラムダ式には、その本体に式しか書けない(=文が書けない)という
関数型プログラミングにとっては致命的な制限がある
この制限によって、Ruby や JavaScript と比較するとメソッド・チェーンの
簡潔さや表現力が著しく劣る(はっきり言って使い物にならない ....)
関数型も部分的には導入したけど、あくまで手続き型プログラミングが主体である、
というのが Python の設計哲学なので、それを受け入れるしかない
0083デフォルトの名無しさん
2014/07/07(月) 13:56:06.17ID:x3+FWwz1コマンドプロンプトではgemコマンドも実行できるのにgithub入ってるpowershell.exe上だとgemがコマンドレットになる
どうすればいい?
0084デフォルトの名無しさん
2014/07/07(月) 16:56:05.67ID:SPqafUmZWin環境での作業に使うスクリプトならPythonへ行け
0085デフォルトの名無しさん
2014/07/07(月) 18:19:53.12ID:tDx8Ub5T> 突然のPython <
 ̄Y^Y^Y^Y^Y^Y^Y ̄
0086デフォルトの名無しさん
2014/07/07(月) 19:08:17.84ID:RBOB+lfipackaged librariesを使ったビルドって最近のMacで何時間くらいかかるものなんでしょうか?
ちなみに当方の環境はMacBook Pro 15inch Ratina (2013)です。
OSはMavericksです。
目安もなくただ待つの辛いっす(´・ω・`) packaged librariesでビルド成功した人いたら所要時間教えて下さい。
008786
2014/07/07(月) 19:48:06.65ID:RBOB+lfi約2時間というところでした。上手く行ってよかった…。
お騒がせしました(´・ω・`)
0088デフォルトの名無しさん
2014/07/07(月) 21:31:59.62ID:mALYvw5dならばコマンドプロンプト上で実行すればいいんじゃないの?
もしUNIX相当の操作性が欲しいなら、Cygwin や GnuWin 等で
bash のEXE版を導入するのが手っ取り早い方法
もしどうしてもPowerShell環境を前提にしたいなら、
この板の専用スレで質問したほうがいいと思う
PowerShell からすれば Gems も単なるコマンドの一つにすぎないんだから
0089デフォルトの名無しさん
2014/07/08(火) 02:23:11.91ID:gmDQAblm0090デフォルトの名無しさん
2014/07/08(火) 10:42:52.19ID:it1DuFz/ありがとうございます。
PowerShellをそもそも理解していなくて、確かにcmdでコマンド打っていけばいいんですね。
githubのgitShellがPowerShellでのリモート接続?みたいになってて、わけわからなかった
Cygwin、GnuWin勉強になりました。
0091デフォルトの名無しさん
2014/07/09(水) 02:38:35.03ID:Mc0pdBnn処理の結果を、オブジェクトで扱える
デバッグ環境なら、powershellと同じフォルダにある、
powershell_iseを使えばよい
コマンドを画面で指定できる
-WhatIf で実行せずに、結果を見れる
0092デフォルトの名無しさん
2014/07/09(水) 10:15:07.54ID:7mAKqlSH>>89
Python の方がモテる
0093デフォルトの名無しさん
2014/07/09(水) 10:34:32.06ID:Gd8+EGXPRTってw
ここはツイッターじゃねえんだよ
あとPythonの方がモテるってデータよこせ
昨日別のスレで根拠もなくPythonのシェア80%とかほざいたバカがいたが
お前は違うよなぁ?
0094デフォルトの名無しさん
2014/07/09(水) 21:16:51.49ID:upQsnXcW0095デフォルトの名無しさん
2014/07/10(木) 09:17:42.80ID:bTs9rCATメソッドを定義したいのですがその際、
Stringを継承する以外の方法はあるでしょうか
影響範囲を狭めたくて。
009695
2014/07/10(木) 09:19:22.09ID:bTs9rCATごめんなさい、重要なことが書きもれていました。
メソッドチェーンができるようなメソッドを定義したいです。
0097デフォルトの名無しさん
2014/07/10(木) 10:36:07.22ID:b/HkBDRxでもStringを継承しないことによって影響範囲が狭まるのか?
継承元がほぼ不変といっていいなら対して差がないんじゃないか
0098デフォルトの名無しさん
2014/07/10(木) 10:46:05.37ID:K4xUSUJbそして全滅するActiveなんとか
そのStringオブジェクトがひとつくらいしかなくて、他への影響が心配なのなら、
メソッド入れたモジュールつくって、自作文字列オブジェクト単体にがちょんとくっつけるといい
0099デフォルトの名無しさん
2014/07/10(木) 10:54:25.59ID:K4xUSUJbirb> str = "Gimmick!"
irb> str.extend(MyString)
irb> str.author = "俺俺"
irb> puts str.author
俺俺
0100デフォルトの名無しさん
2014/07/10(木) 22:12:15.29ID:42BTLfYFそういうもんなの?
0101デフォルトの名無しさん
2014/07/10(木) 22:19:12.89ID:fp5I0Zvk0102デフォルトの名無しさん
2014/07/11(金) 01:08:57.98ID:O/mv0f8orubyinstallerとかいうのでインストールしたのが悪かったっぽい
バグ?
0103デフォルトの名無しさん
2014/07/11(金) 01:36:26.58ID:gdJsXwWRってくらいWindowsはかなり見放されてる印象
0104デフォルトの名無しさん
2014/07/11(金) 02:16:33.74ID:Mxpl8CKX0105デフォルトの名無しさん
2014/07/11(金) 15:57:23.04ID:AtibPlU5Installing ruby-2.1.2...のままもう1時間くらい経過してる。
こんなに時間がかかるのはおかしくないの?
ちゃんとインストールが進んでるのか何か確認方法はない?
0106デフォルトの名無しさん
2014/07/11(金) 16:14:35.16ID:gnwgBFCIおそらく gems のダウソに時間がかかってるパターンなので
容量が変化しないままだんまりの可能性が高い
つまり放っておくといつのまにかダウンロード終わるから気長に待て
0107デフォルトの名無しさん
2014/07/11(金) 16:15:58.79ID:gnwgBFCIhttp://www.slideshare.net/znzjp/rubygems
0109デフォルトの名無しさん
2014/07/11(金) 18:25:47.30ID:AtibPlU5Installed ruby-2.1.2 to /Users/ttomo/.rbenv/versions/2.1.2
と出てインストールが終わりますた
インストールに要した時間は2時間半ほど
かかるもんだね・・・
0110デフォルトの名無しさん
2014/07/11(金) 18:29:40.28ID:AtibPlU5011195
2014/07/11(金) 23:03:34.33ID:aUe3n0ai回答azs!
モジュールかーなるほど。
0112デフォルトの名無しさん
2014/07/12(土) 03:10:58.15ID:hZ9DjkyP0113デフォルトの名無しさん
2014/07/12(土) 04:33:10.46ID:RUmdKNHy0114デフォルトの名無しさん
2014/07/12(土) 09:11:31.68ID:uOtl6yhaActiveRecordはRails本からつまみ食いするしかなさそう
nginxはそこら中にあるから適当に選べ
0115デフォルトの名無しさん
2014/07/12(土) 14:45:19.65ID:x0cGe7WXコントローラかモデルが1〜2個までがせいぜいの使いどころ
ARが必要になったらそれはもうRoRの案件
0116,,・´∀`・,,)っ-○○○
2014/07/12(土) 21:27:32.12ID:7ywFD7/RArelなしでOR条件くらい使いたいぜ。
SQLの部分文字列直にたたくってのは抜きで
0117デフォルトの名無しさん
2014/07/13(日) 01:31:28.39ID:/jPIFi1F本当にActiveRecord が使いたいの? Sequel のほうが合ってるんじゃない?
0118デフォルトの名無しさん
2014/07/13(日) 01:46:09.11ID:MZ7WZ/da$ make
したら、警告が2つ出ました。
iseq.c: 関数 ‘iseq_load’ 内:
iseq.c:540:2: 警告: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]
compiling handle.c
compiling cptr.c
cptr.c: 関数 ‘rb_dlptr_inspect’ 内:
cptr.c:392:10: 警告: 使用されない変数 ‘str’ です [-Wunused-variable]
これ以外の異常はなくインストールできましたが、問題ないんでしょうか?
0119デフォルトの名無しさん
2014/07/13(日) 01:59:43.15ID:gfKEp18x他のソフトウェアでもガバガバでるものだ
0120デフォルトの名無しさん
2014/07/13(日) 08:34:30.23ID:pCB2HMHj0121デフォルトの名無しさん
2014/07/13(日) 08:36:53.55ID:g8Ou8aAJ警告出るんですけど
って苦情言ってくる客を思い出した
0122デフォルトの名無しさん
2014/07/13(日) 11:32:33.70ID:pCB2HMHjその苦情は正しい
コンパイル時の警告は
その記述が不完全であり、今はたまたま動作しているのかもしれないが
近い未来に必ずやバグや不具合や修正困難性の原因遠因となろう
ということをまさに文字通り警告しているものだから
唯一の問題はそんな未来が来ないかもしれないということだけだぬ用途的製品寿命的に
契約で縛っとくべきっすな
0123デフォルトの名無しさん
2014/07/17(木) 05:25:09.39ID:T/tQ8OHK変数a
return B(){}
}
クロージャって、Aの内側にある関数Bを呼ぶと、
Bから見て外側にある変数aが、なぜか使える。
つまり、Aの環境ごと保存していること
これは、どういう時に使うの?
0124デフォルトの名無しさん
2014/07/17(木) 05:53:56.38ID:Cd0nud4+保守で食ってますからね
と言えばいい
0125デフォルトの名無しさん
2014/07/17(木) 07:12:32.40ID:qRzp09G7Ruby的例で言えば
a = 1
[1,2,3].each {|i| puts i + a }
この場合、each というメソッドの中でその外側にある変数 a が使える
0126デフォルトの名無しさん
2014/07/17(木) 07:42:24.22ID:Cd0nud4+うーん
JavaScriptやらLuaなどのClassの代替手段として
上位値を使ったイディオムがうんぬんってのはあるけど
スレ違いだなw
0127デフォルトの名無しさん
2014/07/18(金) 13:20:19.63ID:ZlrEmABuwhile true
$iを使って何かする
sleep 一日寝る
$i += 1
end
こういう構造のスクリプトをcronなどから一日一回呼び出して即終了するスクリプトに書き直すと
変数の状態をpstoreとかで全部保存、復旧する必要が出てきて面倒なんですが
そういうのを支援してくれるうまいやり方って無いものですかね
スクリプトのレジューム機能的なもの
0128デフォルトの名無しさん
2014/07/18(金) 14:54:12.99ID:9vc2upx2>変数の状態をpstoreとかで全部保存、復旧する必要が出てきて面倒なんですが
普通はファイルに設定を保存して終了し、次回起動時に読み込む
この世のほぼ全てのプログラムはそのように動作している
つまりどんなプログラムなのか把握できてないのね
保存と読み込みが面倒なのではなく、必要な変数かどうかを調べるのが面倒
0129デフォルトの名無しさん
2014/07/18(金) 14:56:18.98ID:9vc2upx2>>127
そんなん、現状鑑みるなら元のスクリプト動かすのでいいんじゃないのん
わざわざ「よくわからないRuby」なんかで書き直す必要性を感じない
0130デフォルトの名無しさん
2014/07/18(金) 18:47:30.96ID:9k7OCpHX0131デフォルトの名無しさん
2014/07/19(土) 22:26:03.80ID:YDMzLIag0132デフォルトの名無しさん
2014/07/20(日) 19:37:04.60ID:jDI27gQ2Emacsのinf-rubyでirbを立ち上げると入力行がエコーバックされるように
なってしまいました。
以前のバージョンでは入力行はエコーバックされず実行結果だけの表示
だったと思うのですが、
原因と解決策をご存知の方おりませんか?
0133デフォルトの名無しさん
2014/07/20(日) 23:58:13.27ID:BWtO9PBt0134デフォルトの名無しさん
2014/07/21(月) 01:10:13.39ID:15AfdAD4http://takuya-1st.hatenablog.jp/entry/20110717/1310890039
0135デフォルトの名無しさん
2014/07/22(火) 20:19:49.75ID:E9EuZoOu[x, y, z] = euclid(x)
のようにデータを代入する方法はないでしょか?
今のところ、
data = euclid(x)
x = data[0]
y = data[1]
z = data[2]
と書いています
もうちょっとわかりやすい書き方があれば教えて下さい
0136デフォルトの名無しさん
2014/07/22(火) 20:24:38.12ID:RgZSUrOG0137デフォルトの名無しさん
2014/07/22(火) 20:51:15.29ID:E9EuZoOu[]括弧がいらないだけでできたんですね
教えて下さりありがとうございます
0138デフォルトの名無しさん
2014/07/23(水) 01:47:58.13ID:C1MAaOhXputs start - Time.now
これの結果が0.052003だった場合、0.05秒、つまり50ミリ秒ということですか?
0139デフォルトの名無しさん
2014/07/23(水) 02:02:06.43ID:vbN86xg+http://docs.ruby-lang.org/ja/2.1.0/method/Time/i/=2d.html
0140デフォルトの名無しさん
2014/07/24(木) 22:48:33.94ID:QzlnANU70141デフォルトの名無しさん
2014/07/24(木) 22:53:34.81ID:mk/qqxYw0142デフォルトの名無しさん
2014/07/24(木) 23:23:04.40ID:TORgOaiDOSX(Mac) なら、Finder 上のフォルダをターミナル画面へドロップすると、
そのフォルダの UNIX ディレクトリパスが入力される
だから、ターミナルでは cd とだけ打てばいい
あと Linux や OSX 等を含む UNIX の対話環境だと、シェルがディレクトリ名や
ファイル名を補完してくれるから、プロジェクトの構成が整理されていれば
先頭の数文字を打って後はシェルの補完に頼ることができる
だからタイピングが苦手でも、環境に慣れればそれほど苦痛とは感じなくなる(はず)
0143デフォルトの名無しさん
2014/07/25(金) 00:24:45.92ID:M5DbZg9u1つしかないってことはそれが入ってるディレクトリは1つだけだろうし、
rubyコマンドに指定するファイル名も1つだけのはずである
つまり1回だけコマンドプロンプトを起動してファイル置き場に1回だけ移動して
ファイル編集したあと1回だけファイル名をrubyコマンドの引数に入力して実行すればいい
どれも1回だけだ
もういちど実行したい場合はコマンドプロンプトのヒストリ機能で呼び出してEnterすればよろしい
キーボードの上矢印で順番に出てくる
下手にマウスとか使おうとすると煩雑で死ぬのでキーボード使うこと
0144デフォルトの名無しさん
2014/07/25(金) 00:40:14.11ID:mPXiIZE+楽をしたいだけなら実行までできるIDEを使えば。
楽をするための苦労を厭わないなら、簡単にcdとかできる、しなくてもいい方法を考えたら。
いい勉強になるだろう。
0145デフォルトの名無しさん
2014/07/25(金) 01:28:52.03ID:c73V3zd5Windowsもコマンドプロンプトにフォルダをドロップすると
フルパスが入力されるので>>142と同じようなことができる
Rubyスクリプトを置くディレクトリで開くコマンドプロンプトの
ショートカットを作るとか、バッチでディレクトリ移動するという
手もある
0146デフォルトの名無しさん
2014/07/25(金) 11:39:04.68ID:3IqFdEs5言語問わずそこで作業
ちゃんと開発する時は普通に別ディレクトリで
0147デフォルトの名無しさん
2014/07/25(金) 12:14:05.15ID:Yo6Sfo//最近のウィンドウズ知らないけどコマンドプロンプトが
「処理終了したら閉じる」という設定になっているのでは?
閉じる設定でなければ毎回cdしなくてもいけるんじゃないかな
0148デフォルトの名無しさん
2014/07/25(金) 12:18:27.19ID:WLh8J9pC0149デフォルトの名無しさん
2014/07/25(金) 12:37:18.84ID:LKOgwVhO編集中のファイルのパスを作業ディレクトリとして
コマンドプロンプトを起動してくれると思う
0150デフォルトの名無しさん
2014/07/25(金) 13:11:43.10ID:hJipNkKCエクスプローラで任意のフォルダ開いでのアドレスバーにcmdって打ち込むと
そのフォルダに移動した状態でコマンドプロンプトが開く
0151デフォルトの名無しさん
2014/07/25(金) 13:13:04.77ID:hJipNkKC直接irbとか打ち込んでもok
0152デフォルトの名無しさん
2014/07/25(金) 13:27:45.66ID:WLh8J9pCほんとだ
知らなかった
ありがとう
2ちゃんもたまには役に立つんだぬ
0153デフォルトの名無しさん
2014/07/25(金) 13:29:21.50ID:WLh8J9pCそのディレクトリで管理者権限で cmd 立ち上げられませんか?
0154デフォルトの名無しさん
2014/07/25(金) 13:29:59.63ID:WLh8J9pC0155デフォルトの名無しさん
2014/07/25(金) 13:31:44.65ID:WLh8J9pC0156デフォルトの名無しさん
2014/07/25(金) 13:39:26.35ID:mmV7Js8i0157デフォルトの名無しさん
2014/07/25(金) 13:48:34.63ID:WLh8J9pC0158デフォルトの名無しさん
2014/07/25(金) 13:49:32.42ID:WLh8J9pC0159デフォルトの名無しさん
2014/07/25(金) 14:46:56.21ID:9RAl771B0160片山博文MZ悪魔崇拝 ◆T6xkBnTXz7B0
2014/07/25(金) 16:01:49.83ID:Snct3h9Ba = b
end
x = 1
y = 2
f x,y
p x,y #=>1,2
関数fの中でxを書き換えたいんだが、どうすんねん?
0161デフォルトの名無しさん
2014/07/25(金) 16:55:52.79ID:5HeCUYeT・配列に入れて渡し、配列を書き換える
・インスタンス変数ならば、オブジェクトごと渡して変更メソッドを呼ばせる
・そのメソッドがその場でしか使わないのであれば、ブロックにして外の変数を書き換える(ブロック突入前に存在しなければ初期値を入れておく)
・変更するくらいなら、戻り値として返す
Cと違って、多重代入もあるし配列だってHashだって戻せるんだから
無理して書き換える必要性は無く、返せば良いと思うぞ
0162123
2014/07/25(金) 18:20:34.37ID:7iMP+P1BA(){
変数a
return B(){}
}
結局、クロージャ・ラムダ・匿名クラスなどは、
色々難しい名前を付けたが、クラスなんだよな
クラスAには、メンバ変数a, メンバ関数Bがあるだけ
0163デフォルトの名無しさん
2014/07/26(土) 02:02:24.33ID:8QVtVKLI0164デフォルトの名無しさん
2014/07/26(土) 02:46:01.98ID:zIbYZCVC0165デフォルトの名無しさん
2014/07/26(土) 03:08:33.22ID:2fRRiDMt0166デフォルトの名無しさん
2014/07/26(土) 17:21:34.64ID:L52INrm9WindowsAPIのGetModuleFilenameを叩くのが一番確実だ。
0167デフォルトの名無しさん
2014/07/26(土) 18:07:18.57ID:2fRRiDMt0168デフォルトの名無しさん
2014/07/26(土) 22:26:20.20ID:c/LX3X4p驚き最小の原則なるものとは真逆を行く言語だよ
驚き最小ってPythonみたいなののことを言うんだよ
0169デフォルトの名無しさん
2014/07/26(土) 22:40:13.26ID:+1COesfI>>57
0170デフォルトの名無しさん
2014/07/27(日) 01:09:12.69ID:YDU+iIQK0171デフォルトの名無しさん
2014/07/27(日) 01:13:04.51ID:yFRKgWmm0172デフォルトの名無しさん
2014/07/27(日) 13:35:49.37ID:UMDAGQ8D/ _ _ ',
_| / ・ ヽ /・ ヽi
{ し―J し‐ J|
>‐ 、 「 ̄匚} ̄匚lい
, -―‐< ̄ ̄ ̄ ̄\____ } }
/ ̄ ̄\___ `ヽ /´ ハ \//
/ `ヽ | |ニニニニ ′
| y | |___j⌒ヽ
| | 7 |____/厶ノ
\ ヘ �h ∧_/
. ヽ ヽ l_/
ハ ', |`ヽ
(__}__レ ――┴ァ′
. Y⌒V⌒ヾヽ ー-|
! ! | { ー}
. ヽ_ヽ_ヽ_〉‐''´
0173デフォルトの名無しさん
2014/07/30(水) 21:35:33.47ID:ucnjA6/+http://qiita.com/icoxfog417/items/e8f97a6acad07903b5b0
Pythonは何かとトラップが多い言語で、
引っかかるとなんてゴミ言語と感じてしまうことが少なからずある
要するに Python への批判記事である訳だけど、
この記事の視点を Ruby に当てはめてみよう
・ファイルのエンコードを宣言する必要がある
Ruby => Ruby 1.9 でこのゴミ仕様が取り込まれて危うかったけど、
Ruby 2.0 ではデフォが UTF-8(Unicode) になってゴミを排除できた
・文字列には通常の文字列とユニコード文字列がある
Ruby => Ruby では最初から(少なくとも Ruby 1.4 の時代から)一般的な文字列は
多言語化に対応した String クラス、ただ一つだけしか存在していません
・割り算の結果がfloat型にならない
Ruby => 「強い型付け」による動的型付け言語である Ruby からすれば、
この指摘そのものが規約違反であって、1 / 3 は 0 で 3 / 2 は 1 になるのが自然であり、
もしfloat型が必要であれば、たとえば 1.to_f / 3 のように明示的に型変換すべきと考えます
おそらく著者は「弱い型付け」による動的型付け言語である JavaScript の経験が
長いのでこのような不満を感じたのでしょう、JavaScript は Python 3 と同じ結果になります
js> 1/3
0.3333333333333333
js> 3/2
1.5
そして、Python 3 は「弱い型付け」に向かって変化したのですから、
次の Python 4 では、おそらく以下のような実行結果へと仕様改訂されることでしょう(棒
>>> "A"+1
'A1'
(長いので、一旦ここで切る)
0174デフォルトの名無しさん
2014/07/30(水) 21:54:15.22ID:cG7xMHTs0175デフォルトの名無しさん
2014/07/30(水) 22:17:39.92ID:+YSZmqYf型付けの強い弱いは関係ない
演算の自動リフトや型変換なんてC系の言語では普通にあることで
動的型言語ではそのルールの適用をコンパイル時ではなく実行時の型に応じて動的に行ってるだけ
また、JavaScriptに整数型は仕様上ない
0176デフォルトの名無しさん
2014/07/30(水) 22:45:41.48ID:+YSZmqYf・オペランドや結果の型が静的に決まらない
・オペランドの型によって演算子の意味が変わる
例えば、JavaScriptは実行してみなければ+が加算になるのか文字列連結になるのか分からないでしょ。
そういう性質を便宜的に「型付けが弱い」と表現することがある。
その観点では1.0/3と1/3で結果が同じになるPython3の仕様の方が「型付けが強い」と考えることもできる。
0177デフォルトの名無しさん
2014/07/30(水) 23:33:27.95ID:cG7xMHTsない。きちんと意味が定義されてる言葉を俺様意味付けして使うな。
> その観点では1.0/3と1/3で結果が同じになるPython3の仕様の方が「型付けが強い」と考えることもできる。
デタラメな足場の上からの観点ですね。
0178デフォルトの名無しさん
2014/07/30(水) 23:43:44.39ID:ucnjA6/+Ruby => CLOS や Smalltalk と同様な動的型付け/動的メソッド束縛方式の
オブジェクト指向言語として設計されたRubyのクラス定義スタイルは、
最初から(少なくとも Ruby 1.4 の時代から)変更がありません
Python に関しては、もともと手続き型言語として設計されたものに後から
オブジェクト指向を付け足す際、開発チームの「オブジェクト指向への理解不足」によって
静的型付け/静的メソッド束縛言語のオブジェクト指向を導入したという「過ち」がありました
結果として、リフレクションを多用する最近のメタプログラミング・スタイルに追従できず、
旧スタイルを排除して新スタイルに「改めざるをえなかった」のだと思われます
・コンストラクタ(と思われるもの)が2つある
Ruby => 最初からオブジェクト指向言語として設計された Ruby では、
コンストラクタは Class.new、イニシャライザは Object#initialize と
明確に区別されていますから、「可読性に劣る Python 」のような混乱はありません
・PrivateやProtectedがない
Ruby => Ruby にはメソッドの可視性を指定する private や protected があります
(ただし、個人的にはこれら可視性を宣言するよりも、public メソッドの名前の
前(または前後に) '_' あるいは '__' を付けるスタイルを好みます )
また Ruby には名前の先頭に付ける '_' や '__' について、言語としての「強制」は無く、
命名スタイルはプログラマの判断に委ねられています
・メソッドの第一引数が予約されている
Ruby ==> 最初からオブジェクト指向言語としている Ruby では、(コードが self だらけに
なってしまう)「Python のような冗長で可読性に劣る規約の強制」はありません
Smalltalk と同様に、メソッド呼び出し先として自身を「明示したい時にだけ」
疑似変数 self を、親クラスを「明示したい時にだけ」疑似変数 super を書くだけです
(まだ続くが、次で終わる予定)
0180デフォルトの名無しさん
2014/07/31(木) 00:06:25.30ID:I9wcB7pD擬似privateで実質protectedの特殊形、なprivateはともかく
protectedとpublicは普通に使うと思うんだが…
0181デフォルトの名無しさん
2014/07/31(木) 00:41:24.92ID:IjpkEocsこれがやってること見ればわかるだろ、愚問
0182173
2014/07/31(木) 01:25:29.27ID:h0+6R2oI・メソッドのオーバーロードができない
Ruby => (Python や JavaScript と同様に)動的型付け言語である Ruby では、
引数のデータ型を実行時に判別(イントロスペクション)できるので、
メソッドのオーバロード(多重定義)は「必須ではない」と思います
・ファイルで名称空間が切られる
Ruby => Ruby ではモジュール宣言を使って名前空間が切られますから、
ファイルと名前空間との一致という「規則を強制する Python」とは異なり、
名前空間というプログラムの階層的な論理構造と、ファイル/ディレクトリという
プログラムの階層的な物理構造をプログラマが自由自在に表現できます
・for文にindexがない
Ruby => これも >>173 にある「割り算の結果」の項目と同様に、著者がC言語風の
indexを伴うfor文がある JavaScript の経験が長いので、不満に感じるのだと思われます
Ruby だと、index を伴う反復を以下のように書きます
list.each_with_index do |index, value|
puts "index:" + index.to_s
end
また Ruby 1.9 からは Enumerator オブジェクトとメソッド with_index が追加されたので、
関数型プログラミングのスタイルでコードを書くこともできるようになりました
puts list.each.with_index.map { |index, value| "index:" + index.to_s }
・配列/リストの長さはlenでとる
Ruby => 最初からオブジェクト指向言語として設計されているので、
配列の長さを求めるにはメソッド Array#length を使って list.length と書けます
これについては、すでに >>57 で解説しているので、ここでの詳細は省略します
(これで終わり、ここまでの連投カキコに対するレスは、明日になる)
0183デフォルトの名無しさん
2014/07/31(木) 01:33:39.66ID:YSTj81JP0185173
2014/07/31(木) 21:59:08.98ID:h0+6R2oIまず「JavaScriptに整数型は仕様上ない」という指摘は正しい
(ボケへの的確なツッコミが嬉しい)
ただし、それ以外の部分はメチャクチャだね
> 演算子を適用した結果の型がどうなるかは演算子の仕様の問題に過ぎず
> 型付けの強い弱いは関係ない
演算子(= 関数 or メソッド)の適用結果のデータ型が曖昧である事を許容する言語は、
曖昧なデータ型を禁止する言語と比較して「型付けが弱い」と呼ばれる
たとえばC言語では戻り値が「ある(オブジェクトへのポインタ) または NULL」という仕様の
関数定義を許すけど、ML や Haskell のような型付けに厳格な言語では型エラーとして
定義できず、代わりに直和型(ML ならOption型、Haskell ならばMaybe型)を使う
この対比のケースだと、C は ML や Haskell よりも「型付けが弱い」となる
つまり、データ型に関する仕様の曖昧さを認めるか否かという言語の設計方針は、
「型付けの強さ弱さ」を決める要因の一つである、ってこと
> 演算の自動リフトや型変換なんてC系の言語では普通にあることで
そういった「暗黙の型変換(implicit conversion)」あるいは「型強制(coercion)」と
呼ばれる仕掛けはプログラミングを楽にする効果がある一方で、
その多用は型検査の能力を阻害する悪影響がある
だから、それらを許可しない型付けに厳格な言語との対比として、
C言語系は「型付けが弱い」と呼ばれる
0186173
2014/07/31(木) 22:43:50.19ID:h0+6R2oI>演算による自動型変換が問題になりうるのは、次の両方を満たす場合だ。
発想の方向性は正しいと思うから、思考をもう一歩先に進めよう
言い換えると、「型が静的に決まらない」や「型によって演算子の意味が変わる」といった
要因は、どのような効果を導くのか?を考えてみよう、ってこと
その答えは、プログラマの(データ型に関する)誤り(=エラー)を見逃す可能性を増やす、
簡潔に言えば「型検査の能力を阻害する」ってこと
たとえば JavaScript のコード "A"+1 は、プログラマが "A1" が返る事を意図していたなら
正当で簡潔なコードだけど、もしもうっかり "1" をタイプミスしたとしたら
JavaScript処理系はミスの検出を見逃して最終的に予期しないバグとなる可能性がある
この「プログラマの表現力への制約を極力減らしつつ強力な型検査能力を提供する」ことは、
型体系(type system)の研究における重要な動機の一つになっている
> その観点では1.0/3と1/3で結果が同じになるPython3の仕様の方が
>「型付けが強い」と考えることもできる。
上で述べたように、型付けの強さ弱さとは、一般には型検査能力の程度を指す
(ただし「型検査」そのものが広い概念を指す曖昧な言葉であることに注意が必要)
このような「1.0/3と1/3で結果が同じになる」という、計算結果の同値性が
型付けの強さ弱さを決めるなどという珍説は、これまで見たことも聞いたことも無い
型付けの強さ弱さに関しては、Wikipedia に良くまとめてあるので、勉強されることを勧める
・Strong and weak typing - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Strong_and_weak_typing
0187デフォルトの名無しさん
2014/07/31(木) 23:09:22.53ID:cjUptmKw実行時まで動作や結果の型が決まらない曖昧さを避けるためだよ。
静的言語では曖昧さは残らないから問題ないわけ。
結果の型が曖昧であることをなるべく許容しないのであれば
「動的言語なら」/演算子は常にfloatを返す仕様の方が曖昧さは少ないだろう。
0188173
2014/07/31(木) 23:18:05.47ID:h0+6R2oIおそらくコードの可読性というか視認性が要因だろね
メソッド名の頭に '_' または '__' が付いていれば、
「それは public じゃないから触っちゃ嫌よ」あるいは
「もし使いたいなら事前に仕様を十分に確認してね」
といったコードの意図が一目でわかる
また、1つクラス定義をできるだけ小さくしようとする
小クラス主義で設計することを考えているから、
スーパクラス-サブクラス間でメソッドを介して関連し、なおかつ
そのメソッドの外部からの利用を(protectedで)禁止するのが
望ましいというケースがほとんど無い(ちょっと思いつかない)
というのも理由かもしれない
最後に、実行前に違反を検出できないアクセス制御に
いったい何の価値があるの?という率直な疑問もあったりする
これはアクセス制御という発想が全く存在しない Smalltalk の影響を
受けているからではないかと思う
とはいえ、こうして指摘される迄、何も疑問に感じていなかった訳だから、
可視性(アクセス制御)の活用も今後は見直すかもしれない
0189187
2014/07/31(木) 23:39:16.07ID:cjUptmKw1.0/3と1/3で結果が変わるのは多態性として考えれば当然。
この問題に限っては、Rubyは型検査の能力を犠牲にして
オブジェクト指向言語としての一貫性を重視しているということだ。>>185の理屈に従えばね。
0190173
2014/07/31(木) 23:54:45.04ID:h0+6R2oI>結果の型が曖昧であることをなるべく許容しないのであれば
>「動的言語なら」/演算子は常にfloatを返す仕様の方が曖昧さは少ないだろう。
もしも Python 3 に「演算子の左辺の型に関わらず結果値の型は一つに決まるべき」
という設計方針/哲学があり、それを演算子 / に適用して「左辺が整数と小数の
いずれでも計算値は小数を返すのが(曖昧さが無いから)正しい」としたのなら、
その主張の正当性を認めよう
>>> 1/2
0.5
>>> 1.0/2
0.5
では次にもう一つの演算子 // について試してみよう
>>> 1//2
0
>>> 1.0//2
0.0
あれ、おかしいな?左辺の型によって戻り値が整数になったり小数になったりしている
もしかすると、Python には一貫した設計方針/哲学なんて高尚なものは存在せず、
演算子の種類によってコロコロ方針を変える(大人の汚い)やりかたが正しいと考えているのかな?
0191173
2014/08/01(金) 00:01:31.80ID:3wJnlar9つまり >>190 を前提とすれば、
「オブジェクト指向言語ではない Python では一貫性を重視しない」
ってこと?
まあ Python の一貫性の無さは >>57 でも指摘しているし、
Python に慣れてしまうと、設計方針の一貫性なんてものは
気にすべきでは無い些細な事柄なのかもしれないね
0192187
2014/08/01(金) 06:46:07.72ID:J39fVXGBだから言語そのものの優劣を主張してるわけじゃないって言ってるだろ煩い奴だな
元はといえば演算子の仕様一つで型付けが強い弱いだのと決め付けようとしたのは自分自身でしょ
主張の矛盾を指摘してるだけ
0193デフォルトの名無しさん
2014/08/01(金) 07:03:34.19ID:pb6Sjbuz開発ポリシーやサポート期間が明文化されていないってのは
採用にあたっての大きな障害になるからな。
言語設計の些末なんぞ経営者や顧客にとっては何の魅力もない。
0194デフォルトの名無しさん
2014/08/01(金) 07:05:32.23ID:EwadhP/C0195デフォルトの名無しさん
2014/08/01(金) 07:11:54.53ID:VcCQb1qoというか出そうなのに出ない
0196デフォルトの名無しさん
2014/08/01(金) 10:29:41.65ID:wXpsznL9> ・Strong and weak typing - Wikipedia, the free encyclopedia
> http://en.wikipedia.org/wiki/Strong_and_weak_typing
日本語版の「型システム」の記事のほうが正確に書いてあるね。
正確な定義と、編集者の主観とかによる内容が怪しげな議論が、きっちり分けてある。
そっちで正しい勉強をされることを勧める。
0197デフォルトの名無しさん
2014/08/01(金) 15:14:38.77ID:YS2dfwIgOSXでdxrubyを使うためにdxruby_sdl導入したいのですが英語に疎すぎてgithubに書いてある説明がよく分かりません
少しだけでも手をお貸しください
0198173
2014/08/01(金) 21:43:31.89ID:3wJnlar9> 1.0/3と1/3で結果が変わるのは多態性として考えれば当然。
たしかに(型付けの強弱よりも)多態性で解釈するのが、
Ruby では素直というか自然な発想ですね
しかしながら、
> この問題に限っては、Rubyは型検査の能力を犠牲にして
> オブジェクト指向言語としての一貫性を重視しているということだ。>>185の理屈に従えばね。
という箇所に関しては、結果が変わる現象を多態性で説明できてしまうのですから、
この演算子の左辺に着目するケースに限れば、
「型検査の能力を犠牲にしている」という指摘は間違いであると考えます
型検査(つまり型付けの強弱)が問題になるのは、
「1.0 / 3.0 と 1.0 / 3 で結果が同じになる」という演算子の右辺に着目するケースです
Ruby の数値系クラスでは、(単なる型判定ではなく)「型強制(coerce)アーキテクチャ」と呼ばれる
設計方針に従った一貫したインターフェイスを提供していますが、
(>>185 の最終段落で述べたように)型強制には型検査の能力を阻害する悪影響があります
したがって、もし犠牲という言葉を強調したかったのであれば、
「今回のケースは無関係であるが、1.0 / 3.0 と 1.0 / 3 で結果が同じになるケースでは、
Rubyは型検査の能力を犠牲にして型強制の利点を重視している」という指摘が正しいと言えます
なお、型検査の能力を犠牲にしているとはいえ、「1.0 / 3.0 と 1.0 / 3 で結果が同じになる」のは
Python も同じなのですから、動的型付け言語である Ruby の設計方針としては妥当な判断でしょう
0199173
2014/08/01(金) 21:51:58.88ID:3wJnlar9>>190 では、型付けの強弱について頓珍漢な我流解釈をしていた >>175,176 と
同一人物であると早合点し、>>189 の多態性という言葉を十分に検討しないまま
即レスしていました
冷静に考えると、ここは Ruby スレなのですから、>>190 はスレ違いなレスでした
気分を悪くさせて申し訳ありません
0200デフォルトの名無しさん
2014/08/01(金) 22:08:57.71ID:02heIdPz高級スクリプト言語(?)で使える、マルチプラットフォームのGUIツールキットで一番よいのはなんでそ?
0201デフォルトの名無しさん
2014/08/01(金) 22:09:39.65ID:3wJnlar9超初心者という甘えで有識者にエスパーを期待しようとしても
ムリゲーだよ
どこがどう分からないかを説明しなければ、
誰もアドバイスできないと思う
たとえば
「..... をしようとして ..... ではないかと考え、
..... という結果を期待して ..... を試してみたけど、
..... というエラーメッセージが返されて失敗しました」
といった文章を書いてみよう
0202デフォルトの名無しさん
2014/08/01(金) 22:53:02.21ID:7R/51h0cgtkでいいんじゃないの。
0203デフォルトの名無しさん
2014/08/01(金) 23:13:00.33ID:YS2dfwIgご指摘ありがとうございます。以後気を付けます。
まずhttps://github.com/takaokouji/dxruby_sdlのREADME.mdを見ながら
ターミナルでSDLとSGEのインストール?を試みました。
SDLは問題なく完了し、次にSGEをインストールするとき8行目の[make]コマンドを実行しようとすると
fatal error: 'freetype/freetype.h' というエラーが発生しました。
なのでfreetypeというものをダウンロード?すれば良いのかと思い、
http://freetype.sourceforge.net/index2.html
ここでダウンロードしてもう一度コマンドを打ちなおしたのですが結果変わらず失敗しました。
0204デフォルトの名無しさん
2014/08/02(土) 00:15:20.50ID:UBZX0AEKすべてをソースからビルドしようとしているみたいだけど、
普通は「パッケージ管理システム」という仕組みを利用する
OSX なら、Homebrew (または MacPorts)になる
(1) GitHub 等で公開されるオープンソース・プロジェクトでは、
まず最初に作者様がソースからビルドする手順を公開する
(2) そしてプロジェクトの提供するソフトウェアに人気が出て
インストールを試す人が増えてくると、ソースからのビルドは面倒なので
有志の誰かさんが Homebrew のようなシステムで扱えるように
パッケージを作って登録する
(3) そうすると、以降はインストールを試そうとする多くの人達が幸せになる
だから、まずは Homebrew を調べて基本操作ができるようになるまで慣れるのが先決
新Mac板に Homebrew 専用スレがあるので、そちらを頼ることも考えよう
なお、"sdl sge ruby mac" でググると、こんなブログ記事が見つかった
・noanoa 日々の日記 : Mac に Ruby/SDL、rsdl、SGE を入れて、MyGame ゲームライブラリを動かす
http://blog.livedoor.jp/noanoa07/archives/1919322.html
この記事でも Homebrew を使っている
他の記事でもいいし、とにかく作業に着手する前に
ネットで情報収集する感覚を身につけたほうがいいと思う
少なくとも FreeType は有名なライブラリなので、
Homebrew を含む大半のパッケージ管理システムでも利用できる
あと SDL と SDL周辺ライブラリも公式パッケージが利用できるみたい
そして SGE には非公式パッケージが存在するような情報があるね(->Homebrewスレへ Go!!)
0205デフォルトの名無しさん
2014/08/02(土) 00:21:35.21ID:Q0DxGqPmif name =~ /\?/
p name
end
end
Integerクラスのメソッドで?が付いている物を取り出すプログラムです。
これは配列の中で正規表現に一致するデータを取り出したいのですが。
もっとスマートに描けないでしょうか?
0206デフォルトの名無しさん
2014/08/02(土) 00:41:59.29ID:PqERPQ+S「コレクションを最初から最後まで見て、マッチするものをなんらかの手段でひとつずつ探している」
であることはどうにもならない
たとえなにか「カッコイイ」メソッドがあったとしても、やってることは同じである
ということで
puts Integer.methods.find_all{ |x| x =~ /\?/ }
0207デフォルトの名無しさん
2014/08/02(土) 01:01:31.31ID:k+09BHkdp Integer.methods.select(&/\?/.method(:=~))
0208デフォルトの名無しさん
2014/08/02(土) 01:15:53.60ID:sO72E4hr0209デフォルトの名無しさん
2014/08/02(土) 01:30:11.06ID:fLjR5gdB入力文字列の改行コードが¥rとか¥nとか¥r¥nとか色々あるんだけど、
正規表現のアンカーの^って行頭にマッチすると言っても¥nで判定してるから
¥rとかでマッチしてくれないよね
改行コードのバリエーションごとの処理は自分でやらなきゃいけないの?
それとも改行コードといえば¥nがデフォとかそういうこと?
0210デフォルトの名無しさん
2014/08/02(土) 01:48:07.49ID:qRelH0Iumakeする時に、もっと詳細を表示する、
オプションを付けて、やり直せ
0211デフォルトの名無しさん
2014/08/02(土) 02:04:35.51ID:qRelH0IuJavaScriptの正規表現では、
改行が\r\n、\nのどちらでも結果は同じになるけど
通常は気にしなくてもいいと思う
0212デフォルトの名無しさん
2014/08/02(土) 02:18:58.04ID:LjQ2kKfu見てみたら簡単なのはこれで大丈夫そうですね・・・
ダサいのはマルチ環境だから贅沢言えないか
0213211
2014/08/02(土) 02:21:00.11ID:qRelH0Iuそれは知らない
0214デフォルトの名無しさん
2014/08/02(土) 02:58:10.97ID:PqERPQ+S改行コードではない
改行文字だ
文字だ
ただの文字だ
以上
0215デフォルトの名無しさん
2014/08/02(土) 03:30:01.16ID:fLjR5gdB0x0Dと0x0Aって言えばよかったのかェ
0216デフォルトの名無しさん
2014/08/02(土) 08:09:12.14ID:gDjKnomp'\n' は '\x0d\x0a' だったり '\x0a' だったりするのは
どうしてなぜ?
0217デフォルトの名無しさん
2014/08/02(土) 08:11:05.08ID:u0m+qxIaよいの定義を先にはっきりしとけよ。
0218デフォルトの名無しさん
2014/08/02(土) 08:43:56.31ID:bMAcdfxk0219デフォルトの名無しさん
2014/08/02(土) 11:07:24.06ID:+3sKWHZpruby 1.9.3p545 (2014-02-24) [i386-cygwin]
の環境で
p Time.now
したときに
2014-08-02 10:51:50 +73956
と出力されます.この +73956 とは何でしょうか?
これ邪魔なので出力させたくないのですが方法はありますでしょうか?
0220デフォルトの名無しさん
2014/08/02(土) 12:04:41.50ID:gDjKnomp0221デフォルトの名無しさん
2014/08/02(土) 19:14:45.58ID:mjAOYCs+Time#inspectを上書き
0222デフォルトの名無しさん
2014/08/02(土) 21:52:37.10ID:k+09BHkd0223デフォルトの名無しさん
2014/08/02(土) 22:01:30.81ID:UBZX0AEKTime.now.to_s.each_char.take(19).join # 先頭から19文字だけ取り出す
>>221 の言うように inspect を上書きするなら、以下のように定義する
class Time
def inspect
self.to_s.each_char.take(19).join
end
end
実行例:
irb(main):001:0> class Time; def inspect; self.to_s.each_char.take(19).join; end; end
=> :inspect
irb(main):002:0> Time.now
=> 2014-08-02 21:58:27
irb(main):011:0>
ただし標準クラスの振る舞い(仕様)を変更するのだから、
むやみに用いるべきではない
0224デフォルトの名無しさん
2014/08/02(土) 22:06:02.20ID:GQoYmdoX0225デフォルトの名無しさん
2014/08/02(土) 22:12:10.95ID:rVz3fll6Rubyには、JavaでいうところのTomcatみたいな
「アプリケーションサーバー」のようなものってありますか?
0226デフォルトの名無しさん
2014/08/02(土) 22:16:48.29ID:GQoYmdoX0227デフォルトの名無しさん
2014/08/02(土) 22:21:39.66ID:rVz3fll6勉強になりました。
ありがとうございました。
0228デフォルトの名無しさん
2014/08/02(土) 22:39:34.17ID:UBZX0AEK標準ライブラリの WEBrick を使うと、
Java でいうサーブレットは簡単に書ける
・Ruby 2.1.0 リファレンスマニュアル > ライブラリ一覧 > webrickライブラリ
http://docs.ruby-lang.org/ja/2.1.0/library/webrick.html
リクエストされたURLに対応したファイルを読むだけの
サーブレット(ファイル・ハンドラと言う)も最初から用意されているから、
簡易Webサーバ(httpd)は超簡単に書ける
もっと手軽にWebサービスを書くのなら、
Sinatra というサードパーティ製のライブラリもある
"ruby sinatra 入門" あたりでググると解説が見つかる
なお、本格的なWebサービス開発を考えているなら、
Ruby on Rails を検討したほうがいいと思う
0229デフォルトの名無しさん
2014/08/03(日) 06:53:33.60ID:P9e0hA8Op Integer.methods.grep(/\?/)
0230デフォルトの名無しさん
2014/08/03(日) 09:57:56.78ID:saA9+Ea3Rubyのpはそのオブジェクトのinspectメソッドというものを呼び出している
inspectは「検査する」「(刑事などが)詳細に調べる」という意味で、
このメソッドはそのオブジェクトの内容を文字として表示するための情報源として使う
たとえばTimeオブジェクトは"2014-08-03 09:41:57 +0900"のような文字列として存在しているわけではなく、
「なんかよくわかんないけど変数とかメソッドとか入ったバイナリみたいなやつ」として存在している
これを直接画面表示しようとするとしんどいので、画面に表示するときにどう表示するかをオブジェクトのクラス製作者が適度に設定している
次、Rubyのpメソッドは前述のようにinspectを呼び出している
pメソッドはデバッグ用メソッドで、スクリプト作成中などにオブジェクトの内容を確かめるために使用される
オ ブ ジ ェ ク ト を 第 三 者 ユ ー ザ ー に 表 示 す る た め の メ ソ ッ ド で は な い
ので、もしオブジェクト内容を綺麗に表示させる必要があるのなら、
(存在すれば)整形メソッドを利用し、文字列を自前で作ってputs等を使用「しなければならない」
いまだに「pは画面表示用のメソッド」「pはputsの省略形」という解説をしてる本やサイトがあるが、燃やして捨ててしまってよい
Timeオブジェクトを特定の書式で表示したい場合は>>222
irb> puts Time.now.strftime('%Y-%m-%d %H:%M:%S')
2014-08-03 09:53:28
0231デフォルトの名無しさん
2014/08/03(日) 14:20:20.23ID:T59meZIw2014-08-03T09:53:28
という風にTが入るのはなぜ?
0232デフォルトの名無しさん
2014/08/03(日) 14:25:58.16ID:Uv66z7PHISO8601か。数字が続くと区切りにくいし、スペースはいろんなとこで区切り記号として使われているからじゃないか。スラッシュやハイフンも日時ではいろんな使われ方してるし。
0233デフォルトの名無しさん
2014/08/03(日) 15:04:32.71ID:saA9+Ea3プログラム的にわかりやすくてギリギリ可視性もあっていいじゃないか
ちなみにこれもエンドユーザーに直接表示することを目的とはしていない
これをそのまま見せようとするのではなく、自力でどうにかすること
0234デフォルトの名無しさん
2014/08/03(日) 23:38:11.96ID:PzxowcJBuser = "ユーザー名"
password = "パスワード"
みたいな感じで、変数の値を保存させておき次回アクセスがあったらそれを代入させるイメージです。
本来はデータベースなりに保存するのでしょうがあくまでユーザー側に保存させるようにしたいです。
0235デフォルトの名無しさん
2014/08/04(月) 01:09:54.00ID:VTkOlU1X0236デフォルトの名無しさん
2014/08/04(月) 03:21:57.60ID:tnMe/Qjcできるけど、そんなサイト行きたくない。場合によっては悪質なサイトとして晒すレベル。
0237デフォルトの名無しさん
2014/08/04(月) 03:40:50.26ID:Q/8i57D8セッションでやってるんですけどうまく行かないんです。
有効期限も指定してて、firefoxからcookieも見れるのに何故かいつの間にかデータが読み込めなくなってるんですよ。
0238デフォルトの名無しさん
2014/08/04(月) 03:44:49.65ID:Q/8i57D8そこまでですか…
ちなみに理由はどうしてですか
ほとんどファイルサイズないしcookieは色んな所に保存されてるから大丈夫かと思ったんですけどセキュリティ的な問題ですか?
考えてみたんですけどこれくらいしか浮かばなかったのでよければ教えて欲しいです。
0239デフォルトの名無しさん
2014/08/04(月) 03:46:00.08ID:hIaMhHwRそのままやると問題が多すぎる。おそらく、期待としてはCookieStoreが近いと思う
0240デフォルトの名無しさん
2014/08/04(月) 04:13:20.27ID:vzBGIwJJ0241デフォルトの名無しさん
2014/08/04(月) 04:48:08.48ID:tnMe/Qjcセキュリティ上の問題。
それならHTTP digest認証使ったりブラウザに覚えさせた方がまだいい。
他の人が言っているのはセッションキーを使い捨てパスワードとして利用するのと同じ意味になる。
セッションジャックよりパスワードを盗まれる方が被害が大きい。
0242219
2014/08/04(月) 17:03:31.26ID:mXRA9UCQ>>220, >>221, >>222, >>223, >>230 他皆さん
ありがとうございました.大変勉強になりました.
>>223 にある
Time.now.to_s.each_char.take(19).join # 先頭から19文字だけ取り出す
で対応することにしました.
0243デフォルトの名無しさん
2014/08/04(月) 21:26:58.70ID:Q/8i57D8http://d.hatena.ne.jp/shokai/20110324/1300999147
#Rack::Session::Cookie有効
use Rack::Session::Cookie,
:expire_after => 60*60*24*7,
:secret => '適当な文字列'
#代入するとき
session[:user] = 'username'
#読み出すとき
if defined?(session[:user])
user = session[:user]
end
ブラウザ終了がログイン状態が切れるきっかけというわけでもなく時間が立つと切れてます。
0244デフォルトの名無しさん
2014/08/04(月) 21:42:32.94ID:6Tzsw3VWないわw
0245デフォルトの名無しさん
2014/08/04(月) 23:57:26.06ID:XPxSUeR/http://www.amazon.co.jp/dp/B00LUKIEGG/
0246デフォルトの名無しさん
2014/08/05(火) 00:27:04.52ID:Rp7Uk6zW同意。あァァァんまりだァァアァ。
なんでprivateはあるのにsealedは導入しなかったruby。
0247デフォルトの名無しさん
2014/08/05(火) 00:36:33.25ID:mOOeWZK0ないよ
よく調べろ
0248デフォルトの名無しさん
2014/08/05(火) 01:03:45.06ID:52ECpDfa満足かね?
せめてRuby1年生は先生ごっこやめよ
0249デフォルトの名無しさん
2014/08/05(火) 10:33:07.90ID:xop66pugそれで生のCookieの値はどうなってたの?
0250デフォルトの名無しさん
2014/08/05(火) 16:52:55.87ID:n5rHoHG6生のcookieの値というのはfirefoxの「prefenances」>「history」>「show cookie」からcookieを見た時にHostとかPathとかいくつか項目があるところのContentってところに書いてる値をそのまま書けばいいのでしょうか?
あと、他のサイトのcookieはどんな感じになってるのかと思い見てみたところHostという項目がない代わりにDomainがあるサイトがあります。
HostとDomainが両方ともあるというサイトは見かけなかったのですがこれらの違いは何なのでしょうか?
僕のサイトだとHostでした
0251デフォルトの名無しさん
2014/08/05(火) 17:14:48.30ID:9+BWU5QFContentとは別に有効期限ってのがないかな?その値はどうなってるのか。
その値が正しければruby(rack)というよりブラウザ側の問題では?
ブラウザのcookie保存期間の設定は正しく設定されていないとか?
0252デフォルトの名無しさん
2014/08/05(火) 18:13:26.87ID:n5rHoHG6expiresの値は2014年09月04日 16時40分35秒になってます。
コードでも一ヶ月後に設定してたので多分有効期限の設定はうまく行ってると思います。
うまく行かない時もcookie自体は残っているので削除されてるって線は薄そうです。
とりあえず、firefoxでやってたので他のブラウザでも試してみます。
現状なんでうまく行かないのかもわからない状態なので…
0253デフォルトの名無しさん
2014/08/05(火) 18:45:34.68ID:9+BWU5QFあら、cookie残ってるのね。
他のブラウザでも同様であればコード側に原因があるかも。
>>243にある参考ページのサンプルコードがシンプルだから、
そのコードで動作確認してみては?
0254デフォルトの名無しさん
2014/08/06(水) 04:13:53.68ID:/o/64fuk:key => 'rack.session',
:domain => '.の後にdomain',
:path => '/',
:expire_after => 2592000,
:secret => '適当な文字列'
これでやったのですがうまく行きませんでした。
逆にうまく行く時はなんでうまく行くのかと思いキャッシュ消したりとかもやってみたんですが関係無いようでキャッシュを消してもcookieを読み込める時は読み込めて読み込めない時は読み込めないようです。
herokuで動かしてるのですがもしかしたらherokuの設定がうまく行ってないみたいな可能性とかはありませんか?
###### WARNING:
No Procfile detected, using the default web server (webrick)
警告出てたんですが問題なさそうだったので無視してましたし
config.ruにuse Rack::Session::Cookieを書いてるサイトもあったので僕の勝手な憶測ですが
現在のconfig.ruの中身
require './app'
run Sinatra::Application
原因自体つかめていない状態なのでそれを特定する方法の手がかりだけでも知りたいです
0255デフォルトの名無しさん
2014/08/06(水) 04:17:39.98ID:/o/64fukこの内容のProcfileを追加したら消えました。
web: bundle exec rackup config.ru -p $PORT
0256デフォルトの名無しさん
2014/08/06(水) 07:07:48.40ID:9mmp63by0257デフォルトの名無しさん
2014/08/06(水) 07:50:16.81ID:im7I2Tzqherokuとかの環境の情報は始めから出した方が良いと思うよ。
あとローカル開発環境では正しい動作だったのかとか。
問題の切り分けがしづらくて遠回りしてしまう。
herokuでは「use Rack::Session::Cookie」と
「enable :sessions」を同時につかうなみたいな記事あったけど
そのあたりは大丈夫?
0258デフォルトの名無しさん
2014/08/06(水) 12:44:14.10ID:/o/64fukすいません。
環境等先に書いておくべきでした。
えーっと
ブラウザで動くsinatraアプリでweb apiをoauth認証をして使ってtumblr用のサイトを作っているのですがローカルだとあらかじめ入手しておいた自分用のアカウントのキーを定数でおいています。
なのでローカルだと連携アプリを許可するみたいなページを出してoauth認証させる部分を省いて開発しています。
oauth認証の過程がないのでcookieの処理もローカルのものには有りません。
herokuにあげたものがうまく動かないのはcookie周りの処理だけで他はoauth認証とcookieの処理がないローカル版と僕が見たところ同じ動きをしてると思います。
oauth認証の情報が保存されないだけでアカウントがどうこうということはないですけど、こんな状態なのでanalyticsで自分以外の人が来てないと確認しながらやっているのですがanalyticsが残すcookieはうまく動作してそうな感じです。
herokuは無料プランで、アドオンなどは入れていません。
enable :sessionsは大丈夫だと思います
0259デフォルトの名無しさん
2014/08/06(水) 18:33:58.71ID:vbe86AaJ読み込める時と読み込めない時があるようなので
oauth認証のタイムアウトとか考えられるけど
herokuはログにエラーは出すのかね。
0260173
2014/08/06(水) 22:43:28.11ID:9w14YIgy>>188 では、ナゼ可視性(=protected や private の宣言)を使わない
スタイルを好む(個人的な)理由を書いた
その理由の中では:
> スーパクラス-サブクラス間でメソッドを介して関連し、なおかつ
> そのメソッドの外部からの利用を(protectedで)禁止するのが
> 望ましいというケースがほとんど無い(ちょっと思いつかない)
などと書いていたけど、それが間違いだったことに気付いた
ここ数日、標準ライブラリの Ripper.lex を使って、Ruby の
ソースコード解析ツールでの利用を想定した字句解析コードを書いていたのだけど、
試しに protected と private を使ってみたところ割とイイ感じになった
どうやら可視性に関しては、自分の食わず嫌いだったらしい....
http://play.island.ac/codepaste/code?id=1583
他人から指摘されるまで気付かなかった自分が恥ずかしいけど、
まずは指摘してくれたことに対して礼を言う、ありがとん
0261211
2014/08/07(木) 00:41:38.32ID:QaqdPvt4IO(入出力)クラスによると、
Windowsで改行、\r\nを読み込むと、
Rubyインタプリタ内で、\nに変換されて、
またWindowsに出力される時に、\r\nに変換される
つまりRuby内では、\nで統一されている
0262デフォルトの名無しさん
2014/08/07(木) 01:54:36.56ID:UzLKIx83¥rはどして¥nに統一されてないのん?
0263デフォルトの名無しさん
2014/08/07(木) 02:34:40.65ID:EqoC26iFUnixにはそんな仕様は無い
そして、DOSにそれをする必要があったのは自身の改行がCRLFで
C言語はUnix生まれのため改行がLFだったこと
これをMSは、オープン時にテキストモードかバイナリモードかを指定させ
テキストモードならCRLFとLFを変換する、とした
どちらもCRのみ(これは昔のMacの作法)とは関係がないので何もされない
0264デフォルトの名無しさん
2014/08/07(木) 03:05:13.96ID:Os4j55OX0265デフォルトの名無しさん
2014/08/07(木) 04:51:50.32ID:mGC1aKkAクッキーマネージャーはアドオン名でしょうか?
使いかたは自分で調べるのでどの項目や何を見ればいいのかがわからないので良ければ教えてくださいますか?
>>259
500番エラーが出てます
dashboardは投稿一覧みたいのを表示するページでこれは失敗した時のログです。
***は伏せ字です
2014-08-06T19:20:03.092865+00:00 heroku[router]: at=info method=GET path="/dashboard" host=*** request_id=62a8b28e-c1a0-4667-9127-988f2de7f579 fwd=*** dyno=web.1 connect=2ms service=181ms status=500 bytes=1235
うまく行ったときは200番がちゃんと帰ってきてます。
そこで、試しにoauthの情報を定数でおいているローカルの方のファイルをoauthの情報を書かずに実行すると似たようなエラーが帰ってきて
NoMethodError - undefined method `[]' for nil:NilClass:
となりました
heroku logsにも似たようなものが出てたのでやはりうまいことcookeから情報が読めてないのではという気がします
2014-08-06T19:20:03.077945+00:00 app[web.1]: NoMethodError - undefined method `[]' for nil:NilClass:
案の定クッキーはfirefoxから確認できたので何が理由かはわかりませんが何らかの理由で時間が経つとcookieから情報が読めなくなるみたいです。
0266デフォルトの名無しさん
2014/08/07(木) 05:14:08.90ID:mGC1aKkAoperaからも動作確認しようと思ってサイト開いたらどうもfirefoxとログインアカウントの情報が共有されてるみたいです。
firefoxからしかoauth認証(アカウントAで認証)してないのにoperaでも同じアカウント(アカウントAの情報)の情報で出てくる。
逆にoperaから別のアカウント(アカウントB)を認証してfirefoxで開いた時もfirefoxから許可してないのに別のアカウント(アカウントB)の情報で出てくる。
同一LAN上のタブレットから開いてもそうなりました。
意味がわからない…
0267デフォルトの名無しさん
2014/08/07(木) 05:22:45.89ID:mGC1aKkAすいません取り乱しました
そもそも、これがセッションの正しい挙動だったんですね。
sinatraがデフォルトでセッションをクッキーに保存しているというだけで別にセッションはクッキーを使うためのものではないって解釈でいいんですかね?
0268デフォルトの名無しさん
2014/08/07(木) 11:27:41.97ID:qMfbyumEcookieが読み込めないというより
500が帰ってきているから結果的にcookieが読み込めていないってことだよね。
firefoxでcookieが見れるというのは前回成功した時のcookieが見えているだけじゃないかな。
0269デフォルトの名無しさん
2014/08/08(金) 00:35:31.80ID:fc9o1pZf多分解決しました。
どうもクッキーの設定とsinatraのコードそのものの両方が間違ってたみたいでsinatraのコードダメ元で変えてみたら普段ならheroku にデプロイした後は確実にエラーが出るのですがちゃんと通り、半日ほど立ちましたがさっきもログインが持続していることを確認できました。
体系的な知識がなくかなり手こずりましたが皆様のおかげで解決出来ました。
0270デフォルトの名無しさん
2014/08/09(土) 01:57:37.69ID:hZJQ1zja0271デフォルトの名無しさん
2014/08/10(日) 00:10:35.94ID:Npb/3QruSelenium Webdriver、chromeにて
とあるサイトの画像URLを取得、テキストに追記で書き出ししようと色々と調べたのですが全く分からず困っています。
<div class="hoge">
<img src="http://hoge.jpg" alt=""></div>
htmlは上記、xpathは/hoge/imgと仮定します
open("hoge.txt", "a"){|f|
output = driver.find_element(:xpath, '/hoge/img')
f.puts "#{output.text}"
}
のように書いてみたもののテキストに改行しか出力されない状態です
0272デフォルトの名無しさん
2014/08/10(日) 00:30:45.65ID:zlJil821それを書く前に15個くらいスクリプトを作ったはずだ
それは動作したのかどうか言え
もしいきなりそれを作ろうとしたのならあらゆる点で間違っている
いきなり別荘を建てようとするな
まず釘打ってみたり床で組み立ててみたり本棚作ってみたり犬小屋作ってみたりしろ
その経験はひとつも無駄にならない
0273デフォルトの名無しさん
2014/08/10(日) 01:14:37.49ID:Npb/3Qru画面上にテキスト表示されている物はきちんと書き出されました
それで画像urlを取得しようと沢山調べ考えたんですが
今日はもう寝て先程見つけた下を参考にnokogiriにチャレンジしてみようかと
http://d.hatena.ne.jp/toyoshi/touch/20101109/1289294545
ちょっとnokogiri駆使してみたんですが上手く行かなかったような
0274,,・´∀`・,,)っ-○○○
2014/08/10(日) 01:30:50.99ID:ObwJkVu+0275デフォルトの名無しさん
2014/08/10(日) 08:37:49.11ID:frgBbTF30276デフォルトの名無しさん
2014/08/10(日) 09:57:44.18ID:aTEKyeJh0277デフォルトの名無しさん
2014/08/10(日) 11:18:40.68ID:TxwgTDO4取り敢えずjapanize(メニュー日本語化)とConvertToUTF8(sjis文字化け対策)は入れました。
0278デフォルトの名無しさん
2014/08/10(日) 15:06:43.67ID:zOHM5qWJやっとくべき設定?
まずその2つをアンインストールするんだ。
0279デフォルトの名無しさん
2014/08/10(日) 17:01:06.03ID:DcfkR93xエディタ固有の質問は専用スレあるんだから
そっちで聞いたほうがいい
0280デフォルトの名無しさん
2014/08/12(火) 12:59:00.63ID:nam2SDUxprintf で書式指定をするには何を使うのでしょうか?つまり,
printf( "%?", flg )
の ??? には何を指定するのでしょうか?
0281デフォルトの名無しさん
2014/08/12(火) 13:24:35.57ID:ACV8I0vK=> "true"
0283デフォルトの名無しさん
2014/08/12(火) 19:31:50.15ID:PU4N0EB0Rubyでそう言う事したい場合ってドキュメントでカバーするの?
「ポリモーフィズムしたいからこのメソッドはもっとけ」みたいなの
0284,,・´∀`・,,)っ-○○○
2014/08/12(火) 20:28:53.57ID:fcVldYYC実行中にメソッド追加したり削除したりできるくらいだから当然
言語レベルとしてはない。
だがやれんこともない。
http://qiita.com/akisute3@github/items/66bf766166eda2b84a03
Rails的にはテストコードでカバーかね
メソッドが定義されているかはdefined?で確認することができる。
0285デフォルトの名無しさん
2014/08/12(火) 22:29:22.75ID:NtdaG8qe上書きしないと例外投げるだけのメソッド作っとく。
0286デフォルトの名無しさん
2014/08/12(火) 23:31:37.25ID:kLOI0Uwsその考え方がキモい、ということにはなってる
いや常識的に考えて○○ができなきゃオブジェクト指向じゃないだろ、というものの大半は
単に特定の言語、ぶっちゃけJavaとC++、のローカル仕様だったりする
RubyでJavaをやるのはやめようぜ、Rubyなんだし
0287デフォルトの名無しさん
2014/08/12(火) 23:41:51.41ID:x9ZUxVMu0288デフォルトの名無しさん
2014/08/12(火) 23:51:26.48ID:okDd+6G6スクリプトといえども型名等明示できるものは明示できるようにして
ヒューマンエラーを未然に防げるようにしておくのがトレンド
というわけでRuby3はその方向に進化してくれ
0289デフォルトの名無しさん
2014/08/13(水) 00:23:51.87ID:KN2EsXN5残念だけど、「その考え方」は Smalltalk の時代から「よくある言い方」、
いわゆる「イディオム」の一つとして普通に存在している
ちなみに Smalltalk では、>>285 の表現を借りると:
上書きしないと subclassResponsibility メッセージを
投げるだけのメソッド作っとく。
になり、これを Ruby で言い直せば:
上書きしないと例外 SubclassResponsibility を
発生させる(raise する)だけのメソッド作っとく。
になる
さて >>286 に限らず、C++/Java のような静的OOPしか知らない人が
「OO設計の概念は C++/Java から生まれた」みたいな
硬直した発想をしがちなのはナゼなんだろうか?
0290デフォルトの名無しさん
2014/08/13(水) 01:06:25.32ID:OCtuWZt1まじでうっとおしい
0291デフォルトの名無しさん
2014/08/13(水) 01:09:46.40ID:lr+rlGxM被害妄想じゃない?
286のレスからはそうは読み取れないな
硬直した発想だとか言うけど
起源主張して褒められたいという発想自体が
まさにソレじゃね
0292デフォルトの名無しさん
2014/08/13(水) 01:11:07.57ID:TCL9mbxJ僕が初めてオブジェクト志向言語を触ったのはjava/c++だったから! って人が多いから。
Ruby なら、そういう用途に使うために NotImplementedError が組み込みであるから、それを使ってくれというのが言語としてのスタンスってだけの話だと思う。
0293デフォルトの名無しさん
2014/08/13(水) 01:16:16.87ID:0XAF0Eso0294,,・´∀`・,,)っ-○○○
2014/08/13(水) 01:34:10.05ID:K9qjufdc0295289
2014/08/13(水) 02:31:29.89ID:KN2EsXN5「無いのなら作ってしまえホトトギス」ということで、
属性の宣言 attr_reader 等と似た抽象メソッド宣言 abstract_method を書いてみた
http://play.island.ac/codepaste/code?id=1586
abstract_method の使い方は:
・attr_reader 等と同様に、クラス定義内で abstract_method を呼ぶ
・引数は、メソッド名をキー、メソッド引数の個数を値とするハッシュを渡す
・例:abstract_method :foo => 1 # 抽象メソッド foo を宣言
>>290
わざわざ動的OOP言語である Ruby スレで C++/Java との話題を切り出す、
しかも無知に起因すると思われる間違った情報(>>286)をまき散らすのも勘弁願いたい
0296289
2014/08/13(水) 02:43:24.62ID:KN2EsXN5・訂正前
94 # 具象メソッド
95 def foo(message)
96 format "I am a %s.", self.class
97 end
・訂正後
94 # 具象メソッドを利用するメソッド
95 def foo(message)
96 format "I am a %s.", message
97 end
訂正した結果として、実行例も "I am a FOO." になる
0297289
2014/08/13(水) 03:01:19.57ID:KN2EsXN5抽象クラス/抽象メソッドという概念を使いたくない、という
主張だけなら、特に気にしなかった
個人のプログラミングスタイルなんだから他人がとやかく言うべきじゃないし、
Ruby はそういった(良い意味で「お気楽な」)スタイルも許容する認める言語だから
でも >>286 は自分の主張を周囲に押しつけようとし、
しかもその主張の根拠「JavaとC++、のローカル仕様」が間違っているから
厳しい口調になった
言いたかったのは、それだけだ
0298デフォルトの名無しさん
2014/08/13(水) 04:30:45.53ID:lr+rlGxM面白いなw
> 自分の主張を周囲に押しつけようとし
ってのがまさに
> 「継承する時はこのメソッドを実装してね」
これじゃないか。
普通に読み取れば
言語ごとに色が有るんだから
多様性を楽しもうぜってのが286のレスでしょ。
どう読み取ればそうなるんだよ
0299,,・´∀`・,,)っ-○○○
2014/08/13(水) 07:57:49.27ID:K9qjufdcclass Parent
def self.inherited(child)
child.class_eval do
# ここでなんか処理
end
end
end
C++やJavaで純粋仮想関数使いたい意図はわかるが
「ヒャッハー!コンパイル通さないぜ!」やるだけでOO設計やった
気になるのはいかがなものかと。
return 0;
やるだけの関数定義してもシンボル名さえあってれば通っちゃうわけだよね。
お前それでいいのか?
0300289
2014/08/13(水) 11:44:01.65ID:KN2EsXN5たしかに面白いな
・Enumerable モジュールを include する時はメソッド each を実装してね
・Comparable モジュールを include する時はメソッド <=> を実装してね
・あるクラスをハッシュのキーとして扱う時はメソッド eql? と hash を実装してね
・AcriveRecord::Base を継承する時は、DB上に同名のテーブルを定義し、
type というカラムを設けてね
Ruby プログラミングではありふれた決まり事のいくつかだけど、
これらも >>298 には「おしつけ」になるんだろうなぁ.....
うん、たしかに面白い
0301デフォルトの名無しさん
2014/08/13(水) 13:03:40.66ID:XU9wPxJnflg=true;flg.to_s
0302デフォルトの名無しさん
2014/08/13(水) 13:33:34.15ID:TBkS3glifoo:1 ←よい
foo:'bar' ←よい
foo: :bar ←なんかださい
0303デフォルトの名無しさん
2014/08/13(水) 14:47:53.87ID:s6AcBQ2cYAML.dumpで書き出したときに先頭がマルチバイト文字
だと自動的に""で囲まれるようですがこれは確定した仕様なんでしょうか?
ドキュメントに一切記述がなくて不安です。
0304デフォルトの名無しさん
2014/08/13(水) 15:06:48.24ID:KN2EsXN5この話かな?
・Ruby1.9.2で日本語を含むYAMLを出力する時、バイナリ文字列化されないようにする
http://keijinsonyaban.blogspot.jp/2010/10/ruby192yaml.html
0306303
2014/08/13(水) 16:32:59.37ID:s6AcBQ2cそんな感じです。こちらの環境はwindows版2.0でPsychも有効になっているようですが
require 'yaml'
jp = 'あいうえお'
puts(YAML.dump(jp))
#--- "あいうえお"
en = 'abcde'
puts(YAML.dump(en))
#--- abcde
#...
となって日本語のほうだけダブルクォーテーションで囲まれてしまいます。
確定した仕様なら大した問題はないのですがいろいろ調べてると2,3年混乱
が続いたライブラリのようで不安になってきました。使わないほうがいいのでしょうか?
0307デフォルトの名無しさん
2014/08/13(水) 16:45:24.76ID:9nXT2NBI0308289
2014/08/13(水) 21:39:49.42ID:KN2EsXN5使用例として「2次元クラフィック向けの四角形クラス」を書いてみた
http://play.island.ac/codepaste/code?id=1587
これは姉妹スレ「Rubyについて Part49」の #771,772-774 で書いていた
コードを改造母体にして、抽象メソッド宣言やその他の変更を加えたものです
参考まで
0309289
2014/08/13(水) 22:40:38.72ID:KN2EsXN5今さら調べてみると、海外でも似たような議論をしている
・Abstract Method in Ruby - Stack Overflow
http://stackoverflow.com/questions/6792428/abstract-method-in-ruby
ここでも基本は「具象クラスで抽象メソッドが未定義であれば例外を投げる」だけど、
>>289 と同様に Smalltalk ではそれを SubclassResponsibility と呼ぶという
レスが付き、それと類似のコードが提案されている
また、>>295 では抽象メソッド宣言コードを自作してみたけど、
同じ事を考えていた人は海外にもいた
・Creating an Abstract Method | zenspider.com
http://www.zenspider.com/Languages/Ruby/Cookbook/ClassesAndObjects/AbstractMethod.html
>>295 では組込みクラス Module に宣言メソッドを追加していたけど、
こちらの実装では宣言クラス Abstract を定義しクラスメソッド Abstract.method として
抽象メソッドを宣言する API 仕様になっているみたいだ
例えば、任意のクラス定義内で Abstract.method :foo と書く
0310デフォルトの名無しさん
2014/08/13(水) 22:54:28.35ID:KN2EsXN5YAML は使ったことがないのでよく分からんけど、
公式仕様書では最初のドラフト版である 1.0 の時点で
ダブルクォーテーションで囲まれた文字列が定義され、
最新版の 1.2 でも仕様定義に変更はなく安定しているみたいだね
・YAML Ain’t Markup Language (YAML) Version 1.2
http://yaml.org/spec/1.2/spec.html#id2760844
この仕様書の例 "Example 2.17. Quoted Scalars" が該当する箇所
後はライブラリにおける仕様の実装品質を検討することになる
・もし品質が保証された他の手段(他のYAML実装やJSON/XML仕様)が
存在しているなら採用を検討する、あるいは
・とりあえず何か問題が起こるまでは標準ライブラリの利用を継続する
ぶっちゃけた話、どちらを選ぶのが適切かはケースバイケースだから、
後は >>306 自ら最終判断を下すしかないと思う
0311デフォルトの名無しさん
2014/08/14(木) 03:58:05.93ID:+2zwhmMM0312デフォルトの名無しさん
2014/08/14(木) 07:51:44.38ID:/Ffu3gb/0313デフォルトの名無しさん
2014/08/15(金) 04:49:13.30ID:MB8edIwXってできなくて不便なんすけど
ruby2.1でもまだfileに対応してないんスね
0314デフォルトの名無しさん
2014/08/15(金) 05:36:59.12ID:5MJoVvaB=> ["a", "b", "c"]
>> "a\nb\nc\n".split("\n"){|i| puts i}
=> ["a", "b", "c"]
>> "a\nb\nc\n".split("\n").each{|i| puts i}
a
b
c
=> ["a", "b", "c"]
>>
2行目のeachつけ忘れでエラーでないんだけど
Arrayに直接ブロックをぶら下げると何が起こるの?
0315デフォルトの名無しさん
2014/08/15(金) 06:18:06.78ID:11xv4jXV0316デフォルトの名無しさん
2014/08/15(金) 08:26:41.72ID:2ipN4K8/irb> 'abc'.upcase
=> "ABC"
irb> 'abc'.upcase{|x| foo}
=> "ABC"
0317デフォルトの名無しさん
2014/08/16(土) 18:49:31.04ID:ur+z2lZs原書は2013年5月に出版されたようだけど。
0318デフォルトの名無しさん
2014/08/16(土) 19:08:17.04ID:pCqm9jUF翻訳を検討し始めるのではないかと思われ
Ruby 2.2 リリースとの熾烈な競争になるなぁ(棒
0319デフォルトの名無しさん
2014/08/16(土) 19:14:06.94ID:jGqbtnFx0320デフォルトの名無しさん
2014/08/16(土) 21:15:40.19ID:jGqbtnFxbar
end
をもちっとコンパクトに書けんかの
if [1, 2, 3].include?(foo)
bar
end
だとなんかイモい
case foo
when 1, 2, 3
bar
end
もなんかイモい
if foo is 1 || 2 || 3
bar
end
とかかけたらな
0321デフォルトの名無しさん
2014/08/16(土) 21:43:07.02ID:pCqm9jUFコードの可読性が数学における表記法との類似性を指すのであれば:
>> if [1, 2, 3].include?(foo)
が最も類似していると思う
もしコンパクトさを最重要視したいのなら、
Ruby では識別子に UTF-8 文字が利用できるから、
以下のコードを書けばいい
irb(main):001:0> module Enumerable; alias ∈ include?; end
=> nil
irb(main):002:0> [1, 2, 3].∈ 2
=> true
irb(main):003:0> [1, 2, 3].∈ 4
=> false
irb(main):004:0>
(2ch では「∈」という文字が化けている可能性が高いけど、
これは「ある要素が集合に含まれているか」を表す数学の記号)
0322デフォルトの名無しさん
2014/08/16(土) 21:51:29.58ID:A0O6xtGzはRuby的ではないだろ
論理的に合っててシンプルならいいってのはPythonっぽいわ
0323デフォルトの名無しさん
2014/08/16(土) 22:06:29.30ID:pCqm9jUF>>321 では「数学的表記との類似性」という視点でコードを示したわけで、
これが「Ruby的」とは一言も書いていない
だから一体、何に対して過敏に反応しているのか、わけがわからんな
「Ruby的」とか「Rubyっぽい」というのは、>>320 の前半3つの書き方、
そのどれでも受け入れ、その中からどれを選択するかはプログラマに
任せるという「寛容な設計哲学」にある(と、個人的には考える)
これの「Rubyらしさ」は、常にプログラマへ「論理的に合っててシンプルならいい」を
強要する Python とは対照的だね
0324デフォルトの名無しさん
2014/08/16(土) 22:09:16.80ID:xeQ2qkm20325デフォルトの名無しさん
2014/08/16(土) 22:13:46.44ID:ur+z2lZsもっとコードをしっかり読もうよ。
元のコードの一行目はなんか変じゃない?
0326デフォルトの名無しさん
2014/08/16(土) 22:17:39.81ID:pCqm9jUFtypo をいちいち揚げ足取りするほど野暮じゃないんで....
0327デフォルトの名無しさん
2014/08/16(土) 22:23:52.88ID:ur+z2lZsbar
end
foo∈Nなら
0328デフォルトの名無しさん
2014/08/16(土) 23:21:02.64ID:xeQ2qkm2pythonだねw
0329デフォルトの名無しさん
2014/08/17(日) 11:50:17.42ID:C1vhwMQlclass Fixnum
def is(f)
f.call(self)
end
end
def one_of(*them)
return them.first.method(:include?) if them.size == 1
them.method(:include?)
end
foo = 5
bar if foo.is one_of 1,3,5,7
bar if foo.is one_of [1,3,5,7]
bar if foo.is one_of 1..7
0330デフォルトの名無しさん
2014/08/17(日) 16:28:19.29ID:v7smLqH20331デフォルトの名無しさん
2014/08/17(日) 18:27:16.73ID:F9qolS48100人が同じような実装書いたら自動でオリジナルに反映されるクラウド型言語にすれば
車輪の再開発も最小限に抑えられるのに
0332デフォルトの名無しさん
2014/08/17(日) 19:21:09.40ID:Ot0PKOG+0333デフォルトの名無しさん
2014/08/17(日) 19:51:54.11ID:sI1u/7Zz0334デフォルトの名無しさん
2014/08/17(日) 20:12:47.24ID:wn4TLg6+100アカウント作る作業が捗りますね。
0335デフォルトの名無しさん
2014/08/18(月) 18:39:08.27ID:MNhNsEMrstr = String.new
str << "hello"
str << "\n"
str << "world"
p str
とやると、 "hello\nworld" が出力されてしまいます
<< の代わりに + を試してみたり、クオーテーションマークを変更してみたのですが上手く行きませんでした
ご存じの方がいらっしゃったら教えて下さい
0336デフォルトの名無しさん
2014/08/18(月) 18:55:10.29ID:RYTp3JkDpではなくprintやputsを使う
0337デフォルトの名無しさん
2014/08/18(月) 19:07:53.97ID:MNhNsEMrああ、ほんとだ!
pやputs、printの微妙な違いを理解していませんでした
教えて下さりありがとうございます!
0338デフォルトの名無しさん
2014/08/18(月) 21:43:14.89ID:DSQRQPi5文字列から以下のようにscanすると、1回目のマッチで先頭の12111を消費してしまうので
残りは2111となってマッチせず、戻り値は1要素になります
"121112111".scan(/1+21+/) #=> ["12111"]
元の文字列の中で、以下のように正規表現に当てはまるすべてのパターンを抽出したいとき
簡単にできる方法はあるでしょうか?
"121112111".??? /1+21+/ #=> ["12111","1112111"]
その後文字数を数えたりしたいので、先読みだけでは期待通りになりませんでした
"121112111".scan(/1+2(?=1+)/) #=> ["12", "1112"]
0339デフォルトの名無しさん
2014/08/18(月) 22:12:57.28ID:fWx8XBuAirb(main):001:0> xs = "121112111"
=> "121112111"
irb(main):002:0> (0..(xs.size - 1)).map { |i| xs[i, xs.size - i].scan /1+21+/ }.flatten.uniq
=> ["12111", "1112111", "112111"]
irb(main):003:0>
0340デフォルトの名無しさん
2014/08/18(月) 22:16:57.84ID:8phCtYDaメソッド1つでやる方法はない
ループ回してやるぐらいだろう
0341デフォルトの名無しさん
2014/08/18(月) 22:50:50.95ID:DSQRQPi5ありがとうございます
やっぱり単純な方法はなさそうですね
今回に限っては以下のように対処することにしました
"121112111".gsub(/1+/){"#$& #$&"}.scan(/1+21+/)
=> ["12111", "1112111"]
0342デフォルトの名無しさん
2014/08/18(月) 23:07:32.88ID:kHWBbVG20343デフォルトの名無しさん
2014/08/19(火) 22:06:10.54ID:4T9lOZln文字列を処理するお題が「次」に出るに違いない・・・そう、これは
ブラフだ。きっと010001000に置き換えてビット演算で効率のいい
アルゴリズムを考えないと解けないようにできているんだ・・・!
0344デフォルトの名無しさん
2014/08/20(水) 23:56:22.60ID:Hb2EFkIX@list.each do |e|
e.foo
end
end
って書くののなんかダサいから、
nil.to_aで[]が返るのを使って、
@list.to_a.each do |foo|
foo.xxx
end
ってするのはどうかな?
to_aだけだと@listがnilの可能性がある事を示せなくて紛らわしいかな?
0345デフォルトの名無しさん
2014/08/20(水) 23:59:39.84ID:Hb2EFkIXe.foo
end
だった。
0346デフォルトの名無しさん
2014/08/21(木) 00:45:52.00ID:im1RGGTyArray(@list).each
という書き方はよく使うね
0347デフォルトの名無しさん
2014/08/21(木) 02:06:12.53ID:x7AE9dcj「引数(orインスタンス変数)は配列互換。途中でエラーになるんでよろしく」とマニュアルに太字で書いておく
いやわりとマジで
メソッドに外部から投げ入れるオブジェクトのクラスがナニかというのを徹底するのは人間の仕事
0348デフォルトの名無しさん
2014/08/21(木) 02:08:32.65ID:Rf32jxet動的型付け言語は大変だな。
0349デフォルトの名無しさん
2014/08/21(木) 02:18:40.09ID:x7AE9dcjdef hoge(arg)
arg.each do |e|
と書いた時点で「いや待てよargが配列じゃなかったらどうしよう、ちょっと変わったHashの可能性もあるよな、よし対処しよう」と考え
な い
というのは、直感やおもてなしのココロ(って何)には反する
0350デフォルトの名無しさん
2014/08/21(木) 13:02:24.41ID:cuQAWRrRPostデータのエンコードとバリデーションをしたいのですが
良いライブラリはありますでしょうか
0351デフォルトの名無しさん
2014/08/21(木) 17:35:17.83ID:yvxtVK3Iその例の場合は
def hoge(*args)
にしちゃうかな、配列が複数ある場合は無理だけど…
0352デフォルトの名無しさん
2014/08/21(木) 21:32:48.95ID:JmIsso9r> って書くののなんかダサいから、
どうやら Ruby の作者も「if [email protected]?」はダサいと感じていたみたいで、
結果として「unless @list.nil?」という珍しい文法が Ruby に追加された
同様にして「while [email protected]?」もダサいので「until @list.nil?」も追加された
> to_aだけだと@listがnilの可能性がある事を示せなくて紛らわしいかな?
@list の値が nil のケース(=リストそのものが存在していないケース)と
@listi の値が空リストであるケース、それぞれによって処理を分岐させたいのなら、
この nil.to_a というコードは問題になる
ただ、今回の例(>>344)では両者のケースに対して同じ処理を期待しているように見えるから、
たとえば:
if (! @list.nil?) && (! @list.empty?)
あるいは:
unless @list.nil? || @list.empty?
と書くよりも、nil.to_a のほうが好ましいと思う
(よくある言い回し、いわゆる Ruby のイディオムの一つになれる可能性がある)
0353デフォルトの名無しさん
2014/08/22(金) 21:34:40.30ID:QtCUYHT3JavaやC#にだってぬるぽあるやん
0354デフォルトの名無しさん
2014/08/22(金) 23:33:54.15ID:IRypyqt/0355デフォルトの名無しさん
2014/08/23(土) 00:51:47.76ID:T0CaKeKd@list.each(&:foo)
じゃないの???
0356デフォルトの名無しさん
2014/08/23(土) 01:34:51.41ID:2/26ZChgが標準でできればなぁ
request for: Object#try
https://bugs.ruby-lang.org/issues/1122
0357デフォルトの名無しさん
2014/08/23(土) 02:24:04.01ID:WQrXNI9l0358デフォルトの名無しさん
2014/08/23(土) 14:44:18.03ID:9MV2WjBq以下の回答ではWrong Answerとなってしまうのですが
おかしいor考慮不足な点がなにかわかりません
わかる方ご指摘をお願いしたいです
問題文に記載されたサンプル入出力は満たしています
問題:http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0021&lang=jp
Wrong Answer回答:http://ideone.com/Cl6B6n
回答の内容
2直線の傾き(i,j)を計算し一致すれば
(ただし実数なのでその差が相対誤差(大きいほう*イプシロン)、絶対誤差(イプシロン)より小さければ)
平行と判断する
(イプシロンは1e-10と置く)
0359デフォルトの名無しさん
2014/08/23(土) 14:55:59.25ID:WQrXNI9lゼロ除算が考慮されていない
0360デフォルトの名無しさん
2014/08/23(土) 15:08:18.23ID:9MV2WjBqおう・・・ご指摘通りでした
0除算考慮したらAcceptされました、ありがとうございます!
誤差がおかしいのかとか難しく考えすぎてた・・・
0361デフォルトの名無しさん
2014/08/23(土) 16:39:10.31ID:0NcmejrN0362デフォルトの名無しさん
2014/08/23(土) 16:47:31.24ID:0NcmejrNrbenvでバージョン切り替えが出来ないんだけど、誰かわかる?
rbenv globalコマンドとruby -vコマンドで表示されるバージョンが違うってどゆこと?
バスの設定はしてある。
export PATH=$HOME/.rbenv/bin:$PATH
eval "$(rbenv init -)"
0363デフォルトの名無しさん
2014/08/23(土) 17:13:00.67ID:WQrXNI9l環境変数 RBENV_VERSION かカレントディレクトリに .ruby-version があるかどっちかじゃね?
0364デフォルトの名無しさん
2014/08/23(土) 19:35:20.67ID:1h2qyd6w0365デフォルトの名無しさん
2014/08/23(土) 20:35:05.17ID:WQrXNI9lsystem
0366デフォルトの名無しさん
2014/08/24(日) 00:11:04.95ID:6OMWvQqoresult =で起動できました!
それと上で起動させたスクリプトを時間がきたら停止させるようにしたいんだけど、
resultで起動させつつその下の命令も実行させるようにってできますか?
0367デフォルトの名無しさん
2014/08/24(日) 00:26:45.54ID:hXFtc1r+spawn 使え
0368デフォルトの名無しさん
2014/08/24(日) 09:00:55.94ID:/FddapLMif foo()!=0 then
a=foo()
end
をfoo()を2回呼ばずに書く方法無い?
b=foo()してbを2回使うはあるけどもっとスッキリしたので
0369デフォルトの名無しさん
2014/08/24(日) 09:17:31.10ID:joOkqJea0370デフォルトの名無しさん
2014/08/24(日) 09:21:15.73ID:joOkqJea(b=foo)!=0&&a=b
0371デフォルトの名無しさん
2014/08/24(日) 11:13:18.14ID:XmfYikUFa = foo.nonzero? || a
かな
0372デフォルトの名無しさん
2014/08/24(日) 11:17:59.94ID:mc0xcEhsa += foo
0373デフォルトの名無しさん
2014/08/24(日) 13:24:10.87ID:EYMdVqe7片対数グラフで直線だから既に指数関数的増加だった
2014年に、西アフリカでアウトブレイクした潜伏期間延長型エボラの死者は、2014年8月半ばで1000人。←今ココ
2014年12月上旬で1万人。
この時点で世界規模で空路シャットダウン開始、世界経済大混乱
2015年5月で10万人。
2015年9月で100万人。
この時点で、第二次世界大恐慌発生
2015年大晦日で1000万人。
ちなみに
http://ja.wikipedia.org/wiki/2014%E5%B9%B4%E3%81%AE%E8%A5%BF%E3%82%A2%E3%83%95%E3%83%AA%E3%82%AB%E3%82%A8%E3%83%9C%E3%83%A9%E5%A4%A7%E6%B5%81%E8%A1%8C
:カナダ保健省のサイトでは体内に数個のエボラウィルスエアロゾルが侵入しただけでも発症するとしている
:ハマダラカが、吸血したての人の新鮮血を媒介しているという学説が浮上している
エボラ出血熱は蚊やアブに刺されただけで感染する。
:「この地域には内戦、政府による搾取、テロが長い間続いており、それによって生まれた恐怖、貧困、猜疑心などがある。エボラは耐え難い騒音に付け加えられた一つのざわめきに過ぎない」
現地では
や る 気 は 皆 無
0374デフォルトの名無しさん
2014/08/24(日) 16:21:51.74ID:joOkqJeaTimeクラスメソッドを何度も使う箇所があり、特定範囲だけTimeを省略できたらなあと考えています
こんな感じのことがしたい
with(Time){
a=now
b=at(gm(・・)+gm(・・)+a)
・・・
}
0375デフォルトの名無しさん
2014/08/24(日) 17:16:02.45ID:67kLGJdT省略したいのがモジュールであれば;
include TooLongNamedModule
によって、現在の名前空間内では TooLongNamedModule 指定が不要になる
ただし、残念ながらクラスは include できないので、省略もできない
さらに書籍「JavaScript: The Good Parts」では
with 構文が「悪いパーツ」の一つとして挙げられているように、
それら言語でも with 構文の多用はバッド・ノウハウだから避けるべき
同様に Ruby でも include 宣言は Mix-in の用途にも使われ、
コードを一見しただけでは二つの用途(=プログラマの意図)が判別できないので、
名前空間の省略を目的とした include 宣言は、できるだけ避けるべきだろう
タイプ数を減らしコードを簡潔にしたいという目的を解決する手段であれば、
Ruby では「悪いパーツ」である with 構文の代わりに、別名(シノニム)を使える
M = TooLongNamedModule
C = TooLongNamedClass
これで、TooLongNamedClass.method の代わりに C.method と短く書けるし、
include や with 構文のような弊害は無い(=「悪いパーツ」ではない)
なお、>>374 のコードは(モジュールあるいはクラス等の定数ではなく)変数を
省略して書けることを想定しているみたいだけど、これも Ruby では書けない
その代わり、Object#tap { |obj| .... } を使って、たとえば以下のように書ける
T = Time
T.now.tap do |a|
.... # 処理時間を計測したいコード
b = T.now
processing_time = b - a
....
end
こちらもブロック(無名クロージャ)を利用しているので、with 構文のような弊害は無い
0376デフォルトの名無しさん
2014/08/24(日) 17:38:36.03ID:kokV6yFVMailのnewを参考にすれば良さげだけど、
こういうことをやる汎用的なライブラリは知らない。
http://q.hatena.ne.jp/1406363383
0377デフォルトの名無しさん
2014/08/24(日) 18:52:40.24ID:1zGm5FNXobj.instance_eval(&blk)
obj
end
arr = with [] do
push 1
push 2
end
p arr #=> [1, 2]
0378デフォルトの名無しさん
2014/08/24(日) 20:49:03.78ID:joOkqJea解説や参考になる例ありがとうございます
今回はその場だけでできる対処にとどめて
t=Timeとしてt.xxxの呼び出しにしておくことにしました
>>377なるほどたしかにそんな定義でできますね
目から鱗でした
0379デフォルトの名無しさん
2014/08/24(日) 23:09:56.22ID:/FddapLMありがとうありがとう
0380デフォルトの名無しさん
2014/08/25(月) 13:17:00.42ID:QP4jkvqW0381デフォルトの名無しさん
2014/08/26(火) 23:45:43.15ID:fg6dDNl20382デフォルトの名無しさん
2014/08/27(水) 00:09:38.37ID:PsKPXBApトットリニーップwwwwwwwwwwwwwww トットリニーップwwwwwwwwwwwwwww
トットリニーップwwwwwwwwwwwwwww トットリニーップwwwwwwwwwwwwwww
トットリニーップwwwwwwwwwwwwwww トットリニーップwwwwwwwwwwwwwww
トットリニーップwwwwwwwwwwwwwww トットリニーップwwwwwwwwwwwwwww
トットリニーップwwwwwwwwwwwwwww トットリニーップwwwwwwwwwwwwwww
トットリニーップwwwwwwwwwwwwwww トットリニーップwwwwwwwwwwwwwww
ホーシンツクツクwwwwwwwww ホーシンツクツクwwwwwwwww
ホーシンツクツクwwwwwwwww ホーシンツクツクwwwwwwwww
ホーシンツクツクwwwwwwwww ホーシンツクツクwwwwwwwww
ホーシンツクツクwwwwwwwww ホーシンツクツクwwwwwwwww
ニーィップwwwww ニーィップwwwww ニーィップwwwww ニーィップwwwww
ニ˝ィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィィwwwwwwwwwwwwwwwwwwww
0383デフォルトの名無しさん
2014/08/28(木) 20:52:39.51ID:bYpjcPNQ効率よくする方法があれば知りたいです。
0384デフォルトの名無しさん
2014/08/28(木) 21:24:30.26ID:wD312MD5曲がりなりにもプログラマなら言葉は正確に
0385デフォルトの名無しさん
2014/08/29(金) 00:06:45.17ID:8OnVWPNr0386デフォルトの名無しさん
2014/08/29(金) 02:30:57.57ID:YhQ421pdhttp://www.amazon.co.jp/dp/4797380357/
面白そう。
るびきちさんの本は評判良いのが多いし。
0387デフォルトの名無しさん
2014/08/29(金) 06:26:08.48ID:4v1OcElJ本職が集まるのはマ板のほうだろ、と
こっちは職業関係なく技術全般
0388デフォルトの名無しさん
2014/08/29(金) 06:31:20.33ID:zbAMrUw4誰も職業プログラマとは言ってないだろう
上流SEだろうが学生だろうが自然科学研究者だろうがそこら辺の事務員だろうが
プログラム書いてる時はプログラマだよ
0389デフォルトの名無しさん
2014/08/29(金) 06:43:24.73ID:4v1OcElJ0390デフォルトの名無しさん
2014/08/29(金) 08:41:28.12ID:JuyS8Rqx0391デフォルトの名無しさん
2014/08/29(金) 18:00:04.04ID:y0wlLGq80392デフォルトの名無しさん
2014/09/01(月) 00:22:32.67ID:peTXbjy90393デフォルトの名無しさん
2014/09/01(月) 00:40:05.34ID:0L11GGiJhttp://www.amazon.co.jp/dp/B00K388BNC/
やすっぽい感じの本だが、意外と入門書として良書かなと思った。
0394デフォルトの名無しさん
2014/09/01(月) 07:53:41.50ID:zQucGkufステマをクリると〜
アタマアタマアタマ〜
アタマがクルう〜
0395デフォルトの名無しさん
2014/09/01(月) 09:41:40.66ID:8W5kaaXlクラスのメンバ変数の個々のインスタンスに別々のヘルプを出す
機能を付けたいのですが,どの様にすれば良いでしょうか?
というか,Array クラスに個々のインスタンス向けのヘルプを追加出来ますか?
2.
クラスのメンバ関数にもヘルプを出す機能を付けたいのですが,
どの様にすればよいでしょうか?
class A
attr_accessor :a, :b
def initialize
@a = ArrayDerivedClass.new
@b = ArrayDerivedClass.new
@a と @b の配列の値の設定
end
def func()
関数についてのヘルプはどの様に設定できるのか...
end
end
a = A.new
a.a.set_help( "文字列のヘルプ" )
a.b.set_help( "文字列のヘルプ" )
a.func.set_help( "文字列のヘルプ" )
a.a.show_help
a.b.show_help
a.b.show_help
0396デフォルトの名無しさん
2014/09/01(月) 09:44:27.91ID:8W5kaaXla.func.show_help
関数については A のインスタンス毎にヘルプを出す意味は
無いかもしれませんので,クラス共通で良いです.
0397デフォルトの名無しさん
2014/09/01(月) 11:09:27.77ID:gUv8HVAQこれは言葉尻の問題ではなく、基礎的な統合的な学習を行なっていないということを示唆します
つまり、あれこれやるには基礎知識が不足していてまだ早過ぎます
0398デフォルトの名無しさん
2014/09/01(月) 11:18:30.35ID:8W5kaaXlそこをなんとか...
0399デフォルトの名無しさん
2014/09/01(月) 12:38:51.58ID:gUv8HVAQヘルプが欲しいというのは誰がどういうときにどんなヘルプを欲しいのだろうか
ヘルプが欲しいときときにわざわざスクリプトを書き換えてスクリプト本体を実行するのだろうか
それは一体いつどこに表示されるのだろうか
ああもう面倒くさい、マニュアルと呼ぶ
スクリプト作成中にメソッドのマニュアルが欲しいときにスクリプトの一部を書き換えて実環境で実行して
マニュアルテキストをアプリケーション画面に表示させるなんてことは絶対にない
つまり、マニュアルが知りたいときというのはなにか別途標準入力と標準出力に相当するものがある環境なはずだ
具体的にはirbとか、Ruby実行と全然関係ないWebブラウザとかテキストビューアとか、いっそIDEに相当するものとか
そういう外部環境からマニュアル要求を実行させてそういう外部環境に表示させるのが妥当
たとえばRdoc、たとえばYARD
class C
# すごいメソッド
# @return [String] すごい結果を文字列で返す
def mes
'Yay!'
end
end
0400デフォルトの名無しさん
2014/09/01(月) 13:07:15.79ID:MGwyWz7V説明が足りませんでしたが,
irb にてプログラム作成者のプログラムを利用者に実行してもらい,
利用者がよくわからない作成者のプログラムの内部実装に使われる
各変数の役割りを伝えたいと考えています.
プログラム自身は何をするのかおおよそは分かっていても
他人のプログラムの実装アルゴリズムはよくわからないので,
irb にてプログラムを実行しつつ,プログラムの動作については,
最初に new されて取得した変数について show_help とすれば
そのクラスにてサポートされている関数ならびに動作を示すことができ,
そこで示された各関数についてもそれぞれ show_help とすれば
内部実装のおおよそのアルゴリズムがしめされ,
そこで利用されている変数についても show_help とすれば,
その変数の定義方法と利用方法が示されれば良いと考えています.
そうすれば,irb 上で変数のアクセス方法を理解しながら
irb 上で変数変更等をしつつ内部動作をフォロー出来るのでは無いかと考えています.
RDoc, YARD について調べてみます.
0401デフォルトの名無しさん
2014/09/01(月) 18:13:38.30ID:ufbPbDzEソース中にドキュメントをきちんと書いていれば、利用者に irb じゃなくて pry を使って貰えば済む
0402デフォルトの名無しさん
2014/09/01(月) 20:19:30.95ID:y5nx9Floそんな人間が存在しないことを願いたい
0403デフォルトの名無しさん
2014/09/01(月) 23:41:01.86ID:FYOTBzBEpry というのがあるのですか〜。
インスタンスごとにヘルプを付ける機能もあるのでしょうか。
詳しく調べてみます。もちろん
自分で自己流のものを作るより皆に認められている
方法を使うほうが良いと思ってます。
>>402
それは認めます。w
メタオブジェクトプログラミングで
クラスのインスタンス毎やメンバ関数(C++用語ですが)に自己説明型の
なんらかのヘルプ機能を付けることぐらい朝飯前なのかと思ってましたが、
その前にそんなものが必要でないということですね。お騒がせしました。
0404デフォルトの名無しさん
2014/09/02(火) 03:11:26.77ID:77EG12Xs違う
あなたにはプログラミング一般およびRuby固有の知識も理解も全く欠けていることがよくわかった
あなたのやることは全て間違っている
何もやるな
0405デフォルトの名無しさん
2014/09/02(火) 06:19:05.88ID:tKEpbnMpということなんだろうなきっと
0406デフォルトの名無しさん
2014/09/02(火) 09:42:48.05ID:d4GudW4xプログラマってほんと嫌な人種だな
0407デフォルトの名無しさん
2014/09/02(火) 12:50:14.57ID:9bYbyMScインテリセンスはどうでしょうか?
関数、変数のコメントなどを使われている個所でマウスポインタを持っていくだけで
表示します。
構文上の誤りは、その場で下線が付きます。
呼び出し先、呼び出し元を一覧できます。
0408デフォルトの名無しさん
2014/09/02(火) 12:55:28.14ID:9bYbyMScどのようなものでもC++には必要とする人が居ます。
0409デフォルトの名無しさん
2014/09/03(水) 00:00:03.11ID:UsrF22+Erbenvでrubyバージョンを管理しているのですが、gem installや gem listコマンドはその環境ごとにしっかりgemを管理してくれています
gemコマンドとは独立のはずのrbenvでのrubyバージョン渡り歩きに、「gem」はどうして対応できているのでしょうか
0410デフォルトの名無しさん
2014/09/03(水) 03:09:55.11ID:vIx21Y4j~/.rbenv以下のディレクトリ構成を見ると分かるがそれぞれの環境ごとにディレクトリが分かれていてその中にgemが導入されていたはず。
0411デフォルトの名無しさん
2014/09/03(水) 12:46:07.97ID:UsrF22+Erbenvが勝手に作ったディレクトリの場所を「gem」がどうやって知っているのかがわからないのです・・・
0412デフォルトの名無しさん
2014/09/03(水) 13:37:07.00ID:HoPhs46Kあなたがgemを起動している時に使っているgemはrbenvによって生成されたgemコマンドへのラッパです。
ラッパによって各.rbenv/versions/[VERSION]/bin/gem が呼び出され、呼び出されたgemは各versionのroot以下の事しか把握していません。
0413デフォルトの名無しさん
2014/09/03(水) 13:50:23.85ID:vIx21Y4j~/.rbenv/shimsのなかのファイル(ruby,gem,etc...)を見るとスクリプトになっており、PATHの先頭付近に追加されてるのでここから呼ばれる。
(which gem)
ざっと目を通した感じだと、カレントディレクトリに.rbenv-versionまたは.ruby-versionがあればそこから、なければ~/.rbenv/versionの値が参照され、それをもとにどのディレクトリから呼び出すかを決める。
つまり、環境ごとに呼び出されるgem本体が違う。
0414デフォルトの名無しさん
2014/09/03(水) 15:54:57.09ID:UsrF22+Egemコマンドをあラップしていたのですね。理解しました
ありがとうございます
0415デフォルトの名無しさん
2014/09/04(木) 15:57:10.66ID:OIDeHqM90416デフォルトの名無しさん
2014/09/07(日) 05:52:26.74ID:dbFvupeQjavaではjunitとjmockit使ってました。
0417デフォルトの名無しさん
2014/09/07(日) 07:49:20.91ID:KNwhARCn0418デフォルトの名無しさん
2014/09/07(日) 12:42:48.08ID:82AeVD3A標準でついてくるminitest
使い方は、Junitそのまま。
0419デフォルトの名無しさん
2014/09/09(火) 11:23:12.23ID:5uq9Q4buC++にインスタンス変数がないのと同様、Rubyにはメンバ変数はない
メンバ変数はC++の専門用語およびC++に根付いた特殊な概念であって、オブジェクト指向固有の呼び名ではない
特定のオブジェクト指向言語の方言をオブジェクト指向全般で通用するものだと勘違いする現象は時々みられるが、
学習上も定義上も傍から見てても恥ずかしく意味がないので、気をつけるといい
稀に「その言語の用語」で説明しないサイトや書籍が現れるが、所詮その程度で害悪しか撒かないのでとっとと燃やしてしまえ
0420デフォルトの名無しさん
2014/09/09(火) 12:34:04.23ID:xwHNZTBEまとめて呼ぶときに、メンバ変数って呼ばれても特に変な感じはしないけどな。
単純にメンバというと、メソッドも含まれるわけで。
0421デフォルトの名無しさん
2014/09/09(火) 21:54:00.76ID:QKhHrQUhphpみたいにrubyでコマンドラインからコードを引数で渡して実行する方法を教えてください
0422デフォルトの名無しさん
2014/09/09(火) 22:25:23.49ID:jlMM873/-e
0423デフォルトの名無しさん
2014/09/09(火) 22:36:29.41ID:dRW5L+4Vありがとうございます。
0424デフォルトの名無しさん
2014/09/10(水) 00:04:50.55ID:ysKE+Qj1んだけど、gem install nokogiriとやるとエラーになってうまくいかないのはなぜ?
フェッチは100%まで行くけど、undefined method `[]‘ for nil:NilClassみたいな
エラーがでて止まっちゃう。
もうイライラしまくりんぐ。
0425デフォルトの名無しさん
2014/09/10(水) 00:51:41.65ID:3fyaXQX9v8かnods.jsが必要とか?
0426デフォルトの名無しさん
2014/09/10(水) 01:52:04.32ID:pTBoSvxK0427デフォルトの名無しさん
2014/09/10(水) 01:57:57.88ID:U67N92ow0428デフォルトの名無しさん
2014/09/10(水) 02:17:43.27ID:Kk1nHIcidevkit入ってる?
0429デフォルトの名無しさん
2014/09/10(水) 08:59:47.29ID:av5QsdtA0430デフォルトの名無しさん
2014/09/10(水) 09:44:20.33ID:hXO3q56qwindows でもコマンドライン数行でインスコ説明完了な時代になってるんだろうか
0431デフォルトの名無しさん
2014/09/10(水) 09:52:33.54ID:4LqmTc+v0432デフォルトの名無しさん
2014/09/10(水) 17:04:55.22ID:EEeqkt2aルーティング、もろもろの再利用、アクティブレコードあたりは便利だと思ったのですが、
特にビューヘルパーとかhtmlを別の名前にしましたみたいなものが多くありません?それメソッド使わずに普通に書いたほうがみやすいしわかりやすいのではというものが多いと思いました.経験者からするとどうなのでしょうか
0433デフォルトの名無しさん
2014/09/10(水) 17:06:51.83ID:/KH51cxp0434デフォルトの名無しさん
2014/09/10(水) 20:33:38.43ID:lzotv2Nxいやもうまったくその通り
そんな回りくどく書くより俺が直接書いたほうが(俺にとって)早いし(俺にとって)速いし(俺にとって)わかりやすい
いやもうまったくその通り
0435デフォルトの名無しさん
2014/09/10(水) 21:29:35.68ID:MIzNsnl2Railsに関する質問や相談なら
WebProg板に専用スレがあるから、
そちらへ逝きなされ
0436デフォルトの名無しさん
2014/09/10(水) 21:34:17.56ID:x7jt4/gl単純なTagHelperについてはそのとおりかもしれない
しかしFormBuilderは他にも色々やってくれる(nameやvalueを適切に入れてくれる)ので
生のHTMLを書くよりは書きやすいと思う
0437デフォルトの名無しさん
2014/09/11(木) 00:19:27.00ID:lctgDj8vこういうのって地味に大事というか、初心者離れを加速させちゃうんじゃないかと
いう気がする。
メンテする奴もやる気がなくなってきている、コミュニティとして煮詰まってきちゃったんだと思うけど。
もっとしっかりやれ。まあ俺は何もしないけど。
0438デフォルトの名無しさん
2014/09/11(木) 00:46:47.82ID:SzkLW3l30439デフォルトの名無しさん
2014/09/11(木) 07:26:43.55ID:IFETaxJcたとえば?
0440デフォルトの名無しさん
2014/09/11(木) 09:13:29.79ID:1Qd2Os770441デフォルトの名無しさん
2014/09/11(木) 10:16:40.23ID:qpyAR3PI0442デフォルトの名無しさん
2014/09/11(木) 14:52:29.61ID:xQfGfu/oはやくPythonやJavaScript系に乗り換えた方がいい。
0443デフォルトの名無しさん
2014/09/11(木) 15:05:01.07ID:1Qd2Os77ドヤ顔するクズと同じぐらい有害
0444デフォルトの名無しさん
2014/09/11(木) 19:50:23.40ID:WdQgW6yP>はやくPythonやJavaScript系に乗り換えた方がいい。
ついつい本音が出てしまったねw
アンチが乱入して暴れるのはRuby関連スレの恒例だな
まあ、それだけ他のスクリプト言語プログラマからすれば、
Ruby が気になって気になって夜も眠れないんだろうなぁ(棒
0445デフォルトの名無しさん
2014/09/11(木) 22:42:45.70ID:/K7dGRs5Rubyもだけど。
0446デフォルトの名無しさん
2014/09/12(金) 00:34:42.81ID:OuSEN9ev0447デフォルトの名無しさん
2014/09/12(金) 00:40:48.66ID:/jOX3V4Wruby2の言語仕様や改良はひとまず休憩して、周辺のgemをよりモダンにしたりhtml guiを洗練させたりとか、dbつけてruby platformと密着にさせるとか
0448デフォルトの名無しさん
2014/09/12(金) 08:19:58.62ID:vSDiSYyP0449デフォルトの名無しさん
2014/09/12(金) 09:11:38.07ID:XdsfP9FI0450デフォルトの名無しさん
2014/09/12(金) 11:07:14.97ID:RiRNscWFマジで。 心折れそうな時とかあるし。 頑張ってるけど。
0451デフォルトの名無しさん
2014/09/12(金) 11:08:21.68ID:RiRNscWFすまん、誤字
Ruby やrails やってる人はみんなそれなりに疲れてる。
0452デフォルトの名無しさん
2014/09/12(金) 12:06:47.25ID:97za8FFX0453デフォルトの名無しさん
2014/09/12(金) 18:00:08.39ID:ZWZJ98Tr0454デフォルトの名無しさん
2014/09/12(金) 18:00:33.59ID:ZWZJ98Tr0455デフォルトの名無しさん
2014/09/13(土) 11:44:06.43ID:Xnt2R8P3下記のように要素追加した場合は、途中で追加した要素まで含めてイテレートしてくれました
a=[1,2,3,4]
c=0
a.each{|i|
print i
a<<i if(c+=1)%2==0
}
↓
1234244
0456デフォルトの名無しさん
2014/09/13(土) 11:50:18.03ID:EgQD9V/20457デフォルトの名無しさん
2014/09/13(土) 12:37:57.18ID:O7s7l3Vq0458デフォルトの名無しさん
2014/09/13(土) 23:31:21.22ID:NaPTFTNe自分から作りたいものがなんもないのならRubyのことは忘れて街に出よう3連休だ
「銃を手に入れたんだけどなんでもいいので撃ってみたいですどうすればいいですか」的な目的見失った感じのは勘弁
0459デフォルトの名無しさん
2014/09/14(日) 03:17:49.08ID:HYioYToX作りたいものだの目標だの言う人間が多すぎると思うんだけど。
プログラミング言語に興味をもって何か勉強してみたいと思ったからとりあえず色々と取り組んでみて、その中でやりたいことを見つける方針じゃだめなの?
0460デフォルトの名無しさん
2014/09/14(日) 04:12:36.10ID:LAThkiswプログラミング自体が目的なら
それでいいんじゃない?
獣の喩えは適切じゃないね
0461デフォルトの名無しさん
2014/09/14(日) 06:05:30.20ID:VdLJmbOR0462デフォルトの名無しさん
2014/09/14(日) 08:28:07.47ID:VxA609sk他のは手段を目的に出来ない限りとてもじゃないけど労力に見合わない
0463デフォルトの名無しさん
2014/09/14(日) 08:37:41.07ID:3TnczO87ほぼ易しいものから難しいもの順
* 摂氏と華氏の相互変換
* 指定したディレクトリの中にあるファイル名を列挙
* 日米英仏独の現在時刻を表示
* FLAC を MP3 に変換(もちろん flac や lame など使用可)
* iTunes のストアで売れてるらしいアプリのタイトルを列挙
https://itunes.apple.com/jp/rss/topgrossingapplications/limit=10/xml
* 画像ファイル(JPEG/GIF/PNG のいずれか)の本当の拡張子を判別
* おかいものリスト(追加、編集、削除、個別表示、一覧表示、ソート等)
* エロサイトスクレイピング
0464デフォルトの名無しさん
2014/09/14(日) 09:22:02.58ID:PAZT5dFk2)マス目にあらかじめ入っている(数字)は太線で囲まれたブロックに入る数字の合計を表しています
3)太線で囲まれたブロックの中には同じ数字が入ることもあります
┏━━┳━━┳━━┳━━┯━━┳━━┓
┃(3) ┃(4) ┃(13)┃(5) │ ┃(8) ┃
┠──┣━━┫──┣━━┳━━┫──┨
┃ ┃(7) ┃ ┃(1) ┃(7) ┃ ┃
┣━━┫──┃──┣━━┫──┣━━┫
┃(11)┃ ┃ ┃(7) ┃ ┃(6) ┃
┠──┣━━┻━━┫──┣━━┻━━┫
┃ ┃(6) │ ┃ ┃(6) │ ┃
┣━━┻━━┳━━┻━━╋━━┳━━┫
┃(9) │ ┃(6) │ ┃(4) ┃(3) ┃
┣━━┳━━┻━━┳━━┻━━┫──┨
┃(4) ┃(5) │ ┃(11)│ ┃ ┃
┗━━┻━━┷━━┻━━┷━━┻━━┛
これを解くプログラムを ruby でおながいします
(たぶんずれるので等幅フォントのエディタにコピペで見てください)
0465デフォルトの名無しさん
2014/09/14(日) 10:00:09.59ID:HYioYToXエロサイトスクレイピングをしれっと入れるなよ!
0466デフォルトの名無しさん
2014/09/14(日) 11:50:34.01ID:KPgHSz1I外から渡された目的のよくわからない『課題』をやることほど、摩耗してしまうものはない
本当に興味を持てる回数は最初の1回程度なんだから、そんなものに使い潰してしまうのは大損だ
やりたいものだけやりなさい
やりたいものがないなら一旦離れなさい
パソコンを使っていれば、プログラミングできそうな機会というのは必ずやってきます
0467デフォルトの名無しさん
2014/09/14(日) 11:56:11.45ID:E5aokUpH0468デフォルトの名無しさん
2014/09/14(日) 14:27:29.68ID:eKNmfx5B自分で使うことになって改造とかもやる気が出ると思う
たとえばプログラミングするエディタを拡張する何かを作ろうとしてみたり
ネットサーフィンに便利な自分用サイトを作ってみたり
エロサイトスクレイピングしてみたり
パズルを解くようにプログラミングするお題が欲しいだけなら会津オンラインジャッジだな
(rubyじゃないけどダウンロード補助ツールを数年前に自分で書いて今も使ってるわ)Oo。.(´-`
0469デフォルトの名無しさん
2014/09/14(日) 15:53:16.12ID:HYioYToXたとえばエディタの拡張機能を作りたいと思っても、どこから始めていいかわからない場合はどうすればいいかな?
とりあえず調べるなどして他を参考にしつつって感じでいいのかな?
一応文法とかは大丈夫だと思うんだけど。。
0470デフォルトの名無しさん
2014/09/14(日) 16:12:54.97ID:VxA609skそりゃ他の人のを真似するんだよ
でもそういう特定のアプリに強く依存したものはバッドノウハウが身に付くだけだから初心者の勉強には相応しくない
0471デフォルトの名無しさん
2014/09/14(日) 16:16:57.97ID:DRyo//L50472デフォルトの名無しさん
2014/09/14(日) 16:21:10.62ID:eKNmfx5Bエディタの拡張方法を調べる必要があるしRubyが入り込む余地が少ないかも
具体的な例としては、ソースを解析する何かを作るとして、
(まずRuby関係ないところなのでめんどいが)
大抵のエディタは拡張機能で外部プログラムを呼べるようになってるから
そこからRubyに標準入力に編集中の内容を渡すようにする
それができたら初めてRubyで変数抽出とかコールツリー作るとかやりたいことをやる
解析までしなくても、全行をuniq.sortして出力するスクリプトとか作っておくとたまに使ってるわ
アウトプットは標準出力をエディタに表示するくらいしかないかも
0473デフォルトの名無しさん
2014/09/14(日) 18:57:34.47ID:VLz5e6gt遅レスになるけど、
「イテレータで列挙している間にイテレータを破壊的に操作した時の振る舞い」
の仕様は定義されておらず、動作は不定になる
これは Ruby 固有の仕様ではなく、たとえば Java のイテレータも同じ
Ruby の場合は、イテレータで定義されている each メソッドの実装によって、
破壊的操作(たとえば要素の追加や削除)を含めて列挙したり列挙しなかったりする
だから列挙中での破壊的操作はコードの可読性を大きく損ねるから、避けるべき
0474デフォルトの名無しさん
2014/09/14(日) 21:25:52.32ID:HYioYToX>>472
なるほど…言語による向き/不向きの問題でもあるのかな。
自分でやってみたいと考えたのはTwitter関係だとかgmailをいじるだとか、そこらへんだけどこっちもやはり初心者には厳しいか。
0475デフォルトの名無しさん
2014/09/14(日) 21:36:25.69ID:lfdT4fPA個人的にはイテレーション中はfreezeする仕様でも良かったと思う。
0476デフォルトの名無しさん
2014/09/14(日) 21:38:11.09ID:VxA609sk0477デフォルトの名無しさん
2014/09/15(月) 23:43:37.52ID:qXx696JRp array = "1日2時間3分4秒".split(/(\d+?[日|時間|分|秒])/)
を行うと、
["", "1日", "", "2時", "間", "3分", "", "4秒"]
になり、1.""が作られてしまう、2.「時間」が分解されてしまうため悩んでいます
["1日", "2時間", "3分", "4秒"]
とするにはどう修正すればよいでしょうか?
おねがいします
0478デフォルトの名無しさん
2014/09/16(火) 00:09:09.95ID:rwPnUpsn[日|時間|分|秒]は、日時間分秒|のどれかの文字ってことでしょ。グルーピングは丸括弧で。
ただし、splitはそれも結果に入ってくるんだっけ。数値以外の繰り返しじゃダメなの。
0479デフォルトの名無しさん
2014/09/16(火) 00:20:02.61ID:+Ut5bl5+$ irb
irb(main):001:0> "1日2時間3分4秒" =~ /(¥d+)日(¥d+)時間(¥d+)分(¥d+)秒/
=> 0
irb(main):002:0> [$1 + '日', $2 + '時間', $3 + '分', $4 + '秒']
=> ["1日", "2時間", "3分", "4秒"]
irb(main):003:0>
0480デフォルトの名無しさん
2014/09/16(火) 01:16:09.80ID:ZVUC/mC5>>478,479さん、教えていただきありがとうございました
splitは決められた記号とかでStringを分割するためのメソッドですよね
こういうのはそのまま正規表現で書かなきゃいけないのに、splitが万能な思い込みがあって勘違いをしてました
アドバイスやGoogle先生を参考に書きなおして、なんとか上手く行きました
> p "1日2時間3分4秒".scan(/((\d+?)(日|時間|分|秒))/).map { |s| s[0] }
["1日", "2時間", "3分", "4秒"]
教えて下さりありがとうございました
0481デフォルトの名無しさん
2014/09/16(火) 01:44:31.07ID:h14rBBnhOK林檎厨は氏ね
\と¥の区別のつかないお可哀想な林檎厨は氏ね
端末が悪いんだけどさ
0482デフォルトの名無しさん
2014/09/16(火) 12:28:01.31ID:hd4XZYurfoo = "bar"
foo = "hoge"
のようにするとfooにbarが代入された後それをhogeで上書きすることになりますが、fooにbarを代入した後fooの中身のbarをhogeの変数名にして、
bar = "hoge"
という変数が作りたいです。
0483デフォルトの名無しさん
2014/09/16(火) 12:35:51.91ID:4hbcghNrp array1 = "1日2時間3分4秒".split(/(?=\d+(?:日|時間|分|秒))/) #数字+単位の直前で分割
p array2 = "1日2時間3分4秒".split(/(?<=日|時間|分|秒)/) #単位の直後で分割
p array3 = "1日2時間3分4秒".scan(/\d+(?:日|時間|分|秒)/) #数字+単位を抽出
#「正規表現リテラル =~ 文字列」の場合だけ作動する名前つきグルーピングをローカル変数に設定する微妙な機能
/(?<day>\d+日)(?<hour>\d+時間)(?<min>\d+分)(?<sec>\d+秒)/ =~ "1日2時間3分4秒"
p [day,hour,min,sec]
p last_match
0484デフォルトの名無しさん
2014/09/16(火) 12:42:50.87ID:4hbcghNr向くも向かないも
関数型っぽい書き方をするってだけの話なんで
簡潔に記述できるのならそれでいいじゃない
本物の関数型と違って
Cのメソッドだけですむなら速くなったり
余計にオブジェクト生成したりして逆に遅くなったりするかもしれないけど
0485デフォルトの名無しさん
2014/09/16(火) 21:54:00.55ID:rOfVI/V/---
[d1, d2]
---
- x1
- x2
...
names : [test, test2]
emails: {main: [email protected], sub: [email protected]}
↓のスクリプトでパース使用としたところ
require 'yaml'
File.open('sample.yml') do |io|
YAML.load_documents(io) do |d|
p d
end
end
↓のエラーが出ました。
/Users/bacchi/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/psych.rb:373:in `parse': (<unknown>): did not find expected <document start> at line 1 column 1 (Psych::SyntaxError)
from /Users/bacchi/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/psych.rb:373:in `parse_stream'
from /Users/bacchi/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/psych.rb:456:in `load_stream'
from /Users/bacchi/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/psych/deprecated.rb:29:in `load_documents'
from parse.rb:4:in `block in <main>'
from parse.rb:3:in `open'
from parse.rb:3:in `<main>'
「...」をコメントアウトしたところ、きちんとパースできたのですがなぜ、「...」が入るとエラーが発生するか全くわかりません。
どなたかご存知の方がいらっしゃればぜひ教えていただきたく。。
環境ですが、OSはOS X 10.9、rubyのバージョンは2.1.2p95です。
よろしくお願いします。
0486デフォルトの名無しさん
2014/09/16(火) 22:32:15.86ID:UfZMMld+0487デフォルトの名無しさん
2014/09/16(火) 22:40:56.77ID:0yIjZIb5>>475は副作用を使わないのが関数型だと言っているから>>476の突っ込みは妥当
コレクション操作にラムダ使って宣言的に書いたりするのは
今時の言語ではRubyに限らず全く珍しくないし
0488デフォルトの名無しさん
2014/09/16(火) 22:55:01.92ID:qqfxAbb8...以降は無視される と思ってるのかもしれんがたぶん違う
あくまで1ドキュメント読み込むYAML.loadの場合はドキュメントの終了までしか読み込まないから無視されてるように見えるだけ
load_streamはストリーム全体(複数ドキュメント)を読み込む
...はそのドキュメントが終了したことを示す記号
なので直後にはドキュメント開始の記述がないとパースエラーになる
ドキュメントの開始は(%YAMLとかのディレクティブの後に)---で、その間に許されてる記述は空行か...だけっぽいね
0489デフォルトの名無しさん
2014/09/16(火) 23:08:20.53ID:+Ut5bl5+>>>476の突っ込みは妥当
もしも「Lisp は(関数型言語ではなく)手続き型言語である」という
仮説が正しければ、妥当だね
実際、世の中には「純粋関数型言語にあらずんば関数型言語にあらず」という、
いわゆる「ハスケラ」という人達がいて、彼らはそう主張している
おそらく >>476 や >>487 はハスケラ症の患者さんなんだと思われる
>366 名前: デフォルトの名無しさん Mail: sage 投稿日: 2011/10/26(水) 12:25:43.06
>>>365
>それはハスケラ特有の症例で、心の病の一つ
>
>ハスケルという言語を使っていると、世の中のあらゆる事柄すべてが
>ハスケルを中心に廻っているように見えるらしい
>従って、あらゆる関数型言語は静的実行かつ静的型付けでなければならないし、
>遅延評価が常識であり、一切の副作用は認めようとしない
>
>ハスケラにとって関数型言語とはハスケルのことであり、
>その窓から見える世界が彼らのすべて
あとツッコミを入れると、
> コレクション操作にラムダ使って宣言的に書いたりするのは
> 今時の言語ではRubyに限らず全く珍しくないし
一般にRuby コミュニティで「ラムダ」とは、組み込み関数の Kernel#lambda { .... }、いわゆる関数オブジェクトを指す
そしてコレクション操作だと「ブロックを使って宣言的に書く」というふうに表現する
ブロックはラムダ式の構文糖という些細な工夫でしかないけれど、
ブロックがあるおかげで関数型プログラミングのコードを(ブロック構文が無い言語と比較すると)簡潔に書ける
(逆にブロックを使わず明示的にラムダ lambda { ... } が必要になるケースはほとんどない)
これもまた、Ruby が(他のスクリプト言語と比較して)関数型プログラミングに適しているという理由の一つになる
0490デフォルトの名無しさん
2014/09/16(火) 23:52:05.60ID:rOfVI/V/... の後に --- を入れたところ、エラーは発生しませんでした!
>>488
YAMLファイルを下記のようにして、スクリプトをYAML.load_fileで処理を行ったところ
... の部分まで評価されました!
- d1
- d2
- d3
...
- d4
お二人共ありがとうございました!
すごく勉強になりました!
0491デフォルトの名無しさん
2014/09/17(水) 02:00:04.30ID:B5vXdL5Pまたお前か。Hash を使えば?
foo = Hash.new
foo["bar"] = "hoge"
または、foo = {"bar" => "hoge"}
barがSymbol なら、foo = {bar: "hoge"}
bar = :hoge
Symbolとは、識別子に使うラベルをオブジェクトにしたもの
0492デフォルトの名無しさん
2014/09/17(水) 03:43:25.15ID:OF7t35vf0493デフォルトの名無しさん
2014/09/17(水) 17:15:09.22ID:or6PO8CMhttp://awabi.2ch.net/test/read.cgi/news4plusd/1410895382/
0494デフォルトの名無しさん
2014/09/18(木) 00:44:22.54ID:mtGMypIE>>483
> p array3 = "1日2時間3分4秒".scan(/\d+(?:日|時間|分|秒)/) #数字+単位を抽出
求めていたのはまさにこれです!
ありがとうございます!
「?:」の書き方はググってもなかなか理解できませんでしたが、すごく強力ですね
他の書き方も含め、たいへん勉強になりました
アドバイスしていただきありがとうございました
0495デフォルトの名無しさん
2014/09/18(木) 21:27:04.44ID:im6XLLWp>> またお前か。
?多分違う人だと思います。
それはさておき、回答有難うございます。
ハッシュでやってみます。
0496デフォルトの名無しさん
2014/09/19(金) 01:35:30.84ID:Y6OdBODfいったい何がやりたかったのか...?
0497デフォルトの名無しさん
2014/09/19(金) 02:31:51.15ID:HyAusHv80498デフォルトの名無しさん
2014/09/19(金) 09:11:37.59ID:/ZlJUhOE逆ポーランド記法に変換したい
0499デフォルトの名無しさん
2014/09/19(金) 09:19:12.31ID:OJCIiOtw0500デフォルトの名無しさん
2014/09/19(金) 10:50:32.58ID:SNqHawTKヒント:自演
0501デフォルトの名無しさん
2014/09/19(金) 12:22:00.17ID:IEBJm2pX>Symbolとは、識別子に使うラベルをオブジェクトにしたもの
の説明は、合っているのか?
0502デフォルトの名無しさん
2014/09/19(金) 12:32:39.90ID:9nFtEcDJfoo = {:bar => "hoge"}
でハマる
0503デフォルトの名無しさん
2014/09/19(金) 20:32:12.22ID:PiEEbsAh本格的にやるならRacc使うのがいいかも
0504デフォルトの名無しさん
2014/09/19(金) 23:55:28.02ID:T5wmPk5Ihttp://ideone.com/CWP5Vg
0505デフォルトの名無しさん
2014/09/20(土) 08:01:45.32ID:2AptYtlcありがとうございます!
0506デフォルトの名無しさん
2014/09/20(土) 08:12:13.25ID:QLH+ZR2V5+4-3 この式なら
543-+ なのか。
54+3- ずっとこうだと思ってた・・・///
0507デフォルトの名無しさん
2014/09/20(土) 08:44:51.69ID:p579UTgtが正しい
0508デフォルトの名無しさん
2014/09/20(土) 09:39:56.12ID:+CrzR0fGちゃんと優先度つけたうえで直してみた
http://ideone.com/u8Ebfn
0509デフォルトの名無しさん
2014/09/20(土) 10:37:56.97ID:F4RvXBbTString FOO = "foo";
のように定数を作ってまとめておく、とかやってたんですが、Ruby の場合は Symbol 使ってればいちいち定数を定義したりはしない、という認識で合ってますか?
それとも
FOO = :foo
みたいな感じで Symbol も複数箇所で使うなら定数化しておいたほうが良かったりしますか?
0510デフォルトの名無しさん
2014/09/20(土) 10:52:54.90ID:+CrzR0fG他言語でも定義しておく理由って変更があったとき修正箇所を少なくするためでしょ
シンボルはC言語のenumや#defineで作ったラベル名みたいな役割
その場合はその値に意味はないので定義しておく必要はない
と思ってるけどどうなんでしょ
0511デフォルトの名無しさん
2014/09/20(土) 11:08:48.42ID:yzKVnral値が同じことは保証されてる?
0512デフォルトの名無しさん
2014/09/20(土) 11:15:01.34ID:w39e/cxTされてる
0513デフォルトの名無しさん
2014/09/20(土) 11:19:07.92ID:Fiyj9EA+参考書や解説で言わないんだろうか
そんな参考書や解説サイトは捨ててしまえ窓開けてポイだ
>>509
Rubyは基本すべてオブジェクトであり、内部的オブジェクト置き場に厳然として「置か」れていて「動か」ない
で、すべての変数はオブジェクトにぺたんと貼られたただのラベルだ
もし「変数は箱のようなもので…」とか言ってるRubyの解説があったらいますぐ燃やせ
で、オブジェクト自体は移動されず、変数名変更は単にラベルの追加なので、
var1 = "foo"
CONST = var1
とやっても文字列オブジェクトが2つになったりはしない。"var"という固定のオブジェクトにラベルが2枚貼られるだけ
irb> var1 = "foo"
irb> p var1.object_id
-596605568
irb> CONST = var1
irb> p CONST.object_id
-596605568 # 一緒
irb> p CONST
"foo"
つまり、いちどどっかでオブジェクトを作った場合、それに参照可能なスコープの変数がついている限り、
それをどこから呼んでも消えたりはしない
つまり、スコープに気をつけている限り、定数で「固定化」させておく必要がない
じゃあなんで定数があるのかというとクラス内外からCLASS::CONSTのように大文字で呼べるとカッコイイからだ!(わりとマジ)
シンボルはちょっと特殊で、呼び名とオブジェクトIDがひとまとめになってる
ハッシュ入り配列とか、同じ見かけでオブジェクトIDの違う文字列を何百個も生成するのは無駄っぽい気がして蕁麻疹が出るような人が使う
[{"title" => "BOOK1", "price" => 1200}, {"title" => "BOOK2", "price" => 800}, ...]
だと "title" という文字列オブジェクトが配列要素の数だけ生成されてしまうので
[{:title => "BOOK1", :price => 1200}, {:title => "BOOK2", :price => 800}, ...]
とキーをシンボルにすると「タイトル」に関してはオブジェクトが1個で済む、みたいな話
0514デフォルトの名無しさん
2014/09/20(土) 11:49:12.14ID:GbFNl7YA0515デフォルトの名無しさん
2014/09/20(土) 22:47:50.29ID:lCrKyNEmfoo='bar'
じゃなくて
foo='@bar'
なら
eval("#{foo}='hoge'")
p @bar #=> "hoge"
0516デフォルトの名無しさん
2014/09/20(土) 23:31:15.19ID:Om5aQ1210517デフォルトの名無しさん
2014/09/20(土) 23:33:09.44ID:U6pDraTi>[{"title" => "BOOK1", "price" => 1200},
>{"title" => "BOOK2", "price" => 800}, ...]
>だと "title" という文字列オブジェクトが、
>配列要素の数だけ生成されてしまうので
こんな非効率なことをするかな?
もし本当なら、シンボルを使わないと大変なことになる!
0518デフォルトの名無しさん
2014/09/20(土) 23:46:46.17ID:U6pDraTiたのしいRuby、第4版、2013
この本を買って、20時間で十分できるようになる
0519デフォルトの名無しさん
2014/09/21(日) 00:11:57.30ID:GWO0XyTsありがと。
0520デフォルトの名無しさん
2014/09/21(日) 00:27:09.27ID:WGiJkvuD実用上は問題はない
こんな微小な文字列の保持数が問題になるような規模のデータをデータベースじゃなくコレクションで表現しようとするのなら、
文字列以外の部分、検索とか列挙とかそのへんが先に破綻する
まさかと思うがリテラルで書くわけではない
0521デフォルトの名無しさん
2014/09/21(日) 06:37:38.36ID:WGiJkvuD0522デフォルトの名無しさん
2014/09/21(日) 19:57:12.73ID:htYINMDvすくなくとも最初だけはリアル書籍が無難だと思う
0523デフォルトの名無しさん
2014/09/21(日) 20:42:01.34ID:0KJk1NShegoprowl:61:in `initialize': undefined method `key?' for ["Application", "Twitter"]:Array (NoMethodError)
from egoprowl:685:in `new'
from egoprowl:685:in `block in <main>'
from egoprowl:684:in `each'
from egoprowl:684:in `<main>'
というエラーが出て使えません…
yml以外は弄らずに実行したんですが、Twitterの仕様変更で使えなくなったのか、
何か弄らないと使えないものなのか、分かりません
環境は Rumix(1.9.3) Windowsです。。
0524デフォルトの名無しさん
2014/09/21(日) 22:11:57.50ID:AJStoUCj問題のコードは次のとおりです。
require 'rubygems'
require 'RMagick' #←この行が問題
print "Content-type: image/gif\n\n"
open("hoge.gif", "rb"){|hoge| print(hoge.read) }
サーバにsshで入ってコマンドラインで実行する分には特に問題無く動くのですが、HTTP経由で呼び出すと動きません。
どういった原因が考えられるでしょうか。お願いします。
0525デフォルトの名無しさん
2014/09/21(日) 22:27:22.07ID:POp695WMシェルで環境変数消してやってみたら。
0526デフォルトの名無しさん
2014/09/21(日) 22:50:30.28ID:AJStoUCjありがとうございます。
環境変数GEM_HOMEが正しく設定されていなかったようです。
0527デフォルトの名無しさん
2014/09/21(日) 22:53:37.94ID:9m2mBLrL以下のCGIプログラムを実行してみる
print "Content-type: text/plain¥n¥n"
p $LOAD_PATH
0528デフォルトの名無しさん
2014/09/21(日) 22:54:17.64ID:q4aLc9F7いじった YAML がたぶんおかしい
例えばハッシュを期待してるところに配列指定してるとか
require 'yaml'
p YAML.load_file(configfile)
とかして調べてみて
0529527
2014/09/21(日) 23:14:28.45ID:9m2mBLrL0530デフォルトの名無しさん
2014/09/22(月) 15:16:56.38ID:KNrUDz/6どういうタイミングで統合開発環境を導入するのが適切でしょうか
0531デフォルトの名無しさん
2014/09/22(月) 15:19:06.99ID:xorcTHrm0532デフォルトの名無しさん
2014/09/22(月) 15:57:56.64ID:1Qvd4ihP0533デフォルトの名無しさん
2014/09/23(火) 03:07:12.39ID:BCdHmEghありがとうございます!
何故か一文字消えてました…
0534デフォルトの名無しさん
2014/09/23(火) 17:51:19.68ID:miRT+bCiRuby-2.1.2-p95 Microsoft Installer Package(2014-5-08 revision 45877改)入れて
gem install pry でインストールしたんだけど起動しようとすると
win32consoleのバージョンがおかしいとかエラーが出て起動できない
0535デフォルトの名無しさん
2014/09/23(火) 17:53:51.18ID:R40YBrw8書き込みありがとうございます
次の方どうぞ
0536デフォルトの名無しさん
2014/09/24(水) 02:14:09.44ID:Z6uf6PR9Ruby Installerも入れて試してみたらこっちはpryが動いた
0537デフォルトの名無しさん
2014/09/24(水) 11:11:32.11ID:JaI0d9IIそもそもそんなことしない?
0538デフォルトの名無しさん
2014/09/24(水) 11:13:26.84ID:y/ivUGFr0539デフォルトの名無しさん
2014/09/24(水) 19:32:08.36ID:D01/L6XMマニュアルにでっかい字で書いとく
めちゃくちゃ一般的には、trueオブジェクトやfalseオブジェクトとの内部比較分岐はしてはいけない
× if @var == true then ...
○ if @var then ...
nil のときと false のときで動作変えたいとか nil のときと [] のときで動作変えたいとかそんなことは「してはいけない」し
指定されたオブジェクト以外をユーザーが代入するかもしれないとかはいちいち考えてはいけない
例外が出て落ちれば充分
例外が出ずに終了すれば及第点
変なオブジェクトで変な動作になっても自己責任
実際問題として、モックのようなオブジェクトを使いたい場合がよくある
「たかが」変数や引数を綿密なクラスチェックでがんじがらめに縛られるとたいへん不便
自分の敷いたレール以外を許さないのならJavaでやれやカスが、とか文句言いたくなる
0540デフォルトの名無しさん
2014/09/24(水) 21:42:52.25ID:zzs5VNXT分かりました
0541デフォルトの名無しさん
2014/09/26(金) 08:10:51.24ID:IheVza1r0542デフォルトの名無しさん
2014/09/27(土) 02:38:41.07ID:k4QoHySE0543デフォルトの名無しさん
2014/09/27(土) 11:28:13.77ID:wa8RbSiE>自分の敷いたレール以外を許さないのならJavaでやれやカスが、とか文句言いたくなる
これはおかしい。rubyでは型よりも命名規則でレールを敷くことが多いが
どちらが良いかはどのようなフレームワークを作ろうとしているかによる。
0544デフォルトの名無しさん
2014/09/29(月) 12:39:09.55ID:1eoAu9jp配列とかハッシュ内でfalseも使ってコードかいてるとハマるって程じゃないけど
>>539のいってるような
@var == false とか書きたくなるよ
0545デフォルトの名無しさん
2014/09/29(月) 12:47:07.12ID:sAVGRibIJavaScriptの用語で言うところの「falsy valueである」ってことを言いたいんだろうけど。
この程度のことも正確に表現できない奴が「闇」とかちゃんちゃらおかしい。
0546デフォルトの名無しさん
2014/09/29(月) 12:52:57.33ID:PkV280SHo 偽
どうせ負論理か何かと間違えたんだろ
0547デフォルトの名無しさん
2014/09/29(月) 13:46:53.16ID:mH0hN6se普段使わないからnilと混ざることもなくはまったことがない
0548デフォルトの名無しさん
2014/09/29(月) 14:54:58.84ID:GOwFfu+yfalseは偽であることを明確にしたい場合に使っているな
それとnil falseを区別したい場合はobj.nil?があるんだから
それ使えばいいんじゃないかな
0549デフォルトの名無しさん
2014/09/29(月) 19:03:52.12ID:0qyZ7Y3Q0550デフォルトの名無しさん
2014/09/29(月) 19:52:46.04ID:ir6Np6gbメソッドの戻り値として使う
foo? の戻り値が true か false みたいな感じ
yardとかで説明で書かれるところのBoolean
もちろんnilとfalse以外のオブジェクトは全部真だから、理屈上はfoo自体の結果を返してもよい
ただ、これやるとマニュアル書くのめんどいしget_foo_valueみたいなのの代わりに使うアホが出るしなによりirbでめっつァ不便
良い例:
irb> obj.foo?
true
悪い例:
irb> obj.foo?
#<MyFooObject:0xb7c0dcc8 @val1=#<AnotherObject ...>
@val2=なんか長いすっごい長いデータ @content=[] @userdata1=nil @userdata2=nil @userdata3=nil >
「def foo?; !!@foo; end」って書くのカッコ悪いとかいうくだらない理由で
@fooを直接返しちゃうダメな感じの製作者がいるが真似してはいけません
0551デフォルトの名無しさん
2014/09/29(月) 20:42:29.30ID:WcW3+aLQ1.nonzero?
0552デフォルトの名無しさん
2014/09/29(月) 22:56:25.00ID:Kh9spxWxしたみたいにすると、CSVに必要な行がすべてメモリに乗るようでめっちゃスワップします。
少しずつ書き込む方法ってないでしょうか?
CSV.open(filename, 'w') do |line|
menbers.each{|menber|
line << menber.to_array
}
0553デフォルトの名無しさん
2014/09/30(火) 00:56:07.65ID:Gbi7LNU30554デフォルトの名無しさん
2014/09/30(火) 02:17:48.38ID:8M9GxsYT@array = Array.new
と宣言してある外部クラスをインスタンス化して
ins.array[0]=10 等とアクセスしようとしてるのですが、
undefined method `[]' for nil:NilClass (NoMethodError)と出ます。
何が間違っているのでしょうか?
0555デフォルトの名無しさん
2014/09/30(火) 02:30:15.47ID:Ogo7WMyz0556デフォルトの名無しさん
2014/09/30(火) 02:56:18.12ID:4TmfBnqZ一般的にファイルは、一度に全部を読み込まない
一度に全部を読み込むと、
クラッカーに大きいファイルを送りつけられて、
システムダウンさせられてしまう
4KBなどの小さいバッファを使って、
ファイルから小刻みに読み込みながら処理する
動画や音楽の再生などはそう
IOオブジェクトの、read(size)で読み込むサイズを指定できる
他にも、1文字ずつ、1byteずつ、1行ずつ処理するとか
0557デフォルトの名無しさん
2014/09/30(火) 03:14:45.25ID:8M9GxsYTclass ClassA
@array = Array.new
attr_accessor:array
end
instance = ClassA.new()
instance.array[0]=10
puts(instance.array[0])
とアクセスを確認するだけの単純なものです
同じクラスの以下のコードは普通に表示されるのですが
array2=Array.new
array2[0]=10
puts(array2[0])
0559デフォルトの名無しさん
2014/09/30(火) 03:46:11.59ID:1IRD/DgBこの辺
ハッシュでfalseとnilを使い分けてる
こういうのを真似して自分で関数作ったりすると引数とったメソッド野中では
こんなことになりかねない
if @var.nil?
nilの処理
elsif @var
trueの処理
else
falseの処理
end
さらにfalseを優先して書きたい場合こうなっててもおかしくない
if @var == false
falseの処理
else
それ以外
end
こういうのがあるから、未定義だったらnilなのにデフォルトはfalseですとかやってるメソッドは
その引数がnilとfalseで同じ挙動なのか違うのか確証がない
同じだったらそもそもfalse使うなって思うけど
0560デフォルトの名無しさん
2014/09/30(火) 03:59:49.80ID:Ogo7WMyzhttp://ref.xaio.jp/ruby/classes/module/attr_accessor
これ見りゃわからないかな?
0561デフォルトの名無しさん
2014/09/30(火) 05:09:52.18ID:LJ2oQclURubyにはフィールドはない
あなたにそれをフィールドだと教えた悪い参考書や参考サイトを使ってるようだから全部捨てろ
とりあえず話はそれから
0562デフォルトの名無しさん
2014/09/30(火) 05:15:08.37ID:4TmfBnqZ>@array = Array.new
変数名に、arrayなどの既存の名前を使わない方がよい
arr に変えるよ
@arr = Array.new
Array.newだけなら、要素数0
p arr で表示してみ
@arr = Array.new(3)
これなら、要素数3
p arr で表示してみ
Array.new を参照
0563デフォルトの名無しさん
2014/09/30(火) 06:08:26.11ID:3C5m2+5+members のサイズはどのくらい? 超巨大だったりしない?
0564デフォルトの名無しさん
2014/09/30(火) 07:08:13.41ID:uzsgHcDmclass ClassA
@array = Array.new # <- ここが間違い
これだと @array は「ClassA」というオブジェクトのインスタンス変数になる
君が欲しいのは「ClassAのインスタンス」というオブジェクトのインスタンス変数だろう
class ClassA
def initialize
@array = Array.new
end
とすれば解決するはず
0565デフォルトの名無しさん
2014/09/30(火) 07:35:27.09ID:Gbi7LNU30566デフォルトの名無しさん
2014/09/30(火) 10:08:03.27ID:UKkIwkr4あれ?ってなって確かめたら上のレスの通りだった
ttp://ideone.com/9AXpGD
スコープに注意
0567デフォルトの名無しさん
2014/09/30(火) 14:58:07.85ID:8M9GxsYTああ、なるほど上手く動きました。
rubyではインスタンス変数として使うなら
def initializeに書いたりする必要があるんですね。
質問なのですが、「ClassA」というオブジェクトのインスタンス変数、
というのはクラス変数とどう違うのでしょうか?
0568デフォルトの名無しさん
2014/09/30(火) 15:01:48.64ID:JjKI4EMd0569デフォルトの名無しさん
2014/09/30(火) 15:19:36.61ID:KHlaSvzjttp://docs.ruby-lang.org/ja/2.1.0/doc/spec=2fvariables.html#class
>クラス変数はクラス自身のインスタンス変数とは以下の点で異なります。
>・サブクラスから参照/代入が可能
>・インスタンスメソッドから参照/代入が可能
0570デフォルトの名無しさん
2014/09/30(火) 15:36:45.31ID:8M9GxsYT参照範囲で使い分ける感じですかね。
教えていただきありがとうございました。
0571デフォルトの名無しさん
2014/09/30(火) 20:39:00.96ID:JU1j3mFEこういうところに大人がもしも未だに混ざってるならオワコンですよ
0572デフォルトの名無しさん
2014/09/30(火) 21:13:32.58ID:m29MN2Ahネットに限らず情報というものは
相手の肩書にとらわれず
内容を各々判断するものだ
それが出来なら朝日新聞でも読んでればいい
0573デフォルトの名無しさん
2014/10/01(水) 00:41:57.59ID:zzunZpfz0574デフォルトの名無しさん
2014/10/01(水) 11:27:38.11ID:OJSGbkdS0575デフォルトの名無しさん
2014/10/02(木) 19:02:32.09ID:EmIzxk1Aの部分で`exist?': can't convert nil into String (TypeError)
というエラーが出てしまうのですが、解決方法がわかりません。
ubuntu14.04
ruby1.9.3p484です
0576デフォルトの名無しさん
2014/10/02(木) 19:26:18.52ID:Nbqny9/i0577デフォルトの名無しさん
2014/10/03(金) 00:22:46.82ID:8ZCfX4zK皆無をストリング(TypeError)に変換することができません。
0578デフォルトの名無しさん
2014/10/03(金) 00:29:30.66ID:i0V0nK+8>の部分で`exist?': can't convert nil into String (TypeError)
nil型を、String型に変換できない(型エラー)のかな?
@tempに値が何も入っていないのでは?
File.delete(@temp) if File.exist?(@temp)
この行の前に、
p @temp してみ。nilになってる?
Rubyを全然、わかっていないのなら、
たのしいRuby、第4版、2013
を読んでから、プログラミングした方が速い
0579デフォルトの名無しさん
2014/10/03(金) 07:22:21.94ID:d+M1zPQORubyを全然わかっていないのはどっちだよ
0580デフォルトの名無しさん
2014/10/03(金) 09:37:53.93ID:ncSYSBhRメソッドfuga内から、
Hogeの名前を取得する方法がわからず、
教えてください。
class Hoge
class << self
def fuga
....
end
end
end
0581デフォルトの名無しさん
2014/10/03(金) 12:18:43.89ID:zwNCTHT6ハハ
(゚ω゚)
/ \
((⊂ ) ノ\つ))
(_⌒ヽ
ヽ ヘ |
εニ三 ノノ J
0582デフォルトの名無しさん
2014/10/03(金) 12:20:42.30ID:zwNCTHT6フムフムヌクヌクアプアアみたいな奴だな
0583デフォルトの名無しさん
2014/10/03(金) 12:36:09.34ID:iohOSMY+exist?は、引数に与えたファイルパス文字列のファイル名が存在するかどうか調べるメソッドだよね
で、この行の中でエラー文の“string”に関係しそうなのは、パス文字列のつもりで与えた引数の@temp
なのでこの場合は、引数@tempの中身がうっかり“nil”とやらになってんじゃないか?と疑い、前出の通り“p @temp”を入れて調べるのがまず第一
“type error”とか“argment error”とか出てきたら、とりあえずその行の引数とか変数調べてみればいいよ
0584デフォルトの名無しさん
2014/10/03(金) 18:40:26.63ID:LkYraUGE文字列として取得したいならば self.to_s とか to_s とか
0585デフォルトの名無しさん
2014/10/03(金) 22:12:19.49ID:x4vX3Y5M>> 584
ありがとうございます。
0586デフォルトの名無しさん
2014/10/04(土) 11:53:38.36ID:pzA2eR9p0587デフォルトの名無しさん
2014/10/04(土) 20:40:54.60ID:M66Mgi8tプログラミングには、論理的な思考が必要
0588デフォルトの名無しさん
2014/10/05(日) 00:41:36.89ID:QzEV7fmk>>563
返信遅れて申し訳ない。
メモリの挙動を監視するとCSVが一発で読み込まれてるようにしか思えなかった。
上の例のmenber変数はかなり巨大なハッシュだけどCSVに入れる前にARRAYにしておいても
CSV書き込みでとてつもないメモリを消費する。
複数回に分けて追記すればいいのかな
0589デフォルトの名無しさん
2014/10/05(日) 00:45:06.70ID:QzEV7fmk最初にmenber全部ARRAYにしてからCSVに書き込もうとするとメモリがやばいので
to_arrayを定義して逐次的にCSVに書き込んでます
0590デフォルトの名無しさん
2014/10/05(日) 00:55:17.19ID:QzEV7fmkCSVが一発で読み込まれているのではなく。
CSVの書き込み用バッファが4K確保されて書き込まれて、次の4kに進むのではなく
一気に全部確保されている気がする。
このため書き込みたい内容を一度メモリ上ですべて確保してる気がする
0591デフォルトの名無しさん
2014/10/05(日) 01:31:33.72ID:IUlRSCDiお前わざとやってるだろw
0592デフォルトの名無しさん
2014/10/05(日) 01:59:12.81ID:MFOvIangmenbersのクラスも分からんし
menbers.eachかmenber.to_arrayが原因じゃねーの?
まあ最大のバグはmenberのスペルなんですけどね
0593デフォルトの名無しさん
2014/10/05(日) 13:26:52.71ID:sdXqIouw0594デフォルトの名無しさん
2014/10/05(日) 13:28:42.98ID:FZuSwsnO0595デフォルトの名無しさん
2014/10/05(日) 14:49:48.27ID:QzEV7fmk0596デフォルトの名無しさん
2014/10/05(日) 17:01:45.15ID:XrIDkgzN0597デフォルトの名無しさん
2014/10/06(月) 23:26:34.77ID:OEPOtQ0D今日やさしいRuby という本を買ってきて、まずRubyのバージョンを確認しろという指示があった
具体的には、「macを使っている人は、まずコンソールを起動します。コンソールを起動するには、Finderからターミナルを選んでください。rubyのバージョンを調べるには、ruby-v
と入力し、必要なオプションを加えます」と書いてある。
この ruby-v と入力し必要なオプションを加えます というものがどういう動作かわからない。
とりあえず、このメモ帳みたいなターミナルの画面の続きに、ruby -v と入力してenterキーを押すと、
-bash: -v: command not found と 表示されるだけ。本来ならRubyのバージョン情報が出てくるらしいんだが、何が間違っているのだろうか?コンソールに入力する、という文章も
あるが、コンソールと思われるものを開いても、そもそも何かを入力できる箇所がなく、ログなどがずらっと並んでいるだけ。
macは標準のコマンドとしてRubyが利用できるとのことなので、Rubyのインストールという行為はやっていない。
0598デフォルトの名無しさん
2014/10/06(月) 23:47:18.60ID:OrurmOLOターミナル起動して bash のプロンプト($ マーク)の右に ruby -v って入力して enter すると
$ ruby -v
ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin13]
みたいに表示されるはず
うまくいかなければスクリーンショットを貼ってくれると話が早い
0599デフォルトの名無しさん
2014/10/07(火) 00:02:31.37ID:mh2mjaxDちなみに「ログなどがずらっと並んでいるだけ」のやつはその本でいうところの「コンソール」とは違うから気にしなくていい
多分全部「ターミナル」と読み替えていい
0600デフォルトの名無しさん
2014/10/07(火) 00:02:38.09ID:A7b9XBsz実はプログラマにはWindowsの方がフレンドリー
コンソールやターミナル、とか用語が安定しなくて迷ったりしないですむ
0601デフォルトの名無しさん
2014/10/07(火) 00:13:52.75ID:dLpFFXt+Macだと最初からruby入ってる
0602デフォルトの名無しさん
2014/10/07(火) 00:54:44.80ID:OE9FEeTe聞いたことない
0603デフォルトの名無しさん
2014/10/07(火) 01:12:14.80ID:YQhu9gFf0604デフォルトの名無しさん
2014/10/07(火) 01:13:32.04ID:YQhu9gFf0605デフォルトの名無しさん
2014/10/07(火) 07:08:20.75ID:TyujhZt10606デフォルトの名無しさん
2014/10/07(火) 07:30:12.70ID:5iNhE6Cu0607デフォルトの名無しさん
2014/10/07(火) 09:01:44.10ID:cA1BC5is買って来たやさしいRubyの版数
使っているOS XのVersion
X codeのVersion
commandline toolsのインストールの有無
を書け。
まずはそれからだ。
その本を使うためにhomebrewとrbenvを入れる必要が出るだろうけどな。
0608デフォルトの名無しさん
2014/10/07(火) 09:06:59.09ID:Jaq4UASp-vってコマンドを実行したいって思われてるな。
rubyの前に、ls、cd、catという基本的なコマンドを使う練習から始めてみてはどうだろう。
0609デフォルトの名無しさん
2014/10/07(火) 10:25:54.57ID:JVM430wVhttp://dotinstall.com/lessons/basic_unix
コマンドの勉強ならこのサイトがいいんじゃないかな。
動画で説明してるからわかりやすいと思う。
0610デフォルトの名無しさん
2014/10/07(火) 19:10:46.04ID:RfEYvcppどうかを簡単にチェックする方法を教えてください
0611デフォルトの名無しさん
2014/10/07(火) 19:51:50.70ID:TyujhZt1Railsスレとマルチすんな
0612デフォルトの名無しさん
2014/10/07(火) 20:03:27.32ID:Lth77BfJヌケヌケと答えてしまうところだった
0613デフォルトの名無しさん
2014/10/07(火) 22:12:43.85ID:KzNWKz7K0614デフォルトの名無しさん
2014/10/07(火) 22:21:38.40ID:lactWcAJ0615デフォルトの名無しさん
2014/10/07(火) 22:38:55.76ID:BlA3KCzr0616デフォルトの名無しさん
2014/10/08(水) 12:51:11.03ID:RGealQpg0617デフォルトの名無しさん
2014/10/08(水) 14:05:31.36ID:WR+D1wBUヒント: 正規表現
0618デフォルトの名無しさん
2014/10/08(水) 17:18:55.98ID:qx5li64aclass Point
attr_accessor :x, :y
end
class Area < Point
end
と
class Area < Struct.new(:x, :y)
end
この2つの違いを教えてください
0619デフォルトの名無しさん
2014/10/08(水) 17:34:36.72ID:vDUa8S4h0620デフォルトの名無しさん
2014/10/08(水) 19:06:34.65ID:5mBaIux9あれ、気のせい?
0621デフォルトの名無しさん
2014/10/08(水) 22:02:54.67ID:0CbvvJChinitialize を定義しなくても new で各メンバの初期化が出来る
attr_accessor の方は Enumerable を取り込まないため
Enumerable 由来のメソッドが大量に定義されないで済む
個人的には Struct が好みだけど、一般的には attr_accessor の方が利用されている
0622デフォルトの名無しさん
2014/10/10(金) 22:57:37.90ID:hLe2xq4/本当に初歩の初歩だと思うんですが、、お答え願えませんか?
s = "My name is Monar"
s = s.split
p s[0] # => M
p s.class = # => String
a = s.split
p a[0] # => My
p a.class => Array
Stringをsplit したものを何かにぶち込むと配列になるのでしょうか?
そういうものだ、って解釈でよいのでしょうか。
0623デフォルトの名無しさん
2014/10/10(金) 23:05:19.35ID:j7rjXjTeお前が寝ぼけてるだけ
もう一度落ち着いてそれ実行してみろ
0624デフォルトの名無しさん
2014/10/10(金) 23:21:19.86ID:hLe2xq4/うわ。ほんとだ。寝ぼけてただけでした。
ほんとすいません。
s = "My name is Monar"
p s.class # => String
p s[0] # => M
s = s.split(" ")
p s[0] # => "My"
p s.class # => "Array"
これでした。すいません。
stringをsplitすると、配列オブジェクトになるってのはあってますか?
0625デフォルトの名無しさん
2014/10/10(金) 23:29:13.14ID:Mhk11MXA0626デフォルトの名無しさん
2014/10/11(土) 00:17:24.24ID:t1ONSAIz=> true
[2] pry(main)> DateTime.new(1970,1,1)
=> #<DateTime: 1970-01-01T00:00:00+00:00 ((2440588j,0s,0n),+0s,2299161j)>
↑+00:00
[3] pry(main)> DateTime.new(1970,1,1).to_time
=> 1970-01-01 09:00:00 +0900
↑+0900 ファ!?
0627デフォルトの名無しさん
2014/10/11(土) 00:19:51.34ID:bs/sFubV0628デフォルトの名無しさん
2014/10/11(土) 12:01:18.49ID:WAdfmHXI0629デフォルトの名無しさん
2014/10/11(土) 13:04:18.34ID:GOKZHlwErubocopもバシバシ警告してくるのですがイマイチ理由が分かりません。
0630デフォルトの名無しさん
2014/10/11(土) 13:44:55.56ID:2iP0q5Ek0631デフォルトの名無しさん
2014/10/11(土) 13:48:39.52ID:7ki1LAY5http://stackoverflow.com/questions/5587264/do-end-vs-curly-braces-for-blocks-in-ruby
0632デフォルトの名無しさん
2014/10/11(土) 14:58:29.97ID:9vsymaaRs = "My name is Monar"
s = s.split(" ")を使うと、
文字列が空白で分割されて、配列の0〜3に格納される
[My,name,is,Monar]
>>629-631
ブロックが1行なら、{ }の方が見やすい
複数行なら、do〜endを使う
0633デフォルトの名無しさん
2014/10/11(土) 15:14:29.24ID:7ki1LAY5アンカつけるならリンク先読んでちょ
あと My じゃなくて "My" ね
0634629
2014/10/11(土) 18:35:23.61ID:GOKZHlwEやっぱ優先順位から見ると{}の方が自然に思えますよね。
「複数行だとdo end」も見た目のこだわり以上の理由はないと理解しました。
0635烏有(uyuu) ◆/uuWdTQ106
2014/10/11(土) 18:40:20.18ID:fozbFsv6家族もバシバシ警告してくるのですがイマイチ理由が分かりません。
0636デフォルトの名無しさん
2014/10/12(日) 02:07:30.17ID:2D7VEq3z0637デフォルトの名無しさん
2014/10/12(日) 02:23:45.11ID:LsklK5Csopen obj.filename do |file|
# open()に渡されるブロック
end
open obj.filename {|file|
# obj.filename()に渡されるブロック
}
これだけ見ると do 〜 end の結合度のが自然に見えない?
どっちか片方だけが自然、って訳ではないと思う
0638烏有(uyuu) ◆/uuWdTQ106
2014/10/12(日) 04:40:30.30ID:iENiuObxやっぱ優先順位から見ると{ドア}ドンの方が自然に思えますよね。
「複数回だと壁 ドン」もドンの音のこだわり以上の理由はないと理解しました。
0639デフォルトの名無しさん
2014/10/12(日) 14:23:41.50ID:MraGD/gc引数が二つ以上あるのにカンマがないのはおかしいので↑は自然とは思わないなあ
↓のfilenameがselectとかmapとかのときを考えると↓の結合度が自然だと感じる
まあどっちにしろそんなわかりにくい結合させずに括弧で明示するけどね
0640デフォルトの名無しさん
2014/10/12(日) 16:06:02.65ID:Yv9TiAGs冗長なうえ結合度が違うのは害悪ですらある
637は要らぬ混乱を招くとても悪いスタイルだから真似しちゃダメ
0641デフォルトの名無しさん
2014/10/12(日) 21:26:34.17ID:Tx1BX1Kd戻り値を扱うかどうかで書き分けてるな〜
0642デフォルトの名無しさん
2014/10/12(日) 22:15:56.50ID:ElJnU/0K俺もそうだな
戻り値を使うなら {}、使わないなら do..end だな
0643デフォルトの名無しさん
2014/10/13(月) 05:27:00.26ID:j90eBv3o0644デフォルトの名無しさん
2014/10/13(月) 13:11:18.96ID:xzr2gdng何か歴史的な経緯があるのかい?
0645デフォルトの名無しさん
2014/10/13(月) 13:15:20.64ID:j90eBv3o後でそれを追加できないという破綻した命名規約だけどね
0646デフォルトの名無しさん
2014/10/13(月) 13:27:29.45ID:yFRqmPNp0647デフォルトの名無しさん
2014/10/13(月) 14:06:45.14ID:qSnkJX9/正確な経緯は知らんけど、Lisper な Matz には副作用や参照透明性みたいな
概念を重要視していなかった(=深く考えていなかった)だけだと思う
>>645
命名規則が破綻したケースの例としては、ハッシュを更新する破壊的メソッド Hash#update に
後から非破壊メソッドを追加できずしかたなく Hash#merge! と Hash#metge を追加した、
というのがあるね
0648デフォルトの名無しさん
2014/10/14(火) 07:50:28.20ID:FY2dMxGyまあ今も昔も深く考えてないというのは間違いないと思うが
今だって標識くらいの見かけ的な役割だもんね ! と ?
0649デフォルトの名無しさん
2014/10/15(水) 21:56:04.60ID:0iTmmfe+何か問題があれば!を検索して集中的に調べる。
Immutableなコレクションしか持たない言語よりも柔軟で実用的だと思うんだ。
これはrubyの好きな点の一つなので、!のルール付けは徹底してほしいところだ。
0650デフォルトの名無しさん
2014/10/15(水) 23:39:21.06ID:KzNnpQwi0651デフォルトの名無しさん
2014/10/16(木) 07:30:36.81ID:GRIRO8vO逆が出来ないから困るって話をしてるんだが
0652デフォルトの名無しさん
2014/10/16(木) 10:25:27.96ID:qnIoh31O0653デフォルトの名無しさん
2014/10/16(木) 10:31:38.08ID:6hon/NKm逆ができないってどういうこと?
aliasを付けることはどっちもできるし
ソース上で不統一だとどっちの場合も同じように困ると思うんだけど
何に困ってるの
0654デフォルトの名無しさん
2014/10/16(木) 15:55:07.15ID:CsOFEKWu副作用で思い出したのだがpushやpopに!が付かないのは
何か歴史的な経緯があるのかい?
645 デフォルトの名無しさん [sage] 2014/10/13(月) 13:15:20.64 ID:j90eBv3o Be:
対応する非破壊版がないから
後でそれを追加できないという破綻した命名規約だけどね
0655デフォルトの名無しさん
2014/10/16(木) 15:56:08.66ID:CsOFEKWu後から非破壊メソッドを追加できずしかたなく Hash#merge! と Hash#metge を追加した、
というのがあるね
648 デフォルトの名無しさん [sage] 2014/10/14(火) 07:50:28.20 ID:FY2dMxGy Be:
pushやpopはどう考えても機能名称的にpushやpopという単語だろうという縛りがないでもない
まあ今も昔も深く考えてないというのは間違いないと思うが
今だって標識くらいの見かけ的な役割だもんね ! と ?
0656デフォルトの名無しさん
2014/10/16(木) 17:18:05.50ID:MV7SzJpM0657デフォルトの名無しさん
2014/10/17(金) 02:16:25.49ID:EUFGtU/Qうまくいきません。ネットでやると失敗します。
で、「Rubyによるクローラ開発」って本に、そういうときはコンパイル済みバイナリをローカルに
置くのがいい、とあったので、rubygem.orgからx86-mingw32というのを取って来て実行してみた
のですが、
Unable to resolve dependencies: nokogiri requires mini_portile
ってエラーが出て進まなくなってしまいます。
環境が悪いんでしょうか? みなさんとこ上手くインストールできてます?
0658デフォルトの名無しさん
2014/10/17(金) 04:56:18.47ID:lMkb3UyL0659デフォルトの名無しさん
2014/10/17(金) 07:48:33.50ID:tubR575L0660デフォルトの名無しさん
2014/10/17(金) 07:49:03.51ID:XvOfVc4rトニー・ジャーか…?
マッハ!のタイトルっぽいな
0661デフォルトの名無しさん
2014/10/17(金) 08:10:47.98ID:QP1DIUi6環境が悪いとすれば君の生まれ育った環境が悪いんだろう
0662デフォルトの名無しさん
2014/10/17(金) 08:21:15.00ID:4+0nBHRNhttp://developers.slashdot.jp/story/14/10/10/2155216/
環境が悪いせいかやっぱ滅び行く言語みたいだな
0663デフォルトの名無しさん
2014/10/17(金) 11:49:30.34ID:Q41qEvOL0664デフォルトの名無しさん
2014/10/17(金) 11:53:45.91ID:HZvg3la90665デフォルトの名無しさん
2014/10/17(金) 15:50:56.69ID:TIsdM5eDAndroid上でコードを書き換えて動作させたりしたいと思っているので、Rubotoはちょっと方向性が違うと思っています。
よろしくお願いします。
0666デフォルトの名無しさん
2014/10/17(金) 19:32:37.25ID:HZvg3la90667デフォルトの名無しさん
2014/10/17(金) 21:07:26.92ID:j5u0ESS9>Android上でコードを書き換えて動作させたりしたいと思っているので、Rubotoはちょっと方向性が違うと思っています。
意味不明だな
Ruboto IRB(無償 Android アプリ)を使えば、「コードを書き換えて動作させたり」できるよ
メソッドやクラスの定義はもちろん、Ruboto IRB 上で GUI を生成して動かせる
・Ruboto IRB : 過去最大の衝撃。これは凄い!!AndroidでRubyが動く!!Androidアプリ427 | オクトバ
http://octoba.net/archives/20100305-ruboto-irb-android-427.html
Roboto IRB で対話的に Android API を色々と触りつつ、本格的なアプリは PC 上の
Ruboto または RubyMotion(現状はベータ版)でクロス開発するというプロセスになると思われる
0668デフォルトの名無しさん
2014/10/17(金) 23:42:47.60ID:4+0nBHRNすぐ潰れそう
0669デフォルトの名無しさん
2014/10/18(土) 08:36:09.60ID:cvL+Wsv6ありがとう、試してみます。
>> 667
PCでRubyをコンパイルしてAndroidで動かす仕組みだと勘違いしていました。
ご指摘いただきありがとうございます。
0670デフォルトの名無しさん
2014/10/19(日) 20:19:35.03ID:vOhlo+XI何か良い方法はないでしょうか?
何もオプションを付けないと64bitバイナリが生成されるようですが・・・
2.0.0p481[x64-mingw32]
0671デフォルトの名無しさん
2014/10/20(月) 01:41:16.45ID:6j05cluu大丈夫なのかな? 個人環境で起きるなら良いんだけど、会社だとセキュリティ担当に
自動で通報されちゃうので説明したりとちょっと大事になるので面倒くさい。
0672デフォルトの名無しさん
2014/10/20(月) 06:54:15.02ID:v2I1VvBQ0673デフォルトの名無しさん
2014/10/20(月) 19:46:50.69ID:kEWHmjOP0674デフォルトの名無しさん
2014/10/24(金) 23:57:31.15ID:pwlehayb1.0.integer?
だとfalseが返ってきてしまいます
0675デフォルトの名無しさん
2014/10/25(土) 00:09:39.99ID:L2ksR7r0a.floor == a # => true
a = 1.1
a.floor == a # => false
こういうこと?
0676デフォルトの名無しさん
2014/10/25(土) 08:32:50.27ID:j6rbe9Rw複素数にも対応してあげるのが親切ってもんだろう。
そこはfloorでもceilでもなくto_iだな。
0677デフォルトの名無しさん
2014/10/25(土) 08:34:28.50ID:8yzcXx0W誤差考えるとなあ
irb(main):006:0> a=Math.sqrt(27)/Math.sqrt(3)
=> 3.0000000000000004
irb(main):007:0> a.floor==a
=> false
0678デフォルトの名無しさん
2014/10/25(土) 08:37:31.51ID:Osfk0YxR0679デフォルトの名無しさん
2014/10/25(土) 09:19:46.12ID:NijgTWsoもしくは
require'mathn'
とかかなあ
0680デフォルトの名無しさん
2014/10/25(土) 12:30:31.13ID:9i0hi/co√27 ÷ √3
= 3√3 ÷ √3
= 3
を a に代入
以下略
0681デフォルトの名無しさん
2014/10/25(土) 12:36:41.68ID:cqm+9BdH=> 3.0000000000000004
わろた
0682デフォルトの名無しさん
2014/10/25(土) 13:23:01.23ID:Osfk0YxRそれが3になってないからfalseで正しいじゃん
0683デフォルトの名無しさん
2014/10/25(土) 13:39:00.78ID:NijgTWso累乗根とかの無理数をその場で計算せずそのままあつかうようなクラスを個別に定義していけば
そのうち全部誤差なしにできるかもね(もちろん最終的に有理数になる場合)
>>682
人間が計算すれば3になるからtrueを得たいってことでしょ
0684デフォルトの名無しさん
2014/10/25(土) 14:21:19.99ID:L2ksR7r0無理数が入るものを有限桁しか持てない計算機で計算させるんだから、
その誤差を考えて計算させないと意味が無い
これはRubyに限った話じゃなく、計算機に計算をさせる上で必ず考慮しなければ
ならないポイント
0685デフォルトの名無しさん
2014/10/25(土) 14:47:58.38ID:B/NlI7do$ python
>>> from math import sqrt
>>> 3 * sqrt(3) / sqrt(3)
3.0000000000000004
Prelude> 3 * sqrt 3 / sqrt 3
3.0000000000000004
julia> 3*sqrt(3)/sqrt(3)
3.0000000000000004
そういうものだよ
カッコでくくるといいかもね
0686デフォルトの名無しさん
2014/10/25(土) 15:03:54.32ID:L2ksR7r0(a.round - a).abs < EPS
みたいにやるのがよくある方法だね
(ただしaがそれほど大きくないという条件はつくけど)
0687デフォルトの名無しさん
2014/10/25(土) 16:10:16.86ID:OBw5xvhC0688デフォルトの名無しさん
2014/10/25(土) 16:55:42.43ID:5nT/ZQiNComplex#to_iは虚数部が0じゃない時はRangeError吐くから
もう少し工夫しないといけない気がする
0689デフォルトの名無しさん
2014/10/25(土) 17:42:04.77ID:Osfk0YxR>>674は計算の仕方を聞いてるわけじゃないだろ
0690デフォルトの名無しさん
2014/10/25(土) 19:46:48.42ID:L2ksR7r0有限桁の計算機で計算する以上、無理数が混じった計算で整数かどうかを正確に
判定することなんてできないよ
0691デフォルトの名無しさん
2014/10/25(土) 19:50:06.84ID:/9oTGPcj0692デフォルトの名無しさん
2014/10/25(土) 19:51:20.02ID:TvGWFX6/そういうアカデミックな世界はPythonの方が環境整ってるからおすすめ
0693デフォルトの名無しさん
2014/10/25(土) 20:55:31.74ID:OBw5xvhC0694デフォルトの名無しさん
2014/10/25(土) 21:43:14.43ID:AJUIP7QMまるで点のように飛び飛びに存在しており、
数学の実数のようには、数が連続していない
また数が大きくなるほど、2点間の距離も大きくなっていき、
最後には2点間の距離は、1よりも大きくなり、1を足せなくなる
また2点間にある値は、どちらかに丸められて表現される
>>686
絶対誤差と相対誤差という概念もある
1,000で1の誤差と、1.0で0.001の誤差は、
1/1,000という同じ誤差
0695デフォルトの名無しさん
2014/10/26(日) 20:04:28.62ID:z1XaoFmtどうやってデバッグしたらいいの?
0696デフォルトの名無しさん
2014/10/26(日) 21:06:23.46ID:e33XAUxVweb server のログを見てみよう
0697デフォルトの名無しさん
2014/10/26(日) 21:24:15.67ID:z1XaoFmtredmine/log/production.logはアクセスしても更新されてないです。
なぜだ。
0698デフォルトの名無しさん
2014/10/26(日) 21:25:42.86ID:e33XAUxVweb server のエラーログだよ
0699デフォルトの名無しさん
2014/10/26(日) 21:57:12.33ID:z1XaoFmtdrwx--x--x 6 root root
で一般ユーザーには見れません。
ほかのところで見れるのかな
0700デフォルトの名無しさん
2014/10/26(日) 21:57:13.28ID:BCpeePebcoreserverってレンタルサーバか。CGIしか動かないんじゃないの。rackとかいじれば動くかもしれないけど、planioとか設置済みの借りたほうがいいんじゃないの。
0701デフォルトの名無しさん
2014/10/26(日) 22:08:53.22ID:z1XaoFmtsshでログインして色々できるので
~/usr/以下に
ruby-2.1.3
subversion-1.8.10
fcgi-2.4.1
make-4.0
libtool-2.4.2
など、依存関係、バージョンアップが必要なやつらを入れてやって
ようやくエラーなくbuild installできたり
require 'fcgi'でのーさっちふぁいる言われなくなったところです。
0702デフォルトの名無しさん
2014/10/26(日) 22:09:41.87ID:z1XaoFmtbundle installやった。
0703デフォルトの名無しさん
2014/10/27(月) 01:56:33.97ID:AAN1U1FS0704デフォルトの名無しさん
2014/11/01(土) 10:53:07.72ID:KbCSRqlI実際の値とは異なるものになってしまうのですが、何故なのでしょうか?
ruby-2.1.3 とruby-2.1.4 で動作を確認しました。
OSはvistaです。
0705デフォルトの名無しさん
2014/11/01(土) 11:00:20.69ID:3nVvYlYVcodepadとかに
0706デフォルトの名無しさん
2014/11/01(土) 11:48:23.78ID:KbCSRqlI具体的には、高速で階乗を求めるソースを考えている時に起こりました。
http://codepad.org/uMrdmWoQ
上のソース(numの階乗を出力)で、5688以上の階乗を求めようとすると誤った値が出力されます。
原因を調べたところ、いつくかの乗算の結果がおかしなことになっていました。
その例です↓
http://codepad.org/Evm4WIzw
なお、codepad上では正しく動いています。
0707デフォルトの名無しさん
2014/11/01(土) 11:59:15.57ID:KbCSRqlI1.8.7
1.9.3
2.0.0
では正常に動くことを確認しました。
0708デフォルトの名無しさん
2014/11/01(土) 12:42:09.57ID:JDs1edib2.1 のバグだね、きっと
↓にしたがってバグ報告しましょう
https://bugs.ruby-lang.org/projects/ruby/wiki/HowToReportJa
0709デフォルトの名無しさん
2014/11/01(土) 13:08:03.38ID:E0YeAKNcやはり科学技術計算ならPythonか。
0710デフォルトの名無しさん
2014/11/01(土) 13:12:37.62ID:JDs1edibそう思ってるならRubyスレなんか覗かなきゃいいのに
単純に叩くネタを探しにきてるだけなのかい?
0711デフォルトの名無しさん
2014/11/01(土) 13:13:46.50ID:tAp5B7hH0712デフォルトの名無しさん
2014/11/01(土) 13:18:44.69ID:NzxKzmT+0713デフォルトの名無しさん
2014/11/01(土) 14:18:25.31ID:KbCSRqlIどうもありがとうございました!!
0714デフォルトの名無しさん
2014/11/01(土) 16:57:13.22ID:Bg+qUaZT0715デフォルトの名無しさん
2014/11/01(土) 18:33:01.35ID:dJZLIuNK0716デフォルトの名無しさん
2014/11/01(土) 20:35:05.70ID:dJZLIuNKBignum は 2.1 で結構変わった部分だから、単純なデグレードではないね
むしろ、新機能と言ってもいい部分
なので、今回のようなバグ報告はありがたいだろうね
0717デフォルトの名無しさん
2014/11/02(日) 05:24:22.27ID:Vf5VSDSDRubyさえ消えれば、Pythonの1強だから
鬼畜米英に対して、今こそ、日本人として立たねばならぬ!
全国民は何があろうと、Rubyを死守せよ!
0718デフォルトの名無しさん
2014/11/02(日) 06:47:27.44ID:LNjYg/LZOut of guntyuu.
0719デフォルトの名無しさん
2014/11/02(日) 06:56:13.27ID:ihJb2jjw環境の問題でRuby使ってるけど、
正直、使えるならPython使いたいわ
0720デフォルトの名無しさん
2014/11/02(日) 10:39:25.45ID:f5IAMfRc使いたくない
>>719
俺も
0721デフォルトの名無しさん
2014/11/02(日) 10:55:35.21ID:6vShOxasRails(か最悪はPHP)を使わざるを得ないことも多いんだね
0722デフォルトの名無しさん
2014/11/02(日) 10:59:49.55ID:f5IAMfRc結局そういう事だよねー
0723デフォルトの名無しさん
2014/11/02(日) 11:01:48.93ID:LNjYg/LZ逆にdjangoがあるからpythonを選ぶくらい。
0724デフォルトの名無しさん
2014/11/02(日) 11:03:11.62ID:6vShOxasPythonがいい言語なのは同意できるが、Djangoは同意できないw
0725デフォルトの名無しさん
2014/11/02(日) 11:04:07.50ID:ihJb2jjwそれなりに簡潔で読みやすいコードになるんだよな
RubyはWordで体裁気にしながら文章書いてるような気持ちの悪さを感じる
0726デフォルトの名無しさん
2014/11/02(日) 11:09:10.69ID:6vShOxasその部分ではPythonもRubyも大差ないなー
Rubyで簡潔で読みやすいコードにならないというなら、単純にRubyを知らないだけちゃうんかって感じ
だが、Perlよ、お前だけはだめだw
0727デフォルトの名無しさん
2014/11/02(日) 11:14:46.34ID:ihJb2jjwRubyはPython以上に簡潔で読みやすいコードを書けるけど、
使い方によってはPerlにもなるでしょ
良し悪しの問題ではないけどPythonと一番思想が違うところ
0728デフォルトの名無しさん
2014/11/02(日) 11:18:16.14ID:6vShOxasまさか単純にインデントベースのブロックのこと言ってるんじゃあるまいな?
だとすれば完全に好き嫌いの話でしかないぞ
そのレベルだと君が簡潔で読みやすいコードを書けるのはPythonとCoffeeScriptぐらいってことになる
0729デフォルトの名無しさん
2014/11/02(日) 11:18:23.22ID:LNjYg/LZそう? 言語としてはrubyのが好き。
djangoは標準でユーザー管理ついてるのと、かなりDRYなとこがいい。
0730デフォルトの名無しさん
2014/11/02(日) 11:24:44.64ID:4UwsIu6Gぱ、Perlも読み易く書けば読み易く書けるし!
0731デフォルトの名無しさん
2014/11/02(日) 11:25:18.61ID:ihJb2jjwブロックに限らず、単にRubyの方が書き方にバリエーションが多いって言ってるだけだよ
両方使ってるならそれくらいは納得してくれるだろ?
俺はバリエーションが少ないほうが好みだ、それだけ
0732デフォルトの名無しさん
2014/11/02(日) 11:41:20.62ID:Ot4JK/1Q数字をEXCELの列の文字に変換するにはどうすればいいですか。
入力(数値) 0,1,2,3,…
出力(文字) A,B,C,…Z,AA,…,AZ,BA…,ZZ,AAA…
0733デフォルトの名無しさん
2014/11/02(日) 12:01:36.32ID:OPPSZIQK$_.times{n.succ!}
0734デフォルトの名無しさん
2014/11/02(日) 12:23:24.95ID:CjBmvnJw0735デフォルトの名無しさん
2014/11/02(日) 12:29:25.47ID:CjBmvnJwBase26 encoding
0736デフォルトの名無しさん
2014/11/02(日) 14:37:28.26ID:3t1Cscrq人には向き不向きがあるからそれならやめておけばいい
0737デフォルトの名無しさん
2014/11/02(日) 14:44:31.57ID:6vShOxasn.to_s(26).tr('0-9a-p', 'a-z').upcase
0738デフォルトの名無しさん
2014/11/02(日) 15:17:25.24ID:3t1Cscrq遅いしメモリ食うし最大値を考慮する必要があるけど単純
[*"A".."ZZZ"][n]
0739デフォルトの名無しさん
2014/11/02(日) 16:19:28.15ID:/OQ7HjUbもっときれいにかけるのかな。
ついでに英字から数字を出力するのも作ってみた。
def column_code n
len = Math.log(25*n/26.0+1, 26).floor+1
p = n+1+2*26**len - ("1"*(len+1)).to_i(26)
p = p.to_s(26).tr('0-9a-p', 'A-Z')[1..-1]
return p
end
def column_decode s
len = s.length
p = ( ("B"+s).tr('A-Z', '0-9a-p') ).to_i(26)
q = ( "1"*(len+1) ).to_i(26)
return p+q-1-2*26**len
end
0740デフォルトの名無しさん
2014/11/02(日) 17:13:03.61ID:bNYsKDd8def column_code n
len = Math.log(25*n/26+1, 26).floor+1
return (n+(24*26**len+26)/25).to_s(26).tr('0-9a-p', 'A-Z')[1..-1]
end
def column_decode s
len = s.length
return s.tr('A-Z', '0-9a-p').to_i(26)+(26**len-26)/25
end
0741デフォルトの名無しさん
2014/11/02(日) 18:21:25.77ID:LNjYg/LZ0742デフォルトの名無しさん
2014/11/02(日) 19:13:57.03ID:B2VB/G2X5〜6桁目など存在しないのだからパフォーマンスも気にしなくてよいと思う。
0743デフォルトの名無しさん
2014/11/03(月) 08:06:02.67ID:UI06u95tストラクトクラスをスーパークラスにするやり方が本に
上のように書いてあったのですけど
Point3DクラスがPoint3Dクラスを継承することになってもいいのでしょうか?
0744デフォルトの名無しさん
2014/11/03(月) 10:54:32.79ID:1DGR/mlS0745デフォルトの名無しさん
2014/11/03(月) 11:48:48.65ID:lYTbCh7Pお騒がせして申し訳ありませんでした。
自分で考えることとします。
0746デフォルトの名無しさん
2014/11/03(月) 12:21:28.78ID:VhC2rtBoStruct.new("Point3D", :x, :y, :z) は Struct::Point3D になるから問題無い。
0747デフォルトの名無しさん
2014/11/03(月) 12:24:39.05ID:aZ1lF/ar実際に試してみればいい
irb(main):001:0> class Point3D < Struct.new("Point3D", :x, :y, :z); end
=> nil
irb(main):002:0> Point3D.superclass
=> Struct::Point3D
Struct.new( .... ) というスタイルを使うと、クラスは名前空間 Struct の下で定義される
Point3D と Struct::Point3D は別のオブジェクトだから、
それらの間に継承関係が存在しても何ら問題はない
もちろん、以下のようなケースはエラーになる
irb(main):001:0> class Struct::Point3D < Struct.new("Point3D", :x, :y, :z); end
TypeError: superclass mismatch for class Point3D
from (irb):1
from /opt/local/bin/irb:11:in `<main>'
irb(main):001:0> class Point3D < Struct.new("::Point3D", :x, :y, :z); end
NameError: identifier ::Point3D needs to be constant
from (irb):1:in `new'
from (irb):1
from /opt/local/bin/irb:11:in `<main>'
0748デフォルトの名無しさん
2014/11/03(月) 13:41:16.97ID:Yqw0F9Sobegin
f = Fiber.new do
timeout(1) do
Fiber.yield
end
end
rescue
p 1
end
begin
f.resume
sleep (2)
f.resume
rescue
end
上記のコードで1が出力されるはずと期待していたら例外処理が補足されずに終了してしまいました。
sleep(2)でexecution expiredになるのは分かるんですが、何故補足されないんでしょうか?
Ruby2.0.0と2.1.4で試しましたが結果は同じでした。
0749デフォルトの名無しさん
2014/11/03(月) 14:43:27.79ID:IiZVKpQiarray[index[0]][index[1]]〜[index[-1]]の要素を操作したいのですが
何かうまい方法は無いでしょうか?
0750デフォルトの名無しさん
2014/11/03(月) 15:24:11.59ID:aZ1lF/ar単純に timeout(1) へ与えたブロック内で Fiber.yield しているので
コンテクストが親に切り替わっているからだろ
自分でコンテクストを切り替えておいて、
それでもなお元のコンテクストでタイムアウト例外を補足できると期待するという
>>748 の思考回路がわからん
Ruby はエスパーではないから >>748 の意図を読み取って振る舞ってはくれないし、
コンテクストを切り替えろというコードの指示に従って忠実に動いているだけ
自分が何を意図してコードを書いているのか、よく考えたほうがいいと思う
0751デフォルトの名無しさん
2014/11/03(月) 15:27:42.87ID:IO/fHbsZなぜかTimeout::Errorじゃない無名のクラスになってて補足できてないね・・・なぜだろう誰か詳しい人
コンテクストが親に切り替わっても例外は上がるんだね
俺よくわかってないや
>>749
こんな感じ?
取得
index.inject(array){|s,r|s[r]}
設定
index[0..-2].inject(array){|s,r|s[r]}[index[-1]]=x
0752デフォルトの名無しさん
2014/11/03(月) 15:41:58.79ID:aZ1lF/ar0、1、とくれば次に期待するのは 2、3、と増加する振る舞いだと思うけど、
なぜか -1 になっている
すまんが、-1 になれる上手い方法は思いつけない
ちなみに 0、1、ときて最後に N へ到るという多次元配列であれば、
(0..N).inject(array) { |ary, n| ary[index[n]] }
でアクセスできると思う
0753デフォルトの名無しさん
2014/11/03(月) 15:42:39.68ID:IiZVKpQiありがとうございます!!
indexを使うといいんですね。
0754デフォルトの名無しさん
2014/11/03(月) 15:47:23.48ID:IiZVKpQi説明が下手ですみません。
大変参考になりました。ありがとうございます。
あと>>753はindexじゃなくてinjectですね。
0755デフォルトの名無しさん
2014/11/03(月) 15:47:46.99ID:3kX/Tanu悪かないがindexが無効範囲だったときにnilが返るのが不親切じゃないか?
多少ダサくてもindexチェックのついた高階関数にバラすのが良いように思う。
0756デフォルトの名無しさん
2014/11/03(月) 15:55:53.88ID:IO/fHbsZご指摘通り確かに範囲外インデックスが入ってると落ちちゃうね
落ちずにnilを返すようにはできるけど、nilが入ってる場合と違いがわからんしなあ
高階関数で対応するイメージが湧かないので教えてほしい
>>754
ということで範囲外インデックスが入りえる場合は気を付けて!
0757デフォルトの名無しさん
2014/11/03(月) 15:57:33.59ID:Yqw0F9Soありがとうございます、理由はよく理解できました。
という事でtimeoutのexception_classを指定してみた所、下のrescueで補足するようになりました。
バグではないのかと気になりますが、どうなんでしょうね。
0758デフォルトの名無しさん
2014/11/03(月) 16:21:40.77ID:aZ1lF/ar>という事でtimeoutのexception_classを指定してみた所、下のrescueで補足するようになりました。
exception_classを指定しなくとも、>>748 のコードのままでも下の rescue で例外は補足されている
下の resucue というコードを rescue => ex; p ex へと書き換えれば、
#<Timeout::Error: execution expired> という出力を確認できるはず
>バグではないのかと気になりますが、どうなんでしょうね。
Fiber.yield でコンテクストを親に切り替えた後にタイムアウト例外が発生し、
その例外は切り替わった親の(=下の) resucue で補足されている
>>750 で書いたことを繰り返すけど、Ruby は>>748 のコードに従って忠実に動いているはずだ
それなのに、なぜこれをバグを感じるのか意味不明だね
0759デフォルトの名無しさん
2014/11/03(月) 16:51:25.89ID:UKuQYTWzありがとうございます。勉強になりました。
0760デフォルトの名無しさん
2014/11/03(月) 17:02:08.57ID:IO/fHbsZ実行してみた?
色々言う前にまずは自分で書いた通り実行して確認してみなよ
なぜか例外にTimeout::Errorじゃない無名のクラスが投げられてきてて
rescue Exception とかしないと補足できないから
http://ideone.com/jtxDYd (p exと書いてみたけどエラーは変わらない)
http://ideone.com/9ctjA2 (Exceptionすべて補足すればいける)
http://ideone.com/0MytXY (757の書いた通りでもいける)
0761デフォルトの名無しさん
2014/11/03(月) 17:03:48.53ID:IO/fHbsZ正 捕捉
誤 補足
0762デフォルトの名無しさん
2014/11/03(月) 17:11:36.03ID:IO/fHbsZおお、こちらもいろいろ言う前に考えが足りなかった、すまん
ver違いで発生有無が違ったから、すでに修正されたバグなのかもしれん
上記の通り無名の例外が発生
1.9.3p547 (2014-05-14 revision 45962) [i386-cygwin]
2.0.0p481 (2014-05-08) [x64-mingw32]
2.0.0p481 (2014-05-08 revision 45883) [i386-cygwin]
正しくTimeout::Errorが発生
2.1.2p95 (2014-05-08 revision 45877) [i386-cygwin]
0763デフォルトの名無しさん
2014/11/03(月) 17:12:32.08ID:aZ1lF/ar同じコードであっても、Ruby のバージョンによって振る舞いが変わるみたいだね
$ ruby1.9 timeout2.rb
prog.rb:13:in `sleep': execution expired from timeout2.rb:13:in `<main>'
$ ruby2.0 timeout2.rb
prog.rb:13:in `sleep': execution expired from timeout2.rb:13:in `<main>'
$ ruby2.1 timeout2.rb
#<Timeout::Error: execution expired>
0764748
2014/11/03(月) 17:37:35.15ID:Yqw0F9So恐らくpikで切り替え忘れてirbで実行したのが原因だと思います…
2.0系では駄目でしたが、2.1系なら大丈夫そうですね。
捕捉せず
ruby 2.0.0p481 (2014-05-08) [i386-mingw32]
ruby 2.0.0p594 (2014-10-27) [i386-mingw32]
捕捉
ruby 2.1.4p265 (2014-10-27 revision 48166) [i386-mingw32]
0765名無しさん
2014/11/03(月) 22:33:03.64ID:LLz3qGqswin8のcore i7です
0766デフォルトの名無しさん
2014/11/03(月) 22:34:40.73ID:UgEZQqgs素直にC#+XNAが吉
0767デフォルトの名無しさん
2014/11/03(月) 22:40:36.85ID:UgEZQqgsSharpDXとか?になるんだろうか
0768名無しさん
2014/11/03(月) 22:47:27.00ID:LLz3qGqshddも1tbあるので
0769デフォルトの名無しさん
2014/11/03(月) 22:49:25.47ID:UgEZQqgsいまどきデュアルブートするぐらいならVM使った方がいいと思うけど…
0770デフォルトの名無しさん
2014/11/03(月) 22:50:06.32ID:x848GwYR0771名無しさん
2014/11/03(月) 23:34:46.76ID:LLz3qGqs0772名無しさん
2014/11/03(月) 23:37:17.91ID:LLz3qGqsどっかでcygwinはエラーが多いと聞いた気がしましたが
なにか不都合ありますか?
0773デフォルトの名無しさん
2014/11/04(火) 00:03:40.32ID:WEGF7NZuじゃあ32bit版も入れれば
0774デフォルトの名無しさん
2014/11/04(火) 03:06:41.92ID:30WYsMeZwin8のcore i7なら仮想環境にするか、
USBから外付けHDD・USBメモリから、Linuxすれば?
win8で同一ディスクからのデュアルブートは、
UEFI・GPT・リカバリー領域など、
ややこしいことが一杯あって、win8を消してしまうかも!
あまり成功例を聞かない
0775名無しさん
2014/11/04(火) 07:30:11.08ID:3vhPZ6VFそうします
0776デフォルトの名無しさん
2014/11/05(水) 00:05:20.96ID:AIrAdXYOGCが原因でカクついたりすると爽快感台無しになるし
そこでハマって調整に時間かかるとスクリプト言語選んだ
意味ないしで悩むところだ。
0777デフォルトの名無しさん
2014/11/05(水) 09:49:19.03ID:6cY/hPez0778デフォルトの名無しさん
2014/11/06(木) 00:52:04.32ID:40Lk17ezFile::open("./hoge") {|f|
while line = f.gets
end
lineAry = line.split(",")
}
って感じにしたのですが、undefined method `split' for nil:NilClass (NoMethodError)ってエラーが出てしまいわからなくなってしまいました
解決方法教えてください・・・・
0779デフォルトの名無しさん
2014/11/06(木) 01:24:27.67ID:tQmqHd/Hline.chop.split(/,/)
}
0780デフォルトの名無しさん
2014/11/06(木) 02:01:45.45ID:4jfyym2cその通り書いてあるものだとして、
while line = f.gets
end
を抜けているということは
line = f.getsがnilかfalseになっているということ
実際にはnilなわけだが、それに対して
line.split(",")
と"split"メソッドを呼び出してるけど、nilにはそんなメソッドはないよというエラー
while line = f.gets
"処理"
end
というのをどこかで見て引っ張ってきたんだろうけど
これが意味してるところを理解しないと
getsというのがこの場合、ファイルを一行ずつ読み込むメソッドで、最後の行に達したらnilを返すようになってる
つまり、ファイルを一行読み込んでlineに代入。nilでなければ(ちゃんと読み込めてたら)"処理"を行うという意味
0781デフォルトの名無しさん
2014/11/06(木) 02:29:54.61ID:e2GU7rkaクラスメソッドのアクセスに :: は使わない。ドットを使う
while 〜 endはそれでないと動作しない目的以外では使わない。each(を元にした各種メソッド)を使う
ファイル内容の取得にgetsは通常使わない。readやeach_lineを使う
lowerCamelCaseはとりあえず使わないようにする。snake_caseを使う習慣をとりあえずつけとく ※オプション
RubyにはEnumerableをeachで回すという概念/クラスがあって、基本的には
配列やハッシュ.each do |一個|
# ここで一個をなんかする
end
または
配列やハッシュ.each{ |一個| #ここでなんかする }
という形になる
Fileクラスにはオープンしたファイル内容を全部読み込んで文字列として返すインスタンスメソッドreadや
改行だと思われるとこで適当に切って配列にして返すインスタンスメソッドeach_lineがある
なので、「ファイルを読み込んで読み込んだものを","で分割したい」を
「ファイルを開いて1行づつ読み込んでその行を","で分割して配列に格納する」または
「ファイルを開いてテキストファイル全体を","で分割して配列に格納する」と<翻訳>して
前者は>>779のように、後者なら
splited =File.open(path).read.split(/,/)
とか書く
処方箋としては「まともな解説を最初のほうから読む」くらいしか思いつかない
「ペダルを回すと前に進むらしいんですがどうすればいいですか!」とか言って自転車のペダルだけ手で回してる状態
まず跨って乗ってくれ
0782デフォルトの名無しさん
2014/11/06(木) 18:10:15.86ID:c7fp/ougend
lineAry = line.split(",")
↓
while line = f.gets
lineAry = line.split(",")
end
0783デフォルトの名無しさん
2014/11/06(木) 18:20:26.70ID:1AJgCGK+動作しましたがlineAryに最後の行しか入っていません と言われるオチ
0784デフォルトの名無しさん
2014/11/06(木) 23:16:51.51ID:KqnzrEM2gcの動きは?セキュリティホールは?スクリプト言語も実は楽じゃない。
0785デフォルトの名無しさん
2014/11/07(金) 06:04:19.34ID:XfEMsduwたまに必要になった時にそう感じるだけ
0786デフォルトの名無しさん
2014/11/09(日) 06:33:32.65ID:gF5CsO0E完璧主義も破綻する
どっち付かずの中途半端主義者しか生き残れないゴミみたいなゲームまだやってんの?
0787デフォルトの名無しさん
2014/11/09(日) 14:50:38.45ID:ZDxM+nfGchop より chomp の方が良いと思う。
0788デフォルトの名無しさん
2014/11/10(月) 04:23:28.54ID:nN3Hg8Jd0789デフォルトの名無しさん
2014/11/10(月) 08:25:58.99ID:jDCBd3CZA,B,C
1,2,3
あ,い,う
それとも、改行はなく1行のみの、カンマ区切りなのか?
a,b,c,1,2,3,あ,い,う
0790デフォルトの名無しさん
2014/11/10(月) 22:11:39.06ID:8QediavH~/.rbenv/plugins/rucby-build
になっているページが多くあるんですが
rucbyになっている意味って思い当りますか?
typoした情報が広まっちゃっただけですかね
0791デフォルトの名無しさん
2014/11/10(月) 22:37:30.07ID:BCpYGTgNうひょおおおおおお
http://www.google.co.jp/search?num=50&lr=&hl=ja&q=rucby-build&nfpr=1&sa=X
0792デフォルトの名無しさん
2014/11/10(月) 23:08:48.98ID:LMH7nFF4>>790
typoが広まっているのは立教大キャンパス?www
0793デフォルトの名無しさん
2014/11/11(火) 00:12:22.99ID:OobmUzAzさすが三流大学
0794デフォルトの名無しさん
2014/11/11(火) 22:24:32.20ID:IKuwQGRaclass Test
def initialize(*arg)
end
end
Test.new(*Array.new(10 ** 5))
これが stack level too deep (SystemStackError)になってしまうのは何故なんでしょう?
何をスタックに積んでるのかまったくイメージできません。
ちなみにinitialize以外のメソッドでは、同様の書き方でも問題ないようです。
0795デフォルトの名無しさん
2014/11/11(火) 22:41:18.34ID:wcU8x7LdRuby のメソッド呼び出しでパラメタの頭に * を付けると、パラメタを展開して渡す
つまり、
Test.new(*Array.new(10))
というコードは、以下と同じ
ary = Array.new(10)
Test.new(ary[0], ary[1], ary[2], ary[3], ary[4], ary[5], ary[6], ary[7], ary[8], ary[9])
で、一般に手続き/関数/メソッドの引数は言語処理系内部のスタック上もしくはヒープ上に割り当てられる
Ruby の場合には、メソッド new によるオブジェクト生成時にはスタックを使っていて、
それがオーバーフローした(=システムスタックの上限を越えて溢れた)のだろうね
いずれにせよ、10 ** 5 個もの引数を渡すコードは非常識だから、予期しないエラーとなっても不思議ではない
>>794 のコードを
Test.new(Array.new(10 ** 5))
と書き直せば(=パラメタの頭に付けた * を外せば)、期待した動作になるはずだよ
0796794
2014/11/12(水) 11:49:56.88ID:ltmCpT66どうも引数全般がスタックを使ってるみたいですね
initialize以外大丈夫だと書きましたが、更に配列を増やすとやはりだめでした
お騒がせしました
0797デフォルトの名無しさん
2014/11/13(木) 11:41:28.38ID:0GszBHHHRubyみたく哀れな言語を使わなくてすむようになるのがうれしい
0798デフォルトの名無しさん
2014/11/13(木) 12:07:29.72ID:7ZjHj42h0799デフォルトの名無しさん
2014/11/13(木) 14:19:37.64ID:sincN6ICなんか質問ある?
0800デフォルトの名無しさん
2014/11/13(木) 17:40:34.42ID:17cnbPeU何か目新しい報告はあった?
0801799
2014/11/13(木) 18:33:52.15ID:sincN6IC来週アメリカでなんか発表するらしいけど、教えてくんなかったorz
Ruby Prize 2014 受賞者は柴田さんだった
あと、.NETがオープンソース化されてるのは知らんかった。
0802デフォルトの名無しさん
2014/11/14(金) 14:45:10.38ID:Y6976A5Yhairetsu.include?(/正規表現/)
が認識しないみたいなんですがいい代替案ありますかね?
0803デフォルトの名無しさん
2014/11/14(金) 14:46:19.79ID:rxnPKvOr0804uy
2014/11/14(金) 14:48:38.59ID:jCz39Be/ちょっと下ネタになってしまうのですが、
みんなとこの気持ちを共有したいというか
0805デフォルトの名無しさん
2014/11/14(金) 14:51:11.05ID:PoP9COyzary.grep /re/
0806デフォルトの名無しさん
2014/11/14(金) 14:54:39.54ID:Y6976A5Yサンクス
0807デフォルトの名無しさん
2014/11/14(金) 14:56:58.11ID:oheSvaLqとかどうでしょう。
0808デフォルトの名無しさん
2014/11/14(金) 14:58:09.85ID:oheSvaLq0809デフォルトの名無しさん
2014/11/15(土) 13:46:51.20ID:s1wDRj1ulog("value"){ log(1); log(2); log("sub value"){log(3);} }
出力
log category: value
1
2
log category: sub value
3
0810デフォルトの名無しさん
2014/11/15(土) 16:19:12.50ID:RzrSosLrXML,JavaScriptのJQueryなどのレベルの話
0811デフォルトの名無しさん
2014/11/15(土) 16:20:29.70ID:x8Hc1054pretty print が似たようなインタフェースのような気がする
0812デフォルトの名無しさん
2014/11/15(土) 16:50:42.74ID:gniD1qRIformat =<<EOS
value:
- 1
- 2
- sub_value:
-3
EOS
log(format)
0813デフォルトの名無しさん
2014/11/17(月) 20:12:13.72ID:Zff6ZJ9C改行コードはみんなどれを使ってるの?
RoRがよく使われる→Linuxでのサーバで動かす事が多い→じゃあLFで
と思ってるんだけどどうなんだろ
0814デフォルトの名無しさん
2014/11/17(月) 20:26:34.24ID:KnCa0+eCLinux上で書いてるしツール使うしLFだ。
0815デフォルトの名無しさん
2014/11/17(月) 20:44:52.20ID:Rk/OFXwa公開しないなら好きにせえ
ちなみに「UTF-8のテキストデータファイル」の改行はCRLFが好ましい
めんどくさいっすな
0816デフォルトの名無しさん
2014/11/17(月) 22:49:11.65ID:waLJuR/4フォームデータは大抵CRlFで送られてくるんだからDBもソースも統一すればいいじゃん
0817デフォルトの名無しさん
2014/11/18(火) 00:07:31.51ID:zO/+2tjaruby -e 'puts $:'
というワンライナーは何をするものですか?
0818デフォルトの名無しさん
2014/11/18(火) 00:41:56.74ID:gfsRu8uJ0819デフォルトの名無しさん
2014/11/18(火) 09:33:02.58ID:zO/+2tja0820デフォルトの名無しさん
2014/11/19(水) 00:24:48.78ID:MmxntMffhttp://fox.2ch.net/test/read.cgi/poverty/1416286592/
0821デフォルトの名無しさん
2014/11/19(水) 15:03:51.14ID:JZ2oYyd90822デフォルトの名無しさん
2014/11/19(水) 21:30:03.59ID:bEK2kswG後で後悔することになる
0823デフォルトの名無しさん
2014/11/19(水) 22:28:07.63ID:eeZRz+g3アンチRubyの悲痛な叫びが心地よい
0824デフォルトの名無しさん
2014/11/19(水) 22:57:16.50ID:W0VjaeDS完璧な言語が出るまでコードを1行もかかない、あなた勝ち組ですね。がんばって勝ち続けてください。
0825デフォルトの名無しさん
2014/11/19(水) 23:21:14.70ID:pniQ/9rVRubyは下の方だから
0826デフォルトの名無しさん
2014/11/19(水) 23:27:57.56ID:DTfPg3SF0827デフォルトの名無しさん
2014/11/19(水) 23:35:12.66ID:tsrrXfqY察してやろうぜ
0828デフォルトの名無しさん
2014/11/20(木) 00:03:37.59ID:W0VjaeDS0829デフォルトの名無しさん
2014/11/20(木) 00:32:02.49ID:Po2bP3CX地球温暖化を促進する人類の敵
0830デフォルトの名無しさん
2014/11/20(木) 00:35:02.06ID:wJ3BgpRF・オブジェクト指向プログラミング
・関数型プログラミング
を学び&それを実践したいのであれば、
数あるスクリプト言語の中でも Ruby が最良の選択
(もしS式に拒否反応が無ければ Scheme 等のLisp族でもいいんだけどね)
0831デフォルトの名無しさん
2014/11/20(木) 01:38:44.14ID:Po2bP3CX今から始めるとか馬鹿
0832デフォルトの名無しさん
2014/11/20(木) 02:12:28.23ID:e9ZJqUMF0833デフォルトの名無しさん
2014/11/20(木) 02:30:11.35ID:wwhDP9Xoこいつからジェンガを取り上げた奴は名乗り出ろ
せっかく一人で遊んでいたんだぞ
0834デフォルトの名無しさん
2014/11/20(木) 07:04:02.44ID:pbftQxxbこれほどeach(=副作用)が多用される言語も珍しい
0835デフォルトの名無しさん
2014/11/20(木) 07:16:53.48ID:c59L+Vlf0836デフォルトの名無しさん
2014/11/20(木) 11:04:10.34ID:8q4P6WgWちゃんと技術的に劣ったものであると啓蒙しないと
0837デフォルトの名無しさん
2014/11/20(木) 11:26:45.76ID:EmAWw9wC0838デフォルトの名無しさん
2014/11/20(木) 11:34:28.77ID:oY1GPGoB0839デフォルトの名無しさん
2014/11/20(木) 17:04:35.26ID:PQZG72rlどっちかしか認めないような潔癖な人には使えんけど
自分で使い分けられれば柔軟性抜群
0840デフォルトの名無しさん
2014/11/20(木) 17:49:56.50ID:caZHrNzS言語のアンチに見えるけど、中身は事大主義者。
0841デフォルトの名無しさん
2014/11/20(木) 18:12:45.00ID:IC7tS2EU0842デフォルトの名無しさん
2014/11/20(木) 20:57:03.73ID:/tpcb8RQいっぱいいるよ
0843デフォルトの名無しさん
2014/11/21(金) 00:58:04.29ID:giR2E1os0844デフォルトの名無しさん
2014/11/21(金) 01:03:48.65ID:60xXXhMX0845デフォルトの名無しさん
2014/11/21(金) 04:06:02.72ID:eKmyEZjy0846デフォルトの名無しさん
2014/11/21(金) 05:30:28.73ID:cPEjXala詳しく頼む
定期的にこの煽りがあるけど
単発ばっかで要領を得ないんだわ
0847デフォルトの名無しさん
2014/11/21(金) 07:05:19.39ID:sRt7xdzZ0848デフォルトの名無しさん
2014/11/21(金) 07:45:59.05ID:R5E6cwETね
0849デフォルトの名無しさん
2014/11/21(金) 20:05:33.20ID:TFSPfM6y0850デフォルトの名無しさん
2014/11/21(金) 20:34:56.03ID:cSM/9qCo0851デフォルトの名無しさん
2014/11/22(土) 15:01:29.78ID:Fg4QwLMY0852デフォルトの名無しさん
2014/11/22(土) 17:55:36.10ID:0Ov5Rq+L0853デフォルトの名無しさん
2014/11/22(土) 18:07:21.85ID:X2dPHIKP0854デフォルトの名無しさん
2014/11/22(土) 21:17:33.94ID:l5CnwIKYもっとこなれてこないとね
0855デフォルトの名無しさん
2014/11/24(月) 00:27:11.00ID:kZ0WyWVZsleepを連続して実行していくとどうしても誤差が蓄積してしまうので時刻で実行したいです
0856デフォルトの名無しさん
2014/11/24(月) 00:52:06.38ID:wCkEdUJAcronなりタスクスケジューラなり
0857デフォルトの名無しさん
2014/11/24(月) 01:59:17.24ID:amuxOgLW簡易なwebサービスは近い将来js以外要らなくなるのかな
rubyやrailsが古臭いjavaみたいに見えてきた
0858デフォルトの名無しさん
2014/11/24(月) 03:28:29.31ID:DrhgZmlIうざいから他行け
0859855
2014/11/24(月) 09:10:54.14ID:kZ0WyWVZそれだとシステムが複雑になりますし、時間の分解能にも不安があります
ストリーミングサーバー的なものを作っているので実時刻との同期は必須です
ひとまず実時刻との差を監視してsleepする時間を補正するようにしましたが
複雑さが増してスマートな実装ではないので時刻を指定して実行できればと
思います・・
0860デフォルトの名無しさん
2014/11/24(月) 09:50:30.21ID:XgjgsylwRTOS+C言語/アセンブラの組み合わせぐらいしかない。
0861デフォルトの名無しさん
2014/11/24(月) 23:54:21.50ID:kSOFqGw41画面分の描写(print)ですら時間が掛かってしまう上に、画面をクリアするとちらついてしまいます。
win32apiを使えばコンソール上でのダブルバッファリングもできるようですが……。
そもそもRubyでやることではないような気もするのですが、何か良い案は無いでしょうか。
0862デフォルトの名無しさん
2014/11/25(火) 00:41:45.41ID:k1lxDZb5Linuxにする。
0863デフォルトの名無しさん
2014/11/25(火) 00:42:34.00ID:nXU8Vkzfwheneverはどう?
結局cronだけど、rubyで書けるからシステムの一部っぽくできると思うけど
0864デフォルトの名無しさん
2014/11/25(火) 02:10:00.66ID:GhhP0JI7HSP
0865デフォルトの名無しさん
2014/11/25(火) 03:49:54.47ID:hT+PxFm6それを簡単だと思ってるのはお前だけだ
「パソコンに簡単な調理をさせたい」とか言ってるレベル
0866デフォルトの名無しさん
2014/11/25(火) 04:38:41.54ID:kfvoFU9d0867デフォルトの名無しさん
2014/11/25(火) 04:47:13.37ID:xqodwvk6混同するな
0868デフォルトの名無しさん
2014/11/25(火) 05:16:38.77ID:5ygUTnCM0869デフォルトの名無しさん
2014/11/25(火) 05:29:17.43ID:x/sCQWRu自分で解決策わかってるのに何で質問するかね
0870デフォルトの名無しさん
2014/11/25(火) 06:58:35.14ID:RMbmAFFA0871デフォルトの名無しさん
2014/11/27(木) 04:41:08.12ID:6zp/+XUyリンク先のApacheのログ解析の話です。 http://pmakino.jp/tdiary/20070907.html
.*が最長一致ということは理解できたのですが、[^ ]*が最短一致になる理由がわかりません。
*が付いているので最長一致に見えるのですが。。
よろしくお願いします。
0872デフォルトの名無しさん
2014/11/27(木) 05:24:29.91ID:isFZ5zeq*?、+? は最短マッチ
[^ ]* は空白以外の文字の最長マッチじゃないの?
試してみれば?
"abc def ghi" → "abc"
0873デフォルトの名無しさん
2014/11/27(木) 05:24:39.10ID:ureSvumC先ず[^ ]がスペース以外の文字にマッチするということ。
リンク先読んでないが、
スペース以外の文字の繰り返しだから、スペースが出てきたら、そこまでしかマッチせず最短一致となる。
最長一致だとマッチ内容にスペースが含まれることがある。
よく後ろにその除外した文字が続く。
スペースわかりにくいので違う文字だと、.*_と[^_]*_の違い。
0874デフォルトの名無しさん
2014/11/27(木) 07:00:47.62ID:6zp/+XUyなるほど、理解出来ました。ありがとうございます!
0875デフォルトの名無しさん
2014/11/27(木) 07:21:17.53ID:UAvli5hO0876デフォルトの名無しさん
2014/11/27(木) 10:35:09.67ID:4ox/+qp0・否定文字クラスを使って簡単に表現できる
という場合に最短一致ぽい感じでマッチさせるためのイディオム
かな?
0877デフォルトの名無しさん
2014/11/27(木) 12:29:32.39ID:3FdyDcSlきこえるだろ
0878デフォルトの名無しさん
2014/11/27(木) 12:31:34.44ID:kRLD/q+H初期段階でWindowsは対象外扱いになって以降Windowsお断りの流れが残ってる。
だから、Windows(デスクトップ)で使いたいのならJRubyにしてJava経由で外部に
アクセスすればいいんじゃないか?
0879デフォルトの名無しさん
2014/11/27(木) 12:35:30.92ID:4ox/+qp0著名コミッタでWindowsが日常使うインフラ、という人は普通にいるし。
0880デフォルトの名無しさん
2014/11/27(木) 13:27:38.66ID:Zw4dztb/空白有り無しと最長最短は全く関係ないだろ
0881デフォルトの名無しさん
2014/11/27(木) 19:59:53.06ID:x9t4QVIg0882デフォルトの名無しさん
2014/11/27(木) 20:00:52.83ID:x9t4QVIg0883デフォルトの名無しさん
2014/11/27(木) 20:04:51.12ID:Gbz/cNhA0884デフォルトの名無しさん
2014/11/27(木) 23:46:42.90ID:VtF/vuC10885デフォルトの名無しさん
2014/11/28(金) 09:01:09.20ID:9YzKv7iorequire "cgi"
cgi=CGI.new
print cgi.header({
"status" => "REDIRECT",
"Location" => "http://yahoo.co.jp"})
これでstatus 302 Found Content-Type:text/html Location: http//yahoo.co.jp
とエラーになるのだけど
0886デフォルトの名無しさん
2014/11/28(金) 14:04:23.45ID:9YzKv7io呼出しの後に書く方法ないの?
JavaScriptのfunctionの位置が後ろでもいいのと同じように
0887デフォルトの名無しさん
2014/11/28(金) 14:31:02.42ID:9YzKv7ioスレチェッカーみたいなのが必要だな
0888デフォルトの名無しさん
2014/11/28(金) 16:33:52.22ID:s06WWqGk0889デフォルトの名無しさん
2014/11/28(金) 16:36:18.24ID:9YzKv7ioそうだね作るよ
レンサバとtwitterの連携をして
2chスレとかブログとかの更新状況をチェックさせたいね
0890デフォルトの名無しさん
2014/11/28(金) 17:22:02.27ID:4Q/0sUIlkwsk
0891デフォルトの名無しさん
2014/11/28(金) 17:24:27.65ID:9YzKv7iodef test
puts "a"
end
test
としたらエラーだよね
0892デフォルトの名無しさん
2014/11/28(金) 17:29:57.85ID:9YzKv7io逆だった
test
def test
puts "a"
end
としたらエラー?
0893デフォルトの名無しさん
2014/11/28(金) 17:32:19.81ID:dYLaj0CImain を造れば解決
def main
test
end
def test
puts "a"
end
0894デフォルトの名無しさん
2014/11/28(金) 17:38:43.47ID:9YzKv7ioありがとう!
やってみる
0895デフォルトの名無しさん
2014/11/28(金) 23:02:39.06ID:s06WWqGkなるべく最新版のRubyの説明が欲しいんだけど
0896デフォルトの名無しさん
2014/11/28(金) 23:06:23.12ID:X9B4zpDK0897デフォルトの名無しさん
2014/11/28(金) 23:57:36.86ID:rB015CFcじゃあ、オススメは?
って聞くと返事ないんだなこれが。
0898デフォルトの名無しさん
2014/11/29(土) 00:26:10.82ID:oYYPhm210899デフォルトの名無しさん
2014/11/29(土) 00:51:08.50ID:VwCgtTmZ>{"status" => "REDIRECT",
>"Location" => "http〜"}
Hashの書き方は、以下のどちらか。:b はsymbol
{a: "あ", :b => "123"}
>>895
たのしいRuby、第4版、2013
0900デフォルトの名無しさん
2014/11/29(土) 01:29:23.17ID:oGP8NIsUif $url.include?("google")
$html.gsub!("google", "goooooooogle")
end
みたいなフィルタスクリプト書いて
好き勝手にHTML書き換えるような方法ってないですか
greasemonkeyのruby版的な
0901デフォルトの名無しさん
2014/11/29(土) 01:45:08.48ID:7z0e2gGb0902デフォルトの名無しさん
2014/11/29(土) 04:01:09.37ID:1zUyeCTh文字列をキーとするハッシュを期待しているところに
シンボルをキーとするハッシュを渡したらいけない
本を読み違えてないか
>>885
情報足りないけどとりあえずNPHでぐぐって
0903デフォルトの名無しさん
2014/11/29(土) 05:28:59.78ID:SoXvwZNw0904デフォルトの名無しさん
2014/11/29(土) 06:50:43.55ID:1zUyeCThごめんNPH云々なしで。書いてきた
http://codepad.org/3Z6gcanA
0905デフォルトの名無しさん
2014/11/29(土) 11:29:23.68ID:JNwBuwtkhttp://www.amazon.co.jp/dp/4798139823/
0906デフォルトの名無しさん
2014/11/29(土) 17:40:54.50ID:SoXvwZNw表紙からして怪しいな
0907デフォルトの名無しさん
2014/11/30(日) 03:55:44.88ID:b4nmdqGsあるある
0908デフォルトの名無しさん
2014/11/30(日) 13:25:05.09ID:LSdEo5lN今、オススメの開発環境てどんな構成でしょうか
古書によるとIDEがRDE
ActiveScriptRubyとか書いてあり、
調べた結果
ソフトの更新が2007/08/02とか・・ちょっと不安なもので。
0909デフォルトの名無しさん
2014/11/30(日) 14:15:47.70ID:R4jt06qnVMにLinux入れてその上で開発
使うのはエディタ
Sublime TextでもvimでもEmacsでも好きなのをどうぞ
0910デフォルトの名無しさん
2014/11/30(日) 14:42:59.54ID:DANrX/9URuby使うんならまずはWinを捨てるのが先だ
0911デフォルトの名無しさん
2014/11/30(日) 14:54:07.38ID:1W1RBCUH今あなたの使っている開発環境でRuby2.x対応のプラグインかなんか探してください
0912デフォルトの名無しさん
2014/11/30(日) 15:47:02.16ID:z7OEJfrL仕事じゃないならemacsで十分だけど
0913デフォルトの名無しさん
2014/12/01(月) 22:21:30.46ID:x2gQFt7S見通しが良くバグの少ないコードを書いている証でもある。
0914デフォルトの名無しさん
2014/12/01(月) 23:55:20.61ID:zTqy9NYJ0915デフォルトの名無しさん
2014/12/02(火) 01:13:50.70ID:e+ByT0s5エディタを使いこなしてると自負する馬鹿は大抵コピペコードを量産するカス
0916デフォルトの名無しさん
2014/12/02(火) 01:29:26.47ID:h63pZmVM知り合いに恵まれてないだけ。
0917デフォルトの名無しさん
2014/12/02(火) 01:30:37.60ID:2myFe3p+0918デフォルトの名無しさん
2014/12/02(火) 01:59:01.87ID:0dk6vh22低レイアになるほどIDEに依存する部分は少なくなるし
ただのアプリ開発やWEBエンジニアが必死こいてemacsカスタマイズしながら効率は悪いやつとか
マジで死ねって思うけどね
0919デフォルトの名無しさん
2014/12/02(火) 08:13:53.30ID:/FF2eUWr0920デフォルトの名無しさん
2014/12/02(火) 13:54:53.03ID:2HEveihy0921デフォルトの名無しさん
2014/12/02(火) 20:48:46.36ID:baLmU3AB0922デフォルトの名無しさん
2014/12/03(水) 09:19:57.96ID:rVeqzZtKメインの処理
ensure
puts("err",$!,$@)
end
と同等の処理を
require 'catcherr'
メインの処理
に書き換えることってできないですかね
begin ensure endで囲わず
最外周のブロックから飛び出た例外を何処かでキャッチするような実装
0923デフォルトの名無しさん
2014/12/03(水) 19:05:09.67ID:RfWQR09uhttp://qa.atmarkit.co.jp/q/58
また、1.8.7以降ではSymbol#to_procを利用して、
File.open(file, &:read)
と書くこともできます。
おそらくこれを見てイディオムとして
覚えたのではないかと思いました。
↑のページに書かれているイデオムってどこで覚えるんですか?
openメソッドで調べても&:readとか無いんですが。
0924デフォルトの名無しさん
2014/12/03(水) 20:28:13.06ID:AZ6paHjN& はブロックを渡すときに使う
ブロックでないもの (:read) を渡そうとしたときには、#to_proc が呼ばれてその結果が渡される
File.open(file, &:read) は File.open(file) {|f| f.read } と等価
0925デフォルトの名無しさん
2014/12/03(水) 21:32:25.36ID:xz3L3IMuFile.openに限らず、メソッド呼び出し時の&という修飾子やSymbolに関する仕様なので
リファレンスマニュアルだとこのあたり参照
http://docs.ruby-lang.org/ja/2.1.0/doc/spec=2fcall.html#block
http://docs.ruby-lang.org/ja/2.1.0/class/Symbol.html#I_TO_PROC
0926デフォルトの名無しさん
2014/12/03(水) 22:01:16.96ID:UQcSH8bq実際に読み書きすると分かりにくく忘れやすい。
やろうとしていることは単なるレシーバーの省略に過ぎないのにブロックと
Symbolの挙動に関する仕様を覚えてないといけないせいだろう。
0927デフォルトの名無しさん
2014/12/04(木) 08:45:48.17ID:ce/wf1gaStringIO を使えば?
StringIOは入出力を行う振りをする。
つまり、StringIOに対して、入出力できる
require "stringio"
io = StringIO.new
io.puts("abc")
0928デフォルトの名無しさん
2014/12/04(木) 11:01:14.33ID:isKydaHb自力でやるのでなく、ライブラリか何かでできたような気がしていたのですが勘違いでしたかね
0929デフォルトの名無しさん
2014/12/04(木) 11:27:49.19ID:V4T1Mi+W0930デフォルトの名無しさん
2014/12/04(木) 18:26:13.52ID:vTyshef80931デフォルトの名無しさん
2014/12/04(木) 19:17:37.69ID:isKydaHbこれだ!名前忘れてた ありがとうございます
0932デフォルトの名無しさん
2014/12/06(土) 09:30:37.61ID:SY1DjOc1いい方法があれば教えていただけないでしょうか
0933デフォルトの名無しさん
2014/12/06(土) 09:59:59.94ID:O2PZNRYp0934デフォルトの名無しさん
2014/12/06(土) 13:53:19.49ID:SY1DjOc1ruby on railsの話ですので、スレ違いのようでした。申し訳ありません。
0935デフォルトの名無しさん
2014/12/06(土) 15:48:55.31ID:fsY1bGfgバックアップならDBの機能を使うのが一番確実かつ高速
0936デフォルトの名無しさん
2014/12/06(土) 22:50:21.90ID:97ikO/+Shttp://ideone.com/4zVsIk#
0937デフォルトの名無しさん
2014/12/06(土) 22:56:02.59ID:97ikO/+Sf = Figure.new
f.calcAreaSum
は
r = Region.new
r.calcAreaSum
の間違い
0938デフォルトの名無しさん
2014/12/06(土) 22:58:28.94ID:O2PZNRYphttp://ideone.com/Feolqo
compositeならRegionもFigureを継承しろ
0939デフォルトの名無しさん
2014/12/06(土) 23:03:48.85ID:97ikO/+Sありがとう。助かりました。
0940デフォルトの名無しさん
2014/12/06(土) 23:06:18.79ID:97ikO/+Sすまん、ひとつ質問。
calcAreaSumメソッド内のsumが@sumになってなかったのが原因だったみたいで、そこを修正したら動いた。
RegionがFigureを継承していないといけないもの?
Regionが継承している必要はないかなと思ってたのだけれど。
0941デフォルトの名無しさん
2014/12/07(日) 07:41:59.28ID:O6jlUXZ3必要ないかどうかはともかくそうしないとcompositeにならん
枝と葉を同一のインターフェースで扱うのがcompositeパターンだ
まあ実際compositeが必要なケースなんてまず無いけどね
設計者のオナニー
0942デフォルトの名無しさん
2014/12/08(月) 00:17:30.45ID:foBCsgK4・calcAreaSum以外の任意のメソッドも同様の振舞をするように
・継承を使わず
・メソッド定義を繰り返さずに済む
ように作ってみよう。まぁオナニーつーか練習でな。
0943デフォルトの名無しさん
2014/12/08(月) 00:50:44.64ID:aCs4a6OVなるほど、もっかいCompositeがどんなものか見てみる。
>>942
ん??全然分からん…
0944デフォルトの名無しさん
2014/12/08(月) 23:04:19.93ID:4fpsMANThttp://www.amazon.co.jp/dp/4274050653/
本屋で見つけて買ってみた。
2章ぐらい読んだが、すごく面白いのでお勧め。
0945デフォルトの名無しさん
2014/12/08(月) 23:16:33.06ID:NGUYkyOW0946デフォルトの名無しさん
2014/12/09(火) 17:17:06.41ID:a/7FaIvm作りながら・・の方を読んでるけど実用的で理解し易かった
0947デフォルトの名無しさん
2014/12/09(火) 19:15:57.80ID:6Ly9A1WV言語フェチとか分解フェチみたいな人じゃないと厳しいかも
0948デフォルトの名無しさん
2014/12/09(火) 19:19:14.74ID:2/WMNdES0949デフォルトの名無しさん
2014/12/09(火) 19:21:43.66ID:56meK9wT基本的にバッドノウハウだ
0950デフォルトの名無しさん
2014/12/09(火) 22:02:10.16ID:7jn1Y2FE「作りながら・・」のほうは Ruby を使って何かアプリを作ろうとしている人にとって、
有益な良い書籍だね
一方、>>944 は(Amazon で目次レベルでの判断だけど、)
Ruby インタプリタそのものに興味がある人、
あるいは言語処理系(インタプリタやコンパイラ)の自作に興味がある人向けの本に見える
Ruby 1.8 向けには RHG(Ruby Hacking Guide) と呼ばれる本があって、
後者の人達には好評だった(とはいえ Ruby プログラマ全体からすれば一部だけど...)
・『Rubyソースコード完全解説』サポートページ
http://i.loveruby.net/ja/rhg/
でも Ruby 1.9 で導入された仮想マシン(YARV)をベースにした RHG に相当する本は存在せず、
登場が長く待たれていた
>>944 があらゆる Ruby プログラマにとってすぐ役に立つ本だとは決して言えないけど、
いつも使っている Ruby の内部構造を知ることは将来的なステップアップにつながると思う
(車やバイクを趣味としている人が、エンジン等のメカニズムに興味を持つのと似ている)
0951デフォルトの名無しさん
2014/12/09(火) 22:28:00.64ID:zeFrRkpb実装が仕様、とバッドノウハウがリンクする部分の論理がわからんのだが
0952デフォルトの名無しさん
2014/12/09(火) 23:40:04.76ID:u5JX9V0Ehttp://daily.2ch.net/test/read.cgi/newsplus/1418097669/
0953デフォルトの名無しさん
2014/12/10(水) 00:31:41.98ID:U+9OJfKH思ったら単に〜日でこんなの書けた俺スゲエ、って自慢話みたいな薄い内容でガッカリ
味付けは「みんなの参加も待ってるよ」といい感じに見せて実は単なる自慢だよなアレ
そういうのはどうでもいいからもっと技術的に実のあること書いて欲しかった。
0954デフォルトの名無しさん
2014/12/10(水) 00:33:46.52ID:QXcQ5EoTそういう取り方しかできない人は何読んでも一緒だよ
0955デフォルトの名無しさん
2014/12/10(水) 05:04:05.05ID:+IoSb7+r特定の実装のみに深く依存した知識やテクニックをバッドノウハウと呼ぶのはわりと普通だろ
プログラミングなんてバッドノウハウ覚えてなんぼの世界だが、程度問題だね
0956デフォルトの名無しさん
2014/12/10(水) 05:17:46.52ID:dRumJmjh0957デフォルトの名無しさん
2014/12/10(水) 10:32:12.86ID:4ySbe8P6得意がって使っている頭の弱い人見ると
かわいそうになってくる
0958デフォルトの名無しさん
2014/12/10(水) 14:39:23.04ID:X/Vb7CZT0959デフォルトの名無しさん
2014/12/10(水) 20:14:26.27ID:qlA9G0h0Ruby使ってて強い奴一杯いるから頭の弱いなんてことはないと思うが
0960デフォルトの名無しさん
2014/12/11(木) 00:32:45.57ID:KeFdm/Mm2個右にずらすなら、
v = Vector[0, 1, 2, 0, 0]
p v.slide(2) # => [0, 0, 0, 1, 2]
というイメージです。
今のところ、arrayで持っておいて、
v = [0, 1, 2, 0, 0]
original_length = v.length
p v.unshift(Array.new(2, 0)).flatten.take(original_length)
とやっています。
もっと綺麗な書き方があれば教えて下さい
Vectorには拘るわけではないので、どんな方法でも構いません
0961デフォルトの名無しさん
2014/12/11(木) 00:43:54.20ID:45mXFYqIArray#rotate
0962デフォルトの名無しさん
2014/12/11(木) 00:48:00.61ID:45mXFYqI(Array.new(0, 2) + v).take(v.length) てことかな?
0963デフォルトの名無しさん
2014/12/11(木) 00:52:21.31ID:45mXFYqI他にも
Array.new(2, 0) + v[0...-2]
v.rotate(-2).fill(0, 0, 2)
とか書けるね
0964デフォルトの名無しさん
2014/12/11(木) 23:39:59.15ID:j2eKWXxCrotate 知らなかった
調べたら他にも知らないのがあった reverse choice
0965デフォルトの名無しさん
2014/12/12(金) 11:22:11.81ID:wvqGZ6uFもっと綺麗な書き方ってありますでしょうか?
tmp = File.open("foo","r").read.sub(/\n.*\z/, "")
File.open("foo", "w"){|f| f << tmp}
0966デフォルトの名無しさん
2014/12/12(金) 11:47:33.50ID:r3Fvlg1D0967デフォルトの名無しさん
2014/12/12(金) 12:02:57.32ID:CU7D9V/b0968デフォルトの名無しさん
2014/12/12(金) 19:34:47.77ID:1pIHSp7p何これ?
今使っているの1.9.3だけど最新バージョンだとこんなのできるの?
0969デフォルトの名無しさん
2014/12/12(金) 21:12:49.28ID:acGnDnrN0970デフォルトの名無しさん
2014/12/12(金) 21:13:06.40ID:8AuYnR02> Rubyのしくみ -Ruby Under a Microscope-
> http://www.amazon.co.jp/dp/4274050653/
Amazon売り切れなので、PDFで買ってみた。 500円安い。
http://estore.ohmsha.co.jp/titles/978427405065P
0971デフォルトの名無しさん
2014/12/12(金) 23:48:26.96ID:1pIHSp7pこんなんはどうぢゃろ?
File.open("foo", "r+"){|f| f.truncate(f.size - f.readlines[-1].bytesize)}
>>969
Thanks
そうかやはり出来ないか・・
0972デフォルトの名無しさん
2014/12/13(土) 00:25:27.81ID:kA/WgxRu読み終わったけど得るもの少ない
敢えて抽象的に説明しようとしてるんだろうけど無理矢理感が半端ない
実装はコラム枠で触れる程度
まぁ中卒高卒プログラマで溢れる現在にはこれぐらいがいいのかね
0973デフォルトの名無しさん
2014/12/13(土) 00:28:40.88ID:+p+L+BhL素晴らしいサービスだけどもうちょっと書籍の種類増やして欲しいな
0974デフォルトの名無しさん
2014/12/13(土) 00:36:48.47ID:Iq5cIN4qアスキーとかはそうなってる
0975デフォルトの名無しさん
2014/12/13(土) 08:43:45.27ID:3ehKG0WS配列Aに名前、Bに年令、Cに電話番号が入っている時、
B年令順にソートしたとき、
A,Cも同じように入れ替わるのは、どう作ればよい?
ただし、DBを使わず
クラスを作って、名前・年令・電話番号フィールドを作り、
年令でクラスごと、ソートするのか?
クラスに、Comparatorインターフェースを追加して、
比較関数 <=> を定義すればよいのか?
また、sortは比較する時に、同じ関数を何度も呼んで非効率だから、
sort_byを使えばよいのか?
sort_byなら、関数を呼んだ結果を保存して、
その結果を使って比較するから
0976デフォルトの名無しさん
2014/12/13(土) 08:54:48.07ID:1EyzOdESHashの配列で .sort_by{| hash | hash[:age] } するとか
サクッとデータ構造定義するにしてもclassでやらずにStruct使うとか
ちょっとしたことでクラス定義しちゃうのも、ある意味
クラスの扱いが手軽なRubyらしくていいかな、とも思うけどね
0977デフォルトの名無しさん
2014/12/13(土) 09:08:10.50ID:Iq5cIN4qCなら構造体で。
最初からなんでもコンテナが用意されているのに慣れていると、こういうバカみたいな
質問する奴でてくるのかな?
0978デフォルトの名無しさん
2014/12/13(土) 09:09:57.14ID:3ehKG0WSA + B → 1,2,2,3 重複あり
A | B → 1,2,3 重複なしとなるが、
順列ではなく組合せで、配列が同じかどうかを判別したい
[1,2,2][2,1,2][2,2,1] → 1,2,2
左のどの順列も、[1,2,2]と同じ
Rubyで、組合せマッチはどうすればよい?
0979デフォルトの名無しさん
2014/12/13(土) 09:11:24.05ID:KEKavmkB0980デフォルトの名無しさん
2014/12/13(土) 09:11:32.36ID:1Rys2+MBSet
0981975
2014/12/13(土) 09:19:06.92ID:3ehKG0WSHashの配列とはどういう意味?
難しくてよくわからない
A名前は同姓同名もありで、このレコードはキーなしで、
幾つかのフィールドを持つ、単なる構造体と考えてください
0982デフォルトの名無しさん
2014/12/13(土) 09:22:41.20ID:uQ37H43ssorted_index.each{|i|
p [A[i],B[i],C[i]]
}
0983デフォルトの名無しさん
2014/12/13(土) 09:23:28.89ID:uQ37H43s×:sorted_index=(0..B.size).sort_by{|i|B[i]}
○:sorted_index=(0..B.size-1).sort_by{|i|B[i]}
0984975
2014/12/13(土) 09:23:30.88ID:3ehKG0WS0985デフォルトの名無しさん
2014/12/13(土) 09:26:51.09ID:1Rys2+MB最近の言語では列ごとに縦の配列を作るなんてFortranや昔のCみたいな前時代的な発想はしない
確かにメモリの利用効率やアクセス効率の面でメリットはあるが、
Rubyの配列はもともとクソ非効率だから意味は無い
レコードごとにハッシュ作るような昔の人が見たら卒倒するようなことすら平気で行われる
0986デフォルトの名無しさん
2014/12/13(土) 09:27:56.22ID:uQ37H43s処理負荷気にしなくていい程度なら全要素ソートしてから比較できればいい
A.map(&:sort) | B.map(&:sort) とか
0987デフォルトの名無しさん
2014/12/13(土) 09:30:00.76ID:DLY4IovQhttp://peace.2ch.net/test/read.cgi/tech/1418430552/
0988975
2014/12/13(土) 09:36:37.22ID:3ehKG0WS配列A,B,C自体は、並べ替えずそのままで、
ソート結果のインデックスのみを使うんだね
もし配列A,B,C自体を並べ替えるのなら、
クラスやStructを使えばよいの?
>>980
Setですか、調べてみます
皆様、回答ありがとう
0989デフォルトの名無しさん
2014/12/13(土) 09:52:04.58ID:uQ37H43sその場で並び替えたいだけならいくらでもやりようはあるよ
A,B,C=[A,B,C].map{|a|sorted_index.map{|i|a[i]}}
とか
0990デフォルトの名無しさん
2014/12/13(土) 09:54:01.10ID:uQ37H43sとか
0991975
2014/12/13(土) 09:54:01.70ID:3ehKG0WS>>978
は同じ要素ありだから、集合を使えない
Set,SortedSetは集合だから、同じ要素は持てない
0992デフォルトの名無しさん
2014/12/13(土) 09:57:09.43ID:1Rys2+MBだったらソートしてから比較しろ
0993975
2014/12/13(土) 10:06:02.73ID:3ehKG0WSRでも行列を入れ替える関数などに、驚いたものですが、
もはや、Rubyは神です!
Rubyの奥深さを、少し知ることが出来ますた
0994デフォルトの名無しさん
2014/12/13(土) 10:07:58.45ID:1Rys2+MB0995デフォルトの名無しさん
2014/12/13(土) 10:14:06.14ID:DLY4IovQレス数が950を超えています。1000を超えると書き込みができなくなります。