トップページtech
1001コメント295KB

Rubyについて Part 42

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2011/01/15(土) 17:55:52
オブジェクト指向スクリプト言語Rubyについて扱うスレッドです。
仲良く使ってね。

Ruby Home Page
http://www.ruby-lang.org/ja/

= 前スレ
【RoR】Rubyについて Part 41【CPAN vs RubyGems】
http://hibari.2ch.net/test/read.cgi/tech/1281473294/

過去スレ・関連スレは >>2-
0175デフォルトの名無しさん2011/02/22(火) 11:35:50.37
既得権益を守ることに必死な老人に見えてくるのはなぜだろう
0176デフォルトの名無しさん2011/02/22(火) 12:25:10.89
>>175
それは君が既得権益という言葉を使っているからだ
積み重ねに対する《報酬》がないのなら、誰が未来への投資などするか
0177デフォルトの名無しさん2011/02/22(火) 13:07:25.69
>>176
じゃ言い換えるよ。
「俺の報酬を小学生や主婦に獲られてしまう」
0178デフォルトの名無しさん2011/02/22(火) 13:17:04.84
つまんないことしか書けない人はN速あたりで愚痴ってきてくれ
0179デフォルトの名無しさん2011/02/22(火) 14:50:59.48
Python 3.2 リリースキタ━━━━━━(゚∀゚)━━━━━━!!
http://slashdot.jp/developers/article.pl?sid=11/02/21/221210
0180デフォルトの名無しさん2011/02/22(火) 15:06:40.04
rubyistのvim設定ってどんな感じ?
0181デフォルトの名無しさん2011/02/22(火) 15:19:08.98
se nu ai sw=4 ts=4
0182デフォルトの名無しさん2011/02/22(火) 15:27:51.76
これより異端審問を開始します
0183デフォルトの名無しさん2011/02/23(水) 02:00:10.63
Cで書かれた拡張ライブラリが有って、1回呼び出すだけなら正常なんだけど、
同一プロセス内で2回呼び出すとコア吐いて落ちてしまう。

そこで、次のような操作はできないかな? やり方有ったら教えて。

require "buggy_lib"
BuggyLib::do() # 1回目

# ここで、どうにかしてライブラリを完全にアンロードする処理

require "buggy_lib"
BuggyLib::do() # 2回目
0184デフォルトの名無しさん2011/02/23(水) 07:22:50.37
むしろ2回起動できるほうがすごくね
拡張ライブラリだと何度でも読むの?
0185デフォルトの名無しさん2011/02/23(水) 08:44:24.12
処理部分だけ別プロセスにくくり出して
処理の度にプロセス作成/プロセス間通信した方が楽かもね
アンロードしても構わないってことは初期化処理とかでのオーバーヘッドは許容できるんでしょ?
0186デフォルトの名無しさん2011/02/23(水) 08:58:28.86
拡張ライブラリのロード時にやってる操作。
(buggy_lib_Init() の中身)に多分非可逆なものがありそう。

>>185 が言ってるように別プロセスに切り出すのが無難だね。
0187デフォルトの名無しさん2011/02/23(水) 09:30:22.57
おれは実は全く関係ないところが原因とみた
0188デフォルトの名無しさん2011/02/23(水) 11:00:57.53
>>187
だからと言って俺が原因なわけではないっ!
0189デフォルトの名無しさん2011/02/23(水) 11:57:05.43
blank?って便利だけど、これrailsの拡張なのか
ruby公式でも取り入れたりしないのかな
0190デフォルトの名無しさん2011/02/23(水) 12:21:15.38
これより異端審問を開始します
0191デフォルトの名無しさん2011/02/23(水) 12:26:14.34
>>189
漏れはすんごい気持ち悪い挙動だと思うぬ。
松モティーヌさんはどう思ってるかは知らないけど。
blank?は飽くまでGETやPOSTのパラメータの扱い方として良くある処理をひとまとめにしただけというか…
nilかemptyなのか判別できないと困るんですよ。普通は、ね。
0192デフォルトの名無しさん2011/02/23(水) 12:30:41.73
言語のコアに入れるべき物かと言われると微妙な感がある
0193デフォルトの名無しさん2011/02/23(水) 12:39:02.80
HTTPに関するデータはStringを継承したHTTPStringで返る、みたいな設計だったらよかったのに
変に汎用オブジェクトで返るから困る
0194デフォルトの名無しさん2011/02/23(水) 12:45:05.04
nil? or empty? みたいなコードを頻繁に書く必要のある人にとっては超便利だと思うけど、
そういうコードが必要な状況ってもうRailsなどのウェブアプリ以外にはないのでは?
などと思ってしまう。
でもまあblank?が入ったからと入ってnil?やempty?が無くなるわけではないので
入れること自体には反対しないけど、なんでもかんでもblank?で済ませる人も増えそうね。
0195デフォルトの名無しさん2011/02/23(水) 12:48:10.06
Net::HTTPの時点で全部nilで返せばよかったんだよ
0196デフォルトの名無しさん2011/02/23(水) 12:55:26.41
>>185 のノリで拡張ライブラリを外部プロセスに切り出してやれば
Ruby本体のジャイアントロックをなくせるんじゃないか、と
考えつつもそこまでRubyでの性能に困ったことがないゆえにやる気がしない件。

誰か暇潰しにでも手を付けないかのう
0197デフォルトの名無しさん2011/02/23(水) 13:06:40.42
>>193
今から差し替えを考えてもいいんじゃね?w
Stringに依存したコードってそんなにないんじゃないかなあ
ただ大クラス主義とは背反するけど……
0198デフォルトの名無しさん2011/02/23(水) 14:47:48.30
>186
うん、今は別プロセスにしてsystem()でごまかしてる。
取り敢えず、アドバイスに従って、buggy_lib_Init()にあたる部分を見てみるよ。
0199デフォルトの名無しさん2011/02/23(水) 17:51:00.23
2回呼び出すとコア吐くようなライブラリが、安全にアンロードできるとは思えない・・・
0200デフォルトの名無しさん2011/02/23(水) 22:34:42.97
>>191
>blank?は飽くまでGETやPOSTのパラメータの扱い方として良くある処理をひとまとめにしただけというか…

んなわけない。おまえRails使ってないだろ。

>nilかemptyなのか判別できないと困るんですよ。普通は、ね。

別に.blank?を導入したからといって、empty?をなくすわけでもないし、別に困らんだろ。

0201デフォルトの名無しさん2011/02/24(木) 06:13:54.38
              \   ∩─ー、
                \/ ● 、_ `ヽ
                / \( ●  ● |つ
                |   X_入__ノ   ミ 俺は釣られないクマ ・・・
                 、 (_/   ノ
                 \___ノ゙
                 / 丶' ⌒ヽ:::
                / ヽ    / /:::
               / /へ ヘ/ /:::
               / \ ヾミ  /|:::
              (__/| \___ノ/:::
0202デフォルトの名無しさん2011/02/24(木) 21:56:14.77
NaClってあるからなんだなんだと思ったらNative Clientの略かョ!
0203デフォルトの名無しさん2011/02/25(金) 09:37:34.77
作戦NaCl
0204デフォルトの名無しさん2011/02/25(金) 10:55:58.23
優秀なオマイらにお尋ねしたい。

文字列からn文字数づつ区切って配列にしたいとき、
どういうふうにする? メソッドを準備するならどういう名前にする?

俺の考えた糞案↓(とりあえず2個区切りでほしかったのでここではこうなってる)

def pairs(s)
a = []
i = 0
while i < s.size
a << s[i, 2]
i += 2
end
a
end
0205デフォルトの名無しさん2011/02/25(金) 11:26:06.19
>>204
"0123456789".scan(/../)
# => ["01", "23", "45", "67", "89"]
名前は思いつかないが、上記くらいならメソッドにしなくてもよいくらい短いよね。
0206デフォルトの名無しさん2011/02/25(金) 11:33:54.53
なんかスマートじゃないな..

self.scan(/(#{"." * n})/)
0207デフォルトの名無しさん2011/02/25(金) 11:42:41.00
nkogiri (えぬこぎり) というのはどうだろう
0208デフォルトの名無しさん2011/02/25(金) 12:01:39.76
>>205
2個ずつで、余りは要らないかな?
"123456789".scan(/.{1,2}/n)
02092052011/02/25(金) 12:19:02.12
scanかあああ!! そういうメソッドあったと思って、
splitどうのこうの、Regexpのほうからどうのこうの。
見当違いのとこ調べてた。俺の調べが甘かったです。

       ∧_∧
      ( ´Д` ) みんな
      /´   `ヽ
       m、__X__,m


       /´⌒⌒ヽ
     l⌒    ⌒l
     m(    )m どうもありがとう
       V ̄V
02102042011/02/25(金) 12:20:00.46

       /´⌒⌒ヽ
     l⌒    ⌒l
     m(    )m …>>204でしたスマソ。
       V ̄V
0211デフォルトの名無しさん2011/02/25(金) 13:10:46.52
>>164
Dir.entries('.', {:encoding=>'UTF-8') とかどう?
陽に指定しないと filesystem エンコーディングに変換されるみたい。
0212デフォルトの名無しさん2011/02/25(金) 17:36:26.60
1.9だとsplitできなくもない

n = 2; str = "0123456789a"
p str.split(/(?<=\G.{#{n}})/)

他には
p str.chars.each_slice(n).map(&:join)
p 0.step(str.size-1,n).map{|i| str[i,n]}

でも、やっぱりscanだね
p str.scan(/.{1,#{n}}/)
0213デフォルトの名無しさん2011/02/25(金) 17:45:38.77
というか//の中でも#{}が使えることに驚いたw
これを知っていればいろんな場面でもっとスッと書けただろうに…。
0214デフォルトの名無しさん2011/02/25(金) 18:47:16.26
>>213
リファレンスマニュアルの「正規表現リテラル」の初っ端の例にもあるくらいだし、
このくらいで驚いてちゃいかん。
0215デフォルトの名無しさん2011/02/25(金) 18:55:30.61
>>211
マーベラス
0216デフォルトの名無しさん2011/02/25(金) 19:01:06.02
>>211
すげえ、るりまにも載ってないのによく見つけてくるなぁ
0217デフォルトの名無しさん2011/02/25(金) 19:49:29.42
Windowsのコマンドプロンプトでdirコマンド叩くと
unicodeファイル名も表示できるのはどういう仕組みなん?
02181532011/02/26(土) 00:44:41.87
>>211
many thanks!

しかし、深刻なのは、ローカルライブラリやモジュール、 (例:,Find.find)内で
これらの関数が呼ばれていたりと、多岐に渡ってしまっている事。

他にも、Dir.make() / FileUtil.mkdir() など、類似問題を抱える関数群がちらほらあって、
常に意識しながらプログラムするのでは、とてもなく生産性が落ちてしまうので
今は、自分用に、ラッパークラスを作って、凌いでいる。

けど、この部分は本来、OSの実装側で統一されるか、暗黙的に処理されるべき部分だと思う。


02191532011/02/26(土) 00:45:52.56
訂正。 Dir.mkdir() / FileUtil.mkdir()



0220デフォルトの名無しさん2011/02/26(土) 08:40:02.11
> OSの実装側で統一される
OS側では統一してるだろ
0221デフォルトの名無しさん2011/02/26(土) 19:54:57.54
RubyInstallerって、1.9.2をインストールしても
1.9.1ってフォルダが出来るんだが、これ中身はちゃんと
1.9.2なんだよね?
0222デフォルトの名無しさん2011/02/26(土) 19:58:24.67
ruby -v してみると良いじゃないかな
0223デフォルトの名無しさん2011/02/26(土) 20:03:32.68
>>222
うん、ちゃんと1.9.2なんだけど、なんか不安で聞いてみた
どこか一部だけ1.9.1だったり変なことになってないかなと思って
0224デフォルトの名無しさん2011/02/26(土) 20:22:20.01
http://www.ruby-lang.org/ja/news/2010/08/18/ruby-1-9-2-is-released/#label-6
0225デフォルトの名無しさん2011/02/27(日) 00:15:40.09
>>221
1.9にすりゃいいだろwww
アホなのか?
0226デフォルトの名無しさん2011/02/27(日) 00:18:13.50
何を言ってるのか分からない
0227デフォルトの名無しさん2011/02/27(日) 00:22:26.64
馬鹿には無理
0228デフォルトの名無しさん2011/02/27(日) 00:29:37.69
rubyって一つのプログラムだよ?
Ruby1.9.1と1.9.2って別のプログラムだから
自分で起動するとか何かしないと勝手に立ち上がることはないんだよ?
0229デフォルトの名無しさん2011/02/27(日) 00:44:06.75
>>224
何でバージョン上げたのwww
0230デフォルトの名無しさん2011/02/27(日) 00:49:56.11
>>225以降は何の話をしているんだ
0231デフォルトの名無しさん2011/02/27(日) 01:00:54.54
>>230

問いの意味も答えの意味も分かっていないと思われる。
0232デフォルトの名無しさん2011/02/27(日) 01:22:02.26
おれもおかしいと思ったが、
連続誤爆ということにして自分を納得させた
0233デフォルトの名無しさん2011/02/27(日) 01:38:12.12
とりあえず>>225がこのスレで一番馬鹿だってことだけは理解できた
0234デフォルトの名無しさん2011/02/27(日) 02:03:56.86
>>225 えっ
>>228 えっ
>>229 えっ
0235デフォルトの名無しさん2011/02/27(日) 02:05:36.23
しぇにぃおいすー
毎週コンスタントに報告書1つはきついお・・・
俺が設計してない業務をいきなりまとめろとか言われても、その・・・困る・・・。
0236デフォルトの名無しさん2011/02/27(日) 02:07:51.06
あ、ごめん誤爆
0237デフォルトの名無しさん2011/02/27(日) 15:23:43.22
>>211
すばらしい。
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-list/44892
調べてみたらここの中でさりげなく使われてますね。

>>218
類似メソッド毎に戻り値がバラバラなので困りますね。
利用者側としては統一なり暗黙的に処理してくれると楽ではあるけど、
いろんな環境があるから難しそう。
Windows限定ならなんとかなるのかな。

当方、Cygwinで使ってますが何が正しい動作なのかもうよく分からない。
0238デフォルトの名無しさん2011/02/27(日) 16:08:53.12
windows が utf8 ならいろいろと楽なのになあ
0239デフォルトの名無しさん2011/02/27(日) 16:11:26.56
この際、Windows から離れてみるというのも良いかもよ
0240デフォルトの名無しさん2011/02/27(日) 16:24:33.14
>>238
chcp 65001
0241デフォルトの名無しさん2011/02/27(日) 16:27:14.26
>>240
それは時々出て来るけど
ろくな結果を生まない
0242デフォルトの名無しさん2011/02/27(日) 16:30:17.70
>>240は実際には使ってないんだと思う
0243デフォルトの名無しさん2011/02/27(日) 16:44:49.40
Windowsも、Visual Studioは既にUTF-8に移行済だね。
0244デフォルトの名無しさん2011/02/27(日) 16:46:54.86
不思議な BOM 付き UTF-8 なんだっけ?
0245デフォルトの名無しさん2011/02/27(日) 17:12:56.28
誰か ruby で cmd の wrapper 書いてよ
cp932 でコマンド入力されたら utf-8 で渡して実行
utf-8 で出力されたら cp932 に変換して表示
0246デフォルトの名無しさん2011/02/27(日) 17:19:21.07
この際、Windows から離れてみるというのも良いかもよ
0247デフォルトの名無しさん2011/02/27(日) 18:17:21.74
$stdout.set_encoding(Encoding.default_external, Encoding::UTF_8);
$stderr.set_encoding(Encoding.default_external, Encoding::UTF_8);
$stdin .set_encoding(Encoding.default_external, Encoding::UTF_8);
ARGV.map!{|s| s.encode(Encoding::UTF_8)}

起動時にこんくらいやっとけば大体それっぽい挙動にならない?
Dirとかは知らんけど
0248デフォルトの名無しさん2011/02/27(日) 18:24:45.95
って現在のファイルのencodingが__ENCODING__で取れるんだw
じゃあ
$stdout.set_encoding(Encoding.default_external, __ENCODING__);
とかやった方がいいのかな?
0249デフォルトの名無しさん2011/02/27(日) 19:55:01.99
甘いな
0250デフォルトの名無しさん2011/02/27(日) 21:59:48.41
cmdまわりは鬼門なんだよな。
コンソール出力のあたりで妙な変換がかかってるから
出力をutf8と仮定して再変換してもどうにもならないという。

結局cmd相当の何か再実装するしかなかったような。
0251デフォルトの名無しさん2011/02/27(日) 22:17:25.23
cmdは出力パイプがcmd側の起動オプションで一意に決まっている。
UTF8だと、/U が必要だったかな。

rubyだとCOMSPECで ENV["COMSPEC"]="%systemroot%\\system32\\cmd.exe /U"
とかで適用されるかも?(未確認)
0252デフォルトの名無しさん2011/02/27(日) 23:15:49.01
ようわからんけどJrubyとかIronRubyでも駄目なん?
0253デフォルトの名無しさん2011/02/28(月) 03:02:26.28
windows用にユニコードで出力するやつって、ずっと入れられないまま放置されてるね
0254デフォルトの名無しさん2011/02/28(月) 08:41:22.45
昔からRubyはWindowsに対して冷たいからな
0255デフォルトの名無しさん2011/03/01(火) 12:20:09.38
  ∩___∩ 未だ連絡ゼロクマー
  | ノ  ___ヽ
  /。・゚・(____ `・゜゚・。 いつでも連絡するクマー
  |    u( _●_)ヽ 〉
 彡、   |∪|   /  誰か助けるクマー
. /    ヽノ . /´
         .____
        / ヽ、  _ノ\
      / (○)iji(○)\    正義がキチガイ呼ばわりされたんだぞ。
     /    (__人__)   \
     |       |::::::|     |  義憤に駆られることはないのかお?
     \       l;;;;;;l    /l!| !
     /     `ー'    \ |i  Rubyistとして後ろめたさはないのかお!
   /          ヽ !l ヽi
   (   丶- 、       しE |そ  一生後悔することになるお!
    `ー、_ノ       煤@l、E ノ <
               レY^V^ヽl  そこのあなた!勇気を出すんだお。
       ____
     /      \  助けて欲しいんだお・・・
   /  _ノ  ヽ、_  \ 同じ釜の飯を食ったんだお・・・
  / o゚((●)) ((●))゚o \  いつも一人で居残り残業してたんだお・・・
  |     (__人__)    | あまりの悲しさに、むせび泣いたこともあったお
  \     ` ⌒´     / そんなやる夫を見捨てるのかお?

       ____ このままだったら一生恨むお
     /      \ たとえ誰がなんと言おうと、強烈な違和感なんだお
   /  _ノ  ヽ、_  \ 直観がモノ言ってんだお
  /  o゚⌒   ⌒゚o  \  えっぇっえ〜ん。え〜ん。
  |     (__人__)    |  えっぇっえっぇっ。うっぅっぅうー。。。
  \     ` ⌒´     / うええ〜ん。。。えぐっぇぐっうっうっううぅー。。。
0256デフォルトの名無しさん2011/03/01(火) 18:52:25.75
yuguiさんはGoogleに行ったか。
0257デフォルトの名無しさん2011/03/01(火) 19:20:06.67
コアメンバーが私事で疎遠になる可能性は常に検討しないといかんぬ
0258デフォルトの名無しさん2011/03/01(火) 19:31:11.25
むしろRuby開発者として
招かれた面もあるんでない?
0259デフォルトの名無しさん2011/03/01(火) 19:53:15.53
…そもそもあの人なに屋さんだっけ
なんかお好み焼きやさんとか開いてそうなイメージなんだけど
0260デフォルトの名無しさん2011/03/01(火) 20:02:55.74
コンピュータ関係ない職業に就きながらプログラミング言語のコア開発やってますという人いないの
0261デフォルトの名無しさん2011/03/01(火) 20:17:50.75
ダイクストラは生涯コンピュータを所有しなかったけど、ちょっと方向性が違うなあ
0262デフォルトの名無しさん2011/03/01(火) 20:45:57.78
コボルのおばちゃまは軍人だけど、軍で情報処理やってたわけだしな…
0263デフォルトの名無しさん2011/03/01(火) 21:17:44.25
>>260
中学生とか
0264デフォルトの名無しさん2011/03/01(火) 21:22:24.58
よくわからんがRuby界隈では↓こういう状況なのか?

    /厨房\
  /   _ノ  \
  |    ( 一)(ー)  えっ?そんなの簡単っしょ?
  |     (__人__)       
   |     `⌒´ノ
   |   ,.<))/´二⊃
   ヽ / /  '‐、ニ⊃
   ヽ、l    ´ヽ〉
''"::l:::::::/    __人〉
:::::::::|_/ヽ.   /|||||゙!:゙、-、_
:::::::/´∨/`ー'〉゙||i l\>::::゙'ー、
:::y′.: ',ゝ、_/ヽ.||||i|::::ヽ::::::|:::!


             / ̄ ̄\
            ノし. u:_ノ` ,,\.
            /⌒`  ( ◯)(O):
           .:|   j(   (__人__) ぬぬぬ…
          :|   ^  、` ⌒´ノ:
          |  u;     ゙⌒}:
          ヽ     ゚  " }:
            ヽ :j    ノ: i |i |
         /⌒      ヽ  | || |  |
     :: / ̄ ̄ヽ ::       \ ||     |i
    :: (「    `rノ ::      \   ||i  \
     :: ヽ   ノ ::          \       \
ガタッ!  |   | r         「\   \       \
       |   | |       ノ  \   \__   \
          ヽ_ノ       /||| l   \_,       `ヽ   \
     || i  /         | ||| |    (_つ ̄と_ノ)    \
0265デフォルトの名無しさん2011/03/01(火) 21:37:44.19
「中学生にコミッタ権限が与えられた」
このニュースにとことんまでにネガティブなものを感じる人間なんて
このスレにしか存在しない
別におまいらの地位が中学生に追い落とされるわけじゃないし
中学生の一団によってRubyの中枢が乗っ取られるわけでもない
おまいら正気を保てよマジで
0266デフォルトの名無しさん2011/03/01(火) 21:43:26.54
ぶっちゃけそこまでRubyに興味ないw
0267デフォルトの名無しさん2011/03/01(火) 21:48:30.11
>>266
お前の無駄な自慢こそどうでもいい
0268デフォルトの名無しさん2011/03/01(火) 21:49:55.21
間違えた
×無駄な自慢
○無意味な主張
0269デフォルトの名無しさん2011/03/01(火) 22:06:10.63
このスレにすら「いない」
どこにもいなかったからここにいてくれないと困るのはわかるが、残念ながらいない
0270デフォルトの名無しさん2011/03/01(火) 22:08:24.33
I wish you are hima.
0271デフォルトの名無しさん2011/03/01(火) 22:12:01.72
若者、いいじゃないか。
ジジイばっかの老人ホームみたいなコミュもあることだし。
0272デフォルトの名無しさん2011/03/01(火) 22:19:26.86
>>269
>>172>>174>>176
てゆか俺は「いてほしい」なんて全然思ってないよ
0273デフォルトの名無しさん2011/03/02(水) 07:40:16.43
>>268
日本語覚えてから書き込もうな、中学生www
0274デフォルトの名無しさん2011/03/02(水) 17:33:50.29
2011年2月のプログラミング言語インデックス

1 Java     18.482% ↑ 7ヶ月連続1位
2 C.       14.986% ↓
3 C++       8.187% ↓
4 Python     7.038% ↑ 5位から4位へ浮上。2ヶ月連続で順位を上げている。
5 PHP.      6.973% ↓ 4位から5位へ下落。下落傾向
6 C#        6.809% ↑
7 (Visual)Basic 4.924% ↓
8 Objective-C  2.571% ↑ 安定化傾向
9 JavaScript   2.558% ↑
10 Perl.       1.907% ↓
http://journal.mycom.co.jp/news/2011/03/01/064/index.html
■ このスレッドは過去ログ倉庫に格納されています