Ruby 初心者スレッド Part 63
レス数が1000を超えています。これ以上書き込みはできません。
LISPが複雑怪奇で読みにくいってコイツマジで言ってんのかよ
あれだけ直観的な表記なのに ルールは少ないが決して直感的ではない
ネストが深くなれば単純に読みづらいし
特殊形式やマクロがあるから意味も取りづらい 例えばバイナリ
0か1
超シンプル
でも
直感的か? https://www.ruby-lang.org/ja/documentation/
ドキュメント
→Rubyistに人気のあるソフトウェアには次のようなものがあります。
→windows
→E-TextEditor
リンク先は http://www.e-texteditor.com/
が保険屋さんへのリンクになっていました。 Openglのgemいれて遊んでるけどやっぱり見本になるようなコード付きruby本が欲しい
バッファ操作やシェーダー言語といった基本じゃなくてHDRレンダとかBSP木の実装とか特に サーバ側はrubyでクライアント側はブラウザー+JSが鉄板になっちゃったね 後半は同意
Vue.jsとか使うんだったらサーバーをRailsで書く旨味はほとんど無いから、
サーバーサイドはNodeのようなよりライトウェイトなものか、信頼性重視でJava/C#/Goあたりが鉄板だよ
中途半端なRubyは役割を失ってしまった JSフレームワークと相性の悪いRailsは廃れていくんだろうな TypeScriptの流行もRubyにとっては逆風になったよな
あのせいでCoffee推しだったRailsに急に負け組のイメージが付いてしまったし、
TypeScriptに興味があってもサーバーサイドは「型書きたくないでござる」なのに
クライアントでは「The power of typing」という頭のおかしい状況になってしまうからRubyを使ってる限り絶対に手を出せないわけだし chunkメソッドなのですが、
hash = {}
(1..99).to_a.chunk{|a|a % 10}.each {|k,v| hash[k]=v}
これで期待した値は
{1=>[1,11,21,31,..91],2=>[2,12,22,32..93],3=>..}
だったのですが、
結果は
{1=>[91],2=>[92],3=>[93]...}
これは90台の値でhashの値が上書きされるということでいいんですよね。
hash = {}
(1..99).to_a.chunk{|a|a / 10}.each {|k,v|hash[k]=v}
p hash
こっちだけど綺麗に
{0=>[1,2,3,4,5,6,7,8,9],1=>[10,11,12,13,14,15,16,17,18,19],2=>...}
と纏めてくれるんだけど。 hash = {}
(0..9).each { |a| hash[a] = [] }
(1..99).to_a.chunk { |a| a % 10 }.each { |k, v| hash[k] = hash[k] + v }
p hash
これでいいのか。
でも、これだとchunkを使う意味がないんだろうな。 rubiniusってどうなん?
2018.5.28に3.105がリリースされて、まだ活動しているけれど、使っている人っているのかな? rubiniusはSqueak/Pharo(Smalltalk)やpypy(Python)ではできてるVMのセルフホスティングを断念して
その存在価値をほぼ失って久しいという印象
今のウリは何なの? >>229-230
a / 10 では、0〜9 が連続した同じグループだろ
a % 10 では、0〜9 は、すべて異なるグループじゃん。
0, 1, 2... と、グループが切り替わっていく
chunk は、グループが切り替わる所までが、一連の同じグループ プログラミング教育が話題になりはじめたけど、
Ruby噛ませて補助金や助成金をもっと出させたほうが良い 本当に日本の将来を思うのなら、Rubyは教育分野からは今後きっぱり身を引くべきだと思うけどね
日本のITはクソと言ってる人達が日本のITのガラパゴス化を増長させているという まだ?人気だったことあったっけ?
arduinoやmicro:bitは何でプログラミングしますか? mrubyは純粋に補助金稼ぎのためにやっているプロジェクトで、実際には誰も使ってないぞ
IoTとか地域の中小企業の活性化とか言って公共団体から金を引っ張ってきやすいんだよ
金の集めやすさでいえば今だとAI関連の方がいいだろうけど、役所のスネ齧ってるような連中の中にそんな高度な人材はいない 日本ってどれだけ税金にたかれるかで
組織が成功できるか決まるからな
仕様がないね なんかひろゆきの元に戻るらしいね
荒らしも処刑宣告されてたしこれでひとまず一件落着なのかな ということは過去のひろゆきの犯罪も罰せられるのかな? 調子に乗ってたこの板の荒らしもこれで席を下ろされるわけか Rubyで型を扱うライブラリ・・・いくつがあるようだが
本来このような言語の肝となる機能は言語側が用意すべきなのにな
だって統一しとかなきゃ厳しいでしょ
なのに教祖様が、絶対に型は書きたくないでござる!だから安心して見てられるわ
まぁ今のRubyの状態で型を導入したらそれこそ寿命を縮めるだけかもしらんし
その意味では正しい判断だが、周りからの要求もあるし、こういうライブラリ作る連中もいるし
止められない流れなんだろうな、グズグズになって腐る感じ
改めて初めから静的型にしておけばよかったのにな
型を書くのがそんなに面倒か?型推論もあるし
型関係のライブラリが乱立するよりよっぽどマシだろうよ
別に後出しジャンケンじゃないぞ
昔から宣言や型を書かない言語は糞って言ってる人たちはいっぱいいたからな >Ruby に型が欲しい理由
>https://qiita.com/euxn23/items/8a90480135f017271308
>RubyKaigi2018 の発表で型の導入の検討についての話がいくつかあったものの、
>Matz 自身は型アノテーションに否定的であるという発言をしているとのことを受けて、
>自分の意見の表明として書いている。 RubyやPythonはPerlの代替のお手軽スクリプト言語だから、変数宣言と型はない方が
都合が良いだろ。最もお手軽なコマンドラインに与えるワンライナーでもそんなものを
いちいち書かされるのは不便。スクリプト言語の守備範囲を超えた使い方をしようと
する人がいるから叩かれるだけ。本格的なプログラミングにはC系かPascal系を素直に
使えば良い。 OpenCVもTensorFlowも公式がガン無視の空気言語Rubyが!
OpenCVもTensorFlowも公式が第一級のサポートを提供しているPythonに申し上げる!!
RubyやPythonはPerlの代替のお手軽スクリプト言語だから、変数宣言と型はない方が
都合が良いだろ。最もお手軽なコマンドラインに与えるワンライナーでもそんなものを
いちいち書かされるのは不便。スクリプト言語の守備範囲を超えた使い方をしようと
する人がいるから叩かれるだけ。本格的なプログラミングにはC系かPascal系を素直に
使えば良い。 型が欲しかったらC#でもJavaでもScalaでも
静的型言語がたくさんあるんだから
それ使えばいいだろうに
Ruby3での文字列の不変化くらいであれだけ揉めてたのに
静的型にしたらRubyの良さがかなり死ぬと思う ニコニコ見たいなサイト作りたいならRubyも学ぶべき? >>253
動画配信サイトってこと?
インフラ技術の方が重要だからAWSを学ぶべき
RubyやPHPでフロントと簡単なCRUDサーバー作れるだけの技術者なんか掃いて捨てるほどいるから、あえて君がレッドオーシャンに乗り込む必要はない 掲示板+動画みたいなサイト作って一儲けしたい
構想はある Ruby は基本。そこから、Elixir。
Rust もやってる
C++ の標準化委員会の江添亮もいるし、HDL など、
ニコニコはすべての言語をやってる
「たのしいRuby 第5版、2016」を読めば、
ファイル操作・テキスト処理など、一通りできるようになる
無料のRails チュートリアルもやれば、MVC の基本がわかる >>253
>>255
動画サイトは通信料がものすごい負担だから
大企業じゃないとまず勝負にならないと思うよ
個人運営の動画配信サイトなんてあんま見たことないでしょ?
ユーチューブのまとめとかじゃなくて自前配信では 初期ニコ動みたいに、YouTubeをインフラにしてやれば?w >>261
残念ながら急速に減ってる
新規なら選択肢にすら挙がらなくなってる >>264
それRailsはまだ死んでないと言ってるだけで、Rubyの採用が減っている説に対する反証にはなってないよね
以前に比べて減っていないor増えている証拠を提示しないと >>265
ごめんな、それはただの詭弁なんだわ
減ってない根拠が出されてたんだから、次は減ってると主張する方が根拠出さなきゃ嘘がどんどん
明らかになっていくよ >>266
以前と比べて多いか少ないか変わってないかはその記事では特に触れられてないよ >>267
ごめんな、減ってると主張する側の論拠がないんだわ
そこがない以上、話がかみあわんと思うわけさ >>269
The more a language tutorial is searched, the more popular the language is assumed to be.
ちゃんと訳した上で言ってるのかな? 英語読めない人のために補足しとくと、
>>269の下ではRubyは驚くべき速度で人気を失っており避けるべき言語の筆頭とされている >>271
へぇ、ぜひその部分の英文を原文で引用してくださいよ まぁ、引用できるわけないんだけどね。一切そんなこと書かれてないから
ついに捏造までやるようになったんだねー
書かれてない英文を翻訳したかのように書き込むと smalltalkやlispやprolog、algol、cobolが死んでないようにrubyも死んでへんで!!! クックパッドは、Rails で最大のサイト。
RubyVM の作者・笹田耕一も入社した
大規模サイト以外では、やっぱり、Rails
Python Django 超入門、掌田津耶乃、2018
Rails の本は何十冊もあるけど、Django の本は、初めて出た。
Django は、ようやくスタート地点に立った所 Railsは下火かもしれんが
このフレームワークは最大のコミュニティを持っているので
困ったときに質問すれば他の誰かがだいたい答えを持っているのが大きい。
英語読み書きできるとこのアドバンテージはデカイ。 Rubyが下火という話であって誰もRails下火とは言ってない。
Rails以外のRubyの応用用途が減ってって既にRails専用のDSLに落ちぶれている。
Rails使いたいから仕方なくRails以外に使いようがないクソ言語を覚えなければならない状況。
そんな感じなので最近はむしろRubyのせいでRailsが忌避されてる。
Railsは被害者。 Web系のスタートアップ企業はRuby使ってるとこ多いからRubyは今後増えるよ あれだけ炎上騒ぎをおこしたrailsをまだ使うとかにわかには信じがたいな
Rubyびいき筋以外のフラットな立ち位置からの情報はないの? ruby(rails)は自分でもなんとか扱えるから、外注や人を雇う必要ない。
じゃないの? >>229
まだ観てるかしらんけど
(1..99).group_by{|e| e % 10}
=> {1=>[1, 11, 21, 31, 41, 51, 61, 71, 81, 91],
2=>[2, 12, 22, 32, 42, 52, 62, 72, 82, 92],
3=>[3, 13, 23, 33, 43, 53, 63, 73, 83, 93], なんか全部のスレをageて荒らしとる奴がいるらしいな 今後はウェブアプリでもPythonの方が良さそう?
どっち勉強するか迷う ウェブアプリならRuby
機械学習ならPython いつまで自演でネガキャンしとんねん
いい加減、板荒らすのやめろやボケ 作りたいウェブアプリの性質による
ページ遷移だけのクラシックな業務システムっぽいアプリならRailsは最強
クライアントに寄せてモダンな画面をグリグリ動かしたいんだったら最近はNode.jsとTypeScriptかな Pythonにしかできないことは結構あるけど
Rubyにしかできないことはまったくない Python Django 超入門、掌田津耶乃、2018
Django の本は、フレームワークの巨匠・掌田が初めて出したばかり。
一方、Rails の本は、何十冊も出ている
Ubuntu 18.04 で、snap というパッケージマネージャーができたので、
Rails の動く環境一式丸ごと、配布できるようになったので、
Redmine みたいなRailsアプリが、たくさん配布されるはず
snap は、依存も含めて、アプリの仮想環境丸ごと含む >>295
そんなことない
Rubyの方がDSLが作りやすいとかある > フレームワークの巨匠・掌田
笑わせんなw 掌田って初心者本しか書けないやつじゃねーかw いい加減わかってると思うが本人が宣伝しとるんやぞwww >>295
大方のプログラミング言語はチューリング完全なのでできる範囲に差はないよ 世界での圧倒的な人気の差を背景にクソ雑魚言語rubyを煽ること。 >>301
インデントでブロックを表現するとかじゃね?
言語標準仕様のままなら × インデントでブロックを表現するとかじゃね?
○ ブロックを表現するのにインデントを使うしかない Pythonも童的型付き言語なのになんで持ち上げてるんすか >>304
>>301
PythonにできてRubyにできないことだから
間違ってないだろ Selenium Webdriver・Nokogiri を使って、5ch のスレを読み込んでいますが、
5ch は、JavaScript(JS) で動的にHTML を作っているため、
同時に、Selenium Webdriverも使っています
driver.navigate.to "5ch のスレのURL"
doc = Nokogiri::HTML(driver.page_source)
elements = doc.css("div.post") # すべての投稿
これだけで、JS読み込み後のHTML を取得できていますが、
この書き方で、常に取得できるのでしょうか?
それとも、たまたま取得できただけですか? headless chromeをpuppeteerで操作すればchromeが解釈した通り完全に同じjs適用後DOMそのまんま取れるのにね。
それどころかそのページのjsのDOM操作進行途中に任意のタイミングのDOM状態のスナップショットすら取れる。
オワコン言語とオワコンライブラリ使ってる人たちはする必要のないムダな苦労をしてて笑えるw 今はやりの(需要急上昇中の)ブロックチェーンやAI、ディープラーニングを
扱いやすい言語はどれなのでしょう まずブロックチェーンはPythonですね。
それからAIはPythonです。
最後にディープラーニングはPythonでしょうね。
実際に本屋の棚ご覧になったら分かると思いますよ。
実用に重きを置いた言語なのでPython “で” 学ぶ○○というようなタイトルの本が山ほど出てます。
言語 “を” 学ぶどこかの楽しい()プログラミング言語とは違うんですね〜w >>310
Pythonの得意な分野はPythonですね、って言ってるだけな感じが…
AIとディープラーニングなんて隣り合わせの分野だし Rubyがサーバ取っちゃった事ってそこまで発狂するほどの事?
主流のレンタルサーバはRubyを常備してるけど
あ、これにかこつけて荒らしてるのか >>311
ディープラーニングは隣じゃなくて
AIに包含されるんじゃねーの? >>308
Ruby・Selenium Webdriver からも、JavaScript(JS) を実行できる。
以下では、Showroom のアバターなどを削除している
できれば、Ruby で書いて、JS で書く割合を減らしたい。
JS は面倒くさい。JS で書くぐらいなら、Haxe にするわ
# 要素の削除
jsCode = <<'EOT'
var elements = document.getElementsByClassName( 'footer-menu' ) ;
elements[0].parentNode.removeChild(elements[0]) ;
var elem = document.getElementById('js-avatar');
elem.parentNode.removeChild(elem);
EOT
# JavaScript を実行
driver.execute_script jsCode >>315
それはお前が面倒くさい書き方しか知らないからでは?
# 要素の削除
jsCode = <<'EOT'
$( '.footer-menu, #js-avatar' ).remove();
EOT
お前が書いたそれ、一行で終わるんだわ Javascriptよく知らんけど
>>317みたいなレスすこw じゃあネイティブapiのquerySelector使えばいいだけ
>>315みたいなゴミのような書き方はここ10年くらい見たことない 5ch を、Selenium Webdriver で、Chrome に読み込んで、
Nokogiri で、DOM を更新して、ページを改変しようとしても、エラーになる
スレの書き込みに、画像リンクがあると、
それをその投稿の次に、表示しようとしているのだが
ずっと、JavaScript が動き続けているからかな?
エラーになる。なんでだろ?
C:/Ruby24-x64/lib/ruby/2.4.0/net/protocol.rb:229:in `write': An existing connection was forcibly closed by the remote host. (Errno::ECONNRESET)
画像リンクだけを取り出して、新しいページを作った方が良いのか? コネクションをいったん切ればいいんじゃないの?
サーバー側が同一クライアントの同時複数のコネクションを受け入れないとか? >>315
みたいに、Selenium Webdriver から、JavaScript(JS) で、
Showroom のアバターなどを削除しても、動画はちゃんと見れる
Nokogiri で、DOM を更新すると、ダメなのかな?
DOM を追加するのが、ダメなのかな?
315 では、DOM を削除しているだけだから、エラーが起きないのかな?
5ch は、設計・プログラムも素人レベルで悪いから、ずっとDOMをループし続けているとか、
何かDOMを更新できない理由が、あるのかも知れない
しょせん、他人の書いたアプリは、どうにもならない。
時間を掛けて解析するのも、馬鹿らしい RubyでwinAPI呼んで直接ウィンドウを作ったりしてるけど、
良く考えれば便利だなこれ Win API自体が今となっては便利じゃないと思うが? Rubyしか知らないとそんなことすら便利に感じるのか
それはそれで幸せなのかもな Windows GUI は .Net Framework 一択だよな JRuby + JRubyFx でも簡単なGUIなら十分だぞくそ楽に書けるし 人に使ってもらうときどうするの?
る、るびぃいれてくだちいって言うの?w GUIライブラリつかわなくても直にあつかえるのって便利だろ いやだから.Netでいいじゃん
むしろこれ以外でやろうとするな たいてい初心者、経験数年レベルのプログラマは自分が知っているプログラミング言語だけで何でもやりたがる。 >>338
というかおまえ、IPの出るスレに何度も書き込んで大丈夫か? >>340
IPアドレスが出ていて何か問題なのか?
この手の話はよくわからない。 require 'uri'
url_address = "https://pbs.twimg.com/media/DhtJ198VAAAM28d.jpg:orig"
uri = URI.parse url_address
p file_name = File.basename(uri.path) #=> DhtJ198VAAAM28d.jpg
すごい!
自動的に、ファイル名の末尾の、:orig を除いてくれた!
どうなってるの? 5ch の書き込み内の、画像のURL <a> を、
自動的に開くように、<img> に変換しようと思って
乃木坂板などで、一々、クリックして開くのが面倒だから
5ch ブラウザもたくさんあるけど、Ruby 製のは無いだろうし >>342
「:」は、URIのパス部に使えない文字だから、その直前で切っただけじゃないの? >>346
先日言ったけどおまえ、IP表示スレに何度も書き込んでるよな
その上で荒らし行為を続けてるのか? はぁ?>>346は俺じゃないが。
てきとーに脅しこんでるだけか。
小癪なるびぃ信者らしいやww ID換えて自演してるって何スレも前からずっと指摘されてるだろ
何、なかった事にしてるんだ? バカだなぁw
そんなん通じるのお前の中だけだっつうの
小学生かよruby珍者はww ルーピィ信者「お前のIP抜いたからな!友だちのスーパーハカーに頼んで個人情報晒してやる!」
2000年代のネットかよワロタwww
さすがルーピィまるで成長しないwwwww おまえが自分でIP表示スレに書き込みしたんだろうが
何寝ぼけてんだおまえ
つーかレス稼ぎでこんな事やるな だからそのスレがIP表示かどうかなんていちいち気にして書いてねーっつーの
お前が「うわーんスーパーハカー()にコジンジョウホウ()晒されちゃうよ〜」って大騒ぎしてるとして、なーんで他人もみーんなお前みたいにバカ晒してると思い込んじゃうかなぁwww sinatraでグローバルで変数を定義してもリクエストの度に初期化されてしまうんですが
値を保存し続ける方法はないでしょうか? シナトラのシナをぐーるぐるとって
シナトラのシナをぐーるぐるとって
シロトラにつけたらシマトラ! 👀
Rock54: Caution(BBR-MD5:1341adc37120578f18dba9451e6c8c3b) よく知らないけど、OS の環境変数とか、
sinatra や各アプリの設定ファイル・Database とか System.getProperty("line.separator")
System.lineSeparator() //JDK1.7
System.out.printf("あ%nい");
Java では、OS に依存しない改行コードを、これで表せるけど、
Ruby ではどうやるの?
Windowsでは”\r\n”、UNIX系では”\n” そんなものは必要ない。
なぜならRubyはUNIXに強く依存しておりUNIX以外で使うことが想定されていないから。
こんなことを言うと被差別ドザ民はRubyInstallerがあると反論するかもしれないが、RubyInstallerはMSYSを使っておりUNIXを内包している。 RubyがWinとGUIへの親和性が低いのが
ランキング上位言語に勝てなかった要因のひとつ Windowsならファイルをテキストモードで開けば勝手にCRLFになるでしょ 逆に、Pythonだと問答無用でCRLFになって、LFで統一したいと思うとめんどくさくなる。
Javaの様にどっちでも簡単にできる方がいい。 おい、Rubyスレから出てくるなよ
何しれっとIP切替えて他スレに書き込んでるんだ IP表示スレに書き込んだ上で荒らし行為とか頭がおかしい 思い込みか決めつけか、どっちにしろ頭おかしいのはお前。
で、具体的にどれよそのIP表示スレとやらは?
犯罪者のお前と違ってまっっっっっったく意識してないからどのスレかなんて覚えてないぞ。 過去ログ見たけど最近ずっと荒らされているねここ
毎回「私は荒らしじゃないよ」って言いながらネガキャンしている人いるし
何があったの? 荒らされてるって騒いでるおじさんのほうが荒らしなんだけど、そろそろ自覚して IP表示して自分で荒らし行為してますって宣言してるからどうしようもない
何度もおかしいって忠告してるのに >>369
ほんまこれ
なんも荒れてない時にも湧いてくるから意味不明だわ
んできっと俺も荒らしの自演認定されるんだろな >>368
この様にして毎回荒らされるんです
>毎回「私は荒らしじゃないよ」って言いながら
まさにこの通り IDを変えられるという事はこれ以降も荒らしが出てくるのか
出てくる度にチェンジって言ってやれば良いんじゃね? CとRubyの繋ぎで構造体をやり取りしたいんだけど、
require 'fiddle/import'
module M
extend Fiddle::Importer
dlload "libc.so.6"
extern('int gettimeofday(void *, void *)')
Timeval = struct( ["long tv_sec",
"long tv_usec"])
end
timeval = M::Timeval.malloc
e = M.gettimeofday(timeval, nil)
if e == 0
p timeval.tv_sec #=> 1173519547
end
上のコードよりもっと簡単な方法って何かない? Rubyはじめようと思ったけど
MacにRailsをインストールできなくてつんだかとおもたわ Macとかだとrbenvで入れて遊ぶのが吉な気がする 運用情報板でここの荒らしが盛大に自演をミスって自爆
本当に何を考えてんだ荒らしは
>>376
[1,2,3,4].pack("iiii")
みたいな感じで配列をパックして文字列として渡す ttps://qiita.com/is-lab/items/e0443b79da117ed48294
homebrewとrbenvのインスコ方法はぐぐればすぐ見つかる つまりいちいちググらないといけない。
すぐ使えない。 えーそれはさすがに無理だろー!?
無知な状態からググる必要があるのは
Ruby以外のどんな言語でも同じだろー? ググらないといけないから使えない
というのはさすがに無理筋 >>376
dl/win32の頃はarrayをpackしてわたしてた
require 'Win32API'
api = Win32API.new('foo.dll', 'foo', 'p', 'v')
args = ["\0" * 256, "\0" * 256, "\0" * 256]
api.call(args.pack("p3")) ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [i386-mingw32]
この式だとシンタックスエラーと表示される。
p { a: 1, b: 2, c: 3}.map{ |k, v| [k,v * 10] }
hash_a =をつけると正常になる。
p hash_a = { a: 1, b: 2, c: 3}.map{ |k, v| [k,v * 10] }
上の式だとなにかに代入しないのでシンタックスエラーになったのでしょうか? >>390
ハッシュじゃなくてブロックと解釈されたんだろう
p({...}) とすればエラーは消えるはず p({ a: 1, b: 2, c: 3}.map{ |k, v| [k,v * 10] })
と書けばいいと思うよ
p(に限らずメソッド名)の後に{が続くとブロック引数と解釈されるので
それに続く記述は式になっていないと構文エラーになる…んじゃないかな
ちゃんとparse.y読んでないからわからんけど サクっとRailsを勉強したけどマイグレーションクラスの書き方が気持ち悪いな 静的型付き言語から来たけど、リファクタリングが1万倍つらい 静的から来たんなら一発でリファクタリング不要なの創れ つまり動的型付け言語ではなく静的型付け言語を作れと?
TypeScriuptみたいに、TypeRubyを作れってことですかな? 作ろうかな。その名も「なんちゃってCrystal」 書き込み時間みたらここまで全て自演か
質問・雑談スレ357@運用情報板
http://agree.5ch.net/test/read.cgi/operate/1530175433/
のスレの星もちって言われてる人が自演でここを荒らしてるので気をつけてね >>402
お前が例の荒らしなの?
というか人の質問ぶっちしてよくも荒らしてくれたな
失せろ この人は本物のアレな人なんで、これからもずっと居続けるだろうし、
我々が我慢するしかないのですよ やっぱりそうだったか
ID:/HPmTQSMはNGにつっこんで無視するとして自演はどうする?
いくらでもIDを変えられるだろこいつ 荒らしを擁護する奴とか明らかにネガキャン狙いの奴は自演だろうし、
片っ端からチェンジで良いんじゃね? 初心者質問ですいませんがwebサービスを実装した時の認証って一般的にはどのようにしているのでしょうか
単純なhtmlからajaxでwebサービス叩くのは簡単ですが、認証も伴うとなるとgetやpostでどう実現しているのか不思議に思いまして twitter api とかは、oauth認証を使っている
gem 'twitter'
gem 'oauth'
gem 'omniauth-twitter' 今、mrubyってのを組み込み用に作ってるんだよな確か
Cで書かれてる実装の移植じゃダメな理由でもあるの? >>410
MRIはUNIXに依存してるから組み込みでは使い物にならない > 今、mrubyってのを組み込み用に作ってるんだよな確か
今・・・作っている・・・?
もう何年も前から聞く名前だが
終わらないプロジェクトじゃないかw 誰も何も要求してないから要求仕様というものが無いwwwww
打出の小槌wwwww 補助金貰ってるから作ってるポーズだけは続けなきゃいけないんだよ
MRIのコミッタ達が飯食えなくなったらそれこそ終わりだぞ Rubyと組み込みってあんま相性良さそうに思えない
Windows(GUI)とかAndroidとかもっと進出して欲しかった あと最近Pythonに押されてる理由の機械学習系のライブラリとか
リソース投入して欲しい分野他にいっぱいあるのに そういう海外の特定企業のプラットフォームに依存したものだと補助金貰いにくいからね
機械学習は今のRubyにはできる人材がいないから無理 >>411
ラズパイやなんかはほぼlinuxの組み込み用ディストリだろ?
別にunix依存でも組み込みで遊べれば良いんじゃないかと個人的には思う
というかなんか荒らしが湧いてるな スマフォは端末20億ぐらいが今の所上限、人口から計算するとそうなる。
IOTになると300億ぐらいになると言われている。
だから市場としては組み込みのほうが遥かにデカイんだ。 >>420
補助金の申請書に書くには良い説明だね
現実にはそれは詭弁で、何百億もばら撒かれるような大量生産するデバイスに、
ラピッドプロトタイピングを売りにしてるmrubyなんか使われる訳がないんだよね
一方プロトタイピングでコストを気にしないならラズパイ的なLinuxボードでフルのRuby動かせばいいわけで、完全に論理的に破綻してる ああ、商業的にmrubyを組み込み市場にって事か
ホビー的なものやプログラム教材的なものも含めればそれなりに大きいし IoTで夢はひろがりんぐ
でも現実はJavaScriptとPythonに
シェアをゴリゴリ取られてる Ruby本体のパーサってツール使って書かれてるの?
それとも手作業?
ずいぶん前に何かツールつかって書かれてる、みたいな記事を見た記憶があるんだけど
あやふやで思い出せない >>419
いや組み込み用っていうかそういう組み込みじゃない
linux動くなら普通のruby使えばいいし あんなに嘘を書き込んでたネガキャン厨が出てこなくなった
何故だ? bison と言うツール(と言うことが聞きたい?) カーネル(?)オブジェクトと一緒にリンクしてローダからジャンプして起動される様な組み込み。それこそファイルシステムも無いようなものもターゲット。 >>425
この本に書かれていたような気がする。
https://www.ohmsha.co.jp/book/9784274050657/
確かツールでは上手くできなくて、独自のものを使っているだったような。 質問を普通に読むと、
パーサジェネレータに食わせるソースを人手で書いてるのかツールで出力してるのか、
聞いているんだと思うんだが
例の荒らしは日本語が不自由なの? >>435
元の質問ってこれだよね
>>>>425
>> Ruby本体のパーサってツール使って書かれてるの?
>> それとも手作業?
普通に読むと、パーサのコードがジェネレータで自動生成されているのか、
あるいは手書きでゴリゴリとパーサをC言語で書いているのか?という内容で、
>>429と>>432が適切なレスを返している(>>431は知ったかぶりのお馬鹿さん)
で、それに対して日本語が不自由と噛み付く>>435の日本語読解力に対して小一時間
ちなみに、Rubyの構文解析(パーズ)に関しては、
以下の文書、いわゆる RHG - Ruby Hacking Guide で詳しく解説されてる
・Rubyソースコード完全解説
http://i.loveruby.net/ja/rhg/book/ >>431の本は読んだことないけど、いくらRubyistが書いた本とはいえそんな低レベルな間違いをするとは思えないから実際の記述が気になるな
独自に作ったと書かれてるのってパーサじゃなくて字句解析器のことだろうか
字句解析器は手書きでも比較的簡単に作れるので、パーサは自動生成で字句解析は手書きというのはよくあるよね 標準ライブラリのRipper クラスで、字句・構文解析ができる。
文法規則から、Bisonでパーサを作る
文法規則(parse.y) → Bison → パーサ(parse.c)
「Rubyのしくみ」に書いてある Rubyの文法は、改行が文のセパレータだったりなかったりするので、yaccでは書きにくそうな気も。 >>437
>独自に作ったと書かれてるのってパーサじゃなくて字句解析器のことだろうか
Rubyの字句解析器は(次で詳しく書くけど)手書きだから、「独自に作った」には該当しないね
で、>>431の書籍は手元にあるから「独自に作った」部分を推測すると、p68 第3章の
囲み記事にある「YARV命令を間近に見てみる」の内容ではないかと思われる
この記事によると、Rubyの仮想マシン YARV の命令セットはC言語で実装されているが、
実際には insns.def という命令セット記述向け外部DSL(ドメイン特化言語)で書かれており、
Rubyで書かれた独自ツールを用いてC言語ソースが自動生成される、とある
>字句解析器は手書きでも比較的簡単に作れるので、
>パーサは自動生成で字句解析は手書きというのはよくあるよね
うん、よくある
ただし、Rubyに関しては字句(トークン)の意味が文脈によって異なるので、
字句解析器を汎用的なツール(Flex, Lex)で自動生成するのは原理的に無理
だからRubyでは字句解析器をC言語で(=手書きで)ゴリゴリ書いてる /__.))ノヽ
.|ミ.l _ ._ i.)
(^'ミ/.´・ .〈・ リ
.しi r、_) | 字句解析器はわしが独自に作った
| `ニニ' /
ノ `ー―i´ parse.yって結構な量になるだろ
まじで手書きなの? flexはライセンスの問題があるのに対して、bisonは解決してるので、字句解析だけ手書きという場合もありそう。 def hoge(ary)
if ary.length > 10
略
end
def hoge(ary)
return ary.pop if ary.length > 10
略
end 途中で投稿しちゃったすまん
hoge1を書く時にhoge2みたく1行でぱぱっと書いてしまいたくなるんだけど、あまり良くない書き方かな?
return ary.popの値を別に使うわけじゃないから却って読みにくくなってるかな?
同様にbreak(ary.pop) if 〜 みたいなこともやりたくなる
def hoge1(ary)
if ary.length > 10
ary.pop
return
end
略
end
def hoge2(ary)
return ary.pop if ary.length > 10
略
end かといって (ary.pop; return) if 〜 とは書きたくないんだよね 却ってもなにも普通に読みづらい
やる事がpopとreturnの2つあるんだから素直に別々に書け >>448
サンキュー 横着しないで書くことにするわ 普通、ワンライナー書いて通ったら、
早めにリファクタリングするだろ
そんな後々まで残しておかないよ どうでもいいだろ
どうせRubyなんか後でメンテできないんだから、後でばっさり捨てても惜しくないくらいの簡易な実装を心掛けたほうがいい 一昔前の Web プログラミング言語のトレンドは動的型付け一辺倒でしたが、
その時代も終わり、静的な型宣言を再評価するフェーズが来ているように思います。
この背景には、おそらく Web プログラミングの規模が年々肥大化しており、
動的検査のコストが増してきたのが理由にあるでしょう。 まーたネガキャンしとんのか
ほんと懲りないな荒らしは ステマ荒らし VS ネガキャン荒らし
ネガキャンじゃないやつは
ステマ荒らしだよw だから大規模開発は、Haxe
ソースコードをそのまま送って、10言語に変換できる >>463
変換できたってライブラリを使った時点で破綻するんだから意味ない
jQueryを使ったコードをC++に変換したって動くわけない ス テ マ 荒 ら し
↑の粘着のセンスって最悪やな RubyスレでRubyのステマ荒らし?
こわいわー
いやマジでこわいわー 荒らし「ステマ荒らしVSネガキャン荒らし(ドヤッ)」
凄い語録が誕生したな 粘着さんは自演でネガキャンしないと発作が起きちゃうから、
みんな優しくしてあげて
けっして「ステマ荒らし(ドヤッ)さん」なんて呼んではだめですよ
話は変わるけど、
ブロック内のself省略したらself以外のオブジェクトが割り当てられるようなメソッドってどんくらいあるの? self省略って便利なのは便利なんだよな
いちいちselfって書かなくて良いから 自分は静的型の恩恵を受けてRubyを開発しているのに
その言語のユーザーにはそれを与えない、まさに鬼畜の所業
それだけに留まらず、動的型の方が優れていると嘘を教え込み
人の人生観や世界観を台無しにして囲い込み
骨までシャブりつくす姿勢は流石の宗教家
「Rubyをキメると気持ちいい!」 質問の間に色々レスがついたからもう一度書くわ
ブロック内のself省略したらself以外のオブジェクトが割り当てられるようなメソッドって何があるの?
スレの上の方になんか関係しそうなコードが書いてあったから疑問に思ったんだけど 意味がわからない文章だが、コンテキストが入れ替わってることを言いたいのかな
そんなメソッドは作っただけ存在するけど ステマ荒らし(ドヤッ)さんはネガキャンがほんとうに大好きだな
>>474
mapのやつ? >>477
ステマ荒らし(ドヤッ)さんは帰って
どうぞ >>474
継承を使えば普通だけど、何か別の事柄を期待しているのかな?
irb(main):001:0> class Foo; def foo; puts 'FOO'; end; end
=> :foo
irb(main):002:0> class Bar < Foo; def bar; foo; end; end
=> :bar
irb(main):003:0> Bar.new.bar
FOO
=> nil
2行目、メソッド Bar#bar の定義内で self を省略したメソッド foo が
呼び出されているけど、この時、実際には Bar(= self) ではなく
Foo が割り当てられる
>スレの上の方になんか関係しそうなコードが書いてあったから疑問に思ったんだけど
アンカって知ってる? .map{}やらの中のselfの事だろ
なんかこの粘着、時々日本語の読解がおかしくなるよな 書いてる本人しかわかってないから、自演が惨めすぎるんだが >>481
>.map{}やらの中のselfの事だろ
具達的なコードで示すか、過去レスのアンカをカキコしる JavaScript, TypeScript では、this が文脈で変わるので、ややこしい!
それを避けるため、jQuery, Haxe では変わらないようにしている >483デフォルトの名無しさん2018/07/31(火) 13:32:54.45ID:0cuGom8L
>やっぱり荒らしてるのは星持ちか
このレスがついてから急にレスが付きづらくなったね RustってちょっとRuby臭がするんだけど、近づいてみるとC++の時に嗅いだ嫌な臭いがして頭がクラクラする ブロック付きメソッドで与えられたブロックを、
メソッド内でしかも別のコンテキスト下で処理したいんだけど方法ってある? 【初心者必見!】Ruby evalを理解し活用するための4つのTips
https://www.sejuku.net/blog/21273
instance_eval, class_eval, module_eval とか? >>493
あるけどevilだしめんどくさいやめとけ 今からRuby勉強してルビィスト名乗ってドヤ顔できる?
アンタらのように下々どもの言語ディスる能力ほしいんだけど もはやAppleにいらない子扱いされてるObjective-Cすら超越した近寄っちゃあかん言語の筆頭
https://pbs.twimg.com/media/Di_fIwmUUAES3Lk.jpg 単純により給料がいい言語に移ってるだけでRuby開発はどこもやりたいんだよね?
企業が欲しい言語エンジニアとエンジニアがやりたい言語に違いがあるだけじゃない? またステマ荒らし(ドヤッ)さんがネガキャンしてる >>504
荒らし荒らしいってるお前も荒らしだろ
今見たら俺のレスがステマ荒らし(?)認定されてて笑ったわ
大して荒れてない時でも荒らし荒らしうるせえんだわ >>504
この人の自演は何かの病気なんじゃないか? ステマ荒らし(ドヤッ)さん「RubyスレでRubyをステマするのはずるいブヒー。これじゃネガキャン出来ないブヒー」
ステマ荒らし(ドヤッ)さん「悔しいブヒー。ステマは荒らしブヒー」ブヒブヒ rubyはとりあえず作ってみるという作業に向いていて、それで良いものをたくさん生み出したが、
それらは結局他の言語へ移植されていって、rubyでなくてもいい状況になってしまった
ruby3に向けて速くしようと頑張ってるが、それでもたかが知れてるので、
新しい洗練された標準ライブラリを作ることも必要だと思う というか荒らしは日中から書き込んでるんだな
もしかして無職? >それらは結局他の言語へ移植されていって
RoR はどこに移植されましたか? >>510
それが残って存在意義になってるのが現状だね QZaw55cn4cのトリップって運用情報板で言われてるボランティアとか星もちだろ?
で、何したの? >>514
星持ちではありません
>>515
5月に固定資産税を払いました ああ、やっぱり
IP切り換えて別のスレに書き込む度に>>516が高頻度でついてくる事があったからおかしいと思ってたけど
運営ボランティアの人だったんだ 運営ボランティアの人を頭がおかしい人のように言わない
失礼だろ。奴隷にも人権はある。 「IP切り換えて別のスレに書き込む度に>>516が高頻度でついてくる」って
もう統合失調症の被害妄想だろこれ……
悪いこと言わないから精神科か心療内科で一度診てもらえ >>513
ID:6NCuGzpDが星もちだろうがなかろうがどうでも良いだろ
何故そんなに必死なの? 動的型なんかにするから袋小路になるんだよ
これは初めから決まってたことでどうしようもない
経験的に、プログラムは何でも可能な限り静的なほうが良い
これを何でも動的なほうが良いと考えるのは経験が足りてない
スタティック最高 >>524
君がRailsのような画期的かつ有効なRubyの使い方を新たに示せば余裕で救えるよ。
Rubyにとって不幸だったのは、Railsの流行によってRubyに入ってきたのが頭悪い連中ばかりで、
Rubyに次のイノベーションを起こせるような人材がいなかったこと。
君がその一人でないというなら、今こそ君自身が君自身の力(コード)でGitHub上で君の能力を示しなさい 日本人がふがいなさすぎるんだ
なぜ静的RubyやスケーラブルなRubyを勝手にでもつくろうとせんのだ
ちょっと手直しするだけだったろうに
Rubyをつくるように促した連中はそういう気運を待ってたにちがいないのに >>531
はそのスレを荒らしてマッチポンプ繰り返すから嫌なんだよ ボラかどうかの話をしてるだけなのに
荒らしがでてくるからおかしいと思ったけど
コレ、酷くないか? Rails の影響は、Node.js + Express など、すべての言語のフレームワークへ及ぶ
Ruby は関数型で、Groovy, JavaScript などに似ている。
それに型推論を付ければ、Kotlin, Haxe になる
他にも、Elixir もある
だから、Rubyを学ぶと、数言語できるようになる Rubyの次のverはどうなるかな
parse.yを書いてる環境も公開してくれたら良いな Rubyのyaccソースを書いてるツールとか言語開発している環境とかの本出して欲しいな Matzは普通にEmacsオンリーだぞ
20年前から何一つ変わってない それ、エディター話だろ
たしかyaccソースは複雑になりすぎて内製のツールつかってるんじゃなかったか?
どこかにそういう記事あったよな確か >>541
gitのコミットログ見たらすぐわかるけど、普通に手で編集してるよ ヒエ……あれ直に書いてるのか
まあそこがrubyの肝でもあるが いやいや、気になるならgithubにコミットログくらい見に行くだろう普通に考えて
そんなだからruby使いがいつまでも馬鹿にされるんだぞ だから自分で確かめろよw
仮に変なツール使ってたとしても、手でやっても全くの手間変わらないような修正が並んでるよ 普段から型すら書きたくないって言ってるのに
コミットログなんか見るわけないじゃん
それが必要なことであってもだ QZaw55cn4cがまたあばれてんのか
ほんと懲りないな スタンドアロンで使えるActiveScriptRubyみたいなのが欲しいな
今風に言えばRubyをくっつけたElectronみたいな奴 rubyはプログラミング集中に邪魔な面倒な約束事を書くのを端折りたい人が使うもんじゃないの? >>551
Ruby版Electronは欲しいな
Rubyと言えばRails一本槍で
WindowsとGUI軽視が
Rubyの普及を妨げたと思う RubyをGPL感染なしで使うのは難しいから、Rubyをアプリに組み込むような配布形態が流行ることはないよ たしかにGPL汚染でプロプライエタリで使うのは難しくて
Linuxみたいなフリーウェア的思想の方へ
流れていったから現在があるんだろうね
Androidのネイティブアプリも軽視されてると思う
まあこれもできなくはないけど普及してはない PCやAndroidのアプリにバンドルするならmrubyだろうけど、
さすがにmruby使うのはだいぶ本末転倒だからなあ
そこまでするくらいなら普通にElentronのNode使ったほうがよっぽど生産性高い ちょっと前にmrubyを使ってみた事があるけどBignumが標準でないためFixnumとシームレスに変換されなかったりして使いにくい
速度もCRubyに劣るしPC用アプリケーションの処理系としてはあまり向いていないと思う >>535
Expressが影響を受けたのはrailsではなくsinatra。
railsしか使ったことないのバレバレだな。
rubyとjsは全然似てない。jsの関数の万能さ、簡潔さをどうこねくりまわしてもrubyのblock proc lambdaみたいな面白仕様にはならない。
別にjsがすべてに優れてるわけでは全然無いが第一級関数の扱いについてだけは太刀打ちできないだろ。 >>560
JSよりRubyの方が書きやすいんだが OOPするならクラス定数すら定義できないJSは問題外やわ みんなtypescriptで書いてるから気にしてない >>561>>562
ようするに全然似てないだろ?
似てるって言ってる>>535に対する反論なのだが。
勝手にjsからの回し者認定して攻撃してこないでよね。
わざわざ優れてるわけでは全然無いとまで書いたのに。 > Rubyを学ぶと、数言語できるようになる
こればっかりは全く同意できないな
Ruby使いはRubyに固執して他の言語に手を出そうとしない傾向が他の言語使ってる人に比べて強い
性質的にはVBerに近い JS書きやす〜〜いwwwって人もいるんだな。
オジサン驚いたわ。 rubyは手に馴染むけど、いろいろなライブラリを使う状況になると、
入力補完が優れた他の言語の方が効率的になっちゃうんだよなあ JSが書きやすかったら
AltJS言語があんなに出ないはず ところが今はVSCodeがあるからJSクソ書きやすいんだよなあ
更に高い生産性や厳密なチェックを求めるならTypeScriptもある
VSCodeもTSも宗教的にRubyと相性最低最悪なのが悲しいところだが >>568
昔のJSは書きにくかったんだよ。
でも今はJSが書きやすくなったから、
生き残ってるAltJSはTypeScriptだけになったよ eachによるカウンタいらずのループとかRubyの大きなアドバンテージじゃね
最近のJavaScriptはカウンタを回さなくてもすむようになったんだっけ? >>560
Node.js は、Sinatra をフルスクラッチで書くのと同じ。
Node.js + Express が、Rails と同じ
JavaScript 第6版、2012、David Flanagan
これは、サイの表紙で有名な、JSのバイブル「サイ本」。
Flanagan は、Rubyの本も出している
プログラミングElixir、2016、Dave Thomas
この人も『プログラミングRuby』という本を書いている
たいてい、有名な言語学者は、Rubyの影響を受けている
Groovy は、Rubyに似てる。
Rubyを静的にすれば、Haxe, Kotlin に似てる >>571
forEach はだいぶ前からあるし、今は for of もある
ていうかRubyのアドバンテージとしてeachしか思いつかないってそれ他の言語知らないどころかRubyもよく分かってないだろ
あんまりRubyだけに固執しないで他のも触ったほうが結果的にRubyの理解も深まるよ >>571
for of がある
ただrubyのeachはすごいと思う
というかブロックがすごい
breakとかnextとか使えるもん
そんなん出来ひんやん普通 RubyよりJavaScriptがすごいのは
クロージャーだな。 クロージャは明らかにJSの方が優れてるでしょ
Rubyは第一級関数ではないという致命的な欠陥がある まぁいくら優れたところがあっても動的型ってだけで
過去の言語のグループに入れられちゃうんだから笑えるね >>572
あん?糖質か?
だからそのExpressが参考にしたのがSinatraだっつってんだが?Railsじゃなくて! Rubyはプロパティとメソッドの区別がないとか。何でも再定義できるとかもアドバンテージじゃね
これはJavaScriptあたりの範疇から外れるけどCライブラリとしゃべるようなケースでこの差は
めっちゃでかいと最近痛感している
>>574
忘れかけていたが・・・改めて調べてみた。for inは罠 またネガキャンしにきたのか
どんだけ自演がすきなんだ? お前らデザイン含めてフルスクラッチでアプリ作れる能力あるの? エンジニアごときがデザインできるって笑えるレベルだと思うけど 設計部にいたとき英語名刺の部署名がDesign Department になってたよ。
Designだけだと設計という意味で取られるのだろう。
日本人が一般に思い描いてる「デザイン」は英語で言うとAesthetic Design だろう。 System Designというのもあるな。日本人には意味も必要性も理解されないが Ruby界隈はWindows嫌いが多いよな。CrystalもWindows版がないしw まーた嘘ついてるのか
おまえがWindows嫌いなのはわかったってば
自演でWindows嫌い演じても、もう信じる人はおらんよ ミミ ヽヽヽヽリリノノノノ . .|
ミ ,,、,、,、,、,、,、,、、 彡 . ..|
l i''" i彡 . .| オレの新Java
| 」 ⌒' '⌒ |.. |
,r-/ <・> < ・> | . .| これで儲ける
l ノ( 、_, )ヽ | .
ー' ノ、__!!_,.、| . |
∧ ヽニニソ l /
/\ヽ / .. ̄|
/ ヽ. `ー--一' ノ/ヽ ノ7_,,, 、 ______
/ (⌒、"⌒ソ⌒ヽ─ '" `、 ( ィ⌒ -'"",う/壱 / /万:/|
~''(_)(_)(_)(_)ソ ヽノ ,イ^_.|≡≡|__|≡≡|彡|_____
ヽ/`、_, ィ/ ヽ─/ ̄//|≡≡|__|≡≡|/壱//万 :/|
/ / ) / ≡|__|≡|≡≡|__|≡≡|≡≡|__|≡≡|彡|
/ ボラクル i|≡≡|__|≡|≡≡|__|≡≡|≡≡|__|≡≡|彡|
\ ノ |≡≡|__|≡|≡≡|__|≡≡|≡≡|__|≡≡|彡|
\__ / ノ|≡≡|__|≡|≡≡|__|≡≡|≡≡|__|≡≡|/ 久々にRubyに立ち返ろうと思ってたんだけど
やっぱり今もWindowsだと環境構築は面倒っぽいな
楽になるツール作ったら需要ある? ツールで何を改善する気なんだ?
個人的な不満はWindowsとのインターフェイスに絡むキャラクタコード
以前に作ったツールはUnicode文字を含むコマンドラインオプションを受け取る方法がわからなくて
WIN32OLEを使ってWIM経由でコマンドラインオプションを取得する暴挙に・・・
コンソールのキャラクタコードはCP932だけど引数はUTF-8で外部のコマンドを実行したいときとかも
どうすればいいんだろうな 今のwindows版は環境ごと入れるので、rubyを使うためにperlやpythonまで入ってくるのが面白い たしかに文字コード面倒
ファイルやデータも古い年代モノから最近のモノまでいろいろ、コードも混在
rubyも最新版ばかりでない、マシンによってバージョンが違う 文字コードが面倒って言ってるやつは
CP932(ShiftJIS)を使おうとしてるから
UTF-8対応のエディタ(Windows 10ならメモ帳でいいんやで?)を
使ってソースコードにはUTF-8以外を一切入れない
コマンドプロンプトはchcpでUTF-8に変更するか
画面への入出力時に(Rubyではなく)nkfなどを使って変換すればいい
Rubyスクリプトへデータの入力はファイルから行って
出力もファイルに出力するなら、別にnkfでの変換もいらない
UTF-8対応のテキストエディタで見ればいい
なんで日本専用の文字コードを使おうとしているのかわからない
それだと他の国で使えないではないか。汎用的に作ったほうが
簡単になることって多いよ >>602
そういう話じゃないんだなあ
chcpなんて使い物にならないし
rubyの内部の作りの問題なんだよ
nodeやgoやrustはその辺まともに作ってある そうそう
近代的なプログラミング言語は内部エンコーディングがUnicode固定だから本当にIOのときだけエンコーディングを考慮すればいい
一方Rubyは文字列の内部表現がStringオブジェクトごとのエンコーディングに依存していて、
自分の管理外のコードからStringを受け取る場面では必ずエンコーディングを考慮せねばならない >>603
> chcpなんて使い物にならないし
使い物になってるけど?
実際WSLはchcpでUTF-8したのと同等の環境で動いている。
文字化けする?フォントがおかしい?
だからWSLでまともに使えるようにするために
全部修正したんだってばw >>602
全然判かっていないじゃないか
多くのWindows用アプリケーションはUnicodeもしくはCP932を前提に作られている。たとえコンソールのキャラクタコードを
UTF-8にできてRubyがそれに従ってくれたとしてもほかのアプリケーションとの連携で不具合が発生するのは明らかで
問題は解決しない
それにnkf使えとか1.8時代に逆戻りだろw 多くのWindows用アプリケーションはUnicodeもしくはCP932を前提に作られている
それをRubの外部でnkfなどを使って変換すればいいだけの話だって言ってる >>605
いやだから、windowsはAPIでコンソールに出力してるから、そういう話じゃないんだって 問題なのは、外部がユニコードの世界なのに、windows版のrubyは内部的にそうなってない所がまだあるのよ
内部で情報が欠落しちゃってるから、そこを変えないとまともにはならんわけ
windowsでは内部をUTF-8に決めちゃえばいいんだけどねえ >>608
APIでコンソールに出力してるから
なにがどうなの? >>610
だから、コンソールへは普通にユニコードを書き出せてるからそこに問題があるわけじゃないんだよ nkf CP932に変換するオプション
ってやれば、APIでコソンールに出力した結果が
UTF-8からCP932に変わるぞ。 >>608
APIでコンソールに出力してるから
なにがどうなの?
ruby なんたら.rb | nkf CP932に変換するオプション
ってやれば、APIでコソンールに出力した結果が
UTF-8からCP932に変わるぞ。 >>612
だから、RubyがAPIでコンソールに出力しようとしたものを
パイプで標準出力に変更して、nkfで標準入力からAPIで読み取って
nkfでSJISに変換してからAPIでコンソールに出力すればいいだけでしょ? 「windowsはAPIでコンソールに出力してるから」が
意味不明なんで意地悪してみたw ruby なんたら.rb | [nkf CP932に変換するオプション]
って書くと書き込みできないんだなー
ってあれ?できた?おかしいなw めんどくせえなあ。SJISに変換とかアホみたいなことしなくても、WriteConsoleWってAPI使ってユニコードで書き出すようになってるんだよ クソ5chの意味不明な制限で書き込めないときは
わざと5chに負荷をかけて細かく分けて書き込むことにしてる
すべては5chが悪い
>>608
APIでコンソールに出力してるから
なにがどうなの?
ruby なんたら.rb | [nkf CP932に変換するオプション]
ってやれば、APIでコソンールに出力した結果が
UTF-8からCP932に変わるぞ。 >>619
だからchcp 65001してれば、
WriteConsoleWってAPI使ってユニコードで書き出したものを
ちゃんと表示できるし、
chch 65001しなくても
WriteConsoleWってAPI使ってユニコードで書き出したものを
ruby なんたら.rb | nkf [CP932に変換するオプション]ってやれば
ちゃんと表示できるっていってるだろ
WriteConsoleWってAPI使ってユニコードで書き出した
からなんだって言うんだ? chcpする必要なんてないってことだよ
もういいかげんわかって rubyの中でCP932のデータを扱おうとするから
バカを見るんやで? rubyの外側で変換すればいい
文字コードの問題なんてなんもありゃせん >>622
あのな、
chcp 65001しないと、
日本語のWindowsではコマンドプロンプトが
互換性のためにCP932モードになってるから
WriteConsoleWってAPI使ってユニコードで書き出したものを
そのまま表示すると、UTF-8をCP932だと解釈して文字化けするんやで?
だからchcp65001しろって言ってるんだが ちなみにWindowsは内部はUnicode(UTF-16)で扱われている
これはずっと前からだ 表示できてて、そこは問題じゃないって言ってるのに、そんなに問題があることにしたいのか >>626
それはRubyのソースコードがCP932になってるから、
俺は最初からRubyをUTF-8で書けと言ってる。
いい加減CP932から離れろよ。
そんなもんRubyの外部で変換すりゃいいだけの話なんだよ
https://www.rubylife.jp/ini/japan/index5.html
> そしてプログラムを保存する時は文字コードをUTF-8に指定して保存します。
>
> 通常はこれでいいのですが、Windowsで標準出力としてコマンドプロンプトを
> 使用している場合、コマンドプロンプトの文字コードがShift_JISのため
> そのまま「print」メソッドなどで出力すると文字化けします。 RubyのせいにしたいのかWindowsのせいにしたいのか知らんが
結局文字コードについてちゃんと理解してないだけじゃねーかw これも全部文字コードが乱発されてるのが悪い
なんでこんなに増えちゃったん? アホメリケンが1ビットも惜しいとか抜かして
1文字で7ビットのASCIIコードを作ったのがそもそもの問題
最初から全世界の文字が入り切る24bitぐらいに
していればこんな問題は起きなかった 今のUnicodeの全文字数を表すには、17ビットじゃたりないんだな
18ビットあればしばらくは対応できるだろうが十分かと言われると心もとないな
最低でも20ビットぐらいほしいかな >>607
外部ツールを使うこと前提は普通対応しているとか使えるとはいわなくね?
WINEを使えばLinuxでも動くからLinux対応などとうたうWindowsアプリケーションはほとんどないし逆も同様
コードページをUTF-8にしろだのnkfをつかえだのナンセンスすぎる
Windows標準のキャラクタコードはUnicodeか日本ならCP932だし、変換もRubyで完結できるべきだ なんや?
アンチはRubyの文字環境の設定もしらんのか?
しったかばっかりしとるツケやな WindowsでRails開発してるけどcloud9使ってるからWindows環境に依存しない
そもそも環境構築すらいらん
クッソ楽だよ VSCode から、PowerShell を使えば、UTF-8 だから問題ない
ただし、Windows で、irb は日本語でバグるから使えない。
irb を使う時は、WSL から使う おいおいRubyistはVSCode使っちゃダメだぞ
VSCodeはJSをわざわざ静的型言語に魔改造したTypeScriptによって作られている
そんなものをRubyistが使うということは、静的型の勝利を認めるようなものだ そんなこと言ったらそもそもさんざんバカにしてきたjavascriptで動いてるVSCodeなんて恥ずかしくて使えないだろw >>603
chcp 65001 は糞だな
git for windows の bash 使うと utf-8 で統一出来る 故Coffeeが押されてた頃以来しばらくRails触ってないから最新の事情に疎いんだけど、今のRailsでは生JSかbabelが普通?
さすがにまさかTypeScriptは意味不明なダブスタ状態になるからありえないとは思うけど そうなんです
物凄いコンプレックスがあるんです
夜も眠れません そもそもWindowsで開発ってエンジニアとして恥ずかしいからやめな
ド素人専用OSだから そんなこと言ったら、rubyで開発とか恥ずかしいよ >>632
> 外部ツールを使うこと前提は普通対応しているとか使えるとはいわなくね?
対応して無くていいよ。Unicode(UTF-8)だけに対応していれば十分 >>640
Webpackerが基本だから好きなの使えばよろし Pythonが2018年も人気ナンバーワン言語に - Rubyは13位へ
https://www.softantenna.com/wp/software/ieee-spectrum-top-programming-languages-2018/
>日本生まれのプログラミング言語Rubyの順位は昨年の12位から13位へと一つ順位を落としています。 RubyInstallersのRuby + Devkit 2.5.1-2(x64) でインストールしたら
トロイの木馬検知したんだけど、これ大丈夫なんか…… 基本、主流のレンタルサーバではどこもRuby標準装備だろ
個人でやるならRubyしか手は無いぞ? pythonも標準装備です。
ただしどちらもかなり古いのしか入っていないです。
https://help.sakura.ad.jp/hc/ja/articles/206053142--さくらのレンタルサーバ-基本仕様
今だに1.8.7って・・・ >>650
管理者権限のないレンサバでやるとか拷問好きの変態だけだろ xxenvが使えりゃ取り敢えずなんとかなるけどな。
pathに嵌ったりするけど。 今はVPSとかHerokuとかそういうの使う方が主流だよね >>651
教祖がWindowsアンチだから仕方ない
残念だがRuby界においてWindows使いに人権はない 宗教以外で今時Herokuを選ぶ理由はないでしょ
PaaSならGCPとかAWS Lightsailとかにしとけ
HerokuとAWS/GCPじゃスキルとしての価値にも差がありすぎる いやしかし機械学習という神風でPythonがRubyを吹き飛ばしたよね
特にこれから始めようとする人で、Ruby選ぶ人って激減なんじゃないかと >>661
このお盆休みに Rails をやっているのだけれども… >>661
機械学習とWeb系は別物だからね
適材適所ということだね Rails使う奴らが他言語使いを見下しているから嫌われるんだよ 今更Railsはなあ
第2のPHPとして当分は健在だろうけど、もう美味しい時期をとっくに過ぎてRails専のエンジニアは買い叩かれてるのが現状 python用のwebフレームワークもいくつかあるけど、railsの出来には全然かなわんの?
rubyもnumpyとかあればなあ >>666
Rubyの言語仕様はイカれてるからな。
よくもわるくも。 >>666
Django が一番有名なんだろうけど、開発スピードは Rails の足元にも及ばないね >>576,577
関数型プログラミングという視点であれば、JS は良い言語だね
どちらも出発点として関数型言語をベースに設計された言語だから、当然の帰結と言える:
http://peace.5ch.net/test/read.cgi/tech/1409526637/857/
ただし、あえて「Rubyによる関数型プログラミング」に慣れると
JS にイラッと感じる(=楽しくない)のは:
・条件分岐の if/switch が(式ではなく)文であること
Ruby であれば if/switch (を含めて「あらゆるすべて」)は式だから、ML や Haskell と同様、
いちいち一時変数を持ち出さずに書ける
・匿名関数の function() は煩わしい
匿名関数が多用されるのは map/filter といった関数を引数渡しするケースだけど、
Ruby であればブロック引数という独特な構文があるから簡潔に書ける
ってことかな(あくまで個人の感想ですが)
ちなみに、これらの感想は以下の文書からの受け売りだったりします:
・Rubyによる関数型プログラミング
(*1) URL はNGワード規制によってカキコできないので、
もしも興味のある人は「Rubyによる関数型プログラミング Arnau Sanchez」でググッてください
なお、この文書で筆者は:
Rubyは基本的には命令型言語であるけれど、 関数型プログラミングへの際立った潜在能力がある
と断じています
(*1):規制されるほど、この文書はム板管理者にとってヤバイ内容が含まれているんですかねぇ?
2012年と5年も昔に公開された、今のRuby使いにとっては常識的な中身だと思うんですけど def式じゃないじゃんjsのfunctionは式だぞ >>577
>Rubyは第一級関数ではないという致命的な欠陥がある
JSとは異なり、Rubyだと関数は一級市民ではない」という指摘を
具体的なコードで示したのは、おそらく自分が最初だと思うけど:
https://mevius.5ch.net/test/read.cgi/tech/1503644351/210/
そこでもカキコしたように「制限」であって「致命的な欠陥」ではないんだよね
>>670でも書いたように、一級市民としての関数が重要になるのは
メソッド(or 関数)の引数値として匿名関数を渡すケースだけど、
Ruby ではまさにその目的のためブロック引数という特殊な構文が用意されている
もし反論があるなら、具体的なコードで示したほうが理性的ではないかと思われます >>671
関数型プログラミングを実践すると自然に匿名関数を多用することになるわけですけど、
JS はいちいち function とタイプしないといけないから煩わしい、という意味です
たとえば ML族の Standard ML だと fn、同 OCaml だと fun、Haskell に至っては
¥ が匿名関数を表すキーワードです
ここまで「JavaScript による関数型プログラミング」が普及し常識になった現時点で
振り返れば、function ではなく fn とか fun という予約語にできなかったのか?と
なお、関数宣言のキーワード function は、それが宣言を目立たせる意味で長いキーワードを
採用したと考えれば、納得できるのですけどね Ruby にはブロックスコープがあるし、
関数スコープでは、関数外部からの変数を通さない
Rubyの偽は、false, nil の2つだけ
Rubyは厳格だけど、JS, Python, PHP などは、ややこしい >>673
> JS はいちいち function とタイプしないといけないから煩わしい、という意味です
なるほど。ではこのコードのどこにfunctionがあるのでしょう?
var materials = [
'Hydrogen',
'Helium',
'Lithium',
'Beryllium'
];
console.log(materials.map(material => material.length));
// expected output: Array [8, 6, 7, 9] ruby狂信者に「他言語では…」って話しすると黙りこくって見下すのは経典に書いてるのか?
どんなruby狂信者に聞いてもどいつも同じ精神なのがものすごく気持ち悪い
アレなんなんだろうな >>670
rubyに関する内容がヤバイんじゃなくて
archive。fo
がだめなだけ >>675
それ、もうブラウザでも使えるんだっけ?
JavaScriptは新機能を使っていいかどうか、いちいち考えないとイカンのがめんどくさい。
なおRubyも、バージョンのよる差異がうざい模様。 rubyって昔複数引数取る関数
foo bar baz
って書けたよね。
でも今は
foo bar, baz
だよね。 >>681
1.8.7でも foo bar baz は foo(bar(baz)) なんだね >>675
失礼しました、ES2015(ES6)で導入されたアロー関数ですね
ということで、>>670 の:
>・匿名関数の function() は煩わしい
という項目に関しては取り下げます
>>680
調べてみると、主要なブラウザの最新版であれば利用できるようです
まあ JS も Ruby も新機能の扱いを「めんどくさい」とか「うざい」と
感じることはあります
ただし、どちらも「後方互換性の維持」という言語進化の基本原則を
遵守しているのは共通していますから「新機能を使わない」という
選択肢も残されているわけです >>679
情報提供、ありがとうございます
MANGO板にて特定のページが規制されているのではなく、
サイト全体が規制されていることを確認できました
・NGワード絞り込みスレッド★118
http://agree.5ch.net/test/read.cgi/mango/1533547792/324-326/ >>681
昔って、いったいいつの時代なんだろう
自分は 1.6 の時代だからかれこれ20年は使ってるけど、
foo bar baz と書けたという記憶が無い
もしかすると 1.4 とかそれ以前には書けたのかな?
興味深いね >>683
JavaScriptはともかく、Ruby は「後方互換性の維持」を遵守しないぞ。
バージョンアップは、過去のコードをだいたい壊す。
次も、文字列の原則immutable化が控えているだろ。 それはjs以外たいていみんなそうなんじゃ?pythonしかり。 >>168
今どきにbabelも使わずフロント開発してるところなんて業務系SIerくらいしかないでしょ >>688
互換性維持の優先が高い言語はあるぞ。
C,C++,C#,Perl5はずっと更新されてきてるが、過去のコードを壊したことがほとんどない。
RubyやPythonと違って、システムの重要なところを担ってる自覚がある模様。 >>687
>JavaScriptはともかく、Ruby は「後方互換性の維持」を遵守しないぞ。
いや、Ruby は(も?)新機能の導入には保守的ですよ
たとえば Ruby の特徴である既存のクラスの振る舞いを後から上書きできる
オープンクラス、これには利点と欠点が共存してるけど、これに対応しようとする
refinement の提案は「後方互換性の維持」を理由に却下され続けたけど、
その壁を乗り越えてようやく 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 なんかじゃあ到底まねできないですわ >>692
結局、互換を壊してるじゃん。w
そんなのは保守的と言わないんだよ。
多少の不満は飲み込んででも、過去のコードを重視しないといけない。
オプションで選択できるとか、いいわけにならん。
例が知りたきゃググれ。
スコープとかメソッドとかいろいろあって、思い出すのもバカらしい。
ま、それがRubyの道なんだろうから、それはそれでいいんだよ。
ヘンに言い繕わずに、互換性は低いと冷静に受け入れてれば。 現実無視の机上の空論w
昔のC/C++コードを一切の修正なしで再利用できるケースが実際にどれだけあるというのだ >>683
JS のアローと、function()無名関数は、スコープ・this の挙動が異なる
非同期処理などで異なる。
別のもの
JSは、Rubyの影響を受けて、ドンドン変化していく >>693
>オプションで選択できるとか、いいわけにならん。
では、以下のコードを python3 で動かす方法はあるんですか?
https://mevius.5ch.net/test/read.cgi/tech/1413113999/126/
え、オプションすら存在しないのぉ???
オプションすら許さない >>693氏のオレ様基準に従えば、
いいわけ以前の「後方互換性の断絶」であり「致命的な互換性の問題」ですね
>例が知りたきゃググれ。
>スコープとかメソッドとかいろいろあって、思い出すのもバカらしい。
え、これだけ「Rubyはゴカンセイガァー」と騒いでおいて、
ご自身では具体的なコードすら書けないんですか?
情けないですね、自分ならスコープやらいくつかRubyに関する
「些細な互換性の問題」を示してあげることもできるんですけど
>ヘンに言い繕わずに、互換性は低いと冷静に受け入れてれば。
いやぁ JS と比較すれば互換性は低いですよ
あちらはECMAScriptという国際標準の強い縛りがありますからね
でも Hello world すら動かなくなる最底辺 Python と比較すれば遥かに高い
そもそも具体的なコードも示せないくせに、
ナゼか「上から目線で」オレ様理論を押し付けるのは、
Rubyアンチに共通する性癖ですね 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にどうやって渡せば良いのか? > Nokogiriで構築したDOMを、JSにどうやって渡せば良いのか?
うん、でもいま面倒なことになってるよね? >>697
Rubyアンチアンチは、だからめんどくさいんだよな。
そんなに必死にならんでもええよ。w それがルビリスト
皆呆れてるだろうが
個人的にすごく良い流れなので
もっと頑張れ 一言で言えば左翼と同じメンタル
何故そうなるかは長くなるから書かないけどな 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のように展開できるのか? 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 }'
まさか、シングルクォーテーションで変数展開できるとは!
神! 5ch ブラウザみたいに、スレに書き込んである画像のURL を、
自動的に、<img> に展開して表示するものを自作している
Selenium WebDriver を使って、Nokogiri で、DOM を構築して、
JavaScript(JS) を使って、そのDOMで、body 以下を更新しようとしている
わざわざ、Sinatra, Vue.js などを使うまでもない。
標準添付ライブラリのERB は、使っても良いかも Action Cableを使用してるアプリってもうある? BIOSが夏時間に対応していると、OSの時刻までずれてしまう
これ比較的最近の話だからな
http://naitaku.hatenablog.com/entry/2017/04/06/012238
> RTCにはタイムゾーンや夏時間を扱う仕組みは一般にはありませんので、
> OS側でタイムゾーンや夏時間を管理することになります。
> (実はRTCに夏時間を扱う仕組みがあって誤発動したというのが今回の原因なのですが)
> RTC の Daylight Savings Enable (DSE) という機能について
> 現代のOSでは上で述べたようにタイムゾーンや夏時間を管理しているのですが、
> 昔(DOSとかの時代?)はOSはそんな賢い機能はなくRTCの時刻がそのままローカルタイムでした。
> そんな時代に夏時間を扱うためにハードウェア的に実装されたのが DSE という機能です。
> またブコメで「日本のタイムゾーンにしていれば夏時間は自動的にオフになるはず」というものがありましたが、
> DSEの設定値はOS上の夏時間の設定とは無関係です。OSは上で述べたように夏時間を管理していますので
> RTCが勝手に1時間進んだり遅れたりすることは想定していないはずです。
> したがって現代のパソコンではDSEは無効になっているのが正しいです。 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 } だけが変数展開されているだけ。
ヒアドキュメント内の、', " は、そのまま表示されているだけだった Ruby FFIを使ったエクステンションの作り方
http://kazegusuri.hateblo.jp/entry/2014/03/02/192729
FFI(Foreign function interface)
コンパイルがいらない、多言語を呼び出すためのインターフェイス
RubyにおけるFFIは、libffi
こんなのがあるのか
Windows で、クリップボード機能を使おうとして、
win32-clipboard gem の文書を見ていて、FFIを見つけた だからなんだよいちいちうるせえな
リファレンス全部読んでこい str.chomp!.strip!
末尾の改行を削除して、先頭末尾の空白を削除するのを、メソッドチェーンで書いたけど、
chomp! は、改行がない場合に、nil を返すのでエラーになる
メソッドチェーンに出来ないから、分けて書くしかない
str.chomp!
str.strip!
nil を返す可能性があるものは、メソッドチェーンに出来ない 拡張子で、画像ファイルかどうかを判別する際に、
大文字の拡張子を、downcase で小文字に変換して判別していますが、これで良い?
それとも、String#casecmp を使う方が良いの?
どう書けば良いの?
file_extname = ".JPG"
# . を削除して、小文字にする
file_extname.delete!(".").downcase!
extnames = %w(png jpg jpeg gif) # 画像の拡張子
extnames.include? file_extname # 含まれている? >>717
str = " \tfoo\t \n" #=> " \tfoo\t \n"
str.strip! # => "foo" >>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] == '.' ていうかこのくらいの処理なら正規表現で書くわ
files = [
'/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 Ruby de GUI for Windows
RScript(ActiveScriptRuby)→良くも悪くもHTA、要インストール、最新版に追従していない
wxWidgets(wxRuby)→高機能、環境構築が面倒、機能によっては罠があったり不安定だったり、コントロール類のデザインに手間がかかる
Tcl/tk(Ruby/Tk)→導入が容易、機能面はwxRubyに劣る、コントロール類のデザインに手間がかかる
fiddle(WindowsAPI)→何でもできる、配布サイズが小さい、茨の道
(Webブラウザ組み込み型→現状なし?、出てきたとしても配布サイズの肥大化は不可避) 拡張子発明したやつ天才だわ
名前にファイルの種類を埋め込むとか一見ダサそうだけど理にかなってる
一方でマックバイナリは糞だわ 拡張子の何が凄いって
あくまでそれが何であるか種類を表しているだけで
どう扱われるかはOSの設定次第ってところ
これがRubyみたいな古い考えの頭のやつがやると
ファイルは自身がどう扱われるべきか知っているべき
とかアホみたいなこと考えだして
マックバイナリみたいな糞が出来上がる
だが実際には拡張子ぐらいが一番使いやすい >>721
>file_extname.delete!(".")&.downcase!
&. こういう演算子が出来たのか
Ruby の &. と #try の違い
http://secret-garden.hatenablog.com/entry/2016/09/02/000000
Ruby 2.3 で、Safe Navigation Operator(&.)という新しい演算子が追加された >>729
メタプログラミングのため
ソース上に現れる変数名やメソッド名とかってソースを解析する時点で全て把握できてるわけだから、
それを予め数値に置き換えてしまうことで効率よく扱おうという伝統的なコンパイラ技法があるんだけど、
Rubyはメンバ検索の動作を独自に定義できたりするので、その置き換え後の数値をRuby上のデータとして扱えなければならない
そのために用意されてるのがシンボルオブジェクトでありシンボルリテラルである
一方で、数値じゃなくて変更不能な文字列を使えばそんなもん要らなくね?という説もあって、実際Matzもそうすべきだったと失敗を認めている
というわけで、今となっては変更不能でちょっと不便な文字列のようなもの、以上の意味はない ちなみにRails専用DSLに成り下がって以降のRubyではRailsの影響でシンボルをキーにしたHashを引数に渡すということがよく行われるけど、
これはクォーテーションより:の方が書くのが楽だからとか、
文字列よりシンボルをキーに使ったほうがハッシュの検索が速いと信じられていた(今のRubyではこれは正しくない)からといった
あまり本質的でない理由によるもので、シンボルじゃなくて文字列でも何の問題もないよ >>729
不変性と同値時の同一性が保証された文字列は便利でよく使うから
不変だと特にハッシュのキーとして安全に運用できる
多数出現する同値を同一にできるとメモリが節約できる >シンボルじゃなくて文字列でも何の問題もないよ
うわあああああw frozenになるだけでオブジェクトは別に作られるのかと思ったらこれじゃ本当にSymbolと変わんねえなw
でもSymbolもなんだかんだ好きだけど
ruby --enable=frozen-string-literal -e 'p 1000.times.map{"foo".object_id}.uniq'
#=> [20966820] あもともとfrozenな文字列は使いまわしてたのか
$ ruby --disable=frozen-string-literal -e 'p 1000.times.map{"foo".freeze.object_id}.uniq'
[20983260] >>733
MatzがしれっとSymbolをStringのサブクラスに変更しようとしたの知らんのか
結局互換性の問題でMRIメンバーから大反対されて却下されたけど、
今Rubyを完全に再設計するならまず間違いなくシンボルリテラルは単なる文字列になり、Stringは常に変更不可になる
Railsのパフォーマンス改善のためにRubyに導入されたシンボルGCなんて、
それこそ本来のシンボルの意味からすると全く必要ないはずの馬鹿げた機能だ
もはや誰が見てもSymbolは事実上単なる文字列 最下位bit使って
整数の範囲を減らしてまで
シンボル空間作ったのに
互換性無いですかそうですか >>731
>メタプログラミングのため
後半の内容とは何ら関係しない
覚えたてのメタプログラミングって単語を使いたいだけちゃいますか
>Railsの影響でシンボルをキーにしたHashを引数に渡すということがよく行われるけど、
Railsで最初にRubyに触れた人にとってはそう感じるだろうけど、
ハッシュのキーとしてシンボルを使うのはRails以前から普通だったよ
>>736
>Railsのパフォーマンス改善のためにRubyに導入されたシンボルGCなんて、
シンボルGC導入のきっかけは(ブルートフォース攻撃に対する)セキュリティ対策だよ
パフォーマンス改善のために導入された文字列のfrozenデフォ化とごっちゃにしてる >>736
ヤツはホンマ互換性を軽視する輩やな。。。 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 を実行 すいません、プログラミングの世界に最近初めて入ったんですけど
C++やろうとしたら別のスレでRubyとjava勧められたのでやろうと思ってるのですが
Rubyはプログラム初心者に向いてますか?
それと実行環境はVisualStudioを使えますか?
この2点教えてください >>742
Rubyは開発陣がWindowsアンチばかりでWindowsとRubyは極めて相性が悪い
初心者云々以前に、Macに乗り換える気がないならRubyは論外
WinでスクリプトならPythonにしよう
絶賛落ち目中のRubyよりよほど将来性があるし初心者にもわかりやすいしWinで使いやすいしVisual Studioでもサポートされている アホか初心者が戯れにやる程度ならrubyもpythonも大差ねえよ RubyInstaller for Windows がある。
エディタは、VSCode
ただし、Windowsで、irb を使うと、日本語でバグるから、
irb だけは、Windows10 なら、WSL でLinux(Ubuntu)側から使う
paiza.IO, codepad などのサイトで、ブラウザからプログラミングするのが簡単。
他には、progate という学習サイトもある
環境構築には、数十のLinux コマンドも覚えるべき。
絶対・相対パス、環境変数PATH の仕組みなども知らないと無理
ruby -v
例えばこういう、ruby のようなパス無しのコマンドを入力すると、
どういう仕組み・順序で、PC 内から、そのコマンドの実行ファイルのある場所を探し出すのか?
つまり、こういうOS の知識がないと、
コマンドプロンプト・PowerShell などのシェルを使えない
ほとんどの人は、これらの勉強ができず環境構築ができないから、
環境構築のいらない、Excel エンジニアになるしかない!
つまり、プログラマーにはなれない人! >>742
C++ をやるんだったら Java にすればいいと思います >>743
そうなんですか。Win10使ってるんですけどやめたほうがいいですか...
別スレでC++始めるならまずたのしいRuby 第5版、2016 とスッキリjavaやってからにしとけって言われたので
聞いてみたのですがあまりよろしい選択ではなかったですか。
色々調べてみるとrubyは簡単な言語の上位にランクインしてたので覚えやすいのかなって思ってたんですが
PythonはVisualStudioで出来るんですね。いいこと教えていただきありがとうございます。
>>745
一応VisualStudioでRubyもやれるんですか
LinuXはOS?ですか?あまり良くわからないんですが、かなり敷居は高そうですね……
paiza等もブラウザで出来るみたいなんですが入力とかクラスとかの機能が使えないみたいで
色々不自由しそうで、なるべく実行環境整えたいのですが、今の段階では厳しいですか。
教えていただきありがとうございます。 今の覚えるならpythonの方がいい
悪いことは言わない勝ち馬に乗れ >paiza等もブラウザで出来るみたいなんですが入力とかクラスとかの機能が使えない
そんなことはない普通に使える
実行環境構築に自信がないならブラウザコンソールからJavascriptやっとけ >746
別スレで教えていただきjava環境導入出来ました。ありがとうございます!
せっかくお勧めの入門書2冊教えてもらったので両方の言語やろうかなって思って聞いてました
少しでもC++の理解が簡単になるならやっとこうと思ったんですけど無意味ですかね >>748
そこまで本格的にやる予定ではなくて,
別スレでプログラム0から始める奴がC++からやっても理解できない。
たのしいRuby 第5版、2016 とスッキリ分かるjavaやってからにしろ!って言われて
少し遠回りしてでもやろうと思ってたんですが、今聞いた感じだとあまり入門者がやる言語ではないみたいですかね…
pythonとjavaとりあえずやってみます。ありがとうございました C++やるつもりならなおさらPythonがおすすめだな
Pythonは設計思想が比較的C系に近いからC++やJavaにも馴染みやすいよ
RubyはRubyが最高だと信じて閉じ籠って他の言語やりたがらない人が多い 「たのしいRuby」「スッキリjava」は薦めたのは、俺だよ
Windows のユーザー・システム環境変数の設定画面を使えないと無理。
この画面の環境変数PATH を、穴のあくほど見つめる。
新しく何を追加したのか
絶対・相対パスの違い。
これがわからないと、VSCode で、PowerShell から実行できない
cd, ls などの、基本的な20ぐらいのLinux コマンドも覚えるべき。
PowerShell でも、そのまま使えるから。
例えば「cd ..」これの意味がわからないと、PowerShell を使えない。
コマンドプロンプトはややこしいから、なるべく使わない方が良い
C++ なんて、5年以上先の話。
環境構築できないと無理
paiza.IO, codepad などのサイトで、ブラウザからプログラミングするのを薦める。
progate という学習サイトで学習する人も多い 「たのしいRuby」「みんなのPython」「スッキリjava」の3冊を読めばよい
「たのしい・みんなの」の2冊は双子。
ただし必ず、たのしいから読むこと!
みんなのから読むと、わからないから苦戦する
ただし、みんなのは、AI・機械学習しない人には、無駄が多い。
ウェブ系なら、たのしいRuby
HTML, CSS, JavaScript も必要 今からJavaをするくらいなら、C#をしたほうが一億倍はいいと思うが。
とくにWindowsなら。 >>742
プログラミング言語は道具だ。道具を使って何をしたいか(目的)が重要なのではないのかな
逆に目的が決まれば適したプログラミング言語も自然と絞られてくる
なんとなくならメジャーなのをやっておけとしか・・・ 例えば、C++ のロベールを読むよりも、
「たのしいRuby」「みんなのPython」「スッキリjava」の3冊を3回読む方が、
はるかに速く読めるし、得るものも大きい。
50時間もあれば、全部読める
一方、C++ で50時間使っても、ほとんど何も作れない。
やってみればわかるけど、時間の無駄
C/C++ などポインタがある言語は、すぐにバグるから、すごく時間を損する https://rubyinstaller.org/
Ruby Installer を使うなら、2.4 系を使う。
2.5 系は、まだ新しいから使わないように
irb は日本語でバグるから、使わないように。
使うなら、WSL でLinux(Ubuntu)側で、irb を使う
VSCode もインストールして、Rubyの拡張機能も入れてみれば? 環境変数がわからないのはともかく自分で調べて理解できないレベルなら諦めろ web上では見たことあるけど
出版物上で観るのは初めて感 言語の初心者用の本は、PCの初心者用の本じゃない!
言語の本はあくまで、その言語を知らないだけで、
環境変数とか、絶対・相対パスとか、cd, ls などの基本コマンド、
PowerShell の使い方などは、知っている事が前提
こういうOS の知識を、教えている本はない。
それを書けば、言語を説明するページが減るから、書かない
つまり言語の本は、PCの初心者を対象としていない!
既に、OS の知識はあって、その言語だけを知らない人向け 762 みたいな本を書いている奴は、勉強を何もわかっていない。
なぜ生徒が、プログラミングを嫌うか
言語には、勉強する順番がある。
小学生にいきなり、大学教育をしても無駄。
小中高大学と、個人の成長には、勉強する順番が重要。
知識を下から、積み重ねていかないといけない
1. 動的・軽量言語
Ruby, Python, JavaScript
2. 静的言語
Java, Kotlin, C#
3. ポインターのある言語
C, C++
今の大学教育では、C から教えているから、皆プログラミングはしょーもないってやめる。
これは、Rubyの女神・女優の池澤あやかが言ってる >>768
教養時代に必修科か準必修科目でRubyやったぞ
薬学とか農学部進学予定の奴までやってたのはかわいそうだったけど >>753
つまり、Python信者は他言語スレまで出張してPython推しするほど必死だと >>769
今日日、農学志望の人はRubyくらい使う機会があるかもね。
集計統計とか農業IoTとかで。 ラズパイでは、Python も良いけど
ウェブ系では、Ruby が強い。
Rails から、Vue.js, React も使える >>770
言語なんか複数使えて適宜使い分けられて当然でしょ >>743
つまりPython推しのためであれば、他言語スレでの荒らし行為も正当化されると
いやあPython信者って怖いですね アンカミスを訂正:
X:>>743
O:>>776 俺はPythonよりRubyの方がずっと好きだけど
(Railsプログラマーを目指してるんでもなきゃ)
これから何か始めようって人には断然Pythonを薦めるし
自分のお気に入りだからってむやみにRubyを薦める奴の見識は疑うね CASL II/COMET IIでアセンブラの基本を学んでいるとポインタで死ぬことはなくなる。
序でに基本情報の試験にそのまま使える。
https://www.jitec.ipa.go.jp/1_20casl2/casl2dl_001.html >>780
CASL なんて覚える気になりません、といって、x86 のいい教科書がありませんね
誰か書いてほしい >>779
つまり:
俺はRubyよりPythonの方がずっと好きだけど
(機械学習プログラマーを目指してるんでもなきゃ)
これから何か始めようって人にRubyを薦めることもあるけど
自分のお気に入りだからってむやみにPythonを薦める奴の見識は疑うね
ってことですね
Python信者の皆様、お勤めご苦労様です >>782
そりゃひねくれすぎだろ…お前いったい何と戦ってんの?
ただでさえRubyの評判は落ち目なんだから
狂信者が必要以上に貶めるのはやめにしてほしいわ >>780-781
2人のイリノイ大学生が使った、LLVM に世界が飛びついたけど、
日本では既に情報処理資格に、仮想アセンブラ CASL2 があった
LLVM/Clang 実践活用 ハンドブック、出村成和、2014
詳説 Cポインタ、2013、オライリー・ジャパン
OSのすべての機能を学びたいなら、ムック本の
Linuxエンジニア養成読本、第3版、2016 >>752
プログラミングの基本って、
・変数への代入、関数(メソッド)の使い方
・配列、ハッシュ(連想配列)とかのデータ構造
・値の比較と条件分岐(if文とかswitch文)
・繰り返し処理(do while文とか)
こういうのだけど、これはどの言語にもあるものだから、
一度覚えればほぼそのまま使い回しがきく。
(if文じゃなくてif式、とか若干の違いを言語ごとに覚えるだけ)
あとは「オブジェクト指向」の考え方というか、
概念みたいなのを理解できてれば、
どの言語に移ってもそんなに苦労せず使えるようになる。
で、そういう基本は、C++でもJavaでもRubyでもPythonでもJavaScriptでも、
どれやったって学べるわけだけど、
最近は3DCGのアプリとか、機械学習とかのジャンルで
Pythonが採用されるケースが多いので、
ゼロから始めるなら使い道の多いPython、みたいな意見がどうしても多くなる。
(Rubyは使いやすい言語だけど、Webサイト構築以外での採用例があまりない)
けど、「自分のやりたいこと」がなにかを決めた上で、
「それを最短距離でできる言語はどれか」を
詳しい人に教えてもらって始めるのが一番おすすめ。
(自分のやりたいことがC++でないとできないなら、最初からC++をやるべき)
特にやりたいことがなければ、
本屋で各言語の入門書をいろいろ立ち読みして、
自分が理解できそうな言葉で書いてあるやつを選んで始めれば、と思う。
ちなみにPythonもJavaも、初心者が学ぶ言語としては
悪くない選択肢です。 >>785
Pythonは3DCGでは最近じゃないから
ほとんどの奴がPythonの存在を知らないときから使われてる ツール組み込みのPythonは未だに2だったりするんじゃないの? 組み込みだとLua、mruby、JavaScriptあたりも使われている しれっとmrubyを混ぜるな
mrubyなんか誰も使ってない まぁ古参はC、下手したらアセンブラからの経験者で
トレンドに合わせてステップアップしながら言語を覚えただろうから
初心者が何の言語から勉強するべきかなど分かるはずもないんだよな
シンプルで覚えることが少なく今なお第一線級で活躍している言語なら間違いなくC言語
C言語ほどシンプルで実用性のある言語はない
OSが書かれてる本物の言語ってだけでもモチベーションになる
全ての実用言語の元になってると言えるし、最初にやるには良い言語だ
良くも悪くも
一方で楽しさ優先なら間違いなくC#でポトペタ開発でしょ
めちゃ楽しいが、WPFなどの背景にある仕組みの複雑さに挫折するかも
でも触ってて楽しいだろうなぁ、画面作るだけならマウスだけで出来るし
あぁRubyとかPythonとかは寄り道みたいなものだから最初にしなくてよいよ、ハマるから
動的型のスクリプト言語など色物なのに、最初にやるとか、どうかと
俺は絶対おすすめしないね、プログラミング言語の本流じゃないからね
特にここ10年は静的型が本流ってみんな知ってるだろ、いじわるめが あと、環境設定がどうとか、約一名盛り上がっているようだが
そういう人にはVisualStudioがおすすめだろう
これだけ完成度の高いソフトが無料で使えるのは凄すぎる
トータルで言えば、初心者におすすめなのは
VisualStudioとC#でポトペタ開発って事になるのかな
でもまあ、C#もバージョンがどんどん上がって今やとても複雑な言語だからなぁ
ソフトウェア業界が10年20年かかって常識にしてきたことを
一気に追体験しようというのはなかなか酷だわな
本当はC言語とWin32APIあたりから始めるのがシンプルで理想なんだが
モチベーションがつづくかな、それさえ気にしなければよい選択なんだが
どちらにせよ、RubyやPythonのような本流主流じゃない言語を最初にやるのは止めたほうが良い
筋が悪い、悪かった、というか悪いお手本みたいな言語だから 手続き型言語でプログラム書くなら、どのみちメモリのことは意識しなければならないし
ポインタが分からないって時点でプログラマには向いてないというか何というか
ただ、結局、安全かどうかなんだよ
その点C言語は安全とは言い難いが
意図せずヌルポするのはヌル安全の機能が無い言語ではどれも同じようなものじゃろ
その観点から言うと、単なるタイポすらコンパイル時にチェックしてくれない
動的型言語は初心者に進めるのは止めたほうがよい
初心者ほどタイポするだろうからな
それが言いたかった >>792
> 単なるタイポすらコンパイル時にチェックしてくれない動的型言語
(きっとRubyのdid_you_meanはおろか70年代のLispにすらあったDWIMも知らないんだろうな…) >>796
そのdid_you_meanはコンパイル時(プログラム実行前)に
チェックしてくれるのかい?w とにかく、初心者はプログラムを間違えるものなんだよ
一発で動くことは先ずない
それならコンパイルの時点でよりたくさんのエラーを検出してくれた方が学習が捗るだろ?
初心者にRubyなんか薦めるなって事だ
その人を蹴落としたいなら別だが まず多少なりとも動いてくれたほうが楽しいので学習が捗りました(経験談 >>799
重要なのはプログラム実行前ってことだよ
静的とも言う。
実行した後はいろんな状態があり得るが
実行前というのは状態は一つだ。
つまりいろんな状態にしなければわからないというのは
問題を発見するまでに果てしなく時間がかかるということ
だからなるべく実行前にわかるようにするのが良い いやeval getsするだけで可能性は可算無限でしょ
eval gets
p A
# input
A = 'hoge'
とかどうすんのよ >>797
動的型言語かどうかは関係ない
Smalltalkの“confirm, correct, or cancel”はコンパイル時チェック >>803
Smalltalkのコンパイルっていつやるの? プログラム実行前って言ってるのに理解してなさそうw 何だったらコンパイル時どころか
最近のエディタだったら書いてる途中でリアルタイムで文法チェックするからな
間違ってたら波線とか出る
そういう状況なので、なるたけ多くのことが静的にわかったほうが良いんだよ
実行時にエラーにするなら馬鹿にでもできる!!って思うし
やってみてダメでしたってな、バカっぽいでしょ
事前に分かるから賢い >>804
メソッドを書き終わった後(accept、つまりコンパイル指示を出したとき)だよwwww >>807
その時にSmalltalkは動いているのかどうかって話だ
動いてるだろ このスレって質問者をほっぽりだして変なのがしゃしゃり出てくること度々あるよな >>808
IDEでJavaソースコンパイルするときjavacもIDEも動いてないっての?wwww >>810
いや、自分で書いたコードの話なんだけど?
Smalltalkは自分の書いたコードがすでに動いてないと
そういうエラーはでないでしょ。 >>811
バカなの?コンパイル時って言ってるやん何度も
ともかくスペルミスくらいなら動的型言語でも静的にチェック可能なの
わっかんないやつだなー >>812
>スペルミスくらいなら動的型言語でも静的にチェック可能なの
型宣言がないのに、そんなことが可能なのでしょうか? ローカル変数だけだったりしてねw
近くの情報は周辺を見ればいいだけだから問題はすぐに分かるんですよ。
遠くの情報、例えばインターフェースが一致しているかどうかが
わからないと使い物になりませんね
人間がやると大変なものこそコンピュータにやらせないと なんで静的型の後追いみたいなことで苦労してるんだろうね
初めから静的型言語使えばよいだけなのにね
怠惰を求めて勤勉に行き着くってやつなのかね
動的型全体がそうだよね
処理系書いてる連中も、言語使ってる連中も
楽しようとして最終的に苦労する
なにこれコワイ >>813
構文木にできれば(ローカルに限らず)未宣言の変数だとか未知のメソッド呼び出しだとか程度なら
簡単に分かる
Lispみたいに構文も単純なら構文ミスも指摘して修正候補を提示することも可能(例:InterlispとかのDWIM) >>816
>未宣言の変数だとか
動的型付け言語ってそもそも変数宣言はないのでは? >>817
変数を宣言させるかとそれに型情報が付くかどうかは別の話だよ
変数宣言をさせたら動的型言語じゃなくなるという法はない
宣言を課さない言語でも初回代入を宣言と見なす場合もある >>818
>変数宣言をさせたら動的型言語じゃなくなるという法はない
たしかにそのとおりですが、
でも実際問題、変数宣言をしてかつ動的型付けである言語は存在しますか? そんなの珍しくないよ
JavaScriptとかな
変数宣言には二つの役割があって、一つは型を宣言することだけど
もうひとつスコープを宣言するって役割もある
だから動的型言語でも素直なレキシカルスコープが欲しければ変数宣言があってもよい
一方で変数への最初の代入を変数宣言の代わりにする言語は
だいたいスコープがバグってる
ただの変数への代入か、新たな変数を宣言したのか、区別がつかないからなwww
それでnonlocalだの@だの、ダサいだろ?
ま、そういうわけで、やっぱり変数宣言は有ったほうが良いし
どうせ変数宣言するなら型を書いても良い気がするし
動的型言語が衰退するのは当たり前だったわ
なんせ、ありとあらゆるスジが悪いんだよ >>819
Rubyのメソッドの仮引数やブロック変数は宣言でないと? >>821
def f(xyz)
"Hello, #{abc}!"
end
というメソッド定義があって
本当なら変数として xyz のところを間違えて abc と書いてしまった
というシチュエーションでも、エラーがでないでしょう? >>822
あのさぁ…宣言を課すこととミスを検出できるか(するか)どうかはまた別の話なんだが?
今は「変数宣言をしてかつ動的型付けである言語は存在しうるか?」って話なんじゃないの? >>823
「宣言を課す」というのは「宣言をしていない変数は変数として認識しない」という意味なのでは? ◆QZaw55cn4cは会話が成り立たないからスルーしろ >>824
Rubyはそうしていないというだけで、コンパイル時に
abcが未代入(代入操作で宣言を兼ねるRubyでは未宣言にあたる)である事実や
あるいはメソッドとして未定義である事実をもってxyzとすべき記述のミスでは?との判断を下し
そうであれば修正を促すことは可能だろう?
予め釘を刺しておくけど、ミスの可能性があることとコンパイル可能であることとはまた別の話だからな! >>824
もしかして
Rubyでは無引数(括弧なし)のメソッド呼び出し記述は同名のローカル変数のアクセス記述を遮蔽してしまう
っていう仕様をしらないとかいうオチ?
もしこのルールがなければ>>822はキミの想定通りエラーのはずだよ 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() >>827
>代入操作で宣言を兼ねる
これは危険ですね
なぜなら、変数が未代入かどうか、正確には、変数が未代入「でないか」どうか、をソースコードのセマンティクスから判断するのは困難だと思うのです >>827
Rubyは、未定義メソッドの呼び出しが可能なんじゃないか?
そのためのフォールバック用メソッドがあったはずだが。 メタプログラミング Ruby 第2版、2015
で紹介している、Module#define_method(), method_missing() とかだろ? picture_url = "https://pbs.twimg.com/media/DlCjEV6V4AUM9Kl.jpg:orig#jpg"
uri = URI.parse picture_url
file_name = File.basename(uri.path) # ファイル名
file_extname = File.extname(file_name) # 拡張子
後ろに「:orig#jpg」が付いていても、ファイル名が正確に抜き出せる!
DlCjEV6V4AUM9Kl.jpg >>831
そうそう。だからRubyじゃコンパイル時にわからないんだよ。
例えば以下のように、一行目にexitしてしまえば
その下にいくら変なコードがってもコンパイル時にチェックなんかできない
exit
aaa = 1312
class Hoge
def hoge
end
end
h = Hoge.new
h.hage
i = IIII.new
言い換えると、動的言語ではファイル単位でしかコードを見てないので
少なくともファイル外にある情報はわからない
検出できるのは文法エラーぐらいだよ
残念なことにね。それが現実。 だからさぁRubyが駄目ってとこを動的型言語の限界だと一般化しないでくれ
話がまったく噛み合わない >>831
だからミスの可能性がある(そしてその指摘や修正の提案が可能である)ことと
コンパイル可能な(つまり状況が整えば実行可能になる)コードであることとは
また別の話だって釘を刺してるだろうに… >>830
Ruby限定の欠陥の話がしたいのか動的型言語一般の限界の話をしたいのかをまず表明してくれ
>>813からの流れは動的型言語一般の話ってわけじゃなかったのか? まああれだ、Smalltakerさんがちゃんとコードで説明してくれればいい
ここでオンラインでSmalltalkを実行できる
https://www.tutorialspoint.com/execute_smalltalk_online.php
ここに
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というメソッドはないから実行時前にエラーを検出できるはずだ
そうならないので、未定義メソッドの検出はできない。
反論はコードでどうぞ ここにMatz呼べば全て解決じゃん
どうせ見てると思うぞ >>840
Smalltalkの“confirm, correct, or cancel”を試したいならこれはIDEを前提とした機構なので
GNU SmalltalkのようにUNIXとの連携を重視したCUI前提の変わり種のSmalltalkには実装されておらず使えません
また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” 「いまさらRuby」
「Rubyで学ぶ機械学習」
あたりを誰か書いてよ 「間違ってRubyを始めてしまった人へ贈るPython入門」
もいいな Pythonは、試してみたい気持ちもあるものの、よろしくないところもいくらか知ってるので、微妙なんだよなー。
そういえば、ボスが引退するそうだが、なにか変わんのかねえ。 >>839
個人的には ruby を改良しようといろいろ画策しています、宣言付き ruby とか
動的型付け言語にて変数宣言を導入すればずいぶんと使い勝手も変わるだろうと想像しています
そういう視点でおねがいします 画策wwwwww
それでプルリクでもしてこいよwwwwwww >>847
Rubyは変数宣言を省略したことが原因の仕様がらみのトラブルが少なくない
そんな犠牲をはらっても(型も含め)宣言を書かせないことがMatzの優先事項の上位にあるわけ
キミの「改良」案は何を今更だしそもそもMatzや取り巻きが耳を貸す可能性はゼロだろうね 結局、言語を改良していくと、Haxe になる
マルチ言語・マルチプラットフォーム、
this の挙動を変えて、型推論・パターンマッチ・引数付き列挙
Ruby は、JS, Python などど違って、関数スコープ・ブロックスコープがあって、
関数スコープは強固だから、変数を内側へ通さない
だから変数宣言が無くても、バグらない
ES2015(ES6)でも、ブロックスコープが採用された。
変数宣言も、以前からのvar に加えて、const, let も作られた >>852
なんで関数スコープとかいう小さい話してるんだ?
小さいものであれば、少し頑張れば対応可能なのは
わかってるんだよ。もっと広い範囲、オブジェクト間の通信とか
プロジェクト全体のレベルでバグが発生するから型がいるんだよ >>850
↓でググる
site:www.rubyist.net/~matz (スコープ OR クラス変数 OR 定数) 教えてください!
[パーフェクトRuby]と[プロを目指す人のためのRuby入門 ]はどちらがオススメですか?
当方3ステップ本を学習中、仕事でRubyを使えるようになりたいと思っています。
よろしくお願いします!! >>860
仕事でRubyやりたいならRails以外の選択肢はないからいきなりRailsやるのがいいよ
Rails DSLは別言語なレベルにまでカスタマイズされてるから、最初に素のRubyをやるとかえって混乱するのでお勧めできない
あとはLinux使ったWebサイト運用構築のインフラ本を一冊と、AWSの本一冊かな
WebやるわけじゃないんならPythonで勝ち馬に乗ろう この順番で読む。
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 >>860
>[パーフェクトRuby]と[プロを目指す人のためのRuby入門 ]はどちらがオススメですか?
どちらもオススメだけど、難易度であれば [プロ] よりも [パーフェ] のほうが高い
[パーフェ] は幅広く高度な話題を扱うプロ必読の本だけど、
説明もプロ向けで簡潔だから初心者では読んでも意味不明な魔術書と感じるかもしれない
それに対して、[プロ] は話題を厳選して丁寧に分かり易く解説している印象を持った
だから初心者へのオススメコースであれば以下の順序になる:
・たのしいRuby
・プロを目指す人のためのRuby入門
・パーフェクトRuby >>861
>仕事でRubyやりたいならRails以外の選択肢はないからいきなりRailsやるのがいいよ
質問者は「Webをやりたい」と希望しているわけでもないのに
ナゼかRailsを勧める話が噛み合わない返答、日本語が不自由な人ですか?
>Rails DSLは別言語なレベルにまでカスタマイズされてるから、
>最初に素のRubyをやるとかえって混乱するのでお勧めできない
つまり:
Pythonは手続き型プログラミングに特化して設計された言語だから、
>>861のようなPythonプログラマには、手続き型にオブジェクト指向と関数型が融合された
素のRubyをやると混乱した苦い経験が過去にあったのでお勧めできない、
という解釈できますね
>WebやるわけじゃないんならPythonで勝ち
つまり:
トレンディーにセンシティブなナウいヤングメンにはPythonがお勧め
ということですね、たいへんわかりやすいです >>864
プロを目指す人のためのRuby入門は本当に入門用、yieldやProcの解説までで終わり。
パーフェクトRubyはメタプログラミングとかGemの作り方とか実践的なことまで書いてある。 これから言語を初めて学ぶならTypescriptとかのほうがいいと思うけど。 ほら
>>865最高でしょ
これが典型的なルビリストの思考回路 >>867
初心者にJavaScript系はイカンやろ。クセありすぎ。
それだったら、C#をやるべき。 TypeScriptとC#だったら似たようなもんだろ
設計者同じなの知らないのか? >>871
TypeScriptはJavaScriptに引っ張られる部分がどうしてもあるからね
さすがに似たようなもんではないと思う
JavaScriptの一大メリットである環境整備のしやすさもTypeScriptにはないし
初学者ならRubyは学びやすいと思うしいいと思うよ
たのしい本とかしっかりした書籍もあるしね 趣味でやるならRubyは書くの楽しいしお勧めできる
手に職付けるつもりなら全くオススメしないけど 「プロを目指す人のためのRuby入門」の著者・伊藤淳一は、YouTube の動画がよい。
無料のRails チュートリアルをやった人は、彼の動画を見るのもよい
Junichi Ito
Rails 5.1で作るVue.jsアプリケーション 〜Herokuデプロイからシステムテストまで〜
https://youtu.be/ycOeM2umXkY
プロになる人は「Effective Ruby」は読んでおけ。
どの言語でも「Effective 何々」というのは、プロの必須本 Rubyはそのコード効率の良さからちゃちゃっと書けるのがメリット
試作や使用頻度の低いツールの作成に重宝する 試作(笑)
そういやsassも最初はrubyで作られていたが、
遅いって言うんで、C言語で再実装されて
今じゃそっちが主流になったな 遅くなりましたが、返信頂きありがとうございます!3ステップ本でも苦戦しているので、これをいったん終わらせてから[プロを目指す]をやろうと思います
>>861
>>864 >>874
動画があるのは知りませんでした!
[efective]も読もうと思います!ありがとうございます! やってみたでいいと思うよ
そこから学んだことを基礎にして別の言語に行くもよし、そのまま使い続けるもよし >>874
この動画みたけど酷いな…
そもそもvueのソースは全部コピペでなんの説明もない
設定ファイルで何をしているのかゴニョゴニョ言ってるだけですぐ画面移動するしまったくわからん
単に作業やってますよ的なだけだな
初心者には意味不明の動画だよ コーダーになりたいのかプログラマになりたいのかによって変わるんじゃね
コーダーならRoR案件をやる以外でRubyを覚えるメリットはあまりないだろう
プログラマだったら複数の言語を操れるのが普通
ソフトウェアエンジニアだったら適材適所で言語を選択できないと >>885
Vue.js や、Rails チュートリアルをやった人からすれば、
Rails 5.1で、Vue.jsが動くことが確認できたから、画期的!
たった1人でも、実行できた実績があると、皆が後に続くから、価値がある
新しいものをいじくりまわして動かしてしまう、先駆者! ◆QZaw55cn4c はまだ荒らし続けてるのか
ほんま懲りないなコイツ レンタル鯖だと軒並みRubyで組む事になる
いまどき自前で鯖用意して高いコスト払う人っているのか? phpならともかくrubyならなんのかんのでvpsにせざるを得ないだろ。
構築めんどくせぇ… >>890
アホかこいつ
Vue.jsはブラウザ側で独立して動作するライブラリであり、バックエンドのAPIとAjaxで通信する
Vue使うならRailsはそのAPIを提供するだけであり、VueとRailsは直接的には何の関係もない
触れちゃいけない人なのは承知してるがさすがに目に余る >>893
嘘ついてもすぐバレるんだからアンチスレから出てくるなよ chef, vagrant は、Ruby で書かれている。
誰かが作った、レシピを探せば?
DevOps と、コミュニティを利用するのは、まさにRubyにもってこいだろ >>897
そういうシステム的なところに、バージョン互換がクソのRubyを使うなよ、と思うんだが。
割り切ってPerlで実装するべき。 Rubyはシステムに入ってるバージョンには何も期待できないからなあ
アプリとセットでバージョンをコントロールできない環境なら絶対に使わないことにしてる >>898
Perlもバージョン互換クソだぞ。言語自体はまだマシだが、
多くの標準とされるモジュールが結局ただのcpanライブラリだったりする
Perlとは別に、標準モジュールがメンテされている。 >>899
> アプリとセットでバージョンをコントロールできない環境なら絶対に使わないことにしてる
だからDockerがでてきたんだよね。アプリとセットでバージョンをコントロールするための仕組み
Rubyだけに限らない。どんなものでもセットでコントロールできちゃう なんかアンチの意見が多いように見えるんですが、Rubyって実際勉強する価値のある言語なんですか? >>902
言語のスキルそのものに価値を求めるなら目下猛スピードで下降中のRubyはお勧めできない
上の人も書いてるけどサブ言語として書捨てスクリプトに使う分には悪くはない
言語に価値を求めるのではなく、価値は自分で生み出すんだよ >>901
どんなものでもいいと言われてRubyを選ぶバカはいないだろうさすがにw >>902
あるよ
Rubyはラクに短く書けるからね
日用使いにもってこいだし
Rubyやった後で他の言語を使ったときに感じるもどかしさも成長の現われ >>902
利用価値とか将来性とか、そんなしみったれた理由じゃなくて、
「好きか、嫌いか」で選ぶ言語な気がする
自分は文字列処理とかの浅瀬でしか使ってないけど、
なんか書いててノリがいいんだ >>902
わざわざRubyスレを覗いてまでアンチな意見を出したがる人間がいるということは
それだけ広まってるってことの裏返しだよ やっぱレンタル鯖についてるRubyで組むのが一番楽だし安い
googleとかfacebookみたいなでかいサービス以外はこれで十分やろ >>907
文字列処理ってRubyは結構得意だと思うな。ループが書きやすいのもある
PythonやJavaScriptでやっているとストレスがたまるたまるw >>900
もちろん互換性優先なら標準モジュール縛り。
野良モジュールはいいかげんなのも多いからな。 実務未経験からWebエンジニアになった方の体験談を集めてみた。 - プログラミングを仕事に!
http://doryo9999.hatenablog.com/entry/2018/08/27/210644
Progate と、無料のRails Tutorial で勉強するのが、Webエンジニアの定番みたい >>912
いや、だからPerlの標準モジュールは
単に野良モジュールをバンドルしただけなんだよ bashから呼び出したりシェル代わりに使ったりするならrbenvが便利だな そろそろ夏休み終了の季節か
時間つぶし用のRuby本をどこかの出版社で出してくれ 31日は今日までだが、明日明後日は土日なんだぜ・・・ みんなエディタは何使ってるか教えて
私はatom使ってる
テーマが沢山あって楽しい Atomなんかまだ使ってる人いたんだ
MSのVSCodeに完敗して誰も使わなくなり、さらに開発元のGitHubがMSに買収されて完全に終わったエディタだぞ atomもvscodeもどちらも同じマイクロソフト社の
製品なんだから喧嘩するな VS codeはターミナルの日本語が重なって表示される不具合を治す方法がわからなくてアンインストールしました……
vimとかサクラエディタとか、他にもエディタいっぱいあるけど、VS code派が多いのかな? Ruby以外では今はVSCodeが一世を風靡してる状況
- 大魔王マイクロソフトによって開発されたエディタである。
- VSCodeはTypeScriptという悪魔の言語によって書かれている。
- TypeScriptはこれまた大魔王マイクロソフトが人々を誘惑し静的型に引き摺り込むために開発された言語である。
- TypeScriptはRubyist達に愛されRailsのフロント用公式言語にも採用された聖CoffeeScriptを抹殺した。
こういう宗教的事情があるのでRubyistだけはVSCodeを忌み嫌っている。 Rubyアンチが必死に特定のスレをあげてて吹く
ほんと何考えてんだ? 荒らしがまた涌き出したのかと思ったら
◆QZaw55cn4c が帰ってきてたのか
いい加減に板を荒らすのやめろよ Rubyは基本emacsだな
Windowsしか使えない時はxyzzy使ってる >>932
emacs使いならWindowsでも使え。 Windows のRubyist は、VSCode を使う
>>924
上下矢印を動かすと消える
それか一旦、端末を閉じてから、開き直すとか emacs→教祖様も愛用する大正義エディタだが習得コストや環境整備が極めて高い
Atom→今や情弱の代名詞
VSCode→宗教上の問題で使用不可
RubyMine→高い
Rubyistにとっては受難の時代だね あとRubyMine使っちゃうと「ゲロ重いIDEなんかに依存せず軽快にRubyを操る俺かっけえwwドヤァww」ができなくなるという大きな問題があるね あとはSublimeもあるな
VSCodeにあらゆる面で負けてるものに金を払うという理不尽さを受け容れられるなら悪くない選択肢だね Vimは最悪でしょ
教祖様に中指立てるようなもんだぞ lisp コンパイラが存在するように ruby コンパイラがあってもいいと思うの… cloud9でいいじゃん
もはや開発デバイスでwindowsもmacもlinuxも関係ない
いちいちローカルに仮想サーバーなんか作らなくていいし
IDEとしては普通だけど十分 VSCodeって以前試してみたことあるけど動作が重すぎて論外 実際はAtomやRubyMineより遥かに軽いんだよなあ
Ruby製のエディタだと言って>>946に触らせたらクソ軽い最高のエディタだと言いそう ATOMって人気無いのか……色んなテーマがあるのが面白くて、気分で変えたりするのが楽しい
ATOM以上にテーマのカスタマイズできるエディタないよな? >>948
VSCode
Atom用のテーマ作ってた人もみんなVSCodeに乗り換えてしまって、VSCodeに移植されてるよ
まあRubyistには無縁なんだけどね >>951
VS codeでもテーマ変えられるんだ!知らなかった。ありがとう
Atomは重いし下火ならVS codeに乗り換えようかな……
でも、Rubyistには無縁とか、宗教上の問題で使えないってどういうこと? キチガイ独自の宗教事情だから気にするな
VS CodeにRuby Solargraph入れるとめっちゃ捗るぞ 暗めのテーマ、Dracula とかか?
Bracket Pair Colorizer
vscode-icons, VSCode Great Icons
indent-rainbow
この辺の拡張機能を使えば、カラフル Bracket Pair Colorizer
カッコの色が、それぞれ違う。
これが無いと、カッコの対応関係がわからないから、プログラミングできない! 未だにK2Editorを使っている。いい加減乗り換えたいが動作が重いか機能不足かの二択でいかんともしがたい メソッドやクラスの定義に飛べたり、クラス名や変数名変えたらプロジェクト内の全てに更新かけてくれるIDEない? >>950
キーバインドを emacs 式に(できれば簡単に)できるかどうか
それ以外はどうでもいい… >>943
ATOMもvscodeも大部分nodejsだったはず
pythonのidleはpython+tkだったか? もう今やEmacsの方がVS Codeより軽いぐらいだからな
VS CodeもAtomよりはよっぽどマシだけど、それでももっさり感は否めない
となるとEmacsか、せいぜいSublime Textって選択肢になってしまう >>953
solargraph入れたらgemが必要と言われ、gemインスールしてからgem install soragraphしたらエラーが出て解決策が分からない
プログラミング難しいっすね……(二ヶ月目初心者) >>961
ゴリゴリに拡張しまくったemacsやvimなら体感的にはVSCodeの方が速いわ >>962
コーディングより環境構築がややこしいのはプログラミングあるあるだから…
Windowsでruby installer使ってるならreadmeの最後にも書いてあるけど↓を試してみ
> gem uninstall eventmachine
> gem install eventmachine --platform ruby -- --use-system-libraries Rubyのgemに限らず最近の言語はパッケージ的な仕組みを持っているけど、処理内容が隠されてしまうから
意図した結果が得られないときのトラブルシュートが難航するんだよな
しかもパッケージがらみの情報は言語本体の情報より少ない上に初心者だとエラーの見方もわからなかったりしてより厳しい状況になる
これ、最近乱立気味のビルドシステムでも同じことが言えていて、標準的な手順から外れたとたん
ビルドシステムを勉強しエキスパートにならないとにっちもさっちもいかなかったりするし トラブったらissue上げるだけだろ
コミュ障かよ Win環境でのissueなんか上げても誰も相手にしないぞ
UnixではテストしたWinは知らんでクローズ >>968
それでクローズされた具体的なチケットプリーズ Rubyが書けるようになるとCやJava,Pythonに対してどんなメリットがあるの?
楽しい以外で たのしいがRubyの存在意義なのに
それを無視されましても・・・ 漏れなんか、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 も動かない >>971
そのへんよりはRubyのほうが書きやすいことは間違いない。
楽しいかどうかは外しても、楽ではある。 >>965
だめでした……
・eventmachineはインスールされていませんでした
・ご指摘のコマンドを入力しましたが、"failed to build gem native extention."のエラーが出ました
しかし、Rubyを再インストールするなど紆余曲折の末、gem install solargraphを試したら、無事インストールすることができました!ありがとうございました!
これでVS codeが使えます! >>954
このへんの拡張機能も入れました!見やすくなってすごくいいです!
ATOM派だったけど心が揺らいできました!VS codeもいいですね! >>971
CやJava,Pythonを書けるようになってから
Rubyのことをチラッとでも勉強してみると、
>>974もいっているように、
「このへんの処理やるならRubyのほうがラクに書けるな」
って部分がわかるかと。
いきなりRubyだけ学んでも、ありがたみがわかりにくいと思う。 VSCode の拡張機能なら、以下も必需品。
VSCodeのスレも参照
Code Runner
右クリックメニューから、実行できる
Live Server
ファイルを保存するだけで、ブラウザへ反映される 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]]
単純な結合になってしまいます。 行列ってライブリ使うんじゃなかった?
Rubyで回転行列とかやってたときに標準添付のライブラリ使ったような覚えがある
というか、bcモードなんてあるのか >>971
楽しい以外は特に無いが。なにか問題が? その言語じゃないとできない。みたいなことは殆どないよ。
大抵の言語でできることは他の言語でもできてしまう。 >>979
bcモードはload mathn, fraction or matrix are availableってことだから
Matrix[[1,2]] + Matrix[[3,4]]ってしないとダメ
bcモードじゃないときはrequire 'matrix'する必要がある 漏れは、Selenium WebDriver, Nokogiri で、
自分のPC の画像フォルダにある、様々なサイズの画像を、
すべての画像の高さを、画面の80% に揃えてから、ブラウザで見てる 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 を実行 2.5環境でruby/dbiがエラーはいて動かないのでsequelを勉強してます。
sql serverにネットワーク越しにrubyodbcでodbc接続してますが
なぜかdecimal型が全部string型で帰ってくるし既存のテーブルだと
intで戻ってくるはずのまでそんなものだから延々調査してたんですけど元凶はrubyodbcでした。
odbcで帰ってくる値をrubyの型に変換するときに特定の型以外全部stringで返す仕様でした。
昨日tinytds接続にしたらdecimalはbigdecimalで帰ってきました。 >>990
img_str = %(<img src="#{pict_path}">)
でよくない?
それにgsub使うよりdelete("\n")の方が分かりやすい
あと文字リテラルに"と'が無差別に混ざっているのが気持ち悪い 改行を削除しないと、タグの間に、改行ノードを作るかも知れないので、ややこしい
HTML の属性は、" で囲むから、それを文字列にするには、' の方がよい
"〜"属性"〜"
"属性" を含む文字列を、" で囲んで、" の対応関係が崩れて、ハマったから
'〜"属性"〜'
これなら、OK いやだからさ
index_url = "file:///" + File.join(__dir__, 'index.html')
こことかおかしいじゃん >>994
他スレで醜態晒してROMってる言うたのにまだいるのな このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 144日 23時間 54分 18秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。