X



Ruby 初心者スレッド Part 64
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2018/09/01(土) 19:25:16.66ID:wk35+pf/
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 63
https://mevius.5ch.net/test/read.cgi/tech/1523954817/

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

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

逆引きRuby
http://www.namaraii.com/rubytips/

Ruby コミュニティ公式
https://www.ruby-lang.org/
0730デフォルトの名無しさん
垢版 |
2018/10/23(火) 16:50:50.47ID:9qrW/tmi
ruby でストリームで zip を作るのってどうしたらいいんですか?

zip を扱うには rubyzip っていうのを使う記事が多いけど
zip を作るときにストリームでファイル1つ1つ追加できるっていうだけで
出力は完成してからしないといけないみたいで
少しずつ中身を取り出す方法ってないでしょうか?

ZIP自体はストリームに対応してるみたいなんですが
0731デフォルトの名無しさん
垢版 |
2018/10/23(火) 16:56:54.29ID:yFsvvFWj
zlib
0732デフォルトの名無しさん
垢版 |
2018/10/23(火) 20:03:22.28ID:9qrW/tmi
zlib ドキュメントよんでみたんですけど
複数ファイルをZIPにするってどうやるんですか?
単一ファイル操作しかないようにみえるんですけど
0734デフォルトの名無しさん
垢版 |
2018/10/24(水) 02:27:17.69ID:2LYWqLo0
以下を実行したら、ABCDE, 0 の順番で出力された。
( )に関係なく、左側から順番に評価された!
Java でも同じらしい

ary = [ ]

def getValue ( str )
puts str; 0
end

p ary[ getValue("A") ] = getValue("B") + ( getValue("C") + ( getValue("D") + getValue("E") ) )
0735デフォルトの名無しさん
垢版 |
2018/10/24(水) 08:53:32.74ID:+vpF9pgu
irbの設定ファイルである~/.irbrcを任意の場所に任意の名前で設定することってできますか?
irb(1)のマニュアルを読む限り設定できなさそうなのですが なにぶん素人なので実は勘違いだということもあり質問しました。
よろしくおねがいします。

https://linux.die.net/man/1/irb
0736デフォルトの名無しさん
垢版 |
2018/10/24(水) 08:57:45.64ID:roEuQo4O
>>728
>>729
ありがとうございます!
0737デフォルトの名無しさん
垢版 |
2018/10/24(水) 10:23:23.61ID:u4k0FB1t
>>735
環境変数 IRBRC
0738デフォルトの名無しさん
垢版 |
2018/10/25(木) 00:21:03.53ID:R/0gSUq3
>>737
うーん。ログインシェルで
export IRBRC=~/LOCAL/irbrc
としてるんですけどどうやら反映されていませんね。
irbにおいて
> puts ENV['IRBRC']
とやると/home/username/LOCAL/irbrc
と返ってくるので場所は読み込まれていると思うんですけどね……。

irb 0.9.6 on Debian 9
0739デフォルトの名無しさん
垢版 |
2018/10/25(木) 00:44:40.77ID:9zbDNBNy
>>733
https://docs.ruby-lang.org/ja/latest/library/zlib.html
これじゃないんですか?

https://docs.ruby-lang.org/ja/latest/class/Zlib=3a=3aGzipWriter.html
かきこみ
https://docs.ruby-lang.org/ja/latest/class/Zlib=3a=3aZStream.html
ストリーム

あたりよんでみたんですけどファイルを指定できるのは1つだけで
途中でファイルやオブジェクト、エントリを追加するみたいなメソッドが1つもない気がするんですが
0740デフォルトの名無しさん
垢版 |
2018/10/25(木) 12:19:50.90ID:MxtFgRlu
railsのform_withって何をループさせてるの?
0743デフォルトの名無しさん
垢版 |
2018/10/26(金) 00:07:25.47ID:PFgc5eHH
>>730です
サーバーサイドで複数のファイルをZIPにつめてダウンロードさせたいけど
ファイル数が多いから一度にメモリ上におきたくない
0744デフォルトの名無しさん
垢版 |
2018/10/26(金) 00:28:35.43ID:pE8f1AMr
>>743
そんなもん一旦ファイルに保存してzipコマンド呼んで解凍すればよい
それがスクリプト言語やUNIXの正しい使い方だ
他のプロセスに役割を任せることは恥ではない
0745デフォルトの名無しさん
垢版 |
2018/10/26(金) 01:05:46.27ID:PFgc5eHH
あきらめてその方向で実装してるけど
今度はダウンロードが始まるまでに時間がかかるせいで
JSで何かしらプログレスかindicatoorつけなきゃいけないんだけどめちゃめちゃ難しい
これ以上はスレチだからいわないけど正直rubyでストリームDLできればこんな苦労しなくてすむのに…
0747デフォルトの名無しさん
垢版 |
2018/10/26(金) 01:47:51.93ID:E+2rE/Ml
>>744
> それがスクリプト言語やUNIXの正しい使い方だ

APIやライブラリ呼ぶなってこと?
C言語使う意味ないだろ
0749デフォルトの名無しさん
垢版 |
2018/10/26(金) 01:53:20.93ID:E+2rE/Ml
はぁ、zlibってzipなどのファイル形式で使用されてる
圧縮アルゴリズムのライブラリじゃん
アルゴリズムだけあったってファイル作れるわけ無いだろ
0750デフォルトの名無しさん
垢版 |
2018/10/26(金) 06:02:16.85ID:9dCnW3IN
>>747
思想を理解してないみたい
APIやライブラリを呼ぶことこそUnix流なんじゃないの?
だから、Pythonはその代表格
0751デフォルトの名無しさん
垢版 |
2018/10/26(金) 08:14:34.19ID:pE8f1AMr
APIやライブラリを呼ぶのと役割以上の余計なことをしないのは別問題だよ
zipコマンドがzlibを使うのは当然だが、例えばインターネットのURLからのダウンロード機能を備えるべきではない
0752デフォルトの名無しさん
垢版 |
2018/10/26(金) 08:33:59.35ID:GwvyvDN1
アプロダの様にタイムカウンターを付けて時間を稼ぎ、用意できたらリンクを表示するようにすれば良いのでは?
0754デフォルトの名無しさん
垢版 |
2018/10/26(金) 08:57:37.12ID:PFgc5eHH
ていうか独学で半年 じつむで半年rubyさわったけど
ここみてるとまだ初心者でもなかったんだなって
回答のレベルが高すぎるのか不親切なのかわからないけどまったくやり方がわからない
Railsの案件なんか手出すんじゃなかったわ

JavaやJavascriptは独学でも質問スレやteratailあたりで回答してくれる人が結構いるんだけど…
0755デフォルトの名無しさん
垢版 |
2018/10/26(金) 10:24:27.55ID:8kUYcP+w
初心者スレには初心者しかいないんだから、
茶化すだけでちゃんと答えもったやつがいるわけないだろ
0756デフォルトの名無しさん
垢版 |
2018/10/26(金) 12:38:53.19ID:xBIHPZW8
>>730
完成前に内容を取り出すのは、Ruby の機能じゃない。
YouTube などのライブ配信機能

やって来たデータだけを変換して、すぐに送り返す

質問者は名前欄に、質問したレス番号を入れてくれ
0757デフォルトの名無しさん
垢版 |
2018/10/26(金) 14:07:36.32ID:ScQN6FWl
gemについての質問です
$ gem install xxx --user-install
とした場合
~/.gem/ruby/2.3.0/bin/
に実行可能なファイルが作成されますがこのディレクトリを取得する方法を知りたいです。
$ gem env GEM_PATH
などでも一意に絞れず……。

$ gem install xxx --user-install
した時のパスを取得する方法ってないんですかね。
0758デフォルトの名無しさん
垢版 |
2018/10/26(金) 14:56:11.56ID:2qgVXRaq
>>757
$ ruby -e 'puts Gem.bindir(Gem.user_dir)'
0759デフォルトの名無しさん
垢版 |
2018/10/26(金) 18:42:13.63ID:ScQN6FWl
>>758
ありがとうございます! 無事、パスが取得できました。
gemコマンドでは取得できないんですね……。
なにか理由あるのでしょうかね。
0760デフォルトの名無しさん
垢版 |
2018/10/26(金) 22:11:17.44ID:PFgc5eHH
>>755
やっぱりそうですよねー
できないならできないでいいんだけどzlibでできるっていうから調べたのにその後音沙汰ないし
できないことをできるっていってソースだしてくれないのが時間だけ無駄になるから一番困る

>>756
最終的に a b c 3つのファイルをまとめたZIPを作る際に
a だけを追加した瞬間のデータを取り出すというのは
プラットフォーム関係ないデータや文字列上の操作の話ですよね

それをクライアントに送り消す方法とかになるとサーバーフレームワークやブラウザ依存の話になってくるけど
0761デフォルトの名無しさん
垢版 |
2018/10/27(土) 00:09:38.25ID:5/IIU5Ep
>>760
Kernel.openやIO.popenでコマンドとパイプつなげられる。ファイルがどこかに置いてあるならzipコマンドからSTDOUTに出力させてパイプでつないで受け取ればいいんじゃね?
0762デフォルトの名無しさん
垢版 |
2018/10/27(土) 00:23:01.64ID:QbA5AMkn
UNIXコマンドよびださなきゃ言語内だけでは何ひとつまともなことができないゴミ言語だってはっきりわかんだね
0763デフォルトの名無しさん
垢版 |
2018/10/27(土) 00:26:30.74ID:5/IIU5Ep
添付ライブラリにあるzlibとstringioとThread使っても出来そうな気はするがそこまでやる気はない
0764デフォルトの名無しさん
垢版 |
2018/10/27(土) 00:29:10.59ID:5/IIU5Ep
zipの仕様よく知らないけどファイナライズしないで途中の内容確定するのかな
0765デフォルトの名無しさん
垢版 |
2018/10/27(土) 00:42:16.82ID:QkHwtfgJ
>>762
ほんそれ
0766デフォルトの名無しさん
垢版 |
2018/10/27(土) 00:44:57.26ID:4RrrP6U6
> UNIXコマンドよびださなきゃ言語内だけでは何ひとつまともなことができないゴミ言語だってはっきりわかんだね

C言語「・・・」
0767デフォルトの名無しさん
垢版 |
2018/10/27(土) 00:50:08.68ID:4RrrP6U6
言語の標準機能は必要最小限にしてライブラリを使いましょう派
 VS
ライブラリなんかいらない、なんでも言語の標準機能にしてしまえ派


俺は前者だな。C言語、JavaScript、Rubyなんかが当てはまる

後者に当てはまる言語はPHPか?
0768デフォルトの名無しさん
垢版 |
2018/10/27(土) 00:52:27.94ID:4RrrP6U6
恐ろしいことに、PHPはZIPライブラリが言語標準機能なんだよなぁ

http://php.net/manual/ja/zip.installation.php

> これらの関数を利用するには、設定オプション --enable-zip を使用して
> zip サポートを有効にして PHP をコンパイルしなければなりません。
>
> PHP 5.6.0 からは、--with-libzip=DIR オプションが追加されました。これを指定すると、
> システムにインストールされた libzip を利用します。 libzip 0.11 以降が必要です。0.11.2 以降を推奨します。
0770デフォルトの名無しさん
垢版 |
2018/10/27(土) 02:00:16.08ID:QbA5AMkn
exec からシェル呼び出してコマンドたたいてしかもパイプでつないでとかライブラリとはよばん
0771デフォルトの名無しさん
垢版 |
2018/10/27(土) 07:32:29.11ID:4RrrP6U6
つまり>>770が言いたいことは、libz.soとかのC言語などで使った
ライブラリをRubyから呼ぶことができるならば、
Rubyは素晴らしい言語ということです。
0772デフォルトの名無しさん
垢版 |
2018/10/27(土) 08:05:45.26ID:S4VvuAVS
ようするにシェルスクリプトで十分ということか
ルビーみたいなウンコいらないという結論になるな
0773デフォルトの名無しさん
垢版 |
2018/10/27(土) 08:22:49.85ID:QbA5AMkn
マジレスすると zipline 使え
やりたいことが1行でかける
なんで回答に出ないのか謎だわ
0775デフォルトの名無しさん
垢版 |
2018/10/27(土) 10:29:27.94ID:4RrrP6U6
すべてのライブラリの機能を把握してない
Rubyプログラマなんてこの程度やで

まあこういうレスがくるんでしょうなぁw
0777デフォルトの名無しさん
垢版 |
2018/10/27(土) 14:44:58.20ID:BbyQQXdF
~/.irbrcってどんな感じにしてます?
readlineとirb/completionくらいは有効にしてるけど
なんかインタラクティブで便利な小関数とかあったら教えてほしいです。
0779デフォルトの名無しさん
垢版 |
2018/10/30(火) 01:46:25.15ID:tLch1bmf
ハッシュ内に、あるキーが存在するかどうかだけを知りたい場合、
配列の要素をキーにして、配列からハッシュを作るのに、
以下のように書いていますが、もっとよい書き方がありますか?

ただし、ハッシュの値は使わないので、nil 以外なら何でもよい

h = { }

%w(a b c).map{ |e| h[e] = true }
p h
0781デフォルトの名無しさん
垢版 |
2018/10/30(火) 15:01:28.07ID:p4LrBCE7
begin
rescue
end
0782779
垢版 |
2018/10/30(火) 21:46:09.04ID:tLch1bmf
ただ単に、配列の要素を、ハッシュのキーに登録して、その文字列の存在確認だけをしたい場合に、
ハッシュの値は使わないので、nil 以外なら何でもよいので、以下のように書いています

もちろん配列で、Enumerable のinclude?, member? を使えば、要素の存在確認ができるのですが、
配列では要素を全探索(計算量 O(N))してしまうため、わざわざハッシュに入れています。
全探索では計算量 O(N)ですが、ハッシュでは、O(1)なので要素数に左右されないため

こういう用途で皆さんは、どのように書いていますか?

h = { }

%w(a b c a).map{ |e| h[e] = true }
p h #=> {"a"=>true, "b"=>true, "c"=>true}
0783デフォルトの名無しさん
垢版 |
2018/10/30(火) 22:20:43.93ID:Zbq+CYDW
>>782
Setを使うのが普通だろうね
Setは内部ではHashを使ってるので、やってることは変わらないけど
0785デフォルトの名無しさん
垢版 |
2018/10/30(火) 22:59:41.01ID:4k+bjVEd
commonmarker 0.17.x から0.18.xに上げたら、html混ざりmarkdownをコンバートすると
htmlは省略だぁ〜ヒャッハー
となるようになってしまった。OTL
0787779
垢版 |
2018/10/30(火) 23:16:04.14ID:tLch1bmf
Ruby に、set があったのか!

配列で集合演算するから、忘れていたわ
0789デフォルトの名無しさん
垢版 |
2018/11/04(日) 14:01:58.67ID:72B38wDh
記号の読み方について
!= はノットイコールだよね?
=> はファットカンマだよね?
=~ に読みかたってある?
あと、\(バックスラッシュ)のこと何て呼んでる?そのままバックスラッシュ?
教えて
0790デフォルトの名無しさん
垢版 |
2018/11/04(日) 14:08:45.24ID:5RY1Lh2I
go c
0792デフォルトの名無しさん
垢版 |
2018/11/04(日) 14:24:33.61ID:72B38wDh
>>790
go chiebukuro?
0793デフォルトの名無しさん
垢版 |
2018/11/04(日) 14:24:58.57ID:72B38wDh
>>791
かわいい
0796デフォルトの名無しさん
垢版 |
2018/11/04(日) 18:27:11.42ID:rLQVzKFu
>> 792
5c
0799デフォルトの名無しさん
垢版 |
2018/11/09(金) 16:54:13.33ID:ALrpS26S
ttps://www.ruby-lang.org/ja/downloadsから
「RubyInstaller1.3.3」をダウンロードしたいんだけど、どこにありますか?
0802デフォルトの名無しさん
垢版 |
2018/11/09(金) 20:28:20.74ID:ALrpS26S
>>800
はい。そうです。

>>801
私がやりたいことはバージョンが上でももないとのことでした。
返信ありがとうございました。
0804デフォルトの名無しさん
垢版 |
2018/11/09(金) 21:40:15.28ID:ALrpS26S
>>802
誤字ってたので訂正

× 私がやりたいことはバージョンが上でももないとのことでした。

○ 私がやりたいことはバージョンが上でも問題ないとのことでした。

>>803
ありがとうございます
0805デフォルトの名無しさん
垢版 |
2018/11/09(金) 22:07:29.84ID:LcYc+UJI
>>804
この辺>>686-687も参考にせいぜい頑張ってねw

686 デフォルトの名無しさん 2018/10/17(水) 20:13:17.85 ID:pcmrmHBT
ドキュメント軽視とWindows蔑視はRubyコミュニティの伝統。
コードが仕様だ!Windowsなんて使ってる奴が悪い!

687 デフォルトの名無しさん sage 2018/10/17(水) 20:17:44.70 ID:z+Rs6gUv
Unixで開発してるとGCCツールチェインは自然に入ってるからね
はっきり言うね、Windows使いに人権はありません
0809デフォルトの名無しさん
垢版 |
2018/11/12(月) 12:14:58.73ID:XIxjtr9D
30歳無職なんだけど俺にもプログラミングできるかな?
https://www.loserblog.net/
0810デフォルトの名無しさん
垢版 |
2018/11/13(火) 03:53:48.37ID:gWmuHRek
Ruby installer のDevkit 無し(ポータブル版)は、MSYS2/MINGW、GNU コンパイラが無いので、
ソースコードからコンパイルできないけど、サイズは2〜3GB 小さい

WebSocket, Rails, VSCode のデバッグ機能などは使えないけど、
Sinatra, Nokogiri, Selenium WebDriver などは使える
(WebSocket のバイナリをネットで探したけど、見つからなかった。どこかにない?)

漏れは、Windows10 で、ruby 2.4.4 を使っている。
2.5 系は、まだ新しいから使わないように

ポータブル版を、C:\Ruby24-x64 に置いて、
ユーザー環境変数PATH に、C:\Ruby24-x64\bin を追加すればよい

漏れは、ユーザー環境変数RUBYOPT に、--encoding=UTF-8 も設定しているけど、
これで、irb は使えなくなる

ただし、Windows のirb は、日本語がバグるので、
irb を使うのなら、WSL で、Ubuntu 16.04 に、Ruby 2.3.1 を入れて、そちらを使う。
Ubuntu 18.04 は、まだ新しいから、もうちょっと様子を見る

入力補完が効かないけど、VSCode で作ってる。
MSYS2 を入れれば、入力補完できるのかね?
0811810
垢版 |
2018/11/13(火) 04:09:32.58ID:gWmuHRek
Windows10・WSL の、Ubuntu が、日本語でも入出力できるのは、
コマンドプロンプトの画面と同じものを使っているから

でも、irb みたいに、Linux 側のソースコードで、
独自にWindows 向けにコンパイルしたものは、半角英数字しか動かない。
日本語など、他の言語はバグル

pry も、irb を使っているのだっけ?

漏れの希望としては、Windows10・WSL の、Ubuntu みたいに、
コマンドプロンプトの画面と同じものを使って、作ってほしい

そうそう、最初にgem で、パッケージマネージャーのBundler を入れる。
それ以後は、gem を使わず、Bundler で他のgem をインストールすればよい
0812デフォルトの名無しさん
垢版 |
2018/11/13(火) 07:22:43.54ID:e2cmk+aq
なんじゃそりゃ
windowsでマルチバイト文字が文字化けするのはreadlineの所為
pryとirbはソースレベルで全く別物
0813デフォルトの名無しさん
垢版 |
2018/11/13(火) 08:58:09.11ID:M3rNGpof
こいつ>>810>>811、Ruby関係ないスレで脈絡なく自分語りとRubyの宣伝しだしたり、他言語専用質問スレでRubyで回答してからRubyの宣伝しだしたり非常にウザいんだが。
このスレから出てこないようにしとけよ。
0814デフォルトの名無しさん
垢版 |
2018/11/13(火) 18:35:35.73ID:EVOGh0na
Ruby糞
0815810
垢版 |
2018/11/13(火) 23:41:18.63ID:gWmuHRek
そのreadline を使っていると、Windows で日本語でバグるのだろう。
Windows で半角英数字以外には、対応していないのだろう

Windows10・WSL の、Ubuntu では、
メニューなどもコマンドプロンプトの画面と、全く同じだから、日本語でもバグらない
0818デフォルトの名無しさん
垢版 |
2018/11/14(水) 09:06:46.01ID:BvL9P3zV
vs codeからvimに乗り換えようと思う。マウス捨てればいいんだろ?
0823デフォルトの名無しさん
垢版 |
2018/11/14(水) 20:23:51.58ID:D2WaC5Jp
>>820
require 'win32ole'
colItems = WIN32OLE.connect('winmgmts://./root\CIMV2').ExecQuery("Select * from Win32_PNPEntity Where (Name like '%(COM%)')" )
colItems.each{|obj| puts obj.Caption }
0824デフォルトの名無しさん
垢版 |
2018/11/15(木) 09:15:54.74ID:NWUUxe6q
ぶっちゃけvlmがvscodeに勝ってるところなんてあるか?
0825デフォルトの名無しさん
垢版 |
2018/11/15(木) 09:46:17.53ID:P9aoBmqQ
>>824
vimはRuby界における公式エディタであるemacsの仇敵だし、vscodeはMSという大悪魔に魂を売ることになる
目糞鼻糞
0826デフォルトの名無しさん
垢版 |
2018/11/15(木) 12:05:23.30ID:tGnWpqvT
vimからRuby呼び出してスクリプトによる編集処理してもいいんじゃない?
0827デフォルトの名無しさん
垢版 |
2018/11/15(木) 12:52:11.17ID:lNkjj0jr
>>825
Haskellerの癖にvi使いになった自分からすると、ぶっちゃけ編集能力の割に軽いってのがある。
編集能力単体ならemasやvscoreの方があるかも知れないが、軽さとのコスパはvi。
ちょっと編集したい程度ならviの方が速い。
■ このスレッドは過去ログ倉庫に格納されています

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