Ruby 初心者スレッド Part 51
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2013/01/20(日) 08:02:06.54質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
RoRはスレ違いよ
前スレ
Ruby 初心者スレッド Part 50
http://toro.2ch.net/test/read.cgi/tech/1343539588/
るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
逆引きRuby
http://www.namaraii.com/rubytips/
0002デフォルトの名無しさん
2013/01/20(日) 08:18:01.48http://kohada.2ch.net/test/read.cgi/php/1341589839/
【ActiveScript】RubyをWindowsで使うスレ【GUI】
http://toro.2ch.net/test/read.cgi/tech/1155031689/
書籍:ほぼ公式
「たのしいRuby 第3版 Rubyではじめる気軽なプログラミング」 (プログラミング自体が初めてでない人向け)
http://www.amazon.co.jp/dp/4797357401/
「初めてのRuby」 (同上)
http://www.amazon.co.jp/dp/4873113679/
書籍:紙のマニュアルに相当
「Rubyレシピブック 第3版 303の技」(脱初心者向け基礎テクニック集、1.9対応)
http://www.amazon.co.jp/dp/4797359986/
「プログラミングRuby 第2版 言語編」(初心者向け参考書)
http://www.amazon.co.jp/dp/4274066428/
現在、1.8 系列の最新である Ruby 1.8.7 と 1.9 系列の最新である Ruby 1.9.3 の2系統が存在。
肝心な部分がわりと違い、プログラムはそのままでは動作せず、予備知識も別個。
1.8 用のスクリプトやライブラリは 1.9.3 では動作しないので注意。
1.9.3 用の教科書があるなら 1.9.3 から始めても構わない。
Windows用Rubyは、Ruby以外のものもあらかた入っているActiveScriptRubyと
http://www.artonx.org/data/asr/
RubyだけインストールされるRubyInstallerの2種類存在。
http://rubyinstaller.org/downloads/
chm(HTMLヘルプ)式のダウンロードできるマニュアルが便利
http://www.ruby-lang.org/ja/documentation/
Rubyリファレンスマニュアル chm版リミックス
http://ruby.morphball.net/refm-remix.html
0003デフォルトの名無しさん
2013/01/20(日) 08:26:56.03・エディタ初めてならRubyスクリプトをを着色してくれる(できればオートインデントの)エディタ好きなの選べ
・いわゆるIDEはRubyの学習に際しては恐ろしくコスパが悪いのでRubyのためだけに新規導入するのはお勧めしない
Q.XXX を使ってるんですが Ruby も覚えたほうがいいんでしょうか?
A.好きにしろ
※RubyやRuby使いに対する不満や愚痴などは「Rubyについて」スレや「バトルロワイヤル」スレなどをご利用下さい
0004デフォルトの名無しさん
2013/01/20(日) 12:30:00.290005デフォルトの名無しさん
2013/01/20(日) 12:30:45.01標準だとRubyの補完が弱いのですが、それを補ってくれるプラグインってありませんか?
0006デフォルトの名無しさん
2013/01/20(日) 12:34:51.75ruby 1.9.3がいいとおもいますよ。
一般論として、あたらしいやつは、人柱になる覚悟がいります
0007デフォルトの名無しさん
2013/01/20(日) 12:39:36.850008デフォルトの名無しさん
2013/01/21(月) 04:59:35.640009デフォルトの名無しさん
2013/01/22(火) 18:40:28.19Dirクラスなんかは1.9.3でだいぶ良くなったけどコマンドラインは昔のまま
"マ"を含むファイル名がワイルドカード展開できなかったり
UNICODE(SJIS外)が?に置換されてワイルドカード扱いされたり
0010デフォルトの名無しさん
2013/01/22(火) 18:51:04.160011デフォルトの名無しさん
2013/01/22(火) 19:02:34.060012デフォルトの名無しさん
2013/01/22(火) 19:32:49.76基本はGEMで拡張するタイプですか?
0013デフォルトの名無しさん
2013/01/22(火) 19:45:55.04スクリプトのユーザーが、そのスクリプトに必要なgemライブラリを自力でダウンロードして事前にインストールして設定しておくタイプ
0014デフォルトの名無しさん
2013/01/23(水) 10:36:09.970015デフォルトの名無しさん
2013/01/23(水) 12:11:07.120016デフォルトの名無しさん
2013/01/23(水) 12:16:32.96もしそういう、PCスキルが不定な不特定多数の人にも使ってもらいたいソフトウェアを作りたいのなら、Rubyは不向き
0017デフォルトの名無しさん
2013/01/23(水) 12:38:07.800018デフォルトの名無しさん
2013/01/23(水) 13:08:56.66・ (PC-)Unix系列OS上でよく動く
・ Webサーバで仕事をさせても(負荷と初回起動とメモリが他サーバ稼働言語より多いが)よく動く
・ HSPができますというよりは業務寄りな顔ができる
HSPからRubyに移行するデメリット
・ Windowsで効率よく動かない
・ Windowsで効率よく配布できない
・ HSPではなんなく作れたものがRuby単体では作れず、外部ライブラリを駆使しても非効率
結論、HSPを便利に使っている環境にいるのなら、HSPを捨てる理由はなにもない
今までHSPでやってきたことをRubyで置き換えるのは、理屈では可能だが現実的ではない
なんかこう、レンタルサーバとか借りたり仮想マシンや別マシンでLinux入れたりしてそこでRubyを別途使ってみるというのが妥当
HSPとRubyの二刀流というのは、それはそれで死角減って結構便利だと思うよ
0019デフォルトの名無しさん
2013/01/23(水) 13:35:46.000020デフォルトの名無しさん
2013/01/23(水) 14:19:40.93そしたらスキルシートみたいなのを書かされて言語リストにHSPがなかったわけで
手書きでその他にHSPを書いてきました
そしたらHSPって何?と聞かれたのでGUIを作る言語ですっていったんですが
他にできるものはありませんか?ときかれてないですと答えたら気まずい空気になってきて
先ほど不採用通知のメールをいただきました
なのでRubyに移行しようかなと思った次第です
0021デフォルトの名無しさん
2013/01/23(水) 14:20:37.750022デフォルトの名無しさん
2013/01/23(水) 15:02:54.090023デフォルトの名無しさん
2013/01/23(水) 16:02:22.320024デフォルトの名無しさん
2013/01/23(水) 18:45:45.300025デフォルトの名無しさん
2013/01/23(水) 18:46:22.310026デフォルトの名無しさん
2013/01/23(水) 20:55:31.45わざわざRubyに「移行」って書くところが不安でしょうがない
HSPのことを全部忘れるつもりなんだろうか
0027デフォルトの名無しさん
2013/01/23(水) 23:51:27.20そりゃHSPはそういう対象じゃないからな
あれの立ち位置はNScriptとかの仲間であって、いわゆる「プログラミング言語」ではない
というかHSPしか知らないのにマの面接とか勇敢だなお前
ちなみにそこでRubyを選んだ理由は?
HSPからRubyって全然必然性が見えない選択なんだけど
0028デフォルトの名無しさん
2013/01/23(水) 23:53:39.840029デフォルトの名無しさん
2013/01/24(木) 00:01:34.11江戸前寿司屋の板前の募集で「クッキーなら作ったことがあります!」と答えるようなもんだ
それは単体ではいいのかもしれんが、働くところとさっぱり関連性がないし、板前の仕事を研究理解してないのではないかという危惧がある
0030デフォルトの名無しさん
2013/01/24(木) 00:32:54.400031デフォルトの名無しさん
2013/01/24(木) 00:44:29.12その羅列が意味わかんねーから教えを請いに来たのに例をポンポン載せてもわかる訳ねーだろ
加減乗除すらおぼつかない小学生に因数分解やらせるようなもんだよ
0032デフォルトの名無しさん
2013/01/24(木) 01:55:21.87基礎からやれよ。
0033デフォルトの名無しさん
2013/01/24(木) 01:55:38.27irb(main):001:0> irb を入力すると
ArgumentError : wrong number of arguments (0 for 1)というエラーが表示される
原因を教えてください
0034デフォルトの名無しさん
2013/01/24(木) 02:17:30.76引数が足りないみたいやけどバージョンなに?
% ruby -v
ruby 2.0.0dev (2012-12-01 trunk 38126) [x86_64-darwin12.2.0]
% irb
irb(main):001:0> irb
irb#1(main):001:0> irb
irb#2(main):001:0> irb
irb#3(main):001:0>
0035デフォルトの名無しさん
2013/01/24(木) 03:29:20.41いいと思います。
HSPとrubyは使う分野が相当(まったく)異なるので、
都合で転身せざるを得ないのは仕方ない。
0036デフォルトの名無しさん
2013/01/24(木) 11:16:43.88バージョンは1.8.7です
引数は何を入れればいいのでしょうか
003736
2013/01/24(木) 11:36:36.28サブirbでローカル変数とグローバル変数に別の値を代入すると、
メインirbに戻したときにグローバル変数は変更されるが、ローカル変数は変更されないということを
確かめたいのです
例
irb(main):001:0> fruit = 'apple'
irb(main):002:0> $fruit = 'banana'
irb(main):003:0> irb
irb#1(main)001:0> $fruit = 'orange'
irb#1(main)002:0> fruit = 'peach'
irb#1(main)003:0> fg 0
irb(main):004:0> p fruit
=> "apple"
irb(main):005:0> p $fruit
=> "orange"
0038デフォルトの名無しさん
2013/01/24(木) 16:19:34.52うちの1.8.7でも同じエラーになった
リファレンスマニュアルより
> irb(obj)
> 新しいサブ irb インタプリタを起動します。
> オブジェクト obj が指定された時はその obj を self にします。
なので、適当なオブジェクトを生成して渡してやれば良いと思う
irb Object.new
irb self.dup
0039デフォルトの名無しさん
2013/01/24(木) 22:40:16.20調べていただきありがとうございます
自分でも試したところ、上の3行目を
irb(main):003:0> irb self
にすればirb#1(main)になりました
0040デフォルトの名無しさん
2013/01/25(金) 19:16:15.060041デフォルトの名無しさん
2013/01/25(金) 19:57:36.280042デフォルトの名無しさん
2013/01/25(金) 20:00:33.350043デフォルトの名無しさん
2013/01/25(金) 20:18:04.26Windows上で動作するRubyでワイド文字のコマンドライン引数を取得するにはどうすればいいですか?
0044デフォルトの名無しさん
2013/01/25(金) 21:30:08.28ARGVはString型の配列で
そのString型のエンコーディングは
chcp 932 であれば Windows-31J
chcp 65001 であれば UTF-8
のように端末のロケールが使われる
スイッチによる解析は
require 'optparse'
してやればいい
0045デフォルトの名無しさん
2013/01/25(金) 22:01:04.23ttp://kohada.2ch.net/test/read.cgi/php/1357738303/356-357
0046デフォルトの名無しさん
2013/01/25(金) 23:32:44.11確かにそうすればARGVはUTF-8になりましたが、>>9 の症状が出て?に文字化けします。
0047デフォルトの名無しさん
2013/01/26(土) 00:03:49.16ttp://kohada.2ch.net/test/read.cgi/php/1357738303/356-375
0048デフォルトの名無しさん
2013/01/26(土) 00:13:31.47英語フォーラムってないんでしょうか?
なんか日本人だけで勝手に進化してるのか気のせい?
0049デフォルトの名無しさん
2013/01/26(土) 00:17:50.370050デフォルトの名無しさん
2013/01/26(土) 00:23:19.53やっぱり日本語わかるRuby開発者は少ないと思うんですよ
0051デフォルトの名無しさん
2013/01/26(土) 00:31:24.180052デフォルトの名無しさん
2013/01/26(土) 13:50:49.29死ねゴミ共がw
0053デフォルトの名無しさん
2013/01/26(土) 14:14:25.420054デフォルトの名無しさん
2013/01/26(土) 16:13:37.22細かい挙動の差は知らんけど
# require 'erb'
ERB::Util.html_escape # hにエイリアスされている。
# require 'cgi'
CGI.escape_html
なんで逆なんだw
0055デフォルトの名無しさん
2013/01/26(土) 16:36:06.980056デフォルトの名無しさん
2013/01/26(土) 17:56:39.21ちょwそんなのあったとはww
0057デフォルトの名無しさん
2013/01/26(土) 22:39:26.64俺はネットとたのしいRubyとツクールのマニュアルで曲がりなりにも素材を公開できるレベルにはなった
つまりお前の言い分の正当性は低い
0058デフォルトの名無しさん
2013/01/27(日) 03:16:38.07プログラミングの基礎が出来てないだけだと思う
0059デフォルトの名無しさん
2013/01/27(日) 10:01:37.640060デフォルトの名無しさん
2013/01/27(日) 10:04:43.970061デフォルトの名無しさん
2013/01/27(日) 10:05:46.740062デフォルトの名無しさん
2013/01/27(日) 10:14:42.050063デフォルトの名無しさん
2013/01/27(日) 10:23:44.60UTF-8はつけんでいいんじゃないかね
0064デフォルトの名無しさん
2013/01/27(日) 10:24:50.55RubyはBOMを考慮してくれるのかと思ったけど層じゃないんですね
0065デフォルトの名無しさん
2013/01/27(日) 11:01:47.72これを貼れと言われた気がして。
電話サポートでのやりとり。
客「小学生でも判るように説明しろ!」
サポート「判りました。…ボク、お母さんと代わってくれるかな?」
0066デフォルトの名無しさん
2013/01/27(日) 11:04:32.800067デフォルトの名無しさん
2013/01/27(日) 11:34:53.39Rubyでは、読む時だけはエンコーディングに BOM|UTF-8 を指定することで
BOMを読み飛ばせる。
0068デフォルトの名無しさん
2013/01/28(月) 15:08:21.31我がRuby軍の圧倒的勝利だ!
PHPを完膚無きまでに叩き潰したぞ!
0069デフォルトの名無しさん
2013/01/28(月) 17:16:14.250070デフォルトの名無しさん
2013/01/28(月) 17:42:36.020071デフォルトの名無しさん
2013/01/28(月) 18:28:47.050072デフォルトの名無しさん
2013/01/28(月) 18:32:42.310073デフォルトの名無しさん
2013/01/28(月) 18:43:03.33松江から世界へ!プログラミング言語Ruby
http://sc-smn.jst.go.jp/playprg/index/3170
0074デフォルトの名無しさん
2013/01/28(月) 18:56:24.51新しいバージョンが出たのでバージョンアップしたいと思います
この場合いま入ってるRubyはアンインストールしてからインストールするべきでしょうか?
0075デフォルトの名無しさん
2013/01/28(月) 18:57:35.710076デフォルトの名無しさん
2013/01/28(月) 19:31:47.50古いほうがまだ必要なら別のフォルダに新規インストール
既にインストールされているRubyを不要とみなして上書きインストールするようなモードは残念ながらない
プログラミング言語本体だしある程度は仕方ないのだけども
gemはなにも指定していなければRubyフォルダの中に入るはずなので、アンインストールで全部失われる
0077デフォルトの名無しさん
2013/01/28(月) 19:46:41.74邪魔しないで (Matz)
http://sc-smn.jst.go.jp/playprg/index/3170
0078デフォルトの名無しさん
2013/01/28(月) 21:20:34.16WindowsにRuby1.9.3とredmine2.2をインストールしました
webrickはやめたほうがいいってことでmongrelを入れたんですが動かないようでググったらruby1.9.3には未対応らしい(開発版は動くらしい)ので消しました
そこで
http://higashinakatsu.com/%E6%8A%80%E8%A1%93%E6%83%85%E5%A0%B1/redmine/windows7%E3%81%A7ruby1-9-3redmine2-2-0%E3%82%92thin%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E5%8C%96%E3%81%99%E3%82%8B/
をみてthinを入れてみたんですが
redmineをカレントディレクトリにして
ruby C:/redmine/script/rails server thin -e productionってやると
C:/redmine/redmine/config/application.rb:59:in `instance_eval': undefined methodってエラーがでて
thin -e production startってやってみても
C:/ruby/lib/ruby/gems/1.9.1/gems/bundler-1.2.3/lib/bundler/runtime.rb:31:in `block in setup': You have already activated rack 1.5.0, but your Gemfile requires rack 1.4.4. Using bundle exec may solve this. (Gem::LoadError)
ってエラーになります
redmineをインストールしちゃったのですが再インストールせずに動かすとこまでアドバイスお願いします
0079デフォルトの名無しさん
2013/01/28(月) 21:53:51.08そうします
しかしこれは・・・gemを入れなおすのが面倒ですね
0080デフォルトの名無しさん
2013/01/28(月) 22:55:19.37後ろのエラーメッセージは「rackのGemfileのバージョンが合ってないので合わせろ」ってエラーっぽい
ttp://stackoverflow.com/questions/7323357/problem-with-rack-1-3-2-you-have-already-activated-rack-1-3-2-but-your-gemfile
によれば「bundle update rack」しろとのこと
前半のエラーについてはギブ
0081デフォルトの名無しさん
2013/01/28(月) 23:12:20.38webrickと比べると速度が速いんですねthin
本当はrainbows!を入れてみたかったんですがkgioが必要らしくてこれはwindows未対応なので残念です
0082デフォルトの名無しさん
2013/01/28(月) 23:52:36.47楽ができない
0083デフォルトの名無しさん
2013/01/28(月) 23:53:04.68それはなによりです
bundle update rackで二つのエラーとも解決したって感じですか?
0084デフォルトの名無しさん
2013/01/28(月) 23:55:32.830085デフォルトの名無しさん
2013/01/29(火) 01:19:53.07>>40はWin32APIでGetCommandLineWを呼び出しました
0086デフォルトの名無しさん
2013/01/29(火) 11:41:39.78RailsってCGIでうごきませんもんね
0087デフォルトの名無しさん
2013/01/29(火) 11:47:50.230088デフォルトの名無しさん
2013/01/29(火) 11:51:52.98heroku
http://toro.2ch.net/test/read.cgi/hosting/1329378677/
0089デフォルトの名無しさん
2013/01/29(火) 11:53:32.12ニュース貼り付けるだけのスレ紹介してどうすんの?
0090デフォルトの名無しさん
2013/01/29(火) 11:57:10.900091デフォルトの名無しさん
2013/01/29(火) 11:57:05.26だが板違いであることには変わり無い
0092デフォルトの名無しさん
2013/01/29(火) 12:00:04.49↓
11:57:05.26
何この過去
0093デフォルトの名無しさん
2013/01/29(火) 12:27:10.64たまにあるよ
0094デフォルトの名無しさん
2013/01/29(火) 20:27:54.760095デフォルトの名無しさん
2013/01/29(火) 22:34:49.58今時まともな開発者はみんなMacを使っているよ。
0096デフォルトの名無しさん
2013/01/29(火) 23:09:39.50config.ru必須なのが萎える>rack
0097デフォルトの名無しさん
2013/01/30(水) 05:29:34.540098デフォルトの名無しさん
2013/01/30(水) 07:10:38.270099デフォルトの名無しさん
2013/01/30(水) 10:18:09.760100デフォルトの名無しさん
2013/01/30(水) 10:23:32.19さまざまなメンテナンスまたは便利スクリプトだろうと思う
Webサーバでサイト閲覧者のアクセスに対してページを生成して返すというような用途は、
割合としては2番目くらいで、絶対数としても低めなんじゃないかな
0101デフォルトの名無しさん
2013/01/30(水) 11:16:02.41ユーザーが触れる表示プログラム自体はPHP
がおそらくいちばん楽
0102デフォルトの名無しさん
2013/01/30(水) 11:24:42.04とりあえず
ソースコードを毎日バックアップしたrMysqlのデータをバックアップするスクリプトとかが定番なんでしょうか。そこからはじめてみます
PHPは触った事ないのでわかりませんがJSPでやりたいと思います
0103デフォルトの名無しさん
2013/01/30(水) 11:39:33.260104デフォルトの名無しさん
2013/01/30(水) 12:50:16.23RailsでWebアプリケーションを一から作れる開発者と、何か知らないが役に立たないツールを作っている開発者のどちらが評価されると思う?
MySQLのバックアップツール?そんなものはHerokuにやらせれば良いよ。
0105デフォルトの名無しさん
2013/01/30(水) 13:50:14.23zip ball を展開するだけで動作する anhttpd + cgi というショボイ環境に。PHPは嫌いだし
0106デフォルトの名無しさん
2013/01/30(水) 13:51:48.030107デフォルトの名無しさん
2013/01/30(水) 23:14:11.69Linuxのが楽じゃないか?
0108デフォルトの名無しさん
2013/01/31(木) 10:35:01.000109デフォルトの名無しさん
2013/01/31(木) 10:53:10.710110デフォルトの名無しさん
2013/01/31(木) 16:06:24.10該当した変数に指定した処理をする,っていう場合のスマートな書き方はありますか?
if a == 1
a == 10
elsif b == 1
b == 10
end
とかけばできるのですが,なんかもっとまとめられないのかと思って。
0111デフォルトの名無しさん
2013/01/31(木) 17:07:50.68b = 1==b?10
0112デフォルトの名無しさん
2013/01/31(木) 17:09:01.92そのニュース年に一回は聞くな
0113デフォルトの名無しさん
2013/01/31(木) 17:59:24.24>>110
条件による変数代入または変更はきちんと書いてくれ
テクニカルには書けるが、読みにくくわかりにくくなってバグの元だ
たとえばそれは a が 1 じゃなくて b が 1 だったときには a も b も変更されないし、
a と b が共に 1 だったときは a しか変更されないけど、それでいいのかとか
Ruby だと case を使うことが多いような気はする
0114デフォルトの名無しさん
2013/01/31(木) 18:15:54.12意味ないのに
0115デフォルトの名無しさん
2013/01/31(木) 19:00:19.71向けるべき方向性がちょこっと違う
キレイに書くもっとよく書くというのは重要で素晴らしいが、そっちじゃねえ
0116デフォルトの名無しさん
2013/02/01(金) 00:45:17.440117デフォルトの名無しさん
2013/02/01(金) 01:04:11.37それはその通りで、"昔ながら"の言語よりは確実に、"今風"の言語とは同程度に、スマートに処理を記述可能
ただしそれは全部Ruby wayで書くことが許されたときという条件つきのことでしかない
今回のように「排他的に値をチェックしていって該当のときだけなんかしたい」みたいな泥臭い処理の部分だけ切り出されたら、そりゃドロドロ書いてみせるしかないよ
もうちょっと広めに聞かれたら、それごともうちょっとよく書けるかもしれないけど
a, b = case
when a == 1 then [10, b]
when b == 1 then [a, 10]
end
書けてこんなもんだろうか
0118デフォルトの名無しさん
2013/02/01(金) 01:32:29.44すごい、そんな書き方ができるのか
しかし後で読むとわからなくなりそう
可読性は >>110 が上(あくまで私レベルで)
実行速度はどうなのだろう
0119デフォルトの名無しさん
2013/02/01(金) 07:04:29.840120デフォルトの名無しさん
2013/02/01(金) 07:25:50.05当たり前だ
完全に同じことが起こる完全に同じ負荷の記法なんてのがそうそうあってたまるか
0121デフォルトの名無しさん
2013/02/01(金) 07:28:07.640122デフォルトの名無しさん
2013/02/01(金) 07:29:35.10a == 10
end
if b == 1
b == 10
end
0123デフォルトの名無しさん
2013/02/01(金) 07:30:14.72a = 10
end
if b == 1
b = 10
end
0124デフォルトの名無しさん
2013/02/01(金) 08:27:16.79if a == 1
a = 10
elsif b == 1
b = 10
end
>>117のほうが、何が起こるのかを明確に記述できてて良いと思うけどな
0125デフォルトの名無しさん
2013/02/01(金) 13:43:16.98class A
処理1
end
class B
処理1
end
end
処理1をカプセル化したい場合どうすればいい?
�@Hogeに処理1を特異メソッドとして定義(Hoge::処理1みたいに使う)
�Ahoge内に新しいクラスを作って処理1をインスタンスメソッドとして定義(class A < Cみたいに継承して使う)
�B新しいモジュールを作ってクラス毎にinclude
�C組み込みのクラスに処理1を定義
が考えられるけど
�@→毎回Hoge::書くのがめんどいダサい
�A→毎回継承するのがめんどいダサい
�B→毎回includeするのがめんどいダサい
�C→何か怖い
何か他にいい方法はないんだろうか?
0126デフォルトの名無しさん
2013/02/01(金) 14:06:07.73クラスAのクラスメソッドにするのが妥当であり、そこで変に凝ってあったらむしろ殴る
ということで (1)
A.hoo と記述するのは別にダサくはない
めんどいが
0127デフォルトの名無しさん
2013/02/01(金) 14:13:10.86ありあり
そんじゃ�@にするわ
0128デフォルトの名無しさん
2013/02/01(金) 14:15:30.34だとしたら元からクラスCを継承する形になってるだろうから�A
0129デフォルトの名無しさん
2013/02/01(金) 14:24:16.91名前考えるのめんどくさいんだけど
>>128
機能追加のために継承してはいけない
MIx-inなら多重してもいいのかという話は確かにあるが
0130デフォルトの名無しさん
2013/02/01(金) 14:25:10.42�Aはカプセル化のために拡張用のクラスを作るって意味で元々は存在してない
0131デフォルトの名無しさん
2013/02/01(金) 14:32:45.99全く違うクラスで同じ処理が必要な場合のイメージ沸かなかったから言ってみたんだ・・・
元々存在してないのであれば�Bだわ
0132デフォルトの名無しさん
2013/02/01(金) 14:36:01.610133デフォルトの名無しさん
2013/02/01(金) 14:37:25.61モジュールA内のクラス内でincludeせずにモジュールBのインスタンスメソッドって使えたっけ?
0134デフォルトの名無しさん
2013/02/01(金) 14:37:49.56いくつかで良いなら�Bかな
0135デフォルトの名無しさん
2013/02/01(金) 14:38:30.54使える
0136デフォルトの名無しさん
2013/02/01(金) 14:54:49.11inspectみたいなものだわ
open_uri使って複数のサイトをスクレイピングしてページを解析するアプリなんだけど
ヘッダに文字コード情報ついてない場合はopen_uriがASCII-8BIT返すからその時にNKFとかkconvで適切な文字コードをセットしてやる必要があって
処理1はそのためのもの
0137デフォルトの名無しさん
2013/02/01(金) 14:56:01.93ありあり
0138デフォルトの名無しさん
2013/02/01(金) 15:02:30.24クラスとか関係ねえ
0139デフォルトの名無しさん
2013/02/01(金) 15:09:46.13煽りとかじゃなくメソッドの中に入れるってどういうこと?
0140デフォルトの名無しさん
2013/02/01(金) 19:34:35.520141デフォルトの名無しさん
2013/02/01(金) 20:00:03.61https://support.cloud.engineyard.com/entries/23028411-january-30th-2013-refrain-from-doing-deploys-for-gem-exploit-audit?mkt_tok=3RkMMJWWfF9wsRonuavJde%2FhmjTEU5z16u8uWa%2B3gokz2EFye%2BLIHETpodcMTcNiMr7YEhcSI4JkxgVAR%2BWbe4lO%2F%2BxcGUU%3D
0142デフォルトの名無しさん
2013/02/01(金) 21:02:54.49Windowsの再インストールするべきか悩みました
0143デフォルトの名無しさん
2013/02/01(金) 22:15:58.37ちょっと調べりゃ出てくるもんを丸投げしてなんちゅう言い草だ
0144デフォルトの名無しさん
2013/02/02(土) 00:20:54.09文字コードだと思いutf-8で保存してプログラムの最初に#! ruby -Ku書きましたが依然として同じエラーがでます
どうすればよいでしょうか
ruby1.87です
0145デフォルトの名無しさん
2013/02/02(土) 00:24:02.740146デフォルトの名無しさん
2013/02/02(土) 00:31:20.920147デフォルトの名無しさん
2013/02/02(土) 00:36:16.700148デフォルトの名無しさん
2013/02/03(日) 10:58:53.10ファイルにrequireでtkをインクルードしてもそんなのないよってエラーがでます
0149デフォルトの名無しさん
2013/02/04(月) 00:04:49.00これも定期的にくるな
ActiveTcl((だったかな?)をインストールしてくれたまえ
詳しくはググれ
0150デフォルトの名無しさん
2013/02/04(月) 00:38:54.42標準でRuby/Tk使えるはずだよ
現に俺の環境だとActiveTcl入れてなくても require 'tk' ができる
(mswin32版では、自分でActiveTcl入れないといけないとかあるけど……)
もしかしてmsi(Windowsインストーラ版)を使っていて
なおかつインストール時に「Tcl/Tkサポートをインストールする」に
チェックを入れなかったのでは?
(これにチェックを入れた場合か、もしくはzip版の場合のみTcl/Tkが使える)
0151デフォルトの名無しさん
2013/02/04(月) 06:04:08.590152デフォルトの名無しさん
2013/02/04(月) 09:34:15.950153デフォルトの名無しさん
2013/02/04(月) 12:42:30.03以下のコードで、 a.equal? c がtrue になるのはなぜでしょうか。
a = 10 を a="10"
b = 10 を b="10" に変えれば、予想通りa.equal? c がfalseになってくれるのですが・・・
===使ったコード===
a = 10 #aはオブジェクト10を指す
b = 10 #bは、オブジェクト10(aが指すのとは別のオブジェクト)を指す
c = b #cは、bが指すオブジェクト10を指す
print("a==b is " )
puts a==b
print("a==c is " )
puts a==c
print("a.equal? c is " )
print a.equal? c
===実行結果===
a==b is true
a==c is true
a.equal? c is true
Complete(0)
0154デフォルトの名無しさん
2013/02/04(月) 12:46:53.94たぶんインストーラーでそういうのあったかもしれません
どうしましょう!
もうgemとかdevkitとかインストールしたのでまた再インストールとかパネェことできないです
一回案インストールしないでインストーラー使っても大丈夫ですかね?
0155デフォルトの名無しさん
2013/02/04(月) 13:14:44.10なぜなら、同じ整数値であるならばオブジェクトIDが常に同じという特殊な存在だから
(何百万回と整数が呼ばれるたびにいちいち新規オブジェクトを生成なんてしてたら負荷で死ぬわボケという理由による)
このへんのこと書いてなかったら、いい機会だからその本捨てろ
0156デフォルトの名無しさん
2013/02/04(月) 14:54:06.270157153
2013/02/04(月) 16:26:21.79ありがとうございます
例外的に、整数値(10)は同じidで管理されるということですね
本は、今のとは別の本を探してみます ありがとうございました
0158デフォルトの名無しさん
2013/02/04(月) 16:37:22.23どういう問題が考えられますか?
ruby1.8.7でした
0159デフォルトの名無しさん
2013/02/04(月) 16:58:42.97>>145-147はチェックしましたか?
0160デフォルトの名無しさん
2013/02/04(月) 17:17:35.69最初はBOM付きで保存するのチェック外してたんですけどね
すいませんでした
0161デフォルトの名無しさん
2013/02/04(月) 23:51:46.04正確にいうと、整数(Fixnum)、Symbol、nil、true、falseは即値として扱われる
でも、この事実書いてる記事や本ってそんなにあるかなー
俺はリファレンスマニュアルの用語集ぐらいでしか見たことないんだが
0162デフォルトの名無しさん
2013/02/05(火) 00:14:09.59とりあえず試さずに書くけど
zip版を落としてきて、フォルダごと上書きすればいけるんじゃなかろうか
この方法なら少なくとも、一度インストールしたgemとdevkitは
おおむねそのまま残るはず
やる場合は、念のためバックアップをとってからやってね
0163デフォルトの名無しさん
2013/02/05(火) 00:15:58.02了解です
親に怒られるので明日学校終わったら試してみます
0164デフォルトの名無しさん
2013/02/05(火) 09:58:45.05本も書かわずにウェブだけでてきとうに調べて
習得した気になってる俺でも知ってるようなことだし「でも」って言うほどでもない気はする
0166デフォルトの名無しさん
2013/02/05(火) 13:11:55.06MacOSX 10.6.8
ruby1.9.3p374
MeCab0.995
MeCab-ruby0.99
という環境なのですが、途中で停まってしまいます。
irb(main):001:0> require "MeCab"
=> true
irb(main):002:0> str = "¥u592a¥u90ce¥u306f¥u3053¥u306e¥u672c¥u3092¥u4e8c¥u90ce¥u3092¥u898b¥u305f¥u5973¥u6027¥u306b¥u6e21¥u3057¥u305f¥u3002"
=> "太郎はこの本を二郎を見た女性に渡した。"
irb(main):003:0> mecab = MeCab::Tagger.new
(irb):3: [BUG] Segmentation fault
ruby 1.9.3p374 (2013-01-15 revision 38858) [x86_64-darwin10.8.0]
何か良い方法があれば、ご教授願います。
0167デフォルトの名無しさん
2013/02/06(水) 13:13:13.150 <= x < 1はあるみたいだけど。
0168デフォルトの名無しさん
2013/02/06(水) 13:45:32.850169デフォルトの名無しさん
2013/02/07(木) 07:47:29.16最新安定版のmswin32バイナリのアーカイブが落とせる所って無いの?
ActiveScriptRubyはmsiだし余計な物が一緒になっているみたいだし・・・
0170デフォルトの名無しさん
2013/02/07(木) 07:58:12.74「mswin32版」というところにこだわりがなく、Windowsで使えればよいのであれば
RubyInstallerのzip版がオススメ
導入が楽、ファイルサイズが軽い
devkit導入でネイティブgemがインストールできるといいこと尽くめ
0171169
2013/02/08(金) 06:59:24.27レスthx
mswin32を使っている理由はWindows上で実行速度が一番速いためです
・・・自分でビルドするしかないのか?orz
0172デフォルトの名無しさん
2013/02/08(金) 19:10:44.951998年のVC++6と最新のGCCじゃ最適化能力が違う
RubyがGCC向けにコーディングされているとかもあるかもしれないけど
ActiveScriptRubyの1.9.2以降はVC++10でコンパイルされてるのでGCCに迫るけど
ランタイムライブラリが違ってしまうので、バイナリライブラリの互換性が無い
それと、Windows2000以下では実行できない
MingwのラインタイムライブラリはVC++6と同じものを使ってるので
mswin32とmingw32では(Ruby1.8からは)バイナリライブラリに互換性をもたせている
どうしてもmswin32版がよくてVC++6があるのなら自分でビルドするのがいいのでは
今となってはVC++6が入手できないそうなので(有料だし)
0173デフォルトの名無しさん
2013/02/08(金) 19:31:30.31実行ファイルのロードも含んだ実行時間、単位は秒
たぶん浮動小数点数の計算能力をみるベンチマーク
41.766 ruby 1.8.7 (2010-12-23 patchlevel 330) [i386-mswin32] (う)さんの
32.406 ruby 1.8.7 (2011-06-30 patchlevel 352) [i386-mingw32] 自分でビルド
26.828 ruby 1.9.2p0 (2010-08-18 revision 29036) [i386-mswin32] (う)さんの
15.078 ruby 1.9.3p374 (2013-01-15) [i386-mswin32_100] artonさんの VC++2010製
13.188 ruby 1.9.3p327 (2012-11-10 revision 37606) [i386-mingw32] 自分でビルド
14.453 ruby 1.9.2p0 (2010-08-18 revision 29036) [x64-mswin64_80] (う)さんの VC++2005製
14.313 ruby 1.9.3p327 (2012-11-10) [x64-mswin64_100] artonさんの能楽堂に入っているVC++2010製
09.719 ruby 1.9.3p286 (2012-10-12 revision 37165) [x64-mingw32] Mingw64のサイトにあるやつ
05.578 ruby 2.0.0dev (2012-11-01 trunk 37411) [x64-mingw32] Mingw64のサイトにあるやつ
つい最近Windows8(64) を導入したので調子に乗ってマイクロベンチしてみた
Ruby2.0 64bit版だけの新機能 Flonumのパワーを見たかった
0174デフォルトの名無しさん
2013/02/10(日) 22:07:56.750175デフォルトの名無しさん
2013/02/10(日) 22:51:35.92結果的にMacもその一家に。
0176デフォルトの名無しさん
2013/02/10(日) 23:39:00.760177デフォルトの名無しさん
2013/02/10(日) 23:41:27.77androidで動いた。
0178デフォルトの名無しさん
2013/02/10(日) 23:43:39.71Posted by Yukihiro Matsumoto (Guest) on 2011-01-03 03:51
Hi,
I use Debian sid, and see no problem developing in Ruby.
matz.
ww.ruby-forum.com/topic/785744
0179デフォルトの名無しさん
2013/02/11(月) 07:30:01.74Windowsで効率よく動作しないと家族が危険に晒されるというのなら、Rubyを使うべきではない
0180デフォルトの名無しさん
2013/02/11(月) 10:30:47.180181デフォルトの名無しさん
2013/02/11(月) 11:20:40.720182デフォルトの名無しさん
2013/02/11(月) 11:59:41.040183デフォルトの名無しさん
2013/02/11(月) 12:35:26.330184デフォルトの名無しさん
2013/02/11(月) 12:46:18.720185デフォルトの名無しさん
2013/02/11(月) 12:48:06.770186デフォルトの名無しさん
2013/02/11(月) 14:39:47.810187デフォルトの名無しさん
2013/02/11(月) 14:47:36.540188デフォルトの名無しさん
2013/02/11(月) 18:15:30.120189デフォルトの名無しさん
2013/02/11(月) 18:17:29.99pとかね
0190デフォルトの名無しさん
2013/02/11(月) 18:58:06.090191デフォルトの名無しさん
2013/02/11(月) 19:05:56.30あれは「pというメソッドを他人が読むことは絶対にない(デバッグ以外の使い方をしてはならない)」という意図もあるな
0192デフォルトの名無しさん
2013/02/11(月) 19:29:43.69お前がRubyのこと何一つ知らないで書き込んだってことだけは伝わった
0193デフォルトの名無しさん
2013/02/11(月) 19:33:30.73仕事では使えんのよなー
0194デフォルトの名無しさん
2013/02/11(月) 19:55:19.280195デフォルトの名無しさん
2013/02/11(月) 19:58:24.34そゆことっすなー
あらゆることをRubyで行なえないのは、まあ、残念ではあるんだけど、適材適所ということでひとつ
0196デフォルトの名無しさん
2013/02/11(月) 21:03:17.35じゃあ教えてくれよ
0197デフォルトの名無しさん
2013/02/11(月) 21:04:12.980198デフォルトの名無しさん
2013/02/11(月) 21:19:37.72それ呼んでpすればいい
0199デフォルトの名無しさん
2013/02/11(月) 21:35:10.62それはそのxmlオブジェクトというもののクラスを作った人が悪いな
Rubyのあらゆるクラスはinspectを適切に定義することということになってる
あるオブジェクトをpで表示してみてなにがなんだかわからない(内部変数丸見えのままの)表示だったら、クラス作成者に文句言うといいぞ
0200デフォルトの名無しさん
2013/02/11(月) 21:38:25.550201デフォルトの名無しさん
2013/02/11(月) 21:38:33.19p hoge は inspect メソッドを呼んで puts hoge.inspect とほぼ同じ動作をしているだけに過ぎない
0202デフォルトの名無しさん
2013/02/11(月) 21:57:07.22実際には引数オブジェクト側というかクラス側がいろいろ用意しなければならないというのがオブジェクト指向的なのかもしれん
p は 引数オブジェクトの inspect メソッドを、puts は 引数オブジェクトの to_s メソッドを呼ぶということが決まっている
このへんのことを書いていない解説書や解説サイトがあったら今後も役に立たない可能性が大なので投げ捨てろ
0203デフォルトの名無しさん
2013/02/11(月) 22:15:09.86inspectはデバッグ用だからオブジェクトの文字列表現を返すものとはいえ
ある程度は内部状態を見せてくれたほうがユーザは助かるんじゃないかと
to_sと同じもの見せられても嬉しくない
irb(main):002:0> a = Nokogiri::XML("<a>apple</a>")
=> #<Nokogiri::XML::Document:0x55d55c name="document" children=[#<Nokogiri::XML::Element:0x62aa34 name="a" children=[#<Nokogiri::XML::Text:0x629fbc "apple">]>]>
irb(main):004:0> a.to_s
=> "<?xml version=\"1.0\"?>\n<a>apple</a>\n"
irb(main):005:0> require 'rexml/document'
=> true
irb(main):006:0> doc = REXML::Document.new("<a>apple</a>")
=> <UNDEFINED> ... </>
irb(main):008:0> doc.to_s
=> "<a>apple</a>"
0204デフォルトの名無しさん
2013/02/11(月) 22:33:56.30君のXMLの知識はゼロだということがよくわかった
0205デフォルトの名無しさん
2013/02/11(月) 22:44:51.81どのへんでゼロだと判断したの?
0206デフォルトの名無しさん
2013/02/11(月) 23:57:49.80でもWindowsで効率的に動作しない(というかインストールすらままならない)というのは
大半のコンピュータで効率的に動作しない、というのと同じことでは?シェア的に考えて。
0207デフォルトの名無しさん
2013/02/11(月) 23:59:13.140208デフォルトの名無しさん
2013/02/12(火) 00:01:51.870209デフォルトの名無しさん
2013/02/12(火) 00:10:23.790210デフォルトの名無しさん
2013/02/12(火) 00:28:46.260211デフォルトの名無しさん
2013/02/12(火) 00:32:56.100212デフォルトの名無しさん
2013/02/12(火) 00:56:48.190213デフォルトの名無しさん
2013/02/12(火) 01:01:10.280214デフォルトの名無しさん
2013/02/12(火) 01:03:29.330215デフォルトの名無しさん
2013/02/12(火) 04:03:15.310216デフォルトの名無しさん
2013/02/12(火) 05:32:24.480217デフォルトの名無しさん
2013/02/12(火) 11:10:22.900218デフォルトの名無しさん
2013/02/12(火) 11:13:59.00どうせ確率的にはほとんど出ないんだから。
0219デフォルトの名無しさん
2013/02/12(火) 14:03:55.880220デフォルトの名無しさん
2013/02/12(火) 14:46:27.60/* generates a random number on [0,0xffffffff]-interval */
unsigned long genrand_int32(void)
(中略)
/* generates a random number on (0,1)-real-interval */
double genrand_real3(void)
{
return (((double)genrand_int32()) + 0.5)*(1.0/4294967296.0);
/* divided by 2^32 */
}
mt19937ar.cpp
0221デフォルトの名無しさん
2013/02/13(水) 00:41:46.554294967296.0って何?意味わかんない。
どこのトーシロが書いたプログラムだよ…
0222デフォルトの名無しさん
2013/02/13(水) 06:28:38.910223デフォルトの名無しさん
2013/02/13(水) 09:28:47.880224デフォルトの名無しさん
2013/02/13(水) 10:57:24.59つまりマグニチュードが 1.0 上がると地震の規模は 2 の 5 乗で 32 倍になります
なんとマグニチュードが 2.0 上がるだけで地震の規模は 1024 倍にもなるのです
0225デフォルトの名無しさん
2013/02/13(水) 13:05:30.46他の開発環境がないと構築できないスクリプト言語とか^^;
Rubyはオワコン
0226デフォルトの名無しさん
2013/02/13(水) 14:39:08.380227デフォルトの名無しさん
2013/02/13(水) 19:08:14.48CならできるのにRubyでできないの?
0228デフォルトの名無しさん
2013/02/13(水) 19:27:58.300229デフォルトの名無しさん
2013/02/13(水) 22:38:41.00class Test
def abc()
end
private :abc
end
こうかくと2度もメソッド名を記述しないといけないので効率悪いと思うんですが何故こういう仕様なんでしょうか?
private def abc()みたいに書ける方がらくだと思うんです
0230デフォルトの名無しさん
2013/02/13(水) 22:46:36.72class Test
private
def abc()
end
end
0231デフォルトの名無しさん
2013/02/14(木) 13:03:28.16html5は空要素を<img〜 />って書かなくてもOKなので<img〜>でも取得できたら良いんですが方法ありませんか?
0232デフォルトの名無しさん
2013/02/14(木) 14:04:16.460233デフォルトの名無しさん
2013/02/14(木) 14:08:28.28そりゃその通りなんだが回答レベルとしてどうよという
rexmlでXMLとして解釈してるんじゃないかね
空要素が閉じられてなくてもいいHTMLのDTDを明示的に指定するとたぶん文句言わないぞ
0234デフォルトの名無しさん
2013/02/14(木) 14:20:02.33re = REXML::DocType.new('html', PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"')
空要素をとじる必要なhtml4のdtdを読み込んでみましたがダメなようでした
0235デフォルトの名無しさん
2013/02/14(木) 14:27:19.80他人に解決求めるならそのへんは勝手に解釈省略すんな
0236デフォルトの名無しさん
2013/02/14(木) 14:50:00.25REXMLでXHTMLじゃないHTMLは読めない
0237デフォルトの名無しさん
2013/02/14(木) 15:23:31.07>>236とかぶるけどHTMLを読みたかったらHTMLパーサを使う
REXMLはXMLパーサでHTMLパーサじゃない
NokogiriはたしかXML/HTML対応だからそっち試してみては
0238デフォルトの名無しさん
2013/02/14(木) 15:33:36.830239デフォルトの名無しさん
2013/02/14(木) 16:18:23.32http://developers.slashdot.jp/story/13/02/08/061220/
0240デフォルトの名無しさん
2013/02/14(木) 16:59:55.070241デフォルトの名無しさん
2013/02/14(木) 17:55:34.72HTML5仕様書ではHTML構文のHTML5とXHTML構文のXHTML5を定義している
http://www.w3.org/TR/html5/introduction.html#html-vs-xhtml
>This specification defines version 5 of the XHTML syntax, known as "XHTML5".
0242デフォルトの名無しさん
2013/02/14(木) 17:58:35.550243デフォルトの名無しさん
2013/02/14(木) 20:55:30.780244デフォルトの名無しさん
2013/02/16(土) 01:45:53.31小一時間ほど文字化けが不可避なんですけど全部打ち直しですか?
0245デフォルトの名無しさん
2013/02/16(土) 03:58:56.380246デフォルトの名無しさん
2013/02/16(土) 07:17:04.310247デフォルトの名無しさん
2013/02/16(土) 07:37:45.521.8だとこんなとこ
require 'kconv'
File.open(utf8file,'w'){|f| f.write(File.read(sjisfile).toutf8) }
0248デフォルトの名無しさん
2013/02/16(土) 17:42:33.55たとえば、どの文字が文字化けを生じたの
0249244
2013/02/16(土) 18:06:23.00windowsだけならShiftJISで問題ないんですけど今度はubuntuで実行した時に文字化けしまくるから嫌なんですよね
皆さんはどうしているのでしょうか
0250デフォルトの名無しさん
2013/02/16(土) 18:20:48.400251デフォルトの名無しさん
2013/02/16(土) 18:35:41.61windowsではmintty
0252デフォルトの名無しさん
2013/02/16(土) 18:54:16.140253デフォルトの名無しさん
2013/02/16(土) 21:02:56.010254デフォルトの名無しさん
2013/02/17(日) 00:08:59.66こいつをフロントエンドにして、いろんなことするんだ。
0255デフォルトの名無しさん
2013/02/17(日) 00:52:12.82OSがなんだろうとその上でutf8を扱える同じソフトを使ってれば問題ない。GNUアプリケーション群とかサポートするOSも多くて良い。
0256デフォルトの名無しさん
2013/02/17(日) 13:15:17.41open("hoge.txt", "a"){|f| f.write("hoge")}
を実行するときに別のプログラムでhoge.txtを開いているとエラーが出ますが、どのように回避出来ますか?
0257デフォルトの名無しさん
2013/02/17(日) 13:30:41.43こっちのセリフだw
書き込んでしまいたいのかリトライさせたいのか強制終了させたいのかお前の希望をまず言えよ
0258デフォルトの名無しさん
2013/02/17(日) 13:33:55.92書き込んでしまえるのならそっちのほうがいいですが
0259デフォルトの名無しさん
2013/02/17(日) 14:14:39.55別のプログラムでそのファイルをロックしない。
0260デフォルトの名無しさん
2013/02/17(日) 14:15:34.26try
0261デフォルトの名無しさん
2013/02/17(日) 14:39:01.021.定番のテンプレートエンジン
2.PHPのCodeIgniterのような軽量フレームワーク(RoRほど高機能なものは必要ないため)
3.Ruby使うならこれはいれとけっていう定番のgem
0262デフォルトの名無しさん
2013/02/17(日) 22:30:21.881. 定番はない。まあまあメジャーなのはERB(とその後継のErubis)、次いでHamlあたり
2. Sinatra or Padrino
3. (Ruby 1.9系列であれば)ない。たぶん100人に聞いたら100人とも微妙に回答が違う
個人的にはBundlerは入れるべき
0263デフォルトの名無しさん
2013/02/17(日) 23:02:34.16さっさと移行計画立てたいのですが、上司は移行コストは無駄だと怒ります。どうすれば上司を説得できるでしょうか。
0264デフォルトの名無しさん
2013/02/18(月) 00:31:58.89移行するって何にですか? 1.8のまま維持するのがなぜ駄目なんですか?
0265デフォルトの名無しさん
2013/02/18(月) 01:25:32.920266デフォルトの名無しさん
2013/02/18(月) 05:42:37.83>> n.year*365+n.month*30+n.day
=> 734823
という感じの毎日1ずつ増えていく数値が欲しいんですが
もうちょっと厳密でまともな書き方あったら教えて下さい
0267デフォルトの名無しさん
2013/02/18(月) 07:32:31.37そりゃ移行コストに見合うだけのメリットを示せないと説得はできないだろう
時間がたてばたつほど移行が大変になる、ってのはそうだと思うが
「だからといって敢えて今やる必要はない」ってのが上司の理屈だ
だから今やっておかないと、後でこんなに困るんです!っていうのを具体的に示せないと
説得はムリ
ちなみに、企業的に今一番説得力があるであろうと思われる理由は
「2013年6月でRuby 1.8.7のサポートが切れる予定なんです」
http://www.ruby-lang.org/ja/news/2011/10/07/plans-for-1-8-7/
>>266
n.year*366 + n.yday
うるう年があるので366じゃないとダメ
0268デフォルトの名無しさん
2013/02/18(月) 07:34:26.43ぱっと思いつくのはこれくらい
Time.now.to_i / (60*60*24) # 1970年1月1日午前0時から
require 'date'
(Date.today - Date.new(0,1,1)).to_i
0269デフォルトの名無しさん
2013/02/18(月) 08:29:31.30Date.today.jd でいいんじゃ?
0270デフォルトの名無しさん
2013/02/18(月) 09:08:21.98マニュアルのユリウス日の説明見るとスゲー日付が基準になってるからさ
266の目的にあえばいいんじゃないかな
0271デフォルトの名無しさん
2013/02/18(月) 19:30:59.700272デフォルトの名無しさん
2013/02/18(月) 20:56:09.071.8.xや1.9.2の頃は出来るのに
0273デフォルトの名無しさん
2013/02/18(月) 22:01:09.76いいんだよ。
通日数が分かればあとは特定の起点に対する相対値にするだけだ。
0274デフォルトの名無しさん
2013/02/18(月) 22:57:52.23Ruby 1.9系なら、プロンプトへの出力時に自動で
適切なエンコーディングに変換してくれるようになっている
WindowsならShift_JIS(Windows-31J)に、UbuntuならUTF-8に、というように
0275デフォルトの名無しさん
2013/02/18(月) 23:23:39.12上司にRails Castのそれ関係のビデオ見せる。
0276uy
2013/02/20(水) 07:49:50.111。93で直ってなかったっけ
0277uy
2013/02/20(水) 07:54:26.86WindowsがUTF8じゃないからだろ
今pcないから感だけど
ソースコードの文字コードをシフトジスにして実行したら読めるんじゃね?
やめたほうがいいけど
0278デフォルトの名無しさん
2013/02/20(水) 13:47:09.210279デフォルトの名無しさん
2013/02/21(木) 00:29:22.37Windows をやめる。
以上。
0280デフォルトの名無しさん
2013/02/21(木) 03:49:21.670281デフォルトの名無しさん
2013/02/21(木) 08:08:45.100282デフォルトの名無しさん
2013/02/21(木) 08:33:02.290283デフォルトの名無しさん
2013/02/21(木) 09:41:09.530284デフォルトの名無しさん
2013/02/21(木) 18:55:34.18コマンドプロンプトでスクリプト名を入力してEnterを押すとそのスクリプトが実行され、
エクスプローラーでスクリプトファイルをダブルクリックすると関連付けたエディタで開く
というようなことはできないでしょうか?
0285デフォルトの名無しさん
2013/02/21(木) 19:14:57.50たぶんできる
> コマンドプロンプトでスクリプト名を入力してEnterを押すとそのスクリプトが実行され、
環境変数PATHで指定したディレクトリにスクリプトを置く
> エクスプローラーでスクリプトファイルをダブルクリックすると関連付けたエディタで開く
関連付け Win7 でぐぐる
0286デフォルトの名無しさん
2013/02/21(木) 19:43:32.14そのファイルタイプの規定のアクションが呼び出されるような気がするから
それぞれで違う動作は無理かもしれないしできるかもしれない。分からん
0287デフォルトの名無しさん
2013/02/21(木) 19:46:07.370288デフォルトの名無しさん
2013/02/21(木) 19:55:10.57ああそういうことか。PATHとかの問題じゃないね
*.rbはエディタに関連付けるとして
コマンドプロンプトからはruby hoge.rbのようにインタプリタと
スクリプトを陽に指定すればいけるだろうか
0289デフォルトの名無しさん
2013/02/21(木) 20:26:12.65#include ime_func.ahk
#IfWinActive, ahk_class CabinetWClass
^E:: ; 選択ファイルを編集する
if IME_CHECK("A")=0
{
Send,{AppsKey}E
}
return
0290284
2013/02/21(木) 22:05:55.87皆さんありがとうございました
0291デフォルトの名無しさん
2013/02/21(木) 22:09:58.17NYAOSなどの代替シェルを使う
0292284
2013/02/21(木) 22:29:47.89UNICODEは扱えるのかな
0293デフォルトの名無しさん
2013/02/21(木) 22:54:32.18標準入力ができないのでやめましょう
0294デフォルトの名無しさん
2013/02/21(木) 23:24:29.10どうせ hogehoge.rb って rb まで書かないといけないんだし、俺ならそういうのは特別にbatファイルを作っておくかな
エクスプローラからダブルクリックで実行は危険過ぎるので編集に切り替え
0295デフォルトの名無しさん
2013/02/22(金) 00:54:58.800296デフォルトの名無しさん
2013/02/22(金) 02:38:49.26pathext指定しろ
0297291
2013/02/22(金) 07:56:06.28UNICODEは残念ながらムリ
ちなみに293が「標準入力できない」と書いているが
少なくとも俺がみた限りでは普通にできる
0298デフォルトの名無しさん
2013/02/22(金) 21:39:10.74http://doc.ruby-lang.org/ja/1.9.2/class/Net=3a=3aHTTP.html
を見ていますが、
get(path, header = nil, dest = nil) -> Net::HTTPResponse
とあるけどリクエストパラメータがありません。
path?x=1 のようにしないといけないのでしょうか。
0299デフォルトの名無しさん
2013/02/22(金) 21:58:21.39というか Net::HTTP の get は「最終送信メソッド」であり、それ以前にクエリ文字列は完成されていなければなりません
なんか Hash とか配列の配列とかからてきとうにクエリ文字列を作るのは他のライブラリやメソッドの仕事
0300デフォルトの名無しさん
2013/02/23(土) 16:28:55.27これでクビにならずに済んだ。ホッ
0301デフォルトの名無しさん
2013/02/23(土) 16:32:12.920302デフォルトの名無しさん
2013/02/23(土) 18:16:33.38数日あとじゃね?
0303デフォルトの名無しさん
2013/02/25(月) 03:12:31.270304デフォルトの名無しさん
2013/02/25(月) 04:15:06.780305デフォルトの名無しさん
2013/02/25(月) 05:12:51.370306デフォルトの名無しさん
2013/02/25(月) 06:54:43.490307デフォルトの名無しさん
2013/02/25(月) 10:05:56.460308デフォルトの名無しさん
2013/02/25(月) 10:11:07.590309デフォルトの名無しさん
2013/02/25(月) 10:36:20.40RubyはEUC-TWを扱えるけどEncodingによる変換はできない
バグトラッキングに上がったことがあったけど「このへんどうすればいいかよくわからんのでパス」という理由でリジェクトされたはず
※ より正確にはlack of feedback、EUC-TWがどうあるべきかについて詳しい人がいなかった
「本当に」EUC-TWで書かれたテキストが必要なのならIconvを使う
0310デフォルトの名無しさん
2013/02/25(月) 10:43:57.080311デフォルトの名無しさん
2013/02/25(月) 10:48:22.970312デフォルトの名無しさん
2013/02/25(月) 11:19:15.600313デフォルトの名無しさん
2013/02/25(月) 11:52:04.530314デフォルトの名無しさん
2013/02/25(月) 12:41:24.85ruby script/rails server webrick -e productionってやると
以下のエラーがでます
どう対処したらいいでしょうか?
Unable to load the EventMachine C extension; To use the pure-ruby reactor, requi
re 'em/pure_ruby'
C:/Ruby200/lib/ruby/gems/2.0.0/gems/eventmachine-1.0.0-x86-mingw32/lib/
rubyeventmachine.rb:2:in `require': cannot load such file -- 2.0/rubyeventmachin
e (LoadError)
0315デフォルトの名無しさん
2013/02/25(月) 16:25:42.99ありがとう。 iconvは削除されたので、iconvgemを使えということですね。
しかし、Iconvはbig5-UAOとか新しめのはサポートされてない・・・
ここでも条件分けですかね。
0316デフォルトの名無しさん
2013/02/25(月) 17:43:00.31EventMachineのバイナリライブラリがないのじゃなかろうか
2.0は1.9とはバイナリ互換性がないので
別途2.0用にコンパイルされたライブラリが必要になるはず
gem fetch eventmachineってしてダウンロードしてみたら
eventmachine-1.0.0-x86-mingw32.gem には
1.8と1.9用のバイナリしか入ってなかったよ
エラーメッセージで「EventMachineC拡張がロードできないので pure-ruby版を使え」
って言われてるのでeventmachine の代わりにem/pure_rubyをrequireすればいいみたいなので
どこかrequire 'eventmachine'よりも先にrequire 'em/pure_ruby'を書けばいいのだろうけど
Railsはわからん
RubyInstaller Development Kitもインストールすると
2.0用バイナリのコンパイルとか出来るのかな?試さないけど
0317291
2013/02/25(月) 23:31:37.63基本的には壊れないはずだけど
(pikはあくまで、プロセス内限定でPATHを変更するものなので)
何か気になるところがある?
>>312
http://keijinsonyaban.blogspot.jp/2011/12/bundler-11_24.html
bundle cleanコマンドの説明のところ
0318デフォルトの名無しさん
2013/02/26(火) 15:16:34.86やっぱ2.0でredmineはあきらめたほうがよさそうですね
ひょっとしたらem/pure_ruby書いたら良いかもしれませんがもう何回もRubyを再インストールとgemでupdateしたらbundlerでgem入れるの繰り返しをしてたのでHDDをいためそうなので2.0でredmineするのはあきらめて1.9でやることにします
1日以内に範囲を絞ってググってみても誰もwindowsでruby2.0でredmineを動かす記事書いてないから厳しいですね
0319デフォルトの名無しさん
2013/02/26(火) 16:11:09.20やるとしたら2.0.1だろう
0320デフォルトの名無しさん
2013/02/26(火) 17:10:29.30まずcファイルをコンパイル?(ビルド?)できない
バイナリ出るまで待とう。。
0321デフォルトの名無しさん
2013/02/27(水) 00:09:41.65ruby 2.0.0のバイナリ、もうRubyInstallerに出てるよ
0322デフォルトの名無しさん
2013/02/27(水) 08:04:19.550323デフォルトの名無しさん
2013/02/27(水) 08:25:06.75初 心 者 ス レ で し た
>>322
1.9よりかは早いと思うよ、あれは変更が大胆で面倒過ぎた
半年もすれば解説なり説明なりが増えて使えるようになるんじゃないかな
俺らはライブラリ作成者とか先っぽの人たちが頑張るのを応援してればいい
0324デフォルトの名無しさん
2013/02/27(水) 10:00:45.72とりあえず今は1.9.3を使って、んで2.0の解説が山盛りになってからおもむろに2.0の新機能を勉強するといいぞ
1.9.xの解説なら山のようにある(希望)し、1.9.1で使えて2.0で使えない考え方というのもrequire_relativeを除いてないといっていい
require_relativeは1.9.1→1.9.2で唯一激変した「カレントディレクトリにあるrbファイルをbasenameでrequireできない」にまつわるもの
もともと筋がよくなかったし、require './hoge.rb' と書く人も当時の時点で多かったから、それほど問題はなかったんだけど
1.9.1対応の解説で、カレントディレクトリの自作rbファイル hoge.rb を require で読みたいときに
require 'hoge'
と書かれているものがあったら、それは現在の1.9.3および2.0では間違いで
require './hoge.rb'
とパスつきで書くか
require_relative 'hoge'
と相対requireしなければなりません
相対パスで書くのは1.9.1でも1.8.7でも(カレントディレクトリさえ妥当なら)動くので、こっちが人気
0325デフォルトの名無しさん
2013/02/27(水) 16:13:57.920326デフォルトの名無しさん
2013/03/01(金) 16:39:27.07rubyでgetsを使うとコマンドプロンプト上で実行すると大丈夫なのですが、RDEで実行すると入力要求のタイミングがおかしいんですがなぜでしょうか?
例えば
puts "あ"
b=gets.chomp
puts"い#{b}"
実行すると画面に”あ”が表示される前に入力が要求されます
0327デフォルトの名無しさん
2013/03/01(金) 18:29:47.840328デフォルトの名無しさん
2013/03/01(金) 18:50:26.65もしそうならどう設定すればいいか教えていただきたいです。
0329デフォルトの名無しさん
2013/03/01(金) 20:29:55.660330デフォルトの名無しさん
2013/03/01(金) 20:48:52.670331デフォルトの名無しさん
2013/03/01(金) 21:46:56.810333デフォルトの名無しさん
2013/03/01(金) 22:06:13.03=> true
0334>>328
2013/03/01(金) 22:15:24.830335デフォルトの名無しさん
2013/03/01(金) 22:28:41.41STDOUT.sync = true
puts "input"
puts(gets)
とかやると"input"までは出力されるけど、改行はつかないね
変なの
0336デフォルトの名無しさん
2013/03/01(金) 22:46:03.28Ruby初心者は決して使ってはいけない
だからたとえば>>326のようなトラブルには絶対に遭遇しないし、誰も直す気もアドバイスする気もない
なぜなら、Rubyでgetsなんて使わないからだ
あるいは、使うとしてもこれにぶち当たった時点でスクリプトの動作を一旦変える
どうせ文字列がどこから来るかの違いなんだし
0338デフォルトの名無しさん
2013/03/02(土) 01:10:23.62:'piyo-piyo'ってしなきゃダメなのはどういう理由?
0339デフォルトの名無しさん
2013/03/02(土) 01:31:57.650340デフォルトの名無しさん
2013/03/02(土) 01:32:51.93解釈しなきゃいけない理由があるの?
Ruby言語的に。
0341デフォルトの名無しさん
2013/03/02(土) 01:40:50.46空白の有り無しとか言い始めるのか
大体の言語で変数名は英数字と_のみじゃないの
0342デフォルトの名無しさん
2013/03/02(土) 08:50:16.100343デフォルトの名無しさん
2013/03/02(土) 09:18:10.73-のほうが"優先順位"が高いから
演算記号の"優先順位"を低くするというルールを作ると :a-b というシンボルや変数名が一発で書けるようになるが、
そのかわり「:aからbを引く(思いつかないならaからbを引く)」と書きたい場合
「3-2って続けて書けるからa-bって書いたらエラーになった、
そういやこれ変数として解釈されるんだっけ、変数と解釈される要素の前後には空白を【絶対に書かなければならない】のね」
という新しい(そして、明らかに煩雑な)ルールが別途できてしまう
0344デフォルトの名無しさん
2013/03/02(土) 10:25:04.68とか言っちゃう奴は何も考えてない奴が多いから参考にならない法則
0345デフォルトの名無しさん
2013/03/02(土) 11:16:54.45なんでこんな動作なんだこっちのほうがいいのに、と思ってもらうこと自体はなにも問題がない、というか思ってもらったほうがいい
納得してもらえるかどうかだけが問題
0346デフォルトの名無しさん
2013/03/02(土) 11:56:05.01分かってない奴に「すれば良いだけだから簡単でしょ」
と言われ続けたストレスをついここで発散してしまいました
0347デフォルトの名無しさん
2013/03/02(土) 11:59:44.87受け付けないのですが、自分で更にラッパーをかけて使っているのでしょうか?
0348デフォルトの名無しさん
2013/03/02(土) 13:11:44.520349デフォルトの名無しさん
2013/03/02(土) 13:13:28.830350デフォルトの名無しさん
2013/03/02(土) 13:25:52.830351デフォルトの名無しさん
2013/03/02(土) 13:41:57.061週間もすれば自分の身にも振りかかってきてわかってくることではあるけど、
これから入学就職のシーズンでプログラミングに触れる人も増えるだろうし、まったくの新参の人は注意
0352デフォルトの名無しさん
2013/03/02(土) 19:02:10.460353デフォルトの名無しさん
2013/03/02(土) 20:59:11.51どうでもいい事だからってだけ
まあ確かに紛らわしいのはわかるが
今その辺を変えて、後方互換性が爆死するのは困るから
正直今変えてほしくない
0354デフォルトの名無しさん
2013/03/02(土) 22:46:19.76「誰も気にしてないということがわからないような位置にいる人」が言ってるんだろうという確証になるから余計スルー
0355デフォルトの名無しさん
2013/03/02(土) 23:08:24.16気にしない人って所詮その程度のものなんだろう
君(もしくは少数)の意見が全員一致の意見だと思わないほうがいい
0356デフォルトの名無しさん
2013/03/03(日) 00:45:20.810357デフォルトの名無しさん
2013/03/03(日) 04:02:54.610358デフォルトの名無しさん
2013/03/05(火) 07:18:25.08それとも、普通の変数と同じで、無名変数的に扱う場合にこうしてるだけ?
0359デフォルトの名無しさん
2013/03/05(火) 08:27:01.19hoge?fuga:hage
0360デフォルトの名無しさん
2013/03/05(火) 11:16:38.72特別な意味はないよ
0361デフォルトの名無しさん
2013/03/05(火) 18:07:00.77フォルダ名が日本語のフォルダが無視されます
0362デフォルトの名無しさん
2013/03/05(火) 20:34:54.56=> 1.4142135623730951
こういった風にオブジェクトを指定の方法で処理する書き方ってありますか?
もちろん上のは Math.sqrt(2) と同じ結果ですが、
someobj.を〇〇する.それを△△する.さらに□□する.
といったように加工の順番どおりに記述できないのかなぁということです。
0363デフォルトの名無しさん
2013/03/05(火) 20:53:31.840364デフォルトの名無しさん
2013/03/05(火) 21:31:02.00class Object
def evalby(&blk)
blk.call(self)
end
end
2.evalby{|x| Math.sqrt(x)}
=> 1.4142135623730951
2.evalby{|x| Math.sqrt(x)}.evalby{|x| x**2}
=> 2.0000000000000004
見よう見まねで試してみましたが、もっとましな実装方法があれば教えてください
0365デフォルトの名無しさん
2013/03/05(火) 21:47:50.85class Object
def evalby(code)
code.call(self)
end
end
2.evalby(Math.method(:sqrt)).evalby(->x{ x**2})
=> 2.0000000000000004
この辺で自分的には満足ですが拡張無しでも出来るのなら知りたいです。
0366デフォルトの名無しさん
2013/03/05(火) 22:07:25.46Dir.glob(**/)なら動かない環境があるよ
0367デフォルトの名無しさん
2013/03/05(火) 23:51:06.10>> 2.instance_eval(&Math.method(:sqrt))
=> 1.4142135623730951
>> 2.instance_eval(&Math.method(:sqrt)).instance_eval(&->x{x**2})
=> 2.0000000000000004
0368デフォルトの名無しさん
2013/03/06(水) 00:18:54.23やはり素人が思いつくような機能は大抵は備わっている感じですなんですなあ・・・
0369デフォルトの名無しさん
2013/03/06(水) 00:20:36.41PHPみたいなゴミとは訳が違う
0370デフォルトの名無しさん
2013/03/06(水) 00:28:48.66メソッドチェーンのことだったらRubyでもPHPでもできる
0371デフォルトの名無しさん
2013/03/06(水) 00:51:09.59objが○○する.成果物が△△する
ではなく
objに対して(xxxが)○○する.成果物に対して(yyyが)△△する
的な事をしたいという話でした
0372デフォルトの名無しさん
2013/03/06(水) 02:58:45.172.sqrt ==> x # 代入のつもり
x**2.puts(file)
みたいな
0373デフォルトの名無しさん
2013/03/06(水) 10:48:48.62RubyをWindowsで使っちゃうひとって
0374デフォルトの名無しさん
2013/03/06(水) 11:12:29.20Linux(いやMacOSXでもいいけど)上では普通に動くのにWindowsではなんか変だな、しゃあないかわりに○○するか、で終了
迂回できる知識があるので「困ってない」、から、いつまでたっても直らない
今回だとDir.globの*はあんまりにも他の部分と動作解釈が違うので、Linux上ですら意図的に避けられていることが多い
Dir.entriesを正規表現で掬い上げるとか、そっちのほうが単純確実
0375デフォルトの名無しさん
2013/03/06(水) 11:36:54.71Windows ではなんか変だな、しゃあないかわりに Python するか、で終了。
なのにね。
なんでわざわざ障害の多い Ruby 使おうとするんだろう。
0376デフォルトの名無しさん
2013/03/06(水) 13:25:04.440377デフォルトの名無しさん
2013/03/06(水) 17:20:02.850378デフォルトの名無しさん
2013/03/06(水) 20:28:24.380379デフォルトの名無しさん
2013/03/06(水) 21:42:44.640380uy
2013/03/07(木) 14:17:09.66それ知らずにルビーONウィンドウズしてるとパンチングマシーンとかで普通に100とかでるようなる
0381デフォルトの名無しさん
2013/03/07(木) 14:39:07.140382デフォルトの名無しさん
2013/03/07(木) 14:50:55.760383デフォルトの名無しさん
2013/03/07(木) 14:53:32.950384デフォルトの名無しさん
2013/03/07(木) 15:17:11.07しばらく独学します。ありがとうございました
0385デフォルトの名無しさん
2013/03/07(木) 15:25:55.38自分のやりたいことが何なのかをコードではなくて
日本語で(別に英語でも良いが)表現できれば検索できる
0386デフォルトの名無しさん
2013/03/07(木) 15:29:51.23別に簡単ではない
これは通常のString#splitの動作とは違う特別に設定されたものだから、マニュアルを見ないと絶対にわからない
というわけで、とりあえずダメもとでいいからマニュアルは見とけ
ttp://doc.ruby-lang.org/ja/1.9.3/method/String/i/split.html
半分くらいの割合で初心者的によくわかんないことが書いてあるが、ときどきやりたいことがそのまま書いてあったりもする
当たればラッキーだ
0387デフォルトの名無しさん
2013/03/07(木) 15:33:41.92> これは通常のString#splitの動作とは違う特別に設定されたものだから、マニュアルを見ないと絶対にわからない
そうですよねえ、やっぱり
ゲームでいうと秘密の入口みたいなもの
そういうのだけ集めた裏技集があると便利
0388デフォルトの名無しさん
2013/03/07(木) 15:40:04.50しょっちゅう言われてるが、StringとArray(Enumerable)とHashのマニュアルは流し読みして、代表的な動作を記憶に留めておくといい(具体的な細かい動作は不要)
それ以外のクラスは操作対象になってから読むほうがいい(膨大だし面倒だし忘れちゃうから)
今回だって「文字列を配列にするメソッドはどっかにあったなStringだっけ?」程度の記憶はあって欲しいところ
0389385
2013/03/07(木) 15:41:07.190390デフォルトの名無しさん
2013/03/07(木) 15:45:55.69ものすごく何度も使っていればそのうち覚えるだろうけど、そんなん無理する必要ないよな
最近やっとstrftimeの綴りを覚えたが、引数をどうやって書くかは覚える気ゼロ
0391デフォルトの名無しさん
2013/03/07(木) 15:47:16.000392デフォルトの名無しさん
2013/03/07(木) 21:12:50.84配列として得たい場合は
1.9.3までなら "abcde".chars.to_a
2.0以降なら、"abcde".chars
としないといけないんだよなー。
0393uy
2013/03/08(金) 02:31:20.11なんなの??
0394デフォルトの名無しさん
2013/03/08(金) 07:59:53.190395デフォルトの名無しさん
2013/03/08(金) 10:26:57.23http://doc.ruby-lang.org/ja/search/class:String/
こことか引用箇所の切り取り方が酷すぎるなあ・・・
要点箇所を自動で抽出しようとして失敗してる感じかね。
そういう話ではなくて?
0396デフォルトの名無しさん
2013/03/08(金) 10:57:28.56とは思う
0397デフォルトの名無しさん
2013/03/08(金) 11:47:39.521.9.3と2.0でString#charsの動作が違うということだろ
0398uy
2013/03/08(金) 13:26:55.110399uy
2013/03/08(金) 14:49:44.15 attr_accessor :x
def initialize
@x = 2
end
@x = 4
end
p A.new.x
ruby2.0でもう仕様固めちゃうって事はこういうのもずっとこのままなのかな
このネームスペースはやばいと思ってたからいつか整理されて変わるものと思ってた
クラスの中にあってメソッドの外にある@xみたいなのの呼び方ってクラスメンバ変数でいいんだっけ?
これ使いどころとかあるの?
0400uy
2013/03/08(金) 14:50:28.43class A
attr_accessor :x
def initialize
@x = 2
end
@x = 4
end
p A.new.x
0401デフォルトの名無しさん
2013/03/08(金) 20:43:51.30特異クラスのインスタンス変数だから、インスタンス横断的に情報を共有したいときに使える。
0402デフォルトの名無しさん
2013/03/08(金) 23:54:54.64starrubyを利用して画像を表示するウィンドウを作成させます。
そのウィンドウ内をクリックすると外部リンク、例えばgoogleのトップページ
をブラウザで開かせるようなコードを考えていますがどうにも手づまりです
具体的にはこのようなコードになっています。
最後のif文に何を入れていいかがさっぱりです…何か良いアイディアはありますか?
不明瞭な内容かと思いますがよろしくお願いします
require "starruby"
include StarRuby
texture = Texture.load("ruby.png")
Game.run(640, 480) do |game|
game.screen.clear
game.screen.render_texture(texture, 8, 8)
mouse = Input.keys( :mouse )
mouseLocat = Input.mouse_location()
if mouse.include?( :left )
end
end
0403デフォルトの名無しさん
2013/03/09(土) 00:08:27.74・ 動作対象のOS
・ 動作対象のシェル
・ 動作対象のWebブラウザ
の3つに依存する
WindowsならShellExecuteを呼べばいいんだけど、どっかにメソッドあったっけ? Win32OLEで直書き?
0404uy
2013/03/09(土) 00:26:10.99素のrubyでやるならこれがベターじゃね
http://jp.rubyist.net/magazine/?0008-Win32OLE
0405デフォルトの名無しさん
2013/03/09(土) 01:15:16.360406デフォルトの名無しさん
2013/03/09(土) 01:20:05.900407402
2013/03/09(土) 01:32:02.17OSはwindowsになります
元々はインターネットのページ内に
特定のページに飛ぶようなリンクを持たせた画像を埋め込む
という機能を持ったWEBrickを利用したプロキシを作成しようとしていました
しかしリンクを持たせた画像を埋め込む方法がわからず
>>402のような形になりました…まだまだ勉強不足ですね…
0408デフォルトの名無しさん
2013/03/09(土) 01:42:03.11<a href="..."><img src="..." /></a> を挿入すればいいんじゃない?
0409uy
2013/03/09(土) 03:05:04.11ウィンドウ内にページ表示みたいな話に聞こえる
それだったら.NETのほうが簡単
0410デフォルトの名無しさん
2013/03/09(土) 06:07:31.520411デフォルトの名無しさん
2013/03/09(土) 06:30:59.81馬鹿じゃねーの?
0412デフォルトの名無しさん
2013/03/09(土) 07:21:51.66もしかしたら410の言う通りrubyでやる必要ないかもしれないし
0413デフォルトの名無しさん
2013/03/09(土) 17:54:41.37まずはじめに簡単だと聞いたRubyを学ぼうと思っているんですけど、おススメの参考書とかありますか?
0414デフォルトの名無しさん
2013/03/09(土) 18:23:35.580415デフォルトの名無しさん
2013/03/09(土) 18:37:04.65なにを作りたいと思っていますか?
もしWindows上でのなにかゲームや便利プログラムなのなら、C#かHSPをおすすめします
もしブラウザ上でのなにかマウスでやるゲームやスマホなどで遊ぶものなのなら、Flashをおすすめします
もしどこかのサーバを借りてユーザーに楽しい体験をさせるサイトを作るのなら、とりあえずはPHPをおすすめします
0416デフォルトの名無しさん
2013/03/09(土) 18:50:40.04将来性なさすぎるだろ
0417デフォルトの名無しさん
2013/03/09(土) 18:51:36.03javascriptのがオヌヌメ
0418402
2013/03/09(土) 18:59:07.89このブログに書いてあることを実現するようなプロキシを作りたいと考えています
具体的にはOpenIDを入力するようなページが表示されると共に
リンク付きの画像を表示。その画像のリンクをたどると常に同じOPでログインする。
というようなプロキシ作りたいと考えています
0419デフォルトの名無しさん
2013/03/09(土) 19:02:40.960420デフォルトの名無しさん
2013/03/09(土) 19:09:42.02では代替をどうぞ
10年後なんてどうでもいいので、今日明日使えるものをお願いします
0421デフォルトの名無しさん
2013/03/09(土) 19:14:00.91そうですか
0422デフォルトの名無しさん
2013/03/09(土) 19:34:15.42html5
0423デフォルトの名無しさん
2013/03/09(土) 19:42:15.36FlashやOCで作って2年後に捨てたほうがマシそうだ
0424デフォルトの名無しさん
2013/03/09(土) 19:46:55.170425デフォルトの名無しさん
2013/03/09(土) 19:49:25.850426デフォルトの名無しさん
2013/03/09(土) 20:00:33.820427413
2013/03/09(土) 20:53:36.820428デフォルトの名無しさん
2013/03/09(土) 21:08:12.56興味あるアプリが何の言語で書かれているかでいいんじゃね。
0429デフォルトの名無しさん
2013/03/09(土) 21:15:53.180430デフォルトの名無しさん
2013/03/09(土) 21:16:21.25Windowsで手軽にプログラミングを試したいならVBでいいよ
メモ帳に
MsgBox("hello world!")
て書いてhello.vbsと言う名前で保存して出来たファイルをダブルクリック
後はVBのスレでも探してそっちで聞いてくれよん
0431413
2013/03/09(土) 21:45:32.29ありがとうございます
0432デフォルトの名無しさん
2013/03/09(土) 22:10:18.520433デフォルトの名無しさん
2013/03/09(土) 23:53:13.110434デフォルトの名無しさん
2013/03/10(日) 13:50:02.56WindowsでApacheで動かすためのモジュールってないんですか?
なんかRuby用の専用サーバみたいなのをgemで入れてそれをApacheのプロクシモジュールと合わせて使わないといけない漢字で面倒くさいです
0435デフォルトの名無しさん
2013/03/10(日) 14:44:18.53現在、ApacheにRubyのWebアプリを組み込んで動かしたい場合には
Phusion Passengerというモジュールを使うのが一般的
これは別名mod_railsやmod_rackと呼ばれていて
これを使えば、ほとんど面倒な設定なしに、サクッとWebアプリを動かすことができる
ところがこのPhusion Passenger、残念なことにWindowsには対応していない
そのため、あなたは以下のどれかを選択をする必要がある
1. LinuxやMac OSに移行する(推奨)
2. そもそもApacheを使うことを諦める。Apache以外にもWebアプリを動かす方法はいろいろある
3. Windows上でプロキシとか使って頑張る
0436435
2013/03/10(日) 14:45:39.52無理にApacheを使う必要はあんまりない
0437デフォルトの名無しさん
2013/03/10(日) 14:53:30.87ApacheはあきらめてThinを使います
なぜかWindowsだとThin以外のサーバは動かなくて導入が難しいのでこれで作って生きたいと思います
0438デフォルトの名無しさん
2013/03/10(日) 16:22:49.03LLでWEBならPHPを覚えとけばいいんだよ
RubyとかPythonとかPerlなんてやめとけよ
678:デフォルトの名無しさん :2013/03/10(日) 01:13:32.81 [sage]
そうそうPHPはWeb用では最も完成された言語
他は糞
0439デフォルトの名無しさん
2013/03/11(月) 22:49:17.36railsってcgiじゃないですよね?
0440デフォルトの名無しさん
2013/03/11(月) 23:27:49.62頑張ればcgiでも動く。遅いけど。
自鯖かVPSなら問題ないだろ。
0441デフォルトの名無しさん
2013/03/11(月) 23:32:07.39なんで
・ コマンドラインがユーザーに解放されている
・ Rubyがインストールされているか、上記コマンドラインからインストールが可能である
が最低限
んで、前にもあったけどふつうにRailsにページ表示させると遅くてどうにもならないので、普通はmod_railsのようなものを使う
これは普通のサーバには入ってないので
・ Webサーバにmod_rails(Passenger)がインストールされ起動しているか、自前で設定可能
を推奨
だもんだから、いわゆるCGIレンタルサーバだと動作しない
1鯖30人程度のプレミアムなレンタルサーバか、それ未満のいわゆる専用サーバが適任
つまり、全部込みで借りるとわりとお高い
ふつうはサーバ本体は家や部署に置いて回線と名前だけ買う
0442デフォルトの名無しさん
2013/03/11(月) 23:35:56.51Rubyはメンテナンススクリプトの役目
データを動的にブラウザにだぱあしたければPHP使えばいいのさ
0443デフォルトの名無しさん
2013/03/11(月) 23:36:24.94公開目的なので専用サーバは高いのでVPSになっちゃいますね
VPSか・・・・・
Rubyを使う場合はレンタルサーバの選択肢が狭いのはなんででしょうか
0444デフォルトの名無しさん
2013/03/11(月) 23:51:41.18これは普通トレードオフであって、なにかエピックでグレートなパラダイムが生まれない限り両立は不可能(量子コンピュータ?)
まあ、つまり、Rubyに対応しても儲からないんよ
Perl使わせれば30人賄えるサーバであってもRuby可にすると15人くらいでレッドゾーン突入
サーバあたりの収入が半分になってしまうのならRubyなんてやんねえバーカバーカ、という経営判断はあり
0445デフォルトの名無しさん
2013/03/12(火) 00:31:07.89herokuとか使ってみれば?
0446デフォルトの名無しさん
2013/03/12(火) 02:59:39.85単にセキュリティの問題じゃないの。別プロセスで動くcgiと違って、passegerとかは複数ユーザでメモリとか共有された気がする。
0447デフォルトの名無しさん
2013/03/12(火) 08:44:55.71CGIですら提供されてないとしたらそれはRuby本体が引き起こす問題
これでも一時期に比べたら増えたんだよRuby可能サーバ
0448デフォルトの名無しさん
2013/03/12(火) 10:12:14.020449デフォルトの名無しさん
2013/03/12(火) 11:16:18.770450デフォルトの名無しさん
2013/03/12(火) 12:11:27.910451デフォルトの名無しさん
2013/03/12(火) 12:38:43.96知見を元に質問しなおせば誰もマルチだとか言わんので
0452デフォルトの名無しさん
2013/03/12(火) 22:15:19.15これからいろいろ手を出して作ってみたいと考えるにあたり
rubyでこんなことができるよ・こんな用途があるよ的な事をサンプルと共に解説してくれるような本などありましたら
教えて頂きたく思います
0453デフォルトの名無しさん
2013/03/12(火) 22:34:30.77必要になったら戻ってくるといい
0454デフォルトの名無しさん
2013/03/12(火) 22:43:50.06・ソケット使ってコンソールチャット
・スクレイピング
・ニコ生でコメント取得
・RSSリーダー
0455デフォルトの名無しさん
2013/03/13(水) 01:20:01.20さくらの300円コースはrubyをCGIで提供してたはず。
というか需要が少ないのだろう。何かを公開したいという人でも、お前のようにcgiが何かわかってないどころか、webデザイナーにも及ばない程度の人が大多数だ。そういう人にはhtmlの拡張というイメージのphpの敷居が低いのだろう。
0456デフォルトの名無しさん
2013/03/13(水) 01:31:22.46プログラミングなんて目的にするもんじゃない
ニートじゃあるまいし
0457デフォルトの名無しさん
2013/03/13(水) 02:49:29.45ソフトバンククリエイティブの
「作りながら学ぶRuby入門 第2版」
が良いんじゃないかな。
amazonで初版の中身少し見ることできるから見てみたらいい。
地方の本屋じゃあんまり見かけないけどね
0458デフォルトの名無しさん
2013/03/13(水) 11:25:22.27ここのRubyの項目をやるのはどう?
http://www.codecademy.com/ja/tracks/apis
または、こことか。
http://www.learnstreet.com/cg/simple/projects/ruby
0459デフォルトの名無しさん
2013/03/13(水) 11:35:22.41プログラミングを目的に出来ないような人は、プログラミングをしない方がいいよ。
0460デフォルトの名無しさん
2013/03/13(水) 11:49:23.820461デフォルトの名無しさん
2013/03/13(水) 11:52:58.22それを磨くことは大いに有用だが、それが目的になってはいけない
作りたいもの(または、作らなければならないもの)がないのならプログラミングなんて忘れて他のことに人生を使え
ム板には(時々マ板にすら)無職のニートさんや引きこもりさんがいて、プログラミングに"賭け"ている自分を否定されると発狂する人がいる
それは資格取得の勉強に似ていて、資格を取るための参考書を買い漁る行為にも似ている
勉強そのものにはなんの意味もないし、おそらくはその先の資格のようなものにもあんまり意味はないのだが
0462デフォルトの名無しさん
2013/03/13(水) 12:11:15.97手段の為ならば目的を選ばないという様な
どうしようもない連中も確実に存在するのだ
つまりは
とどのつまりは 我々のような
0463デフォルトの名無しさん
2013/03/13(水) 12:14:07.37命に関わる(あるいはそれに順ずる)プログラムもあるのに
開発するのに資格も免許もなんもいらん
人数水増し土方集めりゃいいと思ってる
最低免許がないと売り物開発出来ないようにするのがいい
0464デフォルトの名無しさん
2013/03/13(水) 12:24:16.55浅はかだねえ。
何でも頭だけで分かった気になって、好きな事に情熱を傾ける事すら出来ないんだね。
実に哀れな人だ。
プログラミングを手段として完全に使いこなせるようになったら
もう一度その言葉の意味を考えてみなよ。
自分の使う道具を使いこなせない、いや愛せない一流のクリエイターがいると思うかい?
0465デフォルトの名無しさん
2013/03/13(水) 12:27:39.59解説一通り読んでそれとなく動作と傾向を理解して、それでなお、作れそうなものや作りたいものが思いつかないんなら、
きっと今のあなたにはプログラミングは不要なのだ
たとえ趣味にしたいのだとしてもそのまま強制で続けるのはたぶん苦行だろうし、一旦Rubyから離れて別なことするといいぞ
「これちょっと困ったorこんなことしたいけど、これってもしかしたらRuby使ってプログラム作れば解決できそうかも」
と思うことができたらそのとき帰ってくればいい
Rubyとわたしたちはいつだってあなたを歓迎しよう(※バージョンアップによる記述非互換を除く)
0466デフォルトの名無しさん
2013/03/13(水) 12:29:38.13炊事をしてるときも、お風呂にはいってるときも、道をあるいてるときも
アイデアがうかびます
0467デフォルトの名無しさん
2013/03/13(水) 12:37:16.94s/Rubyとわたしたち/俺個人/
0468デフォルトの名無しさん
2013/03/13(水) 14:34:39.67何のために買うんです?
0469デフォルトの名無しさん
2013/03/13(水) 16:30:31.79もうちょっと一般的に例えると包丁を買ってから切るものを探す?
まあそーゆー人も居るかもね
でも普通は料理する為に包丁を買うよね
どんな料理が作れるようになるかは勉強次第だよね
0470デフォルトの名無しさん
2013/03/13(水) 17:26:52.38- Wikipedia
0471デフォルトの名無しさん
2013/03/13(水) 18:42:51.95ビル・ゲイツさんやマーク・ザッカーバーグさんらが登場
http://nyliberty.exblog.jp/20092968
日本もそのうち追随するのかな
0472デフォルトの名無しさん
2013/03/14(木) 00:21:46.3110.times { |x|
f {
puts x
break if x > 5 … �@
}
}
�@で times のループを break しようとしたのですが、
うまくいきません。どうすればよいのでしょうか?
0473デフォルトの名無しさん
2013/03/14(木) 00:33:02.96丸一の行をfのブロックの外に出す
0474デフォルトの名無しさん
2013/03/14(木) 00:37:20.360475デフォルトの名無しさん
2013/03/14(木) 00:40:47.200476デフォルトの名無しさん
2013/03/14(木) 00:55:21.390477デフォルトの名無しさん
2013/03/14(木) 20:11:19.22button = TkButton.new { text "Hoge"; command->{puts "Foo"}; pack }
Tk.mainloop
この TkButton.new に与えたブロックはどうやって処理されているのか教えてください
pry(main)> show-method TkButton#initialize
でRubyソースを見ても &block のような引数も yield文 も見あたりません。
最終的には instance_eval 辺りが評価してると思うんですが、どうやってブロックを引き渡しているのか分かりません。
0478デフォルトの名無しさん
2013/03/14(木) 21:27:13.580479デフォルトの名無しさん
2013/03/14(木) 21:44:39.51これっぽいですね。そういえば initialize は new そのものじゃなかったんでしたね。
tk_s_new(argc, argv, klass)
int argc;
VALUE *argv;
VALUE klass;
{
VALUE obj = rb_class_new_instance(argc, argv, klass);
if (rb_block_given_p()) rb_obj_instance_eval(0, 0, obj);
return obj;
}
ちなみにどうやって調べました? こちらの環境(Macport Ruby20) では
show-method TkButton.new
とやってもCのソースは出てきません
0480デフォルトの名無しさん
2013/03/14(木) 23:01:33.15どのような記法をすれば良いのでしょうか?
def foo (fn)
fn.call(1)
end
def bar (x)
1 + x
end
irb> foo(bar) ではbarが関数呼び出しと解釈されてしまいました。
barという名前から関数実体を引き出すイディオムは無いのでしょうか?
0481デフォルトの名無しさん
2013/03/14(木) 23:13:43.84で、許してもらえませんか?
0482デフォルトの名無しさん
2013/03/14(木) 23:15:47.49def foo(&fn)
とする必要があるっす
0483デフォルトの名無しさん
2013/03/14(木) 23:17:04.56send(fnsymbol, 1)
end
foo( :bar )
とか?
0484デフォルトの名無しさん
2013/03/14(木) 23:18:47.76方法はいくつかある
・method(:bar)を渡す
意味合い的には一番近いが案外面倒くさい
・:barを渡す
fooを呼んだスコープでのbarというより、fooが所属しているオブジェクトのbarを呼ぶ意味合いが強い
・barをprocやlambdaとして生成
barをそもそもデータとして取り回す前提があるならこれ
・ブロックにくるんで渡し、foo側がそれを呼ぶ
俺ならこれ。引数として渡す関数がひとつでいいなら文法的にもサポートあるし。
0485480
2013/03/14(木) 23:27:10.21いろいろな方法があるのですね!
foo(method(:bar))が一番しっくりきました。
皆様レスありがとうございました。
0486デフォルトの名無しさん
2013/03/14(木) 23:39:33.370487デフォルトの名無しさん
2013/03/15(金) 00:14:01.090488デフォルトの名無しさん
2013/03/15(金) 19:19:44.580489デフォルトの名無しさん
2013/03/15(金) 19:37:20.24どっちかというとカプセル化を破るコードを書く人が多い
attr_accessorとかpublicとか
0490デフォルトの名無しさん
2013/03/17(日) 12:41:06.56エラーメッセージは実行ごとに毎回微妙に違っていて、
下のようにファイル名部分が文字化けしているようです。
ファイル名(スクリプト本文も)に日本語は使っていないのですが、何が原因なんでしょうか?
環境は CentOS 6.3, ruby 1.9.3p194 です。
ruby: No such file or directory -- (LoadError)
ruby: No such file or directory -- (LoadError)
ruby: No such file or directory -- LoadError)
ruby: No such file or directory -- k (LoadError)
ruby: No such file or directory -- oadError)
ruby: No such file or directory -- LoadError)
ruby: No such file or directory -- (LoadError)
0491デフォルトの名無しさん
2013/03/17(日) 12:47:01.22RubyなんかさっさとやめてPHPにしろ
そうすればそんな無駄な時間を使うこともない
0492デフォルトの名無しさん
2013/03/17(日) 12:52:06.35test.rbの中身は?
0493デフォルトの名無しさん
2013/03/17(日) 12:56:03.47puts 'a'
だけです。
というか、コーディングしてて動かしたら全然動かないので、原因探るうちに実は何も実行できなくなっていました
特に環境いじった覚えもないんですけどね・・・
0494デフォルトの名無しさん
2013/03/17(日) 12:57:10.59LoadErrorならまともに動かんと思うので、ファイルを複製して半分ずつ削っていって原因解明
後半を機械的に削ってみて同じエラーならまた半分削ってみる
0495デフォルトの名無しさん
2013/03/17(日) 13:21:36.19HDDか物理メモリのどこかがまずいのかもしれない
0496デフォルトの名無しさん
2013/03/17(日) 13:26:34.16>1とだけ書いたスクリプトを実行してLoadErrorなら
LoadErrorになりました。
スクリプト指定せずにrubyだけでエンター押してもLoadErrorになることが判明したので
rubyを再インスコしたところ解決しました。
レス頂いたみなさんありがとうございました。
なんでぶっ壊れたんだろ・・・
0497デフォルトの名無しさん
2013/03/17(日) 13:27:16.530498デフォルトの名無しさん
2013/03/17(日) 13:28:47.46こんなところにも perl のしっぽが
0499デフォルトの名無しさん
2013/03/17(日) 13:34:01.68シェルがおかしかったんじゃないか
0500デフォルトの名無しさん
2013/03/17(日) 14:04:27.910501デフォルトの名無しさん
2013/03/17(日) 16:17:04.771;
と書くんだったな。
0502デフォルトの名無しさん
2013/03/17(日) 17:04:59.80こういうところのバックエンドはRubyが使われているものですか?
PHPとRubyどっちが多いですかね?
0503デフォルトの名無しさん
2013/03/17(日) 17:24:47.79答も同じ
「裏方データメンテ等に使われているかもしれませんが見えないのでわかりません、
ちなみにRubyができるからといってWebゲーム業界に就職できるというようなことは絶対にありえません」
0504デフォルトの名無しさん
2013/03/17(日) 17:32:23.29他にも例はいくらでもあるだろうけど、
もちろんどんな企業でも完全にRubyしか使ってないなんて事はまず無いだろう
0505デフォルトの名無しさん
2013/03/17(日) 17:33:51.57要旨としては「Rubyを勉強すればゲーム業界で働けますか!?」だろうしな
はっきり言ってあげたほうが親切
0506デフォルトの名無しさん
2013/03/17(日) 17:35:46.92いくら札束積まれてもお断りだ
0507デフォルトの名無しさん
2013/03/17(日) 17:42:57.82PHPとFlash(「か」じゃなくて「と」)ができてPhotoshopが使えれば及第点だよね
Rubyなんていろんな意味で誰でもできるんだから就職のメリットにはならん
業務で使うなら入社してから1ヶ月なりなんなりで覚えればそれでいいわけで
0508デフォルトの名無しさん
2013/03/17(日) 18:40:13.42誰でもできるとかナメたことをよく言うよな。
0509デフォルトの名無しさん
2013/03/17(日) 18:45:31.940510デフォルトの名無しさん
2013/03/17(日) 18:53:01.14それなりで充分
既存の社内Rubyスクリプトを使えれば問題ない
コア作成は社内のエンジニアが行う
業務を知らない新入社員の仕事ではない
0511デフォルトの名無しさん
2013/03/17(日) 19:00:26.08Rubyだけできても…という
0512デフォルトの名無しさん
2013/03/17(日) 19:06:32.810513デフォルトの名無しさん
2013/03/17(日) 19:18:09.30新卒でネトゲ会社なんて自殺する気かって感じだけど
既卒やバイトならPHPとJavaScriptとFlashとなにかオーサリングツール(フォトショ、イラレ等)の経験があればいいんじゃね
あとは適宜実際に見ていってどんなことまでやれそうかで決めるってことで
いっそなくてもなんとかなる
面接でRubyならできますって言うってことはその会社の業務ぜんぜん調べてませんと高らかに宣言するのに近い、分の悪い博打
0514デフォルトの名無しさん
2013/03/17(日) 21:57:24.520515デフォルトの名無しさん
2013/03/17(日) 21:59:12.83Rubyやる人は、他の言語も一通りこなせた上で、普段使いの
なじんだ道具としてRubyを選んでいる人が多い印象。
5年くらい前まではこう思ってたんだけどね…
簡単なのを先に学んでおけば,他の言語も吸収しやすくなると思うんだけど。どうかな?
もしかして,それぞれの言語は全く別物だったりして…
優しい人教えて!
0517デフォルトの名無しさん
2013/03/17(日) 22:56:21.29言語がたくさんあるのには意味があって、あなたがなににプログラミング言語が必要なのかによる。
>>513
ソフトウェアハウスなら業務内容は案件ごとに違うから技術売るけどね。
0518デフォルトの名無しさん
2013/03/17(日) 23:03:39.10Node.js使ってるとこもあるらしい
0519デフォルトの名無しさん
2013/03/17(日) 23:15:54.120520デフォルトの名無しさん
2013/03/18(月) 00:18:08.95お察しの通り全く違う概念の言語もあれば
書き方や目的が違うだけで考え方が似てる言語もある
んで今のところ主流は「手続き型」で「オブジェクト志向」を取り入れた言語だと思う
Java、C#とかね、他にも色々ある…というか
「関数型」とか「論理型」みたいな断り書きがなければ
大半が手続き型だからテキトーにプログラミング言語探せば手続き型は見つかる
オブジェクト志向は手続き型を覚えてからでも遅くないが
初めからオブジェクト志向も備えてる言語のほうが
後でオブジェクト志向部分を覚えるのが楽かもな
ちなみにRubyも手続き型でオブジェクト志向の言語だから
Rubyから学んでも構わないが、ちと入門書が少なめな感じはするかな
0521デフォルトの名無しさん
2013/03/18(月) 02:40:41.72http://htn.to/9GrwNV
0522デフォルトの名無しさん
2013/03/18(月) 11:52:56.880523デフォルトの名無しさん
2013/03/18(月) 15:53:41.61理想的には、目的ーー>計算モデルーー>使用言語決めがいいんだけど、最初から独力では難しいと思う。
上記3ステップ中、計算モデルはCTMCP(コンピュータプログラミングの概念・技法・モデル)という本で学習出来るが
これも慣れがいるので、モデルが判っている人に目的(ツール作り、就活、趣味など)を伝えるのがいい。
最も、モデルが判っている人を探すのが難関か。
0524デフォルトの名無しさん
2013/03/18(月) 17:33:24.50Light Weight Languageと呼ばれる軽量言語(≒簡単な言語)を最初に覚えておくと
プログラミングの感覚と楽しさを早く掴めるのでいいと思う。俺もLLから入った。
テキスト処理から、exeのwindowアプリケーションまでこなす流行りのオールラウンダー: C#
お手軽LL言語: Ruby、Python、Perl
0525デフォルトの名無しさん
2013/03/18(月) 17:45:22.130526デフォルトの名無しさん
2013/03/18(月) 19:21:29.920527デフォルトの名無しさん
2013/03/18(月) 21:06:23.02gemでそういうのありませんか?
0528デフォルトの名無しさん
2013/03/18(月) 23:48:51.47tzinfo
0529デフォルトの名無しさん
2013/03/19(火) 00:00:18.15これ使う意味ってあるんでしょうか?
0530デフォルトの名無しさん
2013/03/19(火) 00:24:55.18どうもありがとうございます
0531デフォルトの名無しさん
2013/03/19(火) 15:47:51.690532デフォルトの名無しさん
2013/03/19(火) 18:35:33.77それとも審査に通ったものしかダメでしょうか?
hello worldを表示するgemを登録してダウンロードできるか確認したいんですが
0533デフォルトの名無しさん
2013/03/19(火) 18:54:25.35だからテストもろくに書いてないクソモジュールが氾濫してる
0534デフォルトの名無しさん
2013/03/19(火) 18:59:18.00ほぼ永遠に残るぞ
0535デフォルトの名無しさん
2013/03/19(火) 20:21:15.66Matzなんとかってやつ。
この前コンピューター関連の記事見つけてMRIと機械が〜みたいな英語の記事だったんだけど、開いて見たら医療で使われるMRIと機械についての話だった。
MatzがMRIって最初に名前つける時にあの医療でのMRIの存在しって他はずだよね?面白いと思っても付けたのかなMatzは。
結果はどうだい?
読み手の思考回路を混乱させるミスリードを誘うきっかけを作ってるわけRuby作者は。こんな良い加減なやつが作ったプログラミング言語なんて信頼できないね。
クリスチャンは良く自分がキリストとか救世主の生まれ変わりだと勘違いして全能感に浸り自分は特別だと思っておかしな行動をする事がある。
Matzも同じ事してるんじゃない?
クリスチャンを馬鹿にしてるんじゃなくてMatzの様なやつがクリスチャンを馬鹿にされる様な場面を作るきっかけを与えてるといえる。
0536デフォルトの名無しさん
2013/03/19(火) 20:48:04.210537デフォルトの名無しさん
2013/03/19(火) 20:56:17.360538デフォルトの名無しさん
2013/03/19(火) 21:22:52.72第三者から名付けられたら誤解が生まれるリスクは無視っすかwwww
0539デフォルトの名無しさん
2013/03/19(火) 21:41:55.29を否定しただけだろう
前提はすべて崩れた
0540デフォルトの名無しさん
2013/03/19(火) 22:02:21.18あんなの自分以外の人間は解読できないコード書いてオナニー言語じゃん。
PHPのほうがいいよ。Cやった人なら馴染みやすい。
0541デフォルトの名無しさん
2013/03/19(火) 22:55:40.22ソース読むとき、instance_evalやらmodule_evalやらが出てくると溜め息しかでない
0542デフォルトの名無しさん
2013/03/19(火) 22:58:35.220543デフォルトの名無しさん
2013/03/19(火) 23:01:52.340544デフォルトの名無しさん
2013/03/20(水) 00:14:59.60人智を超えた何かになる
0545デフォルトの名無しさん
2013/03/20(水) 04:00:38.45で入れたのですが
$ gem list --remote
で数分待っても一覧が得られません
--debug 付きにすると例外が出ているようです
$ gem list --remote --debug
*** REMOTE GEMS ***
Exception `Errno::EEXIST' at /usr/local/lib/ruby/2.0.0/fileutils.rb:323 - File exists - /home/xxxx/.gem/specs/rubygems.org%80
Exception `Errno::EAGAIN' at /usr/local/lib/ruby/2.0.0/net/protocol.rb:153 - Resource temporarily unavailable - read would block
Exception `Errno::EAGAIN' at /usr/local/lib/ruby/2.0.0/net/protocol.rb:153 - Resource temporarily unavailable - read would block
Exception `Errno::EAGAIN' at /usr/local/lib/ruby/2.0.0/net/protocol.rb:153 - Resource temporarily unavailable - read would block
Exception `Errno::EAGAIN' at /usr/local/lib/ruby/2.0.0/net/protocol.rb:153 - Resource temporarily unavailable - read would block
以下延々と
原因及び対処方法を教えて下さい
0546デフォルトの名無しさん
2013/03/20(水) 06:38:53.97馬鹿には無理
0547デフォルトの名無しさん
2013/03/20(水) 11:35:03.91323 File exists が出てる報告があったけど、関係あるかのう?
http://help.rubygems.org/discussions/problems/1632-rails-installation-fails
--no-http-proxy を付けてはどうか? という意見が付いて話が途切れている
https://github.com/rubygems/rubygems/issues/487
こっちはバグに遭遇してるな。
0548デフォルトの名無しさん
2013/03/20(水) 19:41:54.160549デフォルトの名無しさん
2013/03/20(水) 19:45:59.240550デフォルトの名無しさん
2013/03/20(水) 20:00:10.01%w[+ - * /] でオッケー
0551デフォルトの名無しさん
2013/03/20(水) 20:19:58.09a..z
こんな感じの
0552デフォルトの名無しさん
2013/03/20(水) 20:34:16.11Array('a'..'z')
0553デフォルトの名無しさん
2013/03/20(水) 20:43:58.660554デフォルトの名無しさん
2013/03/20(水) 21:15:11.970555デフォルトの名無しさん
2013/03/20(水) 21:15:19.22(0..255).map{|n|n.chr}.select{|c|/[[:print:]]/===c}
0556デフォルトの名無しさん
2013/03/20(水) 21:19:31.500557デフォルトの名無しさん
2013/03/20(水) 21:25:16.410558デフォルトの名無しさん
2013/03/20(水) 21:30:06.250559デフォルトの名無しさん
2013/03/20(水) 21:30:54.770560デフォルトの名無しさん
2013/03/20(水) 21:37:57.25("\x00".."\x7f").grep(/[[:print:]]/).grep(/[^[:alnum:]]/)
ASCIIコード(0x00〜0x7f)から印字可能かつ英数字以外の文字を拾う
Ruby1.8 の場合は、数文字とアルファベット並びの間に分断があるようでうまくいかない・・・
>> ("0".."z").to_a
["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
0561デフォルトの名無しさん
2013/03/20(水) 21:52:21.35なんで1.9ではまで進むのだろう。
Rangeの作りが違う?
0562デフォルトの名無しさん
2013/03/20(水) 22:16:56.790563デフォルトの名無しさん
2013/03/21(木) 06:30:05.680564デフォルトの名無しさん
2013/03/21(木) 16:05:45.420565デフォルトの名無しさん
2013/03/21(木) 17:34:43.010566デフォルトの名無しさん
2013/03/21(木) 18:16:58.14「インスタンスメソッド定義内で自分のクラスのクラスメソッドを呼ぶときにself.をつけて呼ぶ」という認識程度
class C
def my_class_method; ... end
def hoge
self.my_class_method
...
ただし、本質的には変数なので、selfという名前のローカル変数を自力でつけた場合には衝突する
class C
def my_class_method; ... end
def hoge
...
self = somedata
...
self.my_class_method
とした場合には、クラスCのクラスメソッドmy_class_methodではなくsomedataの戻り値オブジェクトのインスタンスメソッドmy_class_methodが呼ばれる
たぶんsomedataはそんなメソッドは持ってないはずなのでエラーになってナニコレという話になる
読んでないけど、たぶんそんなことが書いてあるはず
selfというローカル変数は作らないほうがいいよね、みたいな話のはずだ
0567デフォルトの名無しさん
2013/03/21(木) 18:27:14.26例えばsession[:user][:id]とsession["user"]["id"]とでなにが異なるのですか?
0568デフォルトの名無しさん
2013/03/21(木) 18:36:42.45irb> hoge とした時に
ズラ〜
とhogeオブジェクトの表示用の文字列が表示されるのですが、
これはなんという関数が実行されているのでしょうか?
to_sではないようでした。
0569デフォルトの名無しさん
2013/03/21(木) 18:46:31.49h = {} # つくる
h['k1'] = 'v1' # いれる
p h['k1'] # だす
格納に使うキーのことはkey、出し入れするデータのことはvalueと呼ぶのが通例
んで、このkeyは実は文字列である必要はなく、「出すときまで不変」であるならなんでもよい
h['k1'] = 'v1' # 文字列
h[:s1] = 'v2' # シンボル
h[3] = 'v3' # 数字、紛らわしくて怒られる例
ということで、session[:user] はHashのkeyをシンボルオブジェクト:userにしたものでしかない
シンボルオブジェクトは(通例)コロンで始める文字で作成し、「ひとつしかないもの」を示すのによく使われる
sessionというHash構造のkeyに:userというシンボルデータを使うのだとしたら、おそらくそのsessionにはユーザーという"欄"がひとつしかありえないのだろう
最初はよくわかんないと思うので、無理して自分からシンボルを使う必要はない。書いてあるのを見てわかれば充分
>>568
ふつうはその(戻り値)オブジェクトのインスタンスメソッドinspectがirbによって勝手に呼ばれて表示されている(irbがやってる)
Rubyには一般的に関数と呼ばれるものがなくてメソッドだけなので、関数と言ったらこいつなにも理解してないって煽られて馬鹿にされるぞ
0570デフォルトの名無しさん
2013/03/21(木) 18:56:53.03h[:k1] で参照するとどうなりますか?
逆に
h[:s1] = 'w1' で入れたものを
h['s1'] で参照するとどうなりますか?
0571デフォルトの名無しさん
2013/03/21(木) 18:59:23.81「いまどきRubyのメソッドのことを関数と呼ぶような解説にぶち当たるなんてお可哀想に…」
みたいな憐みの目で見られるようかん
どっかの誰かが公式に関数やメソッドやサブルーチンを機能分類してるわけじゃないけど、
すくなくともRubyではメソッドという名前なんで、それに倣ってメソッドと呼ぶのがやっぱ妥当
0572デフォルトの名無しさん
2013/03/21(木) 19:05:11.48別にどうにもならない
シンボルと文字列は別物で、Hashオブジェクトではまったく特別扱いされない
つまり単に別のキーを指定したとみなされる
ただし、なにかのメソッドの引数内で key1:val1 のように書いた場合は、
key1 はシンボルオブジェクト :key1 と、val1 は文字列 'val1' と解釈されて、 {:key1 => 'val1'} というHashだとみなされる
でもこれHashの機能じゃないからやっぱ気にしなくてもいい
0573デフォルトの名無しさん
2013/03/21(木) 19:07:54.030574デフォルトの名無しさん
2013/03/21(木) 19:27:20.50大変丁寧に教えていただきありがとうございます
0575デフォルトの名無しさん
2013/03/21(木) 19:46:10.98なるほどinspectメソッドが呼ばれていたのですね!
呼び方にも気をつけますね。
ありがとうございました。
0576デフォルトの名無しさん
2013/03/21(木) 20:51:34.36られたら裏で文字列に変換している) HashWIthIndifferentAccess と
いう曲者がいるので、ハッシュのキーについての理解が初心者には
難しくなっていると思う。
0577デフォルトの名無しさん
2013/03/21(木) 21:32:52.51>>566
ありがとうございます
0578デフォルトの名無しさん
2013/03/21(木) 21:36:18.160579デフォルトの名無しさん
2013/03/22(金) 01:54:36.10d.hatena.ne.jp/sugyan/20130227/1361896809
のを動かすにはなにをどうすればよいのでしょうか?
環境はMac10.8でXcodeインストール済み,
また、Rubyが使えるレンタルサーバーも契約しております。
0580デフォルトの名無しさん
2013/03/22(金) 03:27:21.49> Rubyのことが全く分かっておらず、
> 何をどうググれば良いのかも分からず質問させていただきます。
それは、ググり方が無力だということにすぎません。
まぁ、"Ruby インストール" で Ruby の使い方を勉強して、
"github" で github の使い方を勉強して、
"Gemfile" で、gem に関することを勉強すれば、
どうにかなると思いますけどw
ということで、ググり方が甘いですw
以上。
0581デフォルトの名無しさん
2013/03/22(金) 05:40:13.19クラス式内に書けば、自分のクラスオブジェクトを指すし、メソッド式内に書けば実行時のレシーバーを指す
まあややこしいよ
0582デフォルトの名無しさん
2013/03/22(金) 05:42:27.180583デフォルトの名無しさん
2013/03/22(金) 09:13:29.990584デフォルトの名無しさん
2013/03/23(土) 21:52:21.230585デフォルトの名無しさん
2013/03/23(土) 22:10:35.380586デフォルトの名無しさん
2013/03/23(土) 22:24:29.500587デフォルトの名無しさん
2013/03/23(土) 22:32:22.82アイウォンチュ〜
0588デフォルトの名無しさん
2013/03/24(日) 00:11:15.92時間をかけるしか能のない馬鹿が威張れないからだ
0589デフォルトの名無しさん
2013/03/24(日) 01:36:31.30特集 人気10大言語 どれでも入門
読者アンケートで人気だった10種類のプログラミング言語を、一気に解説します。
言語ごとに解説しているので、どれを読んでもOKです。それぞれ特徴や使い方
を学んで、自分にぴったりな言語を選んでください。開発環境の準備からサンプ
ルの作成まで最短で説明します。
http://itpro.nikkeibp.co.jp/NSW/image/top/Cover201305.jpg
0590デフォルトの名無しさん
2013/03/24(日) 01:54:15.07rubyとandroidが無いではないか
0591デフォルトの名無しさん
2013/03/24(日) 02:03:50.460592デフォルトの名無しさん
2013/03/24(日) 12:17:57.06溜まった動画ファイルを全部サムネイル作成してかぶっているものを削除するというものをCUIで作ってみてrubyに感動しました。
もうphpに戻ることはなさそうだ、と今まで作って来たwebアプリをrubyへ移植しようとして壁にぶつかっています。
0593デフォルトの名無しさん
2013/03/24(日) 12:20:29.14railsのような大掛かりなフレームワークは初学の妨げになりそうなので
できるだけ素のrubyでwebアプリを作っていきたいと考えています。
apacheのモジュールが見つからなかったため、とりあえずpassengerを入れ、
sinatra上で動かしてみましたが、楽ですが全然素のrubyではないです。
そこで質問なんですが、
phpでいうところのmod_phpのみapacheに追加して後は何のフレームワークも使わず自力で書いていく、というスタイルを
rubyに置き換えるとどのような実行環境になるのでしょうか? 2.0です。
0594デフォルトの名無しさん
2013/03/24(日) 12:40:47.67で配列にアルファベットが入らなくて
Array('a'..'z')
って書かないといけないのは何故ですか?
0595デフォルトの名無しさん
2013/03/24(日) 12:49:23.28mod_php的なものを追加する時点で素のrubyではなくなるよ。
素のrubyがいいならcgiとして書くことになるんじゃないかなぁ。
0596デフォルトの名無しさん
2013/03/24(日) 12:57:42.21p a.include?(2.0)
これがtrueになるのは何故ですか?
0597デフォルトの名無しさん
2013/03/24(日) 13:28:54.45rackを生で使えばよいよ
0598デフォルトの名無しさん
2013/03/24(日) 13:35:30.78FastCGIが無難じゃないかな
0599デフォルトの名無しさん
2013/03/24(日) 14:24:14.21たとえばArray#[]はインスタンスメソッドのことのように、Net::HTTPも何か特別な表記法なのでしょうか。
教えてください。よろしくお願い致します。
0600デフォルトの名無しさん
2013/03/24(日) 14:32:35.68クラスメソッドとは関係ない
0601デフォルトの名無しさん
2013/03/24(日) 15:21:35.78乗り換えずに併用すればいいじゃない
0602デフォルトの名無しさん
2013/03/24(日) 15:22:12.76C++ ユーザーが親しみのあるstaticメンバー関数を呼び出す
クラス::メンバー関数
と同じ記法でRubyでもクラスメソッドが呼べるようにしてあるだけ。
Ruby的にはクラスメソッド=クラスインスタンスの特異メソッドに過ぎない
ので、普通のインスタンスメソッドと同様 . で呼ぶのが本来。
0603デフォルトの名無しさん
2013/03/24(日) 15:50:37.05cgi.rb
0604デフォルトの名無しさん
2013/03/24(日) 15:54:14.86irb(main):002:0> 2 == 2.0
=> true
0605デフォルトの名無しさん
2013/03/24(日) 16:21:20.750606デフォルトの名無しさん
2013/03/24(日) 16:30:05.830607デフォルトの名無しさん
2013/03/24(日) 16:44:49.17twitterで本人に聞いてみれば?
0608デフォルトの名無しさん
2013/03/24(日) 17:09:25.47#include <stdio.h>
main() { printf("%d¥n", 2.0 == 2); }
0609デフォルトの名無しさん
2013/03/24(日) 17:15:05.90むしろそこでfalseにする言語はほとんど無いはず
型を含めて同値性を比較するのは、Common Lispとかにはあった気がするが
あまり一般的だとは言えないだろう
そもそもという話であれば、浮動小数点数を=で比較する局面が
どれぐらいあるのか疑問
0610デフォルトの名無しさん
2013/03/24(日) 17:20:07.80Rangeインスタンス1つからなる配列を作っておいて
アルファベットが入っていないと文句を言っているということでよろしいか。
[ *'a'..'z' ]
('a'..'z').to_a
0611デフォルトの名無しさん
2013/03/25(月) 03:27:07.64Rangeで済むならRangeのままでよいというか、結構な割合でRangeのまま行ける
('a'..'z').each{|s| p s}
p ('a'..'z').map{|s| s.capitalize}
配列にしなければならないことはそう多くないはず
0612デフォルトの名無しさん
2013/03/25(月) 09:10:20.43いろいろありがとうございます。
とりあえずcgiでhelloworld動いたんでfastcgi入れてみようとして1日はまりました。
なんとかfcgiでもhelloworld表示できたのですが、
これってソース書き換える度にapache restartしなきゃ更新されないのですか。
あとrubyのfcgiライブラリに関する情報がほぼゼロでかなりきついです。
phpでいう$_SERVERのようなリクエストに関するものが簡単に取れると思っていたので
そこからphpの$_GET, $_POSTのようなものを作り、
自分でsinatraのようなルーティングを作ろうと思っていたのですが、ぜんぜんそこまで行けません。
fastcgi断念しそうです。
0613デフォルトの名無しさん
2013/03/25(月) 09:23:38.02他が糞すぎたんだな
0614デフォルトの名無しさん
2013/03/25(月) 10:06:13.95脳味噌に糞でも詰まってんのか
0615デフォルトの名無しさん
2013/03/25(月) 10:08:24.67Rack勉強したほうがいい
0616デフォルトの名無しさん
2013/03/25(月) 10:10:01.25これいつものだから反応してやる必要はない
0617デフォルトの名無しさん
2013/03/25(月) 19:54:32.41Rackにしました。環境変数が簡単に取れるし、まさにこれでした。
webrickで起動するのが嫌だったのでpassengerを入れapache上で動きました。
ただ問題はリロードです。
皆さん開発中はどうやってソースを再読み込みさせてるんですか?
今のところapache restartするか、tmp/restart.txtをtouchする方法しかありません。
ぐぐっても「touchするだけでOK、カンタン!」なんて書かれてありますが、そのtouchが面倒です。
php ソース修正→ブラウザリロード
ruby ソース修正→touch restart.txt→ブラウザリロード で一手間増えてしまいます。
always_restart.txtを置けばいいということも書かれてあったのですが、同じくrestartされません。
ruby2.0、rack1.5.2、passenger4.0.0.rc5、です。
わかる方教えてください。お願いします。phpに戻りたくありません。
0618デフォルトの名無しさん
2013/03/25(月) 20:00:30.08railsしか使ってないが、デベロップメントモードでwebrickを起動させればオートリロードしてくれるよ
0619デフォルトの名無しさん
2013/03/25(月) 20:05:15.43[100, 3838, 120, 200]の配列を得るにはどう書くのがruby風でしょうか?
lst.select{|name,value| value} で出来たらかっこいいなぁと思ったのですができませんでした。
(本当に欲しいのは100 + 3838 + 120 + 200の値なのですが。)
0620デフォルトの名無しさん
2013/03/25(月) 20:06:23.230621デフォルトの名無しさん
2013/03/25(月) 20:11:38.97rec = lambda { |lst, acc|
rest = lst[n..-1]
(rest == [] || rest == nil)?
acc + [lst] :
rec.call(rest, acc + [lst.slice(0,n)]) }
rec.call(lst, [])
end
lst = ["taro", 100, "hanako", 200, "jiro", 100, 23478, 200]
group(lst, 2).reduce(0){|sum,x| sum + x[1]}
#=> 600
一旦それぞれの組みを配列にしたらうまくいきましたw
0622デフォルトの名無しさん
2013/03/25(月) 20:19:06.87irb> ["taro",100,"hanako",200,"jiro",100,23478,200].each_slice(2).map{|a| a[1]}.inject(0){|r,x| r+=x}
=> 600
0623デフォルトの名無しさん
2013/03/25(月) 20:28:32.96a = [true,false,true]
要素全てが真の時だけ処理したい時に
論理演算子を全部の要素に適用させて簡単に処理する方法ってありますか?
0624デフォルトの名無しさん
2013/03/25(月) 20:29:06.49lst = ["taro", 100, "hanako", 200, "jiro", 100, 23478, 200]
result = 0
flag = false
for x in lst do
if (flag)
result += x
flag = false
else
flag = true
end
end
result
#=> 600
0625デフォルトの名無しさん
2013/03/25(月) 20:33:03.48やりたいことがわからない サンプルを書いてくれ
0626デフォルトの名無しさん
2013/03/25(月) 20:50:29.65「aの要素が全部trueだったら」という条件を書きたい。
では a[0] && a[1] && ... をうまいこと書く方法はないか
という質問?
ぶっちゃけ a.all? でいいんだけど、意図そのまま書くなら
a.reduce{|result,e| result && e}
だろうか。
0627デフォルトの名無しさん
2013/03/25(月) 20:53:24.7910.times do
actions = [rand(2), rand(2), rand(2)]
puts "#{if actions.all?{|result| result.zero?} then 'ALL 0!' else 'failure' end}"
end
0628623
2013/03/25(月) 20:59:55.06レスありがとうございます。
>>626
all?というメソッドがあったんですね、
まさにこれがしたかったんです、ありがとうございました。
0629デフォルトの名無しさん
2013/03/25(月) 21:08:19.73==> true
[true, true, true, false, true].inject(:&)
==> false
この方が分かり易くない?
0630デフォルトの名無しさん
2013/03/25(月) 21:09:40.09思ったけど、論理演算子はメソッドじゃないから無理だった。
0631デフォルトの名無しさん
2013/03/25(月) 21:10:29.620とか。
0632デフォルトの名無しさん
2013/03/25(月) 21:19:42.82効果は && と同じ
だから true.&(true) とか書けちゃう
>>TrueClass
>>Public Instance Methods
>> true & obj → true or false
>> And―Returns false if obj is nil or false, true otherwise.
0633デフォルトの名無しさん
2013/03/25(月) 21:20:14.330634デフォルトの名無しさん
2013/03/25(月) 21:20:38.03要素が true と false しかないことが保証されているなら大丈夫そう。
0635デフォルトの名無しさん
2013/03/25(月) 21:40:01.41has_foo? みたいなメソッドで真のときに Foo オブジェクトをそのまま返すのだけはやめてほしい
0636デフォルトの名無しさん
2013/03/25(月) 21:46:27.83def copy(from, to)
src = open(from) #このファイルが開けなかったら
begin
dst = open(to, "w")
data = src.read
dst.write(data)
dat.close
ensure
src.close
end
end
コメントに書いた、fromファイルが開けなかった場合、ensure節のsrc.closeは実行されるのでしょうか。
本を読む限り、実行されるようなのですが、begin~endで囲まれてなくても実行されるのでしょうか。
0637デフォルトの名無しさん
2013/03/25(月) 22:37:49.70def内部でbeginとendを書かずにensureだけ書いた場合、捕捉範囲はdef全体になるので、fromのopenに失敗してもしなくてもensureが最後に実行されます
def foo
ensure
puts "foo"
end
def bar
puts "1!"
raise
ensure
puts "ensure!"
end
foo; bar
#=>
foo
1!
ensure!
RuntimeError:
openに失敗していたときはsrcと名付けられたIOオブジェクトはensure部分で存在していないので、open失敗に関する例外よりも先にnilに対するNoMethodErrorが出ます
> in `ensure in foo': undefined method `close' for nil:NilClass (NoMethodError)
というか、openに失敗したときはIOオブジェクトが作成されないので、openできなかったIOのcloseのことを心配する必要はありません
0638デフォルトの名無しさん
2013/03/26(火) 00:41:42.81違う本探してみよう思います
0639デフォルトの名無しさん
2013/03/26(火) 00:46:09.26俺はSinatraを通してSinatra::Reloaderってのを使ってる
素のRackにもRack::Reloaderってのがあるらしいから
それを使ってみるとどうだろう
(試したことはないので、動くかどうかはわからないが)
0640デフォルトの名無しさん
2013/03/26(火) 05:06:43.99馬鹿には無理
0641デフォルトの名無しさん
2013/03/26(火) 20:45:41.11unable to convert "\x90" from ASCII-8BIT to UTF-8 for ext/RMagick2.so
ってエラー吐かれてfileutilsというgemがインスコできない
助けて下さい
0642デフォルトの名無しさん
2013/03/26(火) 21:03:53.03gem install --no-ri --no-doc fileutils は?
うまくいかなければコマンドラインとエラーそのまま貼って
0643デフォルトの名無しさん
2013/03/26(火) 21:27:46.03レス さんくす
C:\Users\PCUser>gem install --no-ri --no-doc fileutils
ERROR: While executing gem ... (OptionParser::InvalidOption)
invalid option: --no-doc
またエラー吐かれました
0644デフォルトの名無しさん
2013/03/26(火) 21:32:04.83ごめーん。--no-rdoc でやってみて
0645デフォルトの名無しさん
2013/03/26(火) 21:41:23.96今回はエラーメッセージが長いので画像で
http://i.imgur.com/pysm2fe.png
0646デフォルトの名無しさん
2013/03/26(火) 21:55:58.44ImageMagickは入れてある?
http://www.ownway.info/Ruby/index.php?rmagick%2Fhowtoinstall%2Fwindows
0647デフォルトの名無しさん
2013/03/26(火) 23:33:36.87入れてませんでした
その後もう一度挑戦してみたのですが
You have to install development tools first
と出ました ちなみにdevelopment kitは既にインストールしてあります
development toolsとdevelopment kitは別物なのでしょうか
0648デフォルトの名無しさん
2013/03/26(火) 23:55:00.35ImageMagick のインストール時に development headers and libraries に関して聞かれたはずなのでそれ許可して再インストールしろ
0649デフォルトの名無しさん
2013/03/27(水) 00:16:06.09Windows なんかで、Ruby をつかうべきじゃないよ!
0650デフォルトの名無しさん
2013/03/27(水) 03:55:24.69include Enumerable
def each(&b)
self.each{|v|
if !(Array === v) then
p 1
b.call(v)
else
p 2
v.each(b)
end
}
end
end
===>
$ irb
irb(main):002:0> a = [1,[2,3],4]
=> [1, [2, 3], 4]
irb(main):003:0> a.each(&:p)
=> [1, [2, 3], 4]
各要素が表示されることを期待したんですが、
そうなりませんでした。どうしたらいいのでしょうか?
0651デフォルトの名無しさん
2013/03/27(水) 05:09:40.04ひとつひとつ.force_encoding("UTF-8")とするしかないんでしょうか?
0652デフォルトの名無しさん
2013/03/27(水) 07:44:11.44class Eとこの二行には、なんの関係も無いけどその辺は大丈夫?
> a = [1,[2,3],4]
> a.each(&:p)
&:p で要素が表示されないのはこういう感じだから
a.each{|i| i.send(:p) }
「感じ」だからね、この通りじゃないよ
あと、どうしたらいいかは僕にもわかりません
0653デフォルトの名無しさん
2013/03/27(水) 10:24:02.90force_encodingは文字列の持つ文字エンコーディングデータの名称だけを(内容とは無関係に強制的(force)に)書き換える
変換の機能はない
巷で「SQLITE3からの文字列はforce_encodiingしろ」と言われてるのは、単にエンコーディング名称が空っぽで返ってくるからに過ぎない
変換の機能はない
で、一般論として、なにかデータ構造があって、それから文字列を取り出したい場合、
そのデータ構造の取り出しメソッドの作者が気を遣ってくれてない場合はメソッド戻り値文字列に毎回自力でencodeかける必要がある
…executeの戻り値を自動でどうにかしてくれる機能はなさそうだな
自力で毎回String#encodeで変換してくだされ
0654デフォルトの名無しさん
2013/03/27(水) 11:45:49.55$ gem install handlersocket
してHandlerSocketクラスを作成するテストスクリプトを書いて実行したら、
> ruby: symbol lookup error: /root/.rbenv/versions/1.9.3-p374/lib/ruby/gems/1.9.1/gems/handlersocket-0.0.2/lib/handler_socket.so: undefined symbol: _ZN4dena11socket_args3setERKNS_6configE
というエラーが出てきます。
解決方法ご存じの方いらしたら助言いただきたいです。
よろしくお願いします!
0655デフォルトの名無しさん
2013/03/27(水) 13:12:11.66Rubyに限らず、ほとんどの開発に向いてないなw
0656デフォルトの名無しさん
2013/03/27(水) 13:30:33.65undefined symbolは誰も解けないと思う
利用するライブラリ(のdevel)が確実に1種類しか呼べない状態で、コンパイルが成功してて、呼び出しに変な記述がなく、
バージョン互換性が保証されてる「完璧」な状況でなおそれが出たなら、バイナリユーザー側からはどうにもならない
というかrootディレクトリにモノ入れるのやめろ
0657645
2013/03/27(水) 15:55:06.79同意します 次から次へとエラー吐かれて疲れました
今度はlinuxあたりで挑戦してみて、うまくいかなければ またお世話になるかもしれません
0658デフォルトの名無しさん
2013/03/27(水) 16:07:42.430659デフォルトの名無しさん
2013/03/27(水) 16:09:43.24そんなんでバージョン管理とかどうすんべ
0660デフォルトの名無しさん
2013/03/27(水) 16:34:11.36日本語使ってない人が作ったライブラリに日本語解説がなくて日本語エラーを吐かないという問題は我々にはもうどうしようもないからな
頑張って英語読んでもらうしかねえ
>>659
pik
0661デフォルトの名無しさん
2013/03/27(水) 18:39:29.67WindowserにはVB/VBA/WSH/PowerShellがお似合い
0662650
2013/03/27(水) 18:42:24.700663デフォルトの名無しさん
2013/03/28(木) 14:30:44.410664デフォルトの名無しさん
2013/03/28(木) 15:00:44.53強制力はないので、あなたのバージョンのところで動作したYAMLが相手のバージョンのところでも同様に解釈される保証はない
0665デフォルトの名無しさん
2013/03/28(木) 21:53:36.26dir = Dir.open('C:/')
dir.each {|file|
p file
}
■テスト2
p dir = Dir.open('C:/Program Files')
dir.each {|file|
p file
}
テスト1には . と .. がありません。C:/がトップディレクトリなので .. がないのはわかりますが、 . がないのは何故ですか?
0666665
2013/03/28(木) 22:21:15.61. と .. を除外して取得する方法はありませんか?
0667デフォルトの名無しさん
2013/03/29(金) 04:24:04.89Windowsだから
>>666
Dir.globとか
0668デフォルトの名無しさん
2013/03/29(金) 15:01:28.65を出力するとき
p a + "円"
ってやるのと
p "#{a}円"
PHPの場合はいろんなフレームワークを見ても前者が主流なんですが
Rubyの場合はどちらで書くのがいいですか?
0669デフォルトの名無しさん
2013/03/29(金) 15:10:40.84自分なりの意見を持っていることが重要です
0670デフォルトの名無しさん
2013/03/29(金) 15:23:51.77irb> p 1.+(2)
3
つまり、a + b と書いたとき、オブジェクト a の + メソッドが b というオブジェクトの扱い方を知らなかった場合にはエラーになるし、
b というオブジェクトの扱いにポリシーがあった場合にはそれに沿った(ひょっとしたら意図しない)結果になる
irb> p 1 + "2"
TypeError: String can't be coerced into Fixnum
Rubyの式埋め込み #{} はメソッドを呼んでいて、呼ばれるメソッドは to_s だ
(とっさにいい例を思いつかなかったので省略)
つまり、 "#{a}" と書いたとき、オブジェクト a の to_s メソッドがうまく定義されてなかったときにはがっかりな表示になる
ということで両者は別物だ
最終的に文字列を得たくて、変数のオブジェクトすべてに to_s をしてもらえればそれでいいのなら、式埋め込み #{} を使うのが楽
0671デフォルトの名無しさん
2013/03/29(金) 16:33:00.00頭いいな。
0672デフォルトの名無しさん
2013/03/29(金) 22:41:22.730673デフォルトの名無しさん
2013/03/29(金) 22:46:26.59phpdocumentorみたいに書きたいのですがRDocに慣れておくべきですか?
0674デフォルトの名無しさん
2013/03/29(金) 23:01:41.09例えば(-3..3)で0以上の時だけ2乗して負はそのまま出力したい場合
num=(-3..3)
result = num.select{|x| x>=0 }.map{|x| x**2 }
puts result
この2行目はもっと短くならないですか?(条件と置き換える値を近くに置きたい)
ちなみに、
result = num.map{|x| x**2 if x>=0 }
だと負の数を出力してくれませんでした。
else〜は無しでお願いします
0675デフォルトの名無しさん
2013/03/29(金) 23:08:43.83メソッドの引数や戻り値の情報をコメント部分になんとか意味のある書き方で残してマニュアルに反映させたいのならyardoc
>>674
> 0以上の時だけ2乗して負はそのまま出力したい
if x >=0 then x**2 else x end
0676デフォルトの名無しさん
2013/03/29(金) 23:10:49.08つーか上の例も負の数を出力しないと思うが
0677674
2013/03/29(金) 23:32:07.91ありゃ失礼。確かにさっきのも負の数出力しませんでした。
その ? x : の表現は初めて見ました。
できれば条件は反転させたくないけどもともと無理なんかな
0678デフォルトの名無しさん
2013/03/29(金) 23:36:14.86初心者の人ほど変な書き方してあとでわけわからなくなる
0679デフォルトの名無しさん
2013/03/29(金) 23:37:52.64num.map {|x| if x >= 0 then x**2 else x end }
0680デフォルトの名無しさん
2013/03/29(金) 23:38:54.93外国勢はrdocを拡張したyardってのを使ってる人が多い気がした。
0681デフォルトの名無しさん
2013/03/29(金) 23:59:33.65ary.each_with_index{|x,i|ary[i]=x**2 if x>=0}
長い。。
0682デフォルトの名無しさん
2013/03/30(土) 00:23:04.70(-3..0).to_a + (1..3).map{|x| x**2}
これでもいいね
0683デフォルトの名無しさん
2013/03/30(土) 00:27:19.630684674
2013/03/30(土) 00:30:39.500685デフォルトの名無しさん
2013/03/30(土) 02:32:14.18どっちかっつーとinject厨になりがちな自称中級者ぐらいじゃないか?
0686デフォルトの名無しさん
2013/03/30(土) 02:39:43.83(ASCIIコードで)連番になるのとか、英単語だけとか、数字だけとかを質問の例に使うと逆にめんどくさいことがわかっている
極力バラバラにしておくのが吉
0687デフォルトの名無しさん
2013/03/30(土) 11:42:35.69require 'readline'
while buf = Readline.readline("> ", true)
print("-> ", buf, "\n")
end
こうすると
DL is deprecated, please use Fiddle
って警告がでます
コマンドプロンプトからどうやって文字を入力して取得したらいいですか?
0688デフォルトの名無しさん
2013/03/30(土) 11:47:51.65b = Date.new(2000, 1, 1)
p (b - a).to_s
これでaとbの日数の差が出ますが
こういうのはうるう年なども考慮されてますか?
0689デフォルトの名無しさん
2013/03/30(土) 11:57:40.48考慮されてるかどうか確かめてみたらどうですか?
0690デフォルトの名無しさん
2013/03/30(土) 11:59:14.990691デフォルトの名無しさん
2013/03/30(土) 12:00:39.760692デフォルトの名無しさん
2013/03/30(土) 12:01:00.99されてる
0693デフォルトの名無しさん
2013/03/30(土) 12:03:23.440694デフォルトの名無しさん
2013/03/30(土) 12:06:26.590695デフォルトの名無しさん
2013/03/30(土) 12:09:13.92ただの警告なんで無視していいんだが、警告自体は require 'dl' を require 'fibble' に書き換えないといかんな
書き換えただけで動くかどうかよくわからん
とりあえずは irb 作ってる人のミスなので(Ruby2.0.0ではdlが使えないのを忘れている)、直るの待って欲しい、Ruby 2.0.0でしょ?
0696デフォルトの名無しさん
2013/03/30(土) 12:39:38.82b = Date.new(0, 1, 1)
p (b - a).to_s
これでaとbの日数の差が出ますが
こういうのはグレゴリオ暦なども考慮されてますか?
0697デフォルトの名無しさん
2013/03/30(土) 12:42:57.560698デフォルトの名無しさん
2013/03/30(土) 12:55:09.51環境によって実装が異なるケースがあるのかなと思いますが、自分で確かめてみます
>>691-692
ありがとうございます
>>693
Ruby1.9.3からはDateTimeとの違いはあまりないようなのでDateを使いました
0699デフォルトの名無しさん
2013/03/30(土) 13:31:48.850700デフォルトの名無しさん
2013/03/30(土) 13:52:45.060701デフォルトの名無しさん
2013/03/30(土) 14:00:53.71とりあえず、ぐだぐだ言わずに一回くらい苦労しとけ。
データがあってそれを操作する。これはどの言語もそうなんだからよ。
後は「どのデータをどう操作して、どうまとめてそのまとまりをどう扱うか」しかないんだよ。
0702デフォルトの名無しさん
2013/03/30(土) 14:02:42.512001/12/1と2000/12/1の月の差を求めたいのですがこういう場合はどうやるのでしょうか?
0703デフォルトの名無しさん
2013/03/30(土) 15:04:39.99これ不正アクセスで書き換えられてるとかそういうのじゃないですよね?
0704デフォルトの名無しさん
2013/03/30(土) 15:47:57.53具体的にどういう値が出て欲しいかを付記しないと誰も回答しないと思う、面倒だから
0705デフォルトの名無しさん
2013/03/30(土) 15:55:32.20>をipに変換してそこからまたホスト名に変換する
出てきて欲しい単語がひとつも出て来てもらえてないな…
ということであなたは勉強不足です
ガソリンに火をつけてみたら爆発したから自動車は危険と言っているようなものです
もーちょっと頑張ってくださいというか、なにしようとしてるのかわかりませんがそれやるのまだちょっと早いです
0706デフォルトの名無しさん
2013/03/30(土) 16:56:29.00基本的なDNSの性質だよ
プログラム技術とはあまり関係のない話なので
詳しくは「DNS設定」についての入門サイトでも見てくるといいかと
0707デフォルトの名無しさん
2013/03/30(土) 17:44:04.760708デフォルトの名無しさん
2013/03/30(土) 18:04:43.540709デフォルトの名無しさん
2013/03/30(土) 19:56:03.02か書いた後で変な表現だとは思ったけどさ?!
いいいんだよ、俺もそんな詳しくないし、い板違いなのは事実だから!
とにかくDNSについて調べて貰えればいいの!だよね???!
0710デフォルトの名無しさん
2013/03/31(日) 00:03:16.38では解説お願いします
知ったかで回答されても困りますしね
0711デフォルトの名無しさん
2013/03/31(日) 11:57:47.54シンボルはどのような時に使うのでしょうか
0712デフォルトの名無しさん
2013/03/31(日) 12:03:26.360713デフォルトの名無しさん
2013/03/31(日) 12:40:36.27自分は>>705ではないけど、おせっかいで横レスするよ。
DNSの世界では、あるIPアドレスに対して1個の「実名」と複数の「別名」を命名できる。
これら実名と別名は、一般には「ホスト名」と呼ばれている。
またホスト名からIPアドレスを得る操作を「正引き」と呼び、
その逆にIPアドレスからホスト名を得る操作を「逆引き」と呼ぶが、
慣例として逆引きではホスト名に実名を返すのが常識になっている。
で、>>703のruby-lang.orgというドメインのケースを以下に解説する。
・carbonというホスト名は実名で、wwwというホスト名は別名。
・wwwというホスト名を正引きすると 221.186.184.68 が得られる。
・このIPアドレスを逆引きすると carbon という実名が得られる。
UNIX系(LinuxやOSX)であれば、ターミナル上で dig www.ruby-lang.org という
コマンドを実行してみなさい。
実行結果の中で、 A を含む行(レコード)が実名で、CNAME を含む行が別名になる。
これらはRubyとは全く無関係な話だよ。
0714デフォルトの名無しさん
2013/03/31(日) 12:43:59.300715デフォルトの名無しさん
2013/03/31(日) 12:51:18.99こういうのって初心者お断りですか?
0716デフォルトの名無しさん
2013/03/31(日) 12:56:01.53あ、自分からは無理して使わなくていいです
1年くらいしたら「あーこれかもー」みたいにうっすら思いつくんで、それまで気長に待ってください
0717デフォルトの名無しさん
2013/04/01(月) 18:56:33.79scriptの実行時間が長く困っています。
実行時間を短くするお知恵をかしてくれませんか。
ソースは以下のものになります。
def replace2
self.swap_lines.each do |sl|
self.export_c_lines.each do |el|
if(el =~ /#{sl}\s\*\/$/)
self.new_export_c_lines << el
self.export_c_lines.delete(el)
break
end
end
end
end
0718デフォルトの名無しさん
2013/04/01(月) 19:24:26.79それを使って、でっかいファイルに対して、NG表現にマッチした行を消すという処理をしたいと
それでいて、正規表現データはまったく整理されておらず、どんなのが入っているかもわからないと
遅いの当たり前だろなめんなあああああああ
短縮できるとすれば「NGデータファイルを読み込んで正規表現オブジェクトにする」の部分だけど、ほとんど誤差だと思う
超絶遅い処理の正規表現が何個か入ってるだけで超絶遅くなるはず
どうしようかな、正規表現データに書いてある正規表現ってどのくらい複雑なんだろう、joinできれば速いんじゃなかろうか
# 7万行を5周必要
text.each_line do |line|
['aaa', 'bbb', 'ccc', 'ddd', 'eee'].each do |re|
skip_line if Regexp.quote(re) =~ line
end
end
# 7万行が1周で済む
text.each_line do |line|
skip_line if Regexp.quote(['aaa', 'bbb', 'ccc', 'ddd', 'eee'].join('|')) =~ line
end
0719デフォルトの名無しさん
2013/04/01(月) 19:38:32.110720デフォルトの名無しさん
2013/04/01(月) 19:52:33.63正規表現部分を弄って舐める回数減らすのが一番効果あるかもしれん
0721デフォルトの名無しさん
2013/04/01(月) 20:07:57.26よりも
B x A x F
の方が計算量減るんじゃね
0722デフォルトの名無しさん
2013/04/01(月) 20:49:24.78それでやってみます。
1行1条件なので、5万の条件のjoinになりますが、一周で済むのは早くなるのかもと思いました。
正規表現部分も工夫してやってみます。
0723デフォルトの名無しさん
2013/04/01(月) 20:50:12.710724デフォルトの名無しさん
2013/04/01(月) 20:59:00.50Regex.unionというものもあるのよ。
0725デフォルトの名無しさん
2013/04/01(月) 20:59:48.460726デフォルトの名無しさん
2013/04/01(月) 22:28:40.720727デフォルトの名無しさん
2013/04/02(火) 00:18:28.22全部の正規表現をくっつけるだけでDFAに展開できるので
理屈の上では高速処理できるはず
0728デフォルトの名無しさん
2013/04/03(水) 12:44:03.49カレントディレクトリにtest.rbとutil/helper.rbがあって、それぞれの定義を以下のように書いています。
#test.rb
$: << "."
require 'util/helper'
a = Helper.new
#util/helper.rb
module Util
class Helper
end
end
この状態で ruby test.rb と実行すると
`require': cannot load such file -- util/response_hanlder (LoadError)
というエラーになってしまいます。
test.rbからutilモジュール配下のHelperクラスにプレフィックスを付けずにアクセスするにはどうすればよいのでしょうか?
初歩的な質問で申し訳無いのですが、よろしくお願いします。
0729デフォルトの名無しさん
2013/04/03(水) 12:48:56.62`require': cannot load such file -- util/response_hanlder (LoadError)
ではなくて、
`require': cannot load such file -- util/helper (LoadError)
でした。失礼しました。
0730デフォルトの名無しさん
2013/04/03(水) 13:12:21.580731デフォルトの名無しさん
2013/04/03(水) 13:27:15.87test.rbに include Util を追加したらエラーが出なくなりました。
モジュール配下のクラスをプレフィックス付けずにアクセスする場合、requireでファイルを読み込んでモジュールをincludeする必用があるのでしょうか?
0732デフォルトの名無しさん
2013/04/03(水) 13:41:11.64Ruby1.9.2以降で「手元」の自作ライブラリ、
具体的には自分と同じディレクトリにあるutilディレクトリに入っているhelper.rbというファイル、
をrequireするにはいくつか方法がある
1)
require_relative 'util/helper'
「require_relativeが書かれているファイル」を基準にして相対パスと考えてrequireさせる書き方。Ruby1.9.2以降でしか動作しない。
Ruby1.9.2以降でしか使わないのならこれで書く癖をつけておいてもいい。
2)
require File.expand_path(File.dirname(__FILE__) + './app/hoge.rb')
なげーよその1。Ruby1.9.2以降では$LOAD_PATHにカレントディレクトリ . を含まなくなったので、フルパスを自分で作ってrequireに渡す。
ふざけてるようだがまだたくさんあるRuby1.9.1上でもきちんと動作するのでそこそこ多数派。自作派テストファイルの先頭とかでよく見る。
3)
$LOAD_PATH.unshift('.') # どこかのメインスクリプトの先頭で1回だけ書く
require 'util/helper' または require './util/helper'
なげーよその2。require_relativeって書いたらRuby1.9.1でエラーになっちゃうじゃん、という人向けの記述。
せっかくカレントディレクトリをオフィシャルで取り除いた親切を無にする行為だが、わかっててやるぶんにはRubyはなにも咎めない。
カレントディレクトリじゃなくてなんかどっかの固定のディレクトリの下にあるファイルをrequireしたいならunshiftの引数をそのディレクトリに。
$LOAD_PATHはRuby実行時に -I オブションでも指定できる。
自作gemライブラリやRailsなんかでは実行時の$LOAD_PATHにいくつか追加されるので、require 'util/helper'と書くだけで動作することもある。
$LOAD_PATHに何が入ってるかは確かめておくとええ
0733デフォルトの名無しさん
2013/04/03(水) 13:42:49.99require File.expand_path(File.dirname(__FILE__) + './util/helper.rb')
0734デフォルトの名無しさん
2013/04/03(水) 13:50:41.93回答ありがとうございます。
パス通ってるところからrequireすれば読み込むということが分かりました。
プレフィックスは Util::Helper の Util:: の部分です。
Util::Helper ではなく Helper とだけ書いてアクセスするには include Util も追加する必要があるのかと思いまして。
0735デフォルトの名無しさん
2013/04/03(水) 14:20:00.13すいません、自己解決しました。
たのしいRubyにそれっぽいこと書いてありますね。
0736デフォルトの名無しさん
2013/04/03(水) 19:59:24.43以下コードの抜粋です。
48 res = Array.new
49 resp.each do |row|
50 puts row.class, row if $debug == 1
51 res = row
52 end
53 p res, res[0], res[1],res.class
54 if ((res.class == Array) && (res.empty? == false)) || ((res.class == String) && (res != nil)) then
55 res = '20' + res[0].to_s.gsub!(/-/, ' ').gsub!(/\//, '-')
56 if (res.to_s == posttime.to_s) || (res[2..20].to_s == posttime.to_s) then
以下略・・・という箇所でのエラーなのですが、
53行のデバグ表示では
["13/03/06-17:52:00"]
"13/03/06-17:52:00"
nil
Array
このエラー発生時にはこのようにデータが入ってきています。配列resに1個の要素"13/03/06-17:52:00"だけが
入っているということだと理解しています。この1個の要素を取り出して55行にある処理を加えたいのですが
冒頭のエラーで止まってしまいます。ところが、検証用に
res = Array.new; res = ["13/03/06-17:52:00"]
p res, res[0], res[1],res.class
res = '20' + res[0].to_s.gsub!(/-/, ' ').gsub!(/\//, '-')
p res
以上のコードをテストしてみると、デバグ表示上は先と同じで、最終的には
"2013-03-06 17:52:00"
となり、うまい具合に期待通りの出力が返ってきます。
同じオブジェクトと内容、さらには同じ処理でどうして違いが出るのでしょうか?
もちろん実行環境は同一です。
0737デフォルトの名無しさん
2013/04/03(水) 20:04:01.110738736
2013/04/03(水) 20:11:30.240739736 ◆mksCHaGp8vaI
2013/04/03(水) 20:15:22.86このトリップ付きで再度その旨投稿します。
test.rb:55:in `+': can't convert nil into String (TypeError) というエラーで詰まっています。
以下コードの抜粋です。
48 res = Array.new
49 resp.each do |row|
50 puts row.class, row if $debug == 1
51 res = row
52 end
53 p res, res[0], res[1],res.class
54 if ((res.class == Array) && (res.empty? == false)) || ((res.class == String) && (res != nil)) then
55 res = '20' + res[0].to_s.gsub!(/-/, ' ').gsub!(/\//, '-')
56 if (res.to_s == posttime.to_s) || (res[2..20].to_s == posttime.to_s) then
以下略・・・という箇所でのエラーなのですが、
53行のデバグ表示では
["13/03/06-17:52:00"]
"13/03/06-17:52:00"
nil
Array
このエラー発生時にはこのようにデータが入ってきています。配列resに1個の要素"13/03/06-17:52:00"だけが
入っているということだと理解しています。この1個の要素を取り出して55行にある処理を加えたいのですが
冒頭のエラーで止まってしまいます。ところが、検証用に
res = Array.new; res = ["13/03/06-17:52:00"]
p res, res[0], res[1],res.class
res = '20' + res[0].to_s.gsub!(/-/, ' ').gsub!(/\//, '-')
p res
以上のコードをテストしてみると、デバグ表示上は先と同じで、最終的には
"2013-03-06 17:52:00"
となり、うまい具合に期待通りの出力が返ってきます。
同じオブジェクトと内容、さらには同じ処理でどうして違いが出るのでしょうか?
もちろん実行環境は同一です。
0740デフォルトの名無しさん
2013/04/03(水) 21:07:01.61gsub にしろ。
0741デフォルトの名無しさん
2013/04/03(水) 22:38:52.53ここが間違い。res[0]はStringクラスじゃないよ。
to_sが返す文字列には'/'が無い。
0742デフォルトの名無しさん
2013/04/03(水) 22:50:24.21指摘としては不適切
「戻り値を利用する場合はString#gsub!を使わない」が妥当
0743デフォルトの名無しさん
2013/04/04(木) 14:39:03.84最後に中間生成物を速攻GCに回してるだけで、中の動作はgsubと変わらないんじゃないかとか思うんだが、ソース追うのめんどい
0744デフォルトの名無しさん
2013/04/04(木) 17:38:17.480745デフォルトの名無しさん
2013/04/04(木) 17:47:07.62gem update --system
gem install mysql2
をしました
require "mysql2"だけのコードを実行するとエラーがでてしまいます。
mysql自体は問題なく動いてますし他の言語から利用できる事も確認できてます。
長くなるので詳細をcodepadに書きました。
どなたかアドバイスお願いします。
http://codepad.org/Tbc5xixN
0746デフォルトの名無しさん
2013/04/04(木) 18:01:06.89このへんは試した?
http://stackoverflow.com/questions/9936523/
http://stackoverflow.com/questions/5164818/
libmysql.dll を MySQL のディレクトリから C:/<Rubyのディレクトリ>/bin にコピー
gem uninstall mysql2 して gem install mysql2
0747デフォルトの名無しさん
2013/04/04(木) 18:04:03.46・ バージョン下げれば動くらしい
という情報もあるな
gem uninstall mysql2 -v 0.3.11
gem install mysql2 -v 0.3.9
とかやっていって、エラーの出ないバージョンを探すとかやるといいんではないかと
なんか0.2.6まで下がらないといけないとか絶望的な話もあるけど、よくわからんな
0748デフォルトの名無しさん
2013/04/05(金) 18:21:33.320749デフォルトの名無しさん
2013/04/05(金) 22:05:59.79AWDwR 17章の "We even created a virtual attribute that is never stored in the database" のこと?
0750デフォルトの名無しさん
2013/04/05(金) 22:11:06.550751デフォルトの名無しさん
2013/04/05(金) 22:55:03.190752デフォルトの名無しさん
2013/04/05(金) 22:58:54.12ふつうはその値はobjのインスタンス変数として持ってるんだけど、
実はそうじゃなくてもインターフェイスさえ属性の読み書きの形になっていれば、
事実上(vurtual) 属性と呼んでもいいよね、という話じゃないのかな。
0753デフォルトの名無しさん
2013/04/05(金) 23:25:40.530754デフォルトの名無しさん
2013/04/06(土) 01:38:06.02Data.all(:order => [:value.desc]).to_json
みたいに json 形式に変換したいです。どうすれば良いでしょうか?
0755デフォルトの名無しさん
2013/04/06(土) 11:52:49.15ありがとうございます
0756デフォルトの名無しさん
2013/04/06(土) 17:37:46.080757デフォルトの名無しさん
2013/04/07(日) 00:35:12.37rails sって打つとサーバが起動するんですがwebrickが立ち上がります
rails new myapp & cd myapp &thin start
ってやったら
>> Using rack adapter
>> Thin web server (v1.5.1 codename Straight Razor)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:3000, CTRL+C to stop
C://ruby193/lib/ruby/gems/1.9.1/gems/thin-1.5.1/lib/thin/backends/tcp_serve
r.rb:16:in `connect': cannot load such file -- thin/connection (LoadError)
ってエラーになりました
どうやってthinでrailsをうごかすのでしょうか?
0758デフォルトの名無しさん
2013/04/08(月) 13:30:29.740759デフォルトの名無しさん
2013/04/08(月) 17:46:22.75>>324でも>>732でも好きなの読め
0760デフォルトの名無しさん
2013/04/10(水) 22:10:55.81入門書やらruby関連の書籍をいくつか読んでみたのですがそういうものが乗っていなくて
0761デフォルトの名無しさん
2013/04/10(水) 22:18:32.35ググれよw
0762デフォルトの名無しさん
2013/04/10(水) 23:07:51.14GUIのなにかを作りたいときは、他の言語を使う
Rubyでなければならない理由がなんもないから
RubyでGUIアプリケーションを作れるくらいの甲斐性のある人は、他の言語でもうまくGUIアプリケーションを作れる
0763デフォルトの名無しさん
2013/04/10(水) 23:30:36.56GUIがプログラムの補助的な役割でしかないならruby/tkでも十分使える
お絵描きソフトだって作れし、多分STGやACTゲームだって作れると思う
けどその辺のGUI部品だけでどうにか出来ないGUI用途にrubyはおすすめしない
0764デフォルトの名無しさん
2013/04/10(水) 23:37:13.87以前はGUIツールキットの整備が主要なテーマとなっていた時期もあって
複数のプロジェクトが活動していたけど、
Railsの登場以降はWebプログラミングに話題が集中してため
相対的にGUIプログラミングは数ある話題の一つへと埋没してしまい、
多くのプロジェクトは活動を停止して放置されたままになっているのが現状。
ただし、今でも活動を継続しているプロジェクトもあって、
しかも日本語情報が豊富なのが Ruby/Tk、Ruby-GNOME2、RubyCocoa(MacRuby)。
個人的なオヌヌメはRuby/Tkなんで、以下にお薦めサイトを紹介しとく。
・Ruby/Tk Wiki -- Ruby/Tk作者様のサイト
http://www.dumbo.ai.kyutech.ac.jp/nagai/RubyTk/
・Ruby/Tk入門 -- 760と同じ悩みを抱えた人物が書いたみたいで、リンク集が有用かも
http://ronor.web.fc2.com/rubytk/
・I love CUI -- Ruby文書の一部でRuby/Tkも紹介(特にCanvasウイジェットは参考になる)
http://www.mnet.ne.jp/~tnomura/
0765デフォルトの名無しさん
2013/04/10(水) 23:47:59.01むしろそこだけRubyと相容れない世界であって、素直にTcl/Tkで書いたほうがまだマシだ
いちおう警告しておくけど、Rubyを10年使ってるような人の言うことを信じたら駄目
彼らはどこからRubyでどこからRubyでなくてどこまでRubyでやるべきかを既に知っている
あなたはRubyのことをなにも知らないし、Rubyとなにが違うのかも知らないし、GUIの標準ツールキットがどんなものかも知らない
だったら、GUIには「専用」の言語を使うべき
0766デフォルトの名無しさん
2013/04/10(水) 23:52:27.420767デフォルトの名無しさん
2013/04/10(水) 23:56:39.92どちらにしても、Windowsでの話ならWindows APIの知識は必須になるので、そっちの勉強からしたほうが結局早い
0768デフォルトの名無しさん
2013/04/10(水) 23:57:02.59>素直にTcl/Tkで書いたほうがまだマシだ
ツールキットとしてのTkがすごいのであって、プログラミング言語としての
tclはレガシー(=遺跡)な設計で、データ型としては文字列しかないから、
少し複雑なデータ構造を扱おうと思うと、可読性の劣悪なコードになるよ。
それなら素直にRuby/Tkで書いたほうがまだマシだ。
>だったら、GUIには「専用」の言語を使うべき
素直にそのGUI専用言語を薦めればいい
0769デフォルトの名無しさん
2013/04/11(木) 00:01:11.33Win32とかの知識は既にあるという前提だろ
じゃないとデバッグすらできん
0770デフォルトの名無しさん
2013/04/11(木) 00:02:39.81Ruby/Tk にしても Ruby-GNOME2 にしても
汎用のGUIツールキットをベースにしているから、
アクション系のゲームプログラミングには適していない。
もしそんなプログラミングを考えてるのなら、こんなのもある。
・Star Ruby - 2D ゲームライブラリ
http://www.starruby.info/ja/
・Ruby から DirectX を扱う簡単高速ゲームライブラリ DXRuby の紹介
http://jp.rubyist.net/magazine/?0027-DXRuby
0771デフォルトの名無しさん
2013/04/11(木) 00:18:35.340772デフォルトの名無しさん
2013/04/11(木) 08:23:36.810773デフォルトの名無しさん
2013/04/11(木) 08:51:01.16ピカチュウ本で始めた人はそのくらい経ってることになるんだな
こわいこわい
0774デフォルトの名無しさん
2013/04/11(木) 10:18:34.64>Computer Languages History (preview)
>http://www.levenez.com/lang/history.html#11
>
> Fortranおばあちゃん 53歳
>Lispおばさん 49歳
>Basicおじさん 43歳
>
>SNOBOLおばさん 40歳
>Pascalおじさん 37歳
>SmallTalkおばさん 36歳
>Iconおばさん 30歳
>
>C(K&R)兄さん 29歳(まだまだおじさんって歳じゃねぇよwww)
>親戚のTcl/Tkお兄さん 19歳(何故かもっと年上に見られる('A`))
> Delphi兄さん たぶん17歳(TurboPascal時代から数えて)
>Java兄さん 16歳(Oak時代から数えて)
>
>長女Perlお姉さん 20歳(成人式おめでとー)
>次女Pythonさん 16歳(平成生れ)
>三女Rubyちゃん 14歳(平成生れ)
>
>お隣りのPHPちゃん 12歳(キャラ設定思い浮ばず orz)
6年ほど前に既に10年は超えてた
というか20年目に突入しつつあると思われる
0775デフォルトの名無しさん
2013/04/11(木) 13:28:56.252月に20週年おめでとうってそこかしこでやってたじゃん
君どこ行ってたの?
http://togetter.com/li/461760
0776デフォルトの名無しさん
2013/04/11(木) 13:41:38.20ウィンドウアプリケーションが欲しいんなら素直にC#やれって言ってあげたほうがいいと思う
ある程度Rubyに習熟してる状態での質問じゃなくて、Rubyに全く触れてない状態からの質問なんだろうし
0777デフォルトの名無しさん
2013/04/11(木) 13:45:17.870778デフォルトの名無しさん
2013/04/11(木) 14:16:06.800779デフォルトの名無しさん
2013/04/11(木) 20:02:03.30永井先生によると
「tailcall というコマンドが実装されて
ライブラリスクリプトの複数箇所で利用されているのですが,
これが現在の tcltklib の処理と相性が悪くて,
〜中略〜
対策を考える必要がありますが,かなり面倒なことになると予想されますから,
短期で解決することはできないと思います.」
0780デフォルトの名無しさん
2013/04/11(木) 20:59:05.01433 名前: 431 Mail: sage 投稿日: 2013/02/26(火) 00:43:36.51 ID: ZRUYcOIu0
>>425
遅くなってすみません。さきほど修正をコミットしました。
1時間ほどしたら使えるようになると思います。
動作確認していて気付いたのですが
ruby/tkはtk-8.6にまだ対応していないようです。(ruby-1.9.3のも)
ruby +tkを使用する場合は、先にport:tclとport:tkを8.5に戻す必要があります。
0781デフォルトの名無しさん
2013/04/11(木) 22:53:05.62RGSSに興味があり、rubyを勉強していく中でGUI作りも勉強してみようかなと思ったのですが
その方面の書籍が調べた限りでは殆ど無かったので質問させて頂きました
レスしてくださった方、非常に丁寧なレスをどうもありがとうございました
0782デフォルトの名無しさん
2013/04/12(金) 00:10:11.37wxRubyとかRuby/Gtkとか、何かのbindingで取り組むのってどうですか?
0783デフォルトの名無しさん
2013/04/12(金) 13:21:47.30ツールキットがいろいろ整備されてるしパッケージ化も簡単
0784デフォルトの名無しさん
2013/04/12(金) 23:33:35.670785デフォルトの名無しさん
2013/04/13(土) 19:15:01.21まだ解決してない?
4.0.0からファイルの置き場所変わったらしいよ
passenger 4.0.0 always_restartでぐぐってみ
0786デフォルトの名無しさん
2013/04/14(日) 06:25:38.69あー、できました。ありがとうございます。
参考ブログにならってソース読んだらrestart.txtとalways_restart.txtの置き場所が違いました。
if (options.restartDir.empty()) {
restartFile = options.appRoot + "/tmp/restart.txt";
alwaysRestartFile = options.appRoot + "/always_restart.txt";
} else {
restartFile = options.restartDir + "/restart.txt";
alwaysRestartFile = options.restartDir + "/always_restart.txt";
}
おそらく皆さん、confファイルでrestartDirを設定してるからこの問題があまり検索で引っかからないんですかね。
分岐見比べてみても、上のempty側は "/tmp/always_restart.txt"じゃないと変じゃん、と思いました。
0787デフォルトの名無しさん
2013/04/14(日) 14:35:47.620788デフォルトの名無しさん
2013/04/14(日) 14:56:57.980789デフォルトの名無しさん
2013/04/14(日) 17:30:22.860790デフォルトの名無しさん
2013/04/14(日) 18:08:22.050791デフォルトの名無しさん
2013/04/14(日) 18:19:15.610792デフォルトの名無しさん
2013/04/16(火) 09:31:08.07つくろうとおもっています。
手書きでしこしこやってます。
ログイン認証と、クッキー管理による
セッション維持のところは書きました。
ただユーザ判別のところがわかりません。
ログインユーザと判別した後、
ユーザ毎のコンテンツ別のアクセス認可については、
どこにキーとなるものを保持するんでしょうか。
クッキーにユーザIDをごにょごにょしたものを
保持しておけばいいのでしょうか。
それとも、IDとパスワードを保存したDBに、
ログイン時に発行したクッキーセッションIDを
保持すればいいのでしょうか?
0793デフォルトの名無しさん
2013/04/16(火) 09:34:29.030794デフォルトの名無しさん
2013/04/16(火) 09:39:34.74とりあえず、やってみればー?
0795デフォルトの名無しさん
2013/04/16(火) 09:42:03.720796792
2013/04/16(火) 10:34:55.98やはりRubyはヲタが集まるところなんですね。
イケメンPythonに引越しします。有難うございました。
0797デフォルトの名無しさん
2013/04/16(火) 16:02:48.920798デフォルトの名無しさん
2013/04/16(火) 16:08:54.46Python本スレに強制送還が妥当
0799デフォルトの名無しさん
2013/04/16(火) 23:11:16.410800デフォルトの名無しさん
2013/04/17(水) 01:07:53.28rubyがないのはおかしい
会社でお仕事用言語なのかな
それならCOBOLが無いのもおかしいし
0801792
2013/04/17(水) 09:01:49.52なりすましはやめてください。
Ruby大好きでPythonはお気に召しません。
>>794
やってみることもできるのですが、
セキュリティ的な懸念とかも含めてどちらの
実装がベターのか、または他の実装がいいのか
コメントいただきたいのです。
ぶっちゃけRailsの実装はここにのってるから
これ参考にしろ、とかでもかまいません。
0802デフォルトの名無しさん
2013/04/17(水) 11:58:00.54厶板初めてか
名前欄読んでる馬鹿はいないぞ
名前欄がデフォルト以外だったら非表示で構わない
0803デフォルトの名無しさん
2013/04/17(水) 12:38:04.99セキュリティ的にはクッキーにセッションID以外の情報を入れるのは禁止
セッション情報はセッションIDをキーとするセッションDBに格納しろ
セッションDBにパスワード等のセンシティブ情報を入れるのも禁止
0804デフォルトの名無しさん
2013/04/17(水) 18:57:28.85while (<>) {
@array[$i] = $_;
$i++;
}
$ perl test.pl *.c
これをRubyで書くにはsystem('ls *.c > hoge')とやって、open('hoge')でファイル名を取得し、それからひとつずつファイルを読んでいくといった方法のほかになにかありますでしょうか。
0805デフォルトの名無しさん
2013/04/17(水) 19:08:22.53$ cat testscript.rb
ARGF.each{ |line| print line; }
# これで cat と同じ。
# だから以下のように書けるよ。
$ cat test.rb
array = []
ARGF.each{ |line|
array << line;
}
$ ruby test.rb *.c
0806デフォルトの名無しさん
2013/04/17(水) 19:13:14.33ありがとうございます
Cから移行してきた者ですが、なかなかCのような書き方が抜けずにいます
Rubyist目指して頑張ります
0807デフォルトの名無しさん
2013/04/17(水) 20:54:29.65ARGFはEnumerableをincludeしてるので、ARGF.to_aだけでいけるね
0808デフォルトの名無しさん
2013/04/17(水) 21:25:46.19array << line
よりも
array.push(line)
の方が分かりやすかった
フィルターは ARGF で多くを済ませることができる
0809デフォルトの名無しさん
2013/04/17(水) 23:19:53.97初心者に理解させるには>>805でもいいかもしれんが、それはRuby風と言えるのだろうか?
むしろ>>805はPerl風と言ってもいいんじゃないかな(特にセミコロンが残ってるところなんか)
Ruby風というのは大クラス主義に基づく豊富なメソッドを使ってこそじゃないかと思う
そういうメソッドをうまく使えたときの快感はRubyistなら分かるはずだ
0810デフォルトの名無しさん
2013/04/17(水) 23:37:01.88while (<>) は $_ に一行ずつ入るから動作がぜんぜん違うよ
一方 Perl にそのまま直したらこんなのだ
lines = []
i = 0
while ARGF.gets
lines[i] = $_
i += 1
end
0811デフォルトの名無しさん
2013/04/17(水) 23:45:31.00そもそも Ruby の push は Perl の push を OO風にしたものだし。
0812デフォルトの名無しさん
2013/04/18(木) 21:07:59.39ちょっと質問、というか愚痴。
今日Ruby Installしてnokogiri使って、PostagSQLとの接続はpg使えば良いのか・・・・
なんてやってるんだけど、詳細調査すればするほど、ドキュメントは英語。
俺英語苦手なんだよね。
なんか20年前のUNIX勉強してた頃を思い出す。
日本 発の言語だって話なのに、なんで?
0813デフォルトの名無しさん
2013/04/18(木) 21:14:39.38結局はソース読むことになるんだよ
0814デフォルトの名無しさん
2013/04/18(木) 21:43:47.800815デフォルトの名無しさん
2013/04/18(木) 22:35:25.33よく比較されるPythonと比べると圧倒的に日本語情報多いでっせ
0816デフォルトの名無しさん
2013/04/18(木) 22:36:55.60ありがとう。そうするよ。
英語も「苦手」なだけで、読めないわけじゃないし。
>814
まあ、そんな感じだね。Rubyに限らず、最近はボランティア精神
でやる人たち少なくなってきた。
これは、多分に景気が影響している。みんな余裕が無いんだよ。
2ch見てても、罵倒するばかりで議論の場になっていないもんね。
>815
ありがとう。Pythonは全然考えてなかった。
今日1日の感想だけど、Rubyって結構面白そうだね。
ちょっとしたBatch的な処理を作ろうと思って、何の言語にしようか
1ヶ月程悩んでたんだけど、始めたらあっという間に1日が終わって
しまった。
明日からまた頑張ります。
0817デフォルトの名無しさん
2013/04/19(金) 05:03:19.08聞かれたことにだけ答えてろよいちいち皮肉らないとレスもできないのか
0818デフォルトの名無しさん
2013/04/19(金) 07:21:34.38ところがPythonの方が圧倒的に使いやすいでっせという皮肉
0819デフォルトの名無しさん
2013/04/19(金) 07:51:11.17なるほど、わかりました。
なんとかできそーです。
ありがとーざいました。
0820デフォルトの名無しさん
2013/04/19(金) 12:59:16.78if (/ruby_sysinit/) {
print "$ARGV\n";
}
}
このPerlのプログラムをRubyで書くとどうなるのでしょうか。
ARGFの使い方がよくわからないので教えてください。
0821デフォルトの名無しさん
2013/04/19(金) 13:59:52.23$ARGV ってなに? $ARGV[0] とかならわかるけど
# 一応、ファイル名を表示するならばこう
ARGF.each{ |line|
if line =~ /ruby_sysinit/
print ARGF.filename
end
}
# do-end を使う方が一般的かも
ARGF.each do |line|
if line =~ /ruby_sysinit/
print ARGF.filename
end
end
# グレップみたいな出力ならば以下
ARGF.each do |line|
if line =~ /ruby_sysinit/
printf("%s:%d: %s", ARGF.filename, ARGF.file.lineno, line)
end
end
0822デフォルトの名無しさん
2013/04/19(金) 15:25:41.97$ man perlvar
...
$ARGV Contains the name of the current file when reading from "<>".
0823デフォルトの名無しさん
2013/04/19(金) 16:16:23.95>ARGF.filename
ありがとうございます
簡単なgrepのようなツールを書いてみたくて質問させていただきました
ありがとうございました
0824デフォルトの名無しさん
2013/04/23(火) 23:48:56.38他にいい方法が思いつかない
0825デフォルトの名無しさん
2013/04/25(木) 14:29:39.21遅レスだが。
言いたい事は良くわかる。が、直球投げても無駄だよ。
スルーするか、大人の対応するかしかないから。
と言っても、2chはそういう文化になっちゃったから仕方が無いって割り切るしかないと思ふ。
だから真っ当な人は2chから逃げ出しちゃったよね。
0826デフォルトの名無しさん
2013/04/25(木) 15:13:31.75個人的には、ここではキーワード拾う位に留めてる。
0827デフォルトの名無しさん
2013/04/26(金) 01:21:22.56先輩方ご助言をお願いします!
今以下の様なスクリプト書いています。これらをJSON形式にて出力したいのですが、
どうにもやり方が分らず苦戦してます。そもそもこれだと無理なのかすら判断が出来ず、
お知恵を貸して下さい!
book.items.each do | item|
res1 = item.get('ItemAttributes/Title')
res2 = item.get('DetailPageURL')
res3 = item.get('MediumImage/URL')
js = { "title" => res1, "url" => res2, "img" => res3}
ans = JSON.pretty_generate(js)
puts ans
出力結果(カンマが入らないのと [ ] が付与されない)
{
"title": "name",
"url": "address",
"img": "path.jpg"
}
{
"title": "name",
"url": "address",
"img": "path.jpg"
}
0828デフォルトの名無しさん
2013/04/26(金) 01:46:14.02items = books.items.map do |item|
res1 = item.get('ItemAttributes/Title')
res2 = item.get('DetailPageURL')
res3 = item.get('MediumImage/URL')
{ "title" => res1, "url" => res2, "img" => res3 }
end
puts JSON.pretty_generate(items)
0829デフォルトの名無しさん
2013/04/26(金) 01:51:14.07ありがとうございます!ただこのデータ元はxmlで返して来ていて
Amazon::ecsと言うgemを利用しており、res1-res3で該当する箇所を
抜き出しています。
今実行してみたのですが、xmlの内容も一緒に出力されておりました。Orz.
0830デフォルトの名無しさん
2013/04/26(金) 02:00:20.61.eachのままでした。mapで出来ました。
失礼しました!m(_ _)m
ちなみに私はこの様な状態なのですが、今どの辺りを重点的に学習
しておく事でこういった問題を828さんのように解決出来ますでしょうか。
当然eachとmapで見た目が違うのは分りますので後程調べますが、
他にも items = を加えたり等、解説頂けると幸いです。
0831デフォルトの名無しさん
2013/04/26(金) 02:43:15.95引続き試行錯誤しましたが、sinatra経由でerb内で同様のコードを書くと何故か
データが何も取得されなくなる事が解りました。。。LinuxのConsole上では
問題なく意図した形式で返ってくるのですが。
取り敢えず今日はソロソロ寝てまた明日出直します。有り難う御座いました。
0832デフォルトの名無しさん
2013/04/26(金) 08:52:03.43学習するなら Array の each, map, map! あたり
メソッドの動作を理解するには irb で小規模なサンプルを書くのがおすすめ
$ irb
irb(main):001:0> ary = [1,2,3]
=> [1, 2, 3]
irb(main):002:0> ary.each{|n| puts n }
1
2
3
=> [1, 2, 3]
items に代入してる理由は map と map! の違いが理解できればわかるはず
Sinatra の件は >>831 じゃ情報が少なすぎて答えられない
再現コードかせめて >>827 みたいな該当箇所のコード片ぐらいは要る
0833デフォルトの名無しさん
2013/04/26(金) 09:31:44.56sinatraはRubyの標準環境を逸脱している
もしあなたがRubyの初心者なのなら、sinatraは使ってはいけない
0834デフォルトの名無しさん
2013/04/26(金) 09:41:49.010835デフォルトの名無しさん
2013/04/26(金) 10:52:44.27>>831
とりあえずこっちにコードと一緒に投げてみて
Rails以外のRubyフレームワークスレ Sinatra etc
http://toro.2ch.net/test/read.cgi/tech/1366036440/
0836デフォルトの名無しさん
2013/04/26(金) 20:05:14.61リファレンスの Array, String, Enumerable あたりは一度目を通しておくべきだろう
0837デフォルトの名無しさん
2013/04/27(土) 12:37:40.65when
when
else
end
って何故when〜elseまでインデントがcase/endと同じなんでしょうか?
endも書き忘れやすいです
0838デフォルトの名無しさん
2013/04/27(土) 12:42:39.61stack=['+','*']
loop do
if hash[stack[-1]] >= hash['+']
stack.pop
end
end
これがNoMethodErrorになるのは何故ですか
教えてくださいよろしくお願いいたします
0840デフォルトの名無しさん
2013/04/27(土) 12:56:53.560841デフォルトの名無しさん
2013/04/27(土) 19:22:15.390842デフォルトの名無しさん
2013/04/27(土) 21:08:37.222つの配列があり、↓@onにあるもののみ「class="on"」をつけたいです。
@all = ['a', 'b', 'c']
@on = ['a', 'c']
----------
ul#test
- @all.each do |i|
li #{i}です。
- @on.each do |k|
if k == i
#=> 上のliにclassの付け方がわかりません。
----------
理想
<ul id="test">
<li class="on">aです。</li>
<li>bです。</li>
<li class="on">cです。</li>
お願いします。
0843デフォルトの名無しさん
2013/04/27(土) 21:35:21.750844デフォルトの名無しさん
2013/04/27(土) 22:06:31.83できました。ありがとうございます。
書き方なんですが、こんなんでいいんでしょうか?
分岐じゃなくて、@on.include?(i)がtrueならonをくっつける、みたいな書き方ができそうなのですが。
ul#test
- @all.each do |i|
- if @on.include?(i)
li.on #{i}です。
- else
li #{i}です。
0845デフォルトの名無しさん
2013/04/28(日) 02:14:01.00Rubyの式( @on.include?(i) )の結果を利用してclassを指定する方法を探してちょうだいな。
0846デフォルトの名無しさん
2013/04/28(日) 07:07:54.66あざっす。こんな感じに書けました。
------
ul#test
- @all.each do |i|
li class="#{@on.include?(i) ? 'on' : ''}" #{i}です。
0847デフォルトの名無しさん
2013/04/29(月) 02:42:27.110848デフォルトの名無しさん
2013/04/29(月) 03:20:50.350849デフォルトの名無しさん
2013/04/29(月) 06:41:45.78あるかないかで言えば特定の文字群と一致するかを判断するメソッドは無い
任意でいいならString#matchで
0850デフォルトの名無しさん
2013/04/29(月) 07:41:35.89def isAlpha?
self =~ /^[a-zA-Z]+$/
end
end
'aaa'.isAlpha?
'aaa123'.isAlpha?
0851デフォルトの名無しさん
2013/04/29(月) 09:38:50.12[オフセット,文字数] とか [範囲] とか [正規表現] とかいろいろ
"hello, world"[7, 3] #=> "wor"
"hello, world"[3..6] #=> "lo, "
"hello, world"[/,.*/] #=> ", world"
>>850
^$を使うと、途中に改行があったときにそこまでのマッチで受理されてしまうので¥A¥zで。
>> /^[a-z]+$/ =~ "aaa¥nbbb" #=> 0
>> /¥A[a-z]+¥z/ =~ "aaa¥nbbb" #=> nil
0852デフォルトの名無しさん
2013/04/29(月) 11:09:23.11やってもいいけど
0853デフォルトの名無しさん
2013/04/29(月) 18:14:56.480854デフォルトの名無しさん
2013/04/29(月) 18:52:58.60なるほど。
>>852
なるほど。
初学者なんですが、こういう場合どう実装するべきか教えてくれませんか?
0855デフォルトの名無しさん
2013/05/02(木) 20:34:20.09エンコーディングがUnicode系の場合はUnicodeカテゴリを使うからそうなるね
Letterカテゴリは全部Alphaに含まれるみたいだから漢字やひらがな、カタカナもAlphaになるはず
0856デフォルトの名無しさん
2013/05/05(日) 16:44:46.26sqlite で dumpしたテキストの insert 文を
Rubyの配列に入れたくて
INSERT INTO "foo" VALUES(1,'text','text2,comman',2);
とあって "1,'text','text2,comman',2" 部分を
if text =~ /(\d+),'(.*)','(.*)',(\d+)/
p $1.to_i, $2, $3, $4.to_i
end
とすれば読み込めたんですが、DBの列の型依存になってしまうので、
もっと汎用的な書き方はできないでしょうか?
0857デフォルトの名無しさん
2013/05/05(日) 17:06:43.44ruby/sqlite系のライブラリを使ってDBを直接操作するのが汎用的だと思うけど
line = 'INSERT INTO "foo" VALUES(1,\'text\',\'text2,comman\',2);'
a = eval('[' + line[/VALUES\((.*)\);$/,1] + ']')
p a
0858デフォルトの名無しさん
2013/05/05(日) 17:10:42.39なにをどう頑張ってもその特定のエクスポートフォーマット依存になると思うんだがどうだろう
どっちにしても独自エクスポートフォーマットテキストを中間に挟む意義を感じないな
>>857の言うように操作ライブラリに直接配列にしてもらうのが正解
いじりたいなら配列にしてもらったあとの要素の文字列をいじれ
0859デフォルトの名無しさん
2013/05/05(日) 18:36:39.22ありがとうございます。
ライブラリに直接渡すことにします。
0860デフォルトの名無しさん
2013/05/05(日) 20:54:00.87【依頼に関してのコメントなど】お手間かけますが、よろしくお願いします
---------------------------------------------------------------------------
【*板名】プログラム
【*スレ名】Ruby 初心者スレッド Part 51
【*スレのURL】http://toro.2ch.net/test/read.cgi/tech/1358636526/
【名前欄】
【メール欄】sage
【*本文:この下にコピペして欲しい文を入れて下さい。以下を本文としてコピペします】
>>856
少しばかり遅れたけど、標準添付ライブラリの StrScan を使って
SQLダンプデータを解釈するコードを書いてみた
http://play.island.ac/codepaste/code?id=1525
0861デフォルトの名無しさん
2013/05/06(月) 02:27:00.56手元に持っておきたくて
0862デフォルトの名無しさん
2013/05/06(月) 09:24:48.27大まかに確認するだけならいいんだろうけど。
0863デフォルトの名無しさん
2013/05/09(木) 19:06:11.03初めは数値の入力欄が一つで"add"ボタンを押せば入力欄が動的に一つ追加
されるようなものを作りたいのです。
どのようにすれば動的に欄を追加させることができるのでしょうか。
0864デフォルトの名無しさん
2013/05/09(木) 19:19:07.62GTKの勉強を先にするべきかと
0865デフォルトの名無しさん
2013/05/09(木) 19:23:56.160866デフォルトの名無しさん
2013/05/09(木) 19:44:05.82はい。そういう感じです。
0867デフォルトの名無しさん
2013/05/09(木) 20:30:43.940868デフォルトの名無しさん
2013/05/12(日) 13:41:34.31gemのアップデートとmacなんでbrewのアップデートを一括で行うコマンドを作ってみたのですが、
それぞれ出力が一旦バッファされ、実行終了ごとに一気に出力されてしまいます。
これを直接コマンドを叩いた時と同じようにリアルタイムで出力されるようにはどうしたらいいのでしょうか?
[myupdate]
#!/usr/local/bin/ruby
print `gem update --system`
print `gem update`
print `brew update`
print `brew upgrade`
print `brew doctor`
0869デフォルトの名無しさん
2013/05/12(日) 14:05:48.68system使え。printいらん。
そもそも論として、単純にコマンドを逐次実行するだけならシェルスクリプトで十分。
0870デフォルトの名無しさん
2013/05/12(日) 14:22:20.23systemにしても出力はバッファされてしまいます。
あとシェルスクリプトで十分とかいう説明はいらんです。
0871デフォルトの名無しさん
2013/05/12(日) 15:42:24.670872デフォルトの名無しさん
2013/05/12(日) 15:43:24.880873デフォルトの名無しさん
2013/05/12(日) 16:02:09.83ありがとございます。ただうまくいかず一気に出力されてしまいます。
ちょっとgemだとわかりづらいんでこんな感じにしました。
[sleep.rb]
STDOUT.sync = true
print "aaa"
sleep 5
print "bbb"
これをターミナルから「$ ruby sleep.rb」とすればまずaaaが表示されて5秒後にbbbと表示されます。
ただ、これを別ファイルから、
[test.rb]
print `ruby /path/to/sleep.rb`
と実行すると、5秒後に一気に「aaabbb」と表示されます。
これを直接ターミナルで実行した時と同じような挙動にするにはどうすればいいのでしょうか?
0874デフォルトの名無しさん
2013/05/12(日) 17:33:55.35`...` を使う限りはその挙動は変わらない。
0875デフォルトの名無しさん
2013/05/12(日) 18:04:42.59バッククォーテーションがそういう挙動ってことなんですね。バッファすると。
じゃあ、どう書けばいいんでしょうか?
0876デフォルトの名無しさん
2013/05/12(日) 18:26:53.781行ごとに文字列として読み取って何かしたい、みたいなことは IO.popen
ただ、呼んだプロセス自分でバッファリングを効かせるように再設定していたら
どうしようもないかもね。
0877デフォルトの名無しさん
2013/05/12(日) 19:43:37.66ひとつひとつ「コマンド」を手探りで試していってもマジで行き当たりばったりにしかならないのでどーにもならん
0878デフォルトの名無しさん
2013/05/16(木) 20:07:02.38DL先に行ってみたら最新は2.0とのこと。
1.9のときに1.8からだいぶ変わったとききましたが、
2.0で1.8と互換性のある開発は可能でしょうか?
0879デフォルトの名無しさん
2013/05/16(木) 20:36:05.23ちょこっとの書き換えや条件分岐でなんとかなるものではない
0880878
2013/05/16(木) 20:48:57.03ありがとうございます。なんとなく状況が浮かんできます・・・
るびま見てたら1.9系から2.0への移行はほとんど問題ないような記述もあったんですが、
今回は素直に1.8系をインストールしてやってみますm(_ _)m
0881デフォルトの名無しさん
2013/05/16(木) 20:59:05.850882デフォルトの名無しさん
2013/05/17(金) 00:20:15.06の出力の末尾の連続するゼロを同数のスペースに置換するにはどうすればいいでしょうか
0883デフォルトの名無しさん
2013/05/17(金) 02:11:32.69の出力の末尾の連続するゼロを同数のスペースに置換したらいいんじゃないかな?
0884デフォルトの名無しさん
2013/05/18(土) 04:04:24.340885デフォルトの名無しさん
2013/05/18(土) 23:06:32.590886デフォルトの名無しさん
2013/05/19(日) 05:17:56.99日本語が文字化けする原因が分からずに苦戦しております。。。
result1 = search.find_by_person_name(code)
result2 = search.find(:all, :conditions => { :person_name => code })
result1.person_name
-> 文字化けせずにブラウザ上でも確認可能
result2.to_json
-> 日本語名のみが文字化けして表示されている
(…文字制限の為以下に続きます…)
0887デフォルトの名無しさん
2013/05/19(日) 05:20:38.21result1の方は該当するレコードが基本1行のみなので1レコードを抽出します。
result2の方のDBはperson_nameに対して複数レコードが存在しています。
result2の方は該当するレコードを全部抽出したいと考えております。
to_jsonをしてる事がいけないのはわかるのですが、
根本的なところでそもそも何かが理解出来てない事がありものすごく些細な
ところで引っかかってる気がしています。どなたかアドバイスお願いします。。。
0888デフォルトの名無しさん
2013/05/19(日) 09:19:24.060889デフォルトの名無しさん
2013/05/20(月) 06:28:17.36ごめんなさい、調べたのですがいまいち良く分かってません。。。
文字化けしてるというのは日本語が数字で表示されているのでもなく
全て「?」で表示されています。
0890デフォルトの名無しさん
2013/05/20(月) 10:15:19.00とするとどうなりますか?
0891デフォルトの名無しさん
2013/05/20(月) 10:27:57.90コンソールに出力しろ
不可能ならそこだけ適当なファイルに書き出せ
あとRailsというかActiveSupportが自動付加するto_jsonはなんなのかさっぱりわからんので明示的に別なの使うのを推奨
0892デフォルトの名無しさん
2013/05/20(月) 10:38:03.85コンソールに出そうとしてそこでもう一回文字化け発生したら
何のデバッグしてんのかわからなくなるぞ
0893デフォルトの名無しさん
2013/05/20(月) 10:58:39.63というかどうせpだろ、と思ったがRuby1.9からは進数表示されないのか
0894デフォルトの名無しさん
2013/05/20(月) 20:19:31.95有り難うございます。
コンソール出力でも以下の様な感じになっております。
result1.person_name.to_json
"¥"������¥""
何か別の方法で試してみます、、、うむぅ、、、
0895デフォルトの名無しさん
2013/05/20(月) 20:57:17.750896デフォルトの名無しさん
2013/05/20(月) 21:09:46.55今95%位解決出来そうな状態になってきています!
matome = result2.map do | list |
a = list.person_name.force_encoding("UTF-8")
b = list.title.force_encoding("UTF-8")
c = list.url
res1 = {"keyword" => a,"title" => b,"url" => c,"image" => d}
res2 = JSON.pretty_generate(@res1)
end
こんな具合で処理させたら日本語が表示される様になりました。
ですが、JSONの最初と最後の[ ]や、複数の時の区切り , が抜けてまた詰まりました。Orz.
ただ根本的にやり方間違っていてやり直しが出そうな何か嫌な予感がしています。。。
0897デフォルトの名無しさん
2013/05/20(月) 21:20:42.35解決出来ました、いやー嬉しいです。
matome = result2.map do | list |
a = list.person_name.force_encoding("UTF-8")
b = list.title.force_encoding("UTF-8")
c = list.url
d = list.image
res1 = {"keyword" => a,"title" => b,"url" => c,"image" => d}
end
matome.to_json
これで全てが解決しました。Orz
長い道のりでしたが良かったです。。。
0898デフォルトの名無しさん
2013/05/20(月) 23:03:40.03が必要ということは、DBの文字コードがUTF-8になってないような気がする。
0899デフォルトの名無しさん
2013/05/20(月) 23:10:22.75返信ありがとうございます!DB側は以下の様な感じで特に問題ないと思ってました。
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
と言うのは >>886 でresult1の時は文字が���こんな感じにならなかったので…
ただ根本的な原因は未だ分かってないのも事実です。
0900デフォルトの名無しさん
2013/05/21(火) 08:24:11.16DBアクセスライブラリの場合、とってきた文字列のエンコーディングが
常にASCII-8BITとして設定されてしまう場合がある
(実際にはUTF-8のデータが取得できているにもかかわらず)
オプションか何かで、エンコーディングの指定を変えることができれば解決するんだが
それができなければどうしようもない
0901デフォルトの名無しさん
2013/05/21(火) 08:25:06.88問題があるとすればDBアダプタ側だろう
0902デフォルトの名無しさん
2013/05/21(火) 08:41:40.55ファックメリケンピーポー
0903デフォルトの名無しさん
2013/05/22(水) 22:29:39.900904デフォルトの名無しさん
2013/05/22(水) 22:40:03.040905デフォルトの名無しさん
2013/05/25(土) 17:03:32.60ruby server.rb
で起動した後にブラウザで localhost:10080 を表示してもただの真っ白な画面になってしまいます。
皆さんは普通に表示できてますか?
こちらは
Max OS X 10.8
ruby 1.8.7 mac標準のもの
って環境です。
0906デフォルトの名無しさん
2013/05/25(土) 19:29:47.39RubyGemsは英語で書かれているし
いくつかのモジュールのサイトも英語だった・・・なんだこれは!
0907デフォルトの名無しさん
2013/05/25(土) 20:19:05.22まあそれでなくとも隅々まで日本語化されてるなんてことはありえない
0908デフォルトの名無しさん
2013/05/25(土) 20:21:23.590909デフォルトの名無しさん
2013/05/25(土) 20:45:48.430910デフォルトの名無しさん
2013/05/25(土) 21:15:29.02今の地位って?
0911デフォルトの名無しさん
2013/05/26(日) 02:01:05.230912デフォルトの名無しさん
2013/05/26(日) 02:15:46.78というかあれは管理の都合であってユーザーの都合じゃねえ
RubyとサーバとHTTP/HTMLの知識があることが前提だし(つまり初期のRubyユーザーが前提)
>>906
それを実現させるためには
「ライブラリを書いたら日本語で説明をつける」「解説サイトを作ったら日本語ページが必須」「Rubyの質問は日本語で」
あたりを徹底しなければならない
それはおそらく「日本人しか使ってはいけないプログラム言語」になる
言いたいことはわかるんだけども
0913デフォルトの名無しさん
2013/05/26(日) 02:25:40.390914デフォルトの名無しさん
2013/05/26(日) 18:04:55.46Pythonやってみるのオススメ
rubyの調べ物がいかに楽なのかよくわかるから
またはHSPにでも鞍替えするとか
なでしことかでもない限りプログラムに英語は付き物だから、簡単な単語拾うくらいからでも英語に慣れといたほうがいいよ
0915デフォルトの名無しさん
2013/05/26(日) 18:13:38.790916デフォルトの名無しさん
2013/05/26(日) 18:38:55.860917デフォルトの名無しさん
2013/05/26(日) 19:07:22.58server.rbが入ってるパッケージ版はお勧めできない
あれは使い方が初心者向けじゃないので
ブラウザから見るか、chm版(HTMLヘルプファイル版)を落としたほうがよい
ブラウザから見るのであれば「サクサク引けるRubyリファレンスマニュアル」
chm版で見るのであれば「chm版リミックス」がオススメ
0919デフォルトの名無しさん
2013/05/27(月) 05:28:27.45なんで?
0920デフォルトの名無しさん
2013/05/27(月) 07:48:50.74Ruby エラー
でググれば、エラーの見方教えてくれる日本語サイトがすぐ見つかるのはラッキーだよな
0921デフォルトの名無しさん
2013/05/27(月) 08:14:54.44ArgumentError: wrong number of arguments (3 for 2)
さて「引数3が正しいのに2個だった」と「引数2が正しいのに3個だった」のどちらでしょう。答はfor
ネイティブな人にもネイティブじゃない人にも既存のコンピュータメッセージに慣れた人にも不自然さが少ない簡潔な表現が理想ではある
0922デフォルトの名無しさん
2013/05/27(月) 08:32:42.87それは「国産プログラミング言語は英語を使うべきではない」と同じだ
それがどれだけ歪んでいるかおわかりだろうか
0923デフォルトの名無しさん
2013/05/27(月) 08:49:39.560924デフォルトの名無しさん
2013/05/27(月) 09:02:55.350925デフォルトの名無しさん
2013/05/27(月) 09:31:03.91>ネイティブな人にもネイティブじゃない人にも
世界の言語は英語と日本語だけじゃないんだが。
0926デフォルトの名無しさん
2013/05/27(月) 10:47:34.88この文脈ではそれはどうでもいい
0927デフォルトの名無しさん
2013/05/27(月) 10:55:06.95国産じゃなくて日本発を謳っているんじゃないか
日本人に使われることは想定していないんだろう
ならば、正しい
0928デフォルトの名無しさん
2013/05/27(月) 17:25:19.47テンプレに前者は載ってますが。。。
Rはそれなりに使えますが、テキスト処理/ファイル処理用にRubyも覚えておきたいです。
0929デフォルトの名無しさん
2013/05/27(月) 21:49:32.83例えば次のようなHash構造(を列挙するための独自のイテレータ)に対してeachを呼んだとき
h = {
'a' => ['a',false],
'b' => ['b',false],
'c' => {'a'=>['ca',false], 'b'=>['cb',false]}
}
最初に必ず'b'が来るとか、値(配列)2番目の要素がfalseのときだけ列挙する(列挙の後でtrueに変更)
'c'のように値がHashであればこのHashを順に列挙する、などとしたいと思っています。
Pythonでは独自にnext()を定義した単純クラスの定義から始めるため(次に何を返すかをnext()に定義する)
考え方としてそこから抜け出せないところもあるのですが
Enumerable::Enumerator(ruby1.8.x)の利用を考えたとき
同じようにnext()を拡張したり、独自の機能を加えて使えるものなのか、わかりません。
http://doc.ruby-lang.org/ja/1.8.7/class/Enumerable=3a=3aEnumerator.html
どのようなコードを書くようになるのでしょうか?
とっかかりとなるヒントをいただけるとうれしいです
0930デフォルトの名無しさん
2013/05/27(月) 22:48:04.53「要素の列挙の仕方を定義する」方法を尋ねているのなら、それはeachを定義するということ。
hはHashなので、もともと持っているHash#eachをhについて上書きすることになる。
0931デフォルトの名無しさん
2013/05/27(月) 23:21:37.540932929
2013/05/28(火) 13:26:51.26ありがとうございます。今にしてみると質問時点でrubyには当てはまらない部分もあった気がしますが
ヒントをいただきました。まだ詰めきれてないので簡単ですが、こんな感じで↓
# Enumeratorでの列挙に利用されるmy_each()を定義
# hはMyHashインスタンスに
class MyHash < Hash
def my_each; /*次の値返す*/; end
end
# nextやeachでmy_eachが呼ばれるよう指定して外部イテレータを生成
iter = h.to_enum(:my_each)
ただ、my_eachの中で結局eachなど(内部イテレータ)を使って値を返すと
混在してあまり気持ちよくない感じのコードになる気がします。
Arrayだとインデクスのインクリメントなどでも書けるので
HashのキーをArrayに保持しておくとかするのが良さそう。
あと例えば↓のようにするとチグハグになってしまうみたいです
iter.next #=>最初の値
iter.each{...} #=>列挙状態と無関係に最初から順に値が帰る(内部イテレータと変わらない)
iter.next #=>保持されている列挙状態により2番目の値が返る
自分の場合、たまたまデータ構造が列挙済みかどうかのフラグを持ってるので対応できるのですが
Enumerable::Enumeratorのマニュアルにも"外部イテレータとして「も」使えます"とあるように
each(内部イテレータ)とnextなど(外部イテレータ)で分かれていて
意識してどちらか一方に統一して使うことが前提になってるんですよね、たぶん。
マニュアルで見る限りですが、ruby1.9では外部イテレータの機能が強化されてるみたいですし
古い話をしてたらすみませんm(_ _)m
0934デフォルトの名無しさん
2013/05/28(火) 15:09:02.840935デフォルトの名無しさん
2013/05/28(火) 21:52:05.34/ `ヽ. お薬増やしておきますねー
__/ ┃)) __i |
/ ヽ,,⌒)___(,,ノ\
0936デフォルトの名無しさん
2013/05/29(水) 01:41:18.41なんか変なの?>>932
0937デフォルトの名無しさん
2013/05/29(水) 10:21:22.02変なのかは知らないが、プレゼン能力ゼロだなと俺は感じた
0938デフォルトの名無しさん
2013/05/29(水) 11:09:18.84>next メソッドによる外部列挙の状態は他のイテレータメソッドによる 内部列挙には影響を与えません。
>ただし、 IO#each_line のようにおおもとの列挙メカニズムが副作用を 伴っている場合には影響があり得ます。
>>929で引用したページにこう書いてあるが
0939デフォルトの名無しさん
2013/05/29(水) 11:58:06.08知ってる人いますか?
0940デフォルトの名無しさん
2013/05/29(水) 18:59:40.410941デフォルトの名無しさん
2013/05/30(木) 07:28:59.42eachを中断した後、中断箇所からnextやeachで再開したい
0942デフォルトの名無しさん
2013/05/30(木) 10:11:04.37eachで回さずにloopとnextで回せばいいと思うが
eachで回したい積極的な理由が何かあるの?
もしあるならそれを書いて欲しいなって思う
0943デフォルトの名無しさん
2013/05/30(木) 10:22:46.25だいぶ遅くなったけど、単純なツリー構造ライブラリを書いてみた。(約250ステップ)
http://play.island.ac/codepaste/code?id=1526
ライブラリ実装の特徴を挙げると、Rubyは純粋オブジェクト指向言語である、
言い換えると「あらゆるすべてがオブジェクトである」から、
(1) ツリーを(Hashではなく)Compositeパターンによるオブジェクトで表現した。
(2) (Stringだけでなく)以下のメソッドを提供しさえすれば、任意のオブジェクトを
要素としたツリーを構築できる。(いわゆるダックタイピング)
to_s, hash, eql?, <=>
(3) コンテナとしてSet(順序無&重複無)とArray(順序有&重複有)のどちらも利用できる。
外部イテレータのサンプル実装も含めてあるので、参考まで。
0944943
2013/05/30(木) 12:09:36.59Rubyの組み込みクラス Enumerable::Enumerator だけど、いまいち汎用的じゃない。
(もちろん each の代わりに each_xxx が使えるという設計意図は満足してるけど....)
具体的には、列挙条件をイテレータメソッドとして定義するのではなく、
列挙時にパラメタとして指定したいなぁと考える。
たとえばソートを伴なう列挙(each_with_sorting)であれば、
enum = h.to_enum(:each_with_sorting) { |x, y| f(x) <=> f(y) } # (1)
とか、仕様でブロックが渡せないのであれば、代わりにラムダ式をパラメタにして、
enum = h.to_enum(:each_with_sorting, lambda { |x, y| f(x) <=> f(y) } ) # (2)
みたいに....。更にこれ(=この妄想)を一般化すると、each へ列挙条件をハッシュで
オプションパラメタとして渡せればいい。
enum = h.to_enum(:each, # (3)
:filter => lambda { |body| body == 'b' ),
:sorter => lambda { |x, y| f(x) <=> f(y) }
)
残念ながら現状の(Enumerable::Enumeratorの)実装だと、
パラメタを文字列(String)へ変換し、それを列挙時に評価(eval)しているみたい。
だから、ラムダ式(2)やハッシュ(3)では列挙条件を指定できない。(Ruby 1.8.7 で確認)
0945デフォルトの名無しさん
2013/05/30(木) 15:26:43.22sortやfind_allしてからto_enumするだけじゃダメってこと?
0946943
2013/05/30(木) 22:08:55.53多くのケースは、それでイイと思うよ。
言い換えると、ツリーを列挙オブジェクトへ変換(to_enum)しさえすれば、
その後は豊富なEnumerableaメソッドを組み合わせることで自在に加工できる。
ただしこの話、ツリーの親子関係を前提とするソートに関しては当てはまらない。
h.to_enum(:each_with_sorting).to_a
# => ["h", "a", "b", "c", "ca", "cb", "cba", "cbb", "cbc", "cc"]
h.to_enum.sort
# => ["a", "b", "c", "ca", "cb", "cba", "cbb", "cbc", "cc", "h"]
これを解決するには、ブロック(あるいはラムダ式)でソート条件を渡すしかないと考える。
つまり、ソートしてから加工ではダメで、ソートする時に計算できればイイ。
たとえば逆順にソートしたいなら、以下のようなコードになる。
h.to_enum(:each_with_sorting) { |x, y| (x <=> y) * -1 }
更には、今回のケース(>>929)だとツリー要素は単純型のStringであったけれど、
これがレコードのような複合型であった場合、ソート条件として各メンバーについて
昇順/降順や優先順位を指定したいという要求は必然であるはず。これにもパラメタ渡しは役立つ。
だから、Enumerable::Enumerator へは任意のパラメタを渡せることが「望ましい」と思う。
(少なくとも、リファレンスにはパラメタ(args)に関する制限事項を記述「すべき」)
0947デフォルトの名無しさん
2013/05/30(木) 22:35:02.070948929
2013/05/30(木) 23:06:31.18すいません、eachにこだわるわけではなくloopで問題ありませんでした。
それをeachと書いてしまったのが>>932の「rubyに当てはまらない部分」でした。
pythonでは通常forループ(rubyのfor/inループみたいな)なんですが、
これに外部イテレータ(pythonではジェネレータ)を渡すと
内部的にnext()の呼び出しと、StopIteration例外が捕捉される動作に切り替わりまして
コード自体は変わらないんです。
それでubyではeachという風に、単純に置き換えて書いてしまった次第です>>929
この思い込みから、違いに気づくのが遅くなりました。
>>943
ありがとうございます!
これはちょっとすぐに読み下せないので、勉強させていただきますm(_ _)m
エキサイトしてきました^^
0949943
2013/05/30(木) 23:11:58.52もちろんメソッドeach_with_sorting内部の実装上では、Arrayとしてソートしているよ。
以下のコードだと、コレクションがArrayであれば #218、Setであれば #51 の辺りになる。
http://play.island.ac/codepaste/code?id=1526
で、Arrayをソートした結果もArrayであり、ArrayはEnumerableだよね。
0950デフォルトの名無しさん
2013/05/30(木) 23:16:33.67EnumerableはEnumerableとして動作するから意味があるのであって、Arrayにするのなら
to_aしちゃえばいいだけじゃないのかな
0951943
2013/05/30(木) 23:39:03.02単純にto_aしちゃうと、ツリーの親子関係が崩れちゃいますよ。
もちろん親子関係よりも大小関係が大切と考えるのであれば単純にto_aしちゃえばいいけど、
自分は「ツリーに関するソートの定義」として、
親子関係を維持したまま子同士の大小関係でソートするのが自然であると考えました。
以下の例(>>946 から引用)について、>>950はどちらが自然な結果だと考えますか?
> h.to_enum(:each_with_sorting).to_a
> # => ["h", "a", "b", "c", "ca", "cb", "cba", "cbb", "cbc", "cc"]
> h.to_enum.sort
> # => ["a", "b", "c", "ca", "cb", "cba", "cbb", "cbc", "cc", "h"]
0952デフォルトの名無しさん
2013/05/31(金) 05:49:04.65枚挙メソッドの実行のたびに順番が違うと困るならそれはEnumerableではなくArray
Enumerable#sortではなくArray#sortなのはそのせい
0953デフォルトの名無しさん
2013/05/31(金) 16:49:50.91[蛇足]
枚挙は、いとまがない時以外ではほとんど使わないよ。
普通は、列挙って言うよ。
0954デフォルトの名無しさん
2013/05/31(金) 18:32:15.410955デフォルトの名無しさん
2013/05/31(金) 20:31:46.25まあどっちにしても「数えられる」という程度の意味しかない
順番つけはArrayの仕事
0956943
2013/05/31(金) 22:37:07.53http://play.island.ac/codepaste/code?id=1527
== 主な変更点
* 以下のイテレータメソッドを新規追加。
・each_tree -- ツリー要素(body)ではなく、ツリーそのものを返す
・each_with_lineage -- ツリー要素と素性(ルート要素から親要素へのArray)を返す
* イテレータメソッド each_if について、ノードの選択条件をパラメタ指定できるようにした。
* ライブラリ固有の例外について、それぞれをクラスとして明示的に定義した。
なお、子要素を保持するコレクションクラスとして集合を選ぶ場合、
ライブラリ固有のクラス Tree::Set の代わりに、標準ライブラリ set が提供するクラスである
Set(一般的な集合)とSortedSet(ソートされた集合)も利用できます。
http://doc.ruby-lang.org/ja/1.8.7/library/set.html
固有クラス Tree::Set と標準クラス Set とは、要素間で重複が発生した時の振る舞いに差異があります。
前者は例外 Tree::Exception::Duplication が発生するのに対し、
後者は新旧のいずれかを選んでツリーを構築します。お好みで選んで下さい。
(新旧のどちらが選ばれるかについて、リファレンスでは明記されていません)
0957デフォルトの名無しさん
2013/06/02(日) 03:31:45.08http://codepad.org/lo5RHO7t
具体的にはまず404エラーと表示されます。(ブラウザから確認するとちゃんと存在するアドレスなのに)
いろいろ調べてるとなぜか begin endで囲むとこれが治るのですが今度はまたいろいろと問題が出てきて……
何がまずいのでしょうか?
0958デフォルトの名無しさん
2013/06/02(日) 03:49:50.48「それをsinatraを使わずに書くとどうなりますか?」
sinatraは上級者が手を抜くために使うライブラリであって、初心者が手を抜くために使うライブラリではありませぬ
sinatraがどういう動作をしてsinatraにどういう動作をさせているのかがわからない人は使ったらいかんです
0959デフォルトの名無しさん
2013/06/02(日) 03:52:59.96わかりました 出直してきます
0960デフォルトの名無しさん
2013/06/02(日) 03:55:53.34誰があなたにそれを教えたのか知らないが、そんな本があるなら今すぐ安全なところで燃やせ
0961デフォルトの名無しさん
2013/06/02(日) 04:06:45.81こればっかりは文化の選択みたいなもんで理屈ではどうにもなんないわ
Rubyの変数とメソッドは全部小文字でアンダースコア区切りが「普通」だと言うしかない
0962デフォルトの名無しさん
2013/06/02(日) 04:14:17.17そうなんですか どの本で見たとかじゃなくなんとなくやってました
普通に則って書いていきます
0963デフォルトの名無しさん
2013/06/02(日) 09:38:58.67でrubyは標準のライブラリがスネークケースで書いてあるから普通はそっち
0964デフォルトの名無しさん
2013/06/02(日) 10:16:13.69誰が勧めてるのやら
0965デフォルトの名無しさん
2013/06/02(日) 10:54:42.310966デフォルトの名無しさん
2013/06/02(日) 11:02:16.12「(規格の基礎知識を持っていて類似ライブラリの経験があれば)簡単で便利」の
カッコの中を省略されていることに気付けないのは罠
万人向けではないものを万人向けであるかのように紹介解説するのは悪意
そんな解説はないほうがマシ
0967デフォルトの名無しさん
2013/06/02(日) 11:07:47.10MLとかしか読んでない人が陥る病気です
0968デフォルトの名無しさん
2013/06/02(日) 11:59:53.38初心者向けになり得ると思うんだけどねー
それがない現時点では、初心者からすればRackを素で使った方が早い
0969デフォルトの名無しさん
2013/06/02(日) 12:01:35.10入門になるページもあるし
0970デフォルトの名無しさん
2013/06/02(日) 12:02:40.390971デフォルトの名無しさん
2013/06/02(日) 12:17:30.320972デフォルトの名無しさん
2013/06/02(日) 12:28:51.83少し前に検索したときに全然出なかったから、今もないものかと思ってた
適当なことを書いて申し訳ない
あとオライリージャパンもSinatraの本を出してることにちょっと驚いた
0973デフォルトの名無しさん
2013/06/02(日) 12:30:35.41http://gihyo.jp/dev/serial/01/ruby/0009
↑この短い掲示板アプリが非常にわかりやすい
最初にこれ見て、SinatraとSequelにハマった
0974943
2013/06/02(日) 17:00:42.95更新の目的は、>>944 で述べた組み込みクラス Enumerable::Enumerator への不満の解消です。
http://play.island.ac/codepaste/code?id=1528
== 主な変更点
* ツリー構造クラス Tree::Abstract は列挙可能(enumerable)では無くなりました。その代わりに
ツリー列挙モジュール Tree::Enumerator を新規追加しています。
* 上記変更により、ツリー構造クラスからは以下の列挙メソッドが削除され、
each, each_tree, each_with_lineage, each_with_sorting, each_if
その代わりに列挙オブジェクト を生成するメソッド to_enum が追加されました。
* メソッド Tree::Abstract#to_enum(opts = {}) の引数はSymbolをキーとするHashです。
:reply_keys => [ .... ]
値はSymbolのArrayであり、そのSymbolは以下のいずれかを指定します。
この指定は、列挙ブロックへ渡される引数リストの仕様を示しています。
:body, :cond, :children -- それぞれ、ツリーオブジェクトの属性
:tree -- ツリーオブジェクトそのもの
:lineage -- ツリーの素性(ルート要素から親要素へのArray)
:filter => lambda { |tree| .... }
値はラムダ式で引数はツリーオブジェクトです。(Enumerable#select も参照)
:sorter => lambda { |x, y| .... }
値はラムダ式で各引数はツリーオブジェクトです。(Enumerable#sort も参照)
0975デフォルトの名無しさん
2013/06/02(日) 21:59:02.70ここが何スレか知ってる?
0976デフォルトの名無しさん
2013/06/02(日) 23:16:42.33プッシュ通知自体はうまくいっているのですが、その後の成否のレスポンス取得して通知を行う箇所の実装をどうすればよいのかわかりません。。。
socketをgetsすればいいというところまでは解ったのですが、
sslをcloseした後のsocketのデータをgetsしてよろしいのでしょうか?
また、取れたデータをどう処理すれば、下記のドキュメントのようなパケット形式として見れるのでしょうか?
ttps://developer.apple.com/jp/devcenter/ios/library/documentation/RemoteNotificationsPG.pdf
0977デフォルトの名無しさん
2013/06/03(月) 00:14:30.87なにをどういうやりかたで通信してるかRubyはそんなこと知りませんので資料見て実装してください
ただ、それくらいになるとgemで誰か作ってそうではある
探すと見つかるかもしれない
0978943
2013/06/03(月) 01:26:41.66どちらかといえば、「ネットワークプログラミング相談室」スレ向きの話題だね。
受信ソケットからのバイト列をいかに解釈するかという話は、何度となくQ&Aされている。
で、リンク先の文書を軽く読んでみたけど、その p53 には以下の記述がある。
通知を送信した結果、APNsがその通知を誤った形式、あるいはその他の
理解できない形式であると認識すると、APNsは切断の前にエラー応答パケットを返します
(エラーがない場合はAPNsは何も返しません)。図 5-3にエラー応答パケットの形式を示します。
質問は、この「エラー応答パケット」を受信する方法でいいのかな?
もしそうだとしたら、このパケットは常に6バイト固定みたいだから、
以下の手順でいいのではないかと思う。
(1) 拡張形式の通知パケットを(SSLソケット sock へ)送信
(2) response = sock.read(6) でエラー応答パケットを受信
(3) SSLソケット(sock)をクローズ
(4) メソッド String#unpack で各フィールド(command, status, identifier)を取り出す
(5) 各フィールドの値を確認する
補足1: (2)の受信で、(多重待ちやタイムアウト監視といった)必要に応じて select を使う
補足2: (5)の確認について、以下の条件が「すべて」成立した場合に限り、通知処理成功と判断する
(a) 応答パケット長(response.size)が6バイトである
(b) コマンド値が8である
(c) ステータス値が0である
(d) 通知識別子が通知パケットで指定した値と等しい
0979943
2013/06/03(月) 19:02:09.87まず最初はオバカなミス。
X: (a) 応答パケット長(response.size)が6バイトである
O: (a) 応答パケット長(response.bytesize)が6バイトである
次に、リンク先の文書を読み直すと、APNsはエラーが発生すると応答パケットを送信した後で
TCPコネクションを閉じると書かれているけど、エラーが未発生だった場合の振る舞いが
明記されていない。これは正常であれば接続は維持されると解釈すべきだろうから、
このままでは>>978にある手順(2)の受信処理が無限待ちに陥る可能性がある。
従って、select(あるいは signal)を使ったタイムアウト監視が必須になるだろう。
更に、この箇所を真面目に設計するならば、通知トランザクションが発生する度に
対応する子スレッドを生成し、その子スレッドで(上記の訂正を含む)手順(1)..(5)を実行すべきだろう。
あるいは、(いわゆる)「非同期I/O処理」として手順(3)のソケットを閉じずに起動元へ制御を戻した後、
select で応答パケット受信を待つという実装でもかまわない。ただし、この場合には
適切なエラー処理ができるようにする為、通知パケットと応答パケットの対応付けが必須になる。
具体的には、たとえば通知識別子をキーとし通知パケットを値とするハッシュで対応を管理する。
なお、プロバイダをRailsのようなWebアプリとして設計する場合にはまた別の実装になるが、
非同期の考え方は同じなので、参考になると思う。
なお、ネットで検索するとRuby実装コードはいくつか見つけたけど(たとえば Apns4r)、
基本通知パケットを利用するか、あるいは拡張通知パケットを利用していても応答パケットを
無視しているものばかりだった。自力で真面目に実装するには、上段で書いたようにスレッディングや
非同期I/Oといったテクニックが必要になるが、できれば>>976には茨の道を切り開いてもらいたい。
0980デフォルトの名無しさん
2013/06/03(月) 23:59:10.10返信が遅れてしまいました。
ありがとうございます。
何とか無事に動くものを作ることができました。。。
細かい内容まで本当にありがとうございます。
0981デフォルトの名無しさん
2013/06/05(水) 01:40:01.23具体的には、芸能人ブログの画像を羅列するといったものなのですが、画像と記事URLを結び付けたいのですがむずかしいです。
ハッシュを使うにもキーを記事URLとすると同じキーがいくつも出来てしまいますし、二次配列もいまいちわかりません。
データベースを使うにも40行ほどのプログラムですこし大げさかな、とおもいます。
どうするのがベストでしょうか
0982デフォルトの名無しさん
2013/06/05(水) 09:15:17.12「このサイトから取ってきた画像」だったら「このサイト」の「画像」でいいんじゃないの
Rubyには多次元配列のようなものはなくて、単に入れ子になった配列やHashに過ぎないから気楽にネストしていいぞ
配列やHashをファイルに保管するときは(テキストエディタで編集ができなくていいなら)pstoreがおすすめというか実質これしかねえ
どういう構造にするかについての議論は、こればっかりは手探りで慣れて頂くしかないわ
[
{ :title => 'ブログ1タイトル',
:url => 'ブログ1トップURL',
:articles => ['post001.php','post002.php',...],
images => {'post001.php'=>[], 'post002.php'=>['syame1.jpg']},
...},
{ :title => 'ブログ2タイトル',
:url => 'ブログ2トップURL',
...},
...
]
みたいなブログごとのでっかいHashを配列に入れてeachで回して探すようにするのがとりあえずなんも考えずに済んで楽だろうと感じる
これでダメな場合は別な構造を試す
0983デフォルトの名無しさん
2013/06/05(水) 12:00:31.03逆にすればいいんだけじゃん
0984デフォルトの名無しさん
2013/06/05(水) 17:23:02.74気にせず多次元配列使っていいんですね
……配列の中に動的にハッシュを作って追加するほうほうがわからない……
>>983
逆とは?
0985デフォルトの名無しさん
2013/06/05(水) 19:41:51.38「動的に」の意味が分からんがpushじゃダメなん?
0986デフォルトの名無しさん
2013/06/05(水) 20:09:52.76ブログ - エントリー - 画像
- 画像
- エントリー - 画像
- 画像
というツリー構造にしたいのです。
動的にというのはRSSで取得したら随時 配列を作っていくということです
0987デフォルトの名無しさん
2013/06/05(水) 21:04:42.80まずは>>982が例示してくれた
要素としてハッシュを持つような配列
値として配列を持つようなハッシュ
をそれぞれ理解してみようか?
0988デフォルトの名無しさん
2013/06/05(水) 21:18:01.65h = {a: [1,2]}
たとえばこの[1,2]の部分を[1,2,3]に
したかったらどうしたらいいかな?って考えてみよー^ο^
0989デフォルトの名無しさん
2013/06/05(水) 21:56:09.96……りょうかいです
>>988
eachで回してpushでいいですか?
0990デフォルトの名無しさん
2013/06/06(木) 09:17:42.82それくらいは自分で試してみようか・・・
0991943
2013/06/06(木) 09:59:00.26>>982が書いてくれたハッシュでもいいと思うけど、
Rubyは純粋オブジェクト指向言語なのだから、ブログの構成要素をクラスとして定義してみた。
http://play.island.ac/codepaste/code?id=1530
ブログ(Blog)へ動的に写真(Photo)を追加していく操作(add_images!)も含まれているので、参考まで。
0992デフォルトの名無しさん
2013/06/06(木) 10:32:14.780993デフォルトの名無しさん
2013/06/06(木) 10:49:26.980994943
2013/06/06(木) 11:12:05.64X: ブログ(Blog)へ動的に写真(Photo)を追加していく操作(add_images!)も含まれているので、
O: ブログ(Blog)へ動的に写真(Photo)を追加していく操作(add_photos!)も含まれているので、
それから写真クラス Photo について、現状では組み込みクラス String のほうが
(簡潔だから)望ましいのだけれど、将来的に写真クラスへ様々な属性が追加される事を想定して、
あえて明示的に新規クラスとして定義している。たとえば(Googleの写真検索結果ページのように)
属性として写真のサイズを追加したい場合には、以下のようになる。
class Photo
attr_reader :url, :width, :height
def initialize(url, width, height)
....
end
....
end
0995デフォルトの名無しさん
2013/06/06(木) 16:42:49.77はい……
>>991,994
ありがとうございます!
クラスはすごい流し読みをしたので使うことが億劫でした
じっくり読んでモノにします
0996943
2013/06/06(木) 16:57:32.49http://play.island.ac/codepaste/code?id=1531
ここまで(>>991,994)、>>981,986で提示された「お題」について、
アンテナサイト開発に必要なデータ構造とそれらへの基本操作をモデルとして書きました。
今回の更新では、それらの基本操作を組み合わせたアンテナサイト向けの応用操作を追加しています。
まず最初に、想定するアンテナサイトの処理概要を以下に示します。
* 初期化 -- 空のblogオブジェクトを生成する
* 更新 -- blogサイトからRSSを取得して解析し、その結果を元にblogオブジェクトを更新する
* 参照 -- blogサイトに関連した全写真を一覧にして返す
続いて、主な変更点です。
* 以下のメソッドを追加
* Blog#update!(other) -- (おそらくはRSS解析処理の結果である)別のblogオブジェクトで自身を更新
* Blog#each -- 関連したすべての写真オブジェクトを列挙
0997デフォルトの名無しさん
2013/06/06(木) 17:00:35.06http://kohada.2ch.net/test/read.cgi/php/1369576918/
0998デフォルトの名無しさん
2013/06/06(木) 17:02:05.89スレ立て乙です
0999デフォルトの名無しさん
2013/06/06(木) 17:03:23.261000デフォルトの名無しさん
2013/06/06(木) 17:04:29.3510011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。