TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
次世代言語15 Go Rust Bosque Kotlin TypeScript
ねえ、これ僕間違ってる?
Qiita
C言語なら俺に聞け 154
Matplotlib でグラフプログラミング【Python】
将来性ないプログラミング言語。Delphi含まれず安心
Javaはもう死んだの? Part.2
動的言語で大規模開発
アルゴリズム考えるのムズすぎワロタwwww
C言語なら俺に聞け 153

Ruby 初心者スレッド Part 65


1 :
プログラミング言語 Rubyについての、初心者向けスレです。質問・要望・雑談などをどうぞ

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

前スレ
Ruby 初心者スレッド Part 64
https://mevius.2ch.sc/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

2 :
Rubyの絵本、2008
たのしいRuby 第5版、2016

3ステップでしっかり学ぶ Ruby入門、2018

かんたん Ruby (プログラミングの教科書)、2018

プロを目指す人のためのRuby入門、2017

改訂2版 パーフェクトRuby、2017

改訂2版 Ruby逆引きハンドブック、2018 (中級者向け)

Effective Ruby、2015 (中級者向け)

メタプログラミング Ruby 第2版、2015 (中級者向け)

リファクタリング:Rubyエディション、2010 (中級者向け)

RubyでつくるRuby ゼロから学びなおすプログラミング言語入門、2017 (中級者向け)

Rubyのしくみ、2014 (中級者向け)

改訂4版 基礎 Ruby on Rails、2018

パーフェクト Ruby on Rails、2014

Rubyによるクローラー開発技法 巡回・解析機能の実装と21の運用例、2014

オブジェクト指向設計実践ガイド Rubyでわかる 進化しつづける柔軟なアプリケーションの育て方、2016

Seleniumデザインパターン&ベストプラクティス、2015

3 :
開発環境

RDE
Windows用IDE
https://ja.osdn.net/projects/sfnet_rubyde/
以下、RDEの使用説明
http://rubyde.sourceforge.net/hiki/ja/FrontPage.html

RDEのデバッグ機能を使う場合、設定においてデバッグオプションを「-r debug2」から「-r debug」と書き換えて、
ruby付属のdebug.rbを使うようにすること。
RDE付属のdebug2.rbは、ruby1.8用のスクリプトのため、現在のrubyのversionには使えません

サクラエディタ
Windows用高機能エディタ
https://ja.osdn.net/projects/sfnet_sakura-editor/
以下、ruby用設定の説明
http://supportdoc.net/support-sakura/ruby.html

Emacs
GNUの高機能エディタ

Vim
Emacsと同じぐらい有名なCUIベースのエディタ

VSCode
マルチOSに対応したマイクロソフト社製のソースコードエディタ
https://code.visualstudio.com/download

4 :
>>1

5 :
前スレの、>995

>rubyでサイトにアクセスさせてたんだけど、そのrubyが急に動かなくなってしまいまして、どうしたもんかと

selenium-webdriver(SW) を使っているなら、ブラウザが新しくなってエラーが出るとか?
SW, chromedriver を最新にすれば?

最新のchromedriver をダウンロードする
http://chromedriver.chromium.org/home

レポジトリの情報を見る。
gem search -r selenium-webdriver
#=> version 3.141 が最新

グローバルにインストールする。
gem install selenium-webdriver

インストール済みGemを確認する。
gem list selenium-webdriver

6 :
今年のクリスマスは新しいバージョンないのか

7 :
Ruby 2.6.0 キターーーー

8 :
> なお、「Ruby」で採用されているJITコンパイラーは、他の言語で採用されている一般的なものとは異なり、
> C言語のソースコードをファイルとしてディスクに書き、通常のCコンパイラーを用いてネイティブコードに変換することでJITコンパイルを行うという手法(MJIT)を採用しているという。
> そのため、「Ruby 2.6」でJITコンパイラーを利用するには「GCC」、「Clang」、あるいは「Microsoft VC++」によってビルドされた「Ruby」実装と、それをビルドしたコンパイラーを実行時に利用できる必要がある。

トッポいなぁwww

9 :
それは、JITではないな。

10 :
Cみたいに、構造体CPersonを要素とする配列を作りたいんだけど、どうやればいい?
CPerson Struct.new(:name, :age);

persons = [
CPeson.new("Taro Yamda", 25),
CPeson.new("Yuko Suzuki", 20),
CPeson.new("Erika Toda", 30)
];
で定義して、参照は、

k = 要素番号;
name = persons[k].name;
age = persons[k].age;


みたいにするのが標準?

11 :
誤: CPerson Struct.new(:name, :age);
正: CPerson=Struct.new(:name, :age);

orz

12 :
Effective Ruby の著者のサイトに、本のソースコードが載っている

項目10 : 構造化データの表現には、Hash ではなく、Struct を使おう
https://github.com/pjones/effrb/blob/master/oop/struct_test.rb

ハッシュキーは内部実装の詳細情報なので、
これがユーザーに公開されているのは、良くないから

一方、Struct は、Class Generator。
簡易クラス

13 :
簡単にクラスが作れる!軽い気持ちでじゃんじゃんクラスにしてね!な言語かと思ってたのに簡易クラスとは…

14 :
Struct は入門書にも書いていないのに、これを使うのは物好きな人だろう。
書き捨てのツール作りとかに使うのかも

でも、Rails のような大規模プログラムでも使っているけど

15 :
>>8
お前さんが考えてる「遥かにスマートな方法」って何?

16 :
面倒くさいからコンパイラも内蔵してくれ

17 :
お前ら詳しすぎ

18 :
>>10
CPerson.new(・・・)
の代わりに、Syntax Suger として
CPerson[・・・]
を使えるらしいので、やってみたところ上手くいった:

CPerson = Struct.new(:name, :age);  # CPerson型の型定義

$g_persons = [
 CPerson["Taro Yamda", 25],
 CPerson["Yuko Suzuki", 20],
 CPerson["Erika Toda", 30]
];
for k in 0..2
 name = $g_persons[k].name;
 age  = $g_persons[k].age;
 print name, ", ", age, "\n";
end

19 :
何がしたいのかよくわからんがRubyでfor文は殆ど使わない

$g_persons.each{|p|puts 'name = %s, age = %s' % p.to_a}

20 :
forを使わないのは良いが
そこでeachとか使われると萎える

21 :
これのどちらかだな(%よりはformatの方が推奨される)

puts $g_persons.map { |p| 'name = %s, age = %s' % p.to_a }
puts $g_persons.map { |p| "name = #{p.name}, age = #{p.age}" }

22 :
print name, ", ", age, "\n";
ってのはただの例だろうからこの場合eachよりふさわしい方法はないでしょ
代替案も言えない屑は勝手に萎えてろ

23 :
>>21
なんでわざわざmap?w

24 :
>>23
関数型とか副作用とか勉強すると良いよ

25 :
初心者スレなんだから、そこを解説すべき。

26 :
煽り抜きで>>20はアスペっぽい
文脈が理解できてない

27 :
Ruby鉄の掟

map <-偉そう
each <- 普通
for <- 素人そう

ヲタ同士のマウンティングによく使われるのでこの格付は覚えておいて損はない

28 :
>>26
お前以外は俺が言ったことを理解できてるぞw
だからアスペはお前じゃん

29 :
>>28
いやだからさ、初めから配列arrの要素に対してこういうことをした結果を出力したいっていうのであれば
puts arr.map{|e| hoge}.join(s)
て書くのは当たり前だけど、この元の発言の人はそんなこと言ってなくてむしろ配列の参照の仕方について言ってるんだから上の説明じゃ全然駄目だってことくらいわかるだろ
ドヤ顔で他人見下して見当はずれの発言しているあんたが痛いって話だよ

30 :
>>24
関数型。w
ふつうにふつうのコードを書けよ。

31 :
>>29
やっぱアスペじゃん

俺は >>19 の書き込み、forを使ってるものを「forなんて殆ど使わない」と言って
eachを使って書き換えました。(どやぁ)
っていうのを見て、萎えた(eachも使わねーよ)って言ってるだけだから

arrの要素に使ってこういうことした結果〜とか
そんな話してねーから

32 :
質問者の意図を無視して勝手に副作用だの言ってる奴いて草
アスペはほんと言うことがめちゃくちゃだな

33 :
元の質問者になんかレスしてねーのに
文脈わかってないんだな。

34 :
ID:xdSwIlO30
こいつ本気でアスペだろ
質問者への回答へのレスに質問者の意図を無視して上から目線で見当違いないちゃもんつけてんだから
本当に意味不明だわ
初めから属性を出力することが目的だってなってたら誰だってmapしてjoinなりするだろ
当たり前のことでマウントとって最高に気持ち悪い

35 :
副作用うんたらかんたら君は一切画面出力せずにプログラミングしろよwww
ファイルの読み書きも禁止。全部メモリ上だけでやれやwwwww

36 :
まとめるとこうだな
for文よりary.each { |e| hoge(e) }って書いた方が一般的だよってレス(>>19)に対して
hoge(e)のところがたまたま今回putsだったってだけでputs ary.map { |e| fuga(e) }って書かないとか萎える(>>20)
と意味不明なこと言って荒らしまわってる奴がいる
精神障碍者の相手をしてはいけないということだ

37 :
試してないけど、C/C++ ばっかりの自分には、
 $g_persons.each { |p| printf( "name = %s, age = %s\n", p.name, p.age) }
なら分かるけど、
 $g_persons.each{|p|puts 'name = %s, age = %s' % p.to_a}

は、% p.to_a の部分がまったく分からないといっても過言ではない。

' の後ろの % って何? p.to_a も分からない。

38 :
ああ、分かった。% は、sprintf の syntax suger みたいなものらしいね。

でも、この場合、p.to_a は、本当は良くないと思うよ。
なぜなら、そもそも構造体自体が、「並び方」に依存しないプログラムを
作るために用いるものなのに、その目的に逆行してしまうから。

to_a だと、構造体を定義したときにメンバが並んでいる順に配列のように
取り出してしまう。ところが、構造体は、そういう順序に依存するプログラム
に問題がおきやすいから導入するもんなんだよ、これが。

39 :
>>38
いい答えだね。
だけどアスペは文脈がわからないからこう言うんだ。

お前が言ってることは>>18に対してのレスではない!と

>>18へのレスではなく、>>19へのレスなのは見ればわかるが
アスペは文脈がわからないから関係ない話をしてるように見える。
関係ない話をするな。俺に攻撃をするな。と)

40 :
お前もしつこいぞ

41 :
はい。しつこいつもりですが?

42 :
素で気持ち悪いなこいつ。もはや日本語による意思疎通は不可能だな
>>20の異常性が分かるまとめ

>>18 「生のトマトが嫌いなんだけどどうやったら克服できるだろうか」
>>19 「火を通したトマトを食べてみたら案外慣れるかもよ」
>>20 「トマトは生が一番おいしいに決まってるだろ。火を通すとか萎えるわ」
>>19 「生が苦手って言ってるからそれ以外を勧めてるんだけど……」
>>20 「いや、俺はお前に言ってんだけど。トマトは生に限るだろ」
>>19 「えぇ……」

43 :
アスペはたとえ話が苦手なんだからやめとけw

44 :
>>42
適確すぎて草
そしてアスペは例え話を理解できないらしいからきっとこれも理解できてねえぞ

45 :
よくみたらこいつ単芝君じゃん
この板に粘着してる荒らしだからスルーしとけ

46 :
>>42が間違ってることはちゃんと説明できる

本当の >>20>>19へのレスになっている
>>19で書いた内容がクソであると言ってる)

だけど>>42 では 20 が 18 へのレスになってる。

アスペはこの違いがわからない

47 :
>>37
メタプログラミングで、すべての属性名と値を、表示できないの?

48 :
メタプログラミングじゃなくて、普通にto_hとかでわかるがそういう問題じゃないw

49 :
>>47
Struct#membersでメンバの名前を取得できるよ

50 :
やっぱ単芝君はガチのアスペやったんだな
>>42の20は普通に19への返事になってんでしょ
それが理解できないのは脳みそに欠損でもあるんじゃねえの

51 :
> >>42の20は普通に19への返事になってんでしょ

18が生のトマトが嫌いといってるのに、20で生のトマトが一番と言ってるって話
俺は>>18に対して何もレスしていない

この違いぐらいわかれよw

52 :
少し訂正

18が生のトマトが嫌いといってるのに、20で生のトマトが一番と言ってる
20は18へのレスになっているが

それとは違い俺は>>18に対して何もレスしていないという話

53 :
>>51-52
ここまで言わないとわからないとか脳みそ小学生以下だろ
>>42
20 「トマトは生が一番おいしいに決まってるだろ。火を通すとか萎えるわ」 も
19 「火を通したトマトを食べてみたら案外慣れるかもよ」へのレスであって18には何も触れてないじゃん
火を通したらいいかもよってアドバイスに対して「18には触れずに」トマトは生以外萎えるとかいうトンチンカンなこと言ってんのがお前

理解できないならマジで病院行くか死んだ方が良いよ
てかアスペって本当に比喩表現が理解できないんだな、コイツ本物のアスペだろ

54 :
あと絡んだ俺が言うのもなんだけどこいつとは会話が成り立たないから本当にスルーに限るな
障碍者はネット規制してほしいわ本当に

55 :
じゃあスルーしろ(反論してくんな)

俺は>>18に対して否定するようなことは何も言ってないんだよ。
>>19に対してのレスでしか無いのに
>>42はそうなってないって話をしてる

繰り返すが、スルーしろ

56 :
名前をNGで「98-」で設定しておくと単芝君消えるよ
荒らしはスルーで

57 :
>>55
きもいわーお前マジで
ここまで行って理解できないなら本当に死んだ方が良いよお前
Rよお前
みんなの迷惑なんだわ
さっさとR

58 :
>>42を訂正するならこんなところだな

>>18 「生のトマトが嫌いなんだけどどうやったら克服できるだろうか」
>>19 「火を通したトマトを食べてみたら案外慣れるかもよ」
>>20 「焼きトマトとかまずいわ。煮た方が良いだろ」
>>19 「生が苦手って言ってるから焼いたほうが良いって言ってるんだが」
>>20 「だから焼いたらまずいってお前に言ってるんだよ。煮たほうがいいって提案してるじゃねーか」

59 :
>>57
お前が理解してないようだから訂正してあげたよ
反論があるならどうぞ
スルーするに限るっていうなら、スルーしろ

60 :
比喩表現を理解できないやつって本当にいるんだね
>>42はそこそこうまく状況を再現してるしそれにいちゃもんつけてるのは当事者であるワッチョイ 7d98-4fynしかいないという
言ってることは支離滅裂だし自分が異常者で迷惑者だって気づかないものなのかね

61 :
そこそこw 言われてやんのwww

まあ>>58を見てよ
より正確だから

62 :
>>61
気色悪いよあんた。友達も恋人もいないでしょ
>>58は全然スレの流れに沿ってないじゃん
これは親切心でいうけど、もしこれを本気で言ってるなら本当に発達障害だと思うから心療内科にでも行った方が良いよ

63 :
>>58>>42を訂正しただけだよ。
もともと言い出したのは>>42

64 :
え、何言ってんのこの人
>>42はそこそこうまく状況を再現してる
>>58は全然スレの流れに沿ってないじゃん
ってあるのに「>>58>>42を訂正しただけだよ。」って会話が成立してないじゃん
やっぱり日本語が理解できてないじゃん
障碍者なら病院から出てきてみんなに迷惑かけないでよね

65 :
だからワッチョイ 7d98-4fynはこの板に粘着してる単芝君っていう荒らしだからスルーするなりNGするなりしろって

66 :
> >>42はそこそこうまく状況を再現してる
> >>58は全然スレの流れに沿ってないじゃん

意味がわからん。スレの流れ?
>>42がスレの流れに沿っているのであれば、
それを訂正した>>58もスレの流れに沿ってるだろ

67 :
荒らしの相手をするな!
相手をすると、いつまでも荒らされる

荒らしと会話する者も、荒らしやぞ!

68 :
俺は「生のトマトが嫌いな人」に「生のトマトが一番」なんて言ってないんだよなぁ。
>>42は何を勘違いしてるんだろうか

69 :
2.6対応Kindle本マダー

70 :
俺もeach使うぐらいならmap使うわ

71 :
ワッチョイ 7d98-4fyn
ワッチョイ 7d14-4fyn

アスペガイジ(>>70)が自演してて草
スレ民全員から病人認定されたのがよっぽど悔しかったのか
最高に気持ち悪いから死んでくれ

72 :
お前もキモいわ

73 :
自演失敗してるお前の方が痛いから
さっさとうせろよゴミ屑が

74 :
必死すぎwww

75 :
アスペが自演失敗してて草

76 :
Software Design 12月号の特集が、Ansible と、
IT での時刻・時間(timezone, UTC、うるう秒、夏時間、元号)で、その特集の中で、
/usr/share/i18n/locales/ja_JP のera の所に、新元号を追加する方法が書いてある

その記事では、<U5E73> のような文字コードから表示するのに、
以下のようにRuby で変換しているけど、もっと簡単に出来ないかな?
(ただし、コードは少し変えた)

CodePoint = "<U003A><U5E73><U6210><U5E74><U0025>"

res = ""
res += CodePoint.gsub( /<U(.{4})>/ ) {
[$1].pack( 'H*' ).tap{ | obj | p obj }
.unpack( 'n*' ).tap{ | obj | p obj }
.pack( 'U*' )
}

puts res #=> ":平成年%"

以下の方法でも、文字を表示できる。
p "\u{1F1EF}\u{1F1F5}"
p "\u{5E73}" #=> "平"

77 :
>>76
puts CodePoint.gsub(/<U([0-9A-F]{4,})>/){ "" << $1.to_i(16) }

78 :
>>76
puts CodePoint.scan(/\h+/).map(&:hex).pack('U*')
# => :平成年%

79 :
エイプリルフールに発表とかふざけてるよな
せめて2月11日にすれば良いのに

80 :
もっと早く発表しろって思うわ。
わざわざ Unicode に新元号を入れる枠まであるし、
なんで emacs-devel ML まで日本の新元号対応とかで、
わざわざ話題にしないといけないのか、マジで頭おかしいと思うわ。
どんだけ迷惑かけてんだって。

81 :
お前らドカタの仕事のネタを作ってくれてるんだから有難く思え

82 :
Linux distroのdeveloperをやっているけど、
あるコマンドのオプションを問う問題で、
重箱の隅を突っつく問題なんか、分からんわ。
あんなの、非実用的、非生産的な問題で全く意味ない。

83 :
Ruby初心者です。RubyとWindowsは相性が悪いって意見をよく見る気がします
どのように相性が悪いのでしょうか?またWindowsユーザーはLinuxを入れてそっちでRubyやったほうがいいのでしょうか?

84 :
コミュニティが昔からwindowsとマイクロソフトを目の敵にしていてwindows環境を無視したやり方をゴリ押しすることが多い。
質問もwindows環境だと分かったとたんwindowsなんか使ってるのが悪いとなる。
ossプロジェクトもgithubがマイクロソフトに買収されたとたんにgitlabへの移行が相次ぐなどrubyコミュニティ特有。
圧倒的シェアを誇るVSCodeも宗教上の理由で使えずオワコン死臭エディタを薦められる。

85 :
>>83
正確には、相性が悪い「ことになっている」
実際には今のWin10ならWSLを使えばほぼLinux同等にRailsを使えるんだけど、
作者のMatz含めプロのRubyユーザーってほぼ100%がマカーなんだよ
だからコミュニティでWin使ってるなどと言おうものなら>>84の通りたちまちリンチに遭う
このスレはまだマシな方だが、正直不快な思いをするだけだからお勧めできない

86 :
>>83
Ruby単体で使うならWindowsでも簡単に入れられるんだけど、いくつかのgemはコンパイルを前提にしているから、
そういうコンパイラ環境を(LinuxやmaxOSと比較して)手に入れにくいWindowsが敬遠されてるというのはあるね

もちろんやってやれないことはないんだけど、そんなとこで詰まるぐらいなら素直にUnix系を使っておいた方が
特に初心者ならいいだろうね

87 :
>>80
そっか〜
クイズみたいで、ぎりぎりの方が楽しい。
まあ、システムの場合元号が切り替わった時にすぐに切り替えられないと大変
なのはわかるけどね。

ちなみに昭和に変わった時、私の会社のソフトは最初から変更の可能性のあるもの
について対応をした有ったので。一か所変えるだけで、全てが対応できた。
昭和天皇が亡くなった時、最初に問い合わせがあったのは日銀だった。まだ元号
決まっていなかったけど、対応済みという話をして安心してもらったこと思い出したよ。

88 :
「昭和に変わった」じゃないな「平成に変わった」だったわ〜〜

89 :
>>84
>>85
>>86
ありがとうございます
コミュニティがWindows嫌い、そういうのもあるんですね……
とりあえずWSLでLinux使ってみることにします!

90 :
Win32ネイティブのRubyを使用せずにWSLを使うよう公式にアナウンスするだけで
ドザに対する、余計な手間をかけさせるだけのカス連中R、みたいなヘイトはだいぶマシになると思うけどね
未だに公式サイトがWSLを完全に無視したまま地雷だらけのASRやRubyInstallerへ誘導しているのは悪意しか感じないわ

91 :
WSLってそこまで安定してないってのもね
だったらVMWareなりVirtualBoxなりの方がまだマシ

92 :
ブログサイトをRubyで立ち上げようと思ったらLokkaで間違いないですかね?

93 :
windows+rubyはRubyInstaller2でどうにかなる

問題は日本語+糞プロンプトが混じった場合
rb-readlineがバグってるのかしらんが諦めが必要になる

94 :
>>90
いや、WSLは素人に薦められるものではない。
充分な知識がなければ、RubyInstallerのほうがはるかにマシ。

95 :
どう考えてもWSLの方が薦められるだろ
理由は>>94が薦められない理由を書いたら書いてやる

理由もなく薦められないというだけで信用してもらえると思うバカには
この程度の反論で十分だからさ

ということで、考えてもWSLの方が薦められる

96 :
漏れは、Windows10 で、RubyInstaller のMSYS2 コンパイル環境なしのポータブル版で、C:\Ruby24-x64 に置いている

コンパイル環境なしだと、Websocket のWindows用バイナリが無いから、これに依存するアプリが使えない。
今も、どこかに無いかと探しているw
どこかのサイトに、自動的にコンパイルして、Windows用バイナリを置いてほしい

ユーザー環境変数、Path に、C:\Ruby24-x64\bin と、
RUBYOPT に、--encoding=UTF-8 を追加した

ただし、UTF-8 を追加すると、irb が動かなくなるので、それに依存する、pry なども動かなくなるため、
WSL, Ubuntu に、Ruby を入れて、irb だけはLinux側で使う。
MSYS2 は日本語でバグるけど、WSL はコマンドプロンプトと同じ画面を使っているので、バグらない

すべてのファイルを、BOM無しUTF-8 で統一すると、
Explorer で、sjis と区別がつかなくなって、検索できなくなるので、WSL から、grep で検索する。
BOM有りUTF-8 は、外人がBOMの存在自体を知らないから、バグるので使えない

VSCode で、Code Runner という拡張機能で、右クリックメニューから、ある範囲のソースコードを実行できるし、
デバッグ用拡張機能を入れていないけど、p, tap 関数で表示できるから困らない

どの道、GUI は、HTML, CSS, JavaScript, Node.js, Selenium Webdriver だから、VSCode でよい

例えば、クリップボードでも、
str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換

みたいに、PowerShell コマンドも呼べるし、
ダブルクリックで起動したいのなら、バッチファイル・VBS も使える

97 :
>>82
LPIC, LinuC などのLinux の資格でも、
コマンドのオプション・ファイルパスの暗記には困る

SSL 関係のファイルパスの暗記、
tar, find などのコマンドのオプション

98 :
>97
修正

>SSL 関係のファイルパスの暗記
SSH だな

99 :
>>95
理由も言えないならわざわざからむな。
カス。

100 :
初心者にWSL使わせると
rootfs以下をWindowsから直接編集してぶっ壊す事故が怖いわ

101 :
それを言うならサンドボックスすらなくて直接システムをぶっ壊せるMacは

102 :
ちげぇよ
windows側からWSL内のファイル構造っぽいのが見えることは見えるんだけど
実はVolFSという仮想的なもの、かつWindowsからの編集を想定していないので
Windowsから編集するとWSLのファイルシステムが壊れて不可解なことになって死ぬ

103 :
所詮サンドボックスなんだから壊れたら再インストールすればいいだけだろう
MacはCLIに不慣れな人がうっかりシステムを壊すリスクがより大きい

104 :
>>100
> rootfs以下をWindowsから直接編集してぶっ壊す事故が怖いわ

rootfs以下をWindowsから直接編集するのは大変だよ
なにせどこにファイルが有るのか容易にはわからないんだから

知ってるなら何処にファイルが有るのか
Windowsから見た時のパスを言ってみてよ

105 :
windows7で使えない時点で論外なんだが

106 :
>>105
今年でサポート切れるんだけどどうするの?
Rubyistさんならもちろん大正義Macに乗り換え?

107 :
>>102
WSL使おうという奴がわざわざWindowsから編集するのか?

108 :
>>104
見つけるのが大変なのは知っているが
使い慣れたWindows上のエディタで編集したいというのは当然の要求だし
バカがやらかさない保証にはならんだろ

109 :
>>84
>ossプロジェクトもgithubがマイクロソフトに買収されたとたんにgitlabへの移行が相次ぐなどrubyコミュニティ特有。

ほうほう

110 :
>irb だけはLinux側で使う。

こういうアホな選択してるからドザは馬鹿にされ続けるんだろう

111 :
gitlabに移行した例を教えてもらいたいところだね
相次ぐって言ってる限りはパッと5,6個は思いつくだろうし

112 :
>>108
初心者はやらないだろ

113 :
完全な初心者より中途半端に出来ると勘違いしてる香具師の方が危ない

114 :
WSLを使う気はあんましないけど、Windows上からVolFSを弄ると本当に壊れるのかは気になるな

115 :
>>114
単純な話だよ。

WindowsのNTFSではファイルごとに所有者や各種権限がある。
読み取り権限、書き込み権限、他には拡張属性の読み書きとか所有権の取得とか
同じようにLinuxでも所有者やパーミッションという情報がある
これらは一対一で単純に結びつけることができない
(例えばWindowsにrootというユーザーは存在しない)

だからNTFSの通常のファイルの所有者や権限とは別に
ファイルごとに代替ストリームを使ってWSLのメタデータを書き込んでる。

Windowsのアプリからファイルを変更すると、この代替ストリームを
考慮してないためにメタデータ破棄されてしまうソフトがある。例えばファイルを保存するときに、
新しくファイルを新規作成するようなものは、代替ストリームのデータが消えてしまう。

VolFSが消えるというのは単にメタデータが消えてしまうということ
ファイルそのものやファイルシステムが壊れるわけではない

116 :
>>115
WSLをWindows用コマンドライン環境にしたかったんだけど、そのへんを知って、ムリだと思った。。。orz
chmodひとつできないとは。
ファイルの内容には/mnt経由でアクセスできるものの、あくまでちょっと別物感。

ということで結局、MSYS2に戻りました。

117 :
横からすまそ
Windowsは何をしても不安定で、結局ubuntuに入れかえちゃったよ
何の心配もなくサクサク動くからええで

118 :
RubyはWindowsで不安定だからPythonのほうが良いよ。

119 :
勢いがあるときにいろいろ直してれば良かったんだがな
たまにバグ報告してたけど、今はもうrubyで書いてたことはnode&typescriptに置き換わっちゃた

120 :
>>116
> chmodひとつできないとは。
いやできるよ

chmodはWSLのメタ情報を変更するコマンド。
NTFSのメタ情報を変えたいなら、Windowsのコマンドを
WSLから実行すればいい。

MSYS2を使ってもそれは同じでしょ?MSYS2を使った所で
chmodじゃNTFSのメタ情報を変えることはできない

121 :
うまくいってるときは自己肯定されるからwindows嫌ってるコミュニティが直すわけなかった。詰んでた。

122 :
ext4, NTFS では、ファイルシステムが異なるから、ファイルのメタ情報も異なる。
これらを、同一に出来ない

数年前に出た、Samba の本は、1万ページぐらいあるような分厚さだけど、
それだけあっても、ファイル共有しても、メタ情報が異なる

仮想OS でも、そう

123 :
>>121
ほんそれ

124 :
>>119
Ruby1.8時代よりは大分Windowsでの動作がよくなったと思うぞ

今問題あるのはrb-readlineくらいだし

125 :
どうでもいいな
そのために無駄な開発リソースが割かれて開発が遅くなるくらいならきっぱり切り捨てるべき

126 :
rubyって数人で開発してるような状況だしね

127 :
目的 ゲームのプロトタイピング
機能 スプライト、モーフ、負荷は軽め
環境 Windows、cRuby
Ruby/SDLやDXRubyあたりが有名かと思いますが前者は関連ライブラリが多い上に最近のcRubyで動くのか判らず
後者はWindows依存になってしまう上に低レベル故にコード量が増えそうです
高レベルかつ簡単にインストールできる(解凍すれば終わりみたいな)のとか無いですかね

最終的にはWindows以外でも動かすのでDirectXべったりは好ましくないです

128 :
>>127
rubyでやる仕事ではないな

129 :
>>127
もう今の時代はウェブブラウザでええやん

130 :
>>127
Unity使おう

131 :
>>128-130の要約「無い」

132 :
学習中ですまんが
https://www.ruby-lang.org/ja/documentation/ruby-from-other-languages/to-ruby-from-java/
> JavaからRubyへ移行すると、コードの量を大幅に削減できます。
っていうのはどんな感じでコードを削減できるの?
カッコが減るとかそういう話?

133 :
>>132
デザパタの言語組み込み化レベルでコードが減る
100行のコードが正規表現ループで5行になりましたみたいな感じ
それの初稿が書かれたときには存在しなかったが現在ならJavaをKotlinで書くのに近い

134 :
Javaよりも冗長な言語は存在しないレベルなんやで?

135 :
bundler使ってインストールしたgemをrequireするhoge.rbファイルを実行するには

 bundle exec ruby hoge.rb

するしかない?

 ruby hoge.rb

で実行できるような方法ってない?

136 :
bundlerじゃなくてグローバルにインストールしたら

137 :
レンタル鯖想定。

138 :
require "bundler/setup"

139 :
>>138
それ、既にやってみてたんだが動かなかったんだわ。



・・・で、今もう一度やってみたら何故か動いた。理由が分からない。。。(# ・`д・´)

ともかく、解決したのでありがとう。

140 :
tes

141 :
2018/11/19

Matz が、LegalForce 社の技術顧問に就任
https://www.legalforce.co.jp/news/2018/1119_01.html

自然言語処理を用いた、クラウド型契約書レビュー支援サービス

DSL を使うのか?
Vagrant, Chef, Sinatra みたいなものか

142 :
>>141
単なる名前貸しなのでRubyもMatzも
LegalForceとは何の関係もありません

143 :
ProgateのRuby5までやったけど、なにかできるかと言われると何もできない
悲しい

144 :
改訂2版 Ruby逆引きハンドブック、2018/8/28
株式会社マネーフォワード

これを読めば、grep みたいな、パイプライン上でのフィルターも作れる。
Ruby は、Windows でも、PowerShell よりも可読性が高く、高度。
Windows のクリップボード処理もできる

WSL から実行すれば、なんと日本語のファイル名でも文字化けしない!
Windows も、WSL 側から見れば、UTF-8 になってる

オブジェクト指向で、本格的なシステムを作るのなら、以下も読む

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

145 :
>>143
何ができるかじゃない
何をするかだ
技術は後からついてくるぞい

146 :
もう2.6.1出てたのか

147 :
ruby って、ちゃんとwin10の仕様に乗ったバルーンだして、バルーンクリックされたら
イベントハンドラ実行とかすら
まともにできなくね?

148 :
rubyTk + balloonhelp

149 :
今どきtkかよ…

150 :
そう思っていた時期が私にもありました

151 :
ここだから質問する。今あえてPython3とRuby2.5を同時に勉強してるところ
同じような動きするサイトを作ってみて、tk動かしてみたら、明らかに
Rubyのtk遅いんだが、こいつを速く動かす方法ある?

ちなみに環境はWindows10の64bit

152 :
rubyではwindows使いに人権はありません。おととい来やがれ!

153 :
>>151
WindowsかRubyどちらかを今すぐ捨てなさい

154 :
>>152
まあ、Windows環境においては、それくらいは自力で対処できる人、あるいは「Pythonで満足に動いてるならそっちでいいじゃん」と言えるような人が求められてはいるな

155 :
ちなみに海外だとWindowsのPython製商用GUIアプリもあったりするけど、
RubyでWindowsの実用GUIアプリを作ってる奴なんて い な い から、GUIライブラリなんてロクに最適化されてなくて当然だ

156 :
「同じような結果を出すように作られているが同じような構造にはなっていない」に3000点

157 :
GUI は、HTML, CSS, JavaScript で作る

そうすれば、ほとんどの操作を、ブラウザが提供してくれる!

158 :
えっ、rubyキチガイこと読点君どうしちゃったの?くじけた?

159 :
>>153-157
なるほど、よくわかった。やっぱりあとはVM突っ込んで動かした
方がよさそうだな

160 :
tkの速度にそんな違いが出るとは思えないんだが

161 :
まぁ、かくして、Rubyは毎年
凄い勢いでシェア減らしてるから、
あり様に対する評価は返ってきてる。

あと8年ぐらいでPerlと同じぐらいまで、
新規でrubyで新規ゴード書く人は
激減するかと。

162 :
Railsは前よりだいぶWindowsに馴染んでるようにはなってるんだけどなあ。前なんて
gem通すところからもう初心者門前払い状態で、相当苦労したんだが、今は
あっさりスコーンと入って基本のCRUDぐらいはすぐできる。nokogiri入れるの
面倒なぐらい

さてと、今からVM通すためにルータに穴空けよ

163 :
漏れは、MSYS2 のコンパイル環境は入れていないけど、

gem "sqlite3"
で、Ruby リポジトリから、以下の共有ライブラリをダウンロードして入れてくれる

c/Ruby24-x64/lib/ruby/gems/2.4.0/gems/sqlite3-1.3.13-x64-mingw32/lib/sqlite3/2.4/sqlite3_native.so

もちろん、Nokogiri も問題ない

ただし、WebSocket が問題。
これが、Windows のバイナリがない!
コンパイラが無いと、コンパイルできない

164 :
そのレスどっかで見たな

165 :
ここか
https://mevius.2ch.sc/test/read.cgi/tech/1549282930/59

166 :
Ruby で、1-liner のフィルタ。
ファイル名を大文字で表示する

ls | ruby -lne 'print $_.upcase'

ARGF を1行ずつ読み込んで、変数$_ に格納する。
ARGF とは、複数のファイルや標準入力を連結して、1つにした仮想ファイル

ruby -lne 'print $_.upcase' a.txt b.txt

ruby -lpe '$_' a.txt b.txt

sed -n, awk をエミュレートしたもの

Windows10 で、a.txt の最後に、改行コードが無いと、バグる!

a X
あ y(ここに改行コード無し)

a X


y が消えてしまう!
行末処理する、-l が最後の2バイトを削除するからかな?

167 :
>166 の続きです

Windows10 で、ファイルの最終行の末尾に、改行コードが無いとバグるので、
Windows・Linux の双方で、それをチェックしたいけど、どうすればよい?

改行コードがあれば真、無ければ偽とする

ファイルの内容は、

a X
あ y(ここに改行コード無し)

168 :
https://docs.ruby-lang.org/ja/latest/doc/spec=2frubycmd.html
> gets で読み込まれた各行の最後に対して String#chop!を行います。
るりまにも、こう書いてあるしバグというか仕様だな

なんでperl互換のchomp!じゃなくてchop!なのかは知らんが
-lオプション使わなければいいんじゃないの?

169 :
>>166
> Windows10 で、a.txt の最後に、改行コードが無いと、バグる!

Windowsは関係なくて、Linux/Unixの文化だよ。
行の終わりは改行がかならずあるという前提
なくても良いものがあるけど、例えばシェルスクリプトで
whileとreadを使って普通に読み込むと、最後に改行コードがないと読み取れない

170 :
0とだけ(改行なしで)書かれたテキストファイルで嫌がらせができるお話

171 :
>>169
>>166

chompするときに改行がくっついてるときだけ切れば良いのに
中身観ないで無条件に一文字消してたらそりゃ消えるわω
糞アルゴリズム

172 :
lオプションの仕様だね
自動判別入れてるchompキモい派というのがいてだな云々
改行だけ消して欲しいのなら自力でchompだ

173 :
chompとchopで名前変えた理由もそれ?

174 :
というか、修正されとるぞ
https://bugs.ruby-lang.org/issues/12926

175 :
ありがとう。もう修正されているのか

ただし、漏れが使っているのは、Windows10 のRuby Installer で、
ruby 2.4.4p296 (2018-03-28 revision 63013) [x64-mingw32]

このバージョンでは、まだ直っていないのかも?

176 :
mingw版だから放置かな

177 :
単純に2.5.0以降修正されたってだけ

178 :
windows固有の問題だから放置されてたってだけ

179 :
Windowsが憎い。

180 :
不都合な動作をしたときバグなのか仕様なのか制限なのか考慮漏れなのか分からない

181 :
ソースが仕様。

182 :
誰か、

>>167
のチェックのやり方がわかる?

183 :
>>182
そのまま処理を書き下せばよろしい
現時点では無理に短くしようとするな
「カッコよく」しようとするな
そんな秒速何十回とする処理じゃないのだろうし効率もとりあえず気にするな

184 :
>>182
その程度のクセに他スレでruby宣伝荒らしするな!

185 :
Linux では、大文字小文字だけが異なるファイルが、同一フォルダに存在できる。
例、Ab.txt, aB.txt など

それらの有無を判定するには、どうすればよい?

有れば真、無ければ偽とする

186 :
どうすればいいかの部分は自分で考えようよ
そこの根底から丸投げしたらそれがちょっとの違いで動かなくなったとき全然対処できないよ
どういう処理をすればいいかを考えたら「これの実装どうすればいいっすか」って質問してくだされ

187 :
7f2c-Ioh3はrubyやる前に修めておくべきコンピュータの知識の授業があるような気がちょっとするな

188 :
>>187
彼にはネットを使う前に他人とのコミュニケーションで理解すべきことが多々あると思われる。
ところ構わず話の流れを無視してruby推しするのはやめて欲しい。

189 :
まあ国内の平均的なRailsやってます系は実際こんなもんだよ
Railsの教科書通りのコードを継ぎ接ぎするだけで、アルゴリズムはまるで書けない

190 :
Setとuppercaseもしくはlowercaseで

191 :
>>185
Dir.globでぶん回す
見つかった名前をtolowerしてファイル削除
最後に残ったものが重複

192 :
大学の授業でRubyとCやらされた

193 :
丸投げの質問の仕方しかわからなく申し訳ありません。
Windows10 でruby 2.4.4p296 (2018-03-28 revision 63013)を入れてますが、
グラフ出力用に Numo::Gnuplotというgem(GnuplotへのRubyインターフェース)
を入れて、gnuplot2.6.2も入れました。グラフ出力は上手くいってます。
 そして、Rubyを実行ファイルにできるocraというのもいれて、.exe化でき
ました。しかし、別のパソコンで.exeを起動すると計算結果とかは出てもグラフが出る
前に終了してしまいます。 おそらくgemのgnuplotは取り込んでいるが、本体の
gnuplotは実行ファイル作成時に取り込まれていないからだと思います。 
本体のgnuplotはC:\Program Filesにあるので、これをgnuplotのフォルダごと
C:\Ruby24-x64\libにコピーして
> ocra graff48b.rb C:\Ruby24-x64\lib --no-autoload --add-all-core と実行
してみましたが、今度はexeファイルがうまく実行できません

 本体のgnuplotとそれをRubyで使うためのgemをまとめてexe化できないものでしょうか?
 無理な気もしますが・・

194 :
> 丸投げの質問の仕方しかわからなく申し訳ありません。

いえいえ、丸投げっていうのはこうするんですよ。

>>195、後は全部任せた!

195 :
それだけじゃ原因がわからん
まずhello worldでも作ってみろ
ocraは実行ファイルのパスに多バイト文字が含まれている場合起動に失敗するから日本人が作ったneriってgemを使うか自分で依存関係調べてぶっこむなりしよう
つぎにgithubざっと読んだ感じだとgnuplotのパスは Gnuplot.new(path: 'パス') で指定するみたいだからlibなんちゃらにコピーとか関係ない。きちんと指定しろ
最後に、gnuplotも合わせて配布するつもりならライセンスが独自のものだからきちんと読んでからやってね
以上

196 :
ああ、一部ちゃんと読んでなかったわ

>本体のgnuplotとそれをRubyで使うためのgemをまとめてexe化できないものでしょうか?
普通はやらないが、可能か不可能かで言えば余裕で可能

んでパソコン苦手な非英語圏の人相手に配布するならocraはやめておいた方が良いってのと
起動自体はできてるなら配布先にgnuplotを各自インストールしてパスを通してもらうか
スタンドアロンのwgnuplotとかを実行ファイルに同梱して使うかしてね
後者の場合は上のレスを参考にパスを指定しろよな
あと一応 ruby, rubyinstaller, 使ったgem, Gnuplotのライセンスは確認しとけよ

以上終了

197 :
ライセンスとか無視したとしても、外部のでっかい(依存関係が大きくファイル数も多い)アプリを同梱して配布というのは「運用上」わりと速攻で破綻する
「必要なアプリやライブラリが利用可能になっているかをチェックして、不足時には別途インストールを促すスクリプト」をrubyで作って最初に実行するorさせるといいぞ
そこまでここで面倒見る必要はないという線を引くんだ、たとえ内製配布アプリだとしてもね

198 :
193です。厳しくかつ熱心な助言をいただきまして、皆さまがプログラミング
に真剣に取り組んでいらっしゃるとわかりました。おかげさまで、別のPCにwgnuplot?
を入れて、パスを通したら解決いたしました。
 島根在住なうえに、独学で勉強しているため難儀していました。
 ジオデシックドームの計算とグラフ出力をするためにプログラムを始めまして、グラフ
出力を友達に見てもらいたいから、実行ファイルにしたわけです。 とはいえ、ライセンス
に注意しなければならないという意見、真摯に受け止めます。
 >>197 そこまでここで面倒見る必要はないという線を引くんだ
そうですね。一人でしょい込む必要ありませんでした。肩の荷がおりました

199 :
Ruby配布とか絶対にやりたくないな
せっかくRuby使うんなら普通にRailsでWebアプリにしたらいいでしょ
グラフ出力も普通に可能だよ

200 :
え、Railsって気軽にできるもんなんですか? 使い道がわからないので、クラスやインスタンス変数など一度も
使ったことがないのですが。 松江市はRubyの本が数冊しかないので、勉強が進みません
・・・

201 :
少なくともRubyをWinで配布しようとするよりはRailsの方が遥かに簡単だろうな
本も腐るほどあるし勉強会とか行けば初心者仲間もいくらでもいる

202 :
>>198
島根在住ってとこは釣りなの?

203 :
1-liner の説明を読むと、-rfileutils みたいに、-r でモジュールをrequire できるとか、
gem install で、gem をダウンロードするのも、あったような気もする

gem install・bundle installなしでgemを使ったスクリプトを実行する方法
https://qiita.com/takahashim/items/c7b5d0e30b4aeb73d8f8

この本も良い

改訂2版 Ruby逆引きハンドブック、2018/8/28
株式会社マネーフォワード

島根県は、Ruby では有名

204 :
sqlite3 のgem(パッケージ)を、グローバルにインストールすると、
自分は、Ruby2.4 を使っているのに、2.0〜2.4 のすべてが入った!

なぜ?
最新版のバージョン指定をしなかったからかな?

C:\Ruby24-x64 以下に、
./lib/ruby/gems/2.4.0/gems/sqlite3-1.3.13-x64-mingw32/lib/sqlite3/2.0/sqlite3_native.so
./lib/ruby/gems/2.4.0/gems/sqlite3-1.3.13-x64-mingw32/lib/sqlite3/2.1/sqlite3_native.so
./lib/ruby/gems/2.4.0/gems/sqlite3-1.3.13-x64-mingw32/lib/sqlite3/2.2/sqlite3_native.so
./lib/ruby/gems/2.4.0/gems/sqlite3-1.3.13-x64-mingw32/lib/sqlite3/2.3/sqlite3_native.so
./lib/ruby/gems/2.4.0/gems/sqlite3-1.3.13-x64-mingw32/lib/sqlite3/2.4/sqlite3_native.so

205 :
>2.0〜2.4 のすべてが入った!
入ってない
終了

206 :
島根在住です。 通いつけのクリニックがあるビルにまつもとさんの会社があるので、
すれ違ったことあるはず。どんな人か知らないけど。いまだに光ケーブルが通ってない田舎です。
本も入門書しかないんです。
 Ruby逆引きハンドブック、チェックしてみます。

207 :
>>204
gemの仕様です
だからpre-build gemを嫌ってる人もいます

208 :
さすがに、MSYS2 のようなコンパイラーは、何GB も食うから、いらない。
ただし、コンパイラーが無いから、Windows 用のweb socket のバイナリが無くて、困っている

>>204
の、sqlite3/2.4/sqlite3_native.so だけを入れる方法は無いの?
2.0〜2.3 は、いらない

209 :
>>206
Amazonや楽天ぐらいあるだろ…

210 :
技術書ほとんど電子書籍でしか買わないかな。PDF でパソコンかタブレットで読んでる

211 :
mruby 出番無くなったな
https://qiita.com/inachi/items/903bb988e23a7ef83ca7
https://youtu.be/L125HSqkJ6U
https://makezine.jp/blog/2018/01/micropython_ref.html
https://qiita.com/hatobus/items/69b353dea3d8f2a25441

212 :
そもそもmrubyに出番があったことなど無かった
島根県の助成金貰う代わりのネタを考えないとMatzと取り巻きが露頭に迷う懸念はあるね

213 :
>>211
js,、scratch(まあscratchもjsだけど)、pythonか。
rubyが入れるわけないわな。
至極残当。

214 :
ていうかmrubyは「くみこみでもるびーつかいたい」という以上のものではないしそれ以上の役割を持たせてもいけないはずだったのだ
どこで間違えたのやら

215 :
>>214
mrubyは経産省やハードウェアメーカーがスポンサーに入ってるから、やってみた、うごいた、わーい、だけじゃ済まされないよ
だから誰も使ってなくても誰にも求められてなくても誰もやりたくなくても開発は続けなきゃいけない

216 :
典型的な埋没費用だね
経産省は血税をなんだと思ってるんだ

217 :
>>214
補助金詐欺とまでは言わないでも補助金ゴロ

>>216
ren4 に教えてやれ

218 :
そもそも組込で Ruby 使いたいっていう需要が小さいよね

219 :
東ロボなみの失態

220 :
組み込みに贅沢な文法いらんしなぁ。
数千行程度までなら、lua程度でいい。

221 :
rubyからCや特定CPU向けアセンブラを生成できるようにすれば用途は広がるが、
CPUを活用するにはrubyに不足している機能があるのかも

AIに出番をつくる何かを追加しよう

222 :
まだ負けと決まった訳じゃない(キリっ

223 :
 本は立ち読みして使える本かどうかチェックしてから買うもので・・・
 >>212
わかーました。Matzに会ったら教えちゃーけん、楽しみに待っててごしないや

224 :
勝ち負けどころちゃうやろ、Rails以外にもう使い途なんてあらへん状態や

225 :
>>167
自己レス。自分で作った

# ファイルの最終行が、改行コードで終わっているかどうかを判別する
# CRLF, LF ( \r\n, \n )

last_line = nil

File.foreach( "a.txt" ){ |line| last_line = line }

p last_line.end_with?( "\n" ) # 末尾が、\n か?

226 :
ひろゆきもpythonに浮気か

227 :
漢字Talkでは失敗するなw

228 :
>>225
ファイル全部を読まなくても size-1 で seek すれば十分だよ。

229 :
seek できるのは、バイナリファイルだけだろ。
改行コードを判定できるかね?

最後の1バイトを取って、文字コードに変換できるのかな?
バイナリから、文字コードへの変換

230 :
Gem.ruby_version >= Gem::Version.create("2.5")
でRuby2.5以上であることを判定しとけばいいじゃない

231 :
>>229
ri File.seek

232 :
テキストファイルを、バイナリファイルとして読み込んで、
最後のバイトが、CR かLF なら、最後に改行コードが無いと考えてみたが、

sjis でお馴染みの「表」などのダメ文字のバグが多い事を考えると、
バイナリファイルでは、複数バイトの文字を判別できない

ダメ文字とは、euc-jp では、複数バイト文字の最後のバイトに、\(逆スラッシュ)が存在しないが、
sjisには存在するため、行の最後に「表」などがあると、
その最後のバイト\ で、改行がエスケープされてしまう

文字の種類が増えていくと、これと同じ問題が生じるかも知れない。
複数バイト文字の最後のバイトに、CR かLF が存在するかも知れないから、改行と区別できない

233 :
>232
修正

>テキストファイルを、バイナリファイルとして読み込んで、
>最後のバイトが、CR かLF なら、最後に改行コードが無いと考えてみたが、

テキストファイルを、バイナリファイルとして読み込んで、
最後のバイトが、CR かLF なら、最後に改行コードがあると考えてみたが、

234 :
>>185
# 大文字小文字だけが異なる、ファイル名を見つける
filenames = <<"EOT".lines # ファイル名の配列
aB.txt
Ab.txt
xx
cd
CD
EOT

results = { }
filenames.each do |filename|
filename.chomp! # 改行を削除
fn_down = filename.downcase # 小文字に変換

if results.has_key? fn_down
results[ fn_down ].push filename
else
results[ fn_down ] = [ filename ]
end
end

return if results.empty? # 空

# 重複しないファイル名を削除する
results.reject! { |k, v| v.length == 1 }

results.each_value { |v| puts v.join( " : " ) }

結果
aB.txt : Ab.txt
cd : CD

235 :
>>232
ムダにややこしく考えすぎ。
だいたい、コントロール文字が複数バイト文字の一部に含まれるエンコーディングはかつて存在しなかったし、今さら将来に発明されることもない。

236 :
>>232
いつも他スレで暴れてるrubyボット君か。
毎度毎度、仕入れた知識の表層をなぞるだけで知ってるつもりになってるから、具体的な問題点が理解できてないし、考えようともしない。だからいつも的はずれなことを言っては他の人に突っ込まれる。

237 :
sjisには悪名高い「表」などのダメ文字が存在する。
複数バイト文字の最後のバイトに、\(逆スラッシュ)が存在する。
euc-jp では存在しないけど

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

特に外人は、1文字1バイトでコーディングするから、バグる!

238 :
今はUTF-8を使うので、sjisはもう過去の問題。
WindowsもUnicodeに完全対応している

239 :
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

240 :
>>239
チェックはgemが勝手に行っているから貴方のような馬鹿がいちいち気にする必要はない

241 :
ダウンロードじゃなくて、gem で入れた場合は、

checksum を確かめる必要は無かったかな?

242 :
>>237
コントロール文字に関係ないやろ。

243 :
>>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等のファイルがあるなら対策すること。

244 :
バカは古いバージョン使ってるからバグる

245 :
>>243
テキストファイルとして読み込んだファイルに、
seek のようなバイナリ(1バイトずつの)処理を使うと、
複数バイトの文字が存在するから、バグらない?

複数バイトの文字があると、文字数とバイト数が異なるから

246 :
>>245
お前もう諦めろ

247 :
>>243

fh.seek(-1, IO::SEEK_END)
の方がよさげ

248 :
macでHomebrewを使用して、最新版2.6.1をインストールしましたが、
ターミナルでバージョンを確認すると古いもの(2.3.7)が表示される。

この場合考えられる要因は何でしょうか?

249 :
マッキンは知らんけど、どうせPATHやろ?
whichとかruby -Vとかで、インストールされたパスと実際に実行されるパスを確認したら?

250 :
Mac は知らないけど、元からRuby が入っているから、仮想環境のanyenv を使うとか?
元のバージョンも消せないでしょ?

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

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

漏れは、Windows10 だけど、まだ、2.4.4 を使ってる

251 :
Win以外なら最新版でほとんど問題ないんだよおバカさん

252 :
>>251
お前のレベルは低すぎるなw
Rubyを使うのが目的で、Rubyで何かを作った経験がないだろ

253 :
>>243
結果は、true, false, false になったけど、どういう事?

254 :
>>234
修正

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

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

#=> ["a", "b"]

255 :
なぁなぁ。
CSRF対策って、トークンを input hidden に書けってのが鉄板だけど。
あれってform action のURLに書いてもセキュア度って変わらないことないか?
URLなら href にも書ける(使い道は考えてない)

256 :
>>255
だめ

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

リンクの中にトークンを入れてしまったら意味がない
トークンがリンクの中に入らないからこそ意味がある

257 :
>>2256
そんなん。
悪意のある奴から送られてくるリンクにあるトークンと
対象者の持ってるセッションに紐付けられるトークンは
全然違うやん。

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

↑以上、予想が非常に困難なトークンを前提。もちろんそれが当たり前だし。

258 :
>>257
全世界が認めている方法よりお前が考え出した方法のほうが優れていると思えるところがすげえな
お前と仕事する奴がかわいそう

259 :
>お前が考え出した方法のほうが優れている

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

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

理由が知りたい。

260 :
Rubyでスキルアップ出来るか?
https://www.youtube.com/watch?v=2wfQ3iG08UI

261 :
>>259
Ruby以前に、社会人としておかしいな。

262 :
Numbered parametersだって

263 :
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 などをやらないと無理

264 :
one time token は、URL のクエリ文字列など、見えたらダメ!

form のhidden 内じゃないとダメ

265 :
formのhiddenが見えないとかマジかよ
さすがにその理解はヤバすぎ

266 :
Rubyを勉強し始めようか迷っていて、適当にWeb見てたんだけどさあ
一部のページで、「Railsから入った人にとっては驚くかもしれないけど、Ruby単体でもプログラムが書ける」みたいなことが書いてあって驚いちゃったな
これ、Rubyの言語より先にRailsの学習をすることも可能なんか?

267 :
誰でも頭が良くなる、プログラムが書けるようになる方法が発見される 96873
https://you-can-program.hatenablog.jp

268 :
>>266
できる
「Rubyのコード」を書かなくても(知らなくても)Railsはある程度使える

269 :
>>268
そうなのか、ありがとう!
面白そうだからRailsからやろうかな

270 :
Rails は半年掛かるので、普通人は挫折する。
Sinatra から始めるのが良い

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

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

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

Railsが、全言語のフレームワークに応用できるのは、大半がRubyの文法とは関係ないから。
ほとんどの内容が、システムの事

271 :
でももうRailsははやらんよな。
実際にはわかりやすくもないし。

もちろん用途によるけど、Rubyに興味があるのなら、Rubyからやったほうがええんちゃう?

272 :
この行列の前後に、番兵(0)を置くには、どう書く?

ary = [[1, 2, 3], [4, 5, 6]]

結果
0, 0, 0, 0, 0
0, 1, 2, 3, 0
0, 4, 5, 6, 0
0, 0, 0, 0, 0

273 :
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

274 :
>>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]]

275 :
>>274
すみません。途中に入ったひらがなはゴミです無視してください。

276 :
>>272
番兵なんて使わないと言っておく
あんなの必要なに、古い言語だけや(笑)

277 :
番兵て。w
マトリクスに余白があれば、処理が簡単になるアルゴリズムは存在するやろ。

パッとは出てこないけど、ホントにいろいろ。

278 :
番兵を使わないと、1〜6 (1:start, 6:end)の道順をたどる際、面倒だろ?

例えば、1 から次を探すのに、上下左右を判断して、
上・左にはマスが無いから、番兵で壁を作った方が、プログラミングしやすい

279 :
素直じゃない

280 :
たのしいRuby 第6版、2019/3/19

Ruby 2.6 対応の新版が出た!

281 :
番兵が出てくるのはカプセル化が下手糞な証拠

282 :
番兵は、カプセル化には何の関係もない。
効率的な実装に役立つものだから。

283 :
nilとfalseが別だったりするし
Rubyの場合は番兵いらんと思うぞ

284 :
そら、番兵がいらんようなコードしか書いてないだけや。

285 :
番兵の話はお題スレからきていてると思うのだけど
番兵が有用と言う人と無用と言う人で
元のお題をやってみたら?

286 :
番兵が無ければ、

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

を判定しないといけないから、わかりにくい

287 :
範囲外アクセスをどう扱うかの方法論でしかないのでは?
lengthすらない昔のC辺りのやり方。
色々整備されてる現代言語でやる奴はアホ。
アホというか、だったらCやってりゃいいじゃん。
楽に書くために高級な機能があるのに番兵のほうが分かりやすい?w
高級機能のために速度犠牲にしてる言語で高級機能使わないとかww

288 :
eachよりforのほうが分かりやすい
mapよりforのほうが分かりやすい
reduceよりforのほうが分かりやすい
CでいいじゃんCやってなよ

289 :
範囲内かどうかをいちいち判定して、わざわざ分岐したいんか。
まったく、物好きやな。w

んなことをせんでも、番兵や余白を利用したら、わかりやすさや効率化を果たせることもあるんやで。

290 :
こんなのあったな

10 ON STICK(0) GOTO 40,60,30,60,50,60,20,60
20 X=X+(X>0):GOTO 60
30 X=X-(X<3):GOTO 60
40 Y=Y+(Y>0):GOTO 60
50 Y=Y-(Y<2):GOTO 60
60 RETURN

291 :
範囲が1つ多かったな
あと押さない場合0だったような

292 :
Ruby Motionって契約してる人います?
これって今から使い始めても継続的に保守され続けるような雰囲気してますか?

293 :
IDEが欲しいならRubyMineかVSCodeにしとけ
さすがにRubyMotionなんかもう完全に終わってる

294 :
>>289
Rubyの配列(Array)は添字による読み出しの際に範囲外だとnilを返す
逆に言えばnil以外で初期化することでnilを番兵代わりに使える
まぁ、負の添字に対するカバーは必要だが

295 :
番兵の勝ち

296 :
じゃあCでいいな。
遅いくせにCでやってたのと同じ方法でしか解決できないクソ言語。

297 :
何言ってんだこいつ

298 :
>>293
広く捉えればIDEなのかも知れませんが、iOS/Android等の開発ができるのが売りなので他ではなかなか代替が効かないと思うんです
http://www.rubymotion.com/jp/
これもう廃れてるんですかね・・・・・

299 :
Rubyすら死にかけているというのに
いわんやRubyMotionをや

300 :
Rubyでスマホアプリとかそれこそ論外
プロのバリバリのRubyエンジニアですら誰も使ってないわそんなもん

301 :
>>299-300
やはり止めておいたほうが良さそうですか
以前、将棋のロジックをRubyで書いてしまったので、これをiOS/Androidに使い回せたら良いなと思ったのですが・・・・

302 :
そんなん移植すればよかろうよ
書いた総時間の10分の1くらいでできるはずだ
プログラミングに慣れているというのはそういうことでもある

303 :
Rubyで書いたのかもったいない
絵に描いたような技術的負債だな
サンクコストと割り切って早めの移植をお薦めする

304 :
プロトタイプとして作るならRubyでも全然アリだと思うけどな
技術的負債と言い切る方がむしろおかしい感じがする

305 :
Haxe が、Ruby・Elixir も、JavaScript(JS) に変換してくれればなあ

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

まあ、ES2015(ES6)で書いて、Babel で、ES5 に変換するぐらいかな?

306 :
>>304
ロジックをRubyで書いてしまったからアプリもRubyで…
と言った具合に間違いを積み重ねることになった元凶を
技術的負債と言わずに何と言うの?

307 :
>>306
間違いは「プロトタイプをそのまま使いまわそうとすること」であって、
「プロトタイプにRubyを使ったこと」ではないはずだよね
「何がなんでもRubyを使うことは間違い」と言いたいだけなんちゃうん?

308 :
>>307
その解釈こそこの文脈ではうがちすぎだろう
実際のところは>>292に訊いてみないとわからんけど

あとIDEのサポートの薄いRubyがプロトタイピングに優れてるっていうのも
(ことロジックをという局面に限れば)眉唾だなぁ
RailsでWebアプリをって言うならまあ納得だが

309 :
Sinatra, Rails を使えば?

GUI は、HTML, CSS, JavaScript で、
サーバーサイドはRuby

310 :
Rubyで書いたものを別言語に移植するのは、そう難しい話でもないだろ
opalとかで楽しようとしたほうが罠に嵌りそう

311 :
perlで書いたのがもったいない
そう思っていた時期がありましたが
rubyで書いたらそんな小さな心配は吹き飛びました

rubyで書いたのがもったいない
そう思っていた時期がありましたが
pythonで書いたらそんな小さな心配は吹き飛びました

312 :
最初に苦労してCで書いておけばその後は言語の流行りに合わせてFFIラッパー書くだけで済んだのにねwwww

313 :
>>312
モノになるかどうか分からんものに苦労を強いるなんて愚の骨頂

314 :
>>313
将棋のAIみたいなCPU時間のかかる処理だと、Cならブルートフォースで全く問題にならない箇所が
ゲロ遅Rubyだとアルゴリズムの最適化が必要になったりして、結局Cの方が早かったんじゃないか、、、となるケースが多いよ
そもそもアルゴリズムの実装はCでもあまり生産性に差が出ないし

315 :
>>314
トライアンドエラーを繰り返すようなものをCでやるのはつらみがあるよ
ある程度形になってきたらあらためてCなりでやればいいだけ

316 :
>>315
高負荷なアルゴリズムの実装においては、遅すぎる言語を使うことでその「エラー」の閾値が大きく低下することがあるってことだ
遅くない言語では問題にならないことが問題になる

317 :
>>315
sassがそれをやったわけだが。

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

だけどあれ、確か2006年ぐらいにRuby版がでてから
6年ぐらいもかかっただろ?
そしてRuby版に機能が追いつくまでさらに数年

318 :
>>316
> 遅すぎる言語を使うことで

遅すぎるという言葉には2つの意味があって、
"実行速度が" 遅すぎる言語で問題になることがあるように、
"開発が" 遅すぎる言語では、その開発の遅さが問題になることがある

319 :
>>315
馬鹿なの?
トライ&エラーではrubyなりpython で作って、そくどの為にCで書き直すんだろ。
Twitter やFacebook もロジックはrubyで作って、そのままでは限界を感じたからも、っと速い言語に書き換えたろ?

ロジックさえ確立すれば、多少の記述量増加よりは問題にならない。
(むしろ問題があったから変更する必要に迫られた)

320 :
Vagrant, Chef, Homebrew など、環境構築運用でシェルスクリプトの代わりには、Ruby で書く。
rbenv(anyenv) も、Rubyか?

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

大規模になってきたら、他の言語に変える

321 :
>>319
高負荷な処理の開発においては、検証すらままならないほどに遅くなることが普通にある(Cで書いててもね)
そもそも最初からパフォーマンスが問題になることが分かっているなら、速度自体もアルゴリズムの良し悪しを決める重要なファクターだ
まあRuby使いには想像しにくい世界かもね

322 :
>>320
>大規模になってきたら、他の言語に変える
って>>292の話と全く変わらないな

323 :
>>320
> rbenv(anyenv) も、Rubyか?

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

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

環境構築というか、"端末の"環境構築なので
端末を提供しているシェルスクリプトが一番相性が良い

324 :
あと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

325 :
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

326 :
>>324-325 ちなみにこれ *envを使っていないLinux環境です。

*env を使うと各インタプリタ起動前にオーバーヘッドが入るから遅くなるが
これはそれがない純粋な速度ということ

327 :
それでもほぼ起動のオーバーヘッドだろう
RubyはRails専用なので長時間動作が前提だから起動時間はあまり重視されてないんだろうね

328 :
ツイッターってrailsって本当?

329 :
スタートアップで使ってたってだけで
もう使ってないから

遅すぎて見切られた

330 :
ツイッターがRailsていつの時代の話だよwww原始人かww
今でもScalaなのかどうかが気になるわwwww

331 :
>>327
> それでもほぼ起動のオーバーヘッドだろう

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

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

>>324-325は、*envを使ってないから、各言語用のインタプリタ本来の
起動時間ですよって話。

332 :
IOのオーバーヘッドもあるんじゃないの?
RubyはUnicodeの確認とかしてそう。
逆に、BashやPerl5はしてなさそう。

333 :
なんだよ?Unicodeの確認って
単に「Rubyは起動が遅い。」でいいだろw

334 :
出力にかかる時間を計ってる以上、「起動」の時間はわからんだろ。
Unicodeうんぬんは、文字の妥当性を検証してる気がしたから。バイナリを流すとエラーになったような。

きっとRubyは遅いだろうと思うが、それでも、おまえの確認は証明になっていないぞ。

335 :
>>334
Rubyは起動か文字列出力が遅い

336 :
はぁ、くだらね。Rubyが遅いという結論は変わらないんだから
こっちは、起動が遅くても文字列出力が遅くても構わんのだがなーw

はい。やっぱりRubyは起動が遅いです。
php、pythonの3.5倍、Perlの17倍、shの50倍遅いです。

$ time ruby -e ''
real 0m0.053s
user 0m0.049s
sys 0m0.004s

$ time sh -c ''
real 0m0.001s
user 0m0.000s
sys 0m0.001s

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

$ time php -r ''
real 0m0.015s
user 0m0.004s
sys 0m0.011s

$ time python -c ''
real 0m0.014s
user 0m0.011s
sys 0m0.004s

337 :
だいたい。たかが出力にそんなに時間がかかるわけ無いだろ
real 0m0.054s の大部分が起動ではなくて、
出力の時間だっていうのなら、それはそれで大爆笑もんだろ
起動よりも出力のほうが時間かかるって言ってんだから

338 :
なんでそんな人間がRubyスレを覗いてるんだろうねぇ…
Rubyが嫌いならRubyスレなんて覗かなきゃいいだけなのに

339 :
ごみん

340 :
シェルスクリプトでループしたら、5分以上掛かる。
プロセスも、10万以上起動されるし

Ruby なら、3秒ぐらい

だから、シェルスクリプトで書かない

341 :
> シェルスクリプトでループしたら、5分以上掛かる。
> プロセスも、10万以上起動されるし

お前の書き方が悪いんだろw

342 :
>>340
ウソでなければ、極端すぎる。
シェルどうこうじゃなく、ただやりかたがまずいことを疑うな。

343 :
まさか、Cygwinだったりしないよな?

344 :
ruby --disable-gems -e ''
ならそんなに時間かからないはずだけど。

345 :
>>342
そいつは何言っても自分を省みることのできない奴だから、構うだけ無駄だと思うよ

346 :
>>338
日本が嫌いなのに日本にしがみついてる朝鮮人みたいなもんだよ。

347 :
Rubyて「楽しく開発ができる」って言うじゃない?

348 :
うん
Rubyしかできない人ほどそう言うね

349 :
その逆、「開発がヘヴィで苦行なデスマーチになりまーーーす!」と宣伝する言語は無い
一般的には、どんな言語や商品でもそう宣伝する、そうしない商品は無い

350 :
>>347
開発当初はその通り
Railsがしゃしゃり出てくる前もまあ当時の他言語と比べてまあ妥当
Rubyデツクルモノ=Railsとなってからは「Ruby別に楽しくないじゃん」とか言われるようにはなった
メモリ16GBとSSDで意識高い系言語もIDEでぐわんぐわん言わせられる昨今、Rubyのそのへんのメリットは比較上は薄い

351 :
>>347
ごめん。
RubyよりHaskellが楽しい。

352 :
助成金サギみたいなのはやめようぜ

353 :
ほんとうはデスマになってるのに
Ruby使うことでラリって気持ちいいから
デスマに気付いてないケースは多そうだ

354 :
後のこと一切気にしなくていいならJavaでも楽しいよ
最近Rubyにヘイトが集まってるのは、Rails全盛期にそうやって乱造されたアプリの便所掃除の仕事の割合が増えてるから

355 :
書きやすく 読みにくい
→楽しく適当に書かれたウンコードの保守押し付けられた奴らブチ切れ
当然書いた本人はもういないw

356 :
perlの読み難さに嫌気が差して造られた言語なのにperlの悪い所を引き摺ってるからな

357 :
パターンマッチだって
https://bugs.ruby-lang.org/issues/14912

358 :
社員50人の「Ruby 開発」という会社の求人を見た。
東京・大阪で求人

Rubyでは、国内3位だって!

Cookpad, マネーフォワードに次ぐ会社か?
上場してるのか?

359 :
変換表を使って、置換できるのは便利!

hash = { 'ab' => 'あ', 'xy' => 'ん' }

p re = Regexp.union( hash.keys ) #=> /ab|xy/

p "9xy9ab9xyx".gsub( re, hash )
#=> 9ん9あ9んx

gsub(pattern, hash) -> String
文字列中の pattern にマッチした部分をキーにして、hash を引いた値で置き換える

hash = {'b'=>'B', 'c'=>'C'}
p "abcabc".gsub(/[bc]/){hash[$&]} #=> "aBCaBC"
p "abcabc".gsub(/[bc]/, hash) #=> "aBCaBC"

360 :
このメソッド設計したやつ頭悪そう

361 :
直交性のかけらもない醜悪な仕様だね

362 :
直交性の権化とも言えるJavaのライブラリがいいかといえば、そうとも言えないわけで
バランスって大事だよね

363 :
キャプチャとかグループ参照とかそのへんの問題だと聞いた
ブロック引数じゃないと先に評価されちゃう

364 :
ブロック使わないと正規表現による置換が全て表現できないとわかった時点で第2引数廃止するべきだったってのは、
まあその通りではあるにはあるのだけども

365 :
んなこというのは、Ruby者だけやろ。
ふつうは、使い分けりゃいいんだよ。
まあ、他の言語にさんざケチをつけまくったわけだから、Rubyにもケチをつけんとな。

どうでもいい改善のために、後方互換を壊すのはクソ過ぎだが。

366 :
最近、Rubyで簡単に稼げたとうたって謎の講座を売りつけようとしてるやつがえっらい増えてんな
HTMLで稼げた系の方が遥かに多いものの、SNSにも動画サイトにもすげえ数あるわ
情報商材屋もアフィリエイトや仮想通貨ネタじゃ食ってけなくなってHTMLネタや延いてはRubyネタまで来たんだろか?

367 :
補助金に群がる日本恒例のあれやろ

368 :
Cygwinでruby-test-unitを入れたら/usr/share/gems/にインストールされた。

bundle exec ruby hoge.rbとかするとtest-unitがないって言われる。

gem envするとGEM PATHSに/usr/share/gems/がはいってる。
bundle envするとGem Pathに/usr/share/gems/が入ってる。
bundle exec gem envするとGEM PATHに/usr/share/gems/が入ってない。

bundler使いつつ/usr/share/gems/にあるtest-unitを使うにはどうするのが一番スマート?

369 :
Windows では、Ruby Installer のMSYS2 を使うのでは?

漏れは、MSYS2を入れてない(ポータブル版を使っている)から、
web socket などはコンパイルできないけど

64ビットOS で、Ruby 2.4/2.5 なら、
C:\Ruby24-x64
C:\Ruby25-x64

2.6 は、まだ使わず、1年は様子を見た方がよい

370 :
windows で ruby はマジでお薦めしない
四の五の言わず VM 入れろ

371 :
WSLでいいよ。楽だし。

372 :
WSLは、2でかなり様変わりするようやな。。。
素人はまだしばらく様子を見てたほうがエエんちゃう?

373 :
もうとっくに様子を見る次期は終わってるよ。
WSLは十分実用になる

374 :
windowsでそこまでやりたいか?
特にRubyを使うメリットゼロだろ
素直にlinux使えよって思う

375 :
>>373
2は別物だと知ってるか?

376 :
RubyってLinuxじゃなくね

377 :
>>375
WSLとWSL 2は共存可能

https://news.mynavi.jp/article/20190508-820096/
> MicrosoftはWSL 2は通常のアップデートの中で提供し、WSLとWSL 2の共存も可能だとしている。

WSL2はまだでてないし、様子見というのはわかる。
だがWSLは様子見の段階は終わってる。

WSL2は様子見してても、WSLを使わない理由はない
WSL2はWSLを改善するのが目的なので、様子見の段階は有るにしろ
最終的にはWSLよりも良いものになる

今はWSLを使えばよい。WSL2が実用レベルだとわかったら乗り換えれば良い

378 :
素人は、状況が落ち着いてから乗っかればいいんだよ。

379 :
漏れは、Windows 10 で、Ruby 2.4 を、C:\Ruby24-x64 に入れてる

同時に、WSL, Ubuntu16.04 で、Ruby 2.3を入れてる。
Ubuntu18.04 なら、さらに、Ruby のバージョンも上がっているかも


ただし、1-liner を書く際、Linux では、これで動く。
ls | ruby -ne 'puts $_.center(20, "-")'

一方、Windows では、" でバグるから、
ls -name | ruby -ne 'puts $_.center(20, %Q("-"))'

"-" の部分を、Ruby の% 記法で囲んで、%Q("-") としないと正常に動かない

%, %Q で、ダブルクォーテーションをエスケープできる。
\"-\"

380 :
>>376
みんなコードを書くのはMac、実行がLinuxってのが普通になっちゃってるからな
Windows版は、「高卒用パソコンなんてサポートしてどうするの」ぐらいの扱いがされてる

381 :
>>379
> 一方、Windows では、" でバグるから、
WSLで動かしてるけど、Linuxと同じように使えるよ?

382 :
>漏れは、Windows 10 で、Ruby 2.4 を、C:\Ruby24-x64 に入れてる

って言ってるやんけ

383 :
>>379
では、

これは、Windows 10, WSL, Ubuntu16.04 上でやった。
ls | ruby -ne 'puts $_.center(20, "-")'

一方、Windows 上のPowerShell(PS) では、" でバグるから、 %Q("-") が必要。
ls -name | ruby -ne 'puts $_.center(20, %Q("-"))'

つまり、bash, PS など、シェルの種類によって、書き方を変えなければならない

まあ、ls, ls -name とか、他の部分も異なるけど

384 :
お前らずーーーーと同じ話してるな

385 :
>>383
全部%クォートで書けば解決!

386 :
だから、Windowsを使うのを止めれば、すべて解決だよ。

387 :
WindowsでWSLを使ったら全部解決した。ワロタ
MSすごいな。

388 :
MSのLinuxへの貢献度は昔から高かった。

389 :
ruby が何か努力した訳ではないな
M$ が頑張ってくれただけ

390 :
初心者すぎてすみませんがprogateのrubyを2回やり終えたんですが
次は何やるのがお勧めでしょう?
同じくprogateのruby on railsに進むべきか
たのしいrubyや3ステップで学ぶruby入門などの書籍を読むべきか
あるいは他に何かありますでしょうか?

391 :
>>390
いいから何か作ってみなよ

392 :
>>390
俺と一緒にRubyMotionをやらないか

393 :
>>392
やる!

394 :
この3冊を読む。
たのしいRuby 第6版、2019/3/19
Effective Ruby、2015
改訂2版 Ruby逆引きハンドブック、2018/8/28

「たのしいRuby」だけ読んでも、そこそこプログラミングできる!

Linux の基本コマンドを30ぐらい見て、
1-liner とか、パイプラインのフィルターでも作ってみれば?

他には、Enumerable の文書で、どういう機能があるか理解する

395 :
例えばNet::HTTPみたいな::がある場合のautoloadってどう書けばいいの?
現時点ではautoload :Net,'net/http'みたいにしてるんだけど、
これだとNet::SMTPを参照しても読み込んじゃうよね

396 :
キーワードなのかKernel関数なのかさっぱりわからないんですが見分け方を教えてください
rubyの場合は動的直接拡張もあるのでパンクしてやばいです

397 :
>>396
予約語は公式リファレンスに書いてある

398 :
>>396
IDE使えばいいんじゃね

399 :
初心者にも満たない学習者です
他人様のコードで申し訳ないんですが

(ttp://2d6.parasite.jp/rgss/script/restart.html)

class Scene_Title
 (中略)
 def read_save_data(file)
  (中略)
  characters = Marshal.load(file)
  (中略)
  Graphics.frame_count = Marshal.load(file)
  (中略)
  $game_variables   = Marshal.load(file)
  $game_self_switches = Marshal.load(file)
  (中略)
 end
end

これ、どう読んで解釈したら良いんでしょうか
Marshal.load()ってunserializeやってくれる関数ですよね
何回も"file"を読んで、同一の内容を、それぞれ違う変数・グローバル変数に入れてる?
それとも同一の内容じゃない?読むのは1回だけ?

OSやversionはすみませんわかりません
ツクール関係だとは思うのですが、ツクール関係独特のものなのかどうかもわからず

400 :
シリアライズされてるなら同名の変数にキチっと入れてくれるんじゃないの

401 :
最適化されてない自動生成のコードだろ

402 :
同じファイルを何回も読むのは、無駄

でも中略部分で、そのファイルに書き込んで、ファイルの内容を変えているなら、
再読み込みする意味があるけど

解説が付いていない、他人のソースコードを分析しない方がよい。
書いた人は、プログラムの仕様を知っているけど、
読む人は、仕様を知らないから、かなりの時間を損する

仕様(質問)からプログラム(答え)は書けるけど、
プログラム(答え)から仕様(質問)を把握するのは、極めて難しいから

つまり、なぜこういうプログラムになったのか、の「なぜ」を解明するのが極めて難しい

物理現象と同じ。
法則から現象は推測できるけど、現象から法則を導き出すのは、極めて難しい

>>396
VSCode でも、キーワードなどは色分けされる

403 :
ありがとうございます
特に中略部分でfile側が変化しているということはないようです

つまり、暗黙的に何か、Marshal.load()が左辺の変数名に拘束されるとか
Marshal.load()のfileオブジェクトからの読み取りがスタック的になってるとか
そういうのは無くて、普通に読んでいって大丈夫ということなんですね

>>402
おっしゃることもわかるんですけど
自分は作法が全然わからない時は特に、リファレンス見つつ他人のコードを見つつ勉強が効率良くて

404 :
他人のクソコードを分析しても、時間の無駄。
普遍的な知識を得られない。
他人の仕様を推測するだけ

この3冊を読んで、プログラミングのお題スレの問題を解いた方が、力がつく。
Sinatra, Rails をやっても良いし

こういう勉強が普遍的で、他言語にも応用できるし、自分で考えるから成長できる

他人のソースコードを持ってきて、これはどんな事をやってるのですか? って質問する者が多いけど、
他人は仕様を知ってるけど、質問者は仕様を知らないから、極めて不利

一方、プログラミングのお題スレでは、仕様が与えられているだろ。
こういう場合には、他人のコードを見ても、意味がわかる。
だから勉強になる!

プログラミングとは、仕様からプログラムを作るもので、
プログラムから仕様を解明するものじゃないので、時間を失うだけ!
特に初心者にとっては、良い本などで、体系的に浅く学ぶのを勧める

推薦書
たのしいRuby 第6版、2019/3/19
改訂2版 Ruby逆引きハンドブック、2018/8/28

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

405 :
宣伝費、いくら貰えるんだろう?

406 :
いつものキチガイを相手にするつもりはないけど、質問者が誤解しないようにコメント
仕事のプログラミングだと基本的にソース眺めてる時間のほうが長いよ
ましてRubyも今や落ち目で便所掃除の仕事ばかり増え、全く新しいものを作る機会は減る一方だ

407 :
>>405
ないよ
そんなものがあったら3日でBANだ

408 :
>>403
参考にするのなら、別のソースにしたほうがエエんちゃう?

409 :
開発/運用側に立ってるとネットなんて
宣伝と、自作自演・サクラと、ユーザ奪い合い荒らしと
この3つばっかりって身にしみてるもんですし

>>408
たまたまMarshal関係で調べてて出くわしたもので
rubyがこういう(>>399)書き方・使い方がデフォな言語なのかどうかを
知りたかったというのがほとんどなので

410 :
>>409
開発運用側に立ってなんて言うからには他の言語での開発経験があるのだろうけど、それで>>399の理解というのは謎だなと思った

411 :
だから、他人のクソコードを見ても、時間を損しただけだろ。
得るものなんてない

「Marshal.load」で検索すれば良いだけだから

こういうAPI の知識は、文書を見れば良いだけ。
他人がどう使っているか、考えたりするものじゃない

考えるのは、仕様からプログラムに翻訳する所。
こういう単なる知識は、検索するのが早い

それに、その他人が間違ってるかも知れない。
クソコードになるほど考えさせられて、時間を無駄使いさせられるw

だから、良い本を勧めるわけ。
良いコードはシンプルで、そのまま英語のように読める!

他人のコードから、仕様を推測するなんて、漏れはやらない。
出来たとしても所詮、推測だし、得るものはない

漏れも仕事で、多言語で、仕様書がないコードを解析してきたけど、得るものはほとんどない。
せいぜい、重箱の隅をつつくような知識ぐらいしか得られない。
その知識も他で役に立たない。転用できない

なぜかと言うと、その仕様は他人に与えられたものだから。
自分には、それとは異なる仕様が与えられるから!

普遍的な、多くの言語でも使えるような知識は、良い本から得られることが多い。
それを元に、プログラミングのお題スレの問題を解いた方が、力がつく!

412 :
そのMarshalのコードはかなり無駄だがファイルの内容が小さいから富豪的にやってるだけだと思う
実際はちゃんとセーブデータから該当するデータを読むという処理にすべき

413 :
それに何回も同じファイルへの読み込むのは、
他のプロセスで、そのファイルを書き換えているからかも知れない

だから、ひょっとして書き変わっているかも知れないから、
出来るだけ新しいファイルを、読み込もうとしているのかも知れない

結局こういうように、仕様に対する推測ばかりするようになる

バグのほとんどは設計段階で生じる。
仕様がおかしかったら、必ずクソコードになってしまうw

これはもはや、プログラミングではない!
このように漏れらはいつも、設計・仕様の話ばかりしている。
顧客の要求定義も知らないのにさ!ww

漏れは、こういう仕事をさんざんやってきた。
その度に同僚同士で、クソコードを分析しても得られるものはないし、
時間の浪費だよねって、常々言い合ってきたw

お金をもらえるからやってるだけで、勉強にはならない。
勉強効率で言えば、1/100 とか

重箱の隅をつつくような断片的な知識は、覚えられられないし転用できない。
体系的に学ぶ必要がある

414 :
fileに複数のオブジェクトがdumpされてて
それを順番にloadしてるだけだぞ

415 :
Marshal.load(port, proc = nil) -> object

port は、String か IO と書いてある

同じファイルを何回も読み込んでいるのではなく、
複数のオブジェクトがある場合、
一度にすべてを読み込まず、1つずつ順番に読み込んでるという事かな?

結局こういうように、どう作っているのか、他人の仕様の推測ばかりするようになる

このように漏れらはいつも、設計・仕様の話ばかりしている。
顧客の要求定義も知らないのにさ!ww

結局、他人がどう作っているのかなんて、わからない!
所詮どこまで行っても、推測に過ぎない!

416 :
仕様は>>399が(中略)したところに書いてあったぞ

417 :
全部コピペしてくれ
気になって寝られない

418 :
>>415
APIの仕様は文書で調べればいいだけと自分で>>411で書いているくせに、>>415では何で頓珍漢な当て推量をする流れなんだ?
いつもどこかで聞いてきたようなお題目を並べてはいるが、上っ面の字面だけを覚えているだけだろう。本人は実践できてないし理解もしていない。

419 :
Marshal.load(port, proc = nil) -> object
port は、String か IO と書いてあって、仕様を知らないと、どちらかわからないから!

漏れの印象では、Marshal は、dup, clone などのdeep copy 関係のクラス

質問者のは、文字列化して外部プロセスに送ったり、
外部プロセスから文字列をもらって、オブジェクトを構築したりする用法かな?

JSON.parse, stringify みたいな感じなのかな?

「Ruby逆引きハンドブック」では、分散(distributed)Ruby, dRuby を使ってる。
外部ホスト・プロセスで動く、Rubyとの通信

dRubyでは、Marshalによる値渡しが基本みたい

420 :
知らん人多いのか・・・びっくりだ

STDIN.getsなんかと同じで必要な文だけ読み取ってるだけだぞ

421 :
Marshalとか今時使うもんじゃない

422 :
今時は何使うん?

423 :
Rubyとか今時使うもんじゃない

424 :
Marshalでファイルに複数のオブジェクトを読み書きできるのか
てっきり1個のオブジェクトに固めてから使うのかと思った
リファレンスマニュアルにはそのあたり書いてないからね

425 :
CSV出力処理でメモリが上がってしまうことが多く、対策しようとしているのですが良い方法はありますか?
少し調べて、pluckメソッドを使おうと思ったのですが、ソート順が想定通りにならなかったりしそうだったので、引き続き調べてみています。

426 :
出力するのにソート関係ないし
質問自体が初心者だなぁ(笑)

427 :
CSV.foreach で、ファイルを1行ずつ処理できる

このメソッドは、たぶん1行ずつ読み込んでは、
そのデータを捨ててと言うのを繰り返すのかな?

でも、ソートするなら、すべてのデータがメモリ内に存在しないといけないのでは?
だから、全行をメモリ内に読み込むことになる!

428 :
Python では、collections.Counter で、要素の出現回数を数えられるけど、
Ruby でも、簡単にできる方法ある?
普通には、Hash に入れながら、回数をインクリメントしていくけど

import collections

l = [ 'a', 'b', 'c', 'b', 'a' ]
c = collections.Counter( l )

print( c )
# Counter( { 'a': 2, 'b': 2, 'c': 1 } )

429 :
>>428
自己レス

配列に含まれている重複している数を数えるには?
https://teratail.com/questions/91229

l.each_with_object( Hash.new( 0 ) ){ |e, h| h[ e ] += 1 }

Python の、こういうのは無さそう。
c = collections.Counter( l )

430 :
["a", "b", "c", "b"].tally
#=> {"a"=>1, "b"=>2, "c"=>1}

431 :
>>425
csvを全部読み込んで処理しようとするとそうなるのは避けられない、何らかの工夫をするしかない
一行、数行ずつ処理し、終わるごとに配列、hashをクリアしていけばいいが、出来ない場合ね

csvを二回読み、一回目で必要なキーや情報だけ集めて一度csvをclose、
2回目にその情報を使って一行ずつ処理するなど

432 :
>>425
MapReduceみたいに複数のマシンに分散させるとか

433 :
[[1, 2], [3, 4]] の外側の[ ] を外すには、どうすれば良いですか?
[1, 2], [3, 4] のようにしたい

flatten では、内側の[ ]が無くなる

ary = [[1, 2], [3, 4]]

p ary.flatten( 1 )
#=> [1, 2, 3, 4]

434 :
>>433
あちこちでアホみたいなレスしてRubyの評判を落とすのをやめたら教えてあげるよ

435 :
>>433
ary[0] or ary.first

436 :
>>433
意味がわからん。

437 :
*[[1, 2], [3, 4]]

438 :
オススメな本ある?

439 :
>>438
アマゾン/dp/B00ICKLC2A

440 :
>>439
Rubyで作る奇妙なプログラミング言語-〜ヘンな言語のつくりかた〜
これ?

441 :
>>440
そうです、結構おもしろかったですよ

442 :
>>441
Kindleバージョンしかないの?

443 :
>>442
書籍で出ていましたよ、私が持っているのは書籍の方

444 :
【実体験】ブログを1,000記事ほど書いたら、月300万くらい稼げた話
https://www.youtube.com/watch?v=GmVulh282ps&t=604s
【報告】ブログで「月収1,000万」を達成できました【方法を解説する】
https://www.youtube.com/watch?v=pgjcuLp8wt0
年間ほど努力したら「年収3,000万」になったので、経験談を語る
https://www.youtube.com/watch?v=oV_SY-a1lMs
期間工ブログの収入は1500万円でした。【フリーランスの現実&底辺からの復活編】
https://www.youtube.com/watch?v=aijLjFLOuC4
年商1300万のプロブロガーの初心者時代から今までの軌跡
https://www.youtube.com/watch?v=UMiF4T2EO9o
【収益報告】実働月10hでも大金稼ぐ方法を解説【年収6,000万】
https://www.youtube.com/watch?v=o2ISWP-VZsw&t=288s
無料ブログは稼げない。稼ぐならオススメはWordPress一択の理由
https://www.youtube.com/watch?v=o8oUe3JS-lg

445 :
>>443
2008年発売の書籍!

446 :
おすすめ本は、このスレの最初の方に、まとめてある!

447 :
おお!ありがと!

448 :
標準ライブラリに仮想環境を構築するモジュールがあれば教えてください

449 :
まさか、標準ライブラリには無いだろ

Chef, Vagrant とかだろ

450 :
物議を醸すパイプライン演算子

451 :
sh「パイプライン演算子とはようやくシェルスクリプトに追いついてきたか?」

452 :
>>449
Pythonのvenvみたいなのはないんですか?

453 :
rbenv, nodenv などのanyenv だろ。
ただし、anyenv は、シェルスクリプトで書かれているらしいから、Linux/Mac でしか使えない

Windows では、仮想OS を使うか、
Windows10・WSL 上のLinux で動かしている、記事もある

Windows の場合、ユーザー環境変数PATH を手動で切り替える方法もある。
PowerShell(PS) で、そういうスクリプトを書くとか

ruby.exe のある場所。
C:\Ruby24-x64\bin
C:\Ruby25-x64\bin

PS で、環境変数PATHは、; で区切り。
$env:Path.split(";")

#=> C:\Ruby24-x64\bin

454 :
|> は、関数型言語、Elixir のパイプ演算子

メソッドチェーンを発展させて、オブジェクト指向から、関数型へ近づく。
マルチコアCPU の時代への適用

455 :
パイプ演算子ってドットのエイリアスなの
それパイプ演算子じゃない

456 :
Rubyは第一級関数じゃないからパイプ演算子とは極めて相性が悪い
Rubyで a |> b と書いたら、(このRubyキチガイを除く)まともな頭で普通に類推したら b()(a()) の意味になっちゃうからね
括弧省略が鬼門

457 :
こういうの見ると型は必要だよなあと感じる

458 :
ふうむ
では b <| a ならどうだろう

459 :
>>453
やっぱりWindows版のruby.exeを使うのはやめたほうが良いっすね

460 :
カッコ省略の問題がなんで型の問題になるんだ?別の問題だろう。

461 :
>>456
Rubyは第一級関数言語やで
Rubyはカッコを省略してメソッドを呼び出せるので関数オブジェクトの取り出し方がめんどくさいのは事実だけどね
だからかどうか知らんけど、Symbol#to_proc みたいなのもあるけど

まぁ、メソッドチェーンでできるんだから、パイプ演算子は要らんかなとは思う

462 :
>>459
Windows10・WSL・Linux で、使っている人もいるみたい

普通に、Ruby Installer で、Windows に入れると、irb の日本語表示でバグる。
外人は、sjis を知らないから

漏れは、irb を使うために、WSL の方にも、Ruby を入れてるけど、
Windows で、VSCode で十分

ユーザー環境変数、RUBYOPT に、--encoding=UTF-8 を設定してる。
これを設定すると、irb が起動しなくなる!

Windows 版では、バグがあるかも知れないので、
Ruby の最新版を使わず、2.4, 2.5 を使う方がよい

>>461
Ruby は、第一級関数ではない。
処理をオブジェクトにするとややこしいから、第一級関数にしない方がよい

463 :
> Windows 版では、バグがあるかも知れないので、
Windows 版使わないほうがいいっすね〜

464 :
windows なら素直に python 使え
無理して ruby 使ってもロクなことにならない

465 :
長く使うものを作るならGoも良い選択
Windowsで問題なく動く
JavaやPythonもそうだけど、最終的にはWindowsでの開発と相性のいいものが選ばれるんだよ

466 :
Windowsを捨てるのが一番良い。

467 :
windowsでbatやpowerscript代わりにRuby使ってる
それ以上のモノをwindowsで作りたいならおとなしくC#使うべき

468 :
Windowsでちょっとしたスクリプトを書くなら、AutoHotkeyがお手軽かつ強力だな。

469 :
>>468
Hot Soup Processer もw

470 :
プログラム板にキチガイ降臨中!botに一晩も反応する異常さ
一般人(学校恩師)に殺害予告をしているのでスレ建て通報してください。
https://mevius.2ch.sc/test/read.cgi/tech/1559872586/

142 名前:a4 ◆700L1Efzuv 投稿日:2019/06/18(火) 05:29:55 ID://qVkzO
>>141
名古屋の人な 俺ね、君の問題を大橋先生と混ぜないことにする。つまりね、
片桐孝洋のことをボコろうと思う。普通に顎の骨を折る。これくらいで警察来るか?
一般市民とかさ、普通にさ、俺らの秘密なんだけどさ、日本人なんて復活ねーから。

471 :
雑誌、WEB+DB PRESS Vol.110 (2019/4/25) では、

RubyVM を作った、Cookpad の笹田耕一による、Ruby 実装系の新連載が始まった!

472 :
Sorbetの型注釈の書き方最悪だな
matzの言うことなんか無視して、ドキュメントを含めた統一的な型注釈の書き方を決めるべきだったのに

473 :

お前さんの考える最高の書き方は具体的にどういうモンなの

474 :
>>471
買いました!

475 :
日本語のような全角を2
英語のようなのを1
で計算する
printf を使えますか?

perl などでは日本語と英語がまざると
端末に出力するときの整形を printf と %s にまかせられません ずれます

この言語 ruby は日本人が作ったので
なにか日本語まじりの英語も整形する手段、ライブラリがあるかもしれない
そう思って訪ねに来ました

ruby には
日本語も整形できる手段ありますか?
スマートなprintfの類ありますか?

476 :
ソースをUTF-8で記述

477 :
ありがとうございました
日本語3文字を length が 6 と

478 :
返してくれるので
これで楽に書けます

479 :
> 日本語3文字を length が 6 と
だめじゃんw
6を返すってことは6じゃない場合もあるってことだからな

480 :
つうか、3文字で6ってなんやねん?
9ちゃううんか?

481 :
lengthとbytesizeは違う

482 :
いずれにしろ
日本語3文字が6と返ってくるのはおかしい

483 :
API で横幅を取得
East Asian Width
http://www.unicode.org/reports/tr11/
https://ja.wikipedia.org/wiki/%E6%9D%B1%E3%82%A2%E3%82%B8%E3%82%A2%E3%81%AE%E6%96%87%E5%AD%97%E5%B9%85

484 :
Pythonなんかだと
printとinputですが
Rubyでは
putsとgetsと三単現のsがつきますよね

命令文なので二人称のputとかgetにした方が良いと思うのですが…
何でRubyは基本的な英語の語法を無視しているのですか?

485 :
put stringの略だとよwww
to_sとかもそうだけどjap engrish思考よなwwww

486 :
>>485
いや、よく理解出来ました
考え方として賛成はしかねますが納得は出来てすっきりしました
ありがとうございましたm(_ _)m

487 :
printf が print format の略であるように、
puts が put string の略なのは
C言語由来ですよ?

488 :
>>487
いろいろありがとうございます
己の無知を反省します

489 :
>>485
またもやアンチRubyが無知を晒したか
C言語の標準ライブラリに関する知識も無しに批判するとは何とも恥さらしな


>>484
Ruby なんかだと可変(mutable)と不変(immutable)なメソッドは
たとえば sort! と sort ですが、
Python では sort と sorted と不変な操作には過去分詞の -ed がつきますよね

宣言や表明ではないし、ましてや過去の時系列とは無関係なので
可変を明示する sort! と sort にした方が良いと思うのですが…
何で Python は基本的な英語の語法を無視しているのですか?

490 :
startswith や endswith には s ついてる

491 :
識別子に?や!使えるようにしてるもんだから他の言語は?.のところ&.なんだよなwww
ダッサwwwww

492 :
>>489
sort「!」なんかの時点で、もう英語は関係ないやろ!w

493 :
PowerShell -Part 3

744デフォルトの名無しさん2019/07/01(月) 14:41:57.11ID:YzHO/9WR
>>743
どうでもいい

745デフォルトの名無しさん2019/07/01(月) 16:21:19.60ID:MoEwNeEz
>>743
R

745は、色んなスレに「R」って書いてる荒らし。ID:MoEwNeEz。
荒らしは必ず、複数の書き込みをするので要注意!

Ruby 初心者スレッド Part 65

485デフォルトの名無しさん (アメ MM39-rSnO)2019/07/01(月) 12:57:54.84ID:MoEwNeEzM
put stringの略だとよwww
to_sとかもそうだけどjap engrish思考よなwwww

491デフォルトの名無しさん (アメ MM39-rSnO)2019/07/01(月) 18:04:52.69ID:MoEwNeEzM
識別子に?や!使えるようにしてるもんだから他の言語は?.のところ&.なんだよなwww
ダッサwwwww

494 :
>>493
他人をどうこういう前に、お前の書き込み履歴と鏡を見直せ

495 :
493 は死んで良い

496 :
俺も493は死んでいいと思う

497 :
redo は、現在のループをやり直すけど、
ループを最初の要素から、やり直すにはどう書く?

例えば、3 なら、また1 からループを始める

ary = [ 1, 2, 3, 4 ]

ary.each do |num|
p num if num == 3
end

498 :
>>497
http://ideone.com/8UfEyv

もしもCPUの仕組みを知っていれば、制御変数 i は
プログラムカウンタのことだと見立てることができます
さらに抽象化して、もしもステートマシンを知っていれば:
・ブロック do .. end は状態遷移を表し、
・ブロック引数 i は遷移元状態であり、
・ブロックの評価値は遷移先状態であると
見立てることができます

なお、loop.inject というパターンは過去にも別スレで利用しました
 https://mevius.2ch.sc/test/read.cgi/tech/1415419907/264
 > なおメソッド loop は一般に loop do .... end という手続き型のスタイルで
 > 書かれることが多いために ループ構文の一種と誤解されがちですが、
 > (lambda を構文糖であると >>254 が 勘違いしたように....)
 > loop はメソッドですので(コードで示したように) inject へ
 > チェーンさせることができます

499 :
require 'prime'

p ary = Prime.prime_division( 18 )
#=> [[2, 1], [3, 2]]

18 を素因数分解した結果、

[[2, 1], [3, 2]]、2が1回, 3が2回みたいな表記を、
単純に、[2, 3, 3]のように開くには、どうすればよいですか?

500 :
>>498
ありがとう

loop.inject か、トリッキー!
どちらも使い慣れないから、頭を使う!

each_with_index, each_with_object では、ダメなのか

501 :
>>499
[[2, 1], [3, 2]].flat_map { |n, e| [n] * e }
#=> [2, 3, 3]

502 :
>>501
ありがとう

flat_map は便利ですね

503 :
乱数はメルセンヌツイスタらしいけど、
偏るので、マシなやり方はないですか?

Array.new( 25 ) { rand( 1..9 ) }

出力
[3, 2, 4, 3, 6, 3, 1, 3, 7, 6, 1, 9, 3, 2, 5, 6, 6, 7, 5, 6, 3, 3, 8, 4, 9]
[5, 8, 4, 1, 3, 3, 2, 2, 9, 7, 9, 7, 7, 6, 7, 4, 3, 4, 5, 4, 8, 8, 7, 2, 5]
[7, 7, 6, 7, 9, 5, 8, 2, 8, 5, 1, 8, 4, 9, 3, 3, 9, 8, 6, 1, 1, 3, 5, 7, 2]

504 :
a=[3, 2, 4, 3, 6, 3, 1, 3, 7, 6, 1, 9, 3, 2, 5, 6, 6, 7, 5, 6, 3, 3, 8, 4, 9]
b=[5, 8, 4, 1, 3, 3, 2, 2, 9, 7, 9, 7, 7, 6, 7, 4, 3, 4, 5, 4, 8, 8, 7, 2, 5]
c=[7, 7, 6, 7, 9, 5, 8, 2, 8, 5, 1, 8, 4, 9, 3, 3, 9, 8, 6, 1, 1, 3, 5, 7, 2]

(a+b+c)/3

505 :
>>503
なぜ偏っていると思ったの?統計取った?
Rubyistは一般にあまりレベルが高くないとはいえ、Rubyのコミッタ陣は少なくとも今の君よりは知識も能力も経験も上だと思うよ

506 :
2人コミッター知ってるけど何の専門家でもなければまともな経歴でもないよ・・・・

507 :
メルセンヌツイスターって初期化しなくて良いんだっけ

508 :
>>504
乱数で平均値を取ったら中央値に近づいて偏りが酷くなるだけじゃね

509 :
Kernel#rand の種は、現在時刻で初期化されるから、意識しないでもよい

統計を取れば、平均になるだろうけど、1回1回が偏る。
例えれば、

1回目 : 3,3,1,1,3,3,1,1
2回目 : 2,2,8,8,2,2,8,8
3回目 : 5,5,9,9,5,5,9,9

平均すると、まんべんなく出るのだろうが

510 :
例えば、503 で偏る部分は、

5, 6, 6, 7, 5, 6
9, 7, 9, 7, 7, 6, 7
7, 7, 6, 7
9, 3, 3, 9

何回やっても偏る

511 :
おま環かどうか切り分けるために
codepad.org
とか
ideone.com
あたりで実行してみたら

512 :
おま環かどうか切り分けるために
codepad.org
とか
ideone.com
あたりで実行してみたら

513 :
codepad は古すぎる!
p RUBY_VERSION #=> "1.8.6"

一方、Paiza.io では、"2.6.3"

[3, 6, 3, 8, 8, 9, 1, 3, 1, 4, 3, 8, 2, 2, 2, 6, 6, 9, 4, 2, 2, 9, 1, 1, 1]

これでも偏る

2, 2, 2, 6, 6
2, 2, 9, 1, 1, 1

514 :
1から9が完全に均等に出てほしいなら、(1..9).shuffleとでもすりゃいいんじゃね?

515 :
>>513
偏っているか、それともそうでないかを判断する基準をどのように記述していますか?
私には >>513 2 2 2 6 6 が偏っているようにはみえないのです、多分判断基準が違うのだと思います、なにか判断基準を書いていただけますか?

516 :
>>513
5, 7 が出てない

それに同じ数字が、3回続くのが、2回も出てる

517 :
まさか1桁の整数の乱数を10個取り出したら0から9までダブってないとかそういうのか

518 :
>>514
shuffle, sample も疑似乱数だから、 Kernel.#rand, Random と同じじゃないか?

519 :
アホらし
バカが騒いでるだけ

520 :
乱数なんだから偏ってはいけない。
例えばサイコロを6回ふれば、必ず1〜6の数字が一回ずつ出るのが真の乱数だ
続けて1の目がでるなんてことはあってはいけない

俺の好きなテトリスも昔はテトリス棒が全然出なかったりしたもんだが
今のテトリスは同じものが続けて出ない。偏り無くまんべんなく出てくれるから
次に来るのが予測しやすい。これが真の乱数だ

521 :
つまりテトリスカンパニーのようにメルセンヌツイスタ株式会社みたいなのが数字の出る順番のルールを決めて
ひとつの言語にはひとつのメルセンヌツイスタライブラリしか認可しないというふうにして品質の

522 :
>>518
全然違う
shuffleはただ位置を入れ替えるだけだから、最初の10個には必ず0から9が1つずつ含まれる
これが君の望む乱数のようだからそうすりゃいいんじゃね?と言ってるだけ

523 :
>>522
その代わり、最初の9個を見れば10個目は100%予測できるから、そんなのを「普通は」乱数とは呼ばないんだけどな
ただ、君の言う乱数はどうやら普通とは違うようだから

524 :
ものによっては「7が最近出てないのでそろそろ出るはず」「1が何回も出るはずがない」を支持するデタラメ数が必要とされることはあるのだが
それは乱数で表現されるものではないので自前で実装するよりない

525 :
乱数 まろやか で検索するといいぞ。ポイントは正規分布

526 :
JavaScript でも作ってみたが、これも乱数が偏っている。
7, 1, 7, 7, 5, 4, 7, 4, 1

function get_random_int( ) {
return function( ) {
const min = 1
const max = 9
return Math.floor( Math.random( ) * ( max + 1 - min ) ) + min ;
};
}

const ary = [ ...Array( 25 ) ].map( get_random_int( ) )

console.log( ary );

出力
[ 2, 8, 6, 2, 5, 7, 8, 1, 4, 6, 7, 1, 7, 7, 5, 4, 7, 4, 1, 3, 4, 5, 6, 8, 6 ]

527 :
>>526
赤黒が1/2の確率で出るルーレットがあります。
三回回したところすべて黒が出ました。
次に赤が出る確率は?
一般人「1/2」
バカ「こんなに黒が続いたんだからそろそろ赤が出ないとおかしい!偏っている!だから赤100%だ!!」

528 :
>>526
乱数にけちつける前に10面ダイス買ってきて、10000回振って出目をメモして偏りを確認してこい。
それが片寄ってると思うなら、別の店でダイス買い直して再試行しろ。
終わるまでスレに帰ってくるなよ。

529 :
リアルのダイスは安物だと
1の目と6の目で掘り具合が適当で
重心がばらつくから良くない
1をでかく掘ってあって
ちゃんとバランスとってる香具師を買え

530 :
>>503
欲しいデータはこんなの?
2 5 6 9 7 3 1 4 8
8 4 6 2 5 7 1 3 9
2 1 9 8 5 7 4 6 3

531 :
>>528
10面ダイスなんて偏ってるに決まってるだろ何次元人だお前
20面ダイスの下1桁を記録させるのが正しい

532 :
単純にサンプル数が少なすぎる
2500回ぐらい生成してから文句言え

533 :
1から9まで出る乱数を9個抜き出したとき:

1から9までの数が1個ずつ含まれる確率
9!/9^9 = 0.09%

1から9までの数のうち4個ある数字が1つ、2個ある数字が2つ、1個ある数字が1つである確率
9(8C2)6(9C4)(5C2)(3C2)/2/9^9 = 0.7%

10倍ぐらい確率が違うんだよ
「君の言葉で言う偏る」のは確率で見てもむしろ当然

# 計算式が合ってるかは誰か検証して

534 :
あ、>>526
分かるだろうけど

535 :
もっと単純化して言ってしまえば、コインを2回投げたときに、表裏が1回ずつ出る確率と
表か裏かのどちらかしか出ない確率は同じだというのはすぐ分かると思う

それを「どちらかしか出ない場合があるのは偏ってる!」と言ってるようなもんだよ、これは

536 :
こういうと、
「25回投げたときに、そのうち10回を取り出して8回以上表か裏が出てたら偏ってるじゃないか」
と言われそうなので、その確率も計算しておこう

面倒なのでPCでぶん回して計算すると、約49%だった。
つまり、25回投げたときに恣意的に10回を取り出して表か裏が8個以上あることなんて普通に
ありえることなんだよね

537 :
ちなみに、8回以上を9回以上に置き換えても13%の確率があるので、特段珍しいことでもない

さらにちなみに、この計算はRubyを使って行いましたw

538 :
ActiveRecordの件数が多い時、メモリを大量に使った際に、その分のメモリが開放されないままになってるように見えるのですがこれは仕様ですか?

メモリ開放のやり方とか、そもそも件数が多すぎる場合はActiveRecord使わないほうが良いなどあったりするでしょうか…?

539 :
ActiveRecordは知らんけど、RubyのGCがあんまり働かないのはオレも経験したことがある。
いっそ自動処理をあてにしないで、適当なタイミングで明示的にGC.start()したほうがいいと思う。

あるいは、ちゃんと設定のチューニングをするか。
めんどくさそうなうえに、ちゃんと動作すんのかは知らんけどな。
https://docs.ruby-lang.org/ja/latest/class/GC.html

540 :
>>270
Railsはチュートリアルとか本とかネットの情報も多いけどSinatraは情報が少な過ぎるよ

541 :
たぶん、インデックスを使っていない、select だろう。
ランキングとか、レコードを総なめ・全件取得する、select だろう

DB の実行計画を見ると、わかる

DB設計は、DB資格の教科書とか、ミックの本などで勉強していないと難しい。
バグのほとんどは設計段階で生じるから、SE の給料が、プログラマーよりも高い!

542 :
それだと設計ができない無能SEの給料は低くないといけない

543 :
>>542
何荒らしにマジレスしてんの

544 :
馬鹿には無理

545 :
同じリポジトリの同じソースからのデプロイで昨日は成功したのに今日は成功しないのは何でなんだぜ?
Heroku

546 :
韓国に楯突いたことでアメリカからも敵国認定されてブロックされてしまったのだろうな
米国に置いてあるデータ、アメリカ製サービスからは早急に引き上げたほうがいい

エンジニアの生命線が...。米国の貿易施策でGitHubの利用制限を受けるイランなどの国々 | ギズモード・ジャパン
https://www.gizmodo.jp/2019/07/github-trade-control-regulations.html

GitHub、米国の経済制裁対象国ユーザーによる非公開リポジトリ利用をブロック | 財経新聞
https://www.zaikei.co.jp/article/20190730/523662.html

547 :
>>546
イランから手を引けばいいだけでしょ(笑)

548 :
ruby はよくある printf の類が日英混合文でも大丈夫?
perl で 日英両対応 align.pl 書いたけど 日本語はprintfのフォームと
ずれてしまったのでコードがそれを避けた書きかたになってしまって
気がはれない

549 :
>>548
たぶん言語は関係ない。
文字コード、文字判定、フォント、コンソールなど、環境次第な要素が多すぎる。

550 :
Rubyとしては「STDOUTに流すだけで特に何もしてない」ような気がする
Cursesはなんかしてくれてるんだっけ?

551 :
逆にその日英混合文がダメな状況ってどういう状況だよ

552 :
いわゆる全角半角の文字幅やろ。

553 :
やった!!
俺の求めていたものだ
https://logmi.jp/tech/articles/321280
一見楽そうに見えて、余計に面倒なことになるwww
こんなんだったら、初めから型宣言したほうがマシだわな
型宣言の何が嫌なんだろ(謎
意地?
DRYに反してるっていうけど、何処が?

まぁでも求めていた展開だ
本人も作りたくないであろうこんなツールに多大な時間を割くことで
10年単位で他の言語に遅れることになるだろうな
大爆笑

554 :
>>553
> DRYに反してるっていうけど、何処が?
Type obj=new Type()
じゃないの?型を2回書いてるじゃん!という。

なお、C#がそうだったんだけど、遠からず改善される予定。
Type obj=new()
# 最初からそうしといてよー、と思わないでもないけど。w

型のDRYを避ける方法はあるんだよな。
しかし、Rubyはそこから目をそらして、DRYを言い訳にして、とにかくなにがなんでもオブジェクトの宣言を含めたくないんだろう。

555 :
>>553
>DRYに反してるっていうけど、何処が?

https://qiita.com/t2y/items/2a1310608da7b5c4860b
> def sum_and_stringify(nums: List[int]) -> str:
>   """Adds up the numbers in a list and returns the result as a string."""
> return str(sum(nums))
じゃないの?
型を2回書いてるじゃん!という。

なお本件、改善される計画はなく、いつまで待っても放置される予定。
# ML や Haskell なら最初から型アノーテーションなんて不要だからDRYだけど、
# その方向性を最初から放棄してどうすんのよー、と思わないでもないけど。w

型のDRYを避ける方法はあるんだよな。
しかし、そこから目をそらして、global だの nonlocal だのスコープ問題の泥縄的解決である
変数宣言を言い訳にして、とにかくなにがなんでも型宣言を含めさせたいんだろう。

556 :
あと
別ファイルに型定義書くのって立派なDRYじゃねーの?
だって、クラス名やメソッド名変更するとき
両方書き直さなきゃならないじゃねーか
これはDRY以外の何なんだ?
ほんと、ペテン師はいつも自分に都合のいい事だけ言うよな
分かっててすっとぼけるんだわ
信者には悪いが、マジで毎回そう

557 :
つまり、
普通に素直に型宣言するより
別ファイルに型定義書く方が
よりDRYだし面倒だし
この掛け違えたボタンで首が絞まる感じ何なん
もう普通に型書いたら?
アホらしすぎ

558 :
型定義を別ファイルの書くのって
丁度C言語が.hと.cに分かれてるのと同じ感じだよね
で、関数名変えるとき.hと.cの両方書き換えるっていうね
今更C言語に先祖返りってどうよ
あれDRYって何だっけ

559 :
あるクラスの名前を変更する
型定義ファイルに書いてあるクラス名を変更し忘れる
そのクラスの型定義が無くなり型チェックが効かなくなる
プログラマは型チェックが効いてると思い込みテストをサボる
バグを組み込んでしまう
あり得るシナリオだし、こういうのをDRYと言うのではww

同じような感じでヘッダと実装に分かれてるC/C++の場合は
これは間違ってるとコンパイルエラーになるから良いけど
Rubyの場合は修正し忘れてて型定義が見つからない状態になってても
それはそれとして、どうせ無テストになるだけでスルーでしょ
(他に型定義の無いクラスはいっぱいあるわけで型定義が無いだけでエラーには出来ない)

さあ型定義ファイルにあるクラス名とメソッド名が
間違っていないか確かめるテストを書かなきゃねwww
(単純にtypoしてるかもしれないわけで)

で、誰得なんこれ

560 :
まつもとが型のメリットを理解してないからどうしようもない

561 :
WEB+DB vol.111

詳解 Rails 6

コミッターが解説する、26ページ分の特集!

562 :
>>556-559
>別ファイルに型定義書くのって立派なDRYじゃねーの?

まず、この文章は「DRY違反じゃねーの」の間違いだろう
これだけでもアンチRubyがDRYという言葉の意味を理解せずに
トンチンカンな批判を繰り返している実証になる

次に上記の文章を:
>>別ファイルに型定義書くのって立派なDRY違反じゃねーの?
と訂正したとしても、答えは NO だ
確かに型推定を最初から放棄してユーザに型アノーテーション記述を
強制する言語(>>555)であれば、その型アノーテーション記述がソースファイルと
同一ファイルであっても別ファイルであってもDRY原則に反している、と言える

しかしRuby3.0で計画されている型プロファイルは、型宣言記述が無い
素のRubyソースコードから型定義ファイル rbi を自動生成できる
また、ソースコードと同一ファイルにアノーテーション(注釈、いわゆるコメント)として
型定義を記述することもできる(ただし、この場合は自動生成されず手書きとなる)

563 :
>>562

> トンチンカンな批判を繰り返している実証になる

揚げ足をとれたからって、そんなに必死にならなくても。w
DRYDRYとうるさいのは信者くらいで、ふつうは実はそんなに気にしてないからな。しゃあない。

> 素のRubyソースコードから型定義ファイル rbi を自動生成できる

スケルトンみたいなこと?
その手のやりかたってヤバい原因になりがちだと思うんだけど、だいじょうぶなの?たいがい元ソースコードの変更に追い付けなくなって、うやむやになるよねえ?

> 型定義を記述することもできる(ただし、この場合は自動生成されず手書きとなる)

つまり、ソースを変更したら、あわせてアノテも変更しないといけないのか?
結局はDRY違反なの?

ホントにそんなだったら、どうせ誰も使わない気がするなあ。。。

564 :
>>563
>揚げ足をとれたからって、そんなに必死にならなくても。w

揚げ足ってのは、DRYを逆の意味に理解していた(>>556)事実を、
あっさり >>557 の冒頭で指摘されちゃったこと?
まぁしゃあないわな、「揚げ足」を隠そうと必死になるのも www

565 :
訂正
X:>>557
O:>>562

566 :
https://img.logmi.jp/article_images/D2VbGeV4PWY5uay2tHho6g.jpg
こんなんを別ファイルに記述するはめになるんだ
クラス定義に似てるね
重複して同じようなことを二回書かなきゃならないって事
DRYの原則に反してるから型宣言を書きたくないって話だったのに
より一層DRYの原則に反してるね
C++のヘッダにそっくり

あと今更するなら最初からしておけば何かとよかったのにね
夏休みの宿題を最後にためておく人だったのかな

一方静的型言語にも型推論とか取り入れられてるけど
こっちは文法的にも文化的にも何の障壁もなく導入されてるのが笑える
なにこの差
さらにはヌル安全とかまでやろうとしてる
逆にこっちのやってるのはいまだにネイティブスレッドww
何周遅れよこれ

そんでいつも後出しジャンケンで負ける
動的型もそう
後出しジャンケンして負けた
後出しジャンケンでも勝てばいいんだが負けたら意味ないね
Rubyサイコー

567 :
>また、ソースコードと同一ファイルにアノーテーション(注釈、いわゆるコメント)として

この方式はmatzが滅茶苦茶に嫌ってるから採用される事はないね
あの人わけわからないぐらいこのことに固執してるからね

また何も知らないか、知ってても嘘をつく
いつものパターンね

568 :
ちなみにmatzがソースコードに型を書きたくない理由だが
色々言ってるが、彼は詐欺師だから、本音ではないし、嘘も含まれる

まず
https://logmi.jp/tech/articles/321280
にも書いてあるし、たびたび登場するDRYに反するというやつ
言うまでもないが別ファイルに書く方がDRYに反するし
これは多分、彼の本音ではないし、煙に巻くための適当な言い訳

つぎに、静的型と動的型は振り子のようにトレンドが移り変わり
今後また動的型言語の時代が来るから、というもの
いやいやこれから先、動的型の時代など来ないだろうし、そもそもの前提がおかしい
C言語以降はずっと静的型の天下であり、動的型が勝ってた時代などなかった
振り子のようにというのがそもそも嘘偽り誇大表現、こうやって騙してくる
C/C++、Java、C#といった超メジャー言語にRubyが勝っていた時代など一度もなかっただろ、詐欺師め

569 :
もう一つ
ここに書いてあることが実は本音(らしい)
https://jp.quora.com/TypeScript%E3%81%AE%E3%82%88%E3%81%86%E3%81%AA%E5%9E%8B%E4%BB%98%E3%81%91%E3%82%92Ruby%E3%81%AB%E5%AE%9F%E8%A3%85%E3%81%97%E3%81%9F%E3%82%89%E6%9C%80%E9%AB%98%E3%81%AE%E8%A8%80%E8%AA%9E%E3%81%AB%E3%81%AA%E3%82%8B
要約すると、Rubyに型アノテーションが導入されたら
型を書いた方が行儀が良いという風潮が蔓延するだろうが、自分は型を書きたくないので
そのために型をかけないようにしておく、というもの

良いことが出来ると、良いことをする風潮になるだろうが
自分は悪いことがしたいから、良いことが出来ると困る
と言っているわけで、マジキチなのがお分かりいただけるだろうか

法律があると法律を守らなければならないから嫌
信号があると信号無視が出来ないから嫌
と言ってるようなもので、まさに悪人の考え
型は書いた方が良い、とうことはしっかり分かってる上で
嫌だから出来ないようにしておく、と言ってるわけで、悪人独特の自己矛盾

しかし普段自分の都合のいいように嘘しか言わない彼が、本音を語っている点は評価できる

570 :
そろそろこっちでやれ
アンチということではなく本スレの代わりとして
Rubyについて(アンチ専用) Part005
https://mevius.2ch.sc/test/read.cgi/tech/1555162340/

571 :
しかし>>569に書いたようなことを公式で言うとマジキチだから
静的型を導入しない理由を聞かれると、いつも適当なことを言って言葉を濁しているわけ
これでRuby3.0で導入されるといわれる型チェックが
どうしてああいう感じになってるか良くわかるでしょ

572 :
型を書きたくないんじゃなくて、Rubyの設計上、型を書こうとすると
設計レベルで作り直さなきゃいけなくなるから面倒くさいだけだよ。

573 :
Perlも6で詰んだしな
*byも脱皮失敗で死亡
pythonは2->3でヨタヨタだがうまく離陸してくれ

574 :
単純に全体の完成度がバージョン0.8くらいに戻るよね
そこまでして「わざわざRubyに」導入するべきものでもないということではあろう
昔ならともかく今は他の言語もあるのだから
これ言うと揉めるけどな

575 :
1. 型を導入すると良いものになる。
2. だけど全体を再設計しなければならない。(面倒くさい)
3. その上、使いやすくすると、言語がガラリと変わる
4. ユーザーもその「使いやすい言語」に乗り換えるのが面倒くさい
5. 結果使われなくなるのがわかっている。
6. Ruby離れを防ぎつつ、型を導入するには、コレしかなかった

576 :
型無し*byに不満な人はElixirやればいい

577 :
LISP や Smalltalk が好きな人にとって使いやすい Perl の代替となるスクリプト言語なんだから、型欲しい人は他の言語使えば? と言うだけの話。
型を導入すると対話環境での使い勝手が悪くなり、書き捨てのプログラムを書く際の手間が増える。それは楽しくない。

型を使うと速くなる? そんなに速度が要求される要件に使うなんて決定をする奴がおかしい。 型を使うとバグが減る? そんなにレベルの低い人は使わなければいい。
妥協できるラインが、今の、書きたいやつは書けば良いんじゃない?でも、文法を拡張して既存コードとの非互換生むような修整は受け入れられない。
と言う話でしょ。

578 :
>>576
そう。 Elixir なり Crystal なりを使えばいいだけの話。
なんでRubyに型を導入することにこだわるんだろう。

579 :
ドキュメントに型を書くことになるんだから、そこの仕様をしっかり決めるべきだった

580 :
>>577
> 型を導入すると対話環境での使い勝手が悪くなり、書き捨てのプログラムを書く際の手間が増える。それは楽しくない。

それはstrictモードを作ればいいだけなんよ

581 :
>>577
> 型を使うと速くなる? そんなに速度が要求される要件に使うなんて決定をする奴がおかしい。
> 型を使うとバグが減る? そんなにレベルの低い人は使わなければいい。

その二つ、論点のすり替えだよね?

型を使うと速くなる? → それは事実 → だから人間の問題にすり替える。
型を使うとバグが減る? → それは事実 → だから人間の問題にすり替える。

事実ならまず「それは事実だね」って言ってみようか?
事実に対して反論するかと思いきや、反論しないんだもの(笑)

582 :
> でも、文法を拡張して既存コードとの非互換生むような修整は受け入れられない。

結局本音はそこ。

速くなるとかバグが減るという "事実" は存在するが、
既存コードの非互換性をうむから、改善できない。

583 :
>>581
型を入れてもオープンクラスな言語では大して速度は上がらない。精々一部のループの速度が上がるだけ。それは事実。java みたいに final や primitive 型入れれば効果は相当あると思うけど、それは Ruby を否定することになる。
型を入れると未熟なプログラマでもコンパイル時に分かる程度のバグなら発見できることはある。それは事実。でも実行時例外の回避は出来ないし、オープンクラスを使ったダックタイピングという Ruby の言語デザイン自体を否定することになる。

> 事実に対して反論するかと思いきや、反論しないんだもの(笑)

反論もなにも、自分はこのスレッドで >>344 >>577 >>578 しか書いてないよ。
だから、なんらかの反論を待ってるならその相手は自分ではない。

自分は Ruby に非互換を生む型の導入を期待するくらいなら、型有りの別の言語で書けばいいじゃんという立場。

>>580
この場合の strict モードって何を指してるの?
RPython 的に SRuby 作って型使いたい人は SRuby 使えってこと?同一バイナリにしてモード切り替えするとしたら、パーサも VM もほぼ別物レベルになると思うけど。
共有できるとしたら、pure ruby で書かれたごく一部のライブラリ程度じゃない?

584 :
型を入れてもオープンクラスな言語では大して速度は上がらない
→オープンでない言語なら速度は上がる
→速度を上げるためにはオープンでなくすれば良い
→そのような改善方法は存在するが、非互換性をうむから、取り入れられない。
→まつもと「Rubyでは改善はなんです。諦めてください」

585 :
→まつもと「Rubyでは改善は無理なんです。諦めてください」

586 :
>この場合の strict モードって何を指してるの?

適切な型を書いたものがstrictモード

だがどのオブジェクト指向でも、基底クラスのobject型として扱うことはできる。
暗黙的にobject型の変数を使ってるとみなしているのが今のRuby。

変数の型をobject型と書く(もしくは省略)か、適切な型を書くかの違い。

587 :
> 実行時例外の回避は出来ないし

は?

588 :
Rubyの癌は、型を指定できないことよりも、宣言ができないこと。
型を指定できないのは、宣言ができないことによる副産物。

宣言は、ここからこのオブジェクトを使うで、ということを明確にできてわかりやすいのに、何で嫌がってんだか。

589 :
>>586
strict モードにしたら
Class が凍結されるの?
途中でモードを切り替えられるの?
そのスコープは?
マルチスレッド時の挙動は?
Object クラス(Kernelも?)への継承関係がなくなるの?
データは VALUE 型じゃなくなるの?
オブジェクトのデータ構造は自分で C で定義するの?
既存CAPIとの整合はどう取るの?
そのコードを古いインタプリタに食わせたらどうなるの?
また分断するの?(想像するに1.4->1.6 や 1.8->1.9 より大きそうだけど)
strict にしたら何がどう変わるのかわからん。
過去に例示してあるのなら参照求む。

>>585
そう。 大抵の要望は Crystal で解決されてると思う。
速度欲しいなら Elixir 。もしくは C で FFI。

590 :
>>589
うん?だからそういう問題が発生するから、
Rubyでは型という素晴らしい道具を導入することが
設計上不可能って話をしてるんだが?

591 :
>>590
そのかわり型ということを考えなくても計算機と対話することができる日常用途に便利な言語になったわけだ。

592 :
Rubyにも型があるんだから、型考えてるでしょw
それともどんな型を入れても、エラーにならずに動くコードかいてんのか?

593 :
型チェックが欲しい人は他の言語使えって言ってるけど
Ruby3.0で型チェックが導入されるんだからそこは前向きに検討しようよwww

matzが言うようにRubyに型が指定できるようになったら、指定すべきという勢力も
出てくるだろうし、一方でわざと型を書くのが億劫になる仕様にしてあるし
どちらの勢力が勝つか未知数というか
平行線が続いて空中分解してクラッシュするかもしれないし
ここでも今そういう意見があるように、今までは型チェックが欲しい人は他の言語使え
だったわけだけど、Ruby3.0からはそうじゃなくなるから更にカオスになるだろう
今までは型を書くべきかどうかはRuby 対 他の言語って感じだったけど
これからはRubyの中でそれが起こる
楽しみだね
このへん、言語仕様で初めからどちらかに決まっていた方がスッキリしていたかもしれないね

594 :
それに加えて型定義ファイルの自動生成の話もあるが
まぁ最初は使い物にならないだろうからそれも含めてカオスになる
それがRuby3.0

静的型言語も動的型言語を取り入れてるっていうけど
こっちは何の問題もなく行われてて全くの静寂なのが笑える
まぁ型推論はコンパイラが型を推論してくれるというだけで
型は静的に決定されているわけだから当たり前なんだけど

595 :
型は書いたほうが良いが今更自然な形での導入は難しい
しかし3.0で書きにくいけど書けるようになる
書けるようになるなら書いたほうが良い
でも書きにくい
でも書かなきゃ
でも書きにくい
書きたくない
でも書かなきゃ
でも書きにくい

これがRuby3.0

596 :
型注釈、PythonとRuby両方でやってみたけど
Pythonの方が全然完成度高い
試験的な実装とはいえRubyの方は複雑になるとチェック通せなくなる

597 :
実行時まで型が決まらない

ひとことで言え

598 :
実行時まで型が決まらないと言うが、
コードは特定の型もしくは特定のインターフェースを備えた
型であるという前提になってるんだよなw

599 :
perl5の末期に登場したのがuse strictとuse warningだよ
それを順当に真似てるだけだ
他意は無い

600 :
前々からの、掛け違えたボタンの、いよいよ一番上を閉めようとしている段階なのだよ
そんなことは出来ないか、不格好か、首が絞まるか
何にせよ、こういう仇花的なことをしなければならない状況に追い込めたのは
日々のみんなの空気づくりのおかげであって、いわば人類側の勝利だよ
おめでとう

601 :
まずはモンキーパッチを抑制するオプションを追加して
静的に解析できるようにするのが先でしょ

602 :
>>599
Perl5に「末期」なんかないぞ。
まだまだ現役だからな。w

603 :
モンキーパッチ(オープンクラス)ができるのはメリットではあるが、
通常はそんなことしないので、小さなメリットのために
大きなデメリットが発生してるんだよな。
最終手段を取るしか無いところだけ、unsafeとかマークを付けて対応すればよかった。

604 :
>>596
>Pythonの方が全然完成度高い

当然の感想だよ
そもそも静的型付けは大きく以下の2つに分類される
・明示的(explicit)な型付け
・暗黙的(implicit)な型付け

前者の明示的型付けはプログラマが型定義を手書きすることを前提としており、
Fortran/Cobolといった1950年代の太古の時代から培われてきた「枯れた技術」である
Python の型アノーテーションも明示的型付けに分類される
従って、完成度が高いのも当然、できて当たり前と言える

後者の暗黙的型付けは堅牢な型システムを前提とし、処理系が「型推論」と呼ばれる技術により
コードから型定義を自動的に決定するものであり、1980年代にMLで開発され、近年、明示的型付けを
主としながら部分的に暗黙性を取り込む次世代言語が次々に登場するなど、急速に普及が進みつつある

MatzがRubyKaigi 2019で語った:
https://logmi.jp/tech/articles/321280
「最近は静的型がすごくホットで、2010年代のプログラミング言語はみんな静的型言語で、…」
というホットな静的型言語も、後者の暗黙的型付けを指す
同時にMatzが語った:
「もう、われわれもやろうか。PHPもPythonもやってるし」って言うんだけど、正直やりたくない……。」
の「やりたくない」のは前者の(プログラマが型定義を手書きしなければ型検査が働かない)明示的型付けを指す
つまり意訳すると:
 Rubyでも明示的型付けをやろうと思えばいつでもできるけど、今さら時代に逆行したできて当たり前の事を
 やるなんてつまんない、それより今まで誰もやったこともない血が湧き立つような挑戦をしてみたい、
 それがRubyらしさだよ
そして、この後、「動的型付け言語であるRubyにおける暗黙的な静的型付けの導入方針」として、
(型推論の代用である)「型プロファイラ」と呼ぶ新技術の紹介が続くわけだ

605 :
>>604
なにかごちゃごちゃ語ってるけど、

マッツが言った「やりたくない」は
面倒くさいって意味だよ。

血が湧き立つような挑戦なんてものを思いついていたら
それを理由にするだろ。そんなもんないからさw

606 :
そら掛け違えたボタンの一番上を締めるのは
血が逆流するほど苦しくて沸き立つだろうな
こんなもんは北朝鮮とか共産党とかの言ってる理想みたいなもので
最初に掛け違えてるからそういう夢を見なきゃいけない羽目になってるだけで
大人になったらさらっと流さなきゃね

607 :
マルクスとかに感化されて
血が沸き立つような挑戦
って言ってるようなものなんよ

608 :
他は学生運動とかかな>血が湧き立つような
俺は世代じゃないからよく知らんけど、映像見る限り、かなり湧き立ってるな

後単に、「血が湧き立つようなっ」て表現面白い(こわッ

まぁそういうのはあるよ
最初を掛け違えたため人生台無しになるっていう
大概の人はどこかで気づいて掛け直すから大事には至らないけど
物事を考える最初の起点が一つズレて、以降思考が全部ズレる
ゴールにたどり着けないもんだから、ゴールのさらに先へ行こうと夢見る
そうやってたぶらかす
共産党みたいな輩

根本の問題だからなぁ
悪人は悪人にしかなれないってわけじゃないけど
気づけなきゃ悪人のまま終わるよね

609 :
すげえ馬鹿な質問するけど
x = [nil, "hoge", 42, 3.14].sample
みたいなのがあった時って型推論ってどうなるの?

610 :
rubyに限らずスクリプト系はlispが基準だろ
だからリストにはなんでも入れれる

611 :
>>609
理想としてはArray<nil|String|Integer|Float>みたいな感じかね

612 :
C#的にはエラー(推論不可)だな。
それでいいと思う。

613 :
TypeScriptは型システムの表現が凄すぎて
大抵の言語に型付けできそう
パクればRubyにも型付けできるんじゃね

614 :
Haxe では、Array<Dynamic> で、何の型でも入る、配列を定義できる

これは型推論しないから、できる限り避けるべき!
これは、設計ミスかも知れない

615 :
typescript なら [ null, string, number, ‘foo’ | ‘bar’, 1 | 2 ]
のように定義できるしね

616 :
そうやって夢を見ておけばいい
その方が落胆が大きくなるだろうから

617 :
とにかくTSからパクれるものは全部パクった方がいいと思うんだが
JSに無理やり型付けするために生み出されたキメラなのだから
参考になる部分だらけなはず

618 :
全然違う方向へ向かってるから無理

619 :
TSで書いてRuby吐くコンパイラω

620 :
>>617
JavaScriptはそもそも静的型付け言語であるCやJavaの構文を参考にして設計された言語だ
医学部卒のプロ棋士が引退して医師に転向することは容易だが、中卒には不可能である

621 :
>>620
> JavaScriptはそもそも静的型付け言語であるCやJavaの構文を参考にして設計された言語だ
大嘘つくなよ
似てるのは中括弧を使ったブロックとかの見た目だけじゃん

622 :
>>621
だから構文の話をしてるんだろ

623 :
jsは構文でもJavaと似ても似つかないぞ

624 :
惜しい
jsですら似ても似つかないなら、Rubyだったらどうなのか考えてみよう
基準はあくまでRubyであることを忘れないようにしましょう

625 :
話を逸らすのはチョン國人の手口

626 :
>>622
中括弧使ってセミコロン使えば静的型付けになるのかよw
的外れもいいとこ

627 :
>>625
Rよネトウヨ
お前もチョンがどうのとか言って話そらしてんじゃん

628 :
>>624
JavaScriptに比べたら、Rubyのほうがまだ似てるんだよなあ。w

JavaScriptのクラス定義を見たことがあるか?プロトタイプベースなので、ほかではなかなか見られないぞ。

629 :
JavaScriptのクラス定義は、C++やJavaにそっくり

https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Classes

class Rectangle {
 constructor(height, width) {
  this.height = height;
  this.width = width;
 }

 // ゲッター
 get area() {
  return this.calcArea();
 }

 // メソッド
 calcArea() {
  return this.height * this.width;
 }
}

const square = new Rectangle(10, 10);

console.log(square.area); // 100

630 :
プライベートフィールドはちょっと変わってる。

class Rectangle {
 #height = 0;
 #width;
 static #depth = 1;

 constructor(height, width) {
  this.#height = height;
  this.#width = width;
 }

 volume(){
  return this.#height * this.#width * Rectangle.#depth;
 }
}

631 :
JavaScriptの継承もC++やJavaとそっくり

class Dog extends Animal {
 constructor(name) {
  super(name); // 親クラスのコンストラクタを呼び出し、name パラメータを渡す
 }

 speak() {
  console.log(`${this.name} barks.`);
 }
}

632 :
Node.js は、Ruby のコピー。
npm, yarn も、Bundler のコピー

CakePHP は、Rails のコピー

633 :
> Node.js は、Ruby のコピー。
間違い。Node.jsは言語ではなく実行環境(≒ライブラリを提供してる)

Rubyという言語をコピーするわけないじゃないですか(笑)

ツールやフレームワークに価値はあって、そっちはコピーしたとしても
Rubyという言語にコピーする価値はないですからねw

634 :
>>629
つい最近そうできるようになっただけやけどな。w

635 :
>>634
つい最近 = 4年も前

それを今知ったんかい?w

636 :
元から似せて作ってないって話でしょ

637 :
Node.js は、Ruby 実装系のコピーだろ。
npm, yarn も、Bundler そっくり!

npm, yarn のlockfile とか、Bundler のlockfileと同じ

Ruby, Node.js も、サーバー側プログラミング

638 :
> Node.js は、Ruby 実装系のコピーだろ。

全く違う。似てるところが一つもないと言っていいレベル
つーか、Rubyにぱくれるところなんてなにもない

639 :
ちょっとこの信者なんとかしてくれない?
スキルセットがRubyしか無いから、何が何でもRubyのコピーだと言い張ってて鬱陶しいんだけど。

640 :
WEB+DB vol.111 は、Ruby on Rails 6, Julia 特集だけど、
Python から、Julia へ流れそう

Julia は、do 〜 end が使えて、Ruby風に改良されてる!
Jupyter Notebook(JN)でも使える

Windows で、RubyをJNで使っている人は、日本語でバグらないの?
irb では、バグるけど

RubyをVSCode で使っているけど、JNでも日本語でバグらないかどうか、知りたい

641 :
ocraやgolangのgo buildみたいにRubyスクリプトとその要求ファイルを
単一の実行ファイルに固める仕掛けのLinux/FreeBSD向けってありませんか?
利用側でのセットアップを簡単にするために探しています

642 :
Bundler は?

Node.js のnpm, yarn と同様の、パッケージマネージャー

643 :
Bundler というより、gem だね
gem を作れば1ファイルにできる

644 :
>>640
JuliaとPythonじゃ目指してる方向が違うから、PythonがまるまるJuliaに移行するということはないよ。
numpyでゴリゴリ計算してるようなものはJuliaに移行するだろうけど、
Cなどで書かれた外部ライブラリを呼び出しまくっているようなものが移行するとは思えない。

645 :
結局、Perl5はシステム、RubyはWebバックエンド、Pythonは機械学習と、確立した用途で落ち着いてしまいそうだよなあ。

646 :
Rubyは良く出来た言語だが、困るのはバイナリ処理したいとき
バイナリを扱うことはできるらしいが、かなり面倒そうで結局やらない
rubyにCのインタプリタを内蔵してはどうなのだろう
AIなど一挙に使える範囲が広がる

647 :
もうCでよくない?

648 :
でもたいていのところではrubの方がでいいわけですし

649 :
>>646
バイナリ処理は、目的とやりようによっては、C/C++よりもPerl5/Rubyのほうが簡単なんだが。
pack/unpackが意外と使いやすいからな。

650 :
バイナリはバイナリのまま処理すればいいと思うんだが、
なんでいちいちpack/unpackなんかするんだ?

651 :
perlからの流れであり深い意味は無い
それが好ましいと言う奴だけがrubyを使ってる
だから宗教だ

「わたくしはそれを気にいっている」宗教ではコレ以外の理由は必要無い

652 :
>>650
スクリプト言語は原則として、メモリに直接アクセスするようにはできていない。

念のために言っておくと、C/C++のキャストと比較しているのならそもそも大間違い。
また、あれはあれで問題だらけ。

653 :
例えば?

654 :
バイナリのまま処理すればっていってるだけで
メモリに直接アクセスしろなんて言ってないんだが

655 :
>rubyにCのインタプリタ

ffiとかwin32apiとかじゃだめなんか

656 :
>>655
win32apiはちょっとできることが違うように思います
ffiというのは知らなかったので調べてみます

RubyGemパッケージrest-client、バックドアを含むバージョンが立て続けに公開される
https://security.srad.jp/story/19/08/25/0620202/
不正に公開されたのはバージョン1.6.10/1.6.11/1.6.12/1.6.13の4バージョン
1.6.13は1,061回ダウンロードされていたそうだ

657 :
質問です。
配列64個分packしたいんですけど、どうすればpackできますか?
よろしくお願いしますm(_ _)m
a=[0]*64
a.pack("i*")

658 :
a[5]=800
のようにデータを入れてから送りたいです

659 :
出来ました。
失礼しました

660 :
>>653,654
聞かなきゃわからんヤツ、自分が何を言ってるかわからんヤツは、「バイナリ」に手を出さんほうがええで。
どうせ自分の面倒を見られへんやろからな。

661 :
>>660
あぁ、えとなぁ、お前、Javaはバイナリを直接扱えるが
メモリに直接アクセスってお前は何を言いたいのか
ちゃんと言えるか?って聞いてんだよ。

662 :
いいぞ
もっとやれ

663 :
これほど自信満々なところを見ると俺らが知ってるバイナリと
>>660の頭の中のバイナリは違うものなんやろな

664 :
bit演算を使えば一度に計算できることを
ループと何重にもネストしたif文でやってる
プログラムを何度も見たことがある

665 :
RubyはPythonにはもちろんだけどPHPにも喰われ出してるね
何故こうなってしまったんだろうか
文法というか記法が独特だからなのかな

666 :
元々大した事なかったからな
Railsみたいなモルヒネで延命してるうちに手遅れになった

667 :
>>650
自分でTCP/IPパケットの解析をするときに、「バイナリはバイナリのまま処理すれば」十分なの?
バイナリをバイナリのまま処理できるのなんてコピーぐらいの単純なIOしか思いつかないのだが。

バイナリって文字列じゃないだけであって区切りを持った意味のあるバイト列だからね。

668 :
>>667
何が言いたいのかさっぱりわからん。pack/unpackなんか使わずに
特定の型の構造体として扱えばいいって言ってるだけなんだが?

669 :
unionみたいなのあったっけ?

670 :
Rubyには無いでしょw

バイナリ扱うのにC/C++よりもPerl5/Rubyのほうが簡単
なぜならpack/unpackが使いやすいから

なんて寝言言ってるから、バイナリ扱うのはC/C++の方が
簡単だって話をしてる。

671 :
まあ型がない言語でバイナリ扱うのが簡単になるわけがないという
当たり前の話やなw

672 :
じゃあRubyでバイト列を特定の型の構造体として取り扱うにはどうすればいいの

673 :
>>670
まず引用の仕方を覚えましょう

>バイナリ扱うのにC/C++よりもPerl5/Rubyのほうが簡単
>>649 からの引用のようだが
>目的とやりようによっては
が、抜けてるね

674 :
抜けてるからってなんだっていうんだろうか?
そこは抜けてると指摘するんじゃなくて、
簡単な場合をだして反論するべきだろう?

675 :
>>672
ffi

676 :
>>674
反論?w
エンディアン、アラインメント、パディングとか、知ってれば当たり前のことばかりなんだけどな。

677 :
>>676
知ってる用語を並べてないで、当たり前というのなら、その当たり前のことをしてみせなさいな。雑魚かよw

678 :
エンディアンなんか大した問題ではないし
アライメントやパディングは指定できるから
なんでもない

679 :
ワンリトルトゥーリトル

680 :
スリーリトル、アウト!

681 :
>>656
Windows 10, WSL, Ubuntu 16.04 では、Ruby 2.3 を使っているけど、
2.3 は、サポート切れなのに更新された!

セキュリティー更新かな?

682 :
亀だと思うんだが最近知ったんで書くだけ書かせてくれ
基本情報処理試験のプログラミング言語の選択科目からCOBOLが消えてPythonが代わりに入った

Rubyは日本発の言語でかつISOにも認定されてるんだぞ?
案件だってRailsやPadrinoなどのWeb系に顕著だが日本では多いわけでさ
Pythonなんて案件ねえよw

まあCOBOL削った分Python入れてもいいですよ
ただそれなら表計算削ってRuby入れろや
国産で世界にも認められてる言語をお上が認めないでどうすんの?バカなの?氏ぬの?
それにMatz氏は親日だぞ?

683 :
長文失礼

684 :
>>682
一時期流行ったが将来性はないからとか、独特の癖のある言語で情報処理の基礎的な能力を評価するには適さないとか。

685 :
excelにpython乗ったらもう試験に表計算は要らないよな
表計算を削ってpandasを入れて欲しい

686 :
rubyで一番ヤバいのは|x|とかのラムダ式だろ
縦棒とか一番押しにくい位置にあるじゃん
これ|を二つ押すよかlambdaと5文字書いた方がラク、ってのが世界の趨勢だよ
だもんでruby最大の癖がコレ|x|だ

687 :
> 縦棒とか一番押しにくい位置にあるじゃん

一番押しにくい位置にあることで発生するデメリットはなに?
入力が0.5秒遅れるだけとかその程度?

688 :
BS NHK でやってた島根県の松江の
おもちゃの病院
割と良かった

689 :
はは、所詮おもちゃw

690 :
分かってないなぁ
押しにくいからデメリットなんだよ

691 :
->

692 :
NHK じゃなかった BSフジ の FNSドキュメンタリー大賞

693 :
>>690
どれくらいのデメリットか聞いてるだけやで

694 :
>>693
タイプが面倒だと、
「気持ちよくない」
「楽しくない」
「屈辱」

教祖様のお言葉だから批判は許されないよ

695 :
個人的には|より()の方が打ちにくい

696 :
ていうか手の小さい女性にも配慮して欲しかったり

697 :
>>682
Rubyは互換性がクソだから、「試験」にはあわない。

これからは互換維持をがんばると言ったようだから、それが実績でしっかり証明されてからやな。

698 :
特定の日本人に仕様が握られてる言語とか採用は無理でしょ
ISOも形だけとったのがバレバレ

699 :
>>697
2系を根絶できないPythonに互換性云々を言われるのは納得しづらい

700 :
Rubyみたいな汚い言語が採用されるわけないでしょ
Pythonのが幾分マシ

701 :
>>697
たしかにたかだかバージョンを上げただけで Hello world が
構文エラーで動かなくなるなんて、クソ以外の何物でもないね

http://mevius.2ch.sc/test/read.cgi/tech/1413113999/126

こんな言語仕様変更がTIOB上位ランク言語で断行されたのは、
おそらく歴史的に初めてであろうし、
後世に「後方互換性の断絶」の代表例として語り継がれていくだろう

702 :
>>687,693
別のRubyアンチスレと同じ流れではないかと思われ
・Rubyに'end'って要らないよな
 http://mevius.2ch.sc/test/read.cgi/tech/1563066707/
このスレではPython厨がインデント矯正のメリットを声高々に主張した挙句、
以下の結末となった
 http://mevius.2ch.sc/test/read.cgi/tech/1563066707/31
 > (2)言語による矯正がなければインデントがめちゃくちゃになるレベルの人には有益

このスレに当てはめると:
 縦棒を押すのが苦痛なほどタイピングが苦手な人にとっては、苦痛としか言いようがない


>>688
一昨日のU18パナマ戦の裏番組では小学生向けプログラミング義務教育を扱っていた
その番組によると、三つある小学生向け教育指針の一つ目として
(Scratchに代表される)ビジュアルプログラミング言語の利用が推奨されていた
たしかに、小学生であればマウス操作主体の方が親しみやすいと考えるのは誰もが納得できるだろうし、
ましてや縦棒を押すのが苦痛に感じなくなるほどタイピング教育を徹底させるとしたら無茶苦茶だよね


つまり、まとめると:
 タイピング能力が小学生レベルな人(>>686,694)にとって、縦棒押しを強要するRuby言語仕様は苦痛
という結論ですね
個人的には、精神年齢が小学生レベルの人にRubyの習得は難しいから、無理に背伸びせず
中学生レベルに成長してから再挑戦してもらいたいです

703 :
↑伝統的・標準的 Ruby使用者
こういうひねくれてて頭弱そうな人が好むんだよなぁ>Ruby
さいこー

704 :
>>699
かなり異なる2系統が存在するだけのPython。
マイナーバージョンアップでも破壊的変更が心配なRuby。

ぜんぜん別物。
納得できないとしたら、あたおかやで?

705 :
PythonをディスってもRubyの栄光は帰ってこないよ。
Rubyを救いたかったらRails級の革新的なOSSを作りなさい。あなた自身が。

706 :
>>705
結局言語としてのRuby自体にはもう価値も魅力も無いということか

707 :
もうっていうか元々価値があったのはRubyじゃなくてRailsだぞ

708 :
PythonにおけるJupyterみたいな環境があれば、Rubyも使う人増えるんじゃないかなぁ。
一応Jupyter用のRubyカーネルあるみたいだけど、微妙な動きだったし
pryをつかったRubyカーネル作れば便利なのかもしれないけど。

Rubyあんまり使ってないからわかんないんだけど、Pythonはctypesとか使ってPure Pythonじゃないパッケージもいっぱいある印象なんだけど、
RubyはFFI使ってPure Rubyじゃないライブラリって少なそうな印象。その差はなんでなんだろう?

そして、もし本当にそうなのであれば、RubyはPythonに比べてグルーコードとしての有用性が低くて、
Pythonほど汎用的にいろんな場所で使われるようになるのは難しい、と考えられるけども。

709 :
Rubyはsjisもutf-8もそのまま変換せずに扱えて便利

710 :
>>708
印象。w
ネイティブモジュールはたくさんあるから、心配すんな。

711 :
>>702
放送大学か

712 :
>>702
そりゃそうだ
この手の催しはお前が投書して廃止に追い込んでくれ

総務省|若年層に対するプログラミング教育の普及推進事業|地域資源であるプログラミング言語「Ruby」を活用した教科学習(算数)支援モデル
http://www.soumu.go.jp/programming/017.html

713 :
>>705
Rubyの栄光?Rubyを救う?何を言ってるのかなぁ

かつて先端IT不毛の地と思われたアジアに位置する島国日本に生まれ、
しかも名もなく地位もなかったエンジニアが設計した:
  ぼくのかんがえるさいきょうげんご
であるRubyは、すでに全世界で認知されTIOBEの最新ランキングでも11位にある
ただそれだけで十二分に「栄光」ではなかろうか

714 :
>>712
率直に言って京よりひどいなこれ

715 :
>>711
当たり


>>712
えーと、リンク先の文書を本当に読んでカキコしたの?
この事業で使用する「スモウルビー」は、(開発言語がRubyで)
Scratchと同様なビジュアルプログラミングツールなんだけどね
何を言いたいのかワケワカメ

ちなみにRubyの世界には、小学生どころか5歳児に素のRubyを
学ばせようという、世間一般からすれば無謀と言われかねない試みもあったりする
・『ルビィのぼうけん』特設サイト - 翔泳社
 https://www.shoeisha.co.jp/book/rubynobouken/
個人的には、子供の持つ好奇心という破壊的なパワーをなめちゃいかんと思います

716 :
同じ●ビィでもヴィビィよりは遥かにマシ

717 :
>>715
この本Ruby関係あんの?

718 :
>>717
ある!

719 :
安藤咲良かわいいな
https://gigazine.net/news/20190910-top-programming-languages-2019/

720 :
rails 概出?
https://www.youtube.com/watch?v=bxZaPTw5E7k

721 :
2.7のNumberedParametersがいつの間にか@1から_1に変わったんか

微妙に被害被ってそうな破壊的変更は困るわ

722 :
任意の列数のCSV ファイルから、そのファイルを上書きせずに、特定の2列だけを抜き出したい。
2列以外のすべての列を削除したりできますか?
ただし、列名・列数は、ファイルごとに変化します

require 'csv'

field_name_1 = "AAA"
field_name_2 = "BBB"

header = CSV::Row.new( [ field_name_1, field_name_2 ], [], header_row: true ) # ヘッダー行
table = CSV::Table.new( [ header ] ) # ヘッダー行を追加する

# 引数は、入力ファイル名。ヘッダー行あり
CSV.foreach( ARGV[ 0 ], headers: true ) do |row| # 1行ずつ処理する
ary = [ row[ field_name_1 ], row[ field_name_2 ] ]

table << CSV::Row.new( [ field_name_1, field_name_2 ], ary ) # 1行ずつ追加する
end

puts table

723 :
>>722
$ csvtool namedcol aaa,ccc data.csv
aaa,ccc
01,03
11,13
21,23

724 :
CSV::Table#by_col! で、列単位で扱える。
そこで、delete(列名) で、列ごと削除できるけど、
事前に、列名が必要

任意の列数のCSV ファイルを扱う場合に、
事前に、列名がわからない場合に、どうすれば良いのか?

一旦、ヘッダー行を取得して、すべての列名を取得してから、処理すれば良いのか?

>>723
csvtool というコマンドがあるのですね

725 :
>>724
csv = CSV.table ARGV[0]
puts csv.by_col.delete_if{|name, val| ![:AAA, :BBB].include? name}

726 :
Rubyに決めた!

727 :
できた!

by_col! でも、元のファイルを更新しない

それと、CSV.tableは、CSV.readに、幾つかのオプションを設定したものだから、
table = CSV.read( ARGV[ 0 ], headers:true, converters: :numeric, header_converters: :symbol )

コンバーターで、変数の型が自動変換されてしまう

require 'csv'

column_names =[ "AAA", "BBB" ]

# 引数は、入力ファイル名。ヘッダー行あり
table = CSV.read( ARGV[ 0 ], headers: true )

# 列モードにしてから、特定の列名以外を、削除する
puts table.by_col!.delete_if {
|column_name, values| !column_names.include? column_name }

728 :
Windows10, WSL, Ubuntu 16.04, Ruby 2.3 で、
pty, expect モジュールを使って、端末に自動入力しようとしたが、エラーになる!

この環境では、使えないのかな?

warning: Insecure world writable dir /mnt/c in PATH, mode 040777

/usr/lib/ruby/2.3.0/expect.rb:47:in `eof?':
Input/output error @ io_fillbuf - fd:7 /dev/pts/0 (Errno::EIO)

729 :
君の pwd の結果を曝すか
runas /user:administrator 汁

730 :
Windows10, WSL, Ubuntu 16.04 の端末上で、
~/mytest/ruby/test に、スクリプトファイルを置いて、実行してる

ディレクトリ・ファイルのパーミッションは、rwxrwxrwx

確かに、/dev/pts/0 は存在しない(Errno::EIO)。
/dev/pts/ptmx しかない

WSL には、その機能が無いのかも

731 :
tty コマンド実行したらどうなる?

732 :
ちゃんと読め
Insecure world writable dir /mnt/c in PATH

733 :
こいつ他のスレでRubyのネガキャンしてまわってるキチガイだろ
相手をするな

734 :
Rubyだけじゃないでしょ
この板に取り付いて自演してる糖質君だよ
そういう奴がいるという認識で無視しておけば無害

735 :
Windows10, WSL, Ubuntu 16.04 の端末上で、
tty と入力すると、/dev/tty1 と表示される

Ruby ではなく、シェルスクリプトで、expect をしようか

736 :
pty は仮想端末だから、ssh 接続をしないと使えないのかも

単に、端末に自動入力したいだけだから、
Ruby ではなく、シェルスクリプトで、expect をやってみる

apt では、sudo のパスワードを聞かれるから、それを自動入力したい

737 :
expect のサンプルが、pty を使ったものばかりだったから、ptyを使わなければ良いのかも?

expectだけでも使えるのか?
誰か、サンプルを書いて!

738 :
Windows10, WSL, Ubuntu 16.04 の端末上で、

net/telnet モジュールを使って、Telnet で接続しようとしたが、エラーになった!

/usr/lib/ruby/vendor_ruby/net/telnet.rb:350:in `initialize':
Connection refused - connect(2) for "localhost" port 23 (Errno::ECONNREFUSED)

やっぱり、WSL は特殊

739 :
Windows で Ruby 使ってもロクなことにならない
(WSL でもね)

740 :
ここの淀んだコミュニティはまだWindows目の敵にしてるのか
そんなんだからPythonにぶっちぎられちゃってるのに

741 :
別に目の仇にしてる訳じゃないやろ
「rubyはなんでwindowsで使うと糞なの」
「じゃあおまいが対応汁」
「forkωωω」
「挫折」
の流れを繰り返してるだけ
屍累々

742 :
>>738
お前がわかってないだけだろ

そのエラーはlocalhostでtelnetサーバーを起動してない、
もしくは接続が拒否されたって意味だ。

今どき暗号化されてないtelnetサーバーなんて使わないから
前者だろうな。

743 :
ちなみにWindows 10にはtelnetサーバーは付属してない。

744 :
>>741
的はずれなレスをするな

745 :
Windows10, WSL, Ubuntu 16.04 の端末上で、
tty と入力すると、/dev/tty1 と表示される

/dev/tty, /dev/tty0, /dev/tty1 などもある。
他にも、S が付いた、/dev/ttyS0 〜 /dev/ttyS191 もある

/dev/stdin, /dev/stdout, /dev/stderr もある

expect で、このあたりの、デバイスファイルを使えるかもしれない

>>738
Telnet の接続エラーは、port 23 が開いていないのかも

746 :

https://www.atmarkit.co.jp/flinux/rensai/linuxtips/094virtualcon.html
https://kouritool.com/what-linux/ctrlaltf1仮想コンソールを起動を押してしまったら/

747 :

https://qiita.com/Kernel_OGSun/items/bdccbe8bc4092f33b43e
http://yudoufu.hatenablog.jp/entry/2014/02/06/001440

748 :
Rubyの課題が全然わからないので教えてほしいです。
1、0、−1、0が繰り返し表示されるようにしたいです。
when使ってできないでしょうか。
OS→windows10
Rubyバージョン→1.8.4
一応作ったのですが、nilが永遠にでます。

749 :
作ったの貼るっしょ

750 :
Ruby 1.8.4 ?
もう、そんなに古いのは無理!
Windows 用のRubyInstaller でも、Ruby2.5.7。
Linux では、Ruby2.6.5 が最新だが、Windows では、1つ前のバージョンを使うこと!
Windows では、irb も日本語でバグるから、VSCode を使え!
Code Runner という拡張機能を入れると、
右クリックメニューから、選択したコードを実行できる

751 :
その問題を「1、0、−1、0を産む機械」と言い換えればすぐにyieldを使えばいいと分かる
whenなの?

752 :
0.step do |i|
p case i % 4
when 0 then 1
when 1 then 0
when 2 then -1
when 3 then 0
end
end

a = [1,0,-1,0]
0.step{|i| p a[i%4] }

>>750
> Linux では、Ruby2.6.5 が最新だが、Windows では、1つ前のバージョンを使うこと!
私の観測範囲が狭いのか2.6.5を使わない理由が見つからないのだが、なにかバグありました?

753 :
>>748
(1..).each{|i| p (-1)**((i & 2) >> 1) * (i & 1)}

754 :
>>752
Windows 用のRuby は、いつも1つ前のバージョンを使う!
RubyInstaller のサイトにも、最新版を使わないようにと、いつも書いてある

Windowsでは、MSYS2 でコンパイルするモジュールなどが、
最新版に対応していないので、1年ぐらい待つ必要がある

755 :
>>748
loop{ puts 1, 0, -1, 0 }

756 :
>>754
RUBYINSTALLER-HEAD(https://github.com/oneclick/rubyinstaller2/releases/tag/rubyinstaller-head)については書いてありますが
latestについては記述見つかりませんでしたが、どこに書いてありますか?

> MSYS2 でコンパイルするモジュールなどが、
コンパイル済みのfat-gemが問題起こしてる印象があり、なくならねぇかな・・・と思ってますね

757 :
https://rubyinstaller.org/

以前は、このトップページか、Download のページに書いてあったけど、文章が変わったみたい

まあでも、このスレでも、Windows では、最新バージョンは使うなという書き込みがあったから、
たぶん、1つ前のバージョンを使わないと、依存関係が解決できないのだろう

とにかく、Mac を使っている人は、Windowsの依存関係が地獄だから、皆Macへ移った

758 :
[1,0,-1,0].cycle {|x| puts x} #無限
[1,0,-1,0].cycle(3) {|x| puts x} #サイクル数指定
[1,0,-1,0].cycle.take(10).each {|x| puts x} #要素数指定

cycle再発明したいならEnumeratorを返す方法を学ぶ

759 :
ひょっとすると Ruby は糞なのかも知れない

10.times{|n|puts Math::cos(n*Math::PI/2) <=> 0}

760 :
10.times{|n|puts Math.sign(Math::cos(n*Math::PI/2))}
10.times{|n|puts Numeric.sign(Math::cos(n*Math::PI/2))}
10.times{|n|puts Number.sign(Math::cos(n*Math::PI/2))}

761 :
糞は漏れだった orz

10.times{|n|puts Math::cos(n*Math::PI/2).to_i}

762 :
>>758が一番スマートだな

763 :
>>760みたいに下手に計算するより早いしね!

764 :
いやそもそも>>759-761は間違ってる

765 :
>>764
そういうことじゃなくて発想の問題よ。
物事を単純に考えることができない。

766 :
流石に本気で三角関数使って実装しようなんて思ってないだろうしそこは別にネタで言ってんだと思うけど
ネタとしても面白くはないけど

767 :
そもそも>>748はhello worldレベルの初心者だろうに、回答者が求めてるものを無視して俺の解き方見てくれ!って奴ばかりなのは問題だと思う

768 :
禁止事項
トリを使おうとしている質問者に対して、そんなトリはやめろとかという、斜め上からのアドバイス
質問者そっちのけでの昔語り(昔はもっと苦労したもんだ、今の若い者は…)
知らないのに、使ったことないのに、知ったかぶりでの書き込み
ググれという誰でも言えそうな忠告
俺は知ってるけど言わない等といった、実社会での扱われ方からの僻みから来る
意地悪な言辞
回答はあくまでボランティアなので、質問者は、回答がつかなかったり、
期待に沿った回答が得られなかったからといって切れたりしないように。
また、わざとそういう困った質問者を演じて釣りに来る人もいるかもしれないので、
回答者も、むかついたからといって、いちいち切れて反応せずスルーしよう。
そして質問者はもう出て来ない

769 :
他人のレスに対して上から目線で批判するしか能がない評論家のカキコこそ、
無駄なスレ消費ではないかと思われ

>>764
では、貴殿の正解をどうぞ!
>>766
では、あなたの考える>>748が求めていた回答(あなたの解き方)をどうぞ!!

770 :
訂正
X:
 >>766
 では、あなたの考える>>748が求めていた回答(あなたの解き方)をどうぞ!!
O:
 >>767
 では、あなたの考える>>748が求めていた回答(あなたの解き方)をどうぞ!!

771 :
いやどうみてもnがちょっとでかくなったら正しくなくなることくらい自明だろ
同じ発想でやりたいなら複素平面とかπ/2の回転行列とか使って計算すればいいだけ
ただし奇を衒った回答としては斬新さにかけて面白くないと言っている
>>758が一番スマート(かつ自分でもそうする)って言ってるんだがなんなんやこいつ

772 :
>nがちょっとでかくなったら正しくなくなる

2π で mod すればいい

773 :
質問したものです。皆さん様々な意見ありがとうございます。考えてくださってとても感謝しています。
皆さんのを見ながらなんとかできました!
ありがとうございました。

774 :
def break_test
return break
end

i = 10;
while i > 0
next_test
}
放置すれば無限ループになるのをbreak_testでループを
抜けたいのですが、関数?からnext や breakなどを
返すようにできないのでしょうか。

775 :
ごめんなさい、
i = 10;
while i > 0
break_test
}
でした。

776 :
そういうキーワードそのものは、返せないだろ

戻り値は、0, 1 などの整数とか、
フラグとして、true, false の真偽値とか、

:next, :break みたいなシンボルとか、文字列とか

777 :
キーワードデリゲーションをすればいいんだろ
かんたんじゃん

778 :
>>774
それをやりたいと思った理由は?

仮にできるとしてもnextやbreakが
別のメソッドに埋まってたら可読性が低くて嫌だと思うんだけど

779 :
>>774
斬新な発想だな。w
Rubyに限らず一般的に、制御を移すしくみは、関数(メソッド)の範囲を越えることはできない。

ただし、「例外」ならそれ以降をすっとばすことができるので、break相当ならできるかも?
# 勧めないけど。

780 :
>>778
理由はいろいろやろ。
制御の移しかたを別の関数に封じて共用できたらなあ、という気持ちがわからんのか。

可読性なんか、命名でも運用でもどうとでもなる。

781 :
>>778
実際はwhileじゃなくて
xxxxx.each do |key|
同じようなことする関数(引数)
  同じようなことする関数(引数)
  同じようなことする関数(引数)
end
の中で関数の中身がある条件だったら
nextで残りをやらずにeach.doの最初からやりたいんですけど
引数の値が違うだけなのに
例えば関数にTrueを返したら next しろとか条件をいちいち
付けるのもめんどくさいと思い、質問してみました。

782 :
xxxxx.each do |key|
if 同じようなことする関数(引数) then next
  if 同じようなことする関数(引数) then next
  if 同じようなことする関数(引数) then next
end

Rubyにあまり詳しくないのでよくわからないのですが
こんな感じなのでしょうか?

783 :
慣習的に返り値を成否にすることが多いから論理を逆にして

xxxxx.each do |key|
同じようなことする関数(引数) &&
同じようなことする関数(引数) &&
同じようなことする関数(引数)
end

xxxxx.each do |key|
next unless 同じようなことする関数(引数)
next unless 同じようなことする関数(引数)
同じようなことする関数(引数)
end

784 :
>>781
なるほど

自分ならオプショナルチェーン的なのを使うか
「同じようなことする関数」をメソッドオブジェクトかProcにして配列に入れて
true返したらnextしろって書くのを1箇所にする

https://ideone.com/I7hyOs
https://ideone.com/VQMgg2

785 :
jQuery.each( object, callback )

これは、jQueryの繰り返し処理用の関数。
配列/オブジェクトで使える

繰り返し処理中に、ループを抜けたい場合(一般的なループ処理で言うところのbreak)、
コールバック関数で、falseを返すことで実装できます。
それ以外の値を返した場合は、無視されます

786 :
独自の言語を開発した15歳が経済産業大臣賞を受賞
https://it.srad.jp/story/19/10/23/1625249/

まつもとさんクラスの才能?

787 :
ifのネストができないとかなので
qiitaの「オレオレ言語作ってみた」記事レベル

788 :
いや、さすがにそれよりは完成度高かったよ

789 :
あとgithubプロジェクトには、オブジェクトファイルとか
vimのスワップファイルとかも入っていて周辺知識もない

つまりはプログラミング全般の幅広い知識をつけて、
言語開発できるレベルになったと言うより
言語作ってみたくて、それ関連の知識をぐぐってコピペした程度
再帰を知ってるかも怪しいw

790 :
中学生相手に謎のマウントとって恥ずかしくないんかこのおっさん

791 :
どこにも新人を虐めR人はいる。

792 :
養成読本シリーズのムック本が出た!

Software Design plusシリーズ
Ruby on Rails 6 エンジニア養成読本、2019/10/26

著者は、すがわらまさのり,前島真一

793 :
養成ギプスじゃねーのなこのシリーズ

794 :
>>783
返事が遅くなりすみません。
なるほど、そんなにシンプルにできるのですね。
Rubyの問題ではなかったですね。
ありがとうございます。

795 :
>>784
条件を配列にいれて処理すると楽そうですね。
ありがとうございます。

796 :
>>785
Ruby on Rails入れてませんがjqueryが使えるのでしょうか。

797 :
github の ignoreとか適当だから、objとか普通にアップしてるな。
仕事ならまだしも、個人ねやつなんか、完全やバックアップもくてきだから、
あまりにデカイみだな .db とか除いて、全部あっふだわ。

個人のリポジドリも200とか超え始めると、一つ一つ丁寧に設定なんかしとれんわ。
githubやエディタ独自仕様に振り回される必要なし。

798 :
>>796
Rails を使っていない場合でも、
ERB, Selenium WebDriver, Nokogiri などで、
HTML を処理する場合には、Node.js, jQuery も使う

799 :
>>797 はパスワードをうpして慌てるタイプ

あるいは気付かず放置してるだけかも知らん

800 :
あるフォルダ内の子フォルダだけを取得するのに、こう書いているのですが、

PowerShell みたいに、ls -Directory
など、もっと簡単に書けないの?

target_dir = "C:/Users/Owner/Documents/*"

p dest_dirs = Dir.glob( target_dir ).select { |path| File.directory?( path ) }

return if dest_dirs.length == 0 # フォルダが存在しない

801 :
RubyはUNIXで使うものであり、シェルコマンドも積極的に使うのが前提
Rubyから普通にlsを呼べ基地外

802 :
単発で使う分には十分簡単に書けてると思うが
繰り返し書く必要があるなら自分でメソッド抽出すればよくね?

803 :
Dir.glob( "パス", :directory )

みたいに、ブロックじゃなくて、
オプション・シンボルなどで、簡単に指定できれば

804 :
>>800
むしろPowerShellが凄い

805 :
Dir.glob('*/')

806 :
rubyを使い出して2週間なのですが困っています。

今は汎用機のログの一括処理に使っているのですが、
半角カナや漢字が文字化けして読み込まれます。

ログファイルはwindowsにsjisで保存されていて、
これをsjis指定で読み込んでも\x33等と化けます。
どうすれば半角カナが化けないように読めるのでしょうか。

807 :
sjis指定で読み込んでると思い込んでるだけで実際はutf-8になってるんじゃないかな
あるいはログがsjisと思い込んでるだけという線もありうる
もしくは書き出しがsjisになってないとか
可能性を挙げたらきりがない
コードをさらすのが解決への近道

808 :
汎用機のデータをRubyで処理とか懐かしいな
俺もやってたわ
結局転職するのが唯一にして最良のソリューションだから、あまり変なことに拘って時間を無駄にするよりAWSの勉強でもしたほうがいいよ

809 :
>>806
どういう環境を使って
どういう方法でエンコーディング指定をしていて
どうやって読み込んで、どこに出力して、出力結果をどうやって確認してるのか?
そういう情報が必要
Ruby関係なくエンコーディングに対する理解を深めたほうが良さげ

基本的には外部エンコーディングと内部エンコーディングを指定すれば問題なし
https://docs.ruby-lang.org/ja/2.6.0/class/IO.html#io_encoding
>File.read('sjis.log', mode: "rt:sjis:utf-8")

810 :
>806です
解決しました。

エンコードにsjisではなくwindows-31Jを
指定すると半角カナを文字化けせずに読めました。

ファイルの文字コードは確実にsjisなのに、
なんでsjis指定で読み込んだら化けるのか分かりませんが、
ひとまず解決です。

811 :
>>809
文字コードの指定は、
fileopen時にwindows-31Jを指定してうまくいきました。

812 :
>>810
一般に、Shift_JIS(標準規格)とcp932(Windowsカスタム)は別物。
Rubyでもそうらしい。

https://docs.ruby-lang.org/ja/latest/class/Encoding.html#S_ALIASES

813 :
半角カタカナ ← 混ぜるな危険

30年くらい前の話

814 :
>>812
これを見てやっとわかりました。

rubyは真面目に解釈してこうなったんでしょうけど、
sjisファイルの読み込みでsjis指定では駄目となると
初心者泣かせですね。

815 :
>>813
漢字も駄目なのでやや難易度高しです。

816 :
いいがかりは止せ
SJISファイルじゃないんだから当然だろ

817 :
Windows では一般用語として、sjis と書くけど、
厳密には、sjisを拡張した、CP932 の事です。
だから、MS が独自に拡張した部分は、sjisではない!

漏れは、Windows で、PowerShell を使って、クリップボード処理を書いているけど、
Windows(CP932) ←→ Ruby(utf8) と、外部環境とruby内で、文字コードを変換している

クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる

str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換

ary = str.each_line.map( &:strip ) # 連続する空白類を除去する

IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end

818 :
別にMSがSJISを拡張したんじゃないけどな。
そもそもSJIS本家を作ったのがMS(+他)なわけで。

じゃあ拡張したのは誰かというとIBMとかNECだよ
まあそもそも拡張可能にしていんだけどな

MSなどがSJISを作った。IBMやNECが拡張した。
それらを取り込んでWindowssのCP932とした。というのが正しい流れ

ちなみにAppleもSJISを拡張してる。それはMacJapaneseと呼ばれる。
拡張部分がIBMやNECが拡張した部分とかぶってるので互換性がないんだけどな

819 :
>Encoding.aliases.select {|_,v| v == "Windows-31J"}
{"CP932"=>"Windows-31J",
"csWindows31J"=>"Windows-31J",
"SJIS"=>"Windows-31J",
"PCK"=>"Windows-31J"}

Rubyでは"SJIS"も"CP932"もWindows-31Jのエイリアスなんだけど
SJISの指定をWindows-31Jに変更して解決する事があるんですねー(棒)

820 :
半角カナや大半の漢字はsjis範囲内だからきちんとsjisで読めばほぼ文字化けはないはず
つまりsjisで読めていなかったということ

821 :
>>819
エンコーディングは同じで文字集合が違うだけだからね

822 :
リファレンスマニュアルの aliases -> Hash の例
"SJIS"=>"Shift_JIS" は間違いですね

Encoding::SJIS == Encoding::CP932 #=> true
Encoding::SJIS == Encoding::Windows_31J #=> true
Encoding::SJIS == Encoding::Shift_JIS #=> false

823 :
HTML (HTTP) で Encoding Shift_JIS って書くと怒られた思い出

824 :
>>821
いやいやいや

文字集合と符号化方式を別々に選択できる状況ならともかく
「ファイル読み取り時のエンコーディング指定」とかの文脈で使うエンコーディングって用語は
狭義の符号化方式だけでなく文字集合も含めた上位の概念だから

825 :
上位って聞くと攘夷を思い出して
https://youtu.be/DvS_2K5MVzU?t=14
これを思い出して困る

826 :
>>818
エンコーディングと機種依存文字をごっちゃにしてるやろ。

827 :
>>826
SJISは元から(文字集合を)拡張可能なのだから
同じSJISでも機種依存文字は発生する

エンコーディングはSJISもCP932も同じ
文字集合が違うだけ

理解できる?

828 :
ガイジか?

829 :
理解できなくなったら、このようなレスをするんだよなw

830 :
例えば、Unicodeは文字集合(キャラクタセット、Coded Character Set)で
UTF-8とかUTF-16というのが符号化方式(エンコード、Character Encoding Scheme)
Unicodeも拡張可能でバージョン番号があって文字集合の内容が変わってる。
Unicode 1.0では文字集合の中の文字数は7,161文字
最新のUnicode 12.1では137,929文字も収録文字数が増えてる。
エンコーディングは変わっていないが文字集合は変わってるので
古いバージョンにしか対応してないコンピュータで、
最新のUnicodeを表示させると一部文字化けする
ただし管理団体の手によって収録文字は決められてるので
ShiftJISの頃のような各社バラバラで互換性がないってことにはならない
(ただし私用領域を使ってる場合は除く)

831 :
外字と引っ掛けた洒落や
気い悪くしたんならすまんかった

832 :
>>830
>エンコーディングは変わっていないが文字集合は変わってるので
>最新のUnicodeを表示させると一部文字化けする

じゃ文字集合だけ更新すれば文字化け解消するのかな?
文脈理解せず無意味なレス繰り返してるとそりゃ外字言われるわ

833 :
そりゃ、新しい文字集合を使うと、新しい絵文字も正しく表示されるだろ?

834 :
正確に言えば、新しい文字集合に対応したフォントを使うとだね。

>>832の言う「文字集合だけ更新すれば」が意味不明だが
「仕様書を更新すれば、なにも変更はいらない」って意味なら
そんなことは誰も言ってない

835 :

最近だと令和対応が記憶に新しいな

836 :
よく出てくる、&:メソッド名は、proc オブジェクトですが、
たまに出てくる、:メソッド名は、何ですか?

違いが、よく分からない

nums = %w(1 2 3 4).map!( &:to_i ) # 数値の配列

p nums.inject( :+ ) # 10

837 :
シンボル
実用的には単なる変更不可能な文字列と見做してよい
Rubyの初期からの大きな失敗の一つで、特に意味はない

838 :
マニュアルの「シンボルの実装と用途」ってところを読むと良いと思う
https://docs.ruby-lang.org/ja/2.6.0/class/Symbol.html

&:to_iも":to_i"がシンボルで、そのシンボルが"&"で修飾されてるだけ
"&"はProcオブジェクトやto_procメソッドを持つオブジェクトをブロックとして渡す時に引数につける修飾記号
実行時にSymbol#to_procが呼ばれてそれがブロックとして渡される

839 :
mapはシンボルを引数にとらないからmap(&:to_i)でブロックとして渡すけど
injectはシンボルを引数に取るからinject(:+)で実行できる
inject(&:+)としてブロックとして渡してもいいけど無駄処理が入るので普通はやらない

840 :
漏れは、いつも、メソッドがシンボルを引数に取るかどうか、分からないから、

ひとまず、map!( :to_i ) みたいに、シンボルを渡して、エラーになったら、
map!( &:to_i ) と、& を付けることにしている

841 :
>>839
ホントにムダなんか?
シンボルを渡されても、内部でやはりブロックにしてそうだが。

842 :
ていうか、なんでそんな半端な設計なの?
injectのみシンボル受け取れるようにするメリットってなに?

843 :
シンボル・・・型が無い言語で、型を気付かれないように書くための手段の一つ

型がないとされる言語でも、123は数字だが、"123"は文字というように
書き方で型をこっそりと記述している。
他にも/abc/は正規表現型、1.0は浮動小数点型などの定義方法がある。
シンボルはその一つで、:で始めることにより、シンボル型の値を書くことができる

844 :
>>841
リファレンスにも書いてるけどシンボルとブロックだと扱いが違う
ただパフォーマンスにシビアな箇所じゃなければ特別気にするほどの違いはない
https://ideone.com/p5oW7Y

845 :
>>843
その「型が無い言語」とか「型がないとされる言語」という理解は間違ってるよ

846 :
シンボルと文字列を区別したのは失敗だったとmatzも言ってるな
streamという途中でぶん投げた新言語ではその区別がなくなってる

847 :
>>845
反論は「あってるよ」だけで十分そうだねw

848 :
>>842
文字列リテラルよりも記述が簡便だからという理由により、本来文字列を使うべき用途にもシンボルが乱用された結果、
シンボルGCなどという頭の悪いものが誕生したりしたんだよな
誰がどう見ても完全に失敗

849 :
シンボルは、識別子を表すために作られたのか、数字で始められないだろ。
下はエラーになる

p :"1" # OK

p :1 # エラー

850 :
>>848
あいやそっちじゃなくてinjectがシンボルを引数にとってブロックみたいな処理ができるって方の話
mapとかは&がいるんだよね?

851 :
>>849
リテラルが書けないだけで、to_symすれば数字始まりのシンボルも普通に作れる
だから型が文字列と別である理由にはならない

852 :
>>850
すまん848は>>846に対するレスだ
&:が後付けだから一貫性がないだけで、深い意味はない

853 :
>>850
sliceやchunkのような分割系以外は
ブロックがなければEnumeratorを返すのを基本ルールにしてるから
mapはシンボルを取る形がないんじゃないかな

injectはEnumeratorを返すものじゃないから
ちょっと気を利かしてシンボルを取る形を加えたのかもね

854 :
今年が2.7ってことは
2022年には3か2.10か

855 :
Rubyで2値の差を得る簡単なメソッドとかないかな
def diff(num1, num2)
 max = [n1, n2].max
 min = [n1, n2].min
 (max - min)
end
p diff(-3, 7)   #=> 10
とかだと見てくれ良くないし無駄も多い

856 :
(num1 - num2).absじゃあかんのか?

857 :
オラもそう思った

858 :
>>854
最初の小数点の次の数は二桁以上にしない縛りなかったっけ?

859 :
Rubyの平均年収は全言語中最低
https://tech.nikkeibp.co.jp/atcl/nxt/column/18/01068/111100004/

860 :
そんなに年収ほしければCOBOLやれば?

861 :
今月までプログラミングに一切触れたことのなかった初心者です
引数を配列にして
メソッド内で変数aに引数を代入
その後変数aの0番目にnを代入すると引数の0番目まで巻き添えでnになってしまうんですがそういう仕様なんでしょうか?
配列だけで起こる現象のようなんですが
method(0,1)と呼んで
def method(array)
a = array
a[0] = 10
puts a
puts array
end
とするとaもarrayも[10,1]となってしまいます

862 :
method([0,1])でした
失礼しました

863 :
>>861
そういう仕様です
https://magazine.rubyist.net/articles/0032/0032-CallByValueAndCallByReference.html

864 :
>>863
ありがとうございます
アドレスの参照先をコピーしてるだけだったんですね
理解しました
調べたところMarshalで書き出せばバイト値もコピーできるようなのでこの方法でいきます

865 :
>>864
使い方にもよるのかもしれんが階層が浅くて固定ならdupで十分じゃない?

foo = [[1,2], [3,4], [5,6,7]]
bar = foo.dup

bar[0] = [9,9,9]
foo #=> [[1, 2], [3, 4], [5, 6, 7]]
bar #=> [[9, 9, 9], [3, 4], [5, 6, 7]]

bar[1].push 200
foo #=> [[1, 2], [3, 4, 200], [5, 6, 7]]
bar #=> [[9, 9, 9], [3, 4, 200], [5, 6, 7]]

bar[2] = bar[2].dup.push 300
foo #=> [[1, 2], [3, 4, 200], [5, 6, 7]]
bar #=> [[9, 9, 9], [3, 4, 200], [5, 6, 7, 300]]

階層が深くて手動でdupするのが大変ならdeep_dup

require 'active_support'
require 'active_support/core_ext/object/deep_dup'

baz = foo.deep_dup
baz[1].push 300
foo #=> [[1, 2], [3, 4, 200], [5, 6, 7]]
baz #=> [[1, 2], [3, 4, 200, 300], [5, 6, 7]]

866 :
年収は、5大SIer, Java などの土方系・奴隷、多重請負構造では、1社間に入る度に、3割抜かれる!

顧客が100万円払っても、間1 が、30万円抜いて、
自社には70万円で来るので、自分の給料は、25万円ぐらいw

顧客が100万円払っても、間1 が、30万円抜いて、間2 が、20万円抜くと、
自社には50万円で来るので、自分の給料は、20万円ぐらいw

だから、ハローワークのIT 講座でも、奴隷になる2次請け以降に、就職しないように言われる。
Javaの平均年収が600万円なら、300万円の奴隷と、900万円の大企業の奴隷使いがいる。
元々、大企業の人は、給料が良いだけ。
給料は言語に関係ない。労働形態による!

抜きを警戒する人は、派遣なら3割抜かれて、後は自分の給料になるけど、
仕事がない期間の保証がない。
それか、フリーランスのエージェントで、1割ぐらいの抜きを探すか

一方、Ruby などの自社サービス系は、多重請負構造じゃないから抜かれない

867 :
C/C++ 以外のほとんどの言語では、参照がコピーされるだけ!
インスタンスを作っていない

だから、実際のインスタンス数は、clone, dup, new された回数を、チェックすれば良い

868 :
土方系の仕事って何ですか

869 :
>>866
そんなRubyの平均年収は全言語中最低
https://tech.nikkeibp.co.jp/atcl/nxt/column/18/01068/111100004/

870 :
>>868
顧客に価値を提供すること

871 :
土方にはなるな
SIerにはなるな

872 :
しかし現実には大半のRubyistよりもSIerのドカタの方が給料は高いのであった

873 :
給料だけでもないやろ。
つーか、どうでもいいから。んな話は。

874 :
要件定義、外部設計を受注できるプライマリの
会社に行かないと高収入はないよ。
内部設計、プログラミングは下流工程だから下請けに流される。

3割抜くとか言うが、粗利3割はどの業界でも普通だし。

875 :
言語を知っている。いや知っているだけで金になる仕事はないから

876 :
上流工程が、下級工程の給料を決める

だから、YouTube で有名なKENTA が、
クライアント側ではなく、サーバー側・構築運用へ行った

今世紀最大の起業家、Ruby でVagrant を作った、
HashiCorp のMitchell Hashimoto も、Go でTerraform を作った!

富・技術革新が集中する所に、Hashimoto は行く!

実際に、車のメーカーの企業の時価総額は変わらないけど、
アマゾン・Google などのサーバー屋は、100兆円企業になってる!

877 :
>>876
日本のIT企業はほぼ国内事業しかやってないし
規模も小さいからどうしても時価総額は上がらないんだろうね
あと大したことやってない

878 :
>上流工程が、下級工程の給料を決める
>クライアント側ではなく、サーバー側・構築運用へ行った

上流ってそういう意味か?ωωω

879 :
Amazonの売上の大半はEC
Googleの売上の大半は広告
どっちも実際には上物で稼いでいて、AWSやGCPの売上比率は15%程度に過ぎない
キチガイの目に映る世界と実態の間にはは大きな乖離があることがわかるだろう

880 :
まあ利益出してるところじゃなくて"売上"というのなら、
ECが一番やろうな。そりゃ

881 :
Windows10, WSL, Ubuntu 16.4 で、
libruby2.3, ruby2.3 の更新が来た!
Ruby2.3 は、もうサポート切れだけど、まだ誰かがサポートしてるw
Ubuntu チームか

882 :
ビルドしてるだけやろ。

883 :
Vagrant, Chef, RSpec, Serverspec などの、
DSL の書き方だけができる、ライブラリ・フレームワークはないの?

884 :
>>883
なんか面白そうだね?
どういう事?

885 :
環境の構築テストなどを、すごく簡潔に、宣言っぽく書いている

例えば、ファイル・ディレクトリなどを作る場合でも、エラー処理もなく、1行で書いてる。
Maven, Gradle も、こういう宣言っぽい感じかな?

便利だなと思って

886 :
k-sato_at_oiaxって実はもう死んでたりするの?

887 :
改訂4版 基礎 Ruby on Rails、黒田努・佐藤和人、2018/9/7

この本が、株式会社オイアクス監修だろ。
著者2人は、株式会社ルビキタスにも所属している

888 :
義務教育にrubyが組み込まれなかった時点でrubyは終わりだろ
ポジション取られたのがscratch
ついでにオブジェクト脳の本の社長起立プログラム、あれ最高にキモイ

889 :
Windows のPowerShell で、1-liner で、webrick サーバーを立てるのに、

上だとエラーになって、
下のように、%Q("./") でクォートすると、正常に動くのは、なぜでしょう?

どういうカラクリなの?

ruby -rwebrick -e 'WEBrick::HTTPServer.new(:DocumentRoot => "./", :Port => 8888).start'

ruby -rwebrick -e 'WEBrick::HTTPServer.new(:DocumentRoot => %Q("./"), :Port => 8888).start'

890 :
windowsで-e の後にシングルクォーテーション使ってるからでしょ

ruby -e 'puts "hello"'
でもエラーになるぞ

891 :
ちな
ruby -e 'puts \"hello\"'

ruby -rwebrick -e 'WEBrick::HTTPServer.new(:DocumentRoot => \"./\", :Port => 8888).start'
なら問題ない

892 :
ruby -e 'puts "hello"'
は、コマンドプロンプトではエラーにならないが、
PowerShell ではエラーになるw
ruby -e 'puts %Q("hello")'
は、コマンドプロンプト・PowerShell の両方で正常
ruby -e 'puts "hello"'
が、コマンドプロンプト・PowerShell から、Rubyに渡る際に、どう変換されるのか?
そのカリクリを知りたい

893 :
WSL使え
あるいはWindowsのコマンドプロンプトなら
ruby -e "puts 'hello'"

894 :
だから'使うなっつってんだろアホか

895 :
製造者がWindowsが憎いMicrosoftが憎いと言ってるのに、わざわざWindows上で使わなくても。

896 :
コマンドプロンプトのクォート解釈は、控えめに言ってメチャクチャだからな。
昔のものだし、しかたない。

それに比べたら、PowerShellははるかにまともで現代的。

897 :
まとめ。
Windows10 で、1-liner のruby -e で順に、1〜3 を実行した場合
1. 'puts "hello"'
2. 'puts %Q("hello")'
3. "puts 'hello'"
1〜3は、コマンドプロンプトと、WSL, Ubuntu 16.04 では、
hello, "hello", hello
PowerShell では、
エラー, "hello", hello

898 :
pythonは””も’’も意味一緒だが
rubyは””と''は微妙に意味違うよな

899 :
'puts %Q(hello)'
あるいは
"puts %Q(hello)"
で良いのに

900 :
>>899
まとめ。
Windows10 で、1-liner のruby -e で順に、1〜2 を実行した場合
1. 'puts %Q(hello)'
2. "puts %Q(hello)"
コマンドプロンプト・PowerShell、WSL, Ubuntu 16.04 のすべてで、
hello
と出力された!

901 :
>>898
微妙というか、ダブルクォートは中身を命令として実行し、
シングルクォートは中身を文字列として処理する。

全然違うぞ

902 :
‘‘
’’
””
‘’

眼力チェック

903 :
1-liner を、" " で囲むと「$ \ ` !」などの機能が働くので、
それよりも強いエスケープである、' ' で囲む

' ' で、すべての特殊文字を無効化して、シェルに解釈させないため

904 :
>>902
``

905 :
>>903
それが結局、シェルによるっつー話やろ。

906 :
rdoc の説明を読んでるけど、難しい

皆、自作ライブラリをrdoc用に書いてるの?

907 :
RDoc よりも、YARD の方が簡単かな?

908 :
配列に0から任意の整数を重複なく格納するメソッドを作ってみたんですが、戻り値がnillになってしまいます
どうすれば解決できますか?
def random_sort(array, n)
array = []
judgement_array = [false]
i = 0

while(i < n + 1)
array[i] = rand(n + 1)
k = 0
while(k < i)
judgement_array[k] = array[k] == array[i]
k += 1
end
next if judgement_array.any?
i += 1
end
end

array1 = []
p random_sort(array1, 9)

909 :
shuffle! shuffle!

910 :
>>908です
定義の最後の部分で戻り値を記述するのを忘れており
記述したら解決しました

911 :
ズコー

912 :
p [*0..9].shuffle

913 :
digitsメソッドが返す配列を元の数値に戻すには
自分で計算するしかないのかな
何かついになるメソッドがないかと
探してみたけどわからなかった

914 :
ないね

p [1, 1, 0, 1, 'hoge'].to_i(2) # => 11
みたいなString#のあってもいいよね

915 :
誤爆

みたいなString#to_iに相当するメソッドがあってもいいよね

916 :
これの逆を考えるか

123.to_s.chars.map(&:to_i).reverse
123.digits
#=> [3, 2, 1]

他には、Array#pack、String#unpack とか

917 :
自分で計算というか.reverse.join.to_iすればいいよね?

918 :
見た目シンプルだけど一旦文字列を経るのがモヤっとする
かといってreverse_each.inject(0){|v,d|v*10+d}とかやると何やってるのか分かりづらいしなあ

919 :
>>914
Math::BaseCalc - Convert numbers between various bases - metacpan.org
https://metacpan.org/pod/Math::BaseCalc

昔探したがperlにはあるがrubyにはないtpyhonにも無い
なんで無いのか分からないほど便利な関数なのになんで無いんだ?

920 :
tpyhonは知らんけどpythonにはnumpyでpackbitsがあるんやで

921 :
>>919

>>914が言ってるのは単なる基数の変換じゃないよ
基数の変換はto_s, to_iに2~36までなら直接渡せるからそれで済ませることが多い
もっと大きい基数が必要になってもinjectやmapで簡単に変換可能だから
いくつかgemあるけど人気ない

922 :
こういう基本的なものは、言語そのものに内蔵しないといけない
gem作っても流行らない

923 :
だな
これだけなら自分で書いた方が速いもんね

924 :
基本的でもないやろ。

925 :
2/8/10/16進数の変換は基本的だろうけど
それはInteger#to_s, String#to_i, Integer()で十分

遊びで作るようなプログラムを除くと
それ以外で必要なのってBase64くらいでそれは別途用意されてる

926 :
digits/undigits 作ってみた (baseに配列が使える)
https://ideone.com/QJgsBR

[1, 1, 0, 1, 'hoge'].to_i(2) # => 11
123456789.to_i([24,60,60]) #=> [9,33,21,1428]
[9,33,21,1428].undigits([24,60,60]) #=> 123456789

927 :
digits/undigits 拡張してみた (baseをbit数に出来る,負の数で符号拡張)
https://ideone.com/xvXVfv

0b0011_100_01.my_digits([4,3,2],1) #=> [1,4,3]
[1,4,3].undigits([4,3,2],1).to_s(2) #=> "1110001" -> 11_100_01
0b0011_100_01.my_digits([-4,-3,-2],1) #=> [1,-4,3] (-4:符号拡張)
[1,-4,3].undigits([4,3,2],1).to_s(2) #=> "1110001"

928 :
さて問題です。>>926-927を説明なしに理解できますか?

929 :
質問です
Ruby on Rails で SQLite は使えますか?
使えるならどうやれば良いですか?

930 :
>>929
https://www.google.com/search?q=Ruby+on+Rails+で+SQLite+は使えますか?

931 :
SQLite, MySQL, PostgreSQL の、3大DB が使える!
MariaDB は知らないけど

ただし、SQLite は開発用専門で、本番では使えない!

932 :
>>931
MariaDBもきっとだいたいだいじょうぶ。
まだまだMySQL互換だから。

933 :
>>931
SQLiteはiPhoneで重要な機能を提供してるのも知らないの?w

934 :
>>931 >>932
ドライバーが提供されてればMariaDBに限らずどのRDBでも使えるぞ

>>933
SQLiteは高い並行性が求められるWebアプリには適さない
Rails用のDBという文脈では>>931のSQLiteに対する認識は間違ってない

935 :
>>933
自分は文脈読めないバカですって自己紹介してるようなもんだな

936 :
まあ実際にはRailsアプリでSQLiteを使うことなんて無いから、使えないと考えても差し支えない
DBMSの癖に依存しないアプリなんて現実には不可能なので、テストであっても最初からプロダクションと同じDBMSを使えばよい

937 :
SQLite は、ブラウザがURL などを保存するのに使っている

ただ、Rails では開発用専門で、本番では使えない

938 :
Dockerが主流になるまでは、ぽん置きで使えるようになる簡単なツール程度だと使ってたな、俺は。

939 :
性能的にも信頼性的にも、御一人様用なんだろ。

940 :
C:/Ruby24-x64/lib/ruby/2.4.0/fileutils.rb を参考にして、
module 内 moduleの、DryRun みたいなモジュールを作った!
$stdout/$stderr で、出力先を切り替える

module MyFileUtils
@fileutils_output = $stdout

module_function
public

extend self
def f( *args, **options ) # 配列・ハッシュ
p @fileutils_output
@fileutils_output.puts( args, options )
end

module DryRun
include MyFileUtils
@fileutils_output = $stderr

module_function
public

extend self
def f( *args, **options )
super( *args, **options, noop: true, verbose: true )
end
end
end

MyFileUtils::DryRun.f( 1, 2, a: 8, b: 9 )
MyFileUtils.f( 1, 2, a: 8, b: 9 )

941 :
出力は、

MyFileUtils::DryRun.f( 1, 2, a: 8, b: 9 )

#<IO:<STDERR>>
1
2
{:a=>8, :b=>9, :noop=>true, :verbose=>true}

MyFileUtils.f( 1, 2, a: 8, b: 9 )

#<IO:<STDOUT>>
1
2
{:a=>8, :b=>9}

942 :
ここはお前の日記帳じゃねえんだよ

943 :
ビット演算のビット反転について質問なんですが
(~0b1010).to_s(2) の戻り値が"-1011"なのは何故ですか?
反転なので単純に "0101" となるか、補数表現なら"0110" だと思ったのですが

944 :
# ~n == -n-1
~0b1010 = -0b1010-1 = -0b1011

945 :
>>944
そもそものビット反転の定義を知らずに悩んでました
ご回答ありがとうございました

946 :
>>945
~(0b...00001010) = (0b...11110101) = -11

947 :
0b1010
32bitとして
0000 0000 0000 0000 0000 0000 0000 1010

~0b1010
1111 1111 1111 1111 1111 1111 1111 0101

= -1011

948 :
QiitaかHatenaでやれ

949 :
>>947
じゃ
1111 1111 1111 1111 1111 1111 1111 1111
を反転させると?

950 :
0000 0000 0000 0000 0000 0000 0000 0000

951 :
>>950
残念!

pry> ? Integer#~
or
irb> help ‘Integer#~’

952 :
>>951
今はintegerの話なんかしてない

953 :
そうか
0b1010 = 0000 0000 0000 0000 0000 0000 0000 1010
~0b1010 =1111 1111 1111 1111 1111 1111 1111 0101
(足すと)= 1111 1111 1111 1111 1111 1111 1111 1111

これに0000*7 0001(10進数で1)を足すと0になるので補数表現で10進数における- 1
だから  0b1010 + ~0b1010 = - 1
~0b1010 = - 0b1010 - 1

0b1010は10進数で10なので~0b1010 = - 11
これを補数表現なしの2進数で表すと
~0b1010 = - 1011
よって一般に ~n = - n - 1 と言えるのか

954 :
Rubyとは全く関係ない質問になって申し訳ない

955 :
有明セントラルタワー

痰吐きジジィのチンポが18階の(どこの島かは言わないよ)20代の女の娘のオRに
入って行くウゥウウウーーー!
http://o.2ch.sc/1lejw.png

956 :
>>952
予想外の言い訳でワロタww

957 :
>>953
2補数の符号反転は
-n == ~n + 1
だから
~n == -n - 1
# 上だけ覚えれば十分

958 :
補数表現には2の補数と1の補数があるって知らないのかな?
補数表現とだけじゃどちらかわからんだろ

それに反転はそのままビットを反転しただけのこと
これは1の補数表現と等しい
ビットを反転させるだけなんだからマイナスとか関係ない
マイナスが出てくるのは2の補数表現の話だけ

959 :
どうせ知らないと思うけど
10の補数も9の補数も8の補数もあるぞ

960 :
>マイナスが出てくるのは2の補数表現の話だけ

違う
それは君が2の補数の負数に慣れ過ぎてそう思ってるだけ
1の補数を負数とする定義も普通に存在する

961 :
1の補数・2の補数とかは、基本情報処理資格の初歩だろw

教科書を読め!

962 :
>>960
ふつうか?ホントか?

963 :
>>962
本当に普通ですね…

964 :
話としてふつうなのはわかるが、実装としては見たことがないなあ。

965 :
そりゃ便利な方が使われるわ
存在するのと使われてるか普及してるかは関係無い
utf-7とかおまいら使ってないやろ

966 :
IP のチェックサム -- 1の補数演算
http://4049.nwr.jp/comp/ip_csum.html

967 :
1の補数があまり使われない理由は
計算が面倒なんじゃなくて
0が+-二つあるのがもったいないからって理由だっけ

968 :
>>967
0が2つあるから循環桁上りの考慮が必要
その考慮がいらない2の補数のほうがALUがシンプルになるから

969 :
>>967
加算と減算を同じ回路で実行できるから。

970 :
あ、2の補数のほうが有利なところのこと。

971 :
すみません、初学者で苦労してまして・・
Rubyxlでエクセルのテンプレートを編集したく

そこで、特定のセルをコピーして特定のセルに貼り付ける
操作を行いたいのですが、ネットで検索しても全くヒットせず
有識者のかたいらっしゃれば、ご教授いただけましたら幸いです。。

972 :
Ruby で、Excel, Libre Office とか、やってる人いるの?

漏れは、CSV モジュールしか知らない

CSV で、データしか処理しない。
見た目の指定は、難しそう

973 :
Ruby で xlsx を編集する
http://secret-garden.hatena@blog.com/entry/2017/09/21/174348

rubyXL についての記事

@ を取り除いてください!
はてなブログなので一応、2ch のアクセス禁止を警戒して、URL を書きません!

974 :
>>973
ご丁寧に有難うございます!!

975 :
>>971
rubyxlというのは使ったことなくて知らないが、もっと低レベルなやり方
require 'win32ole'
でexcelシートの読み込みはやっている
win32oleでぐぐればやり方はなんとかなると思う

976 :
本当にxmlでやりたいんなら

まずはxmlの拡張子をzipにして解凍して
それっぽい本体のxmlファイルを探し出して
テキストファイルで開いて見てみる

こりゃーRubyは関係ないな

977 :
ぶっちゃけ質問者の利益を最優先で回答すると
python で win32com 使うのが最善解

978 :
PythonではWindowsにも人権があるからな
本人が今後辛い思いをしないためにも、はっきり言うよ
Ruby村では、 ド ザ に 人 権 は な   い
出 て い け

979 :
WSLでRuby村に仲間入り♪

980 :
>>971
require 'rubyXL'
require 'rubyXL/convenience_methods'

book = RubyXL::Parser.parse('input.xlsx')
sheet = book[0]
sheet[0][0].change_contents(sheet[0][1].value) #B1の値をA1にコピー
book.save('output.xlsx')

書式をコピーしたい場合や計算式をコピーしたい場合は別途対処が必要
まとめてコピーしてくれる便利メソッドはないっぽいので必要なら自作
Windowsならwin32oleでCOM使ったほうが簡単

981 :
VBAの代わりに使うようなクライアントサイドの用途なら
Python + xlwingsが知ってる限りは一番使いやすい

RubyからもPyCallかませば使えるがExcel処理はPython + xlwingsで書いて
それをPyCall経由でやり取りするのが簡単

982 :
C#のがええんちゃうか?

983 :
>>981
Excelでちょっと始めて、データが大きくなってきたら、そのままpandasに移行。
もう勝ち目ないな。

984 :
>>983
ExcelとPandasの用途の違いも分からないのかw

最近のpython推しは低脳ばっかだなw

985 :
>>979
随分まえからCygWinでこの村には出入りしとるが
なーんも面白いもんなんか無いぞ?

986 :
rubyって全てがオブジェクトなところがいいですよね

987 :
メソッドはオブジェクトじゃないぞ

988 :
Ruby・・・値型はオブジェクトだが、メソッドはオブジェクトでない。
JavaScript・・・値型はオブジェクトではないが、メソッドはオブジェクト。
         ただし値型に対応するオブジェクト型が存在する。例 Number(1)

どっちが良いんだろうなw
値型はRubyの方が便利なんだろうけど、JavaScriptの方が最適化できるだろうし

989 :
どっちでいいよ。
使いやすければ。

個人的には、どっちもあんまりだけどな!

990 :
>>987
Methodクラスがあるよ

991 :
>>990
Methodクラスのオブジェクトはメソッドじゃないぞ

992 :
>>991
それがどうしたの?

Methodクラスのインスタンス(=オブジェクト)は
メソッドとして扱うことができる

993 :
>>992
>>986の言っていることは間違っているということを指摘しているだけで実用に関しては名にも言及していないのにお前はなんでそんな必死なの

994 :
ここまでの流れを関数型言語スレに当てはめると、こんなところ

>>986:モダンな関数型言語において、すべてが第一級市民なところがいいですね
>>987:いや、関数適用は第一級市民じゃないぞ
>>990:関数 apply 定義すればいいよ
>>991:関数 apply は適用じゃないぞ

- fun succ x = x + 1;    (* 関数 succ を定義 *)
val succ = fn : int -> int
- succ 2;    (* 関数 succ に 1 を適用 *)
val it = 3 : int    (* 2 + 1 = 3 により、結果は 3 *)
- fun apply f x = f x;    (* 関数 apply を定義 *)
val apply = fn : ('a -> 'b) -> 'a -> 'b
- apply succ 2;    (* 関数 apply を介して、関数 suuc に 1 を適用 *)
val it = 3 : int    (* 結果は同じ *)

995 :
>>986「rubyって全てがオブジェクトなところがいいですよね」
>>987「メソッドはオブジェクトじゃないぞ」
>>990「Methodクラスがあるよ」 ←は?
>>991「Methodクラスのオブジェクトはメソッドじゃないぞ」
>>992「それがどうしたの?」 ←は?は?は?

マジで意味不明だわコイツ
馬鹿すぎる

996 :
>>993
間違っているという指摘、そのものが誤りだということ

モダンな関数型言語において、すべての値(object)は第一級市民であるが
値と値との関係である適用は値ではない
したがって、そもそも値ではない適用を第一級市民ではないと否定する主張が誤りである
そんなの当たり前だよね

同様に、純粋オブジェクト指向言語において、すべてはオブジェクトであるが、
オブジェクトとオブジェクトとの間の関係であるメソッドはオブジェクトではない
したがって、そもそもオブジェクトではないメソッドを、あえて否定する>>991が誤りではないかと

たとえば、>>986 とそれにに対する反論である>>987 を改ざんして:
  986 rubyって全てがオブジェクトなところがいいですよね
    (ただしメソッドがオブジェクトなのは常識ですから、あえて言及しませんけど)

  987 コメントはオブジェクトじゃないぞ

だったとして、それでもなお>>987を擁護する?

997 :
はいはい
本物の障害児やんこいつ

998 :
間違いをちょっと指摘しただけでガイジに粘着されたでござる

999 :
「素数は全部奇数だよ」
「いや2は偶数だろ」
ってやりとりに文句付けてるのと一緒だからなお前

1000 :
1000

1001 :
2ch.scからのレス数が1000に到達しました。

攻守最強のプログラミング言語は?
すべての言語を判定する計算機構
【安定版】ActiveBasicその12【4.24】
【普通のやつらの】 Arc Language 0 【上を行け】
JavaScriptは消滅すべきだったよな
【GPGPU】くだすれCUDAスレ part8【NVIDIA】
【Java標準GUIライブラリ】 JavaFX スレッド
COM
【PHP】下らねぇ質問はここに 9
プログラマー目指してるんだが色々と教えてくれ
--------------------
BTで拾えるアニメ 101
【チャーター1便】ウイルス検査を拒否した2人の主張「自分は症状がないから」「日本に帰国したのだから家に帰りたい」 ★8
【名無し奥も○○奥も】 気楽に井戸端会議 6905【みんな来い】
【雅楽】龍笛専用スレ【横笛】
大学長距離選手の進路 Part10
\(^o^)/続・Flashが強制終了したらageるスレ
【トコチコ】ベビーザリゾン2【いちご】
ガンパレード・マーチ74
鶏皮の料理のスレ
【アニメ】ララァにはいつでも会いに行けるから……ニュータイプもダメにするクッション登場!
すみすみ〜まったりパズル〜7匹目
旅に一つだけ携帯する調味料と言ったら?
【カワウソ】外来種導入問題【オオカミ】
...... 海外鉄道風俗紀行のスレですよ ......
ps4はなぜswitchに勝てないのか?
┫CRAZY┨布袋寅泰の音について語る 34┠GUITAR┣
【Soup.読モ】篠原真衣【WBC2006】
【多角】ダブルヒロインってどう?【関係】Part54
スターホース2.主戦場アドアーズ錦糸町
【恋する小惑星】真中あおはムラムラするかわいい
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼