Ruby 初心者スレッド Part 64
■ このスレッドは過去ログ倉庫に格納されています
プログラミング言語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/ ruby でストリームで zip を作るのってどうしたらいいんですか? zip を扱うには rubyzip っていうのを使う記事が多いけど zip を作るときにストリームでファイル1つ1つ追加できるっていうだけで 出力は完成してからしないといけないみたいで 少しずつ中身を取り出す方法ってないでしょうか? ZIP自体はストリームに対応してるみたいなんですが zlib ドキュメントよんでみたんですけど 複数ファイルをZIPにするってどうやるんですか? 単一ファイル操作しかないようにみえるんですけど 以下を実行したら、ABCDE, 0 の順番で出力された。 ( )に関係なく、左側から順番に評価された! Java でも同じらしい ary = [ ] def getValue ( str ) puts str; 0 end p ary[ getValue("A") ] = getValue("B") + ( getValue("C") + ( getValue("D") + getValue("E") ) ) irbの設定ファイルである~/.irbrcを任意の場所に任意の名前で設定することってできますか? irb(1)のマニュアルを読む限り設定できなさそうなのですが なにぶん素人なので実は勘違いだということもあり質問しました。 よろしくおねがいします。 https://linux.die.net/man/1/irb >>737 うーん。ログインシェルで export IRBRC=~/LOCAL/irbrc としてるんですけどどうやら反映されていませんね。 irbにおいて > puts ENV['IRBRC'] とやると/home/username/LOCAL/irbrc と返ってくるので場所は読み込まれていると思うんですけどね……。 irb 0.9.6 on Debian 9 railsのform_withって何をループさせてるの? >>738 /home/username/LOCAL/irbrc ここに、ディレクトリ・ファイルを作っていないとか? >>730 です サーバーサイドで複数のファイルをZIPにつめてダウンロードさせたいけど ファイル数が多いから一度にメモリ上におきたくない >>743 そんなもん一旦ファイルに保存してzipコマンド呼んで解凍すればよい それがスクリプト言語やUNIXの正しい使い方だ 他のプロセスに役割を任せることは恥ではない あきらめてその方向で実装してるけど 今度はダウンロードが始まるまでに時間がかかるせいで JSで何かしらプログレスかindicatoorつけなきゃいけないんだけどめちゃめちゃ難しい これ以上はスレチだからいわないけど正直rubyでストリームDLできればこんな苦労しなくてすむのに… >>744 > それがスクリプト言語やUNIXの正しい使い方だ APIやライブラリ呼ぶなってこと? C言語使う意味ないだろ はぁ、zlibってzipなどのファイル形式で使用されてる 圧縮アルゴリズムのライブラリじゃん アルゴリズムだけあったってファイル作れるわけ無いだろ >>747 思想を理解してないみたい APIやライブラリを呼ぶことこそUnix流なんじゃないの? だから、Pythonはその代表格 APIやライブラリを呼ぶのと役割以上の余計なことをしないのは別問題だよ zipコマンドがzlibを使うのは当然だが、例えばインターネットのURLからのダウンロード機能を備えるべきではない アプロダの様にタイムカウンターを付けて時間を稼ぎ、用意できたらリンクを表示するようにすれば良いのでは? >>749 だからどうすればいいか質問したんだけど zlibよめばできるっていうから… ていうか独学で半年 じつむで半年rubyさわったけど ここみてるとまだ初心者でもなかったんだなって 回答のレベルが高すぎるのか不親切なのかわからないけどまったくやり方がわからない Railsの案件なんか手出すんじゃなかったわ JavaやJavascriptは独学でも質問スレやteratailあたりで回答してくれる人が結構いるんだけど… 初心者スレには初心者しかいないんだから、 茶化すだけでちゃんと答えもったやつがいるわけないだろ >>730 完成前に内容を取り出すのは、Ruby の機能じゃない。 YouTube などのライブ配信機能 やって来たデータだけを変換して、すぐに送り返す 質問者は名前欄に、質問したレス番号を入れてくれ gemについての質問です $ gem install xxx --user-install とした場合 ~/.gem/ruby/2.3.0/bin/ に実行可能なファイルが作成されますがこのディレクトリを取得する方法を知りたいです。 $ gem env GEM_PATH などでも一意に絞れず……。 $ gem install xxx --user-install した時のパスを取得する方法ってないんですかね。 >>757 $ ruby -e 'puts Gem.bindir(Gem.user_dir)' >>758 ありがとうございます! 無事、パスが取得できました。 gemコマンドでは取得できないんですね……。 なにか理由あるのでしょうかね。 >>755 やっぱりそうですよねー できないならできないでいいんだけどzlibでできるっていうから調べたのにその後音沙汰ないし できないことをできるっていってソースだしてくれないのが時間だけ無駄になるから一番困る >>756 最終的に a b c 3つのファイルをまとめたZIPを作る際に a だけを追加した瞬間のデータを取り出すというのは プラットフォーム関係ないデータや文字列上の操作の話ですよね それをクライアントに送り消す方法とかになるとサーバーフレームワークやブラウザ依存の話になってくるけど >>760 Kernel.openやIO.popenでコマンドとパイプつなげられる。ファイルがどこかに置いてあるならzipコマンドからSTDOUTに出力させてパイプでつないで受け取ればいいんじゃね? UNIXコマンドよびださなきゃ言語内だけでは何ひとつまともなことができないゴミ言語だってはっきりわかんだね 添付ライブラリにあるzlibとstringioとThread使っても出来そうな気はするがそこまでやる気はない zipの仕様よく知らないけどファイナライズしないで途中の内容確定するのかな > UNIXコマンドよびださなきゃ言語内だけでは何ひとつまともなことができないゴミ言語だってはっきりわかんだね C言語「・・・」 言語の標準機能は必要最小限にしてライブラリを使いましょう派 VS ライブラリなんかいらない、なんでも言語の標準機能にしてしまえ派 俺は前者だな。C言語、JavaScript、Rubyなんかが当てはまる 後者に当てはまる言語はPHPか? 恐ろしいことに、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 以降を推奨します。 >>762 そんなゴミ言語スレをわざわざ覗いてるのは何でなんでしょうねぇ… exec からシェル呼び出してコマンドたたいてしかもパイプでつないでとかライブラリとはよばん つまり>>770 が言いたいことは、libz.soとかのC言語などで使った ライブラリをRubyから呼ぶことができるならば、 Rubyは素晴らしい言語ということです。 ようするにシェルスクリプトで十分ということか ルビーみたいなウンコいらないという結論になるな マジレスすると zipline 使え やりたいことが1行でかける なんで回答に出ないのか謎だわ すべてのライブラリの機能を把握してない Rubyプログラマなんてこの程度やで まあこういうレスがくるんでしょうなぁw ~/.irbrcってどんな感じにしてます? readlineとirb/completionくらいは有効にしてるけど なんかインタラクティブで便利な小関数とかあったら教えてほしいです。 ハッシュ内に、あるキーが存在するかどうかだけを知りたい場合、 配列の要素をキーにして、配列からハッシュを作るのに、 以下のように書いていますが、もっとよい書き方がありますか? ただし、ハッシュの値は使わないので、nil 以外なら何でもよい h = { } %w(a b c).map{ |e| h[e] = true } p h なんかhas_keyとかあんだろ? そんなクソコード書くなよ ただ単に、配列の要素を、ハッシュのキーに登録して、その文字列の存在確認だけをしたい場合に、 ハッシュの値は使わないので、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} >>782 Setを使うのが普通だろうね Setは内部ではHashを使ってるので、やってることは変わらないけど commonmarker 0.17.x から0.18.xに上げたら、html混ざりmarkdownをコンバートすると htmlは省略だぁ〜ヒャッハー となるようになってしまった。OTL 知らんがな 自分で直してpull request出してこい Ruby に、set があったのか! 配列で集合演算するから、忘れていたわ 記号の読み方について != はノットイコールだよね? => はファットカンマだよね? =~ に読みかたってある? あと、\(バックスラッシュ)のこと何て呼んでる?そのままバックスラッシュ? 教えて >>791 鶴屋さんだと語尾に思われて思わぬ食い違いがでそう ttps://www.ruby-lang.org/ja/downloadsから 「RubyInstaller1.3.3」をダウンロードしたいんだけど、どこにありますか? >>800 はい。そうです。 >>801 私がやりたいことはバージョンが上でももないとのことでした。 返信ありがとうございました。 >>802 誤字ってたので訂正 × 私がやりたいことはバージョンが上でももないとのことでした。 ○ 私がやりたいことはバージョンが上でも問題ないとのことでした。 >>803 ありがとうございます >>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使いに人権はありません 30歳無職なんだけど俺にもプログラミングできるかな? https://www.loserblog.net/ 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 を入れれば、入力補完できるのかね? Windows10・WSL の、Ubuntu が、日本語でも入出力できるのは、 コマンドプロンプトの画面と同じものを使っているから でも、irb みたいに、Linux 側のソースコードで、 独自にWindows 向けにコンパイルしたものは、半角英数字しか動かない。 日本語など、他の言語はバグル pry も、irb を使っているのだっけ? 漏れの希望としては、Windows10・WSL の、Ubuntu みたいに、 コマンドプロンプトの画面と同じものを使って、作ってほしい そうそう、最初にgem で、パッケージマネージャーのBundler を入れる。 それ以後は、gem を使わず、Bundler で他のgem をインストールすればよい なんじゃそりゃ windowsでマルチバイト文字が文字化けするのはreadlineの所為 pryとirbはソースレベルで全く別物 こいつ>>810 >>811、Ruby関係ないスレで脈絡なく自分語りとRubyの宣伝しだしたり、他言語専用質問スレでRubyで回答してからRubyの宣伝しだしたり非常にウザいんだが。 このスレから出てこないようにしとけよ。 そのreadline を使っていると、Windows で日本語でバグるのだろう。 Windows で半角英数字以外には、対応していないのだろう Windows10・WSL の、Ubuntu では、 メニューなどもコマンドプロンプトの画面と、全く同じだから、日本語でもバグらない localhostにssh接続して 好きなターミナルエミュレータつかえば vs codeからvimに乗り換えようと思う。マウス捨てればいいんだろ? WinもMacOSも消してLinuxをCUIだけで入れたらいいよ windowsで comポートの一覧出す方法教えてください >>820 require 'win32ole' colItems = WIN32OLE.connect('winmgmts://./root\CIMV2').ExecQuery("Select * from Win32_PNPEntity Where (Name like '%(COM%)')" ) colItems.each{|obj| puts obj.Caption } ぶっちゃけvlmがvscodeに勝ってるところなんてあるか? >>824 vimはRuby界における公式エディタであるemacsの仇敵だし、vscodeはMSという大悪魔に魂を売ることになる 目糞鼻糞 vimからRuby呼び出してスクリプトによる編集処理してもいいんじゃない? >>825 Haskellerの癖にvi使いになった自分からすると、ぶっちゃけ編集能力の割に軽いってのがある。 編集能力単体ならemasやvscoreの方があるかも知れないが、軽さとのコスパはvi。 ちょっと編集したい程度ならviの方が速い。 rubyってちょっと編集するくらいでアプリ作れちゃうの? >>828 MS Accessの劣化版みたいなアプリならね それ以上のことをするなら要件相応の手間は必要 ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる