[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 05/09 21:32 / Filesize : 199 KB / Number-of Response : 759
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Ruby 初心者スレッド Part 31



1 名前:デフォルトの名無しさん mailto:sage [2009/09/17(木) 17:31:07 ]
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。

★注意★ Ruby 1.9.1 は初心者には時期早尚です。初心者には Ruby 1.8.7 を強くお勧めします。
   (理由:現時点では多くの有名ライブラリやアプリが 1.9.1 に未対応であるためです。)
 なお 1.8.7 でも 1.9 系に導入された新機能のいくつかが利用可能なため、1.8.7 で勉強すれば将来スムーズに 1.9 系に移行できるでしょう。

関連スレやURLは>>2-5あたりを見てください。Ruby on Rails の質問は Webプログラミング板の Rails スレへ。

■質問する人へ
質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。
 ・モジュール名やエラーメッセージでググる
 ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/
 ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ
質問には以下を書くこと。へたくそな質問は再提出を要求される。
 ・詳しい内容(「動きません」「うまくできません」では回答しようがない)
 ・エラーメッセージ(自力で訳さずなるべくそのままで)
 ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる))
 ・最終的にやりたいこと(もっとよい方法がある場合が多いので)
回答してくれた人には「ありがとう」のひとことをいってあげて。

■回答する人へ
相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。
それができないならこないこと(だって初心者スレだもん)。
 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

152 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 08:17:24 ]
>>151
だったら>>142の段階で簡単な説明をつけましょう。
なぜMarshalを使ったのかという説明がないため、初心者は理解できないし他の人も混乱するだけです。
ここは初心者のための回答が期待されるところであり、初心者が理解できない回答を書いて「Marshal使ってるオレかっこいい」とひたる場所ではありません。
スレの趣旨を理解しましょう。
151が142と別人だったらごめんね。

153 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 08:32:23 ]
俺もちょっと不思議に思ったからググってああなるほどと思ったクチだが
別に「Marshal使ってるオレかっこいい」じゃないだろw
Ruby本でも書かれるような一般的な小技なんだろ

まあ上でも言われてるが初心者にネタを見抜けってのはきついから
ネタなしかネタだと明らかに分かるよう書いてほしいのはあるが

154 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 08:37:29 ]
>>152
知らんよ
Marshal.load して dump するというのは「はいれつがこぴーできません」に対する FAQ だ
きちんとマニュアルにも書い…書…注釈に小さく書いてある
ttp://www.ruby-lang.org/ja/man/html/Object.html#footnote-1

知っていることも使用することも問題は特段存在しない
Marshal.dump を知っているレベルで for や定数を使うことが「ありえない」から叩かれてるのだろ

155 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 08:39:34 ]
Array や Hash の複製が欲しいときにいつも歯がゆく思うんだけど
なんで Object には deep copy のためのメソッドがないのかな?

サブクラス作るたびに適切にオーバーライドする必要が出て面倒だからだろうか

156 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 08:56:27 ]
>>155
実際にRubyスクリプトとして作るとわかるが循環解決でわけわかめになる
marshal.のソース流用しようとするとT_DATAであっぴゃーになる
dumpしてloadよりも早くてうまくて短い実装があるならMLで発表だ

基本、ディープトラバースして欲しくないらしいぞ
Rubyで提供されてるディープトラバース手段はMarshalだけだ
Marshalできないやつはそもそも複製できんオブジェクトだったということで

157 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 09:23:29 ]
怖いからYAMLにして戻すってのは?w

158 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 09:30:36 ]
>>154
>知っていることも使用することも問題は特段存在しない
問題はそこじゃない。初心者への回答という観点を忘れ、ろくに説明もなしにコードだけ書いて満足していることが問題。

159 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 09:39:28 ]
dump が目的の場合に Marshal ではなく YAML を使うメリットはゼロ

160 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 09:40:25 ]
>>158
説明はされた



161 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 09:56:20 ]
説明しなくても分からなきゃ自分で調べるだろ

162 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 11:16:12 ]
>>160
あとからな。ここでいっているのは、最初の>>142の時点で何の説明もないことだろ。

163 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 11:26:23 ]
どうしてもMarshalに突っかかってるようにしか見えないが
そこは全く問題ないだろ

forの方を言うならまだわかるが

164 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 11:33:22 ]
なんか一人顔真っ赤にして頑張ってる姿が目に浮かぶんだが

>>147>>139,142のようなのは初心者に有害だからやってほしくないと真摯に考えるのなら
その場で「Rubyでforは滅多に使わねえよカスeach使え」
「大文字で始まる識別子は定数だからLとかそんな風に使うなボケ」
「巣に帰れ二度と戻ってくるな」といったツッコミをいれるべき

165 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 11:45:02 ]
Marshal を知らなかったのが悔しくて悔しくて悔しくて悔しくて悔しくてたまらないのだろ自称脱初心者が

166 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 12:02:02 ]
>>164は、>>142での説明がないのに「説明はされた」とほざいている>>160の必死の答弁でした。
160先生の次回作をお楽しみに。

167 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 12:05:26 ]
どっちが必死なんだよw

168 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 12:06:17 ]
マジ顔真っ赤だなあ・・・w
説明がないと思ったなら他の人が説明するもよし
分からなきゃそれを質問するもよし
だろう

169 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 13:40:16 ]
ごめん、俺がMarshalなんて・・・っていったばっかりに、こんなことに(´・ω・`)
ごめんなさい、ごめんなさい。双方とも頭冷やしてくだしあ

170 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 13:44:38 ]
いや、Marshalは正しい解答の一つでしょ
あやまるならforとか定数とか変に使ったことをあやまってくれよw

まあ(ちゃんとした)議論になればいろんな情報が出てくるからいいのかもしれんけどね



171 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 13:58:09 ]
>>142で既にあやまってるなw

172 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 14:23:19 ]
"[hoge]"とか"{hoge}"みたいな文字列の前後の括弧を取り外すのに

"[hoge]".sub(/\[(.+?)\]/){$1}

なんかじゃなくて、なんかもっとスマートな方法はありませんか?

173 名前:172 mailto:sage [2009/09/19(土) 14:26:22 ]
できれば
"[hoge]".split(//)[1...-1].join
も無しの方向で。

174 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 14:28:01 ]
"[hoge]"[1...-1] では駄目と申すか。

175 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 14:36:42 ]
String[] の動作が期待に添っていて、短いのがスマートだと勘違いしているのなら、>>174
そのまんまの正規表現でマッチした部分を取り出す以上のわかりやすいスマートなものはないかと思われ

str =~ /\A[\(\{\[<](.+?)[\)\]\}>]\Z/; $1

開きカッコの対応を取るライブラリは標準では無いので自作してくれ

176 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 14:38:04 ]
というかカッコの対応は正規表現では本来書けない。
とCマガで大昔に読んだけど、最近の拡張しまくりのだと可能かもなー。


177 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 14:48:30 ]
後ろの1文字はchopで毟れるけど、先頭の1文字を毟り取るメソッドっ
てないよな。


178 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 14:51:08 ]
>>177
その手があったか

"[hoge]".chop.reverse.chop.reverse

179 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 14:52:59 ]
>>178
ちょwwwwwプwwwww

180 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 14:54:21 ]
小橋の回転チョップを思い出した



181 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 17:26:08 ]
右のほうをチョップされたら左のほうを差し出せ

182 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 20:20:22 ]
×ほう
○ほお

183 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 20:28:43 ]
>>172
"[hoge]"[/\[(.+?)\]/, 1]
とも書ける。

>>175
Onigurumaならできるはず。

184 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 21:00:13 ]
すんません。このスレどっからドコまで自作自演なんてしょうか?

185 名前:デフォルトの名無しさん [2009/09/19(土) 21:06:16 ]
ココまで俺の自演

186 名前:デフォルトの名無しさん [2009/09/20(日) 05:42:36 ]
require ってなんで複数のライブラリ名を受け付けないんでしょうか。
けっこう不便なんですけど。

187 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 05:58:31 ]
>>186
リファレンスを見たらわかることではないでしょうか?

188 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 06:35:34 ]
書いてはあるが、意図を読み取るのは不可能だと思う

>>186
require が真偽値を返すメソッドとして作られているから、がいちおうの答
複数受け取ったときは真偽値の配列を返すようにしてもいいんだけど、おおむねキモい

each で回してもいいはずなんだけど、そういう人はなぜか見ないね

189 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 06:46:28 ]
かなり初期に一瞬だけ実装されたことがあったと記憶
false が返ってきたほうが便利だということでお流れになったんでなかったかな

190 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 07:50:00 ]
ふとした疑問なのですが、Mechanizeのテストというのはどのように書いたものでしょうか?



191 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 08:22:58 ]
>>190
FakeWeb 1.2.6 API Documentation
fakeweb.rubyforge.org/

FakeWeb使ったらいけるかも…

192 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 11:46:12 ]
test

193 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 11:51:53 ]
>>192
それはRubyで作った2chブラウザのテストですか?

194 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 12:34:04 ]
186です。

>>188
なるほど!たしかにrequireは戻り値がありますね。でも戻り値を気にする場面っていうのはまれなので、
そういう理由で複数の引数を指定できないのはちょっと勿体ないですね。

Railsとかには require_all というのがあるそうなので、戻り値を気にしなくていいから
引数を複数とれるバージョンのrequireを、requireとは別に用意してほしいなと思いました。

195 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 12:34:37 ]
yes,we can

196 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 12:59:39 ]
>>194
なければ自分で作るという選択肢ももとう

197 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 13:01:42 ]
require を再定義すればいい。


198 名前:デフォルトの名無しさん [2009/09/20(日) 16:09:37 ]

..  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄l/ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
                 /\(<●>)/\    /\(<●>)/\
                 /\(<●>)/\  /\(<●>)/\
                /\(<●> )/\  \(<●>)/\
             /        \\(<●>)/\
           /   ,ゝ===く   <●>)/\  
           !  γ      `ヾ,_   \
          │ :く(   r,J三;ヾ   )>   \
          l    =; {三●;= }  ,=ニ    l
           ヽ   ゝ≡三=イ       /     <>>1ワロタw
            ヽ       .,,,.    /.|
               ヽ  'ぐ'''''''' /    / ト,
             ヽ.  ヾ''" /  /  |ヽ
             ,./ヽ  `´  /    ./  \、
      -‐ '''"  ̄ /  :| \,,,__,,,, /    /    | `'''‐- 、.._\


199 名前:デフォルトの名無しさん [2009/09/20(日) 16:17:33 ]
eRubyとMySQLをつかって、DBに写真のアップをしたいのだけど

<form action="syasinhenkou.rhtml" method="post" enctype="multipart/form-data">
<input type="file" name="syasin" size="30" maxlength="100">
<input type="hidden" name="id" value="<%= cgi["id"] %>">
<input type="submit" value="登録">
</form>

ってかんじで、ファイルを登録用のページにおくりたい

sql = "UPDATE rireki SET"
sql += " syasin = '" + cgi["syasin"] + "'"
sql += " WHERE id = '" + cgi["id"] + "'"
sql += ";"
my.query(sql)

受け側はこんな感じで書いてみた。
IDのところに変な文字列が入ってアップデートされないいのだけど
enctype="multipart/form-data"のオプションのせいだよね。
ファイルを送るときは、このオプションがいるみたいだけど
どうしたらいいかな?

DB側のidがキーで文字列、syasinがBLOB型でやってる
これでDBにファイルが送れるのかもよくわからんのだけど
教えてくれるとありがたいです。

200 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 17:25:56 ]
>>199
idの所が変になるんじゃなくて、cgi['syashin']以降が変になってるはず
blobとかのバイナリオブジェクトは文字列の連結でSQLを作れない
プリペアードステートメントとかを使え



201 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 17:56:53 ]
blobじゃなくても普通プリペアードステートメント使うとこだろ

202 名前:デフォルトの名無しさん [2009/09/20(日) 18:41:08 ]
何で空配列がかえってくんねん
空文字列ちゃうん?

>> "a".split(/a/)
=> []
>> "aa".split(/a/)
=> []
>> "ab".split(/a/)
=> ["", "b"]


203 名前:デフォルトの名無しさん [2009/09/20(日) 18:43:58 ]
空配列に空文字列がつっこまれるべきちゃうん?

[""]

204 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 18:57:36 ]
>>194
%w(lib0 lib1 lib2).each{|feat| require feat}
でいいじゃん

205 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 19:12:10 ]
>>202-203
新リファレンスマニュアルから抜粋

> instance method String#split
> split(sep = $/, limit = 0)

> 第 2 引数 limit は以下のいずれかです。

> limit == 0
> 分割個数制限はなしで、配列末尾の空文字列を取り除く
> limit < 0
> 分割個数の制限はなし

「配列末尾の空文字列を」いくつあっても全部「取り除く」ってことなんだろうな多分
それがデフォルトの動作である理由は知らん

206 名前:デフォルトの名無しさん [2009/09/20(日) 19:23:06 ]
> 「配列末尾の空文字列を」いくつあっても全部「取り除く」
こんなん知らへんかったがな。おーきに

理由は実装上の都合なんやろなぁ

207 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 19:33:54 ]
Perlがそうだったから。
Perlがそうだった理由は知らん。

208 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 22:23:37 ]
>>206
web上では関西弁禁止だよ?知らないな?他の方言ならいいけど


209 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 22:53:07 ]
>>199
syasinじゃなくてphotoとかpictureつかえ

210 名前:デフォルトの名無しさん [2009/09/20(日) 23:01:59 ]
1.9からThreadにかわりFiberというのが入ったそうですが、どうやって使うものでしょうか。
ぐぐってみたけど、上級者向けの説明しかなくてさっぱりでした。
例:Fiberはいわゆるコルーチンです。←コルーチンが何かわからないからさっぱり理解できない説明

高校生でもわかるような説明をどなたかお願いできますか。



211 名前:デフォルトの名無しさん [2009/09/20(日) 23:13:30 ]
>>200-201
Ruby/MySQLではプリペアードステートメントつかえない?

MySQL/Rubyじゃないとだめ?

212 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 23:17:15 ]
>>210
Threadなくなったわけじゃないし、上級者(地雷踏み?)向けの機能だから忘れていいよ
否定的なこと言われてるし
ttp://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-dev/31601

213 名前:デフォルトの名無しさん mailto:sage [2009/09/20(日) 23:58:30 ]
>>211
こんなのもある
d.hatena.ne.jp/tmtms/20090729/1249183003

214 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 00:21:13 ]
>>211
出来るみたいだけど使ってないんで確認はしてない
ttp://planet.mysql.com/entry/?id=18088
stmt = my.prepare("select ?,?")
stmt.execute 123, "abc"
stmt.fetch # => [123, "abc"]

215 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 00:43:01 ]
refe2簡単に入れたいけどパッケージとかある?

216 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 00:58:24 ]
そんなに面倒なことはない気がするんだが

217 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 01:37:34 ]
>>213-214
プリペアードステートメントは
MySQL/Rubyをいれて解決した

あとは、ファイルのアップだけど
st = my.prepare("UPDATE rireki SET syasin = ? WHERE id = ?")
st.execute(cgi["syasin"].read,cgi["id"].read)
res = st.fetch

って書いてみたところ、MySQLのほうから

2053
Attempt to read a row while there is no result set associated with the statement

って怒られた・・・・BLOBだとだめなんか?
こんなところで詰まってるようだと、表示にもてまどりそう
っていうか、表示できるのか?


218 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 03:42:41 ]
MySQLの本でも買えよ・・・またはRails使うか

219 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 04:02:16 ]
>>217
エラーメッセージの意味はわかる?
SQL文を実行したけどresult setが返されなかった、なのに行を読み込もうとしてエラーになっている、という意味。
SQLをみるとupdate文を実行しているよね。だからresult setは返ってこない。なのに st.fetch しようとしているからエラーになっているだけ。
これがselect文だったらfetchできるけど。

220 名前:デフォルトの名無しさん [2009/09/21(月) 11:47:02 ]
>>219
SERECTしたらはいってた〜〜!!
ありがと〜〜!!!

表示のほうも、相談にのってください
格納したデータを

<img src="data:image/jpg;base64,/9j/4AAQ....中略.....">

って感じには表示できるのですが
これだとIE6では見れない。
エンドユーザにFF入れろとか言えないし
IEでも表示させる方法ありますかね?



221 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 12:24:04 ]
もはやRuby関係なし

222 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 12:41:30 ]
どうみてもHTMLの質問です
動的か静的かは用途次第だけど、素直にURL割り当てろって

223 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 12:54:14 ]
pc12.2ch.net/test/read.cgi/tech/1251609039/
スレ立てるまでもない質問はここで 100匹目
pc12.2ch.net/test/read.cgi/tech/1054813207/
【漏れは】猫でもわかる質問スレ【猫以下です】

224 名前:デフォルトの名無しさん [2009/09/21(月) 13:26:50 ]
>>220
アホだなぁ。
base64デコードして出力すればいいだろが。
Content-Typeヘッダも適切に吐いてね。

あ、スレチだね。

225 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 13:51:04 ]
>>220
さすがにスレ違いすぎるけど。
src="data:..." は IE6 ではサポートされてない。これはブラウザを変えてもらう以外に方法はない。
だから data: を使わずすなおに画像を別ファイルにしておこう。

あるいは example.com/cgi/jpg.cgi?base64=.....(base64文字列)....
が画像ファイルを返すようなCGIを用意して、
src="data:..." をすべて src="example.com/cgi/jpg.cgi?base64=...." に変換するとか。

226 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 18:26:18 ]
アホです。すんません。
>>224-225
URLの?以降の文字列はENV['QUERY_STRING']で受け取れるはず
そいつをデコードして元に戻すって考えて

#!/usr/local/bin/ruby
require 'base64'
file = ENV['QUERY_STRING']
out = decode64(file)
print "Content-Disposition: filename=\"syasin.jpg\"\n"
print "Content-type:image/jpge\n\n"
print out

って言う具合に組んでみた。
700バイトとかの小さいファイルだとうまく行くんだけど、
8kぐらいのファイルになると表示できなくなるな

そもそも、CGI呼べてないっぽい
これもRubyのはなじしゃないよね(涙

227 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 18:59:21 ]
アホなりに解決しました。

どうもbase64のコードが長すぎでうまく行かなかったっぽいので
idを指定してDBから画像を引っ張って垂れ流すだけのCGIを作成しました。
idなら長くても50桁とか行かんので、これで解決!!
いろいろ、ご迷惑おかけしました。
ヒント本当に助かりました。ありがとうございます。

228 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 19:05:28 ]
>>226
>700バイトとかの小さいファイルだとうまく行くんだけど、
>8kぐらいのファイルになると表示できなくなるな

ENV['QUERY_STRING'] をそのままつかってるのが問題なんじゃないかな。
(つまりENV['QUERY_STRING']に %2F や %2B が含まれているんだろう。)
URLエンコードされているからデコードしないと。
require 'cgi'
qstr = ENV['QUERY_STRING']
out = decode64(CGI.unescape(qstr || ""))
詳しくは
ttp://blog.s21g.com/articles/319
をみてくれ。


229 名前:デフォルトの名無しさん [2009/09/21(月) 20:00:17 ]
いやいや、というか
そんな巨大なデータをクエリ文字列としてURIで渡すなよ、と。

230 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 20:02:48 ]
URLの長さ上限は、普及しているブラウザでは、一番短かいIEが
2083バイトだったかね。





231 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 20:04:53 ]
一発でroot奪取されかねない素敵コードだな

232 名前:デフォルトの名無しさん mailto:sage [2009/09/21(月) 21:06:05 ]
なんかワロタw

233 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 14:17:19 ]
ルヴィーっておもしろいですか?ルヴィー使ってる友達が、開発者が日本人だから誇らしいと言ってました

234 名前:デフォルトの名無しさん [2009/09/22(火) 14:23:06 ]
>>233
またお前か。
もういいから自分の巣に帰れ!

235 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 15:31:24 ]
URIのやり取りでトンネル掘り出すアフォとか出てきそうだな。

236 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 19:39:02 ]
$0とか__FILE__とかARGFとか・・・
最初から備わってる変数が色々ありますけど、どうしてこんなに表記法に統一性が無いのですか?

237 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 20:31:24 ]
変数

238 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 21:03:37 ]
>>236
Larry Wallに聞いてくれ

239 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 21:08:08 ]
Larryにそんなことを聞いたら
Perlの文法が言語学的にどう優れているのかの講義が始まるぞ
そしてハッシュの頭になぜ%が付くのかを聞いたらPerl信者になること確実だからやめておけ

240 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 21:28:45 ]
$0はsh
__FILE__はC
ARGFはARGVの発展系、ARGVはCのmain関数の引数argvが元になっている
どれもこれもunix+Cを知ってれば、なじみの物ばかりだ



241 名前:236 mailto:sage [2009/09/22(火) 22:02:34 ]
ありがとうございます。他言語からの習慣に習って付けてるんですね。
でもARGFはどうして定数なんでしょうか?Cだとargvなんかは変数ですよね。
__FILE__は擬似変数で$0はグローバル変数と全部違うけど、どれもグローバルにアクセスしたいものだから
統一してしまえばいいのに、と思ったのです。
ここら辺の、定数やグローバル変数、擬似変数といった使い分けは実装内部のことが分かるような人じゃないと理解できないのでしょうか。

242 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 22:06:29 ]
ARGFは大文字で始まる
__FILE__は違う


243 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 22:08:10 ]
定数だったNILが変数nilになったりしてるから絶対的な境界は無いんだろう
ARGFをグローバル変数にするのはおかしな話だが、何でといわれても説明できん

244 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 22:23:44 ]
ARGFはARGVの発展系、ARGVが大文字でグローバルなのは多分awkが元
他の言語もそれに習ってるからrubyもそれに習っているんだろう

245 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 22:27:10 ]
>>241
どこかでMatzが
「特殊変数周りの仕様はPerlから引きずった。今では後悔している」
的なことを書いてたような

いずれにせよ、一貫性がないという意見には同意

246 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 22:41:46 ]
Perlからの脱却
ってのがRubyの精神じゃなかったっけ…

247 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 22:44:06 ]
Ruby2.0では特殊変数は一新するんじゃない?

248 名前:デフォルトの名無しさん [2009/09/22(火) 23:22:18 ]
以下のような感じでセッションにアクセスしているのですが
リロードするたびにセッションIDが変わってしまいうまく数値を取り出せないです。
どなたか助言をよろしくおねがいします。

def GetSession()
cgi = CGI.new
session_option = {"tmpdir" => "./"}
session = CGI::Session.new(cgi, session_option)
return session
end

249 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 23:43:38 ]
色々と突っ込みたい所はあるが、まずはtmpdirにセッション情報が書き込まれたファイルが存在しているかどうかを確認するんだ。

250 名前:デフォルトの名無しさん [2009/09/22(火) 23:48:07 ]
ファイルが作成されているのが確認できました。
リロードするたびに増えていきます。
サーバー側の問題でしょうか?



251 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 23:58:52 ]
ようし、じゃあ次はFirefoxにFirebugを入れてcookieの受信と送信ができているか確認するんだ。
CGIモジュールの仕様はよく知らんが、きっとセッションIDをクッキーに入れて送ってきてくれているはずだぞ!

252 名前:デフォルトの名無しさん [2009/09/23(水) 00:15:52 ]
クッキーのリストが反応しないみたいです、他のサイトだとExpiresの項目にsessionというのが出てきています。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<199KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef