2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

Ruby 初心者スレッド Part 58

1 :デフォルトの名無しさん:2016/03/23(水) 21:16:44.36 ID:6HedlyzC.net
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 57
http://peace.2ch.net/test/read.cgi/tech/1426165733/

るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/

Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/

逆引きRuby
http://www.namaraii.com/rubytips/

2 :デフォルトの名無しさん:2016/03/24(木) 04:01:05.34 ID:FJvNCHp3.net
たのしいRuby 第5版、2016

Effective Ruby、2015

メタプログラミング Ruby 第2版、2015

Rubyのしくみ、2014

改訂3版 基礎 Ruby on Rails、黒田努・佐藤和人、2015

3 :デフォルトの名無しさん:2016/03/24(木) 19:11:14.30 ID:5a9zwPTf.net
Windows版でunicodeのコマンドライン引数まだ使えないの?

4 :デフォルトの名無しさん:2016/03/25(金) 09:00:13.57 ID:amKPWQ2X.net
Seleniumデザインパターン&ベストプラクティス、2015
OSSのブラウザ自動テストツール、Selenium WebDriver を使って、
Rubyでテストを書いた本

Effective Ruby、2015
バグが起きにくい、安全で効率的なコーディングと、
間違いやすいポイントを解説

Rubyのしくみ、2014
Rubyの実装系、Ruby1.9のRuby仮想マシンの本

5 :デフォルトの名無しさん:2016/03/27(日) 10:04:22.49 ID:zeXJFeRN.net
ヤクザ

6 :デフォルトの名無しさん:2016/03/28(月) 02:19:58.22 ID:NlvcQEtD.net
http://49.media.tumblr.com/7ae74678e1d2f5bea5faf824823d0176/tumblr_noklqpmdua1us3zemo1_540.gif

7 :デフォルトの名無しさん:2016/03/30(水) 08:52:01.47 ID:8NmKCzQm.net
おわってるな

8 :デフォルトの名無しさん:2016/03/30(水) 10:23:11.00 ID:pubF0BCK.net
aという文字列でp aとやると\\と表示されるのに
a.count"\\"をやると1とでます
文字列で\¥を\だけにするほうほうおしえくてださい

9 :デフォルトの名無しさん:2016/03/30(水) 11:09:52.71 ID:14q3t0GC.net
前スレ落ちてるからよく分からないんだけど、ここは質問とかしていいのか?

10 :デフォルトの名無しさん:2016/03/30(水) 12:05:39.08 ID:R5AIxfw4.net
a = '\\'
p a #=> "\\"
puts a #=> \

puts a.count('\\') #=> 1

p はデバッグ用関数だから、内部に入っているものが見えているだけ。
ちゃんと、puts a すれば、\ と1文字になる

11 :デフォルトの名無しさん:2016/03/30(水) 12:19:47.60 ID:MbRjE7fG.net
ハッシュオブジェクトのイテレーションについて教えてください。
よくある言語実装のように代入時のままの順序かどうかは保証されていないんでしょうか?

http://stackoverflow.com/questions/17355316/hash-ordering-preserved-between-iterations-if-not-modified
・Ruby1.9 からは保証されてる。信頼してよい。RubySpecのココ見たらいいがな (←リンク切れ) Jun 28 '13 at 0:29
って意見と
・Ruby 2.2.0 からは別に rubyspec に従ってるわけじゃないからな。(実装次第で保証されないって事?) Mar 20 '15 at 4:06
があります。現在はどうなってるんでしょうか?

12 :デフォルトの名無しさん:2016/03/30(水) 12:32:31.71 ID:MbRjE7fG.net
pry (ver0.10.1 on Ruby 2.1.8) で
ri Hash してみたら

Hashes enumerate their values in the order that the corresponding keys were
inserted.

と出てきました。
これは今後も保証されると思っていいんでしょうか?

13 :デフォルトの名無しさん:2016/03/30(水) 12:55:41.31 ID:R5AIxfw4.net
Javaでは、LinkedHashMap という、挿入された順に、キーを管理する、HashMap があるけど

Rubyは知らない

14 :デフォルトの名無しさん:2016/03/30(水) 13:29:51.33 ID:S0HkEiDs.net
>>12
Arrayは順番を必ず保証する
なぜなら取り出す順番が保証されていることが配列の存在意義だから
Hashは順番を必ずしも保証しない
なぜなら取り出す順番は連想配列の存在意義じゃないから
それ以上の意味はない

現在の実装は「たまたま」順番が保証されているけどそれはオマケとか親切とかそういうレベルの話
p Time.nowで確実なのは現在時刻を表示することだけであって
表示される文字列を決め打ちして処理にかけてはいけないというのと似たようなものだ
将来ユーザーフレンドリーに日本語で表示されるかもしれない

15 :デフォルトの名無しさん:2016/03/30(水) 13:48:45.91 ID:mQiL8UBv.net
このへんはしょっちゅう議論されてるけど、取り出す順番の固定化を必要としているならHashという名前のものは使わないのが「プログラミングの普通」なのよ

順番固定で勝手に出てくること自体は構わない
だけど、それを頼りになにか処理を記述するのは非常に奇妙で不快に映る
繰り返すけど、出てくる順番が揃ってるのはいい
それを利用するようなコードを見ると吐き気がする
HashArrayとかOrderdHashとかそういう名前のオブジェクトなら納得するけど、Hashという名前では歴史的名前的にダメ

16 :12:2016/03/30(水) 14:34:26.61 ID:MbRjE7fG.net
ありがとうございます。

17 :デフォルトの名無しさん:2016/03/31(木) 00:11:32.35 ID:SXg61G2F.net
仕様じゃない動作に頼るなという話ならそう思うが、責務を限定しろという話ならそれはrubyには通用しない話だと思う

18 :デフォルトの名無しさん:2016/03/31(木) 01:39:56.18 ID:hZH1pyKx.net
Rubyは手軽で愛用してるのですが、
GUIを用いたりexeにまとめて配布するものまでRubyで行おうとすると、結果的に別言語を習得するのよりコストかかるでしょうか?
試みたことある方いらっしゃいましたら意見くださると嬉しいです

19 :デフォルトの名無しさん:2016/03/31(木) 12:59:43.70 ID:yy0681Er.net
制作者は、gem だけを配布して、
それを使う人が勝手に、システムにインストールして使う

RoRのようなWebアプリならあるけど、
Rubyで作った、デスクトップGUIアプリってあるのか?

20 :デフォルトの名無しさん:2016/04/01(金) 07:05:17.08 ID:6aCBXilE.net
JRuby+swingなどは試してみたのですが、Java知識が皆無なためかかなり詰まるんですよね
素直にC#とか学んだ方がいいのかもしれませんが、RGSSのようなものを知ってしまったので微妙に未練が……

21 :デフォルトの名無しさん:2016/04/02(土) 18:12:28.67 ID:CqWvTnZR.net
ruby初心者なのですがsoap通信のプログラムを作っていて
エラーが出ていて調べたのですが原因がよくわかりません

wsdlは下記を使用しています
http://h-invitational.jp/hinv/hws/varysysdb/soap_search_rs_number.php?wsdl

そして下記のコマンドを実行しました
[root@localhost www]# wsdl2ruby --wsdl 'http://h-invitational.jp/hinv/hws/varysysdb/soap_search_rs_number.php?wsdl' --type client
[root@localhost www]# ruby search_rs_number_execServiceClient.rb
/usr/lib/ruby/gems/1.8/gems/soap4r-1.5.8/lib/soap/streamHandler.rb:268:in `send_post': 404: Not Found (SOAP::HTTPStreamError)
from /usr/lib/ruby/gems/1.8/gems/soap4r-1.5.8/lib/soap/streamHandler.rb:172:in `send'
from /usr/lib/ruby/gems/1.8/gems/soap4r-1.5.8/lib/soap/rpc/proxy.rb:179:in `route'
from /usr/lib/ruby/gems/1.8/gems/soap4r-1.5.8/lib/soap/rpc/proxy.rb:143:in `call'
from /usr/lib/ruby/gems/1.8/gems/soap4r-1.5.8/lib/soap/rpc/driver.rb:181:in `call'
from (eval):6:in `search_rs_number_exec'
from search_rs_number_execServiceClient.rb:27

22 :デフォルトの名無しさん:2016/04/02(土) 19:33:53.20 ID:cgCmjNww.net
>>20
「スッキリわかる Java入門 第2版」2014 を読めば?

>>21
HTTP 404は、ホームページ(のデータ)が見つかりません

23 :デフォルトの名無しさん:2016/04/02(土) 21:10:59.86 ID:0eiGAsV4.net
というかRuby 1.8 ってまだサポートしてんだっけ?

24 :デフォルトの名無しさん:2016/04/03(日) 02:37:49.45 ID:RpcNuWJW.net
>>22
ありがとうございます
プログラム側の問題というよりはホームページ側の問題みたいですね

25 :デフォルトの名無しさん:2016/04/03(日) 09:43:35.27 ID:T0KKITG1.net
>>24
ちがう
あなたにHTTPとHTML(やJavaScript(や一般的なサイト運用技術知識))の知識がないがために普通のブラウザの挙動をエミュレートできてない
必要なのはRubyの知識じゃなくってWebブラウザの挙動とHTTP通信とHTMLでのサイトの書かれ方の知識

26 :デフォルトの名無しさん:2016/04/03(日) 15:55:17.04 ID:RpcNuWJW.net
>>25
すみません、指摘していただいたことがうまく理解できないのですが
サーバにリクエストを送って帰ってきたHTMLファイルをブラウザが解析して
表示がされるという程度の認識でした。

自分の想定していた挙動は
>>21
>[root@localhost www]# wsdl2ruby --wsdl 'http://h-invitational.jp/hinv/hws/varysysdb/soap_search_rs_number.php?wsdl' --type client
を実行して作られたクライアントクラスの中を修正して
>[root@localhost www]# ruby search_rs_number_execServiceClient.rb
を実行すればXML形式で期待する結果が返ってくると思っていました。

27 :デフォルトの名無しさん:2016/04/03(日) 16:58:38.52 ID:OaDtSrzO.net
from search_rs_number_execServiceClient.rb:27

その前後の変数の内容を、片っ端から見てみれば?

28 :デフォルトの名無しさん:2016/04/04(月) 07:02:52.26 ID:UUnGIXWs.net
>1a77a8341bddc4b45418f9c30e7102b4
こういう0..fで構成されたハッシュ値を
>tp://i.imgur.com/nOBxnDb.jpg
>nOBxnDb
みたいな短縮URL風に短くするコード教えて下さい

29 :デフォルトの名無しさん:2016/04/04(月) 09:10:25.66 ID:jvwKdFAZ.net
>>28
どこからわからんのかくらいは言って欲しい
16進数を(10進数に置き換えてから)26進数なり52進数なりに計算し直して文字を当てはめる

30 :デフォルトの名無しさん:2016/04/05(火) 13:10:42.86 ID:wRkvpogr.net
gets(

31 :デフォルトの名無しさん:2016/04/05(火) 13:12:49.42 ID:wRkvpogr.net
標準入力から一度に改行を含めて文字列を得るにはどうやりますか?

32 :デフォルトの名無しさん:2016/04/05(火) 13:52:47.37 ID:Uvoa8jl9.net
Rubyで真にprivateなインスタンス変数を作るにはどうしたらいいんでしょうか?
別に切羽詰まった話ではありません、ふと浮かんだ疑問です。

class SecretHeart
def initialize(feeling="")
@feeling = feeling
end
private
def feeling=(any) end
private
def feeling() nill end
end
john = SecretHeart.new("悲しい")
print john.feeling # → error
print john.instance_eval{@feeling} # → "悲しい"
print john.instance_eval{@feeling = "楽しいです!"}
print john.instance_eval{@feeling} # → "楽しいです!"

BasicObject#instance_eval を使えばなんでもアリじゃないですか?
private
def instance_eval() end
こんなoverrideをしても、きっとまだ裏道ありますよね。

33 :デフォルトの名無しさん:2016/04/05(火) 14:12:22.26 ID:F6iG++QK.net
# 標準入力から、一気に終わりまで読む
ary = $stdin.readlines

# 1行ずつ処理する
ary.each_line do |line|
line.chomp!
end

34 :デフォルトの名無しさん:2016/04/05(火) 14:16:14.23 ID:Wtb6QTFr.net
>>32
>Rubyで真にprivateなインスタンス変数を作るにはどうしたらいいんでしょうか?
Rubyでは絶対的なアクセス制御はできない
なぜなら「普通に」アクセスした時に拒まれさえすれば用は済むからだ

35 :デフォルトの名無しさん:2016/04/05(火) 14:20:10.18 ID:Uvoa8jl9.net
>>34
了解。 そういう文化なんですね。

36 :デフォルトの名無しさん:2016/04/06(水) 00:23:46.52 ID:q1HrDxSz.net
Win7でRubyを勉強しようと思うんですが、Cygwinでやるのがお手軽ですか?

37 :デフォルトの名無しさん:2016/04/06(水) 01:43:49.90 ID:SreJMpRz.net
ImageMagickやらのLinux由来の拡張ライブラリを使うのでなければ、Ruby Installerでいいんじゃない。

Win10にしてUbuntu on Windows上でRuby動かすってのはいつからできるんだっけか。

38 :デフォルトの名無しさん:2016/04/06(水) 02:33:03.12 ID:kRFLofHq.net
>>36
わざわざcygwin導入しなくてもコマンドプロンプトで十分
導入してるのならお好きに

39 :デフォルトの名無しさん:2016/04/06(水) 07:38:43.97 ID:BFsTf7eA.net
paiza.IO, CodePad など、ブラウザを使って、オンラインでもプログラミングできる

環境構築もいらん

40 :デフォルトの名無しさん:2016/04/06(水) 11:05:30.04 ID:vURaTx4x.net
>>39
そしてIDやパスワードを自分からお漏らしするまでがセットか
ttp://codepad.org/recent

初心者向け「だからこそ」ローカルで完結するべき

41 :デフォルトの名無しさん:2016/04/08(金) 21:35:25.29 ID:/jXs509G.net
class Tesuto < ActiveRecord::Base
validates :password, format: { with: /\A([^@\s]+)\Z/ }

devise :database_authenticatable, :registerable,
:validatable
end
スキャッフォルドで何かアプリケーションを作りたいと思い、scaffoldを使ってdeviseをインストールしました。
そこで編集ページできちんとパスワードが打てるようにvalidateも設定して空白禁止処理を施そうとしましたが、ユーザー登録やユーザーログインで空白をデフォルトで禁止されていて、
編集ページではデフォルトで禁止されておらず、空白が許可されています。

validateでpassword指定して空白禁止すると編集ページで変更するためのパスワードが省略できず、確認用パスワード、現在のパスワードの3回連続で打たなければなりません。
validate、またはほかの場所にどのような処理を施せばよろしいでしょうか?

42 :デフォルトの名無しさん:2016/04/08(金) 23:24:07.46 ID:R25zKOdT.net
WEBプログラミング板に、RoRのスレがあるので、そっちで聞いたら?

43 :デフォルトの名無しさん:2016/04/09(土) 00:40:43.27 ID:d9XDMAzz.net
>>41
before_action とかで空白禁止のバリデーションを edit のときのみ適用すればよいのでは?

44 :デフォルトの名無しさん:2016/04/09(土) 23:00:32.93 ID:O9j9lH5Y.net
>>18
>>19
GUIとEXEもわりと低コストでできるぞ

45 :デフォルトの名無しさん:2016/04/10(日) 05:59:09.98 ID:QHKhqpLv.net
>>44
よければ詳しく

46 :デフォルトの名無しさん:2016/04/10(日) 07:24:02.68 ID:WTOWAaLY.net
>>45
たとえばGUIはTk、EXEはOcraでできる

47 :デフォルトの名無しさん:2016/04/11(月) 00:47:25.00 ID:zoLHrFMR.net
railsのインストールできないんだけどどうしたらいい?
http://i.imgur.com/LrHWsVu.png

48 :デフォルトの名無しさん:2016/04/11(月) 01:03:31.98 ID:WJsT15xh.net
linuxに乗り換える

49 :デフォルトの名無しさん:2016/04/11(月) 01:10:55.06 ID:uBEcAuw5.net
rubyのバージョン2.3に対応してないみたいだね

50 :デフォルトの名無しさん:2016/04/11(月) 02:21:36.55 ID:JpybrsSq.net
RWBY は第4クルー始まるというのにね

51 :デフォルトの名無しさん:2016/04/11(月) 06:36:47.71 ID:zoLHrFMR.net
>>47
http://www.rubylife.jp/railsinstall/rails/index1.htmlの手順に従ってやって
その次にhttp://rubyonrails.org/行ってみたけどrailsダウンロードできない

52 :デフォルトの名無しさん:2016/04/13(水) 16:29:53.43 ID:372sz71r.net
10ビット3つを、(10, 10, 10)とbitsetのように使っているとき、
真ん中の10ビットを、上書きするにはどうすればよい?

上書きする演算子が見つからない

53 :デフォルトの名無しさん:2016/04/13(水) 17:42:17.15 ID:oU5fSDxg.net
何をしているのかよくわからんが

bitset = bitset & 0b111111111100000000001111111111 | 0000000000(上書きしたい10ビット)0000000000

ではいかんのか

54 :52:2016/04/13(水) 18:12:34.54 ID:372sz71r.net
ありがとう

元のビットの上書きしたい部分を、0&でマスクしてから、
ORで上書きすれば良かったのか

55 :デフォルトの名無しさん:2016/04/15(金) 21:02:46.68 ID:qyn/7G/H.net
pryでShiftキーを押すと結構な確率で動きが一時的に固まるんだけどどうしたら良いのかな

例えば
puts "Hello, World!"
って左から順に打った場合、"、H、W、!、"のどれかを押した瞬間に固まってそのまま数十秒動かなくなる
その間はCtrl+cとかも無反応

Pry version 0.10.1 on Ruby 2.2.3
Windows 8.1

56 :デフォルトの名無しさん:2016/04/15(金) 21:43:29.46 ID:kJz9a6FQ.net
ActiveRecordの関連付けってなにが嬉しいんですか?

57 :デフォルトの名無しさん:2016/04/15(金) 22:08:30.22 ID:dCoxeauz.net
>>56
複雑あるいは面倒な処理を簡単かつ直感的なメソッドチェインで扱えるところが嬉しい

58 :デフォルトの名無しさん:2016/04/15(金) 23:38:46.31 ID:pdQdC9Xb.net
>>52
xor だったら入力のマスクも簡単にできる
bitData ^= ((1 << bitOffset + bitLen) - (1 << bitOffset)) & (bitData ^ (setVal << bitOffset))

59 :デフォルトの名無しさん:2016/04/17(日) 00:33:18.57 ID:v9XO8+KJ.net
Ruby始めようと思ってこのスレ来たが、中括弧じゃなくてendなのか

60 :デフォルトの名無しさん:2016/04/17(日) 00:55:07.10 ID:7GcoLz9W.net
RubyはC++でもJavaでもCでもVBでもないので
予断持たずにきちんと体系的に学習することをお勧めします
なお「RubyはC++でもJavaでもCでもVBでもない」というのは煽りじゃなく本気のアドバイスです

61 :デフォルトの名無しさん:2016/04/17(日) 01:07:34.17 ID:BiZQs4Wa.net
何から何まで独特だよね
ここまで流行ったのが不思議なほど

62 :デフォルトの名無しさん:2016/04/17(日) 22:49:27.40 ID:DiLcHZEv.net
Python, Rubyはすごい便利だから、Googleも、実装すべき

>>59
ブロックでは、do 〜 end は複数行で、{ } は1行のみの処理で、使うことが多い

63 :デフォルトの名無しさん:2016/04/18(月) 00:49:33.87 ID:zxdOCIHu.net
独特というかむしろ
いろんな言語を折衷してるから
書きやすいと思う

書きやすいから流行った

64 :デフォルトの名無しさん:2016/04/18(月) 23:52:27.01 ID:IbVy+CTe.net
win32oleのieでgoogle検索するやり方はわかったんだけど、
一番最初の検索結果のページに飛ぶやり方がわからない。
検索後ie.document.links.item(0).clickとかやってみたけど全然ダメだった。
ソースを見てみても複雑なjavascriptでよくわからん。

65 :デフォルトの名無しさん:2016/04/19(火) 06:12:04.67 ID:Zv7m44nm.net
説明しよう! いま現在のクローラー製作に必要なものは
・相手のサーバに目的のHTMLをきちんと表示させられる程度のHTTPの知識
・目的のリンクなり画像なりテキストなりの位置を判断できる程度のHTMLの知識
・目的のリンクなり画像なりテキストなりの位置を表現できる程度のXpathの知識
・通常のWebブラウザではどういう動作をしているのかを分析できる程度のJavaScriptの知識
・通常のWebブラウザでのクリックでどういうことが起こっているかを説明できる程度のWebブラウザ挙動の知識
の5つだ! Rubyスクリプトを作るはずなのにRubyと利用ライブラリの知識という項目が軽視されてることに注目だ!
どういう対象をどういう操作して通常のWebブラウザでいうところのどういう動作にあたるのかを理解せず盲目的に
> 検索後ie.document.links.item(0).clickとかやってみたけど全然ダメだった
とかやってるようでは道程は遠いぞ!
っていうかWebクローラーは初心者的な用途イメージの割にはWeb利用の統合的な技術知識が要求される上に
Googleは超絶効率化のために超絶高度な遣り取りやってるから練習やサンプルには全く適してないんだ! ご愁傷様だったな! Yahoo使えYahoo!

66 :デフォルトの名無しさん:2016/04/19(火) 06:20:43.61 ID:fF4GXe73.net
Rubyでクローラー作る本があるから読めば?

67 :デフォルトの名無しさん:2016/04/19(火) 15:19:46.53 ID:DoDYnfhi.net
ie.open(ie.document.links.item(0).value)

68 :デフォルトの名無しさん:2016/04/19(火) 19:12:04.08 ID:kcmoRlAu.net
>>67
`method_missing': unknown property or method: `value' (NoMethodError)

69 :デフォルトの名無しさん:2016/04/19(火) 21:14:24.24 ID:+csqt/Wa.net
>>68
ドキュメント読もう

70 :デフォルトの名無しさん:2016/04/19(火) 21:50:54.87 ID:kcmoRlAu.net
どこにドキュメントあるのかわからん。
ググれば見つかるもんなの?

71 :デフォルトの名無しさん:2016/04/19(火) 22:44:13.44 ID:+csqt/Wa.net
win32oleってやつ?だよな?
浸かったことないが検索したら出たぞ
2.1.0だけど http://docs.ruby-lang.org/ja/2.1.0/library/win32ole.html

72 :デフォルトの名無しさん:2016/04/20(水) 06:55:31.98 ID:w5hbs5qX.net
下を読めばわかるけど、クローラーって実は、驚異的に難しいw
エラーになる可能性が無数にあるので、言語どうこうの話じゃない

Rubyで、anemoneの物足りない部分を補完するクローラーを自作した
ttp://qiita.com/tkosuga@github/items/7c1b7bf98a697de66b68

るびきちが、Rubyによるクローラーの本を出している

>>64
そもそも他人の作ったプログラムは、簡単に解析できない。
APIの使い方を、公開していなければ、まず使うのは無理

企業はアプリを解析するのに、普通、1人月百万円以上払う。
それくらい難しいってこと

73 :デフォルトの名無しさん:2016/04/20(水) 07:40:43.74 ID:IJSlkgxq.net
難しいというよりとにかく泥臭い
Rubyistの仕事としては最底辺の部類

74 :デフォルトの名無しさん:2016/04/20(水) 11:21:11.72 ID:TvagBB0u.net
クロールされたサイトになんのメリットもないクローラー開発なんか
やっちゃだめだぞ。俺はやらされてたが。

75 :デフォルトの名無しさん:2016/04/20(水) 22:04:01.92 ID:+P5uzrzE.net
結局HTML読めないとクローラーって作れないのね。
まあ、ぼちぼち頑張るか。

76 :デフォルトの名無しさん:2016/04/21(木) 09:09:15.15 ID:636JdrjZ.net
Linux やmacでzip作成したいのですが、Windowsファイル名のダメ文字を
置換するリネームプログラムってないですか?

Windowsで使えない文字は「< > : * ? " / \ |」。
Linuxで使えない文字は、「/」(他はNull)で
Macで使えない文字は、「 : /」。

ファイルやフォルダはfindで検索するとして、指定ディレクトリの
ファイルやフォルダを「< > * ? " \ |」半角文字を検索し
全て全角に置換したいです。ruby1.8.7希望。

77 :デフォルトの名無しさん:2016/04/21(木) 13:53:08.49 ID:IzmoSDze.net
ruby unixコマンド 実行
とかで検索したら出てくるけどいくつかあるよ
find の結果の文字列を gsub で置換してやればいいんじゃね?

78 :デフォルトの名無しさん:2016/04/21(木) 16:32:18.89 ID:636JdrjZ.net
>>77
どうもです。ファイル名に複数のダメ文字がある可能性があるので一つの記号にgsubするしかないですね。

79 :デフォルトの名無しさん:2016/04/21(木) 19:52:32.92 ID:iEWNQ8UB.net
gsubはHashわたせば複数痴漢できるよ
ってそういう話じゃないか?

80 :デフォルトの名無しさん:2016/04/21(木) 20:36:07.43 ID:636JdrjZ.net
>>79
【Ruby】gsubで複数文字を置換したかった話 | カイトズズキ
http://www.kaitosuzuki.com/posts/406909

str = 'abcdef'
hash = {'a'=>'A', 'b'=>'B', 'c'=>'C'}
puts str.gsub(/a|b|c/, hash)

こんな感じかな。雰囲気はつかめたのでよかった。(^_^;) 楽できそうです。

81 :デフォルトの名無しさん:2016/04/21(木) 20:57:51.29 ID:/vBm71ZP.net
場合によっちゃあtrでもいいかもね
p '12345'.tr('15', 'lS')

"l234S"

82 :デフォルトの名無しさん:2016/04/22(金) 20:35:54.49 ID:2DzgCe5n.net
gsub重ね掛けするのってそんな面倒か?
ループで回すだけだと思うんだが。

83 :デフォルトの名無しさん:2016/04/22(金) 21:25:13.47 ID:lAvb/AZz.net
gsubでhash渡すやつ、なんか使いづらいな
正規表現をキー、一致した文字列を置換する文字列をバリューにとかなら便利なのに

84 :デフォルトの名無しさん:2016/04/22(金) 23:51:19.95 ID:++t+RWP3.net
>>81
require "jcode"
で全角の tr ができるようになる

85 :デフォルトの名無しさん:2016/04/23(土) 10:34:50.94 ID:5AJaEQrL.net
>>83
正規表現だと置換前の文字列が重複しかねなくない?

86 :デフォルトの名無しさん:2016/04/24(日) 14:22:44.47 ID:Uo+BTEtc.net
Rubyってダイレクトドライブアクセスできんの?

存在するドライブやディスクに対して
f = File::open(

87 :デフォルトの名無しさん:2016/04/24(日) 14:29:36.53 ID:aqqgpD8T.net
できる

88 :デフォルトの名無しさん:2016/04/24(日) 18:01:19.78 ID:+9N3vohH.net
なんとなくJSONを文字列化してCipher使って暗号化→復号化ってやってて、
復号化した後に文字列になったJSONをJSONに戻す良い方法が分からなくて困ってるんだけど、なんか良い方法ない?

89 :デフォルトの名無しさん:2016/04/24(日) 18:41:24.15 ID:+9N3vohH.net
申し訳ない、自己解決しました・・・
お目汚し失礼しました

90 :デフォルトの名無しさん:2016/04/25(月) 23:22:01.75 ID:VbK9UkJ/.net
#10から0を改行区切りで出力してください

for i in 10..0
print i
end

ではまちがっているんですか??

91 :デフォルトの名無しさん:2016/04/26(火) 00:09:41.02 ID:c1+pgvSl.net
私ならこうかくが

10.downto(0){|i| puts i}

92 :デフォルトの名無しさん:2016/04/26(火) 01:15:49.37 ID:du3QkmSG.net
downto使わないでfor to_a reverse とかいうのを
使うらしいんですけど

93 :デフォルトの名無しさん:2016/04/26(火) 01:34:24.43 ID:XcjXnWra.net
>>90
そんな書き方したことないから自信ないけど、範囲式は逆順指定できないんじゃないかな?
もしかしたら俺が勘違いしてるだけでできるかもしれないけど、普通しない

並びにfor文はあまり使われない
一応あるけど91のようにイテレータを使うのが一般的
詳しくはイテレータで調べてくれ

94 :デフォルトの名無しさん:2016/04/26(火) 01:39:20.39 ID:XcjXnWra.net
>>92
更新してなかった

10.downto 0 → 10から1ずつ減らしてループする
0..10.to_a.reverse → 0から10の範囲オブジェクトを作って配列に変換
それからその配列を逆順に並び替えて、要素それぞれを対象にループ

後者は無駄に長いし、処理時間も増えるし、メモリも食うし、
特別な理由がなきゃわざわざそんなことする意味ない

95 :デフォルトの名無しさん:2016/04/26(火) 17:28:12.49 ID:6COxB88I.net
初心者の人は、わかりにくい for in 構文を一体どこから拾ってきてるんだろ?
一般的なコードに for in なんてないのに。不思議だ。

96 :デフォルトの名無しさん:2016/04/26(火) 17:42:42.60 ID:du3QkmSG.net
改行区切りで出力するばあいは
print iの後になんというコマンドを追加すればいいのですか?
>>90を訂正したヤツだと改行しない結果になるらしいんですけど

97 :デフォルトの名無しさん:2016/04/26(火) 17:52:41.48 ID:hodGhGMX.net
puts i
print i.to_s + "\n"
print "%d\n" + i

98 :デフォルトの名無しさん:2016/04/26(火) 17:53:50.31 ID:hodGhGMX.net
print "%d\n" % i
修正ミス

99 :デフォルトの名無しさん:2016/04/26(火) 18:35:38.41 ID:du3QkmSG.net
#1から9の奇数を出力してください

for i in 1..9 #ここに範囲
puts i
end

でどう偶数抜いて表示すればいいんですか?

100 :片山博文MZ ◆T6xkBnTXz7B0 :2016/04/26(火) 18:38:58.99 ID:P4FlrKEb.net
2で割ったときの余りを使う。
for i in 1..9
puts i if i % 2 == 1
end

総レス数 1005
291 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★