トップページ⇒tech
1001コメント373KB

Ruby 初心者スレッド Part 50

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2012/07/29(日) 14:26:28.92
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
RoRはスレ違いよ

前スレ
Ruby 初心者スレッド Part 49
http://toro.2ch.net/test/read.cgi/tech/1336507487/

るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/

Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/

逆引きRuby
http://www.namaraii.com/rubytips/
0459デフォルトの名無しさん2012/10/29(月) 03:38:22.72
自分でGPU制御してもいいんだけとZバッファとか面倒くさいからGL使いたい
半透明ポリゴン使うからZ順には並べますがめり込んでる処理とかがですね・・
Rubyじゃかけませんよね
0460デフォルトの名無しさん2012/10/29(月) 05:05:20.97
そういうのはruby openglとかでググった方が早いだろ
0461デフォルトの名無しさん2012/10/29(月) 09:07:20.27
できるかできないかでいえばできる
してもいいししなくてもいい
個人的にはしない方が良いと思う
メリットほとんどないし
0462デフォルトの名無しさん2012/10/30(火) 02:59:06.28
最近使い始めたガチの初心者だけど
htmlを書き換えるプロキシがことごとくできない…
サイトにあるサンプルすら動かないってどういうこと…
0463デフォルトの名無しさん2012/10/30(火) 05:35:06.84
サイトのサンプルを動かせるようになってからプログラミングしましょう。
0464デフォルトの名無しさん2012/10/30(火) 07:39:15.69
プロキシサーバはアプリケーションではなくサーバなので、通常のプログラムではありません(語弊だらけ)

ユーザーが自作のサーバ(しかもプロキシサーバ)を立ち上げることを前提としていないセキュリティソフトが多いので、
とりあえずはそのへんのパーソナルファイアウォールとかアンチウィルスソフトとかの設定を見直し
0465デフォルトの名無しさん2012/10/30(火) 10:35:36.77
>>462
そのサンプルと動作環境を特定してくれないとたいしたこと答えられないよ
0466デフォルトの名無しさん2012/10/30(火) 10:56:55.25
自作のプログラムがアンチウィルスソフトに撃墜されたというのはよくある話だな
04674622012/10/30(火) 11:28:28.05
自分の動作環境は
OS:windows7
Rubyのバージョン:ruby 1.8.7 (2010-12-23 patchlevel 330) [i386-mswin32]
です。

動かそうとしているサンプルは
http://thinkit.co.jp/article/117/3/
にある、11731フォルダに入っているproxy2.rbやproxy3.rbです。
これらのプロキシを動作しながらページを見ることはできるのですが
書き換えだけができていない。という状態です。
また同じフォルダに入っているproxy4.rbはコンテンツフィルタとして問題なく動作しています。
>>464さんのアドバイスは実践しましたが特に変わりませんでした。

本当に初心者な相談で申し訳ないです…こういった書き方で大丈夫でしょうか
0468デフォルトの名無しさん2012/10/30(火) 15:12:17.86
http://gazo.shitao.info/r/i/20121027200426_000.png
0469デフォルトの名無しさん2012/10/30(火) 15:13:24.65
いまいち要領を得ない

結局、そのサイトのスクリプトを(全く修正せず)実行したが、
いくつかのスクリプトは記事のどおりに動いてないってことか?

proxy2.rbを見ると content-type が text/html でないと処理しないみたいだから
そうでないページでテストしたのでは?

04704622012/10/30(火) 15:33:23.62
>>469
試行錯誤で色々試してみたのですが、あなたの言う通りです

content-typeがtext/htmlでないページでテストしていたようです…
次はこれをどのページでも対応できるように考えてみようと思います
0471デフォルトの名無しさん2012/10/30(火) 16:59:13.93
http://codepad.org/N5LwewOA
0472デフォルトの名無しさん2012/10/31(水) 00:03:05.49
proc と Proc.new と lambda と ->(){} に違いはありますか。
またどのように使い分けた方がいいか、指針はありますか。
0473デフォルトの名無しさん2012/10/31(水) 13:58:13.18
WindowsXP ruby1.9.3 RDEver1.1.1 を使っています
「たのしいruby」を片手に勉強してるのですが

def hello
print("hello,ruby.\n")
end
→helloで保存

require "hello"
hello()
→use_helloで保存

これでuse_helloを実行するとエラーが出ます どこがダメなのでしょうか
0474デフォルトの名無しさん2012/10/31(水) 14:25:04.15
たのしいRuby 1.9.2 でぐぐる
0475デフォルトの名無しさん2012/10/31(水) 15:10:26.75
>>474
ありがとうございます
さっそくググってきます
お手数かけました
0476デフォルトの名無しさん2012/10/31(水) 18:47:06.95
エラーメッセージを読めばどこがダメか書いてあるよ
0477デフォルトの名無しさん2012/10/31(水) 18:54:43.20
それはたぶん気のせい
0478デフォルトの名無しさん2012/10/31(水) 21:15:58.28
Rubyのバージョンの問題だな
俺もそれやられたわ
Ruby1.9.2だっけからは$LOAD_PATHにカレントディレクトリが含まれてないからそれだと読み込めない
require './hello'またはrequire_relative 'hello'で解決
0479デフォルトの名無しさん2012/10/31(水) 21:27:54.11
>>472

まず2つに分けると
Proc.new と proc が同じ。
-> と lambda が同じ。

Procのインスタンスを返すという意味ではすべて Proc.new なわけだが、
上段の作り方だとProc#lambda? が false
下段の作り方をしたものは Proc#lambda? が true
になる。
-> は lambda のタイプ量を減らすために構文レベルに組み込んだもの。
(首を捻るとλに見えるはずとmatzは主張しているとかいないとか)

lambda? が true を返すProcは、
* 引数の扱いが厳しい(数が違えばエラー)
* Procのブロック内でreturn すると Proc から return する。

lambda? が false を返すProcは、
* 引数の扱いが緩い(多重代入と同等)
* Procのブロック内でreturnすると、Procを渡されたメソッドからreturnする。

おおまかな使い分けとしては、
(値を返す)無名関数的に使うときは lambda
メソッドにコード片を渡す時は proc
という感じ。
0480デフォルトの名無しさん2012/10/31(水) 22:09:34.72
procって書いてあると、あとでブロックつきメソッドの一部にするのかなーと思う
lambdaって書いてあると、あとで代入してメソッドみたく使うのかなーと思う
Proc.newって書いてあると、原理主義者が出たぞー逃げろーと思う
->って書いてあると、->wwwwwwwwwwwwwwwwwwと思う
0481デフォルトの名無しさん2012/11/01(木) 00:36:06.92
すみません
eachとかのメソッドがどこのクラスに属しているかは
どうやって調べるんですか?
0482デフォルトの名無しさん2012/11/01(木) 00:43:09.68
rubyの場合は関連の無い様々なクラスがそれぞれ独自にeachを実装する
0483デフォルトの名無しさん2012/11/01(木) 01:16:12.10
hoge.each…

という記述があった場合、
p hoge.class
hoge.each…

とかやって、hogeがなにクラスのオブジェクトかを調べて(またはスクリプトから推測して)、そのクラスのマニュアルなりソースなりを読む

p hoge.class
とやってArrayと表示されたらそのhogeはArrayクラスのオブジェクトだからArrayクラスのインスタンスメソッドArray#eachを調べる
もしArrayクラスがINHとかいうクラスを継承してて、Arrayクラスにeachというインスタンスメソッドが定義されてなかった場合はINH#eachも探す
もしArrayクラスがINCとかいうクラスをincludeしてて、Arrayクラスにeachというインスタンスメソッドが定義されてなかった場合はIINC.eachも探す
0484はちみつ餃子 ◆8X2XSCHEME 2012/11/01(木) 01:19:21.90
それがダックタイピング。
アヒルのように鳴くものはアヒルであるし、 each メソッドがあるクラスはコレクションである。
0485デフォルトの名無しさん2012/11/01(木) 01:57:44.23
p hoge.method(:each).source_location
とかやると組み込みクラスじゃなければそれが定義されてるソースがわかる
組み込みクラスだとnilが返ってくるが、そんときはclassを調べて以下のリファレンスとかから探せばいい
http://doc.ruby-lang.org/ja/1.9.3/library/_builtin.html
0486デフォルトの名無しさん2012/11/01(木) 02:23:36.29
クラスを知りたいときには継承関係もいっしょにわかるこれが便利だな
p hoge.class.ancestors
0487デフォルトの名無しさん2012/11/01(木) 02:42:19.57
irbのヒストリ機能は便利なのだが、過去の入力が長くて折り返しがあった場合、
最終行しか編集できないのは、どうにかならないものか。(Windows)
0488デフォルトの名無しさん2012/11/02(金) 13:08:47.37
emobile
0489デフォルトの名無しさん2012/11/02(金) 13:09:17.78
emobile
0490デフォルトの名無しさん2012/11/05(月) 05:21:44.75
MeCabで名詞カウントするプログラム作成しています
しばらく放置していたのですがまた取り掛かります
https://friendpaste.com/425ROVMjubUeEqcJnzYUo8
文字化けしていますがこのプログラムの3行目は
NECESSARY = %w/名詞,サ変接続 名詞,一般 名詞,形容動詞語幹 名詞,固有名詞 名詞,接尾 名詞,副詞可能 接頭詞,名詞接続/
と書いてあります
これらの品詞が連続して出てきた時に一つの単語とみなして欲しいのですがどう付け加えれば良いでしょうか
ド変態でカウントして欲しいのにドと変態で別々でカウントしてしまうのです
47〜49行目は解析したいテキスト、51行目は名詞扱いされる記号を書いています
どなたかよろしくお願いいたします
0491デフォルトの名無しさん2012/11/05(月) 16:37:08.00
>>490
化け化けで見えないからどんな文章で引っかかってるのかわからん
つうか変なとこで苦労するより辞書作った方が早いんじゃね
0492デフォルトの名無しさん2012/11/06(火) 01:39:48.62
>>491
化けている部分は>>490に書いた通りです
47〜49行目に入るテキストは特に決まりがないので辞書作成は無理です
NECESSARYに書いた品詞が2つ以上続いた場合は一単語とみなしてカウントしたいです
例えばテキストに「ド変態と変態」と入れると「ド」は接頭詞,名詞接続で「変態」は名詞,一般なので
"ド"=>1 "変態"=>2 とアウトプットされますが欲しい結果は "ド変態"=>1 "変態"=>1 なんです
0493デフォルトの名無しさん2012/11/06(火) 01:41:07.16
>>492
あと51行目に関しては!や@などの記号が名詞扱いだったので除外するために入れました
それだけなので無視してください
0494デフォルトの名無しさん2012/11/06(火) 03:06:31.84
0を区切りとした数列のグループそれぞれの和を返す、
f([1, 2, 3, 0, 5, 5, 0, 2, 4, 6, 0]) => [6, 10, 12]
となるような関数fを作りなさい (10点)
0495デフォルトの名無しさん2012/11/06(火) 11:55:31.09
>>494
どっかの高校の試験問題?
0496デフォルトの名無しさん2012/11/06(火) 12:17:08.95
でけた
def f(suretu)
 result = []
 sum = 0
 suretu.each do |x|
  sum += x
  if x == 0 then
   result += [sum]
   sum = 0
  end
 end
 return result
end

p f([1,2,3,0,5,5,0,2,4,6,0])
[6, 10, 12]
0497デフォルトの名無しさん2012/11/06(火) 12:58:48.42
def f(lst)
  lst.chunk{|n|
    n == 0 ? :_separator : :num
  }.map{|_, seq|
    seq.inject(0, &:+)
  }
end
0498デフォルトの名無しさん2012/11/06(火) 16:32:16.03
>>497
:_separatorを活用してる人をものすごくひさしぶりに見た
0499デフォルトの名無しさん2012/11/06(火) 20:58:56.25
文字列と同様に、Array#splitみたいなのがあれば便利そうだ
0500デフォルトの名無しさん2012/11/06(火) 20:59:27.22
つーか chunk categorize の使い道を自分では思いつけん。
0501デフォルトの名無しさん2012/11/06(火) 21:16:49.26
今更だけど
>>494て>>490への遠回しな答えでしょ
0502デフォルトの名無しさん2012/11/07(水) 02:00:09.49
exlap.rbを利用しないで

require 'win32ole'
fso = WIN32OLE.new("Scripting.FileSystemObject")
filename = fso.GetAbsolutePathName("test.xls") #フルパス名で記録
xl = WIN32OLE.new("Excel.Application")
xl.Visible = true #Excelが動くのを見えるようにする
if test(?e, filename) #filenameが存在する場合
wb = xl.Workbooks.Open(filename)
else #filenameが存在しないので新規オープン
wb = xl.Workbooks.Add()
end
ss.Range("C2").Select #左2列と上1行を固定
xl.ActiveWindow.FreezePanes = true

だと動くのにexlap.rbを利用して

require 'exlap'
require 'win32ole'
xl = Exlap.new
filename = "test.xls"
wb = xl.book_open filename # ワークブックを開く
ss = wb.first_empty_sheet # 最初の空シートを選択
ss.Name = "論文の要約一欄" # ワークシート名を設定
ss.Range("C2").Select #左2列と上1行を固定
xl.ActiveWindow.FreezePanes = true

だと最後の行でエラーでるのはなぜですか?
0503デフォルトの名無しさん2012/11/07(水) 07:52:29.75
1.8の正規表現で
'<a href="http://www.foo.com/index.html">foo</a><a href="http://www.foo2.com/index.html">foo2</a>' ←HTMLの一部
>'http://www.foo2.com/index.html'
'n1 n2 n3 n4 n5' ←文字列の一部
>'n5'
みたいな結果を得たいのですがどのように書けば出来ますか?
[/<a href=".(+?)">foo2<\/a>/,1]
>http://www.foo.com/index.html">foo</a><a href="http://www.foo2.com/index.html
[/^.+\s(.+?)$/,1]
>n2 n3 n4 n5
となってしまいます
0504デフォルトの名無しさん2012/11/07(水) 10:16:29.74
>502
exlapだから
0505デフォルトの名無しさん2012/11/07(水) 13:09:14.63
>>504
最後の行をどう書けば動きますか?
exlapではセルの固定はできないのでしょうか
0506デフォルトの名無しさん2012/11/07(水) 13:13:10.38
exlap 使っても require 'win32ole' は変わらないんだから
exlap 使う意味なくね?
0507デフォルトの名無しさん2012/11/07(水) 15:04:26.67
>>506
このあともexlapを使うのでwin32oleを組み合わせたいのですが
まずここのエラーの理由がわからないと他のエラーも直せないのです…
0508デフォルトの名無しさん2012/11/07(水) 21:05:03.40
>>503
.*のマッチする範囲が広すぎるので、制限してやるのがポイント
""の内部で"が出現することは無いだろうから [^"]+などとしてやる

htmlsrc = '<a href="http://www.foo.com/index.html">foo</a><a href="http://www.foo2.com/index.html">foo2</a>'
p /<a\s+href="([^"]+)"\s*>\s*foo2\s*<\/a>/.match(htmlsrc)
=> #<MatchData "<a href=\"http://www.foo2.com/index.html\">foo2</a>" 1:"http://www.foo2.com/index.html">

なんでもかんでも正規表現でがんばっていた時期が私にもありました

0509デフォルトの名無しさん2012/11/07(水) 23:08:58.75
>>507
エラーメッセージもなしにエラーの理由なんて分かりません

excel持ってないからあてずっぽうだけど、
xl.objで生のExcel.Applicationオブジェクトに触れるっぽいから
exlapがラップしてないメソッド使う場合は
xl.obj.ActiveWindow.FreezePanes = true
みたいにするんじゃないか?
0510デフォルトの名無しさん2012/11/08(木) 01:32:51.06
>>503
うーん、質問の意味がわからない…
なんでいきなり
'n1 n2 n3 n4 n5' ←文字列の一部
が出てくるのか…
0511デフォルトの名無しさん2012/11/10(土) 17:52:07.72
a[b + c => d] = e
この添字の部分はどういう意味ですか?
0512デフォルトの名無しさん2012/11/10(土) 17:57:08.61
ハッシュ
0513デフォルトの名無しさん2012/11/10(土) 21:08:45.55
シングルトンってオブジェクト一つしかつくれないってことだけど
具体的になイメージがわかない。
例をだして教えてください。
0514デフォルトの名無しさん2012/11/10(土) 21:37:34.04
>>513
おれは、通し番号をつくってる
たとえば、ファイルをひらいたりとじたりしてるとき、操作したファイルの通し番号
0515デフォルトの名無しさん2012/11/10(土) 21:41:06.10
>>513
必要ないものを作ったり使ったりしてはいけません
思いつかないのなら、使おうとしてはいけません
0516デフォルトの名無しさん2012/11/10(土) 21:43:21.95
>>513
Javaには、グローバル変数がない。シングルトンを利用する。
JavaのプログラムをRubyに翻訳するとき、Rubyでもシングルトンを利用できる。
グローバル変数でもできる
0517デフォルトの名無しさん2012/11/10(土) 23:43:05.25
>>513
The earthとか、ひとつしか存在しないものを定義するとき便利。そのシステム中に一定個しか出現しないものにもいい。
0518デフォルトの名無しさん2012/11/10(土) 23:50:03.02
>>515が真理ではある…のだが、地雷踏み抜かないと成長しないというのも真理…かもしれない
本当に必要になったらわかるようになるから忘れろ、ってのもありだけどね
0519デフォルトの名無しさん2012/11/11(日) 01:02:17.84
一つしか作れないことよりも、新規生成したつもりでも既存のオブジェクトとして存在していれば、
素知らぬ顔をしてそのオブジェクトが帰ってくるのが、使い勝手が良い気がする。

複数の場所・タイミングで生成される可能性があるが、どこで作られたとしても、他の場所で使い回したい。みたいな。
生成がコピーによる生成を含めて、一カ所に閉じ込められるなら、要件としてシングルトンを満たしていても、採用する
必要は無いかなと思う。
0520デフォルトの名無しさん2012/11/11(日) 01:16:34.15
GoFでいうFlyweightとSingletonを組み合わせるパターンはしばしば出現する

ファクトリの部分にキャッシュを入れて、
かつファクトリ自体が一つであることを保証しようとすると
勝手にそうなる
0521デフォルトの名無しさん2012/11/11(日) 15:10:16.37
>>499
ホイ

class Array
def arsplit(pattern)
# pattern = regexp, string or number
result = []
result << []
self.flatten.each do |elm|
if pattern === elm
result[-1] != []? result << [] : false
else
result[-1] << elm
end
end
result[-1] == []? result.pop : false
result
end
end
0522デフォルトの名無しさん2012/11/11(日) 15:11:17.94
>>521の続き

[1,2,3,0,5,5,0,2,4,6,0].arsplit(0)
=> [[1,2,3],[5,5],[2,4,6]]
[1,2,3,0,5,5,0,2,4,6,0].arsplit(0).map{|ar| ar.inject(:+)}
=> [6,10,12]

" hoge hage hige ".split("")
=> [" ", " ", " ", "h", "o", "g", "e", " ", " ", "h", "a", "g", "e",
" ", " ", " ", " ", " ", " ", "h", "i", "g", "e", " ", " ", " "]
" hoge hage hige ".split("").arsplit(/&yen;s/)
=> [["h", "o", "g", "e"], ["h", "a", "g", "e"], ["h", "i", "g", "e"]]
0523デフォルトの名無しさん2012/11/11(日) 20:17:57.17
なんか冗長だなぁ…
0524デフォルトの名無しさん2012/11/11(日) 21:36:16.49
[:a,:b,:c,:d,:e,:f][0,3,5]
=> [:a, ;d, ;f]
という感じで複数の添字で引っこ抜くのできないの?


a = [:a,:b,:c,:d,:e,:f]
[a[0], a[3], a[5]]
でもいいけどマンドクセ
0525デフォルトの名無しさん2012/11/11(日) 22:13:42.89
>>524
Array#values_at
0526デフォルトの名無しさん2012/11/11(日) 23:01:11.51
>>522 >>525
values_at とか inject は知らなかった
使えそう

自分←不勉強
0527デフォルトの名無しさん2012/11/13(火) 14:33:49.47
1.8.7 から 1.9 への移行したい。
どこかに注意点のまとめがあったはずなんだけど見つからない。
0528デフォルトの名無しさん2012/11/13(火) 15:13:58.58
自己解決
10 things to be aware of in moving to Ruby 1.9
http://dablog.rubypal.com/2009/1/14/10-things-to-be-aware-of-in-moving-to-ruby-1-9
http://jp.rubyist.net/magazine/?0025-FirstStepRuby191
0529デフォルトの名無しさん2012/11/13(火) 16:31:02.80
http://d.hatena.ne.jp/takehikom/20090129/1233169748
>2行目に「# -*- coding: utf-8 -*-」(マジックコメント)を書きましょう。

1行目に
#coding: utf-8
とか書くのはダメ?
-*- は emacs 用とかじゃなくて
0530デフォルトの名無しさん2012/11/13(火) 18:16:39.38
>>529
おk
0531デフォルトの名無しさん2012/11/13(火) 18:17:00.55
Rubyとして意味はなくても装飾はつけといたほうがよいということになってる
すくなくともEmacsの簡便な動作には必要なものなので、それに相乗りして「なんか余計なの書いてあったから消した」を防ぐ効果が期待できる
Emacsを使ってるか、すくなくとも知っていればこの行を消すことはないはず
0532デフォルトの名無しさん2012/11/13(火) 18:30:45.74
> Rubyとして意味はなくても装飾はつけといたほうがよいということになってる

どこで推奨されてましたっけ?
0533デフォルトの名無しさん2012/11/13(火) 19:41:26.88
>>532
これ、私も知りたい
0534デフォルトの名無しさん2012/11/13(火) 19:46:28.22
本当にRubyにマジックコメントは必須だったのだろうか
どのエンコードか指定するのはもちろん良いとして
書かなくても自動判別できるようにするべきだったのでは
0535デフォルトの名無しさん2012/11/13(火) 19:49:48.31
require 'AutoEnc'
0536デフォルトの名無しさん2012/11/13(火) 20:35:57.67
>>534
1万行あるスクリプトファイルの、最後の行にだけぽつんと日本語が使われてる、とか、
EUCかシフトJISか判別不可能なオクテット列しか現れない、とか、
そういう嫌なケースがいくらも思いつく。
0537デフォルトの名無しさん2012/11/13(火) 21:39:28.19
自動判別は誤爆のほうが多いし、たとえばShift_JIS/CP932とLatin-5あたりの区別は技術的に困難
Latinの中でどのLatinかを判別するのも出現頻度と辞書頼りで根本的に誤爆上等
文字エンコーディングは「最初にファイルを書いた人」が"絶対に知っている"はずなので、
わざわざ電気代と時間をかけて推測して当たりか外れかドキドキするよりもその人に確かな情報を教えてもらうのがコスト的にベスト

テキストファイルは本来、最低限、文字エンコーディング情報をファイル中またはファイル付随で持つべきだった
…そんな「エンコーディング形式」なんて概念が不要だった時代からの遺産だから仕方がないんだけど
05385292012/11/13(火) 21:40:50.28
>>530
ありがと

いま自分のスクリプトをみたら
> #coding: Windows-31J
> $KCODE='s'
とか
> #coding: utf-8
> $KCODE='u'
> # あ utf8
って書いてあったんだけど、
これって移行期を考えて書いてあったのかな?
って他人に聞く話ではないなw

obj.method{ |arg| ... } の arg がブロックローカルに
なることにビビった。
とりあえず、each_with_index とか times あたりが怪しいので
全部調べた。やっぱりヤバイのあった。疲れた。_| ̄|○
0539デフォルトの名無しさん2012/11/13(火) 22:29:56.10
ST2最強や
emacsなんていらんかったんや!
0540デフォルトの名無しさん2012/11/13(火) 23:04:16.16
先端開発版だと、デフォルトのソースエンコーディングがUTF-8になったようですが
2.0はそれで決定なんですかね?
0541デフォルトの名無しさん2012/11/13(火) 23:16:22.22
それと String#bメソッドでエンコーディングをASCII-8BITに出来るそうですが
やっぱりリテラルもあったほうがいいと思うんですけどね
%u() と %U() でUTF-8のリテラル
%b() と %B() でASCII-8BITのリテラル
みたいな

さらに贅沢を言えば、Windows用に\をエスケープしないリテラルが欲しいですな
"""ほげほげ\ほげほげ\ほげほげ\"""的なやつか、%記法で
0542デフォルトの名無しさん2012/11/14(水) 01:28:05.21
つーかいまどきutf-8以外使ってる方が悪いんだから
utf-8使ってる限りは変なコメント書かせずに良きに計らってくれよっていうね
0543デフォルトの名無しさん2012/11/14(水) 12:01:20.43
>テキストファイルは本来、最低限、文字エンコーディング情報をファイル中またはファイル付随で持つべきだった
>…そんな「エンコーディング形式」なんて概念が不要だった時代からの遺産だから仕方がないんだけど

Appleはエロいよ
0544デフォルトの名無しさん2012/11/14(水) 12:33:22.64
Windows Ruby1.9.3p286です
if a then
p "true"
end
って書くと"true"って表示されますが
if a == true then
p "true"
end
って書くと表示されません

Rubyではifのfalseとnil以外は真になるのに撫ぜa==trueが偽になるのでしょうか?
あとifはthenを省略かけるのですが、業界的には省略するのとしないのどっちが当たり前でしょうか?
0545デフォルトの名無しさん2012/11/14(水) 13:10:56.91
a が 1 とか 2 とか bool じゃないならそうなる
要するにあんた Perl に毒され杉だよってこと
0546デフォルトの名無しさん2012/11/14(水) 13:41:29.40
一瞬、「a が 1 とか 2 とか bool 」だったらa==trueがtrueになるのかと思った
あいまいな日本語はよくないぞ
0547デフォルトの名無しさん2012/11/14(水) 13:52:04.10
気付いたけど敢えて直さなかった
今は反省していない
0548デフォルトの名無しさん2012/11/14(水) 14:06:28.19
例えば1とか2のように、aがboolではない場合そうなります
つまり、あなたはPerlの感覚にとらわれすぎているということです
0549デフォルトの名無しさん2012/11/14(水) 14:35:35.53
>>531は結局寝言?
0550デフォルトの名無しさん2012/11/14(水) 14:50:36.89
世の中、Emacs中心に物事が回っている。そういうことだ
0551デフォルトの名無しさん2012/11/14(水) 16:34:00.50
a.rb の中身

# coding: Windows-31J
$KCODE='s'
doc=<<'EOD'
こんにちは
世界
EOD
p doc

a.rb の出力 1.8 では

"こんにちは\n世界\n"

になっていたけど、1.9 では

"こんにちは\r\n世界\r\n"

になったりしますか?

# ブロックパラメーターの確認と修正オワタ 疲れた・・・
0552デフォルトの名無しさん2012/11/14(水) 18:08:16.08
binmode と同じか
0553デフォルトの名無しさん2012/11/14(水) 20:15:14.51
resolv、net-dns、dnsrubyといくつかあるけどどれが主流ですかね
それぞれの違いとかどんなものなのか知りたいのだけど資料もあまり多くはないな
0554デフォルトの名無しさん2012/11/15(木) 08:51:04.61
Ruby 1.9x irbでの環境で実行していて、
16進文字コードと、正規表現の入力チェックに
関して質問したいことが出ました。
"0123456789" =~ /&yen;A&yen;d+&yen;z/u
=> 0
こういう入力チェックをしている状況で、
たとえば先頭の0を16進表記しても
"&yen;x30123456789" =~ /&yen;A&yen;d+&yen;z/u
=> 0
という風になります。
'&yen;x30123456789' =~ /&yen;A&yen;d+&yen;z/u
=> nil
一方、式展開をさせないシングルクォートだと
こうなります。
irb以外の、ブラウザからの
postやgetされた16進表記などの入力値は、
どういう風に処理されるのでしょうか
&yen;x30はrubyで処理するときにはもう既に
展開されて0になっているのか、などです。
それとも処理系やブラウザ依存でしょうか。
0555デフォルトの名無しさん2012/11/15(木) 08:53:12.80
Ruby 1.9x irbでの環境で実行していて、
16進文字コードと、正規表現の入力チェックに
関して質問したいことが出ました。
"0123456789" =~ /\A\d+\z/u
=> 0
こういう入力チェックをしている状況で、
たとえば先頭の0を16進表記しても
"\x30123456789" =~ /\A\d+\z/u
=> 0
という風になります。
'\x30123456789' =~ /\A\d+\z/u
=> nil
一方、式展開をさせないシングルクォートだと
こうなります。
irb以外の、ブラウザからの
postやgetされた16進表記などの入力値は、
どういう風に処理されるのでしょうか
\x30はrubyで処理するときにはもう既に
展開されて0になっているのか、などです。
それとも処理系やブラウザ依存でしょうか。
0556デフォルトの名無しさん2012/11/15(木) 08:56:09.86
>\x30はrubyで処理するときにはもう既に展開されて0になっているのか
いいえ
>処理系や
いいえ
>ブラウザ依存
いいえ
0557デフォルトの名無しさん2012/11/15(木) 08:56:33.08
> &yen;
(マカーだ…)
(マカーが来たわ…)
0558デフォルトの名無しさん2012/11/15(木) 11:32:51.71
rubyでwinndowsのプログラムはつくれますか
■ このスレッドは過去ログ倉庫に格納されています