Ruby 初心者スレッド Part 60 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2017/04/29(土) 02:01:58.34ID:urVXnFrH
プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。
質問するときは、OSやRubyのバージョン、エラーメッセージを書いたほうがいいお
Ruby on RailsについてはWEBプログラミング板で

前スレ
Ruby 初心者スレッド Part 59
http://echo.2ch.net/test/read.cgi/tech/1475394638/

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

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

逆引きRuby
http://www.namaraii.com/rubytips/
2017/05/27(土) 06:45:17.62ID:SdHoYqqp
>>273
早速ありがとうございました!
無事読み込めました。。。
参考までに修正版のコードはこちらです。

module WIN32API
extend Fiddle::Importer
dlload 'user32.dll','kernel32.dll'
include Fiddle::Win32Types #DWORDとか使えるようにする
include Fiddle::BasicTypes
extern 'DWORD GetLastError()'
end
WIN32API.GetLastError
2017/05/27(土) 10:22:39.80ID:SdHoYqqp
すみませんもう一つ教えてください。
SendInputを使って最終的にはマウス入力/キーボード入力を行おうと考えていますが
うまくいきません。何がおかしいのでしょうか。。
---
module WIN32API
extend Fiddle::Importer
dlload 'user32.dll','kernel32.dll'
include Fiddle::Win32Types
extern 'int SendInput(int,void* ,int)'
extern 'DWORD GetLastError()'
MOUSEINPUT=struct(["DWORD type","int dx","int dy","DWORD mouseData","DWORD dwFlags","DWORD time","ulong dwExtraInfo"])
end
module SendKey
INPUT_MOUSE = 0x00000000
MOUSEEVENTF_ABSOLUTE = 0x00008000
MOUSEEVENTF_MOVE = 0x00000001
end
input = WIN32API::MOUSEINPUT.malloc
input.type=SendKey::INPUT_MOUSE
input.dx=500
input.dy=500
input.dwFlags=SendKey::MOUSEEVENTF_ABSOLUTE|SendKey::MOUSEEVENTF_MOVE
p WIN32API.SendInput(1,input,28) #出力:0 備考:sizeof(MOUSEINPUT)=28
p WIN32API.GetLastError #出力:87(パラメータが間違っています。)
-----
2017/05/27(土) 10:27:11.94ID:67vlwxuq
今回の件と関係あるかはともかくWIN32APIってもう非推奨じゃなかったっけ?
2017/05/27(土) 12:01:00.86ID:pz2epJPP
rubyは32bit版なのかな?
2017/05/27(土) 12:46:05.61ID:SdHoYqqp
Win32API非推奨なんですね。。
ググってみた感じいまはWSHSHELLとかでしょうか?
ちなみにRubyは64bit版を使ってました。。。
2017/05/27(土) 13:10:51.88ID:reRwAhMh
非推奨とか言い出したらそもそもWinでRuby自体がアウトだから気にしなくてよい
2017/05/27(土) 13:21:59.20ID:olQh0zw8
>>272 >>274
そもそもGetLastErrorは最後に呼んだAPIのエラーだから
rubyみたいに前後の行の間で何呼ばれるかわからん環境でまともなエラーとれるとは思えない
2017/05/27(土) 14:00:44.16ID:4VVIqOhp
意図するライブラリがロードされていない or 意図しない関数がコールされているんじゃないか?

C/C++で同じ動作をするコードを書いて何のファイルのどの関数が呼ばれているのか調べた方が良さそうな気も
Rubyから呼ぶ場合に限らずその辺の管理は全てプログラマ任せの上に純正のSDKやIDEの支援も得られないしな

あとWindowsAPIを叩いて作業するならWindowsSDKはほぼ必須
2017/05/27(土) 15:09:14.53ID:6GQ16ypm
>p WIN32API.GetLastError #出力:87(パラメータが間違っています。)

カッコを付ければ?
p WIN32API.GetLastError()
2017/05/27(土) 15:15:15.96ID:pz2epJPP
>>278
64bitだと構造体のサイズが違うよ
284デフォルトの名無しさん
垢版 |
2017/05/28(日) 10:53:17.15ID:pzrDxs4u
case文でgetsを使って入力を受け付けたいとき日本語ってどうするんです?
hand = gets.chomp
case = hand
when "あ"
puts "グー”
.
.
.
else
puts "反則"
end
例えばこんな感じの簡単な文だけど
"あ"の中身の部分を1にしたり
そもそも .to_iにして数値にしたりすると
ちゃんと働いてくれるから
そもそも日本語入力はなにかいるんじゃないか、もしくはできないんじゃないか
と思っていて、検索してもわからんのです
2017/05/28(日) 11:23:43.03ID:eyTJlEl0
case = handってなんだ
2017/05/28(日) 11:38:33.26ID:nOYRngqN
print "input anything and Enter> "
input = gets.chomp
puts "default file encoding:"+ __ENCODING__.to_s
puts "actual external encoding: " + input.encoding.to_s

実行結果 (Windowsコマンドプロンプトで単に ruby test.rb と実行)
input anything and Enter> nya-
default file encoding:UTF-8
actual external encoding: Windows-31J

ということで文字列のエンコーディングが違うので別物だと思われてる
Windows-31Jの「あ」とUTF-8の「あ」は比較上別物になる
irb> str = "にゃー"
=> "にゃー"
irb> str.encode("Windows-31J") == str.encode("UTF-8")
=> false
「Rubyの文字エンコーディング」について調べて自分で理解するんだ
これはここでちらっと「おまじない」を述べても逆に泥沼になるぞw
287デフォルトの名無しさん
垢版 |
2017/05/28(日) 11:47:56.51ID:pzrDxs4u
>>285
ごめん=はいらんね
まちがえて打ってしまった。それは元の方では書いてない
>>286
よくわかんないけど、とりあえず先に進むよ。
逆に今、文字エンコーディングについて調べても理解出来る自信がないし、
おまじない、もいづれ出てくるかもしれない。
わいみたいな本物初心者にも答えてくれて
ふたりともありがとう。
288デフォルトの名無しさん
垢版 |
2017/05/28(日) 11:52:43.05ID:pzrDxs4u
しまった「いづれ」ではなくて「いずれ」だった、なんかこういうミスのほうが
恥ずかしい・・・
しかし文字エンコーディングの件で気になったけど
それは文字コードを指定している場合でも・・・?
なんか最初にそれこそ、そこをおまじないと言っているのかもしれない
けど、# coding: utf-8
みたいなの書いとけって言われるじゃない。
文字化けしないようにとか、そんな感じで。
2017/05/28(日) 11:55:12.07ID:rKaPw5GE
狭義的にはスクリプトファイルのエンコーディングと外部入力文字列のエンコーディングを揃えないといかん
STDINのエンコーディングをスクリプトファイルのエンコーディングに合わせるのが楽だと思う
ruby -E UTF-8 hoge.rbでスクリプト起動しろ
getsで入ってくる文字列が全部UTF-8になる
290デフォルトの名無しさん
垢版 |
2017/05/28(日) 12:39:36.05ID:pzrDxs4u
>>289
ちょっとわかんなかった。
色々言っていることの推測はしたんだけど、
そんなファイルねーよ!からはじまり
そんなエンコーディングネーム知らんといわれ、ランタイムエラーといわれ
あ、コマンドプロンプトって文字コードシフトJISとかいうのだから
あかんのかな?って思って
utf-8にしてみたけど、判定がelseに行くのだった。
あははは。
わざわざありがとう。でも、私初心者だからだめみたいだぜ。
おまえなんかwhile文の勉強でもしてなさいってことだと思うわ。
2017/05/28(日) 12:55:41.60ID:cMT8Sa9/
コマンドプロンプトなら"chcp 65001"しないと駄目なんじゃない?
ちょっと手許にwindows機ないからわかんないけど
2017/05/28(日) 13:34:17.41ID:mQ0E20+1
cmd exe の chcp65001 はバグがあって使い物にならない
2017/05/28(日) 15:22:51.06ID:aUadI2mt
VSCode使っている人いない?

デバッグモードでのgetsのって値入力処理はどうすればいいのか分からなくて困っている。
2017/05/28(日) 16:49:16.07ID:rKaPw5GE
STDIN/STDOUTのねじ曲げは現行のIDEでVSCode「でだけ」できない
素のRubyではできるのにね

require 'stringio' if $DEBUG
$stdin = StringIO.open("にゃーん".encode("Windows-31J")) if $DEBUG

puts "You are a cat" if gets.chomp == "にゃーん".encode("Windows-31J")
2017/05/28(日) 17:18:28.96ID:5PeSitGp
pythonのやつをパクるしかない
2017/05/28(日) 17:40:48.08ID:MqtJ47ff
極薄view用意して、そこだけ手動でテストすればいいよ
2017/05/28(日) 18:57:58.47ID:QwjzxVOm
コマンドプロンプトは、Windows-31J, CP932 か

PowerShell, PowerShell_ise は、UTF-8 じゃないの?
2017/05/28(日) 22:05:31.04ID:OcOYN7N8
windowsで真面目にRuby使うならコマンドプロンプトのままじゃ辛い
コンソールエミュで良さそうなの探して入れると良いよ
2017/05/29(月) 00:55:58.04ID:+B2zTCTS
いやVirtualBoxの上のLinuxにSSHクライアントで接続した方がいいよ
2017/05/29(月) 01:06:21.43ID:zS+u+zXg
出力はワイド文字に変換してくれるのでpythonみたいにchcp 65001しなくていいから楽ちん。
入力は気を利かせてくれてないから、$stdin.set_encodingで設定したほうがいいかな
あとはARGVとかDirで取得するファイル名とかをデフォルトでUTF-8にしてくれたらうれしいな
全般的にWindowsに気を利かせてくれているけど、そのノウハウをまとめたページがないから
不親切に見えるだろうな
301デフォルトの名無しさん
垢版 |
2017/05/29(月) 13:33:58.90ID:SjlSz+oM
ネットにはデマ情報がいっぱい残ってるので正しい情報をメモ
cmd で UTF-8 使える方法 (chcp 65001 について) ttp://nazochu.blogspot.jp/2011/08/blog-post_26.html
mintty ttp://dogmap.jp/2011/11/15/mintty/
mintty ttp://tanakh.jp/posts/2011-11-15-windows-terminal.html

色々紆余曲折あったけど Git インスコして GitBash 使うのが一番楽っぽい
https://git-for-windows.github.io/
2017/05/29(月) 13:49:40.20ID:lxl3zEmg
>>301
こういうWindows版を使ったこともなさそうな人がおせっかいで書く情報が迷惑でしかない
2017/05/29(月) 18:54:37.47ID:8MRHN7xk
ルビとRubyの話
なぜWordのデフォルトフォントサイズは「10.5」なのか? - ねとらぼ
http://nlab.itmedia.co.jp/nl/articles/1705/29/news020.html
304デフォルトの名無しさん
垢版 |
2017/05/29(月) 19:14:35.71ID:ZV+SCRde
今回の民法改正、ソフトウェア受託開発の場合、(検収後ではなく)バグ発見後1年瑕疵担保責任があるということで、地獄かよ、と思ったが、
元々問題が起きがちな受託案件がビジネス的に成立しなくなることで強制的に業界再編につながるなら良いことかもと思うようになった。
一部で地獄を見ても。
https://twitter.com/yukihiro_matz/status/869061879389343744
305デフォルトの名無しさん
垢版 |
2017/05/29(月) 19:16:13.40ID:ZV+SCRde
ニュース - 改正民法が成立、「瑕疵担保責任」などシステム開発契約に影響大:ITpro
http://b.hatena.ne.jp/entry/itpro.nikkeibp.co.jp/atcl/news/17/052601508/
2017/05/29(月) 19:33:27.14ID:00NVazHZ
>>305
Ruby終了の教えらせ?
2017/05/29(月) 19:34:02.42ID:00NVazHZ
お知らせ
2017/05/29(月) 21:37:42.32ID:LfszU9UW
契約自由の原則は消えないんだよな
http://www.techvan.co.jp/media/quality/civil-code

rubyとかだと小さいシステムやプロトタイプが多いだろうから
契約に漏らさず明記しておくのが大事か
5年とかもう使えないようなバージョンとか出てきて作り直しになりかねない
2017/05/29(月) 21:50:13.10ID:0c0Yo+hh
個々の契約のほうが優越なのだからふつうはそんなに問題は起きない
最低最悪のラインを決めただけ
いちばん騒いでるのが働いたことのない人といういろいろ縮図なやつだ
2017/05/29(月) 22:06:06.39ID:LfszU9UW
>>309
最低最悪ではなく、平均では?
労働基準法みたいな契約より優先されるものが最低最悪で。
2017/05/30(火) 09:22:17.83ID:hVv0NVyW
客が瑕疵担保責任法の法改正を知ってくると思うから、今後5年無償保証をお願いされるだろう
営業がそれでも仕事を取ってこれるか?たぶん無理だろう。無限の直していたら赤字になる。
こういう保守に弱い言語、ころころ仕様が変わる言語は仕事として発生しなくなってくる。
これは変わり目だ。お前らも早く逃げたほうがいいぞ。RubyやPHPなど動的言語は確実に廃れる。
保守に強い言語のみ生き残れる。
312デフォルトの名無しさん
垢版 |
2017/05/30(火) 10:25:03.46ID:gxWnkgCC
客が瑕疵担保責任法の法改正を知ってくると思うから、今後5年無償保証をお願いされるだろう
営業がそれでも仕事を取ってこれるか?たぶん無理だろう。無限の直していたら赤字になる。
こういう保守に弱い言語、ころころ仕様が変わる言語は仕事として発生しなくなってくる。
これは変わり目だ。お前らも早く逃げたほうがいいぞ。RubyやPHPなど動的言語は確実に廃れる。
保守に強い言語のみ生き残れる。
2017/05/30(火) 13:25:40.32ID:KV35bhXw
保守に強いとか関係ないだろ
結局は技術力が高かろうと
エラーは出るからな
2017/05/30(火) 13:27:12.19ID:52EkKXSJ
>>313
これコピペ
2017/05/31(水) 12:38:22.60ID:nyiBm3r5
こぴぺちぱー
http://tamae.2ch.net/test/read.cgi/php/1474523013/
2017/05/31(水) 23:19:57.63ID:X74K7lOs
るびまの ePub 版ってないの?
たまに話題に出てたり個人的にやってる人はいるみたいだけど。
2017/06/01(木) 03:04:21.50ID:TLZ7U8Co
>>308
民法程度なら上書き可能……客の説得が面倒になる、という話だけど
ライブラリのバージョン変えても動くこと、という要件は突っぱねれば5年は持つわね

そりゃどこぞの誰かさんが書き換えてるのに同じように動くかどうかわかりませんわ
こっちが確認したのは特定のバージョン決め打ちでっせ、とね

>>312
C#とJavaは耐性強そうだ

Pythonはダメだ(2のを3でも対応する系クソゴミ改修案件をやった人の意見)、グイドは自称するほど互換性を大事にしねぇ
「もう二度とやりません」と、Cバインディングをぶっ壊したのととString-Bytesでいいやがったんで、次もやる
318デフォルトの名無しさん
垢版 |
2017/06/01(木) 12:09:40.74ID:o/dQD8LP
>グイドは自称するほど互換性を大事にしねぇ

2から3の書き換えの感想でそんなこと言ってるのか
頭沸いてんな
319デフォルトの名無しさん
垢版 |
2017/06/01(木) 17:59:48.16ID:VtNuZqDV
>>316
そんなことできるのね
チャレンジしようぜ
320デフォルトの名無しさん
垢版 |
2017/06/01(木) 18:02:47.78ID:VtNuZqDV
あっ 勘違いしてた
「るびま」と書いてあったな
オレが関心あるのは「るりま」の方だった
2017/06/01(木) 18:14:59.52ID:n7u6yBLf
るりまは元が html5 になってるみたいだし、
メタ情報をちょろっと追加してパッケージングすりゃ ePub になるよ。
そんなに難しいことじゃない。
322デフォルトの名無しさん
垢版 |
2017/06/02(金) 09:51:10.10ID:8FvNWFqN
>>321
教えて欲しいんだけど
例えば2.0.0のバージョンのドキュメントをまとめてダウンロードするにはどこに行けばいいんだろ?
https://www.ruby-lang.org/ja/documentation/
323デフォルトの名無しさん
垢版 |
2017/06/04(日) 07:56:22.18ID:4B60732N
書き込みできない?
324デフォルトの名無しさん
垢版 |
2017/06/04(日) 07:57:07.55ID:4B60732N
322はできることなら削除したい
もうレスを確認する為にここに来ることはない
2017/06/06(火) 19:13:48.69ID:wrPFF999
windowsでirb使うとき何か一文字打たないと
↑キーで履歴が出ないんだけど何とかならない?
ググってreadlineとかbinに入れてみたけどダメだった
2017/06/08(木) 13:19:43.68ID:oPuedIYN
うちはでるよ
327325
垢版 |
2017/06/08(木) 21:11:29.66ID:cdZWf+lt
マジか。>>325はActiveScriptRubyだがいろいろ試した結果(環境はWin7 32bit)
ActiveScriptRuby 出ない
+ readline.dll 出ない
RubyInstaller 出ない
+ readline.dll 出る
2017/06/16(金) 16:28:56.85ID:qOsPLqtM
うちのRubyInstaller2(Win8.1)ではirbやpryは大丈夫
jirb(JRubyのirb)は何か一文字打たないと↑が反応しない
あとruby -pe ""も何か一文字撃たないと駄目な模様
2017/06/17(土) 13:52:50.98ID:CkD5o1Z0
これからrubyをやる意味ってなにが考えられますか?
2017/06/17(土) 14:36:25.65ID:qMkdrUOQ
過去に一度だけプチブームになったことがあったんだけど
その原因と、そのあと下火になった理由を探求するとかかな
駄目と分かっている人は初めから駄目だよ、って言ってたんだけど
残念ながら世の中の全員が賢明というわけではなかったから
やはり、一過性のブームとか、時代でとか、そういうのはあるもので
今から追体験したければRubyはよい選択だと思うよ
ただ、さっきも書いたけど、全員が間違ったわけじゃないんだよ
半数以上かそれ以上の人はダメって初めから言ってたんだよ

あとはMarzの勉強かな
あの人、頭の弱い人を騙すことに関してはものすごい技術を持ってるから
そういうのに興味があればって感じ
具体的には「モノ」を中心に考えさせて、大事なものを見えなくさせたり
一見効率的に見えて実は遠回りっていう「局所解」に追い込んだりするその手法
おもしろいのはRuby3.0をどうするのか、なぜか今本人も困ってるところ
人を呪わば穴二つって言うように、他人を追い込むツールを作ってるつもりで
自分自身もまた追い込まれるってのは在るみたいね
2017/06/17(土) 15:18:40.82ID:KrWMylVm
具体論がまったくないところがすごいなw
2017/06/17(土) 16:22:03.43ID:b4+zDofQ
>>329
日本人の場合
あらゆる言語の中で一番易しいプログラミング言語
(子供用のおもちゃを除く)
2017/06/17(土) 16:52:41.05ID:CkD5o1Z0
そうですか
GUIはどれを使えばいいですか?
2017/06/17(土) 17:23:28.18ID:RyxkXkzJ
どうしてもやりたいならjruby+jrubyfx楽よ
2017/06/17(土) 17:39:53.37ID:ZEU2lDOZ
この時点で、rubyだめってヒシヒシ伝わる。
336デフォルトの名無しさん
垢版 |
2017/06/17(土) 18:11:55.35ID:n14YEU6w
>>330
初見のコピペ
2017/06/17(土) 18:16:55.55ID:n14YEU6w
>>333
rubyでは向いてないからGUIやめとけ
pythonでGUIやるといいよ
2017/06/17(土) 19:44:55.62ID:KrWMylVm
>>330 の文章とか論理展開とか見てて何かに似てるなーと思っててずっと思い出せなかったが
やっと思い出した

これって、「ゲンダイ」の論調に似てるんだ!w
2017/06/17(土) 19:46:39.93ID:KgLuH5ks
まつもと氏は合理主義のようだけどGUIにはそういうのは及んでないんですか?
2017/06/17(土) 20:05:28.72ID:x959dLvJ
>>339
まつもと氏の行動原理は「IT土建屋死ね」
だからWinでのGUI開発でRubyが広く使われるようなことはあってはならない
2017/06/17(土) 21:40:11.74ID:83r52Wsn
>>329
普通にメジャー言語だから
そのメリットはあると思うけど

他のメジャー言語でも別にいいが
日本語情報が豊富なのが良い
2017/06/17(土) 21:41:18.42ID:83r52Wsn
>>333
Tkが(旧)標準
見た目が簡素だが覚えやすいので
最初はこれがオススメ
2017/06/17(土) 21:42:43.07ID:83r52Wsn
>>330
何がダメでどうすればいいのか言わないなら
たんなる代替なき批判に見える
あとMarzってなんだよ!
2017/06/17(土) 21:44:31.17ID:83r52Wsn
>>339
Tkを標準にしたのは合理的だと思うけど?
もしPythonに移ってもTkは使えるからね
2017/06/17(土) 22:00:59.26ID:qMkdrUOQ
あぁごめんな
ただあの人のインタビューとか読めばわかるけど
逆張り逆張り言ってる
あの人自身もRubyの筋が良いとかメインストリーム的な思想であるとは
考えてないんだよ
ただ、自分の人生の中で逆張りした場合にうまくいくことが多かったので
逆張りし続けているんだとか
だからRuby3.0でも逆張りの一種として
静的型の機能は導入しない方向を検討しているんだろうな
ただそう何度も逆張りが上手くいくとは思わないし
逆張りはしょせん逆張りだろ?あだ花というかなんというか
そういうこともあって結局Rubyはプチブームで終わった現状があるわけだし
変なことして注目を集めることはあってもそれは一過性だよ、芸人じゃあるまいし
しかも逆張りしたときに自分にとって都合がよいことが多かったってだけで
使い手のことは別に考慮されてないんだよなー
2017/06/17(土) 22:03:22.44ID:KrWMylVm
>>345
あいかわらす週刊誌レベルの根拠ない批判しかできないんだなー
2017/06/17(土) 22:07:45.91ID:qMkdrUOQ
普通に考えたら静的型を導入しない理由は全くないんだよ
ただ、あえて理由を挙げるとしたら、最初Rubyは動的型で出発したから
いまさら静的型の機能を入れ込むのは非常に難しいってことなんだよ
過去との互換性もあるし、そういうコミュニティーになっちゃってるしな
もちろんこれは動的型に「逆張り」した結果なんだろうけど
あとあと苦しいわなー
2017/06/17(土) 22:10:52.30ID:KrWMylVm
>>347
もうちょっと言語について勉強してから長文で語ってくれないかなー
正直今のレベルではゲンダイにも載せてもらえないレベルのただの妄言だしさ
2017/06/17(土) 22:22:53.33ID:qMkdrUOQ
ただここまで静的型が「ハマる」とは俺も想像してなかったし
Matzも想像できなかったんじゃろな
何だか知らないが、静的型はすべてにおいて丁度よい感じになってるんだよな
神がかった偶然がいくつも重なってるかんじで、最適解になってる
この牙城はなかなか崩せないよ、一つや二つのメリットじゃないからね
なんでこんなに上手くいったんだろうね
2017/06/17(土) 22:26:25.66ID:83r52Wsn
>>347
>普通に考えたら静的型を導入しない理由は全くない
そんなことない

Python、JavaScriptなど
メジャーな言語が導入してるんだから
2017/06/17(土) 22:31:07.35ID:KrWMylVm
http://hissi.org/read.php/tech/20170617/cU1rZHJVT1E.html
てかこいつ変な人間だったわ
相手しちゃいけないタイプ
2017/06/17(土) 22:59:47.96ID:qMkdrUOQ
まず動的型の根本的な慢性的ともいえる文法上の悩みの種は
どうにかして変数宣言をなくしたい欲求にかられるって点にある
動的型であるから変数宣言に型を書く必要がないので
なんとかして変数宣言自体をなくしたいっていう
まぁ分からなくもない
しかしながら変数宣言には変数の型を決める役割があるのとは別に
「変数のスコープを決める」という役割もあったわけで
安易に変数宣言を削除してしまったRubyやPythonのような言語は
大体において変数のスコープが奇妙なことになっているのじゃ
例えばRubyにおいては「@」であったり、ブロックローカル変数であったり
Pythonであればnonlocalであったり、なにか場当たり的だし
実質的な変数宣言の一種のような気もする
あと、if文や繰り返し文の後ろに続くブロックなどでスコープを持てなくなって
しまったりもな、なんせ、文法上、宣言を代入で代用しているから
代入と宣言の区別がつかないような状態で、かゆいところに手が届かない
だから結局、実は変数宣言は有ったほうが良いんじゃね?ってなって
ならついでに型も書けばってなって、今はさらにこれに加えて
型を書きたくなければ型推論使えば?ってことにまでなっちゃってる
型推論使えば変数宣言をする手間はほぼなくなるし
スコープを細かく制御できるようになるんだから
もう変数宣言が無いことはメリットにならなくなってしまった
まぁこんなのは氷山の一角でジャブだ
コンパイラによる型チェック云々言いたくなるところだがそれ以外にも
文法上の問題としてこういうのもあるということ
その他にも実行性能であったり、ドキュメントの自動生成であったり
リファクタリングの容易さであったり
IDEの入力補完etcのサポートのしやすさであったり
人間も型があったほうが読みやすいんじゃないかとか
結局コメントで型を書いてるんじゃね?とか
色々あるわな
なんか複合的なんだよ
動的型がここまでケチョンケチョンになるとは流石に想像できなかったわ
2017/06/17(土) 23:00:37.97ID:KrWMylVm
http://hissi.org/read.php/tech/20170617/cU1rZHJVT1E.html
はいはい、もう君の素性はバレてるよ
2017/06/17(土) 23:04:50.91ID:qMkdrUOQ
ただ動的型にも良い点があって
「処理系の実装が楽」
しかしこれも実用性を考えて突き詰めていけばJSのV8エンジンのように
加速度的にむしろ大変なことになるというね
とにかく旨みが無い
2017/06/17(土) 23:05:43.09ID:KrWMylVm
http://hissi.org/read.php/tech/20170617/cU1rZHJVT1E.html
はいはい、もう君の素性はバレてるよ
2017/06/18(日) 00:20:30.41ID:lJ0QohrH
LISPみたいに動的型でも宣言ある言語の方がスコープが分かりやすい
2017/06/18(日) 02:54:31.67ID:MwiRGqjx
動的型付けでダックタイピングみたいに
組みやすくなってるメリットがあるから

実際Ruby以外にもPerl、Python、PHPの
P言語はみんな動的型付けになってる

小規模Webサービスのサーバサイド言語
としての用途には動的型が合ってる
2017/06/18(日) 07:50:58.11ID:ppLsekVC
>>357
何か勘違いしてるみたいだけど、ダックタイピングっていうのはオブジェクト指向言語の実装手法の一つで、プログラマにメリットなんかないよ
特にRubyだと多態をダックタイピングに任せるのは嫌われる傾向があって
無意味でも空のメソッドを定義しておいて継承したりするし
2017/06/18(日) 08:09:30.26ID:ppLsekVC
ちなみに、Rubyでダックタイピングが好まれないのはドキュメントよりもコード読めという文化のせいだと思ってる
ダックタイピングだと「このパラメータにはアヒルを渡してくれ」じゃなくて
「このパラメータにはアヒルのように歩きアヒルのように鳴くものを渡してくれ」といちいちドキュメントに書かなきゃいけない
(静的型になる前の)Pythonはドキュメントを重視する文化だから実際そういうドキュメントの書き方をすることもあるんだけどね
Rubyだとそれを避けるために無意味とわかっていても空のスタブとしてアヒルクラスを定義しておいて「アヒルを渡してくれ」と書くわけ
360デフォルトの名無しさん
垢版 |
2017/06/18(日) 08:24:04.22ID:mREyO8+w
>>352
Rubyが動的型って言うより、
型宣言不要と特徴付けるのがええんちゃうかなぁ。

変数宣言なしは良いとして、変数のスコープが判りにくくなったってのは、
そうかも。
2017/06/18(日) 08:29:35.01ID:F94toio2
ダックタイピング任せはメンバの追加がしづらいのも問題
静的型ならインターフェースにメンバを足せばコンパイルエラーになるからエラー箇所を直せばいいが
完全なダックタイピングだと手掛かりがなく修正漏れが発生しやすい
とりあえずスタブを継承させるようにしておけばメソッドを足してもメソッド未定義のエラーにはならない
362デフォルトの名無しさん
垢版 |
2017/06/18(日) 16:45:30.43ID:xPH4G83l
いまさら$とか@とかつけたくないな
2017/06/18(日) 17:45:55.35ID:MwiRGqjx
>>358
>Rubyだと多態をダックタイピングに任せるのは嫌われる傾向
>>359
>Rubyでダックタイピングが好まれない

勝手に決めんなって
それはJavaみたいな静的型の発想で
Rubyを使おうとする奴の話だろ

インターフェイスの継承不要なのが
ダックタイピングのメリットだから
364デフォルトの名無しさん
垢版 |
2017/06/18(日) 17:56:41.46ID:mREyO8+w
Rubyのスクリプトをバックグラウンドで動かすにはどうすれば良いでしょう?
>ruby someScript.rb &

と実行してもTerminal.Appを閉じるとrubyも終了してしまいます。
OSはmacOS Sierraです。

以前、HP-UXで作業して居た時には、xtermを閉じても、logoutしてもバックグラウンドで動き続けてくれました。

launchdとかいうdeamonをコントロールするコマンドがある様なんですけど、これを使って動かさないといけないのでしょうか?
2017/06/18(日) 18:03:58.53ID:kXxrIi51
tmux使え
366デフォルトの名無しさん
垢版 |
2017/06/18(日) 18:13:50.36ID:mREyO8+w
>>365
レスTHX
terminal multiplexerを使えば良いのでしょうか?

someScript.rbを動かすには、someScript.plistを書いて
>launchctl load someScript.plist
ってやるらしいのですが、plistファイルなんて書いた事ないぞぉ。

書き方がよく判らん。
なにか、勘違いしてたら、ご指摘を!
367デフォルトの名無しさん
垢版 |
2017/06/18(日) 18:27:18.73ID:mREyO8+w
>launchctl load a.plist
/work/a.plist: Invalid property list


property listの書き方がよく判らん。
ただのxmlファイルじゃないのか?コメントの放り込み方が悪いのか?
無効なproperty listだとぉー?
368デフォルトの名無しさん
垢版 |
2017/06/18(日) 18:38:44.94ID:mREyO8+w
やったぁー。動き出しタァ。
Terminal.Appを閉じても動いてる。ふぅー。
369デフォルトの名無しさん
垢版 |
2017/06/18(日) 19:28:18.01ID:mREyO8+w
俺的忘備録

必須key、3つ
<key>Label</key>
<key>ProgramArguments</key>
<key>KeepAlive</key>

3つ目のやつを<true/>にしないとbackgroundで動かん!
さらに、最後のはOnDemand=falseと等価なのだが、
OnDemandはshould not use!だって。
man launchd.plistに詳細が記載。
370デフォルトの名無しさん
垢版 |
2017/06/18(日) 19:51:32.81ID:mREyO8+w
Labelが無いとどうなるんでしょう?
371デフォルトの名無しさん
垢版 |
2017/06/18(日) 19:54:50.51ID:mREyO8+w
Invalid or missing service identifier
372デフォルトの名無しさん
垢版 |
2017/06/18(日) 20:02:09.12ID:mREyO8+w
さて、stdoutはどうやって拾うのだ?
373デフォルトの名無しさん
垢版 |
2017/06/18(日) 20:13:05.46ID:mREyO8+w
man lauchd.plist
して/stdout
すれば出て来た。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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