Ruby 初心者スレッド Part 30at TECH
Ruby 初心者スレッド Part 30 - 暇つぶし2ch408:名無し学生
09/08/25 10:35:40
Visual Basic の課題で困っております。
誰かお答えください。本当に助けてください。

1.Visual Basicの関数で数値を文字に直すCStr()とStr()の違いについて

2.戻り値の違いが確認できる方法を考え、戻り値の違いについて実際に確認し、
  その確認方法と違いを具体的に述べよ。
注意:実際にやったことと、確認した違いを簡潔かつ具体的に書くこと。

3.下記の計算結果などから、Visual Basicで計算できる数値の桁数について考察をまとめ、
  何故そのような制限があるかについて理由を答えよ
  1) 48 x 100 - 81
  2) 12 ÷ 9.3 x 247
  3) 0.2 - 12 ÷ 69
  4) -12 ÷ 100 + 100

409:デフォルトの名無しさん
09/08/25 10:38:32
VBなら「自分が興味のあるソフトを作りなさい」くらいの課題を出せよ
どこの学校だ?

410:デフォルトの名無しさん
09/08/25 10:44:04
そのような曖昧なテーマの課題を出す学校もどうかと思うが。

411:デフォルトの名無しさん
09/08/25 10:48:19
>>409-410
他のスレでもマルチポストしてる奴をいちいち相手にするな。

412:デフォルトの名無しさん
09/08/25 11:22:05
これってRuby勉強の手助けになりますか?
それはさておき、読んで損のない本でしょうか?

「まつもとゆきひろ コードの世界」は全プログラマ必読の名著
URLリンク(v.japan.cnet.com)

413:デフォルトの名無しさん
09/08/25 11:26:27
> これってRuby勉強の手助けになりますか?
いや特には
> それはさておき、読んで損のない本でしょうか?
お金の余ってる人向け
お金が余ってるなら読んでもよい
お金が余ってないならもっと他に読む本があるはず

414:デフォルトの名無しさん
09/08/25 11:37:32
>>413
そうですか。
今回はパスしておきます。

415:デフォルトの名無しさん
09/08/25 13:49:37
どんだけ金ないんだよ

416:デフォルトの名無しさん
09/08/25 14:09:29
ここは学生スレ

417:デフォルトの名無しさん
09/08/25 15:47:13
s = Path::changeext($0, ".cfg")
t = Path.new(s)
t.changeext(".xml") #==> Path::changeext(s, ".xml")

みたいな使い方をしたいんですけど
クラスメソッドとインスタンスメソッドのoverloadなんて無理?

# Pathはただの例です

418:デフォルトの名無しさん
09/08/25 15:57:06
インスタンスメソッドの中でクラスメソッドを呼ぶとかそういう話ではなく?

class Path
 def change_ext(sfx)
  return self.class.change_ext(@str, sfx)
 end
 def self.change_ext(str, sfx)
  …
 end
end


419:デフォルトの名無しさん
09/08/25 19:00:25
>>417
Path::changeext() と t.changeext() はそれぞれ別のメソッドが呼ばれます。

なおその例で「overload」というのは誤解を招くので使わない方がいいです。
質問するなら、
「クラスメソッドとインスタンスメソッドで同じメソッド名を使うことってできる?」
ぐらいにしておけば、overloadという単語を使わなくても済んだでしょう。


420:デフォルトの名無しさん
09/08/25 19:30:18
てか、クラスメソッドの起動で :: を使う人は Ruby ではまずいない
Ruby では :: の右に来るのは定数で、 . の右に来るのはメソッドだから

Ruby ではクラスも定数として格納されてるから、

irb> CONST = 1
irb> CONST = 2
 (irb)2: warning: already initialized constant CONST
irb> class Foo; end
irb> Foo = 2
 (irb):4: warning: already initialized constant Foo

ネストしたクラスは Foo::Bar::Baz と :: で連結するし、
あるクラス Hoge の定数 CONST は :: で連結して Hoge::CONST と綴る

Ruby ではインスタンスメソッドは一般クラスから作られたオブジェクトに属するメソッドだから、
特定のクラスのオブジェクトというかインスタンス s に属するインスタンスメソッド mes は
特定のクラスのインスタンス s に . でメソッドを繋げて s.mes と書くし、
Ruby では スクリプト中に存在するアクセス可能なクラスは Class(または Module)クラスのインスタンスだから、

irb> p "str".class
String
irb> p String.class
Class

クラス S に属するメソッドつまりクラスメソッド moge は
Class クラスのインスタンス S に . でメソッドを繋げて S.moge と表現する

421:デフォルトの名無しさん
09/08/25 21:18:28
ちょっとはじめたばっかりでしつもんなんですけど
Array.newと[]やHash.newと{}のどっちがいいとかありますか?
始めたばっかりでくせをつけておくなら今のうちかなとおもいましたので
こうやるやるべきとかのってるページとかありますか?

422:デフォルトの名無しさん
09/08/25 21:28:09
機能的には同じなので好きなほう使え

[] や {} のリテラル形式は短い
短いということはそれだけで大きな価値がある
ただし hoge#[] メソッド や ブロック {} と一瞬区別がつけにくいことがありうる
一瞬でも読み下しに詰まる可能性があるということはそれだけでマイナスだ

好きなほう使え

423:デフォルトの名無しさん
09/08/25 21:51:25
おいおい同じじゃないだろ
Hash.new、Array.newはデフォルト値やサイズを設定することができる

オレ的には[]{}を基本に使って、
デフォルト値やサイズを指定したい場合はnewを使うのがおすすめかな

424:デフォルトの名無しさん
09/08/25 21:54:24
そんなこと言ったらリテラルな時点で別物だ
そういう区別をして欲しいわけではないだろう

425:デフォルトの名無しさん
09/08/25 22:01:13
機能的な違いのあるなしと一緒にするな

426:デフォルトの名無しさん
09/08/25 22:01:17
別に {} でもデフォルト値は設定できるよ

h = {}
h.default = 0
p h[:a] #=> 0

マニュアルに書いてあるようなことを知りたいんじゃないと思われ

427:デフォルトの名無しさん
09/08/25 22:14:48
h.default←別のメソッド引っ張り出してきてどうする

質問者の潜在的なニーズがなんであれ間違いを教えるのはよくない
両者は「同じ」と書いてあったから「違いがある」と訂正しただけ
それ以上の意味はない

428:デフォルトの名無しさん
09/08/26 08:28:49
RubyではHTMLのエスケープってどこでやるべき?

429:デフォルトの名無しさん
09/08/26 08:38:43
データ出力時

ただしこれには条件がある
「データ出力者全員が自力でエスケープをしなければならないと認識していること」
これが未来に守られる見込みが全くないのなら、
現在のデータ保管者が親代わりにエスケープするのも致し方ない

430:デフォルトの名無しさん
09/08/26 09:08:39
>>428
template

431:デフォルトの名無しさん
09/08/26 10:09:57
入力時でないことは確か

432:デフォルトの名無しさん
09/08/26 11:42:17
>>420
おまえの文章長いよ
もっと要点を絞って簡潔に書こうぜ

433:デフォルトの名無しさん
09/08/26 12:43:55
>>420を蒸し返すと、

a.some_method(1, "str")
a::some_method(1, "str")

上の2つのスタイルのうち、いずれを使うかは趣味の問題です。
ただしクラスメソッドを呼ぶ場合を除いては第1のスタイルが主流です。
筆者はクラスメソッドに対しても一貫して第1のスタイルを用います。

- 初めてのRubyより -

わざわざリリースマネージャが「~を除いては」と書くくらいだから、
「まずいない」ということはないだろう。

434:デフォルトの名無しさん
09/08/26 12:56:37
実際の観測として「まずいない」と思うが…
そんな大量にコード見てるわけじゃないが、:: でメソッド呼んだ人は今年一度も見てないぞ
>>417が初めてな気がする

435:デフォルトの名無しさん
09/08/26 13:10:14
大文字で始まるメソッドは、括弧を省略すると::で呼び出せない。
そういう細かい条件を考えると、メソッド呼び出しは.で統一するのが無難。

436:デフォルトの名無しさん
09/08/26 18:45:58
すいませんが、質問させて頂きます。
xmpfilterを使いたいのですが、どうも上手く行きません。
OSはWindowsVista , ruby1.8.6です。

gem install rcodetools  でインストールした後

-------------test.rb--
#! ruby -Ks
p 2+3 # =>
--------------------

上記のファイルに対して

xmpfilter test.rb

を実行すると

-e:1: unterminated string meets end of file
-e:1: warning: useless use of a literal in void context

というエラーが出て、実行してくれません。
空のファイルに対しても、どれも同じエラーが出ます。
どうすれば良いかを教えて下さい。


437:デフォルトの名無しさん
09/08/26 19:18:45
2+3 の後ろに全角空白が入ってるんだけどこれは意図したものかな

438:436
09/08/26 19:24:51
>>437
すいません。全角空白は私の不注意でした。
しかし、これを削っても同じエラーが出てしまいます。

ちなみに、xmpfilterを通さなければtest.rbはきちんと実行することが出来ます。


439:デフォルトの名無しさん
09/08/26 19:34:46
自動生成された \bin\xmpfilter がまずいような気もする
もしかして cygwin か?

440:436
09/08/26 19:51:21
>>439
いえ、cygwinではなくコマンドプロンプトです。
rcodetoolsが自動生成するファイルがどこにあるのか分からないのですが、
どこに作成するのか教えて頂けないでしょうか?


441:デフォルトの名無しさん
09/08/26 20:29:59
>>440
gem contents GEM名
あとバージョンはruby -v結果のコピペで
それとたぶんOneClickInstallerだと思うんだけどそれも明記するとありがたい

442:デフォルトの名無しさん
09/08/26 21:03:14
>>441
申し訳ありません。gem contents rcodetoolsとするとファイル構成は出てくるのですが
そこからどこに一時ファイルが作られるのか私には分かりませんでした。

rubyのバージョンは
ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32] です。
URLリンク(www.garbagecollect.jp)
↑からダウンロードしてきました。



443:デフォルトの名無しさん
09/08/26 23:59:43
ルビーでGUIは作れるのでしょうか?

444:デフォルトの名無しさん
09/08/27 00:02:08
URLリンク(www.google.com)

445:436
09/08/27 00:08:38
すいません、多分解決したみたいです。
ruby 1.8.7 , ruby1.9.1 とverを上げてxmpfilterを実行してみたところ無事に実行出来ました。

お騒がせして申し訳ありませんでした。
返信をして下さった方、どうもありがとうございました。


446:デフォルトの名無しさん
09/08/27 21:17:22
データを突っ込んで行ってそれがあるかないかを高速に判断する場合
ハッシュがベストですか?

list["a"] = true

if list["a"] then ...

で動くんですけどtrueってデータもペアで格納されるのがなんとなく無駄な飢餓

447:デフォルトの名無しさん
09/08/27 21:50:35
とりあえず Hash 使えということになってる
Hash で問題がある場合にのみ他のめんどくさい手段を検討する

あと true はいつどこで呼んでもオブジェクト ID が 2 で固定なので無駄も何もねえよ

448:デフォルトの名無しさん
09/08/28 09:53:51
Hashでいいと思う
標準添付のSet(集合)なんてHashで実装されてるし。

449:デフォルトの名無しさん
09/08/28 11:52:17
こっち↓と

if point > 0
 result['WIN'] += 1
elsif point < 0
 result['LOSE]' += 1
else
 result['DRAW'] += 1
end

こっち↓

win_or_lose = point > 0 ? 'WIN'  \
       : point < 0 ? 'LOSE' \
       :        'DRAW'

result[win_or_lose] += 1

どちらがいいと思いますか?

450:デフォルトの名無しさん
09/08/28 11:54:52
>>449
前者。

451:デフォルトの名無しさん
09/08/28 12:10:04
>>450


452:デフォルトの名無しさん
09/08/28 12:17:21
三項演算子は好きこのんで使うものじゃないね

result = if flag then true else false end
どうしても一行で書きたい時にこれよりはマシって程度


453:デフォルトの名無しさん
09/08/28 12:35:54
>>449
case
when point > 0 then result['WIN'] += 1
when point == 0 then result['DRAW'] += 1
when point < 0 then result['LOSE'] += 1
end


454:デフォルトの名無しさん
09/08/28 12:42:10
前どっかで書いたが、条件演算子は便利なんだからどんどん使ってよい
そして、どんどん書き換えろ

条件演算子の中で整頓改行したり ( ) でネストしたり ; つけたりするのは禁止
条件演算子の状態に固執するのはただのアホ
条件演算子の 9 割は最終的には長い条件分岐に書き換えられてしまう
だったらプロトタイプは早くてうまくてやっすいのにしたほうがいいってもんだ

455:デフォルトの名無しさん
09/08/28 12:48:24
Rubyの三項演算子の平均寿命は1日だそうな

456:デフォルトの名無しさん
09/08/28 12:49:23
Rubyの場合ifが式だからifで書けばいいと思うんだけど。
可読性もそのほうが高いと思わない?

457:デフォルトの名無しさん
09/08/28 12:52:28
if のほうがわかりやすそうな気がするときと、
条件演算子のほうがわかりやすそうな気がするときの
2つがあるような気がする

極めて単純な見栄えの問題
他の言語では三項演算子だけが値を返すから入れ替えが効かないけど
Rubyは動作自体は結局一緒だから
(パースの受け方は違うかもしれない)

458:デフォルトの名無しさん
09/08/28 12:55:17
>>453
case文も使えるんだ。
なるほど。

459:デフォルトの名無しさん
09/08/28 13:03:54
case文の意味なくないか?w

460:デフォルトの名無しさん
09/08/28 13:08:40
空 case の例としてはわりと妥当だと思う
else raise の余地がないのがやや弱いがわかりやすかろう

461:デフォルトの名無しさん
09/08/28 13:13:41
このへんは cond をかっちょええと思うかわかりにくくなったと思うかという話になるような気がしないでもない

462:デフォルトの名無しさん
09/08/28 13:16:27
result[ case
        when point > 0 then 'WIN'
        when point == 0 then 'DRAW'
        when point < 0 then 'LOSE'
    end ] += 1

だろJK

463:デフォルトの名無しさん
09/08/28 13:17:36
>>460
その空case自体に疑問
条件に重複する部分がないのを暗示してる、みたいなニュアンス?

464:デフォルトの名無しさん
09/08/28 15:30:39
コードゴルファー登場↓

465:デフォルトの名無しさん
09/08/28 16:12:32
わいは猿や!

466:デフォルトの名無しさん
09/08/28 16:24:10
result[point / 0.0] += 1

467:466
09/08/28 16:25:20
point = 0 のときダメだった。スマン

468:デフォルトの名無しさん
09/08/28 16:25:42
result[{1=>'WIN',0=>'DRAW',-1=>'LOSE'}[point<=>0]]+=1

469:デフォルトの名無しさん
09/08/28 16:30:16
result[%w[DRAW WIN LOSE][point<=>0]]+=1

470:デフォルトの名無しさん
09/08/28 18:07:31
配列で要素が重複していたときに重複している要素の値が知りたいのですが
簡単な方法はないでしょうか?
[1,2,3,4,5,6,3]であれば3が知りたいです
重複は1種類が1回だけしていると仮定してかまいません


471:デフォルトの名無しさん
09/08/28 18:30:43
ありそうでないんだよね、そういう機能
重複は全部消去するのが基本
「配列の構成要素を uniq で決定し、それと同じ値を持つ最初の場所を探してその要素を配列から消す」
という手順でやるとこうなる

arr = [1, 2, 3, 4, 5, 6, 3]
arr.uniq.each{|e| arr.delete_at(arr.index(e))}
p arr

[3]

これだと arr が失われてしまうので他の人の案待つか事前に複製でもしとけ

472:デフォルトの名無しさん
09/08/28 19:17:38
a1 = ary.sort
a2 = a1.uniq
i = 0
a1.find_all {|v|
 if v.eql? a2[i]
  i += 1
  false
 else
  true
 end
}

またselectかと言われそうだけどこのスレでは三回目


473:デフォルトの名無しさん
09/08/28 19:28:17
h = {}
p aryfind {|a| h[a] || !(h[a] = true)}


474:デフォルトの名無しさん
09/08/28 19:30:14
ary.find

475:デフォルトの名無しさん
09/08/28 21:12:35
>>470

arr = [1,2,3,4,5,6,3]
hash = {}
hash.default = 0
arr.each {|x| hash[x] += 1 }
p hash.keys.select {|k| hash[k] > 1 }

476:470
09/08/28 21:24:24
みなさん色々な案ありがとうございます
参考にさせてもらいます!

477:デフォルトの名無しさん
09/08/29 07:31:27
One Click InstallerだかをWindowsで入れると、

 RUBYOPT=-rubygems

だかを環境変数に設定するというような余計な(親切な)ことをしてくれるわけですが、
これって、

 require "rubygems"

する必要がなくなるわけですよね?

他の環境などで同じようなこと(RUBYOPT=-rubygems) している人っていますか?
やっぱり、require "rubygems"をソース内に書いた方がいいものですかね?

478:デフォルトの名無しさん
09/08/29 09:13:38
require "rubygems" は必ず書かなければならない
俺が RUBYOPT を嫌いな理由の一つ
わざわざ可搬性下げて何をしたいのか

479:デフォルトの名無しさん
09/08/29 09:45:31
あとから広まって事実上の標準になる予定だったんだよ

480:デフォルトの名無しさん
09/08/29 09:51:04
別に RUBYOPT は rubygems 用の機能じゃねえが、1.9 で組み込みになったから
RUBYOPT=-rubygems に関してはもう無用の長物だな

481:デフォルトの名無しさん
09/08/29 10:20:24
>>470
ary.group_by{|e|e}.to_a.select{|e|e[1].size>1}.map(&:first)
とか
ary.sort.each_cons(2).select{|x,y|x==y}.map(&:first).uniq
とか

482:デフォルトの名無しさん
09/08/29 10:55:34
>>481
selectするならto_aはいらん
と思ったが、multiple values for a block parameter (2 for 1)とい
う警告が何度も出るのか

ary.group_by{|e|e}.select{|e,l|l.size>1}.map(&:first)


483:デフォルトの名無しさん
09/08/29 10:56:49
>>478
> 俺が RUBYOPT を嫌いな理由の一つ
「江戸の仇を長崎で討つ」ってやつか

484:デフォルトの名無しさん
09/08/29 11:15:11
そもそもrubygemsが嫌い

485:sage
09/08/30 00:10:43
同一のテーブル構造をもつデータベースAとBがあって、
データベースの内容を比較したいです。

どちらのデータベースもSQLiteのファイルです。

ActiveRecordというのを使うのが簡単そうなのですが、
可能なのでしょうか?

というのは調べてみるとActiveRecordでは、
データベースへの接続(ActiveRecord::Base.establish_connection)とか、
レコードの検索を、クラスメソッドで操作しています。

となると、上記のように同一クラスから
別々のデータベースへ接続するインスタンスを作成して、
インスタンス経由で操作するという使い方はできないように見えます。


486:デフォルトの名無しさん
09/08/30 01:08:00
>>485
SQLite3::Database.new(file)で両方のデータベース開いて
テーブル毎にレコードの比較した方が楽な気がする

487:sage
09/08/30 01:38:36
>>486
回答ありがとうございます。

SQL書かずにActiveRecordでできたら楽勝!
と思っていたのでなんとかならないかなーと。

488:名無しさん@そうだ選挙に行こう
09/08/30 07:42:50
初めまして。

質問です。

今やってるプロジェクトが、以前、rubyのMVCフレームワークによって書かれました。
その開発した方が、/public_html/.htaccessで何らかの設定をしました。
今回、/public_html/manage/配下にphpのMVCフレームワークを使用して開発することに
なったのですが、/manage/.htaccessで設定しても親ディレクトリの.htaccessの影響を受けて
/manage/配下のファイルにアクセスしても、404になってしまいます。
/public_html/.htaccessの内容も分からず、なるだけ触りたくないのですが、
サブディレクトリの.htaccessで、親ディレクトリの.htaccessの影響を全く受けないようにすることは可能でしょうか。

お忙しいところ、すみません。
よろしくお願いします。

489:名無しさん@そうだ選挙に行こう
09/08/30 08:28:56
Ruby 関係ねえ
.htaccess の書式勉強しろ

490:名無しさん@そうだ選挙に行こう
09/08/30 08:36:08
Ruby関係ないからスレチ

> .htaccessの内容も分からず、なるだけ触りたくないのですが、

それを晒さないと。というより、せめて自分で読んでみないと。

491:488
09/08/30 10:00:38
ご返信ありがとうございます。
サーバーを見てみたのですが、
/public_html/には、.htaccessがありませんでした。
ただ、404の設定がしてあるので、どこかでそのような設定がなされているものと思います。
/public_html/配下には、rubyのRailsで開発してあるようです。

/public_html/manage/には、今回のPHP開発に必要なcakephpのMVCフレームワークが設定してあります。
その.htaccessは、
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule ^$ app/webroot/ [L]
RewriteRule (.*) app/webroot/$1 [L]
</IfModule>
となっています。
例えば、URLリンク(domain.com)にアクセスした場合は、
/public_html/manage/app/webroot/css/layout.cssのファイルが読み込まれる設定にしてあります。
外のサーバー(public_htmlにrubyで設計したファイルが置いてないもの)で試したらちゃんと読み込まれていたので、/public_html/manage/配下は正しく設定してあるはずです。
しかし、URLリンク(domain.com)にアクセスすると、404が返ってきます。

/public_html/には、rubyのMVCフレームワークで設計されたファイルがたくさんあり、
私はrubyを知らないので、何かしらの設定がなっているはずなのですが、どこでどうなっているのか分かりません。

たぶん、URLリンク(domain.com)にアクセスしても、
cakephpのシステムは読み込まれず、元々のRuby Railsのシステムで処理されていると思います。
本来、URLリンク(domain.com) にアクセスすると処理されるのですが、
これも404に行きます。
でも、URLリンク(domain.com) とアクセスすると処理されます。

もし何かご存知でしたら、教えて頂けないでしょうか。
よろしくお願い致します。

492:名無しさん@そうだ選挙に行こう
09/08/30 11:01:02
可能

493:名無しさん@そうだ選挙に行こう
09/08/30 11:05:08
/public_html/.htaccess

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule manage\/$ manage/app/webroot/ [L]
RewriteRule manage\/(.*) manage/app/webroot/$1 [L]
</IfModule>


494:名無しさん@そうだ選挙に行こう
09/08/30 11:12:58
てか Ruby 全く関係ねーということがわかってなお居座るのってなんなの頭悪いの

495:名無しさん@そうだ選挙に行こう
09/08/30 12:43:36
>>494
自分で正しいことをしていると思っているイタイタイプ
周りでは陰で嫌われているのに気づかないタイプ

496:名無しさん@そうだ選挙に行こう
09/08/30 12:45:40
自分の目的が果たされれば何をしても構わないと思ってるタイプ

497:sage
09/08/30 12:54:11
>>485です。

ActiveRecordで、ひとつのモデルで
複数のデータベースに接続するという
使い方ができるか、あきらめきれずにさらにググったところ、
magic_multi_connectionsというgemが見つかりました。

Magic-MultiConnections:
URLリンク(magicmodels.rubyforge.org)

とはいえ、ActiveRecordが当初想定している使い方
ではないということがはっきりしました。

他にちょうどいいO/Rマッパってないですか?


498:名無しさん@そうだ選挙に行こう
09/08/30 12:59:58
ソウダネ、IDナイカラ、ダレガダレダカサッパリワカラナイネ。

499:名無しさん@そうだ選挙に行こう
09/08/30 13:02:53
>>497
自作のORe真っ裸ならあるけど

500:名無しさん@そうだ選挙に行こう
09/08/30 15:59:01
>>491
すげーなー。
そのhtaccessファイルの中身の何がおかしいのかもわからない・調べられないのに、
Webアプリケーションを開発しようなんて。

恐ろしくて使いたくないぜ。

501:名無しさん@そうだ選挙に行こう
09/08/30 16:29:07
>>497
テーブルの差異を調べるプログラム位、数十分で書けるだろ
二度と使わないかもしれないORMの調査に無駄な時間を費すの?

dbs = [file1,file2].map {|fn| SQLite3::Database.new(fn) }
dbs[0].tables.each do |table| # tablesなんてメソッドがあるとして
 results = dbs.map {|db| db.execute("select * from #{table}") }
 # results を比較
 :
end

502:名無しさん@そうだ選挙に行こう
09/08/30 16:37:20
SQLを書きたくないんじゃなくて
書けないの間違いだろうな。。

503:名無しさん@そうだ選挙に行こう
09/08/30 16:42:22
クエリに文字列埋め込みステキです

504:名無しさん@そうだ選挙に行こう
09/08/30 16:43:44
何を言ってるの
ユーザーがSQLを直接発行するだなんて悪手中の悪手じゃないか

適当にうまくやるよボタンを押すだけで内部でSQLが組み立てられて
結果のデータのみがユーザーに返ってくるというのが正しいありかただろう

505:名無しさん@そうだ選挙に行こう
09/08/30 16:48:36
>>504
そうなんだよねえ
結局SQLを書かせなければならないことになって深く絶望したわ
なんとかならんもんかね

506:名無しさん@そうだ選挙に行こう
09/08/30 16:52:28
> SQLite3::Database.new(file)で両方のデータベース開いて
> テーブル毎にレコードの比較した方が楽な気がする

答えでてるじゃん。
終了

507:名無しさん@そうだ選挙に行こう
09/08/30 17:05:53
Ruby使うまでもなくdumpしてdiffとればいいんじゃない。

508:デフォルトの名無しさん
09/08/30 21:07:16
なんだろう。
>>501を信じてそのままドンってやって、ガツンと応答不能になり得たりしそうなこの不安感。

初心者スレでこれはありなんだろうか。
>>501の論旨からいうならもうちょっと、丁寧に逐次的に例を出す文脈ではなかろうか。

509:501
09/08/30 21:41:49
>>508
俺に遠慮する必要は無い、君が教えてあげてくれ

510:sage
09/08/30 22:44:10
>>485です。

ActiveRecordではなくてSequelというのが
良さそうというのがわかりました。

Sequel:
URLリンク(sequel.rubyforge.org)

こんな感じで書けます。

DBLeft = Sequel.sqlite("./left.sqlite")
left_table_foo = DBLeft[:table_foo]

DBRight = Sequel.sqlite("./right.sqlite")
right_table_foo = DBRight[:table_foo]

left_table_foo.each do |left_rec|
# right_tableのレコードと比較する
end

なんかしつこく質問してしまったみたいですみません。
でも回答してくれて助かりました。では。


511:デフォルトの名無しさん
09/08/31 01:39:52
WinXPで1.8.6です。
文字列を16進ダンプしたものの中に、2バイト文字が含まれているか
どうかを判定するにはどうしたら良いでしょうか?

変換コードは下記の通りです。
arr0 = dataStr.unpack("H*")[0].scan(/[0-9a-f]{2}/)
arr1= arr0.to_s + "\n"

対象のdataStrが Rec の場合 arr1 が 52,65,63 になりますが、
Rク では 52,83,4e です。この場合、真ん中の16進数の83を元に
判定するのでしょうか?


512:デフォルトの名無しさん
09/08/31 01:47:10
>>511
文字コード決めないと「2バイト文字」を定義できなくないか?

513:デフォルトの名無しさん
09/08/31 02:29:10
>>512
ク で 83,4e です

514:デフォルトの名無しさん
09/08/31 02:36:12
zenkaku=false
arr0.each do |c|
 if c>128 do
  zenkaku=true
 end
end


515:デフォルトの名無しさん
09/08/31 03:04:38
>>511
NKF.guess

516:デフォルトの名無しさん
09/08/31 03:32:36
globってなんであんな低機能なまま放置されてんの?

517:デフォルトの名無しさん
09/08/31 05:32:46
cgiてなんであんな低能なまま放置されてんの?

518:デフォルトの名無しさん
09/08/31 06:20:02
cgiは酷いね。参考にも成らない。
いい加減、政権交代の様に入れ替えるべき。

519:デフォルトの名無しさん
09/08/31 06:29:17
cgiに関しては、政権交代!ばかりいってるだけだし民主党よりヒドイw

520:デフォルトの名無しさん
09/08/31 08:48:25
>>518
ヒント:安定した候補者がいない

521:デフォルトの名無しさん
09/08/31 09:06:31
候補者はいるだろ。その候補者を使えるレベルまでもっていくやつがだれもいないだけで。
WEBrickのcgiライブラリのことなんだけど。

522:デフォルトの名無しさん
09/08/31 09:14:12
WEBrick::Sessionがないのはある意味象徴的

523:デフォルトの名無しさん
09/08/31 09:19:35
これは何度でも言うが、作るだけなら立候補は何人もいるしいくつも作品があるんだよ
作るということとメンテナンスを引き受けるということとは全く違う

スレ違いだが

524:デフォルトの名無しさん
09/08/31 09:22:23
>>523
>作るだけなら立候補は何人もいるしいくつも作品があるんだよ

いくつもあるとは知らなかった。
ぜひ紹介してくれ。

525:デフォルトの名無しさん
09/08/31 09:24:01
ネット関連のライブラリは魔界だ
バージョン0.3まで行かずに放置されるのばっかじゃん

526:デフォルトの名無しさん
09/08/31 09:43:34
Rackがバージョン1.0になって有力候補か? と思いきや
CGIで動かすと落ちるバグがあり、しかもなかなか修正リリースが出ないというオチ

527:デフォルトの名無しさん
09/08/31 09:48:25
そんなに悪いところがわかってるなら自分で作ればいいじゃん

528:デフォルトの名無しさん
09/08/31 10:01:21
みんな忙しい。

529:デフォルトの名無しさん
09/08/31 10:11:30
出したコードにはコミュニティ上の責任もたんといかんのでな
書きっぱで後は知らん、というような人はどの世界でもノーサンキューだ

530:デフォルトの名無しさん
09/08/31 12:13:02
口だけじゃないかw

531:デフォルトの名無しさん
09/08/31 12:16:14
みんな忙しい。
みんな忙しい。




みんな忙しい。

532:511
09/08/31 13:04:08
>>512-515
有難うございます。
514さんの方法を採用しました。


533:デフォルトの名無しさん
09/08/31 13:20:40
Perl や Python の CGI ライブラリを移植するのはどうだろうね

534:デフォルトの名無しさん
09/08/31 13:52:18
それは新しい実に新しい

535:デフォルトの名無しさん
09/08/31 14:36:41
じゃあわかりやすいところで Perl の CGI.pm から始めようぜ

536:デフォルトの名無しさん
09/08/31 14:46:39
(ぐるぐるぐる)
CGI.rb ができましたー

新しいスクリプトが欲しいんじゃなくて、スクリプトを継続的にメンテナンスできる人材が欲しいのよ
新機能をガンガン盛り込む人材ってのはとりあえずはコア近辺には要らないんだ

537:デフォルトの名無しさん
09/08/31 15:00:06
だれだよお前

538:デフォルトの名無しさん
09/08/31 15:13:23
>>536
>新しいスクリプトが欲しいんじゃなくて、スクリプトを継続的にメンテナンスできる人材が欲しいのよ

それどうやって判断するの?人材がいたとして、そいつがおまえのいう条件を満たしているかどうかって、だれがどうやって判断するのさ?
だいたい、CGI.rbなんてtDiaryでもHikiでもつかってるんだろうが。それだけユーザ数が多いのに担当できるだけの人材がいない/いなかったのかよ?
ほんとうに人材が欲しいなら、公式にアナウンスしろよ。このライブラリのメンテな求めてます、条件はこうこうです、と公式サイトに載せればいいだろ。
ろくに求人活動もせずに人がいないだの条件はどうのこうの、言い訳がましいわ。

539:デフォルトの名無しさん
09/08/31 15:16:54
スレ違いの内容で長文とか勘弁
他でやってね

540:デフォルトの名無しさん
09/08/31 15:28:35
>>538
じゃあお前やれよ。

541:デフォルトの名無しさん
09/08/31 17:45:00
>>511

>>514 c>128 -> c>=128

542:デフォルトの名無しさん
09/08/31 17:47:00
CGI.rbの上位互換wrapperがあればいいんだよね
oreoreCGIなら作ったけど

543:デフォルトの名無しさん
09/08/31 17:58:11
>>542
あんまりよくないと思う
Rackの修正リリースが出て、標準添付になれば一番いい

544:デフォルトの名無しさん
09/09/01 17:55:47
配列A1, A2, A3, ... Anから要素を1個ずつ取り出した結果を網羅した配列Xを作る。
・・・やってくれるメソッドなかったっけ?

545:デフォルトの名無しさん
09/09/01 18:06:46
>>544
Array#transposeのこと?

546:デフォルトの名無しさん
09/09/01 18:16:27
ありがとう、調べてみました。近いけど、違う。

p [[1,2],
[3,4],
[5,6]].transpose
# => [[1, 3, 5], [2, 4, 6]]

これが下のようになってくれたら期待通りなのです。
# => [[1, 3, 5], [1, 3, 6], [1, 4, 5], [1, 4, 6], [2, 3, 5], [2, 3, 6], [2, 4, 5], [2, 4, 6]]

547:デフォルトの名無しさん
09/09/01 18:27:24
data = [[1,2],[3,4],[5,6]]
p data[0].product(*data[1..-1])

548:デフォルトの名無しさん
09/09/01 18:38:41
てゆーか初心者はきちんとeach使え
小手先だけだと詰まるぞ

549:デフォルトの名無しさん
09/09/01 18:58:34
>>548
そうかproductか!1.8.7から入ったんですね。それっぽいキーワードで
ググってもなかなか見つからなかった。どうもです。

550:デフォルトの名無しさん
09/09/01 19:11:53
>>548
行列的操作関連はeach使ったほうがややこしくなりそうな気がする
転置行列は転置行列でしかないわけだし

551:デフォルトの名無しさん
09/09/01 19:40:28
すまん網羅って見落としてた
それにしてもdata.productって書けそうで書けないのかw

>>548
eachで実装した方法を提示するならともかく
初心者に書かせるレベルにならないと思うぞ

552:デフォルトの名無しさん
09/09/02 01:25:47
>>551
>eachで実装した方法を提示するならともかく
>初心者に書かせるレベルにならないと思うぞ
+1

553:デフォルトの名無しさん
09/09/02 02:34:28
def cartesian_product(*data)
    raise if data.size < 2
    data.inject([[]]) do |product, items|
        product.inject([]) do |r, elem|
            r += items.map {|i| elem + [i] }
        end
    end
end

554:488
09/09/03 05:40:09
無知ですみません。

自分なりに色々調べた結果、Passenger/mod_railsを使っているため、
/manage/の.htaccessが、それによって上書きされているようです。
/public_html/フォルダはRuby railsで開発されており、
今回、/public_html/manage/にPHPで開発することになりました。
私は、Rubyを全く知らない&.htaccess初心者なので、このような事態に陥っています。

RailsAllowModRewrite On
を使えば、なおるようなのですが、
/manage/.htaccessでそのように設定しても、/manage/.htaccessに設定してあることが
有効になりません。

どなたか知っていたら教えて頂けないでしょうか。
よろしくお願いします。

555:デフォルトの名無しさん
09/09/03 06:29:57
>>554
板違い
スレリンク(php板)

556:デフォルトの名無しさん
09/09/03 06:37:34
日本語もまともに掛けないのばかか

557:デフォルトの名無しさん
09/09/03 07:42:35
弁護するわけじゃないが普通に分かる
おまえがRailsを分かってないだけだろ

558:デフォルトの名無しさん
09/09/03 11:00:02
>>556
自己紹介乙

559:newbie
09/09/03 12:46:12
たのしいRubyを読み終わったんだが、謎が一つあります。

count = Hash.new(0)
...カウントにkeyとvalueを設定する処理(省略

count.sort{|a,b|
a[1] <=> b[2]
}.each{|key,value|
print "#{key}: #{value}¥n"
}

とあったとして、「<=>」という演算子が左右のオブジェクトを比較して、
<は-1
=は0
>は1
と返してくるのはわかったのだが、どうやってソート処理されているの謎。

内部のsortメソッドでイテレータが並び替えのアルゴリズムで処理してるのでしょうか。
詳しい解説求む。

ちなみに今まで並び替えのアルゴリズムには目をつぶって生きてきたので、
何種類かあってそれぞれに特徴と効率があるというぐらいしか、あまりよくわかってない。

560:デフォルトの名無しさん
09/09/03 12:56:51
-1と0と+1というそれそのものには深い意味はないよ

「今持ってるものが挿入先と比べて大きいか小さいか同じか」を調べてるだけ
手に持ってるものが大きかったら“上”に置いて、小さかったら“下”に置いて、同じだったら“横”に置く

普通にリアルに手元で何かを大きさ順に手動で並べ替えるのと同じ処理をしている
実際はもちろん事前グループ分けとか処理順とかにテクニックがあって単純ではないが、
並べ替えの行為そのものに着目した場合、理屈自体は「大きいか小さいか同じか」と一緒

561:デフォルトの名無しさん
09/09/03 13:07:55
sortメソッドに与えるブロックは「大小の判断基準」
人間に天秤を与えれば重さの大小になるし、ものさしを与えれば長さの大小になるようなもの

その判断基準を元に実際に並べ替えるのはsortメソッドの内部で行われる

sortメソッドは少量のデータを手軽にソートしたいような
ソート手段にこだわる必要のない場合に向いている(大抵は事足りる)

もし速度的に不足するような場合はアルゴリズムを選ぶ必要があるし
それを自分で実装するかライブラリを使う必要がある

562:newbie
09/09/03 13:08:25
>>560
並べ替えのアルゴリズムに処理をわたす黒魔術ってことでいいですか?

563:newbie
09/09/03 13:12:40
>>561
なるほど、判断基準を渡しているってことか。

イテレータの章で判断基準を渡すってのが書いてあった。
「メソッドがどういう比較処理をおこなうかを渡して欲しい場合がある」と。

その処理がブロックで囲まれた a <=> b ってことか。
謎とけたー。気がする。

564:デフォルトの名無しさん
09/09/03 13:13:43
なるほど
sort{|a, b| a <=> b }


 {|a, b| a <=> b } ってなんだよ! いきなり b とか出てくんじゃねえよ!

というとこですな

565:デフォルトの名無しさん
09/09/03 13:17:54
irb> p [5, 4, 3, 2, 1].sort{|a, b| p "a:#{a}, b:#{b}"; a<=>b}
"a:5, b:3"
"a:3, b:1"
"a:4, b:3"
"a:2, b:3"
"a:4, b:5"
"a:1, b:2"
[1, 2, 3, 4, 5]


566:デフォルトの名無しさん
09/09/03 13:45:19
0が偽じゃない言語だから、perlみたいに、比較 or 比較 or 比較 みたいに書けなくて嫌だね
なんでもいいなら、-1,nil,1 でよかったんじゃないのか

567:デフォルトの名無しさん
09/09/03 13:46:07
Cの標準ライブラリにあるqsortも、「比較方法」だけを別関数で
作っておいて、その関数(のポインタ)を引数として渡すような造りになっている。

Strategyパターンですかな。


568:デフォルトの名無しさん
09/09/03 13:50:31
判断基準を別に設けると、ひとつの枠組みを用意するだけで好きに扱えるからいいよね。
人間配列.sort{|a,b| a.身長 <=> b.身長}だとか、体重に変えてみるとか、逆順にソートしてみるとか。


569:デフォルトの名無しさん
09/09/03 14:18:53
>>566
(a.身長 <=> b.身長).nonzero? or (a.体重 <=> b.体重)


570:デフォルトの名無しさん
09/09/03 14:43:53
変数に型がない言語の場合、""や0が偽じゃないことで得られる恩恵の方が多い気がするな

無効値は偽であってほしいけど、正常値を数値や文字列で返す関数などは
0や""も正常値として扱うケースが多い。なので、これらが偽だと、戻り値をそのままブール式につかえない

Perlなんかだと、0も""も偽だから、これらも正常値として返す関数の戻り値をチェックするときは、
die "エラ~" unless defined get_string()
とかやって、""のケースを除外しなくちゃならない。|| とか && も有効活用できないし

571:デフォルトの名無しさん
09/09/03 14:51:51
>>570
//演算子じゃダメなの?

572:デフォルトの名無しさん
09/09/03 14:57:24
>>569
それって身長が不一致のときにtrueが返らない?

・・・返値はselfかnilなのか、よくできてるなぁ

573:デフォルトの名無しさん
09/09/03 15:00:24
0を偽にしろと言ってるのではなくて、0が返ってきてもうれしくないよねってことでしょ

574:デフォルトの名無しさん
09/09/03 15:07:10
>>573
あぁ、そっか。骨髄反射してた。さーせん

575:デフォルトの名無しさん
09/09/03 15:18:53
["foo", "Bar", "baZ"].uppereach{|i| puts i}

FOO
BAR
BAZ

みたいなマイ繰返子って作れんの?

576:newbie
09/09/03 15:46:30
>>565
黒魔術解明!!ありがと。スッキリしたぁ。

577:デフォルトの名無しさん
09/09/03 15:46:43
def uppereach
hoge.each do |x|
yield x.upcase
end
end
みたいな?(Arrayに組み込むのってどうやるんだっけ)

578:デフォルトの名無しさん
09/09/03 15:49:30
class Array
def uppereach
self.each do |s|
yield s.upcase
end
end
end

579:デフォルトの名無しさん
09/09/03 15:50:03
newbie氏はブロックがわかってないとみた。
別に黒魔術でもなんでもない。

580:デフォルトの名無しさん
09/09/03 15:59:53
黒魔術というとevil-rubyみたいな。(よいこは検索しないように)



581:newbie
09/09/03 17:23:30
>>579
今回の場合、yieldに与える処理ってことですよね?

yield自体、今日、たのしいRubyを読んで知ったばかりなので…。
わかってないといわれれば、わかってないはず。

間違ってますか?

582:デフォルトの名無しさん
09/09/03 17:44:22
yieldって文脈次第でいろんな日本語になるんだな。
イテレータの場合は何だろ。「任せる」?


583:デフォルトの名無しさん
09/09/03 18:10:50
つまり
yield (newbieさん.理解度)
てことか

584:デフォルトの名無しさん
09/09/03 18:15:22
産むかと。

585:デフォルトの名無しさん
09/09/03 18:29:16
14歳から始めるruby買ったが外した
標準命令の説明あんま書いてないし
内容が詳しくない

586:デフォルトの名無しさん
09/09/03 19:38:52
「14歳からはじめるC」なら買ったんだけど

587:デフォルトの名無しさん
09/09/03 19:50:10
標準命令って何?

588:デフォルトの名無しさん
09/09/03 19:55:19
え、なにこいつ標準命令も知らんののかwwwwバカスwwwwww
mesとかfontとかboxfとかくらい使えるようにしとけwwwwwwww

HSPの

589:デフォルトの名無しさん
09/09/03 20:01:00
まあ言いたいことはそれなりに伝わっては来る

お勧め本以外をいきなり買っても自己責任でよろしこ

590:デフォルトの名無しさん
09/09/03 20:11:40
高っかい金出して最初のデカいRuby本を買った初心者の人に比べればどうということはない

591:デフォルトの名無しさん
09/09/03 20:17:12
オライリーファン登場

592:デフォルトの名無しさん
09/09/03 20:18:32
Rubyを始めようと思っただけのプログラミング初心者の人には荷が勝ちすぎた薀蓄本だったな

知識さえあれば面白い本なんだけどね

593:newbie
09/09/03 23:11:34
>>583
どう処理されるのか自分が知りたい(w

594:デフォルトの名無しさん
09/09/03 23:28:59
>>593
自分の努力しだいだよ。
基本的なアルゴリズムをすっぽかしてきたみたいだけど
一度自分で手を動かして実装しておくと後の理解が断然楽になる。
バブルソートとか簡単なものだけでもやっとくのがオススメ。

595:デフォルトの名無しさん
09/09/04 03:44:50
いまどき、ソートのアルゴリズムを自分で書いてるような
コーディングなんてしてたら、全面的に見直して作り直したほうがいい。

596:デフォルトの名無しさん
09/09/04 04:28:47
なんだ、まだそんなこと言ってる人がいるのか
自力でのソートの実装は並び替えをさせるために書くんじゃねえよ
書けるだけの抽象化知識と基礎的な実装力があることが重要

自作のソートのコードを利用する奴は95%までバカだが、
ソートのコードを書けないのは100%ただのバカ

597:デフォルトの名無しさん
09/09/04 05:22:19
>>569
nonezero?ってながいなあ。nz? くらいでよくない?

598:デフォルトの名無しさん
09/09/04 06:04:23
よくない

599:デフォルトの名無しさん
09/09/04 09:11:11
ブロック付きのsortってほとんど使わんよな
大抵sort_byで済む

600:デフォルトの名無しさん
09/09/04 09:51:09
>>597
本気でそう思うならredmineにfeature request

601:デフォルトの名無しさん
09/09/04 11:13:11
ソートの基準が2段階のとき
sort{|o1,o2|
if o1.a != o2.a
o1.a <=> o2.a
else
o1.b <=> o2.b
end
}
みたいに使ってるな

602:デフォルトの名無しさん
09/09/04 11:35:19
rubyの場合は、配列にして比較するんでしょ。効率の善し悪しは知らないが

603:デフォルトの名無しさん
09/09/04 11:38:50
Enumerable#sort の場合は Ruby スクリプトに降りてこないから遅いわけではないよ

604:デフォルトの名無しさん
09/09/04 11:42:04
俺もほとんど.sort_byだなあ

605:デフォルトの名無しさん
09/09/04 11:42:06
>>596
> 自作のソートのコードを利用する奴は95%までバカだが、
> ソートのコードを書けないのは100%ただのバカ
うむ

説明からソートをコードに起こせない人は時々いて、そういう人は例外なくアレ
ソートをコードにする練習はソートくらいでしかうまく鍛えられないから、
初心者のままでいいと思ってないのなら文句言わず今自分の手を動かしてやるべき

606:newbie
09/09/04 16:39:29
>>601
なるほど。配列引数便利だ!

607:デフォルトの名無しさん
09/09/04 18:37:40
>>601
> ソートの基準が2段階のとき
でも条件が単純ならば大抵sort_byですむ
ブロック付sortなんてsort_byが出来てから使ったこと無いなぁ
A=Struct.new(:a,:b)
a = [A.new(2,4),A.new(2,1),A.new(1,5),A.new(1,1)]
p a.sort_by{|o| [o.a,o.b] }


文字列中の数字を数としてソートするなんかだとどう書くんだろう?
a = %w(3a 20a 100a b9 b80 b700 a9b100 a10b100)
p a.sort_by{|e| e.scan(/\d+|\D+/).map{|e| e[/\d/] ? ['0',e.to_i] : [e]}}
こんなんでいいのかな?


608:デフォルトの名無しさん
09/09/04 18:39:12
アルゴリズムの勉強していたら夏休み終わってたんだが。

609:デフォルトの名無しさん
09/09/04 19:07:19
>>608
ユークリッドの互除法を理解しただけで夏が終わった俺よりマシだ
気にすること無いぞ

610:デフォルトの名無しさん
09/09/04 20:14:34
Ruby 1 初めてのプログラミング(arton/宇野るいも 著)を買ったらRuby1.9.1が付いて来たんだが。
具体的に不便なところ(使えないもの)を教えてもらえないだろうか?
あと、このサイト(URLリンク(www.rubylife.jp))にある、
『オプション指定をプログラム内に記述』というソース内で文字コードを指定する方法が実行できないのだが、
1.9.1では使えないということなのだろう?
誰か頼む。

611:デフォルトの名無しさん
09/09/04 20:21:33
英文テキストを送って翻訳サイトで日本語化してstdoutに文字列表示するサンプルどっかにない

612:デフォルトの名無しさん
09/09/04 21:36:47
URLリンク(www.atdot.net)


613:デフォルトの名無しさん
09/09/04 21:38:56
>>610
> あと、このサイト(URLリンク(www.rubylife.jp))にある、
> 『オプション指定をプログラム内に記述』というソース内で文字コードを指定する方法が実行できないのだが、
> 1.9.1では使えないということなのだろう?
使えるよ。具体的にどう書いてどうなった?

614:デフォルトの名無しさん
09/09/04 22:07:07
使えないだろ。嘘言うな

615:デフォルトの名無しさん
09/09/04 22:12:13
>>612
すげ~。ありがとう。

いい加減CGIも勉強した方がいいのかな。
あとまだ10年くらいは通用する技術なんだろうか。

616:デフォルトの名無しさん
09/09/04 22:16:09
誰かruby-1.8.6-p383をgcc4.4.0のmingwでビルドしてない?
make testしたらエラー出るんだけど。

not ok float 1 -- ./sample/test.rb:1172
not ok float 2 -- ./sample/test.rb:1173
not ok float 3 -- ./sample/test.rb:1174

って感じでエラー。

617:デフォルトの名無しさん
09/09/04 22:21:21
>>615
CGIもできないヤツがHTTPでなにかできるとは思えないから
通用云々よりまずできるようにしとけ

618:デフォルトの名無しさん
09/09/04 23:37:02
PerlのURI::Fetchに相当するような、CacheつきWebクライアントはないでしょうか?

619:デフォルトの名無しさん
09/09/04 23:58:40
vim-rubyをインストールしたのですが、vim-ruby-install.rbのセットアップが上手くいきません。

$ gem install vim-ruby
>WARNING: Installing to ~/.gem since /usr/lib/ruby/gems/1.8 and /usr/bin aren't both writable.
>WARNIG: You don't have /home/****/.gem/ruby/1.8/bin in your PATH,
> gem executables will not run.
>Successfully installed vim-ruby-2007.05.07
>1 gem installed

$ sudo vim-ruby-install.rb
>Can't find source directory.

上のように出力されてvim-rubyのセットアップができません。
気になるのが、/usr/bin/vim-ruby-install.rbファイルは存在するのに/usr/lib/ruby/gems/1.8/gemsディレクトリにvim-rubyが無いのです。(gemからインストールした他のgemパッケージは全てここにある)
しかしgem listコマンドを叩くと他のgemパッケージとともにvim-rubyが出力される。
何か分かる方がいましたら教えてください。よろしくお願いします。

620:デフォルトの名無しさん
09/09/05 00:11:12
>>615 >>617
ajax で javascript が開発の中心になっても CGI は細々と生き残るだろう
ただし HTML は javascript の単なる loader になり
CGI はバックエンドとしての RDB - XML translator になり下がる

621:デフォルトの名無しさん
09/09/05 00:14:18
>>615
CGIっつーよりwebAPIだよ

622:デフォルトの名無しさん
09/09/05 00:14:33
ぽかーん。

623:デフォルトの名無しさん
09/09/05 00:27:34
>>620-621
わかってないならレスしなくていいよ・・・

624:デフォルトの名無しさん
09/09/05 01:09:33
pythonのようにコンソール上でコマンド1つ1つ実行させて
動作を確認させることはできないのですか?

625:デフォルトの名無しさん
09/09/05 01:12:26
つirb

626:デフォルトの名無しさん
09/09/05 04:24:09
RubyでCGI(笑)

627:デフォルトの名無しさん
09/09/05 05:26:51
>>619
眠いから論理的に読んでないが、
gem は sudo したとき(/usr に書き込み権限があるとき)と
一般ユーザーで使用したとき(/usr に書き込み権限がないとき)とで使用するディレクトリが違う
完全自動で /usr/bin にインストールして欲しいなら最初から sudo gem install しろ
gem install すると gem は $HOME/.gem/ruby/1.8 とかに入る

昔は全員が sudo しまくってたんだが、最近は sudo しないインストール方法が市民権を得ている
いまだに Rakefile で sudo ベタ書きしてるライブラリがあるがとっとと死んでくれてよい

628:デフォルトの名無しさん
09/09/05 06:16:17
>>619
何が起きたのか書いてあるじゃん

629:デフォルトの名無しさん
09/09/05 06:17:49
へ?なんで?意味がわからない。

630:610
09/09/05 06:37:13
>>613
そのサイトの該当部分は、正確には『Ruby入門 >日本語と文字コード >オプション指定をプログラム内に記述』だった。
すまん、言葉が足りんかった。
プログラムだが、これ↓を実行すると、
#! ruby -Ku
print("KCODE=", $KCODE);
こう↓なる。
test.rb:2: warning: variable $KCODE is no longer effective
KCODE=

631:デフォルトの名無しさん
09/09/05 06:55:01
いやそれはメッセージがそのまんまだが

っていうかこれの経緯の解説が無いならその本投げ捨てろ
$KCODE が動作するのは 1.8 までで、1.9 からは別な方法で指定する

632:デフォルトの名無しさん
09/09/05 07:06:23
>>630
Ruby M17Nの設計と実装
URLリンク(jp.rubyist.net)

633:デフォルトの名無しさん
09/09/05 07:18:33
こういう場合大抵その本に罪はないw

634:610
09/09/05 08:48:43
>>631-632
答えてくれてありがとう。
632のリンク先は自分が勉強不足なせいで何言ってるか半分も理解できなかったがw
本にはマジックコメントを使うと書いてあったんだが、ネットで調べてみたら別の事が書いてあったんで混乱したんだ。

やっぱり別の本買えばよかった(´;ω;`)

635:デフォルトの名無しさん
09/09/05 09:29:21
>>632はまだ理解できなくても問題ない
これは Ruby1.8 をある程度修めてて
なおかつエンコーディングの日常的知識があることを前提としている一次文書だ

Ruby 1.9.1 で初めてプログラミング言語に触れる人だとか
文字エンコーディングってナンデスカという人だとか
そういう人向けの文書ではない

そういう人向けの解説はこれをもとに出てくる…はずなんだが、ばあさんやまだかいのう

636:デフォルトの名無しさん
09/09/05 09:29:45
>>634
Yes you do.

URLリンク(www.amazon.co.jp)
URLリンク(www.amazon.co.jp)

637:デフォルトの名無しさん
09/09/05 11:19:17
>>615
CGIというか、HTMLを使った基本的なWebアプリが作れるようになれば便利
あと10年ぐらいは、HTMLやHTTPが無くなることはないだろう

638:デフォルトの名無しさん
09/09/05 11:29:25
今さすがにCGIはなあ、とか思うんだけど、
で、まあwebアプリを初心者に勧めるとして何するのが(どんなライブラリ使うのが)いいんだろ。

Railsはでかいは、デプロイ面倒だわ、慣れるとすごくいいいんだけど、初心者がいきなりやるには…。

Sinatra辺りだろうか?

639:デフォルトの名無しさん
09/09/05 11:46:14
CGIが書けずにフレームワーク扱いだす新人PGって、
交通ルール知らずに車運転するようなもんじゃないだろうか

640:デフォルトの名無しさん
09/09/05 11:50:33
どこぞのフレームワークと違って
やって無駄になるような技術ではまったくないね

641:デフォルトの名無しさん
09/09/05 11:50:51
比喩は嫌いだ

642:デフォルトの名無しさん
09/09/05 11:56:56
webアプリ初心者が序盤に作ったモノはひどいデキになって当たり前なんだから
まずはライブラリなしの生CGIでいいんだよ
薄っぺらい仕様だからとっかかりにはちょうどいい

セキュリティはこの際忘れろ、ローカルでやるかbasic認証でもかけて隠しとけ
セキュリティやらフレームワークやらはCGIの基礎がわかってから考えろ

643:デフォルトの名無しさん
09/09/05 12:11:04
KENTととほほを知ったことには感謝しなければならない
>>642で納得していただろうから

644:デフォルトの名無しさん
09/09/05 12:26:40
「考えない」んだよな
そりゃそうだ、今の時点で「動作してる」のに、何を付け加える理由があろう

むしろ、安全じゃない文字の基本的テストが標準付属していて、
それを通さないとそもそも動作しないとかそういうフレームワークがあれば

645:デフォルトの名無しさん
09/09/05 17:31:11
Railsの話題なのですが、rubyに共通する話なのでこちらで聞いてみます。
スクリプトのデバッグにruby-debugを使ってみているのですが、
b(break)コマンドでブレイクポイントを表示してくれず、現在行がブレイクポイントに追加されてしまいます。

ブレイクポイントを表示するにはどうしたらよいのでしょうか?

下記を見ると、breakでブレイクポイントの表示のはずなのですが・・・???
debug - Rubyリファレンスマニュアル
URLリンク(www.ruby-lang.org)


ruby-debug 0.10.3
ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux]
Ubuntu 9.04 (coLinux)


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch