[表示 : 全て 最新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を読め」でいいので、叩かない&怖がらせない。
 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。
 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。

116 名前:デムパゆんゆん [2009/09/18(金) 19:28:29 ]
どうせならLinuxでやろうぜ。

117 名前:見習い ◆YG1xRh8M6Ffb mailto:sage [2009/09/18(金) 19:32:36 ]
もっていません

118 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 19:34:49 ]
>>115
通じてないと思うのならあやまる前に通じさせる努力をしてくれよw
何がわからなくて何を知りたいのか、回答者が推測しなければならないような
質問はよくない、というかかなり損してるよ

119 名前:見習い ◆YG1xRh8M6Ffb mailto:sage [2009/09/18(金) 19:36:36 ]
>>29さんはいませんか?
いらっしゃいましたら方法をおしえてください


120 名前:見習い ◆YG1xRh8M6Ffb mailto:sage [2009/09/18(金) 20:01:57 ]
>>118
こんな感じでよろしいでしょうか

OSはwindows xp sp3 32bitです
rubyはActiveScriptRubyの最新版1.8.7をインストールしています
デスクトップのショートカットアイコンを”変更”したいのですがその方法がわかりません
自分なりにいろいろがんばってみたのですが力不足のようです
もし知っている方がいらっしゃいましたらご教授いただければ幸いです
ご指導の程よろしくお願い致します

121 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 20:17:33 ]
>>120
その話はWindows板で回答待ちじゃないのか?
>>113-114の流れはおかしくないと思うが、直後に>>115,120となる意味が分からん

122 名前:見習い ◆YG1xRh8M6Ffb mailto:sage [2009/09/18(金) 20:22:41 ]
もういいです


123 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 20:23:53 ]
>120
Windows板で回答待ちの質問をこっちに持ってくるなよ
向こうの住人に失礼だぞ

124 名前:見習い ◆YG1xRh8M6Ffb mailto:sage [2009/09/18(金) 20:24:29 ]
流れがどうのこうの
聞いてるんだから
可能か不可能かくらいは
こたえてくれても
いいんじゃないの




125 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 20:27:32 ]
RubyプログラムでWindowsでのショートカットのアイコンを変更したいというんだったら
WIN32APIでも叩けば「可能かもしれない」。
俺はやったこと無いから知らないけど、詳しい人が答えてくれるかもね。

Rubyのショートカットアイコンを変更したいという話だったら「可能」だけど
スレ違いだから出て行けって言われてる。

126 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 20:29:36 ]
>>113
>スタートメニューのすべてのプログラムのRuby1.8の中にruby consoleがあります
>でも作業フォルダにはこれと同じファイルがありません
>意味がわからないのですが・・・

意味が分からないのはキミの質問のほうだな。
Windowsがないから正確なことはわかんないけど、
「スタートメニュー」> 「すべてのプログラム」>「Ruby 1.8」
の中に「ruby console」というのがある、ということがいいたいのか。
しかし「作業フォルダにはこれと同じファイルがありません」という部分は意味がわからん。
再提出!


127 名前:見習い ◆YG1xRh8M6Ffb mailto:sage [2009/09/18(金) 20:29:54 ]
アイコン変えるくらいで
えらいたいそうなことやね
あきらめますわ
ありがとう

128 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 20:39:34 ]
1. まずruby consoleってのを削除する
2. パスを通す
3. 普通にコマンドプロンプトを使う

129 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 20:45:02 ]
アイコンとかどうでもいい事にこだわるのはマカ。
ルビー使いたいなら教祖も使ってるデビアン推奨。

130 名前:デフォルトの名無しさん [2009/09/18(金) 20:45:18 ]
アイコンを右クリック→プロパティ→カスタマイズ→アイコンの変更→好きなのに換える

131 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 20:46:54 ]
ショートカットの場合は「カスタマイズ」を「ショートカット」に読み替えてね。

132 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 20:48:45 ]
あれは許容範囲を超えたダサさだからなあ
GRScript18.dllのリソースを書き変えたらいいんかな
真面目な話、アイコンをartonに送るというのが真の解決法だ

133 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 21:09:34 ]
初心者さんがだんだんグレて来ててワロタ

134 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 21:29:21 ]
そろそろ悪態をつくころだね



135 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 22:20:56 ]
>>130-131
アドバタイズショートカットなめんな

136 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 23:19:34 ]
ひまなおっさんの釣りなんじゃないかと思えてきた。
日本語がおかしいし、いくら初心者でもこれはないだろ。

あるいはリアルに小学生なのか。

137 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 23:25:08 ]
[ [1,2,3],[4,5,6],[7,8,9] ] → [ [1,4,3],[4,10,6],[7,16,9] ]

↑のように、配列の配列の2番目の要素だけ2倍にしたい
ときはどのように描けば短くかけますか?



138 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 23:29:04 ]
まずはうんざりするくらいまで each 使い倒せ

Enumerable や Array の各メソッド内部でどう each が使われているか推測できるようになれば
いちいち他人に聞かなくても一発で書き下せる
特殊動作のメソッドだけ聞きかじりで使ってても応用できないぞ

139 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 23:36:38 ]
>>137
とてもRubyらしく書くとこうなる

L = [ [1,2,3],[4,5,6],[7,8,9] ]
for e in L do e[1] = e[1] * 2 end

140 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 23:38:18 ]
Array と String と Enumerable と Hash の4つはメソッド一覧をどっかに書き出しておくといい
この 4つのクラスのメソッドの動作が頭に思い浮かべられるようになると、
Ruby スクリプトを書くのにかかる時間が一気に半分以下になる

てか、それこそ each じゃ駄目なん? めっちゃ短いと思うんだけど

arr = [ [1,2,3],[4,5,6],[7,8,9] ]
arr.each{|a| a[1] *=2}
p arr

141 名前:デフォルトの名無しさん mailto:sage [2009/09/18(金) 23:50:05 ]
>>139,140
非破壊的にやるとすればどうする?

142 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 00:01:54 ]
>>141
L1 = [ [1,2,3],[4,5,6],[7,8,9] ]
L2 = Marshal.load(Marshal.dump(L1))
for e in L2 do e[1] *= 2 end

>>139ともども本当にごめんなさい

143 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 00:01:59 ]
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所

144 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 00:01:59 ]
arr2 = arr.map{|a| b = a.dup; b[1] *=2; b}



145 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 00:28:11 ]
>>142,144
なるほど。ありがとう。


146 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 00:33:02 ]
>>139>>142
方言わらたw

147 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 00:52:29 ]
>>142
初心者スレではそういうのやってほしくないなあ。冗談を冗談と見抜けないのが初心者なんだから。
しかも冗談としてもつまんないし。

148 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 06:34:59 ]
Marshalとかw さすうがに冗談も大概にしろよw

149 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 07:11:56 ]
>>148
君の釣りはつまらない
Marshal.dump+load は dup の shallow copy で済む今回は牛刀だが手段としては妥当だ

150 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 07:48:50 ]
>>149
なぜ、Marshalを使う必要があるかわからん。dupですむなら、それにこしたことないのではないか

151 名前:デフォルトの名無しさん mailto:sage [2009/09/19(土) 08:07:50 ]
dup では「済まない」から>>144ではわざわざ1つネストした map の中で dup してるのだろ
dup で済むというのは

arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
arr2 = arr.dup
arr2.each{|a| a[1] *=2}
p arr

これが [[1, 2, 3], [4, 5, 6], [7, 8, 9]] を表示するようなことを言う

ネストした配列のような参照だらけのオブジェクトの完全な複製を作る手段は
プリミティブなオブジェクトを見つけるまで深く潜って dup することだが
これをほぼどんなオブジェクトに対しても自動で(結果として)行う一般的な手法が dump して load
事前情報(配列の配列の要素がプリミティブである)を利用して決め打ちで手動で行ったのが>>144

そんだけ
どちらも特段変ではない
初心者向けでないとして突っ込みが入ったのは for と定数のほうだな

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 ]
そんなに面倒なことはない気がするんだが






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

前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