Ruby について Part 3
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGRuby Home Page
http://www.ruby-lang.org/ja/
<前スレ>
Rubyについて Part 2
http://pc3.2ch.net/test/read.cgi/tech/1028906179/
<過去スレ>
Rubyについて
http://pc3.2ch.net/test/read.cgi/tech/1012096319/
0253デフォルトの名無しさん
NGNGjperl なら通用するかもしれない。と後ろ向きなアドバイス。
0254デフォルトの名無しさん
NGNG0255デフォルトの名無しさん
NGNG安全で使いやすいのは、
BASIC認証? ruby-shadow? ruby-password?
それともこんな程度のセキュリティでOKなの?
http://www5e.biglobe.ne.jp/~access_r/hp/cgi/rb_light.html
0256デフォルトの名無しさん
NGNG思いっきりスレ違いやんけ!
0257デフォルトの名無しさん
NGNGruby-password は統計的に弱過ぎるパスワードをつける不注意から守る。
BASIC認証は盗聴されない前提で比較的低頻度の総あたり攻撃から守る。
盗聴の危険が高い回線なら、SSLでBASIC認証を使い、
ruby-password で検査するくらいで適当。それでも弱いと思うなら、
BASIC認証を使わず、POSTでより長いパスワードを提供するしかない。
その場合はクッキーなどでセッションを維持することになる。
しかし通常のBBSならSSLでBASIC認証を使えば十分だと思うし、
SSLでなくてもBASIC認証だけでも構わないと思う。
0258_
NGNG0259デフォルトの名無しさん
NGNG他にやり方があるかもしらんが
class Mona
@@val
def val=(v)
@@val = v
end
def val
@@val
end
end
0260デフォルトの名無しさん
NGNGクラス変数をインスタンスメソッドで変更するのはキモくないか?
class Mona
@@val
def self.val=(v)
@@val = v
end
def self.val
@@val
end
end
0261デフォルトの名無しさん
NGNG確かにキモいと思いつつ書いてた。
0262初心者
NGNG文字から文字コードを得るのって、どうすればいいですか?
0263デフォルトの名無しさん
NGNG文字というのがStringオブジェクトだとして
Integer#chr
String#[](index)
を使う
p 64.chr # '@'
p '@'[0] # 64
0264初心者
NGNG0265デフォルトの名無しさん
NGNG0266デフォルトの名無しさん
NGNG0267デフォルトの名無しさん
NGNG一瞬どういうネタだ? と思ったよ(w
0268デフォルトの名無しさん
NGNG0269デフォルトの名無しさん
NGNG0270デフォルトの名無しさん
NGNG0271デフォルトの名無しさん
NGNGprintf('<p class="%s">%d<p>', ck, num)
print '<input name="'+name+'"' 〜
上記のような処理を下記のように全部書き直したら、
表示に6秒ほどかかってたのが3秒ほどになって、ちょっと感動しますた。
print '<p class="',ck,'">',num.to_s,'<p>'
print '<input name="',name,'"' 〜
文字列の連結とか時間がかかるんだなぁ。
0272デフォルトの名無しさん
NGNG前者のprintfはいちいち書式指定文字列をパースしているから。
前者のprint は余計な文字列オブジェクトを生成しているから。
0273デフォルトの名無しさん
NGNG前者だと演算子のたびに新しい文字列オブジェクトを生成するからね。
ま、ふつうは
print %Q(<p class="#{ck}">#{num}<p>)
print %Q(<input name="#{name}"〜)
とか書くわけだが。
0274デフォルトの名無しさん
NGNG実際には DB への問い合わせを行っているものとします。
DB の host 名や user や password などの設定を /etc/personrc に記述したい場合、
Person クラスへこの設定をくべるには、どのような設計にするのが良いでしょうか?
>>273
"#{num}" は新しい String オブジェクトを生成しないんでしょうか?
それとも生成してしまう?
0275デフォルトの名無しさん
NGNG> "#{num}" は新しい String オブジェクトを生成しないんでしょうか?
> それとも生成してしまう?
そこだけは新しいStringオブジェクトを生成する。num.to_sと同じ。
今までそんな文字列はどこにも存在しないんだから当然。
0276デフォルトの名無しさん
NGNG「くべる」って薪かよ。
すべてのPersonオブジェクトは単一のDBを共有するわけ?
最初にコネクションを張るときに読めばいいんじゃないの。
""ってだけでも常に新しいStringオブジェクトを生成するわけだが、
"#{num}"は(1.8では)""<<num.to_sと等価。
0277デフォルトの名無しさん
NGNGインタビュー:Rubyの まつもとゆきひろ に聞け!
http://slashdot.jp/articles/03/03/07/0413248.shtml?topic=86
0278デフォルトの名無しさん
NGNG0279デフォルトの名無しさん
NGNGttp://www.asahi.com/kansai/030308a.html
0280デフォルトの名無しさん
NGNG0281デフォルトの名無しさん
NGNG0283デフォルトの名無しさん
NGNG> でも,なんでもお好きな名前に自由に読み換えてください.
ってなんだかなあ…
0284デフォルトの名無しさん
NGNG0285デフォルトの名無しさん
NGNGという点で、Perl や Python に完全に負けてると思う。
Larry Wall や Tim Peters みたいにシャレの効いた言い回しのできる人がいない。
これけっこう重要なことだと思う。
0286デフォルトの名無しさん
NGNGしかし、日本人のプログラマでユーモアのセンスがある人って見たことない。
0287デフォルトの名無しさん
NGNGnamazuの高林さんてどう?
ユーモアのセンスありすぎだと思うけど、
ちょっと方向性が違うか。
0288デフォルトの名無しさん
NGNG0289デフォルトの名無しさん
NGNGもうシャレが通じないっていうか...。
0290デフォルトの名無しさん
NGNG>--- 僕の前にBugはない。
>--- 僕の後ろにBugはできる。
っての俺好きだなぁ。
初めて見たときニヤリとしたよ。
0291デフォルトの名無しさん
NGNG0292デフォルトの名無しさん
NGNG人によっていろいろ解釈があるみたい
0293デフォルトの名無しさん
NGNG0294デフォルトの名無しさん
NGNG0295デフォルトの名無しさん
NGNGそういう化け方は見たことないが
0296デフォルトの名無しさん
NGNGん、どんな解釈?
0297デフォルトの名無しさん
NGNG僕の書いたコードにバグはないが、後から続く者がバグを産む。
僕が書く前にはバグはないが、僕が書いた後にはバグを産む。
0298デフォルトの名無しさん
NGNG0299デフォルトの名無しさん
NGNGhttp://sourceforge.net/mailarchive/message.php?msg_id=1349966
化けるので引用
> 「バグばっかりつくってごめんなさい」
> というのが、いちばん単純な解釈でしょうが、
> 謝ることができるということの裏には、
> 実際にコードを書いて働いていることや、
> 誤りを自ら認める心の広さが表現されているように
> 思えます。あるいは、「Bugはない」というのは
> 「コードそのものがない」ということを意味するとすれば、
> 開拓者魂の表現のようにも見えます。
> いずれにせよ、Bugの理由を、「コードは一般的にBugを
> 含むものだ」と「単に中田さんの技量の問題だ」の
> どちらの立場で解釈するかが、最初の分れ道ですね。
0300デフォルトの名無しさん
NGNG>299 を攻めてるんじゃなくてそのリンク先の人ね。
笑えりゃOK、笑えなければポイでいいと思うんだがなぁ。
0301デフォルトの名無しさん
NGNGo = open('|gzip -c > a','r+')
o.print 'aaaaaaaaaaaaaaaaaaaaaa'
o.close
それをファイルに書き出さないで、メモリに読み込む方法はありますか?
↓こういうイメージです(このコードは動かない)
o = open('|gzip -c','r+')
o.print 'aaaaaaaaaaaaaaaaaaaaaa'
data = o.read
o.close
リファレンスのIO.popenのサンプルで、catを使ってそういう
ことをやっているので、なにか方法がありそうなのですが。
0302デフォルトの名無しさん
NGNG「stableでなければ生きていけない。unstableでなければ生きてる意味がない」
ってのが好き
0303デフォルトの名無しさん
NGNG_人
ノ⌒ 丿 うんこ〜♪
_/ ::(
/ :::::::\ うんこ〜♪
( :::::::;;;;;;;)_ うんこ〜♪
\_―― ̄ ̄::::::::::\
\ ノ ̄ ::::::::::::::::::::::) /うんこ〜♪
\( ::::::::::::::;;;;;;;;;;;;人/
/ ̄――――― ̄ ̄::::::::\
( ● \__/::●:::::::::::::)
\__::::::::::\/;;;;;;;;;;;;;;;;;;;;;;ノ
うんこ〜♪
0304301
NGNG検索してたら解決方法がわかりました。
(こんなことに一日かかってしまった…)
0305デフォルトの名無しさん
NGNGhttp://www6.big.or.jp/~beyond/bbsnews/
0306デフォルトの名無しさん
NGNGhttp://qwerqwer1234.hp.infoseek.co.jp/mudah/mudah.swf?Target=%82%E9%82%D1%82%AB%82%BF%82%B3%82%F1
0307デフォルトの名無しさん
NGNG次の変形はどうやるの?
str = "123"
#=> "1,2,3"
0308デフォルトの名無しさん
NGNGp "123".gsub(/(.)(?=.)/, "\\1,")
p "123".split(//).join(",")
0309デフォルトの名無しさん
NGNGこんなのはどう?
p "123".scan(/\d/).join(',')
0310デフォルトの名無しさん
NGNG0311デフォルトの名無しさん
NGNGこんなのにウケてしまうのが、自分で悔しい。
0312デフォルトの名無しさん
NGNGアハハ
0313デフォルトの名無しさん
NGNG0314デフォルトの名無しさん
NGNG0315デフォルトの名無しさん
NGNG0316デフォルトの名無しさん
NGNG0317デフォルトの名無しさん
NGNG標準化する必要がないです。
0318デフォルトの名無しさん
NGNG0319デフォルトの名無しさん
NGNG0320デフォルトの名無しさん
NGNGこれまでのPythonがダメダメだったんでいいんでないかい
0321デフォルトの名無しさん
NGNGえ?そうなん?
どのへんがパクられたのか、どっかでまとめられてたりするかな?
0322デフォルトの名無しさん
NGNGをすっきり書くには
foo ||= 7
が定石だけど,
foo = (foo ? foo.to_i : 7)
はなんかうまく書けないでしょうか?
foo を 3 回も書くのがいやすぎ.
-s オプションお手軽で好きなんだけど…
0323デフォルトの名無しさん
NGNG0324デフォルトの名無しさん
NGNGPerl じゃなくてよかったと思えるね。
0325デフォルトの名無しさん
NGNGうようなオペレータがかつて議論にのぼったことがあったような気がするが、
どうなったんだろう。
最近追い掛けてないのでage.
0326デフォルトの名無しさん
NGNG立ち消え状態だと思うが、こんなのはどうよ?
module Kernel
def ifnil?
self
end
end
class NilClass
def ifnil?
yield
end
end
catch(:nil) {
hoge.foo.ifnil?{throw :nil}.bar.ifnil?{throw :nil}.zot
}
0327デフォルトの名無しさん
NGNGこんなのは?
class Object
BLACKHOLE = Object.new
def BLACKHOLE.to_s() "()" end
def BLACKHOLE.method_missing(*x,&y) self end
def default(v=BLACKHOLE,&b) self or BLACKHOLE end
def and() default end
end
class NilClass
def default(v=BLACKHOLE,&b) block_given? ? yield : v end
end
puts ARGV.shift.and.hex
puts ARGV.shift.default("0").hex
0328デフォルトの名無しさん
NGNG> def default(v=BLACKHOLE,&b) self or BLACKHOLE end
def default(v=BLACKHOLE,&b) self or v end
0329デフォルトの名無しさん
NGNG0330デフォルトの名無しさん
NGNG用途は、XML文章を操作するというのかなんというかDOMやらSAX
が使いたいんです(まだどっちがどうなのかよくわかっていませんが)。
配布する環境はUNIXなんですが、開発はWindowsなんで、
どちらでも使えるとうれしいです。
0331デフォルトの名無しさん
NGNG余裕があるなら xmlscan をいじってみると面白いと思う。
0332デフォルトの名無しさん
NGNGオープンソースって同一機能の複数実装が魅力なわけ。
標準なんてあるわけない。
もしも標準なんてあってそこを精密爆撃で狙われたら
標準が消滅しちゃうでしょ。
そのリスクを回避するために一見無駄な冗長性を持たせてるわけ。
0333デフォルトの名無しさん
NGNGRuby であるテキストファイル中の特定の語句を置換したいとします。
例: いぬ いぬ いぬ ねこ -> いぬ いぬ いぬ いぬ (ねこをいぬに置換)
(要するに sed みたいなことがやりたい)
単純に File.open して each_line で置換したい語句があるかどうか調べていき、
マッチしない場合にはそのままの行を、マッチした場合には置換した行を一時ファイルに書き出し、
最終的に一時ファイルを元のファイルに rename する、ということを考えました。
この例だと一時ファイルを使ってしまいますが、一時ファイルを使わずに each_line で
見ていきながら、マッチする部分を直接書き換える、ということってできますか?
もしあれば、コード例を示していただけると助かります。
0334デフォルトの名無しさん
NGNGよくわからんが、ruby の -i オプションを使えば解決されるような話?
0335デフォルトの名無しさん
NGNG[-0-9]
のような表現って多用しませんか?
いまさら
[\-0-9]
と書けって言われても、って感じ。
0336デフォルトの名無しさん
NGNGデカいファイルを突っ込むとメモリ馬鹿食いするけどこんなの。
TEXTFILE = 'inuneko.txt'
if (s = IO.readlines(TEXTFILE).map!{|line| gsub(/ねこ/, 'いぬ')})
open(TEXTFILE, 'w').print(s)
end
0337336
NGNGif (s = IO.readlines(TEXTFILE).map!{|line| gsub(/ねこ/, 'いぬ')}) # ×
if (s = IO.read(TEXTFILE).gsub!(/ねこ/m, 'いぬ')) # ○
0338デフォルトの名無しさん
NGNGこれならデカいファイルでも安心。
どんな場合でも書いちゃうし非 unix 環境でちゃんと動くかは知らないけど。
File.open(file) { |src|
File.unlink(file)
File.open(file, 'w') { |dest|
src.each_line { |line|
dest << line.gsub(/ねこ/, 'いぬ') }}}
0339デフォルトの名無しさん
NGNGじゃだめ?
0340デフォルトの名無しさん
NGNG正直いやん
0341デフォルトの名無しさん
NGNGtext = <<-AHYA
fooTEXTboo
AHYA
hoge = '\1000yen'
p text.sub(/TEXT/, hoge)
このスクリプトで出力が
foo\1000yenboo\n
となるのを期待してるのですが\1が消えてしまいます。
消えないようにするにはどうしたらいいのでしょうか?
0342デフォルトの名無しさん
NGNG0343デフォルトの名無しさん
NGNGperlとかでも多用されているもんな。
0344341
NGNGそんな一休さんみたいな答えじゃなくて他の案をお願いします・゚・(ノД`)
0345デフォルトの名無しさん
NGNG0346デフォルトの名無しさん
NGNGtext.sub(/TEXT/) {hoge}
0348デフォルトの名無しさん
NGNGhoge = '\\\\1000yen'
0349デフォルトの名無しさん
NGNG誰かがまとめてたの見たことあるよ
本家マニュアルサイトの「落し穴」あたりをあたってみては
0350デフォルトの名無しさん
NGNGそれは直感的にわかりにくい。
>>346 のほうが新婦瑠でわかりやすいから、暗号的なプログラムを書きたい
のでないかぎり、ブロックを使ったほうが良いと思う。
0351デフォルトの名無しさん
NGNGPOSIX regex で許されてる表現はそのまま通って欲しいな。
0352not333な初心者
NGNGの解説キボウ。お願いします。
なぜ、これなら、でかいファイルでもメモリを浪費しないんでしょうか?
2行目のunlinkが関係してるようなんですが。。
openしたブロックの中でunlinkって??
■ このスレッドは過去ログ倉庫に格納されています