トップページ⇒tech
1002コメント364KB

Ruby 初心者スレッド Part 58 [無断転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2016/03/23(水) 21:16:44.36ID:6HedlyzC
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 57
http://peace.2ch.net/test/read.cgi/tech/1426165733/

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

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

逆引きRuby
http://www.namaraii.com/rubytips/
0449デフォルトの名無しさん2016/07/02(土) 16:12:53.91ID:0c7wAYOM
以前、人工無能についてお聞きしたものです。以下のプログラムが文字化けしているので、
return "#{input}?A?A?E?E?H"
上記の部分を
return "#{input}って何?"
に書き直すとEncording::CompatibilityErrorが出てしまいます。ユーザーの入力場面でローマ字のままで
入力した場合は問題ないのですが、漢字やひらがなが入っていると、エンコードのエラーが出てしまいます。
いろいろと調べてみたのですが、うまい方法が見つからなくて困っています。どなたかご教授いただけないでしょうか?
なお、文字化けしたままの状態であれば、漢字・平仮名入力でもエラーは出ません。よろしくお願いします。
0450デフォルトの名無しさん2016/07/02(土) 16:17:12.16ID:rfELLhTB
入力とソースのエンコードは何?
0451デフォルトの名無しさん2016/07/02(土) 16:25:16.33ID:0c7wAYOM
>>450
すみません、質問の意味が理解できません。ですが、プログラムの先頭には#! ruby -Ksとあります。
0452デフォルトの名無しさん2016/07/02(土) 16:27:47.01ID:PNWyJIIt
ruby -Kuso
0453デフォルトの名無しさん2016/07/02(土) 16:38:44.44ID:+zIpsemS
>>451
inputに入る文字列とファイルのエンコードはなに?ってことだと思います
0454デフォルトの名無しさん2016/07/02(土) 16:44:01.84ID:0c7wAYOM
>>453
すみません、それもわかりません。面目ない・・・
0455デフォルトの名無しさん2016/07/02(土) 16:44:17.44ID:rfELLhTB
>>451
-KsってことはエンコーディングとしてShiftJISを指定しているわけだけど
ソースファイルはちゃんとShiftJISで保存できてる?
更にinputにShiftJIS以外の文字列が来てるんじゃない?
例えばWindowsだったらコマンドプロンプトで入力するとShiftJISじゃなくてWindows31Jだからね
0456デフォルトの名無しさん2016/07/02(土) 16:52:56.82ID:0c7wAYOM
>>455
ご指摘にあるようにShiftJIS、Windows32Jなどググってみたのですが、どれも書いてあることが理解できませんでした。
もうちょっと基本的な用語を調べなおして、改めて質問させていただきます。ありがとうございました。
0457デフォルトの名無しさん2016/07/02(土) 16:58:35.24ID:SUhI6wBF
>>456
UnicodeとかUTF8とかの単語の意味を調べてからまたおいで
0458デフォルトの名無しさん2016/07/02(土) 16:58:41.18ID:UusWQPpk
窓OSなんか、世の中から無くなったほうがいい。
Ruby の実行環境としても、窓OSは向いていない。
0459デフォルトの名無しさん2016/07/02(土) 17:01:53.20ID:rfELLhTB
>>456
input を input.encode(Encoding::Shift_JIS) に書き換えればうまくいくかも
windowsで日本語を扱うのって面倒だよね
0460デフォルトの名無しさん2016/07/02(土) 17:36:48.49ID:NHPFDAI+
OS関係なく、初心者にrubyの文字コードは難しいだろう
0461デフォルトの名無しさん2016/07/02(土) 19:59:27.04ID:26rC20dw
文字コードでつまずくと
どの言語でも初心者には難しい
Rubyはマシな方だと思う
0462uy ◆e6.oHu1j.o 2016/07/02(土) 20:11:17.24ID:m6W0ip76
HRESULT error code:0x80010108
0463uy ◆e6.oHu1j.o 2016/07/02(土) 20:14:26.31ID:m6W0ip76
>>448
ruby -v
irb -v
0464デフォルトの名無しさん2016/07/02(土) 22:24:30.36ID:0c7wAYOM
>>459
アドバイスありがとうございます。試してみましたがうまくいかないようです(なんか変なことしているかも)。

ちょっと、このエンコードという問題はだいぶ難しそうなので、とりあえずRubyの基本を先にしっかり勉強したいと思います。
もっとも直近の目標が人工無能なので、遅かれ早かれ絶対に克服しなければならない問題なのは確かですが…
いずれにせよ、理解できないからと言っていつまでも足踏みしている暇はないので先に行きます。他の皆さんもありがとうございました。
0465デフォルトの名無しさん2016/07/02(土) 22:33:37.50ID:no/g4eo0
>>449-461
paiza.IO, codepad などのサイトで、ブラウザを使って、プログラミングすれば簡単
0466デフォルトの名無しさん2016/07/02(土) 22:41:05.68ID:no/g4eo0
サクラエディタ・TeraPad などで、文字コードを見れば?

Unix系は、UTF-8。
Windowsは、shift-jis, cp932(Windows31J)
改行コードも異なる

shift-jisに、Windowsだけの環境依存文字(�@、丸で囲んだ数字など)を、加えると、cp932となる

Windowsだけの環境依存文字を使うと、shift-jisよりも、バグる確立が大きい
0467デフォルトの名無しさん2016/07/02(土) 22:50:14.62ID:0c7wAYOM
>>466
ありがとうございます。もういいや、と思って別のことやろうと思いましたが、念のためTeraPadで打ち込んでみたら右下にエンコードがでました。
「UTF-8N」とあるようです。ところで、自分はきれいで見やすいとNETで評判の?SublimeText3を使っているんですが。エディタによっても結構違うんですね。
465さんのpaiza.IOみたいなエディタがあると便利なんですが、まあないものねだりしてもしょうがない。あまり、自分の質問だけでスレッドを私物化するのも
申し訳ないので、ここらでクローズさせていただきます。重ね重ねのアドバイスありがとうございます。
0468デフォルトの名無しさん2016/07/03(日) 06:34:41.72ID:KkvVurgp
-Kって今推奨されてないんじゃないの?
-EShift_JIS:Windows_31Jとするべきでは
0469uy ◆e6.oHu1j.o 2016/07/03(日) 11:25:14.56ID:VJyaYSRj
動けば良いよ動けば
0470デフォルトの名無しさん2016/07/03(日) 17:04:45.03ID:l9Pdm4ZB
vrubyを使いたいのですが、以下のエラーが出て困っています。
G:Ruby23-x64/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in'require':cannot load such file -- vr/vruby(LoadError)
ネットでも調べてみたのですが、なかなか情報がヒットしません。よろしくお願いします。
0471デフォルトの名無しさん2016/07/03(日) 17:07:35.45ID:KkvVurgp
最後の更新がruby1.9.2よりも前みたいだから
require_relativeとしなくちゃいけないところがrequireになってるんだろうね
0472デフォルトの名無しさん2016/07/03(日) 17:15:42.70ID:T6bq1Tjn
>>470
もう vruby なんて使うべきではないね
昔は何個かcontributeしたんだけどなー、懐かしい
0473デフォルトの名無しさん2016/07/03(日) 17:17:00.26ID:l9Pdm4ZB
>>471
ありがとうございます。ネットで検索したところ、2つの方法があるらしく。以下の内容を試してみました。
1:require 'vr/vruby'のvrの前に./をつける
2:require 'vr/vruby'のrequireをrequire_relativeとする
いずれもうまくいかず、途方に暮れています。
0474デフォルトの名無しさん2016/07/03(日) 17:19:52.23ID:KkvVurgp
カレントディレクトリとrbファイルのある場所が違うんじゃないの?
0475デフォルトの名無しさん2016/07/03(日) 17:21:08.98ID:l9Pdm4ZB
>>472
今、勉強している本の内容が古くて、本の内容がvrubyを使うことを前提にしているので弱っています。
本を買った時に諦めないで最後まで勉強していればなーと、いまさら言っても遅いですが。
0476デフォルトの名無しさん2016/07/03(日) 17:25:59.34ID:T6bq1Tjn
>>475
RubyでGUIでしかもWindowsでってのは鬼門でしかないからね
どうしてもWindowsでGUIってことなら素直にC#使うべきだよ
0477デフォルトの名無しさん2016/07/03(日) 17:27:02.20ID:KkvVurgp
>>474は勘違い 無視して
0478uy ◆e6.oHu1j.o 2016/07/03(日) 17:28:05.70ID:VJyaYSRj
>>470
http://www.osk.3web.ne.jp/~nyasu/vruby/core.html
こっから該当ファイル探して自分でパス通せ
0479デフォルトの名無しさん2016/07/03(日) 17:29:16.56ID:l9Pdm4ZB
>>474
今、rbファイルをruby.exeと同じフォルダにぶっこんでみましたが、状況は変化しないようです。
以前、このスレでどなたかが書いていたんですが、情報が常に古くなってしまって初学者が
勉強するには難しい言語なんでしょうか…もう心が折れてきました
0480デフォルトの名無しさん2016/07/03(日) 17:32:02.55ID:KkvVurgp
requireを書き換えてもうまくいかないっていうのは具体的にどういうことなの?
LoadErrorにはなるの?
0481デフォルトの名無しさん2016/07/03(日) 17:34:05.18ID:LjwuNqiA
そもそも64bitに対応しているだろうか
0482デフォルトの名無しさん2016/07/03(日) 17:34:32.24ID:l9Pdm4ZB
>>478
ありがとうございます。すでにこの場所には来ていたんですが、上書きすればいいんでしょうか?
って、聞く前にとあえずやってみます
0483uy ◆e6.oHu1j.o 2016/07/03(日) 17:35:50.97ID:VJyaYSRj
ちょっと入れてみようとしたけど
パス通しても動かない

swin.soが既に配布されてなくてソースコードでの配布になってるから
パス通した後さらにコンパイルしないと無理だよ
0484デフォルトの名無しさん2016/07/03(日) 17:40:59.61ID:l9Pdm4ZB
>>480
そうですね、書き換えてもLoadErrorになります。また、書き換えても書き換えなくてもエラーの内容は同じようです。

>>481
自分もなんか嫌な予感がするんですが、もしかして64じゃうまく動かないなんてことは…今まで投入した時間はなんだったんだ
0485デフォルトの名無しさん2016/07/03(日) 17:44:06.57ID:KkvVurgp
requireのままじゃないといけないところもrequire_relativeにしてない?
そうじゃなくて、特定の行がどちらの場合もエラーになるってこと?
0486デフォルトの名無しさん2016/07/03(日) 17:49:45.60ID:LjwuNqiA
素直にruby1.8.7を入れればいいわけだけど、今更vrubyを勉強する意味はないよ
0487デフォルトの名無しさん2016/07/03(日) 17:52:44.03ID:l9Pdm4ZB
>>485
全ての組み合わせを試しました。つまり、以下の3つです。
1:require 'vr/vruby'のvrの前に./をつける
2:require 'vr/vruby'のrequireをrequire_relativeとする
3:require 'vr/vruby'のvrの前に./をつけ、なおかつrequireをrequire_relativeとする
すべてLoadErrorになっています。
0488デフォルトの名無しさん2016/07/03(日) 17:54:55.25ID:l9Pdm4ZB
>>486
そっか!そういえばそうですよね、思いつかなかった。素直に古いバージョンでやれば済む話だった。本がそうなっているのだから。
とりあえず、それで行きます。ありがとうございました。
0489デフォルトの名無しさん2016/07/03(日) 18:01:50.01ID:KkvVurgp
まあ学習目的なら古いバージョンでやるのが一番かもね
ただ誤解があったようなのでそこだけ説明させてもらう
例えば
require "mathn"
require "vr/vruby"
ってあった時にmathnとかもrequire_relativeって書いてないかってこと
もし
require "mathn"
require_relative "vr/vruby"
ってやってもLoadErrorになるならそれはファイルがないってことだからバージョン変えてもエラーになると思うけど
何行目でLoadErrorになってるのかちゃんと確認してたのかな
0490デフォルトの名無しさん2016/07/03(日) 18:43:02.70ID:l9Pdm4ZB
>>489
ありがとうございます。今試してみましたが、エラーの内容が少し変わりました。

require_relative "vr/vruby"
require 'vr/vrcontrol'

これで試したところ、
G:Ruby23-x64/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in'require':cannot load such file -- vr/vruby(LoadError)
   ↓
G:Ruby23-x64/chatbot/gui_vruby_sample.rb:1in'require_relative'':cannot load such file -- G:Ruby23-x64/chatbot/vr/vruby(LoadError)

と変化しました。どういうことだかさっぱりわかりませんが、動かないのは以前の通りです。とにかく古いバージョンで試してみます。感謝。
0491デフォルトの名無しさん2016/07/03(日) 18:51:12.47ID:2FNA+IvI
Cloud9でmysqlデータベース使うときの設定って
どれが正しいんですかね、検索していろいろ出るんですが悉くエラーはいてしまって開発にうつれないっす
だれかやり方を教えていただけませんか…
0492デフォルトの名無しさん2016/07/03(日) 20:00:46.85ID:+diucK3B
>>475
本の内容をそのままそっくり
なぞることにこだわらなくていいよ

慣れるにつれて自力でできる部分は
自分で書いた方が早くなる

部分的にでも未知の情報を吸収できればよし
0493デフォルトの名無しさん2016/07/04(月) 03:09:10.05ID:24pN0A7m
Ruby1.9から、仮想マシン(RubyVM)になったから、
それより前のバージョンは、推奨しない。
vrubyというのも初耳

定番の本は、「たのしいRuby 第5版」2016

paiza.IO, codepad などのサイトで、ブラウザを使って、プログラミングするのが簡単。
ログインもいらない
0494uy ◆e6.oHu1j.o 2016/07/04(月) 15:13:47.56ID:RKNLnwF6
>>493
RubyのGUIが今よりもさらにgmks of gmksだった頃に
頑張って何かを作ろうとして挫折した人の作ったライブラリ
0495uy ◆e6.oHu1j.o 2016/07/04(月) 15:21:46.40ID:RKNLnwF6
rubyはアルゴリズムの記述には適してるものの、宣言・代入がメインとなるソースコードでは冗長
GUIは厳しかったね
多分ハードのほうも無理
宣言・代入メインならもっとマシな言語はある
0496デフォルトの名無しさん2016/07/04(月) 20:11:11.28ID:1TFm36GL
ウインドウズ10の初期設定で、

デフォルトで、パソコンの中身が会社に送られるとか、頭おかしいんじゃないの?

アメリカは、プライバシーの問題が、狂ってるんじゃねえの、モラルがないどころの話しじゃない
0497デフォルトの名無しさん2016/07/04(月) 20:17:48.27ID:A9h+6tfb
そうだな、まずは落ち着いてスレタイ読んでから書き込もうぜ
0498デフォルトの名無しさん2016/07/04(月) 22:05:27.13ID:3uqHV0dH
>>492 >>493
ありがとうございます。泣き入れていてもしょうがないので、気持ちを切り替えて「楽しいRuby」はじめました。
『今のところは』楽しいです。もうちょっとがんばってみます。以前挫折したときに比べて何かが見えてきた…気がします。
0499デフォルトの名無しさん2016/07/04(月) 22:08:28.55ID:yHpo7u0t
>>498
『たのしいRuby』からで正解

プログラムをいきなり思い通りには書けないよ
英語をいきなりペラペラしゃべれないのと同じ

慣れればスラスラ読み書きできるから
急がば回れで基礎を積み重ねることが肝要
0500デフォルトの名無しさん2016/07/05(火) 06:38:44.92ID:j6ObOS3k
「Rubyによるクローラー開発技法」P65にあるselenium-webdriverをインストールしており、
読み込みをさせようとすると下記のエラーが出て困っています。
cannot load such file -- ffi_c (LoadError)
gem listコマンドからはffi (1.9.10 x86-mingw32)の確認が取れています。
rubyのバージョンは、 2.3.0p0 (2015-12-25 revision 53290) [i386-mingw32]です。
PCスペックは、WIN7 32bitです。
PATHの指定が間違っているのかと思い、require先にフォルダ毎移動させたりしたのですが
エラーの改善には至りませんでした。
考えられる原因は、rubyとffiの整合性が取れてないのかとも思いrubyのバージョンも
変更してみたのですが、これもエラーの改善には至りませんでした。
ググっても特にヒントになりそうなのを見つけられなかったため、
何か解決方法があれば、ご教授頂きたいと思い書き込みさせて頂きました。
何卒、よろしくお願い致しますm(_ _)m
0501デフォルトの名無しさん2016/07/05(火) 07:28:57.81ID:JLNuGFh4
>>500
gem uninstall ffi
gem install ffi --platform ruby
0502デフォルトの名無しさん2016/07/05(火) 09:02:24.93ID:j6ObOS3k
>>501
コメントありがとうございます!
ffiの再インストールまでは成功したのですが、selenium-webdriverを起動すると
再び下記エラーが出てきました。。
C:/Ruby23/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:133:in `r
equire': cannot load such file -- ffi_c (LoadError)
エラーに書いてあるkanel_require.rbを見てみると
133 return gem_original_require(path) if require_again
と記述されていました。
パスの指定がうまく行ってないんですかねぇ・・・
0503デフォルトの名無しさん2016/07/05(火) 09:18:02.59ID:LGOaFQLh
「gem ffi_c」でググったら一番上に出てくるじゃねえかよ
ttp://github.com/ffi/ffi/issues/432
0504デフォルトの名無しさん2016/07/05(火) 09:20:02.52ID:j6ObOS3k
500です。
現在、RUBYライブラリのロードパスは以下のようになっています。
irb(main):006:0* puts $LOAD_PATH
C:/Ruby23/lib/ruby/gems/2.3.0/gems/did_you_mean-1.0.0/lib
C:/Ruby23/lib/ruby/site_ruby/2.3.0
C:/Ruby23/lib/ruby/site_ruby/2.3.0/i386-msvcrt
C:/Ruby23/lib/ruby/site_ruby
C:/Ruby23/lib/ruby/vendor_ruby/2.3.0
C:/Ruby23/lib/ruby/vendor_ruby/2.3.0/i386-msvcrt
C:/Ruby23/lib/ruby/vendor_ruby
C:/Ruby23/lib/ruby/2.3.0
C:/Ruby23/lib/ruby/2.3.0/i386-mingw32
=> nil
0505デフォルトの名無しさん2016/07/05(火) 09:47:55.30ID:j6ObOS3k
>>503
ありがとうございます。解決しました。
インストール手順がまずかったようです。
gem uninstall ffi
→-x86-mingw32を選択して削除。
ruby dk.rb init
ruby dk.rb install

上記の手順でやったら無事にSeleniumWebDriverが動作しました。
ありがとうございます!
0506uy ◆e6.oHu1j.o 2016/07/05(火) 18:35:12.75ID:1uRQlpDk
ffi_cは、パスが通ってないというより、
現段階では普通にインストールしただけだと、2.3用のファイルが無かったな

>require': cannot load such file -- ffi_c (LoadError)
このLoadErrorになっていた原因はここ↓
C:\Ruby\lib\ruby\gems\2.3.0\gems\ffi-1.9.10-x86-mingw32\lib\\
0507デフォルトの名無しさん2016/07/05(火) 23:15:15.87ID:ZQWdXgH1
今日1週間のブートキャンプ3日目、いつになったらみんなが話してる内容がわかるのかなぁ、、、初心者ですが、よろしくお願いいたします。(≧∇≦)
0508デフォルトの名無しさん2016/07/05(火) 23:25:54.80ID:94G9IfNv
Rubyの女神・女優の池澤あやかは、慶応大学のプログラム研究会に入ったり、

島根県のRuby合宿へ、行ったみたい
0509デフォルトの名無しさん2016/07/06(水) 00:29:15.16ID:ziud5nB+
RWBYは百合アニメって話だろ
男消えろ
0510uy ◆e6.oHu1j.o 2016/07/06(水) 19:01:28.90ID:4XXkMTdx
質問です
selenium-webdriverでIE起動する時にvisibleオプションの設定って出来ませんか?
ライブラリのソースコードを追ってみましたが、
もしかしたらIEDriverServer.exeの中でそういうのやってる可能性もあって
rubyのソースコード上でvisibleを設定している箇所が特定できませんでした
0511uy ◆e6.oHu1j.o 2016/07/08(金) 14:18:11.61ID:ReeCCMlZ
質問です
ある日付からの残り日数を求めたく引き算をしてみましたが
t = Time.new
a = Time.local(2016, 7, 9)
b = a - t

bに返ってくる値がFloatで、これをどう整形したら良いのか分かりません
スマートに書く方法はありますか?
0512デフォルトの名無しさん2016/07/08(金) 14:21:47.06ID:4qgBf6xV
b/(60*60*24)
0513デフォルトの名無しさん2016/07/08(金) 14:31:15.37ID:4qgBf6xV
ミス
(b/(60*60*24)).ceil
0514uy ◆e6.oHu1j.o 2016/07/08(金) 14:34:46.90ID:ReeCCMlZ
>>512
こうなりました

t = Time.new
a = Time.local(2016, 7, 9)
b = a - t
p b / (60*60*24)

# => 0.3943060819212963
0515uy ◆e6.oHu1j.o 2016/07/08(金) 14:36:27.94ID:ReeCCMlZ
>>513
t = Time.new
a = Time.local(2016, 7, 9)
b = a - t
p (b/(60*60*24)).ceil

# => 1
です
0516デフォルトの名無しさん2016/07/08(金) 14:41:36.56ID:4qgBf6xV
>>515
へ?? これで何か問題なの?
0517uy ◆e6.oHu1j.o 2016/07/08(金) 14:47:45.41ID:ReeCCMlZ
>>516
失礼しました問題ないです
条件反射で書き込んでしまいました

ありがとうございます
0518デフォルトの名無しさん2016/07/08(金) 15:38:17.55ID:wR56VJym
Time#strftime 使ったほうが良くない?
0519デフォルトの名無しさん2016/07/08(金) 16:06:49.18ID:k4oWZhGm
>511
これでいい気がする。
require 'date'
t = Date.today
a = Date.new(2016, 7, 9)
p b = (a - t).to_i
0520デフォルトの名無しさん2016/07/09(土) 07:29:20.44ID:OPT8/HRF
ruby2.3ってsqlite3に対応してないんですかね
ちなみに、環境はwin7です。
0521デフォルトの名無しさん2016/07/09(土) 09:29:37.94ID:70tfGxUK
>>520
gem あるぞ?
0522デフォルトの名無しさん2016/07/09(土) 20:12:52.56ID:pnlJS2Wt
gemを使ってgtk3をインストールしようとしたのですができませんでした
解決策をご教授願えませんか? 出力は以下の通りです
少々長いのでレス分けます

C:/Ruby21-x64/bin/ruby.exe extconf.rb
checking for --enable-debug-build option... no
checking for -Wall option to compiler... yes
checking for -Waggregate-return option to compiler... yes
checking for -Wcast-align option to compiler... yes
checking for -Wextra option to compiler... yes
checking for -Wformat=2 option to compiler... yes
checking for -Winit-self option to compiler... yes
checking for -Wlarger-than-65500 option to compiler... yes
checking for -Wmissing-declarations option to compiler... yes
checking for -Wmissing-format-attribute option to compiler... yes
checking for -Wmissing-include-dirs option to compiler... yes
checking for -Wmissing-noreturn option to compiler... yes
checking for -Wmissing-prototypes option to compiler... yes
checking for -Wnested-externs option to compiler... yes
checking for -Wold-style-definition option to compiler... yes
checking for -Wpacked option to compiler... yes
checking for -Wp,-D_FORTIFY_SOURCE=2 option to compiler... yes
checking for -Wpointer-arith option to compiler... yes
checking for -Wswitch-default option to compiler... yes
checking for -Wswitch-enum option to compiler... yes
checking for -Wundef option to compiler... yes
checking for -Wout-of-line-declaration option to compiler... no
checking for -Wunsafe-loop-optimizations option to compiler... yes
checking for -Wwrite-strings option to compiler... yes
checking for rb_define_alloc_func() in ruby.h... no
checking for rb_block_proc() in ruby.h... no
checking for new allocation framework... yes
0523デフォルトの名無しさん2016/07/09(土) 20:13:15.27ID:pnlJS2Wt
checking for attribute assignment... no
checking for cairo... yes
checking for rb_cairo.h... no
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.

Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/Ruby21-x64/bin/ruby
--enable-debug-build
--disable-debug-build
--with-pkg-config
--without-pkg-config
--with-override-variables
--without-override-variables

extconf failed, exit code 1
0524デフォルトの名無しさん2016/07/09(土) 21:17:36.39ID:70tfGxUK
>>522
http://stackoverflow.com/questions/31552590/error-when-try-to-install-ruby-gtk3-gem
これじゃね?
0525デフォルトの名無しさん2016/07/09(土) 21:41:42.30ID:pnlJS2Wt
>>524
ありがとうございます!
おかげさまでgtk3をインストールすることができました!

しかしgtk3を使ったテストプログラムを実行する段階で次のようなエラーが起こってしまいました
cannot load such file -- cairo.so (LoadError)
調べたのですがどうやら実際にcairo.soがないのではなく
なにか別の要因が作用してこのようなエラーを吐いているのだということは分かったのですが
具体的にどう対処すべきかということについての情報が見つからず困っています
お助けいただけると幸いです
0526デフォルトの名無しさん2016/07/09(土) 21:45:25.80ID:LUkvWe2U
まずはcairo.soがどこにあるのか調べよう
0527デフォルトの名無しさん2016/07/09(土) 21:51:34.71ID:pnlJS2Wt
>>526
c:Ruby21-x64\lib\ruby\gems\2.1.0\gems\cario-1.15.2~~\lib内の
2.2フォルダと2.3フォルダ内にありました!
これをどうすればいいのですか?
0528デフォルトの名無しさん2016/07/10(日) 01:01:33.24ID:FaCg4BOi
>>527です
自己解決しました
ありがとうございました
0529デフォルトの名無しさん2016/07/10(日) 22:28:19.60ID:7ZpGAM9O
自己解決したときでも後進のために何をやったか書くのが礼儀だチンカス
クレクレだけでなく
0530デフォルトの名無しさん2016/07/12(火) 19:22:25.10ID:gIrYEA97
>>529
あまりにもあれなので書く必要もないかと思いまして……
>>527に書いてある通り使っていたRubyのバージョンが2.1で
gtk3の現在のバージョンが対応しているのは2.2と2.3だったのです

というところでもう一つ質問させてください
gtk3を使ってサンプルプログラムの写経をしているのですが
その中でkey, mod = Gtk::Accelerate.parse "N"という行がありました
しかし実行してみるとGtkクラスには定数Acceleratorはありませんという旨のエラーが出てしまいます
仕様が変わったのかもしれないのですが調べても出てきません
どなたかご存知の方がいたら教えていただけませんでしょうか?
0531デフォルトの名無しさん2016/07/12(火) 20:10:31.38ID:Eu9k9lZN
Ruby 2.1でデバイスファイルを開いた時にサイズなどの情報を取得することは出来ないのでしょうか?
seek(0, IO::SEEK_END)、size、statは全て通りません
>type test.rb
open("\\\\.\\PHYSICALDRIVE0", "rb"){|f|
f.seek(0, IO::SEEK_END)
p f.stat
p f.size
p f.pos
}
>ruby test.rb
test.rb:2:in `seek': Invalid argument @ rb_io_seek - \\.\PHYSICALDRIVE0 (Errno::EINVAL)
from test.rb:2:in `block in <main>'
from test.rb:1:in `open'
from test.rb:1:in `<main>'
プラットフォーム固有の手段(WindowsならWMI、PC UNIXならlsblkなど)を使えば取得できますが
出来ればそれは避けたいので・・・
0532デフォルトの名無しさん2016/07/12(火) 23:16:54.90ID:O9LM8Fab
>>531
Rubyに限定されない一般論として:

 デバイスファイル(物理ドライブ)から取得できるサイズとして、
 いったいぜんたい何を期待しているの?
 ディスク容量?パーティション容量?利用容量?空き容量?

 デバイスファイルをシークして、いったいぜんたい何をしたいの?
 UNIXファイスシステムでセクタ単位にアクセスしたいのなら、
 特殊なRAW(生)デバイスをオープンするけど、それはUNIX固有の手段になる

なんだか無邪気な子供が無い物ねだりしているようにしか聞こえないね
あなたは最終的に何をしたいの?
0533デフォルトの名無しさん2016/07/13(水) 00:06:53.28ID:iqeWAEZd
いけあやちゃんのDVD借りてきたよ
昔は水着DVDとか売ってたんだなぁ
0534デフォルトの名無しさん2016/07/13(水) 00:11:36.68ID:vjGvgzcz
そもそも、デバイスファイルって、Unix系だけだろ?
Windowsでは使えないのでは?

そもそも、そんな特殊ファイルに、Rubyが対応しているのかな?

とにかく、seek の引数が間違っているから、正しくすれば?

>>530
>Gtk::Accelerate.parse "N"
>Gtkクラスには定数Acceleratorはありません

Accelerate, Accelerator はつづりが異なる。
そもそも、定数.parse(定数.メソッド) という表記は可能なのか?
05355312016/07/13(水) 21:08:36.13ID:9IGkZ4N6
Windowsでディスクをダイレクトに開くコードを貼ったのに、調べも試しもせずに思い込みだけでWindowsでは
デバイスファイルが使えないと返されても自分はなんて答えればいいのだろう
Windowsのデバイスファイルの取り扱いについてゼロから解説しないと話がかみ合わないとかどうすればいいの
ggrksって書かなきゃダメなの?
seekの引数もリファレンスマニュアルからコピペして数字を変えただけなのにそれを間違っていると言われても
どう直せば良いんだ
0536デフォルトの名無しさん2016/07/13(水) 21:41:01.10ID:O2/Udv7T
>>535
> Windowsのデバイスファイルの取り扱いについてゼロから解説しないと話がかみ合わないとかどうすればいいの
だってWIndowsにはデバイスファイル(と一般に呼ばれるもの)はないんだもの
しょうがないじゃん
0537デフォルトの名無しさん2016/07/13(水) 22:04:05.33ID:7QL1TPM6
そのコードをどんなプラットフォームで動かそうとしてるんだ?
プラットフォームに依存せずにとか考えてる?
Windowsでは動かんし、Linuxなら別の理由でそっちも動かんぞ
0538デフォルトの名無しさん2016/07/13(水) 22:20:27.32ID:zSyoSNoY
スルーでよくね?
0539デフォルトの名無しさん2016/07/13(水) 22:49:33.67ID:zLt10+AI
いやよくない
05405312016/07/14(木) 00:32:41.64ID:VP5bmt0B
Windows上からストレージのLBA:0を読み最後の2ByteをHexで表示する例
ttp://uploader.purinka.work/src/0068.png ←MBRのシグネチャである0x55 0xAAが表示されている
少なくともread、write、seek(n, IO::SEEK_SET)は機能して開いたストレージの任意のセクタを読み書き出来た

>>537
今のところWindowsとLinuxやFreeBSDあたりで動かしたいです
Linuxだと↑の"\\\\.\\PHYSICALDRIVE0"を"/dev/sdc1"とかにしても動かないのかな?
0541デフォルトの名無しさん2016/07/14(木) 03:02:03.84ID:tcxRZQBL
なんかおかしいなと思ったら元スレの方に反映されていなかったので、もう一度書きます

ruby1.9.3p551
centos6.7(x86)
GNOME 端末 2.31.3

test.rb------------
STDOUT.sync = true
STDIN.each_line do |line|
p line
end
------------------
上のコードで、文字列入力中に全角文字入れると
バックスペースキーで文字削除したとき半角分しか削除されない
これって環境依存によっておこる問題?それとも仕様?
解決方法じゃなくてどういう仕組みで起こってるのか知りたい
0542デフォルトの名無しさん2016/07/14(木) 05:13:27.03ID:5Jg64+hU
>>540
ソースコードをコピーして実行できないから、画像を使わないで。
paiza.IO, codepad などを使えば、ログイン無しでも書き込める。
そりゃ、実行すればエラーになるけど、ひとまず書き込める

デバイスファイルって、Linuxの特殊ファイルのことかと思っていた。
物理ディスクに、直接アクセスしたいのか

Errno::EINVAL
不正な引数。関数の引数のいずれかに無効な値が指定されています。
たとえば、fseek 呼び出しでファイル ポインターを移動するとき、
指定した元の位置が、ファイルの先頭より前にある場合です。

>>541
全角の多くは、3byteだけど、バックスペースで、1byteしか戻らないのか。
普通のエディタなら、バックスペースで1byteじゃなく、全角1文字分戻る。
その端末が、日本語に対応していないのだろう

コマンドプロンプト・端末などは、大昔に外人が作ったものだから、
日本語には対応していない。
一方、エディタは対応しているものが多い
0543デフォルトの名無しさん2016/07/14(木) 05:33:08.45ID:5Jg64+hU
>>540
IO::SEEK_SET: ファイルの先頭から (デフォルト)
IO::SEEK_CUR: 現在のファイルポインタから
IO::SEEK_END: ファイルの末尾から

たぶん、SEEK_ENDがダメなんだろう
0544デフォルトの名無しさん2016/07/14(木) 05:53:08.52ID:tcxRZQBL
ターミナルの設定はこんな感じです

[centos@localhost Reudy19]$ stty -a
speed 38400 baud; rows 24; columns 80; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = M-^?; eol2 = M-^?;
swtch = M-^?; start = ^Q; stop = ^S; susp = ^Z; rprnt = ^R; werase = ^W;
lnext = ^V; flush = ^O; min = 1; time = 0;
-parenb -parodd cs8 hupcl -cstopb cread -clocal -crtscts -cdtrdsr
-ignbrk brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff
-iuclc ixany imaxbel iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt
echoctl echoke
0545デフォルトの名無しさん2016/07/14(木) 06:23:56.25ID:5Jg64+hU
端末は、単なるアプリだから、日本語に対応させるかどうかは、アプリの作者次第

日本語が使える、エディタとは違う。
英語でコマンドを書く、アプリ

作者も外人だから、日本語のことは知らない
0546デフォルトの名無しさん2016/07/14(木) 06:52:30.33ID:5Jg64+hU
文字コードを、UTF-8 に設定できないの?
0547デフォルトの名無しさん2016/07/14(木) 07:10:22.27ID:xuDKBge/
全員ハズレ
居残り学習な

>>541
普通にターミナル上で日本語入力したときにBackSpace押してもきちんと全角1文字消えるのに
STDINを直接開いたときにはBackSpaceで半角1文字しか戻らないのはなんでか
bash$ cat
にゃんこ■ ← BS1回
にゃんニ■
日本語環境ではシェル、普通はbash、が「日本語だと思われる文字があったら1文字ぶんだと思われるバイト数だけ戻る」というように特別に数えて処理してるからだ
ncursesとか介してないプレーンな環境では半角1文字戻るのが「素直な正しい」挙動
だからコマンドラインスクリプトで端末から直接日本語を入力してもらう可能性がある場合はRubyならcursesライブラリを使うと親切
これならbash上や他のターミナルアプリで日本語入力したときと同様にきちんと全角1文字ぶん消える
0548デフォルトの名無しさん2016/07/14(木) 20:43:36.00ID:tcxRZQBL
Readlineつかって入力してみた結果、backspace1回でしっかり全角文字一文字消せました
てっきり環境設定のLANGをja-JP.UTF-8にする他に、ロケール関連の設定でなんとかなるものだと思ってました
なるほど、そういう事だったのか
ありがとうございます

それと、readlineで意図的に\n等のエスケープシーケンス文字を入力すると、\\nのようにエスケープされます
入力終えた文字列をgsub使ってちまちま置換する以外に、dequoteとかunescapeとかそんな感じのいい手はありませんか?
■ このスレッドは過去ログ倉庫に格納されています