Ruby 初心者スレッド Part 43
レス数が1000を超えています。これ以上書き込みはできません。
0001uy
2011/05/21(土) 19:21:37.98前スレ Part 42 http://hibari.2ch.net/test/read.cgi/tech/1303353905/1
★注意★ Ruby 1.9.2 は初心者には若干時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
文字エンコーディング等の外部基礎知識が必要な上、不完全対応の第三者ライブラリでの問題の切り分けが手間です。
迷う点の少ない1.8.7に習熟→おもむろに1.9.2の変更点のみ重点学習、とすればスムーズに移行できるでしょう。
関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。
■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
・エラーメッセージの共通そうな部分やエラーの出るモジュール名でググる
・マニュアルで引っかかったクラスの記述を探す http://www.ruby-lang.org/ja/man/
・FAQを一応読む http://www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
・最終的にやりたいこと(もっとよい方法がある場合が多いので)
・エラーメッセージ(自力で訳さずなるべくそのままで)
・詳しい内容(「動きません」「うまくできません」では回答しようがない)
・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
回答してくれた人には「ありがとう」のひとことをいってあげて。
■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
0002デフォルトの名無しさん
2011/05/21(土) 20:32:59.550003デフォルトの名無しさん
2011/05/21(土) 22:38:14.81>require_relativeって嫌われてるの?
1.9.1以前で動かないから嫌われてるだろうと推測
0004デフォルトの名無しさん
2011/05/21(土) 23:36:30.12乙。ところで推奨はまだ1.8.7でいくのか?
0005デフォルトの名無しさん
2011/05/22(日) 01:46:22.58957さんのコードだと、やはりダブルコロンで読み込まれない
場合もあるようで、うまくいきませんでした。
なので、956さんを参考にバイナリモードで読み込んで
957さんの変換をすることで回避することができました。
なんか色々勉強になりました。
0006デフォルトの名無しさん
2011/05/22(日) 07:36:29.21>わけわかな質問にもエスパー発揮で。
日本語でおk
0007デフォルトの名無しさん
2011/05/22(日) 09:27:36.41乙、と言いたいところだが立てるときくらいコテ外しなよ。
0008デフォルトの名無しさん
2011/05/22(日) 10:18:13.68ここを使う理由もない
0009デフォルトの名無しさん
2011/05/22(日) 10:25:35.15そんなどうでもいい理由で重複とかRubyアンチが増えるだけ
0010デフォルトの名無しさん
2011/05/22(日) 11:00:49.77いちいち別スレ立てようとかこっちはうぜえんだよ
0011デフォルトの名無しさん
2011/05/22(日) 11:12:29.78PHPでいうprint_rやvar_dumpに相当するメソッドってありますか?
0012デフォルトの名無しさん
2011/05/22(日) 11:21:41.09当たり前だがそっくりそのまま相当するものはない
オブジェクトについて情報を出力したければ
p
そのとき出力されるものを文字列として得たいなら
inspect
少なくともクラス設計者が変なinspectを作っていない限りはpで中身もクラスもわかる。
リテラルがあるものはクラス表示してくれないが、スクリプト上のリテラルと同じ形式なので、
標準的なクラスは全部わかるようになっている。
001311
2011/05/22(日) 11:27:29.93あなたよく説明ばかり長くて的はずれなことばっかり言うと陰口たたかれませんか?
引き続き募集します
0014デフォルトの名無しさん
2011/05/22(日) 11:34:40.470015デフォルトの名無しさん
2011/05/22(日) 11:42:34.05p
0016デフォルトの名無しさん
2011/05/22(日) 11:45:16.25NGワードっと
0017デフォルトの名無しさん
2011/05/22(日) 11:50:53.05pだよ
0018デフォルトの名無しさん
2011/05/22(日) 12:06:15.30p
0019デフォルトの名無しさん
2011/05/22(日) 12:08:26.590020デフォルトの名無しさん
2011/05/22(日) 12:24:40.75立ったスレが気に食わなくて荒らしてるんだと思うのでスルーが一番かと
0021デフォルトの名無しさん
2011/05/22(日) 13:06:33.29このフレームワークはPHPでいうとCakePHPという知名度が高いっていう位置付けがあるから使っている人が居るけど
探すとRubyでももっと良いMVCフレームワークあるんだよ
0022デフォルトの名無しさん
2011/05/22(日) 14:03:55.040023デフォルトの名無しさん
2011/05/22(日) 14:33:42.930024デフォルトの名無しさん
2011/05/22(日) 14:41:41.47活動時間帯は他のスレ見れば一発なので、今回は逆だと思うなあ
0025デフォルトの名無しさん
2011/05/22(日) 14:59:13.26これを言ってしまったあとだと模倣犯が出るので参考にならんが
0026デフォルトの名無しさん
2011/05/22(日) 15:04:57.58ただコテつけて非技術的な内容で馴れ合いしたいのなら
ム板以外でやってほしいもんだ
0027デフォルトの名無しさん
2011/05/22(日) 15:12:43.08そういう人の思考形態を推測することはもれなく基地外さんへの道まっしぐらなので、
正直どう思ってるかなんてのは恐ろしいこと以外のなにものでもないわけで
>>26
正直、マ板があるじゃんとは、思わなくもない
受け入れられない場所で暴れ続けるその心中をお察しすることは、残念ながらできないんだけど
0028デフォルトの名無しさん
2011/05/22(日) 15:19:32.83>>12さんありがとうございました
0029デフォルトの名無しさん
2011/05/22(日) 15:29:05.40アクの強い文体もコテつけるのと大差ないんじゃw
技術的なレスなら個人的には別に問題ないかなと
0030デフォルトの名無しさん
2011/05/22(日) 16:42:07.55という式の戻り値が1なのはなぜですか?
最後の式が戻り値らしいので3が返ってくると思いました。
0031デフォルトの名無しさん
2011/05/22(日) 16:48:32.52整数1のインスタンスメソッド(で、selfが返ると定義されてる)なので、selfである整数1が返ります
ブロックの見かけならなんでもかんでも最後に評価された値が返ると決まってるわけではない
これは Integer#upto というメソッドで、それの定義による
0032デフォルトの名無しさん
2011/05/22(日) 16:55:10.98ついでに補足しておくと、それで最後のブロックの最後の評価値が戻るとすると、
戻り値は nil になるはずだよ。 puts の戻り値は引数に何与えてもnil
0033デフォルトの名無しさん
2011/05/22(日) 16:57:41.86一応、 ri Integer.upto で調べたら
----------------------------------------------------------- Integer#upto
int.upto(limit) {|i| block } => int
------------------------------------------------------------------------
Iterates _block_, passing in integer values from _int_ up to and
including _limit_.
5.upto(10) { |i| print i, " " }
_produces:_
5 6 7 8 9 10
と出て、selfが返されることまでは書かれていませんでした。
が、オンラインマニュアルには
upto(max) {|n| ... }
self から max まで 1 ずつ増やしながら繰り返します。 self > max であれば何もしません。
self を返します。
downto, step, times も参照。
と、しっかりselfが返されることが書いてありました。
0034デフォルトの名無しさん
2011/05/22(日) 17:12:30.87> int.upto(limit) {|i| block } => int
レシーバと返り値が一緒だからint ... => intと表記している
もし別の整数を返すのであれば例えばceilのように
num.ceil -> integerと表記する
0035デフォルトの名無しさん
2011/05/22(日) 17:32:05.76gem インストールでも --no-ri --no-rdoc がデフォになりつつあるのに
0036デフォルトの名無しさん
2011/05/22(日) 17:47:17.170037デフォルトの名無しさん
2011/05/22(日) 19:03:14.65頑張ってパワーポイントで資料作成していましたが、パワーポイントの
アニメーションではインタラクティブでないため、いまいちわかりずらく
なってしまいます。Rubyは初心者レベルながらなんとか使えますので、
Rubyで作った回路のクラスをどうにかして図解できないでしょうか?
0038デフォルトの名無しさん
2011/05/22(日) 19:07:29.07静的に図にするだけなら画像なりHTMLなりで吐けばいいだろうけど
クリックすると動いて〜とかは難しい道のりだ
0039デフォルトの名無しさん
2011/05/22(日) 19:10:54.14パワーポイントより遥かに大変
Rubyはライブラリやドキュメントが貧弱すぎてGUI向いてない
0040デフォルトの名無しさん
2011/05/22(日) 19:28:30.06やはりRubyにGUIを求めるのは無理ですか。。SystemCとかのシステム記述言語
を使うべきかも知れないですね。dxrubyはかなりいいところまで行ってるんですが、
画面デザイン(回路のブロック図)を直接描くのが大変そうで二の足を踏んでしまうんです。
0041デフォルトの名無しさん
2011/05/22(日) 20:07:15.62RDE(rubyの開発エディタ)があることがわかり日本語など設定しました。
日本語があるスクリプトを実行すると
出力画面にinvalid multibyte char (US-ASCII)が出てしまいます。
コマンドプロンプトでRuby -Ks スクリプト名だとうまくいくのですが、
RDEだと-Ksが設定できなくてエラーが起きてしまうようです
なにか良い方法ありませんか>?
0042デフォルトの名無しさん
2011/05/22(日) 20:44:44.00使ってるrubyのバージョンとエディタ(?)の名前+バージョンは?
0043デフォルトの名無しさん
2011/05/22(日) 20:54:13.87RDEはRuby上級者向けなので手を出してはいけない
0044デフォルトの名無しさん
2011/05/22(日) 20:54:16.090045デフォルトの名無しさん
2011/05/22(日) 21:11:28.961.9ならマジックコメントで対応できる…はず
ttp://doc.okkez.net/static/192/doc/spec=2fm17n.html#magic_comment
0046デフォルトの名無しさん
2011/05/22(日) 21:13:57.32ruby 1.9.2はRuby初心者にはお薦めできない(>>1を参照)
少なくとも
invalid multibyte char (US-ASCII)
の意味を理解できない人向けのバージョンではない
今すぐアンインストールしてruby 1.8.7を入れ直すんだ
0047デフォルトの名無しさん
2011/05/22(日) 21:18:30.49そもそも-Kオプション自体が1.9系列で使うものじゃない。1.8系列との互換性のために残されてるだけ。
1.9系列ではソースファイルのエンコーディングは
# coding: 文字コード
というマジックコメントというものをファイルの先頭に書いて指定する。
いわゆるShift-JISで書いてるなら、スクリプトの最初に
# coding: CP932
と書いておけばいい。
0048デフォルトの名無しさん
2011/05/22(日) 21:21:53.11対応できると言うか、マルチバイト文字をソースに含めるならマジックコメントは必須
-Kオプションはあくまで互換性のためにおいてあるだけ
0049デフォルトの名無しさん
2011/05/22(日) 21:29:54.130050デフォルトの名無しさん
2011/05/22(日) 23:17:56.410051デフォルトの名無しさん
2011/05/22(日) 23:21:51.40別に1.9.2がだめってことはぜんぜんないよ。
ただWeb上で集めた情報が1.8仕様だったとしてもめげずに自分で1.9用に書き直す能力が要るだけ。
むしろいろんな文字コードを併用するときには1.9系列の方がいい。
エンコーディングの変換も楽だし、ソースファイルごとにエンコーディング指定できるし。
005241です
2011/05/23(月) 00:17:59.67rubyバージョン1.9.2 RDEバージョン1.1.1.1です
>>43
上級者向けなんですか。。けどいちいちcmdで実行しないところが僕が
使いたい理由なんです。
Ruby1.8.7にすれば-Ks指定しなくてもSHJISで日本語出力できますか?
0053uy
2011/05/23(月) 00:26:10.78>>52 できる
Ruby1.9は、慣れても現時点、マルチバイト文字に悩まされ続ける処理系だから
1.9では日本語使えないと思ったほうが良い けど良く考えてみて欲しい、 日本語を表示することが、そんなに重要かね?
0054uy
2011/05/23(月) 00:32:03.85日本語表示したいときは1.8でかき、それ以外は1.9で書くという事、
1.8と、1.9だといくつか致命的に仕様が違うから 1.8構文で遺産を築いちゃうと
1.9へ移行するときにソース捨てる事になりかねないし、1.9は1.8よりも部分的には1〜10倍くらい速い
1.9は使ってるうちに、時期にこんなとこで聞かずともマルチバイト文字についてはわかってくるよ Ksの意味も ググレks
0055デフォルトの名無しさん
2011/05/23(月) 00:41:56.571.9.2でShift-JISの文字列を使いたければスクリプトの先頭に
# coding: CP932
と入れるだけでいいよ。
005641です
2011/05/23(月) 00:43:07.20Ruby1.8.7のパスをRDEに指定して実行で日本語化できました。
しかし、rubyのバージョンが2つあるのですが、cmdで実行する際は
1.9.2のほうが適用されて日本語表示エラーが起きてしまうようです。
cmdで1.8.2を適用する際のコマンドなどありますか?
0057デフォルトの名無しさん
2011/05/23(月) 00:44:05.15それとも頭がおかしいのか
0058デフォルトの名無しさん
2011/05/23(月) 00:46:42.69文字数の取り扱いがバイト単位とかめんどくさくてやってられん
0059デフォルトの名無しさん
2011/05/23(月) 00:48:55.87cmdで1.9.2を使わないなら環境変数Pathの先頭にRuby1.8.7のruby.exeがあるフォルダを追加してやればいい
でもそこまでしなくても、なんども言われてるようにマジックコメントさえつければ1.9.2でも普通に日本語使える
0060デフォルトの名無しさん
2011/05/23(月) 00:48:58.50環境変数PATHから1.9.2のexeの入ってるフォルダを外すか
1.8.2のフォルダを先に持ってくる
または.rb拡張子の関連付けを1.8.2に設定
cmd.exeからの実行形態にあわせてどちらかか両方を
0061uy
2011/05/23(月) 12:46:54.54え・・・・? 困るよ君 初心者スレッドでも、そういうのは
puts "あいうえおaiueo".split(//s)
>>56
あるけど教えねーよ( 長いから )
俺は、Ruby1.8は、
Rubyのexeの名前のruby187.exeにして使ってる
Rubyの1.9はそのままruby.exeで使ってる
>ruby187 [filename] → 1.8
>ruby [filename] → 1.9
0062デフォルトの名無しさん
2011/05/23(月) 13:32:46.535235349023c"
r = Regexp.new(/a.*?b(.+?)c/)
puts s.scan(r)
改行やホワイトスペースを無視してscanする方法ってございませんか?
0063デフォルトの名無しさん
2011/05/23(月) 13:45:57.91結果がどうなって欲しいのん?
irb> p "a b\n\n\n5235349023c".scan(/a.+?b(.+?)c/m)[0].map{|m| m.gsub(/\s/){''}}
["5235349023"]
こう?
0064uy
2011/05/23(月) 13:57:44.615235349023c"
puts s.split
splitなめんなよこら
0065デフォルトの名無しさん
2011/05/23(月) 14:04:23.46bとcに挟まれた部分(数字とは限りません)が取りたいのですが
s = "a b 5235349023c"
r = Regexp.new(/a.*?b(.+?)c/)
puts s.scan(r)
だと取れますが、
s = "a b
5235349023c"
r = Regexp.new(/a.*?b(.+?)c/)
puts s.scan(r)
みたいに文字列に改行が入っているときは>>63先生のパターンmを利用してうまく取ることができました。
0066デフォルトの名無しさん
2011/05/23(月) 14:17:43.81/a.*?b(.+?)c/m
■コード
require 'csv'
CSV.foreach('./test.txt') do |row|
s = "a b
5235349023c"
r = Regexp.new(row)
puts s.scan(r)
end
テキストファイルに1行だけパターンが記入されてます
テキストファイルを読み取って、そのパターンを使いたいのですがこれだとエラーで取得できませんでした
9行目をr = Regexp.new(/a.*?b(.+?)c/m)とすると取得できました
パターンを外部ファイルに置く方法はございませんか?
0067デフォルトの名無しさん
2011/05/23(月) 14:21:56.30「.」 が改行にもマッチするようになる
s = "a b\n\n5235349023c"
r = Regexp.new(/a.*?b(.+?)c/m)
p s.scan(r) # => [["\n\n5235349023"]]
0068デフォルトの名無しさん
2011/05/23(月) 14:23:37.32str = File.open('regexp.txt', 'rb'){|f| f.read}
re = Regexp.new(str, Regexp::MULTILINE)
CSV.foreach('test.csv') do |row|
puts row.scan(re)
end
でどう
0069デフォルトの名無しさん
2011/05/23(月) 14:27:50.53または
r = /#{row}/m
0070デフォルトの名無しさん
2011/05/23(月) 14:28:58.37おまけに改行処理とかやってねえ
要は Regexp.new("なんとか", Regexp::MULTILINE) と /なんとか/m は同じ
前者をリテラルで書いたものが後者
Regexp.quote についても調べるといい
regexp.txt:
a.+?b(.+?)c
str = File.open('regexp.txt', 'rb'){|f| f.read}.chomp
re = Regexp.new(str, Regexp::MULTILINE)
CSV.foreach('test.csv') do |row|
puts row.scan(re)
end
0071デフォルトの名無しさん
2011/05/23(月) 14:32:53.670072デフォルトの名無しさん
2011/05/23(月) 14:34:53.08p Regexp.new("/a.*?b(.+?)c/m") #=> /\/a.*?(.+?)c\/m/
"/a.*?b(.+?)c/m"という文字列を Regexp.new でコンパイルしても
/a.*?b(.+?)c/m
というリテラルと同じ結果にはならないんだ。
それをやりたければ、 Regexp.new じゃなくてevalというメソッドを使って
eval("/a.*?b(.+?)c/m")とするか、そうでなければテキストファイルには
a.*?b(.+?)c
とだけ書き込んで
Regexp.new(row, Regexp::MULTILINE)とかすればいい。
それから、1行だけならcsv使う必要ないよね?
r = File.open('./text.txt') {|f| f.read.chomp }
でいいんじゃないの?
0073デフォルトの名無しさん
2011/05/23(月) 14:36:58.31じゃなくて
row =
だた
0074デフォルトの名無しさん
2011/05/23(月) 14:37:34.840075デフォルトの名無しさん
2011/05/23(月) 14:38:35.33濃いって?
0076デフォルトの名無しさん
2011/05/23(月) 14:39:01.49http://hibari.2ch.net/test/read.cgi/php/1304064660/
0077uy
2011/05/23(月) 14:40:42.42def func
/a.*?b(.+?)c/m
end
### code
require File.dirname(__FILE__)+"/test"
s = "a b
5235349023c"
puts s.scan func
結局、コードにしないなら、何を取り繕っても最終的にevalでしょ
0078デフォルトの名無しさん
2011/05/23(月) 14:50:16.71人が集まれば変なのが集まる。
0079デフォルトの名無しさん
2011/05/23(月) 15:20:18.41みんな開発環境なにつかってんの?
動作軽いのあったら教えて
0080デフォルトの名無しさん
2011/05/23(月) 15:31:28.28すこしかしこいエディタとすこしかしこいてすとスイーツ()とたーみなるえみゅれーた
もしあなたのかんがえるRubyがRuby on RailsのことならRailsスレにいくといろいろてとりあしとり
0081uy = 79
2011/05/23(月) 15:42:38.920082デフォルトの名無しさん
2011/05/23(月) 15:50:30.30autotestと何か通知アプリケーションがあればエディタでも最低限の快適性は確保できるよね
エディタだとそこまで自前で頑張らなければならない(しかも頑張っても最低限な)のでめんどくせえという話でもあるんだが
オールインワン統合環境からは見捨てられてる状態だからどうにもならんな
0083デフォルトの名無しさん
2011/05/23(月) 16:12:28.3815行目の print line + "\n"でエラーになってしまいます
ttp://d.hatena.ne.jp/dambiyori/20081227/1230393234を見ながらニコ生でコメントを取得したいのですがエラーで困ってます
ファイルの文字コードをShift_JISにして1〜2行目を削除するとエラーはなくなるのですが、コメント部分が文字化けして見えません
どなたかアドバイスお願いします
C:/test.rb:15:in `write': "\xE3" to UTF-8 in conversion from AS
CII-8BIT to UTF-8 to Windows-31J (Encoding::UndefinedConversionError)
# -*- encoding: utf-8 -*-
$stdout.set_encoding(Encoding::Windows_31J, Encoding::UTF_8)
require 'socket'
msgsvr = "省略" #メッセージサーバのホスト名
port = 省略 #メッセージサーバのポート番号
thread = 省略 #スレッド番号
s = TCPSocket.open(msgsvr,port)
req = "<thread thread=\"#{thread}\" res_from=\"-200\" version=\"20061206\" \>\0"
s.print req
s.each("\0") do |line|
print line + "\n"
end
0084デフォルトの名無しさん
2011/05/23(月) 16:14:55.65http://live.nicovideo.jp/api/getplayerstatus?v=○○←(番組のhttp://live.nicovideo.jp/watch/lv○○の数字の部分を入れます)
にアクセスして<addr>〜</addr>,<port>〜</port>,<thread>〜</thread>の値を代入します
0085デフォルトの名無しさん
2011/05/23(月) 16:29:32.05>>46
0086uy
2011/05/23(月) 16:33:33.170087デフォルトの名無しさん
2011/05/23(月) 16:34:40.04ソケットで読み込んだ文字列がUTF-8ではなくてASCII-8BIT扱いになってるのが問題みたいだから、
line.force_encoding('UTF-8') + "\n"
でいいと思う
0088デフォルトの名無しさん
2011/05/23(月) 16:38:02.620089デフォルトの名無しさん
2011/05/23(月) 16:42:27.57cmdでニコニコ動画のコメントを見るのはやめた方がいいみたいだよ。
0090デフォルトの名無しさん
2011/05/23(月) 16:58:23.18# -*- encoding: utf-8 -*-
$stdout.set_encoding(Encoding::Windows_31J, Encoding::UTF_8)
require 'socket'
msgsvr = "msg101.live.nicovideo.jp"
port = 2812
thread = 1092549465
s = TCPSocket.open(msgsvr,port)
req = "<thread thread=\"#{thread}\" res_from=\"-200\" version=\"20061206\" \>\0"
s.print req
s.each("\0") do |line|
line = line.force_encoding('UTF-8')
line = line.encode!(::Encoding::Windows_31J, :undef => :replace)
print line + "\r\n"
end
0091デフォルトの名無しさん
2011/05/23(月) 17:07:22.89あまり簡単じゃなかったので責任取れ
require 'socket'
require 'kconv'
msgsvr = 'omsg102.live.nicovideo.jp'
port = "2810"
thread = "1092287512"
TCPSocket.open(msgsvr,port) do |s|
s.write("<thread thread=\"#{thread}\" res_from=\"-200\" version=\"20061206\" \>\0")
s.each("\0") do |line|
puts NKF.nkf('-Wsx --fb-html', line).scan(/>(.+?)</)[0]
end
end
0092デフォルトの名無しさん
2011/05/23(月) 17:10:17.86コメントなんて一部が消えても問題ないだろうしふつうにtosjisでよくね
0093デフォルトの名無しさん
2011/05/23(月) 17:12:58.64force_encodingもencode!も破壊的だから
line =
とかしなくていいと思う
あと、Windowsでも普通に扱う分には改行は\nだけでおk
\nで書いとけば出力時に勝手に\r\nに変換される
0094デフォルトの名無しさん
2011/05/23(月) 17:16:40.54ですよねー
require 'socket'
require 'kconv'
msgsvr, port, thread = 'omsg102.live.nicovideo.jp', '2810', '1092287512'
TCPSocket.open(msgsvr,port) do |s|
s.write("<thread thread=\"#{thread}\" res_from=\"-200\" version=\"20061206\" \>\0")
s.each("\0"){|line| puts line.tosjis.scan(/>(.+?)</)[0]}
end
0095デフォルトの名無しさん
2011/05/23(月) 17:29:19.12返ってくる文字列がUTF-8だって知らなきゃいけない分ほんのわずかに1.9が手間かな?
1.9.2 ↓
require 'socket'
msgsvr, port, thread = 'omsg102.live.nicovideo.jp', '2810', '1092287512'
TCPSocket.open(msgsvr,port) do |s|
s.write("<thread thread=\"#{thread}\" res_from=\"-200\" version=\"20061206\" \>\0")
s.each("\0"){|line| puts line.encode('CP932', 'UTF-8', :undef=>:replace).scan(/>(.+?)</)[0]}
end
0096デフォルトの名無しさん
2011/05/23(月) 17:56:16.97アドレスにhttps://を含めることができないみたいで方法がわかりません
http = Net::HTTP.new('localhost')
response = http.post('/~test/test.php', 'ei=UTF-8&p=test')
p response.body
0097デフォルトの名無しさん
2011/05/23(月) 17:58:20.60require 'net/https' してから
Net::HTTPS をお使いください
0098デフォルトの名無しさん
2011/05/23(月) 18:07:30.17uri = URI.parse("https://localhost/~test/test.php")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
p response.body
0099デフォルトの名無しさん
2011/05/23(月) 18:19:22.35uri = URI.parse("https://localhost/~test/test.php?a=123")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data({:a=>"1bcd"})
response = http.request(request)
p response.body
0100デフォルトの名無しさん
2011/05/23(月) 18:38:56.360101デフォルトの名無しさん
2011/05/23(月) 19:20:12.40こういう書き方がすごくムズムズする
何かメリットあるんだろうけど
書き方統一して可読性高めてホスィ
0102デフォルトの名無しさん
2011/05/23(月) 19:35:39.34個人的には or や and をカッコなしで使う人は死滅して欲しい
自己再代入は、これはもう仕方ない
整数オブジェクト540に x という名前ラベルをぺたっと貼るという行為でしかないわけだし
0103デフォルトの名無しさん
2011/05/23(月) 19:38:51.01のなにが問題なのかよくわかりません。
ifやunlessの後置修飾嫌いな人?
0104デフォルトの名無しさん
2011/05/23(月) 19:50:04.42調べて修正してみます
0105デフォルトの名無しさん
2011/05/23(月) 19:52:03.84webページにはアクセスできるのですが、どうもデータが送信されません
test.phpはGETデータを返すファイルなので、response.bodyにはabcdが入っているようになってます
アドバイスお願いします
uri = URI.parse("http://localhost/~test/test.php?a=abcd")
request = Net::HTTP::Get.new(uri.path)
response = Net::HTTP.start(uri.host, uri.port) {|http|
http.request(request)
}
p response.body
0106uy
2011/05/23(月) 20:12:02.62ifにも戻り値が欲しい
x = 540 if x > 540 を
x = if x > 540 まぁ、これじゃダメだけど、
540を2回書かなきゃいけないってのは言語の甘さ
実装するなら
x = ifrhs x > 540 でrhsが帰るようにするとか
x = if(x > 540).rhs こうか
ans , rhs , lhs = if x > 540 こんな感じのを希望
0107uy
2011/05/23(月) 20:17:43.04x ||= 5 これは x が nilだったら 5を代入って意味だけど
x = || y これで y が trueだったら代入、 nilだったら代入しないって構文が欲しい
これないせいで
x = y if y とかやっちゃってる
演算子のオーバーライドは基本的にやりたくない
0108デフォルトの名無しさん
2011/05/23(月) 20:23:18.39色んな書き方を取り入れてるRubyならではの悩みではあると思うけど
そこまでいくとちょっと演算子が爆発的に増えそうな悪寒
0109デフォルトの名無しさん
2011/05/23(月) 20:24:55.38pathとhostとportしか使ってなくて、queryを送ってないからね。
0110デフォルトの名無しさん
2011/05/23(月) 21:10:06.73なんでレスしてるの?自演なの?
0111uy
2011/05/23(月) 21:36:42.79演算子が増えるのは困るな
今の所、lambdaにハッシュを渡して、関数を返す関数を実行したときに変数に入れた値を
返された関数を実行するときに中の変数を書き換えたい時にx = y if y みたいな事やってるだけだから
普段のコーディングで困ってるほどでもない
0112デフォルトの名無しさん
2011/05/23(月) 21:43:19.620113デフォルトの名無しさん
2011/05/23(月) 21:44:29.03いちいち正規表現つかって配列に分割してとかめんどくさいに決まってんだろ
0114uy
2011/05/23(月) 21:56:50.23このスレの住民も、Ruby1.8はマルチバイト扱いにくいって思っているの?
>>113
何つくってんの?
bbsみたいの作るにしても
splir(//s)すんのは、プログラム中、普通は一箇所ですし、
0115デフォルトの名無しさん
2011/05/23(月) 21:59:32.50つブログでやれ
0116uy
2011/05/23(月) 22:07:55.13class String
def uyueach
self.split(//s).each do | m |
yield m
end
end
end
"うゆうゆuyu".uyueach do |m|
puts m
end
0117デフォルトの名無しさん
2011/05/23(月) 22:13:25.78split(//s)とかやったら無駄なオブジェクト増えまくりでいやーん
0118デフォルトの名無しさん
2011/05/23(月) 22:22:47.48Enumeratorが返ってきて、つまりArray生成しないから効率も悪くない。
0119uy
2011/05/23(月) 22:25:26.620120デフォルトの名無しさん
2011/05/23(月) 22:52:57.23マニュアルのどのページを読むと良いのでしょうか?
0121デフォルトの名無しさん
2011/05/23(月) 23:02:51.19ニコ生でログインがgetplayerstatus保持されないのですが何故でしょうか?アドバイスお願いします
require 'net/http'
require 'net/https'
def login(username, password)
uri = URI.parse("https://secure.nicovideo.jp/secure/login?site=nicolive_antenna")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data({:mail=>username, :password=>password})
response = http.request(request)
regex = Regexp.new(/<ticket>(.+?)<\/ticket>/)
return response.body.scan(regex)[0][0]
end
def getplayerstatus(lv)
uri = URI.parse("http://live.nicovideo.jp/api/getplayerstatus?v=#{lv}")
http = Net::HTTP.new(uri.host, uri.port)
request = Net::HTTP::Get.new(uri.request_uri)
response = http.request(request)
return response.body
end
username = "" # ユーザー名
password = "" # パスワード
lv = "lv" # http://live.nicovideo.jp/watch/lv○○の「lv○○」を入力
ticket = login(username, password)
p gps = getplayerstatus(lv)
0122デフォルトの名無しさん
2011/05/23(月) 23:15:27.96まず、クラスの中で定義されていない、
ふつーにトップレベルで定義されているメソッドを別ファイルから利用することはできない
思いっきりテクニカルにすれば不可能ではないが、Rubyの制限だと思ってくれていい
素直にクラスかモジュールに属するように作るか、
関数的メソッドを提供したい場合は Kernel のインスタンスメソッドにしてくれ
で、
・ require の引数は .rb を普通は書かない(require 'b.rb' よりは require 'b')
・ require の引数はとりあえずカレントディレクトリに対する相対パスでも動く
・ require FIle.join(File.dirname(__FILE__), 'b.rb') とか書くとまず間違いない
・ 既存の(標準)ライブラリファイルと同じ名前のファイルは作ってはいけない(Ruby1.8限定)
ということで require
0123デフォルトの名無しさん
2011/05/23(月) 23:15:37.39ttp://www.ruby-lang.org/ja/man/html/FAQ_A5AFA5E9A5B9A1A2A5E2A5B8A5E5A1BCA5EB.html#a6.2e11.20load.a4.c8require.a4.cf.a4.c9.a4.a6.b0.e3.a4.a4.a4.de.a4.b9.a4.ab
0124デフォルトの名無しさん
2011/05/23(月) 23:17:36.34コードは1ミリも試してないが、クッキーの概念がないな
HTTP Cookie におけるセッションに関する勉強がたぶん必要
0125デフォルトの名無しさん
2011/05/23(月) 23:37:57.55charsってブロック変数指定しなかったら中身使いもしない無駄な文字列オブジェクトを
大量生成しないステキ仕様だったりするの?
0126デフォルトの名無しさん
2011/05/24(火) 00:05:07.91明日調べてみます
0127uy
2011/05/24(火) 00:20:56.17static VALUE
rb_str_each_char(VALUE str)
chars気になってchars調べたんだけど、別のことが気になった
long n; が、どうみても未初期化で
for (i = 0; i < len; i += n) {
やってんだけど、C言語で未初期化のローカルlong変数は初期値「1」であるなんて仕様あんの? ぼくC言語しらないからしらないんだけど
0128uy
2011/05/24(火) 00:23:40.93バグじゃなかったです
0129デフォルトの名無しさん
2011/05/24(火) 06:15:16.09Rubyの文字列のメモリ消費はぶっちゃけ鬼門なんだよね
最初から最後まで、全員が慎重に設計されたライブラリを慎重に使用して自作メソッドを慎重に設計しない限り、
使用メモリ量は加速度的に増大する
0130デフォルトの名無しさん
2011/05/24(火) 06:21:17.77JavaやPythonなんかと比べてもメモリ消費が激しいの?
0131デフォルトの名無しさん
2011/05/24(火) 06:32:36.02str = Iconv.conv(to, from, arg)とか書くのは普通だったような
むしろdupだとメモリ上の位置は動かないから省資源なんじゃないの? よくわからん
0132デフォルトの名無しさん
2011/05/24(火) 06:56:40.48ワシもそう思う博士
ということで、実際にやったほうが実感できそうなので実験
用意するもの、使用メモリ表示するマッスィーン(topとか)、使用メモリ表示に引っかかる程度に大きなファイル
irb で str = File.read(path);nil して arr = [] して str.dup.object_id や arr << str.dup; nil 連打
…メモリ変動なし
1.9.2 の irb にて、str = File.read(path);nil して arr = [] して str.dup.object_id や arr << str.dup; nil 連打
…メモリ表示は特に動かんな、っていうか1.8.7より微妙に動作速くないか気のせいか
dup.force_encoding('ASCII-8BIT') と dup.force_encoding('Shift_JIS') と dup.force_encoding('EUC-JP') を連打
まだ動かない
str.dup.force_encoding('Shift_JIS').valid_encoding?
まだ
str.dup.force_encoding('EUC-JP').valid_encoding?
まだまだ
結論
>>129
Ruby本体の提供するライブラリ的にはFUD
へちょい第三者ライブラリがあるのを否定はしないが
0133デフォルトの名無しさん
2011/05/24(火) 10:46:07.290134デフォルトの名無しさん
2011/05/24(火) 11:00:16.19クラスとモジュール作って特異メソッドの概念掴んで、日常用途では継承はカスでMix-Inが有効と覚えて、
目的に応じた gem をソースコード見ながら使えるようになるくらいのレベルでいい?
既存言語を知っているなら、寄り道なしで20時間以下くらいな気がする
0135デフォルトの名無しさん
2011/05/24(火) 11:12:43.84というようなことをきちっと学ぶとその後の学習曲線が綺麗だと思いたい
クラスとモジュールとインスタンスメソッドとクラスメソッドとモジュールのメソッドを別個に覚えてしまうと無駄で大変
0136デフォルトの名無しさん
2011/05/24(火) 11:47:52.180137デフォルトの名無しさん
2011/05/24(火) 11:52:15.74gem install machanize
gem update --system
gem update machanize
ってしたらmachanizeを利用したスクリプトを起動すると↓みたいなのが出ます
これはどのように対処したらよいのでしょうか?
NOTE: Gem::Specification#default_executable= is deprecated with no replacement.
It will be removed on or after 2011-10-01.
Gem::Specification#default_executable= called from C:/Ruby192/lib/ruby/
gems/1.9.1/specifications/nokogiri-1.4.4.1-x86-mingw32.gemspec:11.
NOTE: Gem::Specification#default_executable= is deprecated with no replacement.
It will be removed on or after 2011-10-01.
Gem::Specification#default_executable= called from C:/Ruby192/lib/ruby/
gems/1.9.1/specifications/rubygems-update-1.8.3.gemspec:11.
1.8.3
0138デフォルトの名無しさん
2011/05/24(火) 12:03:12.79C:\Ruby192\lib\ruby\gems\1.9.1\specifications\rubygems-update-1.8.3.gemspec
をエディタで開いて11行目のs.default_executable = %q{update_rubygems}をコメントアウト
0139デフォルトの名無しさん
2011/05/24(火) 12:39:21.430140デフォルトの名無しさん
2011/05/24(火) 12:58:47.60gem pristine nokogiri -- --with-xml2-include=なんとか とか書いてね
0141デフォルトの名無しさん
2011/05/24(火) 13:21:30.810142デフォルトの名無しさん
2011/05/24(火) 13:30:42.83$stdout.set_encoding(Encoding::Windows_31J, Encoding::UTF_8)
require 'socket'
addr = "msg○○○.live.nicovideo.jp"
port = ""
thread = ""
s = TCPSocket.open(addr,port)
req = "<thread thread=\"#{thread}\" res_from=\"-200\" version=\"20061206\" \>\0"
s.print req
s.each("\0") do |line|
line.force_encoding('UTF-8')
line.encode!(::Encoding::Windows_31J, :undef => :replace)
regex = Regexp.new(/<chat.+?date="([0-9]+?)".+?>(.+?)<\/chat>/)
line = line.scan(regex)[0]
p "time:#{line[0]} msg:#{line[1]}"
end
このコードではlineには["値1", "値2"]っていう風に入っているのにline[0]、line[1]とやるとエラーになってしまいます
何故なんでしょうか?
別ファイルにて
a = ["a", "b"]
p a[0]
p a[1]
と最小コードで試したらちゃんと表示できたのですが原因がわかりません
0143デフォルトの名無しさん
2011/05/24(火) 14:14:20.10scanの使い方が間違っている。
p "abcabc".scan(/(c).+(b)/) #=> ["cab"]
0144デフォルトの名無しさん
2011/05/24(火) 14:15:21.110145デフォルトの名無しさん
2011/05/24(火) 14:18:23.11エラーメッセージをコピペして書いてください。
それから
>このコードではlineには["値1", "値2"]っていう風に入っている
と言いますが、もしそうなら
line[0], line[1]がエラーになることはありえないので、
p "time:#{line[0]} msg:#{line[1]}" をコメントアウトして代わりに
p line
してみてlineに実際何が入っているか確認してください。
0146デフォルトの名無しさん
2011/05/24(火) 14:21:31.13> このコードではlineには["値1", "値2"]っていう風に入っているのに
入ってないよ
ソケット通信で文字列受け取るところが若干特殊だが、メインは普通の文字列処理に過ぎないので、読み下す
「"\0" で区切られた文字列ごとに、文字エンコーディング名義をUTF-8にし、文字エンコーディングをWindows-31Jに変換し、
<chat...> にマッチする正規表現の結果を line という変数にして、その0要素目と1要素目を表示」
うん、で、「"\0" で区切られた文字列」って具体的にはどんな文字列?
s.each("\0"){|line| p line} で表示してみると、こんなふうになってる(これはニコ生の仕様を読んでもいい)
"<thread resultcode=\"0\" thread=\"1092600265\" last_res=\"11081\" ticket=\"0xd24ab40\" ... \x00"
"<chat thread=\"1092600265\" vpos=\"1797100\" date=\"1306212871\" mail=\"184\" user_id ... \x00"
...
つまり、<chat...> に絶対マッチしない文字列が来ることがある
マッチしないんだから、 String#scan の戻り値は空の配列 [] で、 それの0要素目は nil だ
nil[0] と nil[1] を p で表示しようとしてエラーになっている
> undefined method `[]' for nil:NilClass (NoMethodError)
# -*- encoding: utf-8 -*-
$stdout.set_encoding(Encoding::Windows_31J, Encoding::UTF_8, :undef => :replace)
require 'socket'
addr, port, thread = 'omsg103.live.nicovideo.jp', '2809', '1092600265'
regex = Regexp.new(/<chat.+?date="([0-9]+?)".+?>(.+?)<\/chat>/)
TCPSocket.open(addr,port) do |s|
s.write "<thread thread=\"#{thread}\" res_from=\"-200\" version=\"20061206\" \>\0"
s.each("\0").each do |line|
line.force_encoding(::Encoding::UTF_8)
line.scan(regex){|match| puts "time:#{match[0]} msg:#{match[1]}"}
end
end
0147デフォルトの名無しさん
2011/05/24(火) 14:27:57.18簡単に解決するには
line = line.scan(regex)[0]
の下に
next unless line
0148デフォルトの名無しさん
2011/05/24(火) 14:29:32.86・ socket を open したら必ず close 「しなければならない」。close し忘れしないよう、普通はブロックを使う
・ リテラル /re/ で書ける限り、Regexp.new は使わない
・ $stdout.set_encoding... は「標準出力表示のときにこれでString#encodeする」のとほぼ同じ。処理被ってるので他のは消したよ
・ String#scan はブロックが使える。マッチした配列か、マッチした要素が渡る。今回の match は配列
# -*- encoding: utf-8 -*-
$stdout.set_encoding(Encoding::Windows_31J, Encoding::UTF_8, :undef => :replace)
require 'socket'
addr, port, thread = 'omsg103.live.nicovideo.jp', '2809', '1092600265'
regex = /<chat.+?date="([0-9]+?)".+?>(.+?)<\/chat>/
TCPSocket.open(addr,port) do |s|
s.write "<thread thread=\"#{thread}\" res_from=\"-200\" version=\"20061206\" \>\0"
s.each("\0") do |line|
line.force_encoding(::Encoding::UTF_8)
line.scan(regex){|match| puts "time:#{match[0]} msg:#{match[1]}"}
end
end
0149デフォルトの名無しさん
2011/05/24(火) 14:31:05.24ソースファイルにマルチバイト文字ないから
# -*- encoding: utf-8 -*-
とかいらないし、
line.force_encoding('UTF-8')
line.encode!(::Encoding::Windows_31J, :undef => :replace)
するなら
$stdout.set_encoding(Encoding::Windows_31J, Encoding::UTF_8)
とかいらないし、
line.force_encoding('UTF-8')
line.encode!(::Encoding::Windows_31J, :undef => :replace)
するぐらいなら
line.encode!('Windows-31J', 'UTF-8', :undef => :replace)
で十分だし、
Regexp.new(/<chat.+?date="([0-9]+?)".+?>(.+?)<\/chat>/)
は
/<chat.+?date="([0-9]+?)".+?>(.+?)<\/chat>/
と同じ意味で冗長だし
0150デフォルトの名無しさん
2011/05/24(火) 14:32:22.56それだと多分ただのおまじないになってしまうと思ったのでやらなかった
nil が返るというのは、Ruby スクリプトのデバッグにおいては大変大きなシグナル
これを怖がってもらうと、ちょっと困る
0151デフォルトの名無しさん
2011/05/24(火) 14:42:07.52>$stdout.set_encoding... は「標準出力表示のときにこれでString#encodeする」のとほぼ同じ。
str.encode(to, from)は
str.dup.force_encoding(from).encode(to,from)
と同じだけど、
$stdout.set_encoding(to, from)の場合、
str.encode(from).encode(to, from)と同じ処理になるから挙動が全く違うような……。
0152デフォルトの名無しさん
2011/05/24(火) 14:49:13.82世の中ではあんまり使われてないと思うので、できれば他の方法覚えたほうがいいんじゃないかな…
0153デフォルトの名無しさん
2011/05/24(火) 14:52:51.25># -*- encoding: utf-8 -*-
>とかいらないし、
"プレーンテキスト"にはエンコーディング不要とか信じ込んでる>>149はメリケン
0154デフォルトの名無しさん
2011/05/24(火) 14:58:27.55・引数に文字列を取る
・引数がURLとして正しければtrue、間違えて入ればfalseを返す
URLとして正しいかどうかを判定できるライブラリって、rubyにありませんでしょうか。
正規表現で判定するしかないのでしょうか。
0155デフォルトの名無しさん
2011/05/24(火) 15:00:48.29require 'uri' して URI.regexp('http') にマッチするかどうかを試せばいい
HTTP URI でなくてもいいなら単に URI.regexp
URI.parse したほうがいいと思うけど…
0156デフォルトの名無しさん
2011/05/24(火) 15:16:45.46どこまで細かくやりたいか次第だけど
最悪Addressable使えば何とかなるかな
0157デフォルトの名無しさん
2011/05/24(火) 15:19:40.55に見えた
疲れてるのだろうか
0158デフォルトの名無しさん
2011/05/24(火) 15:21:43.03%r|^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?|
>>155の言うとおりライブラリに教えてもらうのが手っ取り早い。
0159デフォルトの名無しさん
2011/05/24(火) 15:51:37.64初心者は秀丸でもいいですか?
0160デフォルトの名無しさん
2011/05/24(火) 15:59:32.62・ 自動インデントしてくれる
・ 普段の操作感で操作できる
の3つが揃っていればなんでもいいです
「Rubyの学習のために〇〇を導入しました〇〇の勉強と並行して進めてます」みたいなことでなければOK
特殊環境はRubyに書き慣れてからおもむろに移行しても充分間に合うから
0161デフォルトの名無しさん
2011/05/24(火) 17:11:04.67初心者は、というか別にいつまでも秀丸でも全然構わんよ。
Rubyスクリプトを書くには使いやすテキストエディタがあればそれで十分。
なにか画期的なIDEがあるわけでもなし。
Radrailsは大した機能もないのに禿重いし、RDEは重くはないが問題多いし。
0162デフォルトの名無しさん
2011/05/24(火) 18:23:45.76printとputsではできたのに
0163デフォルトの名無しさん
2011/05/24(火) 18:41:55.43実際に何が出力されてるのかというと
% ruby -e 'p "\a"' | hexdump -C
00000000 22 5c 61 22 0a |"\a".|
% ruby -e 'print "\a"' | hexdump -C
00000000 07 |.|
もしよくわからなかったら16進数とASCIIコードを調べて
0164デフォルトの名無しさん
2011/05/24(火) 18:47:56.07ptn = "/い/"
r = Regexp.new(ptn)
p s.match(r)
はヒットしないのに
s = "あいうえ"
p s.match(/い/)
はヒットする理由を教えてください
0165デフォルトの名無しさん
2011/05/24(火) 18:55:37.94最初にスラッシュ、次に い、最後にスラッシュ、にマッチする正規表現だから
Regexp.newに渡す場合は /.../ は不要
0166デフォルトの名無しさん
2011/05/24(火) 18:55:58.15と
p /.い/
の結果を比べてみなさい
0167デフォルトの名無しさん
2011/05/24(火) 19:05:41.13"pattern" 渡さなきゃいけないのに。
0168デフォルトの名無しさん
2011/05/24(火) 19:33:15.47多いというかこのスレに限っては多分同じ人
0169デフォルトの名無しさん
2011/05/24(火) 19:40:12.790170デフォルトの名無しさん
2011/05/24(火) 19:47:09.68//
もパターンの一部だと思ってるんじゃね?
0171デフォルトの名無しさん
2011/05/24(火) 19:51:23.950172デフォルトの名無しさん
2011/05/24(火) 22:41:34.79こんなエラーが出るのでてビルド失敗するんですがどうして?
フォルダ\ruby-1.9.2-p180\win32>nmake
Microsoft(R) Program Maintenance Utility Version 10.00.30319.01
Copyright (C) Microsoft Corporation. All rights reserved.
-I./.. ./../tool/compile_prelude.rb ./../prelude.rb miniprelude.c
'-I.' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
NMAKE : fatal error U1077: '-I.' : リターン コード '0x1'
Stop.
0173デフォルトの名無しさん
2011/05/24(火) 22:52:42.15WindowsでRubyをビルドするにはいくつかの準備が必要で
それを怠ると謎のエラーがでるので、それに該当してるんじゃないかと思う
とりあえず、以下のあたりが必要
- 既存 ruby (ruby.exe が使えるようパスを通す)
- bison for Windows <http://gnuwin32.sourceforge.net/packages/bison.htm>
- sed for Windows <http://gnuwin32.sourceforge.net/packages/sed.htm>
- libintl-3 <http://gnuwin32.sourceforge.net/packages/libintl.htm>
- libiconv-2 <http://gnuwin32.sourceforge.net/packages/libiconv.htm>
- regex <http://gnuwin32.sourceforge.net/packages/regex.htm>
設定方法は上記をキーワードにインターネットで検索すれば分かる
0174173
2011/05/24(火) 23:07:15.73gnu関連のツールをインストーラでなくzipから直接展開して使う場合、
C:\gnu
みたいなフォルダを作って、そこに bison.exe や sed.exe だけを展開してもダメで、
C:\gnu\bin
C:\gnu\share
の2つのフォルダを作って、binに bison.exe や sed.exe、その他 dll を入れ、
share 配下には各 zip に含まれる share 配下をそのままコピーしたうえで、
C:\gnu\bin に path 通して使うとよい
このあたりの情報がうまく見つからなくて2時間ほど無駄にした
0175172
2011/05/24(火) 23:28:31.16WindowsでRubyを自分でビルドするのって大変みたいですね
その情報をもとに頑張ってみます
ありがとうございました
0176デフォルトの名無しさん
2011/05/24(火) 23:45:23.650177デフォルトの名無しさん
2011/05/24(火) 23:47:40.380178デフォルトの名無しさん
2011/05/24(火) 23:52:58.270179デフォルトの名無しさん
2011/05/24(火) 23:56:00.23わかります
0180デフォルトの名無しさん
2011/05/25(水) 00:13:01.82rvmインストールする際のコマンドらしいのですが、
このコマンドでは何が行われてるのですか?
0181デフォルトの名無しさん
2011/05/25(水) 00:15:37.78bashでそれを実行している。
0182デフォルトの名無しさん
2011/05/25(水) 00:40:46.000183デフォルトの名無しさん
2011/05/25(水) 07:02:14.99wget URL -O /tmp/rvminstall
bash /tmp/rvminstall
rm /tmp/rvminstall
を、一時ファイルを介さない形で標準出入力を駆使して実行
コピペ1発実行できるよう1行にまとめてしまったので呪文になってる
使用シェルがbashでない場合は動作しないかもしれないが、rvm自体bash必須なのでどうということはない
0184デフォルトの名無しさん
2011/05/25(水) 10:10:58.61ライブラリの豊富さスピード可読性習得コストすべてにおいてpythonに劣る糞言語w
0185デフォルトの名無しさん
2011/05/25(水) 10:15:38.400186デフォルトの名無しさん
2011/05/25(水) 10:21:54.27超一般論としては、完成したスクリプトの実行時間はPythonのほうが速い
Pythonでやって遅くて、その遅い理由が不可避であったのなら(アルゴリズムとかデータ処理量とか)、
Rubyで同じことをやってもやっぱり遅いというか、より遅い可能性が大
0187デフォルトの名無しさん
2011/05/25(水) 10:29:24.580188デフォルトの名無しさん
2011/05/25(水) 10:44:34.030189デフォルトの名無しさん
2011/05/25(水) 10:47:10.23print "a"だけのコードでも起動が遅いのでRubyに来たのですよ
0190デフォルトの名無しさん
2011/05/25(水) 11:00:02.95リアルでこんな話されたらミミクソほじほじしてフッって吹きかけるわ。
0191デフォルトの名無しさん
2011/05/25(水) 11:05:43.770192デフォルトの名無しさん
2011/05/25(水) 11:33:28.580193デフォルトの名無しさん
2011/05/25(水) 12:36:00.500194デフォルトの名無しさん
2011/05/25(水) 13:06:03.55そんな人は見たことがない
あなたが演じないとそもそも存在しないのでは
>>193
整形とはそもそもなんぞやという…
Nokogiri::XMLでできなければ、できない要件を添えて報告すると誰かが対案出すかも
0195デフォルトの名無しさん
2011/05/25(水) 13:59:38.80curlのCOOKIEJARみたいな事をするにはRubyで参考になるサイトございませんか?
0196デフォルトの名無しさん
2011/05/25(水) 14:04:36.19Mechanize が大仰だというならなんか httpclient かなんかふつうの使うとか
汎用的なクッキーライブラリはあったかなあ
0197デフォルトの名無しさん
2011/05/25(水) 14:43:55.31あったらあったで便利な気がするけど
>>195
まあレスポンスヘッダ読んで保存して読み込んでリクエストヘッダにセットするだけの簡単なお仕事です
Cookie のしくみを知らないのなら絶対に書けないので、
勉強していただくか Net::HTTP 単体を諦めて>>196のクローラ使うかどっちか
0198デフォルトの名無しさん
2011/05/25(水) 14:44:21.07PythonやPerlやPHPもできる人っている?
0199デフォルトの名無しさん
2011/05/25(水) 14:49:19.45Rubyしかできないってのは珍しいと思う
C/C++なんかはRubyと補完関係にあるし連携も比較的いいから
どちらも使えるって人は多いっぽい
Perlからの移行組も一定数いるはず
Python/PHPはちょっと分からんが、まあいないとは思えない
0200デフォルトの名無しさん
2011/05/25(水) 14:52:16.43必要に迫られてある程度(偏って)できるようになったりする
Ruby+Perl と Ruby+Python は普通にいるだろ
Ruby しか使えない人間なんて Ruby にとってもゴミでしかない
他の言語にも目を向けて視線は高く持ちましょう
0201デフォルトの名無しさん
2011/05/25(水) 15:00:00.50「Rubyで書きにくいからこれは他の言語で書いちゃえ」
ってやってばっかりいるからRubyの書きにくい分野が進展しないのだw
いや、頑張るところはよく考えて配分されるべきだしそれでいいんけどさ
0202デフォルトの名無しさん
2011/05/25(水) 15:01:46.39あとその人の志向によってはHaskellやJavascriptも。
0203デフォルトの名無しさん
2011/05/25(水) 15:08:45.85その中ならPerlは昔それなりに使ってたから書ける(読める自信はあんまりない)
CとDは読み書きできる。
0204デフォルトの名無しさん
2011/05/25(水) 15:15:18.240205デフォルトの名無しさん
2011/05/25(水) 15:18:55.62秀丸マクロで言うとiskeydownのような事をやりたいのです
0206デフォルトの名無しさん
2011/05/25(水) 15:19:39.960207デフォルトの名無しさん
2011/05/25(水) 15:22:15.270208デフォルトの名無しさん
2011/05/25(水) 15:30:46.340209デフォルトの名無しさん
2011/05/25(水) 15:43:06.44httpとかCookieの仕組みというか仕様を知ってるなら簡単
知らないならそれをお勉強してください
0210デフォルトの名無しさん
2011/05/25(水) 15:47:56.110211デフォルトの名無しさん
2011/05/25(水) 15:57:00.600212デフォルトの名無しさん
2011/05/25(水) 16:04:24.97my @hex_strings = unpack("(H2)*", "ABC"); # => ("41", "42", "43")
とするのですが、Rubyの場合はどのようにすればいいのでしょうか?
0213デフォルトの名無しさん
2011/05/25(水) 16:17:33.37サーバから受け取ったものを持続的接続のために同じサーバへ返すだけなら結構なんとかなる
>>212
"ABC".each_char.map{|x| x.unpack('H*')}.flatten
0214uy
2011/05/25(水) 16:18:50.98require 'Win32API'
# require 'dl/win32'
class Win32API
def Win32API.GetKeyState( int )
func = Win32API.new('user32', 'GetKeyState', %w(i), 'i')
func.call( int ) & 0x80
end
end
loop do
sleep 0.01
break if 0 != Win32API.GetKeyState( 0x1B ) # ESCAPE
end
p :end
0215デフォルトの名無しさん
2011/05/25(水) 16:31:03.73Windowsでいいんだよね?
特定のキーが押されているかどうか取得するなら
require 'Win32API'
api = Win32API.new('user32.dll', 'GetKeyState', 'i', 'i')
loop do
"'Enter' is down" if api.call(0x0d) < 0
end
0x0dのところは仮想キーコードでぐぐってくれ。
押されてるときはapi.callの戻り値が負になる。
0216デフォルトの名無しさん
2011/05/25(水) 16:32:10.39�d
0217デフォルトの名無しさん
2011/05/25(水) 16:46:00.49簡単ではないがまあ、ハマるポイントも想定しやすいし
ここに聞きに来る前提なら何とかなる公算は高いかも
0218デフォルトの名無しさん
2011/05/25(水) 17:03:00.35s.each do |line|
puts line
end
で配列を一つずつ出力できましたが
たまにeach("文字列")みたいにs.each("文字列") do |line|な感じのコードを見るのですが
これはどういう場合に使うのですか?
0219デフォルトの名無しさん
2011/05/25(水) 17:03:41.901.9だとマルチバイト文字が1文字として返るので、 each_byte で。
bytes もいいよ。
# coding: utf-8
'ABC'.bytes.map{|x| '%02x' % x}
=> ["41", "42", "43"]
'あいう'.bytes.map{|x| '%02x' % x}
# => ["e3", "81", "82", "e3", "81", "84", "e3", "81", "86"]
# オクテットとバイトは違うというツッコミは勘弁な。
0220デフォルトの名無しさん
2011/05/25(水) 17:07:18.951.8までのString#eachは行単位の処理を行う。
そのとき、行区切り文字を $/ (通常は改行文字を意味する)以外にしたいときに指定する。
1.9 だと s.lines("文字列").each になるのかしらね。
0221デフォルトの名無しさん
2011/05/25(水) 17:10:37.92っていうか、このスレくらいでしか見ないと思う(今年見たのはここが初めて)
だらだら無限に流れてくる、非改行区切りの文字列なんてそうそうあるもんではない
0222デフォルトの名無しさん
2011/05/25(水) 17:12:20.740223デフォルトの名無しさん
2011/05/25(水) 17:24:13.58ファイルとして確保可能なら最後まで1回で read してしまうからなあ
ああそうだよこんなことするから消費メモリ多くなるんだよ Ruby
0224デフォルトの名無しさん
2011/05/25(水) 17:39:01.39COBOLの呪いがかかった固定長文字列とかはあるけど、
普通、別の何かで取り込むだろうしな。
0225デフォルトの名無しさん
2011/05/25(水) 20:20:02.13test(2)とtest(3)では、結果のエンコーディングが違うのですが、何故このような結果になるのでしょうか
#encoding: Windows-31J
# test(1)
s1 = "".encode("utf-8");
s2 = "".encode("utf-8");
p (s1+s2).encoding
s1 += s2; p s1.encoding
# test(2)
s1 = "".encode("utf-8");
s2 = "".encode("Windows-31J");
p (s1+s2).encoding
s1 += s2; p s1.encoding
# test(3)
s1 = "".encode("utf-8");
s2 = "あいうえお";
p (s1+s2).encoding
s1 += s2; p s1.encoding
1.9.2p136の実行結果
------------
#<Encoding:UTF-8>
#<Encoding:UTF-8>
#<Encoding:UTF-8>
#<Encoding:UTF-8>
#<Encoding:Windows-31J>
#<Encoding:Windows-31J>
0226デフォルトの名無しさん
2011/05/25(水) 20:30:36.76えーと、異なるエンコーディングの文字列を「連結」するように指示された場合、
「ベースとなる」ほうの文字エンコーディングが「連結しようとする」文字エンコーディングと互換な場合、
結果のエンコーディングは「連結しようとする」文字エンコーディングに揃えられる
A+B のとき、Aが変換なしでBの文字エンコーディングとみなすことができる場合、結果の文字エンコーディングはBと同じになる
"abc" + "UTF-8な文字列" は、 "abc" の文字エンコーディングに関わらず UTF-8
"abc" + "Windows-31Jな文字列" は、 "abc" の文字エンコーディングに関わらず Windows-31J
"UTF-8な文字列" + "WIndows-31Jな文字列" は、変換なしでは連結できないのでエラー
0227デフォルトの名無しさん
2011/05/25(水) 20:42:39.84空文字列とそうでない文字列の連結では空じゃない文字列のエンコードが優先される。
どちらも空か、どちらも中身がある場合はレシーバ(左の項)のエンコードが優先される。
(どちらも中身があって、互換性のない部分(非ASCII文字)があると例外発生)
たぶんできるだけエンコーディングの変換をせずに文字列としての妥当性を保つための仕様。
#encoding: Windows-31J
# test(4)
s1 = "".encode("utf-8");
s2 = "aiueo";
p (s1+s2).encoding #=>#<Encoding:Windows-31J>
# test(5)
s1 = "aiueo".encode("utf-8");
s2 = "";
p (s1+s2).encoding #=>#<Encoding:UTF-8>
# test(6)
s1 = "aiueo".encode("utf-8");
s2 = "aiueo";
p (s1+s2).encoding #=>#<Encoding:UTF-8>
0228デフォルトの名無しさん
2011/05/25(水) 20:52:04.59irb> s = ""
irb> p s.encoding
#<Encoding:UTF-8>
irb> s = s + 'abc'.encode('Windows-1252')
irb> p s.encoding
#<Encoding:Windows-1252>
irb> s = ""
irb> p s.encoding
#<Encoding:UTF-8>
irb> s << 'abc'.encode('Windows-1252')
irb> p s.encoding
#<Encoding:UTF-8>
str = str + 何か という文字列の再代入記述はオブジェクト的にカッコ悪いということであんまり支持がなかったんだけど、
1.9 で不支持の意図が明確になった
1.8 使ってる人は気をつけよう
0229デフォルトの名無しさん
2011/05/25(水) 20:53:12.14# test(7)
s1 = "aiueo".encode("utf-8");
s2 = "あいうえお";
p (s1+s2).encoding #=>#<Encoding:Windows-31J>
# test(8)
s1 = "あいうえお".encode("utf-8");
s2 = "aiueo";
p (s1+s2).encoding
ということで>>226と>>227どちらもルールとして不十分
・空文字列とそうでない文字列の連結では空でない文字列のエンコードが優先される。
・どちらも空か、どちらも中身があり、相互に互換性がある場合はレシーバ(左の項)のエンコードが優先される。
・どちらか一方に互換性のない文字列がある場合は互換性のない方が優先される
・AとB相互に互換性のない文字列があるとエラー
0230デフォルトの名無しさん
2011/05/25(水) 20:53:24.990231デフォルトの名無しさん
2011/05/25(水) 20:58:48.04Camelliaは評判どうなんだろうね。OpenSSL 1.0では組み込まれたようだけど。
0232デフォルトの名無しさん
2011/05/25(水) 21:00:36.65str = str + 何か
は捨てるオブジェクトが増えるのも問題。
回数の多い繰り返し処理ではやってはいけない。
オブジェクトを出来るだけ捨てないようにすることの大切さは以下
require 'benchmark'
CHAR = '*'
N = 100000
Benchmark.bm(4) do |x|
str = ''
x.report('+ : '){ N.times{ str += '*' } }
str = ''
x.report('<<: '){ N.times{ str << CHAR } }
end
user system total real
+ : 3.578000 2.234000 5.812000 ( 5.921875)
<<: 0.031000 0.000000 0.031000 ( 0.031250)
0233225
2011/05/25(水) 21:12:55.15ありがとうございます
いろいろ勉強になりました
基本は、複数のエンコードが混在する可能性があるなら、右辺値を明示的にエンコンードしてから
結合する必要がある、ということですね。
言われてみれば、まったく当たり前のことですが、試した結果が右辺値が優先される場合がある、
というのにとらわれて、思考停止してました。
でも、詳しいルールが分かったので聞いてみて良かったです
>>についても勉強になりました。
0234デフォルトの名無しさん
2011/05/25(水) 21:13:27.53みなさんどんなテキストエディタを使っていますか?
0235デフォルトの名無しさん
2011/05/25(水) 21:14:39.89目的に合致する暗号化技術を見つけてからそれのRubyバインディングを探す、という手順になるかと思う
0236デフォルトの名無しさん
2011/05/25(水) 21:16:12.36Windowsではxyzzy
LinuxではEmacs
0237デフォルトの名無しさん
2011/05/25(水) 21:33:52.92使い慣れたえでぃたー
前にもあったが、Rubyのために新規アプリ導入とかマジキチ
…まあ、エディタなんて使ったことないですワードでいいですかみたいな人もいそうだけれど
0238デフォルトの名無しさん
2011/05/25(水) 21:35:45.56サクラエディタ
0239uy
2011/05/25(水) 21:51:19.00Ironrubyはともかくエディタ性能はそこそこ
VisualStudioの癖に軽いよ 唯一の欠点は実行後に、フォーカスが出力ウィンドウに取られること、調べたけど設定どうしようもなかった
0240デフォルトの名無しさん
2011/05/25(水) 21:51:42.15Notepad++をおぬぬめぬめぬぬめぬめしとく。
0241デフォルトの名無しさん
2011/05/25(水) 22:30:30.250242デフォルトの名無しさん
2011/05/25(水) 22:37:47.530243デフォルトの名無しさん
2011/05/25(水) 23:00:24.14英語版のWikipediaにcookieの実装がまるまる書いてあるから
それ読めばいんじゃね
0244デフォルトの名無しさん
2011/05/25(水) 23:10:28.94日本語のHTTP Cookieの項目読んでもレスポンスやリクエストのCookie周りの読み方わかんないよね。
RFCか、英語がどうしても嫌ならその日本語訳でも読んでみたら?
0245デフォルトの名無しさん
2011/05/25(水) 23:11:24.020246デフォルトの名無しさん
2011/05/25(水) 23:15:31.76いろいろ積み上げた上の方にある糞みたいな技術なので、一足飛びに読んでもまったく使えない
送ってしまったクッキーが正しいかどうかはこちらからは全くわからないのも面倒
0247デフォルトの名無しさん
2011/05/25(水) 23:25:13.43レスポンスのヘッダに書かれてるSet-Cookieを読んで解析して、
リクエストのヘッダにCookieを書き出すの
0248デフォルトの名無しさん
2011/05/25(水) 23:25:53.46たぶん、このスレの人でも分からないかと
詳しくは
ttp://okwave.jp/qa/q1026034.html
0249デフォルトの名無しさん
2011/05/25(水) 23:29:54.86uri = URI.parse("https://secure.nicovideo.jp/secure/login?site=nicolive_antenna")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(uri.request_uri)
request.set_form_data({:mail=>username, :password=>password})
response = http.request(request)
p response.get_fields('Set-Cookie')
#regex = Regexp.new(/<ticket>(.+?)<\/ticket>/)
#return response.body.scan(regex)[0][0]
end
としてみましたけどクッキーが取れないのです
0250デフォルトの名無しさん
2011/05/25(水) 23:33:17.51たぶん君だけ間違ってる
CGIの話じゃない
クライアントがサーバからCookieを受け取って送り返す話
いや、まあ、全く関係ないタイミングで>>242がCGIの話を始めた可能性は確かにあるんだがw
0251デフォルトの名無しさん
2011/05/25(水) 23:33:28.990252デフォルトの名無しさん
2011/05/25(水) 23:45:37.32Pythonでのコードをお願いします
0253デフォルトの名無しさん
2011/05/26(木) 00:02:27.61何かうまくいかないときに response 全体を読んで確かめないのはおばあちゃんの遺言かなにかですか
0254デフォルトの名無しさん
2011/05/26(木) 00:07:25.03レスポンスヘッダだけ見てたんじゃわからんわな、そりゃ
0255デフォルトの名無しさん
2011/05/26(木) 00:20:58.73送るデータは mail=メールアドレス&password=パスワード だ
0256デフォルトの名無しさん
2011/05/26(木) 00:30:42.65responseをやっても200コードが帰ってきてるのを確認できててbodyに文字列がはいってるのですがcookieが帰ってきませんでした
0257デフォルトの名無しさん
2011/05/26(木) 00:31:17.77API の仕様にそう書いてある
ttp://dic.nicovideo.jp/a/%E3%83%8B%E3%82%B3%E7%94%9F%E3%82%A2%E3%83%A9%E3%83%BC%E3%83%88%28%E6%9C%AC%E5%AE%B6%29%E3%81%AE%E4%BB%95%E6%A7%98
response.body 読め
0258デフォルトの名無しさん
2011/05/26(木) 00:37:53.51まあ、マニュアルはとりあえず読んどけというお話でした
次の方どうぞ
0259デフォルトの名無しさん
2011/05/26(木) 04:29:28.18エラー吐いたときはエラーメッセージ読んでみて、意味が分かればそれに合わせて修正とか、
意味がわからなかった/解決法がわからないときだけは仕方ないからエラーメッセージちゃんとつけて質問するとか、
最近はうるさく言われることは減ったけど、これ守るだけでスキルもつきやすくなるし、
問題の解決もずっとずっと早いよね。
0260デフォルトの名無しさん
2011/05/26(木) 06:32:17.83今回(も)、ステータスコードとログイン失敗には関連性はない
(本来はあるべきなんだが、システム作った人の考え方依存)
ニコニコ動画ではログイン失敗でも HTTP status として "200" を返すので、その情報には1ミリも価値がないw
送信データの結果として何が起こってるかは、メッセージボディを直接読まなければならない
まあ、たぶん、200 以外でエラーを返すとエラーメッセージ読めない人がいるという経験則なんだろうと思う
0261デフォルトの名無しさん
2011/05/26(木) 07:27:31.80これは良いことなのか。
プログラミング初心者がRubyを使っているということなのか。
Rubyユーザーの新規開拓や〜
0262デフォルトの名無しさん
2011/05/26(木) 07:49:08.38ああいうのつくりたい人はC#とかやったほうが速攻で作れるようになりますよー
一応定期的に釘差しておく
0263デフォルトの名無しさん
2011/05/26(木) 07:59:33.25WindowsのRubyなんて、LinuxあたりでRuby使ってた人が代替で使うもんだとばかり思ってた
0264デフォルトの名無しさん
2011/05/26(木) 08:10:27.880265デフォルトの名無しさん
2011/05/26(木) 08:16:05.17逆立ちしながら徒競走選手権があれば褒められたかもしれないが、早く終われよ次の人待ってるんだからよ、と思われてる可能性が大
0266デフォルトの名無しさん
2011/05/26(木) 08:24:16.02Windows用のアプリケーションやツールをRubyで作ると言うことは
微妙にニュアンスが違う
前者はやや苦行かもしれないが
今となっては、後者が苦行と言うことはないだろう
普通に便利だよ、Windows上でRuby
0267デフォルトの名無しさん
2011/05/26(木) 08:25:56.430268デフォルトの名無しさん
2011/05/26(木) 08:51:46.46coding: utf-8 と書いて欲しい
0269デフォルトの名無しさん
2011/05/26(木) 09:04:13.450270デフォルトの名無しさん
2011/05/26(木) 09:58:51.18"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<nicovideo_user_response status=\
live_antenna_数字</ticket>\n</nicovideo_user_response>"
PHP5.3ですがcurlでやるとログインAPIその1用の所でクッキーが取れているのでRubyでも文字列だけでなくクッキーが帰って来るはずなんですが勘違いしてますでしょうか?
function login($param) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://secure.nicovideo.jp/secure/login?site=niconico");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_COOKIEJAR, "./saveCookie.txt);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $param);
curl_exec($ch);
curl_close($ch);
}
login(array('mail'=>'メールアドレス', 'password'=>'パスワード');
クッキーの内容(認証用チケットの数字が当てはまる箇所はありませんでした)
# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This file was generated by libcurl! Edit at your own risk.
secure.nicovideo.jp FALSE /secure/ FALSE 数字 user_session deleted
secure.nicovideo.jp FALSE / FALSE 数字 user_session deleted
.nicovideo.jp TRUE / FALSE 数字 user_session user_session_数字_数字
0271デフォルトの名無しさん
2011/05/26(木) 10:14:58.50https://secure.nicovideo.jp/secure/login?site=niconico が返すのはキー文字列ではなくクッキーだな
API の仕様にそう書いてあ
…仕様どこだ
まあいいや、とにかく API が違うんだから動作も違う
サーバが何を返すかどうかはサーバが決める
0272デフォルトの名無しさん
2011/05/26(木) 10:29:38.02site=niconico と site=nicolive_antenna が返すものは別
Ruby 関係ないシリーズ絶好調だが、外界と無関係に Ruby を使うことはできないのであんま気にしなくていいと思う
0273デフォルトの名無しさん
2011/05/26(木) 11:08:46.440274デフォルトの名無しさん
2011/05/26(木) 11:14:34.520275デフォルトの名無しさん
2011/05/26(木) 11:45:17.46意味的にはencoding=符号化の方法、coding=プログラムを書くこと
だと思ってたから、encodingのほうが合ってるような気がするんだが
0276デフォルトの名無しさん
2011/05/26(木) 11:49:46.67コマンドプロンプトのサポートツールとしては結構役に立つよ
標準コマンドにテキストツールが不足気味だからね
0277デフォルトの名無しさん
2011/05/26(木) 11:51:44.96>>249
この人はクッキーを返さない API の動作を不審に思って、クッキーを返す API を curl から実行してレスしている
そりゃ API 違うから動作も違うじゃん? としか言えない
0278デフォルトの名無しさん
2011/05/26(木) 11:52:12.980279デフォルトの名無しさん
2011/05/26(木) 11:55:57.36niconicoもnicolive_antennaも同じだけど?
0280デフォルトの名無しさん
2011/05/26(木) 12:02:10.29# encoding: utf-8
# coding: utf-8
のどれかを推奨
-*- をつけると Emacs さんが自分向けだと思ってコマンド解釈開始するので、その場合は conding でないと困る
# -*- encoding: utf-8 -*-
はファイル開くときに Emacs さんが毎回文句言うのであまりよくない
ああ、vim くんはなんかこうオリジナリティ(苦笑)のある書き方があったはず
0281デフォルトの名無しさん
2011/05/26(木) 12:03:07.860282デフォルトの名無しさん
2011/05/26(木) 12:06:35.66Ruby「を」選択する理由にはならない
RubyからGUIを操作できることは、RubyでGUIアプリケーションを作ることを初心者に勧めるのに足ることとイコールじゃない
0283デフォルトの名無しさん
2011/05/26(木) 12:15:33.64Rubyに慣れた人がウィンドウが欲しいなと思ったとして、Tkしか持ってねえ状態にならずに済んでるということは素晴らしい
でも、「ぷろぐらむってわーどみたいなやつ」な人の制作ご希望に添えるものじゃないよな
別物別物
0284デフォルトの名無しさん
2011/05/26(木) 12:22:16.09単に、Tkから抜け出せなかっただけで
ま、GUIの話はGUIスレでどうぞ
0285デフォルトの名無しさん
2011/05/26(木) 12:22:47.220286デフォルトの名無しさん
2011/05/26(木) 12:32:26.69まあだいたいなんとかなる
なんとかならなかった時はその時別個対応で
irb> require 'open-uri'
irb> puts open("http://b.hatena.ne.jp/entrylist?sort=hot&mode=rss").read.scan(/title>(.+?)<\/title>/)
はてなブックマーク - 新着エントリー
HTML5、W3C で Last Call (最終草案) へ | WWW WATCH
一人で仕事をする上で学んだ5つの事*ホームページを作る人のネタ帳
セールスフォース・ドットコム、東京データセンターを11月に稼働開始。利用料金は変わらず − Publickey
…
0288デフォルトの名無しさん
2011/05/26(木) 12:47:11.410289デフォルトの名無しさん
2011/05/26(木) 12:51:37.810290デフォルトの名無しさん
2011/05/26(木) 12:51:56.32いや、動くだろ?
0291デフォルトの名無しさん
2011/05/26(木) 12:53:30.09irb> require 'open-uri'; require 'kconv'
irb> puts open("http://b.hatena.ne.jp/entrylist?sort=hot&mode=rss").read.toutf8.scan(/<title>(.+?)<\/title>/).flatten
Windowsのirbの人は真ん中へんにあるtoutf8をtosjisにしてね!
0292デフォルトの名無しさん
2011/05/26(木) 12:58:21.35javaでいうtryとcatchってことですか?
0293デフォルトの名無しさん
2011/05/26(木) 12:59:18.710294デフォルトの名無しさん
2011/05/26(木) 13:00:09.03実は、開発版先っちょのtrunkは1.9で全く動かないというわけではない
…いや、めんどくさいし動かないでいいや
0295デフォルトの名無しさん
2011/05/26(木) 13:11:01.28Ruby界では継承をアホみたいに嫌ってるやつもいるし、せっかくのオブジェクト指向スクリプト言語が台無し
0296デフォルトの名無しさん
2011/05/26(木) 13:14:57.93http://hibari.2ch.net/test/read.cgi/tech/1269609576/
0297デフォルトの名無しさん
2011/05/26(木) 13:17:37.05自分で立てたスレの紹介?
0298デフォルトの名無しさん
2011/05/26(木) 13:20:48.83for (i=2;i<5;i++) printf("%d", i)
これをRubyで書き直すとどうなるの?
0299デフォルトの名無しさん
2011/05/26(木) 13:22:30.23その通り
try{ 〜 }catch(クラス名 変数名){ 〜 }finally{ 〜 } がそれぞれ
begin 〜 rescue クラス名 => 変数名 〜 ensure 〜 end に対応するよ
0300デフォルトの名無しさん
2011/05/26(木) 13:23:42.08(2...5).each{|i| printf("%d", i) }
0301デフォルトの名無しさん
2011/05/26(木) 13:27:29.56まじrubyきめえ
0302デフォルトの名無しさん
2011/05/26(木) 13:28:10.02Rubyは公式ではWindows版の保守を全くしておらず、基本的にUnix系OS向けとなってる
出回ってるWindows版Rubyは、有志で多少の手直しをしてコンパイルしたもの
Windows環境限定のことには弱く、逆にUnix系限定のことには比較的強い傾向がある
詳細には俺も把握してないんで調べて欲しい
0303デフォルトの名無しさん
2011/05/26(木) 13:30:52.82ありがとうございます
(2...5)と(2..5)で挙動が違うのかきのせいでごわすか?
0304デフォルトの名無しさん
2011/05/26(木) 13:31:14.89なんでそんなこと思っちゃったのか気になるな
0305デフォルトの名無しさん
2011/05/26(木) 13:31:30.26for文の書き方や挙動はいくつかの流派(みたいなもの)に分かれます
例えば同じALGOL系言語ですらC系とPascalなどでは全然違うものです
Rubyだけ違う、なんてワケではないですよ
0306デフォルトの名無しさん
2011/05/26(木) 13:34:31.960307デフォルトの名無しさん
2011/05/26(木) 13:34:52.69(2..5)というピリオド2つの形式は終端を含み
(2...5)というピリオド3つの形式は終端を含みません
>>304
ん〜…ちと語弊はあるか
でも強くはないだろ?
0308デフォルトの名無しさん
2011/05/26(木) 13:36:48.61いつからprintが出来るようになったのか分かる人いますか?
0309デフォルトの名無しさん
2011/05/26(木) 13:39:07.46rssってライブラリが便利そうだったのでこれで書いてみました(ぇ
require 'rss'
rss = nil
rss_source = 'http://weather.livedoor.com/forecast/rss/11/60.xml'
begin
rss = RSS::Parser.parse(rss_source)
rescue RSS::InvalidRSSError
rss = RSS::Parser.parse(rss_source, false)
end
質問なんですがitem要素の数を数えるにはどうしたらいいのですか?
0310デフォルトの名無しさん
2011/05/26(木) 13:59:44.45少なくとも俺がRubyを知った1.4では既に出来るようになってたと思うからそれより昔だと思うが…
0311デフォルトの名無しさん
2011/05/26(木) 13:59:56.40=> Array
0312デフォルトの名無しさん
2011/05/26(木) 14:11:02.07どこか、分かりやすく解説してるサイトなどありますでしょうか。
0313デフォルトの名無しさん
2011/05/26(木) 14:15:20.600314デフォルトの名無しさん
2011/05/26(木) 14:16:54.88おまけに日本では流行ってないと言われるPythonのほうが参考になるサイトが多いという
0315デフォルトの名無しさん
2011/05/26(木) 14:30:55.742.upto(4){|i| print i}
見かけ上、なにがなんでも「5未満」でなければならず、printf の書式が必要な場合は>>300
0316デフォルトの名無しさん
2011/05/26(木) 14:33:44.60>>160
0317デフォルトの名無しさん
2011/05/26(木) 14:36:20.47>Rubyは日本では流行ってるって言うけど
別にそれほど「流行ってない」です
またあなたメディアの言うこと鵜呑みにして騙されちゃいましたね
0318デフォルトの名無しさん
2011/05/26(木) 14:40:49.32大雑把には間違ってない(大雑把すぎるが)
UNIX系OS上では意図したとおりに動くけど、Windows上では意図したとおり動くとは限らない
その原因は様々だけど、同じように動かすのには多大な努力が必要な事実は変わらない
0319デフォルトの名無しさん
2011/05/26(木) 14:48:05.98これをどうやって使うと要素を数えられるのですか?
0320デフォルトの名無しさん
2011/05/26(木) 14:48:27.84他の言語の for 文/式 は、指定回数繰り返すという動作のみ必要であるということがけっこうある
そう言う場合、Ruby では整数クラスのメソッドを用いて、回数繰り返しのみを行う
整数クラスにそんなメソッドがくっついているのはキモいという指摘は時々見るし実際のところそう思う
0321デフォルトの名無しさん
2011/05/26(木) 14:55:35.59require 'rubygems'
require 'nokogiri'
uri = URI.parse('http://weather.livedoor.com/forecast/rss/11/60.xml')
doc = Nokogiri::XML.parse(uri.read)
p doc.search('item').size #=> 8
8個だそうです
0322デフォルトの名無しさん
2011/05/26(木) 14:59:30.28C#で
3.Times(_=> Console.WriteLine("やっほー"));
とかやったりする俺が通りますよ。
0323デフォルトの名無しさん
2011/05/26(木) 15:03:25.08require 'rubygems'
require 'nokogiri'
require 'open-uri'
uri = URI.parse('http://weather.livedoor.com/forecast/rss/11/60.xml')
doc = Nokogiri::XML.parse(uri.read)
p doc.search('item').size
doc.search('item').each{|i| puts i.at('description').inner_text}
0324デフォルトの名無しさん
2011/05/26(木) 15:05:22.05やっぱり文字列としてrssを取得してそれをrexmlでパースしないと無理でしたか
rssライブラリは便利だなあと思ってwhileでitemの数分回して表示させたかったのですがその方法に乗り換えたいと思います
0325デフォルトの名無しさん
2011/05/26(木) 15:10:51.94> Rubyは公式ではWindows版の保守を全くしておらず、基本的にUnix系OS向けとなってる
間違い。
公式が「サポート」しているのは
Debian GNU/Linux 4.0 on IA32
プラットフォームのみ。
このプラットフォームでテストがエラーになる場合リリースされない。
Windows系はそれより一段落ちていくつかテストがエラーとなってもリリースが許容される。
その他のUNIX系OSは更に一段落ちて、テストで大量にエラーがあったとしてもリリースを左右しない扱いか、
全くのサポート外という位置付け。
細かい定義は
ttp://redmine.ruby-lang.org/projects/ruby-19/wiki/SupportedPlatforms
参照。
0326uy
2011/05/26(木) 15:47:15.26b.push 3
b.each do | m |
# b.push 2 # mugen loop
end
a = Hash.new
a.store:ss,3
a.each do | m |
a.store:tt,6 # `store': can't add a new key into hash during iteration (RuntimeError)
end
これハッシュはエラーでてるけど配列だとエラーでないんだけどいいの? なんなの?
0327デフォルトの名無しさん
2011/05/26(木) 15:50:08.150328デフォルトの名無しさん
2011/05/26(木) 15:52:09.93だから、rss.itemsが配列なんだからそのまま rss.items.size でいいだろうが。
0329デフォルトの名無しさん
2011/05/26(木) 16:21:07.87スレ違い
0330デフォルトの名無しさん
2011/05/26(木) 17:57:05.22言語によっては、if文すらあたかもブール型のメソッドかのように書くものもあるんだぜ
0331デフォルトの名無しさん
2011/05/26(木) 18:04:12.72戻り値が真偽値依存なんだからそれほど問題なかんべ
整数オブジェクトのインスタンスメソッドにループ処理メソッドが入ってるというのは若干奇妙と言えなくもないが
まあ今更どうしようもないし別にいいけどさ
0332デフォルトの名無しさん
2011/05/26(木) 18:46:56.61普通に文字として取り出す方法ってどう書けばわかりやすいですか?
対応はRuby1.8.7以降で構いません
0333デフォルトの名無しさん
2011/05/26(木) 19:19:39.480334デフォルトの名無しさん
2011/05/26(木) 19:19:50.26String#[]
ruby -e "p 'aiueo'[0] "
"a"
0335デフォルトの名無しさん
2011/05/26(木) 19:21:25.19Rubyでは "あ" (UTF-8) みたいなのも「アスキー互換」なのだが、
1.8 で "あ"[0] は1バイト目が出てきてしまう。
0336デフォルトの名無しさん
2011/05/26(木) 19:23:56.180337デフォルトの名無しさん
2011/05/26(木) 19:25:11.38p rss.channel.item.lengthって書いてました
p rss.channel.items.sizeって書いたら取れました
でも天気は7日分+広告1個で合計8にならないといけないのに9になりました
あとrssにはitemsという要素がないんのですが酔うその数を数えるときは複数形にするというのがRubyなのでしょうね
0338デフォルトの名無しさん
2011/05/26(木) 19:25:24.220339デフォルトの名無しさん
2011/05/26(木) 19:34:35.05ascii_compatible? が true だとかそういうのですかね
っていうか普通にアスキーの範囲ってことでいい?
0340デフォルトの名無しさん
2011/05/26(木) 19:58:39.94http://jp.rubyist.net/magazine/?0025-Ruby19_m17n#l29
0341デフォルトの名無しさん
2011/05/26(木) 20:03:54.58rss.channelで返ってくるオブジェクトに要素の配列か何かを返すitemsというメソッドが用意されてるだけ。
ライブラリ作成者がそういう名前をつけただけ。
「要素の数を数えるときは複数形にする」なんてルールはRubyにはない。
0342デフォルトの名無しさん
2011/05/26(木) 20:14:08.29了解です。
0343デフォルトの名無しさん
2011/05/26(木) 21:54:06.02for ($i=0; $i<10; $i++) {
print $i;
}
while ($i < 10) {
print $i;
}
switch ($n) {
case 1:
print 1;
break;
case 2:
print 2:
break;
default:
print 0;
}
try〜catch
0344デフォルトの名無しさん
2011/05/26(木) 21:58:26.360345デフォルトの名無しさん
2011/05/26(木) 21:59:01.59htt://dobon.net/vb/dotnet/form/index.html
0346デフォルトの名無しさん
2011/05/26(木) 22:01:40.12% ruby -v -e 'puts "htt://dobon.net/vb/dotnet/form/index.html".sub(/htt/, "ttp")'
ruby 1.9.2p180 (2011-02-18 revision 30909) [i686-linux]
ttp://dobon.net/vb/dotnet/form/index.html
0347デフォルトの名無しさん
2011/05/26(木) 22:12:33.10改行があってもいい場合、print は puts で書くことが多いのでとりあえず puts で書く
で
[9要素ある配列].each{|x| puts x} # 最も一般的、数値をインクリメントして配列を単純ループ処理することはまずない
[9要素ある配列].each_with_index{|x, i| puts "#{i}要素目は#{x}です"} # i は 0 から 9 まで
0.upto(9){|i| puts i} # 0から9まで
(0...10).each{|i| puts i} # 0から10の一歩手前まで
9.times{|x| puts x} # 9回
好きなの選べ
case x
when 1
puts "1!"
when 2
puts "2!"
else
puts "0!"
end
begin
some_process
rescue SomeError => ex
# 例外オブジェクト ex でなにかする
end
0348デフォルトの名無しさん
2011/05/26(木) 22:16:45.97while i < 0
print i
end
case n
when 1
print 1
when 2
print 2
else
print 0
end
# Cのswitch文と違ってbreakしなかったらn=1のとき1と2が両方出力されるとかはない
for文はそのまま相当するものはないので、イテレータや制御構文調べてやりたいことに応じて使い分け。単純繰り返しなら
10.times{|i| print i }
とか
for i in 0...10
print i
end
とか
(0...10).each {|i| print i}
とか
try - catch - finallyは
begin - rescue(例外キャッチ) - else(例外が発生しなかった場合) - ensure(どちらでも必ず実行) - end
elseやensureは省略可。その他rescue修飾詞なんてのもある
自分で例外上げるときはraise
0349デフォルトの名無しさん
2011/05/26(木) 22:21:02.40たいてい Array#each とかで、たまに Integer#time 使う程度
0350デフォルトの名無しさん
2011/05/26(木) 22:21:36.59>>348
温かい思いやりに感謝する
0351デフォルトの名無しさん
2011/05/26(木) 22:27:07.05うん、だから>>343みたいな例を出されると実はちょっとだけ困る
配列操作するとか、もう少し実際的な例だと違いが出せてほんとは嬉しい
0352デフォルトの名無しさん
2011/05/26(木) 22:29:25.570353デフォルトの名無しさん
2011/05/26(木) 22:30:29.350354デフォルトの名無しさん
2011/05/26(木) 22:31:02.700355デフォルトの名無しさん
2011/05/26(木) 22:31:05.66そんな存在なのに予約語を2つも使うなんてけしからん。
0356デフォルトの名無しさん
2011/05/26(木) 22:32:28.50そういうときはマニュアルのどのページをみたらよいですか?
0357デフォルトの名無しさん
2011/05/26(木) 22:33:20.85for は何やってるのか正直さっぱりわからないし、この数年書いた記憶がない
0358デフォルトの名無しさん
2011/05/26(木) 22:34:21.43Random.rand (10..54)が使えるらしいよ!
0359デフォルトの名無しさん
2011/05/26(木) 22:35:45.08def FOR(prelude, cond, epilogue)
eval prelude
while eval(cond)
yield
eval epilogue
end
end
FOR("$i=0", "$i<10", "$i+=1") {
print $i
}
0360デフォルトの名無しさん
2011/05/26(木) 22:35:51.1410+rand(45)
乱数とかで適当に調べればいいんじゃないかな
0361デフォルトの名無しさん
2011/05/26(木) 22:38:09.42クラスメソッドを::で呼べる機能も外して高速化して欲しい
0362デフォルトの名無しさん
2011/05/26(木) 22:39:04.74乱数ならrand(n)で 0からn-1の乱数なので、
rand(45) + 10
で10から54
def orerand(n, m)
if n < m
rand(m-n+1) + n
else
rand (n-m+ 1) + m
end
end
とかやればn以上m以下(またはm以上n以下)の乱数吐くよ
マニュアルでいうと組み込み関数とか、1.9ならRandomクラスも見てみるといい。
0363デフォルトの名無しさん
2011/05/26(木) 22:39:42.62100000.times.map {rand(54-10+1) + 10}.minmax
=> [10, 54]
まぁ、どの言語でもそんなに基本的なことは変わらぬ。
0364デフォルトの名無しさん
2011/05/26(木) 22:40:11.1110から54までの(整数の)乱数なら
(10..54).to_a.sample
とかどうかな?
ttp://doc.ruby-lang.org/ja/1.9.2/class/Array.html
0365デフォルトの名無しさん
2011/05/26(木) 22:40:34.18epilogueならprologueにしないと。
0366デフォルトの名無しさん
2011/05/26(木) 22:43:09.0729
イエスアイガッチュ
>>360がおそらくいちばん無難
rand(44) では44が永遠に出ないことに注意
0367デフォルトの名無しさん
2011/05/26(木) 22:44:56.20きゃ…はずかしい><
0368デフォルトの名無しさん
2011/05/26(木) 22:45:04.901.9.2でも先にrandom = Random.newとかしとけば
random.rand(10..54)できるよね
0369uy
2011/05/26(木) 23:55:02.91lm = lambda do | a |
n = a.to_a.shuffle
i = 0
lambda do
n[ i=((i+1)%n.size) ]
end
end
n = lm.call 10..54
puts n.call
puts n.call
puts n.call
0370デフォルトの名無しさん
2011/05/27(金) 00:01:37.480371デフォルトの名無しさん
2011/05/27(金) 00:03:09.880372デフォルトの名無しさん
2011/05/27(金) 00:05:43.020373デフォルトの名無しさん
2011/05/27(金) 00:23:18.340374デフォルトの名無しさん
2011/05/27(金) 00:27:57.870375デフォルトの名無しさん
2011/05/27(金) 00:30:42.81ルビーちょっと本をみてみたけど、楽しそうだ・・・
0376uy
2011/05/27(金) 00:34:39.29p a, b, c
end
majiyabai ruby majiyabai koresugoiyone
0377デフォルトの名無しさん
2011/05/27(金) 00:39:13.85かなり幅広い
RoR開発時のDHHは20代半ば
今のティム・ブレイは55歳
0378デフォルトの名無しさん
2011/05/27(金) 00:44:41.55中二コミッタもいるね。
0379デフォルトの名無しさん
2011/05/27(金) 00:57:44.500380デフォルトの名無しさん
2011/05/27(金) 01:05:52.950381デフォルトの名無しさん
2011/05/27(金) 01:19:32.51SUITS = [:SPADE, :HEART, :CLUB, :DIAMOND]
という配列があるとして。これを元に
foundation = {
:SPADE => [],
:HEART => [],
:CLUB => [],
:DIAMOND => [],
}
というハッシュを作りたいのですが、何か簡潔な方法はないでしょうか
もろちん各配列はそれぞれ別々のobject_idを持ってて欲しいです。
今のところ、2行に分けて
foundation = {}
SUITS.each{|s| foundation[s] = [] }
という感じちゃってます。
無理して1文に詰め込むより、こっちのが見やすいんかなと。
0382デフォルトの名無しさん
2011/05/27(金) 01:23:29.500383デフォルトの名無しさん
2011/05/27(金) 01:25:40.95その二行がいちばん簡潔と思う
0384デフォルトの名無しさん
2011/05/27(金) 01:38:23.76Rails3とmongodbの組み合わせはいいね
まだ良くわからんのでまたお邪魔します
0385デフォルトの名無しさん
2011/05/27(金) 01:40:55.57こんなのはダメかな?ダメだよね…
fundation = SUITS.inject({}) { |h, s| h.tap { |x| x[s] = [] } }
0386デフォルトの名無しさん
2011/05/27(金) 01:47:00.10ハッシュの中身なんて必要なときに作れば良い。
foundation[:SPADE] ||= []
0387デフォルトの名無しさん
2011/05/27(金) 01:58:24.12それなら Hash.new { |h, k| h[k] = [] } でいいような…
0388デフォルトの名無しさん
2011/05/27(金) 03:56:37.220389uy
2011/05/27(金) 04:18:18.55p Hash[SUITS.map do|m|[m,[]]end]
p(SUITS.inject({})do|a,m|a[m]=[];a end)
0390uy
2011/05/27(金) 04:30:17.40p eval(%!{#{(SUITS*"=>[],")}}!)
0391デフォルトの名無しさん
2011/05/27(金) 04:31:42.340392デフォルトの名無しさん
2011/05/27(金) 04:51:47.990393デフォルトの名無しさん
2011/05/27(金) 04:57:25.85簡潔だが、とりたてて可読性が良いというほどではないなあ
関数型言語屋には読みやすいのかも分からん
0394デフォルトの名無しさん
2011/05/27(金) 06:07:05.730395デフォルトの名無しさん
2011/05/27(金) 07:44:52.67あと病院いったほうがいいぞ。
頭のな。
0396デフォルトの名無しさん
2011/05/27(金) 08:01:53.28うむ
一般論として、inject で 1行にまとめてもあまりいいことはない
あれは変数定義をまとめて表記してるだけ(という振り回された使い方が多い)
inject や any? で処理をまとめると、わかりにくくてあとあと問題になったりする
0397デフォルトの名無しさん
2011/05/27(金) 10:10:45.68可読性がよくないし簡潔でもないな。
0398デフォルトの名無しさん
2011/05/27(金) 10:17:15.420399デフォルトの名無しさん
2011/05/27(金) 11:36:20.11一年前のソース見たらスパゲティソースで吹いた
気付かないうちに上達してましt
0400デフォルトの名無しさん
2011/05/27(金) 11:41:27.56ヒント:自で始まって演で終わる言葉
0401デフォルトの名無しさん
2011/05/27(金) 11:52:23.210402394
2011/05/27(金) 12:39:24.55hash = [:s, :h, :d, :c].each_with_object({}) {|k, h| h[k] = [] }
0403デフォルトの名無しさん
2011/05/27(金) 13:39:38.340404デフォルトの名無しさん
2011/05/27(金) 13:47:11.860405デフォルトの名無しさん
2011/05/27(金) 13:55:45.690406デフォルトの名無しさん
2011/05/27(金) 14:20:46.44本買え本
0407デフォルトの名無しさん
2011/05/27(金) 14:25:57.62ここじゃダメかな?
ttp://www.namaraii.com/rubytips/
0408デフォルトの名無しさん
2011/05/27(金) 14:43:47.760409デフォルトの名無しさん
2011/05/27(金) 15:44:26.610410デフォルトの名無しさん
2011/05/27(金) 15:51:12.270411381
2011/05/27(金) 16:01:32.05相談に乗ってくれてありがとうございました
0413デフォルトの名無しさん
2011/05/27(金) 16:13:19.92今から1.8やる意味ってないよねあんま
0414デフォルトの名無しさん
2011/05/27(金) 16:19:00.12>来年2.0出るんだよね
たぶん出ないし、出たとしても数年は使いものにならないと思う
1.8.7 自体に問題はないよ
1.9.2 との差分もそれほど多いわけじゃないし、
1.9.2 だからといって劇的に便利になって記法が特殊になって 1.8.7 の知識が通用しなくなるとかそういうわけじゃない
ただ、Rails をやろうとしているのなら1.8.7 しか選択肢がない
0416デフォルトの名無しさん
2011/05/27(金) 16:21:27.550417uy
2011/05/27(金) 16:22:20.231.8をメインでやるにしても、両方触った上でやったほうがいいよ
そうしないと非互換コードをかいてしまう
0418デフォルトの名無しさん
2011/05/27(金) 16:23:00.31あの宿敵C言語スレに俺たちは勝ったんだ
0419デフォルトの名無しさん
2011/05/27(金) 16:24:45.10あんなものまだ表示してるの
なんの意味もないのに…
0420デフォルトの名無しさん
2011/05/27(金) 16:26:24.00レスの内容はどうでもいいという人がよく気にする
どうでもいいというか、理解できないという人も、これしか話すことがなかったりする
0421デフォルトの名無しさん
2011/05/27(金) 17:02:50.79っていうのはできますか?
0422デフォルトの名無しさん
2011/05/27(金) 17:10:43.62a = a + "a"
a = a + "b"
これってaの頭にはnilが入ったままになりますか?
0423デフォルトの名無しさん
2011/05/27(金) 17:18:59.170424uy
2011/05/27(金) 17:20:56.30a = a ? (a+"a") : "a"
a = a ? (a+"b") : "b"
p a
a = ""
a += "c"
a += "d"
p a
a = ""
a << "e"
a << "f"
p a
a= ""
a ="#{a}g"
a ="#{a}h"
p a
0425デフォルトの名無しさん
2011/05/27(金) 18:05:30.96それがシェルから可能なら、同じことを system(' ') で書けばいい
ということで、Ruby 関係なく system("chrome.exeへのパス" "URL")
もし chrome が標準のWeb ブラウザになっているなら、 system("start #{URL}") でも動作するかもしれない
どっちもコマンドプロンプトのお話
>>422
…それくらいは自分で試そうよ
nil + "a" をやろうとして、nil には + メソッドがないから NoMethodError になる
nil かもしれないオブジェクトに + を行なうこと自体があまりよくないし、
文字列に流用されて + メソッドを使われるかもしれない変数名を nil に使うのもあまりよくない
0426デフォルトの名無しさん
2011/05/27(金) 18:10:00.27使用オブジェクトがわかってて、そのオブジェクトのメソッドが呼ばれることがわかっているなら、
そのオブジェクトの初期値を指定しておけばいい
文字列なら ''、数値なら 0
0427デフォルトの名無しさん
2011/05/27(金) 18:29:09.19str = str + "a"
とかになるからな
そりゃ str の最初の値は nil ではなく "" だ
0428デフォルトの名無しさん
2011/05/27(金) 18:33:14.50system("chrome.exeへのパス", "URL")
0429デフォルトの名無しさん
2011/05/27(金) 19:16:30.17url = 'http://www.google.co.jp/images/nav_logo72.png'
filename = File.basename(url)
open(filename, 'wb') do |file|
file.puts Net::HTTP.get_response(URI.parse(url)).body
end
これを実行するとgoogleのロゴをダウンロードする所まで書きました
スクリプトを実行した箇所に画像が保存されてしまいます
スクリプトの実行フォルダに関わらず、常に指定したフォルダC:\image\に保存する方法をご教示おねがいします
0430デフォルトの名無しさん
2011/05/27(金) 19:33:53.50一度もプログラム言語に触れたことがない場合、クラスやメソッドの解説を読むだけではまず歯がたたない
0431デフォルトの名無しさん
2011/05/27(金) 19:35:09.72そりゃあopenにただファイル名渡せばカレントディレクトリに吐くよ。
パス指定したいなら、
open("C:\\image\\#{filename}", 'wb') do |file|
とかすりゃいいんじゃないかしら
Windows用Rubyのパス区切りって\でいいんだっけ
0432デフォルトの名無しさん
2011/05/27(金) 19:38:52.67open は rubyfilepath を受けとるので、OS に関わらず / だけでよい
"C:/image/#{filename}"
0433デフォルトの名無しさん
2011/05/27(金) 19:44:22.33p "#{a = 1; b = 2; c = a + b; c} #{d = 1
e = 2
d + e}" #=>"3 3"
p a #=> 1
0434デフォルトの名無しさん
2011/05/27(金) 19:47:00.36埋め込み開始文字と埋め込み終了文字がたまたまブロックと同じなだけ
まあ紛らわしいとは思う
0435デフォルトの名無しさん
2011/05/27(金) 20:17:34.31バイナリや設定の外部ファイルをputsするのはダメ
printとかにしないと末尾に改行がくっつくぞ
ブラウザで保存した画像とファイルサイズ比べてみ
Rubyでputsしたもののほうが1バイトほど大きいはず
0436uy
2011/05/27(金) 20:41:09.97"wb"でオープンしたときはputsなくしちゃっていいんじゃないの
バイナリをputsで書き込まなきゃいけない状況なんてなくね
0437デフォルトの名無しさん
2011/05/27(金) 20:46:16.130438デフォルトの名無しさん
2011/05/27(金) 20:56:50.02ぶっちゃけ画像の場合は末尾改行は無視されることが多いので放置でもよい
もう一度Rubyで読み込んでchompして再度書き込むのが妥当
String#chompは「改行っぽい文字」が文字列末尾にあった場合にのみそれを取り除く
0439デフォルトの名無しさん
2011/05/27(金) 21:40:55.710440デフォルトの名無しさん
2011/05/27(金) 21:42:59.70他のプログラミング言語を何か一通り習得してそれなりのものが書けるのか
それともプログラミング自体はじめてでプログラミングの入門にRubyをやるのか
0441デフォルトの名無しさん
2011/05/27(金) 21:48:16.250442デフォルトの名無しさん
2011/05/27(金) 21:52:37.89経験があると言われてもどれくらいかわかんないと困る。
まあ無難にたのしいRuby 第3版とRubyレシピブック第3版あたり読んどくといいんじゃないかな。
それからリファレンスマニュアルをひととおり読んでみるといい。
0443デフォルトの名無しさん
2011/05/27(金) 22:06:18.850444デフォルトの名無しさん
2011/05/27(金) 22:23:18.270445デフォルトの名無しさん
2011/05/27(金) 22:25:15.630446デフォルトの名無しさん
2011/05/27(金) 22:35:51.66tzinfoを別途用意しないとTime.localtime("Asia/Tokyo")みたいに任意のタイムゾーンを設定できないってことですか?
0447デフォルトの名無しさん
2011/05/27(金) 22:43:41.36わりと更新あるしな。
0448デフォルトの名無しさん
2011/05/27(金) 22:50:44.08異なるTime Zoneの日時を作ることが出来るが、指定できるのは
24を分母とするRational。
0449デフォルトの名無しさん
2011/05/27(金) 22:57:32.46GMTから時間をずらして、そこから夏時間を計算して時刻を調節して出力する
って方法しかないですね
0450デフォルトの名無しさん
2011/05/27(金) 23:06:28.65表示時にオフセットかませることになるでしょうなー。
0451デフォルトの名無しさん
2011/05/27(金) 23:53:59.59文字列の中に@という記号1文字が含まれるかチェックする場合って以下のでいいですか?
それともmatchやscanを使ったほうがいいですか?
if /@/ =~ str
p "含まれてます"
else
p "含まれてません"
end
0452デフォルトの名無しさん
2011/05/28(土) 00:02:05.97それでいいよ
それだとマッチ位置とかさっぱりわからないが、必要ないことも多いし
0453デフォルトの名無しさん
2011/05/28(土) 00:08:39.40含まれてるかどうかだけチェックしたい場合はこれのほうがmatchやscanよりも速度は速いですか?
0454デフォルトの名無しさん
2011/05/28(土) 00:09:44.940455デフォルトの名無しさん
2011/05/28(土) 00:12:12.371回マッチしたらそのまま成功として諦めるので、
マッチするものを文字列末尾まで探して配列にするscanやmatchよりはリクツ的には速い
0456デフォルトの名無しさん
2011/05/28(土) 00:14:50.04「文字列の中に@という記号1文字が含まれるか」をそのまま書くとこうなると思う
if str.include?("@")
0457デフォルトの名無しさん
2011/05/28(土) 00:16:45.62埋め込みのないふつうの正規表現はじゅうぶん速いし正規表現で書いたほうが潰しが効くので、素直に正規表現にしとけ
一応、String#include? というのがあるにはあって、これは正規表現よりも速いことはあるんだが
0458デフォルトの名無しさん
2011/05/28(土) 00:27:35.79何回試しても似たような結果。
require 'benchmark'
s1 = 'nantoka@kantoka'
s2 = 'nantokakantoka'
n = 100000
c = '@'
r = /@/
Benchmark.bm(10) do |x|
x.report('include?:'){ n.times{s1.include?(c); s2.include?(c)} }
x.report('s.match :'){ n.times{s1.match(r); s2.match(r)} }
x.report('r.match :'){ n.times{r.match(s1); r.match(s2)} }
x.report('=~ :'){ n.times{r =~ s1; r =~ s2} }
end
user system total real
include?: 0.062000 0.000000 0.062000 ( 0.062500)
s.match : 0.422000 0.016000 0.438000 ( 0.437500)
r.match : 0.375000 0.000000 0.375000 ( 0.375000)
=~ : 0.297000 0.000000 0.297000 ( 0.312500)
0459デフォルトの名無しさん
2011/05/28(土) 00:31:23.14それは不誠実だ
充分に長い文字列において
・ 最初のほうにある
・ 真ん中へんにある
・ 最後のほうにある
・ 存在しない
のパターンを試すべき
0460デフォルトの名無しさん
2011/05/28(土) 00:33:17.85すいませんif 〜thenのthenって書かなくても大丈夫なんですか?
僕が勉強してるサイトではthenが書いてあります
0461デフォルトの名無しさん
2011/05/28(土) 00:34:31.67どれも正規表現にとって不利な条件じゃないですかやだー!
0462デフォルトの名無しさん
2011/05/28(土) 00:36:50.47then を書かない場合は改行を書かなければならない
then を書いた場合は改行は不要
puts if /@/ =~ str then "あったよ" else "ないよ" end
then を書かない人は半々くらい
個人的には書いたほうがいいと思う
0463デフォルトの名無しさん
2011/05/28(土) 00:38:14.95そうでしたか。知識に入れておきます
0464デフォルトの名無しさん
2011/05/28(土) 00:41:59.73素直にTkで書くか…
0465デフォルトの名無しさん
2011/05/28(土) 00:50:06.93細かいなあ。
user system total real
include|beg: 0.015000 0.000000 0.015000 ( 0.015625)
r.match|beg: 0.172000 0.000000 0.172000 ( 0.171875)
s.match|beg: 0.188000 0.000000 0.188000 ( 0.187500)
r =~ s |beg: 0.031000 0.000000 0.031000 ( 0.031250)
s =~ r |beg: 0.047000 0.000000 0.047000 ( 0.046875)
include|mid: 3.609000 0.000000 3.609000 ( 3.640625)
r.match|mid: 12.625000 0.000000 12.625000 ( 12.781250)
s.match|mid: 12.640000 0.000000 12.640000 ( 12.828125)
r =~ s |mid: 12.454000 0.000000 12.454000 ( 12.687500)
s =~ r |mid: 12.484000 0.000000 12.484000 ( 12.703125)
include|end: 7.141000 0.000000 7.141000 ( 7.218750)
r.match|end: 25.109000 0.000000 25.109000 ( 25.437500)
s.match|end: 25.141000 0.000000 25.141000 ( 25.578125)
r =~ s |end: 24.968000 0.000000 24.968000 ( 25.296875)
s =~ r |end: 24.860000 0.000000 24.860000 ( 25.281250)
include|not: 7.093000 0.000000 7.093000 ( 7.203125)
r.match|not: 24.875000 0.000000 24.875000 ( 25.296875)
s.match|not: 24.985000 0.000000 24.985000 ( 25.328125)
r =~ s |not: 24.937000 0.000000 24.937000 ( 25.375000)
s =~ r |not: 24.985000 0.000000 24.985000 ( 25.359375)
0466デフォルトの名無しさん
2011/05/28(土) 00:50:39.24require 'benchmark'
s = []
s[0] = 'nantokakantoka' + '@' + 'nantokakantoka'*9999
s[1] = 'nantokakantoka' * 5000 + '@' + 'nantokakantoka'* 5000
s[2] = 'nantokakantoka' * 9999 + '@' + 'nantokakantoka'
s[3] = 'nantokakantoka' * 10000 + 'a'
t = %w(beg mid end not)
n = 50000
c = '@'
r = /@/
Benchmark.bm(18) do |x|
s.each_with_index do |s, idx|
x.report("include|#{t[idx]}:"){n.times{ s.include?(c)} }
x.report("r.match|#{t[idx]}:"){n.times{ r.match(s) }}
x.report("s.match|#{t[idx]}:"){n.times{ s.match(r) }}
x.report("r =~ s |#{t[idx]}:"){n.times{ r =~ s }}
x.report("s =~ r |#{t[idx]}:"){n.times{ s =~ r }}
end
end
0467デフォルトの名無しさん
2011/05/28(土) 00:57:22.26なんつうかわかりやすいそのまんまの結果だな
バイナリレベルでの存在チェックしかできないString#include?の爆速っぷりが目につく
0468デフォルトの名無しさん
2011/05/28(土) 00:57:27.11バカにならない時間差だね
0469デフォルトの名無しさん
2011/05/28(土) 01:03:08.53String#index とか駆使するようなめんどくさい子になっちゃうよ
0470uy
2011/05/28(土) 02:48:04.100471デフォルトの名無しさん
2011/05/28(土) 03:16:23.420472デフォルトの名無しさん
2011/05/28(土) 03:42:42.73正規表現で耐えがたいほど遅いケースだと、データ構造やアルゴリズムを一工夫するか、
別の言語を使うとかも視野に入れる必要があるんじゃないかなあ
0473uy
2011/05/28(土) 04:44:56.11知識として、俺はかなり調べるたちだけど重箱の隅だと思ってるよ
LinuxだったらRubyinlineあるし、Windowsでも適当にCコンパイラと繋げて以下略
0474デフォルトの名無しさん
2011/05/28(土) 04:48:22.40Cで拡張ライブラリ書けるからいいじゃんって考えは甘え
0475デフォルトの名無しさん
2011/05/28(土) 06:26:30.11正規表現を指定なんてオーバーキルだし
だいいちString#include?とindexはもとからCで書いてあるので
Cで書き直しても早くはならないだろう
0476デフォルトの名無しさん
2011/05/28(土) 08:14:38.86Perlのindexの実装が気になる。
0477デフォルトの名無しさん
2011/05/28(土) 08:25:20.59String#include?が速いというよりは、正規表現エンジンに問題があるんじゃないか?
0478デフォルトの名無しさん
2011/05/28(土) 08:45:12.22/aaa/ という正規表現が、文字列に対し一般にどういうサーチ動作をするか250字以内で簡潔に述べよ(配点60)
0479デフォルトの名無しさん
2011/05/28(土) 09:07:45.20正規表現に対してBoyer-Moore法を適用する最適化があったはず
もちろん素のDFAよりも高速
0480デフォルトの名無しさん
2011/05/28(土) 09:20:03.95や、/aaa/ =~ str と書いたら自動で str.index('aaa') が適用されるというのは素敵ではあるんだが
0481デフォルトの名無しさん
2011/05/28(土) 10:24:58.52この結果を見るとincludeを使うのが一番早いって事ですか?
0482デフォルトの名無しさん
2011/05/28(土) 10:30:59.110483デフォルトの名無しさん
2011/05/28(土) 11:07:50.710484デフォルトの名無しさん
2011/05/28(土) 11:14:04.62たいてい他の処理や正規表現に組み込まれて姿を消してるので、
どうせなら最初から正規表現前提で他のところに気を遣ったほうがいいと思う
include?の速度でなければどうにもならないというなら、たぶん、Rubyで作るのが間違ってる
0485デフォルトの名無しさん
2011/05/28(土) 11:33:09.690486デフォルトの名無しさん
2011/05/28(土) 13:04:17.010487デフォルトの名無しさん
2011/05/28(土) 13:07:00.12残念ながらない
どれもオリジナルを英語で参照する根性が必須
0488デフォルトの名無しさん
2011/05/28(土) 13:12:16.36JRubyじゃだめかい?Swingの解説なら日本語のもいっぱいあるし
0489デフォルトの名無しさん
2011/05/28(土) 14:17:10.83n == 1 ? 1 : n * (n-1)
みたいなのを
(n == 1) ? 1 : n * (n-1)
と書くようになった。なんとなくこっちの方が読みやすい気がする。
0490uy
2011/05/28(土) 14:50:10.62a ? b : c
end
ifelsereturn( (n == 1) , (1) , (n * (n-1) ) )
module Kernel
def ifelse a,b
self ? a : b
end
end
n = 0
p (n == 1).ifelse( (1) , (n * (n-1) ) )
0491デフォルトの名無しさん
2011/05/28(土) 14:59:32.75[1,2,3],
[4,5],
[6,7,8,9],
[10]
]
こういう入れ子の配列から、
[
[1,4,6,10],[1,4,7,10],[1,4,8,10],[1,4,9,10],
[1,5,6,10],[1,5,7,10],[1,5,8,10],[1,5,9,10],
[2,4,6,10],[2,4,7,10],[2,4,8,10],[2,4,9,10],
[2,5,6,10],[2,5,7,10],[2,5,8,10],[2,5,9,10],
[3,4,6,10],[3,4,7,10],[3,4,8,10],[3,4,9,10],
[3,5,6,10],[3,5,7,10],[3,5,8,10],[3,5,9,10]
]
みたいな形で、内部の各配列からひとつずつ取り出して組み合わせるすべてのパターンを取り出すのに、
簡潔な記述方法はありますか? 大本になる配列の要素数は今回は4ですが、実際は不定です。
全てのパターンが取り出せれば、最終的に出てくる配列の中身の順番はどうでも構いません。
0492デフォルトの名無しさん
2011/05/28(土) 15:02:07.33その行為を一発で表現する数学的な言葉があるなら、もしかしたら誰かが用意してるかも
0493デフォルトの名無しさん
2011/05/28(土) 15:03:49.32あってるかな?
0494デフォルトの名無しさん
2011/05/28(土) 15:04:20.580495デフォルトの名無しさん
2011/05/28(土) 15:05:03.28def combi(arys)
result = [[]]
arys.collect{|ary| ary.collect{|i| [e]} }.each{|addary| result = add(result, addary)}
result
end
def add(baseary, addary)
result = []
addary.each do |addvalue|
baseary.each do |ary|
result << ary + addvalue
end
end
result
end
0496デフォルトの名無しさん
2011/05/28(土) 15:07:09.93>>493
>>494
直積(product)というのですか。ありがとうございます。
そういうメソッドがあるのですね。
0497デフォルトの名無しさん
2011/05/28(土) 15:13:18.81p [[1,2,3], [4,5], [6,7,8,9], [10]].flatten.combination(4).to_a
=> [[1, 2, 3, 4], [1, 2, 3, 5], ...]
0498デフォルトの名無しさん
2011/05/28(土) 15:14:04.660499デフォルトの名無しさん
2011/05/28(土) 18:53:16.37実際に動かす環境が1.8.5なので結局自分で実装して使うことになりますた。
とほほ。
0500デフォルトの名無しさん
2011/05/28(土) 18:59:49.100501デフォルトの名無しさん
2011/05/28(土) 19:06:57.34俺はむしろ
(n==1 ? 1 : n*(n-1))
だな
0502デフォルトの名無しさん
2011/05/28(土) 19:20:27.740503デフォルトの名無しさん
2011/05/28(土) 19:32:20.95マシンが十分速ければそうだろうが
現状まだまだだわな。
Rubyの場合GC問題があるから複雑なGUIは避けたいところ。
大して凝らない、Webレベルで実現できるようなGUIなら
TitaniumDesktopで十分だし。
0504デフォルトの名無しさん
2011/05/28(土) 21:17:10.97これでインストールしたらfxrubyは最初から入っているって説明してるサイトに騙された
0505デフォルトの名無しさん
2011/05/28(土) 23:00:54.33本屋に逝って紙の世界に戻ったら。
0506デフォルトの名無しさん
2011/05/28(土) 23:33:29.55いまさらFOXなんかでプログラミングする羽目にならずに済んでよかったじゃないか
とか言ってみる
今は gem install fxruby による別途インストールが必要
が、うまく動作しないかもしれない
0507デフォルトの名無しさん
2011/05/28(土) 23:45:22.960508デフォルトの名無しさん
2011/05/29(日) 00:10:10.820509デフォルトの名無しさん
2011/05/29(日) 00:13:25.660510デフォルトの名無しさん
2011/05/29(日) 00:16:53.950511デフォルトの名無しさん
2011/05/29(日) 00:20:18.680512デフォルトの名無しさん
2011/05/29(日) 00:22:53.52WindowsでやるならWindowsを作ってる人が作ったものが確実
即コケしておらず、普及に全力で、言語センスが妥当な上、実際に使いよい
複数の言語を学ぶと死ぬとかそういう不思議な人じゃない限り問題ないっしょ
>>510
サウンドドライバに直接アクセスする根性があるか、OSがなにかAPIを提供しているか、
コマンドラインの再生プログラムがあるなら可能
Rubyは言語としてそれに関与はしないし、演奏するような第三者ライブラリも存在しない
midiファイルそのものの編集はできるっぽいんだけど
0513デフォルトの名無しさん
2011/05/29(日) 00:34:05.15mmlコンパイラなんかも書けると思う。
0514デフォルトの名無しさん
2011/05/29(日) 00:39:59.75ttps://github.com/arirusso/midi-message
0515デフォルトの名無しさん
2011/05/29(日) 00:52:26.34でも僕の環境だとサンプルのmelody.rbを実行しても音が鳴らなくて文字列が出力されるだけでした
ライブラリを使わないとなるとAPIを叩かないといけなくなりますよね、やっぱり
midiは難しいなあ
0516デフォルトの名無しさん
2011/05/29(日) 00:52:56.190517デフォルトの名無しさん
2011/05/29(日) 01:01:25.220518デフォルトの名無しさん
2011/05/29(日) 01:02:39.270519デフォルトの名無しさん
2011/05/29(日) 01:11:30.43他のOS向けもバイナリは置いて無いから、Windowsだけに限った話ではないわけだが
0520uy
2011/05/29(日) 02:13:56.2510分でCでdllかいて5分でRubyにリンクできる
WinAPIすら触った事ないんだな・・・・・・・・・・・・・・・・・・・・・・・
それかゲーム系のライブラリに頼れよ
wav、midiはたいていどれも演奏できる
0521デフォルトの名無しさん
2011/05/29(日) 02:15:54.160522uy
2011/05/29(日) 02:35:56.94はいはい
dllの作り方くらいはわかるよな?
bccの晒してもいいけど中途半端
0523デフォルトの名無しさん
2011/05/29(日) 03:39:34.30第一印象は良くなかったんだが
最近、実は良い人なんじゃないかと思えてきた
0524デフォルトの名無しさん
2011/05/29(日) 04:22:28.80普通の発言するときくらいコテ外しゃいいのに
0525デフォルトの名無しさん
2011/05/29(日) 04:39:54.810526デフォルトの名無しさん
2011/05/29(日) 05:38:46.410527デフォルトの名無しさん
2011/05/29(日) 10:06:23.740528デフォルトの名無しさん
2011/05/29(日) 12:12:01.07何書いてあるかわからないけど、それを実感したなら今後はレスごと表示させないことをお勧め
質問する人へ:
そんなわけで、何か間違っていてもそのレスが誰にも読まれず誰にも訂正されないので、
あれは常に間違い続けています(そして、誤りに気づく術すら、構造的に持ちあわせていません)
決して参考にしないでください
0529デフォルトの名無しさん
2011/05/29(日) 12:49:58.03MCIでMIDIコントロールできないって事
0530デフォルトの名無しさん
2011/05/29(日) 13:40:08.8297.chr => "a"
と、文字コード→文字にするメソッドは知っているのですが、逆に文字→文字コードとするメソッドを教えて下さい。
0531デフォルトの名無しさん
2011/05/29(日) 13:44:18.2397
0532デフォルトの名無しさん
2011/05/29(日) 13:44:58.700533デフォルトの名無しさん
2011/05/29(日) 13:45:14.89はだめか
0534デフォルトの名無しさん
2011/05/29(日) 13:46:04.760535デフォルトの名無しさん
2011/05/29(日) 13:50:26.99ordinal
序数
正確に表現した結果わかりにくくなってる好例
まあ、Rubyが決めた使いかたじゃないから仕方ないんだけど
0536デフォルトの名無しさん
2011/05/29(日) 14:12:15.25んまー、言われてみれば確かに。
0537デフォルトの名無しさん
2011/05/29(日) 14:15:41.37自分の環境に合わせて書き代えれば動作しそうな気もする
0538uy
2011/05/29(日) 16:50:52.86中学生でもできるレスはいらねえ………
midi慣らすなんてMIDIファイルの中身しってりゃファイル読めた時点で物理的に可能なんだけどな……
携帯じゃぐぐれないが、midiならすなんて5分で調べてdllかいて2分でリンクできる……………
WinAPIすら
しらないんだな………
0539デフォルトの名無しさん
2011/05/29(日) 16:52:55.14Rubyでa.txtの内容を読み込みます
次の日、a.txtに文字列を追加します
a.txtは13byteに増えました(+3byte)
Rubyでこの3byte分だけ取得する方法ってございませんか?
13byte読みに行くのではなく、転送量を減らしたいので3byteだけ取得したいのです
0540デフォルトの名無しさん
2011/05/29(日) 16:55:47.790541デフォルトの名無しさん
2011/05/29(日) 16:56:57.29さっきのソースコードうpには感心したので
ぜひもう一度質問に合ったサンプルを上げてほしい
MIDIメッセージを送信するってやつね
0542デフォルトの名無しさん
2011/05/29(日) 17:35:01.96というのが若干気になるが、基本は>>540
読み込み開始位置を11バイト目にセットして、そこからreadとかで3バイトだけ読めばいい
ふつーのファイルシステムの上での場合だけどな
もしHTTPとかを経由しているとサーバが差分取得を許可してるかどうかがポイントになって面倒に
0543uy ◆yyC0rYWEq2
2011/05/29(日) 18:24:29.11こ れ す ら 出来ないゴミなんだな・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
http://www.geocities.jp/c_zelos/soto/midi_cruby.zip
そんな知識量で大丈夫か?
0544uy ◆yyC0rYWEq2
2011/05/29(日) 18:28:52.38close関数追加
// close
int _export uy_midi_close( void ){
midiOutReset(hMidiOut);
midiOutClose(hMidiOut);
}
0545デフォルトの名無しさん
2011/05/29(日) 18:40:32.95>>541は別に煽ってるわけじゃなく素直に感心したんだと思うよ
コード示せば言い訳きかないから
0546デフォルトの名無しさん
2011/05/29(日) 18:42:01.53答えてくれてありがとう
参考にさせてもらうよ
0547デフォルトの名無しさん
2011/05/29(日) 20:51:13.35時刻の比較がしたいのですがアドバイスお願いいたします
ifのところでエラーになりました
t = Time.parse("2011/05/29 21:05:30").class
n = Time.now
if n >= t then
puts "時間です"
else
puts "まだ大丈夫です"
end
0548デフォルトの名無しさん
2011/05/29(日) 21:07:04.45t = Time.parse("2011/05/29 21:05:30").class
ってしちゃうと、tにはTimeというクラスが設定されちゃう
t = Time.parse("2011/05/29 21:05:30")
にすればうまくいくと思うよ
0549デフォルトの名無しさん
2011/05/29(日) 22:13:45.010550デフォルトの名無しさん
2011/05/29(日) 22:35:57.20t = Time.parse("2011/05/29 21:05:30 +0900")
ならいいのかな?
0551デフォルトの名無しさん
2011/05/30(月) 02:41:35.67String に getbyte setbyte メソッドなんてあったのか
知らなかった
るりまにも載ってねぇ
#coding:cp932
a='あ'
p a.ord # => 33440
p a.codepoints.first # => 33440
p a.getbyte(0) # => 130
p a.bytes.first # => 130
0552デフォルトの名無しさん
2011/05/30(月) 08:34:11.55最近多いね
0553デフォルトの名無しさん
2011/05/30(月) 08:48:41.58エラーだから
0554デフォルトの名無しさん
2011/05/30(月) 09:57:38.31「解決のヒント」とかいう名目で表示するようにすればいいのかもしれない
0555デフォルトの名無しさん
2011/05/30(月) 10:26:29.76テンプレも読まないクズだから
0556デフォルトの名無しさん
2011/05/30(月) 12:09:22.510557デフォルトの名無しさん
2011/05/30(月) 12:45:13.300558デフォルトの名無しさん
2011/05/30(月) 13:05:35.11PHPで書くと
<?php for ($i="a"; $i<="zzz"; $i++) echo $i."\n";?>
でa〜zzzzまで全て書き出せるのですがRubyだと実装難しいですか?
0559デフォルトの名無しさん
2011/05/30(月) 13:09:56.49puts(('a'..'zzzz').to_a)
括弧の取り扱いの問題があるので、ptus の直後に空白を入れるか、
誤解されないようにもう1つ括弧をつけること。
0560デフォルトの名無しさん
2011/05/30(月) 13:26:21.28のほうがメモリに優しいか。
0561デフォルトの名無しさん
2011/05/30(月) 13:29:22.44勉強になりました
0562デフォルトの名無しさん
2011/05/30(月) 14:09:05.59'α'..'ωω' でやったら途中によく分からない文字が。
文字入力ツールで見たら一応ギリシャ文字ではあるらしいけど。
0564デフォルトの名無しさん
2011/05/30(月) 17:19:37.400566うゆ
2011/05/30(月) 20:22:31.06プログラマさんてすごいですね!!
ギリシャ文字よめるんですか!!!(キリッ)wwwwwwwwwwwwwwwwwwww
0567デフォルトの名無しさん
2011/05/30(月) 20:28:06.86意味はわからなくても文字自体はすぐ読める。
0568デフォルトの名無しさん
2011/05/30(月) 22:45:46.97読めなくても、ツールの同じグループの中にあることはわかるんだよ。
0569デフォルトの名無しさん
2011/05/30(月) 22:47:41.06コプト文字ってエジプトだっけか。
0570uy
2011/05/30(月) 22:59:08.68ップゲラッチョwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
ねえねえ今どんな気持ち?wwwwwwwwwwww
uy程度のコテハンに揚げ足取られちゃってどんな気持ち?wwwwねえねええwwwwwwwwwwwwww
0571デフォルトの名無しさん
2011/05/30(月) 23:15:47.58コプト語(4世紀以降〜17世紀ぐらいのエジプト語)を記述するために
ギリシア文字にいくつか文字をつけくわえたのがコプト文字
0572デフォルトの名無しさん
2011/05/31(火) 01:33:56.79英数26+記号しか無いと思ってるよねw
0574uy
2011/05/31(火) 04:39:08.3122♂です
メールまってます
0575uy
2011/05/31(火) 04:41:09.550576デフォルトの名無しさん
2011/05/31(火) 04:43:53.470577デフォルトの名無しさん
2011/05/31(火) 05:00:23.77αがいつから1バイト文字になったのですか
まさかキャラクタセットの理解なしにそんな話を…いやまさか
0578デフォルトの名無しさん
2011/05/31(火) 05:02:55.240579うゆ
2011/05/31(火) 05:23:37.97隔離スレでやれ
0580デフォルトの名無しさん
2011/05/31(火) 11:35:19.28近頃はやりのUTF-8でも1バイトなのASCIIだけだし、マルチバイトだと思っておいた方が安全。
0581デフォルトの名無しさん
2011/05/31(火) 11:56:48.22「日本語は2バイトだ」と同レベルの、現在となってはかなり恥ずかしい間違い
0582デフォルトの名無しさん
2011/05/31(火) 12:12:26.04Rubyで特定の処理を10ミリ秒ごとに鳴らしたい場合、正確に10ミリごとに動作させられますか?
0583デフォルトの名無しさん
2011/05/31(火) 12:33:02.29Win32APIのSleep関数でも使ってみたらどうだろう。
スリープの精度はOS依存だから難しい問題だね。
元から二バイトだろ。その為に漢字ロム積んでまともな速度になる様にしてたんだし。
リアルタイムosでもないかぎり正確さは保証はされないと思うよ。
0585デフォルトの名無しさん
2011/05/31(火) 12:38:05.97あと極端な話スラッシングが起きてるような状態でも正確な動作が継続されることを望む?
0586デフォルトの名無しさん
2011/05/31(火) 12:38:46.450588デフォルトの名無しさん
2011/05/31(火) 12:45:19.11半角カナは昔1バイトで扱われてたし、
日本語が2バイトってのは「2バイトで表現できる」ってだけで、UTF-8だと日本語の文字は3バイト使うね。
0589デフォルトの名無しさん
2011/05/31(火) 12:45:54.68ぷぎゃー。
0590デフォルトの名無しさん
2011/05/31(火) 12:47:18.10>英数26+記号しか無いと思ってるよねw
>日本語が一バイトの時代ってあったっけ?
>まだ半角仮名使ってる馬鹿が居るのか。
>jis規格満たしてないから使えないぞwww
なんだただのキチガイか
0591デフォルトの名無しさん
2011/05/31(火) 13:18:07.94たとえスラッシングが前の処理が終わらなくても10ミリ間隔で実行できればかまいません
スラッシングがおきたときは手動で終了させます
Windows7 64bitだとスリープの精度がよくなってたししますかね
0592デフォルトの名無しさん
2011/05/31(火) 13:32:56.160593デフォルトの名無しさん
2011/05/31(火) 13:37:17.970594デフォルトの名無しさん
2011/05/31(火) 13:43:40.45ループ始点
時間計測しながら処理
(繰り返したい間隔 - 処理にかかった時間)だけ停止
ループ終点
正確に10ms刻みで動作させるってのがどの言語使っても大抵はめんどくさくなるような処理だし。
大げさでもいいならいっそRuby/SDLのfpstimer使えばいいんじゃないかしら。
0595デフォルトの名無しさん
2011/05/31(火) 18:36:29.90なんでお前そんなにイライラしてんの?
0596デフォルトの名無しさん
2011/05/31(火) 18:39:25.96すっかり終わった話題であるはずの>>590の書き方が気になるという人はたぶんこの世に一人だけだと思う
0598デフォルトの名無しさん
2011/05/31(火) 19:05:29.69>>590は自分だけど>>596は別人でありまする。
0599デフォルトの名無しさん
2011/05/31(火) 19:16:46.280600デフォルトの名無しさん
2011/05/31(火) 19:32:14.33RSpecでいいならRSpecで
Shouldaはassert_equalタイプが(教育的コストなどの点で)好ましいという場合に使う
ライブラリを公開したとして、開発者が集まりやすいのはtest/unitかShouldaなんじゃないかね
0601デフォルトの名無しさん
2011/05/31(火) 22:40:31.62class Month < Date
def +(n)
self >> n
end
end
としたところ、Dateクラスの>>メソッド内で+を呼んでおり循環してしまいます。
どうすれば+(n)でnヵ月後を返すようにできるでしょうか?
0602uy
2011/05/31(火) 23:02:54.34そーす全部うp
0603デフォルトの名無しさん
2011/05/31(火) 23:11:23.96継承せずにインスタンス変数で持たせて
同様のメソッドを持たせるとか
0604デフォルトの名無しさん
2011/05/31(火) 23:37:48.110605デフォルトの名無しさん
2011/05/31(火) 23:53:59.33これらはプログラミング極めた後に、更なる効率的な管理を考えるときに使う機構
なくても作れる
1万行とかいうソースさえも扱ったこともない & 想像すら 出来ない子が、サンプルみながら練習しようと無意味
0606デフォルトの名無しさん
2011/06/01(水) 00:02:10.770607デフォルトの名無しさん
2011/06/01(水) 00:06:57.14ちょっとこれを思い出したわ。
ttp://www.ariel.com.au/jokes/The_Evolution_of_a_Programmer.html
熟練するちょっと前位に、やたら無駄に凝る時期があるっていう。
0608デフォルトの名無しさん
2011/06/01(水) 00:22:48.35はともかく
>>681
・ Month クラス自体、存在意義がまったくないので、Month#+ を使うのを諦めて Date#<< を使う
・ てきとうな alias を作成してお茶を濁す
irb> class Date
irb> alias :proceed :>>
irb> end
irb> puts Date.today.proceed(1)
2011-07-01
・ インスタンス変数に入れておいて、なんか適当な操作メソッド作る
class C
def initialize
@today = Date.today
end
def mon_plus(n=1)
@today >> n
end
end
小刀でログハウス作ってる様な無茶を感じる。
0610デフォルトの名無しさん
2011/06/01(水) 03:30:16.550611デフォルトの名無しさん
2011/06/01(水) 07:10:11.670612デフォルトの名無しさん
2011/06/01(水) 11:04:08.79$ cat `find mail-2.2.19/lib/ | grep "rb$"` | grep -vE "#|^ *$" | wc --lines
15347
ふむ
0613デフォルトの名無しさん
2011/06/01(水) 12:24:47.08とかでよくね?
と思ったがそっちの方がわかる人間が多いか。
0614デフォルトの名無しさん
2011/06/01(水) 12:40:12.32とってもアリガチなんだけど、悪い例だ
0615デフォルトの名無しさん
2011/06/01(水) 19:02:23.77プログラム初心者でほんと申し訳ないですがお願いします
一応yahooファイナンスから過去の株価データ持ってくるの目的で
やり始めたんですがhttpからデータ引っ張ってくると文字化けします
文字コード指定とかどの辺りでするんですかね?
http上の文字コードとかも分からなくて・・・
検討はずれな事言ってるかもしれませんがお願いしますm(_ _ )m
require "net/http"
require "uri"
url = URI.parse("http://table.yahoo.co.jp/t?c=2011&a=2&b=28&f=2011&d=6&e=1&g=d&s=1554&y=0&z=8471&x=sb")
http = Net::HTTP.start(url.host, url.port)
doc = http.get(url.path)
puts doc
0616デフォルトの名無しさん
2011/06/01(水) 19:32:05.17そのページの文字コードはEUC-JPだね。
コマンドプロンプトに表示したいならどうせtosjis使うから気にしないでいい。
require 'kconv'
しておいて
puts Kconv.tosjis(doc.body)
そのdocにはヘッダが含まれるからhtmlの部分だけ取り出したければdoc.bodyしないといけない。
でもそのアクセスの仕方だとクエリが含まれないから株価データは返ってこないね。
uri.pathの代わりにuri.request_uriを使うといいよ。
余計なお世話かもしれないけど、その様子だと取ってきたHTML出力するだけで解析とかできなそうだし、
ちゃんとした本でひととおり勉強してから実際のプログラムの作成に入った方がいいんじゃないかなあ。
あと業務妨害でも訴えられたりするみたいね。ほどほどに。
まあ複数情報元からの取得が基本だけど。
0618デフォルトの名無しさん
2011/06/01(水) 19:57:48.42LE,BEどちらを読ませても、"BE"に落ちてしまいます。
何が悪いか分かりますか?
ruby 1.9.2p136 (2010-12-25 revision 30365) [i386-mswin32_100]
f = File.open(filename)
f.binmode
lines = f.read
bom = lines[0..1]
if bom == "\xFF\xFE"
p "LE"
else
p "BE"
end
どうやら、packなるものを勉強しないといけなさそう
だけど、リファレンスみてもピンとこない・・・
0619デフォルトの名無しさん
2011/06/01(水) 20:00:00.70ありがとうございます。しっかり表示されました
楽しいruby読んで勉強中なんですが、
ちょっと、実際に試したくなってやってました
解析等は22章にあるようです
今17章なので続きは読んでから進めてみたいと思います
0620デフォルトの名無しさん
2011/06/01(水) 20:09:42.10なぜp bomしないんだ
0621デフォルトの名無しさん
2011/06/01(水) 20:22:27.34f.closeしろ
というのはおいといて
UTF-16BE
UTF-16LE
UTF-16
の三種類あるのはわかってる?
0622デフォルトの名無しさん
2011/06/01(水) 20:52:44.320623デフォルトの名無しさん
2011/06/01(水) 21:00:32.51古いのだったら
ftp://ftp.ruby-lang.org/pub/ruby/doc/ruby-man-ja-html-20051029.tar.gz
新しいのはHTMLはないからchmのコレか
http://www.ruby-lang.org/ja/man/archive/ruby-refm-1.8.7-20110529.chm
コレを導入するといい
http://www.ruby-lang.org/ja/man/archive/ruby-refm-1.9.2-dynamic-20110529.tar.xz
旧版の最新内容のHTMLにして固めたものはないと思うから、欲しければ巡回ソフトで
http://www.ruby-lang.org/ja/man/html/
以下を巡回すればよろし
0624デフォルトの名無しさん
2011/06/01(水) 21:02:28.09chmで1.9用のが欲しければこっちね
http://www.ruby-lang.org/ja/man/archive/ruby-refm-1.9.2-20110529.chm
0625デフォルトの名無しさん
2011/06/01(水) 21:05:03.49BOM付のBE,LEについて、p bomすると以下が出力されます。
結果の説明が足りてませんでした。
"\xFE\xFF"
"\xFF\xFE"
>621
文字が長くてカキコはじかれたことがあるので、コードはエッセンスだけにしています。
closeしても期待通り動いていません。(コード等が足りないなら教えてください。)
種類理解しているつもりですが、今回の趣旨ではないと考えています。
BOM付のUTF16を判別したいと考えています。
知りたいのは、判定処理が正しく動かない理由になります。
ちなみに、1.8.6で試したら動きました。さらに??です。
0626デフォルトの名無しさん
2011/06/01(水) 21:09:12.86>新しいのはHTMLはないから
>旧版の最新内容のHTMLにして固めたものはないと思う
そうですか、では諦めます
>欲しければ巡回ソフトで
すこしリンク見ただけですが、メソッドがひとつのHTMLになってるので、
サーバへのアクセス回数は数千回になるはずですよね
そういう手段を初心者スレで安易に他人に勧めるものではないと思います
0627デフォルトの名無しさん
2011/06/01(水) 21:11:51.28Ruby1.9.x の String[0..1] は「先頭2バイト」ではなく
「与えられた文字エンコーディングで考えるところの先頭2文字」
0628デフォルトの名無しさん
2011/06/01(水) 21:12:34.40>メソッドがひとつのHTMLになってる
そんなことはない
0629デフォルトの名無しさん
2011/06/01(水) 21:12:57.940630デフォルトの名無しさん
2011/06/01(水) 21:14:18.59だーいぶ前にもマニュアルはサーバから全部持って来いというレスがあったんだが、
たぶん言ってるのは同じ人で、たぶん実際には試してない
0631デフォルトの名無しさん
2011/06/01(水) 21:20:28.06手元に1.9.2のchmが分解されたものがあるよ
$ find .chmsee/bookshelf/01bc1c1fc37aeaf2a9d23bbd7d0a7499/method | grep html$ | wc -l
11107
ということでめでたく1万ファイルオーバーだと推測
0632デフォルトの名無しさん
2011/06/01(水) 21:39:42.93なんのためのirbなのかと…
0633デフォルトの名無しさん
2011/06/01(水) 21:46:34.45以前にこの質問に答えたことはないし、試したこともあるよ。
憶測でもの言うのやめなよ。
>>631
以前5秒間隔で取得したときの取得結果
http://www.ruby-lang.org/ja/man/html/*.html
472ファイル
1万ファイルオーバーねえ。
#のガイドリンクまでHTML化してんじゃないの?
0634デフォルトの名無しさん
2011/06/01(水) 21:52:54.03ttp://doc.okkez.net/static/192/method/String/i/downcase.html
巡回して取ってこいとは言えないレベルだわw
0636デフォルトの名無しさん
2011/06/01(水) 21:54:47.38それ新マニュアルでしょ?
旧マニュアルの話だよ?
0637デフォルトの名無しさん
2011/06/01(水) 21:59:17.74既に旧マニュアルに価値はない
「読みやすいが内容古い」と「読みにくいが内容新しい」で天秤して、「内容古い」が負けた状態
0638デフォルトの名無しさん
2011/06/01(水) 22:00:59.12>旧版の最新内容のHTMLにして固めたものはないと思うから、欲しければ巡回ソフトで
>http://www.ruby-lang.org/ja/man/html/
>以下を巡回すればよろし
>>欲しければ巡回ソフトで
>すこしリンク見ただけですが、メソッドがひとつのHTMLになってるので、
>メソッドがひとつのHTMLになってる
>そんなことはない
日本語読める?
0639デフォルトの名無しさん
2011/06/01(水) 22:02:20.51bomに入るのは、UTFで与えられた先頭2文字、
ということでよいでしょうか?
p bom.size # => 2
となりました。
"\xFE\xFF"と記載すると、UTFとはことなるBOM表現だったり
するのでしょうか。
言われていることがよく理解できませんでした。すみません。。
0640デフォルトの名無しさん
2011/06/01(水) 22:04:46.91http://doc.okkez.net/static/192/class/String.html
の1枚だけでいいよね公開
メソッド詳細へのリンクは String.html#downcase みたいにアンカーでもつけとけばいい
dynamicのアーカイブ見ると絶望するんだが、なんであんなにファイル細かいんだ
0641デフォルトの名無しさん
2011/06/01(水) 22:19:23.06ファイル数三万とか何事かと思う
旧版みたいにクラスでまとめてくれよ……。
0642デフォルトの名無しさん
2011/06/01(水) 22:23:50.81str = File.open(filename, 'rb'){|f| f.read}
if str.start_with?("\xFF\xFE")
p "LE"
else
p "BE"
end
1.8.6 では動作しない
0643デフォルトの名無しさん
2011/06/01(水) 22:26:04.65$ ri String
Nothing known about String
rvmでインストールしたら動かないの?
0644デフォルトの名無しさん
2011/06/01(水) 22:37:48.250646デフォルトの名無しさん
2011/06/02(木) 01:38:04.67in `start_with?': incompatible character encodings: ASCII-8BIT and Windows-31J (Encoding::CompatibilityError)
1.9.2です。こんな関数あるんですね。知りませんでした。
0647デフォルトの名無しさん
2011/06/02(木) 01:44:49.93>>618
>if bom == "\xFF\xFE"
の"\xFF\xFE"がまずい
Windows日本語版だとスクリプトエンコーディングが
デフォルトでWindows-31Jになってて
ASCII-8BITの文字列とWindows-31Jの文字列を比べてるので
7bit外の文字の比較が常に偽になっている
#coding:Windows-31J
bom = [0xFF,0xFE].pack('C2')
p bom
p bom.encoding
p "\xFF\xFE"
p "\xFF\xFE".encoding
p bom == "\xFF\xFE"
p bom == "\xFF\xFE".force_encoding('ASCII-8BIT')
0648デフォルトの名無しさん
2011/06/02(木) 02:14:27.35旧リファレンス時代にあった有志配布のchm版みたいなのがほしい
0649デフォルトの名無しさん
2011/06/02(木) 05:35:43.65システムリソースに対してファイルが多過ぎるとルックアップが激烈に遅いということが理解できなかったのですよ
rubygemsと本質は一緒
あの一見妥当なディレクトリ構成は、もう少し要素が少ないかもう少しマシンスペックが高いかするときにのみうまく動く
0650デフォルトの名無しさん
2011/06/02(木) 05:59:38.28もし全文検索が必要だというのなら、それは単にその項の外部参照リンクかコードサンプルのどちらかが足りないのよ
Foo#bar について検索した結果に必要なものは、
Foo#bar そのものの説明と、それに関する他のメソッドのリンクと、Foo#bar を使ったコードサンプルの3つ
他のメソッドやクラス概観の解説やコードサンプルで Foo#bar または bar が書かれている部分が必要になることはない、はずだ
0651デフォルトの名無しさん
2011/06/02(木) 06:05:41.43ASCIIコードを扱うクラスやメソッドが知りたいので検索しましたが
「ASCIIコードというクラスやメソッド名は存在しませんでした」とか言われましたどうすればいいですか
riが売れなかったのは、クラスやメソッド(の一部)をあらかじめ知っていて指定しないといけなかったからだと思うの
静的HTMLが提供されてれば検索の要求が出るのは普通だし、うまい案がないというのも確かなのだと思う
0652デフォルトの名無しさん
2011/06/02(木) 09:42:40.56chmはただで作れるから、chmを分解してhtml化してから作り直すとかして自分で作ったら?
メソッドごとのhtmlのせいでファイル数が某大なのがあれならパッケージ版が何やってるか調べて、
クラス毎にまとめたhtmlだけ用意してchm作るとかさ。
って、初心者スレで要求することではないな。
0653デフォルトの名無しさん
2011/06/02(木) 10:10:05.67自前で静的HTML生成させたらメモリ不足で吹っ飛ぶ、搭載メモリ500MB未満の環境のことも考慮して頂けると嬉しいです
0654デフォルトの名無しさん
2011/06/02(木) 10:17:02.90そもそものデータ自体が生成されないみたいね
rvmではriは使用できない模様
0655デフォルトの名無しさん
2011/06/02(木) 10:34:24.11HTML一枚生成するだけでメモリがいっぱいになるわけじゃあるまいし。
(HTML一枚生成するだけで飛ぶようならそんな環境でブラウザ開きながらRuby走らせようとするな)
時間はかかるけどメモリ足りないんだから仕方ないよねー。
0656デフォルトの名無しさん
2011/06/02(木) 10:44:28.95RubygemsやBundlerみたく、必要なデータかき集める時点でメモリオーバーかもしれないぞ
スクリプトの全部が全部、メモリ利用を気にして逐次実行を行なってるわけじゃないし
超でっかいデータ.each do{...} は、どこでどうGCを噛ませても超でっかいデータぶんのメモリ増大は防げない
余談だけど、配布のダイナミックなんちゃらは単体で静的HTML生成ができる
bitclust/tools/bc-tohtmlpackage.rb だかなんだったかを実行
書き出すディレクトリの指定が必須だったはずなのでソースかヘルプ見れ
0657デフォルトの名無しさん
2011/06/02(木) 11:13:02.03CPU1個やメモリ2GB未満の場合はRuby使用禁止とかにできない?
0658デフォルトの名無しさん
2011/06/02(木) 11:13:50.02超でっかいデータ.eachが発生するって、それは全ファイルを一旦メモリに読むような、
メモリ不足環境としてはあってはならないバカなことをしてるからじゃあ……。
0659デフォルトの名無しさん
2011/06/02(木) 11:17:30.59今のcrubyはCPU1個しか使ってなかったはずなので、それは薮蛇のような
>>658
たとえば、今話題に出てるbc-tohtmlpackage.rbはそれを制御できない
0660デフォルトの名無しさん
2011/06/02(木) 11:19:39.89窮乏環境で
Rubyを使うな
でおk
上級者なら設計やアルゴリズムを工夫してメモリを節約しながらLL使うこともできるけど、
LLはほっとけば湯水のごとくメモリを消費するから、
そんなちょっとのことでメモリがいっぱいになって飛ぶような環境ではまともなスクリプトは書けまい。
0661デフォルトの名無しさん
2011/06/02(木) 11:21:38.09いやいや、窮乏環境でメモリアンフレンドリーかもしれない人様のスクリプト使う時点でなにかおかしいと気づけよ。
0662デフォルトの名無しさん
2011/06/02(木) 11:27:02.38とりあえずhtml取得して正規表現をかけるくらいしか思いつきません
0663デフォルトの名無しさん
2011/06/02(木) 11:30:53.33いやデータ量依存なんだけど
>>662
Mechanize
0664デフォルトの名無しさん
2011/06/02(木) 11:34:01.01メモリ10GBが当たり前の時代にたかが300MBで文句言うとかありえん
0665デフォルトの名無しさん
2011/06/02(木) 11:36:34.23NKF.guess "うまいつゆ".encode('UTF-32BE', 'UTF-8')
=> #<Encoding:US-ASCII>
マニュアルにも返す候補として書いてないような
0666デフォルトの名無しさん
2011/06/02(木) 11:37:28.630667デフォルトの名無しさん
2011/06/02(木) 11:42:53.11CPUが3GHz相当、メモリは2GB、HDDの空きは…いや、これはどうもいいか
0668デフォルトの名無しさん
2011/06/02(木) 11:49:05.420669デフォルトの名無しさん
2011/06/02(木) 11:52:16.10情弱貧乏人は帰れ
いやマジで
0670デフォルトの名無しさん
2011/06/02(木) 12:04:53.410671デフォルトの名無しさん
2011/06/02(木) 12:10:07.61まあどちらにしても、Rubyのための物理メモリの空きは1GBから2GBくらいは欲しい
rubyと各種gemが全部ロードされ、生成データが全部乗ってなお余る状態が必須
だいぶ前にBundlerが重いというレスがあったが、たぶんそのマシンはもうRuby実行に向いてないんだ
0672デフォルトの名無しさん
2011/06/02(木) 12:16:28.27いやさすがにそれが無理なマシンは現役になってないだろ…
ライブラリやスクリプトが取り扱い確定のデータの大きさのほうが問題なのだと思う
まあ、今回で言えば「静的HTMLの生成には空きメモリが500MBくらい必要です」
というDOS時代っぽいコメントがついてれば問題なかったのではないかと
0673デフォルトの名無しさん
2011/06/02(木) 12:18:18.63256MBとか512MBとか、メインマシンでも1GBとか2GBとか、多くて4GBだったりするよね。
ハイエンドのモンスターマシン持ってるのは情弱と情強の中間ぐらいの人
0674デフォルトの名無しさん
2011/06/02(木) 12:18:55.67これはプロファイラで表示されるべきだと常々思ってるんだけど、どうにかならないかしら
結局インタプリタはメモリ喰いと言う時点でrubyを避けるべきだもの。
cやアセンブラなら少ないメモリでもサック策に行き着くw
0676デフォルトの名無しさん
2011/06/02(木) 12:33:55.45消費量の監視は環境依存になっちゃうから組み込みみたいなのではダメなんじゃないかな
0677デフォルトの名無しさん
2011/06/02(木) 13:04:28.110678デフォルトの名無しさん
2011/06/02(木) 15:12:14.56JMXでもjheapででもなんとでもなるだろうね。
さらにWeblogicのJRockitVM使ってるならMissionControl使ってスレッドもヒープも追えるし
リークしてるオブジェクトの参照を辿ったりできるしで。
0679デフォルトの名無しさん
2011/06/02(木) 15:49:31.36どっちかっていうとオブジェクトのメモリサイズみたいなのが大雑把にでもわかると嬉しい
なんとかなんないもんすかね
0681デフォルトの名無しさん
2011/06/02(木) 16:55:01.980682デフォルトの名無しさん
2011/06/02(木) 17:40:40.640683デフォルトの名無しさん
2011/06/02(木) 20:14:21.04あれと同じレイアウトにしてほしいですわん
0684デフォルトの名無しさん
2011/06/02(木) 23:10:38.44コードをexeにする方法ありませんか?
0685デフォルトの名無しさん
2011/06/02(木) 23:12:14.080686デフォルトの名無しさん
2011/06/02(木) 23:28:34.50exerbなどを利用してexeにして実行した場合、速度は落ちたりしますか?
0687デフォルトの名無しさん
2011/06/02(木) 23:35:03.39Rubyのexe化はすべて
「ruby.exeとライブラリをzipでまとめて配布しておき、exe実行畤にzipを展開してruby.exeに渡す」という概念に沿ってる
zip展開に相当するものが毎回あるぶん、どう足掻いてもオリジナルより遅い
0688デフォルトの名無しさん
2011/06/02(木) 23:39:39.70ということはruby.exeとコードを同じフォルダに入れて実行すればexeにしなくても実行できるって考えても良いですか?
ライブラリなどは使いません
Rubyのhttp://www.ruby-lang.org/ja/LICENSE.txtライセンスにしたがってruby.exeを入れておけば問題ないですよね?
0689デフォルトの名無しさん
2011/06/02(木) 23:40:31.63横槍なんだけど、起動に時間がかかるだけ?
それとも実行自体の速度も落ちる?
0690デフォルトの名無しさん
2011/06/02(木) 23:48:37.29読み込みパスとかがあるし、ruby.exeだけではほぼなにもできないのでそういうのは無理
ファイル配置をめちゃくちゃ精密に行なえば可能だが、それを行なってくれるのがexe化
exe化は手間の削減のためにのみ行なう
実行速度がどうしても必要でRuby実行環境がインストール不可能なのなら、Ruby以外ではりきってどうぞ
0691デフォルトの名無しさん
2011/06/02(木) 23:53:14.11気にしたこともないけど、まあ、リクツ上はそれほど変わんないんじゃね?
exeの中からライブラリ用のファイルを探すオーバーヘッドだけが致命的
…いや、今Rubyスレ界隈でホットな話題であるマシンスペックにも依るけど、
別にそんなに遅いってわけじゃないんで試すだけ試してみてもいいかと
バイトコードみたいなのをexeにする、とかだとよかったんだけど、まあ、ないものねだり
0692デフォルトの名無しさん
2011/06/02(木) 23:57:19.020693デフォルトの名無しさん
2011/06/03(金) 00:01:10.39いやわりとマジで
自分で作れなくてもいいし、「Cであることは間違いないのだが何書いてあるかさっぱりわからん」とかいうレベルでもOK
0694デフォルトの名無しさん
2011/06/03(金) 00:01:42.43あるいはjrubyでJava経由でネイティブコンパイルとかw
0695デフォルトの名無しさん
2011/06/03(金) 00:02:57.88だった
Cプログラムソースであることが判別可能なだけでは流石にどうにもならんw
0696デフォルトの名無しさん
2011/06/03(金) 00:08:29.940697デフォルトの名無しさん
2011/06/03(金) 00:26:19.11exerbは一時ファイル展開せずに
exeファイル内蔵のスクリプトを読みに行ってるはずじゃないか?
0698デフォルトの名無しさん
2011/06/03(金) 00:54:15.490699デフォルトの名無しさん
2011/06/03(金) 01:09:02.62あー俺もそれやってる
目次付き、1クラス1メソッドの自作chm
実際に作ってみると1クラス1メソッドも便利なんだけど、目次があるのがそれ以上に便利
なぜ今の新リファレンスchmにはちゃんとした目次がないんだろう
0700デフォルトの名無しさん
2011/06/03(金) 01:25:52.09〜
require 'nkf'
NKF.hogehoge
〜
「ファイルの上に書いとかないとだめだろ」って言われました。
意味が解かりません…。どういう意味ですか?
0701デフォルトの名無しさん
2011/06/03(金) 01:49:05.46てか再現取れないからバージョンとソースを省略せずに書けよ
0702デフォルトの名無しさん
2011/06/03(金) 01:53:06.18#!/usr/bin/env ruby
... えんえんとコードが続いたそのあとに
def foo
require 'nkf'
NKF.hogehoge
みたいなコードを書いて叱られたということだろう
>>700
requireはファイルの先頭に固めて書いてねってこと
0703デフォルトの名無しさん
2011/06/03(金) 02:04:15.21みたいな書き方はできませんか?
requireめんどいです。
0704デフォルトの名無しさん
2011/06/03(金) 02:06:50.200705デフォルトの名無しさん
2011/06/03(金) 08:27:43.81まとめて人力でrequireを書いとくのがいちばんマシという結論に至ってる
まー、面倒かそうでないかで言えば、まあ、めんどいw
最初の1回だけなんだけどね
0706デフォルトの名無しさん
2011/06/03(金) 08:54:12.330707福盛俊明
2011/06/03(金) 09:10:40.93俺はDarkBASICの天才♪”
俺に答えられない質問はない
質問はこちらへ
http://www.geocities.jp/courant_de_console/main_street/index.html
アハアハ〜♪”
0708デフォルトの名無しさん
2011/06/03(金) 13:12:19.90おお、env厨は氏ね今すぐ今すぐにだ
0709デフォルトの名無しさん
2011/06/03(金) 13:29:28.35とか書いてる(1.8の場合)
もちろんこのままでは実行できないが、ぶっちゃけスクリプトの中身読まずに
いきなり実行権限つけて ./hello.rb とかするほうが一方的に絶対的に悪・即・斬
お使いの環境に合わせて書き替えてご利用ください
っていうか ruby hello.rb でいいじゃん問題起きないよ普通
0710デフォルトの名無しさん
2011/06/03(金) 13:34:35.480711デフォルトの名無しさん
2011/06/03(金) 13:36:57.281.9前提のコードには #!/opt/local/bin/ruby1.9 とか書いてるよ俺は
0712デフォルトの名無しさん
2011/06/03(金) 13:42:05.03スクリプト言語全体に言えることだが、インタプリタのパスは環境によって違う
んでenvというコマンドは、その環境で設定されたパスを前提に引数に書かれたコマンドを実行する
…のだが、そもそもenv自体のパスが微妙に違う環境があったり
rubyのほうのコマンド引数の解釈に問題が出たりするから
素直にテキトーなパス書いて各自で書き換えるほうが実は面倒が少なかったりもする、という話
0713デフォルトの名無しさん
2011/06/03(金) 13:51:06.17先頭行は/bin/shにするという技を使ってる。
0714デフォルトの名無しさん
2011/06/03(金) 13:58:30.98Emacs は1行目を読んで、そのファイルが何のファイルかを決定しています
#!/bin/sh と書いてあったなら、sh-mode で編集を開始してしまいます
配布する際は 2行目に # -*- ruby -*- と書いておいてくださいね
java helloと比べると./hello.rbは楽でいいけどねえ。
xemacsのsumoみたいにrequire-sumoとか、require '*'でとりあえず全部読めって出来ても最近のスペックなら問題無い気もする。
javaでもimport java.*で楽する傾向だしw
0716デフォルトの名無しさん
2011/06/03(金) 14:45:43.84実行する前にソース読め主義が高じるとgemだのaptだのすら使えなくなるわけで。
利便性の拡大のために一部に決めを作ろうってのは
よくある話だし仕方ないだろうさ。
0717デフォルトの名無しさん
2011/06/03(金) 14:56:34.000718デフォルトの名無しさん
2011/06/03(金) 15:01:03.86fileコマンドでPOSIX shell script text executableだと判断されるのはあまりいいことではない
いや、まあ、起動されるもの的には間違ってはいないんだが…
0719デフォルトの名無しさん
2011/06/03(金) 15:05:36.81envの問題は
「これで利便性があがったと思ってるのは書いた本人だけで、全体的には利便性も可搬性も下がってる」
「ぶっちゃけ配布後にインストーラや人力で書き変えたほうが早い」
ということだと思う
ruby -Ku とかが動作しそうで実は動作しないってのはよろしくないわ
0720デフォルトの名無しさん
2011/06/03(金) 15:07:33.800721デフォルトの名無しさん
2011/06/03(金) 15:08:25.67=> ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"]
これより良い書き方有るかいな?
0722デフォルトの名無しさん
2011/06/03(金) 15:11:58.61('A'..'K').to_a
0723デフォルトの名無しさん
2011/06/03(金) 15:16:39.56アルファベットなら並びが分かってるから大差ないけど。
0724デフォルトの名無しさん
2011/06/03(金) 15:16:48.410725デフォルトの名無しさん
2011/06/03(金) 15:17:35.93それでいいんじゃないかな
0726デフォルトの名無しさん
2011/06/03(金) 15:29:07.86作る側の手抜きにすぎない。
0727デフォルトの名無しさん
2011/06/03(金) 15:34:57.37もともと過剰に手厚くユーザーサービスするようにはシステムができてないんだから無理無茶するなさせるな、が正確
たとえばrubygemsだと「Rubyスクリプトを実行するシェルスクリプト(またはバッチファイル)」を作成してくれる
ユーザーに親切にしたいならこういうビッグウェイィィブに乗るべきだろう
0728デフォルトの名無しさん
2011/06/03(金) 15:42:32.10ああ、先のレスは「ぶっちゃけ〜」以降のくだりへのレスな。
envがNGという話に異論はないよ。
まあ、インストーラで自動設定としてその場合の決めを作るとか、
ruby起動時に与えるオプションを起動後にも設定できるようにして
コマンド起動時には
ruby xxx.rb arg1 arg2
とかで済むようにするとかかなあ。
今だとソースの文字コードが起動時にしか設定出来ないんだっけか。
0729デフォルトの名無しさん
2011/06/03(金) 16:02:34.83このファイルはrubyに-Kuオプションつきで渡してください、ということを指示できないとしたら、
そりゃ単にシェルの実行システムが悪いんだよ
たとえばWindowsではこの問題は発生しない
エクスプローラが問答無用で、スクリプト実行以前にrbファイルに関連付けが設定されていたruby.exeに渡すからだ
まー、現状どうしようもないですというのが答えではある
0730デフォルトの名無しさん
2011/06/03(金) 16:07:22.10Linuxのファイルマネージャでも似たようなことはできるよ
その場合はshebangがシェルによって解釈されることはない
rubyだけが読む
ターミナルからでも ruby -Ku foo.rb とかすればいいだけだし、
実行ビット立ててコマンドとして実行するというかなり限定された状況でのみの問題な気がする
0731デフォルトの名無しさん
2011/06/03(金) 16:13:44.47('A'..∞).take(10) とかできるだろうけど
def infinite_loop(n=0)
return enum_for(__method__,n) unless block_given?
loop do
yield n
n = n.succ
end
end
p infinite_loop('A').take(10) # => ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J"]
むむむ >>721に比べて一個少ないな
初期値+10個 と 全部で10個の違いか
0732デフォルトの名無しさん
2011/06/03(金) 16:16:27.73たぶん、このへんの問題に翻弄された経験のある人なんだろう
Rubyスクリプトファイルひとつだけで対処できるような話じゃないって実感があるんだろう
てことで、次の方どうぞ
0733デフォルトの名無しさん
2011/06/03(金) 16:22:17.04succに引数が設定できれば一発なんだよ
irb> class String; alias succ_orig succ; def succ(i=1); x = self; i.times{ x = x.succ_orig}; x; end; end
irb> p "A".succ
"B"
irb> p "A".succ(2)
"C"
irb> p "A".succ(10)
"K"
irb> p ('A'..'A'.succ(10)).to_a
["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K"]
0734デフォルトの名無しさん
2011/06/03(金) 16:32:54.62設定できればというか、succ メソッドは任意なので、したければ御自由にって感じではある
引数なしの succ さえ妥当に動作すれば文句は出ないだろう
今度 succ を定義する機会があったら引数取れるようにしてみようかな
でも ('A'..('A'[0]+10).chr) とか succ の内容見越して書いたほうが早かったり
0735デフォルトの名無しさん
2011/06/03(金) 17:04:24.59httpのContent-Type: text/html;charset=utf-8指定ぐらい乱暴だけど。
0736デフォルトの名無しさん
2011/06/03(金) 17:12:17.15自分で作ったスクリプトを自分の環境で実行するときの話じゃないんよ
自分で作ったスクリプトを他人の環境で実行させるときのお話
0737デフォルトの名無しさん
2011/06/03(金) 17:14:59.820738デフォルトの名無しさん
2011/06/03(金) 17:43:05.890739デフォルトの名無しさん
2011/06/03(金) 20:33:52.7711B
[*'A'..'K']
0740デフォルトの名無しさん
2011/06/03(金) 22:20:30.69どうやら本当らしいな
0741デフォルトの名無しさん
2011/06/04(土) 03:01:02.73class B < ::C
という記述を見たことがあるんですが、このスーパークラスCはどこにいるんでしょうか?
0742デフォルトの名無しさん
2011/06/04(土) 05:44:28.26左辺なしの :: はトップレベルを明示する書き方なので
恐らくトップレベルで定義されてる
0744デフォルトの名無しさん
2011/06/05(日) 02:49:17.81プログラムを書き実行をするとき、ファイルごとに一つづつ、実行の構成から
ファイルを選択しないとコンソールに表示されません。
JAVAをつかっていたときはF11キーを押すだけで選択して開いてるファイルを簡単に実行できたきがするのですが、
rubyの場合はどこの設定をいじれば、開いて選択されているファイルを簡単に実行できるでしょうか?
よろしくお願いします。
0745デフォルトの名無しさん
2011/06/05(日) 02:56:38.35Eclipse統合M31【Java/C++/Ruby/Python/Perl】
http://hibari.2ch.net/test/read.cgi/tech/1238911707/
【日本語不自由】Eclipse Pleiades プラグイン
http://hibari.2ch.net/test/read.cgi/tech/1292073293/
emacsでeclipseと同等の開発環境は作れるのか?
0746デフォルトの名無しさん
2011/06/05(日) 03:06:10.430747デフォルトの名無しさん
2011/06/05(日) 12:04:30.920748デフォルトの名無しさん
2011/06/05(日) 12:39:16.570749デフォルトの名無しさん
2011/06/05(日) 13:23:04.20ですが、3つ目がfalseになる理由がわかりません。
1つ目も3つ目もStringだと思うのですが、何故結果が違うのでしょうか。
irb(main):009:0> String.respond_to?(:class_eval)
true
irb(main):011:0> Enumerable.respond_to?(:module_eval)
true
irb(main):012:0> 'xxx'.respond_to?(:class_eval)
false
0750デフォルトの名無しさん
2011/06/05(日) 13:32:25.351つめは「Stringクラス」というクラスそのものに対してclass_evalというメソッドを持っているかとたずねている。
対して、'xxx'はStringクラスそのものではなくて、Stringクラスのインスタンス。
クラスではなくて単なる一介のオブジェクトにすぎない。
クラスじゃない単なるのオブジェクトなので当然class_evalなんていうメソッドは持っていない。
0751デフォルトの名無しさん
2011/06/05(日) 23:23:24.260752デフォルトの名無しさん
2011/06/05(日) 23:47:02.420753デフォルトの名無しさん
2011/06/06(月) 00:24:03.460754デフォルトの名無しさん
2011/06/06(月) 00:49:53.480755デフォルトの名無しさん
2011/06/06(月) 01:12:13.53emacs。
でも、それなりのボリュームがあるソースを読んでるとき、
自分がどのModuleやClassの定義を読んでるかわからなくなるときがあるんですよね。
1ファイル1クラスならいいんですが...
0756デフォルトの名無しさん
2011/06/06(月) 01:30:30.76NetBeans
>>754
最初のとっかかりは書籍
あとはリファレンスとWeb上の記事などで独学
0757デフォルトの名無しさん
2011/06/06(月) 03:46:34.02javaより手応えを感じています。
0758デフォルトの名無しさん
2011/06/06(月) 04:11:21.73http://local.joelonsoftware.com/mediawiki/index.php/Java%E3%82%B9%E3%82%AF%E3%83%BC%E3%83%AB%E3%81%AE%E5%8D%B1%E9%99%BA
0759デフォルトの名無しさん
2011/06/06(月) 05:00:08.440760757
2011/06/06(月) 06:02:33.75頭の悪い自分のだめさにいやになっていますが、言い訳はできないので、
できることをやるのみです。Rubyでは絶対挫折したくない。
0761デフォルトの名無しさん
2011/06/06(月) 06:26:18.23c言語のポインタとかアセンブラとか回り道してでもしっかり理解を深めたほうが確実かもね。
0762デフォルトの名無しさん
2011/06/06(月) 06:43:38.020763デフォルトの名無しさん
2011/06/06(月) 07:39:39.21Rubyと比べるとJavaの方が「本質的でない難しさ」が多いので
挫折したことはあんまり気にしない方が良いし
Javaで挫折してRubyなら何とかなるというのは、特に変なことでもない
Rubyを習得できるなら、プログラムの資質にはそんなに問題ないと思う
0764デフォルトの名無しさん
2011/06/06(月) 08:33:19.54Cのポインタ(正確には、ポインタのポインタの演算)を理解できるかどうかと、
オブジェクト指向の個々の実装を理解できるかどうかには直接の関連はない
0765デフォルトの名無しさん
2011/06/06(月) 09:06:13.09どういう読解力だよ(笑)
0766デフォルトの名無しさん
2011/06/06(月) 11:09:50.76のやりとりを見て「どういう読解力だよ」とか言っちゃう奴がどういう読解力だよ、と思いました。
0767デフォルトの名無しさん
2011/06/06(月) 12:06:43.63今は
n.times { arr << nil }
としてるんですが、これだと「n回追加する」処理になっているので、
「n個追加する」処理が書けるのならそちらを使いたいと思っています。
0768デフォルトの名無しさん
2011/06/06(月) 12:22:31.09ary.concat(Array.new(n, obj))
とか
ary.push(obj, obj, obj)
とか
ary.fill(obj, ary.size, n)
とか
まあnilだったらary[ary.size + n - 1] = nilとかやるだけで全部nil入るけど
0769デフォルトの名無しさん
2011/06/06(月) 13:47:33.30土台の知識も無いのに上位概念だけ勉強しても雲の上状態で理解が進まないと思うけどな。
流れる雲の様にふわふわした人生送って来たpgが多いの?
0770デフォルトの名無しさん
2011/06/06(月) 13:55:11.91arr += [nil] * 5
0771デフォルトの名無しさん
2011/06/06(月) 13:55:34.77お使いのPCに搭載されているCPUの知識はございますか?
0772デフォルトの名無しさん
2011/06/06(月) 13:56:03.170773デフォルトの名無しさん
2011/06/06(月) 13:58:05.47同じくらい重要なはずなのに
0774デフォルトの名無しさん
2011/06/06(月) 13:58:54.72配列や文字列の+=いくない。
ary.push(*[nil]*5)
0775デフォルトの名無しさん
2011/06/06(月) 14:12:23.18CPUの半導体の仕組みまで知らなくてもプログラムできるのと一緒。
土台の知識が必要なケースはまれ
0776デフォルトの名無しさん
2011/06/06(月) 14:13:24.77Cとかアセンブラやってるわけでもないし
0777デフォルトの名無しさん
2011/06/06(月) 14:17:57.77Rubyならポインタの話もどうでもいい。
0778デフォルトの名無しさん
2011/06/06(月) 14:20:34.00>ポインタなんて実際のcpuでは多用されてる動作じゃん。
という時点でどうにもならない
あんな抽象化されたものを見てCPU動作語られてもマジ困る
0779デフォルトの名無しさん
2011/06/06(月) 14:24:40.760780デフォルトの名無しさん
2011/06/06(月) 14:28:53.06コマンドプロンプトが固まってしまう動きません
require 'webrick'
srv = WEBrick::HTTPServer.new({
:DocumentRoot => 'C:/www',
:BindAddress => '127.0.0.1',
:Port => 9876})
srv.start
コードは間違ってますか?
0781デフォルトの名無しさん
2011/06/06(月) 14:34:24.83http://127.0.0.1:9876/ にWebブラウザでアクセスしてサーバに反応があれば動いてる
入力を受けつけないだけで、固まっているわけではない
0782デフォルトの名無しさん
2011/06/06(月) 14:35:03.20バックグラウンドで動いて欲しいならデーモン化したりWindowsサービス化したり
する必要があるんだろうけどWindowsの場合のことはよくわからんのでパス。
0783デフォルトの名無しさん
2011/06/06(月) 14:43:16.02コマンドプロンプトが固まってしまうってどういう状態で?
[2011-06-06 14:37:56] INFO WEBrick ...
[2011-06-06 14:37:56] INFO ruby ...
[2011-06-06 14:37:56] INFO WEBrick::HTTPServer#start: ...
こういう感じの状態で固まるなら正常だよ。ブラウザから
http://127.0.1:9876/filename.ext
みたいにしてアクセスしてみそ。
C:/www/filename.ext
にアクセスできるから。
0784デフォルトの名無しさん
2011/06/06(月) 14:49:49.36午前中動かなかったのでOSを再インストールしたんですが無駄のようでしたね
0785デフォルトの名無しさん
2011/06/06(月) 16:11:27.34いっそVHDL/VerilogでCPUを合成してみるのがいいんでね?w
0786デフォルトの名無しさん
2011/06/06(月) 16:17:53.590787デフォルトの名無しさん
2011/06/06(月) 16:25:13.170788デフォルトの名無しさん
2011/06/06(月) 16:26:29.29Macから書き込み?
0789787
2011/06/06(月) 18:09:31.39ごめんね
0790デフォルトの名無しさん
2011/06/06(月) 18:33:56.78これのつもりで>>787のように〜を書き込むと不自然に映る
0791デフォルトの名無しさん
2011/06/06(月) 18:58:18.48FULLWIDTH TILDE 〜 を変形ダッシュの用法で使用してたことが本来おかしい
0792デフォルトの名無しさん
2011/06/06(月) 18:59:27.980793デフォルトの名無しさん
2011/06/06(月) 19:02:25.12〜
まあいいや
使ってる日本語入力ソフトでどっちが出るのかはチェックしてたほうがいいよ
次の方どうぞ
0794デフォルトの名無しさん
2011/06/06(月) 19:04:25.95残念ながら、これはそういうレベルの問題ではない
Rubyでの文字エンコーディング変換エラーの50%くらいはこれが原因
0795デフォルトの名無しさん
2011/06/06(月) 19:06:44.890796デフォルトの名無しさん
2011/06/06(月) 19:14:34.360797デフォルトの名無しさん
2011/06/06(月) 19:20:39.62〜 こっちはWindowsだと表示が変かも。
0798デフォルトの名無しさん
2011/06/06(月) 19:22:52.970799デフォルトの名無しさん
2011/06/06(月) 19:27:08.200800デフォルトの名無しさん
2011/06/06(月) 19:28:09.13どっちも普通
0801デフォルトの名無しさん
2011/06/06(月) 19:31:42.54どっちも同じ表示なんだけど
0802デフォルトの名無しさん
2011/06/06(月) 19:39:33.94それはどちらも"~"
問題になるのは"〜"
0803デフォルトの名無しさん
2011/06/06(月) 19:44:43.330804デフォルトの名無しさん
2011/06/06(月) 19:50:47.43まあ、学校はきちんと行っておけという話だな
0805デフォルトの名無しさん
2011/06/06(月) 20:56:04.00自分は高卒です。
0806デフォルトの名無しさん
2011/06/06(月) 20:56:23.31〜 FULLWIDTH_TILDE のハズ
〜 WAVE_DASH のハズ
0807デフォルトの名無しさん
2011/06/06(月) 21:00:53.100808デフォルトの名無しさん
2011/06/07(火) 01:04:06.200809デフォルトの名無しさん
2011/06/07(火) 02:18:03.560810デフォルトの名無しさん
2011/06/07(火) 06:46:48.67統一しようとしているUTF-8ですらウンコという…。
少なくともUTF-8の次に統一する文字コード決めといてくれ。
0811デフォルトの名無しさん
2011/06/07(火) 08:06:04.61UTF-8でいちおうの統一の方向性は打ち出されてはいるよ
UTF-8規格自体が引き起こす問題というのもあるんだけど、
実際は世界各地で実装した人が間違えた、または勝手に解釈した結果の実装バグが多い
0812デフォルトの名無しさん
2011/06/07(火) 08:50:21.94めんどくせえことに付き合わなきゃなんねえんだよ、と不満に思っている人はいるよね。
MLとかでたまにでてくるけど。
0813デフォルトの名無しさん
2011/06/07(火) 09:09:06.47C++のBoost.Localeでも英語メッセージが存在する前提での
メッセージカタログが標準になっちゃって悲惨なことになったらしいしなあ
0814デフォルトの名無しさん
2011/06/07(火) 11:32:39.45また、Rubyに限らずHTML整形ライブラリでメジャーなものってありますか?
0815デフォルトの名無しさん
2011/06/07(火) 11:55:36.650816デフォルトの名無しさん
2011/06/07(火) 13:30:23.80ありがとうございます
0817デフォルトの名無しさん
2011/06/07(火) 14:10:20.97ttp://pub.cozmixng.org/~the-rwiki/rw-cgi.rb?cmd=view;name=Ruby+Install+Guide%3A%3AUNIX%C1%B4%C8%CC
ここを見ながらインストールを進めていたのですが、./configureの所で
bash: .configure: No such file or directory
と出てきてしまいます
上記のエラーメッセージでぐぐったら、そもそも./configureが必要ないという話が出てきたので、./configure無しでmakeしようとしたら
no targets spesified and no makefile found
と出てきて、これでググるとmakefileがない場合のエラーのようです
で、そもそもconfigureっていうのがなんなのかググッてみたら、makefileを作る命令のようなので、no targets〜が出るってことはこれをする必要があると思うのですが、
どうすればいいでしょうか
0818デフォルトの名無しさん
2011/06/07(火) 14:26:07.90utf8に文句出すくらいならちゃんと英語の議論に参加してこいよって言われると思う。
国際会議ってそういうものだし。出席しない香具師は欠席裁判されて不利に成るだけ。
tppも先行合意している国同士でどんどん合意事項決まってるから、あとから参加予定の日本はそれに合意して参加するか参加しないかの行動しかない。
あとから蒸し返して日本の為に合意内容の変更なんて行動はまず認められない。
0819デフォルトの名無しさん
2011/06/07(火) 14:39:30.95極東板にお帰りください
0820デフォルトの名無しさん
2011/06/07(火) 14:40:07.43勝手に決められたものもあるという理解は必要
0821デフォルトの名無しさん
2011/06/07(火) 14:42:11.43cygwinはRubyをインストールするためのものじゃない
cygwinの深い知識がないなら使うのやめとけ
0822デフォルトの名無しさん
2011/06/07(火) 14:48:07.48「ASCIIのみじゃ困る人達」が今後多数派になっていくので、その点はあまり心配しなくていいよね。
あとunicodeは割と簡単に申請したり議論に参加したり出来るというか、
文字集合に旧カナ追加する提案したのは個人だし、
絵文字追加の議論での問題点をとりまとめて収拾したのは
さらに別の個人だったりするし。
0823デフォルトの名無しさん
2011/06/07(火) 14:53:03.281.8.7のpachlevelが古いやつならsetup.exeで入れられる
ruby 1.8.7 (2008-08-11 patchlevel 72) [i386-cygwin]
rvmを使って1.9.2p180を入れることもできるけどあまり勧めない
0824デフォルトの名無しさん
2011/06/07(火) 14:54:42.18大混乱じゃなかったけ? ユニコードって。
自分の名前も漢字で書けない奴ばっかりのクセに。
0825デフォルトの名無しさん
2011/06/07(火) 14:56:24.130826デフォルトの名無しさん
2011/06/07(火) 15:26:46.88最初のUnicodeは思いっきり勝手に決まったからな
世の中そんなもんだ
俺らが日本語以外のマルチバイトをわざわざ公募して考慮しないのと同じ
0827デフォルトの名無しさん
2011/06/07(火) 15:35:57.45それ、Han unificationの件をねじ曲げて覚えてないか?
旧カナの例のように、利用頻度が少なくても
必要性の説明がちゃんと出来るなら入るよ。
0828デフォルトの名無しさん
2011/06/07(火) 21:45:03.86初期の頃は日本国内ではユニコードに注目もしてなかったというより、jis/sjis/eucjで恒例の内輪主権争いしてたくらいだし。
そこはメールをjisに統一したワイドの人たちも海外の動向に食い込めてなかった。
0829デフォルトの名無しさん
2011/06/07(火) 21:58:05.28そんなアホな規格に賛同するわけないじゃん
もちろん間もなく破綻して汚い拡張仕様を策定
ついでに古ハングル5000文字だっけ? を追加してハングルは別領域に移動、
以前のバージョンとの互換性? なにそれ美味しいの?
素性が悪すぎるんだよ
とはいっても、現在じゃしっかり標準に
それはさておき、正規表現で文字コードを指定する“s”などのオプションは
1.9以降でほとんど意味がなくなった気がする
文字列がエンコード情報を持ち、厳密に区別する仕様だと2chのログのように
Windows-31J(CP932)と各社携帯絵文字が混在する超いいかげんなテキストの
処理で困る
0830デフォルトの名無しさん
2011/06/07(火) 22:53:21.40ttp://www.horagai.com/www/moji/code4.htm
0831デフォルトの名無しさん
2011/06/08(水) 00:32:29.04Javaが出てきたときもそうだったな
0832デフォルトの名無しさん
2011/06/08(水) 00:41:43.32>そもそも日本独自の漢字自体、輸入元の支那様にしてみれば漢字じゃねえよ!ってご立腹かもなw
つーても輸入元は輸入元で、簡略化させまくってどうなのよって状態だけどな
その言葉が言えるのは未だに繁体字使ってる台湾とか、中国の一部だけだと思う
0833デフォルトの名無しさん
2011/06/08(水) 00:53:31.19おしまいみたいな。
まだそのころの偏見というか、イメージが残っちゃってる。
0834615
2011/06/08(水) 01:11:57.711.9.2→1.8.7→1.9.2と結局1.9.2で頑張ってみることにしました
文字コードの扱いムズカシす・・・
# encoding UTF-8
$stdout.set_encoding(Encoding::Windows_31J, Encoding::UTF_8)
require 'rubygems'
require 'open-uri'
require 'nokogiri'
doc = Nokogiri::HTML(open(
"http://table.yahoo.co.jp/t?c=2011&a=2&b=28&f=2011&d=6&e=1&g=d&s=1554&y=0&z=8471&x=sb"),nil,"UTF-8")
p doc.class
doc.css("td").each do |td|
puts td.text
end
0835615
2011/06/08(水) 01:13:34.10どうも文字コードの扱いがおかしいようです・・・
docからtd部分だけ取り出して表示するってやってるつもりなんですが
文字コードのところでエラーが出てるみたいです
色んなサイトめぐって調べてみたんですがちょっと分からなくて
すいませんがお願いします
0836デフォルトの名無しさん
2011/06/08(水) 02:25:54.300837615
2011/06/08(水) 03:57:35.22それも試したつもりだったんですが、今もっかいやってみたら出来てしまった
なぜだ・・・
ほんと申し訳ありません・・・。ありがとうございます
0838デフォルトの名無しさん
2011/06/08(水) 05:30:21.80ひとつ
# coding:utf-8
だ
もうひとつ
$stdout.set_encoding(Encoding::Windows_31J, Encoding::UTF_8)
はバグの元なのでスクリプト完成前に使用してはいけない
0839デフォルトの名無しさん
2011/06/08(水) 07:18:27.340840デフォルトの名無しさん
2011/06/08(水) 08:12:58.080841デフォルトの名無しさん
2011/06/08(水) 10:28:28.03>バグの元なのでスクリプト完成前に使用してはいけない
望まれた新機能のハズなのに皮肉なもんじゃのう
まあ、機能的であることと初心者向けであることは同一じゃないか
0842デフォルトの名無しさん
2011/06/08(水) 10:39:56.89何でも出来る機能充実だと、どうすればいいのか分からなく成るのが入門者。
0843デフォルトの名無しさん
2011/06/08(水) 11:34:49.34例えばですが、2ちゃんねるのスレッドを取り扱うthread.rbを書いた場合、
$:の検索順位的には全く別物の標準ライブラリであるthread.rbを読み込んでしまいます。
0844デフォルトの名無しさん
2011/06/08(水) 11:38:44.16Ch2::Thread とモジュールネストして ch2/thread.rb とディレクトリ掘って ch2.rb には require 'ch2/thread' と書く
これなら require 'ch2' でうまく動く
トップレベルのモジュールを作るのは必須に近い
それすら被ることも、まあ。gem間ではあるんだが
0845デフォルトの名無しさん
2011/06/08(水) 11:39:35.32名前の頭か終わりに何かつけるとか、クラスをネストさせて下位フォルダに置くとか。
0848615
2011/06/09(木) 00:59:14.732次元配列に格納するところまですすめました
この配列データをcsv形式か何かで保存したいのですが
どういった感じですればよいのでしょうか?
require 'csv'してやるっぽいのですがよく分からなくて・・・
0849615
2011/06/09(木) 01:07:58.29# coding UTF-8
require 'rubygems'
require 'open-uri'
require 'nokogiri'
require 'kconv'
# データ格納用の2次元配列の初期化
height = 50
width = 6
stockdata = Array.new( height, nil ) # 各要素は、とりあえずnilで初期化.
stockdata.length.times{ |y| # 要素の数だけ..
stockdata[y] = Array.new( width, 0 ) # 各要素について、new.
}
0850615
2011/06/09(木) 01:09:10.27roop_count=0
i=0
j=0
doc = Nokogiri::HTML(open(
"http://table.yahoo.co.jp/t?c=2011&a=2&b=28&f=2011&d=6&e=1&g=d&s=1554&y=0&z=8471&x=sb"),nil,"EUC-JP")
doc.css("small").each do |small|
doc_text=small.text
if /分割による/=~doc_text #株価データ部分が終わればループを終わる
break
end
unless /\d+/=~doc_text #文頭からの数値以外の部分は読まない
next
end
#株価データを二次元配列stockdata[i][j]に格納
#行データiはループカウントの商jはるーぷカウントの余りにあたる
i=roop_count.div(7)
j=roop_count.modulo(7)
stockdata[i][j]=doc_text
puts "stockdata[#{i}][#{j}]=#{stockdata[i][j]},roop_count=#{roop_count}".tosjis
roop_count+=1
end
あと、あんまりこうやってコードずらっと書かない方がいいですよね・・・
どうしたらいいんでしょう・・・
0851デフォルトの名無しさん
2011/06/09(木) 01:14:02.56ttp://ideone.com/
0852デフォルトの名無しさん
2011/06/09(木) 01:19:46.71http://www.ruby-doc.org/stdlib/libdoc/csv/rdoc/classes/CSV.html
Writing
To a File
のあたり。
コード貼るならgist.github.comでも使えばいいんじゃない? 色付けもされるし。
0853デフォルトの名無しさん
2011/06/09(木) 06:51:00.83Stringオブジェクトを中間形式としてライブラリ間で遣り取りできるということがわかっていれば済むはず
AというライブラリからBというライブラリへデータを受け渡ししたい場合、
Bが受け付けるオブジェクトをAに書き出させるか、
Aが書き出せるオブジェクトからBが受け付けるオブジェクトに自力で変換すればいい
受け渡しに使われるオブジェクトはたいていStringかStringのHashかStringのArrayだ
コード書いてる最中になんの気なしにputsして値確かめたりするが、
puts可能ということはそれは文字列(にto_sすれば変換可能)ということで重要な示唆だったりする
「さっきまでputsしてた文字列を他のライブラリに渡して作業続行」みたいな考え方をよくする
それと、そのスクリプト書くのに参考にした解説はRuby的に役に立たないので今すぐ燃やして捨てろ
0854デフォルトの名無しさん
2011/06/09(木) 06:54:59.42というのを使いたいのですが、プログラミングには殆ど縁がなく
導入の仕方がわかりません。(C言語をコンパイルして実行くらいならあります
おおまかにでもいいので教えてください。お願いします。
http://d.hatena.ne.jp/kenkitii/20081223/p1
0855デフォルトの名無しさん
2011/06/09(木) 07:26:52.87絶対教えてやんねー手作業でダウンロードしろやバーカバーカと過去の職業倫理が囁いておる
が、まあ、あのアメブロが損するだけなら別にいいか
Rubyスクリプトなので、Ruby実行環境のインストールが必要
mechanizeというgemライブラリが必要なので、そのインストールも必要
正規表現の関係上UTF-8でないと動作しないので、スクリプトはUTF-8で保存しておく
ていうかこのスクリプト、自動で止める方法がないんだけど
そのサイトに存在する全ページを取得するまで止まらない
1週間後に新しい画像を取得しようとしても、また全ページをページあたり3秒かけて取得する
他のプログラム使ったほうがよくないすかこれ
0856デフォルトの名無しさん
2011/06/09(木) 07:35:44.85今、Ruby192をインストールしました。(C:\Documents and Settings\user
rubygems-update-1.8.5.gemをダウンロードしました。(C:\Documents and Settings\user\Ruby192
ameblo_downloader.rbをダウンロードしました。(C:\Documents and Settings\user\Ruby192
コマンド開いたらC:\Documents and Settings\user>_ と出ます。
mechanizeのインストールコマンド教えてください。
0857デフォルトの名無しさん
2011/06/09(木) 08:09:09.06出来ました ありがあとうございました
0858デフォルトの名無しさん
2011/06/09(木) 08:26:54.46Rubyの配列は自動で増えるもので初期化なんて必要ないし(どこの方言?)、
配列自身に枚挙させるものでループカウンタなんて使ったりしない(ていうかループカウンタって何?)
>>849
# coding:UTF-8
require 'open-uri'
require 'kconv'
require 'rubygems'
require 'nokogiri'
#html = open('kabuka.html','rb'){|f| f.read} # ネットにアクセスしないで済むテスト用
html = open("http://table.yahoo.co.jp/t?c=2011&a=2&b=28&f=2011&d=6&e=1&g=d&s=1554&y=0&z=8471&x=sb").read
data = []
doc = Nokogiri::HTML(html.toutf8)
# <table cellpadding="5">なテーブルの2番目(1要素目[1])から<tr>を探し、0要素目を飛ばした配列[1..-1]をeach
doc.search('table[cellpadding="5"]')[1].search('tr')[1..-1].each do |tr|
# <tr>の中にある<td>を探して、テキストだけにしてカンマを削除したものを配列にしてdataに追加
data << tr.search('td').map{|td| td.inner_text.gsub(/,/){''}}
end
# タブ区切りのようなもので保存
File.open('kabuka.tsv','wb'){|f| data.each{|line| f.puts line.join("\t")} }
# 読み込みテスト
require 'pp'
pp File.open('kabuka.tsv','rb').readlines.map{|line| line.chomp.split("\t")}
0859デフォルトの名無しさん
2011/06/09(木) 09:37:24.46配列の配列を出力するだけならいちいちライブラリ使わないで
File.open('name.csv','w'){|f| f.write(arys.collect{|ary| ary.join(',')}.join("\n")}
とワンライナー書く方がはやそう。
0860デフォルトの名無しさん
2011/06/09(木) 09:38:39.21ですが、文章をHTML化するときにどのようにすれば修飾できるかの情報はあるのですが、
「引数はこのように記載する」「戻り値はこのように記載する」といったガイドラインが見当たりません。
皆さんどのようにされてますでしょうか?
0861デフォルトの名無しさん
2011/06/09(木) 09:53:53.07あのねえ、それは数年来の検討課題なの
Rdoc以外だと、YARDというのがあって、以前はへぼかったんだけど最近はそれなりに見やすい
# Encodes a set of key/value pairs according to the rules for the
# <code>application/x-www-form-urlencoded</code> MIME type.
#
# @param [#to_hash, #to_ary] form_values
# The form values to encode.
#
# @param [TrueClass, FalseClass] sort
# Sort the key/value pairs prior to encoding.
# Defaults to <code>false</code>.
#
# @return [String]
# The encoded value.
def self.form_encode(form_values, sort=false)
...
みたいに、
「@param [引数クラス] 引数名 以下字下げで引数説明」
「@return [戻り値クラス] 以下字下げで戻り値説明」
と書くと、こんな感じのマニュアルになる
ttp://addressable.rubyforge.org/api/Addressable/URI.html#form_encode-class_method
0862デフォルトの名無しさん
2011/06/09(木) 09:57:38.60配列の配列を作って初期化したいならブロック使って
stockdata = Array.new(height){ Array.new(width, 0) }
とすれば一発で2次元で初期化できるお。
0863デフォルトの名無しさん
2011/06/09(木) 09:58:05.42これを見るといい、というのはちょっとわかんない。
0864デフォルトの名無しさん
2011/06/09(木) 10:04:11.40read 可能なオブジェクトならなんでもいい場合は #read と書く
TrueClass と FalseClass はあんまりにも面倒でマニュアルも読みにくいので、細かいこと気にせず Boolean と書いてもいい
- (Boolean) hoge_exists?
hoge があるかどうか返す
のように表示されてちょっとわかりやすげ
あんまりにもJavaっぽいという指摘は時々見るのだが、
読み書きがめんどくさ過ぎない引数解説マニュアルって結局あんな感じになるんじゃないのという観測が多勢
なお、多言語化は全く考慮されていない
日本語と英語を併記できてきちんと稼動するマニュアルシステムをRubyで見たことはまだ無い
0866615
2011/06/09(木) 14:22:56.29ありがとうございます。フルボッコで泣いたw
しかしこんなにシンプルなコードになるんですねぇ
これからがんばって勉強していきます
0867デフォルトの名無しさん
2011/06/09(木) 14:32:32.73Rubyの教えられ方が悪かっただけだ
0868デフォルトの名無しさん
2011/06/09(木) 15:11:49.69625 名前:デフォルトの名無しさん [sage]: 2011/06/09(木) 14:46:00.97
yukihiro_matz: 長女はありふれた名前に不満みたいだけど、苗字は先祖
が決めたものだし、あんまり独創的な名前もねえ。結婚を機会に苗字を
変えるか、通名を使うか。私のひらがな表記もありふれた名前への対抗だしね。
^^^^^^^^^^^^^
626 名前:デフォルトの名無しさん [sage]: 2011/06/09(木) 14:49:27.14
ぽろっと言っちゃったー
日本人には通名を使うなんて事思いつきません。
通名、通名、痛名か
通名なんて言葉使ったことねーよ
どうやったら通名なんて使えるんです?
0869デフォルトの名無しさん
2011/06/09(木) 16:24:59.87C:\aaa\zzz\vvv\test.txt
test.txtを基準にfile.txtへの相対パスは../../bbb/ccc/file.txtです
Rubyでこのように相対パスを求める方法ってございませんか?
C#だとhttp://dobon.net/vb/dotnet/file/getabsolutepath.html#section1のようなのです
0870デフォルトの名無しさん
2011/06/09(木) 16:27:12.680871デフォルトの名無しさん
2011/06/09(木) 16:28:54.11basedir = Pathname.new('C:/aaa/bb/file.txt')
abspath = Pathname.new('C:/aaa/zzz/test.txt')
relpath = abspath.relative_path_from(basedir)
puts relpath
ってやると../が1個多くくっついてしまいます
間違っている箇所をご指摘お願いします
0872デフォルトの名無しさん
2011/06/09(木) 16:35:31.660873デフォルトの名無しさん
2011/06/09(木) 16:41:05.35ファイル名を抜かして実行するようにしてみます
ありがとうございます
0874デフォルトの名無しさん
2011/06/09(木) 17:24:57.37ひょっとして通名が(特定の立場の人が使う変名という意味でなしに)
一般的な語彙だってことも知らないような子が来ちゃった?
0875デフォルトの名無しさん
2011/06/09(木) 18:40:26.24625の書き込みの中で通名を一般的な語彙で使っているの?
あなたの言う一般的な意味を教えて下さい。
0876デフォルトの名無しさん
2011/06/09(木) 18:47:29.090877デフォルトの名無しさん
2011/06/09(木) 18:49:44.73「世間で通用(させようと)?している名前」
外国人(在日に限らず。どこの国でも)がよく使うってだけで、
別に外国人に限ったものではないよ。
0878デフォルトの名無しさん
2011/06/09(木) 19:11:29.51娘に対してそんな風に言うか?
0879デフォルトの名無しさん
2011/06/09(木) 19:14:14.85娘が普通すぎる名前が嫌だと言ってるから
0880デフォルトの名無しさん
2011/06/09(木) 19:14:42.07「そんなに名前が不満なら長いこと通名使って改名すればいい」
ってことだろ。
名前が不満で通名使い続けて通名の方がずっととおりがよくなったところで
改名ってのは例があるし。
0881デフォルトの名無しさん
2011/06/09(木) 19:17:47.01俺も子供の頃に思ったよ、今日から長宗我部にしようって
0882デフォルトの名無しさん
2011/06/09(木) 19:32:34.48メンテナさんも気が楽なんじゃないかという気がするんだけど、どうかな。
Ruby 本体と Tcl/Tk とで、どっちのバージョンに強く依存するか、
前者ならば標準添付が良いけど、後者なら gem の方が良いかなと思う。
0883デフォルトの名無しさん
2011/06/09(木) 19:32:46.31超☆宗我部とかならよかった
0884デフォルトの名無しさん
2011/06/09(木) 20:03:32.80これって読めねーよな
ちょうがぶ とかしらねーよ
0885デフォルトの名無しさん
2011/06/09(木) 20:15:13.50ああ、あと、四国の中学校の歴史の授業
>>882
昔どうしようかという話が出た頃はrubygemsという選択肢がなかったのよね
今なら、もしかしたらgemにしようという話になるかも
0886デフォルトの名無しさん
2011/06/09(木) 20:25:57.89標準で付いてきてませんでしたよ
0887デフォルトの名無しさん
2011/06/09(木) 20:47:31.86読めない名前よりも、普通の名前のが全然良いのに…
0888デフォルトの名無しさん
2011/06/09(木) 21:25:45.970889デフォルトの名無しさん
2011/06/09(木) 22:26:56.120890デフォルトの名無しさん
2011/06/09(木) 23:27:20.260891デフォルトの名無しさん
2011/06/10(金) 00:37:02.92のRangeオブジェクトとか?
0892デフォルトの名無しさん
2011/06/10(金) 00:40:51.800893デフォルトの名無しさん
2011/06/10(金) 00:57:29.21case
when x == 0
when x < 0
when x > 0
end
それ以前に無理に case 〜 when 使わずに if 〜 elsif で書いちゃうことも多いが
0894デフォルトの名無しさん
2011/06/10(金) 01:22:04.28「負の数」みたいなおーざっぱなのは要素無限だから、case x when ... の形式では「書けない」
>>893のように case を空にして、when を変数入りにするのがいちばん妥当
この書き方は elsif とあんまり変わらないので、正直あんまり嬉しくない
0895デフォルトの名無しさん
2011/06/10(金) 01:33:09.72範囲オブジェクトはなんか離散的な整数っぽいオブジェクトなイメージがどうにも抜けない
0896デフォルトの名無しさん
2011/06/10(金) 01:53:07.37x > 0 相当の方は始点を含まない範囲だからRangeで書けないよな
0897デフォルトの名無しさん
2011/06/10(金) 09:01:54.73>>892
「書けない」は嘘
>>896
まあ先に == 0を判定しておくとかそういうきれいじゃないやり方になるんだろうね。
0898デフォルトの名無しさん
2011/06/10(金) 09:16:00.42普通に
case x <=> 0
when -1 then
when 0 then
when 1 then
end
では?
0899デフォルトの名無しさん
2011/06/10(金) 09:24:29.55>>897
1.9系ならwhen proc{}で、それ以前でもwhenに書く値に特異メソッドとして===追加すれば書けんこともないが、正直冗長だなw
0900デフォルトの名無しさん
2011/06/10(金) 09:34:02.28[-3,0,3].each do |x|
print "#{x}:"
case x
when ->x{x<0}; puts "negative"
when 0; puts "zero"
when ->x{x>0}; puts "greater than 0"
end
end
0901デフォルトの名無しさん
2011/06/10(金) 09:49:32.01「書けない」で正しいよ
範囲が定まらないタイプは基本的に記述できない
たとえば、2012年1月1日以降、とか
書けるからといって、それをやっていいかどうかはかなり別
初心者スレにありがちだが
0902デフォルトの名無しさん
2011/06/10(金) 09:56:11.200903デフォルトの名無しさん
2011/06/10(金) 09:58:40.46-Float::INFINITY...0
でイテレーションすることはできないが、
このRangeに含まれるかどうかの確認なら問題ない。
caseに変数を書かずにwhenに直接条件式を書くとか、
if elsif...で書く方が妥当ではあるが、
普通に書けるものを手法として妥当でないからって
「書けない」と言ってはいけない。
0904デフォルトの名無しさん
2011/06/10(金) 10:10:39.09じゃあそれでいいじゃんね、という感じ
def (UnderZero = Object.new).===(x) x < 0 end
[1, 0, -1].each {|x| puts case x when UnderZero then "-" else "+" end }
0905デフォルトの名無しさん
2011/06/10(金) 10:15:34.83書けないと「書けない」にはわりと溝があるんじゃないかと
カッコ重要
0906デフォルトの名無しさん
2011/06/10(金) 10:19:21.91それは
書かない
とか
書くべきでない
とでも言うべきものだよ。
そんなオリジナルルールで「」を使われても。
0907デフォルトの名無しさん
2011/06/10(金) 10:29:24.40(書けないわけではないが)「書かない」みたいな表現をした方がいいんじゃないかな。
>>906みたいな奴って何言っても引き下がらんし。
0908デフォルトの名無しさん
2011/06/10(金) 10:30:12.29思わせぶりにさせてニヤニヤするのはオタクの悪い癖だ
0909デフォルトの名無しさん
2011/06/10(金) 10:34:04.86やろうと思えばできるけどね(知りたい?)、みたいな情報って初心者にとって(中級者以上にとっても)いらないっていうか凄い邪魔
どうせ使わないんだし、ないことにしたほうがいい
>>893-894で納得しない回答人はいろいろ省みたほうがいいと思う
0910デフォルトの名無しさん
2011/06/10(金) 10:39:13.860911デフォルトの名無しさん
2011/06/10(金) 10:40:21.00実際にもう>>892が書かれちゃってるわけだから、「書けない」なんて変な表現しないで
「>>892みたいに書けないこともないけどまわりくどいしわかりにくいから>>893」
みたいに事実をありのままに書けばいいだけ。
既に>>892が書かれてんのに
「やろうと思えばできるけどね(知りたい?)」って状況じゃないでしょ。
「書けない」なんていわれても初心者は
「>>892でできるみたいじゃん書けないってどゆこと?」となるのがオチ。
0912デフォルトの名無しさん
2011/06/10(金) 10:54:39.04彼らは自分たちの知識ひけらかし大会を邪魔されると今のように激しく突っかかってきます
質問者のことなんてどうでもいいと思ってるので、放置が原則
0913デフォルトの名無しさん
2011/06/10(金) 10:58:06.650914デフォルトの名無しさん
2011/06/10(金) 11:00:50.940915デフォルトの名無しさん
2011/06/10(金) 11:04:33.24・Float::INFINITYによって∞の概念が使える
ってのは質問者にとって有益な情報だけどな
0916デフォルトの名無しさん
2011/06/10(金) 11:11:08.67初心者が読んだら強調のカッコと勘違いしても仕方ないな
0917デフォルトの名無しさん
2011/06/10(金) 11:19:55.01「食べてんじゃん!!!!」って突っ込み食らうわ。
「見てのとおり食べられないこともないんだけど、不味いんだよねー」ってーのがまともな人間の回答。
0918890
2011/06/10(金) 11:41:50.50おおまかな下限が分かっているのでRangeで書くことにします
0919デフォルトの名無しさん
2011/06/10(金) 12:09:25.89case
when x >= 0 && x < 1
when x >= 1 && x < 10
...
と
case x
when 0...1
when 1...10
...
とじゃ前者の方が1.8で約1.2倍くらい、1.9で数倍速いから
そんなに頻繁に繰り返さないなら見やすいRange
何度も何度も判定するようなら速い >= && < と使い分けるといいと思う
0920デフォルトの名無しさん
2011/06/10(金) 12:27:27.02どちらかってと、無限大のRangeが原因だと思う
これ、いわゆるハックだろ
こんな書き方してる人見たことないし、誰かが書いてたら第二のcgi.rbを生ませないよう注意するレベル
0921デフォルトの名無しさん
2011/06/10(金) 12:39:13.57・ Rangeは始点と終点のデータしかもたない
・ Range#=== は Range#include? で、始点 < x かつ x < 終点 なら true
という処理をするということを踏まえた上での、なんぞトリッキーな書き方であることは認める
to_a してどうなるかさっぱりわからんのだがどうなるんだろう
0922デフォルトの名無しさん
2011/06/10(金) 12:46:57.55Float::INFINITYが入ったのが1.9.2からだからあまり見かけないんだろう
0923デフォルトの名無しさん
2011/06/10(金) 12:47:02.14>>894の2行目が電波すぎるだけ。
>要素無限だから、case x when ... の形式では「書けない」
実数のRangeはstepするためだけのもので
cover?とか===してはいけないと言ってるようなものだよ、これ。
0924デフォルトの名無しさん
2011/06/10(金) 12:47:22.03じゃあなんでそれを自力で書いた>>919は速いん?
0925デフォルトの名無しさん
2011/06/10(金) 12:51:48.29INFINITY関係なく、
RangeにFloat使った時点でeachできないからto_aもできない
0926デフォルトの名無しさん
2011/06/10(金) 12:54:04.94>実際にもう>>892が書かれちゃってるわけだから、「書けない」なんて変な表現しないで
>「>>892みたいに書けないこともないけどまわりくどいしわかりにくいから>>893」
>みたいに事実をありのままに書けばいいだけ。
ほんとその通り。これが理解できないやつはたいていコミュ障。
0927デフォルトの名無しさん
2011/06/10(金) 12:59:36.24なんか最低だなこのスレ
0928デフォルトの名無しさん
2011/06/10(金) 13:04:18.24-Float::INFINITY...0
はstepもまともな結果にならないから===するしか使い道がない。
===に使うのはバカバカしいが===にしか使えない誰得オブジェクト
0929デフォルトの名無しさん
2011/06/10(金) 13:18:47.590930デフォルトの名無しさん
2011/06/10(金) 14:10:54.77Class#methodの「#」とか、
こういう書き方の説明って、
どこかにまとまってる?
ググろうにも記号じゃまともに検索できないし、
記法って言うのかなんて言うのか呼び方が分からんから、
調べるに調べられん
0931デフォルトの名無しさん
2011/06/10(金) 14:12:58.23http://www.ruby-lang.org/ja/man/html/Ruby_A4C7BBC8A4EFA4ECA4EBB5ADB9E6A4CEB0D5CCA3.html
余計な記述も多いけど、こういうの?
0932デフォルトの名無しさん
2011/06/10(金) 14:25:05.25ありがとう
というか白状すると、
インスタンス変数についてClass#methodみたいに書く時の記法が知りたかったんだ
この説明には入ってないんだけど、
.でいいの?
よかったら教えてください
0933デフォルトの名無しさん
2011/06/10(金) 14:36:03.26それはない
オブジェクトの中のインスタンス変数を利用する機会がかなり稀であることが一因なんだと思う
def hoge
@hoge
end
の場合は「(オブジェクトselfの)インスタンス変数@hogeを返します」としか書かない
ものすごーく稀に、「Hogeクラスのオブジェクトのインスタンス変数@val」を Hoge@val と書くことはあるんだが、
変な記述であることは否めないし、あんまりコンセンサスが得られてる気もしないな
0934デフォルトの名無しさん
2011/06/10(金) 14:41:19.10意識しなくていいもののはずだからなあ。
0935デフォルトの名無しさん
2011/06/10(金) 14:44:09.90>>934
わかりました、
ありがとう
0936uy
2011/06/10(金) 16:18:15.23a=Hash.new
a[:aa] =44
a[:bb] =324454
a[:cc] =3355
a[:dd] =32455
a.each do | m |
a = a.merge(:ee => 88666)
end
p a
a.each do | m |
a[:ssstt] = 1111 # []=': can't add a new key into hash during iteration (RuntimeError)
end
いいの? これ?
どうせならもう []=': can't add a new key into hash during iteration (RuntimeError)ださないほうがいいんじゃないの?なんなの?
[]=': can't add a new key into hash during iteration (RuntimeError) って一体なにがしたかったの?
???????????
0937デフォルトの名無しさん
2011/06/10(金) 16:29:12.66最初のaには何も追加してないし
0938デフォルトの名無しさん
2011/06/10(金) 17:10:23.48merge!しないと別オブジェクトを作っちゃいますよ
1.9.2ではちゃんとエラーではじかれます
1.9.2未満だとmerge!が動いちゃいますが、対応漏れだったのでしょう
新規のキーをmerge!していくと無限ループしてしまいますから
0939デフォルトの名無しさん
2011/06/10(金) 17:16:30.75a?
0940デフォルトの名無しさん
2011/06/10(金) 17:20:37.670941デフォルトの名無しさん
2011/06/10(金) 17:54:16.36いってらー
https://github.com/rubygems/rubygems/issues
0942デフォルトの名無しさん
2011/06/10(金) 17:59:58.78a.mergeで生成されて新たにaにバインドされるオブジェクトと
a.eachで回ってるオブジェクトは別ものだし、
eachはループ一回ごとにaの参照を辿り直したりしないって話なのかな
0943デフォルトの名無しさん
2011/06/10(金) 18:41:57.87俺も聞きたい。
>>937はこの流れでいったいどこからaなんて言い出したのか。
0944デフォルトの名無しさん
2011/06/10(金) 19:00:31.280945デフォルトの名無しさん
2011/06/10(金) 20:49:27.51分かりづらすぎて「お前らこそ何言ってんだ」って感じだった
0946デフォルトの名無しさん
2011/06/11(土) 21:09:14.21結構NG登録してんだな
0947デフォルトの名無しさん
2011/06/11(土) 21:11:47.010948デフォルトの名無しさん
2011/06/11(土) 21:48:46.660949615
2011/06/11(土) 23:04:36.25CSV.open('meigaralist.csv', 'r') do |row|
puts row
end
銘柄リストの中身
1301 極洋 東1
1332 日本水産 東1
・
・
・
コードと同じディレクトリに入れてあります
csv→stringにして表示させたいだけなのですが、
ちょっとよく分からなくて・・・
すいませんがお願いします
0950デフォルトの名無しさん
2011/06/11(土) 23:06:58.210951615
2011/06/11(土) 23:59:22.94このmeigaralist.csv
にあるデータを読み込んで(中身は上述)stringの形で
データを表示させたいのですが思惑通りにならず
#<CSV:0x128f7f0>とだけ表示されます
どこがおかしいか等指摘していただければと思います
よろしくお願いします
0952デフォルトの名無しさん
2011/06/12(日) 00:07:27.06puts row
end
で配列として取得できる
0953デフォルトの名無しさん
2011/06/12(日) 00:10:55.971.9のopenはブロックにrowでなくcsvを渡す
0954615
2011/06/12(日) 00:15:59.25ありがとうございます
foreachをそのままやると
C:/Ruby192/lib/ruby/1.9.1/csv.rb:1892:in `block (2 levels) in shift'
: Unquoted fields do not allow \r or \n (line 2). (CSV::MalformedCSVError)
でエラーはきました。改行文字とか入ってるとダメよ?ってことなんですかね?
0955デフォルトの名無しさん
2011/06/12(日) 00:30:06.01Ruby 1.9 - Bug #1075: \r\n と \n が混在した CSV がエラーになる - Ruby Issue Tracking System
http://redmine.ruby-lang.org/issues/show/1075
0956uy ◆yyC0rYWEq2
2011/06/12(日) 00:42:11.81.hashでハッシュ値くらい確認してからレスしろよゴミ
0957デフォルトの名無しさん
2011/06/12(日) 00:44:17.97エクセルのエクスポートでも普通に混在されてたりするの?
0958615
2011/06/12(日) 00:49:54.02これでも分かる範囲で調べながら自分で考えて書いてるんですが
こういう初歩的なつまりが解決出来なくて、
よく1時間くらい悩むんですよ。勉強不足です
一応後は銘柄でループさせれば完成するところまで来てるんですが
教えてちゃんになってますね。すいません
みなさんある程度コード書けるようになるまでどうやって勉強したんですか?
やっぱり自分で書いてみるより人の書いたの読んでいく方がいいのかなぁ
0959デフォルトの名無しさん
2011/06/12(日) 00:56:57.63さっさと消えろよ
0960uy ◆yyC0rYWEq2
2011/06/12(日) 00:57:52.90見事に無限ループになる
なぜハッシュ側でだけエラーを出しているのか不明
俺がなぜこんなにこのエラーにつっかかるかっていうと、このエラーが出るせいで組みずらい箇所に当たってる
ハッシュ使って木構造染みたソース書いてるからな
[Aタスク]
│
┌─┴─┐
[Bノード] [Cノード]
こうあるときに
CノードからAタスクへ[Dノード]の追加という処理が出来ない
それはつまり、Bノードをウィンドウと見立てて、Aタスクがウィンドウ管理のタスクだとした場合
Bのノードにあるウィンドウから、新規ウィンドウを作るときにAタスクへの追加が出来ない == 詰んでるって事
正直これを無限ループになるのが心配でえらーだしてるんだよ とかいってる奴はバカすぎる・・・
無限ループにならないように制御していくのがプログラミングだろうが
予想するに、そういう仕様にするしかない何らかの事情が絡んじゃってんだろ
[key,value]の値を持った配列で書き直したほうがいいかと思うレベル
0961uy ◆yyC0rYWEq2
2011/06/12(日) 00:59:08.61あ?誰に口きいてんだお前
技術的に完膚なきまでにぶっ潰されそんな幼稚な反論も出来なくなっちゃった子ですかア?
0962デフォルトの名無しさん
2011/06/12(日) 01:02:29.43誰に対するレスだ?
0963uy ◆yyC0rYWEq2
2011/06/12(日) 01:23:30.990964デフォルトの名無しさん
2011/06/12(日) 01:28:28.74ノードを巡る処理とノードを追加する処理を分離すればいいんじゃないの?
イテレーションで各ノードを巡りながら追加するノードをプールしてイテレーション後にノードを追加する
0965デフォルトの名無しさん
2011/06/12(日) 01:30:16.830966デフォルトの名無しさん
2011/06/12(日) 02:31:57.85ああ、あのストーカーはお前か。
0967デフォルトの名無しさん
2011/06/12(日) 02:36:55.45> eath_with_object , rotate , cycle , instance_exec __method__ , DATA , erb , instance_eval このあたりの動作わかるか?
> each_with_objectだろ、いきなりスペル間違えてるぞ禁書目録w
あのストーカーもtypoすげー多かった。
コンピュータの歴史の基本部分には詳しかったけど
肝心の言語の知識が皆無だし間違いを訂正しないから専門学校レベルかなと思ってたけど、ビンゴだなこれ。
0968けいたいうゆ
2011/06/12(日) 02:57:16.16黙れカス
解決方法なんてきいちゃいないしそんなコードはまず書かない
Rubyのゴミ的な部分をね
こっちの世界で影響力のあるお偉いさんが口をとがらせる前に言語のおかしな場所を指摘してやってるだけ
一応これでも応援してる言語だから
配列では可能でハッシュではだめという
しかも回避方法なんていくらでもある
このエラーがいかに不自然なものであるか
それさえもここの奴らは見えないようだな
0969デフォルトの名無しさん
2011/06/12(日) 03:04:02.38難しい事まで付き合いきれないよ。
0970デフォルトの名無しさん
2011/06/12(日) 03:08:56.690971デフォルトの名無しさん
2011/06/12(日) 03:16:49.06これ普通は気づかないと思う
まあいいけど
>>958
RubyのCSVライブラリは小難しいことに定評がある
毎回マニュアル読まないとぜんぜん書けない
できれば使いたくないもののひとつ
0972デフォルトの名無しさん
2011/06/12(日) 03:22:38.470973デフォルトの名無しさん
2011/06/12(日) 03:48:17.980974デフォルトの名無しさん
2011/06/12(日) 03:53:32.78複数人で使うようなフォーマットとしては駄目。
0975デフォルトの名無しさん
2011/06/12(日) 03:59:05.94どうでもいいことにこだわってるから何も出来ないままなんだよ
0976デフォルトの名無しさん
2011/06/12(日) 04:09:41.68sed+awkでも簡単に処理出来るし、LLでもCでも扱うのは楽
0977デフォルトの名無しさん
2011/06/12(日) 04:59:39.95へたにリッチなXMLとかで情報交換はめんどくさい
0978デフォルトの名無しさん
2011/06/12(日) 06:02:41.370979デフォルトの名無しさん
2011/06/12(日) 07:32:37.47CSVフォーマットなどというものはない
…というかむしろ、どこかの誰かがきちんと決めててくれさえすれば問題なかったんだよ
0980デフォルトの名無しさん
2011/06/12(日) 10:13:13.150981デフォルトの名無しさん
2011/06/12(日) 10:16:18.31Ruby1.9.2 p180から全然バージョンアップしないんですが
0982デフォルトの名無しさん
2011/06/12(日) 10:21:56.01イテレーション中のハッシュに値を追加するなんてコードはまず書かない
エラーが不自然であると思うのならバグレポートとして勝手に報告しろ
0983デフォルトの名無しさん
2011/06/12(日) 10:34:10.310984デフォルトの名無しさん
2011/06/12(日) 10:45:41.53追加分もそのまままわして欲しいことがままあるから配列はOKなんだろうね。
配列とハッシュは同じコレクションと言っても根本的に別物だもの。
同じ仕様を要求する方がおかしい。
0985デフォルトの名無しさん
2011/06/12(日) 10:58:33.59>追加分もそのまままわして欲しいことがままあるから配列はOKなんだろうね。
本当にそんなこと考えてると思ってるのか?
0986デフォルトの名無しさん
2011/06/12(日) 11:07:05.31ハッシュには順序の概念は無いよね?
ハッシュを総なめ中にエントリを追加しても、順序づけの基準によっては現在位置の
前かもしれないし後かもしれない
そこら辺の意味合いで禁止されてるんじゃないかな
0987デフォルトの名無しさん
2011/06/12(日) 11:07:42.13本質的に順番の観念がないから、
「加えられたものは最後に処理する」ってのも仕様としては気持ち悪いし……。
0988デフォルトの名無しさん
2011/06/12(日) 11:09:03.280989デフォルトの名無しさん
2011/06/12(日) 11:12:12.54privateとかprotectedとか……。
0990デフォルトの名無しさん
2011/06/12(日) 11:14:02.22ヘンなの。
0991デフォルトの名無しさん
2011/06/12(日) 11:22:04.781.9からの仕様で名前はともかく機能そのものは便利
次スレを誰かおねがい。気軽に立てられる人は少ないだろうが
0992デフォルトの名無しさん
2011/06/12(日) 11:27:12.14http://hibari.2ch.net/test/read.cgi/tech/1307845568/
はい。テンプレ前スレのとこ以外ここの>>1そのままだけどいいよね?
0993デフォルトの名無しさん
2011/06/12(日) 11:33:27.00順序のない列挙なら最後に銜えるのが当然であり、
順序のある列挙なら銜えないのが当然。
0994デフォルトの名無しさん
2011/06/12(日) 11:33:39.62イケメンおつ
テンプレは前は2-5があったけど無くても問題なさそうだから
これでいいんじゃないかな
0996デフォルトの名無しさん
2011/06/12(日) 11:43:59.22根拠のない「当然」は受け入れられないなあ。
順序のある列挙なら加えられた後の順序でそのまま続行すりゃいいだけだし。
0997デフォルトの名無しさん
2011/06/12(日) 11:47:08.28実装そっちのけであるべき論やっても虚しいでしょ
0998デフォルトの名無しさん
2011/06/12(日) 11:48:01.66順序のない列挙なら加えないのが当然。
順序がないのに「最後」ってなに?
0999デフォルトの名無しさん
2011/06/12(日) 12:56:46.341000デフォルトの名無しさん
2011/06/12(日) 13:02:55.7510011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。