Rubyについて Part47at TECH
Rubyについて Part47 - 暇つぶし2ch26:デフォルトの名無しさん
12/01/24 16:20:23.79
emacs スレで聞く内容だろ。

27:デフォルトの名無しさん
12/01/24 17:22:34.99
Emacs の ruby-mode は利用者も多いと思われる話なので、ここでも構わないけど、回答が来なくても泣かない

で、ruby-mode-set-encoding で検索するといいかもしれないのだが、お手持ちの ruby-mode.el のバージョンで動作するとは限らない
いろいろ抹殺パターンはある模様

28:デフォルトの名無しさん
12/01/24 18:17:56.97
IDEを使えばそんな問題おきないのにね!

29:デフォルトの名無しさん
12/01/24 20:14:54.79
>>27
>ruby-mode-set-encoding

これでぐぐってうまくいきました!ありがとうございます。
テキスト文章のなかにRubyのコードをかくときに、一時的にRubyモードに
したかったのですが、そうすると頭に勝手にマジックコメントがつくので
こまってたんです。助かりました。

30:デフォルトの名無しさん
12/01/26 01:09:36.33
>>5
railsがなくなったらrubyは辞めます。
本当の意味で意味ないし。

31:デフォルトの名無しさん
12/01/26 02:29:02.79
      ,―ヽ_(((((_、―
   ,/  ノ       ヽ  ~\
  /   ノ   IPA    ヽ   ~\
/   ノ           ヽ、  `ヽ
|    ノ / ̄\   / ̄~ヽ ヽ    i
|   ノ              |  ノ
\  |  <●>  <●>  (  )
 \ |      | |       i /
    |      /  ヽ       レ
   i     (●_●)      /  
    i、    ,-―-、   ・ /
    i、  <(EEEEE)> ∵/    IPA Rubyスレにようこそ
      i、  \   ./  /
       \   ーー   ,ノ       
  ,,.....イ.ヽヽ、ー-―一ノ゙-、.
  :   |  '; \_____ ノ.| ヽ i
      |  \/゙(__)\,|  i |

32:uy
12/01/27 08:47:34.65
>>30
railsのほうが意味なくね?って思う


最近思ったんだけど
スクリプト言語ってさ
今までC++やJAVAで苦労して作っていたものが
スクリプト言語ではライブラリが備わってて
楽に作れるようになるのが、素晴らしいだけで
スクリプト言語から入った奴って、何を作ったらいいかわからなくなりそうだよな
検索すれば「え?こんなものまであるの?」ってくらいにはライブラリは出てくるけど、
そのライブラリの名前を知る機会っていうのは、
他言語でプログラミングしていないとないような気がする
でもそれはどの言語からはいってきても同じなのだろうか?
でもやはりネイティブ言語で少しは苦労してきた(効率の悪いコードや再発明をしまくってきた)奴でないと、
このありがたみはわかり辛いのかもしれない

33:デフォルトの名無しさん
12/01/27 12:46:28.27
別にスクリプト言語に限らず近代的な言語はライブラリはかなり充実してると思うぞ?
Java なんか全然苦労してないと思うけど。

単純に開発者の層がわかれていくだけの話だと思うよ。
ドメイン毎に特化した業務知識が必要な部分と、それを実現するための高度な情報科学を必要とする低層の部分とで。

34:デフォルトの名無しさん
12/01/27 16:34:21.56
rubyで、ファイルの内容を$stdoutに出力する時に
$stdout.write File.open(file, 'rb') {|f| f.read }
としているのですが、ファイルの内容をそのまま出力するだけのときは、
ファイルの内容をRuby側に読み込むのはメモリの無駄だと思います。
$stdout.send_file(file)
みたいなかんじて、ファイルの内容をダイレクトに$stdoutに出力する方法はありますか。

35:デフォルトの名無しさん
12/01/27 17:12:29.14
File.open('large.txt') do |f|
f.each_char{|c| $stdout.print c}
end

原理的にはバッファしないと出力できんが、要はメモリに1文字ずつとか1行ずつとか読み込めばいいんだろ

36:デフォルトの名無しさん
12/01/27 22:16:46.39
IO.copy_stream はバッファリングを無視したら要望を満たすかな?


37:デフォルトの名無しさん
12/01/28 07:43:52.83
ソースに$stdout.send_file(file)と書きたいだけなのか、
実際に動作としてファイルの内容をダイレクトに$stdoutに出力したいのか、
どっちだろ?
前者だったらお好きにどうぞだけど、後者だったら少なくともPOSIXな環境にはそんなシステムコールは
無いような気がする

38:デフォルトの名無しさん
12/01/28 08:06:00.23
require 'hogehoge' したとして、じっさいにどのファイルが読み込まれたのかを調べる方法はありますか。
which 'hogehoge' #=> /usr/local/lib/ruby/1.8/lib/hogehoge.rb
みたいなの。

39:デフォルトの名無しさん
12/01/28 08:31:26.29
>>37
だから思考に至る経緯も書いてあんだろ

>>38
なかったはず

40:デフォルトの名無しさん
12/01/28 09:32:22.15
1.9から$LOADED_FEATURESの中身が絶対パスになってるけど、
配列だからrequire時の引数との関係は完全には分からないな。
(拡張子まで明示してrequireされたかどうか、とか)


41:デフォルトの名無しさん
12/01/28 10:05:02.75
>>36
おーそんなのがあるんですね。ありがとうございます。
でも1.8では使えないみたい、ショボーンです。

>>37
>少なくともPOSIXな環境にはそんなシステムコールは
>無いような気がする

POSIXにはなくてもLinuxとFreeBSDにはありますよー
URLリンク(linuxjm.sourceforge.jp)
URLリンク(www.unix.com)

IO.copy_streamは内部でsendfile(2)を呼び出してくれてるのだろうか。そうだとうれしいなあ。

42:デフォルトの名無しさん
12/01/28 10:23:49.94
IO.copy_streamの実体rb_io_s_copy_stream関数から
copy_stream_body
nogvl_copy_stream_func
以下、USE_SENDFILEが定義されているとき
nogvl_copy_stream_sendfile
simple_sendfile
sendfile
という呼び出しの流れ。

USE_SENDFILEは、linuxでは定義されてるけど、BSD系は
/* This runs on FreeBSD8.1 r30210, but sendfiles blocks its execution
* without cpuset -l 0.
*/
というコメントがあって#ifdef outされてる。

以上 io.c より。


43:デフォルトの名無しさん
12/01/28 11:53:24.32
まあ環境依存だし
システムに特化したもので最適化したいならRubyなんて使わずにCで書いたほうがいいよ


44:デフォルトの名無しさん
12/01/28 12:00:13.57
うむ、たとえ1バイトでもバッファリングしたら死んじゃうという人はぜひCで

45:デフォルトの名無しさん
12/01/28 13:04:56.45
顔を紅潮させながら崇史はそう叫んだ

46:デフォルトの名無しさん
12/01/29 03:40:10.97
>>42
何を言わんとしているのか分かりにくいけど、
・IO.copy_streamは、Linuxではsendfile()を呼び出している
・残念ながらBSDではなんかの事情によりsendfile()は使われてない
ということ?
もっと分かりやすい説明して。



最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch