Ruby 初心者スレッド Part 52
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/06/06(木) 23:50:09.17質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
RoRはスレ違いよ
前スレ
Ruby 初心者スレッド Part 51
http://toro.2ch.net/test/read.cgi/tech/1358636526/
るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
逆引きRuby
http://www.namaraii.com/rubytips/
0756794
2013/10/13(日) 17:40:58.21書店に行くから参考にしたいと思って聞いたのに誰も答えてくれないし
後の書き込みへの罵りばっかりってここけっこう民度ひどくないかな
0757デフォルトの名無しさん
2013/10/13(日) 17:41:29.670758611
2013/10/13(日) 17:41:52.360759デフォルトの名無しさん
2013/10/13(日) 17:45:10.460760デフォルトの名無しさん
2013/10/13(日) 17:47:24.42本の良し悪しなんてその人次第だからなあ、答えようがない
誰かにとって良い本が他の誰かには糞だったりもする
万人に糞な本ならしばしばあるが、万人に良い本は本当に稀
てか答えようがないものに対してスルーされるのはマシなほうの対応よ?
スレによっちゃ割とまともな質問すら罵倒しかこないのに
0761デフォルトの名無しさん
2013/10/13(日) 18:16:28.350762デフォルトの名無しさん
2013/10/13(日) 18:25:42.881時間くらいで答えが帰ってくるほど人いないよ。
おれは、たのしいRubyが好きだな。
プログラミング言語Rubyは2.0は出ないんだろうか。
0763デフォルトの名無しさん
2013/10/13(日) 18:44:05.55やっぱり講演だけで食ってるんですかね
俺も金持ちになりたいので日本を代表するまつもと先生にあこがれてます
あとdankogaiさんとか堀江さんとかいますけど
こういう人は何で儲けてるんですかね
プログラミングができるだけじゃ食っていくのは難しいのでしょうか?
そりゃそうですよね
今は高校生でプログラミングする人おおいですもんね
0764デフォルトの名無しさん
2013/10/13(日) 18:49:09.96ひとつだけいえることは,
今,君が「プログラミングで儲けている」という人も
またプログラミングで名声を得ている人ですらも
「その人自身は,はじめた当初はそれを全然期待していなかった」
ということだね
0765デフォルトの名無しさん
2013/10/13(日) 20:11:48.13http://magazine.rubyist.net/?0042-FollowUpKirishimaRuby
>ヒロキは某社内では人並み以上にプログラムが書ける自信があり、実際にエースとし
>て扱われているわけです。 しかし、ヘタに人並み以上にプログラムが書けてしまう
>がゆえ、自分が「スゴイ級」のプログラマではないことも痛感していました。 天才
>ハッカーみたくイノベーティブなプロダクトを作れる気がしなかったのです。 その
>ため自分がこれから先、何を目的にプログラミングをしていけばよいのか意味を見い
>だせなくなっていました。
これもおもしろいよ。
0766デフォルトの名無しさん
2013/10/13(日) 20:34:43.10naoyaのはてなダイアリー:
http://d.hatena.ne.jp/naoya/20131013/1381651545
内容云々以前に写真に写っているのは見事にMacばかりだなぁ。
まあOSXの方がWinより都合が良いよね。
0767デフォルトの名無しさん
2013/10/13(日) 20:44:21.17>「その人自身は,はじめた当初はそれを全然期待していなかった」
>ということだね
こういう無欲たれみたいなことをいうけど、結構綺麗事で実は個人的な成功への欲求って重要なんじゃないの?
ノーベル賞も裏では苛烈な嫉妬や競争渦巻く世界らしいじゃん。
0768デフォルトの名無しさん
2013/10/13(日) 20:57:27.11レストランとはちょっと違うんじゃない。
Javaやってた人にはわかりやすくても、C言語しかやってない人にはさっぱりわからない本とかもあるだろうし。
好みじゃなくて、対象を絞って書かれているから。
0769デフォルトの名無しさん
2013/10/13(日) 20:58:31.92逆はあるかも。
0770デフォルトの名無しさん
2013/10/13(日) 21:00:31.170771デフォルトの名無しさん
2013/10/13(日) 21:01:16.56これはさすがにnaoya宣伝乙って言われても仕方ないよね
0772デフォルトの名無しさん
2013/10/13(日) 21:03:43.440773デフォルトの名無しさん
2013/10/13(日) 21:05:43.060774デフォルトの名無しさん
2013/10/13(日) 21:17:19.66科学系の場合
失敗してそれが成功のきっかけっていうのが
ノーベル賞選定の条件にあるらしいよ
0775デフォルトの名無しさん
2013/10/13(日) 21:20:40.940776デフォルトの名無しさん
2013/10/13(日) 21:28:50.54>こういう無欲たれみたいなことをいうけど、結構綺麗事で実は個人的な成功への欲求って重要なんじゃないの?
>
>ノーベル賞も裏では苛烈な嫉妬や競争渦巻く世界らしいじゃん。
とても分かりやすい比喩だね、某半島国家のノーベル賞事情とまったく同じ構図だ.....
普通の国(日本を含む):
知性的探究心と世界貢献のために研究に励んでいたら、気がつけばノーベル賞を次々と受賞
某半島国家:
個人(ないし国家)が受ける称賛への強烈な渇望により、ノーベル賞獲得を目指して
苛烈な嫉妬や競争を繰り広げたあげく、未だにノーベル賞ゼロ記録を絶賛更新中w
0777デフォルトの名無しさん
2013/10/13(日) 21:29:50.73みんながこうだと思ってるような本命予想を証明する研究の場合、規模の勝負になりやすい
カミオカンデとか素粒子を検出するだけでアホみたいな巨大な設備要するし
物事が予想通りに進むだけなら、単純に規模が大きい方が体力の差で押し勝つだけになってしまう
科学に限らずどの分野でもそうなんじゃないか?
0778デフォルトの名無しさん
2013/10/13(日) 21:31:46.170779デフォルトの名無しさん
2013/10/13(日) 21:34:39.87naoyaさん知らないのか
Ruby初心者スレッドで名無しの振りして宣伝してた偉人じゃないか
0780デフォルトの名無しさん
2013/10/13(日) 21:37:17.13光センサーの浜松ホトニクスと東大の宣伝になるぐらいで誰かが儲かるってことは特に無いんじゃないか知らんけど
0781デフォルトの名無しさん
2013/10/14(月) 06:18:55.29DXrubyなりSTARrubyなり、探せばいくらでもGUIライブラリあるだろ
0782デフォルトの名無しさん
2013/10/14(月) 09:17:06.32かんたんだよ
いろんなかきかたがあってとまどうけど
0783デフォルトの名無しさん
2013/10/14(月) 10:29:58.54gitでデータを管理するwiki
あれってどうやってgitからデータを取得しているんですか?
コマンドラインにgit logみたいなのを渡して結果を取得してる感じですか?
それともgitにはそういうapiがあるのですか?
0784デフォルトの名無しさん
2013/10/14(月) 10:30:26.50人類が月に行けても、人類そのものとして、行ったことそのものとしては「儲からなかった」のと同じ
月になにかがあったわけでもないし、道中結構人死んでるし、開拓航路のようになにか持ち帰って売れたわけじゃない
0785デフォルトの名無しさん
2013/10/14(月) 11:20:44.75未開の宇宙人に出会って
高価なものをだまくらかして安値で買って来て
こっちの糞価値のものをあっちで高値で売って来るのが貿易だよな
0786デフォルトの名無しさん
2013/10/14(月) 11:43:54.81現在の課題は輸送コストと核融合の実現だけど、それらがクリアできれば....
0787デフォルトの名無しさん
2013/10/14(月) 15:39:15.12一旦内部エンコーディングとは別の文字コードにinvalidオプション付きのencodeで変換して
そこからもう一度内部エンコーディングの文字コードにencodeとかアホか
0788デフォルトの名無しさん
2013/10/14(月) 16:34:14.612.1で String#scrub というのが追加される。
プレビュー版で使えるので使用感を試して見てくだされ。
0789デフォルトの名無しさん
2013/10/14(月) 16:36:29.840790デフォルトの名無しさん
2013/10/14(月) 17:32:14.68tkでorcaしてみたけど単純なアプリでも起動にごっつり時間かかるのが泣けるなあ…
0791デフォルトの名無しさん
2013/10/14(月) 17:36:00.190792デフォルトの名無しさん
2013/10/14(月) 19:20:23.57>>776
日本を含む東アジアは似たようなもんだよ.
日本人が自国の研究に対して手放しに評価することはほとんどない.田中耕一氏の場合も海外からの推薦だったという.
ただし,東アジアでダントツに日本の受賞が多いのは,それだけ優れた研究がなされていたということではある,それは誇っていいのだろうね.
ruby もおんなじだね.
0793デフォルトの名無しさん
2013/10/14(月) 19:21:59.80月面上でエネルギーに変換して地上に送る,と思うよ.もう核炉を地球上に作らせてもらえる時代じゃないよ…
0794デフォルトの名無しさん
2013/10/14(月) 21:13:48.850795デフォルトの名無しさん
2013/10/14(月) 21:32:44.93その点ではコンピュータプログラム言語はみんな同じだけども
0796デフォルトの名無しさん
2013/10/14(月) 21:44:36.410797デフォルトの名無しさん
2013/10/14(月) 22:04:26.140798デフォルトの名無しさん
2013/10/14(月) 22:24:59.64人によってRubyを好きになる理由はそれぞれだけど、
以下は自分の場合(比較対象は他のスクリプト言語)
・純粋オブジェクト指向言語である(ただし、Smalltakほどではない)
* あらゆるすべてのデータがオブジェクトなので、柔軟なプログラミングができる
* 最初からオブジェクト指向たることを目的に設計されているので、
素直なオブジェクト指向プログラミングができる(OOPの学習にも適している)
たとえば手続き型言語に後からオブジェクト指向を接ぎ木したPerlにはblessが、
Pythonには__self__といった意味不明な規則があるけど、Rubyにはそれが無い
・関数型プログラミングに適している(Matzによれば、Rubyの先祖はLispであるとのこと)
* あらゆるすべての構文が式なので、柔軟なプログラミングができる
たとえばPythonでは同じ条件分岐でも文と式を使い分けなければならないけど
Rubyでは気にする必要が無いし、同じくPythonのラムダ式の本体に変数宣言が書けない
といった(後から関数型を接ぎ木したことを要因とする)制限が無い
* Smalltalkから引き継いだブロック構文により、高階関数を簡潔に書ける
あと個人的には、Raccという完成度の高いパーザジェネレータが初期(=1.6の時代)から
存在した事も、Rubyを選んだ(=Perlから乗り換えた)理由として大きかった(そして、今でも大きい)
0799デフォルトの名無しさん
2013/10/14(月) 23:53:11.290800デフォルトの名無しさん
2013/10/15(火) 00:14:55.94あと言語経験少ない人から見た可読性もよろしくないからチームの開発に向いてない
ただ書いてて楽しい黒魔術面白すぎだは
0801デフォルトの名無しさん
2013/10/15(火) 01:05:42.630802デフォルトの名無しさん
2013/10/15(火) 01:09:48.53いいえ
0803デフォルトの名無しさん
2013/10/15(火) 06:51:25.47要領を得ない答え方ですね
0804デフォルトの名無しさん
2013/10/15(火) 07:43:20.90もはやRubyで幸せになれるのはRubyを作ってる連中だけなんじゃないの?
という希ガス
0805デフォルトの名無しさん
2013/10/15(火) 07:47:22.450806デフォルトの名無しさん
2013/10/15(火) 07:48:43.960807デフォルトの名無しさん
2013/10/15(火) 08:09:34.29これをメインの言語として勉強したりこれを使って使って大きなものを書く予定が
無くとも、第二言語や便利な小道具として知っていて損はない言語。
0808デフォルトの名無しさん
2013/10/15(火) 10:52:56.45Rubyの代わりいくらでもある
0809デフォルトの名無しさん
2013/10/15(火) 13:07:57.21じゃあ他の言語使え
無理すんな
0810デフォルトの名無しさん
2013/10/15(火) 13:12:13.93とか書くと
なんでこのスレ見てんだ
とか言うんだろうな
きもいな
0811デフォルトの名無しさん
2013/10/15(火) 13:15:10.35なんでこのスレ見てんだ
08121/2
2013/10/15(火) 14:51:07.24def self.connect(module_name_str)
cap = module_name_str.capitalize.to_sym
con = self.const_get(cap)
HogeHoge1.class_eval("include #{con}")
HogeHoge2.class_eval('include #{con}")
HogeHoge1.new
end
class HogeHoge1
end
class HogeHoge2
end
module Setting1
end
module Setting2
end
...
end
---------
foo = Client.connect("setting1")
foo.unkochinkomanko ...
08132/2
2013/10/15(火) 14:51:59.10モジュールの中にはHoge1だけで使うメソッド、Hoge2だけで使うメソッド、両方で使うメソッドが存在していて
これだと不必要なメソッドまでインクルードしてしまうということで分離したい
ただモジュール自体を分離することはなるべく避けたい
(モジュールの更新、追加時に余計な手間がかかるため)
モジュールのメソッドのアクセス制御をインクルードされるclass別に設定するみたいなことって出来ないんだろうか?
このモジュールのメソッドはHoge2にインクルードしてもHoge1からしかアクセス出来ないよーみたいな
もしくは設計そのものを見直すかうーん
0814デフォルトの名無しさん
2013/10/15(火) 14:58:20.67○ foo = Hoge.connect("setting1")
こうだなすまん
あーなんでめんどくせー他人の尻拭いせにゃならんのだ
0815デフォルトの名無しさん
2013/10/15(火) 15:37:52.99再定義したらうまいこと出来るような気がする。
0816デフォルトの名無しさん
2013/10/16(水) 20:47:08.63青木峰郎さんに感謝やな
彼はドラゴンブック参考にしたらしいけど
一橋大学出た文系プログラマってとこもミソな
0817デフォルトの名無しさん
2013/10/17(木) 22:06:11.34id_array = Array.try_convert(id) || [id]
みたいに書くのまどろっこしくて。
0818デフォルトの名無しさん
2013/10/17(木) 22:12:18.460819デフォルトの名無しさん
2013/10/17(木) 22:18:39.39それだ!
0820デフォルトの名無しさん
2013/10/17(木) 23:10:59.63やめといたほうがいいと思わないなら止めないけど
0821デフォルトの名無しさん
2013/10/17(木) 23:35:11.105678 def
という内容のtest.txtみたいなファイルを作ります。
で、rubyのワンライナーで
ruby -Ku -n -e 'print if /¥d¥d¥d¥d¥d/' test.txt
と入れます。
行頭が5桁の数字にマッチするので、何も出力されないのが正解なはずです。
Mac OSでは確かにそうなるのですが、WinXPにインストールしたRubyだと
マッチして両方の行が表示されてしまいます。
何が違うんでしょうか?
0822デフォルトの名無しさん
2013/10/18(金) 00:39:01.620823デフォルトの名無しさん
2013/10/18(金) 07:56:40.88ワンライナー内でダブルクォート文字列使いたい時は qq 使う
0824デフォルトの名無しさん
2013/10/18(金) 14:35:02.14なので表示されるのが正常動作
なぜMacだと表示されないのだろうか?
Windowsしか所持してないのでわからない
Ruby自体は、自前でコマンドラインをパースしなおすから '' でも ""でも大丈夫だが
CMD.EXEは ""しか認識しないので 特殊文字を引数にしたいときには注意
ついでにファイル名補完もRubyがやってくれて
(UNIXのshellみたいな)Dir.globと同仕様なので何気に便利
ruby hoge.rb foo{1[89],2[012]}.txt
とかできる
0825デフォルトの名無しさん
2013/10/18(金) 16:31:03.52¥になってるというオチで終了
0826デフォルトの名無しさん
2013/10/18(金) 18:30:28.29XPでも表示されなかったぞ
0827デフォルトの名無しさん
2013/10/18(金) 18:48:17.00元の文がわかりづらいが、Windowsのコマンドプロンプトで表示されるのがおかしいという意味だね
俺のはLinuxのシェルだが、そこでマッチしないのがコマンドプロンプトではマッチする
シングルクオートで囲まれた領域で-eオプションだと、プログラム本文と同一ということだと思っていたが、違うんだな
詳しい人の解説&追試求む
0828デフォルトの名無しさん
2013/10/18(金) 18:52:38.41821が書いた数字は4連続なんだが。
単に勘違いか。
俺はMacしか持ってないから確認できない。
$& でマッチした文字列を表示してみたらどうなる?
0829デフォルトの名無しさん
2013/10/18(金) 18:55:53.050830デフォルトの名無しさん
2013/10/18(金) 20:31:04.43>>823って事じゃないの?
0831デフォルトの名無しさん
2013/10/18(金) 21:14:49.79Win8 + Ruby2.0.0 で試したけど " と ' どっちで括っても再現しなかった
とりあえず再現できる人の OS と ruby -v が知りたい
0832デフォルトの名無しさん
2013/10/18(金) 21:38:08.51Win32APIを使ってクリップボードから文字列の値を取得したのですが、
どうも上手く行きません。
クリップボードは空になっているようなのでEmptyClipboardは働いているようなのですが…
どこがおかしくて、どう直せば動くでしょうか?
環境はWin7 64bit Ruby-2.0.0です。
主にここを参考にしました
ttp://d.hatena.ne.jp/nagachika/20100419/ruby19_dl2_windows_clipboard
以下プログラムリスト
0833デフォルトの名無しさん
2013/10/18(金) 21:38:42.86CloseClipboard = Win32API.new("user32", "CloseClipboard", [], "I")
SetClipboardData = Win32API.new("user32", "SetClipboardData", ["I", "I"], "I")
EmptyClipboard = Win32API.new("user32", "EmptyClipboard", [], "I")
CF_TEXT = 1
GlobalAlloc = Win32API.new("kernel32", "GlobalAlloc", ["I","I"], "I")
GlobalLock = Win32API.new("kernel32", "GlobalLock", ["I"], "P")
GlobalUnlock = Win32API.new("kernel32", "GlobalUnlock", ["I"], "I")
GlobalFree = Win32API.new("kernel32", "GlobalFree", ["I"], "I")
GMEM_MOVEABLE = 2
GMEM_ZEROINIT = 0x40
GHND = GMEM_MOVEABLE + GMEM_ZEROINIT
Lstrcpy = Win32API.new("kernel32", "lstrcpy", ["P", "P"], "P")
0834デフォルトの名無しさん
2013/10/18(金) 21:39:18.34return if t == "" || t == nil
sleep 0.2 while OpenClipboard.call(0) == 0
begin
if handle = GlobalAlloc.call(GHND, t.bytesize + 1)
begin
if ptr = GlobalLock.call(handle)
Lstrcpy.call(Fiddle::Pointer[ptr], Fiddle::Pointer[t])
EmptyClipboard.call
SetClipboardData.call(CF_TEXT, handle)
GlobalUnlock.Call(handle)
end
rescue
GlobalFree.call(handle)
end
end
ensure
CloseClipboard.call
end
end
0835デフォルトの名無しさん
2013/10/18(金) 22:22:08.75勘違い
コピペせずに
適当に5桁の数字入れてた
0836デフォルトの名無しさん
2013/10/18(金) 22:38:18.31WinXP Ruby1.8.7
再現しない(表示されない)
0837デフォルトの名無しさん
2013/10/19(土) 06:02:25.45置換文字列をどうすればいいのでしょうか?
できなかった例(値を2倍)
hoge='Q=123'
print hoge.gsub(/Q=(\d+)/,'Q=\1*2')
0838デフォルトの名無しさん
2013/10/19(土) 07:53:24.96文字列を数値または式に変換する必要がある
前者なら、数値部分だけを数値変換
Q = hoge.sub(/Q=(\d+)/, '\1').to_i * 2
後者なら全体を式として評価
eval(hoge.sub(/Q=(\d+)/, 'Q=\1*2'))
0839デフォルトの名無しさん
2013/10/19(土) 08:38:19.770840デフォルトの名無しさん
2013/10/19(土) 09:27:17.37これがやりたかった事なのかは疑問
hoge.gsub(/(?<=Q=)\d+/) {|s| s.to_i * 2 }
0841デフォルトの名無しさん
2013/10/19(土) 09:49:15.560842デフォルトの名無しさん
2013/10/19(土) 12:22:51.730843デフォルトの名無しさん
2013/10/19(土) 15:28:03.080844デフォルトの名無しさん
2013/10/19(土) 20:45:44.48俺は主にprint文のデバッグなのだが
0845デフォルトの名無しさん
2013/10/19(土) 20:58:06.840846デフォルトの名無しさん
2013/10/19(土) 21:16:16.45pryかわいいよpry
0847デフォルトの名無しさん
2013/10/19(土) 21:20:23.61pryなんて初めて知った。
なんか良さげだね。ありがとう。
0848デフォルトの名無しさん
2013/10/20(日) 01:16:31.38pry-nav→pry-debugger→pry-byebugというdeprecated巡りを一通りしてしまった
0849デフォルトの名無しさん
2013/10/21(月) 14:06:12.08今はこう書いています。キーが重複した時のことは考慮しなくてよいです。
array = [{id: 1, name: "hoge"}, {id: 2, name: "piyo"}]
hash = Hash[array.map {|item| item[:id] }.zip(array)]
0850デフォルトの名無しさん
2013/10/21(月) 14:47:57.21とか
hash = array.each_with_object({}) { |a, h| h[a[:id]] = a }
とか?
なんかあんまりスマートじゃないね
ごめん
0851デフォルトの名無しさん
2013/10/21(月) 15:01:31.38ran_hash.merge(dom_hash[:id] => dom_hash)
}
0852デフォルトの名無しさん
2013/10/21(月) 21:35:17.350853デフォルトの名無しさん
2013/10/21(月) 23:53:40.500854デフォルトの名無しさん
2013/10/22(火) 00:28:10.460855デフォルトの名無しさん
2013/10/22(火) 11:47:43.96ありがとうございます!
■ このスレッドは過去ログ倉庫に格納されています