Ruby 初心者スレッド Part 60 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/04/29(土) 02:01:58.34ID:urVXnFrH
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 59
http://echo.2ch.net/test/read.cgi/tech/1475394638/

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

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

逆引きRuby
http://www.namaraii.com/rubytips/
2017/07/08(土) 13:19:15.07ID:lhqNZaXL
いつまでその話引っ張るつもりだよ
2017/07/08(土) 14:06:59.57ID:fcf9I7tU
これをRubyで解きなさい
普通のパズルではない「正規表現クロスワード」がBBCラジオに登場 - GIGAZINE
http://gigazine.net/news/20170707-regular-expression-puzzle/
2017/07/08(土) 15:45:07.53ID:FfZt44/H
>>645
まさか、Fixnum関係ではないよなあ?
ペナルティがないこともIntegerに統合した理由だろうと思ってたんだけど。
654デフォルトの名無しさん
垢版 |
2017/07/11(火) 01:41:06.03ID:MbVhLJ6O
railsスレから移動してきました。

def index
UNIXSocket.open('/tmp/myapp.sock') do |sock|
sock.write(params.to_query)
rt = sock.readline
render text: rt
end
end

みたいなことがしたいのですが、どうも
rt = sock.readline
のところで処理が止まってしまうように見えています。
renderの部分まで処理を進めるにはどのような書き方をすればよいのでしょうか。
教えて頂けますと嬉しいです。
2017/07/11(火) 02:00:52.46ID:7uNv3Rqd
sock.write(params.to_query)
rt = sock.readline

書き込んで、読み込む?
矛盾してないか?
読み書き両用なのか?

もし両用なら、相手からの返事を待っているのだろう
656デフォルトの名無しさん
垢版 |
2017/07/11(火) 02:19:22.94ID:MbVhLJ6O
レスありがとうございます。
やりたいこととしては、socket.writeでソケットにクエリを投げて
通信先で処理を行ってレスポンスが返ってくるので、
それを sock.readline で読み取るという双方向な感じのことです。

通信先のプロセスをkillするとなぜか処理が進んで、rtに正しいデータが格納され、
render まで処理が進むのですが・・アドバイスいただけると幸いです。
2017/07/11(火) 02:34:39.39ID:3Ue5zlRS
>>656
flushしてみるとか?
658デフォルトの名無しさん
垢版 |
2017/07/11(火) 02:46:23.42ID:MbVhLJ6O
レスありがとうございます。
すみません自己解決しました。

def index
s = UNIXSocket.new("/tmp/myapp.sock")
s.send(params.to_query, 20)
render text: s.recv(20)
end

こっちの方の書き方を試してみたところ、うまくいきました。(20は適当な数値)
何がどう違うのかよくわからないですが・・
2017/07/11(火) 08:15:25.04ID:qelYWZQu
>>658
656ではないけど確認。
flushはダメだった?
2017/07/11(火) 08:15:55.92ID:qelYWZQu
657の間違い
2017/07/11(火) 19:44:38.95ID:3Ue5zlRS
>>658
sendで使っている数値の20だけど、第二引数は flags になってる

mingw32(windows)だと (MSG_MAXIOVLEN | MSG_DONTROUTE)
linuxだと (MSG_PROBE | MSG_DONTROUTE)
FreeBSDだと (MSG_TRUNC | MSG_DONTROUTE)

を意味することになり、あなたの意図するところじゃないはず

recvの方は第一引数で最大20バイトの読み込みを意味するけど、
readlineは改行まで読み込むメソッドだから、振る舞い方に違いがある


一つの通信単位が任意長で、改行で終わらせたいなら
s.send(params.to_query, 20) を s.puts(params.to_query); s.flush

s.recv(20) を s.readline じゃだめかな?

もっとも params.to_query に改行が含まれているとうまく行かないけれど
662デフォルトの名無しさん
垢版 |
2017/07/12(水) 06:30:11.01ID:HQm2gXhD
バッファリングされているから、flush で出力するのか
2017/07/12(水) 10:12:13.87ID:z1EDa6/Q
>>661
そのあたりは、通信先のkillで挙動が変わらないのでは?
どうせ真のkillではないんだろうし、flushがありがちじゃない?
2017/07/13(木) 10:59:11.29ID:0lfkoIF4
エラーの時のスタックトレースがコンソールに大量のログが出るのを減らすことってできませんか?
2017/07/13(木) 11:41:39.10ID:DhWBmBwc
logger使え
2017/07/13(木) 12:17:59.84ID:FtHnJB7n
エラーなんだから仕方なかろうよ
もしプロダクションレベルであんまり内部パスとか詳らかにしたくないというのなら全体をrescueするしかないね
begin

# main_thread()

rescue RuntimeError => e
warn e.message
exit(1)
end

RuntimeErrorじゃないのだったら適当に増やしとけ
2017/07/13(木) 17:38:19.70ID:fH9gUBRZ
ruby -W0 で起動して減らなかったらどうしようもない
そういう便利オプションみたいなのはないのですわ
2017/07/14(金) 12:23:44.38ID:M2zlfEHR
○○課
○○課○○室
○○課○○係
○○課○○室○○係
○○課○○ライン

みたいな文字列を入れたときに

[○○課]
[○○課, ○○室]
[○○課, ○○係]
[○○課, ○○室, ○○係]
[○○課, ○○ライン]

みたいに分割してくれる関数を作りたいのですが上手くいきません
いい方法はないでしょうか
2017/07/14(金) 12:53:09.53ID:M2zlfEHR
>>668
とても下手くそなやり方だと思いますが一応できました

def my_split(str)
 arr = Array.new
 str_arr = Array.new
 arr.push 0
 str.each_char.with_index do |ch, i|
  arr.push i+1 if ch == "課".encode("windows-31j")
  arr.push i+1 if ch == "室".encode("windows-31j")
  arr.push i+1 if ch == "係".encode("windows-31j")
 end
 arr.each_with_index do |e, i|
  str_arr.push str.slice(arr[i-1]..(arr[i]-1)) unless i == 0
 end
 str_arr
end
2017/07/14(金) 14:04:05.91ID:Oez5CIDd
>>668
def spj(s)
reg = Regexp.new("[課室係]|ライン")
a1=s.split(reg)
a2=s.scan(reg)
return a1.zip(a2).map{|x| x.join("")}
end
2017/07/14(金) 14:48:32.40ID:JyiCltLg
>>668
"○○課○○室○○係"..scan /.*?(課|室|係|ライン)/ # => ["○○課", "○○室", "○○係"]
なお○○の部分に"課"等の文字が来てはいけない
2017/07/14(金) 15:50:02.09ID:NNElhd0j
そーか頭も含めりゃ確かにscanだけでいいのか。ボケてるな。
673668
垢版 |
2017/07/14(金) 17:28:16.98ID:+o1J8cU+
>>670>>671
ありがとうございます
すごくシンプルに書けるんですね
2017/07/14(金) 23:19:58.67ID:nq2jK5zh
>>670
おー、かっけー。

こういうのがすぐ頭に浮かぶようになりたい。
2017/07/15(土) 00:52:30.17ID:1BB6lano
scanて文字切り出しに便利だよね
2017/07/15(土) 16:03:05.98ID:5dwax4jd
おまえらどう書くかより何を作るかに集中しろや
2017/07/15(土) 16:06:46.01ID:leA2r81r
>>676
エンジニアの三大美徳のひとつ、「傲慢」を否定しちゃいけません
2017/07/15(土) 16:46:46.89ID:N0flRzpM
七大美徳も忘れるな

暴食、色欲、強欲、憤怒、怠惰、傲慢、嫉妬
2017/07/15(土) 19:43:02.39ID:37mK/jgH
>>677
あとの二つもおねがい
2017/07/15(土) 21:43:00.98ID:leA2r81r
>>679
怠惰、短気
2017/07/15(土) 23:48:56.02ID:oxvwpB//
>>676
それはこのスレで語ることではない
2017/07/15(土) 23:50:17.93ID:oxvwpB//
>>679
遅刻、有休
2017/07/16(日) 00:35:02.61ID:Ki8GsNb9
仮病で有休
2017/07/16(日) 14:47:36.60ID:m8yy8euc
俺のパソコンは納期前によく壊れる
困ったものだ
2017/07/16(日) 18:59:56.18ID:yo5XpH/o
壊れてもバックアップ環境あるから
使いにくくなって効率下がるだけで他は変わらない
2017/07/17(月) 11:01:21.40ID:cSztc20o
未だにgemって良く判らない。インタプリタなども含めて一式を配布するような場合は邪魔でしかない印象
2017/07/17(月) 11:05:59.42ID:5WhJSLEy
外部のライブラリをスッ…とインスコできるやつ、色々作ってる側からすると便利、まああんまり好きじゃないけど
688デフォルトの名無しさん
垢版 |
2017/07/17(月) 11:14:05.33ID:fxU6unKK
バージョン変わって依存関係めちゃくちゃなって
何か月とか何年かあとになって
再度同じ環境構成しようとしても
以下略
2017/07/17(月) 11:38:02.62ID:PBO0/BLN
>>686
Rubyはそんな使い方しないからね
RailsのDSLなんだから
2017/07/17(月) 11:59:55.25ID:V9kDayPy
>>686
>インタプリタなども含めて一式を配布するような場合
Rubyでそういうことをしてはいけない
スクリプト言語にとってのインタプリタバイナリはライブラリ選択前に既にインストールされているものなのだ
rubyがインストールされ(てい)ない環境でも実行して欲しいようなものをRubyで作っては「絶対に」いけない
2017/07/17(月) 13:21:14.47ID:Uy8niamL
vagrant, chef, SASS とかに、Ruby の実行環境も入れて、配布しているだろ?
2017/07/17(月) 13:41:49.80ID:CuRtYSJT
>>691
VagrantやChefはユーザーによるスクリプティングを可能にするためにRubyを入れてるんであって、
プロダクトをRubyで作っちゃったから仕方なくRubyを入れてるわけではないよ
一方SASSはRubyで作っちゃった例だけど、Rubyが嫌われてnodeへ移行した
2017/07/17(月) 14:20:06.37ID:H+ZLTTJY
> Rubyが嫌われてnodeへ移行した
nodeには移行してない
Cに移行している
2017/07/17(月) 16:57:19.47ID:shGqANuA
そんな時のためのmrubyにはならないのか
2017/07/17(月) 17:05:21.70ID:CuRtYSJT
残念ながらmrubyが獲るはずだったポジションはNodeに獲られちゃった
2017/07/17(月) 18:22:28.87ID:cSztc20o
gemを使わないで何とかしようとすると情報が一気に減るんだよな。下手するとビルド方法の資料すらなかったり

>>688
あるあるすぎる。今まさにそれで頭を抱えている。昔出来たはずのことを再現しようとしているけどどうしたものか・・・

>>689-690
exerbやocraを全否定ですか

>>694
mrubyは検討したけど使えそうなライブラリが無くてcrubyにせざるを得なかった。ライセンス不明はやめてほしい
697デフォルトの名無しさん
垢版 |
2017/07/18(火) 00:28:34.69ID:2jGZGtzj
わかってると思うけど、Rubyのネガキャンやってるのがこのスレに粘着してる
こういうのは見付け次第叩いてやらないといけない
2017/07/18(火) 00:50:06.81ID:tovqy0R7
>>691みたいにヘタに突っついて論破されるのも準アンチ行為だから注意な
2017/07/18(火) 07:19:41.41ID:soRF6X66
いまだにRuby万能説に縋りRuby万能を否定されると発狂する人が住んでるのか
それは10年も前に終わった言説だ
いつまで寝ているんだ目を覚ませ
2017/07/18(火) 12:48:36.31ID:6DbTRi2A
Ruby が最上流。
他の言語よりも、常に、2, 3年早い

Rails, vagrant, chef, SASS など

DSL では、Ruby, Groovy が優れているから、
最初にこれらの言語で作られてから、Python, JS へ移植される

Kotlin も注目されているけど、型を指定するのが面倒。
まあ、型を省略して、型推論もできるけど
2017/07/18(火) 16:13:18.86ID:bC2KM4MS
rubyが最上流?
ワロス
そんな優れてるならphpもpythonも喰ってるよ。

しかも、落ち目だし。
2017/07/18(火) 16:18:08.82ID:bC2KM4MS
しかも、型省略して型推論とか微妙な言い回ししてるあたり、分かってない臭がすごくてやばい
2017/07/18(火) 17:14:45.02ID:PS9r5OZ5
>>702
C#のvarみたいなもののことなんじゃないの?
2017/07/18(火) 18:59:56.81ID:jUpeemmL
Kotlinの型推論はただの典型的な型推論ですよ
それこそ「型指定が必要だけど型推論に任せることもできます→まあ便利」で済むレベル
わかってないのは間違いないのだろうけれど
2017/07/19(水) 22:04:21.42ID:nwQCI0l5
たとえばArrayにメソッドfuncAを追加する時は
class Array
 def funcA
  return ["AAA"]
 end
end
みたいに書けば出来ますがこれをCの拡張ライブラリにしたい場合ってどうすれば良いんでしょうか?
Cからメソッドの登録を行う場合は
void rb_define_method(VALUE klass, const char *name, VALUE(*func)(), int argc)
を使用するようですが第一引数をどのように得ればいいのか判りません
2017/07/19(水) 22:15:34.36ID:kPQDkgCo
rb_define_method(rb_cArray, "funcA", hoge_func_a, 1);

static VALUE hoge_func_a(VALUE self, VALUE arg1) { }
2017/07/19(水) 22:52:50.29ID:nwQCI0l5
え?"Array"というRubyの名前空間上の文字列?からklassを得る方法って無いの?
実際にメソッドを追加したいのは拡張ライブラリなんだけど、クラスやメソッドの登録は
関数内で行われていてklassが明示的に外部へ公開されているようには見えないのだが・・・
2017/07/20(木) 01:14:47.75ID:pXT/1iWX
>>707
組み込みクラスやモジュールに関してはグローバル変数として用意されている
ruby/ruby.hを見るべし
https://github.com/ruby/ruby/blob/trunk/include/ruby/ruby.h#L1871


ちなみにこういう事もできる

#include <ruby/intern.h>

VALUE cDigestBase = rb_path2class("Digest::Base");
2017/07/20(木) 09:35:50.76ID:s/SNqpfK
naoyaのはめ撮り動画アップされたね
2017/07/20(木) 14:22:33.47ID:+aBWrhxZ
697の見え見えの釣り針にひっかかる粘着なんておらんやろ
って思ってたけど、見事に食い付いてるな

マジスゲー
2017/07/20(木) 22:29:26.18ID:wsBNKQXr
>>708
ありがとう
弄りたいのは野良の拡張ライブラリです
rb_path2classで出来そうなのでこれを使ってみます
2017/07/22(土) 14:27:06.95ID:GRw82bJl
拡張ライブラリをコンパイルする時に任意の場所にあるヘッダファイルやライブラリファイルを
探索させるようにするにはどのようにすればいいのでしょうか
2017/07/22(土) 14:50:45.74ID:ZFWxmOeg
それRuby全く関係ない
Cのコンパイラだけの問題
714デフォルトの名無しさん
垢版 |
2017/07/22(土) 14:59:47.85ID:6KQ6+UpV
>>712
extconf.rb 内で have_header や have_library を使う
使い方は ruby に含まれる doc/extension.ja.rdoc を見よ

https://github.com/ruby/ruby/blob/trunk/doc/extension.ja.rdoc#appendix-c-extconfrb%E3%81%A7%E4%BD%BF%E3%81%88%E3%82%8B%E9%96%A2%E6%95%B0%E3%81%9F%E3%81%A1
2017/07/22(土) 15:46:06.83ID:GRw82bJl
>>713
そうですけどextconf.rbで作ったMakefileをいちいち手編集するのは正攻法ではないですよね

>>714
have_header("C:\\foo\\hoge.h")
とか
have_header("C:/foo/hoge.h")
とかやってもnoと言われてしまいます
2017/07/22(土) 15:56:18.40ID:GRw82bJl
あ、自己解決。dir_configを使えば良かったのか
dir_config("myproject")
とか書いて
ruby extconf.rb --with-myproject-include=C:\foo
とかするとそのディレクトリを探索対象に加えてくれるみたいです
2017/07/22(土) 16:07:27.55ID:LM/qA1ao
mkmf.rbでdir_config("opt")してくれてるので、--with-opt-includeならはじめから使える
2017/07/22(土) 20:13:36.13ID:6KQ6+UpV
>>715
まだ見てるかな?
すまない、find_header、find_library を伝えるべきだったな
2017/07/23(日) 03:04:04.86ID:nJm1oPvD
IDE には、ライブラリパスの参照という、ボタンがあるはず
2017/07/23(日) 08:53:05.99ID:1hI9T8Bk
ひとまず形にはなった。ALLOC_Nの開放の仕方が判らないのでALLOCA_Nにした
ALLOC〜って初期化してくれないんだな。ゴミが混じってメモリ破壊の
バグがあるのかとしばらく悩んだ。でもCはど素人だしなんかありそう

>>718
コマンドラインの方が容易に変更できるのでdir_configで行こうと思います
2017/07/23(日) 10:43:01.15ID:FBMkfY4k
>>720
ruby/ruby.hを大文字のALLOCで文字列検索してみ
RB_ZALLOCとかRB_ZALLOC_Nとかが0で初期化してくれる

あと確保したこれらはxfree(void*)で解放してね
2017/07/23(日) 21:56:04.93ID:1hI9T8Bk
>>721
ありがとう。ZALLOC_N&xfreeにしてみました
ALLOCA_Nってruby/ruby.hをみたらallocaを呼んでいるだけじゃないかw

拡張ライブラリ内部における動的なメモリの確保ってどうするのが好ましいんだろうな
スタックに積む方法はメモリのリークはないけどスタックを圧迫する(.今の環境だったら気にするほどでもない?)
allocして後にfreeする方法だと意図せず途中で抜けた時にメモリがリークする
Rubyの文字列を作ってそれを利用すると言う方法を紹介しているblogもあったけど・・・う〜む・・・
2017/07/23(日) 23:04:03.89ID:FBMkfY4k
>>722
俺も外部の人間だから本当に適切な方法なんて知らないけど……

VALUE bufvalue;
size_t bufsize = 1024;
void *ptr = RB_ALLOCV(bufvalue, bufsize);

任意の処理を行う
ここで例外が発生しても次のGCで勝手に開放される
bufvalueはrubyの世界へと出さないように気をつける

/* メモリの即時開放(freeされる) */
RB_ALLOCV_END(bufvalue);



VALUE bufstr = rb_str_buf_new(bufsize);
void *ptr = RSTRING_PTR(bufstr);

任意の処理を行う
rubyの世界に出しても問題なし
ただし出したあとで再び使う場合は必ず
rb_str_modify(bufstr); /* freezeされたらaboneするけどな */
ptr = RSTRING_PTR(bufstr);
をやり直す

/* メモリの開放(即時開放されるかは実装任せ) */
rb_str_resize(bufstr, 0);


こんな感じかな
2017/07/24(月) 00:44:09.77ID:7DZLuR6j
今気がついたのだが・・・
自作メソッドの入力値が不適切→rb_raiseを叩く→Segmentation fault
rb_raiseの引数に動的な物は含まれていないし、未解放のメモリがあるわけでもないしどうなっているんだ
例外を発生させる時の作法とかあるのだろうか

しかも2個作ったメソッドの片方だけこの現象が起きる。処理内容に問題があるわけではないけど
これを放置するのはマズイよな

>>723
ありがとう。参考になります
725デフォルトの名無しさん
垢版 |
2017/07/24(月) 05:46:45.69ID:q6ge4pC6
メモリスタック確認するのが一番じゃね?適当だけど
2017/07/24(月) 08:11:09.42ID:rFx+DNZY
なるほど・・・ってVC++環境でコアダンプってどうやって取れば良いんだろ
ググるとWindows Error Reportがトラップしている時にタスクマネージャからダンプさせる
とか出てくるけどトラップされている訳じゃないのでこの方法は使えないし・・・
それともどこかにダンプが保存されているんだろうか
2017/07/24(月) 12:01:57.41ID:YHai+DFK
プロセスにアタッチしてブレイクしたら。
2017/07/24(月) 19:26:11.30ID:R/9Imr1c
困った時のprintfデバッグ
2017/07/26(水) 14:44:00.57ID:P+h1MRRW
【Unity】ソートアルゴリズム12種を可視化してみた - Qiita
http://qiita.com/r-ngtm/items/f4fa55c77459f63a5228
2017/07/27(木) 10:11:51.47ID:FeDFxsXm
ソフトウェアデザインがインターフェースの記事を丸々パクって問題になったことがあったな
2017/07/29(土) 18:02:23.06ID:Xgmp5DuD
VisualC++でビルドすると--disable-debug-envを付けてもデバッグビルドになってしまうように見えるけど気のせいかな・・・
インストールされるサイズが--enable-debug-envと比べてちっとも変わらない
生成したMakefileにデバッグ関係のオプションを削ったCFLAGSとLDFLAGSを書き込んだらインストールサイズが大分小さくなった
732724
垢版 |
2017/07/31(月) 01:44:48.62ID:0NH1HYUL
ようやく原因がわかった
rb_scan_argsの第3引数が"22"と不適切な値にしていたことが原因だった。適切な"2"にしたら問題なくなった
複数のスレッドが動いているため?か例外を起こす場所が一定になるわけではない模様
rb_pでデバッグしていくと>>724の位置で例外が起きる(rb_raiseの第一引数がぶっ壊れていると
思われる)んだけど、デバッガで追いかけるとrb_scan_args内部で例外が起きる
2017/07/31(月) 02:05:04.23ID:9Hgupd7z
要約すると
Ruby ⇔ C と行き来するのはえらく面倒だ
ってことだな
これなら、Rubyを使うことそのものが目的じゃないのならだが
初めから Java、C#、C++ などを使ったほうが良かったってこったな
2017/07/31(月) 07:03:37.88ID:VY/jm5nF
というか今時はRPCやメッセージキューを使って完全に分離してしまえばいい
WindowsでRubyの時点でどのみち実用性のないオナニーなんだから好きにすればいいけど
735724
垢版 |
2017/07/31(月) 08:10:27.67ID:S3S/4XWd
引数を間違えると警告もなくメモリをぶっ壊す関数って絶対にこれだけじゃないよね・・・
今回の件で困ったことまとめ
・VC++のコマンドラインからビルドした物をデバッグする例が全然見つからない
 VC++のIDEで開発したプロジェクトやgcc&makeで開発した物をgdbでデバッグする例なら沢山出てくるんだけどな
・CLIアプリケーションのためかデバッガから起動させるとgem関係のファイルがないとRubyが例外を吐いて動かない
 requireの後に$<.getsを書いてコマンドプロンプトから起動。デバッガからアタッチしてブレークポイントをセット後に
 Enterを入れて実行を再開。ただし100%上手くいくわけではない模様。無限ループ?にはまる時もある
 エントリーポイントで止めて環境変数やカレントディレクトリを適切に設定した後に再開すれば動くのかな?
 やり方が判らないけど
・RubyがSegmentation faultをトラップしてしまうためにメモリダンプを取れない?
 signal.cやwin32.cでそれっぽそうなところを書き換えてみたけどトラップを止めさせることは出来なかった
 どこを弄ればいいのだろうか・・・

C/C++は不慣れなので変なことを書いていたらスマン
2017/07/31(月) 15:59:11.85ID:2wHF06gt
ファイル名以外でファイルを識別するにはどうしたらいいんだ?
ファイル名変更したとしてもファイル名変更前とファイル名変更後のファイルを同じものとしてみたい
ファイルクラスのドキュメント見てみたけとそれらしいのはなかった
2017/07/31(月) 16:30:54.00ID:PivEBbdv
何を以て同じファイルとみなすかに依る
単に内容だけ比較するなら FileUtils.#cmp を使うと良いよ

https://docs.ruby-lang.org/ja/latest/method/FileUtils/m/cmp.html
2017/07/31(月) 23:41:34.38ID:X3kyqB8s
>>736
ファイルシステム次第なんじゃないの。
Linuxならだいたいinodeでいいだろうし。
2017/08/01(火) 01:21:43.84ID:eJYTTdCf
>>737
こんな便利なメソッドがあったのか
でも変更前のファイルが残ってるやけじゃないからここでは使えないかな…

>>738
https://docs.ruby-lang.org/ja/latest/class/File=3a=3aStat.html
LINUXだからこの辺使ってinodeで判別できそう!ありがとう!
2017/08/01(火) 08:33:14.08ID:YiDwID17
>>739
そういう用途なら、ハードリンクに注意。
2017/08/01(火) 11:24:21.35ID:QsBohnup
inodeは再利用されるからいつかギョッとするときが来ると思う
https://ideone.com/zPXgqb
2017/08/01(火) 16:59:50.09ID:T1EbqLjy
いまどきのファイルシステムなら拡張属性つかえんじゃない?
索引つくれないと面倒だけど中身比較するよかまし
2017/08/01(火) 19:11:35.76ID:ggiqqoER
>>742
拡張属性をRubyから使うのは面倒じゃないか?

オレとしては、要件を考え直すことを勧めたいが。
そういうアプリを見ないのはそれだけの理由があるんだから。
2017/08/01(火) 19:40:15.57ID:PARHYe6N
まあ「inode見ればファイル名変更にも追従できる!」なんてやらなきゃいけない時点でなにかがとてつもなくおかしいわな
gitみたいなかんたんファイル変更検知機能付きアプリケーションを見てみると絶望できるかもしれないね
2017/08/02(水) 13:55:20.56ID:5on7mlkV
rubyでcoincheck apiを使ってみたいんだけど、いまドットインストールを見終わって、たのしいRubyを見終わったんだけど、opensllとかuriとかnet/httpとかの使い方はどうやったら分かるようになるのかな
2017/08/02(水) 20:17:50.89ID:Y8o6EGzu
それくらいはマニュアル見ろよ
ということでマニュアルの読み方の勉強が必要

ただ、それらのライブラリはプロトコルをちっとも隠蔽してくれてないのでOpenSSLやURIやHTTPの基礎知識は必須だぞ
普通なら使いたいapi試しながら勉強しろと言うんだが絶妙にトライアルアンドエラーのしにくい分野のapiなのが辛いな
2017/08/03(木) 19:35:54.85ID:Yq3e1WJ9
Ruby並みに生産性が高く、C並みに高速で何でも作れる言語があったら神
2017/08/03(木) 19:55:35.10ID:eWbe8h/f
KotlinあたりにRubyっぽいライブラリがあれば案外簡単に実現できそう
2017/08/03(木) 19:59:35.69ID:Yq3e1WJ9
Javaがないと動かない時点で全然C並みじゃない
2017/08/03(木) 21:17:20.06ID:Wy5AX0em
>Ruby並みに生産性が高く、C並みに高速で何でも作れる言語

じゃーC++だね
生産性はJavaやC#には負けるかもしれないが
静的型言語だから少なくともRubyより生産性あるしな
2017/08/03(木) 21:59:48.18ID:yhj86Quo
>>750
C++の生産性が高いって、マジ発言っすか?
C++である程度の規模のアプリ書いたことある?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況