[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 08/13 18:23 / Filesize : 307 KB / Number-of Response : 1052
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Ruby 初心者スレッド Part 66



1 名前:デフォルトの名無しさん [2020/01/04(土) 01:15:34.30 ID:X7t3Qsuc0.net]
プログラミング言語 Rubyについての、初心者向けスレです。質問・要望・雑談などをどうぞ

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

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

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

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

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

Ruby コミュニティ公式
https://www.ruby-lang.org/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured

732 名前:デフォルトの名無しさん mailto:sage [2020/08/19(水) 02:33:17.91 ID:w/3evjlx0.net]
>>690
RubyでCookieの読み込みや保存を幸せにする(Mechanize&Selenium)
https://rooter.jp/web-crawling/ruby-cookie/

「ruby mechanize cookie」で検索すれば?

漏れは、selenium webdriver で、実際のブラウザを操作しているだけだから、
クッキーの事も、考えたことはない。
ブラウザが勝手にやる

プログラミングでは、入力して、ボタンを押すだけだから、簡単。
下は、yahoo のログインの例

driver.navigate.to "https://login.yahoo.co.jp/config/login_verify2?.src=ym"

element = driver.find_element(:id => "username")
element.send_key "ユーザー名"

driver.find_element(:id => "btnNext").click

element = driver.find_element(:id => "passwd")
element.send_key "パスワード"

driver.find_element(:id => "btnSubmit").click

733 名前:700 (ワッチョイ 1f2c-1yu9) mailto:sage [2020/08/19(水) 07:23:42 ID:w/3evjlx0.net]
selenium webdriver なら、これで、
この板のtest スレの、書き込み確認画面が出る。
ひょっとしたら、確認画面が出ないかも知れない

require "selenium-webdriver"

options = Selenium::WebDriver::Chrome::Options.new

options.add_option( :detach, true ) # ブラウザを切り離す
options.add_argument( '--start-maximized' ) # 画面最大

driver = Selenium::WebDriver.for :chrome, options: options
driver.manage.timeouts.implicit_wait = 15 # default timeout

# プログラム板のtest スレ
driver.navigate.to "https://mevius.5ch.net/test/read.cgi/tech/1597362675/1"

element = driver.find_element( :css => ".formbody textarea" )
element.send_key "あい"

driver.find_element( :css => ".formbody input.submitbtn" ).click

734 名前:700 mailto:sage [2020/08/19(水) 09:15:13.90 ID:w/3evjlx0.net]
>>702
の続きに、以下を書くと、確認画面に切り替わった後の処理も、できる

単に、input[type=submit] のボタンを待つと、
遷移前後の両方のページで、ヒットするので、
確認画面に切り替わったかどうか、判別できない

遷移後のページだけに存在する、要素を待てば、
それが出現するまで、wait できるかも

sleep 7

# 確認画面が出る。https://mevius.5ch.net/test/bbs.cgi
puts driver.current_url # 切り替わったかどうか、URL を表示する

# ボタンのラベルを表示する
puts driver.find_element( :css => "input[type=submit]" ).attribute( "value" )

735 名前:デフォルトの名無しさん [2020/08/19(水) 10:10:18.21 ID:jdryYSd80.net]
>>701さんのリンク先参考に見よう見まねでとりあえずやってみたんですけど、いまいちcookie_jarとかよくわからない・・・

require 'mechanize'
require 'yaml'

agent = Mechanize.new
agent.user_agent_alias = "Windows Mozilla"
agent.get('https://mevius.5ch.net/test/read.cgi/tech/1578068134/l50')
cookie_str = agent.cookies.map{|e| e.set_cookie_value}.join(", ")
#puts cookie_str

agent2 = Mechanize.new
HTTP::Cookie.parse(cookie_str, "https://mevius.5ch.net/test/read.cgi/tech/1578068134/l50").each{ |cookie| agent2.cookie_jar << cookie }

cookie_yml = agent.cookies.map{ |e| e.to_yaml }.join
#puts cookie_yml

agent2.cookie_jar << YAML.load(cookie_yml)

#pp agent2.cookie_jar

agent2.user_agent_alias = "Windows Mozilla"
page = agent2.get('https://mevius.5ch.net/test/read.cgi/tech/1578068134/l50')


form = page.form_with(:action=>'//mevius.5ch.net/test/bbs.cgi')
form.field_with(:name=>'MESSAGE').value = 'テスト'
next_page = agent2.submit(form)
form2 = next_page.form_with(:action=>'../test/bbs.cgi?guid=ON')

736 名前:デフォルトの名無しさん [2020/08/19(水) 10:13:04.91 ID:jdryYSd80.net]
agent2.submit(form2)

737 名前:700 mailto:sage [2020/08/19(水) 10:21:48.83 ID:w/3evjlx0.net]
そりゃ、個別のページのクッキーを解析したり、大変だよ。
お金をもらえる訳でもないのに、他人が作ったシステムを分析するのは

それが嫌だから、漏れらは、selenium webdriver で、ブラウザにやらせる。
入力したり、ボタンを押したり、ブラウザを操作するだけだから、まだマシ

738 名前:700 mailto:sage [2020/08/19(水) 10:32:07.88 ID:w/3evjlx0.net]
>>704
>form = page.form_with(:action=>'//mevius.5ch.net/test/bbs.cgi')

>form2 = next_page.form_with(:action=>'../test/bbs.cgi?guid=ON')

これらには、https: とか、付いていないけど、動くの?

739 名前:700 mailto:sage [2020/08/19(水) 10:38:39.32 ID:w/3evjlx0.net]
簡単に言えば、serialize と同じなんだろう。
異なるアプリに、Ruby のオブジェクトを渡せない

1 などの数値も、"1" みたいな文字列になってしまうのだろう。
すべての型情報が無くなって、文字列になる。
だから、YAML.load とかを、使っているのだろう

今なら、JSON を使う事が多い

740 名前:デフォルトの名無しさん [2020/08/19(水) 14:06:31.62 ID: ]
[ここ壊れてます]



741 名前:jdryYSd80.net mailto: agent.getの時点でcookieの情報って得られてるんですね []
[ここ壊れてます]

742 名前:デフォルトの名無しさん [2020/08/19(水) 14:20:11.51 ID:jdryYSd80.net]
>>706
seleniumはブラウザ操作でmechanizeはhttp解析?みたいな感じですか?

743 名前:デフォルトの名無しさん [2020/08/19(水) 20:08:35.13 ID:JONuvCWb0.net]
>>690
よく調べたわけじゃ無いけど、
CSRF, クロスサイトリクエストフォージェリ、サイバー攻撃の一種対策されてるんじゃないかなぁ。

つまり、何某かのTokenが5chから送られていて、そいつをPOSTしないといけないとか。

5chのサイトからPOSTする時には、<input type=“hidden” value=“Token” name=“CSRF対策”>とかのタグがあって、Submitと共に自動送信される。

744 名前:700 mailto:sage [2020/08/19(水) 22:43:49.56 ID:w/3evjlx0.net]
プログラム板のtest スレと、その確認画面は、どちらも、mevius.5ch.net だから、
クロスドメインアクセスにはならない

ただ、HTML は本来、1回限りのアクセスで、前後のページには関係がない。
それを関係があるようにするために、ブラウザのクッキーを使って、セッションを結ぶ

こういうセッションがあるものは難しい。
5ch 側は仕様を知っているけど、分析する方は、仕様を知らないから、
ずっと他人のアプリを解析しなければならない

漏れは、解析するのが面倒だから、selenium webdriver を使って、ブラウザにやらす。
ただ、これはブラウザの操作でも、難しい

クッキーが無ければ確認画面が出て、有れば確認画面が出ない。
こういう条件判断をしないといけないから、難しい

Ruby on Rails でも、システムテストには、Capybara を使うけど、
これは、seleniumで、Headless Chrome を使っている

他人のアプリの解析は、HTML ヘッダーなどを分析しないといけないから、かなり難しい。
スクレイピングをやってる香具師で、こういうのを知ってる香具師は、まずいない。
HTMLヘッダーなんて、無数の項目があるから

745 名前:700 (ワッチョイ 1f2c-1yu9) mailto:sage [2020/08/19(水) 22:57:07 ID:w/3evjlx0.net]
たぶん、Mechanizeは、Nokogiri みたいなものなんだろう

その時点のHTML を取得するだけ。
ちょっとした、GET, POST などは、出来るけど

JavaScript, Ajax で動的にページを作ったものには、対応できないとか

746 名前:デフォルトの名無しさん [2020/08/20(木) 06:07:11.62 ID:5ApdpCMn0.net]
>>713
MechanizeはServerから受け取ったCookieを返すよ。

だから、POSTしたパラメータに問題があって上手くいかないのだ。

書き込み画面のHTMLからinputタグをscrapingしてhidden属性の付いてるのを探す事が先決。

見つかったらそのname, valueを取り出してPOSTパラメータへセットしてやれば良い。

747 名前:デフォルトの名無しさん [2020/08/20(木) 06:08:32.79 ID:5ApdpCMn0.net]
seleniumが簡単だが、動作が重い。
Mechanizeでがんばれ!

748 名前:デフォルトの名無しさん [2020/08/20(木) 06:38:17.41 ID:5ApdpCMn0.net]
>>688
これは違う!

外部・CP932 → Ruby内部・CP932 → 外部・CP932

が正解。
Ruby内部は、外部・CP932であればCP932だし、UTF-8なら、それに合わせて、Ruby内部・UTF-8なのだ。

749 名前:デフォルトの名無しさん [2020/08/20(木) 06:39:16.98 ID:5ApdpCMn0.net]
>>709
agent.cookies

750 名前:デフォルトの名無しさん [2020/08/20(木) 07:05:48.71 ID:5ApdpCMn0.net]
大抵のWebサイトのFormは、Formを表示したBrowserからしか、POSTできない様になっている。

その仕組みは、ServerがFormを表示するするHTMLを生成する時に、Tokenを埋め込み、そのTokenが帰って来なかったPOSTを弾くと言うものだ。

TokenはFormが表示されるごとに変更さる。(one time Token)

https://html-coding.co.jp/knowhow/security/csrf/



751 名前:700 mailto:sage [2020/08/20(木) 07:13:47.07 ID:nWR09WFB0.net]
Rails にもある、CSRF のセキュリティー・トークンとかか?

2つのページが、同じセッションと判別できるような、仕組みを探さないといけない。
他人が作った、アプリを解析するのは大変

752 名前:デフォルトの名無しさん [2020/08/20(木) 07:53:19.33 ID:5ApdpCMn0.net]
>>719
違うんだなぁ。
RubyプログラムがいきなりPOSTしても成功しない。
一旦Form画面をScrapingすれば良いのだ。

753 名前:デフォルトの名無しさん mailto:sage [2020/08/20(木) 09:46:21.48 ID:Myo84Br30.net]
>>716
それも違う。RubyはUnicode対応で作られてる
だから内部もUnicode
Windows側からUTF16で渡された場合はUnicodeで受け取るし
ANSIで渡された場合はUnicodeに変換して処理する
出力する場合はその反対

754 名前:デフォルトの名無しさん mailto:sage [2020/08/20(木) 10:42:37.67 ID:nWR09WFB0.net]
Ruby の文字列は、混在できる

ある文字列は、CP932 で、
別の文字列は、UTF-8 とか

何もしなければ、変換されない

755 名前:デフォルトの名無しさん mailto:sage [2020/08/20(木) 11:13:11.83 ID:FC2EZr4O0.net]
>>720
kan = [
"\xE6\xBC\xA2\xE5\xAD\x97".force_encoding( Encoding::UTF_8 ),
"\x8A\xBF\x8E\x9A".force_encoding( Encoding::CP932 ),
"\xB4\xC1\xBB\xFA".force_encoding( Encoding::EUC_JP ),
"\x1B\x24B4A;z\x1B(B".force_encoding( Encoding::ISO2022_JP )
]
puts kan
kan.combination(2){ |a,b| p a == b }
kan.size.times{|n| puts kan.inject(''){|r,s| r << s.encode(kan[n].encoding) } }
puts kan.map{|s| s.encoding }

756 名前:デフォルトの名無しさん (ワッチョイ 7f01-08ML) mailto:sage [2020/08/20(木) 12:03:56 ID:tyNv301J0.net]
>>716,721
君たちまずマニュアルを読もうか
https://docs.ruby-lang.org/en/2.7.0/Encoding.html

757 名前:デフォルトの名無しさん mailto:sage [2020/08/20(木) 13:07:43.70 ID:UjCnOWKd0.net]
>>719
解析が大変かどうかはものによる。
セッションIDベースのWebアプリならともかく、ログインなしの掲示板なら大したことはないやろ。

758 名前:デフォルトの名無しさん mailto:sage [2020/08/20(木) 22:50:29.80 ID:Uplnh7Gz0.net]
>>721 変換はせんだろ

759 名前:デフォルトの名無しさん (ワッチョイ 1f61-VqLe) mailto:sage [2020/08/21(金) 01:31:14 ID:SPVvFNrm0.net]
Rubyをしばらく使ってきたが、やっぱり、ブロックの最後がendであることや、
0,1が共に真であること、複数行コメントが書きにくいこと、
構造体の書き方が new Person ではなく、Person.newであること、
Directory関連でワイルドカードを使うと、関連フォルダを全て変数に読み込んでから
動作し始めること、などが使いにくいので、node.jsに乗り換えようかなと思ってる。
Rubyが良い点は、それらの機能は使ったことは無いけど、
・最初から用意されているメソッド群でmethodチェーンが書けること。
・ブロック関数が書けること。
かな。
でも、使ったことがないということは、優先順位が低いと言うことではなかろうか。

760 名前:デフォルトの名無しさん mailto:sage [2020/08/21(金) 10:50:02.63 ID:w5e9p4kz0.net]
え。
そんな調子だと何を使ってもダメそう。w



761 名前:デフォルトの名無しさん mailto:sge [2020/08/21(金) 13:05:57.88 ID:SPVvFNrm0.net]
>>728
個人的には、実世界では、能力はかなり高いと評価されているけれど。

762 名前:デフォルトの名無しさん mailto:sage [2020/08/21(金) 14:15:07.59 ID:tDzk/wNZ0.net]
0, 0.0, 空文字列、空配列、空辞書など、
各型に、偽がある言語は、バグる

Ruby の偽は、nil, false だけ

MISRA-C でも、( a ) みたいに、単独の数値型の変数で、真偽値を表すのは禁止されてる。
0 なら偽として使う方法

Ruby で、if ( b ) みたいに書けるのは、nil の時だけ偽だから。
0, 0.0, 空文字列、空配列、空辞書などでも真

または、b がbool 型の場合

763 名前:デフォルトの名無しさん [2020/08/21(金) 14:31:29.79 ID:2LaXNW9iF.net]
nil == false
は false

764 名前:デフォルトの名無しさん mailto:sage [2020/08/21(金) 14:33:13.81 ID:w5e9p4kz0.net]
>>729
相対評価は、まわりのレベルがわからんので、なんとも。
元コメから判断すると、周辺まるごと低いのかな?と思わざるを得ない。w

まあ、たまたま自分が使ってない特定機能をアレコレ言うのはアホに見えるのはたしか。

765 名前:デフォルトの名無しさん mailto:sage [2020/08/21(金) 14:35:00.79 ID:w5e9p4kz0.net]
>>730
型のないRubyでそんなことを言われても。w
そんなの、たいした違いじゃないよ?

766 名前:デフォルトの名無しさん mailto:sage [2020/08/21(金) 14:49:57.72 ID:SPVvFNrm0.net]
>>732
そんなことない。
非常に上層のごく一部の人しか入れないところだと言われている。

767 名前:デフォルトの名無しさん [2020/08/21(金) 15:22:52.16 ID:2LaXNW9iF.net]
スキンのひとか

768 名前:デフォルトの名無しさん [2020/08/21(金) 15:35:51.23 ID:dYZcDjdTH.net]
学術の巨大掲示板群 - アルファ・ラボ ttp://x0000.net
数学 物理学 化学 生物学 天文学 地理地学
IT 電子 工学 言語学 国語 方言 など

VM + ASM を書いた (C#, DX) * x86 ではない!
simulationライブラリで純粋な関数式プログラミングをする
UIライブラリ (C#, 2D) を作ったよ
連続と離散を統一した!
4Dエンジン
matrixのライブラリ
ある強力なFor関数
SQLライブラリ

VM + ASM のダウンロード
ttp://up.x0000.net/files/TSimulang.zip

769 名前:デフォルトの名無しさん mailto:sage [2020/08/22(土) 00:05:39.01 ID:cH1OO8njr.net]
「実世界では、能力はかなり高いと評価されている」っていう言い回しが最高に知性を感じないんですけど
いや煽りとかじゃなくマジで

770 名前:デフォルトの名無しさん mailto:sage [2020/08/22(土) 00:13:16.02 ID:rn2pygew0.net]
異世界では無双している



771 名前:デフォルトの名無しさん mailto:sage [2020/08/22(土) 02:33:00.24 ID:orN/hav20.net]
>>737
非常に上層のごく一部の人しか入れないんだぞ!

772 名前:デフォルトの名無しさん [2020/08/22(土) 08:20:46.05 ID:lfF/bqLu0.net]
非情に上層のごく一部の人しか入れないんだぞ!

773 名前:デフォルトの名無しさん (ワッチョイ 7f52-Qb6H) mailto:sage [2020/08/22(土) 08:46:37 ID:j5SL9Fsb0.net]
>>737
あんまりちゃんと人と会話したりまともな本とかは読んだことがなくて、丁寧にかつちょっとカッコつけて話そうとしたらラノベとかで覚えた変な言い回ししか出てこなかった、と予想してみる

774 名前:デフォルトの名無しさん [2020/08/22(土) 15:31:25.70 ID:rjSk5doP0.net]
まあ、能力の高いっていうそこのお方は、Youtubeで流行ってる学歴ジャンケンでもして能力を示した方がいいんじゃん?
学歴だけが能力を示すものじゃないにしても、能力がどうの言い張るだけよりずっとマシだし、おおよその実力が周りの人も推定できるだろうからいいぜ!

775 名前:デフォルトの名無しさん mailto:sage [2020/09/01(火) 22:10:17.03 ID:vLz2GEqc0.net]
Rubyは、node.jsに比べて、ファイル出力のメソッド名が短いので楽。
fp=File.open("filename","w");
fp.print( "nanigshi=#{変数名}\n" );
みたいに書ける。node.jsだと、
fd = fs.openSync("filename", "w");
fs.writeSync(fd, `nanigshi=${変数名}\n` );
となり、キーワードが長い。逆引用符`が打ち込みにくいという
欠点も有る。

776 名前:デフォルトの名無しさん (オッペケ Sr51-eS8N) mailto:sage [2020/09/01(火) 22:45:30 ID:Bhx0z62Fr.net]
US配列なら楽だぞ

777 名前:デフォルトの名無しさん mailto:sage [2020/09/01(火) 22:58:40.10 ID:JyDU62SB0.net]
>>743
「Sync」をあえて表現してるんやろ。
ポリシーの問題。

778 名前:デフォルトの名無しさん mailto:sage [2020/09/01(火) 23:33:04.32 ID:knLE24Nq0.net]
ブロックと;省略で
File.open("filename","w") { |file| puts "nanigshi=#{変数名}" )
みたいに書くのがRubyっぽくない?

779 名前:デフォルトの名無しさん mailto:sage [2020/09/02(水) 02:02:43.13 ID:0/6Ab1gT0.net]
クローズしちゃうだろ

780 名前:デフォルトの名無しさん mailto:sage [2020/09/02(水) 15:16:44.13 ID:Wngy4TOD0.net]
>>745
でも、コンピュータ黎明期の非常に古くから open, write は、同期的だったの
だから、互換性を考えれば、逆さまにしたのは問題。



781 名前:デフォルトの名無しさん mailto:sage [2020/09/0 ]
[ここ壊れてます]

782 名前:2(水) 15:21:09.21 ID:Wngy4TOD0.net mailto: open, writeといえば、Unix/Linux/Windows/Macでも動作がほぼ同じな
非常に大事なもので、特にUnix/Linuxでは、「全てがファイル」という設計
思想であり、その根幹を成すのが、これらの関数で、あらゆる概念の基礎と
なっているので、その動作を変更するのはあらゆる場所に悪影響を及ぼす。
Unix系では、OSの動作の90%以上が、open, writeに依存した設計に
なっているといってもかごんでは無いくらい、基礎中の基礎。
その動作を変更することは、自然法則を変更するくらい驚天動地の試み。
重力が引力ではなく斥力になってしまうくらいで、太陽も惑星も存在し得ない
位の結果となる。
[]
[ここ壊れてます]

783 名前:デフォルトの名無しさん mailto:sage [2020/09/02(水) 15:57:35.42 ID:iCfAZPhu0.net]
>>748
Cとの互換性がー、とか非同期重視のアグレッシブなNode.jsに言うの?w

784 名前:デフォルトの名無しさん mailto:sage [2020/09/02(水) 16:53:35.95 ID:X9xcF9vI0.net]
>>749
でもネットワークはファイルじゃないんですよ
全てがファイルという設計と言っても
その程度のものなんです。

785 名前:デフォルトの名無しさん mailto:sage [2020/09/02(水) 17:55:27.42 ID:Wngy4TOD0.net]
>>750
Cとの互換性というより、UnixやWindowsなどのあらゆるOSの基礎の部分との
互換性。
それくらい、open, writeは、OSの基礎に根ざしていて、勝手に働きを変えるべき
じゃない。
働きを変えたいなら、変えた方の関数の名前を少し変えるべき。
それで十分なのに、名前と働きをさかさまにしてはいけなかった。

786 名前:デフォルトの名無しさん mailto:sage [2020/09/02(水) 18:19:28.61 ID:0/6Ab1gT0.net]
rubyInstallerでruby 2.7入れたんだがirbのレスポンスがめちゃくちゃ遅くて
かなりゆっくりキーボード入力しても入力を取りこぼすんだけど
速くする方法ありませんか?

787 名前:デフォルトの名無しさん mailto:sage [2020/09/02(水) 21:47:08.53 ID:iCfAZPhu0.net]
>>752
いちいちAsyncをつけろというのか?
Node.jsのポリシーにあわんやろ。
郷に入っては郷に従え。

オレも知らんけど。w

788 名前:デフォルトの名無しさん [2020/09/03(木) 10:05:34.13 ID:DK3Ul6vKF.net]
Sync.js

789 名前:デフォルトの名無しさん [2020/09/04(金) 00:42:11.02 ID:Wl7qFIBb0.net]
Node.js は非同期が基本。
Windows では、50ms 以上掛かるものは、非同期にするのが基本

>>753
irb とか、そんな面倒なものは使わない

VSCode の拡張機能・Code Runner(Run Code)で、
ファイル全体、または、コード片を選択して実行できる

790 名前:デフォルトの名無しさん (ワッチョイ bf8c-9HBf) mailto:sage [2020/09/04(金) 03:38:08 ID:Akgzavid0.net]
VSCodeでCode Runnerね。オーケーオーケー



791 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 05:36:12.08 ID:ovAJuzA/0.net]
穴ほって埋めるやつか

792 名前:デフォルトの名無しさん mailto:sage [2020/09/04(金) 10:18:21.30 ID:icCvRHhg0.net]
平安京エイリアンか。

793 名前:デフォルトの名無しさん [2020/09/05(土) 22:17:01.41 ID:dAk5cbFF0.net]
エンジニアチャンネル粟島、9/4

プログラミングでYouTube動画の編集作業を自動化する
https://www.youtube.com/watch?v=2nDkNHeCKs4

プログラミングで、自動的に無音部分をカットして、動画をつなげる。
Python で作ってる

皆、何時間も掛かって編集しているから、
誰か、Ruby で作って、公開しろ

粟島に、スーパー・プログラマーの称号を独り占めさせるのは、癪にさわる

794 名前:デフォルトの名無しさん [2020/09/06(日) 14:32:01.97 ID:pKWvrGW4F.net]
ffmpeg 呼んでるだけだから ruby で同じことすればいいだけ
そもそも youtube の web 上の作業を自動化するのかと思ったらそうでもないし
誤解を招く

795 名前:759 mailto:sage [2020/09/07(月) 11:58:27.72 ID:IF51aHwX0.net]
粟島に、敵対心むき出しの、凡才プログラマーKBOY に教えてやったら?

エンジニアチャンネル粟島

【検証】現役プログラマーは30万円の案件を何時間で出来るのか?
https://www.youtube.com/watch?v=rt_X6n9oWa4

YouTube API で、指定条件に当てはまる、動画を集める(filtering)のを、Ruby で、1時間で作った。
つまり、時給30万円!

これも最終的に、30人が応募して、数千円になったらしいがw

796 名前:デフォルトの名無しさん (エムゾネ FF7f-j7FC) [2020/09/07(月) 12:03:06 ID:K0kNn/CsF.net]
闇サイトのバイトか

797 名前:デフォルトの名無しさん mailto:sage [2020/09/22(火) 15:57:03.29 ID:uSjSk1xMZ]
副業、大手も制度着々…コロナ禍、働き手は空き時間活用
https://www.itmedia.co.jp/business/articles/2009/07/news111.html
富士通「年収3500万円」の衝撃 ソニー、NECも戦々恐々の「グローバル採用競争」
https://www.itmedia.co.jp/business/articles/2008/21/news031.html
東大の起業ラッシュは本物か、大学発ベンチャー数日本一の実力
https://business.nikkei.com/atcl/NBD/19/special/00448/
AI研究の第一人者、東大・松尾研でも起業ラッシュ
https://business.nikkei.com/atcl/gen/19/00158/051900002/?i_cid=nbpnb_arc
失敗は認める、多数決はダメ。拡大する「社会起業家集団」の作り方
https://newswitch.jp/p/23033
新卒“即”起業せよ。社会起業家への最短距離に挑む若者たち
https://newswitch.jp/p/23020
人々の共感を得られないと潰される時代。
https://news.yahoo.co.jp/articles/37aef71415e8181ce8451e27feb3983bf1f6f9cd
ゼロから起業するよりも事業承継(小さな会社の買収)が圧倒的に有利である3つの理由
https://honsuki.jp/pickup/17323.html
「エース人材だって起業OK」、NECは挑戦者が集う場をつくる
https://business.nikkei.com/atcl/gen/19/00106/012900003/
NECなど「出向起業」 大企業人材、起業しやすく
https://www.nikkei.com/article/DGXMZO61733720Q0A720C2TJ1000/

798 名前:デフォルトの名無しさん [2020/09/23(水) 01:34:43.74 ID:vUEpR4nB0.net]
エンジニアチャンネル・小川

【悪用厳禁】Amazonの価格を監視するシステムを作ってみた
https://www.youtube.com/watch?v=Gr6FJUOfMHc

Amazon のAPI を使って、価格を監視して、LINE へ通知する

799 名前:デフォルトの名無しさん mailto:sage [2020/09/28(月) 08:01:27.35 ID:ZnjqOblj0.net]
このサイトIRB代わりに使ってたんですがバージョン2.1.5とめっちゃ古いです
ライブコーディング?機能のついた同種のサイトってないですか
fatiherikli.github.io/fil/#eyJwYXRoIjoiSVJCLnJiIiwic291cmNlIjoicCBSVUJZX1ZFUlNJT04ifQ==

800 名前:デフォルトの名無しさん [2020/10/01(木) 08:39:12.41 ID:theiHz1p0.net]
JSON ファイルの中身が、下のようなユニコード・コードポイントの表示が多くて、読めない

{{\u30ab\u30ec\u30f3\u30c0\u30fc 10\u6708}}

ファイルを丸ごと読めるように、変換する方法を教えて!



801 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 08:49:16.5 ]
[ここ壊れてます]

802 名前:1 ID:theiHz1p0.net mailto: >>766
paiza.jp は比較的、新しいバージョンだったと思う

puts RUBY_VERSION
と入力してみ
[]
[ここ壊れてます]

803 名前:デフォルトの名無しさん mailto:sage [2020/10/01(木) 21:03:03.13 ID:BMjHKKQ5r.net]
>>766
そもそものopalのサイト使えば?
https://opalrb.com/try/

>>767
標準出力に出力すれば?

804 名前:765 [2020/10/01(木) 22:25:46.66 ID:theiHz1p0.net]
JSON ファイルをcat しても、変換されませんでした!

普通の英数字と、\u6708 みたいな文字が混じっているファイルです

805 名前:デフォルトの名無しさん [2020/10/02(金) 09:07:20.78 ID:ugOoTtJuM.net]
matlabでのfiltfilt()のように、ゼロ位相デジタルフィルター処理ができる関数はなんでしょうか

806 名前:デフォルトの名無しさん [2020/10/02(金) 11:29:50.32 ID:36KHjBX6M.net]
すみませんでした

807 名前:765 [2020/10/03(土) 07:39:23.69 ID:/wA+nWqo0.net]
c@at input.json | pe@rl -@Xpne 's/\\u([0-9a-fA-F]{4})/c@hr(h@ex($1))/eg'
(投稿できないので、@を入れました)
で、日本語で表示されました!

これを、Ruby では、どう書きますか?
正規表現で、\u6708 みたいな文字を、どう変換するの?

808 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 09:17:06.76 ID:DiO6Np8S0.net]
Rubyだと、正規表現にマッチした部分を引数にして関数に渡してくれる
メソッドが有る筈だから、それを使えば出来るはず。

809 名前:デフォルトの名無しさん [2020/10/03(土) 09:27:06.27 ID:F7oAx4CC0.net]
-Ks -Ke -Ku があるから -Kw もあるはずだろう(驚き最小)

810 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 09:32:00.87 ID:DiO6Np8S0.net]
>>773
以下のようにすれば、\uXXXX の部分を unicode コードとして文字に直した後のテキストが
標準出力に出力されるのではないかと思われる。
なお、試して無いので実際に動くかどうかは分からない。
$1.to_i(16)は、$1 に入っている文字列を 16進数とみなして整数値に直しているつもり。
x.chr は、数値 x を文字コードとして対応する文字に直しているつもり。
gsub は、正規表現に合致した部分を後続のブロックの中の $1 に入れて、結果に
置換しているつもり。

[test.rb]

strJson = JSONを読み込んだ文字列;

print( strJson.gsub( /\\u([0-9a-fA-F]{4})/ ) { $1.to_i(16).chr } );



811 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 09:45:21.01 ID:MOu6VxbMr.net]
そういうことならJSON.load使えば?

require 'json'
JSON.load(fname)

愚直にやるならArray#packを使いましょう。

str.gsub(/\\u(\h{4})/){[$1].pack('H*').unpack('n*').pack('U*')}

812 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 10:47:42.33 ID:DiO6Np8S0.net]
>>776
間違いがあった。正しくは、
print( strJson.gsub( /\\u([0-9a-fA-F]{4})/ ) { $1.to_i(16).chr("UTF-8") } );

813 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 10:58:07.83 ID:DiO6Np8S0.net]
"UTF-8"ではなくて、"UTF16-BE"か、"UTF16-LE"かも知れない。
試して上手く行くのを選んで欲しい。

814 名前:765 mailto:sage [2020/10/03(土) 11:41:59.34 ID:/wA+nWqo0.net]
>>777
>>778
でも、正常に動きました。ありがとう。
JSON.load で、自動的に読めるようになるのが便利

require 'json'

json = File.read( "input.json" )
p JSON.load( json )

p json.gsub(/\\u(\h{4})/){[$1].pack('H*').unpack('n*').pack('U*')}

print( json.gsub( /\\u([0-9a-fA-F]{4})/ ) { $1.to_i(16).chr("UTF-8") } );

815 名前:デフォルトの名無しさん mailto:sage [2020/10/03(土) 12:38:03.63 ID:1IyBCfpu0.net]
👨‍👩‍👧‍👦1コードポイント1文字とは限らないし¥uの後は4桁とは限らないよね👨

816 名前:765 mailto:sage [2020/10/03(土) 13:09:59.31 ID:/wA+nWqo0.net]
それなら、単純な正規表現では、ダメ。
実際に存在する、コードポイントを調べないといけない

ひょっとしたら、JSON.load は、それに対応しているかも

817 名前:デフォルトの名無しさん mailto:sage [2020/10/04(日) 15:56:43.31 ID:P8Zgc9xR0.net]
>>782
全ての文字を utf16 に変換してから、utf8に再変換すればいい気がする。


818 名前:一段階の変換で、ついでに \uXXXX の部分を 単純に 16BIT 整数に直せばいいはず。 []
[ここ壊れてます]

819 名前:765 [2020/10/05(月) 01:16:19.79 ID:z7kgQPv30.net]
\u は、4・8桁の2種類あるのか?

820 名前:765 mailto:sage [2020/10/05(月) 08:08:05.24 ID:z7kgQPv30.net]
👨‍👩‍👧‍👦 は、4つの文字が連結したような感じ

\uD83D\uDC68\u200D
\uD83D\uDC69\u200D
\uD83D\uDC67\u200D
\uD83D\uDC66

\U0001F468\U0000200D
\U0001F469\U0000200D
\U0001F467\U0000200D
\U0001F466

\u{1F468}\u{200D}
\u{1F469}\u{200D}
\u{1F467}\u{200D}
\u{1F466}



821 名前:デフォルトの名無しさん [2020/10/05(月) 10:14:21.95 ID:H6rSrLtq0.net]
もう ruby 関係無いだろ
良い加減消えろ

推奨スレ
mevius.5ch.net/test/read.cgi/tech/1545032904/
mevius.5ch.net/test/read.cgi/tech/1593777227/

822 名前:デフォルトの名無しさん [2020/10/11(日) 00:59:43.22 ID:B+MSoWxK0.net]
( line, ary ), line_num
この( ) をなくすと、エラーになる

TEXT = <<'EOT'
a
b
EOT

line_numbers = TEXT.each_line.with_object( [ ] ).with_index( 1 ) do | ( line, ary ), line_num | # 各行・蓄積変数・行番号
ary.push( line_num )
puts "#{ line_num } : #{ line }"
end

p line_numbers

出力
1 : a
2 : b
[1, 2]

823 名前:デフォルトの名無しさん mailto:sage [2020/10/11(日) 18:44:20.92 ID:vt3DXswMr.net]
>>787
仕様通りです

824 名前:デフォルトの名無しさん [2020/10/13(火) 15:52:15.31 ID:Iy+8ZYjV0.net]
初心者です
Windows10でrubyのバージョンは2.4です
gets.chompで日本語の文字列を入力しprintで出力したら文字化けするのですがどうしたら治りますか?

825 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 16:24:17.23 ID:y5Oy6HcC0.net]
漏れは、WSL, Ubuntu 18.04 を使っているけど、
Ruby Installer のMSYS 2 かい?

日本語入力が難しい

ファイルか、端末の文字コードの設定だろう。
BOM 無しUTF-8(UTF-8N)

ユーザー環境変数に、RUBYOPT を作って、--encoding=UTF-8 を設定するとか。
ただし、irb が、コマンドプロンプトでは使えなくなるので、
PowerShell しか使えなくなる

VSCode の拡張機能、Code Runner で、
選択したコード片、またはファイル全体を実行できる

これで、irbは使わなくてもよいけど、デバッグで、pry が使えなくなるかも。
pry は、irbを使っているのかも?

826 名前:788 mailto:sage [2020/10/13(火) 16:34:59.69 ID:y5Oy6HcC0.net]
2020-10-06
RubyInstaller 2.7.2-1, 2.6.6-2 and 2.5.8-2 released

Windows では最新版を避けて、2.6.6-2 を使えば?

漏れは、Windows 10, WSL, Ubuntu 18.04 で、
VSCode の拡張機能、Remote WSL も使う

Linux側には、日本人が作った、バージョンマネージャーのanyenv で、rbenv, nodenv を使って、
ruby 2.6.6, node 12.16.2 を入れた

yarn は、Windows側に入れて、WSL から、拡張子なしのyarn コマンドを呼べる。
これは、#!/bin/sh で始まるシェルスクリプト

anyenv は多言語向きで、rbenv, nodenv, pyenv, phpenv などを同じ使い方で、統一的に扱える

827 名前:788 mailto:sage [2020/10/13(火) 16:44:54.23 ID:y5Oy6HcC0.net]
Windows 版Ruby の日本語入力では、

コマンドプロンプトよりも、
PowerShell を使う方が良いのかも?

日本語出力は問題ない。
もし、フォントがかすれて表示されたら、バグっているけど

828 名前:788 mailto:sage [2020/10/13(火) 16:56:07.22 ID:y5Oy6HcC0.net]
>>790
修正

>ユーザー環境変数に、RUBYOPT を作って、--encoding=UTF-8 を設定するとか。
>ただし、irb が、コマンドプロンプトでは使えなくなるので、
>PowerShell しか使えなくなる

RUBYOPT に、--encoding=UTF-8 を設定すると、
コマンドプロンプト・PowerShell の両方で、irbが起動しなくなる

C:/Ruby25-x64/lib/ruby/site_ruby/rbreadline.rb:6135:in `delete': invalid byte sequence in UTF-8

コマンドプロンプト・PowerShell の文字コードの設定で、使えるようになるのかな?
漏れは、VSCode, Code Runner を使っているから、irbを使ってい

829 名前:ネい []
[ここ壊れてます]

830 名前:デフォルトの名無しさん mailto:sage [2020/10/13(火) 17:01:18.58 ID:v339nyYs0.net]
>>789
ridk use で切り替えられるから最新版を試すと良い
このへんの問題も改善されてたはず



831 名前:788 mailto:sage [2020/10/13(火) 17:05:42.76 ID:y5Oy6HcC0.net]
RUBYOPT に、--encoding=UTF-8 を設定すると、

コマンドプロンプト・PowerShell の文字コードの設定で、
chcp 65001
と入力したが、どちらもエラーで、irbが起動しない

でも、irbを使わなければ、
RUBYOPT に設定するのは、便利なんだけど

832 名前:788 mailto:sage [2020/10/13(火) 17:09:23.25 ID:y5Oy6HcC0.net]
>>794
ほう






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<307KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef