Ruby 初心者スレッド ..
[2ch|▼Menu]
564:デフォルトの名無しさん
10/01/04 20:54:18
>>561
require 'open-uri'
url = "URLリンク(menu.2ch.net)"
purls = URI.extract(open(url).read, ['http'])
uris = purls.map{|url| URI.parse(url)}.find_all{|uri| /\Apc11\.2ch\.net\Z/ =~ uri.host}

ただ、
 「URLを抽出したあとそれに対して何をしたいのか」
 「本当に抽出したいのは本文のURLではなくて<a href>のリンクなのではないか」
 「貴様は次のレスで「あっあとhttp://も抽出したいです」と言うッ!」
とかいうような危惧がないわけでもない

普通にHTMLパーサ通したほうが近道だったり
一般的な適当範囲の正規表現を通したほうがマシな処理だったりしなくもなくもないかも

565:デフォルトの名無しさん
10/01/04 20:56:56
関係ないけど、2chのAPIは糞。

566:デフォルトの名無しさん
10/01/04 21:00:02
そりゃ急いで突貫工事したものをずっと継ぎ接ぎで使ってるからな

これがめちゃくちゃ洗練されて、2chアクセス者全員にdat直読みだけをされるようになっても
本当は運営的にはちょっと困るのよ

567:デフォルトの名無しさん
10/01/04 21:03:29
datはまぁ良いとして、bbsmenu.htmlだけはどうにかして欲しいな。

568:デフォルトの名無しさん
10/01/04 21:03:47
>>566
APIが洗練されたとしても利用者全員がdat読みすることなんてありえんから
後半は全然関係ないだろw

569:デフォルトの名無しさん
10/01/04 21:10:00
>>568
本当に洗練されたWeb経由APIはJavaScriptのみでの実装を許す
API経由で広告を見せて有効に動作させるロジックはまだ発明されていない
今の2chから広告収入外されたら傾くぞ

なんかこう物理的にナナメに傾くだけで済む気もするのがなんか謎な収益だが

570:デフォルトの名無しさん
10/01/04 21:29:00
>>563
まあなんか非常にめんどくさいのだけど

open(path).read は close 忘れが多いので推奨されない書き方
(open(path){|f| f.read} を強く推奨、File.read(path) は Windows のバイナリスイッチが入らなので非推奨)
ただ、open-uri を読み込んだ URL や URI に限っては、
open(uri).read は IO#close 相当を必要としないので妥当安全にたまたま動作する

いや、ブロックつきで書いてもいいけど
っていうかレスしてて気づいたけど本当にたまたま動くんだなこれ

ローカルのファイルを読むことがなくて、簡便な HTTP アクセサとしてしか使用しないのなら
あなたの言うように URI.parse(url).read するのがいちばんではあるっていうかお前ら初心者スレで手を抜くな

571:デフォルトの名無しさん
10/01/04 22:11:39
>>570
手を抜くな、と言われましても、2chの手抜きAPIに対して
真面目にプログラミングする気がしませんん。

572:デフォルトの名無しさん
10/01/04 22:16:54
手抜きAPIを調教して俺色に染めてやんよ

573:デフォルトの名無しさん
10/01/04 22:19:33
そもそも2ちゃんのそれはAPIなんかじゃない無いだろw
一時期XML吐こうぜみたいな動きがあったみたいだけど、
「やっぱだりぃわ」で自然消滅した?w

574:デフォルトの名無しさん
10/01/04 22:23:55
>>571
URLにアクセスしてHTMLを取得するという根幹部分すらまともに書けませんと素直に言ったら

575:デフォルトの名無しさん
10/01/04 22:30:23
>>574
は?HTTPのライブラリぐらい作ったことあるから w

576:デフォルトの名無しさん
10/01/04 22:40:14
しっかし、open-uriって、
open(path)ってしただけでゴリゴリとTempfileをディスクに書いちゃうのね。
大量のURIを扱うならopenは使うべきじゃないな。

577:デフォルトの名無しさん
10/01/05 04:26:10
>>571のような open(file).read と open(file){|f| f.read} の違いがわからないような人間にはなりたくないと思う

578:デフォルトの名無しさん
10/01/05 05:17:44
>>576
f = open(uri) が open として何を返すべきかを考えたら、
StringIO が返ってくる低サイズ帯のほうがむしろ特殊というか変

579:デフォルトの名無しさん
10/01/05 15:25:56
無圧縮のzipを作成したいのですが
ziprubyもrubyzipも無圧縮オプションが見当たりません
この2つは無圧縮zipの作成をサポートしていないのでしょうか?
あるいはlibtarで作成すれば無圧縮zipと同じものが出来ますか?


580:デフォルトの名無しさん
10/01/05 19:57:04
open-uriだけでよくここまで話せるな

581:デフォルトの名無しさん
10/01/05 22:54:32
>>579
ヒント
Zlib::NO_COMPRESSION

582:デフォルトの名無しさん
10/01/06 05:24:47
>>579
オレも気になったので調べてみたけど見当たらないね、実装されてないのかな?
おそらくPKZIP形式を求めていると思ったので
偽Zip32J.DLLてのを使ってやってみた

require 'dl/win32'
zip = Win32API.new("Zip32J.DLL","Zip","lppl","l")
p zip.call(0,"-q -0 out.zip 1.txt 2.txt", "" , 0)

拘り無いならtarでいいと思う

583:デフォルトの名無しさん
10/01/06 07:15:17
rubyzipのZip::ZipOutputStream#put_next_entry見ろよ。
どこ見てんのよ。

584:デフォルトの名無しさん
10/01/06 12:31:59
a='/'
a.sub!(/\//, "\\")
p a

これで出力は \ 1個を期待したのだけど
\\ 2個になってしまう

a.sub!(/\//, "\")
こうすると怒られるし
どうしたらいい?



585:デフォルトの名無しさん
10/01/06 12:36:25
>>584
irbでinspectの結果を見てないか?


586:デフォルトの名無しさん
10/01/06 12:37:22
ごめん、pか。
pはinspectの結果を出すので、そうなって当然。
putsせよ。


587:デフォルトの名無しさん
10/01/06 12:40:36
URLリンク(doc.okkez.net)
URLリンク(doc.okkez.net)

588:デフォルトの名無しさん
10/01/06 14:25:27
subとgsubはブロックを使えと先生から習わなかったか

589:デフォルトの名無しさん
10/01/06 14:38:24
しかしそれ以前の問題だからのう。

どうでもいいけど、個人的には正規表現に / が入るときは %r が見やすい

590:584
10/01/06 14:48:46
>>585-589
あざーした!
pの方が短くてうちやすいので
ついputs代わりに使ってました
今度から気をつけます!


591:デフォルトの名無しさん
10/01/07 15:03:29
exerb 使う時って open-uri 使っちゃいけないの?

592:デフォルトの名無しさん
10/01/08 20:42:04
こんなのあったのね。テンプレに入れとけばどうか。まーActiveScriptRubyでもいいけどw

窓の杜 - 【REVIEW】Windowsでスクリプト言語“Ruby”を導入するための和製インストーラー「Rumix」
URLリンク(www.forest.impress.co.jp)

593:デフォルトの名無しさん
10/01/08 23:46:16
WindowsでRubyを使うこと自体が既に初心者レベルを超えてる

594:デフォルトの名無しさん
10/01/08 23:52:33
いや、逆じゃないのか。。

595:デフォルトの名無しさん
10/01/09 08:02:18
RumixってOne-Click Installerとなにがちゃうんや!

596:デフォルトの名無しさん
10/01/09 08:37:14
One-Click Installer 海外版Windows向けRubyパッケージ(ただしRuby古い)
Rumix 日本語版Windows向けRubyパッケージ

597:デフォルトの名無しさん
10/01/09 19:02:01
rubyはメモリをたくさん食うと聞いたことがあるのですが解決方法などはありますでしょうか?

598:デフォルトの名無しさん
10/01/09 19:04:58
>>597
Rubyを使わない

Rubyはメモリを多めに使うことで、Rubyであるということの意味を保っている
(そもそも言語レベルでそのように作られている)
メモリを大量に消費するということがネックなのなら、その用途にRubyを選ぶべきではない

599:デフォルトの名無しさん
10/01/09 19:20:43
ほんとカス言語だな

600:デフォルトの名無しさん
10/01/09 19:33:36
>599 suck but ruby just sucks less.

601:デフォルトの名無しさん
10/01/09 19:35:17
sorry!! this site is japanese only!!

602:デフォルトの名無しさん
10/01/09 19:44:52
rubygemsの開始読み込みのへちょい構造はどうにかして欲しいと思うことがある
あれはRubyらしさとかそういうの抜きで単にミスだろう

603:デフォルトの名無しさん
10/01/09 19:52:10
メモリを大量に食うこと自体が設計ミス

604:デフォルトの名無しさん
10/01/09 19:54:55
>>603
お前気楽な人生送ってるな
反対のことだけ書いてりゃ爽快なんだもんな

605:デフォルトの名無しさん
10/01/09 20:09:47
CPU時間でQuotaや課金があるようなサービスがもうちょっと一般的になると
Rubyは再度日陰になるのかね
どっちにしても初心者スレの話題じゃねーな

606:デフォルトの名無しさん
10/01/09 20:22:09
Ruby1.8 for WinでインタプリタがCUIかGUIかを簡単に判別する方法ってありますか?
exerbでexeファイル化する予定なので出来れば自動で判別したいです

607:デフォルトの名無しさん
10/01/09 20:26:19
よくわからんがこのへんではだめなのか
URLリンク(exerb.sourceforge.jp)

608:デフォルトの名無しさん
10/01/09 21:14:09
空間計算量と時間計算量を犠牲にしてMatz好みのOOとプログラマの幸せを手に入れたいらしい

609:デフォルトの名無しさん
10/01/10 18:15:55
rubyかpythonどちらを初めに勉強しようか悩んでます
どなたかアドバイスお願いします

610:デフォルトの名無しさん
10/01/10 18:28:22
はいはいpython、python
いいからさっさと消えてくれ。目障りだ

611:sage
10/01/10 18:40:42
rubython

612:デフォルトの名無しさん
10/01/10 18:46:03
Rubyを256倍使うための本ってどうですか?
オクにいくつかでてるんで、買おうか迷ってるので教えてください。


613:デフォルトの名無しさん
10/01/10 18:50:05
>>612
古書
Rubyの過去を知るために有意義

614:デフォルトの名無しさん
10/01/10 21:30:35
質問です。
hamlで以下のような定義のときに、ruby本体でどのようにしたらいいのか教えてください。

%table
!= header = capture_haml do
%tr
%th Name
%th TimelogUrl
%th Status
- @users.each do |u|
%tr
%td u.name
%td u.link
!= header
この中で、@usersをどのように定義したらいいのかが分かりません。

バージョンは以下のものを使っています。
ruby 1.9.1
haml 2.2.16

615:デフォルトの名無しさん
10/01/10 23:05:34
>>614
そのときのコンテキストにおける self に対して。
たとえば instance_eval { @users = ... }


616:デフォルトの名無しさん
10/01/10 23:34:52
>>615
レスありがとうございます。

すいません、もう少し詳しく教えてもらえると嬉しいです。
@users = [
[
name => "aaaa",
link => "link1"
],
[
name => "bbbb",
link => "link2"
]
]
こんな感じのを想定しているんですが、全く違うようなそうでないような・・・
そんなレベルです。すいませんorz


617:デフォルトの名無しさん
10/01/10 23:43:00
もしかしてRailsのビューにhamlを使ってみようとかそういう話?


618:デフォルトの名無しさん
10/01/11 00:03:44
あの〜、Rubyってブラウザ上で動くアプリは作れないのですか?

619:デフォルトの名無しさん
10/01/11 00:16:32
ブラウザ上で動くアプリってたとえばどんなんだ

HTMLと画像とJavaScriptで構成されているWebアプリケーションなら
サーバを用意してサーバ上でRubyを頑張って動かせば作れないわけでもない

Flashなどを利用するタイプのは、そりゃバックグラウンドサーバでRuby動かすことはできるけど
それより先にFlashで普通に作らないといけないぞ

何の話をしてるかわからないのなら、Webアプリケーションについての概略知識が足りない

620:デフォルトの名無しさん
10/01/11 00:21:59
>>617
先に書くべきだったでしょうか?

Sinatraを使ってPassenger経由で表示させようとしています。
index.hamlという名前でhamlを使って別ファイルに保存していて、それをstart.rbから読み込んで表示させようとしています。


621:デフォルトの名無しさん
10/01/11 01:29:35
>>620
このページは参考になるかな(2ページ目の@comment変数)
URLリンク(gihyo.jp)

622:デフォルトの名無しさん
10/01/11 03:13:44
>>621
はい。そのページは知ってるのですが、実際に定義する場合にどのようにしたらいいのか?
というところで悩んでます。
テストデータを仮に組もうとして、どう「書いたら」良いのか分からないという orz

623:デフォルトの名無しさん
10/01/11 04:12:59
>>622
こんな感じか
TestData = Struct.new(:name,:link)
@users = [ TestData['aaaaa','link1'], TestData['bbbbb','link2'] ]

624:デフォルトの名無しさん
10/01/11 04:33:52
>>623
ありがとうございます。
おかげさまで動きました。

ただ一つだけ修正が
>>614の所は
%td u.name
%td u.link

%td= u.name
%td= u.link
でしたorz

625:デフォルトの名無しさん
10/01/11 07:46:02
【レス抽出】
対象スレ:Ruby 初心者スレッド Part 33
キーワード:orz

抽出レス数:7

626:デフォルトの名無しさん
10/01/11 10:39:52
R Language
Ruby

627:デフォルトの名無しさん
10/01/11 12:17:24
Pで始まってLで終わる言語っていう表現があったな。
文脈によって指すものは変わる。


628:デフォルトの名無しさん
10/01/11 17:22:46
質問です
同じ名前のチェックボックスから複数の値をとりだすにはどうしたら
よいのでしょうか?
require "cgi"
cgi = CGI.new

check1 = cgi["check"][0]
とかで個別には取れますが、選択できる数が固定でない場合、
どのように書けばよいのでしょう?

配列の数さえわかればできるのですが
cgi["check"].lengthとかで配列の数がとれないようですし困っています。

629:628
10/01/11 17:58:49
自己解決しました
くだらない質問してすみませんでした

630:デフォルトの名無しさん
10/01/12 04:22:00
cgiは残念だがゴミ。

631:デフォルトの名無しさん
10/01/12 18:16:46
zsh で rake を実行するときに、desc がある task だけしか、
task が補完されない。Rakefile 中の全 task を補完させたいのだけど、
どうしたらいい??

632:デフォルトの名無しさん
10/01/12 18:27:46
rubyはjis規格で規定されていますか?

633:デフォルトの名無しさん
10/01/12 18:39:02
>>631
zshの設定を変える
rake専用の補完関数を書けばいい
誰かが作ってるのではないかな

634:デフォルトの名無しさん
10/01/12 18:45:55
>>632
今ドラフト。


635:デフォルトの名無しさん
10/01/12 22:17:37
Ruby と IPA はどのような関係があるのですか?

636:デフォルトの名無しさん
10/01/12 22:21:00
>>635
マブダチ。

637:デフォルトの名無しさん
10/01/12 23:35:30
>>634
まじ?

638:デフォルトの名無しさん
10/01/12 23:38:22
情報処理技術者試験の午後問題になる日も近いな

639:デフォルトの名無しさん
10/01/12 23:59:56
Ruby Draft Specification
URLリンク(ruby-std.netlab.jp)

640:デフォルトの名無しさん
10/01/13 00:11:14
Ruby/GSL
URLリンク(rb-gsl.rubyforge.org)

のWindowsバイナリってないです?
gem install gslしようとしたら、native libraryでコンパイルしようと下ので、
VC++2008環境でやってみたんですが、エラー吐いてダメポです。
どなたかコンパイルしたバイナリか、コンパイルの仕方教えてください。
mingwとかでもコンパイルできますか?

C:\Program Files\Microsoft Visual Studio 9.0\VC>gem install gsl
Building native extensions. This could take a while...
ERROR: Error installing gsl:
ERROR: Failed to build gem native extension.

C:/ruby/bin/ruby.exe extconf.rb
checking for sys/types.h... yes
checking for u_int8_t... no
checking for int16_t... no
checking for int32_t... no
checking for u_int32_t... no
creating narray_config.h
creating Makefile

nmake

(つづく)

641:デフォルトの名無しさん
10/01/13 00:12:02
(つづき)

Microsoft(R) Program Maintenance Utility Version 9.00.21022.08
Copyright (C) Microsoft Corporation. All rights reserved.

cl -nologo -I. -I. -IC:/ruby/lib/ruby/1.8/i386-msw
in32 -I. -MD -Zi -O2b2xg- -G6 -DHAVE_SYS_TYPES_H -c -Tcnarray.c
cl : コマンド ライン warning D9035 : オプション 'Og-' の使用は現在推奨されていま
せん。今後のバージョンからは削除されます。
cl : コマンド ライン warning D9002 : 不明なオプション '-G6' を無視します
narray.c
c:\ruby\lib\ruby\1.8\i386-mswin32\config.h(2) : fatal erro
r C1189: #error : MSC version unmatch
NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 9.0\VC\BIN
\cl.EXE"' : リターン コード '0x2'
Stop.

Gem files will remain installed in C:/ruby/lib/ruby/gems/1.8/gems/narray-0.5.9.7 for inspection.
Results logged to C:/ruby/lib/ruby/gems/1.8/gems/narray-0.5.9.7/src/gem_make.out

642:デフォルトの名無しさん
10/01/13 00:27:46
>>630

cgi.rbがゴミなのでしょうか?

他に使いやすいCGIライブラリってありますか?


643:640
10/01/13 00:32:06
こういったライブラリはmingw32でコンパイルできるものなのでしょうか?

644:デフォルトの名無しさん
10/01/13 00:49:49
>>642
いまのところの本命はRackやRackに基づいたもの。


645:デフォルトの名無しさん
10/01/13 01:03:24
..           (.
.            )
      ,―ヽ__(__、―
   ,/  ノ       ヽ  ~\
  /   ノ   IPA    ヽ   ~\
/   ノ           ヽ、  `ヽ
|    ノ / ̄\   / ̄~ヽ ヽ    i
|   ノ              |  ノ
\  |  <●>  <●>  (  )
 \ |      | |       i /
    |      /  ヽ       レ
   i     (●_●)      /  
    i、    ,-―-、   ・ /
    i、  <(EEEEE)> ∵/    RubyはIPA Rubyになったピョん☆
      i、  \   ./  /
       \   ーー   ,ノ       
  ,,.....イ.ヽヽ、ー-―一ノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |
      >   ヽ. ハ  |   ||

646:デフォルトの名無しさん
10/01/13 01:24:34
初心者には Ruby 1.8.7 を強くお勧めします。とありますが、
公式から初心者のためのRubyインストールガイドに飛んで、
<URL:URLリンク(rubyforge.org)でダウンロードできます。
に行ったところ、1.8.6と1.9.1しか見当たりません
ど初心者なので安心な公式からのリンクのインストーラを使っておきたいところなんですが
興味を持っていざ足を踏み入れてみたものの、いきなり迷子になってます

647:デフォルトの名無しさん
10/01/13 01:29:31
>>640
rubyをコンパイルしたのと違うバージョンのコンパイラを使うと
ランタイムライブラリが衝突する関係上、拡張ライブラリはコンパイルできない
ただしVC6とMinGWは同じランタイム使うのでそこの互換性はあり

つーことで、>>643はrubyがVC6かMinGWでコンパイルされている条件付でyes

648:デフォルトの名無しさん
10/01/13 01:33:27
>>646
そういえばOne-Click Installerって1.8.6までだったね
URLリンク(groups.google.co.jp)

>>592にあるRumixってのを試してみては
不安なら他の人のレスを待って

649:デフォルトの名無しさん
10/01/13 01:43:57
>>648
ありがとうございます
教えてもらったRumix - Ruby Starter Package with Installer
でインストールして初めてみたいと思います

650:デフォルトの名無しさん
10/01/13 01:46:22
>>646
とりあえず始めるにはRubyGemsつきの以下の2つをオススメしたいな

ActiveScriptRuby(ただし、少し古いので外部公開とかは注意)
COM Meets Ruby
URLリンク(arton.hp.infoseek.co.jp)


か、>>592のRumixをどうぞ

Rumix - Ruby Starter Package with Installer
URLリンク(ruby.morphball.net)


Rumixの方は試してないからわからんが、コッチの方がRuby1.8.7でも新しい。

651:640
10/01/13 01:48:30
ありがとうございます。
RubyはVC6版(ActiveScriptRubyのだと思う)のはずなので、MinGWでコンパイル試してみます。

652:デフォルトの名無しさん
10/01/13 01:54:49
>>650
わざわざありがとうございます
ActiveScriptRubyもチェックしてみたいと思います

653:デフォルトの名無しさん
10/01/13 06:54:52
環境によってrubygemsがアホみたいに遅くなるのはどのWindows版だっけ

654:デフォルトの名無しさん
10/01/13 07:03:58
>>653
mswin32が爆弾持ち

絶対にmingwもいれて比較すべき
遅く感じないならどっちでもいい
遅くない人もいるみたいだから

655:デフォルトの名無しさん
10/01/13 07:34:04
1.8.7のインストーラ用意してないのは、単なる手抜き?
まあ教祖自身がウィンドウズ使ってないから放置なんだろうけど。

656:デフォルトの名無しさん
10/01/13 07:55:04
マストでないので、やる人員が確保できなければ特段用意されない

657:デフォルトの名無しさん
10/01/13 08:15:41
マイクロソフトあたりが環境用意してくれるのはきっと大歓迎。


658:デフォルトの名無しさん
10/01/13 09:20:36
>>655自身が必要なら手を上げれば今なら英雄候補生

659:デフォルトの名無しさん
10/01/13 10:52:00
arr.insert(0, obj) ってなんか意味あんのかね
arr.unshift(obj) と一緒だよね
ただのデータ配列なのでキュー関連の物言いを嫌ったのかね

660:デフォルトの名無しさん
10/01/13 16:12:42
floatの内部表現を表す4バイトを指す文字列(ポインター)が欲しいのですが、どうすればいいのでしょうか
C言語で書くとこうなります。

float f[] = {1,2,3,4,5,6};
unsigned char* p = (unsigned char*)f;

OpenGLを使っていて頂点データをGPUに送るのに配列の生データが欲しいのですが……

661:デフォルトの名無しさん
10/01/13 16:49:47
>>660
pack調べろpack

662:デフォルトの名無しさん
10/01/13 17:04:11
>>661
.pack("f*")で出来た。まじサンクス。

@@vertices = [1,0,0, 0,1,0, -1,0,0].pack("f*")
@@indices = [0,1,2].pack("f*")


663:デフォルトの名無しさん
10/01/13 19:37:31
>>659
すまん。レスの趣旨がつかめん。
挿入位置によってメソッド使い分ければいいじゃんてことが言いたい?

664:デフォルトの名無しさん
10/01/14 11:08:18
スタックとみなしてる意図のメソッドと、キューとみなしてる意図のメソッドってあるよね

とかそんなことだと思う

665:デフォルトの名無しさん
10/01/14 17:43:13
たまたま何処かでそういうコードを見かけて、unshiftで事足りるのに
わざわざinsert使っているのは何故なんだっていうところだろうね。

666:デフォルトの名無しさん
10/01/14 20:04:56
バグを見つけたらどうしたらいいの?

667:デフォルトの名無しさん
10/01/14 20:16:27
[BUG] と出て落ちたとか Segmentation Fault したとかならまず検索かな
たいていは既に報告してて対処待ち

Rubygems みたいな外部ライブラリのバグっぽい感じのものならやっぱ過去の報告とか調べて
それでもなさそうなら Rubyforge や GitHub のページのバグ報告あたりに出すといい

ただ、断言してもいいけど6割はただの勘違いで、残りのうち3割5部は既に報告済みだと思う
どこのどのへんが怪しい動作と思えるのかここで言ってみ
報告のためにはそれなりに体裁とか前提条件とか洗い出さないと対処してもらいにくいけど
ここで何か言えばそのためのヒントくらいは出るかもよ

668:デフォルトの名無しさん
10/01/14 20:20:12
>>665
unshift と書いてあったら俺はキューのようなものだとみなす
キューでもないのに unshift と書いてあったらたぶんキレる
先頭に要素突っ込みたいなら insert 使え
最後に要素突っ込みたいなら << か push 使え

669:デフォルトの名無しさん
10/01/14 20:27:34
沸点低いなー

まあ確かに順番必要ないのにArray使ってる例というのは結構あって

670:デフォルトの名無しさん
10/01/14 21:33:30
バグの情報はどこにあるの?
Googleで4・50件ほど見たけど無かった。
win32でコマンドラインに特定の非ASCII文字を含むディレクトリ名を指定するとワイルドカードが展開されない

671:デフォルトの名無しさん
10/01/14 21:35:23
bugはここ
URLリンク(redmine.ruby-lang.org)
サンプルコード見せて

672:デフォルトの名無しさん
10/01/14 22:16:49
>>670
非ASCII文字の中に「表」とかの \ で終わる文字が入ってるんだろ

673:デフォルトの名無しさん
10/01/14 23:06:29
Do One Thing for Rails 3 on January 16th and 17th
URLリンク(railsbridge.org)

674:デフォルトの名無しさん
10/01/14 23:11:49
Rubyでwebアプリ作るときはcgi使うのとERB使うのと
お作法的にはどっち?

675:デフォルトの名無しさん
10/01/14 23:13:46
どっちもつかわねー、というのが答ではあるが
初心者のうちは全部使って長所短所欠点体に刻んどけという気はする
どうせ外に出したりしないだろ

676:デフォルトの名無しさん
10/01/14 23:15:09
何使うの?

677:デフォルトの名無しさん
10/01/14 23:15:28
>>670
その「特定の非ASCII文字」が何かによって答えは変わる。
シフトJISにない文字なんじゃないかと思うが如何?

678:デフォルトの名無しさん
10/01/15 00:13:11
>>644
RackやRackに基づいたもので、普通のCGIは作れるのでしょうか?
調べてみても、mod_railsとかmongrelとかの環境を作らないと
動かせないように見えるのですが...

679:デフォルトの名無しさん
10/01/15 00:20:18
>>678
できる
できるが、rack/cgi はリリースされても全く動かなかったことがある
(つまり誰も本気でテストしてなかった)というヤな過去があって

つまり誰もやってないんだよね
理屈上はできるし理屈上はRackでやるとキレイなんだけど、
CGI作るということ自体がもうあまり流行らないから

680:デフォルトの名無しさん
10/01/15 00:28:29
>>671

D:\tmp\r>ruby -e "p ARGV" D:\tmp\r\本/*
["D:\\tmp\\r\\本/*"]

D:\tmp\r>ruby -e "p ARGV" D:\tmp\r\表/*
["D:\\tmp\\r\\表/*"]

D:\tmp\r>ruby -e "p ARGV" D:\tmp\r\漢/*
["D:/tmp/r/漢/新規テキスト ドキュメント.txt"]

漢字の2バイト目が\とか{とか

681:デフォルトの名無しさん
10/01/15 02:40:12
とりあえずバージョンを書いて
1.8.7p160だと問題なかった

pの出力で日本語が出てることをみると1.9系だと思うが
1.9.1p243だと >>680 と同じ状態

Dir.glob に渡した時はちゃんと展開されるが
コマンドライン引数を展開する時はダメなんだね
UNIXだとコマンドライン引数のワイルドカードはシェルが展開するから、開発者には気付かれにくいのだろう

昔の1.8は Dir.glob自体がSJISに完全対応してなくて、コマンドライン引数にも同様の不具合があったけど
今回のはコマンドライン引数の時だけの不具合なのか


682:デフォルトの名無しさん
10/01/15 03:16:56
def set_select_quests
for i in 0..9
quest_number = rand(10)
@select_quests |= quest_number.to_a if select_quests_flag(quest_number)
end
end

def select_quests_flag(index)
return false if @select_quests.include?(index) #・・・@
return true
end

@で@select_questsに同じ要素が入っている場合falseを返す様にしたいのですが
この場合include?(val)メソッドしかないですよね?
なんかうまく動かないんですがどこか間違ってますか?

683:デフォルトの名無しさん
10/01/15 03:29:47
>>682
@select_quests << quest_number if select_quests_flag(quest_number)
かな

684:デフォルトの名無しさん
10/01/15 04:05:24
>>654
え、うそ!!!1
RubyGemsが遅いのってmswin32版のせいなの???
くっそー今まで散々苦労してきたのにー
確かにcoLinuxとかだとめっちゃ早いと思ってたわ。
mingw版だと早い?、とか

685:デフォルトの名無しさん
10/01/15 06:38:43
とりあえずgemはバージョンが古かったら
サーバ側でバージョンが古いと怒って欲しい

686:デフォルトの名無しさん
10/01/15 07:35:58
>>685
おう、そういう機能入れたから、rubygem をアップデートしてくれ

というわけで鶏と卵だ

687:デフォルトの名無しさん
10/01/15 07:43:14
>>682
def initialize
@select_quests = Array.new
...
end

def set_select_quests
(0..9).each.do |i|
quest_number = rand(10)
# @select_quests に quests_number が含まれてなかった場合追加する
@select_quests << quest_number if @select_quests.include?(quest_number)
end
end

688:デフォルトの名無しさん
10/01/15 08:06:58
>>687のifはunlessの間違いだと思う冬の朝

689:デフォルトの名無しさん
10/01/15 20:25:24
rubyはwindowsで動かすとどうして遅いの?
ずーと前からみたいだけど直すきないの?

690:デフォルトの名無しさん
10/01/15 20:28:45
開発者がアウトオブ眼中だから

691:デフォルトの名無しさん
10/01/15 20:29:00
>>689
なんでWindozeを使ってるの?
LinuxやBSDやSolaris使えばいいだけじゃないの?
文句言ってるだけで何も行動しようとしないのはなんでなの?

692:682
10/01/15 20:46:00
ありがとうございました
うまくいきました

693:デフォルトの名無しさん
10/01/15 20:46:26
>>689
めんどくさいから
いやマジで
誰にでも絶対に起こるなら直されると思うんだが実際はそうではない

694:デフォルトの名無しさん
10/01/15 20:50:00
>>689
>>691みたいな人ばっかりだから

695:デフォルトの名無しさん
10/01/15 20:55:02
>>693
だよね
むしろ嫌がらせっぽい

696:デフォルトの名無しさん
10/01/15 21:26:17
WindowsOSがやめられないので、ちょっとずつPythonに移行し始めたよ。
既存のクラスにメソッド追加したり、injectとかがちょっと使いづらい以外不満はない。

697:sage
10/01/15 21:29:39
Pythonたんは、純粋なオブジェクト指向じゃないよね。
len() とか気持ち悪い。

698:デフォルトの名無しさん
10/01/15 21:37:14
>>697
最初はそう思ってたけど慣れればそんなもんかって思えるよ。
あとは、三項演算子やcase文がないのがちょっと残念くらいなもんか。

699:デフォルトの名無しさん
10/01/15 21:38:39
>純粋なオブジェクト指向
Rubyも「+」とか「end」はオブジェクトじゃないよね

700:デフォルトの名無しさん
10/01/15 21:41:20
>699
不完全性定理というのがあってだな

701:デフォルトの名無しさん
10/01/15 22:19:11
文字列をn文字ずつ&1文字ずつに分割したいのですが
x = "ABCDEFGHIJKLMNOPQRSTUVWXY"
x = x.scan(/.{5}/)
x.collect!{|y|y.scan(/./)}
p x
=>[["A","B","C","D","E"],["F","G","H","I","J"],["K","L","M","N","O"],["P","Q","R","S","T"],["U","V","W","X","Y"]]
みたいに書くと都度、正規表現によるマッチが行われるので遅いです
もっと高速に実行する方法があったら教えてください。よろしくお願いします

702:デフォルトの名無しさん
10/01/15 22:20:42
まあ俺は自分の仕事が片付けばいいだけだから
オブジェクト指向の純粋さなんてどうでもいいわ


703:デフォルトの名無しさん
10/01/15 22:31:44
>>701
x.chars.each_slice(5).to_a とか。
Benchmark.bm で1万回ずつやった時間を比較したら半分弱の時間だった。


704:デフォルトの名無しさん
10/01/15 22:37:37
>>701
x.split(/.{5}/)
x.split(//)

がたぶん一番速い
これでも遅いという場合はそもそもそんな莫大な配列を文字から作る理由は何というとこから

705:デフォルトの名無しさん
10/01/15 23:10:56
>>704
そもそも要件を全然満たしてない件

706:デフォルトの名無しさん
10/01/15 23:17:57
enumeratorと配列の違いって何ですか?
なんとなく大体同じもののように思えるんですが

707:デフォルトの名無しさん
10/01/15 23:42:36
超巨大な集合から1つずつ取り出そうとしたとき、Enumeratorは全部を
覚えていなくてもいいぞ。
alphabets = %w(a b c d e f g h i j k l m n o p q r s t u v w x y z)

alphabets.combination(13).first(5) は造作もないが
alphabets.combination(13).to_a.first(5) はたぶんメモリ足りない。


708:デフォルトの名無しさん
10/01/16 00:46:48
>>706
数えられて、返ってくる順番が保証されないのがEnumerator
Enumeratorを継承してるので数えられて、しかも順番情報を保持するようにしたのがArray

こう考えるとSetの出番がないんだがまあ誰も覚えてないし誰も使ってないと思うので気にするな

709:デフォルトの名無しさん
10/01/16 12:34:07
>>701
シングルバイト文字限定でいいのかな?
であれば

x = "ABCDEFGHIJKLMNOPQRSTUVWXY"
res = [[]]
x.each_byte do |b|
if res[-1] < 5
res[-1] << b.chr
else
res << []
end
end

で,どうでしょう?

710:デフォルトの名無しさん
10/01/16 14:39:59
ruby1.9の正規表現で,\wがマルチバイト文字にヒットしてくれません。
以下のコードはなにか間違っていますでしょうか?

# coding: cp932
p "日本語" =~ /\w/s #=> nil

鬼車のドキュメントには\wは多バイト文字にマッチすると書かれているのですが。
URLリンク(www.geocities.jp)

711:デフォルトの名無しさん
10/01/16 14:44:55
\w は Ruby では元々 [0-9A-Za-z_] という意味のメタ文字だったので、
1.9 でもそうなってる。

712:デフォルトの名無しさん
10/01/16 14:51:19
>>711
Thanksです。
マルチバイト文字を含めた単語構成文字にマッチするナイスな正規表現ってありませんか?

あとドキュメントのURLが間違ってました。
URLリンク(www.geocities.jp)

713:710
10/01/16 14:58:14
自己レスです

# coding: cp932
"日本語" =~ /\p{Word}/s

でいけました。

714:デフォルトの名無しさん
10/01/16 15:02:56
たしか ¥d が漢数字にマッチしてしまって使いにくくなってたので
その種のは使い分けるようになったんだっけ?


715:デフォルトの名無しさん
10/01/16 17:22:03
>>709
1.9系なら↓でマルチバイトもOK

x = 'あいうえおかきくけこさしすせそ'
res = []
x.each_char.each_slice(5){|a| res << a}

716:デフォルトの名無しさん
10/01/16 17:29:26
これでもできるな

x = 'あいうえおかきくけこさしすせそ'.each_char.each_slice(5).map{|a| a}

717:デフォルトの名無しさん
10/01/16 17:32:17
Windowsのユニコードのファイル名が扱えるライブラリはありますか?

718:デフォルトの名無しさん
10/01/16 17:33:00
>>717
ありません

719:デフォルトの名無しさん
10/01/16 17:38:28
いやいやいやいや、直接API呼べば問題ないからさ
そういうライブラリがrubygemsあたりにでもないかという話だろう

でもこれで困るの日本人とかだからなー

720:701
10/01/16 18:50:38
レスありがとうございます
>>703の方法が一番早いようなのでこれを使わせてもらいます

721:デフォルトの名無しさん
10/01/17 10:37:45
皆さんはRubyのコードを何で書いてるのでしょう?
やっぱり、Emacs or vim?

補完が効くのが良いのですが・・・・


722:デフォルトの名無しさん
10/01/17 10:48:27
Emacsが無難ということに一応なってはいる

適当な統合環境が快適に動作する環境なのなら、エディタ部のコード書きの補完機能だけ使うのも悪くはない
Emacsを一度も使ったことがなくて基本キー操作から覚えなければならないというのだとすれば尚更

Emacsが好まれてるのはエディタの軽さの範疇を実際上は超えてないというのが大きい
もしEclipseやNetBeansが超サクサク動作だったならEmacsは時代遅れ度を2段階くらい上げていたはず

723:デフォルトの名無しさん
10/01/17 11:02:32
Emacsは現代的なIDEが提供するところの補完機能を厳密にはもってない
…まあ、実用上はそれほど困らないが

724:デフォルトの名無しさん
10/01/17 11:35:27
拙者は秀丸でござる。
感謝の意を込めてちゃんと送金したでござる。

725:デフォルトの名無しさん
10/01/17 11:35:48
Emacs で指がつったら vim も試してみてね by vim厨

726:デフォルトの名無しさん
10/01/17 11:46:52
>>721
主にNetBeans使ってる。IDE厨なのでw

ただし、NetBeansの最新の6.8はいろいろとバグが・・・

727:デフォルトの名無しさん
10/01/17 11:57:45
俺もいわゆるスクリプト程度しか書かないからEmacsで十分だな
でもたしかにIDEがエディタ同様に軽ければそっち使うかも

728:デフォルトの名無しさん
10/01/17 12:36:38
通常のエディタでは慣れてくると物足りない(プログラミング初心者は補完のないエディタでやること)
IDEはおおむね重いし遅いしプロジェクトとかそんなのが必要な大作ばかり作るわけじゃないから邪魔

というところにすこんと入るのがEmacs
全部できるが余分で煩雑で重い、というものを使うよりは、
やや足りなくて手作業が入るが軽快、のほうを選ぶ人は意外と多い

729:デフォルトの名無しさん
10/01/17 13:17:32
emacs自体あんまり使わないんだけど、ショートカットキー一発で
全体を整形&フィリング(emacsではこういうのかな)できる設定ないかしら。

730:デフォルトの名無しさん
10/01/17 13:20:51
あるお。
俺はCtrl-x hとかしたあと、Ctrl+Alt+\を押してる。
フィリング?は知らんけど。

731:デフォルトの名無しさん
10/01/17 13:20:54
結局>>717は無いの?

732:デフォルトの名無しさん
10/01/17 13:21:05
class C
 def hoge
  とても長いメソッド...
  local_var = value #<= ここだけを書き換えたい
  ...
 end
end

メソッド定義内のローカル変数たった一行を書き換えたいんです。
とても長いメソッドなので,class_eval{def...無意味なコピペ...end}をしたくありません。
スパッと書き換えることはできませんか?

とりあえずSCRIPT_LINES__とripperを使えば20行くらいでできるのですが,
もっとストレートな方法があるかもしれないと思い質問しました。
ちなみにbindingを使った実験には失敗しました。
よろしくお願いします。

733:デフォルトの名無しさん
10/01/17 14:05:33
>>731
本スレ行って聞いてみたら

734:デフォルトの名無しさん
10/01/17 14:22:30
Emacs が軽快とか隔世の感、とか言うのは多分年寄り。

735:デフォルトの名無しさん
10/01/17 14:32:07
今は通信速度が速いから、Emacs も簡単にダウンロードできる。
昔はフロッピーで小分けにして、配布してたな。

736:デフォルトの名無しさん
10/01/17 14:36:14
>>731
Perlの↓相当がgemにあればいいんだろうけど
URLリンク(perl-users.jp)
いまgemでサーチかけた感じだとなさそう

必要なら↑を参考にしてRubyにportしたら?

737:デフォルトの名無しさん
10/01/17 14:46:29
>>731
1.9.2で扱えるようになるかも、ってことらしい
URLリンク(blade.nagaokaut.ac.jp)

738:デフォルトの名無しさん
10/01/17 14:54:30
>>731 >>736-737
あれ、WindowsだとUNICODEファイル名ダメだったのかー
gemでモンキパッチみたいに簡単にWindowsのときだけOKにできるのとかあったら便利そうだね。
システムの根底だから難しいのかね

739:デフォルトの名無しさん
10/01/17 20:48:07
>>736-738
ありがとう。だが初心者にはハードル高すぎ
1.9.2に期待しまつ。いつごろ出るんだろ?今年の春頃?


740:デフォルトの名無しさん
10/01/17 20:52:56
一応「もう出てる」レベルではあるんだが、Windowsでは自力でソースからコンパイルしないといかん
rubygemsとかも未対応で動作しない可能性も大きい
しばらく前の1.9.1状態

来年くらいには使える状態になってるんじゃないかなあ

741:デフォルトの名無しさん
10/01/17 21:21:56
なんか直接いじればどうにかなりそうな気はするんだけどねえ

742:デフォルトの名無しさん
10/01/17 21:54:31
すいません、これ↓を使いたいんですが、何から始めればいいのか教えてください。
URLリンク(gist.github.com)

743:デフォルトの名無しさん
10/01/17 22:12:49
>>730
フィリングってのはこういうの。文章の段落内でESC qでできる。
# ながーーーーーい説明文菜がーーー否がーーー否がーーーーーーーーーーーーーーーーーーーーい

# ながーーーーーい説明文菜がーーー
# 否がーーー否がーーーーーーーーー
# ーーーーーーーーーーーい

んで、ソースコード全体を一発で整形&フィリングしたいのんよ。ruby-modeで。

744:デフォルトの名無しさん
10/01/17 22:20:06
>>742
見てわからんのならスクリプトがすこし違って詰まったときの対処も自力で全然できないということだから
素直に Ruby の勉強を進めたほうがいいような気がしないでもない

前情報として、Ruby の知識が全然ないのなら使えないよ
MySync GoogleContacts でぐぐると唯一出てくるから、
これをしたい場合は Ruby 上でこれを動かすしかないわけだけど、
まったくの一見さんが使えるようなクオリティにはそもそもなってない

を踏まえて
Ruby を適当にインストール、URL の Download からダウンロードして展開して、
au2gcontact.rb をてきとうなとこにコピー
その後、au2gcontact.rb 自身のファイルの文字コードを Shift_JIS というか CP932 に変換
MySync が吐き出したエクスポートの CSV(Shift_JISに変換済)を第 1引数に、
GoogleContacts に食わせたいファイル名を第 2引数にして、
ruby au2gcontact.rb mysync.csv output.csv
と実行
output.csv は ShiftJIS(というかCP932)だが、
これがそのまま GoogleContacts にでインポートできるかどうかまでは知らない

745:742
10/01/17 22:53:26
なんかよくわからんまま試行錯誤したら一応の目的は達しました。ありがとうございました。以下俺メモです。

rubyをインストール。
ソース(っていうのかな?)をメモ帳にコピペ。拡張子を.rbに変える。
au2gcontact.rbとaddress.csv(←LismoPortが吐き出すやつ)とgcontact.csvをC:\Documents and Settingsに置く。
コマンドプロンプトからruby au2gcontact.rb address.csv gcontact.csv
出てきたのをgmailにインポートでおk。

いやーすごいですね。感動しました。ほんとありがとうございました。

746:デフォルトの名無しさん
10/01/18 01:19:39
>>743
Emacs のスレで聞いたら adaptive-fill-mode の使い方なり filladapt.el の後継なり
何か情報が入るんでない?

747:デフォルトの名無しさん
10/01/18 03:41:47
乗り遅れた感あるけど

vim+neocomplcacheでやっとります。

748:デフォルトの名無しさん
10/01/18 09:32:46
> rubyはwindowsで動かすとどうして遅いの?
Ruby 1.8.7-p174 の select が遅かった話じゃなくて?
URLリンク(www.garbagecollect.jp)
Ruby 1.8.7-p249 にすれば直るよ。

> たしか \d が漢数字にマッチしてしまって使いにくくなってたので
Ruby 1.9.1 の初期はそうだったんだけど、この挙動はバグ扱いされて修正されたので、
Ruby 1.9.1-p378 にすれば直るよ。

749:742
10/01/18 09:33:49
追記。適当なソフトでau2gcontact.rbの文字コード変換をshift jisに変換。

750:デフォルトの名無しさん
10/01/18 15:18:11
puts "日本語".inspect
とすると、"¥123¥456" みたいな表示なりますけど、これを "日本語" のままで表示させることはできませんか。

751:デフォルトの名無しさん
10/01/18 15:35:00
1.8.7 mswin32の場合

irb(main):001:0> puts "日本語".inspect
"\223\372\226{\214\352"
=> nil
irb(main):002:0> $KCODE = "s"
=> "s"
irb(main):003:0> puts "日本語".inspect
"日本語"
=> nil


752:デフォルトの名無しさん
10/01/18 15:37:06
-Kオプションの方がわかりやすいかもしれないと思い直した

>ruby -Ks -e'puts "日本語".inspect'
"日本語"

753:739
10/01/18 18:25:32
1.9.2 preview1で試してみたけどダメだった

754:デフォルトの名無しさん
10/01/18 18:35:12
だからそういうふうにそもそも作ってないんだから標準で用意されたメソッドをどう使おうと絶対に駄目だって

755:デフォルトの名無しさん
10/01/18 19:39:35
火急的に困ってる人がいないんだろうね
見なかったことにするわけにもいかんと思うんだが、代替手段は何なのだろう
そこだけRubyを使わない?

756:デフォルトの名無しさん
10/01/18 19:58:33
1.9.2で扱えるようになるかも、ってことらしかったんで

757:デフォルトの名無しさん
10/01/18 20:21:42
#!ruby -Ku
require 'win32ole'
WIN32OLE.codepage = WIN32OLE::CP_UTF8
fso = WIN32OLE.new('Scripting.FileSystemObject')
a = fso.CreateTextFile("♡♥♡♥.txt", true)
a.WriteLine("This is a test")
a.Close()

758:デフォルトの名無しさん
10/01/18 20:35:46
笙。笙・笙。笙・.txt というファイルができました先生

759:デフォルトの名無しさん
10/01/18 20:39:55
u

760:デフォルトの名無しさん
10/01/18 21:01:23
環境とエディタによってはこのへんきちんと動作するように保存するのは微妙に難しいぞ
慣れればどうということもないんだが

761:デフォルトの名無しさん
10/01/18 21:11:27
おお! できました!! ありがとうございます!!!
これどうすればIOやDirで扱えるんですか?

762:デフォルトの名無しさん
10/01/18 21:20:06
>>761
扱えない
全部 WIN32OLE 内で完結させる必要がある
必要なのは Ruby の知識じゃないね

763:デフォルトの名無しさん
10/01/18 21:33:40
ですよねー...

764:デフォルトの名無しさん
10/01/18 21:35:43
最初と最後にリネーム処理かませば Ruby から扱うのも不可能ではないと思う

765:デフォルトの名無しさん
10/01/18 22:55:11
先生質問だよ質問

data = {/key/ => lambda{|m| "<#{m}>"}}


data.each_pair do |re, p|
 file.gsub!(re){|m| p.call(m)}
end

p file #=> key が <key> になってる

というような、
{正規表現 => キーのマッチ結果を便利に利用した結果の返り値またはただの文字列}
というデータを用いた連続置換をしたいのです
それで、data は外部から自由に与えたいのです

でも、よく考えたら lambda を作った時点では gsub の $1 も \1 もまだ無いから利用できないわけで
なにかうまい方法ないですか
eval ならなんとかなると思ったんだけど普通の置換後に使いたいだけの文字列も eval してしまいます

766:デフォルトの名無しさん
10/01/18 23:47:16
>>765
m = Regexp.last_match
puts m[0]
とかでできないかな?

あと
data.each_pair do |re, p|
 file.gsub!(re, &p)
end
でいいような気がするけど試してはいない。


767:デフォルトの名無しさん
10/01/18 23:55:48
こういうことだろうか。

to = data.each_pair.inject(from) {|result, pair| result.gsub(pair[0], &pair[1]) }



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

5392日前に更新/233 KB
担当:undef