[表示 : 全て 最新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

620 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 00:54:33.79 ID:ze6DZkOI0.net]
>>581
【Rails】form_tagの使い方を徹底解説!
https://pikawaka.com/rails/form_tag

「formtag rails」で検索!

Rails Guide も、翻訳されてる

>>582
>favorite_count = favorite_count + 1
この1 を、10 に変えれば?

621 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 06:54:27.43 ID:DbC543670.net]
そりゃそんな人も居るだろうけど
元からアレな人も多い場所なような

622 名前:デフォルトの名無しさん (ワッチョイ 3f52-RSi0) mailto:sage [2020/06/29(月) 09:08:37 ID:L39gVdue0.net]
>>594
ここまで読んでみたところ、イライラしてるのはお前さんだけでないの?
まあ初心者の訳分からない質問に不寛容なのが多いのは確かだけど、>>584みたいなレスしちゃったら誰もまともに相手しようなんて思わないぞw

623 名前:595 mailto:sage [2020/06/29(月) 10:38:59.75 ID:ze6DZkOI0.net]
すべてのスレで、荒らしが書き込んでいるだけ。
それを知らない香具師が、ムキになって怒るのが面白いから、荒らしが居着いている

荒らしを無視すればよい

荒らしはプログラマーじゃないし、ソースコードを書いたりできない。
今までに、1度も見たことない

624 名前:デフォルトの名無しさん mailto:sage [2020/06/29(月) 19:10:25.31 ID:Z1Xkd3Wv0.net]
>>581
<form>タグを生成しています。
viewが何やってるのかよくわからない時は
ブラウザの開発者ツールを開くのオススメ

625 名前:デフォルトの名無しさん mailto:sage [2020/07/11(土) 08:27:46.76 ID:+b7VkVW+0.net]
pacman -Ss crystal
で見つからないんだけどどうすればいい?

626 名前:デフォルトの名無しさん [2020/07/24(金) 00:27:00.70 ID:So4dssPK0.net]
>>2
パーフェクト Ruby on Rails 【増補改訂版】 (Perfect series)、2020/07/25

Ruby 2.6.6
Rails 6.0.3

Windows 10 では、WSL 2

627 名前:デフォルトの名無しさん [2020/07/24(金) 20:29:14.79 ID:MwdurB8l7]
今年は6月から週休3日に。夏のトライアルを続けるサタケの意図は?
https://news.yahoo.co.jp/byline/yatsuzukaeri/20190425-00123653/
日本マイクロソフトが夏に試す「週休3日」は家族旅行の費用もサポート! 興味深いので詳しく聞いた
https://www.fnn.jp/posts/00044886HDK
4月から始まる「勤務間インターバル制度」をご存知?でも“努力義務”だと…厚労省に聞いた
https://www.fnn.jp/posts/00439561HDK
4月から“有給休暇の義務化”をご存知? 会社がこんなことをしたら要注意!
https://www.fnn.jp/posts/00432872HDK
有給休暇100%を義務化したブライダル企業は「休めるはずがない」をどう払拭したか
https://news.yahoo.co.jp/byline/yatsuzukaeri/20190315-00118331/
「残業時間に上限」4月から始まる新たな制度の内容とは? 働く人の

628 名前:健康のプロ、産業医5人に聞きました
https://news.yahoo.co.jp/byline/mamoruichikawa/20190330-00119606/
残業・有休・フレックス 4月から変わる働き方新制度
https://headlines.yahoo.co.jp/article?a=20190329-00000006-nikkeisty-life
[]
[ここ壊れてます]



629 名前:デフォルトの名無しさん mailto:sage [2020/07/26(日) 10:48:31.22 ID:HGPhhgaZa.net]
chompとchomp!って違うメソッドなの?

630 名前:デフォルトの名無しさん mailto:sage [2020/07/26(日) 11:19:09.80 ID:7Vkc7l/lr.net]
違うメソッドです

631 名前:デフォルトの名無しさん [2020/07/26(日) 17:07:40.93 ID:rQ/Jznn00.net]
このところ、悪徳商法っぽいRuby教材屋が目立つな

632 名前:デフォルトの名無しさん [2020/07/27(月) 10:58:24.12 ID:vNtx9fDhF.net]
reverse() と reversed() って違うメソッドなの?

633 名前:デフォルトの名無しさん [2020/07/27(月) 19:41:14.37 ID:hN1elWPu0.net]
そら違うわ

634 名前:デフォルトの名無しさん (ワッチョイ 137c-a4SN) [2020/07/27(月) 22:22:40 ID:2I3xUck90.net]
頭悪くてプログラムしかできなかった大企業CEO一覧
re-file.com/18k/1677/

635 名前:デフォルトの名無しさん (ワッチョイ 8b14-nUry) mailto:sage [2020/07/27(月) 22:30:54 ID:3jtmTLJJ0.net]
>>609
本当の内容

【メキシコ】麻薬カルテル、ライバル組織の女を拘束、手足を縛り生きたまま解体 - 18禁グロ

▼カテゴリ - 18禁グロには一部、異様・奇怪・猟奇的・暴力シーン・グロテスクな表現が含まれていますので、閲覧制限をしています。

1. 18歳未満は閲覧禁止です。
2. 耐性が無い方は閲覧しないでください。
3. 閲覧は自己責任でお願い致します。

※上記、18歳以上で同意できる方は入室してください。

636 名前:デフォルトの名無しさん mailto:sage [2020/08/05(水) 18:18:51.33 ID:Tkocud9ba.net]
rails6使いづらくないです?
なによりこんなNode.jsに頼るならNode.js使えばいいじゃないです?

637 名前:デフォルトの名無しさん (テテンテンテン MM8b-lmhp) mailto:sage [2020/08/06(木) 14:59:04 ID:wG3o2yHhM.net]
>>611
Railsは開発者に一貫性の高い開発スイートとワークフローを提供するというコンセプトではあるけど、
それ以前にWeb開発のスタンダードから外れてはいけないというのが大前提だ
いくらRailsの思想に合わなかろうが、たとえばMSのClassic ASP.NETみたいな標準をガン無視した独自路線へ行くのは絶対NG
でRuby自体がもはやWebのスタンダードではなくなりつつある今、大きな歪みが生じているわけだ

638 名前:デフォルトの名無しさん mailto:sage [2020/08/07(金) 18:42:11.83 ID:ujPQ3UKLa.net]
>>612
rails5→rails6の移行も仕様変わりすぎてて難易度高いよね
こりゃ5のサポート切れのタイミングで別言語乗り換えかな



639 名前:デフォルトの名無しさん mailto:sage [2020/08/08(土) 09:55:56.13 ID:ZxDC46c+0.net]
別言語のは移行が簡単なのか

640 名前:デフォルトの名無しさん [2020/08/09(日) 19:19:40.37 ID:En2E3W9T0.net]
NokogiriのTutorialsを見てます。

html_doc = Nokogiri::HTML("<html><body><h1>Mr. Belvedere Fan Club</h1></body></html>")

このコードでHTMLモジュールのparseメソッドが呼び出せる様なのですが、なぜモジュール名の後にカッコを付ければ、parseメソッドが呼び出せるのでしょう?

HTMLメソッドが定義してあって、その中でparseメソッドが呼び出されているのでしょうか?

641 名前:デフォルトの名無しさん [2020/08/09(日) 19:26:01.08 ID:En2E3W9T0.net]
>>615
module Nokogiri
def HTML(s)
puts s
end
module_f

642 名前:unction :HTML

end

Nokogiri::HTML("module OK") # => module OK

なんと、HTMLメソッドが定義されてました。
[]
[ここ壊れてます]

643 名前:デフォルトの名無しさん [2020/08/09(日) 19:45:48.04 ID:En2E3W9T0.net]
[スクレイピングのためのNokogiri利用メモ - それはそれ、これはこれ](otn.hatenablog.jp/entry/20090509/p1)

クラス構造の理解:Nokogiri

644 名前:デフォルトの名無しさん mailto:sage [2020/08/09(日) 20:05:29.17 ID:CEZ97NChr.net]
KernelにArrayメソッドがあるのと似たようなもんだな

645 名前:デフォルトの名無しさん (ワッチョイ 594e-cUya) mailto:sage [2020/08/09(日) 22:21:32 ID:sb6ynJ/q0.net]
>>611
勘のいいガキは嫌い

646 名前:デフォルトの名無しさん [2020/08/09(日) 23:52:58.94 ID:wetuPPrU0.net]
Railsがマイクロサービスが流行って廃れたようなことを言う人もいるけどさ
サーバ側でセッション情報を保持しないのが主流になった時点でもう、重量級フレームワークは終わりだったんじゃないのかな

647 名前:デフォルトの名無しさん [2020/08/11(火) 07:39:46.13 ID:a9fFSUGp0.net]
>>615
NokogiriのRDocを見てます。
Nodeオブジェクトの
content, text, inner_text, to_str
メソッドは、みな同じって事ですかねぇ?

to_str以外、試してみたら同じ文字列が返って来ます。
to_strは後で試してみます。

648 名前:デフォルトの名無しさん [2020/08/11(火) 08:03:23.46 ID:a9fFSUGp0.net]
>>620
じゃぁ、Session情報はどこに保存?



649 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 11:44:25.69 ID:giB5l2E50.net]
>>621
aliasなのでみんな同じ
https://github.com/sparklemotion/nokogiri/blob/master/lib/nokogiri/xml/node.rb#L370

ドキュメントにはalias書いてなくて不親切だね

650 名前:デフォルトの名無しさん [2020/08/11(火) 12:51:41.54 ID:a9fFSUGp0.net]
>>623
great thx!

651 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 16:35:32.49 ID:pA06ApZK0.net]
>>611
JSの方が、ブロックが楽に書けるし、数値の0がfalseの意味を持っているので分かり易いし、複数行コメントに /*・・・*/ が使えて便利だし、
if 文の条件式を ()で囲むし、単一行コメントが // だし、Cと似ている。

652 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 16:52:37.77 ID:nNWMPbxDM.net]
if文の()?正直いらねえわ。
goみたいになくしてほしい。
if()単文;で書けて嬉しいことなんてほとんどないし。

653 名前:デフォルトの名無しさん mailto:sage [2020/08/11(火) 20:23:27.98 ID:Uga1WByLa.net]
自動的に if then else end に展開するスクリプトを書けば
問題解決じゃないの?

654 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 01:36:05.08 ID:UVmFgkue0.net]
JavaScript, PHP, Python は、各型に偽があるので、10個ぐらいあって大変。
0, 0.0, 空文字列、空配列、空辞書とか

Ruby では、nil, false だけが偽だから、変数の型を考えなくて済む。
各型が偽になる条件を考えるのは、苦痛

確か、Rails には、そういう関数があったかも知れない

655 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 02:44:28.08 ID:2N2Ra+Iw0.net]
しかし、コンピュータは、ロジック回路や電卓の時代から、0が偽で、1が真と
決められ、TTL-ICでも、NAND, NOR,AND,OR,NOTのどれもがその規則に
従っていた。
アセンブラやマシン語でもそれが踏襲され、1 and 1 = 1, 1 and 0 = 0となる。
とこが、Rubyだけは、1 and 0 = 1 というような変なことになる。
これは受け入れがたい。
こういうコンピュータの基礎を無視するようなことしてるのは困る。

656 名前:デフォルトの名無しさん (ワッチョイ 2e63-cv7i) mailto:sage [2020/08/12(水) 02:52:44 ID:02pnoruX0.net]
r

657 名前:ubyの0はメモリに何も入ってないのを表すんじゃなくてNumericクラスのインスタンス
何かのインスタンスなんだから真なのは自然
rubyの全てオブジェクトという基礎を無視するのは困る
[]
[ここ壊れてます]

658 名前:デフォルトの名無しさん (ワッチョイ 4d61-CWhB) mailto:sage [2020/08/12(水) 03:08:54 ID:2N2Ra+Iw0.net]
>>630
しかしそれ自体が、コンピュータの基礎とかけ離れた設計思想になっている。
コンピュータの世界では、非常に古くから0が偽であると定義されている。



659 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 03:12:27.26 ID:2N2Ra+Iw0.net]
数学の世界でも、真理値表では、0が偽、1が真。
andを「論理積」というのは、andを掛け算(つまり「積」)に置き換えてみると
結果が同じになり、
orを「論理和」というのも、足し算を「飽和演算」とする場合に、足し算に
置き換えられるからで、
それらは、0を偽とした場合にのみ成り立つ。
0も1も真としてしまっては、これら、論理積、論理和という言葉の定義すら
理解しにくくなってしまうだろう。

660 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 04:29:24.89 ID:RMBTHnXK0.net]
>>630
だったら、偽なのはfalseだけにしとけよと思う。
真偽値でなければならないところは真偽式しか書けないようにしとけと。

微妙にいいかげんなんだよな。

661 名前:デフォルトの名無しさん [2020/08/12(水) 05:16:20.30 ID:pHDlYbYE0.net]
いやいや、そもそも0や1が真になるのがおかしい
if 0 then 〜 はエラーにすべきだろう

662 名前:デフォルトの名無しさん [2020/08/12(水) 07:16:25.66 ID:MEC6nwIV0.net]
俺は、Rubyではnil, falseだけが偽とする。0を偽としないって設計は好きだな。

Conventionalな考え方とは異なるってのも別に良いじゃん。
そんなConventionalな、つまり従来の考え方を踏襲しない言語なんて一杯あるし。

これが気に入らんのは、Kotlinでfunで関数定義するやつ。

663 名前:デフォルトの名無しさん (ワッチョイ 454e-/dLM) mailto:sage [2020/08/12(水) 07:25:45 ID:q4xTlvo30.net]
まあ一番基本的であろうdefで作った関数(ほんとは関数じゃないというのは置いといて)が第一級市民(オブジェクトと言うと誤解を招くので)として扱われない仕様には若干古くささを感じる。
JSどころかPythonですらできるのに…
引数ゼロで呼び出しかかっちゃうんだよなぁ…
()省略文法の弊害。
今思えば必須でよかったんじゃないか?()くらい

664 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 08:00:48.62 ID:UVmFgkue0.net]
Ruby では、関数・ブロック(クロージャ)の2つのスコープがある。
2つないと、バグりやすい

関数は、クロージャと違って、スコープが厳しい。
C と同じで、外側の変数を通さないから、バグが少ない

Go も、Rubyを見習ったし、
JavaScript も、新たなスコープを作った

665 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 08:34:16.06 ID:lEc3olaBM.net]
老害の極み
1 and 0 なんてコードを書こうとするほうがどうかしてる

666 名前:デフォルトの名無しさん [2020/08/12(水) 08:38:11.02 ID:MEC6nwIV0.net]
>>638
そのとおり!

いつまでも、0が偽であるべき!
なんて考えに取り憑かれているべきでは無い。

ちなみに、俺、56歳ね!

667 名前:デフォルトの名無しさん (アメ MM55-/dLM) mailto:sage [2020/08/12(水) 08:49:24 ID:1xAI9U35M.net]
ぶっちゃけ今どきるびぃみたいな型なしクソ言語にしがみついてるやつらが老害だけどなw

668 名前:デフォルトの名無しさん (テテンテンテン MM26-ocCp) mailto:sage [2020/08/12(水) 09:10:24 ID:fvB0TNCqM.net]
>>636
オブジェクト指向原理主義的には、メソッドはオブジェクトに対してメッセージを送信した結果生じるオブジェクトの「反応」なんだよ
そこは完全にオブジェクト側に任されていて、オブジェクト自体がRubyの仮想マシン上でどう実装されてる



669 名前:ゥすらも呼び出し側が期待するべきではないの
JavaScriptだとオブジェクトが単なる連想配列であるという前提のもとでそこからメソッドを引っ張り出して呼び出すわけだけど、それはある意味オブジェクトのカプセル化を破っているというわけ
そういう思想的背景を理解すれば、Rubyのメソッドが第一級関数ではない理由は君にも納得できるんじゃないかな
まあその思想に拘ることにどれだけ実用的意義があるかは別問題で、俺もRubyが時代遅れだというのは同意するけどね
[]
[ここ壊れてます]

670 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 09:42:55.58 ID:/4eCUYwNa.net]
これ本当なのですか?

Ruby on Rails では、サーバー側がRubyで、
クライアント側が、React + Bootstrap も多いけど、

サーバー側をJavaScript(JS), Node.js にすれば、
言語が1つになるので、開発が楽になると主張する人もいるけど、

あまりに、JSは巨大だから、かえって難しくなる

だから、Rails では、Node.js, Webpack, Babel をコンパイルツールとして使っているだけ

671 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 09:55:36.17 ID:sCXl4KJWa.net]
> あまりに、JSは巨大だから、かえって難しくなる
ここが飛躍していて意味不明である
RailsはサーバーサイドだけであってもJSよりRubyで書いた方が簡単だと思っている奴が使うためのフレームワークであり、それに正しいもクソもない
そう思う奴が少なければ自然に廃れるだけだし、事実廃れている

672 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 10:22:22.84 ID:UVmFgkue0.net]
JS は最近まで、基本型であるハッシュも無かった

皆、オブジェクトをハッシュの代わりに使っていたけど、
__proto__ という属性名を使うと、バグってしまう

こういう事も知ってる香具師は、まずいない。
標準機能が少なくて、自作すると、様々な引掛けに掛かってしまう

var myObj = { };
str = 'abc';

myObj[ str ] = 1;
console.log( myObj[ str ] ); // 1

str = '__proto__';

myObj[ str ] = 2;
console.log( myObj[ str ] ); // 2 ではなく、{ }

673 名前:デフォルトの名無しさん [2020/08/12(水) 10:28:49.86 ID:0iqLL9pv0.net]
Railsは、PHP全盛期に誰が使っても大穴が開かないから人気があっただけでさ
Node.js等に優秀なフレームワークが出そろった今ではもう、使う価値はほとんどないよ・・・・

674 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 12:33:47.08 ID:RMBTHnXK0.net]
>>644
あらさがしもいいとこ。
識別子に「__」を混ぜるヤツなんかそうそういねえ。

675 名前:643 mailto:sage [2020/08/12(水) 12:51:13.63 ID:UVmFgkue0.net]
使っている単語を集めるアプリで、__proto__ が使われていたら、バグる

Haxe では、この仕様を回避するために、すべての属性名の先頭に、@ を付けていた。
@abc, @__proto__ みたいにする

でも、__proto__ も、ブラウザが慣習として使っているだけのもので、
規格で決まっているわけでもないので、変わるかも知れない

もし変わったら、突然アプリがバグってしまう

各社が、勝手に決めている部分も多いから、プログラミングしにくい。
言語の標準機能が少ないから、配列の便利な操作でも、
Lodash など外部のライブラリを使うしかない

676 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 13:21:10.21 ID:/qrw2h6bM.net]
標準なのかRailsの独自拡張なのかの区別すら困難なほどにRailsにクソミソに汚されたRubyの悪口はやめなさい
少なくともJSにおいては、標準ライブラリを汚すような行儀の悪いライブラリが広く一般的に使用されたりはしていない

677 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 13:25:19.87 ID:kGuev0jHr.net]
TSでいいじゃない 人間だもの

678 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 14:24:08.46 ID:HozojyCs0.net]
暑くなるとどのスレにも変なのが湧くね
知ってて批評する



679 名前:分にはいいけど知ったか批評しかなく中身がない []
[ここ壊れてます]

680 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 15:43:20.47 ID:8Nm8vDB1M.net]
unixの世界では0がtrue、1を含むそれ以外がfalse。

慣習よりも実益が上回るなら、慣習に従う必要なんてない。

Swift、Kotlin、Go、Rustらのメジャーな新言語で0や1をそのまま真偽値として使える言語は一つとしてないのは、JSのtruthy/falsyはバグの温床だから。

681 名前: mailto:sage [2020/08/12(水) 17:03:15.03 ID:UG+oufucH.net]
>>651
それはシェルが扱う「プログラムの」返値のときで、しかも意味は 0 が正常終了、1 が非正常終了、と、ちょっと違う

682 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 17:41:31.55 ID:RMBTHnXK0.net]
>>652
testコマンドでは、0が真、それ以外が偽。

>>651が「unixの世界」とか言ったからややこしいけど、シェルだけの話でもない。

683 名前: mailto:sage [2020/08/12(水) 17:54:35.78 ID:UG+oufucH.net]
>>653
test コマンドの実体が外部の実行ファイルなら、それは >>652 のいうところの「プログラムの返値」‥‥@
test コマンドがシェルの内部に埋め込まれている場合もある(例えば bash)‥‥A

@Aいずれの場合も「シェルの話」なのでは?

684 名前:デフォルトの名無しさん mailto:sage [2020/08/12(水) 18:29:24.32 ID:RMBTHnXK0.net]
>>654
「終了」だけの話じゃないから。

685 名前:デフォルトの名無しさん [2020/08/13(木) 10:20:15.54 ID:m1xh97jBF.net]
>>652
unix とか shell とか C の関数とか
戻り値の扱いが統一されてないのは不自然だよね

686 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 11:02:33.72 ID:HLH3bdVq0.net]
>>656
コマンドの終了コードは真偽の2値だけじゃないから。
わかりにくいといえばそうだが、しかたない。

687 名前:デフォルトの名無しさん mailto:sage [2020/08/13(木) 11:27:21.81 ID:+ydphYXd0.net]
>>651
それは真偽値じゃなく、0が成功、0以外がエラーで、番号でエラーの種類を表しているだけ。
Unixでは、誕生の時から、Cと二人三脚だったが、Cはもともと1が真、0が偽だった
わけだから、Unixも当然、1が真、0が偽。
エラー番号は、真偽値とは直接関係が無く、Unixとは関係ないMS-DOSや
PC-8801のアセンブラの世界でも、0が成功、0以外でエラーの種類を表すことが
多かった。なぜかといえば、それが効率が良かったから。
当時のCPUは非力だったので、そのように1つの整数で多くの情報を表すと、
飛躍的に体感速度が上がったからそうなっていた。

688 名前:デフォルトの名無しさん [2020/08/13(木) 19:09:06.75 ID:Tr7DEHMo0.net]
dllでchar* hoge(){

}



689 名前:デフォルトの名無しさん [2020/08/13(木) 19:11:24.89 ID:Tr7DEHMo0.net]
dllで
char* hoge(){
return msg;
}
ってやったのをrubyではどうやってうけとればいいんですか?
お願いします

690 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 05:15:39.54 ID:SCMnTycc0.net]
「ruby dll 呼び出し」で検索すれば?

ただ、Windows 用にコンパイルしても、正常に動くかな?

691 名前:デフォルトの名無しさん [2020/08/14(金) 15:59:11.59 ID:XKPWE/tlF.net]
ffi

692 名前:デフォルトの名無しさん [2020/08/14(金) 16:44:23.46 ID:MuRP3aMr0.net]
require 'fiddle/import'
module M
extend Fiddle::Importer
dlload "D:./myruby.dll"
extern "char* gethoge()"
end
ss = M.gethoge
puts ss

文字化けします

693 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 17:05:39.60 ID:B0hSR/wp0.net]
文字コードが違うんやろ。
変換すれば。

694 名前:デフォルトの名無しさん [2020/08/14(金) 17:27:30.3 ]
[ここ壊れてます]

695 名前:1 ID:MuRP3aMr0.net mailto: 変換のしかたがわからないのです []
[ここ壊れてます]

696 名前:デフォルトの名無しさん [2020/08/14(金) 17:28:37.41 ID:MuRP3aMr0.net]
dllはshiftjisです

697 名前:デフォルトの名無しさん [2020/08/14(金) 17:30:52.13 ID:MuRP3aMr0.net]
`require': cannot load such file -- ffi

698 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 17:44:20.45 ID:cCFmHkiX0.net]
>>663
ss = M.gethoge.force_encoding( Encoding::CP932 )



699 名前:デフォルトの名無しさん [2020/08/14(金) 18:18:09.19 ID:zY2s9ydfF.net]
ruby -Ks

700 名前:デフォルトの名無しさん [2020/08/14(金) 18:24:57.25 ID:MuRP3aMr0.net]
一通りやったのに問題解決しませんでした、諦めました
どうもありがとうございました

701 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 18:35:40.73 ID:5nafUaAcr.net]
dllがShift-JISでrubyがUTF-8でターミナルがWindows-32Jとかなんじゃねえの
情報を小出しにされたんじゃわかるわけない

702 名前:デフォルトの名無しさん [2020/08/14(金) 18:40:48.13 ID:MuRP3aMr0.net]
それです
ターミナルがよくわかりません

703 名前:デフォルトの名無しさん [2020/08/14(金) 18:42:22.56 ID:MuRP3aMr0.net]
ターミナルはshiftjisでした

704 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 18:58:09.61 ID:5nafUaAcr.net]
そもそも本当に文字化けなのか?
想定する文字列と
p ss
した結果は?

705 名前:デフォルトの名無しさん [2020/08/14(金) 19:03:22.47 ID:MuRP3aMr0.net]
#<Fiddle::Pointer:0x000000000313e7d0 ptr=0x00007ffea5c03038 size=0 free=0x0000000000000000>

706 名前:デフォルトの名無しさん [2020/08/14(金) 19:04:10.92 ID:MuRP3aMr0.net]
require 'fiddle/import'

module M
extend Fiddle::Importer
dlload "D:./myruby.dll"
extern "char* gethoge()"
end

p M.gethoge

system "pause"

707 名前:デフォルトの名無しさん [2020/08/14(金) 19:06:41.96 ID:MuRP3aMr0.net]
想定する文字列は「こんにちは!」です

708 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 19:07:56.76 ID:cCFmHkiX0.net]
p M.gethoge.encoding



709 名前:デフォルトの名無しさん [2020/08/14(金) 19:08:46.36 ID:MuRP3aMr0.net]
puts M.gethoge
だと
S0�0k0a0o0�

710 名前:デフォルトの名無しさん [2020/08/14(金) 19:10:43.30 ID:MuRP3aMr0.net]
>>678
undefined method `encoding' for #<Fiddle::Pointer:0x0000000002c42230> (NoMethodError)

711 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 19:16:58.97 ID:cCFmHkiX0.net]
p M.gethoge.to_s.encoding

712 名前:デフォルトの名無しさん [2020/08/14(金) 19:19:22.81 ID:MuRP3aMr0.net]
>>681
#<Encoding:ASCII-8BIT>

713 名前:デフォルトの名無しさん [2020/08/14(金) 19:21:07.40 ID:MuRP3aMr0.net]
#include <stdio.h>

char name[] = "こんにちは!";

extern "C" __declspec(dllexport) char* __stdcall gethoge() {
return name;
}

dll側です

714 名前:デフォルトの名無しさん (ワッチョイ 1e7d-yoZq) mailto:sage [2020/08/14(金) 19:28:01 ID:cCFmHkiX0.net]
puts M.gethoge.to_s.force_encoding( Encoding::CP932 )

715 名前:デフォルトの名無しさん (ワッチョイ dd5f-XQXO) [2020/08/14(金) 19:29:32 ID:MuRP3aMr0.net]
>>684
お!出ました!
ありがとうございました
助かりました

716 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 19:38:38.19 ID:5nafUaAcr.net]
hoge.dllコンパイルしてたら解決してた
良かったね

717 名前:デフォルトの名無しさん [2020/08/14(金) 19:58:30.98 ID:MuRP3aMr0.net]
>>686
ありがとうございました

718 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 22:28:15.31 ID:SCMnTycc0.net]
Windows で、Ruby を使うのは、CP932 で苦しむ。
ちょっとした処理でも、外部・CP932 → Ruby内部・UTF-8 → 外部・CP932

クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる

str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換

ary = str.each_line.map( &:strip ) # 連続する空白類を除去する

IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end



719 名前:デフォルトの名無しさん mailto:sage [2020/08/14(金) 23:58:52.64 ID:sxmwfi0L0.net]
>>688
スクリプト/内部/外部のエンコーディングをCP932にすれば
CP932 -> UTF8とUTF8 -> CP932の変換や指定は不要

720 名前:デフォルトの名無しさん [2020/08/18(火) 19:07:20.91 ID:7fbjefcm0.net]
mechanizeのform送信を使って5chに書きこむことはできますか?

textareaにvalue値を入れ、submitし、承諾しますか?の画面まで行けたのですが、そこから同じようにsubmitしてもページ遷移が起こらずそのままみたいです






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

前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