Ruby 初心者スレッド Part 58 [無断転載禁止]©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2016/03/23(水) 21:16:44.36ID:6HedlyzC質問するときは、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/
0471デフォルトの名無しさん
2016/07/03(日) 17:07:35.45ID:KkvVurgprequire_relativeとしなくちゃいけないところがrequireになってるんだろうね
0472デフォルトの名無しさん
2016/07/03(日) 17:15:42.70ID:T6bq1Tjnもう vruby なんて使うべきではないね
昔は何個かcontributeしたんだけどなー、懐かしい
0473デフォルトの名無しさん
2016/07/03(日) 17:17:00.26ID:l9Pdm4ZBありがとうございます。ネットで検索したところ、2つの方法があるらしく。以下の内容を試してみました。
1:require 'vr/vruby'のvrの前に./をつける
2:require 'vr/vruby'のrequireをrequire_relativeとする
いずれもうまくいかず、途方に暮れています。
0474デフォルトの名無しさん
2016/07/03(日) 17:19:52.23ID:KkvVurgp0475デフォルトの名無しさん
2016/07/03(日) 17:21:08.98ID:l9Pdm4ZB今、勉強している本の内容が古くて、本の内容がvrubyを使うことを前提にしているので弱っています。
本を買った時に諦めないで最後まで勉強していればなーと、いまさら言っても遅いですが。
0476デフォルトの名無しさん
2016/07/03(日) 17:25:59.34ID:T6bq1TjnRubyでGUIでしかもWindowsでってのは鬼門でしかないからね
どうしてもWindowsでGUIってことなら素直にC#使うべきだよ
0477デフォルトの名無しさん
2016/07/03(日) 17:27:02.20ID:KkvVurgp0478uy ◆e6.oHu1j.o
2016/07/03(日) 17:28:05.70ID:VJyaYSRjhttp://www.osk.3web.ne.jp/~nyasu/vruby/core.html
こっから該当ファイル探して自分でパス通せ
0479デフォルトの名無しさん
2016/07/03(日) 17:29:16.56ID:l9Pdm4ZB今、rbファイルをruby.exeと同じフォルダにぶっこんでみましたが、状況は変化しないようです。
以前、このスレでどなたかが書いていたんですが、情報が常に古くなってしまって初学者が
勉強するには難しい言語なんでしょうか…もう心が折れてきました
0480デフォルトの名無しさん
2016/07/03(日) 17:32:02.55ID:KkvVurgpLoadErrorにはなるの?
0481デフォルトの名無しさん
2016/07/03(日) 17:34:05.18ID:LjwuNqiA0482デフォルトの名無しさん
2016/07/03(日) 17:34:32.24ID:l9Pdm4ZBありがとうございます。すでにこの場所には来ていたんですが、上書きすればいいんでしょうか?
って、聞く前にとあえずやってみます
0483uy ◆e6.oHu1j.o
2016/07/03(日) 17:35:50.97ID:VJyaYSRjパス通しても動かない
swin.soが既に配布されてなくてソースコードでの配布になってるから
パス通した後さらにコンパイルしないと無理だよ
0484デフォルトの名無しさん
2016/07/03(日) 17:40:59.61ID:l9Pdm4ZBそうですね、書き換えてもLoadErrorになります。また、書き換えても書き換えなくてもエラーの内容は同じようです。
>>481
自分もなんか嫌な予感がするんですが、もしかして64じゃうまく動かないなんてことは…今まで投入した時間はなんだったんだ
0485デフォルトの名無しさん
2016/07/03(日) 17:44:06.57ID:KkvVurgpそうじゃなくて、特定の行がどちらの場合もエラーになるってこと?
0486デフォルトの名無しさん
2016/07/03(日) 17:49:45.60ID:LjwuNqiA0487デフォルトの名無しさん
2016/07/03(日) 17:52:44.03ID:l9Pdm4ZB全ての組み合わせを試しました。つまり、以下の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そっか!そういえばそうですよね、思いつかなかった。素直に古いバージョンでやれば済む話だった。本がそうなっているのだから。
とりあえず、それで行きます。ありがとうございました。
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ありがとうございます。今試してみましたが、エラーの内容が少し変わりました。
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どれが正しいんですかね、検索していろいろ出るんですが悉くエラーはいてしまって開発にうつれないっす
だれかやり方を教えていただけませんか…
0492デフォルトの名無しさん
2016/07/03(日) 20:00:46.85ID:+diucK3B本の内容をそのままそっくり
なぞることにこだわらなくていいよ
慣れるにつれて自力でできる部分は
自分で書いた方が早くなる
部分的にでも未知の情報を吸収できればよし
0493デフォルトの名無しさん
2016/07/04(月) 03:09:10.05ID:24pN0A7mそれより前のバージョンは、推奨しない。
vrubyというのも初耳
定番の本は、「たのしいRuby 第5版」2016
paiza.IO, codepad などのサイトで、ブラウザを使って、プログラミングするのが簡単。
ログインもいらない
0494uy ◆e6.oHu1j.o
2016/07/04(月) 15:13:47.56ID:RKNLnwF6RubyのGUIが今よりもさらにgmks of gmksだった頃に
頑張って何かを作ろうとして挫折した人の作ったライブラリ
0495uy ◆e6.oHu1j.o
2016/07/04(月) 15:21:46.40ID:RKNLnwF6GUIは厳しかったね
多分ハードのほうも無理
宣言・代入メインならもっとマシな言語はある
0496デフォルトの名無しさん
2016/07/04(月) 20:11:11.28ID:1TFm36GLデフォルトで、パソコンの中身が会社に送られるとか、頭おかしいんじゃないの?
アメリカは、プライバシーの問題が、狂ってるんじゃねえの、モラルがないどころの話しじゃない
0497デフォルトの名無しさん
2016/07/04(月) 20:17:48.27ID:A9h+6tfb0498デフォルトの名無しさん
2016/07/04(月) 22:05:27.13ID:3uqHV0dHありがとうございます。泣き入れていてもしょうがないので、気持ちを切り替えて「楽しいRuby」はじめました。
『今のところは』楽しいです。もうちょっとがんばってみます。以前挫折したときに比べて何かが見えてきた…気がします。
0499デフォルトの名無しさん
2016/07/04(月) 22:08:28.55ID:yHpo7u0t『たのしいRuby』からで正解
プログラムをいきなり思い通りには書けないよ
英語をいきなりペラペラしゃべれないのと同じ
慣れればスラスラ読み書きできるから
急がば回れで基礎を積み重ねることが肝要
0500デフォルトの名無しさん
2016/07/05(火) 06:38:44.92ID:j6ObOS3k読み込みをさせようとすると下記のエラーが出て困っています。
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:JLNuGFh4gem uninstall ffi
gem install ffi --platform ruby
0502デフォルトの名無しさん
2016/07/05(火) 09:02:24.93ID:j6ObOS3kコメントありがとうございます!
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:LGOaFQLhttp://github.com/ffi/ffi/issues/432
0504デフォルトの名無しさん
2016/07/05(火) 09:20:02.52ID:j6ObOS3k現在、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ありがとうございます。解決しました。
インストール手順がまずかったようです。
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現段階では普通にインストールしただけだと、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:ZQWdXgH10508デフォルトの名無しさん
2016/07/05(火) 23:25:54.80ID:94G9IfNv島根県のRuby合宿へ、行ったみたい
0509デフォルトの名無しさん
2016/07/06(水) 00:29:15.16ID:ziud5nB+男消えろ
0510uy ◆e6.oHu1j.o
2016/07/06(水) 19:01:28.90ID:4XXkMTdxselenium-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:4qgBf6xV0513デフォルトの名無しさん
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こうなりました
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:ReeCCMlZt = 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へ?? これで何か問題なの?
0517uy ◆e6.oHu1j.o
2016/07/08(金) 14:47:45.41ID:ReeCCMlZ失礼しました問題ないです
条件反射で書き込んでしまいました
ありがとうございます
0518デフォルトの名無しさん
2016/07/08(金) 15:38:17.55ID:wR56VJym0519デフォルトの名無しさん
2016/07/08(金) 16:06:49.18ID:k4oWZhGmこれでいい気がする。
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ちなみに、環境はwin7です。
0521デフォルトの名無しさん
2016/07/09(土) 09:29:37.94ID:70tfGxUKgem あるぞ?
0522デフォルトの名無しさん
2016/07/09(土) 20:12:52.56ID:pnlJS2Wt解決策をご教授願えませんか? 出力は以下の通りです
少々長いのでレス分けます
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:pnlJS2Wtchecking 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:70tfGxUKhttp://stackoverflow.com/questions/31552590/error-when-try-to-install-ruby-gtk3-gem
これじゃね?
0525デフォルトの名無しさん
2016/07/09(土) 21:41:42.30ID:pnlJS2Wtありがとうございます!
おかげさまでgtk3をインストールすることができました!
しかしgtk3を使ったテストプログラムを実行する段階で次のようなエラーが起こってしまいました
cannot load such file -- cairo.so (LoadError)
調べたのですがどうやら実際にcairo.soがないのではなく
なにか別の要因が作用してこのようなエラーを吐いているのだということは分かったのですが
具体的にどう対処すべきかということについての情報が見つからず困っています
お助けいただけると幸いです
0526デフォルトの名無しさん
2016/07/09(土) 21:45:25.80ID:LUkvWe2U0527デフォルトの名無しさん
2016/07/09(土) 21:51:34.71ID:pnlJS2Wtc: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自己解決しました
ありがとうございました
0529デフォルトの名無しさん
2016/07/10(日) 22:28:19.60ID:7ZpGAM9Oクレクレだけでなく
0530デフォルトの名無しさん
2016/07/12(火) 19:22:25.10ID:gIrYEA97あまりにもあれなので書く必要もないかと思いまして……
>>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:Eu9k9lZNseek(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:O9LM8FabRubyに限定されない一般論として:
デバイスファイル(物理ドライブ)から取得できるサイズとして、
いったいぜんたい何を期待しているの?
ディスク容量?パーティション容量?利用容量?空き容量?
デバイスファイルをシークして、いったいぜんたい何をしたいの?
UNIXファイスシステムでセクタ単位にアクセスしたいのなら、
特殊なRAW(生)デバイスをオープンするけど、それはUNIX固有の手段になる
なんだか無邪気な子供が無い物ねだりしているようにしか聞こえないね
あなたは最終的に何をしたいの?
0533デフォルトの名無しさん
2016/07/13(水) 00:06:53.28ID:iqeWAEZd昔は水着DVDとか売ってたんだなぁ
0534デフォルトの名無しさん
2016/07/13(水) 00:11:36.68ID:vjGvgzczWindowsでは使えないのでは?
そもそも、そんな特殊ファイルに、Rubyが対応しているのかな?
とにかく、seek の引数が間違っているから、正しくすれば?
>>530
>Gtk::Accelerate.parse "N"
>Gtkクラスには定数Acceleratorはありません
Accelerate, Accelerator はつづりが異なる。
そもそも、定数.parse(定数.メソッド) という表記は可能なのか?
0535531
2016/07/13(水) 21:08:36.13ID:9IGkZ4N6デバイスファイルが使えないと返されても自分はなんて答えればいいのだろう
Windowsのデバイスファイルの取り扱いについてゼロから解説しないと話がかみ合わないとかどうすればいいの
ggrksって書かなきゃダメなの?
seekの引数もリファレンスマニュアルからコピペして数字を変えただけなのにそれを間違っていると言われても
どう直せば良いんだ
0536デフォルトの名無しさん
2016/07/13(水) 21:41:01.10ID:O2/Udv7T> Windowsのデバイスファイルの取り扱いについてゼロから解説しないと話がかみ合わないとかどうすればいいの
だってWIndowsにはデバイスファイル(と一般に呼ばれるもの)はないんだもの
しょうがないじゃん
0537デフォルトの名無しさん
2016/07/13(水) 22:04:05.33ID:7QL1TPM6プラットフォームに依存せずにとか考えてる?
Windowsでは動かんし、Linuxなら別の理由でそっちも動かんぞ
0538デフォルトの名無しさん
2016/07/13(水) 22:20:27.32ID:zSyoSNoY0539デフォルトの名無しさん
2016/07/13(水) 22:49:33.67ID:zLt10+AI0540531
2016/07/14(木) 00:32:41.64ID:VP5bmt0Bttp://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:tcxRZQBLruby1.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ソースコードをコピーして実行できないから、画像を使わないで。
paiza.IO, codepad などを使えば、ログイン無しでも書き込める。
そりゃ、実行すればエラーになるけど、ひとまず書き込める
デバイスファイルって、Linuxの特殊ファイルのことかと思っていた。
物理ディスクに、直接アクセスしたいのか
Errno::EINVAL
不正な引数。関数の引数のいずれかに無効な値が指定されています。
たとえば、fseek 呼び出しでファイル ポインターを移動するとき、
指定した元の位置が、ファイルの先頭より前にある場合です。
>>541
全角の多くは、3byteだけど、バックスペースで、1byteしか戻らないのか。
普通のエディタなら、バックスペースで1byteじゃなく、全角1文字分戻る。
その端末が、日本語に対応していないのだろう
コマンドプロンプト・端末などは、大昔に外人が作ったものだから、
日本語には対応していない。
一方、エディタは対応しているものが多い
0543デフォルトの名無しさん
2016/07/14(木) 05:33:08.45ID:5Jg64+hUIO::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+hU0547デフォルトの名無しさん
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てっきり環境設定のLANGをja-JP.UTF-8にする他に、ロケール関連の設定でなんとかなるものだと思ってました
なるほど、そういう事だったのか
ありがとうございます
それと、readlineで意図的に\n等のエスケープシーケンス文字を入力すると、\\nのようにエスケープされます
入力終えた文字列をgsub使ってちまちま置換する以外に、dequoteとかunescapeとかそんな感じのいい手はありませんか?
0549デフォルトの名無しさん
2016/07/15(金) 07:48:04.68ID:0wyvmUyVLua的に使いたいけど素のままではファイルの読み書きすら出来ない
0550デフォルトの名無しさん
2016/07/17(日) 11:51:33.23ID:5n5jkqHtOSの差異をバッチファイルで吸収すれば良いからなんとかなると思う
思いつくのはこんぐらい
0551デフォルトの名無しさん
2016/07/17(日) 12:14:33.52ID:EX8s0wCAわざわざシェルを介する意味が無いだろ
それなら普通にCでAPI書けばいい
0552デフォルトの名無しさん
2016/07/17(日) 16:00:16.75ID:tztufySGmruby-ioで取り敢えずファイル操作出来るけど、
低レベルは殆ど無いな。
mrbgemを自分で作るのが基本スタンスだし
0553デフォルトの名無しさん
2016/07/17(日) 16:04:26.02ID:tztufySG色々外してあるから標準Rubyと同じ様に考えちゃ駄目
0554549
2016/07/18(月) 01:50:25.67ID:IKQ2dxNQmruby-ioを見つけて試すも大きなファイルを操作できない
Fixnumの壁が原因とわかりCコードとにらめっこすること数日
sysseekをFloatも受け付けるように改造してようやく目的を達成
Bignumが無い影響がもろに出てしまっていますな
0555デフォルトの名無しさん
2016/07/20(水) 03:31:47.01ID:GlTBqNkCRubyのソースコード読んでるんだけど、Ruby1.8までならWebにころがってる情報で構造をなんとなくレベルまで理解できる
でもRuby1.9からはさっぱり理解不能で、何処がVMの部分なのかさえ読めない
どこかにRuby1.9以降のソースを解説しているサイトない?
なければソース全部じゃなくて、おおまかに構造を解説しているサイトでも構わない
0556デフォルトの名無しさん
2016/07/20(水) 11:13:49.96ID:WyhLRx8lAppendix A. Rubyのソースコードの分類
https://github.com/ruby/ruby/blob/trunk/doc/extension.ja.rdoc#appendix-a-ruby%E3%81%AE%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E5%88%86%E9%A1%9E
0557デフォルトの名無しさん
2016/07/20(水) 18:43:26.64ID:KOGDxcQR>Ruby1.9以降は、rubyコードをJITコンパイルで変換してから実行してるんだよね?
どこのソースから、そんな嘘情報を仕入れてきたの?
1.8迄はAST(抽象構文木)を直接的に評価していたのが、
1.9以降ではVM(正確にはYARV)へコンパイルするよう改善されただけの話だよ
いわゆるJavaScriptのV8エンジンみたいな本格的なJIT(Just In Time)コンパイル技術は、
今のところRubyには導入されちゃいない
>Rubyのソースコード読んでるんだけど、Ruby1.8までならWebにころがってる情報で構造をなんとなくレベルまで理解できる
1.8までならWeb公開されてるRHGが(言語処理系に興味がある人にとっては)バイブルだったね
http://i.loveruby.net/ja/rhg/book/
1.9以降なら、以下の書籍が必読本になった(RubyのVMであるYARVの解説書でもある)
Rubyのしくみ -Ruby Under a Microscope-
https://www.amazon.co.jp/dp/4274050653/
Ruby処理系高速化の未来に関しては、"HPC(Hight Performance Computing) Ruby"が鍵になると予測する
・HPC Ruby Compiler(プレゼン)
https://www.cps-jp.org/~mosir/pub/2012/2012-03-05/03_nakamura/pub-web/HPC_Ruby_Compiler.pdf
・HPC Ruby: 静的解析に基づく Ruby の高度最適化コンパイラ
http://ci.nii.ac.jp/naid/110008583419
さらに、その基礎となる "Soft Typing"(動的型付け言語における型推論) をキーワードで調べるのがいいと思う
もし英語が読めるなら、たとえば以下の論文を:
・SOFT TYPING 1991
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.24.9333&rep=rep1&type=pdf
・A Scheme-to-Java Translator with Soft Typing 2002
www.kb.ecei.tohoku.ac.jp/~sumii/pub/scm2java.ps.gz
0558デフォルトの名無しさん
2016/07/21(木) 03:34:57.24ID:jgTQj/gW10万回以上ループすると、もう一段階、最適化する
500万回(0.5秒)以上では、CRuby(MRI)よりも速くなる
「Rubyのしくみ」2014、に書いてある。
コンパイラ・インタープリターを作るなら、読んだ方がいい
0559デフォルトの名無しさん
2016/07/21(木) 04:24:33.02ID:WJGproPCバイトコードインタプリタって書かれとる
逐次変換して処理してるわけか
1.9以降はバイトコードに変換して処理してるって聞いてたから
てっきりJIT技術使ってるんだと思ってた
さんくす
0560デフォルトの名無しさん
2016/07/21(木) 19:25:21.64ID:9nmG0K7V0561デフォルトの名無しさん
2016/07/21(木) 22:00:48.00ID:MOZT2+1Aある数値が範囲より大きいか小さいかカバーされてるかを調べるUFO演算子とか
2つのRangeオブジェクトが被ってる部分があるかどうかを判定する機能とか
あれば便利な気がするんだがなぁ
0562デフォルトの名無しさん
2016/07/22(金) 05:24:42.73ID:8LVOaO/mEnumerable#grep
じゃダメなの?
0563デフォルトの名無しさん
2016/07/22(金) 07:27:36.63ID:y4ZiHYE1範囲内最小の値よりなお小さいか
最大の値よりなお大きいかまで判定してほしい
後者については機能的にはそれでいいんだけど
Rangeのサイズが1000万までありうるので速度的に(´・ω・`)
自分で実装してみると
class Range
def <=> obj
(((min <=> obj) + (max <=> obj)) / 2.0).truncate
end
def & other
[min, other.min].max..[max,other.max].min
end
end
0564デフォルトの名無しさん
2016/07/22(金) 07:39:58.12ID:y4ZiHYE1前者はobjが<=>演算子非対応でnil返した場合を考慮してない
後者はotherがRange以外の場合を考慮してない上に範囲外の場合変なRangeを返すので気持ち悪い
0565デフォルトの名無しさん
2016/07/22(金) 07:53:03.72ID:ot11jjQxClamp(value, min, max)
最大値と最小値の間で、収めるような関数もあればいいね
10 = Clamp(20, 1, 10)
0566デフォルトの名無しさん
2016/07/22(金) 07:55:55.89ID:8LVOaO/m(min <=> obj) + (max <=> obj) >> 1
でよくね?
あと
(1..2) & (3..4) # => (3..2)
だから
(3..2).max # => nil
になって気持ち悪い
0567デフォルトの名無しさん
2016/07/22(金) 07:58:36.16ID:8LVOaO/m0568デフォルトの名無しさん
2016/07/22(金) 08:06:48.82ID:y4ZiHYE1Rubyでは負数の除算がアレなんだ
-1 >> 1 = -1
0569デフォルトの名無しさん
2016/07/22(金) 08:19:38.53ID:8LVOaO/mって普通じゃないの?
rangeのfirstもlastもIntegerならこれでいいか
class Range
def &(other)
[first, other.first].max..[exclude_end? ? last - 1 : last, other.exclude_end? ? other.last - 1: other.last].min
end
end
0570デフォルトの名無しさん
2016/07/22(金) 08:39:44.79ID:DR9XI0EI<=> はそういうものじゃない。お前さんの言うような機能はあっても良いが、それが <=> と名付けられることは未来永劫ない。
■ このスレッドは過去ログ倉庫に格納されています