X



Ruby 初心者スレッド Part 65

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん (ワッチョイ 0f80-JI52)
垢版 |
2018/12/22(土) 04:43:34.03ID:84E3pYZa0
プログラミング言語 Rubyについての、初心者向けスレです。質問・要望・雑談などをどうぞ

質問するときは、OSやRubyのバージョン、エラーメッセージを書いて下さい。
Ruby on Rails については、WEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 64
https://mevius.5ch.net/test/read.cgi/tech/1535797516/

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

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

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

Ruby コミュニティ公式
https://www.ruby-lang.org/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
0235デフォルトの名無しさん (ワッチョイ a333-BuCU)
垢版 |
2019/03/08(金) 00:49:28.36ID:OXqbGHm40
>>232
ムダにややこしく考えすぎ。
だいたい、コントロール文字が複数バイト文字の一部に含まれるエンコーディングはかつて存在しなかったし、今さら将来に発明されることもない。
0236デフォルトの名無しさん (ワッチョイ b252-1CkI)
垢版 |
2019/03/08(金) 01:06:02.77ID:Sy1GZuWW0
>>232
いつも他スレで暴れてるrubyボット君か。
毎度毎度、仕入れた知識の表層をなぞるだけで知ってるつもりになってるから、具体的な問題点が理解できてないし、考えようともしない。だからいつも的はずれなことを言っては他の人に突っ込まれる。
0237166 (ワッチョイ 162c-1cTK)
垢版 |
2019/03/08(金) 12:09:07.38ID:N66/0TP00
sjisには悪名高い「表」などのダメ文字が存在する。
複数バイト文字の最後のバイトに、\(逆スラッシュ)が存在する。
euc-jp では存在しないけど

ダメ文字で、バグらされた人は多い

特に外人は、1文字1バイトでコーディングするから、バグる!
0239デフォルトの名無しさん (ワッチョイ 162c-1cTK)
垢版 |
2019/03/08(金) 14:40:40.07ID:N66/0TP00
https://rubygems.org/gems/lazy_priority_queue/versions/0.1.1

Windows10 で、MSYS2 コンパイラー無しの状況で、上の順位キューを、
gem 'lazy_priority_queue', '~> 0.1.1'
で入れようとしていますが、

この、SHA 256 checksum は、gem で入れたモジュールに対して、どうやって確かめるの?

e5d4ea8d037e8743afc91019fc23f5f6858372fea73e05e8244f8964f0634337
0241239 (ワッチョイ 162c-1cTK)
垢版 |
2019/03/08(金) 15:26:21.92ID:N66/0TP00
ダウンロードじゃなくて、gem で入れた場合は、

checksum を確かめる必要は無かったかな?
0243デフォルトの名無しさん (ワッチョイ 1f7d-tMNZ)
垢版 |
2019/03/09(土) 08:50:15.35ID:Qv+6Y9Yd0
>>237
File.open( "foo.txt", "w:CP932" ){|fh| fh.puts("ソ") }
File.open( "bar.txt", "w:CP932" ){|fh| fh.print("ソ") }
File.open( "car.txt", "w:UTF-8" ){|fh| fh.print("\u4E0A") }
File.open( "foo.txt", "r:CP932" ){|fh| fh.seek(fh.size-1); puts fh.read(1).start_with?("\r","\n") }
File.open( "bar.txt", "r:CP932" ){|fh| fh.seek(fh.size-1); puts fh.read(1).start_with?("\r","\n") }
File.open( "car.txt", "r:UTF-8" ){|fh| fh.seek(fh.size-1); puts fh.read(1).start_with?("\r","\n") }
UTF-16やUTF-32等のファイルがあるなら対策すること。
0245166 (ワッチョイ 162c-1cTK)
垢版 |
2019/03/09(土) 11:14:06.24ID:GVs3bbIF0
>>243
テキストファイルとして読み込んだファイルに、
seek のようなバイナリ(1バイトずつの)処理を使うと、
複数バイトの文字が存在するから、バグらない?

複数バイトの文字があると、文字数とバイト数が異なるから
0248デフォルトの名無しさん (ワッチョイ ef12-GDas)
垢版 |
2019/03/10(日) 00:40:01.29ID:2U7BqM9T0
macでHomebrewを使用して、最新版2.6.1をインストールしましたが、
ターミナルでバージョンを確認すると古いもの(2.3.7)が表示される。

この場合考えられる要因は何でしょうか?
0250デフォルトの名無しさん (ワッチョイ 162c-1cTK)
垢版 |
2019/03/10(日) 19:48:05.79ID:bEzyp4mc0
Mac は知らないけど、元からRuby が入っているから、仮想環境のanyenv を使うとか?
元のバージョンも消せないでしょ?

rbenv(Ruby), pyenv(Python), ndenv(Node.js)

こういう事も知らない素人が、2.6 などの最新版を使ったら、ダメでしょ。
1年過ぎたバージョンを使え!

漏れは、Windows10 だけど、まだ、2.4.4 を使ってる
0254185 (ワッチョイ 162c-1cTK)
垢版 |
2019/03/10(日) 23:57:03.24ID:bEzyp4mc0
>>234
修正

String#lines の所を見たら、chomp: true で改行も削除できる。
こりゃ便利!

p ary = <<"EOT".lines( chomp: true ) # 配列
a
b
EOT

#=> ["a", "b"]
0255デフォルトの名無しさん (ワッチョイ 837f-/bUt)
垢版 |
2019/03/11(月) 01:01:19.82ID:5t+/rFdi0
なぁなぁ。
CSRF対策って、トークンを input hidden に書けってのが鉄板だけど。
あれってform action のURLに書いてもセキュア度って変わらないことないか?
URLなら href にも書ける(使い道は考えてない)
0256デフォルトの名無しさん (ワッチョイ 1f14-uGU8)
垢版 |
2019/03/11(月) 01:33:23.12ID:W406Vhex0
>>255
だめ

CSRFっていうのは、悪意のあるやつからリンクが送られてきて
それを開いてしまうことで成り立つもの

リンクの中にトークンを入れてしまったら意味がない
トークンがリンクの中に入らないからこそ意味がある
0257デフォルトの名無しさん (ワッチョイ 837f-/bUt)
垢版 |
2019/03/11(月) 01:43:29.79ID:5t+/rFdi0
>>2256
そんなん。
悪意のある奴から送られてくるリンクにあるトークンと
対象者の持ってるセッションに紐付けられるトークンは
全然違うやん。

悪意サイトに埋め込むフォームの場合も結局は
action と hidden を書くわけじゃん?
要するに hidden に書くべきトークンが予想できないからCSRF対策になる訳でしょ。
これが action に書いてあってもなんら変わらないじゃん?

↑以上、予想が非常に困難なトークンを前提。もちろんそれが当たり前だし。
0258デフォルトの名無しさん (オッペケ Src7-EzoF)
垢版 |
2019/03/11(月) 09:43:03.52ID:EA8HXttJr
>>257
全世界が認めている方法よりお前が考え出した方法のほうが優れていると思えるところがすげえな
お前と仕事する奴がかわいそう
0259デフォルトの名無しさん (ワッチョイ 837f-/bUt)
垢版 |
2019/03/11(月) 15:12:15.45ID:5t+/rFdi0
>お前が考え出した方法のほうが優れている

どこをどう読んだらそう解釈できんの?実際使うとか、勝手に妄想するなよ……。
そもそも全世界が認めている方法であれば理由は明確なんだよな?
その割に鉄板扱いの呪文レベルで、理由が書いてある記事がないのは一体どういう理由なんだろうか?

そもそも get ではなく post にするのは感覚的にも、暗黙の了解的にも、
当たり前だがCSRF対策で postにせよと書いてあるもの自体が少ない。
セキュリティ初心者向けならなおさらなんだが。
get にしてしまえば URL に乗るし、input である理由が薄弱なのがイラっとするんだよ。

理由が知りたい。
0263デフォルトの名無しさん (ワッチョイ 134e-yW/I)
垢版 |
2019/03/19(火) 23:37:28.37ID:gx/b6f7p0
Ruby ではクラス直下では、self(this)は、クラスを指す。
一方、initialize 内では、new で呼ばれた各インスタンスを指す

class Cat
p self #=> Cat クラス

def initialize( name, weight )
@name = name
@weight = weight
p self #=> 各インスタンス
end
end

bob = Cat.new( "bob", 5 )
alice = Cat.new( "alice", 4 )

出力
Cat
#<Cat: @name="bob", @weight=5>
#<Cat: @name="alice", @weight=4>

オブジェクト指向をわかっていない人には、Python は無理

まず、Rubyでオブジェクト指向・関数型を学んでから、
Python, JavaScript, Kotlin などをやらないと無理
0266デフォルトの名無しさん (ワッチョイ 6b2d-5HBQ)
垢版 |
2019/03/26(火) 19:14:05.12ID:d0iwa0lD0
Rubyを勉強し始めようか迷っていて、適当にWeb見てたんだけどさあ
一部のページで、「Railsから入った人にとっては驚くかもしれないけど、Ruby単体でもプログラムが書ける」みたいなことが書いてあって驚いちゃったな
これ、Rubyの言語より先にRailsの学習をすることも可能なんか?
0269デフォルトの名無しさん (ワッチョイ 6b2d-5HBQ)
垢版 |
2019/03/26(火) 19:26:11.18ID:d0iwa0lD0
>>268
そうなのか、ありがとう!
面白そうだからRailsからやろうかな
0270デフォルトの名無しさん (ワッチョイ de2c-ZSTg)
垢版 |
2019/03/26(火) 22:24:08.02ID:gZH84WWp0
Rails は半年掛かるので、普通人は挫折する。
Sinatra から始めるのが良い

社内エンジニアから、Railsエンジニアになった人の動画が、YouTube にもある

Railsの知識が、膨大な理由は、Ruby の文法じゃない

Linux のOS のコマンド・機能、テスト、環境構築運用技術や、
DB、HTML, CSS・SASS, JavaScript, jQuery など、システムのAll Set だから

Railsが、全言語のフレームワークに応用できるのは、大半がRubyの文法とは関係ないから。
ほとんどの内容が、システムの事
0273デフォルトの名無しさん (アウアウエー Sac2-yExI)
垢版 |
2019/03/27(水) 06:09:28.25ID:J3LATpLka
import pandas as pd
df = pd.DataFrame([[1, 2, 3], [4, 5, 6]])
df = pd.concat([pd.DataFrame([0]*df.shape[0]),df,pd.DataFrame([0]*df.shape[0])], axis=1)
df.columns = list(range(df.shape[1]))
df = pd.concat([pd.DataFrame([[0]*df.shape[1]]),df,pd.DataFrame([[0]*df.shape[1]])])
df.index = list(range(df.shape[0]))

>>> df
0 1 2 3 4
0 0 0 0 0 0
1 0 1 2 3 0
2 0 4 5 6 0
3 0 0 0 0 0
0274デフォルトの名無しさん (ワッチョイ 4ad2-KGYh)
垢版 |
2019/03/27(水) 13:26:23.63ID:mz7eRfCH0
>>272
ary = [[1, 2, 3], [4, 5, 6]]
a=[0]*ary[0].sizeこ
b=([a]+ary+[a]).map{|x|[0]+x+[0]}
p b

[[0, 0, 0, 0, 0], [0, 1, 2, 3, 0], [0, 4, 5, 6, 0], [0, 0, 0, 0, 0]]
0275デフォルトの名無しさん (ワッチョイ 4ad2-KGYh)
垢版 |
2019/03/27(水) 13:35:27.03ID:mz7eRfCH0
>>274
すみません。途中に入ったひらがなはゴミです無視してください。
0278272 (ワッチョイ de2c-ZSTg)
垢版 |
2019/03/27(水) 23:32:37.93ID:iumvruyG0
番兵を使わないと、1〜6 (1:start, 6:end)の道順をたどる際、面倒だろ?

例えば、1 から次を探すのに、上下左右を判断して、
上・左にはマスが無いから、番兵で壁を作った方が、プログラミングしやすい
0280デフォルトの名無しさん (ワッチョイ 0f2c-injD)
垢版 |
2019/04/02(火) 21:21:41.64ID:3dIjgbOm0
たのしいRuby 第6版、2019/3/19

Ruby 2.6 対応の新版が出た!
0285デフォルトの名無しさん (ワッチョイ 02d2-GBaV)
垢版 |
2019/04/08(月) 19:53:09.21ID:Axd3G2xU0
番兵の話はお題スレからきていてると思うのだけど
番兵が有用と言う人と無用と言う人で
元のお題をやってみたら?
0286272 (ワッチョイ ee2c-f03p)
垢版 |
2019/04/09(火) 00:49:34.31ID:BWeYJxgy0
番兵が無ければ、

上下 : 上下に行があるか?
左右 : 左右に列があるか?

を判定しないといけないから、わかりにくい
0287デフォルトの名無しさん (アメ MM8d-3NqX)
垢版 |
2019/04/09(火) 01:32:18.70ID:03qzHG/tM
範囲外アクセスをどう扱うかの方法論でしかないのでは?
lengthすらない昔のC辺りのやり方。
色々整備されてる現代言語でやる奴はアホ。
アホというか、だったらCやってりゃいいじゃん。
楽に書くために高級な機能があるのに番兵のほうが分かりやすい?w
高級機能のために速度犠牲にしてる言語で高級機能使わないとかww
0288デフォルトの名無しさん (アメ MM8d-3NqX)
垢版 |
2019/04/09(火) 01:35:04.47ID:03qzHG/tM
eachよりforのほうが分かりやすい
mapよりforのほうが分かりやすい
reduceよりforのほうが分かりやすい
CでいいじゃんCやってなよ
0289デフォルトの名無しさん (ワッチョイ 4d33-H3rI)
垢版 |
2019/04/09(火) 02:17:33.75ID:3lXFFzae0
範囲内かどうかをいちいち判定して、わざわざ分岐したいんか。
まったく、物好きやな。w

んなことをせんでも、番兵や余白を利用したら、わかりやすさや効率化を果たせることもあるんやで。
0292デフォルトの名無しさん (ワッチョイ 012d-gjr1)
垢版 |
2019/04/09(火) 17:27:08.92ID:a64vJmyf0
Ruby Motionって契約してる人います?
これって今から使い始めても継続的に保守され続けるような雰囲気してますか?
0296デフォルトの名無しさん (アメ MM8d-3NqX)
垢版 |
2019/04/09(火) 20:57:02.17ID:QoVolURMM
じゃあCでいいな。
遅いくせにCでやってたのと同じ方法でしか解決できないクソ言語。
0298デフォルトの名無しさん (ワッチョイ 012d-gjr1)
垢版 |
2019/04/10(水) 07:32:34.80ID:2VCYuCv80
>>293
広く捉えればIDEなのかも知れませんが、iOS/Android等の開発ができるのが売りなので他ではなかなか代替が効かないと思うんです
http://www.rubymotion.com/jp/
これもう廃れてるんですかね・・・・・
0305デフォルトの名無しさん (ワッチョイ 8b2c-9RpW)
垢版 |
2019/04/11(木) 00:28:18.22ID:SMdbPkuM0
Haxe が、Ruby・Elixir も、JavaScript(JS) に変換してくれればなあ

パズル本でも、解答はRuby で書いてある。
これが、JS なら、可読性が悪くなるから

まあ、ES2015(ES6)で書いて、Babel で、ES5 に変換するぐらいかな?
0307デフォルトの名無しさん (ワッチョイ 1373-XGqV)
垢版 |
2019/04/11(木) 01:12:54.22ID:6OTuCZjY0
>>306
間違いは「プロトタイプをそのまま使いまわそうとすること」であって、
「プロトタイプにRubyを使ったこと」ではないはずだよね
「何がなんでもRubyを使うことは間違い」と言いたいだけなんちゃうん?
0308デフォルトの名無しさん (ワッチョイ d91f-Rw3k)
垢版 |
2019/04/11(木) 01:50:09.37ID:rbVbMGbi0
>>307
その解釈こそこの文脈ではうがちすぎだろう
実際のところは>>292に訊いてみないとわからんけど

あとIDEのサポートの薄いRubyがプロトタイピングに優れてるっていうのも
(ことロジックをという局面に限れば)眉唾だなぁ
RailsでWebアプリをって言うならまあ納得だが
0309デフォルトの名無しさん (ワッチョイ 8b2c-9RpW)
垢版 |
2019/04/11(木) 02:33:02.00ID:SMdbPkuM0
Sinatra, Rails を使えば?

GUI は、HTML, CSS, JavaScript で、
サーバーサイドはRuby
0311デフォルトの名無しさん (エムゾネ FF33-grM/)
垢版 |
2019/04/11(木) 11:27:47.80ID:bTGeujWNF
perlで書いたのがもったいない
そう思っていた時期がありましたが
rubyで書いたらそんな小さな心配は吹き飛びました

rubyで書いたのがもったいない
そう思っていた時期がありましたが
pythonで書いたらそんな小さな心配は吹き飛びました
0312デフォルトの名無しさん (アメ MM4d-nfNM)
垢版 |
2019/04/11(木) 11:44:58.37ID:GR4ezT/uM
最初に苦労してCで書いておけばその後は言語の流行りに合わせてFFIラッパー書くだけで済んだのにねwwww
0314デフォルトの名無しさん (ドコグロ MMbd-x1Th)
垢版 |
2019/04/11(木) 21:15:03.89ID:JHOkJdt/M
>>313
将棋のAIみたいなCPU時間のかかる処理だと、Cならブルートフォースで全く問題にならない箇所が
ゲロ遅Rubyだとアルゴリズムの最適化が必要になったりして、結局Cの方が早かったんじゃないか、、、となるケースが多いよ
そもそもアルゴリズムの実装はCでもあまり生産性に差が出ないし
0316デフォルトの名無しさん (アウアウエー Sae3-x1Th)
垢版 |
2019/04/11(木) 21:34:09.67ID:+nT2xOqaa
>>315
高負荷なアルゴリズムの実装においては、遅すぎる言語を使うことでその「エラー」の閾値が大きく低下することがあるってことだ
遅くない言語では問題にならないことが問題になる
0317デフォルトの名無しさん (ワッチョイ 8b14-XGqV)
垢版 |
2019/04/12(金) 00:55:41.82ID:L59U/aC10
>>315
sassがそれをやったわけだが。

最初Rubyでsassが作られた。
今はlibsassというC言語実装が作られた。

だけどあれ、確か2006年ぐらいにRuby版がでてから
6年ぐらいもかかっただろ?
そしてRuby版に機能が追いつくまでさらに数年
0318デフォルトの名無しさん (ワッチョイ 8b14-XGqV)
垢版 |
2019/04/12(金) 00:57:31.09ID:L59U/aC10
>>316
> 遅すぎる言語を使うことで

遅すぎるという言葉には2つの意味があって、
"実行速度が" 遅すぎる言語で問題になることがあるように、
"開発が" 遅すぎる言語では、その開発の遅さが問題になることがある
0319デフォルトの名無しさん (ワッチョイ b102-eS/W)
垢版 |
2019/04/12(金) 01:54:31.59ID:kPkxqpeR0
>>315
馬鹿なの?
トライ&エラーではrubyなりpython で作って、そくどの為にCで書き直すんだろ。
Twitter やFacebook もロジックはrubyで作って、そのままでは限界を感じたからも、っと速い言語に書き換えたろ?

ロジックさえ確立すれば、多少の記述量増加よりは問題にならない。
(むしろ問題があったから変更する必要に迫られた)
0320デフォルトの名無しさん (ワッチョイ 8b2c-9RpW)
垢版 |
2019/04/12(金) 02:31:01.87ID:WO5SLys30
Vagrant, Chef, Homebrew など、環境構築運用でシェルスクリプトの代わりには、Ruby で書く。
rbenv(anyenv) も、Rubyか?

他にも、SASS とか、他の言語よりも、数年早いから、
実験段階のものや、アクセスが少ない、中小企業向けに良い

大規模になってきたら、他の言語に変える
0321デフォルトの名無しさん (アウアウエー Sae3-x1Th)
垢版 |
2019/04/12(金) 07:29:49.69ID:xRzutCJ1a
>>319
高負荷な処理の開発においては、検証すらままならないほどに遅くなることが普通にある(Cで書いててもね)
そもそも最初からパフォーマンスが問題になることが分かっているなら、速度自体もアルゴリズムの良し悪しを決める重要なファクターだ
まあRuby使いには想像しにくい世界かもね
0323デフォルトの名無しさん (ワッチョイ 8b14-XGqV)
垢版 |
2019/04/12(金) 13:41:56.03ID:L59U/aC10
>>320
> rbenv(anyenv) も、Rubyか?

rbenvもanyenvもその兄弟(*env)たちもシェルスクリプトで作られてるよ。

https://github.com/rbenv/rbenv の緑のバーをクリックすりゃわかるだろ?
Shell 96.5% Ruby 1.5% C 1.4% Other 0.6%

環境構築というか、"端末の"環境構築なので
端末を提供しているシェルスクリプトが一番相性が良い
0324デフォルトの名無しさん (ワッチョイ 8b14-XGqV)
垢版 |
2019/04/12(金) 13:47:31.31ID:L59U/aC10
あとrubyの環境を整えるのに、rubyが必要とかありえないわなw


それにruby遅いねん。(ruby以外のスクリプト言語もそうだろうけど)

$ time ruby -e 'print "ruby"'
ruby
real 0m0.054s
user 0m0.042s
sys 0m0.013s

$ time sh -c 'echo "sh"'
sh

real 0m0.001s
user 0m0.000s
sys 0m0.001s
0325デフォルトの名無しさん (ワッチョイ 8b14-XGqV)
垢版 |
2019/04/12(金) 14:33:52.25ID:L59U/aC10
Perlは少しはマシだな

$ time perl -e 'print "perl"'
perl
real 0m0.003s
user 0m0.000s
sys 0m0.002s

$ time php -r 'print "php";'
php
real 0m0.016s
user 0m0.016s
sys 0m0.000s

$ time python -c 'print "python";'
python

real 0m0.016s
user 0m0.012s
sys 0m0.004s
0329デフォルトの名無しさん (エムゾネ FF33-grM/)
垢版 |
2019/04/12(金) 15:26:10.57ID:VR9mZ4dFF
スタートアップで使ってたってだけで
もう使ってないから

遅すぎて見切られた
0330デフォルトの名無しさん (アメ MM4d-nfNM)
垢版 |
2019/04/12(金) 15:58:45.73ID:EM6Ln3LKM
ツイッターがRailsていつの時代の話だよwww原始人かww
今でもScalaなのかどうかが気になるわwwww
0331デフォルトの名無しさん (ワッチョイ 8114-XGqV)
垢版 |
2019/04/12(金) 16:30:59.42ID:kdt5VzkQ0
>>327
> それでもほぼ起動のオーバーヘッドだろう

>>326で言ってるオーバーヘッドっていうのは
各言語用のインタプリタ起動のオーバーヘッドではなくて、
*envの仕組み上、追加で存在するオーバーヘッドのこと。

*envは例えばrubyだったら、rubyのバイナリを直越実行するのではなく、
rubyの指定されたバージョンを起動するためのシェルスクリプトを実行する。

>>324-325は、*envを使ってないから、各言語用のインタプリタ本来の
起動時間ですよって話。
0334デフォルトの名無しさん (ワッチョイ d133-qzPJ)
垢版 |
2019/04/12(金) 23:32:32.24ID:5JLil1XU0
出力にかかる時間を計ってる以上、「起動」の時間はわからんだろ。
Unicodeうんぬんは、文字の妥当性を検証してる気がしたから。バイナリを流すとエラーになったような。

きっとRubyは遅いだろうと思うが、それでも、おまえの確認は証明になっていないぞ。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況