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

Rubyについて Part 8

■ このスレッドは過去ログ倉庫に格納されています
0001親父!俺もやっとスレ立てたよ!NGNG
オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。

Ruby Home Page
http://www.ruby-lang.org/ja/

= 前スレ
: Rubyについて Part 7
http://pc2.2ch.net/test/read.cgi/tech/1074235226/


= 過去スレ
: Rubyについて Part 6
http://pc2.2ch.net/test/read.cgi/tech/1067623825/
: Rubyについて Part 5
http://pc2.2ch.net/tech/kako/1063/10630/1063028224.html
: Ruby について Part 4
http://pc2.2ch.net/tech/kako/1056/10569/1056944114.html
: Ruby について Part 3
http://pc2.2ch.net/tech/kako/1042/10420/1042004759.html
: Rubyについて Part 2
http://pc3.2ch.net/tech/kako/1028/10289/1028906179.html
: Rubyについて
http://pc3.2ch.net/tech/kako/1012/10120/1012096319.html
0153デフォルトの名無しさんNGNG
>>150
本人の表記に従うなら"musha"のはず。
0154デフォルトの名無しさんNGNG
>>152
スレ立つたびに宣伝レスするのやめれ。
0155デフォルトの名無しさんNGNG
knuセソセイの日記
http://www.musha.org/~akinori/diary/
0156デフォルトの名無しさんNGNG
>>155
だから、そのアドレスは 301 (Moved Permanently) だって。
正しくはこっち
http://d.akinori.org/
0157デフォルトの名無しさんNGNG
>>154
前スレにあったの?
スマソ
01589NGNG
>>9 です。今さらですが現象報告です。
ruby が固まると書きましたが、同じようなコードをperlで書いても固まったので、
ruby ではなくapacheとか環境が問題っぽいことがわかりました。
お騒がせしました。
0159デフォルトの名無しさんNGNG
>>152
 ┌-┴-┐   l             l
 ├──┤   |  _  l        -┼─
 ├──┘  ̄| ̄ ヽ |   _    | ─-
  |  l /     |   │   ̄   ヽ   |
 ⊥-ーヽ、_    |   ヽl     _ノ  |  ヽ__ o
0160デフォルトの名無しさんNGNG
File.basename ってOSによって動作違うんですか?
Windows:
  File.basename('d:\kirai\demo\suki') #=>sukiが得られる
Linux:
  File.basename('d:\kirai\demo\suki') #=> d:\kirai\demo\sukiが得られる
できれば動作を一緒にしてもらいたかった…。
0161デフォルトの名無しさんNGNG
どっちにあわせろと?
0162デフォルトの名無しさんNGNG
>>160
OS によって同じ動作にしたければ、普通はこうすると思うけど。
File::basename('d:/kirai/demo/suki')
0163デフォルトの名無しさんNGNG
つーか、touch d:\kirai\demo\suki で d:kiraidemosuk 作れるし
ls d:\kirai\demo\suki で引っかかるし
0164デフォルトの名無しさんNGNG
>>161
どっちかというとこっち。
File.basename('d:\kirai\demo\suki') #=>sukiが得られる
>>162
ありがとうございます。やっぱりその方法ですか。trでもしときます。
>>163
それはいいんですが、File.basenameではベース名が取得できてほしいんです。
今作ってるものはCGIなんですが、その中で \ 区切りパス文字列をブラウザが送ってくるもので…。
いちいちtrするのも・・・。
0165デフォルトの名無しさんNGNG
Linuxでは\はパス区切り文字じゃないんだからしょうがねーじゃん。無茶言うな。
0166デフォルトの名無しさんNGNG
>>164
> その中で \ 区切りパス文字列をブラウザが送ってくるもので…。

そのへん詳しく教えれ。
0167デフォルトの名無しさんNGNG
>>164
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=DOSISH+%C2%D0%B1%FE
0168デフォルトの名無しさんNGNG
正直、2ch向けのレスは書いてて疲れますね。「wait(2) くらい知っとけよ!」って思ってしまう。
0169デフォルトの名無しさんNGNG
書けるやつが書きたいときに書けばいい。
自分がいなくてもスレは回る、地球は回る…('・ω・`)ショボーン
0170デフォルトの名無しさんNGNG
ばーかばーかばーか
0171デフォルトの名無しさんNGNG
>>165 正直スマンカッタ
>>166
CGIなんで微妙にスレ違いですが、multipart/form-data のfilenameの部分です。
↓の filename="D:\data\ruby\a.rb" の部分です。

-----------------------------7d45c21102aa
Content-Disposition: form-data; name="uploadfile1"; filename="D:\data\ruby\a.rb"
Content-Type: application/octet-stream

print File.basename("http://www.2ch.net/2ch.htm"), "\n"
print File.dirname("http://www.2ch.net/2ch.htm"), "\n"

-----------------------------7d45c21102aa--
>>167 うーん、unix系でも同じような動きがいいんだが。正直スマンカッタ
>>170 正直スマンカッタ
0172デフォルトの名無しさんNGNG
>>171
File.basename とは別に CGI::XXX.basename みたいなのを作って、
そっちはプラットフォームにかかわらず DOSISH 対応、ってのがいいやり方なのかなあ。

うpろだ作るなら避けて通れない問題っぽいけど、普通はどうしてるんだろうか。
ちらっと調べたら、
File.basename(params['foo'][0].original_filename.gsub(/\\/, '/'))
みたいなことしてるのを発見したけど。
0173デフォルトの名無しさんNGNG
テキストファイルかバイナリファイルか判別する方法ある?
perl の -T -B みたいな機能。
0174デフォルトの名無しさんNGNG
>>173
ないと思う。

……っていうか、perl にはそんな演算子があることを始めて知った。
「テキストファイル」と「バイナリファイル」の定義を知りたいものだ。
0175デフォルトの名無しさんNGNG
NKF を使えばいいんじゃない?
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=NKF
0176デフォルトの名無しさんNGNG
>>172の言うとおり、CGIクラスが持つべきだろうね。
0177デフォルトの名無しさんNGNG
>>174
ファイルの先頭の数百バイトを見て判断してるらしい。
ちなみに日本語入りファイルはバイナリファイル。
0178デフォルトの名無しさんNGNG
Rubyのmd5生成ってバグ持ち?
オフィシャルのサンプル使ってもmd5、md5sumとかで生成した値と一致しないんだけど?
0179デフォルトの名無しさんNGNG
「オフィシャルのサンプル」って具体的にはどれ?
0180デフォルトの名無しさんNGNG
>>171
> うーん、unix系でも同じような動きがいいんだが。

UNIX だと '\' もファイル名に使えるからあまりよろしくないんじゃないかと。
'/' なら UNIX でも DOSISH でもファイル名に使えないので、
'/' に path 区切りを揃えてから File::basename に食わせるという方が良いと思う。
0181デフォルトの名無しさんNGNG
>178
D:\WINNT\system32>ruby -rmd5 -e "p Digest::MD5.hexdigest( ARGF.read() ) " NTOSKRNL.EXE
"ab349b95d62bf9770a17959c00a8b022"

D:\WINNT\system32>ruby -rmd5 -e "ARGF.binmode;p Digest::MD5.hexdigest( ARGF.read() ) " NTOSKRNL.EXE
"dccb693e32ca945462bf4f12185a1e82"

D:\WINNT\system32>\\tpi\d$\cygnus\bin\md5sum.exe NTOSKRNL.EXE
dccb693e32ca945462bf4f12185a1e82 *NTOSKRNL.EXE

というオチ?
0182178NGNG
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=Digest%3A%3ABase
の
> require 'digest/md5'
> p Digest::MD5.hexdigest(File.read("ruby-1.8.0.tar.gz"))
です。
同じファイルをこのスクリプト(ファイル名の部分だけ変更)とmd5とかmd5sumでmd5値を作ると合致しないんです
0183178NGNG
>>181
もろにそれが原因でした…_| ̄|○
ありがとうございました
0184171NGNG
>>180
おお。納得。そういえば \ ってつかえますもんね。
path 区切り揃える方向でつくります。

そう考えると確かに >>172 のようなものを用意して、
それを使うようにする方がいいですね。
0185171NGNG
そうかそれで、>>165は無茶いうなと言っていたわけですか。正直スマンカッタ_| ̄|○
0186デフォルトの名無しさんNGNG
真性だな。
0187デフォルトの名無しさんNGNG
flockのように共有ロックと排他ロックの両方ができる
Mutex風のクラスはありませんか?
0188デフォルトの名無しさんNGNG
>>187
require 'sync'
0189173NGNG
>>175
ありがと。使ってみた。
ただ、wavやmpgがテキストとみなされることが多かったんで
仕方なく拡張子で判別するコードも加えることにしたよ。
0190デフォルトの名無しさんNGNG
>>173
印字できないバイトが入ってたらバイナリファイル、ってくらいでいいなら自分で作れるだろ。
0191デフォルトの名無しさんNGNG
つーかrubyでやることかよ
0192デフォルトの名無しさんNGNG
filemagic でも使えば。
http://raa.ruby-lang.org/list.rhtml?name=filemagic
0193デフォルトの名無しさんNGNG
print "hoge\n"と書いたときに表示される改行を、あらかじめ便利な感じで
全部CR+LFにそろえることはできますか?
$KCODE="s"としておくと全部表示がShift_JISになるような。

Rubyスクリプトと生成データをLinuxとWindowsで使いまわすもので…
0194デフォルトの名無しさんNGNG
>>193
回答になってないけど、ふつー print "hoge\n" でなくて puts "hoge" 。
0195デフォルトの名無しさんNGNG
>>194
WindowsでputsするとCR+LFになるの?
0196デフォルトの名無しさんNGNG
>>195
やってみほ。Windowsが周りに無いの?
0197デフォルトの名無しさんNGNG
なんかInteger/Integerの話題、mathnとかquoとかの存在が無視されてない?
0198デフォルトの名無しさんNGNG
Integer/Integer=Rationalって、ブロックじゃ駄目なんかねぇ。
 precision do
  《Rationalになる演算》
 end
みたいな。面倒か。
0199デフォルトの名無しさんNGNG
>>198
漏れもそんな感じが良いと思ってた。
0200デフォルトの名無しさんNGNG
>>195
Windwos版Ruby(mingw32、mswin32、bccwin32、djgpp)では出力される改行は全てCR+LF。
UNIXのようなもの版Rubyでは出力される改行は全てLF。
Cygwin版Rubyでは出力される改行は全てLF。

Rubyに限らず3番目でハマる人が時々います。
cygwin向けにコンパイルされたプログラムをcygwin外でも使おうとする人ね。

>>193
つーことで多分できません。生成されたデータファイルの改行を適宜再加工してください。
0201デフォルトの名無しさんNGNG
結局selector namespaceを入れましょうっていう話になるのかな
0202デフォルトの名無しさんNGNG
>>200
Cygwin って、text mode で mount してる時も LF になるんだっけ?
0203デフォルトの名無しさんNGNG
>>202
うーん、mount -tで明示的にマウントされた場合は
改行がファイルに書き込まれた時にCR+LFに変換されるっぽい。
マウントポイントごとに設定しわけることはできるけど…めんどいね。

Cygwin環境用にコンパイルされたプログラムをCygwinシステム外の
普通のWindowsプログラムとしてこっそり使うときはどういう処理になるんだろう。
よくわかめ。
0204デフォルトの名無しさんNGNG
いい加減意地を張るのをやめてPythonに統一しようよ。
リソースの分散はあまりにももったいない。
Pythonに対する明確なアドバンテージを示せないなら今すぐ開発をやめるべきだと思うがいかがかな?
0205デフォルトの名無しさんNGNG
文字列の長さを得るメソッドが str.len になったら考えてもいいよ
0206デフォルトの名無しさんNGNG
>>204
Pythonに対する明確なアドバンテ−ジは、わしが使ってること。
0207デフォルトの名無しさんNGNG
>>204
統一厨が宗教戦争を仕掛けるスレはここでつか?
0208デフォルトの名無しさんNGNG
ずいぶん釣られてるなぁ。
0209デフォルトの名無しさんNGNG
    \   ∩─ー、    ====
      \/ ● 、_ `ヽ   ======
      / \( ●  ● |つ
      |   X_入__ノ   ミ    こんな餌で俺がクマーーーーー!!
       、 (_/   ノ /⌒l
       /\___ノ゙_/  /  =====
       〈         __ノ  ====
       \ \_    \
        \___)     \   ======   (´⌒
           \   ___ \__  (´⌒;;(´⌒;;
             \___)___)(´;;⌒  (´⌒;; 
                          (´⌒; (´⌒;;
0210デフォルトの名無しさんNGNG
いずれParrotが完成すれば、Perl,Python.Rubyのそれぞれの資産をそれぞれの言語で使えるようになるだろうから、
今更別の言語に移る価値はないだろ。
0211デフォルトの名無しさんNGNG
本当に完成するのかな(ワラ
0212デフォルトの名無しさんNGNG
現実問題としてC#とVB Scriptでプログラミング領域の98.774%はカバーできるから
Rubyはいらないんだけどな。
0213デフォルトの名無しさんNGNG
>>211
Riteよりは(ry
0214デフォルトの名無しさんNGNG
>>212
うちの会社は UNIX 上のサーバサイドアプリしか作らないので
.NET に縁がありません。
0215デフォルトの名無しさんNGNG
まー世の中には「ハック価値」という物がある訳で。
でなきゃIntercalなんて生まれてない。
0216デフォルトの名無しさんNGNG
>193
$/ を使うのはどうですか。
0217デフォルトの名無しさんNGNG
>>148
自分は147ではないけれど、
リンク先を読んでも、言わんとするところがよく分からなかったっす。
よかったらもうちょい解説お願いします。
# 「もしそれがアヒルのように歩き、アヒルのように鳴くなら、それはアヒルに違いない。」??
0218デフォルトの名無しさんNGNG
英語が読めるならまずググるくらいのことはしたら?
0219デフォルトの名無しさんNGNG
>>217
自分は >>147 ですけれど、
「もしそれが String と同じメソッドを持ち、String のようにふるまうなら、
 それは String の duck type に違いない」
と読みました。
0220デフォルトの名無しさんNGNG
彼はいまだにテストを書いていないのかな?
テストを書かずにリファクタリングってどうやってるんだろうか?
0221デフォルトの名無しさんNGNG
>>220
彼って、matz? テスト書いてるよ。
http://www.rubyist.net/~matz/20040309.html#p01
0222デフォルトの名無しさんNGNG
Dir.globの人の事じゃない?
0223デフォルトの名無しさんNGNG
>>222
ああ、そっちの人か。
誰か勝手に CVS にテストを突っ込んどいたら。
0224RPI ◆3x0ES2jpL2 NGNG
RPIC のお知らせ。

Ruby Professional Institute は、Ruby の専門家それぞれのレベルを測るために、
各国共通の基準となる認定制度 RPIC を創設しました。
# RPIC は「アルピック」と発音します。
Ruby の専門家の雇用主や契約先といった団体組織や専門家自身のニーズを満たす
技術者資格を目指しています。
資格は、Level 1 (初級)、Level 2 (中級)、Level 3 (上級) の3つに
分かれています。

Level 1
101 試験 Ruby 基本文法
102 試験 標準ライブラリ

Level 2
201 試験 オブジェクト設計
202 試験 ライブラリ

Level 3
作成中。

試験は、ピアソンVUE、アール・プロメトリックで受けられます。
0225デフォルトの名無しさんNGNG
>>224
もう2週間も前の話だろ。遅すぎ。
0226デフォルトの名無しさんNGNG
>>224
学生の漏れには、15000 円は高すぎる。
学割とかないのか?
0227デフォルトの名無しさんNGNG
>>226
学割あるよ。
Level 1 取った。
認定カードがピンクだぞ。
なんでピンクなんだ?
0228デフォルトの名無しさんNGNG
Level 1 ピンク
Level 2 橙色
Level 3 赤
0229デフォルトの名無しさんNGNG
101 試験落ちた。
引っ掛け問題多すぎ。
15000円がパー。
RPIC 対策本は、翔泳社の赤本しかないのでつか?
0230デフォルトの名無しさんNGNG
101 試験の範囲

1. 組み込み型
2. 式
3. メソッド
4. 正規表現
5. クラス、モジュール
6. 基本入出力
7. 例外
8. スレッド、プロセス
9. デバッガ
0231デフォルトの名無しさんNGNG
Ruby暦2年だが、>>224 これとろうかな。
まだ学生なんで、就職時使おうと思っています。
0232デフォルトの名無しさんNGNG
>>229
マジでか?
101 は Ruby を普通に使っていたら絶対受かるぞ。
0233デフォルトの名無しさんNGNG
漏れも 101 落ちた。
もうだめぽ。
0234デフォルトの名無しさんNGNG
>>231
アホか。
国家資格にしろ。
学生なら情報処理技術者試験の方を受けた方がはるかに良い。

プログラミング言語の試験だったら
Sun Certified Programmer for the JAVA
にしておけ。
Ruby に将来なんてない。
0235デフォルトの名無しさんNGNG
一応旧通産天下り団体主催だよ。
0236デフォルトの名無しさんNGNG
Rubyをメイン言語としたWEBアプリ開発会社を作りたいんだけど、
貯金が数万しかありません。どうしたらいいんでしょうか。
0237デフォルトの名無しさんNGNG
>>236
確か1円でも起業できるんじゃなかったっけ?
0238デフォルトの名無しさんNGNG
>>234
うちの会社では、Ruby でプロトタイプを作る。
最後に Java で作る。
移植しやすいように Ruby で Java スタイル。
attr_reader/writer ではなく、セッターゲッターを使う。
ヘビ式でなく、ラクダ式の命名規則に従う。
0239デフォルトの名無しさんNGNG
>>238
蛇式って?
0240デフォルトの名無しさんNGNG
>>239
_ で繋げる命名法じゃない?
bar_obj.foo_method() みたいな。
0241デフォルトの名無しさんNGNG
レベル1受かりました。
101 は 620 点、102 は 640 点でした。
普通に Ruby を使っていて、翔泳社の対策本をやれば受かります。
102 の Complex クラスとか、普段使わないので
対策本は必要です。
0242デフォルトの名無しさんNGNG
だまれ業者。
0243デフォルトの名無しさんNGNG
 ☆チン     マチクタヒ゛レタ〜
                        マチクタヒ゛レタ〜
    ☆ チン  〃 ∧_∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
      ヽ ___\(\・∀・) < レベル2合格記まだ?
      \_/⊂ ⊂_)   \________
     / ̄ ̄ ̄ ̄ ̄ ̄/|
       | ̄ ̄ ̄ ̄ ̄ ̄ ̄|  |
       | 三ヶ日みかん |/
0244デフォルトの名無しさんNGNG
こいつ AA に慣れていないのがバレバレ。
でも面白い。
めげずに、もっとふざけてみ。
0245デフォルトの名無しさんNGNG
こんなオリジナリチィーもなにもないAAの使い方のどこがおもろいのやら。
0246デフォルトの名無しさんNGNG
>>245
尋常でないずれ方だろ。
0247デフォルトの名無しさんNGNG
>>246
うん、おれもそこが面白いと思った。
0248デフォルトの名無しさんNGNG
スレの流れが不自然過ぎる…。
いかにも2ちゃん初心者が宣伝しにきたって感じがします。
まぁどうでもいいけど。
0249デフォルトの名無しさんNGNG
趣味レベルでウェブを運営してるのですが、その場合、Rubyを勉強する利点はありますか?
それとも無難にPerlにしておく方がいいですか?
0250デフォルトの名無しさんNGNG
あなたがPerlをすでに習得しているとして。

(利点)
・あなたのプログラム感が広がる
・あなたのプログラミング技術が広がる
・あなたの選択肢がひとつ増える(このときにはRubyを使おう)
・あなたの宣伝文句がひとつ増える(Rubyも使えます)
・Perlに比べるとライブラリが少ないので、自作する機会が増える
・rubyを使える人とのコミュニケーションの機会が増える

(欠点)
・新しい言語を覚えるための時間的、経済的コスト
・Perlに比べるとライブラリが少ないので、自作する機会が増える
・「まだPerlを使ってるの?」と言ってもらえる機会が減る
・Perlで悪戦苦闘する機会が減る

くらいかな。
0251249NGNG
>>250
分かり易い回答ありがとうございます。
時間があればやってみてもいいって感じで受け止めました。
0252デフォルトの名無しさんNGNG
>>246
わざとずらしているように見える。
■ このスレッドは過去ログ倉庫に格納されています