Ruby 初心者スレッド Part 65

レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん (ワッチョイ 0f80-JI52)
垢版 |
2018/12/22(土) 04:43:34.03ID:84E3pYZa0
プログラミング言語 Rubyについての、初心者向けスレです。質問・要望・雑談などをどうぞ

質問するときは、OSやRubyのバージョン、エラーメッセージを書いて下さい。
Ruby on Rails については、WEBプログラミング板で

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

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

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

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

Ruby コミュニティ公式
https://www.ruby-lang.org/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:----: EXT was configured
2019/12/19(木) 18:11:13.04ID:4hkxYlHE0
こういう基本的なものは、言語そのものに内蔵しないといけない
gem作っても流行らない
2019/12/19(木) 19:30:39.32ID:xlnTqgd4r
だな
これだけなら自分で書いた方が速いもんね
2019/12/19(木) 19:39:22.26ID:NWHUALIi0
基本的でもないやろ。
2019/12/19(木) 21:39:52.45ID:snKgfw1x0
2/8/10/16進数の変換は基本的だろうけど
それはInteger#to_s, String#to_i, Integer()で十分

遊びで作るようなプログラムを除くと
それ以外で必要なのってBase64くらいでそれは別途用意されてる
2019/12/20(金) 00:26:43.84ID:Eyw3tJ4L0
digits/undigits 作ってみた (baseに配列が使える)
https://ideone.com/QJgsBR

[1, 1, 0, 1, 'hoge'].to_i(2) # => 11
123456789.to_i([24,60,60]) #=> [9,33,21,1428]
[9,33,21,1428].undigits([24,60,60]) #=> 123456789
2019/12/21(土) 23:51:56.40ID:u8N2YXrT0
digits/undigits 拡張してみた (baseをbit数に出来る,負の数で符号拡張)
https://ideone.com/xvXVfv

0b0011_100_01.my_digits([4,3,2],1) #=> [1,4,3]
[1,4,3].undigits([4,3,2],1).to_s(2) #=> "1110001" -> 11_100_01
0b0011_100_01.my_digits([-4,-3,-2],1) #=> [1,-4,3] (-4:符号拡張)
[1,-4,3].undigits([4,3,2],1).to_s(2) #=> "1110001"
2019/12/22(日) 00:15:06.50ID:O05uH48x0
さて問題です。>>926-927を説明なしに理解できますか?
929デフォルトの名無しさん (ワイーワ2 FFdf-hPjh)
垢版 |
2019/12/22(日) 13:06:26.92ID:6Us+wzVLF
質問です
Ruby on Rails で SQLite は使えますか?
使えるならどうやれば良いですか?
2019/12/22(日) 13:15:06.84ID:dEobfqv4a
>>929
https://www.google.com/search?q=Ruby+on+Rails+で+SQLite+は使えますか?
2019/12/22(日) 19:43:26.79ID:u+b66RrE0
SQLite, MySQL, PostgreSQL の、3大DB が使える!
MariaDB は知らないけど

ただし、SQLite は開発用専門で、本番では使えない!
2019/12/22(日) 22:51:56.37ID:bTmhsrle0
>>931
MariaDBもきっとだいたいだいじょうぶ。
まだまだMySQL互換だから。
2019/12/22(日) 23:02:08.75ID:O05uH48x0
>>931
SQLiteはiPhoneで重要な機能を提供してるのも知らないの?w
2019/12/23(月) 00:32:47.68ID:U5hT/i5g0
>>931 >>932
ドライバーが提供されてればMariaDBに限らずどのRDBでも使えるぞ

>>933
SQLiteは高い並行性が求められるWebアプリには適さない
Rails用のDBという文脈では>>931のSQLiteに対する認識は間違ってない
2019/12/23(月) 00:44:18.94ID:PWVJIOWbr
>>933
自分は文脈読めないバカですって自己紹介してるようなもんだな
2019/12/23(月) 13:18:52.98ID:+KUE/8IiM
まあ実際にはRailsアプリでSQLiteを使うことなんて無いから、使えないと考えても差し支えない
DBMSの癖に依存しないアプリなんて現実には不可能なので、テストであっても最初からプロダクションと同じDBMSを使えばよい
937931 (ワッチョイ 9f2c-1ZZR)
垢版 |
2019/12/24(火) 03:27:44.81ID:3XzgnZW70
SQLite は、ブラウザがURL などを保存するのに使っている

ただ、Rails では開発用専門で、本番では使えない
2019/12/24(火) 10:20:24.51ID:a69VsF/md
Dockerが主流になるまでは、ぽん置きで使えるようになる簡単なツール程度だと使ってたな、俺は。
2019/12/24(火) 19:19:54.79ID:fkiwsPE50
性能的にも信頼性的にも、御一人様用なんだろ。
940デフォルトの名無しさん (ワッチョイ 9f2c-1ZZR)
垢版 |
2019/12/25(水) 20:06:31.05ID:ZI663GBY0
C:/Ruby24-x64/lib/ruby/2.4.0/fileutils.rb を参考にして、
module 内 moduleの、DryRun みたいなモジュールを作った!
$stdout/$stderr で、出力先を切り替える

module MyFileUtils
@fileutils_output = $stdout

module_function
public

extend self
def f( *args, **options ) # 配列・ハッシュ
p @fileutils_output
@fileutils_output.puts( args, options )
end

module DryRun
include MyFileUtils
@fileutils_output = $stderr

module_function
public

extend self
def f( *args, **options )
super( *args, **options, noop: true, verbose: true )
end
end
end

MyFileUtils::DryRun.f( 1, 2, a: 8, b: 9 )
MyFileUtils.f( 1, 2, a: 8, b: 9 )
2019/12/25(水) 20:11:42.34ID:ZI663GBY0
出力は、

MyFileUtils::DryRun.f( 1, 2, a: 8, b: 9 )

#<IO:<STDERR>>
1
2
{:a=>8, :b=>9, :noop=>true, :verbose=>true}

MyFileUtils.f( 1, 2, a: 8, b: 9 )

#<IO:<STDOUT>>
1
2
{:a=>8, :b=>9}
2019/12/25(水) 20:18:49.19ID:c8DC0dTUr
ここはお前の日記帳じゃねえんだよ
2019/12/28(土) 13:49:43.58ID:TvplFsgk0
ビット演算のビット反転について質問なんですが
(~0b1010).to_s(2) の戻り値が"-1011"なのは何故ですか?
反転なので単純に "0101" となるか、補数表現なら"0110" だと思ったのですが
2019/12/28(土) 14:35:53.34ID:AcwxZTaB0
# ~n == -n-1
~0b1010 = -0b1010-1 = -0b1011
2019/12/28(土) 14:44:44.17ID:TvplFsgk0
>>944
そもそものビット反転の定義を知らずに悩んでました
ご回答ありがとうございました
2019/12/28(土) 15:59:19.72ID:IyT0aSo9r
>>945
~(0b...00001010) = (0b...11110101) = -11
947デフォルトの名無しさん (ワイーワ2 FF7a-v1fK)
垢版 |
2019/12/28(土) 16:00:06.34ID:5Cng//AmF
0b1010
32bitとして
0000 0000 0000 0000 0000 0000 0000 1010

~0b1010
1111 1111 1111 1111 1111 1111 1111 0101

= -1011
948デフォルトの名無しさん (ワッチョイ f12d-vQnI)
垢版 |
2019/12/28(土) 16:13:08.13ID:VPT4/FzX0
QiitaかHatenaでやれ
2019/12/28(土) 16:23:21.64ID:b3ohKRMf0
>>947
じゃ
1111 1111 1111 1111 1111 1111 1111 1111
を反転させると?
2019/12/28(土) 16:24:38.25ID:lWCFWx/Q0
0000 0000 0000 0000 0000 0000 0000 0000
2019/12/28(土) 16:38:44.50ID:b3ohKRMf0
>>950
残念!

pry> ? Integer#~
or
irb> help ‘Integer#~’
2019/12/28(土) 16:49:11.58ID:lWCFWx/Q0
>>951
今はintegerの話なんかしてない
2019/12/28(土) 17:59:01.86ID:TvplFsgk0
そうか
0b1010 = 0000 0000 0000 0000 0000 0000 0000 1010
~0b1010 =1111 1111 1111 1111 1111 1111 1111 0101
(足すと)= 1111 1111 1111 1111 1111 1111 1111 1111

これに0000*7 0001(10進数で1)を足すと0になるので補数表現で10進数における- 1
だから  0b1010 + ~0b1010 = - 1
~0b1010 = - 0b1010 - 1

0b1010は10進数で10なので~0b1010 = - 11
これを補数表現なしの2進数で表すと
~0b1010 = - 1011
よって一般に ~n = - n - 1 と言えるのか
2019/12/28(土) 18:00:57.41ID:TvplFsgk0
Rubyとは全く関係ない質問になって申し訳ない
2019/12/28(土) 20:50:34.75ID:q2Ylf9qja
有明セントラルタワー

痰吐きジジィのチンポが18階の(どこの島かは言わないよ)20代の女の娘のオマンコに
入って行くウゥウウウーーー!
http://o.5ch.net/1lejw.png
2019/12/28(土) 21:36:45.32ID:b3ohKRMf0
>>952
予想外の言い訳でワロタww
2019/12/28(土) 23:39:23.63ID:AcwxZTaB0
>>953
2補数の符号反転は
-n == ~n + 1
だから
~n == -n - 1
# 上だけ覚えれば十分
2019/12/28(土) 23:49:13.11ID:u9ordgE/0
補数表現には2の補数と1の補数があるって知らないのかな?
補数表現とだけじゃどちらかわからんだろ

それに反転はそのままビットを反転しただけのこと
これは1の補数表現と等しい
ビットを反転させるだけなんだからマイナスとか関係ない
マイナスが出てくるのは2の補数表現の話だけ
959デフォルトの名無しさん (アウアウエー Sa6a-v1fK)
垢版 |
2019/12/29(日) 00:43:56.25ID:jG5lme5Ea
どうせ知らないと思うけど
10の補数も9の補数も8の補数もあるぞ
960デフォルトの名無しさん (アウアウエー Sa6a-v1fK)
垢版 |
2019/12/29(日) 00:46:58.08ID:jG5lme5Ea
>マイナスが出てくるのは2の補数表現の話だけ

違う
それは君が2の補数の負数に慣れ過ぎてそう思ってるだけ
1の補数を負数とする定義も普通に存在する
2019/12/29(日) 01:30:36.45ID:KIjz0jVz0
1の補数・2の補数とかは、基本情報処理資格の初歩だろw

教科書を読め!
2019/12/29(日) 01:40:35.53ID:Q2ohrJia0
>>960
ふつうか?ホントか?
2019/12/29(日) 11:49:53.70ID:yqbBnK7b0
>>962
本当に普通ですね…
2019/12/29(日) 11:58:05.67ID:/K389dkkM
話としてふつうなのはわかるが、実装としては見たことがないなあ。
965デフォルトの名無しさん (アウウィフ FF3a-v1fK)
垢版 |
2019/12/29(日) 13:55:36.09ID:49gQrlWfF
そりゃ便利な方が使われるわ
存在するのと使われてるか普及してるかは関係無い
utf-7とかおまいら使ってないやろ
2019/12/29(日) 14:51:01.25ID:qJvaFsYpa
IP のチェックサム -- 1の補数演算
http://4049.nwr.jp/comp/ip_csum.html
967デフォルトの名無しさん (ワイーワ2 FF7a-v1fK)
垢版 |
2019/12/30(月) 11:12:31.07ID:WAqdspciF
1の補数があまり使われない理由は
計算が面倒なんじゃなくて
0が+-二つあるのがもったいないからって理由だっけ
2019/12/30(月) 14:31:59.58ID:w8cwRlld0
>>967
0が2つあるから循環桁上りの考慮が必要
その考慮がいらない2の補数のほうがALUがシンプルになるから
2019/12/30(月) 17:20:52.00ID:u7z+ALKO0
>>967
加算と減算を同じ回路で実行できるから。
2019/12/30(月) 17:21:58.90ID:u7z+ALKO0
あ、2の補数のほうが有利なところのこと。
971デフォルトの名無しさん (アウウィフ FF3a-Qqkg)
垢版 |
2019/12/31(火) 19:37:02.21ID:z/4e8Z8bF
すみません、初学者で苦労してまして・・
Rubyxlでエクセルのテンプレートを編集したく

そこで、特定のセルをコピーして特定のセルに貼り付ける
操作を行いたいのですが、ネットで検索しても全くヒットせず
有識者のかたいらっしゃれば、ご教授いただけましたら幸いです。。
2019/12/31(火) 20:20:29.97ID:ozxOKIBe0
Ruby で、Excel, Libre Office とか、やってる人いるの?

漏れは、CSV モジュールしか知らない

CSV で、データしか処理しない。
見た目の指定は、難しそう
2019/12/31(火) 20:55:42.15ID:ozxOKIBe0
Ruby で xlsx を編集する
http://secret-garden.hatena@blog.com/entry/2017/09/21/174348

rubyXL についての記事

@ を取り除いてください!
はてなブログなので一応、5ch のアクセス禁止を警戒して、URL を書きません!
974デフォルトの名無しさん (ワッチョイ ed63-av3+)
垢版 |
2020/01/01(水) 01:22:54.75ID:m6l/1R8h0
>>973
ご丁寧に有難うございます!!
2020/01/01(水) 02:42:07.71ID:AGxbyfJN0
>>971
rubyxlというのは使ったことなくて知らないが、もっと低レベルなやり方
require 'win32ole'
でexcelシートの読み込みはやっている
win32oleでぐぐればやり方はなんとかなると思う
2020/01/01(水) 10:46:50.28ID:zZ41nBr+0
本当にxmlでやりたいんなら

まずはxmlの拡張子をzipにして解凍して
それっぽい本体のxmlファイルを探し出して
テキストファイルで開いて見てみる

こりゃーRubyは関係ないな
977デフォルトの名無しさん (アウウィフ FFa5-p4uH)
垢版 |
2020/01/01(水) 11:27:28.59ID:tqBP4ADqF
ぶっちゃけ質問者の利益を最優先で回答すると
python で win32com 使うのが最善解
2020/01/01(水) 12:18:16.48ID:06rhhv4Sa
PythonではWindowsにも人権があるからな
本人が今後辛い思いをしないためにも、はっきり言うよ
Ruby村では、 ド ザ に 人 権 は な   い
出 て い け
2020/01/01(水) 13:29:11.77ID:ak/J1wbe0
WSLでRuby村に仲間入り♪
2020/01/01(水) 15:09:02.89ID:DUq05mSq0
>>971
require 'rubyXL'
require 'rubyXL/convenience_methods'

book = RubyXL::Parser.parse('input.xlsx')
sheet = book[0]
sheet[0][0].change_contents(sheet[0][1].value) #B1の値をA1にコピー
book.save('output.xlsx')

書式をコピーしたい場合や計算式をコピーしたい場合は別途対処が必要
まとめてコピーしてくれる便利メソッドはないっぽいので必要なら自作
Windowsならwin32oleでCOM使ったほうが簡単
2020/01/01(水) 15:12:15.44ID:DUq05mSq0
VBAの代わりに使うようなクライアントサイドの用途なら
Python + xlwingsが知ってる限りは一番使いやすい

RubyからもPyCallかませば使えるがExcel処理はPython + xlwingsで書いて
それをPyCall経由でやり取りするのが簡単
2020/01/01(水) 16:14:04.42ID:Vy5hpr3FM
C#のがええんちゃうか?
983デフォルトの名無しさん (ワッチョイ ed61-BfT8)
垢版 |
2020/01/01(水) 19:00:41.76ID:mlJgbHp20
>>981
Excelでちょっと始めて、データが大きくなってきたら、そのままpandasに移行。
もう勝ち目ないな。
2020/01/02(木) 02:30:30.13ID:rEYXT5csM
>>983
ExcelとPandasの用途の違いも分からないのかw

最近のpython推しは低脳ばっかだなw
2020/01/02(木) 08:11:50.12ID:zXXNv/DU0
>>979
随分まえからCygWinでこの村には出入りしとるが
なーんも面白いもんなんか無いぞ?
986デフォルトの名無しさん (ワッチョイ 42a5-aiXr)
垢版 |
2020/01/03(金) 09:09:03.63ID:+DQqbAVf0
rubyって全てがオブジェクトなところがいいですよね
2020/01/03(金) 09:44:57.23ID:+RiBlMC+r
メソッドはオブジェクトじゃないぞ
2020/01/03(金) 13:15:01.02ID:CVCs++Sx0
Ruby・・・値型はオブジェクトだが、メソッドはオブジェクトでない。
JavaScript・・・値型はオブジェクトではないが、メソッドはオブジェクト。
         ただし値型に対応するオブジェクト型が存在する。例 Number(1)

どっちが良いんだろうなw
値型はRubyの方が便利なんだろうけど、JavaScriptの方が最適化できるだろうし
2020/01/03(金) 13:33:30.46ID:/EnEVvpc0
どっちでいいよ。
使いやすければ。

個人的には、どっちもあんまりだけどな!
2020/01/03(金) 17:45:42.37ID:e4Snrs1J0
>>987
Methodクラスがあるよ
2020/01/03(金) 19:11:50.30ID:+RiBlMC+r
>>990
Methodクラスのオブジェクトはメソッドじゃないぞ
2020/01/03(金) 20:21:33.31ID:e4Snrs1J0
>>991
それがどうしたの?

Methodクラスのインスタンス(=オブジェクト)は
メソッドとして扱うことができる
2020/01/03(金) 20:24:39.88ID:+RiBlMC+r
>>992
>>986の言っていることは間違っているということを指摘しているだけで実用に関しては名にも言及していないのにお前はなんでそんな必死なの
2020/01/03(金) 20:38:16.32ID:e4Snrs1J0
ここまでの流れを関数型言語スレに当てはめると、こんなところ

>>986:モダンな関数型言語において、すべてが第一級市民なところがいいですね
>>987:いや、関数適用は第一級市民じゃないぞ
>>990:関数 apply 定義すればいいよ
>>991:関数 apply は適用じゃないぞ

- fun succ x = x + 1;    (* 関数 succ を定義 *)
val succ = fn : int -> int
- succ 2;    (* 関数 succ に 1 を適用 *)
val it = 3 : int    (* 2 + 1 = 3 により、結果は 3 *)
- fun apply f x = f x;    (* 関数 apply を定義 *)
val apply = fn : ('a -> 'b) -> 'a -> 'b
- apply succ 2;    (* 関数 apply を介して、関数 suuc に 1 を適用 *)
val it = 3 : int    (* 結果は同じ *)
2020/01/03(金) 20:45:58.77ID:+RiBlMC+r
>>986「rubyって全てがオブジェクトなところがいいですよね」
>>987「メソッドはオブジェクトじゃないぞ」
>>990「Methodクラスがあるよ」 ←は?
>>991「Methodクラスのオブジェクトはメソッドじゃないぞ」
>>992「それがどうしたの?」 ←は?は?は?

マジで意味不明だわコイツ
馬鹿すぎる
2020/01/03(金) 21:03:06.07ID:e4Snrs1J0
>>993
間違っているという指摘、そのものが誤りだということ

モダンな関数型言語において、すべての値(object)は第一級市民であるが
値と値との関係である適用は値ではない
したがって、そもそも値ではない適用を第一級市民ではないと否定する主張が誤りである
そんなの当たり前だよね

同様に、純粋オブジェクト指向言語において、すべてはオブジェクトであるが、
オブジェクトとオブジェクトとの間の関係であるメソッドはオブジェクトではない
したがって、そもそもオブジェクトではないメソッドを、あえて否定する>>991が誤りではないかと

たとえば、>>986 とそれにに対する反論である>>987 を改ざんして:
  986 rubyって全てがオブジェクトなところがいいですよね
    (ただしメソッドがオブジェクトなのは常識ですから、あえて言及しませんけど)

  987 コメントはオブジェクトじゃないぞ

だったとして、それでもなお>>987を擁護する?
2020/01/03(金) 21:10:31.51ID:+RiBlMC+r
はいはい
本物の障害児やんこいつ
2020/01/03(金) 21:10:58.90ID:+RiBlMC+r
間違いをちょっと指摘しただけでガイジに粘着されたでござる
2020/01/03(金) 21:11:52.81ID:+RiBlMC+r
「素数は全部奇数だよ」
「いや2は偶数だろ」
ってやりとりに文句付けてるのと一緒だからなお前
2020/01/03(金) 21:11:59.61ID:+RiBlMC+r
1000
10011001
垢版 |
Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 377日 16時間 28分 25秒
レス数が1000を超えています。これ以上書き込みはできません。