Ruby 初心者スレッド Part 42
レス数が1000を超えています。これ以上書き込みはできません。
★注意★ 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/04/21(木) 17:14:27.440003デフォルトの名無しさん
2011/04/21(木) 17:46:13.300004デフォルトの名無しさん
2011/04/23(土) 01:26:18.19'10' + 1 => '101'
10 + '1' => 11
こういう仕様じゃ何で駄目なの?
0005デフォルトの名無しさん
2011/04/23(土) 01:30:27.980006デフォルトの名無しさん
2011/04/23(土) 01:35:27.450007デフォルトの名無しさん
2011/04/23(土) 01:50:28.050008デフォルトの名無しさん
2011/04/23(土) 01:51:41.17Rubyの整数や文字列は型(Type)じゃなくてクラスだから
0009デフォルトの名無しさん
2011/04/23(土) 02:15:52.63def coerce(other)
case other
when Integer then [other,to_i]
when Float then [other,to_f]
else super
end
end
end
class Fixnum;
alias :to_str :to_s
end
p "10" + 1 # => "101"
p 10 + "1" # => 11
自分の足を打たないように気をつけて使いましょう
つい出来心で書いてみた
もしRubyが標準でこんなだったら使いたくなくなる
0010デフォルトの名無しさん
2011/04/23(土) 02:18:25.96文字列と整数は違うものだから
整数文字列と整数を同一視するのはWebくらいだ
(あと演算記号があったらとりあえず数値とみなすawk)
$ awk 'BEGIN {print "10" + "2";}'
12
マジキチ
ぶっちゃけエラーにしてもらったほうがよい
文字列として連結したい場合は、プログラマが明示的に文字列にする
irb> '10' + 1.to_s
"101"
文字列にする意図が演算記号より明確な場合(リテラル埋め込みなど)は String#to_s を呼ぶ
irb> "10#{1}"
"101"
とか納得してもらったこと悪いんだが、Rubyの標準クラスでこの原則を土足で踏みにじってたりもする
歴史的経緯を反映したメソッドではあるんだけれど
irb> '10' * 3
"101010"
なお、「自分は文字列互換である」という宣言があればいいので、
to_str を定義すればいいだけだったりもする
irb> "10" + 1
TypeError: can't convert Fixnum into String
from (irb):1:in `+'
from (irb):1
irb> class Fixnum; alias to_str to_s; end
irb> "10" + 1
=> "101"
とか書いてたら>>9にあった
0011デフォルトの名無しさん
2011/04/23(土) 02:29:53.85あれは String を継承してないけど String のメソッドが(委譲とかで)使えますみたいな印
0012デフォルトの名無しさん
2011/04/23(土) 09:51:59.70残念なことに昔のことだったので忘れてしまった
ぐぐってみたけど見つけられなかったので、だれか教えて
0013デフォルトの名無しさん
2011/04/23(土) 10:24:40.34まあawkの場合、連結には別の記法があるから
連結なら始めからそっち使えってことだろう
0014デフォルトの名無しさん
2011/04/23(土) 11:00:56.82自分で列挙してみたあとで既存公式パッケージを見てみたが、
たぶんここでdepとなってるもの (の、もちろん -dev のほう)
http://packages.debian.org/squeeze/libruby1.9.1
http://packages.debian.org/squeeze/libtcltk-ruby1.9.1
iconvも必要だった、ような…
0015デフォルトの名無しさん
2011/04/23(土) 12:10:45.48ありがとう。
それらに加えて、たとえばmakeだとかbisonだとかautoconfだとかあるじゃないですか。
そういう開発ツールも列挙してもらえるとうれしい。
#昔どっかに書かれてたのをコピーしとけばよかったんだけど、
#当時はRedHat使ってたから関係ないやって思ってコピーしなかったんだよね。
#失策だ。
0016デフォルトの名無しさん
2011/04/23(土) 13:02:43.97↓デビアンパッケージを作るのに必要なものが芋づる式にインストールされるが、ruby-1.9.1-fullパッケージはインストールされない。
sudo apt-get build-dep ruby1.9.1-full
0017デフォルトの名無しさん
2011/04/23(土) 13:22:02.46なにその便利Tips
試してみる。さんくす
0018デフォルトの名無しさん
2011/04/23(土) 17:52:57.12すまんかった
じゃ、これで
class String
alias :orig_plus :+
def +(x)
if x.respond_to? :to_str
orig_plus x.to_str
elsif x.respond_to? :to_s
orig_plus x.to_s
else
orig_plus x
end
end
end
p "10" + 1 #=> "101"
p "10" + :symbol #=> "10symbol"
p "10" + [9,8] #=> "10[9,8]" #ruby 1.8では "1098"
Refinementが導入されると
局所的に組み込みクラスの挙動を変化させられるので
上のような書き方ができるDSLとかつくりやすくなるかも
Mathnライブラリなんてワンライナーとかでしか使ったこと無いし
0019デフォルトの名無しさん
2011/04/24(日) 11:29:35.96実行してみたけど、インストールするものが多すぎるし、
あきらかに必要なさそうなものが含まれている。これじゃあだめだ。
$ sudo apt-get build-dep ruby1.9.1-full
Reading package lists... Done
Building dependency tree
Reading state information... Done
Picking 'ruby1.9.1' as source package instead of 'ruby1.9.1-full'
(つづく)
0020デフォルトの名無しさん
2011/04/24(日) 11:35:33.17The following NEW packages will be installed:
autoconf automake autotools-dev bison build-essential cdbs debhelper dpatch
dpkg-dev fakeroot fdupes g++ g++-4.4 html2text intltool intltool-debian
libfont-afm-perl libfontenc1 libgdbm-dev libgl1-mesa-dri libgl1-mesa-glx
libhtml-format-perl libhtml-parser-perl libhtml-tagset-perl
libhtml-tree-perl libice-dev libice6 liblzma1 libmail-sendmail-perl
libmailtools-perl libncurses5-dev libpthread-stubs0 libpthread-stubs0-dev
libreadline5-dev libsm-dev libsm6 libssl-dev libstdc++6-4.4-dev
libsys-hostname-long-perl libtimedate-perl liburi-perl libwww-perl libx11-6
libx11-data libx11-dev libxau-dev libxau6 libxaw7 libxcb1 libxcb1-dev
(つづく)
0021デフォルトの名無しさん
2011/04/24(日) 11:39:04.70そりゃ、debパッケージ作るための開発パッケージが含まれてるからな
0022デフォルトの名無しさん
2011/04/24(日) 11:41:44.97libxdamage1 libxdmcp-dev libxdmcp6 libxext6 libxfixes3 libxft2 libxi6
libxinerama1 libxml-parser-perl libxmu6 libxmuu1 libxpm4 libxrender1
libxt-dev libxt6 libxtst6 libxv1 libxxf86dga1 libxxf86vm1 patchutils
po-debconf tcl8.4 tcl8.4-dev tk8.4 tk8.4-dev x11-common x11-utils
x11proto-core-dev x11proto-input-dev x11proto-kb-dev xbitmaps xterm
xtrans-dev xz-utils zlib1g-dev
0 upgraded, 85 newly installed, 0 to remove and 4 not upgraded.
Need to get 31.3MB of archives.
After this operation, 122MB of additional disk space will be used.
Do you want to continue [Y/n]? n
Abort.
0023デフォルトの名無しさん
2011/04/24(日) 14:29:08.89Rubyを学習するのにいい本はありますでしょうか?
0024デフォルトの名無しさん
2011/04/24(日) 15:36:54.13>>21の言うように、build-dep は deb パッケージを作るためのパッケージ群が未インストールであれば要求する
ので、動作としては正しい
$ apt-cache showsrc ruby1.9.1-full
...
Build-Depends: debhelper (>= 5), cdbs, dpatch, patch, autoconf, m4, bison,
binutils (>= 2.14.90.0.7), libgdbm-dev, libncurses5-dev, libreadline5-dev,
tcl8.4-dev, tk8.4-dev, zlib1g-dev, libssl-dev (>= 0.9.6b), procps, file
お探しの条件はおそらくこれだろう
Ruby スレではなく Debian スレで聞くべきだったな
0025デフォルトの名無しさん
2011/04/24(日) 15:45:50.93debhelper をインストールしてしまうといろいろくっついてくると思う
deb パッケージが要らないならインストールしなくてもいいはず
tcl と tk も依存関係多いから、不要ならコンパイルオプションごと外したほうがいい
autoconf は perl5 を呼んだはず
0026デフォルトの名無しさん
2011/04/24(日) 18:35:10.22リポジトリからさきっちょを取ってきてコンパイルするなら必要だけど、tarballなら
不要。
0027デフォルトの名無しさん
2011/04/24(日) 18:55:38.95他言語の既修者なら、とりあえず『初めてのRuby』を勧めておく
しいて言えば、オブジェクト指向について基礎的な知識があると
より理解度が上がると思う
0028デフォルトの名無しさん
2011/04/24(日) 19:09:22.87探してみます。たのしいRubyの方を読むと、
プログラミング言語を初めて学習するような感じなので、
悩んでいました。
0029デフォルトの名無しさん
2011/04/24(日) 19:22:28.80こんなかんじでいけた。開発ツールはgccとmakeだけでいいみたい。trunkじゃなくてruby-1.9.2-p180.tar.bz2ならこれでコンパイルできる。
sudo apt-get update
sudo apt-get install gcc make
sudo apt-get install libc6-dev zlib1g-dev libssl-dev libncurses5-dev libreadline-dev libgdbm-dev libyaml-dev libffi-dev
0030デフォルトの名無しさん
2011/04/25(月) 19:36:19.65と書けないのは理解できているんですが
if @m == 7 or @m == 11
と書くのがなんだか冗長に思えてしかたないんです
力技でなく一行目みたいな書き方をする方法ありませんか?
0031デフォルトの名無しさん
2011/04/25(月) 20:27:24.67基本的にありません
構造的問題
一応
if [7,11].include?(@m)
という表現があるんだけど、配列要素をすべて確定しないといけないのであんまり人気がない
def a; puts "\ta is made"; return "a"; end
def b; puts "\tb is made"; return "b"; end
str = "a"
puts "str == a || str == b:"
puts "\tyes!" if (str == a || str == b)
puts "[a, b].include?(str):"
puts "\tyes!" if [a, b].include?(str)
結果
str == a || str == b:
a is made
yes!
[a, b].include?(str):
a is made
b is made
yes!
0032デフォルトの名無しさん
2011/04/25(月) 20:37:31.64a is made
yes!
やったーできたよーすごい長いよー
003330
2011/04/25(月) 20:45:46.03ありがとうございました
0034デフォルトの名無しさん
2011/04/25(月) 20:51:11.96ttp://d.hatena.ne.jp/rubyco/20090824/twitter
gemのインストールはできたのですが、スクリプトを実行すると
ubuntu@ubuntu-virtual-machine:~$ ruby twitter.rb
./twitter.rb:4: uninitialized constant Twitter (NameError)
from twitter.rb:1:in `require'
from twitter.rb:1
と表示されます。
何が悪いんでしょう?
0035デフォルトの名無しさん
2011/04/25(月) 21:05:40.440036デフォルトの名無しさん
2011/04/25(月) 21:11:55.61gem install でインストールしたライブラリは require 'rubygems' が必要
前に「require 'rubygems' と書かなくてもいい方法」というのが流行ったことがあるので、
その記事の人はその古い慣習を引きずってるのだろう
0037デフォルトの名無しさん
2011/04/25(月) 21:16:57.47(スクリプト内で被って複数回呼ぶことになっても負荷はほぼゼロなので一応書くとよい)
・ require する文字列と同じ名前の rb ファイルをカレントディレクトリに作ってはいけない(Ruby1.8.x、Ruby1.9.1)
たぶん後者だな
0038デフォルトの名無しさん
2011/04/25(月) 21:36:57.65サンクス。
リンク先のスクリプトを
require 'rubygems'
require 'twitter'
require 'kconv'
にかえて、スクリプトのファイル名をtwtest.rbに変えました。
で実行すると
ubuntu@ubuntu-virtual-machine:~$ ruby twtest.rb
/var/lib/gems/1.8/gems/multi_json-0.0.5/lib/multi_json.rb:66:in `decode': #<RuntimeError: Did not
recognize your engine specification. Please specify either a symbol or a class.> (MultiJson::DecodeError)
from /var/lib/gems/1.8/gems/faraday_middleware-0.6.3/lib/faraday/response/parse_json.rb:16:in `parse'
以下ずらずらと表示されます。
インストールしたgemのバージョンとかの問題でしょうか?
たびたびすみません。
0039デフォルトの名無しさん
2011/04/25(月) 21:54:49.62やってみた。環境は、ruby1.9.2、CentOS5.6
gem install twitter やって、以下をp1.rbに保存
#!/usr/local/bin/ruby
require 'twitter'
Twitter::Search.new().from('hyuki').each do |r|
puts r["text"]
end
require 'rubygems'、require 'kconv'、.sjisは書かずに実行したら、
すんなり動きました。
0040デフォルトの名無しさん
2011/04/25(月) 22:36:37.90適当なJSONライブラリ入れて MultiJson.engine = :json_gem とか指定
0041デフォルトの名無しさん
2011/04/25(月) 23:11:58.45>適当なJSONライブラリ入れて MultiJson.engine = :json_gem とか指定
ってスクリプトに記述するという意味でしょうか?
0042デフォルトの名無しさん
2011/04/25(月) 23:46:20.26"sprintf format 違い" でググッたんですが
sprintfフォーマット がひっかかちゃって探してる情報が見つかりませんでした。
0043デフォルトの名無しさん
2011/04/26(火) 00:02:27.05CentOSってgemのパッケージは用意されてないのでしょうか?
gemを使えるようにするには、という意味です。
0044デフォルトの名無しさん
2011/04/26(火) 00:12:42.65"フォーマット文字列" % [引数リスト]
も含めて一緒なのでお好きなのをどうぞ
0045デフォルトの名無しさん
2011/04/26(火) 00:37:21.53gemは、ver. 1.7.2、rubyは、1.9.2
require 'rubygems'は書いても書かなくても動いた
gem install twitterしただけ。README.mkdに、こんなこと書いてあるけど、
JSON?インストールしてないなぁ。なんで動くんだろ
If you're using the JSON request format (i.e., the default),
you'll need to explicitly require a JSON library.
We recommend [yajl-ruby](http://github.com/brianmario/yajl-ruby).
0046デフォルトの名無しさん
2011/04/26(火) 00:41:19.30ありがとうございます。 それじゃ書きやすい format を使うことにします。
0047デフォルトの名無しさん
2011/04/26(火) 01:02:55.30サンクス。
CentOSの環境もあるので、試してみようと思ったのですが、こっちはGemのシステム自体がインストール
できなくてはまっています。
Ubuntsuで文字コードの問題を解決した方が早いのかなあ。
0048デフォルトの名無しさん
2011/04/26(火) 01:31:25.71orだけだけど、==と===がおなじになるオブジェクトならば
case @m
when 7,11
puts @m
end
って書くことができるかも
0049デフォルトの名無しさん
2011/04/26(火) 01:39:38.19CentOSにRubyをインストールした時に参考にした↓
ttp://yktweb.sakura.ne.jp/blog/home-server/207.html
Ubuntsuのことはサパーリわかりませぬ
0050デフォルトの名無しさん
2011/04/26(火) 01:50:23.55ぬう、結構めんどくさいですね。
VMWareのCentOS環境は作ったのですが、今日は力尽きたのでまた明日以降やってみます。
重ね重ねありがとう。
というか、初めてGemとか使って簡単なプログラム動かしてみようと思ったけど、Twitterは結構
地雷だったのかな。
重ね重ねありがとう。
0051デフォルトの名無しさん
2011/04/26(火) 05:50:38.86「全く何も見ずに感性だけで」プログラミングできるようなものではない
0052デフォルトの名無しさん
2011/04/26(火) 06:40:31.72rdocのヒット率の悪さと言ったらないぞ
gencutterはそろそろ登録時にマニュアル記述の審査やったほうがいいw
で、README読む限り、gem install yajl-ruby して
require 'rubygems'
require 'twitter'
require 'kconv'
Twitter::Search.new().from('hyuki').each do |r|
puts r["text"].tosjis
end
でいいはず
ていうか3年近く前の記述なんてあてにするほうが悪いと言えなくもなく
>>45
require 'json' か require 'yajl' か require 'json/pure' か require 'ok_json' が動作すれば
何も言わずそれを使う
どれもできない場合はmulti_jsonが知らないライブラリなので
MultiJson.engine = encodeとdecodeの動作するJSONパーサクラス
と指定する
0053デフォルトの名無しさん
2011/04/26(火) 07:48:31.47Ruby/Tkってなんか動かない環境多そうですよね。
0054デフォルトの名無しさん
2011/04/26(火) 08:28:17.41漏れは素直にswing使ってjavaで組んでるよ。rubyの出番は無いw
初心者のくせにケチ付けるなって。ケツの穴小さ過ぎ。拡張しなきゃw
初心者と言うか、入門者視点で直感的に使えたほうが使いやすいと思うけどねえ。まあやりすぎはruby使い総白雉化(idoit)に繋がるのかもだがw
Time使ってみたが、人間様思考だとyyyymmdd表記も直感的に処理出来るけど、
Time.utc("20110426")
なんてyyyymmddは喰ってくれないのねw
自分で
Time.utc("20110426"[0,4], "20110426"[4,2], "20110426"[6,2])
なんて咀嚼して食べさせてあげないとごっくんしてくれないのは、手間が掛かると言うかめんどいw
みんなはparsedate呼んでたりするの?
馬鹿除け的にArgumentErrorなんて返す前に、catchしてparseしなおしてtryしてくれよって気がw 会社とかでこんな機転の利かない新人が入って来たらストレスだなw
0055デフォルトの名無しさん
2011/04/26(火) 10:51:11.861つのファイルをダウンロードし終わってから1秒待機して次のファイルをダウンロードするにはこれで対応できてますでしょうか?
サーバ側で複数ダウンロードすると規制される仕組みなので困っております
require 'open-uri'
require "kconv"
i = 0;
while(i < 3)
open(Kconv::tosjis("C:\hozon"), "wb") do |output|
open("ダウンロード元URL") do |data|
output.write(data.read)
end
end
i = i + 1
sleep(1)
end
0056デフォルトの名無しさん
2011/04/26(火) 11:03:36.770057デフォルトの名無しさん
2011/04/26(火) 11:12:18.36なので、 body = open(uri).read でよい
ブロックが込み入っているから見てもわかりにくいのだな
require 'open-uri'
save_dir = 'C:\hozon'
Dir.mkdir(save_dir) unless File.directory?(save_dir)
urls = ["http://www.yomiuri.co.jp/zoomup/img/zo_090413_01_s.jpg",
"http://www.yomiuri.co.jp/zoomup/img/zo_100125_01_s.jpg"]
urls.each do |url|
uri = URI.parse(url)
body = open(uri).read
save_path = File.join(save_dir, File.basename(uri.path))
open(save_path, "wb"){|f| f.write(body)}
sleep(1)
end
0058デフォルトの名無しさん
2011/04/26(火) 11:16:20.800059デフォルトの名無しさん
2011/04/26(火) 14:28:16.47require 'time'
Time.parse("20110426") #=> 2011-04-26 00:00:00 +0900
ローカルタイムになるけど
0060デフォルトの名無しさん
2011/04/26(火) 14:50:59.140061デフォルトの名無しさん
2011/04/26(火) 20:14:49.84def self.meth
共通処理
…
共通処理
end
end
こんな感じで、クラスメソッドの中で同じような処理が複数箇所で発生したため、
共通処理をメソッドの外に抽出したいのですが、クラスメソッドからインスタンスメソッドは呼べません。
そうすると、共通処理をクラスメソッドとして抜き出すことになるのですが、
プライベートクラスメソッドというのはあまり見たことがありません。
ネットで調べるとprivate_class_methodとうものがあるので、以下のように実現は出来るのですが、
なんだか見た目も可読性も酷いし設計が間違っているような気がします。
class Hoge
def self.meth2
共通処理
end
private_class_method :meth2
def self.meth
meth2
…
meth2
end
end
クラスメソッドの中にある複数の共通処理を外に抜き出す方法は他には無いでしょうか。
0062デフォルトの名無しさん
2011/04/26(火) 20:24:56.23クラスとメソッドという文脈においては、Rubyにはインスタンスメソッドしかない
クラスメソッドは、self が Class クラスのオブジェクトであるインスタンスメソッドだ
なので、アクセス制限法も public か private(かprotected)しかない
ということで、それでいいよ
ほんのり遅くなってもいいのなら、メソッド内で proc オブジェクト作って 2回 call してもいい
0063デフォルトの名無しさん
2011/04/26(火) 20:29:27.80006461
2011/04/26(火) 20:32:44.14ありがとうございます。上のソースでいくことにします。
0065デフォルトの名無しさん
2011/04/26(火) 20:44:26.74とりあえずソラでYコンビネータが作れるようになるまで習熟してから
Haskelに体当たりだ。
0066デフォルトの名無しさん
2011/04/26(火) 20:57:01.97関数型言語行って存分にλってこいw
その病気はしばらく続くと思うが(実体験)、
手続き型言語でやるのはほどほどにしとけよ?
006734
2011/04/26(火) 21:49:00.25yajlなどいろいろインストールしたのですがダメで、結局twitterのversionを0.7.4に下げることで解決しました。
いろいろやってみてエラーが表示されましたが何が悪いのかよくわからず、最新のtwitterのライブラリで
動かす場合はどうすれば正しいのかはわからずじまいです。
以上完全解決ではないですが、ご報告まで。
twitter (0.7.4)
multi_json (0..0.5)
スクリプト
require 'rubygems'
require 'twitter'
Twitter::Search.new().from('hyuki').each do |r|
puts r["text"]
end
0068デフォルトの名無しさん
2011/04/28(木) 15:04:59.24class Cs
def a()
p "aメソッド"
end
private :a
def b()
a()
end
end
cs = Cs.new()
cs.b()
bからaが呼べちゃうんですがこういうものなんでしょうか?
phpのように$this->a()みたいな表記は必要なく、ただメソッドだけ書けば動かせる仕組みなのですか?
また、メソッドだけで動かせるのが違和感があるので$this->a()みたいにthisに当たる書き方ってありますでしょうか?
0069デフォルトの名無しさん
2011/04/28(木) 15:18:32.92ので、その動作は正当だ
「公開APIってほどじゃないのでなんとなく隠したい」以上の意図は示せないし、
ユーザーの操作を縛ることもできない
レシーバという概念について勉強するといろいろはかどるかと思う
あと、後者は「やらないほうがよい」ので勧めない
0070デフォルトの名無しさん
2011/04/28(木) 15:55:06.24publicメソッドからprivateメソッドを呼ばないとしたらいったいいつどこでprivateメソッドを呼ぶというのだ……。
0071デフォルトの名無しさん
2011/04/28(木) 16:06:57.490072デフォルトの名無しさん
2011/04/28(木) 16:14:53.44privateとかする意味あんまないんじゃね? とか思う今日このごろ
0073デフォルトの名無しさん
2011/04/28(木) 18:29:00.090074デフォルトの名無しさん
2011/04/28(木) 18:42:47.17アクセス制御とか無用。
ダチョウ倶楽部が「おすなよ?おすなよ?」と言ってるようなもん。
0075デフォルトの名無しさん
2011/04/28(木) 19:30:30.910076デフォルトの名無しさん
2011/04/28(木) 19:31:01.58privateとかpublicなどはとりあえず置いといてください
PHPで呼び出すときに$this->a()限りませんがC#やjavaでもこのような感じで呼び出しています
Rubyはこのthis->メソッドのような概念がないということでしょうか?
0077デフォルトの名無しさん
2011/04/28(木) 19:34:25.10いつもの発作なので気にしないでください
Rubyでthisに相当するのはselfです
0078デフォルトの名無しさん
2011/04/28(木) 19:36:21.86レシーバってご存じですか?
0079デフォルトの名無しさん
2011/04/28(木) 19:44:29.05PHPの$this->method()に相当するのは、Rubyではself.method()
そんで、Rubyでは「self.」は省略できる。それだけ。
0080デフォルトの名無しさん
2011/04/28(木) 19:46:53.31そうですか
これはRubyなのでそれは忘れてください
Rubyではレシーバを省略しメッセージだけを書くのが普通で、
それ以外の記法を見たときは普通ではない何らかの意図があるものとみなします
0081デフォルトの名無しさん
2011/04/28(木) 19:50:58.37thisに相当するのはselfだけど、 self.method ではプライベート呼べないよ。
>>68のケースでは、"self."は「書いてはならない」
0082デフォルトの名無しさん
2011/04/28(木) 20:13:14.781.メソッド呼び出しはすべてなんらかのレシーバに対する呼び出しである
2.このレシーバは通常は記述される(誰に対する呼び出しかわからないのであたりまえ)
3.例外として、そのコンテキストにおけるself(PHPでいう$thisに相当)に対する呼び出しである場合は省略できる
4.selfと記述してしまう場合は、一旦そのオブジェクト自身を外から見たような形で評価することになるので、self.で呼び出す場合の呼び出し制限はpublicに従う。
5.とあるprivateメソッドを呼べる状況ではもともとレシーバを省略してそいつを呼び出せるので、4の仕様のためにself.でprivateメソッドが呼べなくても不都合は生じない
0083デフォルトの名無しさん
2011/04/28(木) 20:18:41.08PHPはともかく、Javaを知っているなら、レシーバがthisなら省略できることを知っているはずだけどな。
ついでながら、Rubyのprivateメソッドは「thisを省略した形でしか普通には呼べない」の意。
008483
2011/04/28(木) 20:19:18.630085デフォルトの名無しさん
2011/04/28(木) 20:37:40.43RUBYOPTに-Kuと設定しておけばマジックコメントを記述せずutf-8で書けますが
-Kは1.8互換のため残されているだけで推奨されていません。
マジックコメントを書かずにすむ方法は他にありますか?
もうひとつWindows上での実行について質問
標準入力からutf-16leのテキストデータを読み込んで
スクリプトとして実行することはできませんか?
0086デフォルトの名無しさん
2011/04/28(木) 20:40:20.81cp "*.html", "dir"
はだめで、
cp Dir.glob("*.html"), "dir"
と書かないとだめなの?ちょーめんどくさいんだけど。
あと cp はあるけど cp_p とか cp_pr とかなかったっけ?
0087デフォルトの名無しさん
2011/04/28(木) 20:42:00.85sh メソッドとかFileUtilsとか。
0088デフォルトの名無しさん
2011/04/28(木) 20:42:53.10マジックコメント書いとけ。必須だ。
0089デフォルトの名無しさん
2011/04/28(木) 20:49:19.250090デフォルトの名無しさん
2011/04/28(木) 20:53:01.19ファイル内で完結させるのが正しいんだろうとは思う。
0091デフォルトの名無しさん
2011/04/28(木) 20:53:12.44(文字コード)
ttp://d.hatena.ne.jp/Gimite/20080101/1199199332
(下)
よく意味がわからん
(rubyスクリプトの中で)標準入力からutf-16leのテキストデータを読み込んで
(読み込んだテキストの内容をRuby)スクリプトとして(読み込みをしたプロセスの中で)実行することはできませんか
ってことか?
具体的になにがしたいのか書いたほうがはやいんじゃね?
0092デフォルトの名無しさん
2011/04/28(木) 21:10:47.880093デフォルトの名無しさん
2011/04/28(木) 21:13:43.710094デフォルトの名無しさん
2011/04/28(木) 21:15:10.400095デフォルトの名無しさん
2011/04/28(木) 21:16:22.27notepad
vi
Emacs
サクラエディタ
Eclipse
NetBeans
紙と鉛筆
脳内
これで6割方はいってるような気がする
0096デフォルトの名無しさん
2011/04/28(木) 21:18:31.35Windowsのxyzzyが抜けてる
3パーセントくらい増えるはず
0097デフォルトの名無しさん
2011/04/28(木) 21:23:18.050098デフォルトの名無しさん
2011/04/28(木) 21:24:03.20とりあえずnetbeansのrubyバージョンでも使ってみては
0099デフォルトの名無しさん
2011/04/28(木) 21:32:51.15実はちょっと前に入れたのですがスペックが足りないのか単語補完のときに動作が遅いですみたいな警告が表示されてしまったのでそれ以来使ってないです
やっぱeclipseやnetbeansのように高機能なIDEが使えないとなるとテキストエディタしかありませんね
ありがとうございます
010085
2011/04/28(木) 21:50:32.78私が愛用するサクラエディタは編集中のテキストを外部コマンドの標準入力に流し込むことができる。
これを使って、編集中のテキストを保存すること無しにスクリプトとして実行したい。
外部プログラムへの出力はShift-JISかUNICODEが選択でき、Shift-JISで用が足りる場合は外部コマンドを ruby - と
指定すれば良いがUNICODEを含むときはうまくいかず解決策を知りたい。
(上)はそのときのタイピング量を減らしたいため
0101デフォルトの名無しさん
2011/04/28(木) 21:55:30.84ruby -EWindows-31J:UTF-8 "$F"
0102デフォルトの名無しさん
2011/04/28(木) 21:56:21.530103デフォルトの名無しさん
2011/04/29(金) 03:06:17.61例えば、
$files = Array.new
fileNames = ["a","b","c"]
(0..2).each{|i|
$files[i] = File.new(fileNames[i])
}
var = "hogehoge"
(0..2).each{|i|
files[i].write var
}
とすると、
undefined method `write' for nil:NilClass (NoMethodError)
となってしまいます。
0104デフォルトの名無しさん
2011/04/29(金) 03:20:27.67色々とツッコミどころはあるのだが、致命的なのは$
0105デフォルトの名無しさん
2011/04/29(金) 03:24:53.28読み込みたいの書き込みたいの?
書き込みたいならwモードでファイルオープンしないといかんのでは
モード省略するとrモードやでー
0106デフォルトの名無しさん
2011/04/29(金) 03:26:03.93そのコードでは違うエラーになると思うのだが…
実際にはちょっと違うコードじゃないのか?それ
0107デフォルトの名無しさん
2011/04/29(金) 03:41:26.110108デフォルトの名無しさん
2011/04/29(金) 07:42:51.81(ただし、インスタンス変数乱用もあまりよくない)
・ ローワーキャメルケース(lowerCamelCase)は使わずにアンダースコアで区切る
(fileNames ではなく file_names または filenames)
・ each による繰り返しの主体は「番地」や「順番札」ではなくコレクションのデータそのものにする
(ファイル名の配列があるのなら、それそのものを each する)
・ Rubyユーザーの実に98%が、File.new がどういう動作をするか覚えてないというアンケート結果
(オリジナルではなく、イディオムを使いまわしたほうが結局は近道)
ということで、たぶんこんな感じ
file_paths = ['0000.txt', '1111.txt', '2222.txt']
str = 'hogehoge'
file_paths.each do |path|
File.open(path, 'wb'){|f| f.puts(str)}
end
0109デフォルトの名無しさん
2011/04/29(金) 07:50:08.75どう答えればいいのか混乱してくる
まあいいや、書き込みは答えが出たから俺は読み込みで
filenames = ["a","b","c"]
files = filenames.map {|fn| File.read(fn) }
0110デフォルトの名無しさん
2011/04/29(金) 07:56:58.55File.read(path) は使ってはいけない
File.open(path){|f| f.read} と呪いながら必ず書く
0111デフォルトの名無しさん
2011/04/29(金) 08:00:08.280112デフォルトの名無しさん
2011/04/29(金) 09:17:53.95何故File.readを使ってはいかないの?
0113デフォルトの名無しさん
2011/04/29(金) 10:28:56.23require 'open-uri'
raise 'valid File#read. abort.' if RUBY_DESCRIPTION !~ / 1.8.+(mswin|mingw)/
uri = URI.parse("http://www.ruby-lang.org/images/logo.gif")
path = './rubylogo.gif'
File.open(path, 'wb'){|f| f.write(uri.read)}
img_text = File.read(path) # text mode
File.open('text_rubylogo.gif','wb'){|f| f.write(img_text)}
img_bin = File.open(path, 'rb'){|f| f.read} #binary mode
File.open('bin_rubylogo.gif','wb'){|f| f.write(img_bin)}
text_rubylogo.gif だけ画像として開けないはず
0114デフォルトの名無しさん
2011/04/29(金) 10:46:51.36マニュアルのlibrary net/httpにwebサイトからページを取得するサンプルがあります
この通り利用したら安全でしょうか?
何か手を付け加える箇所はありますでしょうか?
require 'net/http'
url = URI.parse('http://www.example.com/index.html')
req = Net::HTTP::Get.new(url.path)
res = Net::HTTP.start(url.host, url.port) {|http|
http.request(req)
}
puts res.body
0115デフォルトの名無しさん
2011/04/29(金) 10:58:16.01安全の意味がわからん
ブラウザもどきとしての安全性なら、Cookieの流出は気にしなくてよいし、
勝手なJavaScriptやFlashが走ることはないのでその意味では安全
コードとしての安全なら、urlが正しくない場合の考慮とか、
異常系の強化の余地はある
0116デフォルトの名無しさん
2011/04/29(金) 10:59:52.54安全じゃないってたとえばイメージ的になんじゃらほ
とりあえず、連続アクセスされるとサーバ管理してる人が困る
10秒間に人間がやるくらいの量のアクセスを10秒間の間にやる程度が妥当
(1アクセスごとに絶対に1秒スリープしろとかいう意味ではない、
サムネイル20個の「表示」に20秒かけられたらそっちのほうが持続的接続上超迷惑)
スクリプト的には可もなく不可もないと思う
URL にクエリ文字列がくっついてたら取得できないけど、たぶんそれは今回目的ではないんだろう
URL にマルチバイト文字とかの URL に不適な文字列が入ってた場合もエラーだけど、それもないな
ユーザーエージェントを送ってないので、普通のブラウザ用の HTML を送ってもらえない可能性はある
クッキーも処理してないので同様だが、まあいじわるサーバでない限り滅多なことはない
コンテントネゴシエーションとかAccept-Languageにも対応してないけど、これもたぶん大丈夫だろう
サーバが 200 OK 以外を返してきたときは例外出して止まってしまうので、今のままだと自動処理には向かない
Ruby 1.9.x の場合は res が ASCII_8BIT のままなので、もしかしたら適切に文字エンコーディングを設定する必要があるかもしれない
普通の Web ブラウザで見たときの HTML と違う HTML が返ってきても泣かないこと
0117デフォルトの名無しさん
2011/04/29(金) 11:10:16.86i=0
urls = [
'http://www.example.com/index1.html',
'http://www.example.com/index2.html',
'http://www.example.com/index3.html',
'http://www.example.com/index4.html',
'http://www.example.com/index5.html',
'http://www.example.com/index6.html',
'http://www.example.com/index7.html
'http://www.example.com/index8.html',
'http://www.example.com/index9.html',
'http://www.example.com/index10.html',
]
while (i< 10)
url = URI.parse(urls[i])
req = Net::HTTP::Get.new(url.path)
res = Net::HTTP.start(url.host, url.port) {|http|
http.request(req)
}
puts res.body
i = i + 1
end
こうした場合はコードを実行したら一気に取得しにいってしまうのですか?
getして文字列が帰ってくるまで同期されてますか?非同期の場合、sleepを入れたいと思います
0118デフォルトの名無しさん
2011/04/29(金) 11:17:35.40> 1アクセスごとに絶対に1秒スリープしろ
まだその信仰残ってるよね…
「1ページ分」は人間の操作するブラウザっぽく一瞬で取得して速攻で接続切ってもらったほうが嬉しかったりもする
君の後ろにもサーバ取得待ちのユーザーさんの列はあるのよ、見えないけどw
でっかい静的ファイルやサーバで生成する動的 HTML を連続取得されるのは辛い
別途サーバ立てるような細かい静的ファイルをだらだら時間かけて取得されるのも辛い
>>117
書いてある通りにしか動作しないよ
つまり、Get するためのオブジェクト作って、アクセスして、返り値取得して、それを表示する、までが1回のループ内容
スレッドを使う必要があるが、あんまり速くもならないので素直にループ
あと、>>108も言ってるけど、イテレーションはデータ配列自体を each するのが普通
urls.each do |url|
uri = URI.parse(url)
...
end
と書く
while も i も使用しない
0119デフォルトの名無しさん
2011/04/29(金) 11:32:41.74require 'net/http'
urls = [
'http://www.example.com/index1.html',
'http://www.example.com/index2.html',
'http://www.example.com/index3.html',
'http://www.example.com/index4.html',
'http://www.example.com/index5.html',
'http://www.example.com/index6.html',
'http://www.example.com/index7.html
'http://www.example.com/index8.html',
'http://www.example.com/index9.html',
'http://www.example.com/index10.html',
]
urls.each{{u|
url = URI.parse(u)
req = Net::HTTP::Get.new(url.path)
res = Net::HTTP.start(url.host, url.port) {|http|
http.request(req)
}
puts res.body
end
取得するページが500ページ文あるからsleepはしないでおいたほうがよさそうですね
0120デフォルトの名無しさん
2011/04/29(金) 11:33:49.05require 'net/http'
urls = [
'http://www.example.com/index1.html',
'http://www.example.com/index2.html',
'http://www.example.com/index3.html',
'http://www.example.com/index4.html',
'http://www.example.com/index5.html',
'http://www.example.com/index6.html',
'http://www.example.com/index7.html
'http://www.example.com/index8.html',
'http://www.example.com/index9.html',
'http://www.example.com/index10.html',
]
urls.each{|u|
url = URI.parse(u)
req = Net::HTTP::Get.new(url.path)
res = Net::HTTP.start(url.host, url.port) {|http|
http.request(req)
}
puts res.body
}
0121デフォルトの名無しさん
2011/04/29(金) 11:44:42.38そのサーバにとって通常範囲内であると想像されるなら、sleep はいらない
ふつうはそんなこと想定してないので、sleep で間隔あけるべき
俺なら特定可能なユーザーエージェントを設定した上で、
2ファイルにつき3秒 sleep させて、1時間に100ファイルずつ取得する
0122デフォルトの名無しさん
2011/04/29(金) 11:51:14.78Net::HTTP.start('www.example.com') do |http|
puts http.get('/index%d.html'%i).body
end
end
0123デフォルトの名無しさん
2011/04/29(金) 12:12:16.65>>112
>>113でも例を挙げてもらってるが、1.8系列だとバイナリモードで読み込めないから
(1.9系列であれば、バイナリモードで読み込むようにオプション指定できる)
0124デフォルトの名無しさん
2011/04/29(金) 12:12:49.66ページ本体と画像その他リソースを取得したほうがサーバの負荷に
ならないってことかしらー。
0125デフォルトの名無しさん
2011/04/29(金) 12:13:29.760126デフォルトの名無しさん
2011/04/29(金) 12:33:33.04本当に負荷を気にするなら、不要不急なアクセスはお控えください
ホントに欲しいページだけダイレクトに見てください
収集はシアワセ産むのかどうか、よく考えて行ってください
で、ヘッダくらいは別にいいよ
HTTP の勉強は結局は避けて通れないんだけども
0127デフォルトの名無しさん
2011/04/29(金) 12:39:23.98専用サーバかVPSでやりたいのです
0128デフォルトの名無しさん
2011/04/29(金) 13:23:17.75とりにいく鯖が全て同じであれば
require 'net/http'
urls = [
'http://www.example.com/index1.html',
'http://www.example.com/index2.html',
'http://www.example.com/index3.html',
'http://www.example.com/index4.html',
'http://www.example.com/index5.html',
'http://www.example.com/index6.html',
'http://www.example.com/index7.html
'http://www.example.com/index8.html',
'http://www.example.com/index9.html',
'http://www.example.com/index10.html',
]
uri = URI.parse(urls[0])
session = Net::HTTP.new(uri.host, 80)
list = []
session.start {
urls.each {|url|
uri = URI.parse(urls[0])
list << session.get()
}
}
0129デフォルトの名無しさん
2011/04/29(金) 13:24:39.42まあ、途中だけどなんとなくわかるしょ
これならkeep-aliveでいけるらしい
0130デフォルトの名無しさん
2011/04/29(金) 13:26:43.04一般的には(技術者の間では)1リクエスト/秒なら許容範囲とされているが、
自分の意図とは別に訴えられる可能性があるので、OKかどうかの保証は誰にもできない
あとは自己判断
http://librahack.jp/
この人はたまたまサーバの不具合で低負荷でもサーバダウンしてしまったため約1リクエスト/秒で逮捕されてる
最終的に起訴猶予で釈放はされたけど
0131デフォルトの名無しさん
2011/04/29(金) 13:27:19.43具体的になにがしたいのかよくわからんが
1秒間に1アクセスごときで負荷になるようなサーバは管理人がおかしい
ただアクセスログを見る奴がかわいそうかもなw
0132デフォルトの名無しさん
2011/04/29(金) 13:29:37.120133デフォルトの名無しさん
2011/04/29(金) 13:36:21.65このスレ見てつくりましたー、って人がタイーホされて
言語はRubyでしたー、なんてイヤやん?
裏でDB見に行くとか動的なページは
アクセス間隔あけるなり、1リクエストが完結してから次を送るなり
工夫したほうがいいね
0134デフォルトの名無しさん
2011/04/29(金) 13:38:34.18サーバ側がダメな場合は503を投げ返すのがHTTP的な作法?
んでクライアントはそれを受けたら自重するような動作で
0135デフォルトの名無しさん
2011/04/29(金) 13:53:05.16ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=31305&forum=10
0136デフォルトの名無しさん
2011/04/29(金) 14:45:56.72それ最近知った事件だ
最終的にサバ管理会社のMDISが岡崎市から契約解除されたと
で、それを受けてMDISが調査して非を認めて謝罪文だしたと
財閥系の天下り官僚癒着企業が如何に糞かという見本みたいな事件
0137デフォルトの名無しさん
2011/04/29(金) 16:29:11.44そういうことですか。
�d
0138デフォルトの名無しさん
2011/04/30(土) 11:43:34.09if @m.to_s=~/(7|11)/
0139138
2011/04/30(土) 11:54:45.57>if @m.to_s=~/(7|11)/
これだと77とかに引っかかるから
if @m.to_s=~/^(7|11)$/
0140デフォルトの名無しさん
2011/04/30(土) 11:57:29.03真の意味で文字列頭・末を表したい時には^$は使わないように心がけた方がいい。
0141デフォルトの名無しさん
2011/04/30(土) 11:59:42.34mの内容が限定されてればいいがいろいろ問題があるな
70もかかるし"7"もかかるし
0142デフォルトの名無しさん
2011/04/30(土) 12:02:43.88どういうこと?
^$を使うと問題あるの?
0143デフォルトの名無しさん
2011/04/30(土) 12:16:36.47@m = "mild\n7\nsuper light"
でもマッチするとかその辺じゃね
0144デフォルトの名無しさん
2011/04/30(土) 12:31:47.15なるほど、改行の前後にもマッチするのか、知らなかった
0145デフォルトの名無しさん
2011/04/30(土) 13:06:10.80それの7割くらいは \A と \Z で表現されるべきシロモノ
純粋スペース(U+0020)を \s で書くのと同様、「観測範囲内でたまたま動く」に過ぎない
0146デフォルトの名無しさん
2011/04/30(土) 13:18:27.450147デフォルトの名無しさん
2011/04/30(土) 13:24:18.19大昔、sed と perl くらいしかなかった頃は
「vi のカーソル操作にちなんで ^ と $ だ!すごいわかりやすい!」
とか言えたけど、今は記号の由来がわからん人のほうが多いだろう
おまけに改行文字を扱う場合は思ったとおりの動作にならないことがある
書く文字数を1文字削減するのに見合う苦労だとはあんまり思えん
素直に先頭表すのは \A で最後表すのは \Z にしとけ
0148デフォルトの名無しさん
2011/04/30(土) 16:40:51.280149デフォルトの名無しさん
2011/04/30(土) 16:48:40.55約 160,000 件 (0.31 秒)
[Ruby AND 滅びる ] [検索]
約 464,000 件 (0.24 秒)
0150デフォルトの名無しさん
2011/04/30(土) 16:54:31.230151デフォルトの名無しさん
2011/04/30(土) 17:16:34.68まじしね
うぜぜええええええええええええええええええええ
うぜえええええええええええええええええええええええええええええええ
まじきめぇこいつw まじマツゲロもきめぇんだけど宣伝しててひっしにw
日本産っていうのをおおいに利用しててきめぇw
はやくしなないかなこいつら
0152デフォルトの名無しさん
2011/04/30(土) 17:26:23.69Ruby技術者検定とか?Rubyラーメンとかクソガキ使ってRubyの宣伝?
マツゲロきめぇ やることがきめぇwswwwwwwwwww
情弱商売wwwwwwwいかくせぇっていうかあたまのおつむがへぼいwww
クソガキをとりあえずコミッタとかそういうのに使ってまじ宣伝しようと必死
きめえんだけど?まつげろ死ねよまじほほほほおほほほい!!!!!!!!!
ほほほほほほおほほほほおおおおおおおおい!!!!!!!!
やることがせけえぇwwwwwwwてかきめぇえwwwwwwww
速く死ねマゲロ!!
きめえからお前の金策Rubyとかまじ宣伝しないで片隅でやっててくれねえ?
まじでお前ら糞鼻毛のカスの目糞耳糞鼻糞カスの雑魚はマジで日本からきえてくれねえかな?
韓国いけよまじでチョンどもまじでしんでくれお願いしますマツゲロ
Perl業界の足元にも及ばないくそRubywww
金を生み出すしまくっているのはPerlwwwwwwwwwwwwwww
GoogleでもPerlは使われていて
フェイスブックでもライブドアでもDEnaでもいろいろな場所で使われてるPerlにくらべて
まじきもい国内身内ネタでもやっておりょッッッッッッッw速くしね
死んでくれないかな?Rubyっていう単語みるだけでむかついてくるんだがww
Perlの時価総額にもかてねえクズみたいなハナクソみたいなバカみたいな雑魚みたいなクソなことやってねえで
とっとと言語終了して速く消えろマツゲロ
0153デフォルトの名無しさん
2011/04/30(土) 17:29:13.17さっさと死ね雑魚ども
テロにあってしねRubyども
0154デフォルトの名無しさん
2011/04/30(土) 18:29:39.29emacsはしらん、秀丸エディタのほうが先になくなったりしてな
0155デフォルトの名無しさん
2011/04/30(土) 19:15:42.410156デフォルトの名無しさん
2011/04/30(土) 19:28:30.51kwsk 補助金なんてあるのか
0157デフォルトの名無しさん
2011/04/30(土) 21:55:04.060158デフォルトの名無しさん
2011/04/30(土) 22:29:41.930159デフォルトの名無しさん
2011/04/30(土) 22:46:55.39Perlだとできるよ
WEB::Cameraっていうモジュール使うと
WEBカメラ認識してくれる
0161デフォルトの名無しさん
2011/04/30(土) 23:41:40.23Perlをこれから覚えても周りのプログラマーには勝てないので他にも検討してみたいと思います
0162157
2011/04/30(土) 23:43:43.240163デフォルトの名無しさん
2011/04/30(土) 23:50:44.44まじむかつく
消えろよクソゴミども!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
死ね!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!いちいち逆鱗に触るようなわめき
ユーザーがクソみてええなクソガキと喧嘩腰みたいな きもちわりいんだけど!!!!!!
!!!!!!!!速く死ね!!!!!!!
そんなに金が欲しいか?!!!!!!!!!金が欲しいんだろ
Ruby情報技術者とかRubyラーメンとかまじ死ね!!!!!!!
速くRubyは潰れろ!!!!!!!憎い!!!!憎い!!!!!!
暗黒パワー!!!!憎い!!!!!憎い!!!!!!!!!憎い!!!!!
0164デフォルトの名無しさん
2011/04/30(土) 23:51:30.63時代遅れなPerlさん
0165デフォルトの名無しさん
2011/04/30(土) 23:52:20.31いちいちしゃくに触る言い方
Perlみるたびに目くじらたてて来るわめき
ぶっとばされてこいよまじで
速く死ね
0166greyia
2011/04/30(土) 23:53:43.96ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
ぼくはていのうぼくはていのうぼくはていのうぼくはていのう
0167デフォルトの名無しさん
2011/04/30(土) 23:59:46.58privateはよく使うのですが、protectedを使う機会が全くありません。
Javaで開発していた頃は、設計も細かく考えていたのですがRubyだとどうしても大雑把になってしまいます。
極端に言えばprivate指定したところでsendで呼び出せてしまうわけですし。
こういうケースではprotectedを使うべき、みたいな使いどころがあれば教えてください。
よろしくおねがいします。
0168デフォルトの名無しさん
2011/05/01(日) 00:23:06.20デザインパターンの本を読んでみるとか
0169デフォルトの名無しさん
2011/05/01(日) 00:54:56.49まあ、無理して使わなくていいよ
巷のユーザーの90%くらいはこの1年ほどprotectedなんて使ったことないし、
巷で使用されてるprotectedの96%くらいは使用法間違ってるわけだし
0170デフォルトの名無しさん
2011/05/01(日) 00:56:31.47Rubyのprotectedは言語仕様のミス疑惑が出てたと思うw
非常に微妙な可視性なので、あまり深く考えないほうがいい
privateとpublicの二本立てで
0171デフォルトの名無しさん
2011/05/01(日) 01:01:59.81他のインスタンスに対して呼びたいメソッドがある場合くらい。
もちろんsendでいくらでも回避可能。
0172デフォルトの名無しさん
2011/05/01(日) 01:19:02.23* メソッドは全てパブリック
* フィールドは全てプライベート
これで良いと思うんだ。
んで継承は無くす。
そんかわり委譲を簡単に書く機能を用意。
これでええんちゃうん。
0173デフォルトの名無しさん
2011/05/01(日) 01:20:50.31{1,2,3,4}.each{|i|print i, "\n"}
上の命令だと、以下のように出力されます。
12
34
(1..4).each{|n|print n,"\n"}
上の命令だと、以下のように出力されます。
1
2
3
4
前者の出力においても、後者の出力を期待しているのですが、
前者のような出力になるのはなぜでしょうか。
ruby 1.8.5での動作です。
よろしくお願いいたします。
0174デフォルトの名無しさん
2011/05/01(日) 01:21:30.07sendは最終手段と考えてる
protectedで済むならprotectedでやる…んだが
Rubyの場合、privateがJavaでいうprotected並の制限なので
わざわざprotected使う意義は薄いかな
一応、俺は後で読み返したときに分かりやすいよう
「引き継がせたいprivate」はprotectedにしてる
0175デフォルトの名無しさん
2011/05/01(日) 01:24:32.96{}はハッシュ(他言語では連想配列、辞書とも呼ばれる)のリテラルなので
1がキー、2がその値、3がキー、4がその値に
なっちゃってる
配列リテラルの[]を使えば想定通りになるかと
0176デフォルトの名無しさん
2011/05/01(日) 01:25:43.61なるほど。
空目してました。
ありがとうございます!
0177デフォルトの名無しさん
2011/05/01(日) 01:42:23.15pを使うのがおすすめ。
{1,2,3,4}.each{|i|p i}だと
[1, 2]
[3, 4]
と表示されるので、どんなデータなのか分かりやすい。
さらに複雑なデータを扱うときにはpretty printというのもあるよ。
0178デフォルトの名無しさん
2011/05/01(日) 01:49:49.04ご親切にありがとうございます。
p、ppも使って勉強したいと思います。
いろいろとありがとうございます。
0179デフォルトの名無しさん
2011/05/01(日) 02:55:56.15gemでインストールしようとするとCコンパイラが要求され、VC++2010を
入れたのですが、nmakeのバージョンが違うと怒られます。
Webを調べるとRuby本体をコンパイルしたのと同じコンパイラじゃないと
いけないそうで、どうしてもnarray使いたかったのでRuby本体をソースコード
からコンパイル。これで万事。。あ、gemが入ってない。gemのインストールで色々
DLLが無いと言われ、落としてもzlibを見つけてくれない。。。
本題です。どなたかあっさりWIN上でnarray,bitsetが動いて、ActiveRubyに近い
パッケージがあったら御教示くださいませ。
0180デフォルトの名無しさん
2011/05/01(日) 03:37:17.650181デフォルトの名無しさん
2011/05/01(日) 07:02:47.52指定した正規表現に一致しない箇所を抜きだしたいのですが、やり方がわかりません。
str.scan(/AAA.*?BBB/m) do ... end
この場合なら AAAから始まってBBBで終わる最短一致にマッチしますが、
今回はそれ以外の箇所にマッチさせたいです。
awkだと
! /正規表現/ { print ... }
とか書けたので、同じようなことがRubyでもできるだろうと期待してます。
0182デフォルトの名無しさん
2011/05/01(日) 07:48:27.54今週のruby-listのやりとり見てみれば良い
0183デフォルトの名無しさん
2011/05/01(日) 09:38:53.40コンパイルまでできてるなら
zlibが見つけられない原因を探した方が早いかも
1. どこからzlibを落としたか
2.落としたzlibの何というファイルをどこにコピーしたか
を詳しく
0184デフォルトの名無しさん
2011/05/01(日) 10:03:18.09これを入れるとmingwというCコンパイラがついてきます。しかもgemが自動的にコンパイル
してくれるという、今の私にとってはまさにうってつけのものだと判明しました。有難うございました。
でもまだ問題が。。。それは次に書きます。
0185デフォルトの名無しさん
2011/05/01(日) 10:05:31.78なぜかオブジェクト生成しようとすると、undefined local variable or method `nArray'
と言われてしまいます。コードは
require 'rubygems'
require 'narray'
ary1 = nArray.byte(3,4)
なんですが、、、何か間違ってますでしょうか?
0186デフォルトの名無しさん
2011/05/01(日) 10:10:48.730187デフォルトの名無しさん
2011/05/01(日) 10:11:00.06有難う御座いました。m(__)m あとはNArrayのオブジェクト生成ができればウマー。
0188デフォルトの名無しさん
2011/05/01(日) 10:13:52.31nArray.byteじゃなくてNArray.byteじゃない?
0189デフォルトの名無しさん
2011/05/01(日) 10:52:28.33実はNArray.byteでもダメだったのです。でも原因わかりました。
なんと、「テストをnarray.rbというファイルでしていたから!!」
なのでした。http://www.devheads.net/development/ruby/talk/uninitialized-constant-narray-name-error.htm
トホホ。。。
0190デフォルトの名無しさん
2011/05/01(日) 17:31:59.10テスト用のファイル名は test_hoge.rb とかにすると良いよ
ライブラリの名前そのものや、単に test だけの名前も避けとけ
0191デフォルトの名無しさん
2011/05/01(日) 19:27:07.17オリジナルを基準にどの部分を修正したのか知りたいのですが
あるフォルダ内のファイル一覧(サブフォルダを取得)して比較をしたいのですが
比較の部分をどのように実装したらよいのかがわかりません
0192デフォルトの名無しさん
2011/05/01(日) 19:44:37.37ruby -e 'puts `diff -r #{ARGV.join(" ")}`' orig/ ja/
0193デフォルトの名無しさん
2011/05/01(日) 19:50:01.63ruby -v;diff -r org/ ja/
0194デフォルトの名無しさん
2011/05/01(日) 19:53:26.89WinMarge.exe /r org ja
0195デフォルトの名無しさん
2011/05/01(日) 20:08:28.77むしろ既存のプログラムの操作と出力をRubyに寄せたものを作ったほうが喜ばれる
0196デフォルトの名無しさん
2011/05/02(月) 08:06:35.27外部ルーチン使いたい時はRubyInstaller + devkitで決まりですね。
早速色々bitsetの実験してますがドキュメントが殆ど無くて困っております。
rdocにも何も書いてないし。複雑なサンプルはいくつかあったのですが、
基本的なものがなくて。。。
0197デフォルトの名無しさん
2011/05/02(月) 15:25:37.30|/⌒ヽ ⌒ヽヽ | ヽ Rubyコミッターになったよ
| / | ヽ |─| l
/ ー ヘ ー ′ ´^V ママ、Z会でもぼくがんばるよ
l \ U/ _丿
. \ ` ー ´ / .
>ー── く
/ |/\/ \
l l | l
ヽ、| | ノ
|ー───j
\ /
_____
/ ヽ�� /^ \
_ /________ ヽ (_/ ヽ
|ノ─ 、/─ 、ヽ | ヽ (_\/
,| \ |・ | | j ヽ `−ノ
. || 二 | | ̄ ⌒ヽ′ / / 学校で今日はちょっと別のところに自転車で移動したんだけど
/ /ー C ` ─ \) _ノ / / そこで学校に戻るときに豚同級生がカギをなくして、30分位まってた後に
! ⊂──´⌒ヽ ノ/( / ノノ結局ポケットにあったとか言って皆キレる
\ \_(⌒⌒_) /! ヽ、/俺は「ヴァカだろ死ねよ!!」って言っておいた。同級生いじめはストレス解消。
` ,┬─_− ´/ ヽ /
/ |/ \/ く
(( /\ \ ヽ
/, ─ 、/ \ /\
. ( l l j \ ___ / ヽ
0198デフォルトの名無しさん
2011/05/02(月) 15:25:55.54_ /  ̄ <_
_>`´ >>1 ___<_
> r‐'" ̄ ̄ ノ ̄ ̄`ヽ、―ニ 二
/ , | `ヽ/ ´`ヽ _ 三,:三ー二 豚とかいうな sopa_h!!!!!!!!
 ̄/ | ノヽ--/ ̄ , ` ̄ ̄ ̄
/ /⌒ヽ,| ミ } ...| /!
レ l d _}`ー‐し'ゝL _
| ヽ、_, _,:ヘr--‐‐'´} ;ー------
|/| \ ノ`ヾ:::-‐'ーr‐'"==-
ヽ/l/|` ー------r‐'"  ̄ ̄
|└-- 、__/`\-:、
__,ゝ,,_____/ \_」 \
0199デフォルトの名無しさん
2011/05/02(月) 15:36:22.44(、 , ,)
|| |‘ ,,,;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,,;;;;;;,,,
∧∧∧∧∧∧∧ ______;;;;;;''''" ''';;;;;;;;,,,
/ ̄ ̄ ̄ ̄\ < 石破天驚拳 > / _ノ_ノ:^) ''';;;;;;;;;,,,
l ∨∨∨∨∨ l < > / _ノ_ノ_ノ /) ''';;;;;;;;;;;;;;;;;;;;;;
| \()/ | ∨∨∨∨∨∨ / ノ ノノ//
(| ((・) (<) |) __ / ______ ノ
| ⊂⊃ | _.. r(" `ー" 、 ノ
| .| ⌒ \.l/ ⌒ | | _. - '"´ "-、 ゙ ノ
|. l + + + + ノ | ' " _.. `ー''"ー'"
r\_____/"´ __ '"´ -" ̄ "- ̄ヽ
/ ----,,, ,,_.- ' " /" _ ----ヽゞ;;;,, ,,,,:;;;;;;;;;;;;;;;;;;
'''''─ " (___-" ヾ ヽヽヽヽ'';;;;;,,,. ,,,;;;;‐″
| _..ヾ ヽヽヽヽ '';;;;,. .,;;;;;;'
| ,,,-‐ '"´ ヾ__)__)__)_) ''';;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ,,.,;;;;‐'''
│ "─r'--,,,,,--''''''''
0200デフォルトの名無しさん
2011/05/02(月) 16:06:06.21*を理解していないからだと思いますが、
alist.flattenと*alist.flattenで出力に違いが生じる理由がよくわかりません。
どうして違いが出るのでしょうか?
irb(main):001:0> alist = [[1,"a"],[2,"b"]]
=> [[1, "a"], [2, "b"]]
irb(main):002:0> p alist.flatten
[1, "a", 2, "b"]
=> nil
irb(main):003:0> p *alist.flatten
1
"a"
2
"b"
=> nil
0201デフォルトの名無しさん
2011/05/02(月) 16:14:33.13alist.flatten の結果は、[1, "a", 2, "b"]
p *alist.flatten ではそれがバラバラにされてpの引数になってるので、
p 1, "a", 2, "b" になってる。
0202デフォルトの名無しさん
2011/05/02(月) 16:28:17.36alist.flattenの結果は [1, "a", 2, "b"] だから
p alist.flatten は p(alist.flatten) でありこれは p([1, "a", 2, "b"]) と同じ
p *alist.flatten は p(*alist.flatten) でありこれは p(1, "a", 2, "b") と同じ
>>201
初心者スレなんだから、もっとわかりやすく書こうぜ
0203デフォルトの名無しさん
2011/05/02(月) 17:04:16.38横からだが、お前の説明の方がずっとわかりにくかった
0204デフォルトの名無しさん
2011/05/02(月) 18:28:47.020205デフォルトの名無しさん
2011/05/02(月) 20:18:59.73つけないとパースがおかしくなるような部分以外はスタイルさえ統一してりゃ好きにしていいと思うよ。
0206デフォルトの名無しさん
2011/05/02(月) 20:24:11.05begin
なにか
rescue Exception
end
を
なにか rescue Exception
と書けるそうですが、両者はまったくの同一なのでしょうか。
たとえば前者は速いけど後者は遅いとか、そういう落とし穴はありますか。
後者を使ううえでのデメリットがないのか知りたいです。
0207デフォルトの名無しさん
2011/05/02(月) 20:57:44.500208デフォルトの名無しさん
2011/05/02(月) 21:03:17.58修飾子(後置)rescueには例外クラスを指定できず、
StandardError(とサブクラス)しか捕まえられない。
0209デフォルトの名無しさん
2011/05/02(月) 21:14:01.220210デフォルトの名無しさん
2011/05/02(月) 21:22:31.68経験上、後置rescueを書いた箇所はあとあと必ず揉めるし、必ず書き変える羽目になる
なので、最初から素直にbegin構造で書いたほうが見通しがいいと思うの
0211デフォルトの名無しさん
2011/05/02(月) 21:29:26.84そ、そうだったんですか。おしえていただきありがとう。
>>210
そうなんですか。
eruby中で使おうと思ったんですが、erubyだと
<%begin%>
<%rescue%>
<%end%>
をかくのがめんどくさかったので、rescueをくっけるほうが簡単でいいやと
思ったんですけど、やめたほうがいいですか。
0212デフォルトの名無しさん
2011/05/02(月) 21:32:53.230213デフォルトの名無しさん
2011/05/02(月) 21:47:22.14% now = Time.now
<%= now %>
% if now.sec % 2 == 0
even sec
% else
odd sec
% end
0214デフォルトの名無しさん
2011/05/03(火) 10:02:24.47>>> /(?=foo)bar/ =~ "foobar"
=> nil
なんでこれがマッチしないん?
0215デフォルトの名無しさん
2011/05/03(火) 10:24:00.49(?=foo) の場合は、「直後にfooのある位置」("foobar" の場合、fの左)にマッチする。
その位置から bar にマッチせよ、ということ。
0216デフォルトの名無しさん
2011/05/03(火) 10:25:03.24/(?=foo)/ で "foo" までマッチはするんだけど、位置は動いてないんだ
動いてないってことは、直後の正規表現 /bar/ はまた "foo" の先頭からマッチを試される
もちろんマッチしない
結果は nil
/(?=foo)bar/ は
「文字列fooと文字列barが同じ開始位置から存在する」という必ず失敗する正規表現
先読みはマッチ記号入れないと思い通りには動作しない
0217デフォルトの名無しさん
2011/05/03(火) 10:26:26.20/(?<=foo)bar/
0218デフォルトの名無しさん
2011/05/03(火) 10:35:40.71あーわかった、
/(?=foo)bar/ =~ 'foobar'
だと、いったん先頭から foo にマッチしたあと、開始場所がまた先頭に戻るわけね。
それが「幅を持たない」って言う意味か。なるほど。ありがと。
「ruby 正規表現 先読み」でぐぐったら
ttp://www.ruby-lang.org/ja/man/html/_C0B5B5ACC9BDB8BD.html
のページがでてくるんだけど、このページを見てもさっぱりわからかったんだよね。
「幅を持たない」というのがどういう意味か、まるで書いていないし。マッチング開始場所が戻ると書いてほしいな。
あとこれも。
> (?=re1)re2
> という表現は、re1 と re2 両方にマッチするものにマッチする正規表現で す。
こうじゃなくて、「re1とre2の両方に、同時にマッチする正規表現」と書いてくれればいいのに。
「マッチするものにマッチする」ってなんだよ。
0219デフォルトの名無しさん
2011/05/03(火) 10:37:12.270220デフォルトの名無しさん
2011/05/03(火) 10:44:14.31人はなぜか正規表現の先読み戻り読みを使って一発で表現しようとする
正規表現オブジェクトいっこでマッチさせたい需要は理解はするがw
0221デフォルトの名無しさん
2011/05/03(火) 10:44:13.830222デフォルトの名無しさん
2011/05/03(火) 11:04:13.59用途がさっぱりわからない。
0223デフォルトの名無しさん
2011/05/03(火) 11:11:37.28if /re1/ =~ str && /re2/ =~ str then
のかわりに
@re = /(=?re1)re2/
if @re =~ str then
と書けるようになる
0224デフォルトの名無しさん
2011/05/03(火) 11:16:39.97スクリプト構造を単純にするかわりに、正規表現に条件を押し込む
正規表現を単純にするかわりに、スクリプト構造側で条件を増やす
0225デフォルトの名無しさん
2011/05/03(火) 12:00:23.82if /re1|re2? =~ str
でよくね?
0226デフォルトの名無しさん
2011/05/03(火) 12:01:04.30if /re1|re2/ =~ str
でよくね?
それとも速度に違いがあるんかな
0227デフォルトの名無しさん
2011/05/03(火) 12:04:19.90ん、
/(?=re1)re2/ =~ str
と
/re1/ =~ str && /re2/=~str
は全然違うぞ。勘違いしてない?
str = 're1re2'
p (/(?=re1)re2/ =~ str) #=> nil
p (/re1/ =~ str && /re2/=~str) #=> 3
0228デフォルトの名無しさん
2011/05/03(火) 12:28:18.73/re1|re2/ =~ str
どこかにre1かre2の少なくとも一方あればマッチ、どっちでもいいから最初のマッチ位置が返る
/re1/ =~ str && /re2/ =~ str
どこかにre1があって、かつre2もどこかにあればマッチ。re2のマッチ位置が返る
/(?=re1)re2/ =~ str
re1でマッチするか確かめ、そのマッチ位置(≠re1のうしろ)でre2にマッチすればre2の位置が返る。
全部違うお
0229デフォルトの名無しさん
2011/05/03(火) 12:52:15.790230デフォルトの名無しさん
2011/05/03(火) 12:58:20.26そっくりそのまま/(?=re1)re2/なら絶対に失敗。
[]とか.とか?とか+とか*とか|とか、なんでもいいけど、
複数の状態にマッチする先読みならマッチすることもある。
0231デフォルトの名無しさん
2011/05/03(火) 13:08:13.57文字列中、年月日を表す数値だけ漢数字表記にする。
kansuuji = {
"0"=>"〇", "1"=>"一", "2"=>"二", "3"=>"三", "4"=>"四",
"5"=>"五", "6"=>"六", "7"=>"七", "8"=>"八", "9"=>"九"
}
text = '1989年4月1日に3%の消費税が導入された'.
text.gsub!(/(¥d+)(?=[年月日])/) { $1.chars.map {|c| kansuuji[c] }.join }
まぁこの程度だと先読みを使わなくても後続パターンを記憶すれば出来るか。
text.gsub!(/(¥d+)([年月日])/) { $1.chars.map {|c| kansuuji[c] }.join + $2 }
0232デフォルトの名無しさん
2011/05/03(火) 13:16:23.730233デフォルトの名無しさん
2011/05/03(火) 14:55:31.97普段はAutoItを使っているのですがRubyではどこまでできるのか知りたくて
0234デフォルトの名無しさん
2011/05/03(火) 15:26:32.25ので、デスクトップの座標のどこそこをOSがダブルクリックだとみなす間隔で2回クリックしたことにできるAPI
というのを直接なんらかの手段で呼べばいい
0235デフォルトの名無しさん
2011/05/03(火) 17:20:16.83それとももっとスマートな方法がありますか?
0236デフォルトの名無しさん
2011/05/03(火) 17:31:23.72ARGF
http://www.ruby-lang.org/ja/man/html/ARGF.html
というのがある。
ってかそれくらいの単純な分岐にスマートも何もあるわけない。
0237デフォルトの名無しさん
2011/05/03(火) 17:48:27.63標準入力がリダイレクトされてるかを判定して、
リダイレクトされていればされていれば標準入力からの読み込み
そうでなければARGV解釈(orARGF)でいいと思う
FileTest.chardev?($stdin) # 偽ならリダイレクトされてる
0238デフォルトの名無しさん
2011/05/03(火) 18:06:58.27$stdtin.tty? ではダメなのかな。
0239237
2011/05/03(火) 18:21:49.86指摘ありがとうございます
tty? が普通みたいですね
何年も前に1度使ったきりでメソッドが思い出せなかったので
適当に検索して引っかかったものを書いてしまいました
0240デフォルトの名無しさん
2011/05/03(火) 18:34:29.840241デフォルトの名無しさん
2011/05/03(火) 18:41:17.86復号可能なら、それはそもそもランダムではない
公開鍵暗号とかそのへん調べるといいぞ
自分で実装してもあんまり勉強にならない
0242デフォルトの名無しさん
2011/05/03(火) 18:50:53.170243デフォルトの名無しさん
2011/05/03(火) 19:04:15.42サンクス
それためしてみる。
0244デフォルトの名無しさん
2011/05/03(火) 19:05:51.51揚げ足取らないで質問の意味が分からないと返してやれば良いのに
0245デフォルトの名無しさん
2011/05/03(火) 19:28:15.33l%20P.%21r%21%20hewoeHllI%20i%20kdPlo
これ解読できますでしょうか?
0246デフォルトの名無しさん
2011/05/03(火) 19:31:29.87復号不可能な暗号は実在するよ
0247デフォルトの名無しさん
2011/05/03(火) 19:34:07.40DH共有鍵とか勉強する価値はあると思うけどね。
実際使うときはopensslを使うわけだが。
0248デフォルトの名無しさん
2011/05/03(火) 20:24:48.580249デフォルトの名無しさん
2011/05/03(火) 20:38:05.91普通は一対一対応ではなくなってしまう
それに加えて一方向ハッシュの場合は、原像計算困難という特性がある
0250デフォルトの名無しさん
2011/05/03(火) 20:41:34.68まず暗号ってのは特定の人物にだけ読めるようにしたいってものだし
その特定の人物が複合化して読めなきゃ暗号としての存在意義がねぇ
0251デフォルトの名無しさん
2011/05/03(火) 20:44:35.15パスワードは別途電話とかで伝えとけw
0252デフォルトの名無しさん
2011/05/03(火) 21:25:24.42Windowsだとchmでえいやーと検索して表示だったんだけど、もっと安楽なのない?
0253デフォルトの名無しさん
2011/05/03(火) 21:50:58.66るりま入れてPath通ったところにシェルスクリプト置いてrefe2で検索。
検索して調べたいんじゃなくてマニュアルを眺めたいときはserver.rb立ててブラウザからローカルホスト
0254デフォルトの名無しさん
2011/05/03(火) 22:37:33.16初心者には、Windowsじゃなくてもchmがいちばん手軽だとおもう。
refe2とかコマンドライン型は中級者以上の道具。個人的意見だけど。
0255デフォルトの名無しさん
2011/05/03(火) 23:10:31.22chmをアンパック読めるようにするツールがある。
名前は忘れた。
0256デフォルトの名無しさん
2011/05/03(火) 23:27:16.29Rubyマニュアル読み込んだだけで1万5千個のファイルがキャッシュディレクトリに展開された
容量90MB
これから全文検索するのでもちろん検索は遅い
0257デフォルトの名無しさん
2011/05/03(火) 23:30:35.18そんな手間でもないし、難しいこともないから。
0258デフォルトの名無しさん
2011/05/03(火) 23:32:59.83実行結果にみたいなのをつけてくれるライブラリなんだっけ?
0259デフォルトの名無しさん
2011/05/03(火) 23:45:00.840260デフォルトの名無しさん
2011/05/03(火) 23:57:02.22最初の3行を .irbrc に書いておく
irb > require 'rubygems'
irb > require 'fancy_irb'
irb > FancyIrb.start
=> "Enjoy your FancyIrb :)"
irb > 1+2 #=> 3
irb > "long"*4 #=> "longlonglonglong"
irb > "long"*10
=> "longlonglonglonglonglonglonglonglonglong"
irb >
0261デフォルトの名無しさん
2011/05/03(火) 23:58:40.650262デフォルトの名無しさん
2011/05/04(水) 00:01:14.36ロケットは初耳だなあ
0263デフォルトの名無しさん
2011/05/04(水) 00:01:40.260264デフォルトの名無しさん
2011/05/04(水) 00:03:17.11<=>はどう見てもどら焼きにしか見えない。
0265デフォルトの名無しさん
2011/05/04(水) 00:04:18.25サンプルどおりにやってるのに
0266デフォルトの名無しさん
2011/05/04(水) 00:08:58.85JavaとかPHPでweb上のAPI見る癖がついてると「ありがたいけど、みづらい‥」と思ってしまう
0267デフォルトの名無しさん
2011/05/04(水) 00:23:48.630268デフォルトの名無しさん
2011/05/04(水) 00:23:49.41最新のは俺も読みにくいと思う
0269デフォルトの名無しさん
2011/05/04(水) 00:24:11.11「なにもしなくても」Ruby/Tkが動作するのはActiveScriptRubyだけ
それ以外は別途Tcl/TKのインストールが必要
0270デフォルトの名無しさん
2011/05/04(水) 01:42:01.82ちょっと楽しそうかもと思って手を出そうとしたら、
RadRailsのインスコでつまずいたわ・・・
なんで起動しねーんだよ・・・
日本語化どころかエディタが起動しねーって何だよ
0271デフォルトの名無しさん
2011/05/04(水) 01:48:23.720272デフォルトの名無しさん
2011/05/04(水) 01:49:17.88あちこち寄り道してるうちに色々とできるようになってくるもん。
0273デフォルトの名無しさん
2011/05/04(水) 01:53:55.22ある程度Rubyに特化したエディタがいいってあってさ、
テキストエディタはあるんだけど、まぁその方がいいのか、と思ったら、これだよ・・・
一日かけて出来ればいい気がしてきたわw
AptanaのWEB見て、Studioって何?2?3?え?なに?
って状態だもん
0274デフォルトの名無しさん
2011/05/04(水) 02:23:35.76Ruby用にキーワード強調表示や自動字下げしてくれるエディタってこと
たのしいRubyの範囲なら無くてもどうってことないよ
あとRadRailsみたいな統合開発環境はこのスレでは人気が無いので
質問してもレスがつかないかもしれない
0275デフォルトの名無しさん
2011/05/04(水) 02:23:54.78まったくの初心者なら、だれか知ってる人が近くにいないと、どんな言語でも
きついと思うよ。
ときどきカンのいいやつがいて、独習できちゃう人もいるけど、多くの人は
そんなことないと思う。
初めて自転車にのるときのようなもので、一人で練習してできる人もいるけど
ふつうは親が補助してやって乗れるようになるでしょ。
まあ頑張ってこのスレでもいいから気長に勉強してくれ。
0276デフォルトの名無しさん
2011/05/04(水) 06:51:49.04キーボードから文字を入力してファイルをどうにかする黒い画面があるらしいこと
ディレクトリパスを元にした(エクスプローラ上での)移動と操作の概念
Wordではないテキストファイルというモノがあり、メモ帳で編集するということ
文字化けの原因は英語とシフトジスとユーティーエフはちとかいう日本語の記述法があるから
最低限あると便利なエディタの機能
「Rubyの予約語に対応」した着色機能(シンタックスハイライト)
改行支援(オートインデント、スマートインデント)
行番号表示
0277デフォルトの名無しさん
2011/05/04(水) 10:17:19.93読むだけなのにWEBrickが起動するのがイヤだったので、
「localhost:10080 を wget -r でリンクまるごと保存すればメインの部分は読めんじゃね?」
と思って現在処理中
うん、終わらないw
現在32MB
クエリ文字列つきのリクエストどうしよう
0278デフォルトの名無しさん
2011/05/04(水) 10:26:21.29http://www.ruby-lang.org/ja/documentation/
0279デフォルトの名無しさん
2011/05/04(水) 11:02:06.75webサイトはPHPで作り、携帯アプリはJavaで作る場合、Rubyを覚える場合メリットはありますか?
0280デフォルトの名無しさん
2011/05/04(水) 11:03:27.09キャンセル
よく考えたら半分くらいは月に1回くらいしか読まないし、
もう半分くらいは年に1回読むか怪しいし、
よく読むものでもクラス全体眺めて探すなんて1日数回あるかどうかなので、
必要なときに動的生成させたほうがマシだった
見積りは実行前に行ないましょう
>>278
それHTMLじゃないぞ
0281デフォルトの名無しさん
2011/05/04(水) 11:09:03.15webサイトを作成したり携帯アプリを作成したりするのではないときに役立ちます
0282デフォルトの名無しさん
2011/05/04(水) 11:16:03.19旧リファレンスマニュアル 20051029版
ってとこをミロ。htmlのがある。
version 1.6 〜 1.9 対応
原著:まつもとゆきひろ
だからまだまだ使える。
0283デフォルトの名無しさん
2011/05/04(水) 11:36:30.700284デフォルトの名無しさん
2011/05/04(水) 11:45:23.180285デフォルトの名無しさん
2011/05/04(水) 12:06:07.86http://www.ruby-lang.org/ja/man/html/ 以下を
巡回ソフトかなんかでローカルにおとした方がいいかも。
まあそこまでするぐらいならるりまでいいけどね
0286デフォルトの名無しさん
2011/05/04(水) 12:35:24.89ブラウザの検索バーから検索できるようにしてる
0287デフォルトの名無しさん
2011/05/04(水) 13:03:29.52File.open('text', &:readlines)
0288デフォルトの名無しさん
2011/05/04(水) 13:54:13.10なにこれ
0289デフォルトの名無しさん
2011/05/04(水) 13:58:32.20Pythonならtkです
0290デフォルトの名無しさん
2011/05/04(水) 13:59:38.62マジレスするとHTMLじゃないかな。
0291デフォルトの名無しさん
2011/05/04(水) 14:19:19.20:sym.to_proc
は
Proc.new {|arg| arg.__send__(:sym)}
こういうものを返すらしい。
それからメソッド呼び出しの&objによるブロック渡しは
obj.to_procしてからブロックとして渡すらしい。
つまり
File.open('a', &:read) は
File.open('a', &(:read.to_proc)) であり
File.open('a'){|f| f.__send__(:read)} で
File.open('a'){|f| f.read } ということ。
collectとかsort_byみたいなのにも便利かも。
0292デフォルトの名無しさん
2011/05/04(水) 14:47:32.06とりあえずtk使っとけばいんじゃね
まんま、GUIの記事がるびまにあった
ttp://jp.rubyist.net/magazine/?0001-RubyGUI
あとJRuby経由でJavaからって手もあることはあるな
0293デフォルトの名無しさん
2011/05/04(水) 14:58:31.77なんか直感的じゃなくてヤな書き方だなぁ。
ストリームがちゃんと閉じられてますよ感が無い。
0294デフォルトの名無しさん
2011/05/04(水) 15:00:32.95でもrubyのGUIライブラリはどれもドキュメント不足で結構めんどい。
もともとCUI文化な上にドキュメント少ないからGUI作る人が増えないし、
GUI作る人が増えないからドキュメントも増えないみたいな袋小路。
0295デフォルトの名無しさん
2011/05/04(水) 15:02:27.66File.openだと微妙だけど
array.sort_by(&:length) とかだと個人的にはこっちの方が直感的に読める。
0296デフォルトの名無しさん
2011/05/04(水) 15:12:06.08array.sort_by{|e|-e.length}の場合はどう書くのっと。
やめようよ、こんなの絶対おかしいよ。
0297デフォルトの名無しさん
2011/05/04(水) 15:14:33.53ttp://misty-sphere.at.webry.info/200901/article_3.htmlをみながらやったんですが
ruby script/server -e productionでサーバが立ち上がりません
原因は何故でしょうか?
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems.rb:861:in `report_activate
_error': RubyGem version error: rack(1.2.2 not ~> 1.0.1) (Gem::LoadError)
from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems.rb:255:in `ac
tivate'
from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems.rb:1204:in `g
em'
from D:/redmine/vendor/rails/actionpack/lib/action_controller.rb:
34:in `<top (required)>'
from <internal:lib/rubygems/custom_require>:29:in `require'
from <internal:lib/rubygems/custom_require>:29:in `require'
from D:/redmine/vendor/rails/activesupport/lib/active_support/dep
endencies.rb:156:in `block in require'
from D:/redmine/vendor/rails/activesupport/lib/active_support/dep
endencies.rb:521:in `new_constants_in'
from D:/redmine/vendor/rails/activesupport/lib/active_support/dep
endencies.rb:156:in `require'
from D:/redmine/vendor/rails/railties/lib/commands/server.rb:2:in
`<top (required)>'
from <internal:lib/rubygems/custom_require>:29:in `require'
from <internal:lib/rubygems/custom_require>:29:in `require'
from script/server:3:in `<main>'
0298デフォルトの名無しさん
2011/05/04(水) 15:28:33.08:-)
0299デフォルトの名無しさん
2011/05/04(水) 15:29:18.69> RubyGem version error: rack(1.2.2 not ~> 1.0.1)
rackのバージョンが新しすぎるから。
rackの1.0.1かそれ以上だけど1.0.x系を入れる。
'not ~>'の意味は↓でも嫁。
http://blog.s21g.com/articles/1504
0300デフォルトの名無しさん
2011/05/04(水) 15:41:02.22そしたら違うエラーが出てきてましたhttp://0.0.0.0:3000にアクセスしてみましたがアクセスできませんでした
=> Booting WEBrick
=> Rails 2.3.5 application starting on http://0.0.0.0:3000
D:/redmine/vendor/rails/railties/lib/rails/gem_dependency.rb:119:in `requ
irement': undefined local variable or method `version_requirements' for #<Rails:
:GemDependency:0x34a7c30> (NameError)
from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems.rb:254:in `activate'
from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems.rb:1204:in `gem'
from D:/redmine/vendor/rails/railties/lib/rails/gem_dependency.rb:73:in `add_load_paths'
from D:/redmine/vendor/rails/railties/lib/initializer.rb:301:in `block in add_gem_load_paths'
from D:/redmine/vendor/rails/railties/lib/initializer.rb:301:in `each'
from D:/redmine/vendor/rails/railties/lib/initializer.rb:301:in `add_gem_load_paths'
from D:/redmine/vendor/rails/railties/lib/initializer.rb:132:in `process'
from D:/redmine/vendor/rails/railties/lib/initializer.rb:113:in `run'
from D:/redmine/config/environment.rb:20:in `<top (required)>'
from <internal:lib/rubygems/custom_require>:29:in `require'
from <internal:lib/rubygems/custom_require>:29:in `require'
from D:/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `block in require'
from D:/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:521:in `new_constants_in'
from D:/redmine/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require'
from D:/redmine/vendor/rails/railties/lib/commands/server.rb:84:in `<top (required)>'
from <internal:lib/rubygems/custom_require>:29:in `require'
from <internal:lib/rubygems/custom_require>:29:in `require'
from script/server:3:in `<main>'
0301デフォルトの名無しさん
2011/05/04(水) 15:48:55.99わからん。
↓な気がする。
http://www.oiax.jp/rails/zakkan/rubygems_1_5.html
ってかエラーメッセージでググったほうが早いぞ。
0302デフォルトの名無しさん
2011/05/04(水) 16:15:18.38違うのか・・・(´・ω・`)
統合開発環境ではないエディタ、RDEだな!
よし、入れてみる!
>>275
HTML、CSSまでは独学で来たんだが
プログラミング言語は次元が違うというか、読めないw
いままでは英語で何となく読めてたのが、急にアラビア語になった感じ
気長に勉強してみるわ。
0303デフォルトの名無しさん
2011/05/04(水) 16:25:21.44には不可能です
世の中の偉人方に出来ないものを私のような小生には不可能なので諦めたいと思います
0304デフォルトの名無しさん
2011/05/04(水) 16:31:13.29個人的にはマイナスでソートするの嫌いだから
array.sort_by(&:length).reverse
0305デフォルトの名無しさん
2011/05/04(水) 16:34:56.34サクラとかApsaryとかXyzzyとかその他もろもろ高機能テキストエディタの
Rubyモードで書いて「コマンドプロンプトに送る」あたりで実行するのがいいかも。
0306デフォルトの名無しさん
2011/05/04(水) 16:53:42.170307デフォルトの名無しさん
2011/05/04(水) 16:54:27.65RedmineってたしかRails2.xだよね。
そしてRails2.xはRuby1.9.xをサポートしてないはず。
0308デフォルトの名無しさん
2011/05/04(水) 17:04:57.50トラップとかあるのかよ
サイト見る限りよさそうに書いてあったのに
サクラでいきます。
ほんと助かります。ありがとうございます。
0309デフォルトの名無しさん
2011/05/04(水) 17:11:06.79Ruby1.9 で動作させる意義を見いだせない
あとたった今、自分用 Redmine のチケットに長文で投稿したはずの文章が「eucJP-ms」の1語だけになった
今日はもう何もやる気が起きない
たぶん投稿文中のHTMLのタグや<pre>とかの複合のなにかだと思うのだが、原因究明する気すら起きない
Firefoxからit's all Text!経由だったので、もしかしたらそれ絡みかもしれないがもうやだ
外部エディタに別ディレクトリバックアップ保存機能があればよかったんだが、軽さ優先で選定に手を抜いた
0310デフォルトの名無しさん
2011/05/04(水) 18:15:10.29ぐぬぬ…
0311デフォルトの名無しさん
2011/05/04(水) 18:59:35.01Rubyのスレでこんなこと言うのも難だが
HTML、CSSと来たなら
最初のプログラミング言語はJavaScriptのが良くないか…
0312デフォルトの名無しさん
2011/05/04(水) 20:03:28.430313デフォルトの名無しさん
2011/05/04(水) 20:04:08.61え・・・?
まだ移行してないの?
0314デフォルトの名無しさん
2011/05/04(水) 20:14:01.00webにインストールして利用するプロジェクト管理についての話題はどこの板のどのスレで伺えばよいでしょうか?
0315デフォルトの名無しさん
2011/05/04(水) 20:16:40.74Ruby1.8に慣れてるのなら今すぐが最適
ただ、文字列を使用するライブラリは遅いので注意
Rails が移行すればいいんだろうけど、たぶん絶対しないと思う
0316デフォルトの名無しさん
2011/05/04(水) 20:20:37.76この板かマ板
こことか
【バグ管理】 BTS使ってる?【追跡】 3
ttp://hibari.2ch.net/test/read.cgi/tech/1244347242/
0317デフォルトの名無しさん
2011/05/04(水) 20:20:44.63初心者です
0318デフォルトの名無しさん
2011/05/04(水) 20:22:34.190319デフォルトの名無しさん
2011/05/04(水) 20:25:44.08> Time.now + 1000 * 365 * 24 * 60 * 60
=> 3010-09-04 20:24:58 +0900
0320デフォルトの名無しさん
2011/05/04(水) 20:40:46.95Shift_JISとEUC-JPとUTF-8が違うものという認識があり、
エディタとかでファイルの文字エンコーディングを書き換えたり意識したことがあって、
なにかわからないことがあってぐぐった結果がRuby1.8専用の書き方だったとしても
めげない程度のリテラシがあるのなら、最初からRuby1.9.2を使ってもいいよ
0321デフォルトの名無しさん
2011/05/04(水) 21:05:47.39いまさら1.8から身につける必要はあんまり感じないな
0322デフォルトの名無しさん
2011/05/04(水) 21:20:50.070323デフォルトの名無しさん
2011/05/04(水) 21:23:36.23偉大なる設定ファイル集
0324デフォルトの名無しさん
2011/05/04(水) 21:38:08.500325デフォルトの名無しさん
2011/05/04(水) 21:38:40.45設定ファイル集というとStrutsのほうがイメージ強いな
Railsは「設定の前に規定」がポリシーだし
0326デフォルトの名無しさん
2011/05/04(水) 22:03:53.80/ ____ヽ /  ̄  ̄  ̄ \
| | /, −、, -、l /、 ヽ
| _| -| ・|< || |・ |―-、 |
, ―-、 (6 _ー っ-´、} q -´ 二 ヽ |
| -⊂) \ ヽ_  ̄ ̄ノノ ノ_ ー | |
| ̄ ̄|/ (_ ∧ ̄ / 、 \ \. ̄` | /
ヽ ` ,.|  ̄ | | O=======|
`− ´ | | _| / |
| (t ) / / |
「Rubyコミッタに選ばれちゃった!」 「まじかよすごくねーなwww」
0327デフォルトの名無しさん
2011/05/04(水) 22:16:05.07前にもあったが、2つ目の言語としてなら1.9.2で一発なんだよね
なんで今の面倒な時期を狙い済ましたように
初めてのプログラミング言語としてRubyやろうとするんだ
説明めんどくせえ、とかちょっと思う
0328デフォルトの名無しさん
2011/05/04(水) 22:22:02.97Python3も似たような広報的問題抱えてる
まあ、よく考えたら他の言語も大体似たようなもんだったりもしたんだけどw
バージョンがひとつしかなくて非互換的新機能もない、という状態の方が稀
酷い言い方だが、混乱する初心者は切り捨てでもいいと思う
非商用でノンサポートな言語はこれまでもそうだったし、これからもそうだろう
0329デフォルトの名無しさん
2011/05/04(水) 23:04:36.40パッケージがたくさんありすぎてひとつひとつ入力するのがきついので
もし存在しない場合はrubyinstallerでインストールしなおします
0330デフォルトの名無しさん
2011/05/04(水) 23:08:17.02gemのインストールディレクトリの下の
binとdocとgemsとspecificationsの下のディレクトリを全部消す。
0331デフォルトの名無しさん
2011/05/04(水) 23:08:48.370332デフォルトの名無しさん
2011/05/04(水) 23:19:30.720333デフォルトの名無しさん
2011/05/04(水) 23:33:31.41レジストリは使っていない。
0334デフォルトの名無しさん
2011/05/05(木) 02:02:40.09なん・・・だと・・・
いや、イメージの問題なんだけど、
JavaScriptって古い&重いってあって、
プログラミングやろうかなってときに頭になかった
0335デフォルトの名無しさん
2011/05/05(木) 02:03:42.64findしてソースコード読んだ方が早いがな!
0336デフォルトの名無しさん
2011/05/05(木) 02:11:16.01古いか新しいかと言えばJavaScriptはRubyと同い年くらい。
速度は改善されてて処理系も現在進行形で進化中。
むしろRubyよりホットな言語だろう。
ただ動作環境が事実上Webブラウザだけなので、
(サーバーサイドJSも昔からあるが声のでかい奴が叫んでるだけ)
ファイルを処理するとかなら使いづらいだろう。
0337デフォルトの名無しさん
2011/05/05(木) 02:21:16.48もし入出力がサポートされててコマンドラインから叩けるV8がでたらそっちに移行するかもしれないな。
0338デフォルトの名無しさん
2011/05/05(木) 02:30:47.69もし離れてもやってけるなら今頃みんなRhinoでも使ってる
0339デフォルトの名無しさん
2011/05/05(木) 04:45:23.36まさにnode.jsのことだな。今すぐ移行しろ。
>>336
node.jsは基本的なファイル処理も十分できる。
ただバージョンアップが激しいのでライブラリの仕様が安定してないのが弱み。
>>338
Rhinoは遅いけどnode.jsは爆速。Rubyがどう頑張ってもこの速度にはとうてい追いつけない。
0340デフォルトの名無しさん
2011/05/05(木) 06:31:12.68といっても同時接続数が多いサイトじゃないと効果実感できんと思うが
JavaScriptは保守性に難がありすぎると思う
つーかいきなりnode.jsの話がでてきたがWebProg板向きの話だと思うが
少なくとも初心者スレ向きの話題ではないわな
0341デフォルトの名無しさん
2011/05/05(木) 06:38:59.81一般プログラミング従事者や初心者には若干荷が重い
JavaScriptで作られたnode.jsで作られた何か、というのが流行した頃合いなら、
適度にわかりやすく適度に便利で適度に遅いはず
Rubyで作られたRailsで作られた何か、と同様に
0342デフォルトの名無しさん
2011/05/05(木) 07:44:11.12>JavaScriptは保守性に難がありすぎると思う
これってJavaScriptそのものに難があるってことじゃなくて、
HTMLやらAjaxやらが絡んでくるからしっちゃかめっちゃかになるって話だよね…?
0343デフォルトの名無しさん
2011/05/05(木) 10:04:35.15gem updateでgemを最新版にする
他にやることありますか?
0344デフォルトの名無しさん
2011/05/05(木) 10:09:06.57ttp://www.ruby-lang.org/ja/man/html/_B4C4B6ADCAD1BFF4.html
0345デフォルトの名無しさん
2011/05/05(木) 10:17:26.00HDD容量に余裕があるなら、devkitをあらかじめ入れて保険をかけておく
ttp://d.hatena.ne.jp/kitamomonga/20110208/ruby_gem_install_requires_make_on_windows
0346デフォルトの名無しさん
2011/05/05(木) 11:29:12.780347デフォルトの名無しさん
2011/05/05(木) 12:26:45.95やはりHaskellでしょうか。
0348デフォルトの名無しさん
2011/05/05(木) 12:40:32.660349デフォルトの名無しさん
2011/05/05(木) 12:41:05.440350デフォルトの名無しさん
2011/05/05(木) 12:42:47.720351デフォルトの名無しさん
2011/05/05(木) 13:28:08.930352デフォルトの名無しさん
2011/05/05(木) 13:31:30.350353デフォルトの名無しさん
2011/05/05(木) 13:57:10.96ary.sort_by{|i| -i.length }
より
ary.sort_by(&:length).reverse
の方が微妙に速いんだね。上の方がメソッド呼ぶ回数多いからかな。
まあほとんど差はないんだけど。
user system total real
-: 9.200000 0.010000 9.210000 ( 9.208521)
rev: 8.940000 0.010000 8.950000 ( 8.925170)
require 'benchmark'
STR = '*'
ARY = Array.new(40000){|i| STR * i}.shuffle
Benchmark.bm(6) do |x|
x.report(' -:'){ 100.times{ARY.sort_by{|i| -i.length}} }
x.report('rev:'){ 100.times{ARY.sort_by(&:length).reverse} }
end
0354デフォルトの名無しさん
2011/05/05(木) 15:22:22.63同い年なのか。
単に自分が知っているJavaScriptは昔からあって
Rubyは最近って意識だったんだと思う
むしろホットか・・・orz
>>337の書き込み内容とかnode.jsとか、意味が全然わかんないw
徐々にわかっていくものと信じたいわ
ウェブサイト作りの一環でプログラミングを使いたくなったときの勉強と
例えばJaneを作るときのプログラミングの勉強って全く違うの?
0355デフォルトの名無しさん
2011/05/05(木) 15:47:04.94ケータイアプリと
Webアプリケーションと
自分のパソコンの中でシェルから起動してなんかやらせるスクリプトは
勉強の方向性というか追加で覚えることがまったく違う
日常的にいちばん便利なのが4、
いまのところ趣味で充実感を得やすいのが3、
初期投資に見合った収入になる可能性が一番高いのが2、
どっかの企業に就職して手がけないと今後割に合わなそうなのが1
0356デフォルトの名無しさん
2011/05/05(木) 17:09:32.47JSとRubyは担当するところが全く違う
(JSはブラウザ側、Rubyなどはサーバ側がメイン)
んでHTML、CSSとWebアプリ界のブラウザ側での記述を学んで来たなら
取っつきやすいのはJSじゃないかな?って思った
まあ、いきなりサーバ側やるのもダメじゃないけどね?
0357デフォルトの名無しさん
2011/05/05(木) 17:15:47.09所詮趣味レベルなんだよね。
仕事で使う機会は無いし(あったとしてもRails使ったWebサイトぐらいか?)
何より、あえて潰しの利かないRubyを選ぶ理由が無い。
0358デフォルトの名無しさん
2011/05/05(木) 17:23:28.80幾多の妄言に惑わされなくなることをお祈りしときます
0359デフォルトの名無しさん
2011/05/05(木) 17:33:23.30【Perl,PHP】LLバトルロワイヤル16【Ruby,Python】
http://hibari.2ch.net/test/read.cgi/tech/1302692765/583
以下の記述があるのですが、
File.open('a.mp3') do | f |
x = f.read;
バイナリーモードでopenしなくてもいいのでしょうか?
File.open('a.mp3', "rb") do | f |
x = f.read;
0360デフォルトの名無しさん
2011/05/05(木) 17:45:35.68Windows環境ならバイナリモード必須だね
Linux環境でもやっておいたほうが無難だろう
0361デフォルトの名無しさん
2011/05/05(木) 17:56:42.41やはりそうですよね。
ありがとうございました。
0362デフォルトの名無しさん
2011/05/05(木) 18:44:10.00x = File.open('a.mp3', 'rb') {|file| file.read }
0363デフォルトの名無しさん
2011/05/05(木) 19:37:31.370364デフォルトの名無しさん
2011/05/05(木) 19:45:34.84PHPでいいじゃん、ってなることが多いけど。
0365デフォルトの名無しさん
2011/05/05(木) 19:59:49.14CSV.open("tsv.txt", "r", "\t", "Lf") do |row|
print row[1] + "\n"
end
a[tab]100
b[tab]200
c[tab]300
0366デフォルトの名無しさん
2011/05/05(木) 20:03:24.08もっとわかりやすく詳しく情報を
0367デフォルトの名無しさん
2011/05/05(木) 20:06:53.36ああ、あと、CSVライブラリは1.9でインターフェースが大きく変わったようだよ。
古い灰色背景のリファレンス見てるならるりまにかえたまへ。
0368デフォルトの名無しさん
2011/05/05(木) 20:14:50.56ファイル開くモード以外のオプションはハッシュで指定するようになった。
それからCSV.openは row じゃなくてCSVオブジェクトを吐くようになった。
CSV.open('tsv.txt', 'r', {:col_sep => "\t", :row_sep = "\n"}) do |tsv|
tsv.each {|row| puts row[1] }
end
か
CSV.foreach('tsv.txt', 'r', {:col_sep => "\t", :row_sep = "\n"}) do |row|
puts row[1]
end
0369デフォルトの名無しさん
2011/05/05(木) 20:18:49.96syntax error, unexpected '=', expecting tASSOC
0370デフォルトの名無しさん
2011/05/05(木) 20:38:37.020371デフォルトの名無しさん
2011/05/05(木) 21:03:07.210372デフォルトの名無しさん
2011/05/05(木) 21:08:34.00わかりやすい解説ありがとうございます。
追加で覚えることが違うと。
趣味の範囲だしWebアプリケーションが楽しそうだ
>>356
なるほど、そういうことだったんですね。
>>358
ありがとうございます。
がんがります。
まぁでも早速>>357、>>363-364あたりを見て、
Rubyってそんなによくないの?なんて惑わされたり。
惑わされるというよりは、ここにいるRuby好きの方が
日常的にどういったときにRubyを使ってるのか気になったって方が正しいですが
0373デフォルトの名無しさん
2011/05/05(木) 21:10:56.17これかな。「Rubyリファレンスマニュアル刷新計画 (通称るりま) ・・」
http://redmine.ruby-lang.org/projects/rurema/wiki
0374デフォルトの名無しさん
2011/05/05(木) 21:22:49.37どもです
公式サイトのRubyリファレンスマニュアル刷新計画 chm版 1.9.2用使ってますが公式サイトで見れるものとはこれとは違うのですか?
0375デフォルトの名無しさん
2011/05/05(木) 21:28:55.44知らない。スマソ
0376365
2011/05/05(木) 21:32:53.86情報が少なくてすいませんでした
Ruby1.9.2でテキストファイルにtsv形式でデータを記録してあります(tsv.txt)
tsv.txtの中身 [tab]はタブです。入力できないので[tab]で表記してます。
a[tab]100
b[tab]200
c[tab]300
このtsvファイルを読み込んで表示させたいのですが>>365に書いたのでは動きませんでした。
>>368ー370さんのコードも試してみたのですが、
require "csv"
CSV.foreach('list.txt', 'r', {:col_sep => "\t", :row_sep => "\n"}) do |row|
puts row[1]
end
を実行すると
c:/Ruby192/lib/ruby/1.9.1/csv.rb:1197:in `foreach': wrong number of arg
uments (3 for 2) (ArgumentError)
from C:/puroguram/ruby/sannpuru/tsvwoyomikomu1.rb:2:in `<main>'
続行するには何かキーを押してください . . .
ってエラーが出ました
0377デフォルトの名無しさん
2011/05/05(木) 21:45:25.34それは基本的に新しいので、古過ぎるのかもしれないと考える必要はない
古すぎてよくないのは灰色のやつ
>>372
・ とりあえずどんなものでも全部オブジェクトにする
・ スクリプト言語なのでその場でコンパイル
・ 誰も止めない誰も読めない自分の足を撃ちたいはいどうぞ(1ダースの銃(歌って光る変形ギミック付き)
・ 1クラス1ファイル志向なので最終的に実行するまでファイル読み込みいっぱいおっぱい
というRubyのポリシーが、
・ 作成言語は利用者数が多いほうがプログラマが安く買えて良い
・ ユーザーは待ってくれないのでとにかく速く動けばそれで良い
・ サーバにインストールされてないとかマジ問題外
・ ソフトウェア工学のお勉強は大学でやれカス
という商用サイト作成ポリシーとあんまり合致しない
0378デフォルトの名無しさん
2011/05/05(木) 21:54:25.65だからエラーメッセージをちゃんと読んでマニュアルを調べろ、と。
標準添付ライブラリ(All libraries) > csv > class CSV
0379デフォルトの名無しさん
2011/05/05(木) 22:24:46.47CSV.foreachに'r'なんて指定できないぞ
0380365
2011/05/05(木) 22:39:17.01文字列に"が入った場合は取れないのでしょうか?
a 100 aは"apple"
b 200 bは"banana"
c 300 cは"chokoreeto"
0381デフォルトの名無しさん
2011/05/05(木) 22:45:24.39b\t2\t"bar"
というTSVデータでちょっと試したら
CSV.foreach('list.txt', col_sep: "\t", row_sep: "\n") do |row|
で
Unclosed quoted field on line 1. (CSV::MalformedCSVError)
ってエラーが出た
ファイルをバイナリで読んでるのかな?とおもって
CSV.foreach('list.txt', col_sep: "\t", row_sep: "\r\n") do |row|
にしたらちゃんと読めた
CSV.foreach('list.txt', col_sep: "\t") do |row|
でも読めた
0382デフォルトの名無しさん
2011/05/05(木) 22:46:55.69>>381 はWindowsでのことです
TSVの改行が\r\nになってます
0383デフォルトの名無しさん
2011/05/05(木) 22:50:35.92CSV.foreach('test.tsv', col_sep: "\t", quote_char: "'") do |row|
とかにするとどうだろうか
0384365
2011/05/05(木) 22:51:38.82a\t1\t"foo"のように文字列を"で囲った場合は読めたのですが
a\t100\taは"apple"
のような"で文字列を囲わない感じのでは読めませんでした
0385デフォルトの名無しさん
2011/05/05(木) 22:52:39.02quote_charはデフォルトで"になってるから、:quote_char => "'"とか違うのを設定
0386デフォルトの名無しさん
2011/05/05(木) 22:54:15.450388365
2011/05/05(木) 23:15:29.58変数listの内容を外部ファイルにtsvで保存したかったのですが
何とか先輩方のお力のお陰でtsvを読み込めるまでにいたったのですが
tsvに書いた正規表現パターンがうまく動かないので、外部tsv化は挫折しました
また勉強して外部tsv化にチャレンジしてみたいと思いますが1年ぐらいかかりそうです
途中ですがコード張っておきます
http://codepad.org/H3RSUoLn
0389デフォルトの名無しさん
2011/05/05(木) 23:16:58.02http://codepad.org/ruvP6PFn
0390デフォルトの名無しさん
2011/05/06(金) 02:19:05.91RubyでHTML解析って簡単にできますか?
0391デフォルトの名無しさん
2011/05/06(金) 03:41:56.730392デフォルトの名無しさん
2011/05/06(金) 05:07:35.340393デフォルトの名無しさん
2011/05/06(金) 06:10:45.92「ruby nokogiri」でぐぐれ
0394デフォルトの名無しさん
2011/05/06(金) 06:13:45.46ただのパーサじゃねーか
0395デフォルトの名無しさん
2011/05/06(金) 07:26:23.95慣れてる言語でやったらいいよ
どの言語にあるHTMLパーサも一癖あって一長一短
Rubyは比較的やりやすい部類に入るかと
0396デフォルトの名無しさん
2011/05/06(金) 08:14:31.520397デフォルトの名無しさん
2011/05/06(金) 08:54:06.410398デフォルトの名無しさん
2011/05/06(金) 09:12:26.13Regexp.new(str)で普通にできそうだけどなあ。
エスケープ周りで失敗してるのかね。
0399デフォルトの名無しさん
2011/05/06(金) 10:49:16.85if /test/ =~ "aaatestaaa"
print 'match!!'
else
print 'none'
end
はマッチするけど、ファイルから読み込んだ正規表現パターンは文字列だから↓のケースのようにエラーになるでしょうね
if "/test/" =~ "aaatestaaa"
print 'match!!'
else
print 'none'
end
Rubyでパターンの外部ファイル化は無理です
仕様で出来ません
0400デフォルトの名無しさん
2011/05/06(金) 10:56:29.980401デフォルトの名無しさん
2011/05/06(金) 11:00:32.84とりあえずruby覚えるためにRubylifeってサイトのRuby入門を
上からやってたのですが、日本語の文字入力のところで
さっそくつまってしまいました
print("日本語の表示");を実行すると
文字化け以前にエラーが出てしまいます
バージョンが違うせいで上手くいってないのか、
何か必要なものインストール出来てないから上手くいってないのか
わかりません
ちなみにバージョンはruby 1.9.2p180のようです
プログラムは大学在学中にCを授業でやった程度です
0402デフォルトの名無しさん
2011/05/06(金) 11:09:49.89$stdout.set_encoding(Encoding::Windows_31J, Encoding::UTF_8)
0403デフォルトの名無しさん
2011/05/06(金) 11:11:55.48適当なこと言うな禿げ。
Regexp.new(またはRegexp.compile)をリファレンスで引いてみましょう。
evalもあるよ。
0404デフォルトの名無しさん
2011/05/06(金) 11:15:50.27お前にとって「パーサー」はどう訳されてるんだ?
0405デフォルトの名無しさん
2011/05/06(金) 11:15:54.24スクリプトの先頭に
# encoding: shift-jis
文字コードは適当に指定してね。
1.9は結構1.8とは勝手が違うから、1.9に対応した書籍/サイト(書籍はいっぱいあるけどサイトは知らない)で勉強した方がいいと思うけど、
どうしてもそこで勉強したいならまた詰まったところで質問にいらっしゃい。
0406デフォルトの名無しさん
2011/05/06(金) 11:17:08.23そういうリンク集みたいなの探してます
0407デフォルトの名無しさん
2011/05/06(金) 11:38:14.89ありがとうございます
今度はtest1-1.rb:1: unknown encoding name: shift-jis (ArgumentError)
とエラーが表示されました・・・
こんなに早くつまづくとはダメぽかもしれんorz
0408デフォルトの名無しさん
2011/05/06(金) 11:48:17.28それはぼくがわるいですごめんなさいShift-JISとか普段使わないんですまじごめんなさい吊ってきます
shift-jisをsjisにしてくだしあ
0409デフォルトの名無しさん
2011/05/06(金) 11:53:17.43inspectの結果もoptionsもencodingも一緒なのに
==でfalseになるってどういう状況?
0410デフォルトの名無しさん
2011/05/06(金) 11:58:19.16Windowsならsjisよりcp932のほうがいいと思う
0411デフォルトの名無しさん
2011/05/06(金) 12:10:11.28ありがとうございます。無事表示されました
環境等書いてなかったですね。すいません。一応windowsXPを使ってます
参照HP
ttp://www.rubylife.jp/ini/japan/index1.html
1.9.1でダウンロードしろって書いてあったんですが、
1.9.2しかダウンロードできなかったので1.9.2で進めています
0412デフォルトの名無しさん
2011/05/06(金) 12:11:31.57パースしただけで解析完了とか言ったらグーで殴られるぞグーで
0413デフォルトの名無しさん
2011/05/06(金) 12:21:07.280414デフォルトの名無しさん
2011/05/06(金) 12:22:37.33ttp://www.rubylife.jp/ini/
ttp://www.pythonweb.jp/tutorial/
ttp://www.phpbook.jp/tutorial/
ttp://www.javadrive.jp/start/
ttp://www.ajaxtower.jp/ecs/
ttp://www.adminweb.jp/apache/
ttp://www.officepro.jp/excelvba/
ttp://www.officepro.jp/word/
ネット初心者さんがぽろっと引っかかるのを頼りに作成してるので、
プログラミングやネットにある一定以上慣れた人は実情に全く気づいてないのだけれど
0415401
2011/05/06(金) 12:24:49.07test1-1.rb:1: warning: variable $KCODE is no longer effective
と出て例題どおりに実行されません・・・
文字列の基本的な扱いを分かっていないためこんなことになってる
とおもうのですが・・・
良かったらその辺の基本を網羅できそうなオススメ書籍も
教えてもらえると助かります
在学中にmatlab使った数値計算してたんで、数値とか変数使うのは
まだ少しはマシかと思うのですが、文字の扱いが分からない・・・
大学でもっと勉強しとくんだったorz
0416デフォルトの名無しさん
2011/05/06(金) 12:33:45.54あれは一応、情報収集と維持の手間に対してのアフィ報酬的なものは払ってもいいような気はするのだが
アレ以下の古い曖昧なページなんて特にRubyではゴロゴロしてるわけだし(更新2005年とかありえん)、
一定の情報を以てそれ未満を駆逐してもらうのは、べつに悪いことでもなかんべ
ttp://www.google.com/search?ie=utf-8&oe=utf-8&q=Ruby+%E5%85%A5%E9%96%80
問題があるならマトモな情報源を作ってGoogleさんに認めてもらおう
初心者スレに変な情報持った人が来る割合は、このへんの古くまずい検索結果の割合にほぼ比例する(PHPが好例)
0417デフォルトの名無しさん
2011/05/06(金) 12:42:52.53no longer effective って言うぐらいなんだから
1.9ではもう$KCODEを使ってないんだろう
なのでその例題が1.9には対応していない可能性が大
万人向けの入門書はないけど
寄らば大樹の陰ならたのしいRuby
0418デフォルトの名無しさん
2011/05/06(金) 12:46:45.95で、 Windows の Ruby 1.9.x で日本語を扱うには、まず
・ スクリプトファイルの記述の文字エンコーディングを自分で決めるor認識する
いわゆる「書いたスクリプトファイルをエディタで保存するときの文字コード」
昔の Windows なら Shift_JIS 名義(実際はWindows-31J)、ナウでヤングなフレッシャーズなら素直に UTF-8
時々優秀なエディタが UTF-8 によく似た選択肢をファイル保存時にずらっと提供してくれることがあるが、
その場合は「BOM なし」「リトルエンディアン」「UTF-8n」のようなものを選ぶ
つぎ
0419デフォルトの名無しさん
2011/05/06(金) 12:47:17.24そのlistって配列を外部ファイルtsvから再現できればいいんだよね?
ほい。
http://thuploader.orz.hm/1mup/upload.php?id=01714
>>415
エラーが出たらちゃんとエラーを読もう。
variable $KCODE is no longer effective
変数$KCODEはもう無効になっています。
ってあるでしょ。もう$KCODEでは文字コード管理してないんだ。
ソースファイルの文字コードはマジックコメント(# encoding: のことね)で管理してる。
書籍ならたのしいRuby第3版でいいんじゃないかなあ。
0420デフォルトの名無しさん
2011/05/06(金) 12:51:04.04この変数の中身を計算式として評価する方法ってありますか?
0421デフォルトの名無しさん
2011/05/06(金) 12:57:10.12・ スクリプトファイルの文字エンコーディングを、スクリプトファイルの1行目くらいに書く
# coding: Shift_JIS
とか
# coding: UTF-8
とかいうもので、ファイル保存時の文字エンコーディングと絶対に一致していなければならない
これは「マジックコメント」と呼ばれ(略称マジコメ)、記述法にはバリエーションがありまくる
「coding:」か「conding=」のあとに文字エンコーディング名が書いてさえあれば、前後に何が書いてあってもOK
よくある別例:
# encoding: CP932
# vim:set fileencoding=utf-8:
# -*- coding: Windows-31J -*-
Ruby はどれも全く同じように解釈するので、Windowsの人は好きな書き方でいい
(本来Unix系のEmacsやvimの設定)
0422401
2011/05/06(金) 12:57:21.431.9.1ダウンロードさせて1.9.1では使えない例題とはワナだった
なんか教えてちゃんになっててすいません
とりあえずご飯がてら本屋寄ってたのしいRuby第3版見てきます
0423デフォルトの名無しさん
2011/05/06(金) 13:05:38.60文字列の中身をRubyスクリプトとして処理させたいならeval
0424デフォルトの名無しさん
2011/05/06(金) 13:10:06.67# encoding: UTF-8
puts '日本語'
これを hoge.rb として UTF-8 で保存し、コマンドプロンプトから ruby hoge.rb のように実行!
うむ化けた
puts は受け取った文字列を、なにもなければそのままのエンコーディングで画面(とか)に表示する
Windowsのコマンドプロンプトは UTF-8 を解釈しないので、UTF-8 文字列をそのまま表示させてもいわゆる化ける
0425デフォルトの名無しさん
2011/05/06(金) 13:14:21.95>>424 の対処法の一つは、コマンドプロンプトが表示できる文字エンコーディングの文字列に変換してputsすること
String クラスの encode というメソッドを使う(各種マニュアルでは String#encode と表記)
コマンドプロンプトが表示できる文字エンコーディング名は Windows-31J だ(CP932でも可、Shift_JISは後々困るので忘れよう)
# encoding: UTF-8
puts '日本語'.encode('Windows-31J')
これはあまりに面倒なので、「画面出力するメソッドは全員、UTF-8からWindows-31Jに変換しろ」と全体設定させることもできる
それが>>402で、puts するより前(普通はスクリプトの最初のほう)に書いておく
ただし、これを書いてしまうと画面出力がWindows-31J固定になるので、使い道は限定される(Linux等では表示できない)
0426デフォルトの名無しさん
2011/05/06(金) 13:24:00.720427デフォルトの名無しさん
2011/05/06(金) 13:26:39.450428デフォルトの名無しさん
2011/05/06(金) 13:36:39.18「ファイルを UTF-8 で書くと変換が必要なのなら、ファイル自体を変換不要なエンコーディングで書けば?」
鋭い、アメちゃんあげよう
Windows 限定な Ruby スクリプトは、結構な割合で Windows-31J で作成されている(実際上、配布も問題はない)
ファイル保存時に Windows-31J にしておけば、puts '日本語' の日本語は Windows-31J のまま表示できるはず
…でも、エディタの保存エンコーディング欄に Windows-31J なんて項目ないよ?
うん、Shift_JIS を選んでくれ
現在の Windows が言う Shift_JIS は、Windows 以外では Windows-31J と正式名で呼ばれている(昔いろいろあった)
「Windowsの中ではShift_JISとしか呼ばれないけど、それは本当はWindows-31Jだ」と思っておいてくれ
Windows-31J は CP932 と呼ばれることもあって、実はレアな文字の含まれ方がちょっと違うんだがとりあえず忘れよう
0429デフォルトの名無しさん
2011/05/06(金) 13:38:58.23$a = 123;
var_dump($a);
で変数の型と値をチェックできるんだよね
Rubyでもvar_dumpと同じような機能使ってデバッグしたいんだけど
0430デフォルトの名無しさん
2011/05/06(金) 13:45:28.82php と Ruby はあまりに違いすぎるので
あまりRubyでphpではphpではと呪文を唱えない方がいい。
Rubyには変数に型なんてものはないっす。
中身が見たければp
0431デフォルトの名無しさん
2011/05/06(金) 13:53:53.520432デフォルトの名無しさん
2011/05/06(金) 13:56:47.39>あまりRubyでphpではphpではと呪文を唱えない方がいい。
こういう野次飛ばす奴たまに見るけどいらないね
0433デフォルトの名無しさん
2011/05/06(金) 13:57:20.91どの程度概略にするかはクラス設計者の一存なので(実際は hoge.inspect を puts している)、
クラス名などは表示されないこともある
オブジェクトのクラス名を得たい場合は自力でインスタンスメソッド class を使う
p "@を先頭につけるとエラーが出なくなりますwwwwwww".class
#=> String
まあ、めんどくさいっちゃめんどくさいのだが
0434デフォルトの名無しさん
2011/05/06(金) 14:06:30.33ぐぐった
この量は確かに若干ひどい
まあ、若干だが
全部どっかにすっ飛ばすタイプじゃないので、良心的な部類
>>422
アフィサイトが正確で満足いく説明を自前で提供してしまったら本を買ってもらえないじゃないかw
不満足不十分なんかよくわからんけど動かんやっぱ本買うかこれがいいの?、みたいな説明がベスト
0435401
2011/05/06(金) 14:07:42.98>>428
ほんとありがとうございますorz
すごい勉強になりたました。自分ひとりでは絶対分からなかったですw
本屋2件寄ったのにRubyの本ないんだが!クソがぁぁぁ
アマゾンぽちるかな・・・
最終的に
�@Ruby使ってHP上から必要なとこもってきて
データをPCに保存する
�AHPにアクセスして、プログラムで色々な操作をやってもらう
みたいなことしたいんですが
この本も一緒に買っとけってのありますか?
0436デフォルトの名無しさん
2011/05/06(金) 14:15:44.43いろいろな「操作」の内容にもよるけど、
入門本のあとはレシピブック系を読むが吉。
そのあとはリファレンスでも眺めましょう。
0437デフォルトの名無しさん
2011/05/06(金) 14:19:22.02この質問者自体がただ煽りに来ただけに見える
0438デフォルトの名無しさん
2011/05/06(金) 14:20:28.56たのしいRubyのような入門書ひとつで踏み出せる範囲に見える
HTTPやHTMLの知識は必要かもしれないが、罠はないしネットの解説サイトで充分
0439デフォルトの名無しさん
2011/05/06(金) 14:25:18.46レシピブック(逆引き本)に+1
Rubyレシピブックはカバーがぼろぼろになるまで使った
0440デフォルトの名無しさん
2011/05/06(金) 14:25:37.11それでも別にいいんだよ
質問のやりとりが生むものは個人教示だけではないのだし
回答を読んだ別の人の役に立てばそれで何も問題はない
0441デフォルトの名無しさん
2011/05/06(金) 14:31:31.06横からだが上から目線な人は消えてくれ
0442デフォルトの名無しさん
2011/05/06(金) 14:32:43.33が、その時間を金で買うぜブルジョワだぜ賢い消費者だぜベイベーという人にこそお勧め
いろんなクラスやメソッドの使用法がおおむねいわゆるイディオムのような書き方に沿ってるので、
メソッドの使い方が色々できるのはわかったがどれをどう書くのが一般的なんだ、とか悩むときにも役立つ
大雑把に2種類あるのだが、立ち読みでもしてピンと来るほう(で、1.9対応を謳った版)を買うといい
0443デフォルトの名無しさん
2011/05/06(金) 14:38:02.38とか
〜 いらない
とか
〜 消えろ
系発言は階層が深くなればなるほどなるほどいらない度がアップしますね。
0444デフォルトの名無しさん
2011/05/06(金) 14:41:05.560445デフォルトの名無しさん
2011/05/06(金) 14:44:58.740446デフォルトの名無しさん
2011/05/06(金) 14:50:03.91「彼」はプログラミングの知識がまったくなく、
ム板の新着レスが技術的な話題で埋まっているとストレス解消できずに悪態をついて逃げ出す
逆に「自分でもレスできる、専門性の全くない話題」には涎を垂らして飛びつく
ム板を利用するなら、「彼」の習性は頭に入れておいたほうがいい
0447デフォルトの名無しさん
2011/05/06(金) 14:53:06.91如何せんrubyで、という質問だものな。
0448デフォルトの名無しさん
2011/05/06(金) 14:59:49.73添付のcgiライブラリが微妙に使いにくいんだけどなんかいいのない?
0449デフォルトの名無しさん
2011/05/06(金) 15:06:57.53p はクラス名を必ずしも表示しない
Object#inspect そのままを使ってるならいいんだけど
CGIライブラリに望むものが各人全く違う、というのがcgi.rb刷新計画の唯一のプラス収穫
どんな機能が欲しいのか言ってくれれば当たりがあるかもないかも
0450デフォルトの名無しさん
2011/05/06(金) 15:09:31.020451デフォルトの名無しさん
2011/05/06(金) 15:12:35.21あまりRubyでPerlではPerlではと呪文を唱えない方がいい。
0452デフォルトの名無しさん
2011/05/06(金) 15:14:24.05少なくとも組み込みとか標準添付のものはクラスわかるようになってなかったっけ?
リテラルがあるものは「表示の仕方見てお察しください」だけどさ。
>>450
全く同じかは知らないが配列の中に配列/ハッシュ、ハッシュの中に配列/ハッシュ、
全部いくらでも入れ子にできるよ。
0453デフォルトの名無しさん
2011/05/06(金) 15:19:10.97残念ながらできない
多次元配列や多次元Hashをリテラル形式で取得することはできない
単なるネストした配列やハッシュのメソッドチェーン呼び出しにしかならない
ものすごく慎重に作成すれば似たように動作するものを作ることは可能だが、大変効率が悪い
0454デフォルトの名無しさん
2011/05/06(金) 15:23:17.67Rubyの宿題教えてください。2限目
0455デフォルトの名無しさん
2011/05/06(金) 15:29:21.26ハッシュの中にそのままハッシュを突っ込んで入れ子のハッシュにすればおk
0456デフォルトの名無しさん
2011/05/06(金) 15:34:17.93arr.locate(w1, w2)
のような動作をしてる(locateは適当)
arr に対して、引数を2個使って2次元な位置を問い合わせている
Ruby での arr[w1][w2] は残念ながら
v1 = arr[w1]
v2 = v1[w2]
p v2
のような動作にしかならない
[w2] の部分の動作はオブジェクト v1 のクラスのインスタンスメソッド [] 依存であって、 arr とはもはや無関係
まああらかじめ全部に空のHashなりArrayなり入れておけばいいんだけど
(Hashの場合は若干の小手先テクニックがある)
Matrix ライブラリ使って数学的行列で格納すれば同じ動作になるはず
でも、おそらく、望んだものではないと思うw
0457デフォルトの名無しさん
2011/05/06(金) 15:36:19.340458デフォルトの名無しさん
2011/05/06(金) 15:39:31.85だったらそれはRubyでは何で代用すべきかっつーたらハッシュのハッシュじゃね?
0459デフォルトの名無しさん
2011/05/06(金) 15:41:25.48それで、引数が2個の多次元配列/連想配列と、
ネストした配列/連想配列のチェーン呼び出しの違いが
初心者スレに質問に来る人に対してどういった問題を引き起こすのですか?
0460デフォルトの名無しさん
2011/05/06(金) 15:47:39.700461デフォルトの名無しさん
2011/05/06(金) 15:47:57.89デイブ
0462デフォルトの名無しさん
2011/05/06(金) 15:54:47.04arr = [[0,1,2],[3,4,5]]
arr[1][2]
の[2]がarrと直接関係あって欲しい状態って例えばどういうときですか><
0463デフォルトの名無しさん
2011/05/06(金) 15:58:02.982次元「的」な位置だから実際にどう格納されてるかは問題ないんじゃねw
$arrayが引数を全部受けとってるということが重要だと思う
この「多次元配列っぽく見えて実は単なるメソッドチェーン」というのは
個人的にRubyのいちばん良くないとこだと思う
シンタックスシュガーにもほどがある
>>459
存在しない第1キーを指定するとNoMethodErrorとか
[] メソッドさえ動作すればデータ構造ミスってても動くとか?
完全に妥当な構造である場合には問題はないんじゃないかね
というか言語比較的な質問には「いや同じではないです」という重箱角つつきな回答が来るのは必然かと
0464デフォルトの名無しさん
2011/05/06(金) 16:00:44.18でもここ初心者スレだからなあ
そもそも質問者 >>450 は「同じもの」ではなく「みたいなの」を求めてるんだ
つまり「Rubyではこういうことするとき、何を使えばいいの?」と質問してる
だったら回答は「入れ子のハッシュ」で何も間違ってないだろ?
0465デフォルトの名無しさん
2011/05/06(金) 16:04:36.25確かに、擬似の範囲からこぼれたときは初心者的には悲惨なんだが
ホントはメソッド呼出の連続であるという知識は必要ではある
言語として多次元配列をサポートしているわけではなく、
そう見えるようにそう動作するように自前で全データをネストさせなければならない
0466デフォルトの名無しさん
2011/05/06(金) 16:06:48.870467デフォルトの名無しさん
2011/05/06(金) 16:07:56.55そりゃ話がまとまるわけがない
荒れる代表例の値渡しと参照渡しの議論とおなじ
0468デフォルトの名無しさん
2011/05/06(金) 16:11:39.59飼い慣らされてるから当然だと思ってるのかもしれないが、世間的にはこれは異常なのでそのへんよろしく
内部配列が丸見えな時点で何かがおかしいと思えよ
0469デフォルトの名無しさん
2011/05/06(金) 16:18:29.47$h{$k1}{$k2}ってやった場合、暗黙に「ハッシュのリファレンスを要素とするハッシュ」が作られるだけだろ?
それってRubyのハッシュのハッシュと何が違うんだい
0470デフォルトの名無しさん
2011/05/06(金) 17:04:51.83ただのネストで代替可能な用途で使われていることを考えれば、
別にネストのメソッドチェーンでも何の問題もないような。
内部配列が見えて困ることもそうそうない。
0471デフォルトの名無しさん
2011/05/06(金) 17:13:04.46大半の用途は配列やハッシュのネストで十分だべ、
本質的な多次元配列が欲しければ自分でクラス作れや
というだけじゃね。 探せばライブラリもありそう。
0472デフォルトの名無しさん
2011/05/06(金) 17:20:58.69メソッドチェーンじゃない多次元配列というと、
ary = Hash.new
ary[[0,0]] = 1
みたいな方法もなくはない。
0473デフォルトの名無しさん
2011/05/06(金) 17:21:00.35「多次元配列」を作っても碁盤の目のように全要素が初期化されるわけじゃないので
0474デフォルトの名無しさん
2011/05/06(金) 17:22:50.03Rubyと同じだね。
0475デフォルトの名無しさん
2011/05/06(金) 17:31:54.35Perlで正体が一次元配列なのは $h{$k1}{$k2} じゃなくて $h{$k1,$k2} のほうだったか。
(区切り文字は $; (デフォルト 034))
0476デフォルトの名無しさん
2011/05/06(金) 17:34:54.290477450
2011/05/06(金) 18:23:38.61カーニハンの『プログラミング作法』にあったマルコフ連鎖のプログラムのPerl版
をRubyで書くのに、多次元の連想配列にリストで単語をくっつけていくやり方が
簡単にできる方法がないかなあ、と思って質問しました。
こういうやつ
# markov.pl : markov chain algorithm for 2-word prefixes
$MAXGEN = 10000;
$NONWORD = "\n";
$w1 = $w2 = $NONWORD; #initial state
while (<>) { # read each line of input
foreach (split) {
push(@{$statetab{$w1}{$w2}}, $_);
($w1, $w2) = ($w2, $_); #multiple assignment
}
}
push(@{$statetab{$w1}{$w2}}, $NONWORD); # add tail
$w1 = $w2 = $NONWORD;
for ($i = 0; $i < $MAXGEN; $i++) {
$suf = $statetab{$w1}{$w2}; #array reference
$r = int(rand @$suf); # @$suf is number of elems
exit if(($t = $suf->[$r]) eq $NONWORD);
print "$t ";
($w1, $w2) = ($w2, $t); # advance chain
}
0478デフォルトの名無しさん
2011/05/06(金) 18:41:18.42MAXGEN = 10000
NONWORD = "\n"
w1 = w2 = NONWORD
statetab = Hash.new{|hash, key| hash[key] = {}}
while line = gets
line.split.each do |w|
end
end
0479デフォルトの名無しさん
2011/05/06(金) 18:42:12.790480デフォルトの名無しさん
2011/05/06(金) 19:00:24.87MAXGEN = 10000
NONWORD = "\n"
w1 = w2 = NONWORD
statetab = Hash.new{|h, k| hash[key] = Hash.new{|h2,k2| h2[k2]= []}}
while line = gets
line.chomp!
line.split(/\s+/).each do |word|
statetab[w1][w2].push(word)
w1, w2 = w2, word
end
end
statetab[w1][w2].push = NONWORD
w1 = w2 = NONWORD
MAXGEN.times do
suf = statetab[w1][w2]
break if (t = suf.sample) == NONWORD
print t, ' '
w1, w2 = w2, t
end
こういうこと?
0481デフォルトの名無しさん
2011/05/06(金) 19:19:36.614連投ごめんw
statetab = Hash.new{|h, k| hash[key] = Hash.new{|h2,k2| h2[k2]= []}}
は
statetab = Hash.new{|h, k| hash[k] = Hash.new{|h2,k2| h2[k2]= []}}
の間違いです。他にもなんかあるかも。
0482デフォルトの名無しさん
2011/05/06(金) 19:20:13.460483デフォルトの名無しさん
2011/05/06(金) 19:25:58.40手直ししてまた投稿します。
0484デフォルトの名無しさん
2011/05/06(金) 19:26:47.970485デフォルトの名無しさん
2011/05/06(金) 19:34:24.440486デフォルトの名無しさん
2011/05/06(金) 19:37:54.53>>477 こういうことでしょうかw
MAXGEN = 10000
NONWORD = "\n"
w1 = w2 = NONWORD
statetab = Hash.new{|h, k| h[k] = Hash.new{|h2,k2| h2[k2]= []}}
while line = gets
line.chomp!
line.split(/\s+/).each do |word|
statetab[w1][w2].push(word)
w1, w2 = w2, word
end
end
statetab[w1][w2].push(NONWORD)
w1 = w2 = NONWORD
MAXGEN.times do
suf = statetab[w1][w2]
break if (t = suf.sample) == NONWORD
print t, ' '
w1, w2 = w2, t
end
0487デフォルトの名無しさん
2011/05/06(金) 19:47:51.05テキスト処理をするプログラムっぽいがいったい何をしたいのものかさっぱりわからん。
標準入力で英文食わせたが、同じのがでてくるだけじゃね?
0488デフォルトの名無しさん
2011/05/06(金) 19:58:53.84マルコフ連鎖。
短い文じゃなくて長い文いれた方がいいよ、
俺は聖書のGenesisまるまるで動作テストした。
0489デフォルトの名無しさん
2011/05/06(金) 20:04:25.46http://ja.wikipedia.org/wiki/%E3%83%9E%E3%83%AB%E3%82%B3%E3%83%95%E9%80%A3%E9%8E%96
0490デフォルトの名無しさん
2011/05/06(金) 20:09:34.67これはめんどくさいのでとりあえず単語1つ版ので説明すると、
1.文頭に来た単語を全て記録する
2.とある単語の次に来た単語を全て記録する
1.ランダムに文頭に来た単語を出力する
2.1で出力した単語の次に来たことのある単語のうちいずれかを出力する
3.2で出力した単語の次に来たことのある単語のうちいずれかを出力する
4.3で出力した(ry
...
n.(n-1)で出力した(ry
という手法で文章を自動でランダム生成するやり方があって、
ここで出てきてるのは「2つの単語の並びの次に来た単語」を記録して、
最新の2出力の並びの次に来たことのある単語のいずれかを出力して文章を生成する
というもの。
0491デフォルトの名無しさん
2011/05/06(金) 20:14:12.940492デフォルトの名無しさん
2011/05/06(金) 20:18:05.15クイックソートらしいよ
0493デフォルトの名無しさん
2011/05/06(金) 20:23:22.450494デフォルトの名無しさん
2011/05/06(金) 20:28:47.40def sort
flg = true
while flg
self.shuffle!
1.upto(self.size-1) do | i |
flg = false
flg = true if self[i] < self[i-1]
end
end
end
end
0495デフォルトの名無しさん
2011/05/06(金) 20:33:22.92安定性ないのに
0496デフォルトの名無しさん
2011/05/06(金) 20:44:05.47安定ソートが欲しければ
i = 0
ary.sort_by{|e| [e, i += 1]}
「安定じゃなくてもいいから速い方がいい」ってパターンの方が多いだろう、きっと。
0497デフォルトの名無しさん
2011/05/06(金) 20:46:41.68msort
の二つを用意してくれてたらよかったのにね。
マージソートが大好きさ。
0498デフォルトの名無しさん
2011/05/06(金) 21:41:02.14普通の安定なソートだと余計にメモリを使う
メモリを使わないin place merge sortってのを調べたらなかなか面白かったが
メモリ領域とひきかえに実行時間が増える
0499デフォルトの名無しさん
2011/05/06(金) 22:09:07.11>i = 0
>ary.sort_by{|e| [e, i += 1]}
安定ソートはこんなふうに書けるんだ。知らなかった。さんくす。
0500デフォルトの名無しさん
2011/05/06(金) 22:12:36.06まあ、そりゃ、そうだろうな…
削る部分がないようなアルゴリズムにおいてメモリとCPU時間はトレードオフ
0501デフォルトの名無しさん
2011/05/06(金) 22:23:51.99ではもうひとつ
1.8.7以降で
ary.sort_by.with_index{|e,i| [e,i]}
0502デフォルトの名無しさん
2011/05/06(金) 22:43:55.12sort_byの実装はSchwartzian Transformだから問題ないんだな。
0503デフォルトの名無しさん
2011/05/06(金) 23:18:32.59> 動作テスト済み
> statetab[w1][w2].push(NONWORD)
> w1 = w2 = NONWORD
> MAXGEN.times do
> suf = statetab[w1][w2]
> break if (t = suf.sample) == NONWORD
> print t, ' '
> w1, w2 = w2, t
> end
後半おかしくない?
w1, w2の同じ組み合わせのうち乱数で一つ選ぶプロセスがないし、
sampleメソッドってない(これはケアレスだと思うけど)。
0504デフォルトの名無しさん
2011/05/06(金) 23:35:12.28Array#sampleはRuby 1.9系で追加されたメソッド
配列の要素をランダムに1つ取得する
0505デフォルトの名無しさん
2011/05/06(金) 23:40:33.78そうですか。
すみません1.8系で考えてました。
0506デフォルトの名無しさん
2011/05/07(土) 00:08:50.77push(@{$statetab{$w1}{$w2}}, $_);
Ruby
statetab = Hash.new{|h, k| h[k] = Hash.new{|h2,k2| h2[k2]= []}}
statetab[w1][w2].push(word)
これはPerlの方が直感的でだいぶわかりやすいなあ。
まああんまり使わないけど。Pythonだとどうなんだろうか?
0507デフォルトの名無しさん
2011/05/07(土) 00:12:14.520508デフォルトの名無しさん
2011/05/07(土) 07:11:20.110509デフォルトの名無しさん
2011/05/07(土) 09:20:19.63ary = (1..1000000).to_a
arys = Array.new(10){ary.shuffle}
Benchmark.bm(8) do |x|
x.report('1.8.7:'){ arys.each{|a| a.sort} }
end
user system total real
1.8.7: 4.830000 0.070000 4.900000 ( 4.918986)
1.9.2: 5.290000 0.030000 5.320000 ( 5.326245)
...
0510デフォルトの名無しさん
2011/05/07(土) 09:52:59.27user system total real
1.8.7: 7.670000 0.080000 7.750000 ( 8.058061)
user system total real
1.9.2: 8.800000 0.100000 8.900000 ( 9.303178)
うむ、「若干遅い」と言っていいと思う
文字列絡んでないのに…
0511デフォルトの名無しさん
2011/05/07(土) 12:03:41.580512デフォルトの名無しさん
2011/05/07(土) 12:20:51.480513デフォルトの名無しさん
2011/05/07(土) 12:22:56.740514デフォルトの名無しさん
2011/05/07(土) 16:36:23.770515デフォルトの名無しさん
2011/05/07(土) 16:41:44.160516デフォルトの名無しさん
2011/05/07(土) 16:42:59.36もっと基礎的なアルゴリズムは実装してみた?
0517デフォルトの名無しさん
2011/05/07(土) 16:48:44.900518デフォルトの名無しさん
2011/05/07(土) 16:51:22.33アルゴリズムは全部後者だ
しかも必要に迫られてないと全く頭に入らず退屈に過ぎる
大学の黒板授業でアルゴリズム説明とか狂気の沙汰
というわけで、必要になってから実際のプログラム内で勉強するといいぞ
アルゴリズムだけ動作させるコードは何も教えてくれない何も聞かせてくれない
0519デフォルトの名無しさん
2011/05/07(土) 16:53:15.25トランプを短い手数で並べ替えるゲームさせただけだけど。
0520デフォルトの名無しさん
2011/05/07(土) 16:59:29.18アルゴリズムの認知は大事なのだが、なんかもっとこー、
生活が便利になるようなのから教えていったほうがいいかもしれん
0521デフォルトの名無しさん
2011/05/07(土) 17:08:04.510522デフォルトの名無しさん
2011/05/07(土) 17:15:50.63Rubyに移植したコードをこっちで作って投稿しろと言ってるんじゃあるまいし。
0523デフォルトの名無しさん
2011/05/07(土) 17:21:45.65何を教えて欲しいの?
このスレに「メルセンヌツイスタがよくわからない」とだけ投げられても、
「そうですか、資料をよく読んで勉強してください」としか。
たとえば、
「こういう処理をしたいんだけどRubyではどうやるの?」
みたいな質問なら回答がつくと思うよ。
メルセンヌ・ツイスタのアルゴリズムがどういう仕組みになってるのか自体がわからないなら、
このスレよりもっと適切なスレがあるんじゃないかな。
0524デフォルトの名無しさん
2011/05/07(土) 17:37:02.07ここまで俺の自演
0525デフォルトの名無しさん
2011/05/07(土) 17:39:45.35「アルゴリズムというもの全般」の勉強の題材としては不適。
0526デフォルトの名無しさん
2011/05/07(土) 19:04:45.85まともに説明されてるのが英wikipediaぐらいしかないな
ttp://en.wikipedia.org/wiki/Mersenne_twister
本家は
ttp://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/math.html
とか読んでもさっぱりわからん
mt19937のcコードを読んだほうが早いような気がする‥
もうちょいググってみたら‥rubyコードを見つけてしまった
勉強にならんなw
0527デフォルトの名無しさん
2011/05/07(土) 19:15:22.850528デフォルトの名無しさん
2011/05/07(土) 19:18:58.74泣けるw
0529デフォルトの名無しさん
2011/05/07(土) 19:23:48.820530デフォルトの名無しさん
2011/05/07(土) 20:57:50.440531デフォルトの名無しさん
2011/05/07(土) 22:01:11.75使ってるpcのosと
使ってるrubyのバージョンと
使いたいtkのバージョンを教えれ
0532デフォルトの名無しさん
2011/05/07(土) 22:47:39.07Ruby1.9.2
最新版のtkが使いたいです
0533デフォルトの名無しさん
2011/05/08(日) 00:23:23.09すぐ使えるやつならActiveTclがある、ライセンスとかは自分で確認してね
ttp://www.activestate.com/compare-editions
ただmswinの最新版1.9.2-p136だとtkの最新版は使えないみたい
tk84.dllを要求される
RubyForgeの1.9.2-p180だとtkが組み込まれてない
ってことで最新版のtcl/tk8.5.9を使うには
自分でコンパイルするしかないんでは
ttp://www.dumbo.ai.kyutech.ac.jp/nagai/RubyTk/?%BA%C7%BF%B7%C8%C7%A4%CERuby%2FTk%A4%F2%BB%C8%A4%A6%A4%CB%A4%CF
0534デフォルトの名無しさん
2011/05/08(日) 00:30:58.120535デフォルトの名無しさん
2011/05/08(日) 00:35:42.93や、Readlineと同レベルではあるのか、一応
誰も有効にしないだけで
0536デフォルトの名無しさん
2011/05/08(日) 00:40:17.63基本的にRubyでGUIとかゲームは茨道だお
0537デフォルトの名無しさん
2011/05/08(日) 00:42:43.080538デフォルトの名無しさん
2011/05/08(日) 00:44:00.79誰も使ってないから、何かがあっても気づけないんだよね
初心者の人からの報告待ち状態
そういうライブラリは普通標準から外すもんなんだけど
というか、何もなかった昔ならともかく、今はrubygemsにぶん投げたほうがいいと思うの
使う人がメンテして、使う人が最新版に追従して公開するはず
Ruby本体の更新に引っ張られてる現状はあんまりよくない
0539デフォルトの名無しさん
2011/05/08(日) 00:48:43.050540デフォルトの名無しさん
2011/05/08(日) 01:06:27.32あまりのスカスカっぶりに泣いた
標準添付ライブラリのドキュメントがこれって‥
gemごそってたら "tk-win" という面妖なものがあったが
installできんかった‥
0541デフォルトの名無しさん
2011/05/08(日) 01:09:18.26Ruby/TkのライブラリはTcl/Tkを叩いてるだけだから、
Tcl/TKの畑を見ればよいということじゃないかな。
0542デフォルトの名無しさん
2011/05/08(日) 01:30:45.38明日ちょいといじってみるかな‥
0543デフォルトの名無しさん
2011/05/08(日) 01:36:03.91ただ、普通のWindowsにはTcl/Tkが入ってないから
何もせずに使えるわけじゃないけど
自分はMingwでRubyとTcl/Tkをコンパイルして使ってるのだけど
ASRの1.9.2からでもMingwでコンパイルしたTcl/Tk使えるみたい
ちょっと試したら、ASRとTcl/Tkの 8.4.16と8.5.6と8.5.9はちゃんと使えた
長時間動かせるのかどうかはわからんけど
Rubyコンパイル時にオプションを指定しないと
コンパイル時に見つけたバージョンのTcl/Tkしか使えないので
mswinのはコンパイル環境がTcl/Tk 8.4なんだろう
ASRのは--enable-tcltk-stubオプションつきでコンパイルされているみたいで
Tcl/Tk 8.4 8.5の両対応みたいだ
0544デフォルトの名無しさん
2011/05/08(日) 06:53:20.58最新版が無理な場合はひとつ前インストールすれば問題はない
「WindowsのActive Tcl/Tkの更新に合わせて新しいパッチレベルのrubyを公開しました」とかできん
ActiveTclは事実上の標準ではあるが、WindowsにおけるTcl/Tkの勝手な実装のひとつに過ぎない
>>542
やたら普通にウィンドウテキストやらボタンやら画像やら貼れるぞ(リアルタイムな動作は例によって苦手)
Tkの知識が必須になってしまうが、あちらさんもスクリプト言語だし一旦覚えればどうということはない
昔は独特のUIを提供しててTkだと一発でわかったんだけど、最近はすこし垢抜けた
0546デフォルトの名無しさん
2011/05/08(日) 10:17:42.37標準のコマンドプロンプトに不足してる機能を
おおよそRubyでこなせるからな…
0547デフォルトの名無しさん
2011/05/08(日) 10:18:38.850548デフォルトの名無しさん
2011/05/08(日) 10:22:37.520549デフォルトの名無しさん
2011/05/08(日) 10:47:55.20WxRubyとかそういう、外部のライブラリを必要としないものに
差し替えるべきじゃないかと思う
0550デフォルトの名無しさん
2011/05/08(日) 10:50:36.590551デフォルトの名無しさん
2011/05/08(日) 10:50:58.45おまえはなにをいっているんだ。
0552デフォルトの名無しさん
2011/05/08(日) 10:57:25.71大昔はTk本体を含んでたのよ
無駄に大きいのでやめちゃっただけ
0553549
2011/05/08(日) 11:08:09.40「Rubyの他に何かのソフトウェアをインストールする必要がないGUIライブラリ」
がいいんじゃないか、ってことです
>>552
サイズの都合があるのか
とすると、ライブラリ本体が10MBくらいあるWxRubyも微妙だな……
0554デフォルトの名無しさん
2011/05/08(日) 11:13:29.870555デフォルトの名無しさん
2011/05/08(日) 11:17:58.15で、そのまま今まで来てる
結果的には正解だったと思うがぬ
ウィンドウウィジェットも標準公式サポートするにはPython並の人員が必要で、Rubyにはそれがない
ないものねだるのはやめよう
0556デフォルトの名無しさん
2011/05/08(日) 11:49:10.390557デフォルトの名無しさん
2011/05/08(日) 11:52:58.910558デフォルトの名無しさん
2011/05/08(日) 11:53:44.17GUIなプログラムを作りたいのならRubyは選択肢に入れてはならない
0559デフォルトの名無しさん
2011/05/08(日) 11:54:20.71→それでも作りたい!
→勝手にやってろ!
っていう対応でもやっていける人だけやればいい
0560デフォルトの名無しさん
2011/05/08(日) 11:57:26.73RubyでGUI作るのは別にいいけど、
GUI作るのにRuby使うのはやめた方がいい。
0561デフォルトの名無しさん
2011/05/08(日) 11:58:44.67学習効率糞くらえ、実行効率糞くらえ、とにかくRubyであることにこそ価値があるという場合にのみ有効
普通の人はそんなところに価値を置かないので、RubyでGUIなんてやらなくてよろしい
GUIやりたいなら他の言語使え
0562デフォルトの名無しさん
2011/05/08(日) 12:01:05.45GUIはHSP
0563デフォルトの名無しさん
2011/05/08(日) 12:15:42.960564デフォルトの名無しさん
2011/05/08(日) 12:38:06.470565デフォルトの名無しさん
2011/05/08(日) 12:47:15.03簡単なダイアログレベルなら十分
0566デフォルトの名無しさん
2011/05/08(日) 13:30:23.87Macならどっちかというと今はMacRubyじゃないかね。
OSXの機能は全部呼べるわけだし。
0567デフォルトの名無しさん
2011/05/08(日) 14:05:50.86OSXでRuby使っていろいろできるなんて。
0568デフォルトの名無しさん
2011/05/08(日) 14:10:28.15ちょっとわかりません
0569デフォルトの名無しさん
2011/05/08(日) 14:21:52.800570デフォルトの名無しさん
2011/05/08(日) 14:39:02.58なんでRubyからGUIを叩くんだよ。
0571デフォルトの名無しさん
2011/05/08(日) 14:40:10.60まったくわかりません。
0572デフォルトの名無しさん
2011/05/08(日) 14:52:03.810573デフォルトの名無しさん
2011/05/08(日) 15:05:23.82Ruby
ttp://live.nicovideo.jp/watch/lv49244567?ref=mini_subscribe
0574401
2011/05/08(日) 17:11:25.59さっそくつまってしまいました
p.30別のファイルを取り込むの所なんですが
ファイル名 hello.rb
def hello
print "hello,Ruby.\n"
end
ファイル名 use_hello.rb
require "hello"
hello()
同じディレクトリに入れてあって、
スペルミス等も確認してみたのですが
use_hello.rbを実行すると
<internal:lib/rubygems/custom_require>:29:in `require': no such file to load --
hello (LoadError)
from <internal:lib/rubygems/custom_require>:29:in `require'
from use_hello.rb:1:in `<main>'
となり実行されません
こんな単純なところで引っかかるなんてorz
0575デフォルトの名無しさん
2011/05/08(日) 17:16:33.200576401
2011/05/08(日) 17:26:20.89require_relativeに変更で解決しました
とりあえずggってパッと読んでみたんですが、
$LOAD_PATHの下りはまだ理解できるレベルに達していないようです
とりあえずrequire_relativeに変更で先には進めるようなので
また理解出来るレベルになったら戻って確認したいと思います
ありがとうございました
0577デフォルトの名無しさん
2011/05/08(日) 17:27:59.690578デフォルトの名無しさん
2011/05/08(日) 17:32:20.16ruby1.9.2から、たしか$LOAD_PATHに「.」(カレントディレクトリ)が含まれなくなったんじゃなかったっけ?
require './hello'
とするか、
export RUBYLIB=.
とすればいいのかな。
0579デフォルトの名無しさん
2011/05/08(日) 17:35:24.31>PHPのhtmlspecialchars($str, ENT_QUOTES)に相当する関数ってありますか?
標準ライブラリにはたしかなかったと思うので、自作したほうがいいかもね。
def h(value)
value.to_s.gsub(/&/,'&').gsub(/</,'<').gsub(/>/,'>').gsub(/"/,'"').gsub(/'/,'&39;')
end
あるいは 1.9 なら
ESCAPE={'&'=>'&', '<'=>'<', '>'=>'>', '"'=>'"', "'"=>'&39;'}
def h(value); value.to_s.gsub(/[&<>"']/, ESCAPE); end
0580デフォルトの名無しさん
2011/05/08(日) 17:38:28.65ありがとうございます
0581デフォルトの名無しさん
2011/05/08(日) 17:39:57.51下のレスうけたwww
0582デフォルトの名無しさん
2011/05/08(日) 17:42:42.13「RubyでGUIは作るな!」「GUIを扱うのに向いていない」と言っても勝手にやっちゃうような人向けです
0583デフォルトの名無しさん
2011/05/08(日) 17:53:42.55いちおうつけくわえておくと、attr='value' を使わず、すべてをattr="value"にしていればシングルクオートのエスケープは必要ないからね。
0584401
2011/05/08(日) 17:59:29.27なるほど。場所指定しろやってことですね。
次のプログラムがRubyの標準ライブラリを利用しろってことで
require "data" を使えって感じなんですが、
この場合どこに指定してやればいいんでしょうか?
もう1.8.7どっかから見つけてきて
ダウンロードした方が早い気も・・・orz
あとエディタメモ帳のままってわけにもいかないだろうしRDEっての
インストールしてみました。ググって見たらサクラエディタってのが
人気みたいですがこっちの方がいいのかな?
今までメモ帳でやってたものでrbファイルからエディタ選ぶと勝手に
メモ帳で開きやがるんですが、これ指定したエディタで毎回開くように
設定出来ませんか?
0585デフォルトの名無しさん
2011/05/08(日) 18:09:37.520586デフォルトの名無しさん
2011/05/08(日) 18:15:39.56サクラエディタみたいな普通のプログラマ用の
テキストエディタにしとくのが無難ではある
プログラムと拡張子の関連付けについては
http://support.microsoft.com/kb/307859/ja
0587デフォルトの名無しさん
2011/05/08(日) 19:30:11.43>大昔はTk本体を含んでたのよ
いつごろの話ですか?
昔はTcl/Tk本体が付属してたのでしょうか?
使ったこと無いので知りませんが
RubyInstallerにはRuby/Tkがついていたのでしょうか
1.6のころからWindowsでRubyの公式サーバーにあるmswin版やmingw版を使ってますが
Ruby/TkはついてたけどTcl/Tk本体はついてなかったような
1.8.5からmingw版バイナリが配布されなくなったので
自分でコンパイルするようになりましたが
PythonのWindowsバイナリだとTcl/Tkもついてくるんだけどなぁ
0588デフォルトの名無しさん
2011/05/08(日) 19:40:18.00標準添付のライブラリならなにもしなくても
require 'date'
でオッケー。
31p のプログラムは 'date' だよ 'data'じゃなくて。
0589デフォルトの名無しさん
2011/05/08(日) 20:16:34.11時間がない社会人なら本が対応している1.8.7でやったほうが速いかもだけど
時間がある学生さんならこのスレで聞きながらまったりやればいいと思うよ
0590デフォルトの名無しさん
2011/05/08(日) 20:47:39.38s.gsub('\\','\\\\')
では\がひとつのままで
s.gsub('\\','\\\\\\')
で \\ になってくれました。
なぜ\ひとつに \\\ の三つが必要になるんでしょうか?
0591デフォルトの名無しさん
2011/05/08(日) 20:53:34.51バグだと罵ってくれてもいい
ということで s.gsub(/\\/){'\\\\'}
0592デフォルトの名無しさん
2011/05/08(日) 21:05:58.38次に、subやgsubの第二引数では
正規表現でグルーピングした部分文字列を呼び出すために\1とかをつかうので、\自身を表すには'\\'とする必要がある
さて、s.gsub('\\','\\\\\\')の第二引数は
ソース上では'\\\\\\'
Rubyの内部では「\\\」
gsubの解釈では、最初の\\が\になり、最後の\は後に続くものがないので、これは\として扱われる
よって 「\\」になる
正式にはソースにも'\\\\\\\\'と書くほうがいいと思うが
s.gsub('\\'){'\\\\'} の方がわかりやすいよね
0593デフォルトの名無しさん
2011/05/08(日) 21:26:11.97横からだけど第二引数はRubyの文字列として解釈されたあと
置換文字列としてのルールでもう一回解釈されるわけだね
勉強になりました
0594デフォルトの名無しさん
2011/05/08(日) 21:29:36.23ありがとうございます。
特に>>592さんの詳しい解説で何故そうなっているかが理解できました。
おとなしく s.gsub('\\'){'\\\\'}を使うことにします。
0595デフォルトの名無しさん
2011/05/08(日) 21:47:44.07VisualRubyのGUI内で exec を呼ぶと落ちてしまうのですが、
(外部コマンド自体は実行されてるみたいです。)
vrubyを使って外部プロセスを呼び出すにはどうすればよいのでしょうか?
公式サイトのサンプルに exec("dir")を加えてみたのですが、終了してしまいます。
http://www.osk.3web.ne.jp/~nyasu/vruby/howto/2.html#buttonpush
# vrsample2b.rb
require 'vr/vruby'
require 'vr/vrcontrol'
module MyForm
def construct
self.caption="sample2b"
addControl(VRButton,"btn1","ButtonButton",10,10,250,50)
end
def btn1_clicked
@btn1.caption="PUSHED"
exec("dir")
end
end
frm=VRLocalScreen.newform
frm.extend MyForm
frm.move 100,100,300,300
frm.create.show
VRLocalScreen.messageloop
0596401
2011/05/08(日) 21:57:25.45ありがとうございます。とりあえず1.8.7見つけてきて
インストールして進めています
サクラエディタは関連付けのところで
何回やってもうまくいかなかったので
むかついてRDEで進めています
data× date○ こんな単純なとこでミスっていたとは恥ずかしい・・・orz
また、つまずいたらいたら聞きにくるのでお願いしますorz
0597デフォルトの名無しさん
2011/05/08(日) 22:00:43.450598デフォルトの名無しさん
2011/05/08(日) 22:04:01.61execてUNIXの機能じゃなかった?
forkしてexecとかいう
execしちゃうと二度と帰ってこないので
systemを使ったほうがいいじゃないのかな
ただし、systemも子プロセスが終了しないと帰ってこないけど
1.9なら spawnで非同期に子プロセスを実行できるけど
0599デフォルトの名無しさん
2011/05/08(日) 22:08:29.77Thread.new{system('dir')}
と、してました
子プロセス数百個も起動しっぱなしってことは無いだろうから
多少のRubyスレッドが居残ってても、問題ないだろうと
本当はWin32APIでCreateProcess呼ぶほうがいいんだろうけど
0600デフォルトの名無しさん
2011/05/08(日) 22:15:55.39File.open('file') do |f|
f.read
end
とかやるとf.の補間でエラー吐くからムカついて使うのやめたなあ。
1.8.7いっちゃったか。。。
まあ1.8系列もまだバリバリ現役だから別にいいとは思うけど。。。
0601デフォルトの名無しさん
2011/05/08(日) 22:17:28.750602デフォルトの名無しさん
2011/05/08(日) 22:25:37.00redcar
0603デフォルトの名無しさん
2011/05/08(日) 22:55:16.98秀丸より高機能なのかな
0604デフォルトの名無しさん
2011/05/08(日) 23:46:11.93リファレンスを見る限り
Open3.popen3 には「Windowsは使えないよ。」の
警告があったんですが、execにはなかったですよ。
>>599
ありがとうございます。 うまく動きました。
すぐに終わる処理なので join したので多分これで問題ないんだと思い込んどきます。
0605デフォルトの名無しさん
2011/05/08(日) 23:54:06.70execはWindowsでも使えるよ
>>604
リファレンスは、あんまり全面的に信用しない方が良い
今回のようなOS間の差異が絡む問題では特に
Windowsで使えないと書かれていない=使える、とは限らない
0606デフォルトの名無しさん
2011/05/09(月) 00:16:54.370607デフォルトの名無しさん
2011/05/09(月) 00:19:52.870608デフォルトの名無しさん
2011/05/09(月) 01:31:41.64> Windowsで使えないと書かれていない=使える、とは限らない
いやいや、今回の場合は
マニュアルに書いてあるとおりにexecは使えてますよ
ただ、「起動に成功した場合、このメソッドからは戻りません。 」
なだけで
しかし、execだけあってもあまり使い道が無いという罠
0609デフォルトの名無しさん
2011/05/09(月) 03:20:12.460610デフォルトの名無しさん
2011/05/09(月) 06:16:26.02exec メソッドはシステムライブラリの exec(2) か spawn などを呼ぶので、
現在の ruby 実行のプロセスは引数プロセスで上書きされます
が正しい解説だろう
system 'notepad' はメモ帳を起動して、メモ帳が終了するまで待つが、
exec 'notepad' はメモ帳を起動するとスクリプトは終了する(ように人間の目に見えるよう振舞う)
exec(2) のシェルレベルのサポートなしに後者の動作は不可能
system で起動されるシェルでたまたま & とかがサポートされてれば system でも似た見た目にはできるが
0611デフォルトの名無しさん
2011/05/09(月) 14:12:05.22http://www.osk.3web.ne.jp/~nyasu/vruby/howto/2.html#buttonpush
このサンプルの "ButtonButton" を "準備" に変えると
utf8n だと ruby -Ku vrubytest.rb で呼び出しても文字化けして表示されますし、
shift-jis だと unterminated string meets end of file のエラーになってしまいます。
"準"だけだと正常に表示されるようです。
このエラーを回避してうまいこと日本語を表示する方法はありますか?
# vrsample2a.rb
require 'vr/vruby'
require 'vr/vrcontrol'
module MyForm
def construct
addControl(VRButton,"btn1","ButtonButton",10,10,250,50)
end
end
frm=VRLocalScreen.newform
frm.extend MyForm
frm.move 100,100,300,300
frm.caption="sample2a"
frm.create.show
VRLocalScreen.messageloop
0612デフォルトの名無しさん
2011/05/09(月) 15:56:14.970613デフォルトの名無しさん
2011/05/09(月) 16:10:41.57そんな話じゃないだろ
もっと深い理由に違いない
0614デフォルトの名無しさん
2011/05/09(月) 16:35:48.62GUIでなんか質問されると中級者レベルの何か深遠な理由なんだろうと考えるのはわからんでもないんだが、
でもこれからの時代においては偏見だと思う
ラーメン食いながらダブルピースで写真撮られる練習をするようなことは実生活では全くの無駄だが、
ヒマの潰し方としては別に悪いことではないだろう
0615デフォルトの名無しさん
2011/05/09(月) 16:52:49.080616デフォルトの名無しさん
2011/05/09(月) 17:48:06.42Rubyのバージョンは何ですか?
Ruby1.8以下だと VisualuRubyはSJISしか想定していなのじゃないのかな
スクリプトをSJISで書き -Ksつきで実行しておけば問題ないような
Ruby1.9だとちゃんとマジックコメントを書いておけば
SJIS(cp932)でもUTF-8でも
文字化けせずに実行できたよ
0617デフォルトの名無しさん
2011/05/09(月) 20:13:04.38固定ピッチフォントで英数字の1文字分の表示幅を1とし、
漢字等の英数字の2文字分の幅の文字の表示幅を2として計算して表示したいのですが
ljustは文字数で計算されるため文字列に漢字が含まれるとうまく行きません。
環境はRuby 1.9.2、Windows、表示用フォントはMSゴシックです。
0618デフォルトの名無しさん
2011/05/09(月) 20:15:55.50プログラミングをさも特別な技能かのように装うのはやめないか?
ぶっちゃけうちのオカンでもできるよ?
プログラミングなんて何度失敗してもリスク無いし。
本当に特別な技能ってのは素人がいきなりやると死ぬレベルとか、
実施できる回数が人生の間で数回とかそういうもんを言うんだよ?
0619デフォルトの名無しさん
2011/05/09(月) 20:45:58.81今は実質不可能です
が、まあ、たとえばUTF-8とかに変換しておいて
1文字幅の文字を正規表現でマッチさせて係数1と、
それ以外の文字を係数2として計算すればそれなりに動作する
あくまでそれなりだけど、問題はあまり起きないはず
irb> "abcねこハンカク".split(//).map{|s| /[0-9a-zA-Zア-ン゙゚]/ =~ s ? 1 : 2}.inject(0){|r,i| r +=i;r}
=> 11
0620デフォルトの名無しさん
2011/05/09(月) 20:46:26.150621デフォルトの名無しさん
2011/05/09(月) 20:51:28.67Unicodeなにそれなフォント固定な環境なら問題なかんべ
あと記号とかいろいろ入ってない
0622デフォルトの名無しさん
2011/05/09(月) 21:37:54.59君を加えて2名 >人を下に見る人
このレスで俺を加えて3名
0623デフォルトの名無しさん
2011/05/09(月) 21:46:40.47ASKII文字と半角カナだとこれでいいのかな?
0624デフォルトの名無しさん
2011/05/09(月) 22:38:41.76この正規表現はいやらしいとおもいまう
0625デフォルトの名無しさん
2011/05/09(月) 22:44:42.43/[\x20-\x7e\xa1-\xdf]/
0626デフォルトの名無しさん
2011/05/09(月) 22:47:57.420627デフォルトの名無しさん
2011/05/09(月) 23:08:18.311.upto(?d){|i|i%3<1&&x=:Fizz;puts i%5<1?"#{x}Buzz":x||i}
0628デフォルトの名無しさん
2011/05/09(月) 23:19:58.45あと、 ?d #=> "d" (1.9で)
0629デフォルトの名無しさん
2011/05/09(月) 23:33:10.41ありがとうございます、できました。
>>616
1.8.6です。
1.9だとvrubyでもUTF-8が使えるんですね。
多言語表示したい時は1.9を試してみることにします。
ありがとうございました。
0630デフォルトの名無しさん
2011/05/09(月) 23:42:01.76汚いコードだなあ
0631デフォルトの名無しさん
2011/05/10(火) 00:11:18.63UNIXはよく知らんけどふつうは
fork{exec ほげほげ}
とかするんじゃないの
forkでプロセスの複製をして、execで中身を切り替える
forkとexecを別々にできると、場合によっては便利なこともあるらしいね
すくなくともOS作るのには便利なんだろう
WindowsのAPIだとfork機能とexec機能は別れておらず一体なので
Windows版Rubyのexecは二度と帰ってこない外部プロセス起動メソッドでしかない
>「現在の ruby 実行のプロセスは引数プロセスで上書きされます」
Windowsだと
「外部プロセスを起動して、起動に成功するとRubyは強制終了します。ただし、Rubyが終了するのは、その外部プロセスの終了を待った後になります。その間Rubyは停止しています。」
くらい?
0632デフォルトの名無しさん
2011/05/10(火) 00:18:03.11systemみたいなのだとこうはいかない
0633デフォルトの名無しさん
2011/05/10(火) 01:34:42.300634617
2011/05/10(火) 01:46:47.66文字コード表を見るとUnicodeの記号は半角と全角が混沌としていて完璧を期すのは困難そう。
とりあえずASCII+カナ+αでやってみようと思います。
0635デフォルトの名無しさん
2011/05/10(火) 01:52:54.47文字データベース引っ張ってくれば計算は出来る、はず。
Ambiguousの扱いがいろいろ茨らしいが。
0636デフォルトの名無しさん
2011/05/10(火) 04:58:25.270637デフォルトの名無しさん
2011/05/10(火) 09:59:50.12コードリーディングならるびまの添削記事でも読んでみたらいかがでしょうか。
0638デフォルトの名無しさん
2011/05/10(火) 10:23:50.74表示フォントが大体決まってるなら「俺らが普段半角幅だと思ってるもの」だけ幅1で計算すればOK
どうせ日本人向け環境で日本人向けフォントだろw
昨今のLinuxのターミナルエミュレータで英語圏対応するとかだと泣きたくなるほど面倒だが
Enterの上の\とEnterの下の\で入力文字と表示幅が違ったときは最新追従すぎて飛び降りたくなった
今度からはバックスラッシュは「ろ」で入力しないといかんのか
0639デフォルトの名無しさん
2011/05/10(火) 20:35:48.27>漢字を含む文字列を表示幅指定で書き出すにはどうしたら良いでしょうか?
NKFにそういう機能があったような気がする。
ttp://www.ruby-lang.org/ja/man/html/FAQ_C6FCCBDCB8ECA4CEBCE8A4EAB0B7A4A4.html#a10.2e11.20.c6.fc.cb.dc.b8.ec.a5.c6.a5.ad.a5.b9.a5.c8.a4.f2.20n.20.b7.e5.a4.c7.c0.de.a4.ea.ca.d6.a4.b7.a4.bf.a4.a4.a4.ce.a4.c7.a4.b9.a4.ac
0641デフォルトの名無しさん
2011/05/11(水) 12:09:11.860642デフォルトの名無しさん
2011/05/12(木) 21:14:05.830643デフォルトの名無しさん
2011/05/12(木) 21:42:23.57% ruby -rdate -e 'p DateTime.parse("2040-01-02 03:04:05")'
#<DateTime: 2040-01-02T03:04:05+00:00 (42615169249/17280,0/1,2299161)>
% ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [i686-linux]
0644デフォルトの名無しさん
2011/05/12(木) 21:49:12.85日付を2038年より前田とタイムスタンプが出力しました
windows 32bitだからですかね?
0645デフォルトの名無しさん
2011/05/13(金) 00:33:27.642038年問題はRuby1.9.2で解消されてwindowsだからとか32bitだからとか関係ないと思うが
0646デフォルトの名無しさん
2011/05/13(金) 00:54:29.64ruby 1.9.2p180 (2011-02-18 revision 30909) [i386-mingw32]
#<DateTime: 2040-01-02T03:04:05+00:00 (42615169249/17280,0/1,2299161)>
>ruby -v -e 'p File.mtime("2061.txt")'
ruby 1.9.2p180 (2011-02-18 revision 30909) [i386-mingw32]
1970-01-01 09:00:00 +0900
>dir 2061.txt
2061/01/01 12:00 0 2061.txt
2038年以降のファイルのタイムスタンプは取れないみたいね
0647デフォルトの名無しさん
2011/05/13(金) 01:21:36.560648デフォルトの名無しさん
2011/05/13(金) 03:16:07.900649デフォルトの名無しさん
2011/05/13(金) 03:21:46.8127年後だよ?27年前と今を比べてみなよぉ。
Z-80でぽちぽちやってた時代だよぉ?
0650デフォルトの名無しさん
2011/05/13(金) 03:23:26.05ウィンドウズだと19000101でも大丈夫だけどマクだとエラーwww
0651デフォルトの名無しさん
2011/05/13(金) 03:27:00.742000年にコボラーをかき集められた様に、2038年にルビラーをかき集められて対応させられると思うとぞっとするわwww
0652デフォルトの名無しさん
2011/05/13(金) 03:36:50.55まったりいこうよ。
0653デフォルトの名無しさん
2011/05/13(金) 04:00:53.95ディレクトリ名前をタブで補完するようにできるんでしょうか?
0654デフォルトの名無しさん
2011/05/13(金) 05:04:18.40Readline ならできる
0655デフォルトの名無しさん
2011/05/13(金) 08:30:08.29touch コマンドが何なのか理解してないだろ。
0656デフォルトの名無しさん
2011/05/13(金) 10:17:07.830657デフォルトの名無しさん
2011/05/13(金) 11:43:03.40大企業では何十年計画でプロジェクトを立てるからそうもいかないんだな
0658デフォルトの名無しさん
2011/05/13(金) 13:32:02.72SJISからUTF-8に変換するときなら機種依存文字さえ使わなければ文字化けはないと考えられますか?
0659デフォルトの名無しさん
2011/05/13(金) 13:40:12.99うん
>SJISからUTF-8に変換するときなら
UTF-8にない文字は文字化けすると思います
0660デフォルトの名無しさん
2011/05/13(金) 13:45:28.400661デフォルトの名無しさん
2011/05/13(金) 13:59:44.20変換方法によって失われたりまとめられたり「変換ミス」されたりする文字は違う
2011年になってもNKFによるString#toutf8が無難とかありえん
0662デフォルトの名無しさん
2011/05/13(金) 14:04:56.740663デフォルトの名無しさん
2011/05/13(金) 14:18:58.01何も考えたくないなら tosjis と toutf8 を使って、実害が出ないように祈る
変換を制御したいなら変換テーブルについて学んだ上で Ruby 1.9 を使用し
好みの変換をするように String#encode でオプションを指定する
0664デフォルトの名無しさん
2011/05/13(金) 14:29:00.45> 好みの変換をするように String#encode でオプションを指定する
何も言ってないのと同じだろw
0665デフォルトの名無しさん
2011/05/13(金) 14:29:25.64(toutf8などの動作が好ましくなくて)NKF を使用する場合、ショートオプション s や S は普通使用してはならない
代わりに --ic=CP932 や --oc=CP932 を日常的に使用する
何かよくないことが起こった場合 --no-cp932 も有効だが使用上の注意をよく読むこと
これらは添付されている NKF のバージョンなどによってはうまく動かないかもしれない(少し古いJRubyとか)
0666デフォルトの名無しさん
2011/05/13(金) 14:32:55.93これらのレガシーエンコーディングに関しては「正しい変換方法」なんてもう存在しないんだよ
太古の人々が妥当だと思ったお着せの動作で我慢するか、それが嫌なら自分で全部やるしかない
0667デフォルトの名無しさん
2011/05/13(金) 15:08:57.81さらに言えばUTF-32なら全世界の文字を表現できるでOK?
0668デフォルトの名無しさん
2011/05/13(金) 16:19:45.98Unicode はひとつだけだよ
Uni な Code なんだから
※ 若干の語弊あり
それをコンピュータ上のバイトで表現する方法が複数あるに過ぎない
従来の ASCII 部分が同じになるように工夫した結果1バイトから4バイトまでバリエーションなのが UTF-8
基本2バイトで、入り切らない特殊な文字は4バイト(サロゲートペア、検出容易)が UTF-16
一律4バイト固定で便利だが ASCII 文字のファイルサイズも4倍でアメリカ人激怒なのが UTF-32(UCS-4)
0669デフォルトの名無しさん
2011/05/13(金) 17:55:52.42CJK widthとかambiguous widthとかでぐぐればいいと思うが文字の幅は場合によりけりなんだなこれが
わかりやすい例だと罫線は日本とASCIIで幅違うよな?
Box-drawing characters - Wikipedia, the free encyclopedia
http://en.wikipedia.org/wiki/Box_drawing_characters
人によってはこのページのスクリーンショットと実際の表示がずれているだろうと思う
Examplesがぐちゃぐちゃになっていたり
>>638のこの扱いでOKじゃないかな
> 表示フォントが大体決まってるなら「俺らが普段半角幅だと思ってるもの」だけ幅1で計算すればOK
> どうせ日本人向け環境で日本人向けフォントだろw
0670デフォルトの名無しさん
2011/05/13(金) 17:56:16.630671デフォルトの名無しさん
2011/05/13(金) 18:01:33.00それはいいとして、NKFのtoutf8はもはやRubyの陥りがちな罠レベルだろw
0672デフォルトの名無しさん
2011/05/13(金) 20:18:22.140673デフォルトの名無しさん
2011/05/13(金) 21:51:06.36ここは主にRubyの質問を受け付けるスレなんだぜ
0674デフォルトの名無しさん
2011/05/13(金) 21:59:43.22ピコピコハンマーがあったらピコピコしまくるわ。
0675uy
2011/05/14(土) 00:25:23.73ro-majikuraiyomenndaro
0676デフォルトの名無しさん
2011/05/14(土) 00:31:46.670677デフォルトの名無しさん
2011/05/14(土) 18:45:43.44ウェブ上での提出書類の簡単な管理システムを作っています。
提出期限と今日の日差が0より大きいなら「あと○日」、
提出期限と今日の日差が0より小さいなら「○日経過」、
0と等しいなら「本日が締め切り日」と表示させたいのです。
以下はその判定部分です。
※sは提出期限と今日の日差を計算した値の変数です。
if s > 0
print "あと#{s}日"
elsif s < 0
print "#{s}日経過"←(このままだと「-」符号がついてしまうので符号を変えたいのですが、方法が分かりません。)
elsif s == 0
print "本日が締め切り日"
拙文で申し訳ないですが、ご教授よろしくお願いいたします。
0678デフォルトの名無しさん
2011/05/14(土) 18:53:22.42完成するより前に挫折してしまいそうな
系統だった情報をさくっと眺めるだけでも違うと思うの
0679デフォルトの名無しさん
2011/05/14(土) 18:53:41.630680デフォルトの名無しさん
2011/05/14(土) 18:56:59.15というか、単に「計算して負の数でなくしてしまえばいい」んだが
それを思いつかないということは、整数と文字列の違いとかリテラル埋め込みとか下手したら四則演算とか
そういうのの基礎知識がすっこんと抜けたままである恐れが高い
0681デフォルトの名無しさん
2011/05/14(土) 19:03:19.12#{-s}でいいでしょ
プログラミング初心者だと思うけど
まあこんな風にこことか誰かとかに聞きながらでも何か1つ作れれば
いろんなことがわかるようになるだろうね
0682デフォルトの名無しさん
2011/05/14(土) 19:12:35.98親切にありがとうございます。
皆さんからいただいたことを参考にさせていただきます。
ありがとうございました。
0683デフォルトの名無しさん
2011/05/14(土) 19:41:14.00まず範囲最小最大値の日付をタイムスタンプに変換して、その範囲の中で乱数を生成する。
生成した乱数を日付に直して出力する。
と、考えたのですが、2038年問題に対応にしたいのでタイムスタンプは使えませんね?
他に代替手段はございませんか?
0684デフォルトの名無しさん
2011/05/14(土) 19:50:47.59年月日で別々に乱数で生成すればいんじゃね
うるう年にきをつけろをょ
0685デフォルトの名無しさん
2011/05/14(土) 23:43:35.49Dateクラス使えばいいかも
>ruby -v -rdate -e "d1=Date.parse('3001-05-14');d2=Date.parse('4001-05-14');p Date.jd(rand(d2.jd-d1.jd+1)+d1.jd).to_s"
ruby 1.8.7 (2009-06-12 patchlevel 174) [i386-mingw32]
"3823-08-07"
0686デフォルトの名無しさん
2011/05/14(土) 23:47:20.310687uy
2011/05/15(日) 00:15:46.98ネタすらわからないゴミだったか さすが、プログラマはゴミだな
けど実際、ソースコード中に積極的にマルチバイト文字使う奴はアホ
いくらruby.exeが対応していても、その周辺ツールが対応してなければ意味はなし
0688デフォルトの名無しさん
2011/05/15(日) 03:15:10.87でいいとおもうんだけど、どこに2038年問題?
0689デフォルトの名無しさん
2011/05/15(日) 03:33:48.60当然Rubyも
アセンブラからメジャーな言語は全て習得したけどRubyはダメだ、まどろっこしくてたまらない
Rubyって業務やプログラマーのためじゃなくてオブジェクト指向競争のためにあるっぽい
フレームワークも全然育たないし
何だかんだで、Objective-C2.0+Appleフレームワーク+xcode+instrumentsが
最速最強なんだな
0690デフォルトの名無しさん
2011/05/15(日) 03:44:07.21言語やフレームワーク系で金儲けしようとしない大手は
M$はWPFなんてクソアプローチでズレまくってるし
XMLとかなめてGUI要素構成するとかプログラマが一番嫌う冗長な処理でさ〜
別に文字列とか+で連結出来なくてい〜んだよ
そんな細かいところまでオブジェクト指向しなくてさ
それよりも、完璧なエラーチェックの入った伝票入力クラスを継承してカスタマイズ出来る事のほうが100倍有意義なんだよ
よってオレもRuby卒業するわ
0691デフォルトの名無しさん
2011/05/15(日) 03:54:21.29dbMagicなんてのが昔あったけど、あれはあれでダサ過ぎて使い物にならないが、動きは事務系Ruby。
どうせRubyはモッサリインタプリタだし、インタプリタ内部に簡易DB持てば死なずに済むんじゃないか?
0692デフォルトの名無しさん
2011/05/15(日) 04:03:17.73JavaとかPHP使いこなせればとりあえず仕事は無くならないんだろうな。糞つまらなそうだが。
0693デフォルトの名無しさん
2011/05/15(日) 04:21:58.81先っぽの会社は使用言語そのものをあまり問題にせず、その言語でどれだけ知識を得たかを問う
普通の(つまり、凡百の)会社は「メインの言語」が使えること以外をあまり問題にしない
どっちにしてもその人が中途半端に使えない人材なんだと思うよ
0694デフォルトの名無しさん
2011/05/15(日) 04:45:51.46その若いリーダーが業務に疎かったりして、それは仕方ないとしても自分より出来る人を部下にしたがらない傾向が強いね
javaしか知らないなんちゃってプログラマーのリーダーにRuby熟知してて・・なんて言ったらまず雇ってくれないだろうな
最近は案件数も少ないし、単価高くて使える人間よりも、単価低くて実力無くても言う事聞く人間が求められてる
ま、今でもXP使ってるしIT業界も終わったなって事だよ
0695デフォルトの名無しさん
2011/05/15(日) 04:52:41.48終わった、と言われていたレガシー重厚長大にでも入っていた方がよっぽど幸せな人生だった。
地方公務員とかと比べるだけもう無駄。
あの東京電力だって、一般社員ならはるかにましな待遇が定年まで続くのだろう。結局は。
0696デフォルトの名無しさん
2011/05/15(日) 07:36:36.48関数型言語以外の相当に高いレベルが要求されると予想されるが
0697デフォルトの名無しさん
2011/05/15(日) 07:38:26.28前半と最後の1行のつながりがわからん
0698デフォルトの名無しさん
2011/05/15(日) 10:03:03.00リーダーは実装なんて知らなくていいと思うんだがな
工程管理と顧客窓口と設計のまとめ役やってりゃいいよ
実装に口だすリーダーなんていらん。
※もちろん少人数チームでカミカゼ管理職の場合はマルチプレイヤーじゃないと厳しいが
XPは普通だろ、まだサポート範囲内だし
今ちょうど7(64bit)の人柱してる。開発部隊から順次置き換え予定
今ヤバイのはofficeだな、今年でサポート切れるし
2007からリボンインターフェースで営業から文句いわれるわ
ファイル形式が混雑してカオスになるわ、やってらんねぇ
0699デフォルトの名無しさん
2011/05/15(日) 10:12:21.950700デフォルトの名無しさん
2011/05/15(日) 10:25:11.713行くらいで確認できるんだから書けばいいじゃん
ちなみに dateライブラリのDateクラスにぶち込んだらArgumentError吐いた
0701デフォルトの名無しさん
2011/05/15(日) 10:32:57.05Ruby にはそういう Time 型や Date 型という機能はない
相応のクラスを自分で選んで使うか探すか作るかして、オブジェクトとして保持しなければならない
というわけでたとえば Date
irb> require 'date'
irb> Date.parse('2011-5-30') #=> <Date: 4911423/2,0,2299161>
irb> Date.parse('2011-5-33')
ArgumentError: invalid date
つぎ、 require 'time' で標準の Time を置き換えた場合
irb> require 'time'
irb> Time.parse('2011-5-30') #=> Mon May 30 00:00:00 +0900 2011
irb> Time.parse('2011-5-33')
ArgumentError: argument out of range
なんというか、パースそのものは可能だけど、オブジェクトとして返すときのチェックに引っかかってる模様
irb> p Date._parse('2011-5-33')
{:year=>2011, :mday=>33, :mon=>5}
ということで、標準では無理
自分で計算するしかないねえ
gem でカッコイイライブラリがあるかもないかも
0702デフォルトの名無しさん
2011/05/15(日) 10:45:58.730703デフォルトの名無しさん
2011/05/15(日) 11:05:22.74バカにしているPHPは自動で計算して日付を訂正するのに
0704デフォルトの名無しさん
2011/05/15(日) 11:15:13.29ユーザー入力がエラーにならないことそのものがエラーと言えることはままある
だからオプションとかで選択できるべきなんだが、まあ、現状、オプションすらないしなw
0705デフォルトの名無しさん
2011/05/15(日) 11:18:49.010706デフォルトの名無しさん
2011/05/15(日) 11:33:04.370707デフォルトの名無しさん
2011/05/15(日) 11:43:15.27>>706
ただの第三者が作成したrubyスクリプトライブラリ集だ
ファイルをまとめて公開するためには規則に沿った記述が必要だが、雛形はサポートライブラリがやってくれる
いろいろな意味で初心者には無理だけど、まあ、1年くらい触れてればなんとかなるんじゃないのかな
0708デフォルトの名無しさん
2011/05/15(日) 12:27:54.37ブラウザでhtttp://localhost/test.rbにアクセスする
↓
サーバでXMLを生成してブラウザに送信
↓
ブラウザでXMLを取得する
ってことで合ってますか?
0709デフォルトの名無しさん
2011/05/15(日) 12:39:56.980710デフォルトの名無しさん
2011/05/15(日) 12:52:06.01なんか俺たちのサーブレットとクライアントで勝手にやりますからー、HTTPステータス何それ。
表現には流行ってるからXML使うねっていう規格。SOAP(WS-なんとか)みたいに泥沼には
恵まれなかったけどね。
>>708 で書いてるのはRESTとかAjaxとかそんなん。
0711デフォルトの名無しさん
2011/05/15(日) 12:59:11.78という、RPCがわかってる人向け(あるいは何もわからないけど我が社もXML導入だでお金出す人向け)の技術
0712デフォルトの名無しさん
2011/05/16(月) 04:27:26.110713デフォルトの名無しさん
2011/05/16(月) 05:41:19.63てか要求的には「特定のキーを押したら処理を諦めさせる」だよね
Enterキーを押したから待ってた処理が完了するわけじゃない
もし「レジューム機能」を持たせたいのだとしたらちょっと大変
0714デフォルトの名無しさん
2011/05/16(月) 05:49:08.620715デフォルトの名無しさん
2011/05/16(月) 05:57:46.82「ダブルクリックで一瞬だけ現れるコマンドプロンプトを自動で閉じないようにしたい」
「sleepだと即閉じないことを大発見したがタイマーになってしまって不便」
とかだったりするんだが
pause 書いた rubys.bat にでも関連付けとけ
0716デフォルトの名無しさん
2011/05/16(月) 11:47:55.61Net::HTTP.get(URI.parse(url)).toutf8.each do |body|
...(1)...
(1)の部分で、1行毎の処理が書かれていました。
質問は、「上記のコードがHTTPリクエストを何回発行しているか数える方法はありますか?」です。
eachがあっても、各行毎にHTTPリクエストを発行していないとは思うのですが、
いざ自分で調べようと思ったときに、(Rubyでの)調べ方がわかりませんでした。
もしあれば、教えていただければ幸いです。
0717デフォルトの名無しさん
2011/05/16(月) 12:15:31.99メソッドチェーンは、慣れると一発なんだが、とりあえず分割する
Net::HTTP.get(URI.parse(url)).toutf8.each do |body|
を
uri = URI.parse(url)
body = Net::HTTP.get(uri)
utf8_body = body.toutf8
utf8_body.each do |line|
...
end
と分割する
ということで、Net::HTTP.get のとこの 1回だけ
Net::HTTP.get(uri) の時点で文字列が全部一気に返ってきてるし
いわゆる逐次取得したい場合は
Net::HTTP.response(uri){|response|
response.each_body{|s|
...
}
} とか書く
つか、each do |body| ... end は書き方がよくないな
ブロック引数は body と呼ぶべきではなく、 String#each 依存でおそらく行単位なんだから line とか書くべき
0718デフォルトの名無しさん
2011/05/16(月) 12:47:35.47いつ誰がどこで接続してるかのチェックは、基本的にはマニュアル読んでから目視でメソッドをさがすしかない
実際に接続するメソッドは少数なんだけど、それを呼んでるメソッドがちょっと多い
接続先を知りたいのなら net-htt-spy という gem があるのだが(gem install net-http-spy)、
「スクリプトのどこで」接続が行われているかはさすがに分からない
irb> require 'rubygems'
irb> require 'net-http-spy'
irb> Net::HTTP.get(URI.parse('http://www.google.com/')).size
I, [2011-05-16T12:43:58.410168 #6680] INFO -- : CONNECT: ["www.google.com", 80]
221
irb> require 'open-uri'
irb> open('http://www.ruby-lang.org/ja').read.size
I, [2011-05-16T12:44:52.238128 #6680] INFO -- : CONNECT: ["www.ruby-lang.org", 80]
I, [2011-05-16T12:44:52.756314 #6680] INFO -- : CONNECT: ["www.ruby-lang.org", 80]
13072
0719デフォルトの名無しさん
2011/05/16(月) 14:53:56.19require 'timeout'
begin
timeout(10){gets}
rescue Timeout::Error
end
とかするのはどうだろう
1.8.7以上だとWindowでも動くよ
1.8.6までだとWindowsでは入出力待ちでスレッドも止まっちゃって動かない
0720デフォルトの名無しさん
2011/05/16(月) 15:26:40.09シングルトンでつまづいてるんだけおd
0721デフォルトの名無しさん
2011/05/16(月) 15:38:11.76覚えても意味ないと思う。
そんな労力があるなら実際のコードをみて勉強した方がいいような・・・。
0722デフォルトの名無しさん
2011/05/16(月) 15:54:28.63$stdout = File.open("hoge.txt", "w")
%x{ foo.exe }
$stdout = STDOUT
で試してみたんですが、hoge.txt には何も書き込まれず、標準出力にそのまま出力されてしまいました。
1.8.6 です。
0723デフォルトの名無しさん
2011/05/16(月) 15:57:10.63一般的には、あんまりいらない
オープンクラスで動的メソッドでラムダラムダで個人プレイなRubyでは特にね
(あれはCやJavaのような言語で大人数開発するときのノウハウだ)
が、まあ、頭に入ってれば役に立つことは年に何回かはあるんじゃないかな
立ち読みで済ますくらいのが一番いいんじゃないの
0724デフォルトの名無しさん
2011/05/16(月) 16:00:23.99str = `hoge.exe`
File.open('hoge.txt', 'wb'){|f| f.write(str)}
でいいんじゃないのん?
0725デフォルトの名無しさん
2011/05/16(月) 16:56:34.15ためしてみましたが、やっぱりファイルには出力されず
標準出力に結果が出力されてしまいます。
0726デフォルトの名無しさん
2011/05/16(月) 17:33:41.08CGI部分は動くんですが、rubyがエラーを吐いてしまいます。
画像等はちゃんと同じ同じ名前でrbファイルがあるフォルダに置いてます。
恐らく判定部分の画像の表示が間違ってるんだろうとは思いますが全くわかりません、
どなたか助けてください。
#! ruby -Ku
print "Content-type: text/html\n\n"
user = ""
ENV[ "QUERY_STRING" ].split( "&" ).each do | term |
name,user = term.split ( "=" )
end
0727デフォルトの名無しさん
2011/05/16(月) 17:36:46.61s = rand
if s < 0.618
system = "gu"
elsif s < 0.8
system = "cyo"
else
system = "pa"
end
0728デフォルトの名無しさん
2011/05/16(月) 17:38:29.55if user == "gu"
if system == "gu"
judgment = "draw"
elsif system == "cyo"
judgment = "win"
elsif system == "pa"
judgment = "lose"
end
elsif user == "cyo"
if system == "gu"
judgment = "lose"
elsif system == "cyo"
judgment = "draw"
elsif system == "pa"
judgment = "win"
end
elsif user == "pa"
if system == "gu"
judgment = "win"
elsif system == "cyo"
judgment = "lose"
elsif system == "pa"
judgment = "draw"
end
0729デフォルトの名無しさん
2011/05/16(月) 17:39:49.24標準出力でなく標準エラー出力に出力されてる可能性は?
もしそうならOpen3
0730デフォルトの名無しさん
2011/05/16(月) 17:40:11.85<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charest=UTF-8">
<title>じゃんけんゲーム</title>
</head>
<body>
EOS
print "<h1>勝敗</h1>"
print <<EOS
システム側が出したのは...
EOS
0731デフォルトの名無しさん
2011/05/16(月) 17:41:31.66<img src="gu.png">
elsif systemu == "cyo"
<img src="cyo.png">
elsif system == "pa"
<img src="pa.png">
end
if judgment == "win"
<img src="kati.png">
elsif judgment == "draw"
<img src="hikiwake.png">
elsif judgement == "lose"
<img src="make.png">
end
print <<EOS
<center>
<a href="game1.html">戻って、もう一度勝負する</a>
</center>
</body>
</html>
EOS
0732デフォルトの名無しさん
2011/05/16(月) 17:44:19.710733デフォルトの名無しさん
2011/05/16(月) 17:49:33.77上のコードはぱっと見ではimgタグが引用符で囲まれてない
print "<img src='make.png' />" とかしなきゃ
0734デフォルトの名無しさん
2011/05/16(月) 19:16:17.07>>733
ご指摘ありがとうございました、
print "<img src='make.png' />" で解決しました^^
0735デフォルトの名無しさん
2011/05/16(月) 19:37:29.10なおかつ初心者がRubyから出力を制御したいようなプログラムに心当たりがある
wget.exe
0736716
2011/05/16(月) 19:55:52.59丁寧な回答ありがとうございます。
まだ頂いた回答を消化しきれてませんが、恐らく私の要件は解決しそうです。
まずはお礼を申し上げます。
0737デフォルトの名無しさん
2011/05/16(月) 23:21:31.550738デフォルトの名無しさん
2011/05/16(月) 23:26:00.35事態が動いてから報告しろ
0739デフォルトの名無しさん
2011/05/16(月) 23:33:28.98まあこれはもう文化圏が違うとしか…
商社営業文化圏だよね
0740デフォルトの名無しさん
2011/05/17(火) 01:28:02.59accepted→closed ってその度に報告だよね?
0741デフォルトの名無しさん
2011/05/17(火) 06:50:33.440742デフォルトの名無しさん
2011/05/17(火) 07:32:45.81自分が相手にとって代替可能である場合、つまりふつうの社会人利害関係である場合は、
私はあなたを忘れていませんコンゴトモヨロシクという意味を込めて、
内容がなかろうと進展がなかろうと落ち着き次第早急に連絡「しなければならない」
んが、こーゆーコンピュータ関連コミュニティ(またはPC関係者)の中には、
属人性をすぱっと切り捨てて結果だけ欲しがるという風潮が少なからずある
「今更挨拶とかどうでもいいしお前個人のことは最初からどうでもいい、事例はどうなった」
ある意味純粋で機能的で、ある意味無機的で冷たい
突き詰めると古来NNTPから伝わる「お礼ポストはバイトの無駄、解決したらサマリを流せ」になる
0743デフォルトの名無しさん
2011/05/17(火) 07:58:21.23コンピューターに関するやり取りをする人のおせっかい度はわりと万国共通なので、外国語のMLとかでも
「動きましたありがとう」「まだ動きません、エラーメッセージは…」の2種類だけで結構なんとかなったり
>>738も書いてるが単に文化圏の違いだから
通常人の場でこれをやると非常識だと思われて友達減ったり給料減ったりするので注意
0744デフォルトの名無しさん
2011/05/17(火) 08:20:37.160745デフォルトの名無しさん
2011/05/17(火) 10:39:46.43そんなことも理解できないなんて世の中にはバカっているもんだな。
0746デフォルトの名無しさん
2011/05/17(火) 10:42:46.560747デフォルトの名無しさん
2011/05/17(火) 11:14:57.030748デフォルトの名無しさん
2011/05/17(火) 12:51:49.29コード答えて試したり理解したりする前にお礼言われても仕方ない。
0749デフォルトの名無しさん
2011/05/17(火) 12:54:24.680750uy
2011/05/17(火) 14:17:02.520751uy
2011/05/17(火) 14:44:17.231.9系では動いて1.8系では動かないのは仕様?
1.9
http://ideone.com/PT7q9
1.8
http://codepad.org/ojm0qhYA
どうやら15行目あたりの
o.task[key] = miyu
この記述で、o.task[key] に正しく代入されていないみたいなんだけど
似たようなソースかいてみたけどこっちは動きました
http://codepad.org/l7TmRG9i
0752デフォルトの名無しさん
2011/05/17(火) 15:19:26.34例えば
私立高校A 公立高校B
教室1〜4組
1クラス最大40人
生徒を管理する場合、
必要なメソッドは
・生徒を増やす
・生徒を減らす
・生徒の学年が上がる
・生徒が卒業する
・生徒が退学する
こんな感じでメソッドを処理ごとに分けて作っていけばよいって事ですが
1処理1部品ってことで作ればオブジェクト指向ですか?
0753デフォルトの名無しさん
2011/05/17(火) 15:27:47.31それだけの処理なら作るクラスは学校クラスと生徒クラスぐらいかなあ。
そのメソッドごとにクラスを作る必要はないよ。
教室クラスは要らないかもね、Arrayでおk。作ってもいいけどさ。
0754デフォルトの名無しさん
2011/05/17(火) 15:34:31.151.8ではシャドウイングしないよ。
0755uy
2011/05/17(火) 15:57:13.43バグではないのですね レスありがとうございます
0756デフォルトの名無しさん
2011/05/17(火) 16:29:27.47lambda do|o|
って気持ち悪いな。
do のあとのブロック変数は離して do |o| にしてほしいし、 lambda なら do...end よりは{|o| }してほしい
0757デフォルトの名無しさん
2011/05/17(火) 17:09:44.37クラスはメソッドをまとめて hoge.foo とか書けるようにするもの
モジュールは定義時にselfとか書かないといけないのでめんどくさい謎存在
でいいです
必要になったら少しずつわかります
最初からクラス設計とか大上段に構えるとつまんないし全く前に進みません
0758デフォルトの名無しさん
2011/05/17(火) 17:10:12.91h = {a: 1, b: 2, c: <...>, d: 5}
この<...>の時点で、h[:a]やh[:b]の値を取得する方法はありますか?
0759デフォルトの名無しさん
2011/05/17(火) 17:22:43.59ない。リテラルの仕事じゃないもの、それ。
素直にHash.newして
h[:a] = 1
h[:b] = 2
<...>
h[:d] = 5
と地道に代入したらいかがでしょうか。
0760389
2011/05/17(火) 17:29:56.54Ruby192/lib/ruby/1.9.1/net/protocol.rb:135:in `read_nonblock': 既存の接続はリモート ホストに強制的に切断されました。 (Errno::ECONNRESET)って
エラーが出たのですが、これはアクセス拒否されてるって事でしょうか?
0761デフォルトの名無しさん
2011/05/17(火) 17:30:11.02h = {:a => 1, :b => 2, :c=> nil, :d => 5}
h[:c] = h[:b] + 1
こう書くしかないな
まあ、途中で参照出来れば一発で書けて便利だなと思うことは月に1回くらいはある
が、それを有効にするためのRuby側の処理はあからさまに面倒そうなので、別にいいかみたいな
0762デフォルトの名無しさん
2011/05/17(火) 17:36:33.10ふーむ、やっぱりありませんか
もし参照できればこんな感じの構造体をパースするのに便利だと思ったんです
struct hoge {
int next_item_count;
int item[next_item_count]
...
おとなしくStructあたり使うことにします。レスどうもでした
0763デフォルトの名無しさん
2011/05/17(火) 17:36:47.41知りたいなら、サーバが何を言っているかを聞き取るといい
サーバが何を言っているのかがわからないなら、HTTPなりDNSなりの勉強が必須
勉強が終わって、Rubyでどうすればそれを聞き取れるのかがわからないのなら、
何をしたいかぽちっと質問すればきっと誰かが答えてくれる
サーバが何を言っているのかわからないというレベルでは、たぶん誰もあなたを助けられない
0764uy
2011/05/17(火) 17:38:15.67本当にどうでもいいね
お前が気持ち悪いよ
lambda do|o| とか、意識した事はない
この程度が気になるのならばそれは病気だ
このソースのかき方で
end と } を混合すれば大変なことになるから特にそれは不可能な願い、やってみればわかる
元々Rubyでやるべき記述じゃないから行数かさめば何やっても読めなくなるは
0765デフォルトの名無しさん
2011/05/17(火) 17:44:27.88エラー名かエラーメッセージはもうちょっと実データを反映させたほうがいいとは思う
Errno::ECONNRESETはソケットのECONNRESETだからまだマシなんだけど、
たまーにRubyオリジナルのエラー名があってちょっと困った覚えが
まあ今回はふつうのブラウザからアクセスできれば特段問題はない
なんだったらふつうのブラウザのフリでも
0766デフォルトの名無しさん
2011/05/17(火) 17:48:11.13ソフトウェアテストを書くようにしてからWebMockでも使っとけ捗るぞ
0767デフォルトの名無しさん
2011/05/17(火) 17:56:47.87変数のシャドウイングもわからないレベルで
「元々Rubyでやるべき記述じゃないから行数かさめば何やっても読めなくなるは」
別にコーディングスタイルだから強要はしないけどさあ、
他人のコードまともに読んだことも無いのにコーディングスタイルについて語るなよw
lambda do|o| yield o end
なんて書く奴そうそういねえよw
これぐらいならendと{}を混合して書くことなんて別に普通も普通、おもいっきり普通w
0768デフォルトの名無しさん
2011/05/17(火) 17:59:32.37日本語で
0769デフォルトの名無しさん
2011/05/17(火) 18:02:04.830770デフォルトの名無しさん
2011/05/17(火) 18:13:23.36それまだ表示してるのお前だけだぞ
0771uy
2011/05/17(火) 18:43:33.52いやいや、あのねシャドウィング君。病気の君が読めないなら無理しなくていいんだよ
それと、
誰 に 話 か け て ん だ ? wwww
君が理解できないだけでそのソースコードはね・・・w
まぁ俺の予想ではあと2年くらいで広まり始める傾向が見れる思ってる
これを読み解いて価値に気づく奴が増えないとまずダメだけどな
即レスしたから、もしやと思って、けしかけたけど
シャドウィング君にはちょっと早かったようだ
ちょっと本格的開発に入る前に、もう一回だけ人目につく場所にソース晒しておきたかっただけだから
はい、それでは。
0772デフォルトの名無しさん
2011/05/17(火) 18:56:17.020773デフォルトの名無しさん
2011/05/17(火) 18:59:41.70それだけが気がかりだ
0774デフォルトの名無しさん
2011/05/17(火) 19:50:13.94参考にさせていただきます
>>765
ありがとうございます
他のサイトは問題ないので規制させられたようです
ブラウザからはアクセスできるので代替策を考えてみたいと思います
0775デフォルトの名無しさん
2011/05/17(火) 21:32:04.46マニュアルドキュメントも日本産なのに微妙だし
if分のthen(省略可能だったらはじめからつけないでもらいたい)や
elseifの微妙な独自色とか意味のない部分にこだわりすぎてて使いにくい
c言語の基本から学んだ後にこっちにきたんだけどほかにもいろいろ不満はあるけど
致命的なのは開発環境が悪い
irbの使い勝手の悪さはいちいち面倒でチマチマ入力もウンザリ
インタプリタのメリットってないじゃん
これだったら素直にperlとかpythonやったほうがいいね
0776デフォルトの名無しさん
2011/05/17(火) 21:35:27.500777デフォルトの名無しさん
2011/05/17(火) 21:44:38.35PerlもelsifでPythonにいたってはelif
ちなみにirbは開発環境っていうかあくまで
簡単な式を試すのに補佐的に使うものだよ
とりあえずはエディタ+シェル(コマンドプロンプト)+irbで
ウインドウ3つ開いて開発するのが簡単でおすすめ
それでもダメならPerlでもPythonでもお好きなのをどうぞ
0778デフォルトの名無しさん
2011/05/17(火) 21:58:09.600779デフォルトの名無しさん
2011/05/17(火) 22:13:13.66then は省略可能ではない
$ cat a.rb
if 1 puts "yes!"
end
$ ruby a.rb
a.rb:1: syntax error, unexpected tIDENTIFIER, expecting kTHEN or ':' or '\n' or ';'
if 1 puts "yes!"
^
「改行または行終端記号 ; で代替可能」なだけだ
then を省略した場合は改行に相当するものを絶対に書かなければならない
0780デフォルトの名無しさん
2011/05/17(火) 22:19:12.32jewelerというgem使っとけ
gemの雛形を作ってくれるからgemを作るなら楽だぞ
jewelerでgemを公開できるならgemの使い方やライブラリのファイルの置き方や構造を学べるし、
むしろ初心者を脱するためにもちょっとしたgemを作るのは有用じゃね
0781デフォルトの名無しさん
2011/05/17(火) 22:20:01.27C原理主義者→PHP
Java原理主義者→Python
囲い厨→Perl
0782デフォルトの名無しさん
2011/05/17(火) 22:25:01.02$ clisp --quiet
[1]> (car '(1 2))
1
[2]>
0783デフォルトの名無しさん
2011/05/17(火) 22:45:53.80現時点で入りづらいの事実だろうと思う。ただし開発したい環境にもよる。
以下私見
・人手が足りず入門者向けの記事やドキュメントが少ないのは仕方がない
・英語のドキュメントやソースを読むクソをつけるのがいいと思う
・Ruby 1.9を勧めたいところにRuby 1.8のものばかり検索に引っかかるのは、過去1年や3ヶ月など期間指定で回避できる
これはRubyだけの問題じゃないが
・きみの開発したいプラットフォームで開発環境が悪いと思ったのなら、プラットフォームの選定自体が悪いかもしれない
世の中の8割以上のクライアントPCで動いているOSつまりWindowsは開発環境や動作環境も含めてRuby向けではない
何故ならRubyの開発者、ライブラリの開発者の多くがその9割のOSを使っていない
・Pythonは逆に積極的にWindowsをサポートしているようだが方針と人手が・・・
0784デフォルトの名無しさん
2011/05/17(火) 22:50:29.820785デフォルトの名無しさん
2011/05/17(火) 22:51:48.48then 書いてる人は意外と多いな
0786デフォルトの名無しさん
2011/05/17(火) 22:58:07.80条件終了の意図を明示できるのがいいらしい
書き忘れはありませんという宣言
まあ、みんなが書いてなかったら自分も書かない
既存のコードにきちんと書いてあったら自分も書くという程度
0787デフォルトの名無しさん
2011/05/17(火) 23:21:57.92書いてみたのですが、何が悪いのかよく分かりませんでした。
何故エラーになるのか分かりませんか。
p (1..5).inject(0){|s, i|
p i
p s
s += i
p s #ここで悪さをしているらしい??
}
=>undefined method `+' for nil:NilClass (NoMethodError)
(ruby -v => 1.8.7p330)
0788デフォルトの名無しさん
2011/05/17(火) 23:31:49.11つまりそのコードだとpの返値であるnilだ。
0789デフォルトの名無しさん
2011/05/17(火) 23:39:01.64最後の p s のあとに
s
だけの行を入れて実行したらいいんじゃないかな
いまのままだと p s の戻り値(= nil)がブロックの戻り値となっている。
0790デフォルトの名無しさん
2011/05/17(火) 23:40:50.44p sの後に、再度sを入れることで解決しました。
injectは便利そうなのですが、配列を絡めると
まだよく理解できてので、もう少し研究してみます。
ありがとうございました。
ちなみに、1.9.2にVerをあげてみたら、
動作したのは、何か仕様が変わったのかな?
0791デフォルトの名無しさん
2011/05/17(火) 23:46:09.99これでgolferの1.9移行がまた遠のいたのかな。(p1バイトでnilを表現できて重宝していた)
0792デフォルトの名無しさん
2011/05/17(火) 23:49:41.19どうでもいいなw
そんなにゴルフが好きなら目的の処理を0バイトで表現できるプログラミング言語作ればいいじゃない。
0793791
2011/05/17(火) 23:54:54.83おれはちゃう。
0794デフォルトの名無しさん
2011/05/17(火) 23:57:41.470795デフォルトの名無しさん
2011/05/17(火) 23:58:39.83今手元の1.9.2で試したら
引数が1つならその引数を、複数なら引数リストを配列として返すようになってるね
0796デフォルトの名無しさん
2011/05/18(水) 00:00:28.73動かなくてイラッとすることがよくあったが、そういう理由なんだろうか。
まさかな。
0797デフォルトの名無しさん
2011/05/18(水) 00:07:42.020798デフォルトの名無しさん
2011/05/18(水) 00:22:43.30Rubyを使い倒してるような方々が大抵エディタで済ませちゃってるのが大きい理由なのかな。
まともに動くIDEってRadrailsぐらい? あれも重さに見合った機能はない気がするけど。
WindowsならRDEもあるけどバグバグだしなあ。
やっぱりRubyはエディタ+端末が手軽だね。
0799デフォルトの名無しさん
2011/05/18(水) 00:32:03.38というか端末で使うのが一番Rubyらしい用途って感じがする
Rubyは組み込みメソッドからしてコマンドラインの補助にピッタリだし
0800デフォルトの名無しさん
2011/05/18(水) 00:43:36.60・Rubyはかなり極端な動的型付け言語なので
入力補完の類はあまり当てにならない
・ビジュアルデバッガはあれば嬉しいが、伝統的なprintfデバッグでも何とかなってしまう
仮にIDEを開発したとして、よほど頑張らないと
emacs/viみたいに営々と改良されてきた汎用エディタに対して優位性がないのだと思う
0801デフォルトの名無しさん
2011/05/18(水) 01:03:37.180802デフォルトの名無しさん
2011/05/18(水) 01:34:16.31ってのは単なる甘えなのでは。
0803デフォルトの名無しさん
2011/05/18(水) 01:36:05.07だよね
def foo(string_or_regex)
case string_or_regex
when String
string_or_regex.<ここではStringのインスタンスメソッドを補完>
これぐらいできないとね
0804デフォルトの名無しさん
2011/05/18(水) 01:42:19.470805デフォルトの名無しさん
2011/05/18(水) 01:42:56.56多様性の高い言語を初心者向けとかありえない
0806デフォルトの名無しさん
2011/05/18(水) 01:48:47.91dry runしてstring_or_regex.methods呼べば良いじゃまいか。
甘え。
0807デフォルトの名無しさん
2011/05/18(水) 01:55:09.25ごめんなさい then then 分かりません
dry runってなんぞ?
0808デフォルトの名無しさん
2011/05/18(水) 05:35:02.66標準エラーに出力されていました…。
win32-open3 で取り出すことができました。
ありがとうございます。
0809デフォルトの名無しさん
2011/05/18(水) 07:41:58.87使い物にならん?
0810デフォルトの名無しさん
2011/05/18(水) 08:53:12.180811デフォルトの名無しさん
2011/05/18(水) 10:33:50.96RubyMineや3rdrails()も忘れないでください
俺はaptanaとNetBeans(公式サポートがなくなる6.9まで)使っていたがはっきりいってC#やJavaのような
入力補完やデバッグ、リファクタリングは期待できんよ
それでも、スニペットやgrepのような機能はありWindowsのフリーソフトにあるようなちょっと弄ったテキストエディタのようには使えるので、
端末がどうしても嫌で嫌で仕方がなく親の敵で憎くて仕方がないと思っている人にはおすすめできる
PythonやphpやJavaScriptも動的言語の一種だと思うがこれらのIDEを使っているエキスパートで何使っているのか気になってるわ
phpとJavaScriptはaptanaとNetBeansで試したが、補完はruby並で期待できなかったw
0812デフォルトの名無しさん
2011/05/18(水) 10:38:35.14多用されるRubyの名前付き引数のように使うHashリテラルや
JavaScriptのオブジェクトリテラルも補完効かなくて面倒だったわ
そもそもライブラリごとのサポートやドキュメントとの連携がないと、文脈にあったHashリテラルのキーの補完なんて効くわけないんだが
IDE脳だとつい期待してしまうんだよね
0813デフォルトの名無しさん
2011/05/18(水) 10:45:45.55どっちも同じですね?
0814デフォルトの名無しさん
2011/05/18(水) 10:48:36.55gorubyの仕様をいじればいいんじゃね?w
0815デフォルトの名無しさん
2011/05/18(水) 10:50:14.83聞きたいことがあります
[1,2,3,4,5].map{|i| i * 100 + 10 }
このmapのiみたいな引数わざわざ書くのがアホらしくないっスか?
こうパーッと景気よく
[1,2,3,4,5].map{ i * 100 + 10 }
こんな風に省略してかけないんすか
instance_evalか何かつかってoreore_mapを作ってみようとしたんスが
iがundefined local variable or methodになっちまいます
to_sなら[1,2,3,4,5].map(&:to_s)でいいのはこのスレで習ったんすけどね
0816デフォルトの名無しさん
2011/05/18(水) 11:06:10.15[1,2,3,4,5].map{ $#1*10} #=> [10,20,30,40,50]
open('test.txt', 'wb'){ $#1.puts(s)}
個人的にはこっちの方が「なにがなんだかわからなくて」めんどくさいが
マッチの $1 や $2 が「なにがなんだかわからない」のと問題が同じ
結局変数名をつけてしまうなら、ブロック引数で名前つけたほうが見やすい
0817デフォルトの名無しさん
2011/05/18(水) 11:06:52.16こういうケースを考えよう
i = 108
[1,2,3,4,5].map{ i * 100 + 10 }
さて、ブロック内の”i”とは何かというと、前行の i(=108) になる
つまり単に i と書くだけでは、ブロックの引数と外側で定義された変数が区別できない
だからわざわざ縦棒で区切って、ブロックの引数だとはっきりさせる
0818デフォルトの名無しさん
2011/05/18(水) 11:14:47.46scan は文字列が入った配列の配列が返る(ブロックがある場合はマッチした文字列が毎回渡る)
match は MatchData オブジェクトが返る
おもいっきり別物
…まあ、
hit = str.scan(/(re1)(re2)/).flatten
とか
hit = str.match(/(re1)(re2)/)
とかやって hit[0] と hit[1] を使用するだけならどっちも変わらないので好きなほう使え
0819デフォルトの名無しさん
2011/05/18(水) 11:15:51.42m = t.match(/a/)
これでマッチしなかった場合の条件判断がわかりません
if "" != m then
print "match"
else
print "none"
end
だとマッチしてもしなくても同じ結果になってしまいました
0820デフォルトの名無しさん
2011/05/18(水) 11:32:06.25それはきちんと String#match のマニュアル読め
成功の時と失敗の時に何が返ってくるかくらいは、どの解説でも書いてあるはず
if m then
puts "matched:", m.inspect
else
puts "falied!"
end
0821デフォルトの名無しさん
2011/05/18(水) 11:40:47.01むしろそのoreore_mapはどんな処理なんだ
余程のことが無い限りyieldで事足りると思うのだが
0822デフォルトの名無しさん
2011/05/18(水) 12:10:33.31"" != m
なんて謎な記述をしたのか気になる。
どうして空文字列なのか、どうして!=比較なのか……。
0823デフォルトの名無しさん
2011/05/18(水) 12:18:28.79文字列処理なんだから、失敗したら空文字列が返ってくるのかもしれないじゃないか
まあ、実際は>>820の言うようにメソッド作った人がどう作ったか依存だから、メソッドの解説読むしかないんだけど
0824デフォルトの名無しさん
2011/05/18(水) 12:34:56.45scan使うなら同じように書けないよ
0825デフォルトの名無しさん
2011/05/18(水) 12:55:03.89正規表現的にどうしてフォルダ再帰マッチになるのかいまいちよくわかりません。
予約語みたいなものなのでしょうか?
0826デフォルトの名無しさん
2011/05/18(水) 13:04:12.23Dir.glob の文字列引数はヴェルタースオリジナル
なぜなら世間様一般のグロブ表現は正規表現と相容れない特別な存在だからです
0827デフォルトの名無しさん
2011/05/18(水) 13:44:21.18**/* は zshでも使われてたからunix文化じゃないかな?
0828デフォルトの名無しさん
2011/05/18(水) 13:51:16.06何故同じに書けないのですか?
0829デフォルトの名無しさん
2011/05/18(水) 13:51:24.75XMLPathにもあるし
0830uy
2011/05/18(水) 13:52:06.87Rubyは初心者にも表面上は扱えるけど、初心者向きじゃない
んでマニュアル描いてる人間って頭わいてる奴多いから
サンプルコードがカスなのは仕方がないよ
rubyは、もし最初に手をつけて覚えられないなら
C++やった後でrubyに来たほうがいい
rubyも「いい言語」なんじゃなく「マシな言語」ってだけだから
あまり期待はすんな
0831デフォルトの名無しさん
2011/05/18(水) 14:04:56.760832デフォルトの名無しさん
2011/05/18(水) 14:18:24.42まあ言語としてはPythonのが初心者向けなんじゃないかな
0833デフォルトの名無しさん
2011/05/18(水) 14:26:57.54Pythonすれ言ってきます
0834デフォルトの名無しさん
2011/05/18(水) 15:03:00.80フォークでスープを掬って飲むことはできないからだよ。
0835uy
2011/05/18(水) 15:19:57.520836デフォルトの名無しさん
2011/05/18(水) 15:22:55.380837uy
2011/05/18(水) 15:30:18.90世の中には、論外的にコンピュータが苦手な子もいる
そういう子はpcの前にくると思考がとろくなる
そういう子にとってはCやPHPとかのほうが、おそらくはrubyよりも使いやすい
だから俺はPHPは良言語と思っています
0838デフォルトの名無しさん
2011/05/18(水) 15:34:01.54まあ、コンセプトが違うものだからとしか
そもそも String#scan はイテレータ志向で、
ブロックなしのときに配列の配列が返るのはオマケみたいなもんだし
String#scan の戻り値を flatten するくらいなら
String#match 使って MatchData#to_a したほうがたぶんタイプ数も短くて済む
0839デフォルトの名無しさん
2011/05/18(水) 15:42:50.30何を作る初心者か140文字以内で述べよ
いやわりと本気で
Windows上で動作するプログラムなら今のところC#しかない(いや、他のCでもJavaでもいいけど、確実に道のり遠いよ)
レンタルサーバ上で動作する「CGIみたいなやつ」を作ってみたいなら、とりあえずPHPが無難
(ほぼ確実にインストールされてて、動作サポートに間違いがないから)
新卒就職でアピールしたいならJavaやっとけ(たぶんそれ以上何も聞かれないから)
スマートフォンのアプリで何かやりたいならObjective-Cになる
ブラウザ上でなんかグリグリ動くゲームっぽいフラッシュな何かを作りたいなら、そりゃFlashしかない
0840デフォルトの名無しさん
2011/05/18(水) 16:59:05.66言語仕様を覚えた後はライブラリを覚えなきゃいけない
しかもライブラリの大半は英語
プログラミングが日本に根付かない理由はこういう些細なことではないだろうか
大半の人間はそこまでしてプログラミングしたいと思わないのかもしれない
0841デフォルトの名無しさん
2011/05/18(水) 17:13:21.22で、99%解決しちゃうからな。
カネになるとか、それ自体趣味の変態でないかぎり、プログラム覚えようなんてするわけがない。
0842デフォルトの名無しさん
2011/05/18(水) 17:24:55.09柔軟なテキスト処理はスクリプト言語の十八番だよね。
0843デフォルトの名無しさん
2011/05/18(水) 17:27:19.93特殊変数が充実している分便利だったりしない?
0844uy
2011/05/18(水) 18:32:55.86PGの半分くらいはゲーム作りが目的じゃね
んでそっから方向性かえるやつもいるし、
ゲーム作りがメインなのにソフトも作れるようになってる奴も多い
ところでaifがほしくなったんだけど、ライブラリないの?
一応elseまでは実装した自分実装のはあるけどunlessやelsifまで作るのたるいんだよね
0845uy
2011/05/18(水) 18:34:41.750846デフォルトの名無しさん
2011/05/18(水) 18:41:32.750847デフォルトの名無しさん
2011/05/18(水) 19:49:52.940848デフォルトの名無しさん
2011/05/18(水) 20:32:38.86「日常」にめっちゃ役立って解説が全部日本語で日本中の一般的な「ぱそこん」で実行可能なプログラム言語がある
エクセルのVBA
だから、たぶん、説明文が日本語かどうかというのはそれほど多勢には影響しない
0849デフォルトの名無しさん
2011/05/18(水) 21:08:02.03ActionScriptも他の言語のイイトコどりでC#に似た覚えやすさあるし
0850デフォルトの名無しさん
2011/05/18(水) 22:58:14.850852デフォルトの名無しさん
2011/05/19(木) 13:26:00.030853デフォルトの名無しさん
2011/05/19(木) 14:24:33.12その2つで比較するならPython
というかRubyはシステムワイドにインストールしてなにかするというのはあまりメインじゃない
自分でインストールして、自分のために使う
「ホームディレクトリに複数バージョンの実行環境をインストールして(コマンド一発で)使い分け(または一括実行)」
なんていう逆ベクトルに面倒な変態行為がポピュラーなスクリプト言語がRuby以外にどれだけあるというのか
0854デフォルトの名無しさん
2011/05/19(木) 15:08:00.20その言語で何かを作る、作られた何かをユーザが使う…ではなく
プログラマが使う補助ツールって感じのスタンスなんだろう
0855デフォルトの名無しさん
2011/05/19(木) 15:26:08.640856デフォルトの名無しさん
2011/05/19(木) 15:52:18.95プログラミングやらコンピュータやらいんたーねっとやらの知識の補強になっている
まあ、たとえば、
・ 学校に行かず3年間Rubyをやった
・ 卒業後家で2年間ずっとRubyをやっている
・ どんくさい入門と間違った解説で半年学んだ
・ Rubyを勉強しながら蕎麦屋を始めた
あたりだと、Rubyであることとのシナジー効果がまったくないので大損で無駄だと思う
っていうか早々に見切りつけろ学校行け就職しろ本買え寄り道するな
0857uy
2011/05/19(木) 15:54:47.43実行速度がRuby程度で良いアプリはRubyで作っても良いんだろうけど
まだ完全にJAVAとかを捨てられる程にRubyが良言語になっていないから
移行してる会社が少ない
問題は、やはりオーバーライドとクラス変数の継承と、変数宣言
Rubyのコーディング作法が、定まっていないから採用しにくい
def a n
@test ||= function
@test[n]
end
こんなコードが容易に書けちゃうから、かいてる奴も多いだろ
自由度が高いから、PG全員のスキルがある程度ないとやっていけねえ
特に、日本じゃRubyをちゃんと扱える技術者を頭数揃えるのが厳しい問題
言語構文知ってるだけで使えます(キリッ)とか言っちゃう奴も多いため、判断が難しい
0858デフォルトの名無しさん
2011/05/19(木) 16:03:13.280859デフォルトの名無しさん
2011/05/19(木) 16:09:21.760860デフォルトの名無しさん
2011/05/19(木) 16:14:15.07自転車置場以前の話しか出来てないからね
なんのためにム板のあちこちのスレに書き込んでるのかすごく不思議
rake test をセーフレベル指定で実行する方法はある?
rake -E"\$SAFE=1" test って書いたけどなんか微妙に test 側には反映されてない雰囲気
0861デフォルトの名無しさん
2011/05/19(木) 17:07:51.950862デフォルトの名無しさん
2011/05/19(木) 17:28:58.800863デフォルトの名無しさん
2011/05/19(木) 17:30:44.190864デフォルトの名無しさん
2011/05/19(木) 17:39:13.430865デフォルトの名無しさん
2011/05/19(木) 17:49:54.28直前にあぼん1個あるのでたぶんこれだ
ttp://www.google.com/search?num=30&hl=ja&q=uy+tech+site%3Ahibari.2ch.net
本物も偽物も完全エリミネイト
0866デフォルトの名無しさん
2011/05/19(木) 19:46:42.150867デフォルトの名無しさん
2011/05/19(木) 20:14:41.16"20110519" ==> ["2011","05","19"]
みたいな感じで。
データ長700文字位を200個位に分割
0868デフォルトの名無しさん
2011/05/19(木) 20:22:01.540869デフォルトの名無しさん
2011/05/19(木) 20:26:43.62irb> p s.match(/#{[4,6,4,6,5].map{|i| "(.{#{i}})"}.join('')}/).to_a[1..-1]
["文字列を", "指定カラムで", "分割する", "分かりやすい", "方法ない?"]
わかりやすくはないな…
0870デフォルトの名無しさん
2011/05/19(木) 20:28:05.25すなおに str[nth, length] で切り出せばいいか。
あとはscanとか。
0871デフォルトの名無しさん
2011/05/19(木) 20:30:41.670872デフォルトの名無しさん
2011/05/19(木) 20:36:44.29s[k1...k2]
s[k2...k3]
:
s[kn..-1]
を並べることだと思う。(最後だけ ..)
ループ化したりなんだりはその後必要に応じて。
0873デフォルトの名無しさん
2011/05/19(木) 20:48:02.45ASCIIならunpackで"a4a2a2"とか書けるみたい。
>>869
理解できません。
>>870
scan(/(....)(..)(..)/).flattenは分割数が多いと分かりにくい。
str[nth, length] で切り出せるのは知ってますが
文字列操作に長けたRubyならもっと分かりやすくて簡単な方法が用意されてるはずと思って質問しました。
>>871
スライスって?
>>872
やっぱそれしかないですか。
0874デフォルトの名無しさん
2011/05/19(木) 20:52:29.980875デフォルトの名無しさん
2011/05/19(木) 20:53:11.47s = "20110519"
(keta + [0]).each_cons(2).map {|x,y| s[x..(y-1)]}
[0] が不格好だなー。
0876デフォルトの名無しさん
2011/05/19(木) 20:57:30.660877デフォルトの名無しさん
2011/05/19(木) 21:09:52.150878デフォルトの名無しさん
2011/05/19(木) 21:10:19.81>>869
理解できません。
0879デフォルトの名無しさん
2011/05/19(木) 21:10:23.532,3行で書けそうだし自分で作ったら?
文字列操作に長けてるってのは文字列を操作するさまざまなメソッドを簡単に書けるってだけで、
最初からなんでもメソッドが用意されてるって意味じゃないよ。
0880デフォルトの名無しさん
2011/05/19(木) 21:17:05.25irb> p s.match(Regexp.new [4,6,4,6,5].map{|i| '(.{' + i.to_s + '})' }.join).captures
でどう
っていうか、/(.{4})(.{6})(.{4})(.{6})(.{5})/ みたいに「わかりにくい」正規表現を自動で生成する手もあるというだけのお話
なんで定型作業をちまちま手で書かなきゃならないのよ
プログラムをプログラムで生成することを厭ってはいけない
0881デフォルトの名無しさん
2011/05/19(木) 21:19:55.94てけとうに検索してみたら東大、つくば、東京情報大、中京、京都女子大、高知工科
島根大、阪大、千葉大、Berkeley、Texas Techにはコースがあるらしい
>>867
ascii以外の文字もアリなん?
0882デフォルトの名無しさん
2011/05/19(木) 21:22:58.95cnt = 0
p [4,6,4,6,5].inject([]){|xs, i| xs << s.slice(cnt, i); cnt += i; xs}
0883デフォルトの名無しさん
2011/05/19(木) 21:25:33.41泥臭くコード書いちゃえよ。
def ore_split(str, ary)
n = 0
ary.collect{|i| n += i; str[n-i...n] }
end
0884デフォルトの名無しさん
2011/05/19(木) 21:30:23.01>>880
matchのリファレンス読んできました。やってることは理解しました。
>>879
意図は、自分で作れるが予め用意されてるのではないかということで
0885デフォルトの名無しさん
2011/05/19(木) 21:33:20.560886デフォルトの名無しさん
2011/05/19(木) 21:35:40.35→ でもこれRubyに最初からあったようななかったような
→ 調べる
→ やっぱりない or あった!Rubyは豪勢すなぁ
ということがよくあるので質問者の気持ちはよくわかる
0887デフォルトの名無しさん
2011/05/19(木) 21:38:03.17ほら見てよ5行もある
んでしばらくしてワンライナに嵌って可読性落として、
結局教科書みたいな行数と空白と呼び出しカッコの多いスクリプトに戻る
0888デフォルトの名無しさん
2011/05/19(木) 21:41:18.26ary.collect{|n| str.slice!(0...n) }
でいいんじゃね? 破壊したくなければdupしとけばいいし。
0889デフォルトの名無しさん
2011/05/19(木) 21:48:07.61ものすごい低速ながらがんばっていろいろ処理させた後にmergeに普通にブロック渡せるの知ってしかもそれが
めちゃくちゃ速かったときは泣きそうになった。
0890デフォルトの名無しさん
2011/05/19(木) 22:15:50.25Hashってなんだよw
普通Mapだろwワロチw
0891デフォルトの名無しさん
2011/05/19(木) 22:17:50.26地図に対してはマップという言葉を使わずにどう定義するつもりなのか。
いちいちオレオレ辞書を定義しないで欲しい。
0892デフォルトの名無しさん
2011/05/19(木) 22:21:27.290893デフォルトの名無しさん
2011/05/19(木) 22:26:25.41二流のプログラマーって命名のセンスがないよね。
0894デフォルトの名無しさん
2011/05/19(木) 22:27:42.730895デフォルトの名無しさん
2011/05/19(木) 22:28:29.42さ、帰った帰った。
0896デフォルトの名無しさん
2011/05/19(木) 22:29:45.99に呼応して
>>892
を書いただけのつもりなのに、なぜか素晴らしい命名センスを持った一流プログラマによるまつもと叩きに利用されたでござる。
0897デフォルトの名無しさん
2011/05/19(木) 22:31:01.190898デフォルトの名無しさん
2011/05/19(木) 22:36:04.10Rubyにおけるキーから値へのマッピングを表すデータ構造。 連想配列とか 辞書とも呼ばれる。ハッシュがハッシュと呼ばれるのはその実現に「ハッシュ表」と呼ばれるアルゴリズムが使われているからである。
るりまのHashクラスの冒頭
ハッシュテーブル(連想配列とも呼ぶ)のクラス。ハッシュは任意の種類のオブジェクト(キー)から任意の種類のオブジェクト(値)への関連づけを行うことができます。
0899デフォルトの名無しさん
2011/05/19(木) 22:39:42.55別にハッシュを使って実装しなくてもいいわけだし。
0900デフォルトの名無しさん
2011/05/19(木) 22:42:14.97>>891
mapは「位置づける」とかの意味もあるし
数学とかデータ構造の用語として英語では普通に使われてるよ↓こんなんとか
ttp://en.wikipedia.org/wiki/Multimap
perlの連想配列はハッシュテーブル使ってるからハッシュなんじゃね
0901デフォルトの名無しさん
2011/05/19(木) 22:43:25.230902デフォルトの名無しさん
2011/05/19(木) 22:49:20.09米人がhashて呼称してんじゃね、とかつまらないオチをつけてみる
0903デフォルトの名無しさん
2011/05/19(木) 22:52:38.77associative arrayが長くてピリッとしないから
じゃあhashにしとくかとPerlのみなさん
でもってRubyはそれを踏襲したと
0904デフォルトの名無しさん
2011/05/19(木) 23:03:20.01Perlが連想配列をハッシュと呼ぶから、それを意識したRubyもハッシュと呼ぶことにした、ってことだろう
0905デフォルトの名無しさん
2011/05/19(木) 23:29:46.88昔はPerlが基礎教養だったから調べる必要も主張する必要もなかったんだけど。
0906デフォルトの名無しさん
2011/05/20(金) 00:20:55.13rubyならスマートに描けると思ってたら、そうでもないことを知って落胆する入門者も多いと思うよw
自称一流を自負するならスマートに書いてあげればいいのにwww
0907デフォルトの名無しさん
2011/05/20(金) 00:26:33.800908デフォルトの名無しさん
2011/05/20(金) 00:44:44.29いろんな言語からの輸入があるから、単純に Perl とも言い切れない
gsub とか一部のメソッド名は Perl どころか awk 発祥らしい……
例外処理の rescue/ensure はたぶん Eiffel からだし、
クラスの super の挙動は Lisp 由来らしいし、Ruby の細部をつつくと Matz の趣味が詰まってる
0909デフォルトの名無しさん
2011/05/20(金) 00:52:45.880910デフォルトの名無しさん
2011/05/20(金) 01:07:28.63置換といえばsedもawkもperlもreplaceじゃなくてsubstituteだ。
0911デフォルトの名無しさん
2011/05/20(金) 02:07:31.51どうやらうまく行を取り出せません。
1.9.2だとうまく動いたのでもしかしてバグ?
1.8系で回避する方法はありますか?
#!ruby -Ks
require 'kconv'
f = open("a.txt")
f.each{|l|
puts Kconv.kconv(l.chomp, Kconv::SJIS, Kconv::UTF16)
}
0912デフォルトの名無しさん
2011/05/20(金) 02:30:55.25せっかくRubyスレに来ている初心者に現実を見せるのはやめませんか・・・
>>856
おいやめろ
0913デフォルトの名無しさん
2011/05/20(金) 03:29:53.19それ以外の目的については、Railsを除けば「他の言語の方が効率いいけどRubyでやりたいからRubyでやる」になっちゃうよね。
0914デフォルトの名無しさん
2011/05/20(金) 03:31:06.43人が集まらないもん。
0915デフォルトの名無しさん
2011/05/20(金) 03:39:47.07Rubyのほうが効率いいから(効率がいいうちは)Rubyで作るんだよ
ソフトウェアってのは最初からキラキラした箱に入った状態で畑から収穫されるわけじゃない
まあ、畑から産地直送するしか許されてないのなら、最初から化粧箱ごと作らないといけないがw
0916デフォルトの名無しさん
2011/05/20(金) 03:57:50.11Windowsならbinmodeじゃないとアウトだけど、そういう話じゃなさそうね
0917uy
2011/05/20(金) 08:13:09.23Rubyは散々Lisp方言っていわれて来ただろwwwwwwwwww
初心者の理解できない単語を使うのは嫌いだけどwwwwwwww
そこら辺の動作を理解したいならアナフォリックマクロでググレカスwwwwwwwwwwwwwwwwwwwww
>>914
だね、日本じゃ無理
言語を、「仕事で必要にならなければ覚えない」っつうアホが日本には多いから
仕事がないと技術者が集まらないし、 技術者がいないと仕事が出来ない
どっか力のある会社が率先してRuby使っていくようにならないと無理
JAVAみたいに、C言語が出来ればある程度扱える言語とは違うからなRuby
Lispっつうか、ある程度のスキルがないと無理
0918デフォルトの名無しさん
2011/05/20(金) 08:40:15.56↓
30年後COBOL化する
〜 Fin 〜
しまn
0919デフォルトの名無しさん
2011/05/20(金) 08:40:41.87流してくれや
0920デフォルトの名無しさん
2011/05/20(金) 09:25:23.090921デフォルトの名無しさん
2011/05/20(金) 09:36:58.44$/ = Kconv.kconv("\r\n", Kconv::UTF16) でどう
0922デフォルトの名無しさん
2011/05/20(金) 10:39:12.21まじで使ってるとかw
0923デフォルトの名無しさん
2011/05/20(金) 10:44:01.64まじで生きてるとかw
0924デフォルトの名無しさん
2011/05/20(金) 11:54:11.630925uy
2011/05/20(金) 13:57:47.88はぁ?wwww
アレを言ってたのは、ガチでスキル高い奴らだぞ
Rubyをオブジェクト指向的な使い方しかやっていないなら一生、意味のわからない言葉だと思うけどね
0926デフォルトの名無しさん
2011/05/20(金) 15:17:08.74いまさら金にもならないRubyを覚えるのはごめんだ。
みんなそう思ってるんだろうな…もし俺がRubyを知らなくて、
今から何か使えるようにならなきゃならないと言われたら別の言語にする。
0927デフォルトの名無しさん
2011/05/20(金) 15:45:11.51ツイタもrubyじゃ面倒見きれず乗り換えを余儀なくされた。将来乗り換えが予想されるコストをrubyを選んだプログラマが負担すればいい。
0928デフォルトの名無しさん
2011/05/20(金) 15:49:46.62どうして最初から最後まで同じ言語で作らなければいけないの?
0929デフォルトの名無しさん
2011/05/20(金) 15:49:58.73必要なたびにちょっと調べればいいぐらいの違いしかないでしょ。
0930デフォルトの名無しさん
2011/05/20(金) 15:52:00.910931デフォルトの名無しさん
2011/05/20(金) 15:59:16.93ってのはRubyに限らずスクリプト言語全体で似たようなもの。
PythonもとりあえずはPythonで手軽に実装してみるけど、
間に合わなそうならC/C++に切り替えってのはよくあるスタイル。
0932デフォルトの名無しさん
2011/05/20(金) 16:04:31.80まあPython4が出たら勉強したいかな
0933デフォルトの名無しさん
2011/05/20(金) 16:07:05.80将来的なruby採用時の被害補償負担を担保する為に、全rubyプログラマから利用料を徴収して基金を作っておいたほうが良い鴨な。足りない分は島根の教祖が被るとw
0934デフォルトの名無しさん
2011/05/20(金) 16:09:25.97まあ、往々にしてそんな時間はないわけなんだが
0935デフォルトの名無しさん
2011/05/20(金) 16:13:37.72実のところ何も知らない何も作ったことのない人なので無視してよい
そもそもビル立てるものじゃない
0936デフォルトの名無しさん
2011/05/20(金) 16:14:04.29早めにCで書き換える対策しておいたほうがいい?
0937デフォルトの名無しさん
2011/05/20(金) 16:15:49.640938デフォルトの名無しさん
2011/05/20(金) 16:18:06.03Rubyだから漏れるわけでもないし、Cで書いたら漏れないわけでもない。
Cで書き換えてメモリリークして鯖落としたら世話ないわな。
速度や柔軟性が気になるなら書き換えたらいいんじゃないでしょうか。
0939デフォルトの名無しさん
2011/05/20(金) 16:20:57.91> 原発が安全なうちは原発を使い続けるエネルギ政策みたいなものか。
時事ネタを絡めた喩え話に見せつつ、よく読むと意味不明だな
0940デフォルトの名無しさん
2011/05/20(金) 16:26:37.40何回もリニューアルするから言語なんか関係ない
0941デフォルトの名無しさん
2011/05/20(金) 16:28:35.870942デフォルトの名無しさん
2011/05/20(金) 16:35:11.69「Acceptable Lisp」「Algolの皮を被ったLisp」と言われることはあっても
さすがにLisp方言は言いすぎ
0943デフォルトの名無しさん
2011/05/20(金) 17:09:45.78RubyにLispとの類似点も相違点も多く持つことを理解している人の間だから
「RubyはLisp方言」というネタが成立するんじゃないか。 あたまだいじょぶ?
0944デフォルトの名無しさん
2011/05/20(金) 19:06:50.27とか半島的な原理主義者が台頭して来そうだwww
0945デフォルトの名無しさん
2011/05/20(金) 19:21:21.78物知らないなら無理しなくていいよ
0946デフォルトの名無しさん
2011/05/20(金) 20:15:35.770947デフォルトの名無しさん
2011/05/20(金) 20:20:22.510948uy
2011/05/20(金) 20:26:12.90念のためいっておくけど
外見の事言ってるわけじゃないからな?
『 今までLispでしかなしえなかったプログラミング技法がRubyでも一応可能 』
それをわかってる奴がLisp方言って言っていたとしか思えない
なぜなら今、俺もRubyをLisp方言と言いたい気分だからwwwwww
0949uy
2011/05/20(金) 20:28:00.54「 RubyはLisp方言 」っつう言葉を頭の片隅にでも覚えといて損はないよwwwwwww
いつかその言葉の意味がわかる時がくるwwwwww
0950デフォルトの名無しさん
2011/05/20(金) 20:33:47.74RubyがLisp方言うんぬんは、単純にRubyユーザのLispコンプレックスじゃね?
0951デフォルトの名無しさん
2011/05/20(金) 20:39:43.66えっ
えっ
えっ
0952デフォルトの名無しさん
2011/05/20(金) 20:44:27.590953uy
2011/05/20(金) 21:04:01.52ふざけたレスに時より織り交ぜるuyのマジレスに気づけない奴は三流
0954デフォルトの名無しさん
2011/05/20(金) 21:26:55.74質問の邪魔になりますので単なる雑談であれば御引き取り願います
0955デフォルトの名無しさん
2011/05/20(金) 21:32:00.37うまくいきませんでした。
アドバイスをリファレンスを見てこのように
解釈しましたがあっていますか?
f.each(Kconv.kconv("\r\n", Kconv::UTF16)){|l|
と同じ意味で、$/のグローバル組み込み変数
に直接代入することもできる。
改行コードを明示したら動くかも。
0956デフォルトの名無しさん
2011/05/20(金) 22:16:51.57バイナリモードでオープンしてみたら?
下記参照のこと
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/39214
0957デフォルトの名無しさん
2011/05/20(金) 23:07:08.75環境よくわからないけど、自分の ruby1.8.7 on Windowsでは以下で動いた
require 'kconv'
lines = open("g.txt", "rb") {|f| f.read}
lines.gsub(/\r\x0\n\x0/, "\n").each_line {|l|
puts Kconv.kconv(l.chomp.gsub(/(.)(.)/, "\\2\\1"), Kconv::SJIS, Kconv::UTF16)
}
引っかかったのはUTF16がUTF16BEとして解釈されてるみたいなところ(テキストはUTF16LEとして作成)
全角コロンに限定して引っかかりそうな箇所はないので、別の問題かもしれんが
0958957
2011/05/20(金) 23:16:29.38UTF16の文字列中に0x0aのコードがあったらまずいので、
lines.each_line("\r\x0\n\x0") {|l|
としないとだめかな
chomp が使えなくなるので改行取り除くのが面倒になるけど
0959デフォルトの名無しさん
2011/05/20(金) 23:29:53.72俺が来る前はここ30も超えてなかったよ
0960デフォルトの名無しさん
2011/05/21(土) 00:24:25.55日本語と同じでRubyもその他言語も使える気でいるだけなんだろうな
0961デフォルトの名無しさん
2011/05/21(土) 00:56:23.12このページの内容を実行しようとしたのですが、require 'tk'で弾かれてしまいました。
そこで、tcl/tkを手動で導入しようとしたのですがどうにも上手くいきません。
ActiveTcl8.5をインストールすると、wishは動作しましたが相変わらずrequire 'tk'は弾かれます。
どのようにすればいいでしょうか。環境変数は設定しました。
0962デフォルトの名無しさん
2011/05/21(土) 00:58:58.15ttp://rubyforge.org/frs/?group_id=167&release_id=45627 の rubyinstaller-1.9.2-p180.exe です。
0963デフォルトの名無しさん
2011/05/21(土) 01:08:35.70ruby1.8.7 on Windowsで動作しました。
ただ、改善前、改善後の両方で試しにBEで保存して
読み込ませたらやっぱりうまくいきませんでした。
うまくいった意味がわかりません・・・
今日は遅いので断念します。
ひとまず、目的は達することができそうなのでありがとうございました。
0964957
2011/05/21(土) 01:29:00.55>>957はUTF-16LE用なので、ファイルがUTF-16BEなら以下のように修正が必要
require 'kconv'
lines = open("g_be.txt", "rb") {|f| f.read}
lines.each_line("\x0\r\x0\n") {|l|
puts Kconv.kconv(l, Kconv::SJIS, Kconv::UTF16).chomp
}
改行は4バイトで表現されるため、変数 l に対してchomp使えない
Shift_JISに変換してから chomp することに注意
0965957
2011/05/21(土) 01:33:14.31それから each_line で処理するほうが簡単だし、普通かも
0966デフォルトの名無しさん
2011/05/21(土) 02:56:44.16httpd.confも設定した
他なに設定ある?
0967デフォルトの名無しさん
2011/05/21(土) 03:10:58.69755にしてみるとか
0968デフォルトの名無しさん
2011/05/21(土) 06:54:28.750969デフォルトの名無しさん
2011/05/21(土) 07:10:30.690970デフォルトの名無しさん
2011/05/21(土) 08:42:43.13>>962
rubynstaller-1.9.*
にはruby/tkが入っていないといううわさが
0971デフォルトの名無しさん
2011/05/21(土) 08:55:28.70確認のために検索してみたけど、tk.rbでもtk.soでも引っかからないから、
1.8.7も1.9.2でもRubyinstallerはそのままじゃruby/tkが使えないみたいだよ。
検索してみたらRuby/tk Kit を入れろとかいう話だけど……。
0972デフォルトの名無しさん
2011/05/21(土) 08:58:30.42使ったこと無いけどRuby/Tk Kitが使えるかも
ただRuby 1.9.1用のやつなので、正しく動くかどうかは分からない
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/47093
0973デフォルトの名無しさん
2011/05/21(土) 10:36:16.73とか文字列操作したとき変更をトラップして
メソッド呼び出したりする機能ないですか
0974デフォルトの名無しさん
2011/05/21(土) 10:39:41.63gsub!するときに変更をトラップしたいならブロック使えばいいんじゃないかしら。
あらゆる変更に対して反応する機能はないと思う。
0975デフォルトの名無しさん
2011/05/21(土) 10:45:23.34ただし、かなり特殊なケースでしか使用されない
あるいはメソッドを上書きしてトラップ動作を挿し込むとか
まずは、トラップが本当に必要か考えたほうがよさそう
0976デフォルトの名無しさん
2011/05/21(土) 10:46:06.64破壊的メソッド全部についてメソッド呼びたいならメソッドレベルでもクラスレベルでもいいけどラッパー作るのが速いかもね。
0977デフォルトの名無しさん
2011/05/21(土) 11:11:25.08irb> def str.gsub!(*args); warn "やめてください!"; self; end
irb> str.gsub!(/う/){'ち'}
やめてください!
irb> puts str
うんこ
0978デフォルトの名無しさん
2011/05/21(土) 11:15:00.46ありがとうございます。TkKitを入れてみた所、
require 'tk'
Tk.mainloop
は動作しましたが、>>961のURLのページのvisualnovel.rbを実行すると、
ttp://gyazo.com/7637d800281bafde7f84d84b3b4388f5.png
というようなエラーが出ました。これはどういう意味でしょうか。
0979デフォルトの名無しさん
2011/05/21(土) 11:15:18.470980デフォルトの名無しさん
2011/05/21(土) 11:17:15.92RubyやったことないならRuby本体の勉強からやっと毛
自転車乗れないうちからラーメンの出前とか無理だろラーメンぶちまけるだろ
0981デフォルトの名無しさん
2011/05/21(土) 11:18:17.05これぐらいの英語も読めないの?
0982デフォルトの名無しさん
2011/05/21(土) 11:21:52.61と、煽るだけだと申し訳ないので、
require "guiutil.rb"
require "scenario.rb"
を
require "./guiutil.rb"
require "./scenario.rb"
に変えてみましょう。1.9.2ではカレントディレクトリはロードパスに入ってない。
0983デフォルトの名無しさん
2011/05/21(土) 11:27:15.67「Rubyではじめるプログラミング」を見てる人にその言い草はちょいとないんじゃないかw
今回の問題は1.8と1.9の互換性のなさが問題になってるだけ。
0984デフォルトの名無しさん
2011/05/21(土) 11:29:10.02カブとかならともかくあれはそれなりに匠の技だと思うのだが
次スレ
立てるには条件がいるので立候補を
0985デフォルトの名無しさん
2011/05/21(土) 12:14:39.67駄目でした。他にも問題があるようです。
ソースの読解と割り切って今回は諦めます。
ありがとうございました。
0986デフォルトの名無しさん
2011/05/21(土) 12:20:39.09カレントディレクトリはちゃんと移動してる?
0987デフォルトの名無しさん
2011/05/21(土) 12:22:33.89エラー内容も変わらなかったの?
0988デフォルトの名無しさん
2011/05/21(土) 12:25:30.73勝手に自己完結して諦めるようじゃRuby人生は暗いかもしれないな。
0989デフォルトの名無しさん
2011/05/21(土) 13:10:32.71おせっかいモード。
rubyinstaller-1.9.2-p180 でvisualnovel.rbを動かすのに必要なこと
1.
Ruby/Tk Kit を導入する
2.
visualnovel.rb の require "nantoka" ってのを全部 require "./nantoka"に変える
3.
guiutil.rb の先頭の $KCODE = "S"を削除
4.
guiutil.rb の60行目ぐらいの
@img0 = TkPhotoImage.new { file(fname) }
を
@img0 = TkPhotoImage.new("file" => fname)
に書き換える
5.
scenario.rb の先頭に #coding: CP932
これで動くようになるよ。
0990デフォルトの名無しさん
2011/05/21(土) 14:31:04.840991デフォルトの名無しさん
2011/05/21(土) 14:33:06.42ちょっとログ遡ってみたらいいんじゃないかな
0992デフォルトの名無しさん
2011/05/21(土) 14:38:49.930993デフォルトの名無しさん
2011/05/21(土) 14:45:05.440994デフォルトの名無しさん
2011/05/21(土) 16:57:02.660995デフォルトの名無しさん
2011/05/21(土) 17:17:58.250996デフォルトの名無しさん
2011/05/21(土) 18:13:46.830997デフォルトの名無しさん
2011/05/21(土) 18:57:27.720998uy
2011/05/21(土) 19:22:20.970999uv
2011/05/21(土) 19:23:28.771000uv
2011/05/21(土) 19:24:10.4910011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。