Ruby 初心者スレッド Part 39
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2010/10/21(木) 10:06:13★注意★ Ruby 1.9.2 は初心者には若干時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
文字エンコーディング等の外部基礎知識が必要な上、不完全対応の第三者ライブラリでの問題の切り分けが手間です。
1.8.7 は 1.9 系の新機能のいくつかが利用可能なため、1.8.7 を習得すればスムーズに 1.9 系に移行できるでしょう。
関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。
■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
・エラーメッセージの共通そうな部分やエラーの出るモジュール名でググる
・マニュアルで引っかかったクラスの記述を探す http://www.ruby-lang.org/ja/man/
・FAQを一応読む http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
・最終的にやりたいこと(もっとよい方法がある場合が多いので)
・エラーメッセージ(自力で訳さずなるべくそのままで)
・詳しい内容(「動きません」「うまくできません」では回答しようがない)
・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0002デフォルトの名無しさん
2010/10/21(木) 10:07:21Q:
いちからRubyを始める初心者向けのRuby入門書は何がありますか?
A:
プログラム作成自体の初心者なら
・「たのしいRuby 第3版 Rubyではじめる気軽なプログラミング」
http://www.amazon.co.jp/gp/product/4797357401/
文法は理解済み(orリファレンスで乗り切る既言語習得者)の場合のRuby様式を知る必携2冊目
・「初めてのRuby」
http://www.amazon.co.jp/dp/4873113679/
以下は外れが少ないとされている本です。必ず立ち読みした上で自分の目的とレベルに応じて購入してください。
・「Rubyレシピブック 第2版 268の技」(初心者向け)
http://www.amazon.co.jp/dp/4797340045/
・「プログラミングRuby 第2版 言語編」(初心者向け)
http://www.amazon.co.jp/dp/4274066428/
・「Ruby Way 第2版」(脱初心者向け)
http://www.amazon.co.jp/dp/4798115339/
・ 「Rubyクックブック ―エキスパートのための応用レシピ集」(脱初心者向け)
http://www.amazon.co.jp/dp/4873113245/
以下の本は言語作者が書いた最新本ですがとりあえず初学者向けではありません。
・「プログラミング言語 Ruby」(言語として深く知りたい人向け)
http://www.amazon.co.jp/dp/4873113946/
0003デフォルトの名無しさん
2010/10/21(木) 10:08:18・Ruby Home Page 【公式、お役立ち度が微妙】
http://www.ruby-lang.org/ja/
・Rubyリファレンスマニュアル 【検索機能休止中、Googleなどの併用を】
http://www.ruby-lang.org/ja/man/
http://www.ruby-doc.org/ 【詳しい英語版】
・HTMLヘルプ版リファレンスマニュアル配布さん 【Windowsで便利、検索も無論可能】
http://elbereth-hp.hp.infoseek.co.jp/ruby.html
・Programming Ruby - The Pragmatic Programmer's Guide 【好評書籍の初版がネットで、ただし英語】
http://www.ruby-doc.org/docs/ProgrammingRuby/
・Rubyist Magazine - るびま 【ライブラリ紹介などの読み物、過去のコードレビューは一読の価値あり】
http://jp.rubyist.net/magazine/
・逆引きRuby 【やりたいことから探すWiki、最近元気ないので編集者募集】
http://www.namaraii.com/rubytips/
・はてなキーワード > Ruby 【うっかりどっさりまとまったリンク集、説明なし】
http://d.hatena.ne.jp/keyword/Ruby
・RubyForge 【○○をやりたい管理されたライブラリを探すならここ、英語】
http://www.rubyforge.org/
・GitHub 【○○をやりたいコードをとにかく探すならここ、英語】
http://github.com/
・日本Rubyの会 【最近はオフライン勉強会の寄り合い場と化しているので近くで勉強会があれば】
http://jp.rubyist.net/
0004デフォルトの名無しさん
2010/10/21(木) 10:09:00【RoR】Rubyについて Part 41【CPAN vs RubyGems】
http://hibari.2ch.net/test/read.cgi/tech/1281473294/
●アンチスレ
Rubyについて(アンチ専用) Part004
http://pc12.2ch.net/test/read.cgi/tech/1249737531/
●Railsスレ
【Ruby】Ruby on Rails Part10
http://hibari.2ch.net/test/read.cgi/php/1282991262/
●Windows用スレ
【ActiveScript】RubyをWindowsで使うスレ【GUI】
http://pc12.2ch.net/test/read.cgi/tech/1155031689/
●GUIの使えなさを堪能するスレ
Ruby で GUI するスレ
http://pc12.2ch.net/test/read.cgi/tech/1269609576/
●ぶん投げスレ
Rubyの宿題教えてください。2限目
http://pc12.2ch.net/test/read.cgi/tech/1200175247/
●前スレ
Ruby 初心者スレッド Part 38
http://hibari.2ch.net/test/read.cgi/tech/1282781922/
Ruby 初心者スレッド Part 37
http://hibari.2ch.net/test/read.cgi/tech/1274121477/
Ruby 初心者スレッド Part 36
http://pc12.2ch.net/test/read.cgi/tech/1269233796/
0005デフォルトの名無しさん
2010/10/21(木) 10:09:55・Ruby 1.8.5
レンタルサーバ等にいまだに残ってる非安定な古いバージョン
1.8.6 にすらなってない理由はたぶん管理の手抜きなので怒ってよい
・Ruby 1.8.6
過去の長期政権と数の暴力で一大勢力圏を維持中の旧安定版
公開スクリプトはこれでも動作するべきではあるんだがそろそろ 1.8.7 に譲ってくれ
・Ruby 1.8.7
1.9 シリーズの機能をいくつか足したハイブリッドなバージョン、初学者にこそお勧め
1.9 系機能は 1.8.6 では動かないが「えーマジ1.8.6!? 1.8.6が許されるのは小(AA略」と煽ってよい
・Ruby 1.9.0
不安定にして先鋭機能が超満載の開発版バージョンだったもの
1.9.x は本来全てが開発版の呼称だったのだが、事情が変わって(ここ笑うところ)1.9.1 は安定板に
・Ruby 1.9.1
1.9 系列安定版の最新版のひとつ前(現在は1.9系列としては1.9.2を推奨)
本体と添付ライブラリの動作は問題がないのだがgem等外部第三者ライブラリの対応が超適当特に英語圏産
・Ruby 1.9.2
1.9系列安定版の最新版
素人目にはどこがスゴいんだかわからないくらい慎重にバージョナップされたある意味つまんない安定版
初心者を脱した人が外部ライブラリの開発コミュニティに参加して1.9.2対応進めてくれたりすることを期待中
0006デフォルトの名無しさん
2010/10/21(木) 10:11:12OneClickInstaller は単に古すぎ、RubyInstaller は MinGW32 版で現状扱い怪しい、cygwin 版は cygwin マニア専用
IDEつまり統合環境のお勧めは特にない(せいぜい汎用のEclipseかNetBeans)、RDE は古くて独自すぎで Ruby に慣れた人向け
■ Windows でとにかく迷いたくない普通の人 … ActiveScriptRuby 1.8.7
ttp://arton.hp.infoseek.co.jp/indexj.html
の題字のでかい 「ActiveScriptRuby 1.8.7(p302) with-winsock2 tcl-stub」
マニュアルはWebで見ることもできるが手元にあると便利、1.8.7 の HTML ヘルプ版が
ttp://www.ruby-lang.org/ja/documentation/
の「Rubyリファレンスマニュアル刷新計画 chm版 1.8.7用」
夢のお告げ等、何かの間違いで Ruby の知識がないうちから 1.9.2 を使って苦しみたいマゾい人は
ttp://www.artonx.org/data/asr/ の「Ruby-1.9.2-p数字 Microsoft Installter Package」
・初心者向けチュートリアル記事(過去スレで出たもの)
ホワイの(感動的)Rubyガイド
http://www.aoky.net/articles/why_poignant_guide_to_ruby/
プログラミング入門 - Rubyを使って -, by Chris Pine, 日本語ver. by S. Nishiyama
http://www.ie.u-ryukyu.ac.jp/~kono/software/s04/tutorial/
Ruby チュートリアル (Ruby 1.8.6 編)
http://www.okisoft.co.jp/esc/ruby/tut.html
0007デフォルトの名無しさん
2010/10/21(木) 10:34:36これiswebライトだから今月末でサーバ終わるだろ
0008デフォルトの名無しさん
2010/10/21(木) 10:38:270009デフォルトの名無しさん
2010/10/21(木) 10:43:140010デフォルトの名無しさん
2010/10/21(木) 14:27:17移転の話が載ってないということはそもそも気づいてない可能性が高い
誰かメールしたれ
0011デフォルトの名無しさん
2010/10/21(木) 14:42:16,/ ノ ヽ ~\
/ ノ IPA ヽ ~\
/ ノ ヽ、 `ヽ
| ノ / ̄\ / ̄~ヽ ヽ i
| ノ | ノ
\ | <●> <●> ( )
\ | | | i /
| / ヽ レ
i (●_●) /
i、 ,-――-、 ・ /
i、 <(EEEEE)> ∵/ IPA Rubyは誰でもウェルカム
i、 \ ./ /
\ ーー ,ノ
,,.....イ.ヽヽ、ー-―一ノ゙-、.
: | '; \_____ ノ.| ヽ i
| \/゙(__)\,| i |
0012デフォルトの名無しさん
2010/10/21(木) 18:30:54>>2
Rubyレシピブック 第3版 303の技
http://www.amazon.co.jp/dp/4797359986/
最近Amazonって旧版のページ行くと新版でてるよって教えてくれるけど
これには機能してなかった
1.8/1.9両対応らしいから旧版買った人はカワイソス
0013デフォルトの名無しさん
2010/10/21(木) 22:20:230014デフォルトの名無しさん
2010/10/21(木) 22:37:11だめじゃないけど、Ruby初心者でjrubyとかつらそうな感はある。
あと、jruby固有の話題を扱いたいなら、別スレ立てた方がいいかもね。
0015デフォルトの名無しさん
2010/10/21(木) 22:41:38が今ひとつよくわからないので正しい使い方を知っている人がいたら
教えてもらおうと思いました。コマンドラインとか、エラーメッセージ
とかです。巨大整数を変換するのにlong型に入らなかったという内容の
エラーが出ます。またJrubyを使うと実行速度は上がるのでしょうか?
0016デフォルトの名無しさん
2010/10/21(木) 22:50:31RubyとJavaの両方でライブラリを公開できる程度の知識があれば可能
0017デフォルトの名無しさん
2010/10/21(木) 22:58:44Rubyで作った暗号をJAVAに置き換えようと思ったんですが、コマンド
一つじゃできないんですか?
0018デフォルトの名無しさん
2010/10/21(木) 23:06:43RubyとJavaの両方でライブラリを公開できる程度の知識があれば可能
ちなみにこれはそんなに高度なことを要求されるわけでもない(初心者ではないというだけ)
というか、ドイツ語→フランス語翻訳サイトの使用に必要なものは何かというと
ドイツ語とフランス語だよな
翻訳されたフランス語がきちんとフランス語として正しいかどうかを検証するためには
フランス語の知識がやっぱ要るよな
で、結局そんな人はドイツ語の文章を読んでフランス語を自力で書いたほうが早いよな
つまりその程度
0019デフォルトの名無しさん
2010/10/21(木) 23:08:50何を言っているわからないw
>>15
> RubyをJAVAにコンバートする
もっと詳しく
ソースコードを変換するという意味?
Rubyで書いたソースコードをJavaの環境で動かすという意味?
> RubyをJAVAにコンバートするアプリとして紹介されたんですが、
紹介者に聞いたほうがあなたの状況も知っていて答えているだろうし、多分早いと思う
>>17
> Rubyで作った暗号をJAVAに置き換えようと思ったんですが、
Rubyで「作った」というのは生成した暗号なのか?Rubyで暗号化するためのソースのことか?
Javaで置き換えるとはどういう意味なのか?Javaで暗号を復号化できさえすればいいのか?
「Ruby 暗号 Java」でググると同じようなことをやっている人は見つかるがこういうのは需要があるのか?
0020デフォルトの名無しさん
2010/10/21(木) 23:10:09>>15
>RubyをJAVAにコンバートするアプリとして紹介されたんですが
モルダー、あなた騙されたのよ
0021デフォルトの名無しさん
2010/10/21(木) 23:11:34mixi Engineers’ Blog ≫ OpenSSLの暗号文をJava/Perl/Rubyで開く
http://alpha.mixi.co.jp/blog/?p=91
Javaで暗号化したデータをPerlで復号化しようとしたら大変だった件 - ダウンロードたけし(寅年)の日記
http://d.hatena.ne.jp/download_takeshi/20100819/1282173492
Java で暗号化したデータを Ruby で復号しようとしたら大変だった件 - 口内炎延焼
http://d.hatena.ne.jp/ssig33/20100823/1282554827
0022デフォルトの名無しさん
2010/10/21(木) 23:16:10JRubyは
「これなら、且つ、俺ならRubyで書いたほうが早いが、オリジナルRubyの実行環境がない」
「が、Javaならある」
という狭い条件のときにのみ使う
0023デフォルトの名無しさん
2010/10/21(木) 23:16:57のです。
0024デフォルトの名無しさん
2010/10/21(木) 23:20:18RubyのコードがJAVAに変換されて出てくると思ったんですが違うみたい。
0025デフォルトの名無しさん
2010/10/21(木) 23:26:530026デフォルトの名無しさん
2010/10/21(木) 23:32:41AOTモードでコンパイルすればいい
JVMを常に起動した状態のサーバVM上で、そのプログラムに応じた専用の最適化をすれば、
単純なプログラムではRuby1.9.2と同等か速いこともある
0027デフォルトの名無しさん
2010/10/21(木) 23:34:42とかメソッドなんかあったりして覚えにくい先入観があります。
0028デフォルトの名無しさん
2010/10/21(木) 23:43:52コマンドラインを教えてください。またどの程度速くなりますか?
0029Perl忍者 ◆M5ZWRnXOj6
2010/10/21(木) 23:44:12消えろてめえみらいたなカスが呼吸してるだけで目障りなんだよ
てめえらがルビーやることでさらに俺の怒りへのボルテージをかきたたせるがね
お前らゴミ糞は死ねよ
まつもとひろゆき拝んで死ね
0030デフォルトの名無しさん
2010/10/21(木) 23:47:38遅くなる
0031デフォルトの名無しさん
2010/10/21(木) 23:48:470032デフォルトの名無しさん
2010/10/21(木) 23:55:120033デフォルトの名無しさん
2010/10/21(木) 23:59:23まあ当たり前
crubyでこれ以上ないくらい効率的なスクリプトであって、
VM起動済みのjrubyで何十回とベンチマークとってチューニングすれば、
crubyよりも速い実行時間を得られることがあるかもしれない
0034デフォルトの名無しさん
2010/10/22(金) 00:02:20どこの誰に騙されたのか知らんけど>>22が概ねJRubyの真実
0035デフォルトの名無しさん
2010/10/22(金) 00:09:58というのは真実であって欲しいなあ
で、まあ、Rubyスクリプトが遅いのは普通はスクリプトの作り方が悪いんよね
コマンド一発で直してくださいとか言いそうだがそんなもんできんので勉強してくれ
0036デフォルトの名無しさん
2010/10/22(金) 01:35:06”3042” → あ
のように16進数のStringからそれに該当するコードポイントを持つUNICODE文字を取得したいのですがどうすればいいでしょう。
["3042"].pack("U") 等ではうまくいきません。
お願いします。
0037デフォルトの名無しさん
2010/10/22(金) 01:53:560038デフォルトの名無しさん
2010/10/22(金) 03:24:24あなた騙されてるよ
0039デフォルトの名無しさん
2010/10/22(金) 06:56:19irb> puts ['0x3042'.hex].pack('U')
あ
0040デフォルトの名無しさん
2010/10/22(金) 06:59:43irb> puts ['3042'.hex].pack('U')
あ
とりあえず、
irb> p ["3042"].pack("U")
TypeError: can't convert String into Integer
とか今回はちゃんとエラー出るんで、できればエラー読んでマニュアルにあたって欲しい
0041デフォルトの名無しさん
2010/10/22(金) 08:55:580042デフォルトの名無しさん
2010/10/22(金) 13:14:56javaのソースコードに焼き直すと提言していた人がいたなぁ。
004336
2010/10/22(金) 23:17:38ありがとうございました。誤ったコードを書き込んでしまい失礼しました。
実はvisualuruby上でUNICODE文字を表示させたかったのです。
教えていただいたコードでテキストファイルには正しく文字が出力されましたが、
visualuruby上では化けてしまいます。
これはきっとどうにもならなそうなので別の道を考えます。
0044デフォルトの名無しさん
2010/10/22(金) 23:38:59まじか
004536
2010/10/22(金) 23:43:52はい。$KCODEをUTF8にしたりしてみたのですが、わかりません。
exerbで固めれば配布するのも簡単そうなのでvisualurubyで行きたいのですが。
ほかのGUIキットは別途ライブラリのインストールが必要ですよね。
0046デフォルトの名無しさん
2010/10/23(土) 00:33:280047デフォルトの名無しさん
2010/10/23(土) 17:35:31昨日簡単なプログラムを作ってみて実行させたら結果が出たらすぐに操作盤
が閉じてしまって、ちゃんと実行されたかどうかわからないのですが
どうすればよいでしょう?
0048デフォルトの名無しさん
2010/10/23(土) 17:43:00>>47
Windowsの標準の出力の特性上、そもそもそういうもんですとしか…
出力を眺めたいなら、コマンドプロンプト起動してそこから実行するといい
0049デフォルトの名無しさん
2010/10/23(土) 17:43:15アイコンをダブルクリックで起動すると閉じちゃうから
コマンドプロンプトから実行
よくわかんなかったらコマンドプロンプトの使い方を勉強しる
0050デフォルトの名無しさん
2010/10/23(土) 18:34:14コマンドプロンプトの勉強をします
0051デフォルトの名無しさん
2010/10/23(土) 19:07:050052デフォルトの名無しさん
2010/10/23(土) 19:16:34「 操 作 盤 」
0053デフォルトの名無しさん
2010/10/23(土) 19:22:02マジレスすると操作盤ってコンソールのことだお
プロンプトは入力を促す > みたいな文字のこと
0054デフォルトの名無しさん
2010/10/23(土) 21:59:11中国人死ね
0055デフォルトの名無しさん
2010/10/24(日) 01:48:16それだと椅子までセットになりそうだが。
盤だと上のパネル部分になるのかね。
0056デフォルトの名無しさん
2010/10/24(日) 01:52:120057デフォルトの名無しさん
2010/10/24(日) 02:44:480058デフォルトの名無しさん
2010/10/24(日) 10:40:32wwwwwww
0059デフォルトの名無しさん
2010/10/24(日) 10:44:07・コマンドプロンプトから実行
・外部コマンドが実行できるもしくはRubyのサポートがあるテキストエディタ上から実行
・NetBeansだかAptanaだかのIDEから実行
後者は2つはソースを書きながら、プログラムが終了しても実行結果を表示させたままにできるし
おすすめ
0060デフォルトの名無しさん
2010/10/24(日) 13:02:28あとWEBrickでhttpヘッダのcharset指定ってどうやるんですか?
006160
2010/10/24(日) 13:06:19WEBrickのほうは僕の勘違いでした。
0062デフォルトの名無しさん
2010/10/24(日) 13:23:03以下のように、ハッシュをeachで取り出したいのですが、どうも上手くいきません。
正しい記述方法を教えてもらえないでしょうか?
h = {
:area => 1,
:output => 2,
:category_type => 3,
}
url = 'http//'
h.each do |key,value|
url += key + '=' + value + '&'
end
0063デフォルトの名無しさん
2010/10/24(日) 13:32:52url += urlescape(key) + '=' + urlescape(value) + '&'
}
006462
2010/10/24(日) 14:04:24どうもありがとうございますm(_ _)m
さっそく実行してみたのですが、
undefined method `urlescape' for Alert:Class
というエラーがはき出されてしまいました。ググってみたところ、
これは自作してdefを定義しないといけないのでしょうか?
このような形で
def urlescape(string)
string.gsub(/([^ a-zA-Z0-9_.-]+)/n) do
'%' + $1.unpack('H2' * $1.size).join('%').upcase
end.tr(' ', '+')
end
0065デフォルトの名無しさん
2010/10/24(日) 14:23:51require 'uri'
require 'webrick'
data = {'k1'=>'v1', :k2 =>'v2', 'k3' => '3&4'}
uri = URI.parse("http://example.com/")
query = data.map{|k, v|
# do not use URI.escape
"#{WEBrick::HTTPUtils.escape(k.to_s)}=#{WEBrick::HTTPUtils.escape(v.to_s)}"
}.join('&')
uri.query = uri.query.to_s + query
p uri.to_s
006662
2010/10/24(日) 15:15:39ありがとうございます。m(_ _)m
ちょっと、複雑でわからなかったので、
以下のような形にしたら、一応は動きました。
もっとシンプルなやり方がないものでしょうか。
url = 'http://example.com'
params = Hash::new
params['area'] = 'tokyo';
params['output'] = 'json';
params.to_a.each do |key,value|
url += key + '=' + value + '&'
end
0067デフォルトの名無しさん
2010/10/24(日) 15:55:20URLエンコードしたものを繋げてURI#queryに追記、というの以上のものは現状あんまりないと思うぞ
これ以外の書き方をした場合、将来絶対どっかで詰まって
その回避のためにコードがながーいよ状態になるはず
Array#map と Array#join がわかりにくいと思う場合、ぜひ勉強してくれ
これらを一切使用しないコードのほうが逆にわかりにくい
query = pairs.join('&') の部分を分解しようと思ったが諦めた
WEBrick::HTTPUtils.escape は & をパーセントエンコードしないので書き換え
require 'uri'
require 'erb'
data = {'k1'=>'v1', :k2 =>'white space', 'k3' => '3&4'}
uri = URI.parse("http://example.com/")
pairs = []
data.each do |key, value|
encorded_key = ERB::Util.url_encode(key.to_s)
encorded_value = ERB::Util.url_encode(value.to_s)
pairs << encorded_key + '=' + encorded_value
end
query = pairs.join('&')
uri.query = uri.query.to_s + query
p uri.to_s
0068デフォルトの名無しさん
2010/10/24(日) 15:57:23require 'uri'
require 'erb'
include ERB::Util
data = {'k1'=>'v1', :k2 =>'white space', 'k3' => '3&4'}
uri = URI.parse("http://example.com/")
uri.query = uri.query.to_s + data.map{|k, v| "#{u(k)}=#{u(v)}"}.join('&')
p uri.to_s
0069デフォルトの名無しさん
2010/10/24(日) 16:04:18これがエスパーってやつか
007062
2010/10/24(日) 16:16:10親切にどうもありがとうございますm(_ _)m
今やろうとしていることは下記のようなことです。
※Rails3 ruby1.9.2使用
1 JSON形式でAPIアドレスを取得。 (ここでハッシュをeachで回してURLを結合)
2 それをRuby形式に変換 (json.rbを使って変換予定)
require 'json'
def self.get_xml
url = 'http://allcoupon.jp/api-v1/coupon?'
params = Hash::new
params['area'] = '%E6%9D%B1%E4%BA%AC';
params['output'] = 'json';
params.to_a.each do |key,value|
url += key + '=' + value + '&'
end
url = JSON.parse(url)
return url
end
このような場合でも、例で示してもらえたURLエンコードなどの
記述をするべきでしょうか?
最初は単純に文字列をループで結合としか考えてなかったもので。
とりあえず array#mapなどは勉強してきます!
0071デフォルトの名無しさん
2010/10/24(日) 16:30:05二重になってしまうだけだし、その場合は単純に結合でいいんでないの
あと、URL の構成要素についての知識がないようだ
query を & で終了させたらその後にクエリ文字列が続くのかフラグメント文字列が始まるのか
区別つかなくなるからやっちゃ駄目
それと、+= は Ruby ではあんま使用されないので、使わないことをお勧めする
007262
2010/10/24(日) 16:37:30ありがとうございます!
URLエンコードを必要とした場合の記述だったのですね。
じっくりコードを見直して、どう動いているかを確認させてもらいます!
&で終了させても普通に動いてたのでそのままにしておきましたが、気をつけたいと思います。
+=以外の方法を探してみます!
007362
2010/10/24(日) 19:33:20Rails 3 ruby 1.9.2
※controller
url = 'http://allcoupon.jp/api-v1/coupon?area=%E6%9D%B1%E4%BA%AC&output=json'
contents = URI.parse(url).read
contents = JSON.parse(contents)
@debug = contents['coupon_id']
※view
<%= debug(@debug) %>
-----------------------------
コントローラで、
@debug = contents とすると
こんな感じでずらりと並ぶ。
coupon_id: "2086"
.......
@debug = contents['coupon_id'] とすると
"can't convert String into Integer"
というエラーが出て、上手く値が取得できません。
よい方法を教えてもらえないでしょうか?
0074デフォルトの名無しさん
2010/10/24(日) 19:38:20【Ruby】Ruby on Rails Part10
http://hibari.2ch.net/test/read.cgi/php/1282991262/
0075デフォルトの名無しさん
2010/10/24(日) 20:15:25contents の冒頭はこうなってるよ。
[{"coupon_id"...
contents hash じゃなくて、要素がhashのarray
debugはYAMLで出力するんだが、
coupon_id:
じゃなく
- coupon_id:
になってなるのでは?
0076デフォルトの名無しさん
2010/10/24(日) 20:17:42<pre><%=h contents.inspect %></pre>
でもしてどんなデータ構造になっているかよく眺めたら。
0077デフォルトの名無しさん
2010/10/24(日) 20:22:29# こまけぇこたぁはいいんだよ!!(AA略
0078デフォルトの名無しさん
2010/10/24(日) 22:41:51なかなかなじめません。
A = Bを、MOVE B TO Aと記述できるように
する拡張ライブラリなどはありませんか。
0079デフォルトの名無しさん
2010/10/24(日) 22:53:010080デフォルトの名無しさん
2010/10/25(月) 00:56:51言語ごとに流儀が違うわけだし、RubyをやるならRubyに慣れるしかないと思う。
0081デフォルトの名無しさん
2010/10/25(月) 01:30:11要するにこれって大部分がRubyで記述されてるだけで正体はLLVMベースのJIT/AOTコンパイラなんだろ?
ならRubinius自体を(中間言語まででいいから)コンパイルして配布すればいいだけなんじゃ……
わざわざCRubyの上でRubinius動かす意味ってあんのかね
0082デフォルトの名無しさん
2010/10/25(月) 03:30:10http://hibari.2ch.net/test/read.cgi/tech/1287944631/
新スレ
0083デフォルトの名無しさん
2010/10/25(月) 06:02:11あなたはバイトコンパイルしてあってもファイルを読めるのかもしれないが、
残念ながらふつうのRubyプログラマはバイトコードを直接読むことができない
そういう劣ったRubyプログラマ向けの「Rubyで拡張可能なRubyコンパイラ」なので
あなたは是非こんなものは捨てて高みを目指して頂きたい
0084デフォルトの名無しさん
2010/10/25(月) 07:48:33CRubyが必要だというなら、インストールすればいいだけじゃないの?
008562
2010/10/25(月) 10:23:54すいません、基本的なハッシュの話でこっちのほうがよかったかなと思いまして。
>>75
contents[0]['counpon_id']でうまく行きました!
ありがとうございます。
しかし、<%= debug(@debug) %> で表示すると、
"\xE6\x9D\xB1\xE4\xBA\xAC" こんな感じで日本語がバグっているので、
JSON形式とRubyのハッシュに変換する前に、URLエンコードをしないといけないのかなと思っています。
>>73
debugをやりやすくするにはどうしたらいいのかなと思ってたんですが、
ずばり使いやすいコードを教えていただき、感謝!
>>77
厳密にいうとオブジェクトと考えるのですね。なるへそ。
0086デフォルトの名無しさん
2010/10/25(月) 11:10:09data = conn.query("SELECT * FROM table1;")
のようにexecかqueryを使った場合、conn.clearしてメモリを解放しなさいとあるのですが、
if conn.query("SELECT * FROM table1;")[0]
のように条件判断で使った場合も本来は変数にいれてclearしないとメモリに残ってしまうのでしょうか?
0087デフォルトの名無しさん
2010/10/25(月) 11:13:40バグってなんかいません
0088デフォルトの名無しさん
2010/10/25(月) 11:24:340089デフォルトの名無しさん
2010/10/25(月) 11:26:30>>86
えー、よくわからんが、
data = 外部ライブラリ経由での配列取得行為
でメモリリークするかもしれませんという話なのなら、
外部ライブラリ経由での配列取得行為[0]
でも外部ライブラリ経由での配列取得行為自体は行われるので、メモリリークへの対処はすべきだと思われ
0090デフォルトの名無しさん
2010/10/25(月) 11:28:40URLエンコードではなく、JSONには日本語リテラルが ¥uFFFF という
ASCIIテキストにエンコードされて入っているので、FFFF部分を生の表記に
置き換える必要があるんだけど、元のデータにJSON上の違反がある
のでめんどいな。
サロゲートペアが必要な文字のコードを1つの¥uのあとに8桁書いてる。
正しくは¥uXXXX¥uYYYYのように2文字として書く。
0091デフォルトの名無しさん
2010/10/25(月) 11:39:28ありがとうございます。
デバッグも兼ねて何がメモリに残っているか確認する方法や、ツールなどはあるのでしょうか?
0092デフォルトの名無しさん
2010/10/25(月) 11:46:39データベース内にはbool値が入っているのに、conn.queryで取得するとすべてStringになってしまいます。
プログラム内では
hoge = conn.query("SELECT * FROM table1;")
(hoge[0] ? "ほんと": "うそ")
としたいのですが、
(data[0] == "true" ? "ほんと": "うそ")
として動かしています。
bool値はbool値として取得する方法はありますか?
0093デフォルトの名無しさん
2010/10/25(月) 11:47:32bool値ってなんですか?
0094デフォルトの名無しさん
2010/10/25(月) 11:52:15trueとfalseで返さないのはそれはそれで妥当な気もする
0095デフォルトの名無しさん
2010/10/25(月) 12:11:11とりあえず、query[n] は文字列の配列一覧であるかのように返すように作ってあるのだろう(いや、知らんけど)
ソース見ると getisnull というメソッドがあるようにも見えるがどうやって使うのかはしらね
個々のメソッドで直接アクセスすれば true とかで返ってこないかね
0096デフォルトの名無しさん
2010/10/25(月) 12:18:320097デフォルトの名無しさん
2010/10/25(月) 12:23:34plus_one = conn.query("SELECT houmon_no+1 FROM table1 WHERE user_id = #{session['user_id']};")[0][0] # 例えば'3' or nilが入る
puts (plus_one ? plus_one : 1)
のようにしてるのですが、これは本来は
plus_one = conn.query("SELECT houmon_no+1 FROM table1 WHERE user_id = #{session['user_id']};") # [['3']] or [[nil]]が入る
puts (plus_one[0][0] ? plus_one[0][0] : 1)
plus_one.clear
とすべきなんですね。ありがとうございました。
009862
2010/10/25(月) 15:23:47ありがとうございます。
普通にエンコードする関数を探して、一発で変換と思ってたのですが、
この場合はどのようにすればよいでしょうか?
1.9.2ではJSON形式変換が標準でついているらしく、
このへんを読んでみましたが、日本語に変換というのがよくわからず。
http://rurema.clear-code.com/1.9.2/class/JSON.html
http://webos-goodies.jp/archives/boost_json_conversion_using_string_inspect.html
このライブラリも1.9系だと特に関係ないようで。
これならば、xml形式を使ったほうが簡単なのかと悩み中です。
0099デフォルトの名無しさん
2010/10/25(月) 16:02:58他に選択肢があるなら使用しないのが現状のベター
「ぜんぶえいご」なら問題ないのだけれど
0100デフォルトの名無しさん
2010/10/25(月) 19:27:430101デフォルトの名無しさん
2010/10/25(月) 20:28:58データ型の扱いがルーズすぎるよ
Rubyは基本的に勝手に型変換とかしないので
きっちり変換しないとだめだよ
たとえデータベースに真偽値が入っているとしても、ライブラリがRubyでの真偽値を返すかどうかなんてわからないし
ライブラリのドキュメントをよく読めとしかいえないな
■ このスレッドは過去ログ倉庫に格納されています