Ruby 初心者スレッド Part 63at TECH
Ruby 初心者スレッド Part 63 - 暇つぶし2ch700:デフォルトの名無しさん
18/08/12 02:01:02.80 evL76NL4.net
>>577
>Rubyは第一級関数ではないという致命的な欠陥がある

JSとは異なり、Rubyだと関数は一級市民ではない」という指摘を
具体的なコードで示したのは、おそらく自分が最初だと思うけど:
 スレリンク(tech板:210番)/
そこでもカキコしたように「制限」であって「致命的な欠陥」ではないんだよね
>>670でも書いたように、一級市民としての関数が重要になるのは
メソッド(or 関数)の引数値として匿名関数を渡すケースだけど、
Ruby ではまさにその目的のためブロック引数という特殊な構文が用意されている
もし反論があるなら、具体的なコードで示したほうが理性的ではないかと思われます

701:デフォルトの名無しさん
18/08/12 02:10:52.79 evL76NL4.net
>>671
関数型プログラミングを実践すると自然に匿名関数を多用することになるわけですけど、
JS はいちいち function とタイプしないといけないから煩わしい、という意味です
たとえば ML族の Standard ML だと fn、同 OCaml だと fun、Haskell に至っては
¥ が匿名関数を表すキーワードです
ここまで「JavaScript による関数型プログラミング」が普及し常識になった現時点で
振り返れば、function ではなく fn とか fun という予約語にできなかったのか?と
なお、関数宣言のキーワード function は、それが宣言を目立たせる意味で長いキーワードを
採用したと考えれば、納得できるのですけどね

702:デフォルトの名無しさん
18/08/12 02:47:33.34 2UQfVx23.net
Ruby にはブロックスコープがあるし、
関数スコープでは、関数外部からの変数を通さない
Rubyの偽は、false, nil の2つだけ
Rubyは厳格だけど、JS, Python, PHP などは、ややこしい

703:デフォルトの名無しさん
18/08/12 08:39:08.05 PenCp7yX.net
>>673
> JS はいちいち function とタイプしないといけないから煩わしい、という意味です
なるほど。ではこのコードのどこにfunctionがあるのでしょう?
var materials = [
'Hydrogen',
'Helium',
'Lithium',
'Beryllium'
];
console.log(materials.map(material => material.length));
// expected output: Array [8, 6, 7, 9]

704:デフォルトの名無しさん
18/08/12 10:53:04.11 avkK3Y0e.net
ruby狂信者に「他言語では…」って話しすると黙りこくって見下すのは経典に書いてるのか?
どんなruby狂信者に聞いてもど�


705:「つも同じ精神なのがものすごく気持ち悪い アレなんなんだろうな



706:デフォルトの名無しさん
18/08/12 13:10:26.06 Z9n0yF1g.net
Rubyは左翼言語だからね

707:デフォルトの名無しさん
18/08/12 13:15:59.90 rtSL/abo.net
>>664
見下される側なのにな

708:デフォルトの名無しさん
18/08/12 13:22:05.89 rtSL/abo.net
>>670
rubyに関する内容がヤバイんじゃなくて
archive。fo
がだめなだけ

709:デフォルトの名無しさん
18/08/12 15:02:35.22 YGBUsYMx.net
>>675
それ、もうブラウザでも使えるんだっけ?
JavaScriptは新機能を使っていいかどうか、いちいち考えないとイカンのがめんどくさい。
なおRubyも、バージョンのよる差異がうざい模様。

710:デフォルトの名無しさん
18/08/12 15:37:44.45 f+bxV/sn.net
rubyって昔複数引数取る関数
foo bar baz
って書けたよね。
でも今は
foo bar, baz
だよね。

711:デフォルトの名無しさん
18/08/12 15:50:08.86 ZHEExUj+.net
>>681
1.8.7でも foo bar baz は foo(bar(baz)) なんだね

712:デフォルトの名無しさん
18/08/12 16:22:12.92 evL76NL4.net
>>675
失礼しました、ES2015(ES6)で導入されたアロー関数ですね
ということで、>>670 の:
>・匿名関数の function() は煩わしい
という項目に関しては取り下げます

>>680
調べてみると、主要なブラウザの最新版であれば利用できるようです
まあ JS も Ruby も新機能の扱いを「めんどくさい」とか「うざい」と
感じることはあります
ただし、どちらも「後方互換性の維持」という言語進化の基本原則を
遵守しているのは共通していますから「新機能を使わない」という
選択肢も残されているわけです

713:デフォルトの名無しさん
18/08/12 16:28:13.10 fdgGBvne.net
bar が関数じゃなければいい

714:デフォルトの名無しさん
18/08/12 16:28:29.68 evL76NL4.net
>>679
情報提供、ありがとうございます
MANGO板にて特定のページが規制されているのではなく、
サイト全体が規制されていることを確認できました
・NGワード絞り込みスレッド★118
 スレリンク(mango板:324番)-326/

715:デフォルトの名無しさん
18/08/12 16:34:41.05 evL76NL4.net
>>681
昔って、いったいいつの時代なんだろう
自分は 1.6 の時代だからかれこれ20年は使ってるけど、
foo bar baz と書けたという記憶が無い
もしかすると 1.4 とかそれ以前には書けたのかな?
興味深いね

716:デフォルトの名無しさん
18/08/12 18:33:45.33 YGBUsYMx.net
>>683
JavaScriptはともかく、Ruby は「後方互換性の維持」を遵守しないぞ。
バージョンアップは、過去のコードをだいたい壊す。
次も、文字列の原則immutable化が控えているだろ。

717:デフォルトの名無しさん
18/08/12 18:46:02.88 f+bxV/sn.net
それはjs以外たいていみんなそうなんじゃ?pythonしかり。

718:デフォルトの名無しさん
18/08/12 18:50:42.36 U04Z7MLo.net
>>168
今どきにbabelも使わずフロント開発してるところなんて業務系SIerくらいしかないでしょ

719:デフォルトの名無しさん
18/08/12 18:59:19.04 U04Z7MLo.net
>>683 のミス

720:デフォルトの名無しさん
18/08/12 22:37:17.71 YGBUsYMx.net
>>688
互換性維持の優先が高い言語はあるぞ。
C,C++,C#,Perl5はずっと更新されてきてるが、過去のコードを壊したことがほとんどない。
RubyやPythonと違って、システムの重要なところを担ってる自覚がある模様。

721:デフォルトの名無しさん
18/08/12 22:37:51.94 evL76NL4.net
>>687
>JavaScriptはともかく、Ruby は「後方互換性の維持」を遵守しないぞ。
いや、Ruby は(も?)新機能の導入には保守的ですよ
たとえば Ruby の特徴である既存のクラスの振る舞いを後から上書きできる
オープンクラス、これには利点と欠点が共存してるけど、これに対応しようとする
refinement の提案は「後方互換性の維持」を理由に却下され続けたけど、
その壁を乗り越


722:えてようやく 2.1 で採用された もしも遵守しない例があるなら、具体的なコードで示してね(>>675 みたいに) >次も、文字列の原則immutable化が控えているだろ。 え、frozen_string_literal オプションがあるでしょ? >>688 いやぁ、バージョンアップしたら Hello world すら構文エラーになる Python みたいな 言語などとは一緒くたにされたく無いですね ・Rubyの設計上の欠点とは何か?  https://mevius.5ch.net/test/read.cgi/tech/1413113999/123-126/ Python2 の時点ですら全プログラミング言語でも人気トップ10、スクリプト系言語に限れば 圧倒的に首位を独走というメジャーな言語が、Hello world すら構文エラーになるという 基本原則「後方互換性の維持」を頭から無視したバージョンアップを断行するなんて、 過去のプログラミング言語の歴史を振り返ってもあり得なかった歴史的快挙(暴挙?)ですよ とうていマイナー言語の Ruby なんかじゃあ到底まねできないですわ



723:デフォルトの名無しさん
18/08/12 22:53:39.94 YGBUsYMx.net
>>692
結局、互換を壊してるじゃん。w
そんなのは保守的と言わないんだよ。
多少の不満は飲み込んででも、過去のコードを重視しないといけない。
オプションで選択できるとか、いいわけにならん。
例が知りたきゃググれ。
スコープとかメソッドとかいろいろあって、思い出すのもバカらしい。
ま、それがRubyの道なんだろうから、それはそれでいいんだよ。
ヘンに言い繕わずに、互換性は低いと冷静に受け入れてれば。

724:デフォルトの名無しさん
18/08/12 23:37:02.17 f4ISMjBp.net
現実無視の机上の空論w
昔のC/C++コードを一切の修正なしで再利用できるケースが実際にどれだけあるというのだ

725:デフォルトの名無しさん
18/08/12 23:42:34.82 2UQfVx23.net
>>683
JS のアローと、function()無名関数は、スコープ・this の挙動が異なる
非同期処理などで異なる。
別のもの
JSは、Rubyの影響を受けて、ドンドン変化していく

726:デフォルトの名無しさん
18/08/13 01:14:37.00 0A70z83v.net
>>694
え?w

727:デフォルトの名無しさん
18/08/13 05:17:38.38 LxScEq40.net
>>693
>オプションで選択できるとか、いいわけにならん。
では、以下のコードを python3 で動かす方法はあるんですか?
 スレリンク(tech板:126番)/
え、オプションすら存在しないのぉ???
オプションすら許さない >>693氏のオレ様基準に従えば、
いいわけ以前の「後方互換性の断絶」であり「致命的な互換性の問題」ですね

>例が知りたきゃググれ。
>スコープとかメソッドとかいろいろあって、思い出すのもバカらしい。
え、これだけ「Rubyはゴカンセイガァー」と騒いでおいて、
ご自身では具体的なコードすら書けないんですか?
情けないですね、自分ならスコープやらいくつかRubyに関する
「些細な互換性の問題」を示してあげることもできるんですけど

>ヘンに言い繕わずに、互換性は低いと冷静に受け入れてれば。
いやぁ JS と比較すれば互換性は低いですよ
あちらはECMAScriptという国際標準の強い縛りがありますからね
でも Hello world すら動かなくなる最底辺 Python と比較すれば遥かに高い
そもそも具体的なコードも示せないくせに、
ナゼか「上から目線で」オレ様理論を押し付けるのは、
Rubyアンチに共通する性癖ですね

728:デフォルトの名無しさん
18/08/13 08:54:49.38 aWjwgJVg.net
Selenium WebDriver を使って、Nokogiri で、DOM を構築して、
JavaScript(JS) を使って、そのDOMで、body 以下を更新しようとしたが、エラーになる
つまり、DOMの構築には、JSではなくNokogiriを使った。
なるべく、JSではDOMを構築したくない。面倒だから
p inner_body = %(<div class="thread">あ</div>) #=> "<div class=\"thread\">あ</div>"
jsCode = <<"EOT"
var element = document.querySelector('body');
element.innerHTML = "#{ inner_body }";
EOT
driver.execute_script jsCode # JavaScript を実行
ただし、下のように書くと、body以下は正常に更新される。
element.innerHTML = '<div class="thread">あ</div>';
違いは「\"thread\"」の、ダブルクォーテーションのエスケープなのかな?
Nokogiriで構築したDOMを、JSにどうやって渡せば良いのか?

729:デフォルトの名無しさん
18/08/13 09:17:49.80 TQG/Mzv/.net
> Nokogiriで構築したDOMを、JSにどうやって渡せば良いのか?
うん、でもいま面倒なことになってるよね?

730:デフォルトの名無しさん
18/08/13 12:07:18.53 BGJ7CoIJ.net
>>686
試してみようと思ったんだけど1.6より前のバージョンどっからダウンロードすればいいんだ…
URLリンク(www.ruby-lang.org)

731:デフォルトの名無しさん
18/08/13 13:11:20.37 0A70z83v.net
>>697
Rubyアンチアンチは、だからめんどくさいんだよな。
そんなに必死にならんでもええよ。w

732:デフォルトの名無しさん
18/08/13 20:08:09.68 1mtdXF6K.net
それがルビリスト
皆呆れてるだろうが
個人的にすごく良い流れなので
もっと頑張れ

733:デフォルトの名無しさん
18/08/13 20:18:46.74 1mtdXF6K.net
一言で言えば左翼と同じメンタル
何故そうなるかは長くなるから書かないけどな

734:デフォルトの名無しさん
18/08/13 21:11:49.15 xCIuVPx6.net
政治の話は無駄に荒れるからやめろ

735:698
18/08/13 23:52:36.83 aWjwgJVg.net
p inner_body = %(<div class="thread">あ</div>) #=> "<div class=\"thread\">あ</div>"
以下は、jsCode を、puts, p したもの
(A) element.innerHTML = "#{ inner_body }"; の場合
var element = document.querySelector('body');
element.innerHTML = "<div class="thread">あ</div>";
"var element = document.querySelector('body');\n
element.innerHTML = \"<div class=\"thread\">あ</div>\";\n"
(B) element.innerHTML = '<div class="thread">あ</div>'; の場合
var element = document.querySelector('body');
element.innerHTML = '<div class="thread">あ</div>';
"var element = document.querySelector('body');\n
element.innerHTML = '<div class=\"thread\">あ</div>';\n"
A は、" の対応が崩れるから、ダメ。
一方、B は正常に処理される
どうやれば、変数をBのように展開できるのか?

736:デフォルトの名無しさん
18/08/14 00:10:36.77 ALsxTVnQ.net
'#{ inner_body }'

737:698
18/08/14 00:39:13.09 6NKcX7Ow.net
p inner_body = %(<div class="thread">あ</div>) #=> "<div class=\"thread\">あ</div>"
以下は、jsCode を、puts, p したもの
>>706 の、
(C) element.innerHTML = '#{ inner_body }'; の場合。
>>705 の(B) と全く同じになった!
var element = document.querySelector('body');
element.innerHTML = '<div class="thread">あ</div>';
"var element = document.querySelector('body');\n
element.innerHTML = '<div class=\"thread\">あ</div>';\n"
"#{ inner_body }"
'#{ inner_body }'
まさか、シングルクォーテーションで変数展開できるとは!
神!

738:698
18/08/14 00:47:37.74 6NKcX7Ow.net
5ch ブラウザみたいに、スレに書き込んである画像のURL を、
自動的に、<img> に展開して表示するものを自作している
Selenium WebDriver を使って、Nokogiri で、DOM を構築して、
JavaScript(JS) を使って、そのDOMで、body 以下を更新しようとしている
わざわざ、Sinatra, Vue.js などを使うまでもない。
標準添付ライブラリのERB は、使っても良いかも

739:デフォルトの名無しさん
18/08/14 10:11:41.38 UwXfpacN.net
>>703
なるほど
腑に落ちる意見

740:デフォルトの名無しさん
18/08/14 10:12:57.81 QAItGFSf.net
自演乙

741:デフォルトの名無しさん
18/08/14 19:28:42.42 0jKmoemw.net
Action Cableを使用してるアプリってもうある?

742:デフォルトの名無しさん
18/08/14 20:22:35.95 cWcfj41B.net
BIOSが夏時間に対応していると、OSの時刻までずれてしまう
これ比較的最近の話だからな

URLリンク(naitaku.hatenablog.com)
> RTCにはタイムゾーンや夏時間を扱う仕組みは一般にはありませんので、
> OS側でタイムゾーンや夏時間を管理することになります。
> (実はRTCに夏時間を扱う仕組みがあって誤発動したというのが今回の原因なのですが)
> RTC の Daylight Savings Enable (DSE) という機能について
> 現代のOSでは上で述べたようにタイムゾーンや夏時間を管理しているのですが、
> 昔(DOSとかの時代?)はOSはそんな賢い機能はなくRTCの時刻がそのままローカルタイムでした。
> そんな時代に夏時間を扱うためにハードウェア的に実装されたのが DSE という機能です。
> またブコメで「日本のタイムゾーンにしていれば夏時間は自動的にオフになるはず」というものがありましたが、
> DSEの設定値はOS上の夏時間の設定とは無関係です。OSは上で述べたように夏時間を管理していますので
> RTCが勝手に1時間進んだり遅れたりすることは想定していないはずです。
> したがって現代のパソコンではDSEは無効になっているのが正しいです。

743:698
18/08/14 23:59:51.71 6NKcX7Ow.net
p inner = %(a"あ"b) #=> "a\"あ\"b"
outer = <<"EOT"
'#{ inner }'
"#{ inner }"
'X'
"Y"
EOT
以下は、outer を、puts, p したもの
'a"あ"b'
"a"あ"b"
'X'
"Y"
"'a\"あ\"b'\n
\"a\"あ\"b\"\n
'X'\n
\"Y\"\n"
つまり、#{ inner } だけが変数展開されているだけ。
ヒアドキュメント内の、', " は、そのまま表示されているだけだった

744:デフォルトの名無しさん
18/08/15 08:50:55.79 WdeJX/bN.net
Ruby FFIを使ったエクステンションの作り方
URLリンク(kazegusuri.hateblo.jp)
FFI(Foreign function interface)
コンパイルがいらない、多言語を呼び出すためのインターフェイス
RubyにおけるFFIは、libffi
こんなのがあるのか
Windows で、クリップボード機能を使おうとして、
win32-clipboard gem の文書を見ていて、FFIを見つけた

745:デフォルトの名無しさん
18/08/15 09:06:42.26 pqG57C1I.net
だからなんだよいちいちうるせえな
リファレンス全部読んでこい

746:デフォルトの名無しさん
18/08/15 23:20:26.11 0fz536jj.net
なにか嫌なことでもあったのかな

747:デフォルトの名無しさん
18/08/16 08:21:45.86 IiF9TGTT.net
str.chomp!.strip!
末尾の改行を削除して、先頭末尾の空白を削除するのを、メソッドチェーンで書いたけど、
chomp! は、改行がない場合に、nil を返すのでエラーになる
メソッドチェーンに出来ないから、分けて書くしかない
str.chomp!
str.strip!
nil を返す可能性があるものは、メソッドチェーンに出来ない

748:デフォルトの名無しさん
18/08/16 08:53:49.22 6O1Mze69.net
&.

749:デフォルトの名無しさん
18/08/16 09:05:20.86 IiF9TGTT.net
拡張子で、画像ファイルかどうかを判別する際に、
大文字の拡張子を、downcase で小文字に変換して判別していますが、これで良い?
それとも、String#casecmp を使う方が良いの?
どう書けば良いの?
file_extname = ".JPG"
# . を削除して、小文字にする
file_extname.delete!(".").downcase!
extnames = %w(png jpg jpeg gif) # 画像の拡張子
extnames.include? file_extname # 含まれている?

750:デフォルトの名無しさん
18/08/16 09:50:44.21 QAd5iU0A.net
>>717
str = " \tfoo\t \n" #=> " \tfoo\t \n"
str.strip! # => "foo"

751:デフォルトの名無しさん
18/08/16 13:00:48.11 JKxb8y7B.net
>>719
file_extname.delete!(".").downcase! は
file_extname.delete!(".")&.downcase!
とでもしないとfile_extnameにドットがない時にエラーになる
ドットから始まることが分かってるなら
hoge = file_extname[1..-1].downcaseとでもすべきだし
ドットから始まることが分かってないなら
file_extname[/\.\K[^.]+$/]的なことでもしないとだめ
そもそもfile_extnameを破壊的に変更するのがそもそも気持ち悪い
extnames = %w[jpg gif png]
path = '/hoge/fuga/hage.jpg'
file_extname = File.extname(path)
extnames.include?(file_extname[1..-1].downcase) if file_extname[0] == '.'

752:デフォルトの名無しさん
18/08/16 13:13:38.65 JKxb8y7B.net
ていうかこのくらいの処理なら正規表現で書くわ
file


753:s = [ '/hoge/fuga/piyo.jpeg', '/hoge/fuga/piyo.piyo.JPg', '/hoge/fuga/png', '/hoge/fuga/gif.txt' ] files.each {|f| p f.match?(/\.(?:jpe?g|gif|png)\z/i) } #=> true true false false



754:デフォルトの名無しさん
18/08/16 17:05:40.50 dflIWUnx.net
Ruby de GUI for Windows
RScript(ActiveScriptRuby)→良くも悪くもHTA、要インストール、最新版に追従していない
wxWidgets(wxRuby)→高機能、環境構築が面倒、機能によっては罠があったり不安定だったり、コントロール類のデザインに手間がかかる
Tcl/tk(Ruby/Tk)→導入が容易、機能面はwxRubyに劣る、コントロール類のデザインに手間がかかる
fiddle(WindowsAPI)→何でもできる、配布サイズが小さい、茨の道
(Webブラウザ組み込み型→現状なし?、出てきたとしても配布サイズの肥大化は不可避)

755:デフォルトの名無しさん
18/08/16 18:56:52.96 wbWtiV7F.net
>>723
FXRubyとかはどうなん?

756:デフォルトの名無しさん
18/08/16 20:14:41.09 R55yZ6lr.net
拡張子発明したやつ天才だわ
名前にファイルの種類を埋め込むとか一見ダサそうだけど理にかなってる
一方でマックバイナリは糞だわ

757:デフォルトの名無しさん
18/08/16 20:28:51.12 yarUS0V8.net
RubyやRailsの認定試験は役に立つ?

758:デフォルトの名無しさん
18/08/16 20:33:53.69 R55yZ6lr.net
拡張子の何が凄いって
あくまでそれが何であるか種類を表しているだけで
どう扱われるかはOSの設定次第ってところ
これがRubyみたいな古い考えの頭のやつがやると
ファイルは自身がどう扱われるべきか知っているべき
とかアホみたいなこと考えだして
マックバイナリみたいな糞が出来上がる
だが実際には拡張子ぐらいが一番使いやすい

759:デフォルトの名無しさん
18/08/16 23:39:01.83 IiF9TGTT.net
>>721
>file_extname.delete!(".")&.downcase!
&. こういう演算子が出来たのか
Ruby の &. と #try の違い
URLリンク(secret-garden.hatenablog.com)
Ruby 2.3 で、Safe Navigation Operator(&.)という新しい演算子が追加された

760:デフォルトの名無しさん
18/08/17 23:46:41.00 Ho6XjkKO.net
シンボルリテラルってなんのためにあんの?

761:デフォルトの名無しさん
18/08/18 00:19:00.23 Aune6CZV.net
>>729
メタプログラミングのため
ソース上に現れる変数名やメソッド名とかってソースを解析する時点で全て把握できてるわけだから、
それを予め数値に置き換えてしまうことで効率よく扱おうという伝統的なコンパイラ技法があるんだけど、
Rubyはメンバ検索の動作を独自に定義できたりするので、その置き換え後の数値をRuby上のデータとして扱えなければならない
そのために用意されてるのがシンボルオブジェクトでありシンボルリテラルである
一方で、数値じゃなくて変更不能な文字列を使えばそんなもん要らなくね?という説もあって、実際Matzもそうすべきだったと失敗を認めている
というわけで、今となっては変更不能でちょっと不便な文字列のようなもの、以上の意味はない

762:デフォルトの名無しさん
18/08/18 00:44:14.43 Aune6CZV.net
ちなみにRails専用DSLに成り下がって以降のRubyではRailsの影響でシンボルをキーにしたHashを引数に渡すということがよく行われるけど、
これはクォーテーションより:の方が書くのが楽だからとか、
文字列よりシンボルをキーに使ったほうがハッシュの検索が速いと信じられていた(今のRubyではこれは正しくない)からといった
あまり本質


763:的でない理由によるもので、シンボルじゃなくて文字列でも何の問題もないよ



764:デフォルトの名無しさん
18/08/18 01:15:49.75 oFUm5YlZ.net
>>729
不変性と同値時の同一性が保証された文字列は便利でよく使うから
不変だと特にハッシュのキーとして安全に運用できる
多数出現する同値を同一にできるとメモリが節約できる

765:デフォルトの名無しさん
18/08/18 13:39:59.13 L9SCjUBJ.net
>シンボルじゃなくて文字列でも何の問題もないよ
うわあああああw

766:デフォルトの名無しさん
18/08/18 14:45:55.55 h7OdrOPI.net
frozenになるだけでオブジェクトは別に作られるのかと思ったらこれじゃ本当にSymbolと変わんねえなw
でもSymbolもなんだかんだ好きだけど
ruby --enable=frozen-string-literal -e 'p 1000.times.map{"foo".object_id}.uniq'
#=> [20966820]

767:デフォルトの名無しさん
18/08/18 14:49:31.46 h7OdrOPI.net
あもともとfrozenな文字列は使いまわしてたのか
$ ruby --disable=frozen-string-literal -e 'p 1000.times.map{"foo".freeze.object_id}.uniq'
[20983260]

768:デフォルトの名無しさん
18/08/18 16:08:23.94 Aune6CZV.net
>>733
MatzがしれっとSymbolをStringのサブクラスに変更しようとしたの知らんのか
結局互換性の問題でMRIメンバーから大反対されて却下されたけど、
今Rubyを完全に再設計するならまず間違いなくシンボルリテラルは単なる文字列になり、Stringは常に変更不可になる
Railsのパフォーマンス改善のためにRubyに導入されたシンボルGCなんて、
それこそ本来のシンボルの意味からすると全く必要ないはずの馬鹿げた機能だ
もはや誰が見てもSymbolは事実上単なる文字列

769:デフォルトの名無しさん
18/08/18 18:57:05.66 IyhzoKxX.net
最下位bit使って
整数の範囲を減らしてまで
シンボル空間作ったのに
互換性無いですかそうですか

770:デフォルトの名無しさん
18/08/18 21:19:08.78 NYofKyoT.net
>>731
>メタプログラミングのため
後半の内容とは何ら関係しない
覚えたてのメタプログラミングって単語を使いたいだけちゃいますか

>Railsの影響でシンボルをキーにしたHashを引数に渡すということがよく行われるけど、
Railsで最初にRubyに触れた人にとってはそう感じるだろうけど、
ハッシュのキーとしてシンボルを使うのはRails以前から普通だったよ

>>736
>Railsのパフォーマンス改善のためにRubyに導入されたシンボルGCなんて、
シンボルGC導入のきっかけは(ブルートフォース攻撃に対する)セキュリティ対策だよ
パフォーマンス改善のために導入された文字列のfrozenデフォ化とごっちゃにしてる

771:デフォルトの名無しさん
18/08/19 00:22:38.83 EuNb7t2q.net
>>735
String#intern

772:デフォルトの名無しさん
18/08/19 00:23:34.71 EuNb7t2q.net
>>736
ヤツはホンマ互換性を軽視する輩やな。。。

773:デフォルトの名無しさん
18/08/19 01:31:27.62 wM6XArJ0.net
Selenium WebDriver, Nokogiri を使って、文字列からHTML を作って、
それをJavaScript で実行して、DOM を更新しているけど、
こういう原始的なやり方で良いのかな?
もっと、ERB とか、Vue.js みたいな、UI コンポーネント指向の書き方はできないのかな?
doc = Nokogiri::HTML(driver.page_source)
content_wrapper = doc.at_css("#content") # 全体の枠
# 画像ノード
img_wrapper_str = <<"EOT"
<div class="img_wrapper"><img></div>
EOT
picture_urls.each do | pict_url | # 画像のURL
img_wrapper = Nokogiri::HTML::DocumentFragment.parse img_wrapper_str
img = img_wrapper.at_css "img"
img.set_attribute('src', pict_url) # 属性
img_wrapper.parent = content_wrapper # 親
end
jsCode = <<"EOT"
var elem = document.getElementById("content");
elem.innerHTML = '#{ content_wrapper.inner_html }';
EOT
driver.execute_script jsCode # JavaScript を実行

774:デフォルトの名無しさん
18/08/19 08:45:22.44 vb2L7br6.net
すいません、


775:プログラミングの世界に最近初めて入ったんですけど C++やろうとしたら別のスレでRubyとjava勧められたのでやろうと思ってるのですが Rubyはプログラム初心者に向いてますか? それと実行環境はVisualStudioを使えますか? この2点教えてください



776:デフォルトの名無しさん
18/08/19 08:50:30.37 5Q8kr7ts.net
>>742
Rubyは開発陣がWindowsアンチばかりでWindowsとRubyは極めて相性が悪い
初心者云々以前に、Macに乗り換える気がないならRubyは論外
WinでスクリプトならPythonにしよう
絶賛落ち目中のRubyよりよほど将来性があるし初心者にもわかりやすいしWinで使いやすいしVisual Studioでもサポートされている

777:デフォルトの名無しさん
18/08/19 09:23:19.37 f0B2PJq7.net
アホか初心者が戯れにやる程度ならrubyもpythonも大差ねえよ

778:デフォルトの名無しさん
18/08/19 09:52:05.30 wM6XArJ0.net
RubyInstaller for Windows がある。
エディタは、VSCode
ただし、Windowsで、irb を使うと、日本語でバグるから、
irb だけは、Windows10 なら、WSL でLinux(Ubuntu)側から使う
paiza.IO, codepad などのサイトで、ブラウザからプログラミングするのが簡単。
他には、progate という学習サイトもある
環境構築には、数十のLinux コマンドも覚えるべき。
絶対・相対パス、環境変数PATH の仕組みなども知らないと無理
ruby -v
例えばこういう、ruby のようなパス無しのコマンドを入力すると、
どういう仕組み・順序で、PC 内から、そのコマンドの実行ファイルのある場所を探し出すのか?
つまり、こういうOS の知識がないと、
コマンドプロンプト・PowerShell などのシェルを使えない
ほとんどの人は、これらの勉強ができず環境構築ができないから、
環境構築のいらない、Excel エンジニアになるしかない!
つまり、プログラマーにはなれない人!

779:
18/08/19 10:20:51.08 bW/fB7v7.net
>>742
C++ をやるんだったら Java にすればいいと思います

780:デフォルトの名無しさん
18/08/19 10:58:48.68 vb2L7br6.net
>>743
そうなんですか。Win10使ってるんですけどやめたほうがいいですか...
別スレでC++始めるならまずたのしいRuby 第5版、2016 とスッキリjavaやってからにしとけって言われたので
聞いてみたのですがあまりよろしい選択ではなかったですか。
色々調べてみるとrubyは簡単な言語の上位にランクインしてたので覚えやすいのかなって思ってたんですが
PythonはVisualStudioで出来るんですね。いいこと教えていただきありがとうございます。
>>745
一応VisualStudioでRubyもやれるんですか
LinuXはOS?ですか?あまり良くわからないんですが、かなり敷居は高そうですね……
paiza等もブラウザで出来るみたいなんですが入力とかクラスとかの機能が使えないみたいで
色々不自由しそうで、なるべく実行環境整えたいのですが、今の段階では厳しいですか。
教えていただきありがとうございます。

781:デフォルトの名無しさん
18/08/19 11:04:10.79 dO2iwij6.net
今の覚えるならpythonの方がいい
悪いことは言わない勝ち馬に乗れ

782:デフォルトの名無しさん
18/08/19 11:07:38.97 f0B2PJq7.net
>paiza等もブラウザで出来るみたいなんですが入力とかクラスとかの機能が使えない
そんなことはない普通に使える
実行環境構築に自信がないならブラウザコンソールからJavascriptやっとけ

783:デフォルトの名無しさん
18/08/19 11:08:29.44 vb2L7br6.net
>746
別スレで教えていただきjava環境導入出来ました。ありがとうございます!
せっかくお勧めの入門書2冊教えてもらったので両方の言語やろうかなって思って聞いてました
少しでもC++の理解が簡単になるならやっとこうと思ったんですけど無意味ですかね

784:
18/08/19 11:17:54.14 bW/fB7v7.net
>>750 無意味ではないですよ…



786:デフォルトの名無しさん
18/08/19 11:20:28.30 vb2L7br6.net
>>748
そこまで本格的にやる予定ではなくて,
別スレでプログラム0から始める奴がC++からやっても理解できない。
たのしいRuby 第5版、2016 とスッキリ分かるjavaやってからにしろ!って言われて
少し遠回りしてでもやろうと思ってたんですが、今聞いた感じだとあまり入門者がやる言語ではないみたいですかね…
pythonとjavaとりあえずやってみます。ありがとうございました

787:デフォルトの名無しさん
18/08/19 11:28:00.78 oQXHWYB7.net
C++やるつもりならなおさらPythonがおすすめだな
Pythonは設計思想が比較的C系に近いからC++やJavaにも馴染みやすいよ
RubyはRubyが最高だと信じて閉じ籠って他の言語やりたがらない人が多い

788:745
18/08/19 11:42:35.15 wM6XArJ0.net
「たのしいRuby」「スッキリjava」は薦めたのは、俺だよ
Windows のユーザー・システム環境変数の設定画面を使えないと無理。
この画面の環境変数PATH を、穴のあくほど見つめる。
新しく何を追加したのか
絶対・相対パスの違い。
これがわからないと、VSCode で、PowerShell から実行できない
cd, ls などの、基本的な20ぐらいのLinux コマンドも覚えるべき。
PowerShell でも、そのまま使えるから。
例えば「cd ..」これの意味がわからないと、PowerShell を使えない。
コマンドプロンプトはややこしいから、なるべく使わない方が良い
C++ なんて、5年以上先の話。
環境構築できないと無理
paiza.IO, codepad などのサイトで、ブラウザからプログラミングするのを薦める。
progate という学習サイトで学習する人も多い

789:デフォルトの名無しさん
18/08/19 11:46:50.09 ql2A++ig.net
この人アレな人なんでアドバイス無視していいよ

790:745
18/08/19 11:50:54.76 wM6XArJ0.net
「たのしいRuby」「みんなのPython」「スッキリjava」の3冊を読めばよい
「たのしい・みんなの」の2冊は双子。
ただし必ず、たのしいから読むこと!
みんなのから読むと、わからないから苦戦する
ただし、みんなのは、AI・機械学習しない人には、無駄が多い。
ウェブ系なら、たのしいRuby
HTML, CSS, JavaScript も必要

791:デフォルトの名無しさん
18/08/19 11:59:42.65 EuNb7t2q.net
今からJavaをするくらいなら、C#をしたほうが一億倍はいいと思うが。
とくにWindowsなら。

792:デフォルトの名無しさん
18/08/19 12:01:03.16 AHbKk0RR.net
>>742
プログラミング言語は道具だ。道具を使って何をしたいか(目的)が重要なのではないのかな
逆に目的が決まれば適したプログラミング言語も自然と絞られてくる
なんとなくならメジャーなのをやっておけとしか・・・

793:745
18/08/19 12:04:48.91 wM6XArJ0.net
例えば、C++ のロベールを読むよりも、
「たのしいRuby」「みんなのPython」「スッキリjava」の3冊を3回読む方が、
はるかに速く読めるし、得るものも大きい。
50時間もあれば、全部読める
一方、C++ で50時間使っても、ほとんど何も作れない。
やってみればわかるけど、時間の無駄
C/C++ などポインタがある言語は、すぐにバグるから、すごく時間を損する

794:745
18/08/19 12:52:39.81 wM6XArJ0.net
URLリンク(rubyinstaller.org)
Ruby Installer を使うなら、2.4 系を使う。
2.5 系は、まだ新しいから使わないように
irb は日本語でバグるから、使わないように。
使うなら、WSL でLinux(Ubuntu)側で、irb を使う
VSCode もインストールして、Rubyの拡張機能も入れてみれば?

795:デフォルトの名無しさん
18/08/19 13:14:24.10 CsoxUTBy.net
環境変数がわからないのはともかく自分で調べて理解できないレベルなら諦めろ

796:デフォルトの名無しさん
18/08/19 13:31:40.72 CkJFwlQB.net
これが参考になると思う
URLリンク(pbs.twimg.com)

797:デフォルトの名無しさん
18/08/19 13:35:43.71 plhuPGbS.net
web上では見たことあるけど
出版物上で観るのは初めて感

798:デフォルトの名無しさん
18/08/19 14:15:20.06 qqMgBYp8.net
なんやこれw

799:デフォルトの名無しさん
18/08/19 14:21:25.19 OBahve6K.net
プログラミング経験0ならこっちから始め�


800:スほうが良くないか? https://www.nhk.or.jp/school/programming/start/index.html



801:745
18/08/19 14:30:49.79 wM6XArJ0.net
言語の初心者用の本は、PCの初心者用の本じゃない!
言語の本はあくまで、その言語を知らないだけで、
環境変数とか、絶対・相対パスとか、cd, ls などの基本コマンド、
PowerShell の使い方などは、知っている事が前提
こういうOS の知識を、教えている本はない。
それを書けば、言語を説明するページが減るから、書かない
つまり言語の本は、PCの初心者を対象としていない!
既に、OS の知識はあって、その言語だけを知らない人向け

802:デフォルトの名無しさん
18/08/19 14:42:48.43 OBahve6K.net
そういう人のためにはお膳立ての澄んだIDEが一番良いんでない?
URLリンク(forest.watch.impress.co.jp)

803:745
18/08/19 14:46:26.87 wM6XArJ0.net
762 みたいな本を書いている奴は、勉強を何もわかっていない。
なぜ生徒が、プログラミングを嫌うか
言語には、勉強する順番がある。
小学生にいきなり、大学教育をしても無駄。
小中高大学と、個人の成長には、勉強する順番が重要。
知識を下から、積み重ねていかないといけない
1. 動的・軽量言語
Ruby, Python, JavaScript
2. 静的言語
Java, Kotlin, C#
3. ポインターのある言語
C, C++
今の大学教育では、C から教えているから、皆プログラミングはしょーもないってやめる。
これは、Rubyの女神・女優の池澤あやかが言ってる

804:デフォルトの名無しさん
18/08/19 15:14:41.19 CsoxUTBy.net
>>768
教養時代に必修科か準必修科目でRubyやったぞ
薬学とか農学部進学予定の奴までやってたのはかわいそうだったけど

805:デフォルトの名無しさん
18/08/19 15:33:42.02 aRJ7Tr37.net
>>753
つまり、Python信者は他言語スレまで出張してPython推しするほど必死だと

806:デフォルトの名無しさん
18/08/19 15:39:09.36 EuNb7t2q.net
>>769
今日日、農学志望の人はRubyくらい使う機会があるかもね。
集計統計とか農業IoTとかで。

807:デフォルトの名無しさん
18/08/19 16:00:26.64 wM6XArJ0.net
ラズパイでは、Python も良いけど
ウェブ系では、Ruby が強い。
Rails から、Vue.js, React も使える

808:デフォルトの名無しさん
18/08/19 16:15:56.38 +KX+Ofsb.net
ルビィストとか世界中が失笑してるから

809:デフォルトの名無しさん
18/08/19 16:29:07.49 CsoxUTBy.net
>>773
失笑って言葉の意味まちがってるぞハゲ

810:デフォルトの名無しさん
18/08/19 16:35:26.45 plhuPGbS.net
プッ

811:デフォルトの名無しさん
18/08/19 16:46:14.03 j789RV8B.net
>>770
言語なんか複数使えて適宜使い分けられて当然でしょ

812:デフォルトの名無しさん
18/08/19 17:01:32.24 aRJ7Tr37.net
>>743
つまりPython推しのためであれば、他言語スレでの荒らし行為も正当化されると
いやあPython信者って怖いですね

813:777
18/08/19 17:02:42.12 aRJ7Tr37.net
アンカミスを訂正:
 X:>>743
 O:>>776

814:デフォルトの名無しさん
18/08/19 20:07:29.27 xR7/CWZ6.net
俺はPythonよりRubyの方がずっと好きだけど
(Railsプログラマーを目指してるんでもなきゃ)
これから何か始めようって人には断然Pythonを薦めるし
自分のお気に入りだからってむやみにRubyを薦める奴の見識は疑うね

815:デフォルトの名無しさん
18/08/19 20:49:04.45 OBahve6K.net
CASL II/COMET IIでアセンブラの基本を学んでいるとポインタで死ぬことはなくなる。
序でに基本情報の試験にそのまま使える。
URLリンク(www.jitec.ipa.go.jp)

816:
18/08/19 21:12:05.24 bW/fB7v7.net
>>780
CASL なんて覚える気になりません、といって、x


817:86 のいい教科書がありませんね 誰か書いてほしい



818:デフォルトの名無しさん
18/08/19 22:30:32.56 aRJ7Tr37.net
>>779
つまり:
 俺はRubyよりPythonの方がずっと好きだけど
 (機械学習プログラマーを目指してるんでもなきゃ)
 これから何か始めようって人にRubyを薦めることもあるけど
 自分のお気に入りだからってむやみにPythonを薦める奴の見識は疑うね
ってことですね
Python信者の皆様、お勤めご苦労様です

819:デフォルトの名無しさん
18/08/19 22:56:05.02 xR7/CWZ6.net
>>782
そりゃひねくれすぎだろ…お前いったい何と戦ってんの?
ただでさえRubyの評判は落ち目なんだから
狂信者が必要以上に貶めるのはやめにしてほしいわ

820:デフォルトの名無しさん
18/08/19 23:09:03.67 wM6XArJ0.net
>>780-781
2人のイリノイ大学生が使った、LLVM に世界が飛びついたけど、
日本では既に情報処理資格に、仮想アセンブラ CASL2 があった
LLVM/Clang 実践活用 ハンドブック、出村成和、2014
詳説 Cポインタ、2013、オライリー・ジャパン
OSのすべての機能を学びたいなら、ムック本の
Linuxエンジニア養成読本、第3版、2016

821:デフォルトの名無しさん
18/08/19 23:56:53.17 /dQ+RHN7.net
>>752
プログラミングの基本って、
・変数への代入、関数(メソッド)の使い方
・配列、ハッシュ(連想配列)とかのデータ構造
・値の比較と条件分岐(if文とかswitch文)
・繰り返し処理(do while文とか)
こういうのだけど、これはどの言語にもあるものだから、
一度覚えればほぼそのまま使い回しがきく。
(if文じゃなくてif式、とか若干の違いを言語ごとに覚えるだけ)
あとは「オブジェクト指向」の考え方というか、
概念みたいなのを理解できてれば、
どの言語に移ってもそんなに苦労せず使えるようになる。
で、そういう基本は、C++でもJavaでもRubyでもPythonでもJavaScriptでも、
どれやったって学べるわけだけど、
最近は3DCGのアプリとか、機械学習とかのジャンルで
Pythonが採用されるケースが多いので、
ゼロから始めるなら使い道の多いPython、みたいな意見がどうしても多くなる。
(Rubyは使いやすい言語だけど、Webサイト構築以外での採用例があまりない)
けど、「自分のやりたいこと」がなにかを決めた上で、
「それを最短距離でできる言語はどれか」を
詳しい人に教えてもらって始めるのが一番おすすめ。
(自分のやりたいことがC++でないとできないなら、最初からC++をやるべき)
特にやりたいことがなければ、
本屋で各言語の入門書をいろいろ立ち読みして、
自分が理解できそうな言葉で書いてあるやつを選んで始めれば、と思う。
ちなみにPythonもJavaも、初心者が学ぶ言語としては
悪くない選択肢です。

822:デフォルトの名無しさん
18/08/20 00:34:57.15 6r2cvJMF.net
>>785
Pythonは3DCGでは最近じゃないから
ほとんどの奴がPythonの存在を知らないときから使われてる

823:デフォルトの名無しさん
18/08/20 01:03:33.27 OYF5TU4U.net
ツール組み込みのPythonは未だに2だったりするんじゃないの?

824:デフォルトの名無しさん
18/08/20 01:43:39.45 ul3gEuNL.net
組み込みだとLua、mruby、JavaScriptあたりも使われている

825:デフォルトの名無しさん
18/08/20 06:59:19.60 1lIz0FhB.net
しれっとmrubyを混ぜるな
mrubyなんか誰も使ってない

826:デフォルトの名無しさん
18/08/20 10:03:01.56 1nsldRzy.net
まぁ古参はC、下手したらアセンブラからの経験者で
トレンドに合わせてステップアップしながら言語を覚えただろうから
初心者が何の言語から勉強するべきかなど分かるはずもないんだよな
シンプルで覚えることが�


827:ュなく今なお第一線級で活躍している言語なら間違いなくC言語 C言語ほどシンプルで実用性のある言語はない OSが書かれてる本物の言語ってだけでもモチベーションになる 全ての実用言語の元になってると言えるし、最初にやるには良い言語だ 良くも悪くも 一方で楽しさ優先なら間違いなくC#でポトペタ開発でしょ めちゃ楽しいが、WPFなどの背景にある仕組みの複雑さに挫折するかも でも触ってて楽しいだろうなぁ、画面作るだけならマウスだけで出来るし あぁRubyとかPythonとかは寄り道みたいなものだから最初にしなくてよいよ、ハマるから 動的型のスクリプト言語など色物なのに、最初にやるとか、どうかと 俺は絶対おすすめしないね、プログラミング言語の本流じゃないからね 特にここ10年は静的型が本流ってみんな知ってるだろ、いじわるめが



828:デフォルトの名無しさん
18/08/20 10:13:16.57 1nsldRzy.net
あと、環境設定がどうとか、約一名盛り上がっているようだが
そういう人にはVisualStudioがおすすめだろう
これだけ完成度の高いソフトが無料で使えるのは凄すぎる
トータルで言えば、初心者におすすめなのは
VisualStudioとC#でポトペタ開発って事になるのかな
でもまあ、C#もバージョンがどんどん上がって今やとても複雑な言語だからなぁ
ソフトウェア業界が10年20年かかって常識にしてきたことを
一気に追体験しようというのはなかなか酷だわな
本当はC言語とWin32APIあたりから始めるのがシンプルで理想なんだが
モチベーションがつづくかな、それさえ気にしなければよい選択なんだが
どちらにせよ、RubyやPythonのような本流主流じゃない言語を最初にやるのは止めたほうが良い
筋が悪い、悪かった、というか悪いお手本みたいな言語だから

829:デフォルトの名無しさん
18/08/20 10:21:38.59 1nsldRzy.net
手続き型言語でプログラム書くなら、どのみちメモリのことは意識しなければならないし
ポインタが分からないって時点でプログラマには向いてないというか何というか
ただ、結局、安全かどうかなんだよ
その点C言語は安全とは言い難いが
意図せずヌルポするのはヌル安全の機能が無い言語ではどれも同じようなものじゃろ
その観点から言うと、単なるタイポすらコンパイル時にチェックしてくれない
動的型言語は初心者に進めるのは止めたほうがよい
初心者ほどタイポするだろうからな
それが言いたかった

830:デフォルトの名無しさん
18/08/20 10:42:27.70 Xyz1Vf46.net
今北産業

831:デフォルトの名無しさん
18/08/20 11:29:47.95 fD9Nu4LZ.net
長い上に気持ち悪い
やっぱ長文はNGに限る

832:デフォルトの名無しさん
18/08/20 14:25:35.47 zY8py34F.net
自分語りするおっさん登場

833:デフォルトの名無しさん
18/08/20 15:18:21.21 qTCaqW3V.net
>>792
> 単なるタイポすらコンパイル時にチェックしてくれない動的型言語
(きっとRubyのdid_you_meanはおろか70年代のLispにすらあったDWIMも知らないんだろうな…)

834:デフォルトの名無しさん
18/08/20 15:23:07.09 GIvuOFoC.net
>>796
そのdid_you_meanはコンパイル時(プログラム実行前)に
チェックしてくれるのかい?w

835:デフォルトの名無しさん
18/08/20 15:30:49.82 1nsldRzy.net
とにかく、初心者はプログラムを間違えるものなんだよ
一発で動くことは先ずない
それならコンパイルの時点でよりたくさんのエラーを検出してくれた方が学習が捗るだろ?
初心者にRubyなんか薦めるなって事だ
その人を蹴落としたいなら別だが

836:デフォルトの名無しさん
18/08/20 16:35:54.31 fD9Nu4LZ.net
REPLにコンバイルもくそもねえだろ

837:デフォルトの名無しさん
18/08/20 16:37:08.70 cqDBbZn3.net
まず多少なりとも動いてくれたほうが楽しいので学習が捗りました(経験談

838:デフォルトの名無しさん
18/08/20 16:43:09.37 GIvuOFoC.net
>>799
重要なのはプログラム実行前ってこと�


839:セよ 静的とも言う。 実行した後はいろんな状態があり得るが 実行前というのは状態は一つだ。 つまりいろんな状態にしなければわからないというのは 問題を発見するまでに果てしなく時間がかかるということ だからなるべく実行前にわかるようにするのが良い



840:デフォルトの名無しさん
18/08/20 16:47:09.67 fD9Nu4LZ.net
いやeval getsするだけで可能性は可算無限でしょ
eval gets
p A
# input
A = 'hoge'
とかどうすんのよ

841:デフォルトの名無しさん
18/08/20 17:27:42.07 dpL1lU0R.net
>>797
動的型言語かどうかは関係ない
Smalltalkの“confirm, correct, or cancel”はコンパイル時チェック

842:デフォルトの名無しさん
18/08/20 17:45:25.99 GIvuOFoC.net
>>803
Smalltalkのコンパイルっていつやるの?

843:デフォルトの名無しさん
18/08/20 17:46:25.89 GIvuOFoC.net
プログラム実行前って言ってるのに理解してなさそうw

844:デフォルトの名無しさん
18/08/20 18:09:19.60 1nsldRzy.net
何だったらコンパイル時どころか
最近のエディタだったら書いてる途中でリアルタイムで文法チェックするからな
間違ってたら波線とか出る
そういう状況なので、なるたけ多くのことが静的にわかったほうが良いんだよ
実行時にエラーにするなら馬鹿にでもできる!!って思うし
やってみてダメでしたってな、バカっぽいでしょ
事前に分かるから賢い

845:デフォルトの名無しさん
18/08/20 18:38:05.12 NYBtZzEL.net
>>804
メソッドを書き終わった後(accept、つまりコンパイル指示を出したとき)だよwwww

846:デフォルトの名無しさん
18/08/20 18:44:32.10 GIvuOFoC.net
>>807
その時にSmalltalkは動いているのかどうかって話だ
動いてるだろ

847:デフォルトの名無しさん
18/08/20 18:50:47.34 fD9Nu4LZ.net
このスレって質問者をほっぽりだして変なのがしゃしゃり出てくること度々あるよな

848:デフォルトの名無しさん
18/08/20 19:32:53.62 NYBtZzEL.net
>>808
IDEでJavaソースコンパイルするときjavacもIDEも動いてないっての?wwww

849:デフォルトの名無しさん
18/08/20 20:37:42.02 GIvuOFoC.net
>>810
いや、自分で書いたコードの話なんだけど?
Smalltalkは自分の書いたコードがすでに動いてないと
そういうエラーはでないでしょ。

850:デフォルトの名無しさん
18/08/20 20:43:46.47 NYBtZzEL.net
>>811
バカなの?コンパイル時って言ってるやん何度も
ともかくスペルミスくらいなら動的型言語でも静的にチェック可能なの
わっかんないやつだなー

851:
18/08/20 20:48:48.89 VU5jvdn2.net
>>812
>スペルミスくらいなら動的型言語でも静的にチェック可能なの
型宣言がないのに、そんなことが可能なのでしょうか?

852:デフォルトの名無しさん
18/08/20 20:56:45.04 GIvuOFoC.net
ローカル変数だけだったりしてねw
近くの情報は周辺を見ればいいだけだから問題はすぐに分かるんですよ。
遠くの情報、例えばインターフェースが一致しているかどうかが
わからないと使い物になりませんね
人間がやると大変なものこそコンピュータにやらせないと

853:デフォルトの名無しさん
18/08/20 21:35:34.32 1nsldRzy.net
なんで静的型の後追いみたいなことで苦労してるんだろうね
初めから静的型言語使えばよいだけなのにね
怠惰を求めて勤勉に行き着くってやつなのかね
動的型全体がそうだよね
処理系書いてる連中も、言語使ってる連中も
楽しようとして最終的に苦労する
なにこれコワイ

854:デフォルトの名無しさん
18/08/20 21:43:42.44 NYBtZzEL.net
>>813
構文木にできれば(ローカルに限らず)未宣言の変数だとか未知のメソッド呼び出しだとか程度なら
簡単に分かる
Lispみたいに構文も単純なら構文ミスも指摘して修正候補を提示することも可能(例:InterlispとかのDWIM)

855:
18/08/20 21:52:27.57 VU5jvdn2.net
>>816
>未宣言の変数だとか
動的型付け言語ってそもそも変数宣言はないのでは?

856:デフォルトの名無しさん
18/08/20 22:15:42.75 NYBtZzEL.net
>>817
変数を宣言させるかとそれに型情報が付くかどうかは別の話だよ
変数宣言をさせたら動的型言語じゃなくなるという法はない
宣言を課さない言語でも初回代入を宣言と見なす場合もある

857:
18/08/20 22:20:21.86 VU5jvdn2.net
>>818
>変数宣言をさせたら動的型言語じゃなくなるという法はない
たしかにそのとおりですが、
でも実際問題、変数宣言をしてかつ動的型付けである言語は存在しますか?

858:デフォルトの名無しさん
18/08/20 22:29:16.58 1nsldRzy.net
そんなの珍しくないよ
JavaScriptとかな
変数宣言には二つの役割があって、一つは型を宣言することだけど
もうひとつスコープを宣言するって役割もある
だから動的型言語でも素直なレキシカルスコープが欲しければ変数宣言があってもよい
一方で変数への最初の代入を変数宣言の代わりにする言語は
だいたいスコープがバグってる
ただの変数への代入か、新たな変数を宣言したのか、区別がつかないからなwww
それでnonlocalだの@だの、ダサいだろ?
ま、そういうわけで、やっぱり変数宣言は有ったほうが良いし
どうせ変数宣言するなら型を書いても良い気がするし
動的型言語が衰退するのは当たり前だったわ
なんせ、ありとあらゆるスジが悪いんだよ

859:デフォルトの名無しさん
18/08/20 22:30:09.56 K5IFIEIw.net
>>819
Rubyのメソッドの仮引数やブロック変数は宣言でないと?

860:
18/08/20 22:42:40.49 VU5jvdn2.net
>>821
def f(xyz)
"Hello, #{abc}!"
end
というメソッド定義があって
本当なら変数として xyz のところを間違えて abc と書いてしまった
というシチュエーションでも、エラーがでないでしょう?

861:デフォルトの名無しさん
18/08/20 22:52:22.44 KNimMRpP.net
>>822
あのさぁ…宣言を課すこととミスを検出できるか(するか)どうかはまた別の話なんだが?
今は「変数宣言をしてかつ動的型付けである言語は存在しうるか?」って話なんじゃないの?

862:
18/08/20 22:58:45.39 VU5jvdn2.net
>>823
「宣言を課す」というのは「宣言をしていない変数は変数として認識しない」という意味なのでは?

863:デフォルトの名無しさん
18/08/20 23:22:30.48 At189hOD.net
◆QZaw55cn4cは会話が成り立たないからスルーしろ

864:デフォルトの名無しさん
18/08/20 23:23:22.96 At189hOD.net
ついでに長文ガイジもNGつっこんどけ

865:デフォルトの名無しさん
18/08/20 23:55:25.50 PXXr8Lzz.net
>>824
Rubyはそうしていないというだけで、コンパイル時に
abcが未代入(代入操作で宣言を兼ねるRubyでは未宣言にあたる)である事実や
あるいはメソッドとして未定義である事実をもってxyzとすべき記述のミスでは?との判断を下し
そうであれば修正を促すことは可能だろう?
予め釘を刺しておくけど、ミスの可能性があることとコンパイル可能であることとはまた別の話だからな!

866:デフォルトの名無しさん
18/08/21 00:12:58.46 TQPukUfs.net
>>824
もしかして
Rubyでは無引数(括弧なし)のメソッド呼び出し記述は同名のローカル変数のアクセス記述を遮蔽してしまう
っていう仕様をしらないとかいうオチ?
もしこのルールがなければ>>822はキミの想定通りエラーのはずだよ

867:デフォルトの名無しさん
18/08/21 00:21:47.25 kxzeRRBS.net
JavaScript では、var の有無で、皆ハマった。
だから、ES2015(ES6) で、let, const を作って、ブロックスコープも作った
this の挙動もおかしい。
だから、Haxe のthisは、常にインスタンスを指すように変えられた
Python でも、nonlocal とか、頭おかしいw
Ruby では、関数スコープ・ブロックスコープの2つがあるから、バグりにくい
a = 1
def f
puts a # ここで、未定義の変数を参照してエラー
puts a = 2
end
f()

868:
18/08/21 00:34:00.24 Wpz7rvAB.net
>>827
>代入操作で宣言を兼ねる
これは危険ですね
なぜなら、変数が


869:未代入かどうか、正確には、変数が未代入「でないか」どうか、をソースコードのセマンティクスから判断するのは困難だと思うのです



870:デフォルトの名無しさん
18/08/21 01:41:26.90 WMlArXdo.net
>>827
Rubyは、未定義メソッドの呼び出しが可能なんじゃないか?
そのためのフォールバック用メソッドがあったはずだが。

871:デフォルトの名無しさん
18/08/21 01:47:26.07 kxzeRRBS.net
メタプログラミング Ruby 第2版、2015
で紹介している、Module#define_method(), method_missing() とかだろ?

872:デフォルトの名無しさん
18/08/21 04:51:25.59 kxzeRRBS.net
picture_url = "URLリンク(pbs.twimg.com)
uri = URI.parse picture_url
file_name = File.basename(uri.path) # ファイル名
file_extname = File.extname(file_name) # 拡張子
後ろに「:orig#jpg」が付いていても、ファイル名が正確に抜き出せる!
DlCjEV6V4AUM9Kl.jpg

873:デフォルトの名無しさん
18/08/21 05:11:45.98 dhW5/kUC.net
>>833
バグじゃんそれ

874:デフォルトの名無しさん
18/08/21 05:20:08.29 dhW5/kUC.net
>>831
そうそう。だからRubyじゃコンパイル時にわからないんだよ。
例えば以下のように、一行目にexitしてしまえば
その下にいくら変なコードがってもコンパイル時にチェックなんかできない
exit
aaa = 1312
class Hoge
 def hoge
 end
end
h = Hoge.new
h.hage
i = IIII.new

言い換えると、動的言語ではファイル単位でしかコードを見てないので
少なくともファイル外にある情報はわからない
検出できるのは文法エラーぐらいだよ
残念なことにね。それが現実。

875:デフォルトの名無しさん
18/08/21 07:09:45.22 9qt5lkVf.net
だからさぁRubyが駄目ってとこを動的型言語の限界だと一般化しないでくれ
話がまったく噛み合わない

876:デフォルトの名無しさん
18/08/21 07:32:38.20 9qt5lkVf.net
>>831
だからミスの可能性がある(そしてその指摘や修正の提案が可能である)ことと
コンパイル可能な(つまり状況が整えば実行可能になる)コードであることとは
また別の話だって釘を刺してるだろうに…

877:デフォルトの名無しさん
18/08/21 07:35:37.03 Y1HyydAv.net
ケンカはやめて

878:デフォルトの名無しさん
18/08/21 07:40:39.17 9qt5lkVf.net
>>830
Ruby限定の欠陥の話がしたいのか動的型言語一般の限界の話をしたいのかをまず表明してくれ
>>813からの流れは動的型言語一般の話ってわけじゃなかったのか?

879:デフォルトの名無しさん
18/08/21 08:20:58.17 dhW5/kUC.net
まああれだ、Smalltakerさんがちゃんとコードで説明してくれればいい
ここでオンラインでSmalltalkを実行できる
URLリンク(www.tutorialspoint.com)
ここに
Transcript show: 'Hello, world!'.
Transcript show: 4 sqrt printString.
と書くと、「Hello, world!2.0」と表示される
ここに
Transcript show: 'Hello, world!'.
Transcript show: 4 sqrtaaa printString.
と書くと、「Hello, world!」と表示されてから
エラーが表示される。
コンパイル時にチェックが行われるというのなら4という数字に
sqrtaaaというメソッドはないから実行時前にエラーを検出できるはずだ
そうならないので、未定義メソッドの検出はできない。
反論はコードでどうぞ

880:デフォルトの名無しさん
18/08/21 12:22:18.03 tnY8+vhG.net
ここにMatz呼べば全て解決じゃん
どうせ見てると思うぞ

881:デフォルトの名無しさん
18/08/21 12:52:50.65 eDZ5kOgA.net
>>840
Smalltalkの“confirm, correct, or cancel”を試したいならこれはIDEを前提とした機構なので
GNU SmalltalkのようにUNIXとの連携を重視したCUI前提の変わり種のSmalltalkには実装されて�


882:ィらず使えません またPharoのように今風のシンタックスハイライトのついでに色で警告する方式がデフォになった処理系でも抑制されています “confirm, correct, or cancel”が動く様子やその仕組みを検証したいのであればVisualWorksかSqueakあたりがよいでしょうね SqueakならSqueakJSというWebブラウザで動作する処理系があり、これならすぐに動かせるのでお薦めです 今回のような古くからの機構に興味があるのなら DEMOS の Mini で起動できる Mini Squeak 2.2 あたりが軽くてよいのではないでしょうか (ワークスペース変数導入後、変数名のミススペルチェックはワークスペースでは機能しないためこの点でも今回の検証には古い方がよいでしょう) https://squeak.js.org/ 起動後まずデスクトップクリック→open...→transcriptでトランスクリプトウインドウを呼び出しておき、それから どこでもよいので(Welcome to Mini Squeak 2.2 の適当な場所でも、open...→workspaceで新しいワークスペースを開いてもOK) Transcript cr; show: 'Hello, world!'. Transcript cr; show: 4 sqrt printString とタイプして入力後、2行ともドラッグして選択してから右クリック(あるいは左手のスクロールバーとの境界にポインタを合わせて左クリック) →do it (d) で>>840のコード(cr; は出力を見やすくするために入れました^^;)が動かせます sqrtaaaに変えて再びdo itすれば、Hello, world!と表示される*前*に“confirm, correct, or cancel”と促されるはずです 関連してLispのDWIM(これも実行前の静的時チェック)はInterlispのマニュアル第15章で取り上げられていますので参考まで https://archive.org/stream/bitsavers_xeroxinternceManualOct1983_52302609?ui=embed#page/n389 >>796 > 70年代のLispにすらあったDWIM 同書にもあるとおりDWIMは1960年代からです “DWIM, the Do-What-I-Mean error correction facility, was introduced into this system in 1968 by Warren Teitelman”



883:デフォルトの名無しさん
18/08/21 12:54:39.77 qWx5Zods.net
>>809
どこにでもいる

884:デフォルトの名無しさん
18/08/21 12:59:22.19 OZUNGsZn.net
「いまさらRuby」
「Rubyで学ぶ機械学習」
あたりを誰か書いてよ

885:デフォルトの名無しさん
18/08/21 13:05:22.31 qWx5Zods.net
「間違ってRubyを始めてしまった人へ贈るPython入門」
もいいな

886:デフォルトの名無しさん
18/08/21 18:59:29.56 WMlArXdo.net
Pythonは、試してみたい気持ちもあるものの、よろしくないところもいくらか知ってるので、微妙なんだよなー。
そういえば、ボスが引退するそうだが、なにか変わんのかねえ。

887:
18/08/21 19:15:33.64 Wpz7rvAB.net
>>839
個人的には ruby を改良しようといろいろ画策しています、宣言付き ruby とか
動的型付け言語にて変数宣言を導入すればずいぶんと使い勝手も変わるだろうと想像しています
そういう視点でおねがいします

888:デフォルトの名無しさん
18/08/21 19:17:47.11 2YpoFUMY.net
画策wwwwww
それでプルリクでもしてこいよwwwwwww

889:デフォルトの名無しさん
18/08/21 20:58:28.00 zx3sEUVJ.net
>>847
Rubyは変数宣言を省略したことが原因の仕様がらみのトラブルが少なくない
そんな犠牲をはらっても(型も含め)宣言を書かせないことがMatzの優先事項の上位にあるわけ
キミの「改良」案は何を今更だしそもそもMatzや取り巻きが耳を貸す可能性はゼロだろうね

890:デフォルトの名無しさん
18/08/21 21:02:49.75 PnXfa+5/


891:.net



892:デフォルトの名無しさん
18/08/21 22:37:38.64 WMlArXdo.net
>>850
スコープ

893:デフォルトの名無しさん
18/08/22 00:20:47.79 h82tfzI1.net
結局、言語を改良していくと、Haxe になる
マルチ言語・マルチプラットフォーム、
this の挙動を変えて、型推論・パターンマッチ・引数付き列挙
Ruby は、JS, Python などど違って、関数スコープ・ブロックスコープがあって、
関数スコープは強固だから、変数を内側へ通さない
だから変数宣言が無くても、バグらない
ES2015(ES6)でも、ブロックスコープが採用された。
変数宣言も、以前からのvar に加えて、const, let も作られた

894:デフォルトの名無しさん
18/08/22 05:07:26.61 O2PM/1qE.net
>>852
なんで関数スコープとかいう小さい話してるんだ?
小さいものであれば、少し頑張れば対応可能なのは
わかってるんだよ。もっと広い範囲、オブジェクト間の通信とか
プロジェクト全体のレベルでバグが発生するから型がいるんだよ

895:デフォルトの名無しさん
18/08/22 07:57:35.69 g+4f8QiO.net
>>850
↓でググる
site:www.rubyist.net/~matz (スコープ OR クラス変数 OR 定数)

896:デフォルトの名無しさん
18/08/23 11:48:39.81 muib0HF0.net
反論はコードで(キリッ

897:デフォルトの名無しさん
18/08/23 11:58:19.26 ncZgpeak.net
>>855
だからコード出せって

898:デフォルトの名無しさん
18/08/23 12:08:41.61 29gBK1aD.net
言い出しっぺの法則

899:デフォルトの名無しさん
18/08/23 13:27:22.00 muib0HF0.net
>>856
何のコード?

900:デフォルトの名無しさん
18/08/26 01:12:35.83 iN7pYJOp.net
undef式ってどういうときに使うの?

901:デフォルトの名無しさん
18/08/26 10:37:18.06 0HcSjLFv.net
教えてください!
[パーフェクトRuby]と[プロを目指す人のためのRuby入門 ]はどちらがオススメですか?
当方3ステップ本を学習中、仕事でRubyを使えるようになりたいと思っています。
よろしくお願いします!!

902:デフォルトの名無しさん
18/08/26 12:09:12.86 mLZLsxB6.net
>>860
仕事でRubyやりたいならRails以外の選択肢はないからいきなりRailsやるのがいいよ
Rails DSLは別言語なレベルにまでカスタマイズされてるから、最初に素のRubyをやるとかえって混乱するのでお勧めできない
あとはLinux使ったWebサイト運用構築のインフラ本を一冊と、AWSの本一冊かな
WebやるわけじゃないんならPythonで勝ち馬に乗ろう

903:デフォルトの名無しさん
18/08/26 12:46:28.68 w0D5YFHr.net
この順番で読む。
Rails は、無料のRails チュートリアルをやってもよい。
Rails の前に、Sinatra をいじくりまわすのも良い
たのしいRuby 第5版、2016
Effective Ruby、2015
バグが起きにくい、安全で効率的なコーディングと、
間違いやすいポイントを解説
改訂2版 パーフェクトRuby、Rubyサポーターズ、2017

改訂3版 基礎 Ruby on Rails、黒田努・佐藤和人、2015
実践Ruby on Rails 4: 現場のプロから学ぶ本格Webプログラミング、黒田努、2014
パーフェクト Ruby on Rails、2014
動作環境、Rails 4.0.5, 4.1.1

904:デフォルトの名無しさん
18/08/26 13:00:08.38 2ZbuD4Bs.net
>>859
いらなくなったとき

905:デフォルトの名無しさん
18/08/26 18:33:30.03 kjnpmDtT.net
>>860
>[パーフェクトRuby]と[プロを目指す人のためのRuby入門 ]はどちらがオススメですか?
どちらもオススメだけど、難易度であれば [プロ] よりも [パーフェ] のほうが高い
[パーフェ] は幅広く高度な話題を扱うプロ必読の本だけど、
説明もプロ向けで簡潔だから初心者では読んでも意味不明な魔術書と感じるかもしれない
それに対して、[プロ] は話題を厳


906:選して丁寧に分かり易く解説している印象を持った だから初心者へのオススメコースであれば以下の順序になる: ・たのしいRuby ・プロを目指す人のためのRuby入門 ・パーフェクトRuby



907:デフォルトの名無しさん
18/08/26 18:47:00.00 kjnpmDtT.net
>>861
>仕事でRubyやりたいならRails以外の選択肢はないからいきなりRailsやるのがいいよ
質問者は「Webをやりたい」と希望しているわけでもないのに
ナゼかRailsを勧める話が噛み合わない返答、日本語が不自由な人ですか?

>Rails DSLは別言語なレベルにまでカスタマイズされてるから、
>最初に素のRubyをやるとかえって混乱するのでお勧めできない
つまり:
  Pythonは手続き型プログラミングに特化して設計された言語だから、
  >>861のようなPythonプログラマには、手続き型にオブジェクト指向と関数型が融合された
  素のRubyをやると混乱した苦い経験が過去にあったのでお勧めできない、
という解釈できますね

>WebやるわけじゃないんならPythonで勝ち
つまり:
  トレンディーにセンシティブなナウいヤングメンにはPythonがお勧め
ということですね、たいへんわかりやすいです


908:デフォルトの名無しさん
18/08/26 19:39:05.79 clMe+MHZ.net
>>864
プロを目指す人のためのRuby入門は本当に入門用、yieldやProcの解説までで終わり。
パーフェクトRubyはメタプログラミングとかGemの作り方とか実践的なことまで書いてある。

909:デフォルトの名無しさん
18/08/26 19:40:46.31 clMe+MHZ.net
これから言語を初めて学ぶならTypescriptとかのほうがいいと思うけど。

910:デフォルトの名無しさん
18/08/26 19:48:01.06 vWItB/Z8.net
pythonだろjk

911:デフォルトの名無しさん
18/08/26 20:59:33.68 B3lkUNKe.net
ほら
>>865最高でしょ
これが典型的なルビリストの思考回路

912:デフォルトの名無しさん
18/08/26 21:18:59.11 7cBpPp40.net
>>867
初心者にJavaScript系はイカンやろ。クセありすぎ。
それだったら、C#をやるべき。

913:デフォルトの名無しさん
18/08/26 21:23:56.52 vKa62JvF.net
TypeScriptとC#だったら似たようなもんだろ
設計者同じなの知らないのか?

914:デフォルトの名無しさん
18/08/26 21:48:43.66 SaWTBVer.net
>>871
TypeScriptはJavaScriptに引っ張られる部分がどうしてもあるからね
さすがに似たようなもんではないと思う
JavaScriptの一大メリットである環境整備のしやすさもTypeScriptにはないし
初学者ならRubyは学びやすいと思うしいいと思うよ
たのしい本とかしっかりした書籍もあるしね

915:デフォルトの名無しさん
18/08/26 23:11:11.23 2xrJOS4Z.net
趣味でやるならRubyは書くの楽しいしお勧めできる
手に職付けるつもりなら全くオススメしないけど

916:デフォルトの名無しさん
18/08/26 23:26:48.25 w0D5YFHr.net
「プロを目指す人のためのRuby入門」の著者・伊藤淳一は、YouTube の動画がよい。
無料のRails チュートリアルをやった人は、彼の動画を見るのもよい
Junichi Ito
Rails 5.1で作るVue.jsアプリケーション ~Herokuデプロイからシステムテストまで~
URLリンク(youtu.be)
プロになる人は「Effective Ruby」は読んでおけ。
どの言語でも「Effective 何々」というのは、プロの必須本

917:デフォルトの名無しさん
18/08/27 00:26:10.32 r5tUtp1V.net
Rubyはそのコード効率の良さからちゃちゃっと書けるのがメリット
試作や使用頻度の低いツールの作成に重宝する

918:デフォルトの名無しさん
18/08/27 08:02:06.98 QAQ5xX6o.net
試作(笑)
そういやsassも最初はrubyで作られていたが、
遅いって言うんで、C言語で再実装されて
今じゃそっちが主流になったな

919:デフォルトの名無しさん
18/08/27 09:17:11.23 k1/VmCLx.net
プロトタイピングって言うと耳触りがいい

920:デフォルトの名無しさん
18/08/27 12:19:20.56 Fz9xVlti.net
遅くなりましたが、返信頂きありがとうございます!3ステップ本でも苦戦しているので、これ�


921:「ったん終わらせてから[プロを目指す]をやろうと思います >>861 >>864



922:デフォルトの名無しさん
18/08/27 12:21:01.46 Fz9xVlti.net
>>874
動画があるのは知りませんでした!
[efective]も読もうと思います!ありがとうございます!

923:デフォルトの名無しさん
18/08/27 13:13:32.53 0aehZJwm.net
耳触りが良いって言葉くっそ嫌い

924:デフォルトの名無しさん
18/08/27 13:17:39.90 Q4eMB8Ps.net
ばずわーど

925:デフォルトの名無しさん
18/08/27 13:21:26.27 f0mEiXXF.net
プロトタイピングって言うと聞こえが良い

926:デフォルトの名無しさん
18/08/27 13:25:09.61 97nSTlug.net
Rubyには「やってみた」のほうがお似合い

927:デフォルトの名無しさん
18/08/27 13:27:08.09 8Kt1o08C.net
やってみたでいいと思うよ
そこから学んだことを基礎にして別の言語に行くもよし、そのまま使い続けるもよし

928:デフォルトの名無しさん
18/08/27 17:37:57.10 LsIvpBlS.net
>>874
この動画みたけど酷いな…
そもそもvueのソースは全部コピペでなんの説明もない
設定ファイルで何をしているのかゴニョゴニョ言ってるだけですぐ画面移動するしまったくわからん
単に作業やってますよ的なだけだな
初心者には意味不明の動画だよ

929:デフォルトの名無しさん
18/08/27 22:24:37.18 r5tUtp1V.net
コーダーになりたいのかプログラマになりたいのかによって変わるんじゃね
コーダーならRoR案件をやる以外でRubyを覚えるメリットはあまりないだろう
プログラマだったら複数の言語を操れるのが普通
ソフトウェアエンジニアだったら適材適所で言語を選択できないと

930:デフォルトの名無しさん
18/08/28 00:06:26.46 zd97Q5KX.net
PHPみたいな存在に収まったな

931:デフォルトの名無しさん
18/08/28 00:22:40.86 vBkG5f14.net
PHPがどんな存在なんだろうな

932:デフォルトの名無しさん
18/08/28 00:23:57.20 s+h3X9SG.net
つかれた
ほんとうに

933:874
18/08/28 00:34:49.08 TEJeUOom.net
>>885
Vue.js や、Rails チュートリアルをやった人からすれば、
Rails 5.1で、Vue.jsが動くことが確認できたから、画期的!
たった1人でも、実行できた実績があると、皆が後に続くから、価値がある
新しいものをいじくりまわして動かしてしまう、先駆者!

934:デフォルトの名無しさん
18/08/28 04:30:18.33 IU+10hhU.net
◆QZaw55cn4c はまだ荒らし続けてるのか
ほんま懲りないなコイツ

935:デフォルトの名無しさん
18/08/28 14:51:47.47 fwITIoXO.net
レンタル鯖だと軒並みRubyで組む事になる
いまどき自前で鯖用意して高いコスト払う人っているのか?

936:デフォルトの名無しさん
18/08/28 14:56:24.45 vxybgpo1.net
phpならともかくrubyならなんのかんのでvpsにせざるを得ないだろ。
構築めんどくせぇ…

937:デフォルトの名無しさん
18/08/28 15:06:29.72 gFwi/D9L.net
>>890
アホかこいつ
Vue.jsはブラウザ側で独立して動作するライブラリであり、バックエンドのAPIとAjaxで通信する
Vue使うならRailsはそのAPIを提供するだけであり、VueとRailsは直接的には何の関係もない
触れちゃいけない人なのは承知してるがさすがに目に余る

938:デフォルトの名無しさん
18/08/28 16:34:41.02 6kEMX7h9.net
P
Hyara
P
Hyara
ぱっぱらぱー

939:デフォルトの名無しさん
18/08/28 22:11:45.77 5S/Bzcf+.net
>>893
嘘ついてもすぐバレるんだからアンチスレから出てくるなよ

940:デフォルトの名無しさん
18/08/28 23:47:09.36 TEJeUOom.net
chef, vagrant は、Ruby で書かれている。
誰かが作った、レシピを探せば?
DevOps と、コミュニティを利用するのは、まさにRubyにもってこいだろ

941:デフォルトの名無しさん
18/08/29 10:17:15.28 1N7Xw9cw.net
>>897
そういうシステム的なところに、バージョン互換がクソのRubyを使うなよ、と思うんだが。
割り切ってPerlで実装するべき。

942:デフォルトの名無しさん
18/08/29 10:20:44.10 Z5QuCC4F.net
Rubyはシステムに入ってるバージョンには何も期待できないからなあ
アプリとセットでバージョンをコントロールできない環境なら絶対に使わないことにしてる

943:デフォルトの名無しさん
18/08/29 13:28:40.28 ND6xKvzt.net
>>898
Perlもバージョン互換クソだぞ。言語自体はまだマシだが、
多くの標準とされるモジュールが結局ただのcpanライブラリだったりする
Perlとは別に、標準モジュールがメンテされている。

944:デフォルトの名無しさん
18/08/29 13:29:42.09 ND6xKvzt.net
>>899
> アプリとセットでバージョンをコントロールできない環境なら絶対に使わないことにしてる
だからDockerがでてきたんだよね。アプリとセットでバージョンをコントロールするための仕組み
Rubyだけに限らない。どんなものでもセットでコントロールできちゃう

945:デフォルトの名無しさん
18/08/29 14:42:17.16 3Ovn6h4k.net
なんかアンチの意見が多いように見えるんですが、Rubyって実際勉強する価値のある言語なんですか?

946:デフォルトの名無しさん
18/08/29 14:47:50.70 arxyH2m7.net
書き捨てのコード書くのにとても手早く書けて便利

947:デフォルトの名無しさん
18/08/29 15:17:06.91 bzaK3e7y.net
>>902
言語のスキルそのものに価値を求めるなら目下猛スピードで下降中のRubyはお勧めできない
上の人も書いてるけどサブ言語として書捨てスクリプトに使う分には悪くはない
言語に価値を求めるのではなく、価値は自分で生み出すんだよ

948:デフォルトの名無しさん
18/08/29 17:45:09.85 BcD2eC3K.net
>>901
どんなものでもいいと言われてRubyを選ぶバカはいないだろうさすがにw

949:デフォルトの名無しさん
18/08/29 18:32:49.25 ICSdkcMg.net
>>902
あるよ
Rubyはラクに短く書けるからね
日用使いにもってこいだし
Rubyやった後で他の言語を使ったときに感じるもどかしさも成長の現われ

950:デフォルトの名無しさん
18/08/29 20:00:01.96 C3NxYXPh.net
>>902
利用価値とか将来性とか、そんなしみったれた理由じゃなくて、
「好きか、嫌いか」で選ぶ言語な気がする
自分は文字列処理とかの浅瀬でしか使ってないけど、
なんか書いててノリがいいんだ

951:デフォルトの名無しさん
18/08/29 20:05:19.84 VZocGD05.net
>>902
わざわざRubyスレを覗いてまでアンチな意見を出したがる人間がいるということは
それだけ広まってるってことの裏返しだよ

952:デフォルトの名無しさん
18/08/29 20:07:31.02 9TW3Y4kQ.net
>>908
Windowsスレみたいだな

953:デフォルトの名無しさん
18/08/29 20:55:22.66 sbo9jSpz.net
やっぱレンタル鯖についてるRubyで組むのが一番楽だし安い
googleとかfacebookみたいなでかいサービス以外はこれで十分やろ

954:デフォルトの名無しさん
18/08/29 21:50:09.05 ina9uBoN.net
>>907
文字列処理ってRubyは結構得意だと思うな。ループが書きやすいのもある
PythonやJavaScriptでやっているとストレスがたまるたまるw

955:デフォルトの名無しさん
18/08/29 22:03:14.49 iK2DqHZ9.net
>>900
もちろん互換性優先なら標準モジュール縛り。
野良モジュールはいいかげんなのも多いからな。

956:デフォルトの名無しさん
18/08/30 00:32:15.61 HMl4aadA.net
Rubyでグラボ動かすのたーのしい

957:デフォルトの名無しさん
18/08/30 02:57:42.53 DM4c6T6K.net
実務未経験からWebエンジニアになった方の体験談を集めてみた。 - プログラミングを仕事に!
URLリンク(doryo9999.hatenablog.com)
Progate と、無料のRails Tutorial で勉強するのが、Webエンジニアの定番みたい

958:デフォルトの名無しさん
18/08/30 03:24:52.09 rxoSSaq5.net
>>912
いや、だからPerlの標準モジュールは
単に野良モジュールをバンドルしただけなんだよ

959:デフォルトの名無しさん
18/08/30 15:50:31.69


960:nb0FI+w1.net



961:デフォルトの名無しさん
18/08/30 16:01:51.81 HtWH/5uG.net
bashから呼び出したりシェル代わりに使ったりするならrbenvが便利だな

962:デフォルトの名無しさん
18/08/30 21:34:27.07 qmylcsW4.net
そろそろ夏休み終了の季節か
時間つぶし用のRuby本をどこかの出版社で出してくれ

963:デフォルトの名無しさん
18/08/31 08:44:43.00 ujTJ+lMf.net
31日は今日までだが、明日明後日は土日なんだぜ・・・

964:デフォルトの名無しさん
18/08/31 09:08:58.06 KAgj04IM.net
ほんとや! じゃあハロワも休みだな

965:デフォルトの名無しさん
18/08/31 12:29:49.35 xKsqnbR+.net
みんなエディタは何使ってるか教えて
私はatom使ってる
テーマが沢山あって楽しい

966:デフォルトの名無しさん
18/08/31 13:00:10.64 9pMrcfpD.net
Atomなんかまだ使ってる人いたんだ
MSのVSCodeに完敗して誰も使わなくなり、さらに開発元のGitHubがMSに買収されて完全に終わったエディタだぞ

967:デフォルトの名無しさん
18/08/31 13:08:16.29 DXKxWv2O.net
atomもvscodeもどちらも同じマイクロソフト社の
製品なんだから喧嘩するな

968:デフォルトの名無しさん
18/08/31 16:57:57.78 xKsqnbR+.net
VS codeはターミナルの日本語が重なって表示される不具合を治す方法がわからなくてアンインストールしました……
vimとかサクラエディタとか、他にもエディタいっぱいあるけど、VS code派が多いのかな?

969:デフォルトの名無しさん
18/08/31 17:22:16.44 Ed5vLPgD.net
いま一番開発が活発なエディターだからね。

970:デフォルトの名無しさん
18/08/31 17:23:38.18 9pMrcfpD.net
Ruby以外では今はVSCodeが一世を風靡してる状況
- 大魔王マイクロソフトによって開発されたエディタである。
- VSCodeはTypeScriptという悪魔の言語によって書かれている。
- TypeScriptはこれまた大魔王マイクロソフトが人々を誘惑し静的型に引き摺り込むために開発された言語である。
- TypeScriptはRubyist達に愛されRailsのフロント用公式言語にも採用された聖CoffeeScriptを抹殺した。
こういう宗教的事情があるのでRubyistだけはVSCodeを忌み嫌っている。

971:デフォルトの名無しさん
18/08/31 17:24:11.51 jDtDUsbL.net
emacs

972:デフォルトの名無しさん
18/08/31 17:39:56.72 958KuBfY.net
禿丸

973:デフォルトの名無しさん
18/08/31 20:50:54.50 iqojN4Kg.net
rubyやってる奴らは自分達が頂点だと思ってる

974:デフォルトの名無しさん
18/08/31 20:59:56.48 YgK7xM8R.net
Rubyアンチが必死に特定のスレをあげてて吹く
ほんと何考えてんだ?

975:デフォルトの名無しさん
18/08/31 21:14:42.76 SCJF/jOl.net
荒らしがまた涌き出したのかと思ったら
◆QZaw55cn4c が帰ってきてたのか
いい加減に板を荒らすのやめろよ

976:デフォルトの名無しさん
18/08/31 21:15:37.22 hdwU5T2H.net
Rubyは基本emacsだな
Windowsしか使えない時はxyzzy使ってる

977:デフォルトの名無しさん
18/08/31 21:19:29.16 9vTf/EZ+.net
>>932
emacs使いならWindowsでも使え。

978:デフォルトの名無しさん
18/08/31 23:28:50.61 N52+Kto5.net
>>929
アスペが多いイメージ

979:デフォルトの名無しさん
18/09/01 07:57:54.43 kUpkBQ3x.net
Windows のRubyist は、VSCode を使う
>>924
上下矢印を動かすと消える
それか一旦、端末を閉じてから、開き直すとか

980:デフォルトの名無しさん
18/09/01 09:16:49.41 7X8llEoY.net
RubyMine除くと選択肢皆無だもんなー今

981:デフォルトの名無しさん
18/09/01 09:30:00.05 FRKhXQkv.net
emacs→教祖様も愛用する大正義エディタだが習得コストや


982:環境整備が極めて高い Atom→今や情弱の代名詞 VSCode→宗教上の問題で使用不可 RubyMine→高い Rubyistにとっては受難の時代だね



983:デフォルトの名無しさん
18/09/01 09:32:22.40 FRKhXQkv.net
あとRubyMine使っちゃうと「ゲロ重いIDEなんかに依存せず軽快にRubyを操る俺かっけえwwドヤァww」ができなくなるという大きな問題があるね

984:デフォルトの名無しさん
18/09/01 09:38:16.81 FRKhXQkv.net
あとはSublimeもあるな
VSCodeにあらゆる面で負けてるものに金を払うという理不尽さを受け容れられるなら悪くない選択肢だね

985:デフォルトの名無しさん
18/09/01 10:14:24.91 RIX4RBZZ.net
vimスルーかい

986:デフォルトの名無しさん
18/09/01 10:16:58.22 8XWt4TWp.net
Vimは最悪でしょ
教祖様に中指立てるようなもんだぞ

987:デフォルトの名無しさん
18/09/01 10:19:37.07 aR5AJvlP.net
ruby自体で作られたエディタが無い時点でなあ

988:デフォルトの名無しさん
18/09/01 10:37:32.58 G2t628Mc.net
スクリプト言語にむちゃいうな

989:
18/09/01 11:39:46.11 xvMvXv+W.net
lisp コンパイラが存在するように ruby コンパイラがあってもいいと思うの…

990:デフォルトの名無しさん
18/09/01 12:05:20.84 nhZwUooY.net
cloud9でいいじゃん
もはや開発デバイスでwindowsもmacもlinuxも関係ない
いちいちローカルに仮想サーバーなんか作らなくていいし
IDEとしては普通だけど十分

991:デフォルトの名無しさん
18/09/01 14:18:19.40 30m/ucV3.net
VSCodeって以前試してみたことあるけど動作が重すぎて論外

992:デフォルトの名無しさん
18/09/01 14:26:26.69 8XWt4TWp.net
実際はAtomやRubyMineより遥かに軽いんだよなあ
Ruby製のエディタだと言って>>946に触らせたらクソ軽い最高のエディタだと言いそう

993:デフォルトの名無しさん
18/09/01 15:18:25.24 EqLeg0R1.net
ATOMって人気無いのか……色んなテーマがあるのが面白くて、気分で変えたりするのが楽しい
ATOM以上にテーマのカスタマイズできるエディタないよな?

994:デフォルトの名無しさん
18/09/01 15:20:53.49 mPcVbgud.net
テーマは一番どうでもいいところ

995:デフォルトの名無しさん
18/09/01 15:23:45.59 EqLeg0R1.net
>>949
では、一番重要なのは?

996:デフォルトの名無しさん
18/09/01 15:27:17.99 8XWt4TWp.net
>>948
VSCode
Atom用のテーマ作ってた人もみんなVSCodeに乗り換えてしまって、VSCodeに移植されてるよ
まあRubyistには無縁なんだけどね

997:デフォルトの名無しさん
18/09/01 15:33:50.66 EqLeg0R1.net
>>951
VS codeでもテーマ変えられるんだ!知らなかった。ありがとう
Atomは重いし下火ならVS codeに乗り換えようかな……
でも、Rubyistには無縁とか、宗教上の問題で使えないってどういうこと?

998:デフォルトの名無しさん
18/09/01 15:39:33.85 0QGY34UC.net
キチガイ独自の宗教事情だから気にするな
VS CodeにRuby Solargraph入れるとめっちゃ捗るぞ

999:デフォルトの名無しさん
18/09/01 15:48:36.37 kUpkBQ3x.net
暗めのテーマ、Dracula とかか?
Bracket Pair Colorizer
vscode-icons, VSCode Great Icons
indent-rainbow
この辺の拡張機能を使えば、カラフル

1000:954
18/09/01 15:53:49.58 kUpkBQ3x.net
Bracket Pair Colorizer
カッコの色が、それぞれ違う。
これが無いと、カッコの対応関係がわからないから、プログラミングできない!

1001:デフォルトの名無しさん
18/09/01 16:56:03.17 30m/ucV3.net
未だにK2Editorを使っている。いい加減乗り換えたいが動作が重いか機能不足かの二択でいかんともしがたい

1002:デフォルトの名無しさん
18/09/01 17:18:52.07 7ZnGpQEC.net
メソッドやクラスの定義に飛べたり、クラス名や変数名変えたらプロジェクト内の全てに更新かけてくれるIDEない?

1003:
18/09/01 17:37:20.16 xvMvXv+W.net
>>950
キーバインドを emacs 式に(できれば簡単に)できるかどうか
それ以外はどうでもいい…

1004:デフォルトの名無しさん
18/09/01 17:42:31.61 aR5AJvlP.net
>>943
ATOMもvscodeも大部分nodejsだったはず
pythonのidleはpython+tkだったか?

1005:デフォルトの名無しさん
18/09/01 18:17:59.95 wk35+pf/.net
また荒らしが自演してるのか

1006:デフォルトの名無しさん
18/09/01 18:48:09.50 ylFVE9fX.net
もう今やEmacsの方がVS Codeより軽いぐらいだからな
VS CodeもAtomよりはよっぽどマシだけど、それでももっさり感は否めない
となるとEmacsか、せいぜいSublime Textって選択肢になってしまう

1007:デフォルトの名無しさん
18/09/01 18:57:40.50 EqLeg0R1.net
>>953
solargraph入れたらgemが必要と言われ、gemインスールしてからgem install soragraphしたらエラーが出て解決策が分からない
プログラミング難しいっすね……(二ヶ月目初心者)

1008:デフォルトの名無しさん
18/09/01 19:24:37.72 8XWt4TWp.net
>>961
ゴリゴリに拡張しまくったemacsやvimなら体感的にはVSCodeの方が速いわ

1009:デフォルトの名無しさん
18/09/01 19:42:00.02 wk35+pf/.net
次スレ
Ruby 初心者スレッド Part 64
スレリンク(tech板)

1010:デフォルトの名無しさん
18/09/01 20:26:57.40 0QGY34UC.net
>>962
コーディングより環境構築がややこしいのはプログラミングあるあるだから…
Windowsでruby installer使ってるならreadmeの最後にも書いてあるけど↓を試してみ
> gem uninstall eventmachine
> gem install eventmachine --platform ruby -- --use-system-libraries

1011:デフォルトの名無しさん
18/09/01 21:00:02.89 30m/ucV3.net
Rubyのgemに限らず最近の言語はパッケージ的な仕組みを持っているけど、処理内容が隠されてしまうから
意図した結果が得られないときのトラブルシュートが難航するんだよな
しかもパッケージがらみの情報は言語本体の情報より少ない上に初心者だとエラーの見方もわからなかったりしてより厳しい状況になる
これ、最近乱立気味のビルドシステムでも同じことが言えていて、標準的な手順から外れたとたん
ビルドシステムを勉強しエキスパートにならないとにっちもさっちもいかなかったりするし

1012:デフォルトの名無しさん
18/09/01 21:16:43.59 9FO7jpj+.net
トラブったらissue上げるだけだろ
コミュ障かよ

1013:デフォルトの名無しさん
18/09/01 21:19:19.18 1LBe8Cyr.net
Win環境でのissueなんか上げても誰も相手にしないぞ
UnixではテストしたWinは知らんでクローズ

1014:デフォルトの名無しさん
18/09/01 21:52:28.86 wk35+pf/.net
アンチが嘘つくのは毎度のことだし無視が一番

1015:デフォルトの名無しさん
18/09/01 22:16:55.51 ylFVE9fX.net
>>968
それでクローズされた具体的なチケットプリーズ

1016:デフォルトの名無しさん
18/09/02 07:15:17.60 HcdhtgGT.net
Rubyが書けるようになるとCやJava,Pythonに対してどんなメリットがあるの?
楽しい以外で

1017:デフォルトの名無しさん
18/09/02 07:17:10.87 JtNT42gE.net
たのしいがRubyの存在意義なのに
それを無視されましても・・・

1018:デフォルトの名無しさん
18/09/02 07:49:22.50 5WqNet32.net
漏れなんか、ruby installer から、7-zip 版(9MB)を解凍して、ユーザー環境変数PATH を通すだけ。
バージョンアップは、フォルダを丸ごと削除する
最初に、gem で、bundler を入れたら、
gem install bundler
後は、Gemfile に書いて、bundle install してる。
rack-test, rspec, selenium-webdriver, nokogiri, mechanize, sqlite3
ただし、7-zip版は、MSYS2 コンパイル環境が入っていないから、コンパイルできない。
websocket のexe が無いから、これに依存しているgem がインストールできない。
websocketのexe(バイナリ)は、どこかに公開されていないのか?
VSCode でデバッグできないし、solargraph も動かない

1019:デフォルトの名無しさん
18/09/02 10:54:21.03 Y9KYS1Vl.net
>>971
そのへんよりはRubyのほうが書きやすいことは間違いない。
楽しいかどうかは外しても、楽ではある。

1020:デフォルトの名無しさん
18/09/02 11:12:49.38 l7vq29kF.net
>>965
だめでした……
・eventmachineはインスールされていませんでした
・ご指摘のコマンドを入力しましたが、"failed to build gem native extention."のエラーが出ました
しかし、Rubyを再インストールするなど紆余曲折の末、gem install solargraphを試したら、無事インストールすることができました!ありがとうございました!
これでVS codeが使えます!

1021:デフォルトの名無しさん
18/09/02 11:27:53.59 l7vq29kF.net
>>954
このへんの拡張機能も入れました!見やすくなってすごくいいです!
ATOM派だったけど心が揺らいできました!VS codeもいいですね!

1022:デフォルトの名無しさん
18/09/02 11:46:37.22 Ja2P7X0l.net
>>971
CやJava,Pythonを書けるようになってから
Rubyのことをチラッとでも勉強してみると、
>>974もいっているように、
「このへんの処理やるならRubyのほうがラクに書けるな」
って部分がわかるかと。
いきなりRubyだけ学んでも、ありがたみがわかりにくいと思う。

1023:954
18/09/02 13:17:29.30 5WqNet32.net
VSCode の拡張機能なら、以下も必需品。
VSCodeのスレも参照
Code Runner
右クリックメニューから、実行できる
Live Server
ファイルを保存するだけで、ブラウザへ反映される

1024:デフォルトの名無しさん
18/09/02 20:10:06.87 4CYRjCOp.net
irb -m
とするbcモードというのがあって分数や行列の計算ができるそうですが、
irb(main):001:0> 1/2 + 5/7
=> (17/14)
irb(main):002:0> 5/6 * 2/4
=> (5/12)
このように分数が計算できて便利ですが、
行列の表現の仕方がわかりません。
irb(main):001:0> [[1,2],[3,4]] + [[4,3],[2,1]]
=> [[1, 2], [3, 4], [4, 3], [2, 1]]
単純な結合になってしまいます。

1025:デフォルトの名無しさん
18/09/02 21:16:55.54 XrvM+5pA.net
行列ってライブリ使うんじゃなかった?
Rubyで回転行列とかやってたときに標準添付のライブラリ使ったような覚えがある
というか、bcモードなんてあるのか

1026:デフォルトの名無しさん
18/09/02 21:19:49.31 XrvM+5pA.net
アレ?

1027:デフォルトの名無しさん
18/09/02 22:00:59.43 elP7igYW.net
レンレンー、アーレーアレ

1028:デフォルトの名無しさん
18/09/02 22:21:48.16 QcUTaH+n.net
>>971
楽しい以外は特に無いが。なにか問題が?

1029:デフォルトの名無しさん
18/09/02 22:26:54.89 elP7igYW.net
その言語じゃないとできない。みたいなことは殆どないよ。
大抵の言語でできることは他の言語でもできてしまう。

1030:デフォルトの名無しさん
18/09/02 22:54:00.92 IfPBe/3n.net
>>980
だいぶ前に無くなった。

1031:デフォルトの名無しさん
18/09/02 23:40:33.06 /9nCrt4M.net
>>979
bcモードはload mathn, fraction or matrix are availableってことだから
Matrix[[1,2]] + Matrix[[3,4]]ってしないとダメ
bcモードじゃないときはrequire 'matrix'する必要がある

1032:デフォルトの名無しさん
18/09/03 18:35:42.70 emnxf15g.net
その用途ならoctave-cliのがいいよ

1033:デフォルトの名無しさん
18/09/04 01:29:42.70 GmOeUrEr.net
アンチ必死すぎだろ

1034:デフォルトの名無しさん
18/09/04 22:49:10.90 JkSql3w1.net
漏れは、Selenium WebDriver, Nokogiri で、
自分のPC の画像フォルダにある、様々なサイズの画像を、
すべての画像の高さを、画面の80% に揃えてから、ブラウザで見てる

1035:989
18/09/05 14:18:39.75 TWmx8fnR.net
Selenium WebDriver, Nokogiri を使って、
自分のPC の、Pictures 内の画像ファイルだけを、ブラウザで見る。
MyUtility クラスで、画像の拡張子だけを抜き出す
picture_paths = Dir.glob( 'C:/Users/Owner/Pictures/*' )
.select { |fpath| FileTest.file?( fpath ) && MyUtility.check_picture_extname?( fpath ) }
.sample( 5 ) # random choice
index_url = "file:///" + File.join(__dir__, 'index.html')
driver.navigate.to index_url
doc = Nokogiri::HTML(driver.page_source)
content_wrapper = doc.at_css("#content") # 全体の枠
picture_paths.each do | pict_path | # 各画像
# 画像ノード。改行を削除する
img_str = <<"EOT".gsub(/\n/, "")
<img src="#{ pict_path }">
EOT
img_node = Nokogiri::HTML::DocumentFragment.parse img_str
img_node.parent = content_wrapper # 親
end
inner_content = content_wrapper.inner_html.to_s.gsub(/\n/, "") # 改行を削除
jsCode = <<"EOT"
var elem = document.getElementById("content");
elem.innerHTML = '#{ inner_content }';
EOT
driver.execute_script jsCode # JavaScript を実行


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