[1 , 2].add #=>3
や
[1 , 2 , 3].sum #=>6
とかのメソッドが無い理由ってどんなことが考えられますか?
一見便利そうなのに。
[1 , 2 , 3].inject(:+)
で解決できるのはわかるのですが
>>3 Objectクラスにaddやsumに反応するメソッドを実装できたら考えてあげてもいいよ
面倒くさい質問してもいい?
>>4 まあそういうことだよね
要素に数値や文字列が入ってないと例外で落ちるようなメソッドをArrayに作るわけにはいかん
だからこそ使用メソッドをユーザーが指定できる畳み込みがあるわけだし
|l| i|li , __ _ ニ_,,..,,,,_
l|!・ω・ :l. __ ̄ ̄ ̄ / ・ω・≡
!i ;li  ̄ ̄ ̄ キ 三
i!| |i  ̄ ̄  ̄ =`'ー-三‐ ―
/ ; / ; ;
; _,/.,,,// / ヒュンッ
/・ω・ /
| / i/
//ー--/´
: /
/ /;
ニ_,,..,,,,,_
/ ・ω・`ヽ ニ≡ ; .: ダッ
キ 三 三 人/! , ;
=`'ー-三‐ ―_____从ノ レ, 、
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
ノ ゚.ノヽ , /} ...
,,イ`" 、-' `;_' ' ..::::::::::::::...
,-、 _.._ ( (,(~ヽ'~ ..:::::::::::::::::::::::
)'~ レー' 〉 ヽ i`'} .:::::::::::::::::::::::
~つ '-ー、 i | i' ...:::::::::::::::::::::::
/ < / 。/ ! ......::::::::::::::::::::::::: これは
>>1乙じゃなくて
/ ~^´ /},-'' ,●::::::::::::::::::::::::::::::::::::
i、 ,i' _,,...,-‐-、/ i :::::::: .:::::::::::::
..ゝ <,,-==、 ,,-,/ .::::::::::: 放射能がうんたら
) {~''~>`v-''`ー゙`'~ ..::::::::: ........::.
{ レ_ノ ..::::::::. ......:::::::::
ノ '' ..::::::: ...::.:...:::::::::
.::::::::: ...:......:::::::::::: .
.:::::::::::. ..... .. ..:::::::::::::::::::::::: :::.
::::::::::::::::.::::::....:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.. :: ::..
.:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ::: ::.
::::::::::::::::: :::::::::::::::::::::::::::::: :::::
.:: ::. :::
10 :
デフォルトの名無しさん:2014/02/17(月) 12:38:52.51
qtを利用してGUIアプリケーションを作成しているのですが、
ボタンクリックイベント後に呼び出される、メソッド内の処理をしている間、
本体がフリーズ状態となってしまいます。(半透明で反応しない)
メソッド内の処理の先頭に、
Thread.newブロックなどをおいても同様にフリーズしてしまいます。
どなたか、良い策をおねがいします!
などと上手い返しをしております!!
14 :
デフォルトの名無しさん:2014/02/17(月) 19:20:11.47
cx
15 :
デフォルトの名無しさん:2014/02/18(火) 13:43:35.09
RubyでCGIやりたいです。
Ruby on Railsは必要ですか?
またおすすめの開発環境ありましたらお願いします。
>>15 今日あと9時間くらいあるのでCGIそのものについて学べ
17 :
デフォルトの名無しさん:2014/02/18(火) 15:16:36.88
rubyじゃ無理
20 :
デフォルトの名無しさん:2014/02/18(火) 16:09:09.09
日帝の残滓が作ったrubyのコミュは民度の高いチンピラと同じ
Discovery channelあたりで、タトゥーを入れて自動車修理をしているヤツらのクラスタ。
日本のド田舎でリーゼントしているのとは別物。
sauce labが、そんなヤツらだった
23 :
デフォルトの名無しさん:2014/02/21(金) 06:29:16.35
>>15 オレもそれやってみたい
仲間になろうよ
と言ってももう見てないかな
24 :
デフォルトの名無しさん:2014/02/21(金) 22:15:17.64
CGIが何か分かってない馬鹿には無理
まともな人間なら標準出力に出力できる言語(言語に限らないが)なら可能だということは明白
完成する頃にはCGIが何かわかるようになってるから、バカじゃなくなるな。従って無理ではないという事になる。
1990年代は bash の CGI を見た
Cとかでも書いていた人いたでしょ
bash の CGI スクリプトな
28 :
デフォルトの名無しさん:2014/02/21(金) 22:30:57.93
CGI書けるって自慢気に言うフリーランス系大学生にbashでCGI書いて見せると不思議そうな顔するよなw
コーディングから動作確認まで不思議そうな顔してるからマジうけるwww
まずCGIが何の略か調べるとこからだな。特にI。
30 :
デフォルトの名無しさん:2014/02/21(金) 23:01:08.51
コモン・ゲートウェイ・インポテンツ
Cool Great I am
Computer Gangsters International
馬鹿には無理
34 :
デフォルトの名無しさん:2014/02/22(土) 01:46:20.62
コンピュータ・ゲーム・インストラクター
35 :
デフォルトの名無しさん:2014/02/22(土) 03:11:47.15
C チンチン
G ゴミゴミwwwwww
I イクゥゥゥゥゥドピュドピュドピュ
そういや昔からCGIって言ってた動画屋さんがちょっと困ってたなあ
RoRって無料で借りられるレンサバみたいなので使える所ある?
>>37 rubyとcgiが動けば、何とかできるんじゃないの。遅いだろうけど。
aws ec2の1年ほぼ無料じゃダメかな。
Railsは無料鯖では一切使えないとみなしていい
そもそもRailsとそのアプリケーション自体、そういう極めて限定された共用リソースでの使用を考慮していない
Rubyでライブラリを使わず、にGETリクエストを送りたいんです
アクセストークンが必要でそれは手に入れました
ですがここからどうやってこのアクセストークンをヘッダーにつけて発行するのでしょうか。
url = URI.parse('
https://hoge.com/api/foo.json?param=fuga')
http = Net:HTTP.new(url.host, url.port)
http.use_ssl = true
http.start して http.get
Net::HTTP#get の2番目の引数にヘッダを Hash で渡す
ruby始めたばっかりなんですが
module Hoge
_def fuga()
__なんたらかんたら
_end
_def self.piyo()
略
でself.piyoの中からfuga()を呼びたいんですがどうやればいいんでしょうか?
fuga()はモジュール内の関数からのみ利用するものです
>>44 Hoge厨はさっさと消えろ
精神異常かお前
>ruby始めたばっかりなんですが
こういうどうでも日記を本題よりも最初に持ってくる精神構造をしてるのがhoge厨
日記と質問の切り分けもできないゴミクズ
>>43 ありがとうございました。
できませんでした
すいません
>>46 違うよ。
始めたばかりだからそれを察して
懇切丁寧に教えろって自己中なんだよ。
根性が腐りきってるだけ。
>>44 ええと、俺も初心者なのでわからないんですが、そのモジュールはどこにincludeする予定ですか?
分からないのに答えようとするキチガイ
>>44 モジュール内の関数?からのみ利用、って書いてあるけど、モジュールの特異メソッドから利用してるわけで。
分からないのに答えようとするキチガイ
分からない事に答えるのが基地外なら国会議員は全員基地外ですわ
>>44 そういうすんなりできないことがでてくるのは大抵設計が腐っているせい。
def self.fuga
...
end
private_class_method :fuga
にすればモジュール特異関数でfuga()を呼び出せるし
Hoge.fugaも禁止できる。
>>44 モジュール Hoge をインクルードすれば、
普通にインスタンスメソッドとして fuga を呼べるようになるよ
irb(main):001:0> module Hoge; def fuga; p 'FUGA!!'; end; def self.piyo; fuga; end; end
=> nil
irb(main):002:0> Hoge.piyo
NameError: undefined local variable or method `fuga' for Hoge:Module
from (irb):1:in `piyo'
from (irb):2
from /opt/local/bin/irb2.0:12:in `<main>'
irb(main):003:0> include Hoge
=> Object
irb(main):004:0> Hoge.piyo
"FUGA!!"
=> "FUGA!!"
irb(main):005:0>
>>55 ← こんなゴミコード晒せるってある意味すごいな
どうだ、すごいだろ。おまいもどんどんチンコさらけ出してくれ。
58 :
55:2014/02/25(火) 02:44:32.20
>>44 モジュールの用途は2つある
・Mix-in の実現(クラス継承とは別の機能の共有、例としては Enumerable)
・名前空間の提供(大きなプログラムを小さな機能要素であるモジュールに分割)
>>55 で示したのは前者の Mix-in のほう
で、もしも
>>44の「fuga を呼ぶ」という意図が後者の名前空間であるなら、
そのままでは呼べないから、fuga をクラス定義で包む必要がある
例を示す
module Factory # 工場
class Fuga # 部品
def fuga; .... ; end
end
def self.piyo # 部品 Fuga を製造する
Fuga.new
end
end
ここで、Fugaオブジェクトの生成は一般には Factory::Fuga.new と書くけど、
より簡潔に Factory.piyo でも生成できる
>>58は真面目に回答してるつもりなんだろうな。
駄目な奴は何をやっても駄目だな。
チンコとか臭そう
捕鯨反対の人、昨日は何かあったのかな
RSSを登録するアプリを作っているんですが
そのまま登録すると文字コードがUTF8ではないのでRailsで文字列連結のときにエラーが出てきます。
ここを参考にして実装してみたら・・・
http://route477.net/d/?date=20110119 rss = SimpleRSS.parse open(self.url)
self.site_name = rss.title.encode("utf-8", :invalid => :replace, :undef => :replace)
http://feed.nikkeibp.co.jp/rss/nikkeibp/business.rdf ここの<title>nikkei BPnet 「企業・経営」最新記事一覧</title>が
nikkei BPnet ???????????????????????????????????????
とかに文字化けしてしまいました・・・
エンコードのことはよく知らないんですが、エンコーディング特有の文字があるとしても
ASCII-8BITからUTF-8に変換ってできないんですかね・・・
64 :
63:2014/02/25(火) 18:51:21.71
rss = SimpleRSS.parse open(self.url)
self.site_name = rss.title.encode("utf-8", :invalid => :replace, :undef => :replace)
これを
rss = SimpleRSS.parse open(self.url)
self.site_name = rss.title.force_encoding("utf-8")
にしたら一応できましたが・・・
>>63,64
何が問題で何をしたいのかがよく分からんよ
リンク先のRDFファイルの先頭行には
<?xml version="1.0" encoding="utf-8"?>
と書かれているから、文字エンコーディングはUTF-8で決まりだし、
実際に保存したファイルを(UTF-8に対応した)普通のエディタで開けば、
文字化けすることなく表示される
Win32APIのnewメソッドの第3引数で、指定できる型がポインタ(p)、long(n,l)、int(i)だけのようですが
double型やfloat型の引数がある関数を使いたい場合、どのように記述すればよいのでしょうか
もし解説されているHPとかあったら教えてください…
67 :
デフォルトの名無しさん:2014/02/25(火) 21:05:01.21
>>42 >>47 その問いに答えられないけど
したいことがワシのやりたい事と似てるような気がする
同じ初心者同士で解決してみないか?
よかったら↓に来てくれ
kohada.open2ch.net/test/read.cgi/php/1393329234/
69 :
66:2014/02/25(火) 22:25:17.03
じ、自己解決しました(震え声)
質問した途端にこれだよ スレ汚しすみませんでした
気にすんな
質問しようと説明してまとめた直後にわかるパターンと
質問して投稿して記事になったのを客観的に眺めた瞬間わかるパターンとあるな
レスをもらって
一行目読んでる途中で判る場合と
三行目まで読んでもさっぱり判らない場合があるね
73 :
37:2014/02/26(水) 18:55:21.32
>>37です。ちょっと都合で書き込めなかった。
RoRのやつ教えてくれた人達thx
ruby/tkって1.9.3ではどこに入ってるの?
GCについて質問です
複数のブログのテキストと画像(1記事辺り30枚程度)をマルチスレッドでスクレイピングしているのですが、
どこかでGCが詰まってるのかメモリを開放してくれず一定のところでスワップが発生してしまいます
・rails経由でrunnerコマンドを用いて上記スクリプトを走らせている
・DBへの保存はActiveRecordを使用
・画像の保存、DBへの保存にActiveRecordのトランザクションを使用
・画像のリサイズにRMmagickを使用
・マルチスレッドにParallelを使用
考えられる原因がどの辺にありそうか思い当たるところがあればご意見を聞かせていただけないでしょうか?
またこういうGC周りに原因がありそうなケースでのデバッグのやり方を教えていただきたいです
甘えすぎ
本当に知りたいならもっとよく調べてからにしろ
77 :
デフォルトの名無しさん:2014/02/28(金) 08:34:29.53
hoge〜
>>74 解決した
program filesの下にあった
パス通さないと無理っぽい
馬鹿には無理
>>75 RMagick と GC って有名だったような。検索するといろいろでてくる
>>76 10かい hello world と ひょうじ したいです。 どうしたら いいですか?
このスレはシーシェパードに監視されています
10.times{ puts 'Hogei' }
>>81 池沼ぶるのは構わんがあんまりやり過ぎると誰も相手しなくなるぞ
Rubyで実装するシーシェパード入門
86 :
デフォルトの名無しさん:2014/02/28(金) 20:05:51.32
# coding: utf-8
TEN = 10
TEN.times do
puts "Hello, world!"
end
$><<"hello world\n"*10
88 :
デフォルトの名無しさん:2014/03/01(土) 02:57:07.33
十回表示は\rだな
これからはじめようとおもってんですけど。。。。
やっぱり開発環境はlinuxとかがお勧めですか?
>>89 もしあなたがRubyを勉強しようと思っているのなら、RubyではなくC#にするといい
C#ならあなたがやりたいと思っていることをすべてやることができる
もしあなたがC#を学んでなおRubyを勉強したいと思ったのなら、おそらくこのスレに聞きに来ることはないだろう
プログラムに本当に必要なのは開発環境なんかじゃなく実行環境だからなあ
普段Windowsだけ使ってるのならWindows上でよく動くプログラム(を楽に作れ/学べる)言語が無難
それは少なくともRubyではないはず
せっかく勉強したとしても、
わざわざ立ち上げるバーチャルマシンの痒いとこに手が届かないファイルシステムの中だとか
どこか遠くの激遅の小煩いレンタルサーバのコンソールの中だとか
そんなとこでしか動かせないんじゃどうにもならないよね
自分が使ってるマシンでぐりぐり動いてなんぼ
>>91 俺はVisualBasicからプログラミングはじめたクチだけど、
結局GUIプログラムは面倒だから続かないね。
Rubyでも同じことだけど、CUIのプログラムを作るならrubyがずっと楽。
>>93 つまりLinuxをインストールしろということか。正解だな
WINDOWSでプログラミングしてて許されるのは中学生まででしょ
ルビーのインストーラーのウインドーズのサポートは最近適当になってきたの?
>>95 普段からLinuxを使っているならRubyはあり
Rubyを学ぶためにLinuxインストールするとか愚の骨頂
Rubyを使うためにLinuxインストールするのは馬鹿
馬鹿と愚の骨頂ってどっちがどうなんだとか考えると眠たくなるが
Linuxの別途インストールが唯一妥当なのは
「レンタルサーバ等で動かすことが既に決定しており、その環境とほぼ同じものをローカルにも作りたいと思った」
ときのみ
89です
89です 色々とアドバイスありがとうございました
今まではExcel Accessなどをvbaでいろいろいぢって仕事で使うような在庫管理やら何やらをやってましたがWebでも同じようなことがしたいなー どうせやるなら新しいことやりたいなーとおもっていろいろと探しているうちにこのスレにたどりついたというわけでして。。。。
このメソッドになんか気のきいた名前を付けてくれ(´・ω・`)
class Hash
def hoge!(key, other_keys=[])
value = self.delete(key)
other_keys.each{ |other_key|
self[other_key] = value
}
end
end
mvでええやん
えやな
print.classって書いたらNilClassが返ってくる
普通のメソッドはオブジェクトじゃないってこと?
.classはObjectクラスのインスタンスかどうかを調べてるの?
106 :
デフォルトの名無しさん:2014/03/02(日) 14:05:31.35
>>105 クラスやインスタンスとか難しい事を考える以前に、
メソッドチェーンの基本が理解できていないな
irb(main):001:0> print
=> nil
irb(main):002:0> print.class
=> NilClass
irb(main):003:0> print.class.class
=> Class
>>106 >>107 なるほど
printの戻り値がnilなのか
それにしてもArray=>Arrayになるのは
クラスの戻り値がクラスってことなのか
ややこしいなあ
>>100 誰かと一緒に開発をするのか、プログラマとして他人に雇用される必要があるのか
に対する答えがNOなら、
自分の好きなようにやればいいと思う
アドバイスなんて参考にならん
まだ分かっていないようだねw
irb という対話環境は、以下のように振る舞う
(1) テキストを入力(read)し、
(2) それを式として評価(evaluate)して、
(3) その結果を印刷(print)する
(4) この手順を繰り返す(loop)
だから、read/evaluate/print/loopの頭文字(かしらもじ)をとって REPL とも呼ばれる
ここで、評価とは一般的に言うところの計算だと考えていい
たとえば 1 + 2 という入力を評価(=計算)すると 3 という結果を印刷するし、
1 だけを入力すると 1 という値を印刷する
同様に Array と入力すれば、その評価結果である Array を印刷するし、
Array.new と入力すれば、評価によって Arrayクラスのインスタンスを生成してそれを印刷する
>>109 恐らく自分のやりたいようにやっていいと思います。
但し結果さえでればというかんじです。
まずは自分のpcの仮想環境でトライしてみて将来的にはクラウドとか社内にインフラを持たなくても良いようにしたいなーとかおもってます。
>>108 Array は単なる定数(再代入すると怒られる変数)
Array って変数の中にクラスが入ってる
>>108 それはArray==Arrayってことでは。
>>108 > クラスの戻り値
これからして何も理解してないからな。
「Rubyには関数がない、全てメソッドだ」
というのをどっかで聞いた上に誤解して、
変数も定数も全てメソッドだと思い込んだのかな
入門書レベルだとそこらへんは書いてないかも
初心者スレだし知らなかったり察しがつかなくても仕方ないのでは
>>112 そうなんですか
irb(main):001:0> FOO = Array
=> Array
irb(main):002:0> FOO.new(3){1}
=> [1,1,1]
なるほど、勉強になります。
かわいいJKとペアプロしたいんですがrubyを使えばできるんですか!?
配列のn番目の要素からeachしたい場合ってなんか良い書き方ありますかね
array.drop(n).each
>>117 あなたがイケメンでかつMacbookAirを使いこなしていればできます。
>>110 なるほどわかりやすい
irbでprintが評価されたらnilになるのが不思議なんだよなあ
>>113 再代入か、ありがとうググってみる
ruby歴4日なもんでググり方すらわからなかったんだ
英語のページの方が充実してるのが何だかなあ
>>122 Array == Arrayのことを再代入って言ってるの?
== は比較演算子だよ。
>>122 >irbでprintが評価されたらnilになるのが不思議なんだよなあ
irb に限らず、「Rubyではあらゆるすべてが式」になる
式だから、irb が評価することで必ず何らかの値が返ってくる
そして、あるメソッドが何も返すべき値が無い場合には、
慣例で nil という値を返すことが多く、print もこれに該当する
(C や Java を知っていれば、void型に相当するのが Ruby の nil になる)
> irbでprintが評価されたらnilになるのが不思議なんだよなあ
print を評価するというのは、print というメソッドを呼ぶということ
print メソッドの返り値は常に nil なので nil が出力されているというだけ
print というメソッドオブジェクトが出力するわけではない
irb(main):014:0> method(:print)
=> #<Method: Object(Kernel)#print>
こういうのと混同してんじゃないの
printのクラスはMethodだけどprintの戻り値はnilつーことやな。
Rubyはカッコなしでメソッドを呼べるので、名前だけ書いたときにメソッドオブジェクトを指すようにはできないからね
JavaScriptとかから入ると混同してしまうかも
逆にJavaScriptを使うときにカッコなしで書いてしまって変なオブジェクトが代入されてる〜と悩むこともたまにあるけど
>>123 ごめん安価間違えた
>>112に対して言いたかった
>>124 >そして、あるメソッドが何も返すべき値が無い場合には、
>慣例で nil という値を返すことが多く、print もこれに該当する
なるほど。よくわかった
すごく的外れかもしれないけどこれって
printが何に対する参照も持ってないって見かたでok?
>>130 print と書いただけだとそれはメソッド呼び出しであり、その結果は print の返り値である
print メソッドというオブジェクトが結果として返るわけではない
>>130 > printが何に対する参照も持ってない
どういう意味だ?
>>132 Arrayという変数名がArrayクラスの実態への参照を持ってて
printという変数名は何も持ってないのかと思ったんだ
134 :
124:2014/03/03(月) 00:02:36.22
>>130 >printが何に対する参照も持ってないって見かたでok?
たぶん勘違いしてると思う
>>125,131の解説を読もう!!
>>133 printは変数名じゃない。メソッド。
変数とメソッドの違いについて勉強するといいよ
あ、わかったわ、全部式なのか
クラスは自分は自分だって言ってるだけか
やっと理解した
バカに付き合ってくれてありがとう
138 :
124:2014/03/03(月) 00:21:27.58
もうRubyに慣れてしまったから意識することは無いけど、
たしかに英小文字で始まる名前が、一見しただけでは
ローカル変数なのかメソッドなのか区別がつかないってのは、
誰でも最初はとまどうのだろうなぁ....と思う
ifやcaseも式(実際に処理されたブロックの最後の式の結果を返す)だしなあ
Rubyってだいたい式だよね、意外なくらい
>>139 だいたいっていうか全部では?例外ある?
物凄くマジレスすると、メソッドを作ったことがないからそんな変なことを言う
def aaa
32
end
aaaメソッドの返値は32
def aaa
nil
end
aaaメソッドの返値はnil
これだけの理屈でしかない
メソッドを作った人が最後の評価値としてnil(に常になるもの)を指定したからメソッドの返値がnilになる
あ、throwとraiseは返り値ないっけ?
>>138 Perl は変数に $ をつけるし、Python は self. 必須だし、JavaScript はカッコがいるし、
区別が付かないのは Scala と C# のプロパティぐらいかな…?
>>142 流れそのものを変える文は、値を返せないもんねえ
その親ブロックが返す値を変えるものならあるが
>>144 そういえばbreakとかもbreak自体の返り値はないのか。
printf("%p\n", printf) みたいなことができるから必須ってわけでもない
それは関数ポインタでは変な理由で & が省略できるから
def isdigit(c)
if c =~ /^[0-9]$/
return true
end
return false
end
exp = '1+2-3*4/5'
exp.each do |e|
if isdigit(e)
print e
end
end
このプログラムが意図したとおり(12345)に動かないのはなぜでしょうか
その1
Rubyでは「最後のreturn」はあんまり書かない
メソッド処理途中で脱出するときだけ書く
というか、returnがあったらその用途だとみんな思い込んでるので、そうじゃないとちょっとアレ
その2
正規表現の^は改行がある文章の文頭を、$は改行のある文章の末尾を表す(大雑把)
改行が含まれていない文字列ではうまくマッチしないので、改行区切りが重要でないのなら絶対に使ってはいけない
その3
文字列のeachはRuby1.9で廃止された。一文字ずつ取り出すにはeach_charを使う
その4
Regexp#=~ はマッチしないときnilを返すので、ifの条件にするならそのまま使える
def digit?(s)
/\d/ =~ s
end
exp = '1+2-3*4/5'
exp.each_char do |chr|
print chr if digit?(chr)
end
nextは、構造化プログラミングに反しますか?
155 :
デフォルトの名無しさん:2014/03/06(木) 19:42:49.97
ruby2.0以降爆速になってpythonより速くなったというような比較を見かけるのですが、フレームワークも速くなったのでしょうか?
速くなったね
演算子||と&&について質問です。
rubyでは優先順位が&& > ||となっていますが、
a = "abcd"
true || a.reverse! && nil
a #=> "abcd" (予想ではa.reverse!が効いて"dcba"となるはずだった。)
となって、||の右辺が評価されていないように思います。
基本的なことかもしれませんが、何故なのでしょうか?
(1.9.3p545/centos)
>>157 trueってわかってんだから評価する必要ないだろ。
>>157 irb> (p 1) || (p 2)
1
説明おわり
>>159 わかりにくいわ
Ruby は (A or B) という式を見たとき、とりあえず A を先に評価し、A が真だった場合 B の評価を行わない
A と B の両方をとにかく1行で評価して欲しい場合は、…まあ、any? とか使うしかないのかね
a = "abcd"
[true, [a.reverse!, nil].all? ].any?
p a
#=> "dcba"
>>157 && と || は演算子として分類されているけど、厳密には他の演算子とは意味が異なり、
(制御構造としての)条件分岐式の短縮構文、いわゆる構文糖(syntactic sugar)になっている
具体的には:
・式 X && Y は if X then Y else false end と同じ意味
・式 X || Y は if X then true else Y end と同じ意味
だから || の左辺 X が真であれば、右辺 Y は評価されない
なお論理学や形式的意味論の世界だと、
&& は cand (conditional and)と呼ばれ、|| は cor と呼ばれることがある
>>157 真理値が確定した段階で計算が打ち切られる。
覚え方: C言語と同じ
163 :
デフォルトの名無しさん:2014/03/06(木) 23:52:08.28
164 :
157:2014/03/07(金) 00:17:02.46
>>158-162 ありがとうございます。
考え方が根本的に間違ってた気がします。
例えば、
3 + 4 * 5 → 3 + 20 → 23
と、まず初めに、+より優先順位の高い演算子*が先に評価されて計算が行われると思っていたので、
true || a.reverse! && nilの場合、(a.reverse! && nil)が先に演算されるのではないか?と考えていました。
>>161さんの言う通り、if-thenと同じだと考えると納得出来ました。
ん?
いやいやいやいや
>>164 評価順序と、論理演算の優先順位は別の話ということだな。
当たり前のように使っていたが、言われてみれば、そういう考え方も有るか。実装的には、その考え方だと余計にコストかかるけど。
アホが増えたぞ
評価順と優先順位の関係は直感を裏切ることもある、というのは
プログラミング言語一般の基本だが?
その通りだ!
プログラミングの常識がないプログラミング初心者なんておかしい!
171 :
157:2014/03/07(金) 17:52:00.94
バカですみません…。
=演算子でしたら右結合なので、a=b=c=0の場合、
a=(b=(c=0))と同等になり、c=0から演算されます。
それと同様に、優先順位により
true || (a.reverse! && nil)となり、||右辺から実行されるのでは?と思ったのです。(もちろん、true || aにおいてaが評価されないことは理解しています。)
右結合じゃなくて左結合だから
・優先順位
・結合性
・評価順
を、なんとなくぼんやりと混同してるんだと思うんだけど
173 :
157:2014/03/07(金) 18:21:10.70
>>172 「プログラミング言語Ruby(p105)」には、
優先順位…式がどのような順序で評価するかに影響を与える
結合性…同じ(優先順位の)結合子が1つの式の中に並んでいる時に、どのような順序で評価をするか
と定義されていました。
true || (a.reverse! && nil)では、||と&&は優先順位が異なるため結合性は無視できます。
優先順位は定義より式の評価の順序に影響を与える、とあったので評価順を左右するものであると考えたのですが、この認識が間違っているのでしょうか?
優先順位は皆、一々覚えていないから、()で囲むべし
それに短絡(ショート)は、最初の式の真偽値によって、
右の式が実行されるかされないか、が決まるため、
わかりにくいし、勘違いしやすい
Cでも一般的に、使わない方がよいとされている
>>172 代入演算子が左結合なら a = b = 1 したら b が未定義でエラーになるのでは
> Cでも一般的に、使わない方がよいとされている
んなこたねーよ。
ていうかCではともかく、Rubyでは多用するし。
=だと左辺値右辺値の話が入ってくるからまたややこしくなる。
irb> (raise 'lhs').a = b = (raise 'rhs')
RuntimeError: lhs
となるのを見たらわかるように、右結合だからといって右から評価されるわけではないよ。
構文木考えてみなよ
即値以外は計算上の優先順位のとおり評価しようとしたらプログラム動かんでしょ
低レベルの話はちょっとおいとこうか。
>>177 評価順序の問題と結合度の問題がごっちゃになってないか
評価順は左から右、= の結合度(多重代入が典型例)は右結合
def a; false end
if (!b = a()); p b end
こういうのも優先順位に反して!より=が先に評価される
なるほど、ええと
% irb
irb(main):001:0> !a = false
(irb):1: warning: found = in conditional, should be ==
=> true
どういうことだってばよ
>>182 !a=false
は
!(a=false)
と同様に評価される。
ただし、!のオペランドは条件式だから、
=じゃなくて==じゃねえのか?って言われてる。
184 :
デフォルトの名無しさん:2014/03/08(土) 02:17:30.98
>>173 >優先順位…式がどのような順序で評価するかに影響を与える
>結合性…同じ(優先順位の)結合子が1つの式の中に並んでいる時に、
どのような順序で評価をするか
結局、上記は間違い?
a = b = 1
これは、左から評価される? どうなるの?
>>184 おまえ左から評価されるとしたらどういう動作になるのか言ってみろ。右に決まってるだろ。
評価するという専門用語に対する認識が違うと推測
…まあ、Rubyだけやってちゃわからん概念ではある
>>187 Pythonやってみたら理解出来るようになる?
構文解析と評価のタイミングの違いなんだけどね
演算子の優先順位は構文解析時に効く
191 :
デフォルトの名無しさん:2014/03/08(土) 15:06:18.19
将棋盤のような格子状の画像のマスごとの全ピクセル色情報を取得しようとすると、
ループで回して取得する以外に方法は無いのでしょうか?
左上座標:右下座標を指定すると取れるとかないですか?
マスごとなので座標が飛び飛びになる。
ピクセルの色情報を取得って、どことなくBASICな懐かしい香りがする
どなたかウィンドウズのサブシェルでUTF-8のコマンドを実行する方法をご存知ありませんでしょうか?
例えばですが、`type "优华.txt"`ですとかIO.popen('notepad "优华.txt"', 'r') {}
のようなコマンドね
コマンドライン上ではコピーアンドペーストで(文字の化けありますが)実行できます
上記の場合は、CP932の変換された化けの物渡されるために、ENOENTなるようです
このままではエロ動画整理されないが?
こんなに国籍を明確に主張するレスもすごいな
彼にとって、右翼団体に所属していることがアイデンティなんだろう
俺も知りたいわ
出来たと思ったらフォントが固定ピッチにならなかったり部分的に文字化けしたりであきらめた
>>188 計算機科学の初級をぺらりと舐めるだけで全然違う
ただし、計算機科学の初級を理解できるかどうかは保証はしない
おまえらバカすぎて、どうにもならないからcかschemeから始めろ
UbuntuならRuby2.1をパッケージからインストール出来ますか?
202 :
デフォルトの名無しさん:2014/03/09(日) 09:30:21.52
Windows、 RubyInstaller 2.0、 Redmine 2.5
RubyをインストールしたときにRails4.0とかいろいろgemをインストールしたので
Redmine専用にgemを用意したいので
bundle install path=vendor/mygem --local
ってコマンドを打ってredmineのディレクトリの中にgemをインストールしました
そのあとに
rake generate_secret_token
ってやったんですが
Could not find gem 'rails (= 3.2.17) x86-mingw32' in the gems available on this
machine.
Run `bundle install` to install missing gems.
って出てしまい失敗します。bundlerでたしかにredmineの下にrails3.2.17は入っています。
どうやってredmineの下のgemを使えるようにできるのでしょうか?
bundle exec rake だとどう?
204 :
デフォルトの名無しさん:2014/03/09(日) 16:20:25.60
Rubyの高速化。
初歩的なことから小難しい事まで説明してる日本語のHPってないですか?
高速化した中学生が忙しいって話しか出てこない・・・。
bundle exec rakeってやっても
Could not find gem 'rails (= 3.2.17) x86-mingw32' in the gems available on this
machine.
Run `bundle install` to install missing gems.
って出ます。
206 :
デフォルトの名無しさん:2014/03/09(日) 17:22:23.94
正規表現をメソッドで使用するとき、ローカル変数で正規表現を宣言すると、メソッドが呼ばれる度に
ローカル変数の正規表現のインスタンス化と代入が行われて無駄だと思うんですけど、これのベストプラクティスを教えて下さい。
定数として正規表現は宣言できないし、クラス変数として宣言するのは本来の目的と違うと思うんですが
具体的には以下のように複数のポストに含まれるURLをチェックして何かしたいという状況です。
posts.each{
checklink(post)
}
def checklink
url_regexp=/
http:.*?\.com/ post=~url_regexp
#なんかの処理
end
>>206 > 定数として正規表現は宣言できないし
え?普通にできるよ
208 :
206:2014/03/09(日) 17:33:57.62
>>207 マジで!?
とんでもない勘違いしてました…
>>206 $ ruby -e "10.times{ e= /re*?/; p e.object_id }"
-597111458
-597111458
-597111458
-597111458
-597111458
-597111458
-597111458
-597111458
-597111458
-597111458
ということで変数埋め込みのない「固定の」正規表現リテラルはRubyが特別扱いして固定のオブジェクトになっている
複雑なオブジェクトの生成が無駄だとか余計なこと考えずに安心して使え
極めて稀に同一オブジェクトであることが問題になることがあるが、そのときはRegexp.new(/re*?/)とでもしろ
210 :
206:2014/03/10(月) 04:44:52.51
>>209 ローカル変数として宣言しても定数と変わらんということか。
すばらしい
211 :
デフォルトの名無しさん:2014/03/10(月) 04:58:58.58
定数 と リテラル を混同している人がいるような気がした。
cond -> R = true ; R = false
って書くのなんかダサいから
hoge_call(cond, R)
みたいな述語はないの?
Prologスレの誤爆?
rubyにwin32oleを実装した人のwebページがあったと思ったけど
ruby win32oleとかで検索してもゴミばかりで見つかりません
urlまたは開発者の名前を教えてちょ
sequelでsqlite3をコピペで操作してますが
.select(:n___an, :i, Sequel.as(sum((Sequel.case([[{k: 's'}, :c], [{k: 'u'}, Sequel.expr(0) - :c]], 0 ))), :tc))
これがsum未定義になって
.select(:n___an, :i, Sequel.as(Sequel.function(:sum, (Sequel.case([[{k: 's'}, :c], [{k: 'u'}, Sequel.expr(0) - :c]], 0 ))), :tc))
これが通るのは何故でしょうか?
色々検索してみたんですがよくわかりません。両方とも同じ意味だと思ったのですが。
そういうのも仕事のうち
自分で探すこともできない情弱が作れるのもうんこだからどうでもいい
2chのレスのアンカーの相互関係をオブジェクトで表すには、クラスを定義してtree構造にすればいいのだとおもいました。
しかし、一つのレスに対して複数のリプライが付く場合がありますが、Rubyのオブジェクトは可変長の要素を収納できるのでしょうか。
できない場合、インスタンス1つあたり、余裕を持って(例えば20reply分)あらかじめ余計にメモリを確保するしか方法はないのでしょうか
配列は可変長
>>200 パッケージからはできない。たぶん普通に入れると1.9じゃないかな。
ruby2.0-devってのがあるから2.0はいけるかもだけど。
でも「rbenv」と「ruby-build」を入れれば簡単に2.1を入れられる。
>>221 >2chのレスのアンカーの相互関係をオブジェクトで表すには、
>クラスを定義してtree構造にすればいいのだとおもいました。
データ構造としては、「一つのレスに対して複数のリプライが付く」のだから
ツリーではなくてグラフになると思う
更に、未来へのアンカーを除外すれば、言い換えると、すべてのアンカーが過去のレスを
指しているのであれば、「閉路の無い有向グラフ(directed acycled graph, DAG)」と
呼ばれるデータ構造になる
グラフはノード(node, 接点)の集合とエッジ(edge, 辺)の集合で表現され、
今回のケースでは。レスが節を表し辺がアンカーを表す
グラフやDAGは良く知られたデータ構造だから、Wikipedia等で調べれば詳しい解説が見つかる
またDAGの各ノードを方向が揃うように列挙するアルゴリズムは「トポロジカルソート」と呼ばれるので、
これも検索する際のキーワードになると思う
>Rubyのオブジェクトは可変長の要素を収納できるのでしょうか。
複数の要素を表す(数学上の)集合はプログラミングの用語だとコレクションと呼ばれ、
Rubyでは組込みライブラリの配列(Arrayクラス)やハッシュ(Hashクラス)がコレクションの一種になる
また、Rubyは(C言語等とは違って)メモリを動的に管理するから、
基本的にどのコレクションも可変個要素(=インスタンス)を収納できる
>>225を訂正
X: 今回のケースでは。レスが節を表し辺がアンカーを表す
O: 今回のケースでは、レスがノードを表しエッジがアンカーを表す
「たのしいruby」やってるんだけどこれ一冊でアプリやらなんやら作れるようになるんだろうか
要領が悪いだけかもしれんが、説明ばかりで身に付いてるのかどうかよくわからない…
>>227 なんかやってみれば、足りない物が見えてくるよ。
>>227 irb 使ってる?手を動かさないと頭に入らないよ
>>225 なるほどいろいろデータ構造にも名前があるのですね
DAGの各ノードの列挙は、今回の場合は会話を会話ごとに順番に並べるのが目的なので
replyの元(root)のノードから、再帰的にメソッドを定義すれば簡単に実装できそうですね
本来のDAGでは、すべてのノードかつながっていて、かつ閉路を持たないという条件から、
「ノードの深さ」を一義的に定義できるという事実が、ソートをする際の鍵になっているように思われますね
>>229 irbのところはirb使って同じようにやってみる方がいいんだね
ってかC言語から入ったせいでいまいちirbの対話な感じがつかめないわ
>>230 ツリーの各ノードを列挙する深さ優先探索/幅優先探索の手法と考え方は、
(DAGを含む)グラフの探索にも応用できるし、違いは重複ノードの検出と対処方法だけ
いくつかの効率的な手法が開発されているけど、いきなり理解は難しいと思うから、
まずは自分で格闘してみて、一通り動くモノができてから解説を読み直すといいと思われ
>>231 たとえばリファレンスを読む場合なんかでも irb を起動させといて
http://docs.ruby-lang.org/ja/2.0.0/method/String/i/=25.html % irb
irb(main):001:0> "i = %d" % 10
=> "i = 10"
irb(main):002:0> "%d,%o" % [10, 10]
=> "10,12"
irb(main):003:0> "i = %d" % "apple"
ArgumentError: invalid value for Integer(): "apple"
こんな感じに挙動を確かめながら読んだりする
あとは irb のここがよくわかんないって具体的に挙げれば誰か答えてくれるかも
rubyはバージョンアップの度に大幅に互換性が無くなるというような内容を読んだのですが、これだけwebに使われているのはそこまで大した障害が起きないからですか?
基本はサポートしているバージョンを意識して使う
例えばRuby1.8でしか動かないソフトなら1.8を入れて使う(か諦める)
>>234 それは1.8->1.9だけだよ
他のバージョンアップでは大体保たれてる
237 :
デフォルトの名無しさん:2014/03/11(火) 22:54:08.18
Ruby普及後、痛みを伴う変更を1.8→1.9で済ませたから、
以降はあまり困ることなく2.0, 2.1と上げていける感じ。
1.8未満はかなりひどかった思い出。
Rubyはようやく成熟した大人の言語となったのだよ
何がかなりひどかったんですか?
>>239 1.8.7用のスクリプトを1.8.5で動かそうとしてみればわかる
>>240 1.8.7->1.8.5が動かないのは別にいいじゃん
1.8.5->1.8.7が動かないのは問題だけど
bundle installのオプションの--deploymentにはどういう意味があるのでしょうか?
243 :
デフォルトの名無しさん:2014/03/11(火) 23:48:40.93 ID:tN6zSUSI
* gemのインストール先が vendor/bundle になる
* システムに入っているgemを使わなくなる
* 実行に Gemfile.lock 必須
>>242 gem updateなんかしちゃったりしても大丈夫になる
245 :
デフォルトの名無しさん:2014/03/12(水) 02:36:01.49 ID:VodWyXE4
ジェム・・・さんな。
新人アルバイトのおにゃのが「げむ!るびーげむ!」って言ってたけど
かわいいから「そうだね、げむだね」って言っといた
ttp://www1.axfc.net/u/3190273.zip この写真袋というのを起動させたいのですが、Readmeの使い方3で起動したらすぐ落ちてしまいます。
なぜでしょうか?
インストールしたのはRuby2.0.0-p451
PCはwindows 7 Home
プロセッサ→Intel(R)Core(TM)i3 CPU M 380 @2.53GHz 2.53GHz 実装メモリ 4.00GB システム種類64ビット
ノート型PCです。
仕事でjava 家で自分のプログラムつくるときはrubyって人はいますか?
javaの後、何か他の言語触りたいんですが、やはりrubyでしょうか?
>>248 Javaのメリットを理解できてないと、仕事が嫌になるかもだけどな。
勉強のためならlispとか全然違う言語もオヌヌメ。
C言語のちょっとしたソースをrubyに変換するのは、かなり厳しいですか?
また、その逆はどうですか?
>>248さんとは逆に、必要に駆られて今までRubyを学んでいたのですが、
他の言語も触ってみたくなりました。
他に並行して学ぶとしたらおすすめの言語はありますか?
(Perl, Python, PHP以外で)
関数型はどうかな
ScalaはJavaくささが存分に残ってるからHaskellの方がいいかな
>>253 もしも経験した言語がRubyだけなら、Rubyのようなスクリプト言語ではなく、
コンパイラを前提とする言語、たとえば C/Java/C# のどれかを学ぶ価値はあると思う
特にC言語の知識はRubyで拡張ライブラリを書く時には必須になるし、
C++やObjective-Cを習得する時の前提にもなるから、個人的にはCを薦めたい
また関数型言語に手を出すのも悪くはないと思う
ただし、純粋関数型に分類されるHaskellは、プログラミングに対する思考/認識を
最初から再構築するつもりで取り組まないと習得するのが難しい
言い換えると、周囲に良い指導者がいれば別だけど、
初心者が興味本位で独習を試みても失敗する可能性が高い
だから、個人的にはHaskellよりも、MLと呼ばれる関数型言語族を薦めたい
具体的には Standard ML または OCaml と呼ばれる言語になる
他にも F# というML族言語もあるけど、これはC#プログラマ向け
またScalaという関数型言語はJavaプログラマ向けの関数型言語になる
最後に、まとめてみる:
・UNIX の道に進みたい --> C言語 の後、 Standard ML または OCaml を学ぶ
・Windows の道に進みたい --> C# の後、F# を学ぶ
・Java の道に進みたい --> Java の後、Scala を学ぶ
一番学ぶべき言語は・・・英語か。
258 :
デフォルトの名無しさん:2014/03/13(木) 14:21:58.16 ID:wZ/Mekf7
>>227 たのしいRuby 第4版
やっと3回読んだ
漏れは、10ほどの言語を知っているが、
関数型言語は苦手なせいか、なかなか苦戦した
今はRで苦戦している
Rubyは環境がないのな?
Javaの環境を使って、JRubyって手もあるか
でもRailsまでは、やるのが面倒
でもなぜSwingなんだ?SWTじゃないの?
Rubyには万能感、解放感、充実感があるね
ちょこちょこ、小回りがきくからかな?
配列2つを足すと、重複した要素を除いて、
1つの集合にするなど、便利な機能もある
漏れはWin8ノートだから、環境を探すのが一苦労する
Win7を買うべきだった
まずEclipseかな?もう少し、環境について調査してみる
>>257 読めないなら、配管工でもした方が良いレベル
入力した数が素数か判定するプログラムを作った。
もっと簡潔に書けるよ、とか
こうすれば速くなる、とか教えてほしい。
input = gets.to_i
count = 2
while (input % count) != 0 && input > 1
count += 1
end
puts"素数です" if count == input
puts"素数ではありません" if count != input
やり方としては、
入力した数を2から順に割っていって、
割り切れたときの数が入力と一致していたら素数、
一致してなかったら素数ではない、
と考えた。
>>261 素数判定に関しては「○○を実装してみた」という言い方をして欲しい
エラトステネスの篩とか試し割りとか、そういうの
もしそういう言い方ができないのであれば、
対象についての研究が足りない、またはそれを題材として練習するのはヤバい
早過ぎる最適化、ということを覚えること
未だにSWTが使われてるのはEclipiseぐらい
仮想マシンが強力になったせいで、Awt/Swingでも変わらないだけの速度が出る
そんな懐かしいものより、Android SDKでも触っとけよ
TomcatやStruts/SpringMVCの存在価値は、もはやPHPにも劣る
SICPをRubyに変換なんて間抜けなことやらなくていいから、
蟻本に書かれているアルゴリズムの英語資料を探してきてノートに書き下だせ
データベースの民間資格取るほうがはるかにマシ
267 :
261:2014/03/13(木) 19:34:19.19 ID:wuhQ2BN5
Nokogiri::HTML.parseしたら
#<Nokogiri::XML::Text:0x3fde62528138 "¥r¥n ">
みたいな改行と空白みたいなのまでひっぱって来ちゃうんだけど
これ出てこない様にはできんかの?
>>268 Nokogiri::HTML.parse.to_s.split
noblanks がどーたらこーたら
>>261 確か素数は、平方根までで割り切れるか、
を確かめるだけで良かったんじゃ?
25=5*5 だから、素数ではない
23は2,3,5で割り切れないから、素数?
> a=('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a
=> ["a", "b", "c", "d", "e", ... "6", "7", "8", "9"]
> 16.times{print a.sample}
aHdQvYW75ssv4tyK
Rubyの乱数ってパスワード生成に使って安全ですか?
>>271 5x5は見なくていい
4まで割って見れば良い
つまり
x 23は2,3,5で割り切れないから、素数?
o 23は2,3で割り切れないから、素数!
入力される数値の大きさが分からないけど
あらかじめ素数の表を持っておくのはずるいやり方かな?w
表の範囲内なら即答。表以上なら表から計算。
表の範囲外だと入力値だけで何メガバイトもありそう
100万までの素数の改行区切りが500KBだったはず
>>273 Random.new(1) など、同じ種を与えれば、
同じ乱数列が出てくる
引数を与えなければ、別の乱数によって、
作られた種によって、乱数列が作られる
でも、たまたま同じ種になると、
同じ乱数列が作られるかも?
>>273 厳密にはダメ。Rubyのrandはいわゆる暗号学的に安全な擬似乱数を生成しない
SecureRandomがある。ただし環境によっては使えない可能性がある
「暗号学的に安全」というのは、パスワード生成に使って良い悪い、という意味ではない。
たとえばセッションID等に使って、過去n回のIDから次のIDが予測できる、といったような性質が
ある場合に、「暗号学的に安全でない」と言う。
配列に:aか:bか:cを含む
ってのを簡潔に書けないかな?
!(array - (array - [:a, :b, :c])).empty?
とかやってるけど、ぱっと見、意味不明だぬ
[:a, :b, :c].include?(:a) ってのがあるお
>>283 array.any?{ |e| [:a, :b, :c].include?(e) }
こっちの方がましかなぁ
!(array & [:a, :b, :c]).empty?
あんまし変わらないか
t = [:a,:b,:c]
(t-array).size != t.size
いまいち
(array - [:a,:b,:c] == array)
>>284よりも明らかに
>>285のほうがいいよ
速い上に(高校で習う集合論を覚えていれば)直感的でわかりやすい
いや、
>>285は分かりやすいだろw
>>284はタイプ量を減らそうとして直感的じゃなくなってるケース。
>>285はメソッド Array#& で二つの集合間の交わりを計算し、
その次に空(から)でないことを判定している
これは集合の要素数が小さければ最適解かもしれないけど、
要素数が極めて大きければ交わり計算に要する時間が無駄になる
今回の「お題」は完全な積集合を求めることではなく、
ただ単に交わりが存在するか否かを判定するだけなのだから、
>>284のほうが「お題」を素直に表現していると考える
>>290のいう「
>>285は集合論として直感的だ」という意見は
決して間違いではないが、数学的な定義を直接的にコード化すると
(数学として直感的であっても)効率的ではなくなることがある
という例だと思われ
配列の集合演算って、内部では一時的なハッシュ作ってるのかな
と、Rubyのソース見たら作ってた
require 'benchmark'
array=10_000_000.times.to_a.shuffle + [:a,:b,:c]
Benchmark.bm do |bm|
a = array.dup;bm.report{a.any?{|e|[:a,:b,:c].include?(e)}}
a = array.dup;bm.report{!(array & [:a, :b, :c]).empty?}
a = array.dup;bm.report{(a - [:a,:b,:c] == a)}
end
の実行結果 ruby 2.1.1p76 (2014-02-24 revision 45161) [i386-mingw32]
user system total real
14.969000 0.016000 14.985000 ( 15.000000)
0.344000 0.000000 0.344000 ( 0.343750)
0.578000 0.078000 0.656000 ( 0.703125)
試しに ruby 2.1.0p0 (2013-12-25 revision 44422) [i386-mingw32]
user system total real
23.781000 0.000000 23.781000 ( 23.781250)
0.344000 0.000000 0.344000 ( 0.343750)
0.609000 0.047000 0.656000 ( 0.687500)
集合演算はほぼCの関数だから変わってないけど
Array#any? は何気に速くなってるぅ
要素数が数千程度までなら実行時間に大して差はないので好きに書けばいいと思う
横からだけど俺も共通部分取った方が分かりやすいと思ったな
>>292 n.&(m).empty?.! # ?!?!!? wwwwww
n.&(m).any? # nil を含まない保証がある場合
うん伝わり辛いな!
>>295 ハッシュ作ってるから爆発はしなさそうだよね
計算量はどう書くんだろ?教えて下さいエロい人
n.&(m).empty?.! # O(n+m) ← あってる?
n.any? {|v| m.include? v} # O(n*m) ← あってる?
集合演算の方が速いとは、ちょっとびっくり
>>296 うん、あってるね
大真面目にRuby扱ってる人まだいたんだ
Rubyは昔はホルホルしてた人でしょ?
Rubyってとっくにオワコン化した言語なのにまだ学ぼうしている人がいるの?
いまだ初心者スレがあるってことが信じられない
とっくに人生終了してるバカが何か言ってるねw
Rubyは中途半端な出来上がりの言語だったかもね
pythonにみんな移り始めてるし、流れにのらないと待遇は悪くなるばかりだよぉ
RubyはDSL用になりつつあーるのである
>>305 自分の境遇を必死に反映してるのですね、わかりますw
pythonは良いよ、美しいよ
でもRubyかじったドカタさんレベルだと敷居が高いかもしれないね
へんなのはPythonに来なくていいから
Rubyの方で隔離してくれてるとありがたい
>>309 Pythonやってると、+0w7Q/Uu みたいになるっていう例だね
>>308 てめぇの脳みそがドカタ以下なのを、まずどうにかしたほうがいいよw
Ruby自体がダメっていうよりはRubyにくいついた人たちがアレって印象なんだけどね
いつまでRubyに固着しつづける理由はないと思うよ
他の言語にも手を出しつつRuby続けるならまだいいかもだけど
is_aって、英語にするとなんでしょう?
たとえば、ARGVはargument valueみたいな
そのまま is a でしょ
A.is_a B
A is a B
AはBである
Ruby厨の知能をさらけ出してしまった
RubyGemsとかで公開されているライブラリのソースコードを見るとメソッドの引数チェックとかあんましやってない様にみえるけどこんなもんなの?どしてなの?
標準ライブラリとかはTypeErrorとかArgumentErrorとかちゃんとスローするよね。
標準ライブラリとそれ以外のライブラリでは引数チェックに関するポリシーとかスタイルが違ったりするの?
Ruby厨無意味な改行おつかれさまでーす
早くpythonに移れば?
Ruby信者も早速老害化してるね
>>317 なるほど
C言語のさわりしかやってないんでクラスの理解に手間取ってる次第です
ありがとうございます
そんなレベルでRubyいじってるんだからな
そりゃウンコプログラマにしかなれないんだなぁ〜
>>319 自分は引数検査に関する公式なポリシーやスタイルというものを知らないから、
以下に書く内容は推測にすぎない事をあらかじめ断っておく
基本的にRubyは引数検査は緩やかなポリシーであり、
それ以上処理を続行できない or 明らかに続行すべきではない場合に限って
例外を発行するよう設計されていると(個人的には)見ている
ただし、標準ライブラリの中でも(C言語で書かれた)組込みライブラリは、
エラーがRubyインタプリタ自身のクラッシュに直結する(という理由がある)ので
厳密な引数検査が行われているように見えるのだと思う
実際、標準ライブラリの中でも(Rubyで書かれた)添付ライブラリは、
きちんと引数検査していないものが多い
もしも、
>>319がより正確な答えを求めるのなら、
公式メーリングリストで問い合わせたほうがいいと思う
>>321 +0w7Q/Uu は多くの板で煽りカキコしている典型的なを荒らしだから、無視すべきだよ
http://hissi.org/read.php/tech/20140316/KzB3N1EvVXU.html
結局自分で調べるべき問題をここで質問しちゃっただけじゃん
これがRuby信者の実力
>>319,321
気になったら報告すれば、さっくり対応してくれるよ。
礼儀としてRubyGemsのバージョンは古いから
mainなリヴィジョンで要確認
無意味な改行つけて真面目な疑問とかww
てめぇの存在が無意味
v = 3
v==3 # ==> true
v=="3" # ==> true
的に使えるvariant型みたいのないですか
v = 3 の意味はオーバーライドできないから、
v が Fixnum になることが不可避。
まーた仕事の質問しちゃった
Ruby厨の実力はこの程度
このスレには馬鹿しか残ってないよ
お前、生きてて辛いだろw
そりゃRuby厨は仕事がなくて辛いよね
Pythonを理解できない脳だからしかたないか
今日のID判明
GJ
Ruby厨必死のIGID自慢
Ruby厨の日常はノーグッド
朝起きてからずっと色んなスレに書き込んでるけど仕事しろ
Rubyの仕事はもうないから安心して別の業種探したほうがいいよ
require 'benchmark'
n = 50000
Benchmark.bm do |x|
x.report { for i in 1..n; a = "1"; end }
x.report { n.times do ; a = "1"; end }
x.report { 1.upto(n) do ; a = "1"; end }
end
こんな感じで実行時間をベンチマークするのは出来るのですが、
メモリ使用量を調べるにはどうすればいいでしょうか?
>>340 そういうことは基本的にできない。
unix系なら
/usr/bin/time -f %M ruby -e 'for i in 1..n; a = "1"; end'
とかやったら?
深夜3時に質問レスするRuby厨
仕事がないんですねわかります
>>341 できないのはお前の頭のほうだろ
適当なことを吐くんじゃねえよ
ここはお前の便所じゃねえんだよ
bundle new foo
ってしたら
module Foo; end
ってモジュールが自動生成されるけど、
モジュールじゃなくてクラスじゃダメなの?
名前空間が衝突しないようにgem名に基づいたmoduleを作らんと行かんってこと?
>>334 だめなのはクラスじゃなくてお前の人生
Rubyの勉強の仕方が根本から間違ってるようだね
このスレに質問するまでは1年は早い
>>344 別にいかんわけじゃないが、そうした方が無難
>>346 いかんのはお前のコーディングスタイル
お前職場でも空気読めない迷惑な存在だろ、自覚してんのか知らんけど
そういう人格がこういうとろこで表れるんだよ
だれもお前の意見なんて求めてないから消えろゴミクズ糞蛆虫
>>344 "一番外側"はモジュールなのが一般的
もちろんクラスでもいいのだけど、どっちか決め打ちしろと言われたらモジュールにする
そんな程度
使わんかったら書き換えてもいいよ
>>348 はそんな程度の頭
終始曖昧な答えで終わってる
class Foo
def foo; return :foo; end
end
Foo.new.get_uwagaki_method(:@foo)
# => nil
class Foo
def foo; return :oreore_foo; end
end
Foo.new.get_uwagaki_method(:@foo)
# => :redefine
class Bar < Foo
def foo; return :bar_foo; end
end
Foo.new.get_uwagaki_method(:@foo)
# => :overwride
みたいに、
的な事をしたいんだけど無理かな?
はい糞コード入りましたー
動かないコードを書いてばっかじゃねーの
>>350 日本語でおk
最終的にやりたいことを説明するといいよ
>>350 def fooするまえに defined? foo 確認すりゃええだけちゃうのん
連休はム板に張り付き荒らしをして過ごします
連休もRubyスレで質問しますw
君、面白くないよ
お前面白くないよRUbyゴミ厨
359 :
デフォルトの名無しさん:2014/03/22(土) 01:45:28.34 ID:jZh4qhvH
1つの整数 x を読み込んで、x の3乗を計算し結果を出力するプログラムを作成して下さい。
入力として1つの整数 x が与えられます。
360 :
デフォルトの名無しさん:2014/03/22(土) 01:49:32.78 ID:aBNmXC5d
>>359 x = gets.to_i
p x*x*x
そういうのはお題スレでやれ
こういう場違いな低学歴が平気でスレに出入りするからみんな去ってくんだよ
362 :
デフォルトの名無しさん:2014/03/22(土) 01:54:29.37 ID:aBNmXC5d
>>361 うるせーこの野郎、こちらは初心者スレだぜぇ、一昨日来やがれ
馬鹿みたいに簡単な問いを正解したぐらいで勝ち誇った態度取るのだけは止めろな
そんなんじゃ仕事にならんぞ
365 :
デフォルトの名無しさん:2014/03/22(土) 02:09:02.62 ID:jZh4qhvH
それではこれはできますか
たて a cm よこ b cm の長方形の面積と周の長さを求めるプログラムを作成して下さい。
a と b が1つの空白で区切られて与えられます。
面積と周の長さを1つの空白で区切って1行に出力して下さい。
Sample Input
3 5
Sample Output
15 16
スレを私物化する馬鹿が調子に乗り出した
このスレは本格的に終了
367 :
デフォルトの名無しさん:2014/03/22(土) 02:16:03.70 ID:jZh4qhvH
なんだ口だけで手は動かせないやつか
耳は聞こえるのかな
嗚呼〜RUBY厨の叫びを聴け
連休初日はRubyスレに張り付いて荒らしをして過ごしました
連休二日目もRubyスレに張り付いて荒らしをして過ごします
>>365 a,b = gets.split(/\s+/).map(&:to_i)
puts [a*b,2*a+2*b].join(' ')
宿題スレでは定番遣り取りだったんだけど、「なにを習ってなにを習ってないのか」がわからないと回答できないよ
たとえば、
>>370を「授業で教える」ことはおそらくないから、これを提出するとチェック対象になるはず
>>369 Ruby関係ないよ
ム板にずっと前からいる
>>371 言うなよ、提出させてバレるのがいいんじゃないか
rubyって劣化pythonだよね
railsがあるだけでpythonより価値あるけど
「たった2日でできるRuby」の半分が終わったのですが、これの後に勉強した方がいいのは「たのしいRuby」と「パーフェクトRuby」のどちらですか?
「たったの…」が本当に2日で終わるとは思ってなかったので…。
勉強の目的はweb制作です。
Web 制作に使うフレームワークのチュートリアルを読んでみて
自分に不足してる知識が見えてきたら次の本を買うぐらいでいいと思う
376 :
デフォルトの名無しさん:2014/03/22(土) 12:25:32.39 ID:/Wci2X+J
パーフェクトRubyはたのしいRubyで扱っていることもおよそカバーして、
加えて実践的なもの(各種ツール、gemの作り方)、Rubyの黒い部分(メタプログラミング)
も扱っているようだな。
徐々に進みたいならたのしいRuby、網羅的な1冊ならパーフェクトRuby、という感じ。
>>375 「たったの…」ではそこまでの力がつかない気がします。本当に基礎の基礎だけっぽいので…。
>>376 では「パーフェクト…」をやりながら理解しにくいところだけ「楽しい…」をリファレンス代わりにというのが良さそうですね。
ありがとうございました。
出版社のステマうざい死ね
Ruby厨はほんと馬鹿だな
パーフェクトrubyあまりいい本だとは思わねーな
シリーズ物だから売れてるけど。
勉強のために最初から読むって本でもない。
だって複数人が共同で書いてる本って一貫性が無いんだもの
テストを扱ってないのも致命的だと思った
さらに言うと著者紹介を見れば分かるけど著者の技術レベルがかなり疑わしい
本屋で 2 日でわかる Ruby をパラパラ眺めてきた
あれを手を動かしながら読んで同種のコードをサラサラ書けるようになれば初歩としては十分だと思った
でも 200 ページ足らずで \2,310 はちょっと高いかな
その隣りに置いてあった『たのしいプログラミング Python ではじめよう!』をついでにめくってみたら
フルカラーで素敵な挿絵(すごい Haskell の人が描いてる)が一杯で危うく買いそうになった
というか書籍を買う必要あるのかなあ。
スクリプトといえば PerlかJavaScriptだったオレは、
2000年ごろ原先生のウサギ本を書店で見かけてすぐに購入。
あとはWebにあったトーマスとハントのネタ元が役に立った。
今はドキュメントが豊富で何を読んでいいのか分からないとか。w
他の言語の素養があるなら、ネットの情報だけでなんとかなる時代だからなー
Rubyにしがみつくやつ、何の病気?
国粋主義者?
>>372 「バレた」としても、それが学生/生徒側にわざわざ知らされるようなことはまずないとみていい
(他の(普段の)回答と比べれば差が歴然で剽窃が明白だから)
>>365が「あの回答をコピペしたせいで成績下がった」と認識することも、スレに報告しに来ることも絶対にない
つまり、傍目には単に宿題に親切に回答しただけだ
そんなん、宿題やっての書き込みが増えるだけでなんもいいことがないし面白くもない
>>371がきちんとできる人は結果的に宿題を自力でできる人だから、虫避けになる
391 :
デフォルトの名無しさん:2014/03/23(日) 00:33:08.84 ID:pTyhCbBF
array = [ "一番目", 8, "saas", "efsdsdfsdf"]
array.each do |i|
if Numeric
puts '数字だな'
elsif i == "一番目"
puts "日本語だな知ってる"
else
puts "それいがいのなにか、うんわかってる"
end
end
これなんでうまくいかないのか教えて
caseだとうまくいくのに
Rubyの良さは書き易さだな
begin-endなので書きなぐれるし
OOPなメソッドチェーンなので補完がバリバリ効く
万能な言語は存在しないので
何か一つでも用途にあえばそれはそれで本人満足なんだから
他人があれこれ言う話じゃない
じゃあ単位落とす馬鹿を相手にして面白がってるこのスレのバ回答者たちはそうとうクズいよ
>>391 >これなんでうまくいかないのか教えて
それは、なんとなく書いてるから
>caseだとうまくいくのに
それも、なんとなく書いてるから
プログラム言語は融通の利かないロジックの塊
使い方とルールはきちんと覚えよう
>>391 case は === で比較してるからうまくいくだけ
397 :
デフォルトの名無しさん:2014/03/23(日) 01:23:09.83 ID:pTyhCbBF
>>395さんありがとう
===でもうまくいかない
質問者はこういう馬鹿
>>397 ちゃんと if Numeric === i にした?
質問者が馬鹿質問をする
回答者が馬鹿な回答をする
質問者の問題が解決しない
質問者が再質問
こんなかんじの繰り返し
たのしいRuby 2013 第4版
そりゃ著者が、日本Rubyの会の設立者/代表だからね
2002年の初版から11年で、第4版まで出したんだし、
情熱はあるだろう
漏れはソフ開もちで、10ぐらい言語を知っているが、
関数型が苦手なせいか、3回読んでようやくマスターした
結局はライブラリが、調べやすいかどうかで、
日本人には、Rubyが有利
Ruby, Jenkinsをもっと極めて、日本独自の進化をとげて、
CoolJapanとして世界へ広めてほしい
今は、「はじめてのJavaScript」という本で、苦戦している
動的言語は型チェックがないから、
CoffeeScriptの方が良さそう
なにこの自己アピール
気持ち悪すぎる
自分はこんなにたくさん本を読んで知識がありますよー
ほらでた日本がつくったから日本人にあうとかぬかしてる奴
戦前の日本みたいに軍国主義ごっこしてろや、馬鹿エセ国粋主義者が
405 :
デフォルトの名無しさん:2014/03/23(日) 02:51:44.33 ID:pTyhCbBF
>>397さんのとおりにしたら出来ました。
if i === Numericではだめなんですね
難しい
この程度でスレをグダグダにする馬鹿ってなんなんだ
こんなのがRubyやってるんだぞ?
>>401よ
407 :
デフォルトの名無しさん:2014/03/23(日) 03:05:06.46 ID:pTyhCbBF
あ、わかった
caseと同じ用に書いていると思い込んでいたけど
違いました。気づかせて頂きありがとう御座います。
お前はスレをグダグダにした
少なくとも謝罪しろ、そして二度とこのスレに来るな
409 :
デフォルトの名無しさん:2014/03/23(日) 03:09:33.99 ID:pTyhCbBF
毎日きます
なぜなら初心者スレだから
お前のことは無視するwww
連休初日はRubyスレに張り付いて荒らしをして過ごしました
連休二日目もRubyスレに張り付いて荒らしをして過ごしました
3連休は全てRubyスレに張り付いて荒らしをすることに費やしました
>>409 あまりキチガイにレスしないほうがいいよ。
ゆとり死ね
>>389 wearable deviceが出来た際に、最初に移植されるのは多分、cコンパイラ。
市場でイニシアチブを取るためには競合に先行する必要があるとすると、
全ての言語のなかで優れた選択肢がmrubyやluaの類。
今手元のマシンで動くcのコードは移植先のマシンでも動くと限らない。
誰かがc++をコンパイラを移植して、それからjvmモドキが移植されるのを待つと競合に遅れをとる。
Google v8は高品質かつ規格のために移植が遅れる。つまり、競合に遅れをとる。
ここで、mrubyという選択肢には厳密な規格や企業が持つライセンス問題から離れて他社に先行でき、
低レイヤの問題を抽象化できるというアドバンテージが生まれる。
市場に競合さえ居なければ、テトリスやインベーダーでもビルが建つぐらい稼げる。これがmrubyの魔力。
mrubyよりもluaの何処が優れているか?
・国内企業からのバックアップ
・開発者同士のコネクション
・勝手に弄れる
誰にでも出来るweb開発だけでは替えなんて幾らでも居る。コネがあると当然ながら就職/転職活動が上手くいく。
luaを使えば、地球裏側の産業に貢献するかもしれないが国内産業は潤わない。
Rubyなら、国内産業から出版業、教育界まで、経済的な活性化が見込めるアベノミクス言語。地方自治体から感謝される。
lua自体は大学のプロジェクト。オタクが何もかも自由に遊べるものではないはず。
そして、言葉の壁ができる。日本語とポルトガル語。どちらも英語が第二言語習得者。
luaやjavascript,pythonよりも迅速に移植される可能性を持ち、一般的なオブジェクト指向言語として使えるのはRubyだけ。
名前が嫌い
ルビー使いが喜来
好きになってもらいたいなら
俺のチンチンしゃぷれ
マンチキンな僕はPHPしか使わないけどね!
>>416 いろんな人が、HaskellやLispの宣伝をするけれど、
実際に東大女とやれる可能性が高いのはRubyじゃないかな
>>418 ぎく!
どうして俺が
Lisp使いになると東大女とやれるよって
書いてるとわかったか?
きみ、すごいな。
じゃ書くか
rubyは早稲田女だとおもうよ
東大女とやるにはLispだね
>>419 とても素敵な語感だから、ネットで流行ればいいなと思って使わせて貰っただけだよ
むしろ、すごいのは「東大女とやれる」なんて素敵なフレーズを思い付く貴方のほう
嗚呼ァ、貴方を宿した胎は何と恵まれているんだろうか
...。互いに口先だけでもギーク市場の頂点を目指して、市場と初心者たちを撹乱させようね!
ゆとり死ね
たのしいRubyは糞
オブジェクト指向をたいやきの型とたいやきで説明してお茶を濁そうとするのは全て駄本の証し
Dateクラスを使おうとして
require 'data'ってやってもエラーがでます
どうしたら利用できるでしょうか?
>>423 まず頭をかち割ります
中に寄生虫がいるので素手でもいいんで取り出します
あとは消毒液をかけて頭を元通りにすればOK
これをやれば1時間後くらいに頭がさえて問題が解決
自分で書いたコードとネットのサンプルが違いすぎて驚く。
ネットの方は、def def def ばっかりw
あれが本来のRubyなんでしょうね。
言うまでもなく、そうしたサンプルを書く奴は他言語で書いたところで、
{{{
か
(((
或いは
def foo
def bar
def baz
としか成らない
正直な所、僕にはココに湧いてる反Rubyistたちが理解できないんだ
自分で使う分にはPHP,jsが最良の選択肢だとしても、他人にはRubyを勧めた方が合理的だからね
>>426 きみ、精神病だね?
延々と作業してたのか?
倦むことを知らない精神病のコツコツさ
>>430 調べた君は、お馬鹿というより
精神病だな
そうなんだろ?
精神病の人間に精神病かどうか聞く愚かさ。
をRubyのコードで表現すると↓
うんち
いいからC言語で書けよ
Rubyいらね
PerlやPythonならまだしもCは対立軸にないでしょ
自作クラスのインスタンスを標準クラスを使った表現に変換するメソッドの名前に規約みたいなのは無いの?
たとえば、なんかのインスタンスをjsonにシリアライズしようとしたら、
to_hやto_a以外にHashとArrayが混在したオブジェクトにならざるを得ないやつとかあるよね。
そんときにインスタンスの参照先をto_oしていけば、ぜんぶ良い感じに変換されて、
to_jsonしやすくなるっっていうか、そんなの。
キモRubyは消えろ
マジで消えろ
診断名 : 躁病(そう病)
主な症状 :多弁で話が飛ぶ
活動的だがまとまりがなく、落ち着きがない
話は自己陶酔的で、大風呂敷で、攻撃的
あまり眠らない
Python>Ruby>Perl
>>424 すまん、なにがおかしいの?
初心者だからわからんわ
初心者が思うに、Dataなのにdataとか、末尾に;とか
そういう話かも
ほらみろRuby厨は初心車に駄目だしされる
連休明けもRubyスレに張り付いて荒らしをして過ごしています
>>442 ごめんなさい書き間違えました
もとの方はdateでしたが、それでもダメでした
>>446 どんなふうにダメ?
やったこととエラーメッセージを貼って
ダメでした。
Rubyはゴミ、さっさと諦めろ、Pythonにでも移れ馬鹿
ほんとゴミ脳でRubyを語ることがよくできるな
オッパイより赤いルビーのほうがええんや
クリトリスを舌でチロチロやでぇ
utf-8なスクリプトでdbiモジュールを使ってsel serverに接続するとascii-8bitとかわけわからんコードが帰ってくるどころか
sql文自体をwindows-31jで投げないとクエリ自体がエラーになるという…思わず初心者憤死
たった一行付けるだけでutf-8でやり取りできるように出来るという情報を見つけるまでに丸三日
…日本発なのに英語できないとダメなのねorz
エンコーディング周りは言語関係なく必須知識だからなぁ
海外の人が作ったライブラリは海外の人の言語で説明されてるから仕方ないね
Rubyは日本人がコア開発者だが、外国人の作った英語説明つきライブラリを日本語に訳す機能はないし
外国人の作った英語説明サイトを日本語に訳す機能もない
455 :
デフォルトの名無しさん:2014/03/25(火) 12:07:08.90 ID:slP3N4Xw
mod_ruby の代わりは何を使ってます?
ゴミRuby使ってるアホはネトウヨ
これ真理な
ネトウヨなら日本語でプログラムを書くのでは(名推理)
458 :
デフォルトの名無しさん:2014/03/26(水) 00:25:37.73 ID:GkcGuB2r
Javaは、名前に日本語つかえるよ
mechanize の質問をしてもよいですか?
http://c.cocacola.co.jp/ に自動ログインするスクリプトを書いたのですが、サイトのリニューアルでログインできなくなりました。
以前は単純なログインフォームだったのですが、今は、agent.page.formsで該当のログインフォームが見つかりません。
ブラウザで見るとログインフォームはあるのですが、どのように調べればよいでしょうか?
>>454 google翻訳を使うべし
英単語と日本語が、1対1で表示されるし、
訳が出たあとで、単語の対応を変えられる
それで片端から、公表すればよい
Eclipse MergeDoc もそう
単語のデータベースがあって、みんなで用語を統一している
>>459 HTMLを自力で理解して読めないとMechanizeは使えない
>ブラウザで見るとログインフォームはあるのですが
なんて言ってる人には無理
>>459 HTMLのソースコードを開いて、その中を、form で検索してみ
<form> </form>で囲まれた中が、フォーム関連
その中に、様々なフォームの部品
(コントロール、ウィジェット)がある
<input>は、入力欄
<textarea>は、複数行テキスト入力欄
<select>は、選択リスト
<button>は、ボタン
HTMLを解析するには、HTMLのタグの意味を知らないと
463 :
デフォルトの名無しさん:2014/03/26(水) 05:17:25.21 ID:Pcq/Kh4O
じゃあ、else if を見ていこう。
464 :
459:2014/03/26(水) 07:55:05.03 ID:vUs5dc2p
>>462 すみません。上手く説明できていませんでした。ブラウザでソースを確認すると<form></form>はあるのですが、Mechanizeでアクセスするとそのformがsearchできないのです。
で、今思ったのは、javascriptで生成されたフォームなのかな?ということで、Mechanize以外の方法を考えてみます。
そもそも見てるファイルが違ったりしてな
動的に生成してるからだよ
質問させて下さい。rubyでCGIを作っています。
HTMLのテキストエリアに記載された文字をregist.cgiで表示させるサンプルを作ってみました。
半角英数字は正しく表示される事を確認しました。しかし全角文字が全く表示されません。
色々試しましたがまったく変わりません。上手く表示する方法を教えてください。
OS:windows 7 64bit
ruby:ruby 1.9.3p194 (2012-04-20) [i386-mingw32]
ブラウザ:FireFox 22.0
webサーバ:
http://magazine.rubyist.net/?0011-CGIProgrammingForRubyBeginnersにあるrubima011-cgi.zipのserver.rbを使用 [index.html]
<!DOCTYPE html>
<html lang="ja">
<head><meta charset="Shift-JIS"><title>Sample System</title></head>
<body>
<form action="regist.cgi" method="get">
<textarea name="t" cols="20" rows="4">コードを記載して下さい</textarea><br>
<input type="submit" value="OK">
</form>
</body>
</html>
[rigist.cgi]
#!/usr/local/bin/ruby
print "Content-Type: text/html\n\n"
print "<html><head></head><body>"
require "cgi"
c = CGI.new
text = c["t"]
print text
print "<br>"
print "</body></html>"
ブラウザからフォームデータがShift_JISで送られてきてエンコードエラーで落ちている、に一票
>>467 出力でcharset教えてないから、ブラウザがデフォルトのcharsetだと思って表示してんじゃないの。
471 :
デフォルトの名無しさん:2014/03/26(水) 23:05:05.45 ID:nh+csio5
さんざんあちこちで言われてるけど、 regist はやめろ。
registなる英単語は存在しない。辞書で調べてみろ
>>467 charset="Shift-JIS"
普通は、"UTF-8" じゃないの?
さんざんあちこちで言われてるけど、 CGIクラス はやめろ。
476 :
バカ:2014/03/27(木) 07:58:42.50 ID:P78HiJTL
regist 【動詞】 登録する
register 【名詞】 登録器 レジ
>>468-475 回答ありがとうございます。
エンコードに問題有りとの事だったので以下の様に修正した所、正しく表示されるようになりました。
・HTMLファイルのcharsetを変更
<meta charset="Shit-JIS"> → <meta charset="UTF-8">
・HTMLファイル保存時に「エンコードの種類」を変更
Shift-JIS → Unicode(UTF-8)
# $KCODE = "SJIS"とかにしても何も変わらなかったので・・・。
Ruby1.9でKCODEは意味ないよ
rubyでフォーム認証CGIを作るサンプルってありませんか?
色々調べたんですが、HTMLの機能として付いているベーシック認証はダサいので使いたくないですし
たいていはruby on railsばっかりなので困っています(レンタルサーバだとrailsは使えないんですよね・・)
もし何か良いサンプルがありましたら是非教えて下さい。
このご時世でCGIはさすがに情報が少ないだろうね
レンタルサーバでもherokuみたいなのもあるし、AWSやさくらを使う手もある
そういうのも選択肢に入れてみてはいかが?
古めの本とか買うといいかもね
>>480 HTTP認証がダサいかどうかは、ブラウザの問題では?
本当に知りたいのは、CGIじゃなくて認証システムのほうだな
CGIだと情報が少ないよ、ってことだね
486 :
デフォルトの名無しさん:2014/03/29(土) 05:21:40.84 ID:oh5tVCzV
ジャアアアアアアアアアアアアアア。。。。。。。。。。。。。。。。。。。wwwwwwwwwwwwwwww
cgi.rb
右翼団体って、さくら鯖に、なでしこでCGIを書くんだろ
>>488 やつらはダメリカの利益団体だから、Microsoft なサーバーに ASP の一択だろう、 LAMP すら拒絶するのでは?
ホスティング業者なぞどこでもいい
右翼なのに親米というのは辞書と辻褄が合わねえな
そういう時は、混同のないようウヨという言葉を使いなさい
今は石原シン○ロウみたいな反米右翼が絶滅
いても街宣朝鮮右翼しかいない
戦前の日本に戻ってくれや
>>490 おいおい、お前、右翼を勘違いしているぞ
右翼が愛国者なら原爆投下による非武装市民の無差別殺戮を非難するはずだが
そんな右翼をみたことあるのか?
軍歌を放唱し国を愛でる、といいながら顔はダメリカを向いていることに今まで気づいていないのか、恥ずかしいやつだ
>>491 チンタロウは文人あがりなんでちょっと特殊だ
よそでやれ
スレ違いもはなはだしい
彼らは韓国産のプログラミング言語がないので、
日本産のプログラミング言語がねたましいと言っているんだ
ν速+に帰れカスウヨ
すごくよくわかる流れで笑
ひろゆきがミスって2chもアメリカ人に乗っ取られたし
あんまり空気伝わってこないだけでかなりあっちは既に反日化してるだろ
4月6日に新2ch誕生するから反米右翼マは移動しろや
まぁ専門的板は、政治に対して中立だから良いものの
政治やニュースなんてほんと終了だからな
日本人以外の管理するサイトでネット世論の操作なんて、どんな事になっていくか
今後は謎のアメポチ大量発生が予想される
反米ウヨでも親米ウヨでも自由だが、ν即でやれ
アフィカス天国を放置したひろゆきを支持する2ちゃんねらーなんていねーよ
メタプログラミングRubyを読みました
最後の章でRailsのコードについての解説がありましたが、ここまで動的で、メタなプログラミングは「やり過ぎ」なのではないかという印象を受けました
こんなにわかりづらくメタにプログラミングをするくらいなら重複表現をしてでも愚直に書いていったほうが、保守性も可読性も高まるのではないかと感じます
このように考えてしまうのは、私がコードをまともに書いたことがない初心者だからなのでしょうか?それとも自分のように考える人も一定数いるのでしょうか
>>500 Railsのスクリプトは素のRubyとは比べ物にならないくらい普及してるから問題なし
要は共通の理解があるかどうかだ
お前がチーム内で勝手に「ぼくのかんがえたさいきょうのRuby」で書いたら
そりゃレビューでボコボコに叩かれてクビが飛ぶだろうね
ocraを使いこんにちは世界をcmdに表示するexeを作成したのですが
cmd上で一瞬こんにちは世界が表示されすぐにcmdが閉じてしまいます
cmdを閉じないような設定はできないでしょうか?
503 :
デフォルトの名無しさん:2014/04/06(日) 00:45:30.08 ID:jGn/ohiM
特定のhtmlのテンプレートに一部(idなどで特定可能)にデータを埋め込みたいんですが
その場合、どういうライブラリ使うのが王道なのでしょうか
hpricotは開発終了したとのことなのでnokogiri?
とはいえ、これはスクレイピングのライブラリっぽくてhtml生成とは違うっぽいのですが
できれば標準ライブラリにあれば助かります
>>502 まずcmd.exeを起動して、そこでocraで作ったexeを実行すればいいのでは
explorerから実行したいのなら、「こんにちは世界」を表示したあとに
1行入力するなど待ち処理を入れてみては
505 :
503:2014/04/06(日) 02:58:52.24 ID:jGn/ohiM
解決しました
受け取った引数を別のメソッドに全部そのまま渡すのってどうしたらいいの?
JavaScriptだとargumentsで渡せるんだけど。
>>508 def hoge *args
fuga * args
end
>>509 そうせずにやる方法なんだけど。
えと、JavaScriptのargumentsって知ってる?
わざわざ分かりにくい方法でやりたがる意味がわからない
JavaScriptでもapply使わなきゃいけないだろ
× 分かりにくい
○ カッコイイ
hoge *self.method(__callee__).reject{|a|a.first==:block}.map(&:last).map{|s|eval(s.to_s)}
んと
def foo(a:1, b:2)
bar(arguments)
end
みたいにしいてfooに与えられた引数をそのままbarに投げ込みたいんだけど
>>514 def hoge a, b, c
fuga(*self.method(__callee__).reject{|a|a.first==:block}.map(&:last).map{|s|eval(s.to_s)})
end
518 :
デフォルトの名無しさん:2014/04/07(月) 20:14:47.93 ID:0DYJf23T
rubyの基本的なものは理解したけど、この先どうすればいいかわからなくなった。railsとかよくわからないし、アプリとかつくるとかするにはどのサイトとか見ればいい?
>>518 やるべきことがないなら、何もしなくていいよ。
Ruby/GTK
「rubyの基本的なものは理解したけど」
むせかえるような知ったか臭。
522 :
デフォルトの名無しさん:2014/04/07(月) 20:47:28.66 ID:0DYJf23T
叩かれるとは思わんかったwwwwwromに徹しとくwwwwww
言語仕様だけ勉強したという意味だと思う。
だとすればフレームワークのチュートリアルでもやればいいのにと思った。
524 :
デフォルトの名無しさん:2014/04/07(月) 20:50:40.72 ID:0DYJf23T
>>523 やさしいのな
ありがとう
調べてみる
言葉足らずな俺も悪いがなwwww
?
Duck Typing の考え方は分かる。
しかし、何に向いていて、何に向かないものなのかイマイチ判らない。
教えてくださいエロい人。
>>526 無理して使わなくてもよい
Rubyにおける日常なダックタイピングは、せいぜい
「引数オブジェクトのクラスチェックはせず、エラーが出るに任せる」程度
もちろんそれだと致命的な場合は引数オブジェクトのクラスのチェックをする
もちろんそのときはダックタイピングの恩恵は受けてはいないことになる
その程度
事前にリンクをすることなくクラスシステムを実装する手段がダックタイピングということ
ダックタイピングが目的ではないよ
ダックタイピングを活用したコードは一般的には糞コードと呼ばれる
>>527-528 参考になった。
やっぱなるべく使わない方がいいんだね。
借金職人の娘を質に取った越後屋さんが、
「なぁ、お前、toString くらいは持っとるんやろ?なぁ?それくらい持っとらんとあかんわなぁ?」(ゲス顔)
「toString 発動したるわー!」
と迫って実際発動する様子が思い浮かんだ。
イメージは合ってると思う。
お前がjavaあたりの使用者ということはわかった
>>530 Java嫌いでちょっとムカッと来たから言うけど、ごめん、全然違う。
文字列化は大抵の言語が持ってるから、適当に書いただけ。
C#とかD言語にもObject.toStringはあるもんね
array = [1,2,3,4,5,6,7,8,9]
array. ???(4) #=> [ [1,2,3,4], [5,6,7,8], [9] ]
こんなメソッドありませんでしたっけ?
[*1..9].each_slice(4).to_a # => [[1, 2, 3, 4], [5, 6, 7, 8], [9]]
Range使うなら配列化は最後だけでいいな……
536 :
533:2014/04/08(火) 00:20:53.76 ID:earNJzDQ
ありがとうございました。
多分railsのin_group_ofを想起していたのかもしれません
each_sliceを使わない場合、
a=[*1..9]
b=[]
b << a.shift(4) while a[0] #あるいは until a.empty?
p b
で解決できるところまではわかりましたが
while a . method? という形ではできませんか?
a.present? や a.exist? は無理でした
↑
メソッドに ? は付いてなくてもOKです
>each_sliceを使わない場合
現状、そんなことがあるとは思えないんだが
内部イテレータ使えないコレクションとかだろうか
each_sliceの存在自体(あるかどうかも)知らなかった場合にってことです。
普通は(基本に忠実にするなら)どうやるのかな?と。
一通りArrayのメソッド調べた方がいいという意見があるのもごもっともですが。。
unicornとpassenserならどっちがrubyに向いてますか?
どっちもOK
a.first でもいいだろうけど
要素にfalseやnilが入っていると誤動作するので
素直に
while !a.empty?
の方がいいような
while a[0]がアリなら良いのかと思った
BATファイルで実行
pauseって最期の行に入れておけばいいよw
ruby on railsの環境構築面倒くさすぎる
どうにかならんのか?
railsは簡単すぎるぐらいなんだけどwwwwwwwwwwwwwwwwwwwwwwwwwww
おまえ向いてねえわwwwwwwwwwwwwwwww
git clone
bundle install
rake db:migrate
じゃだめなんだろうか
windowsな
いやdevkitとかgemとか
エラーでてめんどかった
っつーかwindowsでなんでやんだろ
554 :
デフォルトの名無しさん:2014/04/09(水) 02:05:25.16 ID:OJT2GfjE
Windows向けには、
railsの入ったテキトーなvagrant boxでも作って配れば万事解決しそうな気がする。
つRailsInstaller
556 :
デフォルトの名無しさん:2014/04/09(水) 09:31:40.49 ID:k/5jkwC/
>>540 今時のまともな言語ならeach_sliceくらいある
ないのに使わざるを得ないのがC言語
古いC言語のソース漁ってればいくらでもそういう無駄なアルゴリズム出てくるよ
無くても困らないのがC言語
gemが増えるとわけがわからなくなるのでプロジェクト単位でわけたいのです。
markdownでメモができるのでgollumが使いたいのですが
bundle initしてGemlocalにgem "gollum"を追記したのですが、ここでbundle installでOKですか?
たのしいの次は何を読むと良いのだろ?
560 :
558:2014/04/09(水) 22:51:21.40 ID:Il0l8m2A
gemをローカルにインストールするところまではできたんですが
インストールしたコマンドが使えません
どうやらグローバルのgemをみにいっているようです
ローカルにインストールしたgemはどうつかうのでしょうか?
561 :
558:2014/04/09(水) 22:52:41.36 ID:Il0l8m2A
bundle execでできました
gollumに指定したテンプレートを読みこませる方法を教えてください
gollumをインストールしたところのtemplatesディレクトリを汚したくないのです
563 :
デフォルトの名無しさん:2014/04/10(木) 07:50:33.02 ID:+jOFl0o7
CSVを上から下にみていって
A列とB列があり
A列とB列の組み合わせがユニークであればB列を配列にいれていきたいんですが・・・
A列とB列でユニークってどうやるんでしょうか
uniq do |x| { x.A + x.B } ではうまくいきませんでした
Array#group_by を使えばいいかな
タイムゾーンをAsia/Tokyoみたいに地域名で日時を取得できる夏時間対応のライブラリを教えてください
tzinfo
>>565 group_byではダメでした・・・
p [
{name:"Tanaka", city:"X"},
{name:"Tanaka", city:"Y"},
{name:"Tanaka", city:"Y"},
{name:"Suzuki", city:"X"},
{name:"Sato", city:"Z"}
].group_by {|item| item[:name] + item[:city] }
期待している戻り値は↓こんな感じなんです・・・
[
{name:"Tanaka", city:"X"},
{name:"Tanaka", city:"Y"},
{name:"Suzuki", city:"X"},
{name:"Sato", city:"Z"}
]
って普通にuniqでブロックなしでできるようですね・・・
>>568 irb(main):001:0> require 'pp'
=> true
irb(main):002:0> pp [
irb(main):003:1* {name:"Tanaka", city:"X"},
irb(main):004:1* {name:"Tanaka", city:"Y"},
irb(main):005:1* {name:"Tanaka", city:"Y"},
irb(main):006:1* {name:"Suzuki", city:"X"},
irb(main):007:1* {name:"Sato", city:"Z"}
irb(main):008:1> ].each_with_object({}){|l,h|h[l]=h.size unless h[l]}.sort{|a,b|a[1]<=>b[1]}.map{|x|x[0]}
[{:name=>"Tanaka", :city=>"X"},
{:name=>"Tanaka", :city=>"Y"},
{:name=>"Suzuki", :city=>"X"},
{:name=>"Sato", :city=>"Z"}]
=> [{:name=>"Tanaka", :city=>"X"}, {:name=>"Tanaka", :city=>"Y"}, {:name=>"Suzuki", :city=>"X"}, {:name=>"Sato", :city=>"Z"}]
ってuniqでいけるのか、はずいw
Rubyでも明示的に関数の中でreturnを書くべきだって記事があったんですが誰か知りませんか?
たしか海外だったかメーリングリストだったか忘れましたが英語で読んだ気がしました
Rubyでは関数(function)なんて名前で呼ばないので勘違いだと思う
前にもあったけど、Rubyにおけるreturnは「メソッド途中で処理を打ち切って脱出する」効果を期待されている
そうじゃないふつーの処理終端にreturnがあっても戸惑うだけなので、ふつーは書かないほうが好ましい
このコーディング規約、「そうか?」って思う部分が多いから俺は半分ぐらい従ってないw
それ単にシュウゴさんの規約やんw
ぶっちゃけ誰か知らないけど、るびまの記事読んでたときにどっかで見つけた
577 :
デフォルトの名無しさん:2014/04/14(月) 20:39:07.82 ID:iR5K0mS2
Rubyのkernel moduleのソースコードはどこにあるのでしょうか
GitHubのリポジトリ見てもそのままのファイル名じゃ見つからないのですが
単一のファイルに定義されているようでは無いようですね
様々なクラスのファイルでそのクラスに関連する
Kernel module メソッドが定義されているようです
io.cでは入出力関連のメソッド等が
rb_define_global_function("puts", rb_f_puts, -1);
のように定義されてます
rubyというかrspecの質問です
func(hash) def
func.sort_by{ |key| key[;hoge]}
end
のような関数があったときに、それのspecはどう書いたらいいのでしょうか
sort_byが無いといわれ
@hash.stub(:sort_by)を作ってexpectしてもねぇよといわれ
助けてください
>>579 > func.sort_by{ |key| key[;hoge]}
func.sort_byはhash.sort_byかと思ったが key[;hoge]ってなんやねん。
さっぱりわからん。
このページのHello Worldを表示させた後
http://gihyo.jp/dev/serial/01/ruby/0007 [2014-04-15 00:21:46] INFO WEBrick::HTTPServer#start: pid=4124 port=4567
と表示されたまま、$マークが出ないんですけどターミナル窓を閉じないで戻すにはどうしたらいいでしょうか?
(ターミナル窓を閉じてまた開いたら初期状態で$マーク表示されます。)
>>581 WEBrickは何も設定しなければSIGINTじゃ死なないから、
Ctrl+Zでsuspendしてkill %1すれば?bashだよね?
あっとごめん、SIGTERMも無視されちゃうっけか。
kill -KILL %1で。
>>583 レスありがとうございます。
「kill -KILL %1」と入力したのですが反応なしです。
ちなみに矢印キーを上下右左と入力すると
^[[A^[[B^[[C^[[D
のような文字が表示されます。
意味はないかもしれないですけど一応。
bashですね。
mac osx 10.8.5のターミナルです。
>>584 Ctrl-Zして、$が出てからやった?
>>584 Macだともしかすると勘違いしてるかもしれないけど、Cmd-Zじゃだめだよ
>>586 Ctrl−Z→kill -KILL %1
おお〜出来ました!!
ありがとうございました(ツ)
そろそろ標準コーディング規約のディスカッションをしてほしいものだ
まつもとさんやってくれよ
個人のガラパゴス規約なんて使い物にならねえんだよ
Rubyにコーディング規約とか要らぬ
最高に中二病なコードを書けば良いのだYO
バージョンが大台に乗ったのはいいが、2.0以降に対応したまともなデバッガって無いよね。
配列の入れ子数(Max階層)調べる定石ってどんなのありますか?
a = [1 , 2 , [3 , [4 , 5] ,6] , 7]
だとMax3階層、みたいな
用途不明で需要もなさそうだしさすがに無いんじゃないの?
pretty_printでざっくりといけるだろうけど
速度が必要なら自前で書くのが無難かな
数行レベルだろうし
地味にめんどくさそうだな・・・
めちゃくちゃ一般的には必要ない処理だと思う
なにするのに使うん?
ちょっと待って、これどう?w
ary.to_s.gsub(/[^¥[¥]]/, "").scan(/¥[+/).sort.last.size
いやすまんぜんぜんだめだったわ
もうちょい待って
598 :
592:2014/04/17(木) 19:24:14.52 ID:240PSJ19
レスありがとうございます。
ただのRubyのお勉強中で
これってどうやるんだろう?と思った次第なだけで
用途とかは全然ないです
イケてないコードだけど出来たよ
def max_hierarchy(array)
max = 0
now = 0
array.to_s.gsub(/[^¥[¥]]/, "").each_char do |bracket|
now += bracket == '[' ? 1 : -1
max = now if max < now
end
max
end
ary = [[[1]],[2], [[[2]],2]]
puts max_hierarchy(ary)
空の配列はカウントするの?
リンクは忍者修行中とかで貼れなかった
ideone.com/2AW1E6
普通にやるとやっぱり再帰になるよね
頭こんがらがるからニガテ
>>592 ほい。
a = [1 , 2 , [3 , [4 , 5] ,6] , 7]
level = 0
level += 1 until a.flatten.size == a.flatten(level).size
p level
ただし、max2階層っていう扱いになるのでお好きに+1してね。
flattenって引数取れたのか・・・!
まだまだ初心者だな俺
でしゃばんのやーめよ
605 :
602:2014/04/17(木) 19:47:55.23 ID:TFtk1ZRN
あ、いちおう断っておくけど
>>602が定石っていうわけでは無いです。
参考までに、ってことでよろしく。
おーすごい
色々な方法あるんですね
どれも額縁に飾っておきます。ありがとうございましたー
みんなはRubyの開発は何でやってる?
やっぱりEclipse+RDT?RDEとか使ってる人はいる?
unicorn単発で127.0.0.1からのアクセスのみページを見せたいんですが
それ以外はどうやって拒否するんでしょうか?
apache||nginxがないとアクセス制限はできないですかね?
609 :
デフォルトの名無しさん:2014/04/17(木) 23:37:45.98 ID:qltpsmYg
rails 4.1.0をwindows8.1 64bit にインストールしていざ rails sコマンドを打ち込むと、tzinfoというgemが読み込めないみたいなエラーがでます。
漏れは、Win8だけど、Win8でRubyできるの?
出来たら報告して
>>604 ありがとう。
言葉足らずでごめん。
CUIじゃなくてeclipseで使いたいんだ。
だからデバッグエンジンが欲しいんです。
pやpp、putsで頑張れ
pry という手もある
616 :
デフォルトの名無しさん:2014/04/18(金) 21:02:29.83 ID:tsD9/Dp0
MacからLinuxにフォルダとファイルを移動したいです。
LinuxはUTF-8でファイル名の長さが255byteまでの為、UTF-8で数えた時に
255byte以上のファイル名フォルダ名をrubyプログラムで検索し、フルパスを
リストに出力したいです。
Macで3byte扱う文字もある為、255byte/3byte=85文字以上のMacファイル名と
フォルダ名を出力したいです。byteでも文字数カウントでもどちらでも構いません。
いつもはシェル上のfindを使っているためrubyのfind術がわかりません。
データは1T以上あるので、実行速度は遅くても全く構いません。
ご教授よろしくお願い致します。
MacOSX 10.6.8
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin10.0]
>>636 軽く調べたところ
UTF-8-MACかUTF-8かの違いぐらいだから
シェルに慣れてるならシェルでやればいいんじゃない?
find,awk,iconv,wc,mv あたりの基本コマンドでいける。
Rubyでやるなら、glob,encode,bytes.to_a,sizeぐらいかな…
ちなみに自分は
$ ? | ? | ?
とかで確認して
$ ? | ? | ? | sh
とする似非dryrunが好きです
>>616 Windowsしか持ってないけどこんなのか?
Dir.glob('/**/*') do |path|
basename = File.basename(path)
puts path if basename.encode('UTF-8').bytesize > 255
end
特段根拠があるわけではないが、自作しないほうがいいような気がちらっとする
そんなんautomatorでよくね?
>>616 convmv
というperlスクリプトを使うのが簡単らしい
$ convmv -t utf-8 --nfc -f utf-8 --nfd -r .
確認して
$ convmv -t utf-8 --nfc -f utf-8 --nfd -r . --notest
ファイル名の最大はどちらも255byteで同じだし
NFD->NFCの変換でサイズがでかくなることはない(と思う)ので
サイズチェックは不要かと
617からの皆様、コメントありがとうございます。
Dir.glob('/**/*')は知りませんでした。早速勉強してみます。
>>618さん
ありがとうございます。
linuxにファイルパスと、ファイル名それぞれに1023byte、255byteの
制限があるので文字数カウントは避け、バイト数で組むことに変えようと思います。
>>619さん
ありがとうございます。
>>621さん
automatorは全く学んでないのですが、619さんのコードよりも簡単に
なるのでしょうか?
automatorは汎用性がないと勝手に思っているので、速度が倍違うとか
半分のコードとか、簡潔なコードで済むのでないかぎり避けたいと思います。
automatorからもRuby使えるし組み合わせれば
>>622さん
ありがとうございます。
perlは日本語処理がrubyに劣ると思っていましたが今は違うのでしょうか?
perlでも構いません。話しが続くのでしたらスレを移動します。
その前に619程度のperlコードは欲しいです。
>ファイル名の最大はどちらも255byteで同じ
問題はファイル名の長さの取り扱いがlinuxとmacで異なります。
linuxは255byteでmacはutf-16で255文字。
Macは濁音・半濁音をも一文字とカウントします。
例えば「ぱ」は「は」と「゜」で2文字らしいです。
>>624 すいません。同じ方かわかりませんが、具体的automatorコードはありますか?
なければ結構です。ありがとうございました。
unlessが存在する意義はあるんですか?
ifでいいじゃないですか
こんな余計なものを実装してるところが汚いですよね
PHPと同様Rubyも汚い言語だと思いますよ
AutomatorからもRuby使える、って言っただけなのに具体的なソース提示しろとかなんか腹立つな
そもそも同じ処理をいろんな書き方ができる事自体がおかしいんですよ
632 :
デフォルトの名無しさん:2014/04/19(土) 16:07:00.30 ID:RzhKyGN6
セキュリティ関連は、BTSに登録してしまうと、未解決のうちに公開されてしまうことになって
よろしくないので、メールで。
633 :
デフォルトの名無しさん:2014/04/19(土) 16:08:27.77 ID:RzhKyGN6
あ、意図を読み取り損ねていた。
taintness の伝搬関連はセキュリティ問題になると思うよ。
>>628 文章のまま他意はない。それなら、次回から興味がなければ礼も言わず、全く返事せずにスルーするよ。
うっざ。友達いなそー
勝手にしろ
最近流行の「アドバイス罪」って考えの奴なんだろうけど文字通り独り言だし礼も反応も求めてないよ。一言多いわ
お前から礼をもらったところで俺に何の得があるんだ
>>633 対応ありがとう。
パッチつけて投げ込んでみます。
グーグル先生に英訳してもらうか・・・。
松本先生に直接報告しとけよ
639 :
デフォルトの名無しさん:2014/04/19(土) 19:11:05.22 ID:RzhKyGN6
>>637 security@ の大半は日本人だから日本語でおkと思う
>>630さん
WinからMacやLinuxにファイルコピーするとそれぞれのコードUTF16やUTF8で扱われ
ファイル名の長さだけに制限があるようですね。
ひとりごと
Automatorやruby、perlなどの言語は今後も発展衰退する可能性があり性能や向き不向きがあります。
言語にユーザーの好き嫌いがあっても構いませんが、利用時には客観的に判断して利用すべきかと。
Automatorの既存コードがあれば、それを評価して良ければ使うのは全く構いません。
言語やくんだコードの使いやすさを知るために試すことは当然かと。
サンプルプログラムのアドバイスや質問は何の差支えもないでしょう。
私はコードの評価をしたいのに私への人格評価がなされる理由は全く意味不明。
スレチと長文失礼しました。
手元に環境ないから試せないけど
convmvで普通にいけるとおもうんだよなぁ
>>610 win8.1 32bitだけど普通に使えてるよ。
activescriptrubyのirbでカーソル移動するとなんか表示がおかしくなるけど。
コードが評価したいなら、せめてconvmvのmanの「HFS+ on OS X / Darwin」
くらい読んで、彼等がお前の愚問を把握してないかどうかくらい、確認しろよ。
それすらやってないのに長々と書いてるのは詭弁にしか感じられん。
convmvを最初し紹介した奴に対しても失礼だ。
irbでputまで入力してtab押しても補完されなくてそのままtabだと思われる文字が入力されるのはなぜですか?
$ irb
irb(main):001:0> require 'irb/completion'
=> true
irb(main):002:0> put
putc puts
irb(main):002:0> put
うちだと再現しないな
LoadError: cannot load such file -- readline
rb-readline入れたらできました
すいませんirbで表示される補完候補をスクリプトファイルから取得する方法を教えてください。
irbのソース読んだわけじゃないから想像だが、Object#methodsを使ってるんじゃないか?
652 :
デフォルトの名無しさん:2014/04/21(月) 23:28:33.40 ID:ZjnW70RA
arr = [ :a, :b, :c, :d. :e ]
これを
[
[:a, 0],
[:b, 1],
[:c, 2],
[:d, 3],
[:e, 4]
]
にする一番いい方法ってなんでしょうか?
each_with_indexでループするよりいい方法があるかなと思ったのですが
653 :
652:2014/04/21(月) 23:30:59.51 ID:ZjnW70RA
解決しました
ありがとうございました。
どう解決したのかも書いてよ・・・
arr.map.with_index{|a,i|[a,i]}
単純に書くとこうだと思うけど、なんか違う方法あるのかな?
655 :
652:2014/04/22(火) 00:04:26.06 ID:0LyUdVMz
arr.each_with_index.map でした
>>654 ぱっと思いついたのは無限リストにzipなやつかな
Haskellでいう
zip arr [0..]
こういうの
今時のRubyなら有りそう
arr.map.with_index.to_a
Rubyに無限リストってないのね
(一応0..Float::INFINITYで無限リストにはなる)
でも今回限定ならこれでいいのか、なるほど
arr.zip(0..4)
Lazyってのがあったと思う
irb> %i(a b c d e).zip(0.step)
=> [[:a, 0], [:b, 1], [:c, 2], [:d, 3], [:e, 4]]
でもこの場合なら普通に%i(a b c d e).each_with_index.to_aかな
そういう連番入りの"変"な配列が本当に現物として必要なのかというところから考えてみるといいかもしれない
結構必要なんだけどさ
プログラミングRubyのRubyベタボメっぷりにRubyを使い始めて早10数年、使えば使う程にRubyって駄目だなと痛感する
Rubyを学習し始めた頃は誰でもRubyは素晴しいと思うのだが、数年も使えばそのどうしようもない互換性のなさにウンザリする
しかも互換性が無くなることをマズいと思っていない集団がRubyを制作しているのでどうしようもない
1.4時代のコードが1.6になった途端に互換性がなくなり動かなくなることはあったが、1.6→1.8ではそれが顕著になり、1.9など何のエラーも出さずに前のコードが動く方が珍しいほど
それどころか1.9に行かずREEが海外ではデファクトになりつつある現状、そして始まるPlain RubyとREEの方言問題
例えばPassengerもREEの方がうまく動いたり、かと思えば特定のバージョンだとPlainじゃないとまともに動かなかったりと、とても面倒臭い
美しいコードを求める為の副作用、という名の互換性のなさはRuby界全体に蔓延していて
例えばあれだけもてはやされたRailsも、Rails2とRails3の互換性のなさに誰しも苦労したのは記憶に新しいところ
誰もが互換性のなさに辟易し、俺ライブラリを量産するため、gemで探すと似たような事をする終わったプロジェクトがわんさか引っかかる
諸処の小さなプロジェクトだけがそんな現状ならば許せるが、dbiアダプタでさえそんな現状なので
バージョンが変わるとデータベースにすら接続できなくなったとか、dbiのAPIバージョン変わったのにアダプタ側の更新ないな、
とか思ってるとアダプタ作者がRubyから足洗ってたとか余裕
身内同士でRubyはコードが美しいと四六時中自画自賛しているが、実はそれこそがRubyのガン
その美しいコードという名のオナニーの為に一体どれだけの互換性と人的リソースが失われていったことか
Rubyのコードは美しい、Railsスゲー、ベタボメする人は沢山いたがいつも一過性の人気しか得られないのはそこにあるし
ベタボメしていた人達もしばらくするとウンザリしてRuby界から消えてしまうのも原因は実はそこにある
達人プログラマーはRubyをベタボメしなくなったし、Mongrel作者はRailsどころかRubyに見切りをつけちゃったしね
ああいう熱狂的なRuby信者でもRubyから足を洗っているのを見ると、tDiaryがRubyに見切りつけてPythonで全部書き直したとか言われても驚かないだろう自分がいる
663 :
デフォルトの名無しさん:2014/04/23(水) 00:01:19.28 ID:QODmQkgW
嫌いなのに、この熱量ワロタ
まあ分からないでもないな
せっかく書いた自分なりに美しいコードがRubyのバージョン互換性とかライブラリの陳腐化とかでどんどん何もしなくてもゴミになってくんだよね
ruby1.8と1.9の非互換性に親を殺されたんだろう
大昔からあるコピペだが
砂漠に捨てられていたところを駱駝に育てられたんだろうね
PerlもPerl6で後方互換性がなくなった
Rubyは普及が早過ぎた
せめて1.9のEncodingが
669 :
デフォルトの名無しさん:2014/04/23(水) 08:55:45.86 ID:KGn2h8hJ
今からRubyを学ぶ場合って1.9.3と2.1.0どっちがいいですか?
過去バージョンの資産(しがらみとも言う)がないのなら2.1.x
日常なんも考えずに使うぶんにはあまり変わらないので、
2.1系でどうしても動かない基幹のライブラリが出たときだけ1.9.3にでも戻るといい
railsとredmineしか使わないんですがとりあえず2.1.0からはじめてみます
1.9.3と2.1.0の違いって?
1.9.3はもうちょっとしたらサポートが切れる
2.1.xはしばらく使える
Win3.1,Win95,Win98,Win2000,WinME,WinXPのサポート終了
OSのAPIも変わる
言語だっていいじゃん
仕事、増えるじゃないですか。ヤーダー
仕事が増える=金になる
×仕事が増える
○サービス残業が増える
679 :
デフォルトの名無しさん:2014/04/25(金) 08:48:01.45 ID:4zex2q5s
頑張るが良い
およそ3万時間はかけてあれこれと習得した技術で
一銭も稼がずそのまま趣味にしちゃうとか
えげつない選択をした俺には社畜PGでさえ割と輝いて見える
IDは残酷である
681 :
デフォルトの名無しさん:2014/04/25(金) 11:12:07.03 ID:D2Co1DWI
puts "Hello, world!"
682 :
デフォルトの名無しさん:2014/04/25(金) 15:16:49.71 ID:D2Co1DWI
rubyの使いどころってどこ?
>>607 RDE使ってるけど補完とかでエラーがぼこぼこ出る
RDTは起動が終わる頃にはプログラミングする気が無くなるし、
SublimeText3使ってみたけどイマイチ使いにくいから結局RDE
686 :
デフォルトの名無しさん:2014/04/27(日) 18:34:49.46 ID:MXG/a/88
RubyでIDE(笑) と思っていたが RubyMine を使ってみて、笑ってごめんなさいと言いたくなった。
687 :
デフォルトの名無しさん:2014/04/27(日) 23:31:33.76 ID:zjGXWtmW
ジャップスクリプトw
>>687 真面目な話
朝鮮人にも使いやすいと思うよ
689 :
デフォルトの名無しさん:2014/04/29(火) 15:30:47.92 ID:D9nXVjdy
そうだぬ
プロテインだぬ
rubyって開発環境ないと実行もできないの?
>>690 開発環境はいらない。いるのは実行環境な。
スクリプト言語なので最低限エディタさえあればいいので
実行環境があれば開発環境も揃っちゃう
釣られちゃだーめ
695 :
デフォルトの名無しさん:2014/04/30(水) 12:51:55.01 ID:ZT185+pO
>>688 ジャ・・・・・・w
ジャ・・・・・・・・w
ジャ・・・・・・・・・・w
ジャ・・・・・・・・・・・・・・w
ジャアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアアッピwwwwwwwwwww
みんなイガイガしてて怖い
697 :
デフォルトの名無しさん:2014/05/01(木) 12:33:29.63 ID:V5UuKtrR
イガイガジャップw
698 :
デフォルトの名無しさん:2014/05/01(木) 12:57:41.57 ID:mrXKLvki
ジァアアアアアアw
699 :
デフォルトの名無しさん:2014/05/01(木) 16:55:10.64 ID:0JNTRAzu
ubuntu14.04でlibapache2-mod-rubyが無くなってしまったのですが、
RubyのCGIを実行するには何を入れればいいのですか?
Python
>>699 CGI として動かすのに必要なのは mod_ruby ではなく mod_cgi のはず
mod_cgi はおそらく Apache2 をインスコしたときに入ってるので
とりあえず簡単な CGI スクリプトが動くかどうか試してみては
[
{sort:1, foo:1, bar:1},
{sort:1, foo:1, bar:2},
{sort:2, foo:1, bar:1}
]
これを
{
1: [ {foo:1, bar:1}, {foo:1, bar:2 } ],
2: [ {foo:1, bar:1} ]
}
に置換するメソッドってないのでしょうか?
プログラミングをなんだと思ってるのかちょっと気にかかる
やりたい処理があるならとりあえず自力で逐次書いてみること
できそうにないならとりあえずいちばん基本的な処理からひとつずつ
>>702 >>702 L = [
{sort:1, foo:1, bar:1},
{sort:1, foo:1, bar:2},
{sort:2, foo:1, bar:1}
]
L.group_by { |e|
e[:sort]
}.inject({}) { |outer_hash, (outer_key, inner_hashs)|
outer_hash.update outer_key => (
inner_hashs.map { |inner_hash|
inner_hash.inject({}) { |hash, (key, val)|
if key == :sort
hash
else
hash.update key => val
end
}
}
)
}
# => {1=>[{:foo=>1, :bar=>1}, {:foo=>1, :bar=>2}], 2=>[{:foo=>1, :bar=>1}]}
data = [
{sort:1, foo:1, bar:1},
{sort:1, foo:1, bar:2},
{sort:2, foo:1, bar:1}
]
data.group_by{| hash |
hash[:sort].tap{
hash.delete(:sort)
}
}
dataの中身を破壊したくない時は事前にコピーしておく
xs = [
{sort:1, foo:1, bar:1},
{sort:1, foo:1, bar:2},
{sort:2, foo:1, bar:1}
]
h = {}
xs.each do |x|
h[x[:sort]] ||= []
h[x[:sort]] << x.reject {|k,v| k == :sort }
end
p h
708 :
706:2014/05/01(木) 21:41:47.80 ID:f+pw1QDn
ごめん訂正
data.group_by{| hash |
hash.delete(:sort)
}
で良かった
709 :
702:2014/05/01(木) 22:41:16.64 ID:dTaRli9/
普通にこれだけでできました。
ar = [
{id:1, type: :hoge, value: 'aaa'},
{id:2, type: :fuga, value: 'bbb'},
{id:3, type: :hoge, value: 'ccc'},
{id:4, type: :hoge, value: 'ddd'},
{id:5, type: :fuga, value: 'eee'},
{id:6, type: :hoge, value: 'fff'},
{id:7, type: :piyo, value: 'ggg'},
{id:8, type: :hoge, value: 'hhh'}
]
puts ar.group_by {|a| a[:type] }
ありがとうございました。
710 :
デフォルトの名無しさん:2014/05/01(木) 23:41:24.74 ID:Ig5lcCo9
それだけだとtypeが要素内に残ってしまうのでは?
本人が納得してるんだから
それ以上の答えはないだろ…w
ジャアアアアアアアアアアアアアアアアアアアアアアアwwwwwwwwwwwwwwwwwwww
713 :
デフォルトの名無しさん:2014/05/02(金) 05:38:10.00 ID:gjVtYYe6
ジァアアアア
714 :
デフォルトの名無しさん:2014/05/02(金) 11:55:46.50 ID:Pyg52lyI
ジャップ
715 :
デフォルトの名無しさん:2014/05/02(金) 19:05:42.78 ID:Aux2s5aq
ジャアッピ
redmineで必要なgemをすべてredmine直下にインストールしたいのですが
bundle install --path .
こんな感じでやれば確実に直下にインストールされますか?
以前グローバルのgemのところにredmineで使うgemをインストールしたらrailsが動かなくなったので
慣れないうちはgemは分けてインストールしたいのです
>>716 --deploymentじゃだめなの?
--path . だとredmineのソースと混ざって面倒でしょ。
--path使うなら--path tmpgemとか、
名前はどうでもいいけどサブディレクトリを指定したほうがいいと思うよ。
--deploymentは初めて知りました。調べてみます
--pathはvendor/bundleを指定しようと思います
r
720 :
デフォルトの名無しさん:2014/05/04(日) 16:49:05.62 ID:FXufV3r7
メモ帳に、print("Hello,Ruby.\n")
と書いて、
helloruby.rb
という名前で保存して、
コマンドプロンプトで実行してみたのですが、
('ruby'は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチファイルとして認識されていません。)
こんな表示が出てしまったんですが、
もしかしてプログラムを実行するには、
Rubyというものをインストールしないといけないでしょうか?
もちろんそうよ。
rubyに限らずあらゆるスクリプト言語は、
ソースを実行する環境が必要だよ。
722 :
デフォルトの名無しさん:2014/05/04(日) 17:04:39.33 ID:FXufV3r7
>>721 そうでしたか、
ありがとおございます、
rubyを使えるようになれるように勉強します...orz
723 :
デフォルトの名無しさん:2014/05/04(日) 17:52:47.03 ID:FXufV3r7
Rubyインストールして、hellorubyできましたー!
あとはプログラム書いていくには、
メモ帳よりもエディターというのがあったほうがいいのかな?
>>723 メモ帳もエディタだよ
ただメモ帳はプログラミングには向いてないからプログラミング用のエディタがあったほうがいいね
それと、自分で考えたり調べたりするのもプログラミングする上では大事よ
725 :
デフォルトの名無しさん:2014/05/04(日) 18:13:57.43 ID:FXufV3r7
>>724 メモ帳もエディタだったのですね。。。
そうですね、
自分で考えないとプログラミングなんてできないですね・・
ありがとおございます、
プログラム言語覚えようと思って、
初心者で何がいいのかわからなくて、
古本でRubyの入門書が一番安かったから買ってしまったけど、
この選択でよかったのかちょっと不安でして・・
本読みながら頑張って勉強します!
その選択は失敗だな。
図書館行けばただで借りられたかもしれないのに。
>>725 いやいや、
>>721 の情報ぐらいでちゃんと動かせるところまでたどり着けるんだから、
十分プログラミングができる素養はありますよ。がんばってください
エディタは…私はLinux上でEmacs使ってますが、最近だと何がいいんでしょうね
Notepad++あたりがスジは良さ気かなー
最初はサクラエディタみたいにくせが強くなくて、設定の楽なソフトでいいんじゃない?
サクラエディタに癖が無いとおっしゃるw
余計な設定してあるサクラエディタなんてクソ
Windowsなんてとっくの昔から使ってないけど、癖が少ないエディタと言ったらTeraPadなんじゃないかなぁ
最初からRubyのシンタックスハイライトしてくれるし
Rubyの開発環境ってエディタはもちろんだけどコマンドライン端末が重要だからなあ
WindowsならVirtualBoxかなんかの上でLinux動かしたほうがマシ
Linux上でプログラミングだけやりやすくするよりも
Windows上でプログラミング以外の事を色々とやっている中でプログラミングもそこそこ行いたい
Windows に mintty, SYS, Cygwin なんか入れてがんばってる人もいるね
Linux にある程度慣れてる人じゃないと導入からしてきついだろうけど
CYGWINはオモチャ
738 :
デフォルトの名無しさん:2014/05/05(月) 14:39:20.97 ID:w8FDA2mo
みなさまありがとうございます、
とりあえず、
Notepad++、サクラエディタ、TeraPad、RuviEdit
の4種類インストールとダウンロードしてみました!
これから使いやすいの選んでやってみようと思います、
>>737 ネット上でも実行できるのあるんですね、
便利そうですありがとうございます。
RuviEditはどうかなー
もうメンテされてないみたいだし
あとの3つは有名ドコロだし、気に入ったのを使えばいいと思うけど
ネット上の開発環境だと、Cloud 9ってのもある
https://c9.io/ ただ、最初の開発環境はやっぱりローカルに用意したほうがいいと思う
>>615 pryでデバッグするときって、
いちいち、binding.pry をソースコードを編集して付け加えるの?
winならsublimeいったくだろ
金払えるならね
Windowsといわず、MacでもLinuxでも動くし
以前、rubyをネット上で実行できるようにするには
セーフレベルだけでは危ないみたいな記事を読んだのですが本当ですか?
ちなみにその記事には対策は書かれていなかった。
>>744 ユーザエージェントから受けとったデータ(クッキーやらポストデータやら)を処理する場合は、気をつけることだな。
rubyに限ったことではないけど。
ユーザエージェントからのrubyコードをサーバー上で実行させる場合は、サーバーが転んでも泣かない。
特に(標準ライブラリは例外として)第三者による拡張ライブラリ(soファイルを含むやつ)は
セーフレベルや汚染について無頓着なものが多いので、そういうライブラリは絶対に使わないこと。マジで泣きを見るからな!!
セーフレベルはMatzも認めるクソ仕様
あんなのアテにする方が間違い
$SAFEは開発版にだけ入れておくべきものだったね
うまく回ればカッコイイものだったんだけど、一度もうまく回った印象がない
32bit向けcygwinでrbenvを使っています
ruby 2.1.1p76 (2014-02-24 revision 45161) [i386-cygwin]
gem --version は2.2.2です
gem関連の質問をします
http://takemikami.com/archives/1316 ここにあるようにnokogiriを使おうとしたらエラーが出ました
ruby get_gresult.rb
/home/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': No such process - /home/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/extensions/x86-cygwin/2.1.0/nokogiri-1.6.1/nokogiri/nokogiri.so (LoadError)
gem which nokogiriの結果はこうです
/home/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.1/lib/nokogiri.rb
gemで入れたnokogiriのインストール先をkernel_requireが探せていないようなのですが
どうすればよいのでしょうか
Rubyじゃ無理
書き忘れていましたがrbenv 0.4.0-97-gfe0b243
です。
すみません。ファイルはそこにありました。
[~/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/extensions/x86-cygwin/2.1.0/nokogiri-1.6.1/nokogiri] % ls -la
-rwxr-xr-x 1 user 4.5M 2014-04-30 16:55:56 nokogiri.so*
それとエラーメッセージは正しくはこうでした。
/home/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require': No such process - /home/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/extensions/x86-cygwin/2.1.0/nokogiri-1.6.1/nokogiri/nokogiri.so (LoadError)
from /home/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/.rbenv/versions/2.1.1/lib/ruby/gems/2.1.0/gems/nokogiri-1.6.1/lib/nokogiri.rb:28:in `<top (required)>'
from /home/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:135:in `require'
from /home/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:135:in `rescue in require'
from /home/.rbenv/versions/2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:144:in `require'
from get_gresult.rb:4:in `<main>'
おかしいね。No such process というメッセージは require では出ないはずなんだけど
753 :
デフォルトの名無しさん:2014/05/07(水) 08:12:24.98 ID:MZ01fZnX
無理
754 :
デフォルトの名無しさん:2014/05/07(水) 10:48:05.15 ID:VWoQm6fj
馬鹿には
755 :
デフォルトの名無しさん:2014/05/08(木) 21:34:14.53 ID:c3/Phoxn
無理
_∧∧__ / ̄ ̄ ̄ ̄
|( ゚д゚)| < 私も初心者です!
|\⌒~\ \____
\ |⌒⌒|
おっと、気がついたら DateTime.strptime() のバグが直ってるじゃん
もう直らないと思ってたよ
ループの中でsystem "start #{url}"として、既定のブラウザ(Firefox)でurlを次々に開きたいのですが、複数のタブを開くのではなく、一つのタブ内で遷移させていくにはどうすればよいでしょうか?Windows 8 64bit, ruby 2.0.0p353です。よろしくお願いします。
開く前にタブを閉じればいいんじゃね?
gollumっていうgitで管理するwikiあるじゃないですか
バックアップ目的でgithubにpushしたいんですが
gollumが自動的に作成したリポジトリの内容そのままでpushしちゃていいんですか?
他にgit addしたりする必要はないですか?
761 :
758:2014/05/09(金) 19:20:40.79 ID:RTJJnIz3
>>759 ありがとうございます。
タブを閉じるにはjavascriptでwindow.close()してやれば良いのかと思って、execjsというgemを使おうとしたのですが、invalid byte sequence in UTF-8というエラーが出てしまって回避策を調べているところです。
watirとかseleniumなどのwebdriverを使うと、新しくブラウザを開く必要があるみたいなので、使用中のブラウザで開くためにsystem startでURLを開こうとしているのですが、その場合にタブを閉じる方法は他にあるでしょうか?
762 :
デフォルトの名無しさん:2014/05/09(金) 20:33:54.70 ID:SjMyjWDG
wshとかでキーバインド Ctrl + W
WinAPIとかでPostメッセージ Ctrl + W
タブのスレッドを特定して Kill
ハンドルを取得して、どうにかしてWatirとかSeleniumで操作するブラウザを既存のものにするように魔改造
他・・・良さそうなgemsを探す
763 :
デフォルトの名無しさん:2014/05/09(金) 20:51:40.58 ID:SjMyjWDG
ああ、Firefoxってタブごとに別スレッドってわけじゃなさそうだった
スレッドKillでタブ閉じ無理
765 :
デフォルトの名無しさん:2014/05/09(金) 21:59:51.69 ID:SjMyjWDG
http://wtr.rubyforge.org/rdoc/1.6.5/ ここみると
attach (FireWatir::Firefox)
ってattachなんとかってメソッドあるから多分firefoxでもやれるとは思うよ
IEでは、正しいやり方じゃないんだけど、とりあえずの動作確認出来た
Ruby\lib\ruby\gems\1.9.1\gems\watir-classic-3.7.0\lib\watir-classic\ie-class.rb
等の 645行目くらいを
#160; #160; def create_browser_window
#160; #160; #160; how = :title
#160; #160; #160; what = "Google"
#160; #160; #160; ieTemp = nil
#160; #160; #160; begin
#160; #160; #160; #160; Wait.until(IE.attach_timeout) do
#160; #160; #160; #160; #160; ieTemp = IE._find how, what
#160; #160; #160; #160; end
#160; #160; #160; rescue Wait::TimeoutError
#160; #160; #160; #160; raise NoMatchingWindowFoundException,
#160; #160; #160; #160; "Unable to locate a window with #{how} of #{what}"
#160; #160; #160; end
#160; #160; #160; @ie = ieTemp
##160; #160; #160; @ie = WIN32OLE.new('InternetExplorer.Application')
#160; #160; end
こんなんにするとブラウザ新規起動はしないでGoogleを開いてるIEのブラウザに対してフックするようになる
その他関連リンク・・・
http://rdoc.info/gems/watir/1.6.6/Watir/IE#attach-class_method
766 :
デフォルトの名無しさん:2014/05/09(金) 22:00:46.38 ID:SjMyjWDG
半角ミスった・・・・
def create_browser_window
how = :title
what = "Google"
ieTemp = nil
begin
Wait.until(IE.attach_timeout) do
ieTemp = IE._find how, what
end
rescue Wait::TimeoutError
raise NoMatchingWindowFoundException,
"Unable to locate a window with #{how} of #{what}"
end
@ie = ieTemp
# @ie = WIN32OLE.new('InternetExplorer.Application')
end
767 :
デフォルトの名無しさん:2014/05/09(金) 22:27:33.18 ID:SjMyjWDG
あ、ライブラリ弄らずにattach_browser_window呼び出すにはこれでよさげ
agent = Watir::Browser.attach(:title, "Google")
firefox版は・・・誰かがどうぞ
768 :
758:2014/05/09(金) 22:46:25.11 ID:RTJJnIz3
769 :
デフォルトの名無しさん:2014/05/10(土) 13:24:26.09 ID:oRE/NAyL
質問です
ホソバオキナゴケか、アラハシラガゴケ
あとスナゴケ買ってきたいんですけど
東京で売ってる店ありますか?
なるべく通販とかより現物みて買いたいのですが
トレーで買える大きなものが良いです
770 :
デフォルトの名無しさん:2014/05/10(土) 23:13:34.58 ID:E1J0psG7
東急ハンズとか見てきますね
ありがとうございます
ンーwwwwwwwwwww
rbenvをインストールするシェルスクリプトを書いているのですが、
echo 'export RBENV_ROOT=/usr/local/rbenv' >> /etc/profile.d/rbenv.sh
echo 'export PATH="$RBENV_ROOT/bin:$PATH"' >> /etc/profile.d/rbenv.sh
echo 'eval "$(rbenv init -)"' >> /etc/profile.d/rbenv.sh
exec $SHELL -l
とすると「exec $SHELL -l」でスクリプトが止まってしまって後の処理が実行されません。
止まらずに後の処理も実行するにはどのようなスクリプトを書けばよいでしょうか?
よろしくお願いいたします。
>772
echo $SHELL して出てきたコマンドの -l オプションの効果を調べる
774 :
デフォルトの名無しさん:2014/05/12(月) 19:29:25.28 ID:lYEeDc9x
>>769-771 苔の質を気にしないならヤフオクとかオススメかなり安い
色が悪くてもちゃんと管理すれば色も戻るから、着生させた後ならさほど変わらんな
775 :
デフォルトの名無しさん:2014/05/13(火) 19:58:24.12 ID:jn2b6mfU
すみません、どこで質問すればいいのかわからなかったので
ここで質問させてください。
Rubyで書いたコードをexe化するためにocraというgemを使っています。
関連するライブラリなどもexeの中に入るはずなのですが、
他のgemが入らないようで困っています。
具体的には
ruby 1.9.3 ocra 1.3.0 snmp 1.1.1
snmp を gem install したPCで require snmp を含むrubyコードを
ocraでexe化し、実行すると require snmp 実行時に強制終了します。
(require snmp の前後にログを入れて確認したので間違いないです)
ocra実行時(ocra --windows ファイル名)にはエラーは出ていません。
このプログラムをruby環境の無いPCで実行するためには
どうすればいいでしょうか?
ヒントだけでも頂けると助かります。
>>772 export PATH
組み込み環境変数は、exportしたらダメかも?
>>775 >ocraでexe化し、実行すると require snmp 実行時に強制終了します。
強制終了時のエラーメッセージを書かないと、
アドバイスしようにも無理だと思われ
Rubyで動的にevalで追加されたメソッドの定義を見る方法はないのでしょうか?
定義つーのは引き数とかです
>>778 Ruby1.9以降であれば、ClassクラスやModuleクラスで定義されている
メソッド instance_method または public_instance_method を使うと
メソッドを表現するオブジェクト UnboundMethod が返される
次に、このオブジェクトで定義されているメソッド arity を呼べば、
対象となるクラス/モジュールで定義されているメソッド定義の引数の個数が得られる
$ irb2.0
irb(main):001:0> eval "class C; def f(x,y); end; end"
=> nil
irb(main):002:0> m = C.instance_method(:f)
=> #<UnboundMethod: C#f>
irb(main):003:0> m.arity
=> 2
irb(main):004:0>
ありがとうございます
個数しかムリなんですね
同じ1.9.3であっても、パッチレベルが低いと、forの中でretry使えるものがあるんだな。
>>778 UnboundMethodにはparametersメソッドもあるね。
こっちのほうがもう少し詳しいみたい。
783 :
uy:2014/05/15(木) 14:13:13.27 ID:Py6ct1mS
>>778 eval"
def nesi a , b
p a , b
end
"
ObjectSpace.each_object do |m|
puts m if m.to_s =~ /nesi/
end
出、出力〜wwwwww物体空間検索奴〜wwwwwwww
784 :
デフォルトの名無しさん:2014/05/18(日) 13:57:07.33 ID:YH07EY0z
Rubyは変数の型を宣言しないの?
VBA使ったときは、IntegerとかStringとかの、
変数を宣言してた記憶がるんだけど、
なんか入門書に説明書いてない・・
うん。Ruby の変数に型はないので宣言することもない
>>784 Rubyの変数は文字列、配列、数値などの「オブジェクト」を指すものだが、これに型はない。
ただし変数が指している各々のオブジェクトには明確な型がある。
787 :
デフォルトの名無しさん:2014/05/18(日) 14:52:26.23 ID:YH07EY0z
そうなんですかぁ
あとでコードみたとき分かりにくくないのかなぁ
宣言してないから変数名まちがえてもエラーもでないってことですよね?
デバッグするときめんどくさくないのかなぁ
数字の変数に文字列いれたらエラーになってくれるから、
ミス分かったりすると思うんだけど、
なんか不安になってきたなぁ
Rubyの選択は正しかったのだろうか・・
>>787 その代わりお気楽にコードが書けるというメリットもある
メリットとデメリットを比べて実際に決めるのはあなたなので、あとは好きにすればいい
>>787 >あとでコードみたとき分かりにくくないのかなぁ
変数をハンガリアン記法にするといい
まだマシだよ。
1 + "1"とか、1 + "5foo" が全くエラーにならない言語もある。
比較してみよう
' VBA
Dim num as Integer
num = 123
# Ruby
num = 123
httpdで送られてくるパラメータに型がないのも酷い
>>787 変数自体に型はないけど、格納されてるデータは型があって
参照時に型チェックは行われる
自分の感覚では、気にしているような型チェックによるコーディングミスの検知は
Rubyでも十分機能している(整数と文字列を間違えるようなミスは
ちゃんと検知する)
そうかな
0 が false であることを期待して
if hoge
fugafuga
みたいに書いてるとき
hoge が '0' だったら?
Ruby では偽と扱われるのは nil と false だけ
'0' も 0 も "false" もみんな真
>0 が false であることを期待して
あほか、期待しねーよw
perlは、0が偽ではあるけど、booleanがないから一貫している。
rubyは、booleanがある代わりに、0を偽としないことで一貫させている。
素人考えだけど
外部のスクリプトのメソッド foo を利用したくて、
require, import, include で利用宣言して、
foo( arg )
んで、エラーが出る場合は、引数の型や個数が違う。
ruby には適切な引数なのか調べる方法がある。
def foo( arg )
unless arg.is_a?(Hash)
raise 'ハッシュよこせよ'
end
unless arg.respond_to?(:each)
raise 'eachメソッド使えるやつよこせよ'
end
end
型宣言って、+-*/で四則演算できる数値をクレとか、
hoge というメソッドがつかえるオブジェクトをクレ
とか、そういうことに必要な機構だとオモタ
JavaScriptはもっとひどい
JSに突進していく外人よりも、
Matzの方がスジが良いことは、明らか
>>787 中身の無い変数に対してメソッド呼ぶとかしたら大概例外になる
initializeでインスタンス作るときに代入、あとはアクセサなどで弄るとかすると
基本的に参照しかしないことになるだろ?つまり例外がちゃんと起こるワケだ
800 :
デフォルトの名無しさん:2014/05/19(月) 00:52:15.69 ID:OU6AZajW
ちゃんと描けば変数とかどんどん減るから
実際、普通のOOじゃなくてプロトタイプベースみたいにして書けって事だよ動的言語は
802 :
787:2014/05/19(月) 19:42:29.92 ID:KxacvMpX
>>801 whitespaceはネタですよね?w
先物を自動売買するシステムを作ろうと思ったんですが、
今まではVBAとIEでやってたけど、
他のプログラム言語も試してみたくて、
Rubyは日本人が作った言語だったので、
よく調べずにこれでいいかなと思って・・
自動売買ソフト作ってるなら
ガベコレ走らない言語を選ぶべき
ミリ秒単位のガチなやつならともかく、悠長にIE操作してる暇があったら
GCによるストップザ・ワールドなんか全く無視できるわ
スクリプト言語は変数は型関係なくいれられることが多い
静的に変数の型を強制したいならコンパイル型の言語を選べばいい
一応、型チェック用のライブラリもあるけどな
Contractsとかそんな名前だっけ?
807 :
デフォルトの名無しさん:2014/05/19(月) 22:16:40.28 ID:csGSXT6X
プロトタイプしろでおk
せっかくmix-inやりやすくされているのだし
型を意識しなきゃいけないコード書く時点で動的言語つかうって選択肢がズレてる
808 :
デフォルトの名無しさん:2014/05/20(火) 15:28:39.99 ID:9vxr48KW
パック10進数を数字に変換する処理を作ろうとしています。
un_packというのをWEBで拾ってきたので、
それにバイナリモードで読んだ先頭3バイトのデータを渡して
やりたいのですが、以下のエラーになってしまいます。
in `sprintf': string contains null byte (ArgumentError)
バイナリの読み込み方が悪いのでしょうか。
def self.un_pack(pack)
sprintf("%X", pack).gsub(/^(.+)(.)$/) {|str|
case $2
when "F", "C"
""
when "D"
"-"
else
raise RuntimeError.new("illegal sign. sign = [#{$2}]")
end + $1
}.to_i
end
#16進数で渡せばOK
p self.un_pack(0x102D) #=> 102
p self.un_pack(0x102C) #=> -102
BinData = open("DATA30B.sf")
BinData.binmode
while(b = BinData.read(30))
p self.un_pack(b[0,3])
end
809 :
808:2014/05/20(火) 17:31:57.95 ID:9vxr48KW
なんかいろいろやってたら出来た
def self.un_pack(pack)
sprintf("%X", pack).gsub(/^(.+)(.)$/) {|str|
case $2
when "F", "C"
""
when "D"
"-"
else
raise RuntimeError.new("illegal sign. sign = [#{$2}]")
end + $1
}.to_i
end
BinData = open("DATA30B.sf")
BinData.binmode
while(b = BinData.read(30))
wk = "0x" + b[0,3].unpack("H*")[0] #先頭3バイト(パック10進数)を取り出す
p self.un_pack(wk) #パック10進数を数字変換
end
810 :
デフォルトの名無しさん:2014/05/21(水) 18:04:58.74 ID:rwjAksQw
Rubyはやっぱり、
金融関係のプログラミングには、
あまり向いてないか・・
F#とかのほうがいいのかな?
国語,50,算数,70,理科,80,社会,60
というような文字列を読み込んで点数を合計する場合、どんな配列にするべきか想像がつかんorz
とりあえすspritで分けたら1次元配列にはなったけど、合計がやりにくいんだよね
>>811 二次元配列(配列の配列)かハッシュにしてみては
s = '国語,50,算数,70,理科,80,社会,60'
s.split(',').each_slice(2).to_a
=> [["国語", "50"], ["算数", "70"], ["理科", "80"], ["社会", "60"]]
Hash[*s.split(',')]
=> {"国語"=>"50", "算数"=>"70", "理科"=>"80", "社会"=>"60"}
s.split(',').each_slice(2).inject(0){|total, (k, v)| total += v.to_i }
>s.split(',').each_slice(2).inject(0){|total, (k, v)| total += v.to_i }
細かいけど、最後の inject のブロック内は代入文ではなく加算式だけにすべき
X: total += v.to_i
O: total + v.to_i
あとは、いいんじゃないかと
814 :
811:2014/05/21(水) 21:44:32.01 ID:hjF7pzW+
>>812 slice初めて知りました
ありがとうございます。
817 :
デフォルトの名無しさん:2014/05/22(木) 00:41:16.90 ID:1++y104Q
>>816 いや、なんか関数型とかいうやつだったから、
計算とか強いかなと・・
F#てあまり使われてないの?
Rubyは日本人が作ったのだから、応援したい、
したいけど・・
相場のプログラミングするのに向いてる言語なんだろ?
F#はまだメジャー言語じゃないね
同的言語が嫌なら、C#かVB.NETあたりか
相場とかに使えるのかどうか知らんが、RとかNumPy辺りが流行ってるのかな。
820 :
デフォルトの名無しさん:2014/05/22(木) 01:08:45.22 ID:1++y104Q
ありがとおございます
いろいろありますね、
個人で使うだけだから何でもいいのかもしれないけど、
選択間違えると時間とお金を無駄にしそうでw
一応Rubyも選択肢に入れながらどれにするか決めます。
アクティブファンドのマネージャーとか、どんな言語使っているんだろう
#coding:utf-8
s = "国語,50,算数,70,理科,80,社会,60"
p s.split(',').each_slice(2).inject(0){|total, (k, v)| total + v.to_i }
p s.split(',').each_slice(2).map{|k,v|v.to_i}.inject(:+)
p s.split(',').each_slice(2).to_a.transpose.last.map(&:to_i).inject(:+)
p Hash[*s.split(',')].each_value.map(&:to_i).inject(:+)
p s.scan(/\d+/).map(&:to_i).inject(:+)
p s.scan(/\d+/).inject(0){|a,m|a+m.to_i}
823 :
811:2014/05/22(木) 14:38:11.10 ID:r8fE+JcD
811です
回答して下さった皆さんありがとうございました。
今度は、外部から並べ替え条件を指定した場合のソートについて教えてください。
外部からの指定は、開始位置、桁数、並び順で複数指定可能にしたいです。
外部からの指定が動的に変化するので、
sort条件の部分が動的に変更する必要があります。
そもそもこんな事が出来るのでしょうか?
indata = Array.new
indata.push("001YAMADA 080A") #番号,名前,点数,クラス
indata.push("015TANAKA 065B")
indata.push("010YAMAMOTO 090A")
indata.push("004UETA 070B")
puts indata
puts
s = "16,1,A,13,3,D" #外部からソートキー指定 =>クラス(昇順)、点数(降順)
sortkey_ary = s.split(',').each_slice(3).to_a #カンマで分割し2次元テーブル化
puts "class(A),tensu(D)"
puts indata.sort {|a, b|
(a[16,1] <=> b[16,1]).nonzero? ||
(b[13,3] <=> a[13,3])
}
puts
824 :
811:2014/05/22(木) 14:40:05.83 ID:r8fE+JcD
s = "16,1,D,13,3,A" の場合は、下のようになって欲しい
puts indata.sort {|a, b|
(b[16,1] <=> a[16,1]).nonzero? ||
(a[13,3] <=> b[13,3])
}
>>817 平均以下はjava。平均以上と中学生は関数型。
>>818 DDDが普及しないなら、一生、陽の目なんて浴びないだろ
けれど、c#やscalaよりは遥かにマシ
828 :
811:2014/05/22(木) 17:36:16.90 ID:r8fE+JcD
>>827 まだ理解できてないけど、動きました。
ありがとうございました。
それにしても
こんな短いプログラムで書けるとは・・・
830 :
デフォルトの名無しさん:2014/05/24(土) 07:21:55.84 ID:5JLWtyft
829 : デフォルトの名無しさん[sage] 投稿日:2014/05/23(金) 05:03:21.40 ID:AUTWzj1B [1/1回]
はたから見てもイミフ
それってクラスCとか追加する時どうすんの?
830 : デフォルトの名無しさん[sage] 投稿日:2014/05/23(金) 05:21:05.98 ID:drSoFeIQ [1/2回]
>>829 マジレスするとASC(昇順)/DESC(降順)の頭文字かと
sortコマンドでいけるからお題としてはイマイチ
831 : デフォルトの名無しさん[sage] 投稿日:2014/05/23(金) 05:54:11.31 ID:VJ/4Ga7W [1/1回]
スマンあまりよく読んでなかったわ
こういうやり方のソート分からんのだけど
cの中に["16", "1", "A"]が入って
そのデータが使われる事もなく上書きしちゃってるけどそれは良いの?
s = "16,1,A,13,3,D" の後半しか使わないなら
each_sliceしてる意味がよくわからない
832 : デフォルトの名無しさん[sage] 投稿日:2014/05/23(金) 06:00:38.98 ID:drSoFeIQ [2/2回]
A/Dの意味を理解してないように思えたので指摘しただけ。
オレも質問物の意図も分からないし納得したポイントも分かってないよ。
でも本人がそれで満足してるんだからほっときゃいいかなと。
833 : デフォルトの名無しさん[sage] 投稿日:2014/05/23(金) 07:33:25.62 ID:6y/Uike0 [1/1回]
>>831 > cの中に["16", "1", "A"]が入って
そうならない。なぜなら each_slice のあとに inject があるから
831 :
デフォルトの名無しさん:2014/05/24(土) 07:24:10.88 ID:5JLWtyft
運営バカ過ぎてレスまで飛ぶ
レス消えちゃったし833のバカはスルーでおk
ログが失われるほどの鯖落ちなのに
誰も騒がないところを見ると
本当にもう2ちゃんには人居ないんだな
833 :
デフォルトの名無しさん:2014/05/24(土) 09:41:32.95 ID:6MS9Ym7b
人はいるけどもはやそんなに重要視してない感じ
もうニコニコ関連、ツイッターのほうが巨大なコンテンツだしなぁ
ニコニコで放送してるRubyプログラマって何で文字小さいんだろうかね
ライブコーディングなら文字が見えなきゃ意味ないしよ
自己満ですかい
835 :
デフォルトの名無しさん:2014/05/24(土) 14:10:17.53 ID:7/7koijJ
晒せよつかえねーな
インスタンス変数に外部(そのクラスのメソッド)以外から
アクセサを定義せずに直接アクセスして値を取得する方法を教えて下さい!
837 :
836:2014/05/25(日) 00:34:31.83 ID:GqkgEupz
もう少しやりたいことを補足します
instance_variable_setを使ってオブジェクトに動的にインスタンス変数を追加していて、
そのテストケースで、追加したインスタンス変数が定義されていることと
値のチェックをしたいのです。
定義されていることはinstance_variablesを使って行いましたが、
値の取得ができていません。
instance_variable_getじゃねーの?
夜中にワロタ
def hoge(info)
end
というメソッドがあり、infoは通常ArrayかHashが来るのですが、
そこにネストされたHashが来る場合処理を変えたいのです。
つまり通常は[:a, :b, :c]とか{ a: :X, b: :Y }とかいう引き数が来るのですが、
{
p: [:a, :b, :c],
q: { a: :X, b: :Y }.
r: [:e, :f, :g]
}
という引き数も受け取れるようにしたいのです。
これをメソッド内で判定するにはどうすればいいのでしょうか?
質問をごくシンプルにすると、ただのハッシュか、ネストされたハッシュかを判定する方法を教えて下さいということかもしれません
info.values.first.is_a?(Hash)
ありがとうございました
847 :
811:2014/05/28(水) 17:00:05.79 ID:SVdOuQRr
>>827 s = "16,1,A,13,3,D"
ソート前
"001YAMADA ?? ??080A"
"010YAMAMOTO ??090B"
"011YAMAMOTO ??090A"
下の様になってほしいんですが、うまく行きませんでした。
"011YAMAMOTO ??090A"
"001YAMADA ?? ??080A"
"010YAMAMOTO ??090B"
16,1,Aが第1キーで、
13,3,Dが第2キーなので 優先順位は第1、第2の順で並んで欲しいです。
http://ideone.com/kii3eP
なんか質問の意図とコードの意図がさっぱりだから
ソート前とソート後のデータ数10件くらい出してくれたら何をどうしたいのか分かるかもしれない
850 :
811:2014/05/28(水) 21:49:11.97 ID:sePIB49p
>>849 s = "16,1,A,13,3,D"
意味 17バイト目から1バイトを昇順。14バイト目から3バイトを降順に並べかえたい
いわゆる、クラス毎(Aクラス、Bクラスの順)の成績降順に並べかえたい
ソート前
"001YAMADA ?? ??080A"
"010YAMAMOTO ??090B"
"011YAMAMOTO ??090A"
ソート後
"011YAMAMOTO ??090A"
"001YAMADA ?? ??080A"
"010YAMAMOTO ??090B"
http://ideone.com/kii3eP
>>850 Rubyの添字は0から
> i, l, d = k[0].to_i, k[1].to_i, k[2] == 'A' ? 1 : -1
i, l, d = k[0].to_i-1, k[1].to_i-1, k[2] == 'A' ? 1 : -1
とするか
> c = (a[i, l] <=> b[i, l]) * d
c = (a[i-1, l] <=> b[i-1, l]) * d
とする
あぁ勘違いしてた
無視してださいな
>>850 inject の引数に初期値を指定する
s.split(',').each_slice(3).inject(0){|c, k|
>>830 の 831 が指摘してるのはこのことか
> の中に["16", "1", "A"]が入って
> そのデータが使われる事もなく上書きしちゃってるけどそれは良いの?
> s = "16,1,A,13,3,D" の後半しか使わないなら
> each_sliceしてる意味がよくわからない
854 :
811:2014/05/29(木) 08:41:03.84 ID:yOuey9AU
>>853 とりあえず動きました
ありがとうございました。
でも、injectの意味と
i,lに何が入るのかいまいち理解出来てないorz
s.split(',').each_slice(3).each_with_object(0) {| (i , l , d) , c |
&#160; i = i.to_i # 16 , 13
&#160; l = l.to_i # 1 , 3
&#160; c = (a[i, l] <=> b[i, l]) * ( d == 'A' ? 1 : -1 )
&#160; break c if c.nonzero?
}
injectの使い方がまず変だし
とりあえずその謎イテレータで0か0以外を返したいなら
each_with_object(0)でやったほうがまだ変数に無駄はないというか
途中で気づいたけど
その定数打ち込みみたいなのは
"001YAMADA 080A".split
が
["001YAMADA", "080A"]
になるのが分かってない奴のコードなんじゃない
うっは半角ついに打てなくなった
NetBeans IDE 8.0
jruby 1.7.3
rubyで日本語文字を使うと invalid multibyte char (US-ASCII)エラーがでました
ぐぐって
1.netbeans.conf の netbeans_default_options の項目に"-J-Dfile.encoding=UTF-8"を追加
2.rubyファイルの先頭に"# encoding: utf-8"を追加
を行うとエラーは解消されたんですが、今度は文字化けするようになりました
p "あ" → "\u3042" みたいな状態です
どうやったら日本語が表示できるよになるかご存知のかたはいらっしゃいませんか?
よろしくお願いします
rubyじゃ無理
それ文字化けちゃう
Unicode文字列や
>>857 ・puts を使う
・jruby -Eutf-8 を与える
・おすすめしないけと Encoding.default_internal = "utf-8"を使う
好きなものを選ぶといい。
>>857です
>>858-860さん
教えていただきありがとうございます
あれはUnicode文字列に直された「あ」であって、仕様ってことなんですね
ruby2.0.0でもターミナル上で試してみたけど同じ感じになりました
rubyは今朝から勉強しはじめたんですが、pとputsは同じものだと勘違いをしていました
>>860さんに教えてもらったputsやjrubyにオプションを使ってうまくできました
pとputsの仕様を理解して、どっちを使うか考えてみます
勉強になりました、ありがとうございます
>>861 puts は文字列を表示するためのメソッドで、通常であればこちらを使う。
p はオブジェクトを人間が確認出来るように文字列化して表示するメソッドで、どちらかというとデバッグ用途向け。
nil や "" (空文字) が p と puts でどのように表示されるか試すといい。
それと "\u3042" はもともとユニコード文字列であったものをエスケープ表記したものであって、
ユニコード文字列に直されたものではないよ。
Timeクラスのstrftimeについておたずねします。
リファレンスには「%C: 世紀 (2009年であれば 20)」とあって
実際の世紀より1小さい数字かとも思いましたが
2001年が20になってしまいます。
実装者が間抜けなのでしょうか?
それともリファレンスの執筆者のほうでしょうか?
2001年は21世紀だから20が返るのは当然
この点に関しては間抜けなのは実装者でもなくリファレンス執筆者でもなく、お前
ただ、2000年についても20が返る
これはstrftime(3)の説明では
Replaced by the year divided by 100 and truncated to an integer, as a decimal number
と書かれており、「100で割った切り捨て」なので、世紀ではない
この点ではリファレンス執筆者が間抜けということになる
>>864 それ %y じゃない?
%C は Century の C で man 3 strftime は
% man 3 strftime
...
%C
is replaced by the century number (the year divided by 100 and truncated to an integer) as a decimal number [00-99].
ISO 8601
>>865 %yは100で割った余りだろ
%Cは100で割って小数点以下切り捨てた値(the year divided by 100 and truncated to an integer)だ
これは世紀の(一般的な)定義とは一致しない
くすくす
class Hoge < Fuga
foo :bar
end
このfooはいつのタイミングで実行されるのでしょうか?
コンストラクタを通過する前ですか?
871 :
デフォルトの名無しさん:2014/05/31(土) 20:37:08.23 ID:9VlbAaXB
fooのかわりに p _self とか入れてみればタイミングはわかるよ。
class ... end も評価(実行)される式であって、その評価の最中に fooo が呼ばれる。
ちな、 そのときの self は定義されつつある Hoge(Class クラスのインスタンス)。
872 :
デフォルトの名無しさん:2014/05/31(土) 20:38:17.58 ID:9VlbAaXB
ごめん、なんか謎の _ が self についてるけど無視して。
873 :
デフォルトの名無しさん:2014/06/02(月) 16:32:33.83 ID:1Or10QXx
ゾーン10進数を数字に変換したい。
例えば16進でx"303130c1"を数字の-101に変換したい
x"303130c1" #=> -101
x"31323334d5" #=> 12345
x"31d1" #=> 11
str.unpack("H*")[0]で文字列化は出来た
知識がたりなくて解決できんorz
874 :
873:2014/06/02(月) 16:51:41.26 ID:1Or10QXx
符号を間違えた
x"303130D1" #=> -101
x"31323334C5" #=> 12345
x"31F1" #=> 11
>>873 符号についてイマイチ要領がえられんがこういうことか?
def デコード(入力)
結果 = 0
符号 = 1
桁 = 1
while 入力 > 0
n = 入力 & 0x0f
if n == 0
符号 = -1
else
符号 = 1
結果 += n * 桁
end
桁 *= 10
入力 >>= 8
end
符号 * 結果
end
p デコード 0x303130D1 #=> -101
p デコード 0x31323334C5 #=> 12345
p デコード 0x31F1 #=> 11
876 :
デフォルトの名無しさん:2014/06/02(月) 22:28:57.90 ID:oL0V5+7Q
def foo(&block)
bar &block
end
def bar(a, &block)
define_method(a, &block)
end
foo { puts :test }
2つ先のメソッドにブロックを渡したいときは、その経由するメソッドが常に&で引数を定義しているしか方法はないのでしょうか?
>>876 ブロックを受け取る方法としては、他には引数なしで proc を呼べばできる。
878 :
873:2014/06/03(火) 04:24:41.01 ID:uM/LkyJo
>>875 マスク掛ければいいのか!!!
なるほど。
勉強になります
879 :
873:2014/06/03(火) 04:47:03.82 ID:uM/LkyJo
>>875 n = 入力 & 0x0f
試してないけど、符号が取得できない気がする
上位 = 入力 & 0xf0
if 上位 == 0xd0
符号 = -1
else
符号 = 1
end
とかで出来るんだろか?
>>879 符号は最上位バイトが 0 を意味するかどうかで決まるんじゃないのか。
>>875 の方法は小さい桁から処理するようになっているから
>>879 の方法をそのまま組み合わせてもうまくいかないよ。
もう少し追加する必要がある。
>>880 >>876 は『2つ先のメソッドにブロックを渡したい』と言っている。
受け取ったブロックをそのままの形で渡したいという意味であれば yield は当てはまらない。
実行結果は大差ないのだろうけれど。
教えてください。
タプルを使って、プロセス間の通信を行おうと思います。
で、どうなるのかな〜と、サーバ側で受信をしないまま、クライアント側で延々と送信するってことをやってみました。
サーバ側でデータがたまる?と送信側がだんだんと遅くなっていくように思えました。
この点について、
1. サーバ側で、バッファ?にたまったままのデータの総量を知ることは可能でしょうか。
2. サーバ側で、バッファ?に指定値以上のデータが溜まった場合に、
クライアント側で送信が失敗するようにすることは可能でしょうか。
いずれも可能であれば、その方法も教えていただければと思います。お願いします。
UDP
885 :
873:2014/06/05(木) 10:13:44.42 ID:mY6j5Wz3
>>881 説明不足ですみませんでした。
ゾーン10進数は、一番右端の上位がdでマイナス
cかfでプラスです
t =Thread.start{
loop{
puts "hello"
sleep 2
}
}
とスレッドを作っておいて、t.stop t.runで止めたり走らせたりしよとしましたが、
失敗します。どうやればいいでしょうか?
>>883 >1. サーバ側で、バッファ?にたまったままのデータの総量を知ることは可能でしょうか。
できない
>2. サーバ側で、バッファ?に指定値以上のデータが溜まった場合に、
クライアント側で送信が失敗するようにすることは可能でしょうか。
プロセス間通信サービス上で「フロー制御」と呼ばれる規約(プロトコル)を実現するのが真面目な解決策
フロー制御に関しては、まず最初にWikipediaを参照のこと
詳しくは「ネットワークプログラミング相談室」スレで質問を投げたほうがいい
ただし、普通はバッファが満杯で送信が一時的に不可になるとプロセス間通信サービスへの
呼び出しそのものがブロックされるので、それにまかせるのが一般的な実装
もしもブロックを避けたいのであれば、送信処理だけを独立したスレッドで実行するといった
根本的な方式設計の見直しを検討すべき
それすら難しい環境が前提であれば、はじめてフロー制御の実装も検討課題になる
tumblr_clientを使って取得したデータを置換したいのですが、
tumblrapi.rb:12:in `<main>': undefined method `gsub' for #<Hash:0xb8ece81c> (NoMethodError)
とエラーが出てうまくいきません。
コードの関連すると思われる部分はこんなかんじで、
tumblr = Tumblr.new.posts("hoge.tumblr.com", {:tag => "aaa"})
puts tumblr.gsub("=>",":")
Tumblr.new.posts("hoge.tumblr.com", {:tag => "aaa"})の中身は
{"blog"=>{"title"=>"題名未設定", "name"=>"hoge", "posts"=>1793, "url"=>"
http://hoge.tumblr.com/",
"updated"=>1401719378, "description"=>"", "ask"=>false, "ask_page_title"
…
ってかんじです。
どうやったらうまく行くかわかる方がいたら教えてください。
OSはxubuntu14.04LTSでrubyのバージョンはruby 2.1.1p76です
エラーメッセージの通り
Hashにはgsubなんてメソッドはない
892 :
883:2014/06/05(木) 23:28:39.57 ID:Q6SBWoxC
返信をありがとうございます。
>>884 UDP で送れば、送信側では遅延が発生しないって解釈で正しいですか。
>>888 実現性について、はっきりしたので助かりました。
他人が書いたコードを引き継ぎまして。自分も ruby はあまり経験がなく。
どうも受信した側の処理速度が遅いらしく、気がつくとだいぶか前に受信したデータを処理しているなんてこともあるようでして。
この影響からか、送信側でもタイムアウトエラーが出ているようです。
それでこの対策として、「溜まってたらそれ以上送信できないようにする」という案があり、実現性と有効性を考えていました。
いくつか他にもネタがあるので、根本的な修正をそれとなく提案してはいるような状態です。
893 :
デフォルトの名無しさん:2014/06/06(金) 05:20:22.20 ID:6xRK/1HT
はじめまして。現在Rubyを勉強を始めたばかりです。
Rubyの勉強をするに当たり、自分の書いているコードがどの程度メモリを消費するのかと思い、
ObjectSpace.count_objects()
にて確認しようと思っているのですが、各項目の意味がわかりません。
マニュアル等にもこの項目の説明がないのですが、それぞれの意味はどのようなものなのでしょうか?
最初のTOTALとFREEがメモリ消費量と空き容量と考えたのですが、FREEが空いているにも関わらずTOTALが増えるなど動作がよくりかいできません。
また、この数字の単位はなにになるのでしょうか?
私の環境ではインタプリタの起動だけであれば、20000程度になるのですか単位はKBなのでしょうか?
よろしくおねがいします。
894 :
873:2014/06/06(金) 12:47:39.81 ID:MzEt5DgJ
895 :
873:2014/06/06(金) 15:49:01.01 ID:MzEt5DgJ
いつもお世話になっています。
今度は渡されたパラメータによってデータを抽出したいのですが、
良いアイデアがあったらお願いします。
パラメタ説明
「位置,長さ,データ形式,演算子,比較値」を1セットとして
OR,AND,カッコ()などで条件式を自由に記述する事ができます。
データ形式「CH=文字,以外は数字」
演算子「EQ:(a == b),NE:(a != b),GT:(a > b),GE:(a >= b),LT:(a < b),LE=(a <= b)
たとえば
# (Aクラス かつ 80点以上)または(Bクラス かつ 50点以上)または(Cクラス)を抽出
#パラメタ= "(0,1,CH,EQ,"A",AND,14,3,ZD,GE,80),OR,(0,1,CH,EQ,"B",AND,14,3,ZD,GE,50),OR,(0,1,CH,EQ,"C")"
rubyで書くとこんな感じになります。
outdata = Array.new
indata.each{|s|
if (s[0,1] == "A" && s[14,3].to_i >= 80) ||
(s[0,1] == "B" && s[14,3].to_i >= 50) ||
(s[0,1] == "C")
outdata.push(s)
end
}
パラメタを解析して、上記のような抽出条件を生成したいです。
よろしくお願いします。
http://ideone.com/Mqr7Yv
>>895 ・パラメータは、1つのCSV文字列にする。
・パラメータ文字列内は、逆ポーランド記法にする。
チケットとかの申込をさせるプログラムを書きたいんだけどRubyは適してる?
どこから勉強はじめていいかも教えてもらえるとありがたい。
>>898 いきなり言語から選ぶ時点で間違っている。設計による。
>>899 なるほど。あまりWebに関する知識も経験もないんだけど、設計とはどんな感じですればいいのだろう?
取っ掛かりが分からなくて困ってる。
Rails なら馬鹿でも使えるよ!
>>900 いつのまにwebという設計にしたが知らんが。
OMTとか既存の設計手法を使えばいいんじゃない。ただいきなりやっても失敗するだろうから、まともな設計ができる人の下について学ぶ方がいいと思う。
904 :
895:2014/06/07(土) 13:56:57.57 ID:nytus6Pq
>>893 ruby が管理しているオブジェクトの個数を表しており、バイト数ではない。
で、TOTAL は FREE も含めたオブジェクトの総数を示している。
残念ながら使用メモリ量を確認する手段は用意されていない。
OS が提供する機能を dl ライブラリを通して取得するか、gem ライブラリにあるかは不明だがそちらを探してみ。
ちなみに ObjectSpace.count_objects が返すそれぞれのキーは ruby の実装内部におけるデータ形式で、
それぞれのインスタンスだと考えていい。
例えば T_STRING は文字列 (派生を含む String クラスのインスタンス) を表している。
分かりづらいのは
* T_DATA が C 言語レベルでのデータを持つインスタンス
* T_ICLASS が特異オブジェクトのための特殊なクラス
* T_NODE が ruby スクリプトを解釈した構文木の要素
を表しているってところかな。
906 :
,,・´∀`・,,)っ-○○○:2014/06/07(土) 17:20:34.79 ID:x3Apu0jy
>>901 雛形改造レベルである程度のものが作れるのは確かだけど
バカには使わせちゃいけないのがRails
907 :
デフォルトの名無しさん:2014/06/07(土) 22:09:30.36 ID:mg6Kw861
そう思った理由とソースを書けよタコ野郎
rubyとpythonがよく比較にあがるらしいのですが、具体的にどんな違いがありますか?
仕事で使われる時に、何故rubyを使うのか、pythonを使うのかといった判断基準も気になります
910 :
デフォルトの名無しさん:2014/06/09(月) 16:22:14.70 ID:wV+5vPJS
Rubyって、サブクラスからスーパークラスの別名メソッド呼べないんですかー?
スーパークラスの同名メソッドならsuperで呼べるんですが。
911 :
910:2014/06/09(月) 16:28:05.18 ID:wV+5vPJS
あ、スーパークラスのメソッドがサブクラスでオーバーライドされている時です。
そんなことになるなら継承しちゃいかん
914 :
910:2014/06/09(月) 18:20:01.87 ID:wV+5vPJS
>>913 先生こうですか!
できました、ありがとうございます。
くだらないことでも、質問してよかったです。
ためになりました。
class A
def foo; "Super!"; end
end
class B < A
def foo; "Sub..."; end
def bar
um = A.instance_method(:foo)
um.bind(self).call
end
end
p B.new.bar
くそっ わざわざ英語のリファレンスを選んだってのに
というかそのクラス構成ならclass Bでdef fooをする前にaliasをして
barからそのメソッドを呼ぶようにするべきだな
何を作りたいかは知らないが
経験上単一継承で作るよりは極力必要なクラスでMix-inしたほうがいいかなと思う。
ActiveRecord::Base
|
HogeAppBase←ここにあらゆる共通メソッドを追加
|
Model複数
こんな継承関係やったらコードがえらく汚くなったことがある
917 :
910:2014/06/09(月) 20:16:44.97 ID:wV+5vPJS
>>915 なるほど、この方法も見事ですね。
こんなのを思いつくなんて、先生は相当な手足れですね。
class A
def foo; "Super!"; end
end
class B < A
alias baz foo
def foo; "Sub..."; end
def bar; baz; end
end
p B.new.bar
ありがとうございました。
918 :
910:2014/06/09(月) 20:18:19.39 ID:wV+5vPJS
>>916 Rubyの試験受けようかと思って、いろいろ遊んでるだけです。
また教えてくださいね。
2.1.2でSJISとバイナリの混合データを処理し画面に
表示する場合、どのような実装が推奨されますか?
試してみたこと
1.1.8的に書く
→$>に出力すると文字化けで読めない
2.read後にforce_encoding("Windows-31J")で文字コードをセット
→scan(regexp)や[regexp, n]などでエラーが出る
3.適宜Windows-31JとASCII-8BITを切り替える
→トラブルの元
4.表示するたびにNKFやKCONVで変換
→そのためにNKFを使うのも・・・見た目もよくない
なにか、お手軽かつスマートな実装があれば・・・
よろしくお願いします
binaryで読んで文字列部分だけ切り出してforce_encoding
>>917 俺が考えたんじゃなくて先達の知恵
オープンソースっつー鉱脈もあるんだから
この手のことは他人から盗むのが一番だ(コピペの意味じゃないからな、念のため)
>>898-903 WEB系でDB を使うのは、PHP が多い
Web プログラミング板を参照
PHPのスレが数十ある
山田祥寛(よしひろ)
10日でおぼえる PHP 入門教室、第4版、2012
この本では、Apache Friendsが提供する、XAMPPを使っている
XAMPPとは、Apache ウェブサーバやMySQL, PHP
などがセットになったもの
Rubyは、シェルスクリプトやPerlを置き換えるもので、
サーバの構築などに使われる
プログラミングするというより、
条件分岐してコマンドを呼び出すのによい
Perl代わりとしては
OSとは別個に入れて管理しなきゃいけないのと互換性の低さが致命的なんだよなあ
>>923 PerlがOSインストールと同時に入るような環境なら、RubyもOSに合ったもの入れられるだろ。
Windowsとかの、パッケージ管理が無い環境なら論外だが。
>>923 PerlでもPythonでもそれは同じじゃないか
>>922 PHPはウェブデザイナが手を出しやすいから人が多いだけで、使いづらいと感じる。
林檎謹製Swiftだって。。。
対抗馬になりそうな言語への弾圧作戦が開始されるんだろうね
林檎箱から指令を受けたマカーによる工作が、
Pythonなど支援団体が強固なところは乗り切れるだろうが、Rubyはどうかな
マカーに祭り上げられてポヤポヤしてたときに潜入した工作員や団体が残ってるから
ダメも知らんね。すでにガタガタ言わされてるようですね。
Macサイコー!Windowsしねーみたいな感じだったでしょ、いまさらWIndowsを
拠点にするわけにも逝かないし、Linuxはやっぱり鯖用途が重視されるから
拠点を構築してても攻撃されたら一気に持っていかれそう。
JRubyみたいな感じで旧資産を吸収される流れを加速させて工作員ごと分離して
廃棄後に、国産言語枠で細々とやっていくというのが現実的なのかもね。
>>924 Windowsにもパッケージ管理導入されるよ
>>927 Swiftに踊らされる馬鹿がここにも一匹
Objctive-C にあった裸のC言語によるメモリ破壊という欠点を補い、
対抗相手のJava/C++と同レベルのメモリ保護に追いついたのがSwiftだ
それがAppleの言う安全性(safety)というSwiftの利点の意味するもの
静的型付け言語としてSwiftと比較、競合されるのはObjC/Java/C++であって、
PythonやRubyといったスクリプト言語に直接的な影響を与えることはない
ましてや現時点において、OSX/iOSといったAppleプラットフォーム上で
死にかけているスクリプト言語はRubyではなくPythonのほうだ
Rubyには、MacRuby(OSX)やRubyMotion/RubyMobi(iOS)があるから、
OSX/iOSネイティブ・アプリケーションを素早く開発するための
オープンソースなスクリプト言語として最も優位な位置を占めている
それに対して、Pythonといえば旧世代の実装であるPyObjCで開発が停滞している
・Python for iOS (like RubyMotion) - Stack Overflow
http://stackoverflow.com/questions/10456648/python-for-ios-like-rubymotion > you can't really compare PyObjC and Macruby, PyObjC is a bridge like RubyCocoa
> as you already said MacRuby is Ruby on Top of ObjC runtime.
> By replacing the Garbage collector from PyObjC will not work since it's a Bridge.
> – Sean Mateus May 14 '12 at 13:32
Ruby 2.xが標準で載るのは何時なんだろ。
レン鯖は今だにサポートの終った1.8.7しか載っていないし。
CentOSのパッケージに入ったときだろうな
MacユーザーこそRails使いが多い
ネイティブコード吐く言語とWebに強いインタプリタ言語じゃ全然守備範囲が違うだろ
Rails使いにMacユーザーが多いのは確かだが逆はそうでもない
世界的に見ればMacユーザーはPythonの圧勝だ
絶対プログラマ数であればPythonのほうが多いのは現実だから、
それに比例してMac/iPhoneユーザのプログラマ数でも
おそらくはRubyプログラマよりPythonプログラマが多いのだろう
(Macには個人向けUNIXワークステーションとしての用途があるからね)
ただし
>>929で書いたように、言語の処理系実装という技術的視点であれば、
ネイティブOSX/iOS開発向けスクリプト言語として「Pythonの敗北は決定的」だ
PyObjCは(RubyCocoaに相当する)ブリッジを前提とした世代遅れの実装でしかない
本番環境はやっぱりUbuntuのLTSだよな
ttp://ideone.com/dHxqTh どこかで見かけた階段の登り方の総数は。(一回に上れるのは1,2,3段)
という問題を解いていてトリボナッチ数列使えることに気づき上記のコードを書いたのですが、これ以上に最適化(高速化、より深い再帰など)ってできるんでしょうか。
それがわかるレベルの人はここにはいないので
2ch以外で聞いた方がいいです
>>936 ほとんど変わらんけど
class TriBonacci
def initialize
@memo = [1,1,2]
end
def f(n)
@memo[n] || @memo[n] = f(n-1) + f(n-2) + f(n-3)
end
end
n = 6500
p TriBonacci.new.f(n)
>>938 成る程、短絡にすると読みやすいし無駄も減りますね。
>>939 ものすごい数の場合を計算させるときは素直に計算するのではなく、アルゴリズムを考えるのが正解なんでしょうか。
4コア8コア当たり前のせかいだし
シェルに投げてもいいんじゃないの?
>>943 このアルゴリズムの成立過程が気になります。
トリボナッチ数列に固有の性質として添え字が偶数奇数かにより効率よく計算できる式が導けるける。ということでしょうか。
require 'matrix'
def f(n)
(Matrix[[1,1,1],[1,0,0],[0,1,0]]**n)[0,0]
end
なんてのも試しましたが
n = 1000000
のとき
>>953のコードの凡そ15倍でした。
946 :
デフォルトの名無しさん:2014/06/15(日) 06:29:10.87 ID:/gWIMzTb
質問です。
スクリプトファイル内で、スクリプトファイルが置かれているディレクトリを
取得したいんですが、どうすればいいでしょうか。
File.basename($0) とすると、他のスクリプトファイルから呼ばれた時に、
「呼び出した側」のパスが $0 に入ってきてしまいます。
どこから呼ばれても「呼び出された側」のパスを取得できるようにしたいのです。
よろしくお願いします。
>>945 なるほど、一般項を出すのではなく別の表現を得るために特性多項式を用いることもできるのですね。
行列のn乗を2n乗にして比較するとかはフィボナッチ数列の場合ほどうまくいかなかったので諦めてしまったのですが、これは目から鱗でした。
949 :
946:2014/06/15(日) 09:33:39.88 ID:/gWIMzTb
>>948 「Ruby __FILE__」でググったところ、File.expand_path(".") で
「呼び出される側」のディレクトリが取得できることがわかりました。
ありがとうございました。
これで、どこからスクリプトを呼んでも同じ挙動をするようにできます。
ん?
951 :
946:2014/06/15(日) 13:42:04.59 ID:/gWIMzTb
>>950 あ、
>>950でFile.basenameとFile.dirname間違えました。
失礼しました。
952 :
デフォルトの名無しさん:2014/06/15(日) 18:22:50.87 ID:gpx89xWw
$0
gnuplotみたいに
gnuplot > hoge
とか対話式のコマンドラインツールを作りたいんだけど、
editlineとかreadlineみたいな仕組みも取り入れつつ、
簡単に書けるライブラリとかないでつかね