Ruby 初心者スレッド Part 62
■ このスレッドは過去ログ倉庫に格納されています
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で
前スレ
Ruby 初心者スレッド Part 61
https://mevius.5ch.net/test/read.cgi/tech/1503644351/
るりまサーチ (リファレンス検索)
http://rurema.clear-code.com/
Rubyist Magazine - るびま
http://jp.rubyist.net/magazine/
逆引きRuby
http://www.namaraii.com/rubytips/ RubyのClassクラスはObjectクラスのインスタンス。
そんでもって、自作MyClassクラスを作れば、Classクラスのインスタンスとなる。同時に、Objectクラスを継承する。
ってことは、Objectのインスタンスメソッド、ClassのインスタンスメソッドをMyClassのインスタンスは継承している。 Classクラスのクラスメソッドは、
自作MyClassクラスのクラスメソッドとなるか? Classクラスの特異クラスのインスタンスメソッドは、
自作MyClassクラスのクラスメソッドとなるか? オブジェクトの特異クラスのメソッドは、
そのオブジェクトの特異メソッドとなる。
では、オブジェクトの特異クラスのそのまた特異クラスのメソッドは、
そのオブジェクトの特異クラスメソッドとなるか? ご覧ください。
こういう処理すべき本質と離れた下らないことしか話すことのないクソ言語とハエ信者たちです。 ご覧ください
こういうプログラミングの話題でない煽りしかできない底辺です >>772 に言わせれば:
・以下の記事の内容は「処理すべき本質と離れた下らないこと」であり、
・以下の記事に登場するのは「クソ言語」であり、
・以下の記事の著者は「ハエ信者」なんだろね
Pythonのオブジェクトとクラスのビジュアルガイド – 全てがオブジェクトであるということ
http://postd.cc/pythons-objects-and-classes-a-visual-guide/ pythonごときクソ言語に劣等感抱いててワロタwww
追い詰められ過ぎwww消えそうwwwww Ruby にも、アルゴリズム・数学系のライブラリが揃っていれば、
蛇には負けぬものを。ぐぬぬぬぬ
実際、プログラミングコンテスト・パズル系は、Rubyで説明することが多いのに numbers = (1..7).to_a
この配列を、前から走査して、ある数字が見つかった時、
その数字より前の配列と、その数字を含めて、その数字より後ろの配列に、
1-pass で分ける、簡潔な書き方はありますか?
partition, group_by, each_with_object とか?
例、4 が見つかった場合
[1,2,3]
[4,5,6,7] 元の配列に4が1つしかなくてソート済みならpartitionでいいんじゃない
numbers.partition{|e| e < 4}
そうじゃないなら素直にやるしかないかと
i = numbsers.find_index(4)
numbers[0...i]
numbers[i..-1]
もしくは
numbers.take_while{|e|e != 4}
numbers.drop_while{|e|e != 4} SASS, HAML, Markdown とか、皆どれを使っているの?
>>783
ありがとう。素直にやるしかないですか [1, 2, 3, 4, 5, 6, 7].slice_before(4).to_a
=> [[1, 2, 3], [4, 5, 6, 7]]
(to_aはEnumeratorをそのまま使うようにすれば不要) これからRuby on RAILS勉強するんですけど
なんかいい参考書とかHPありますか? >>787
(1..7).slice_before(4).to_a
=> [[1, 2, 3], [4, 5, 6, 7]]
[1,2,4,5,4,6].slice_before(4).to_a
=> [[1, 2], [4, 5], [4, 6]]
slice_before だと、探している数字が複数回あると、
そこから新たに、グルーピングが始まる
>>788
改訂3版 基礎 Ruby on Rails、黒田努・佐藤和人、2015
実践Ruby on Rails 4: 現場のプロから学ぶ本格Webプログラミング、黒田努、2014
黒田の本は、わかりやすい。
ただし、他の著者で、Rails 5 の本も出ているかも > slice_before だと、探している数字が複数回あると、
> そこから新たに、グルーピングが始まる
仕様どおりだろ erbとかのテンプレートを元に画像を生成するgemってありませんか?
thinreportsでpdfではなくbmp,pngなどの画像を出力する感じです 「selenium webdriver screenshot」で検索!
Electron でも出来る >>784
AsciiDoc/Asciidoctor シェルコマンドでimagemagick呼べばいいよ
gemすら使わずに一瞬でできる TSVデータを処理したいんですが
末尾の空白文字(タブ)がいつの間にか消えてしまいます
splitが自動削除するのは分かったけど他でも消えてる様です
この暗黙の空白削除現象を検索しても引っかからないんですがいい検索単語はないですか?
あと勝手に削除する理由はなんなんでしょう 原因分からなかったけど解決しました
ループ内で毎回Hashに加えていくのを一旦stringにまとめてから
ループ後のHashに加えるようにしたら"\txxxxx\t\n"の後ろのタブが消えなくなりました windows環境でrRubyinstaller2でインストールしてruby.exeのパスに非アスキー文字が含まれていると
requireしたときに$LOAD_PATHの非アスキー部分が文字化けしてload errorが起きるんですけど何か対処法はありませんでしょうか?
その場的に今はUTF-8で書いたコードの中で$LOAD_PATHに対応するパスを挿入して動かしてるんですが。。。
諸事情によりrubyはアスキー文字配下にインストールできないものとします Windows のirb でも、ascii 以外は正常に動かないから、
irb を使う時だけ、WSL・Ubuntu の方を使っている
UTF-8 では、cp932(shift-jis)が読めないのだろう
起動時オプションで、cp932 を指定すれば、読めるかも知れないけど、
逆にRuby 内部で、cp932 はヤバイのじゃないか?
UTF-8以外を使うと、他のアプリと通信できないとか、バグりそう
とにかく、PC のユーザー名・パス名などに、半角英数字以外を使うと、
多くのアプリでバグる Windows のPowerShell から、Ruby の1-liner を実行すると、ファイル名だけが\x 表示された。
PowerShellのデフォルト文字コードが、UTF-8 だから、フォルダ名は正常に表示された
> ruby -rfileutils -e "puts FileUtils.pwd"
C:/Users/Owner/Documents/あいう
> ruby -e "p Dir.glob('*')"
["\x{8345}\x{8343}\x{838B}\x{8358}.txt", "\x{8376}\x{838D}\x{834F}\x{838C}.txt"]
> ruby -E :shift_jis -e "p Dir.glob('*')"
起動オプションに、外部エンコーディングをUTF-8のままで指定せず、
内部エンコーディングだけをshift_jis に指定すると、正常に表示された
["ウイルス.txt", "プログレ.txt"]
漏れは一々、起動時やファイル内に、文字コードを指定するのが面倒なので、
Windowsのユーザー環境変数に、RUBYOPT を追加して、--encoding=UTF-8 を設定している。
ただし、こうすると、irb が動かなくなるので、Windows10 のWSL・Ubuntu のirb を使っている
一方、WSL・Ubuntu・bash から、上記を実行すると、
デフォルトで、どちらも正常に表示された
Windows で実行する場合は、PowerShellはUTF-8、コマンドプロンプトはCP932 がデフォルトだから、
これらのシェルの文字コードか、Ruby側の文字コードを指定する
まあ、shift_jis の処理は、危険だと思う。
@などのWindows独自のCP932文字(環境依存文字)があって、
shift_jis・CP932は微妙に異なるから、どこまで正常に動くか分からない なにをごちゃごちゃやってんだ?
こういうのは変換すべきレイヤーで変換するだけの話だろ
Rubyのスクリプト(に限らないが)は
どこでも同じように動かすんだから
ソースコードも内部も UTF-8だ
画面への入出力時に変換させればいいだけ
コマンドプロンプトをUTF-8に変換するって手もある
海外じゃCP932という日本専用の文字コード使ってないことぐらいわかるだろ? 元々はwindowsのワイド文字をうまくutf8に変換してやってこうという方針だったのに
nobuがロケールに変換させまくって動かないだけ
まあ誰もバグ報告しないのも悪いけど Rubyist は、RubyでGem を作れるけど、C で低レベルなI/O を書けるわけじゃない
また、Linux・Windows の両方に対応させるのは、難しい library irb/input-method
https://docs.ruby-lang.org/ja/latest/library/irb=2finput=2dmethod.html
class IRB::ReadlineInputMethod のソースコードを見れば良いの?
それとも、GNU Readline のソースコードかな?
Windows のirb で、日本語がバグるのは、
根本的に、GNU Readline が、Windowsの日本語を考慮していないからじゃないの? というかrubyコミュニティがwindowsを考慮してない。
むしろ怨み、蔑み、嫌っている。昔から。 console.log("あ");
Windows で、node (REPL)を実行したけど、
日本語を入力しても、PowerShell・コマンドプロンプトの両方で、正常に動く RubyはLinuxで動かすようにすればいいよ
WindowsでちょこっとしたやりたいことがあるならC#使え、と
どうせ仕事でやってるRubyはLinuxで動くんだからさ
Windowsマシンでの開発ならVMかDocker使えばすべて解決 ありがとうございました
ググってみたら結構前から報告されていたバグみたいなので諦めることにします >>800
$LOAD_PATHをforce_encoding()で環境に適応したエンコーディングを設定したら?
あるいは、バイナリに設定して、むりやりそれっぽいバイトデータをつっこむとか? >>808
chcp 65001とかしてもダメかね? cmd で chcp 65001 するくらいなら
git for windows インスコして git bash (mintty) 使うと幸せになれるぞ Ruby の起動オプションに、外部・内部エンコーディングか、RUBYOPT で指定できる。
ファイル内でも指定できる
それと、PowerShell・コマンドプロンプト、WSL・Ubuntu・bash で指定できる
これらの組み合わせの中で、文字化けしない組み合わせを探す
または、$LOAD_PATH の辺りで、指定するとか Rubyの2.5.0p2をRubyインストーラーでインストールしたらRubyの2.5.0p0だった・・・ そうそう。結局 Rubyやirb に問題が有るんじゃなくて
単に >>803 が理解してないだけ そういうことだから理解できない初心者は間違ってもrubyなんか使おうと思わないようにね。
初心者や子供にruby勧めてくるのは例外なくマウント取りたいだけのクズだぞ。 書籍のサンプルコードの一部です
この@memoという変数はいわゆる辞書形式のデータ構造で
[remain, pre]は辞書のキー(複合キー?)という理解でいいんでしょうか
ちなみに@を付けないとどうなりますか
変数名に記号が付くのが凄く気になります
@memo = {}
# 計算結果をメモする
@memo[[remain, pre]] = cnt >>824
[remain, pre]は辞書のキーって理解であってる
irb等のREPLで試すとすぐ分かる
@はインスタンス変数に付けるプレフィクス オブジェクトはなんでもイケるんじゃなかったっけ?
ハッシュ値さえちゃんと返せば。 キーにした配列を変化させた時はrehashしないとキーが一致しなくなる
文字列のキーは変化させても、キーはセットしたときのまま なるほどね。先入観として[a,b]ってかいたら毎回newされて、
キーとしては未定義値のnil固定か、別オブジェクト扱いで不定になるか、と思えた str = <<'EOT'
str = << 'EOT'
here doc で、下のように、<< の後ろに半角空白があると、文法エラーになる
それと、WSL のUbuntu 側にインストールしたRuby で、
Windows 側にあるCSV ファイルを処理すると、
改行コードが異なるから、不正な形式のファイルと言われる。
改行コードを、LF だけに変えると、正しく処理できる options に行区切りを指定したら、
WSL のUbuntu 側にインストールしたRuby で、
Windows 側にあるCSV ファイルを処理できた
row_sep: "\r\n" では出来たが、
row_sep: :auto では、エラーになる require ‘pry’
def foo;@a = 1;end
binding.pry
このコードを実行し、出て来たプロンプトで
> cd Object
> instance_methods(false)
=> [:to_yaml, :to_yaml_properties, :pry, :__binding__, :psych_to_yaml]
と出ました。fooメソッドが見つかりません。
トップレベルで定義したfooメソッドはObjectのメソッドに成るのでは?
ちなみにコマンドラインでpryとタイプして
[1] pry(main)> def foo;@a=0;end
=> :foo
[2] pry(main)> cd Object
[3] pry(Object):1> instance_methods(false)
=> [:to_yaml, :to_yaml_properties, :pry, :__binding__, :psych_to_yaml, :foo]
[4] pry(Object):1>
ちゃんとfooが見えます。 自己解決しました。
[1] pry(main)> self.private_methods(false)
とすれば見えました。 RubyからDB扱うときって皆は何のライブラリ使ってるの? RubyでDBを扱う場合、プロダクションで使われているのは世界で唯一ActiveRecordのみ インターフェースじゃん。
バックでmysqlとか動いてるぞ。
いいからちゃんと勉強しろよ。 >>837
ActiveRecordが大半なのは間違いない
ORMを求めてるならsequel、rom、hanami等
素のDBライブラリならmysql2, sqlite3-ruby, ruby-pg
ArelでSQLを構築してDBライブラリ使ってSQL実行してもいい >>839
Rails屋がSQLすら書けなさそうに見えて腹立つのは分からんでもないけど、今はDBインターフェースの話しかしてないぞ 「Node.js超入門、掌田津耶乃、2017」を読んでいるけど、JavaScript の基本は、Ruby
Ruby のSinatra, JS のNode.js を、full scratch で書くと、ほぼ同じ
Rails, JSのExpress + Bookshelf が、ほぼ同じ プログラミング本では、掌田が第一人者。
Unity, UE4 などのゲームエンジンから、最近は、Python, Node.js にも進出
売れる・成長する分野には、必ず掌田が参入してくる。
業界の風見鶏
「Node.js超入門、掌田津耶乃、2017」
この本で、Sinatra, Rails を学ぶ方が簡単。
20時間ほどで読める
後は、YouTube の動画で、OK やっぱ掌田津耶乃ってだめな人だった
調べたらわかったよ 今の時代、開発速度が速すぎて誰も良い本なんか書けないよ
それを書き終わる頃には時代遅れになってるんだから 掌田津耶乃はだめな本
山田 祥寛は良い本
という評価が一般的
掌田津耶乃は何冊か読んでいるけど、
見比べてみるとたしかにダメダメなんだなぁ。 最近は、Python にも、なでしこの作者・クジラ飛行机、
大津真、掌田も、乗り込んできた
この辺は、売れ筋には参入してくる著者
中でも掌田は、ゲームエンジン・言語・Javaのフレームワーク・Node.js など万能 またあらぶっとるんか糞荒らし
はやくRubyコミュで発言しろよ屑 要はね
掌田の出版本を見てみるとわかるが、
初心者を食い物にしている
初心者専用の作者なわけよ、
だからレビューとかで
表面だけかじって書いたかのような本とか
書かれちゃうわけよ。
深く知りもしないであれだけの数の本を書けるわけないよね。
だから掌田はおすすめできないんだわ。
初心者にはいいかもしれないよ?
初心者向けの本ばかり何冊も何年も書き続けているから。 商売としては全然アリだね
とっかかりが欲しい初心者いるだろうし デザインもカラフルで、図解してあるから、すごくわかりやすい。
売れるから、こういう外注予算が大きい
オライリーでは、図解・デザインは無いから、読むのに時間が掛かる。
図解は視覚だから、瞬時に理解できるけど、
言葉の説明だと、それを図に置き換えて、考えないといけないから大変
掌田の本は、ものすごく短時間で理解できるから、効率的。
すごく消化・吸収に良いし、
時間も節約できるから、時給換算すれば大得
漏れには、時間が掛かる・細かい・理解できない、100の知識はいらない。
短時間で、よくわかる、50の基礎知識がさえ有ればよい。
あとは動画を見て、応用するから
「Node.js超入門、掌田津耶乃、2017」
この本で、Sinatra, Rails が分かる
「10日でおぼえる jQuery 入門教室 第2版、山田祥寛(よしひろ)、2013」
この本で、Nokogiri が分かるのと同じ
本が出ていない場合とか、難しい本しかない場合に、非常に役に立つし、速い >>855
食い物とか、被害妄想凄いな。
お前さんがもっとマシな解説ブログでも開いたら?w >>859
頭使ってる?
掌田津耶乃が何冊初心者用の本を出しているか知っている?
ちょっと考えれば、
英語、ドイツ語、フランス語の言語学習の本を書いたとしたら
その言語のことをどこまで知っていて本を書いているんだろうとか気にならないの?
もし気にならないんだったら、表面的な知識だけで満足しているお前とは合わないのでバイバイ ノシ
Amazon.co.jp: 掌田 津耶乃:作品一覧、著者略歴
https://www.amazon.co.jp/%E6%8E%8C%E7%94%B0-%E6%B4%A5%E8%80%B6%E4%B9%83/e/B004L5AED8/ref=sr_tc_2_0?qid=1521344021&sr=8-2-ent
掌田津耶乃(しょうだつやの)。ほぼ男性。テクニカルライター兼3流プログラマ。
自分でも3流プログラマと認めているのに、まったく信者って奴は・・・ 基本的に流行ってるものを、ざっと調べてまとめただけなんだろうな
だから初心者レベルのところまでしか書けない
概要を知るところまでで、あれを参考にしてコードを書いてはいけない HypaerCardの本も出してたから もう30年以上初心者向けの本出してるベテラン ■ このスレッドは過去ログ倉庫に格納されています