Rubyについて Part 39 ..
[2ch|▼Menu]
207:デフォルトの名無しさん
10/02/24 21:47:15
>>196
のサイトによると、
「Rubyがカタログ上のスペックで劣るため、採用されないというのも不本意」
ということなんだけど、RubyInlineというCを埋め込むライブラリを標準添付
にして、単純な比較は上位になるようにしてしまえばいいのに。

RubyInlineは、今ではWindows(mingw版)でも動くみたいだし。


208:デフォルトの名無しさん
10/02/26 02:27:43
Rubyベストプラクティスは来月出るんだね

209:デフォルトの名無しさん
10/02/26 21:58:00
気づいたんだがコマンドラインオプションの-xってすげー便利だな
外部コマンドを実行できて,かつ複数行コメントの機能がある
プログラム言語やマクロ言語ならなんでもRubyスクリプトを埋め込めるのな
Windowsのバッチファイルのためだけに存在するのかと思ってた

今日から秀丸マクロにRubyスクリプトを埋込みまくりだぜ

210:デフォルトの名無しさん
10/02/26 22:07:56
Perlから受け継いだ機能ですな。
ネットニュース(掲示板)やメールに載せたスクリプトを、
記事の件名などのヘッダ込みのまま実行できる。


211:デフォルトの名無しさん
10/02/27 01:58:24
rubyってperlの機能どのくらい引き継いでるんですか

212:デフォルトの名無しさん
10/02/27 09:30:08
定量的には分からんが、オプションの多くとか、$+1文字の変数の
多くとか、elifとか、BEGIN END(これはさらにawk由来でもある)とか
__END__ とか。正規表現の拡張のうちPerlが初めてやったものも結構
入ってるよな。初期からあるドキュメンテーションコメントが=begin
=endなのもPOD由来と見た。


213:デフォルトの名無しさん
10/02/27 11:31:29
インパクトのでかいのは正規表現リテラルかな
クオートのエスケープ抜きで正規表現書けるのはちょっと素敵

214:デフォルトの名無しさん
10/02/28 03:05:20
Rubyで以下のPHPコードをやろうとするとどうなりますか?

$curl = curl_init();

curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, ‘track=#NowPlaying’);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_URL, ‘URLリンク(stream.twitter.com)’);
curl_setopt($curl, CURLOPT_USERPWD, $_CONFIG['twitter']['username'] . ‘:’ . $_CONFIG['twitter']['password']);
curl_setopt($curl, CURLOPT_WRITEFUNCTION, ‘progress’);
curl_exec($curl);
curl_close($curl);

function progress($curl, $str)
{
print “$str\n\n”;
return strlen($str);
}

215:デフォルトの名無しさん
10/02/28 03:16:19
よくわからんが、syntax errorを出せばいいのか?

216:デフォルトの名無しさん
10/02/28 04:34:06
>>214
PHPはよく知らんがたぶんこんな感じ

require 'uri'
require 'net/http'
postfields = {'track'=>'#NowPlaying'}
uri = URI('URLリンク(stream.twitter.com)')
uri.user = $_CONFIG['twitter']['username']
uri.password = $_CONFIG['twitter']['password']
res = Net::HTTP.post_form(uri,postfields)
print "#{res.body}\n\n"

217:デフォルトの名無しさん
10/02/28 18:22:56
>>214
あと、CurlはRubyバインディングがあることはあるが、
作者いわく「Linuxでしかテストしてないよ」な代物なので注意な。

Windowsとかの場合はDLとか使って無理矢理呼ぶ必要がある。

218:デフォルトの名無しさん
10/02/28 21:00:30
スレリンク(tech板)
Rubyの宿題教えてください。2限目

219:214
10/03/01 04:38:35
>>216,>>217
ありがとうございます。

trackurl = 'URLリンク(stream.twitter.com)'
c = Curl::Easy.new do |curl|
curl.url = trackurl
curl.userpwd = USERNAME + ':' + PASSWORD
end
$VERBOSE = nil
while true
body = c.on_body do |data|
result = body ? body.call(data) : data.length
next if !result.is_a?(Integer)
s = JSON.parse(data) rescue next
user = s['user']
next unless user && user['lang'].include?('ja')
links = s['text'].scan(/(https?:\/\/[-_.~a-zA-Z0-9;\/?:\@&=+\$,%#]+)/).flatten
links.each do |link|
p "url => #{link}"
end
result
end
c.perform
end

見よう見まねでこんな感じになったんですが、これをずっと動かしているとStackErrorとかで止まります。
後は>>218の方で聞く事にさせて頂きます。どもでした。

220:デフォルトの名無しさん
10/03/01 20:25:39
うわあ、Pathname#to_str はもうないのか
open 用だなんて俺場面的に超便利な使い分け機能だと思ったのに

てかこのマニュアル古いな

221:デフォルトの名無しさん
10/03/02 22:26:12
>>220
Pathname#to_s と Pathname#to_str って実質的に同じメソッドですよね?
to_s ではダメで to_str でないと具合が悪い状況が思いつかないのですが。

222:デフォルトの名無しさん
10/03/02 22:30:18
irb> class C; def to_s; "./"; end; end
irb> open(C.new){}
TypeError: can't convert C into String
irb> class C; def to_str; "./"; end; end
irb> open(C.new){}
irb>


223:221
10/03/03 00:01:46
>>222
なるほど Kernel#open が引数に対して to_str を呼ぶという仕様絡みですか。

ググッてみたら、open 内で to_open を呼ぶようになったので Pathname#to_open
を実装したら、みたいな話が以前にあったようですが、最終的にどうなったのかな?

Pathname#open があるのでそれを使えということなんですかね。


224:デフォルトの名無しさん
10/03/03 00:26:24
/ 区切りは Windows の Ruby の open とかでも使えるんだっけ?
ドライブ文字とかどうしてるの?

225:デフォルトの名無しさん
10/03/03 00:34:51
/ を使用しているときはドライブの指定はできない
ドライブ名つきのフルパスを扱いたいときは D:\somedir のように \ を区切り文字に使う

ということだったと記憶

226:デフォルトの名無しさん
10/03/03 00:39:30
>>152
リファクタリングRuby版が届いたが

  † 現行では動作しません

という訳注はどうやらないようだ

まだ手は動かしてない

227:デフォルトの名無しさん
10/03/03 00:41:47
>>225
マイコンピュータは仮想的なフォルダであり、Windowsのドライブ変更はUNIXではルートのマウントし直しに該当する

…とRubyでは考えてる、ように見える
/ はカレントドライブのルートを返す(つまり普通は C:\)
時々、/c/windows や /d/somedir のようにマウントされてるとみなすソフトもあるけどね
こっちのほうが正直便利なんだけども、いまさらそんなこと言っても

228:デフォルトの名無しさん
10/03/03 02:41:15
教祖がウィンドウズ使ってない故の実装の甘さだな。

229:デフォルトの名無しさん
10/03/03 02:46:41
>>224-225
気にせず使ってるけど、それでエラーに遭遇したことがないよ。

230:デフォルトの名無しさん
10/03/03 03:08:01
WindowsはAPIレベルでは / と \のどっちでもディレクトリセパレータとして扱ってくれるので(注:正確かどうかは知らん)
ドライブ指定があろうが、UNCだろうが / で通る
Ruby内で閉じてるのなら \ は使わずにすむよ

確かDOSのころから \でも/でもよかったんじゃないの?
スイッチのキャラクタが/だったんで コマンドライン引数では\のみがディレクトリセパレータになっただけで

Windowsのコマンドプロンプトでもコマンド自体は
>c:/windows/notepad.exe
とかで起動できるよ


231:デフォルトの名無しさん
10/03/03 03:19:03
>c:/windows/notepad.exe

確かに起動出来るね

>dir "c:/windows/notepad.exe"

ファイルが見つかりません

232:デフォルトの名無しさん
10/03/03 03:20:41
cygwin 版なら
/cygdrive/c/hogehoge
/cygdrive/d/fugafuga


233:デフォルトの名無しさん
10/03/03 10:51:52
>>230
> Windowsのコマンドプロンプトでもコマンド自体は
> >c:/windows/notepad.exe
> とかで起動できるよ
だからそれはcmd.exeの処理だと何度言えばわかるですかもう堪忍袋の緒が切れました

234:デフォルトの名無しさん
10/03/03 11:05:12
どっちかってとルートである / の扱いがへぼいという話に見える

235:デフォルトの名無しさん
10/03/03 11:44:05
だからって今更¥使うってのもあり得ないけど。

236:デフォルトの名無しさん
10/03/03 13:41:39
マカー発見
まああんたには関係ない話だろうな

237:デフォルトの名無しさん
10/03/03 14:02:03
>>235
お前らは素直にコロン使ってろよ
しかも相対パスと絶対パスの見かけが逆とか

/A/B/C → A:B:C
B/C   → :B:C

238:デフォルトの名無しさん
10/03/03 14:10:12
まあ使いたくてもOS9ではRuby動かないんですけどね

239:デフォルトの名無しさん
10/03/03 14:19:18
>>236 は何を以てマカーと判定しているのでしょうか。


240:デフォルトの名無しさん
10/03/03 14:29:17
¥

241:デフォルトの名無しさん
10/03/03 14:54:30
なるほど。そういえばそうでした。



242:デフォルトの名無しさん
10/03/03 18:14:53
>>233
cmd.exeがなにか特別な処理をしてるとは思えんのだが
コマンド名はそのまま プロセス起動APIに渡してるんじゃないの?(これも正確か知らんけど)

直接CreateProcessに/区切りで渡しても起動するよ
Rubyで system('C:/windows/notepad.exe') だとあまり直接っぽくないし、かといって
require 'Win32API'
Win32API.new('kernel32','CreateProcess','PPPPILPPPP','I').call('c:/windows/notepad.exe','',nil,nil,0,0,nil,nil,[68].pack("L")+"\0"*64,"\0"*64)
じゃ長いかなと
Win32APIで例をあげるなら、カレントディレクトリの変更なんてのが短くていいか
require 'Win32API'
Win32API.new('kernel32','SetCurrentDirectory','P','I').call('c:/windows/')
p Dir.pwd


243:デフォルトの名無しさん
10/03/03 18:30:06
で?

244:デフォルトの名無しさん
10/03/03 18:59:57
っていう

245:デフォルトの名無しさん
10/03/03 21:05:48
WindowsはUnix系のノリでシェルとOSとの分担がなされていると考えると
驚愕させられることになるよな
ワイルドカード展開が各プログラムで自力とか
プロセスの引数がARGVで取れるのはCランタイムが
頑張って分割してるだけとか


246:デフォルトの名無しさん
10/03/03 21:31:27
で?

247:デフォルトの名無しさん
10/03/03 21:54:18
大量にファイルがあるディレクトリで
echo * | grep hoge すると out of memory とかなんとかで死ねる

248:デフォルトの名無しさん
10/03/03 22:04:27
ソフトエイジェンシー、Rubyのソースコードを暗号化する「RubyEncoder」 - Enterprise Watch
"ソフトエイジェンシー、Rubyのソースコードを暗号化する「RubyEncoder」
del.icio.usに追加
Twitterに投稿
livedoorクリップに追加
Google Bookmarks に追加
Yahoo!ブックマークに追加
はてなブックマークに追加

 株式会社ソフトエイジェンシーは3月3日、Ruby/Ruby on Railsのソースコードを暗号化する「RubyEncoder」を発表した。
価格は3万1500円/ライセンスで、3月8日より提供する。

 RubyEncoderは、Ruby/Ruby on Railsのソースコードをバイトコード形式に変換する製品。簡単に解読できなくすることで、
商用アプリケーションとして配布する際などに知的財産の保護が実現する。特長は、多彩なアプリケーションロック機構を搭載する点。
IPアドレス、MACアドレス、ドメイン名が一致しないとアプリケーションをロックして動作不能にできる。これにより、安易なコピーを防げるほか、
アプリケーションに有効期限を設定して体験版も容易に作成可能。また暗号化とは別に、アプリケーションの実行に必要なライセンスファイルも作成できる。
これにより、評価版や製品版など異なったライセンス配布が可能だ。

 製品構成は、エンコーダとスクリプトローダの2種類。暗号化するエンコーダは1ライセンスで1台のみインストールが可能。複合するスクリプトローダは無制限で利用できる。

 動作環境は、Windows/Mac OS X/Linux/FreeBSD、Ruby 1.8.6/1.8.7/1.9.0//1.9.1。 "
URLリンク(enterprise.watch.impress.co.jp)

249:デフォルトの名無しさん
10/03/03 22:37:43
なんていうかさあ、コピペするならするでもうちょっとちゃんとやれよ

250:デフォルトの名無しさん
10/03/04 00:25:58
ねー質問、URI.parseが自動でURI.escapeしないのはなんで?

251:デフォルトの名無しさん
10/03/04 01:27:43
自動でするようになったらなったでうがぁーってなると思うようがぁーって
どこをパース時にエスケープしたのかきちんと区別して喋れって思うはず

というか、parse なんだから、文字列をそのままオブジェクト化するでいいんじゃないの
オブジェクトにする際に不正なものがあれば例外出して落ちると
ユーザーの利便性はラッパーとか作ってねみたいな

build2 があるなら parse2 があってもいいじゃんという感じはする

252:デフォルトの名無しさん
10/03/04 09:43:52
不正なURLを扱えるようにしたいときにも困るかもしれないしな
日本語URLなんてのもあるし

253:デフォルトの名無しさん
10/03/04 10:20:23
そんな需要は極一部だから、独自で実装すればいいだけだな。

254:デフォルトの名無しさん
10/03/04 13:04:32
というか既にそういうgemがあって既存のURIクラスを差し替える形で
取り込む話になってたような

255:デフォルトの名無しさん
10/03/04 13:12:36
じゃあ日本全国で毎日うがぁーってなると思うようがぁーって

256:デフォルトの名無しさん
10/03/04 13:48:33
>>254
Addressable?

257:デフォルトの名無しさん
10/03/04 22:27:41
>>256
そう。不正URIをどうするかは知らんけど。

258:デフォルトの名無しさん
10/03/04 22:43:46
>>256
オーケー自作のURIクラス破棄した

259:デフォルトの名無しさん
10/03/05 00:55:23
>>258
嬉しい半面悲しくなるよな。
もっと早くに知ってればっていう。

260:デフォルトの名無しさん
10/03/05 00:58:45
自力でライブラリのアッパーバージョンを実装するためには
RFCとか他言語の類似ライブラリとか読み込まないといけないことが多いので
ただ出来合いのを見つけて利用するだけの時よりも確実に実力がついていることは間違いない


問題はその実力とやらが役に立つ機会が低いと危惧されることかな

261:デフォルトの名無しさん
10/03/06 02:50:39
rubyの次の言語を作るときぐらいだろうな。役に立つのは。

262:デフォルトの名無しさん
10/03/08 00:10:26
"アンエンコード" に一致する日本語のページ 約 803 件
"アンエスケープ" に一致する日本語のページ 約 9,350 件

うううん…

263:デフォルトの名無しさん
10/03/08 04:23:57
アンアンエンコード の検索結果 約 278,000 件中 1 - 10 件目 (0.24 秒)
アンアンエスケープ の検索結果 約 99,600 件中 1 - 10 件目 (0.22 秒)

うううん…

264:デフォルトの名無しさん
10/03/10 11:07:21
「うううん…」がちょっとエロいと思ってしまう俺は童貞

265:デフォルトの名無しさん
10/03/10 18:39:52
アンアンの方じゃないのか

266:デフォルトの名無しさん
10/03/10 23:13:33
アンアンがあるから、その下のうううん…がエロく感じるんだよ



…ちきしょう

267:デフォルトの名無しさん
10/03/11 06:50:31
どうでもいいけどメーリングリスト、いやメールといってしまってもいいけどさ。
「暗号化されていないメールは煮るなり焼くなり転送するなり印刷するなり好きにしてくれ」
というのが常識だと思ってたんだけど今はそうでもないのな。

268:デフォルトの名無しさん
10/03/11 07:11:58
まじめにレスすると馬鹿を見そうだからやめとくお

269:デフォルトの名無しさん
10/03/11 12:58:04
スレリンク(tech板:230-231番)
なんか地味に酷い遣り取りが

270:デフォルトの名無しさん
10/03/11 13:14:51
るびまは随時アップデートすべき?
それもなんか違うよねえ

271:デフォルトの名無しさん
10/03/11 13:21:27
でも古くて使えない情報をいつまでも放置しとくのもどうかと。
もうこの情報は古いの注釈ぐらい入れたほうが、検索でたどり着いた初心者には有用かもしれない。

272:デフォルトの名無しさん
10/03/11 13:27:12
>>271
よしじゃあ君を「るびまの情報が古いかどうか全ページ調べて毎週報告する係」に任命だ

273:デフォルトの名無しさん
10/03/11 13:33:15
MLで報告なりすれば時間があるときに編集部注的なものはつけられるかもしれないが
一番の問題はアクティブメンバーはるびまの過去記事に触れる機会がないということだな

たとえば、このスレにいるような人は「Ruby CGI」でわざわざぐぐったりしないだろ
URLリンク(www.google.com)
だから、「古い情報の害」にぶち当たるのは常に初心者だけだ

274:デフォルトの名無しさん
10/03/11 13:47:52
この記事は参考になりましたか?

 ・ 参考になった
  ○ 記事自体が有用だった
  ○ 参考程度にはなった
 ・ 参考にならなかった
  ○ 期待した内容と違った
  ○ 記事通りに動作しなかった

みたいなアンケートを一番下にくっつけとくというのはどう

275:デフォルトの名無しさん
10/03/11 13:54:43
記事を寄稿した人に頼むしかない現状が…

本気でアップデートしたら別記事になってしまう

276:デフォルトの名無しさん
10/03/11 15:05:45
バージョン対応の管理は面倒だよねえ
うまくやる方法はあるのかな

277:デフォルトの名無しさん
10/03/11 15:16:42
今回でいえば「RubyでCGIをつくろう2010」という記事が1本書けることが示された

ネタの確保には成功したが誰が書くのかまでは知らん


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

5391日前に更新/66 KB
担当:undef