X



スレ立てるまでもない質問はここで 149匹目
レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん
垢版 |
2018/06/17(日) 10:31:28.00
質問する前にGoogleで検索しましょう。 http://www.google.com/
プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。
ウイルス、ハッキング・クラッキングを求めるような発言は禁止です。
Javascript は Web 制作板、CGI は Web プログラミング板へ。
業界談義、愚痴はプログラマ板へどうぞ。
ゲーム関係の話題はゲーム製作板へどうぞ。
ネタ、板とは関係の無い話題はご遠慮ください。
ワッチョイは住人が離れスレが寂れます導入禁止。

前スレ
スレ立てるまでもない質問はここで 148匹目 [無断転載禁止]©2ch.net
https://mevius.5ch.net/test/read.cgi/tech/1495618637/
0830デフォルトの名無しさん
垢版 |
2019/10/13(日) 18:38:12.75ID:NI2mjh97
>>817
次前コンパイルという手順をコンピューター側で自動にしておけば、
スクリプト言語とかわらないんだがな。
0832デフォルトの名無しさん
垢版 |
2019/10/13(日) 19:01:29.79ID:5AXSetjs
>>830
これって簡単なんですか?
オペレーター側のローカルPCのの環境セットアップが簡単ならやりたいです。
0833デフォルトの名無しさん
垢版 |
2019/10/13(日) 19:05:32.14ID:j3fG3YC6
ユーザーにスクリプトをいじらせる必要がなくてダブルクリックで実行できればいいなら
配布はC#が一番楽だな。
0834デフォルトの名無しさん
垢版 |
2019/10/13(日) 19:40:27.57ID:qg/TNtNV
スキル上げしてたら、極悪扱いされた。。。
ペット虐待ではあるが・・・。
0836デフォルトの名無しさん
垢版 |
2019/10/13(日) 21:12:34.96ID:5y3mzviq
>>832
ts-node とか deno

配布に関してはrubyと同じ問題抱えるから
部員のリテラシーも考慮して自分でトレードオフ見極めるしかない
0837デフォルトの名無しさん
垢版 |
2019/10/13(日) 23:47:02.71ID:Gu1oNPJo
>>817
例えば、Ruby で、以下のコードを、script.rb に書く

そして、ダブルクリックで起動できるように、
script.bat ファイルに、ruby .\script.rb と書く。
または、script.vbs ファイルに、CreateObject("WScript.Shell").Run "ruby .\script.rb", 0
(各ファイルが、同じフォルダ内にある場合)

クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる

str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換

ary = str.each_line.map( &:strip ) # 連続する空白類を除去する

IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end

他にも、FileUtils::DryRun も便利。
ファイル操作を実際にしないで、どういう処理が行われるかだけを確かめる。
PowerShell の、-WhatIf と同じ

他には、VSCode, Node.js もインストールしておけばよい
0838837
垢版 |
2019/10/14(月) 00:00:45.66ID:qXl8FtHN
>>817
PowerShell スクリプトも、同様に、bat, vbs から、ダブルクリックで起動できるだろ

クリップボード内の複数行文字列の、各行の先頭・末尾から、
連続する空白類を除去して、クリップボードに入れる

例えば、script.vbs ファイルに、
CreateObject("WScript.Shell").Run "powershell ""gcb | % trim | scb""", 0

同様に、script.bat ファイルにも、
powershell .\script.ps1 と書けば、ダブルクリックで起動できるだろ
0839デフォルトの名無しさん
垢版 |
2019/10/14(月) 01:17:48.63ID:+IIeKy6A
>>838
色々ありがとうございます。

私が、batでrubyのシェバンをする理由は、ファイルが一つで済むようにという意図が大きいです。
そちらの観点だとなにかオススメはありますでしょうか。
0840デフォルトの名無しさん
垢版 |
2019/10/14(月) 02:31:49.80ID:NXmV97Dm
operatorを大量に使う時、
+ A
+ B
+ C
と、、
A +
B +
C +
のどっちが普通でしょうか?A/B/Cは変数名が入るので結構長かったりもします。
0842デフォルトの名無しさん
垢版 |
2019/10/14(月) 03:59:56.33ID:NXmV97Dm
>>841
画面内に配置した大量(数は状況次第で、最小120、最大でたぶん1000以上)のオブジェクトの座標から、
次に配置するオブジェクトの座標を決める必要があるので・・・
0843837
垢版 |
2019/10/14(月) 04:43:58.44ID:qXl8FtHN
>>817
@echo off
@ruby -x "%~f0" 2>%~n0.err
@for %%i in ("%~n0.err") do if %%~zi == 0 (del /s /q "%~n0.err") >NUL
@exit /b

こういうのは、Perl 並みに、可読性が悪くて、意味がわからないw
こんな暗号みたいなコードを、誰も保守できないだろ

VBS, PowerShell でも、Ruby よりは可読性が悪いから、保守しづらい

やっぱり、Rubyで、script.rb に、コードを書いたら、
端末から、ruby script.rb で実行もできるし、

それをダブルクリックで起動したいのなら、
script.bat, script.vbs ファイルに、起動部分だけを書く方がよい

まさに、アプリのショートカットも、同じ仕組み。
アプリと起動部分を分けてる

それと名前欄に、811 と入れて投稿してください。
投稿者が、誰か分からないので
0844デフォルトの名無しさん
垢版 |
2019/10/14(月) 09:41:04.02ID:CmkGXuzV
>>843
.rbの拡張子をrubyに関連付けすればscript.rbのダブルクリックでスクリプト実行できるよ
-xオプション付きにしたければそういう関連付けも可能

そのバッチは引数で渡されたrubyのコードを含むファイルを-xオプション付きで実行して
標準エラーをファイルに書いてサイズが0なら削除するっていう内容だけど
rubyでエラーハンドリングしてログファイルに書き出せば基本的にいらないと思う
0845デフォルトの名無しさん
垢版 |
2019/10/14(月) 09:55:03.21ID:CmkGXuzV
>>842
処理の目的は理解できたんだけど
オペランドが1つの"+"オペレータってどういうものなの?

改行が式や文の区切りではなくて
A + B + C + と +A + B + C ?

いずれにしろ使ってる言語のスタイルガイドを参考にして決めればいいと思う
処理的にはループやコレクションで抽象化して
オペレータを大量に書かなくてもいい仕組みを考えたほうが良さげ
0846デフォルトの名無しさん
垢版 |
2019/10/14(月) 10:40:43.00ID:6AvUVRYN
>>842
オペレーターが大量か少量かによらず、改行が必要なとき、二項演算子の前と後ろどちらに改行を入れるのかをコーディングルールで定めるべき
可読性の面で演算子が先に来る方が俺は好きだ
0848蟻人間 ◆T6xkBnTXz7B0
垢版 |
2019/10/14(月) 12:11:48.32ID:/dRG0sEv
画面に似たようなオブジェクトが100個もあるなら普通は配列かstd::vectorなどを使うだろ。
0849840
垢版 |
2019/10/14(月) 12:27:01.83ID:NXmV97Dm
みあんさんありがとうございます。
仰る通りコレクション化してしまえば、
2Dゲームの「衝突判定 → 判定結果によって移動させる」やり方がほぼそのまま使えそうです。
くだらない質問ですみませんでした。
0850デフォルトの名無しさん
垢版 |
2019/10/14(月) 13:21:26.11ID:CmkGXuzV
昔「弾幕」って本買ったけど積読したまま押入れの肥やしにしてるのを思い出した
0852デフォルトの名無しさん
垢版 |
2019/10/14(月) 14:31:07.73ID:/43KYLEN
ここ3日間くらいの「RubyとPythonどっち」っていうやりとりに便乗させてください。

だいぶ前ですが、質問者さんと同様に自分もスクリプト言語を習得したくなって、
ネット上で調べたり聞いたりしたことがありました。
「WindowsでRubyを使うと罠にハマることが多い。地雷原を歩くようなもの」
といったご意見が複数あり、Rubyは候補から外しました。

今回のやりとりでRubyを勧められてる方が多いので少し驚きました。
テキスト処理程度ならWindowsで利用するのも問題ないのでしょうか。
自分は結局、どのWindows PCにも入っていてるという利点に惹かれてPowerShellを
使うようになったのですが、入門書/入門サイトで少しだけ触った好感度でいうと
Ruby>Python≧PowerShell でした。
すぐにPowerShellから乗り換えようとまでは思わないのですが、今後の参考のために
教えてください。
0853デフォルトの名無しさん
垢版 |
2019/10/14(月) 14:42:08.78ID:FdPLXAab
これだけ長文で質問がかかれてなくて句点付きか…
なかなかの才能の持ち主だと思った
0854デフォルトの名無しさん
垢版 |
2019/10/14(月) 14:49:13.33ID:/43KYLEN
>>853
すみません、回りくどかったです。質問は下記のとおりです。
テキスト処理程度ならWindowsで利用するのも問題ないのでしょうか。
0855デフォルトの名無しさん
垢版 |
2019/10/14(月) 18:07:12.04ID:CmkGXuzV
>>851
すまんが元ネタわからない

>>852
Unix系に比べると
- 最初の環境セットアップのハードルがやや高い
- 文字コードでつまづく可能性あり(これはPythonでも同じ)
- RubyのWindowsユーザーが少ないので情報量が少ない

10年近く前に数年間CygwinでRuby使ってたけどRubyが直接の原因で困った記憶はない
文字コード関連の問題と使いたいUnixツールが使えないってのはよくあった
ってことで俺は全く問題ないと思うがそこは自分で試して見るほかないと思う
0856811
垢版 |
2019/10/14(月) 19:03:22.84ID:+IIeKy6A
皆さんの意見を総合するとRubyが一番良さげですね。
加えて、C#&EXE化も検討します。

ありがとうございました。
0858デフォルトの名無しさん
垢版 |
2019/10/14(月) 20:05:06.37ID:ZHVtioYP
正直テキスト処理程度で最強を争ってもしょうがない
テキスト処理はソフトウェア開発に置いて
一分野でしか無い
0859デフォルトの名無しさん
垢版 |
2019/10/14(月) 20:42:48.24ID:/43KYLEN
>>855
詳しくありがとうございます。
過度に心配することはないみたいですね。
機会があれば試してみようと思います。
0860デフォルトの名無しさん
垢版 |
2019/10/14(月) 21:20:06.03ID:/43KYLEN
>>857
Perlは私には難しかったです・・・。
PowerShellをやるまえにPerlの入門書を読んで、
簡単なスクリプトを書いて使うことはできたのですが
1〜2年プログラミングから離れたあと書こうとするとすっかり忘れてしまって
3回入門しなおして、あきらめました。
VBAやPowerShellでもある程度忘れるのですが
Perlのほうが記号のたぐいが多くて、暗記力のない私にとっては忘却度が深刻でした。
0864837
垢版 |
2019/10/15(火) 00:12:09.35ID:2TGG4eyN
>>852

>>813-814
に書いてある。
Windows でも、CSV・テキスト処理程度なら問題ない

1つ前のバージョンを使えばよい。
Mac/Linux ならRuby 2.6 で、WindowsならRuby2.5

Windowsでは、irb, pry のようなREPL は、日本語でバグるから、ダメ!
漏れは、ユーザー環境変数、RUBYOPT に、--encoding=UTF-8 を設定しているから、irb は使えない。
Windows とのやり取りを、UTF-8だけに限定しているから、CP932 では動かない

代わりに、VSCode で、Code Runner という拡張機能で、
右クリックメニューから、選択したコードを実行する

他には、1-liner で、クォーテーションの解釈でバグるから、%Q( ) で、囲む必要がある。
-p オプションにバグがあるから、代わりに、-n を使う

Linux では、
ls | ruby -ne 'puts $_.center(20, "-")'

Windows では、
ls -name | ruby -ne 'puts $_.center(20, %Q("-"))'
0865837
垢版 |
2019/10/15(火) 00:19:51.79ID:2TGG4eyN
Perl は、暗号みたいで可読性が低い。
PowerShell, VBS は、あまり複雑なものは無理

結局、CSV・テキスト処理は、Ruby になる
0867デフォルトの名無しさん
垢版 |
2019/10/15(火) 01:03:55.75ID:QM8G0kj4
最初Perlを覚えようとして数分でギブアップしてRubyにしたな
必要があればPythonやLua、JScriptも書くが基本Rubyだわ。コード効率が全然違う

そういやRubyってWindowsのコマンドライン引数をUnicodeで取れるようになったのか?
ちょっと前のバージョンだとダメだった記憶があるが
0868837
垢版 |
2019/10/15(火) 02:17:50.48ID:2TGG4eyN
Windowsでは、irb, pry のようなREPL は、日本語でバグるから、ダメ!

漏れはWindowsで、ユーザー環境変数、RUBYOPT に、--encoding=UTF-8 を設定しているから、
irb, pry のような、CP932 でやり取りする、REPL は使えない。
Windows とのやり取りを、UTF-8だけに限定しているから、CP932 では動かない

VSCode で作って、PowerShell から実行する
「ruby オプション script.rb 引数」の形

それをダブルクリックで起動したいのなら、
script.bat, script.vbs ファイルに、起動部分だけを書く

.rb の拡張子を、ダブルクリックに紐づけると、不注意で起動されてしまうので危険!
0870デフォルトの名無しさん
垢版 |
2019/10/15(火) 08:26:42.36ID:f1lycctY
>>866
いやいやRubyくんは知識が中途半端だから
問題の本質がわかってないだけだよw

話は単純で、RubyやPerlなどUnixやLinuxに最適化されてるものは
ファイルの文字コードにはUTF-8を使うようにしましょうと言うだけの話。
(ファイルの文字コードは元からUnicodeなので問題は起きない)

Windowsもコマンドプロンプトはデフォルトこそ(日本語設定では)ShiftJISだが
UTF-8対応してるし、WSLはUTF-8が基本。

スクリプトファイルをUTF-8で記述するようにし(メモ帳ですらUTF-8対応してる)、
そこから読み込むデータファイルをUTF-8にすることで、LinuxでもWindowsでも
文字コードの問題は一切発生しなくなる。

UTF-8を使うだけで文字コードの問題はすべて解決するというわけ

もしスクリプトファイルからShiftJISのファイルを扱いたければ、
スクリプト外のiconvやnkfを使って変換すればよい。もうUTF-8に統一しよう。
0871867
垢版 |
2019/10/15(火) 10:57:31.55ID:Nw/k9czi
2.5に--encoding=UTF-8を付けるとARGVはUnicode対応になるようだ

>>870
昔のWindows版RubyはARGVがCP932決め打ちだったと記憶している
そのためCP932に含まれない文字列を含む引数の扱いに難があった
0872デフォルトの名無しさん
垢版 |
2019/10/15(火) 12:41:30.07ID:qvzCc57+
_ismbsleadや_ismbstrailって、Shift-JISのような2バイト文字のときはわかるけど、
UTF-8のような3バイト以上の文字のときは、どのような動作になるのでしょうか。
それとも、2バイト文字専用の関数ですか?
0873デフォルトの名無しさん
垢版 |
2019/10/15(火) 12:48:31.55ID:MIRz+4X1
javascriptのデータ型の質問です

var num = [10,20,30,];

var num2 =num;

num[1] =50;

console.log(num2);//結果10,50,30

配列は参照型なのでこの結果には納得できますが

var num = [10,20,30,];

var num2 =num;

num =[40,50,60];

console.log(num2);//結果10,20,30
console.log(num)//結果40,50,60

この場合なぜnum2の値は変わらないのですか?
配列を全て入れ替えると、num2に入れたnumとは別物(参照先が別)扱いになるのですか?
0874デフォルトの名無しさん
垢版 |
2019/10/15(火) 14:28:04.07ID:81YUYh7D
num = [40,50,60];

num[0] = 40; num[1] = 50; num[2] = 60;
ではなくて
num = new Array(40,50,60);
だから
添字のブラケットとブラケット構文は別物です
0875デフォルトの名無しさん
垢版 |
2019/10/15(火) 14:34:21.71ID:17EAacqo
JSの[N,M]は配列リテラルなので、それそのものが配列として機能したと思う。
0876デフォルトの名無しさん
垢版 |
2019/10/15(火) 15:10:31.40ID:LCoHwxWt
>>873
num2 = num;
は箱の場所(住所みたいなもの)を num と同じにしろ、という意味。
だから、num[1] =50; とすると、num2[1] も 50 になる。
一方、
num =[40,50,60];
とすると、「今までの num の場所に右辺をコピーして上書きしろ」
という「意味ではなく(!!)」、
「num という変数の『指している』対象を右辺の置いてある場所(先頭)に変えろ」
という意味。だから、num2には全く影響を与えず、num2は依然として
昔の箱の場所を指し続けている。
0877852
垢版 |
2019/10/15(火) 17:49:49.01ID:xlc04VK+
皆さんいろいろ教えていただいてありがとうございました。
近いうちにRubyを導入してみようと思います。
0878デフォルトの名無しさん
垢版 |
2019/10/15(火) 20:33:26.95ID:rgut+G6x
>>871
それはコマンドプロンプトの問題だったんじゃないかなぁ
Cygwinだと1.9時代でも問題なかったよ


>>868
>Windowsでは、irb, pry のようなREPL は、日本語でバグるから、ダメ!

「バグる」で思考停止せずに問題を切り分けよう
https://github.com/pry/pry/wiki/Windows-support


>.rb の拡張子を、ダブルクリックに紐づけると、不注意で起動されてしまうので危険!
これはその通りだけど、.batでも.vbsでも同じようなものじゃないの?
セキュリティも考えるなら署名付きPowerShellとかのほうが安全ではあるよね
0879デフォルトの名無しさん
垢版 |
2019/10/15(火) 20:41:27.51ID:rgut+G6x
>>872
どういう動作になるかはわからないけど
MBCS用の関数だからUnicodeには対応してないんじゃない?
VC系のスレで聞いたほうがいいかも
0881デフォルトの名無しさん
垢版 |
2019/10/16(水) 00:53:20.11ID:BcOpz+1/
ココまでの流れを見ると、PythonはAIやらない限りRubyに劣るという認識でよろしいですか?
文法やライブラリで勝るところって何か無いのでしょうか?
0882デフォルトの名無しさん
垢版 |
2019/10/16(水) 01:39:47.59ID:J5r9S3ID
>>881
全然認識が違う

Pythonが劣っている訳ではなくて、Python使えますというと数学力や機械学習を期待されてしまい、それがない人は辛くなる

なおPythonが文法で勝るところは余りないように思うが、別に負けているとも感じない
Rubyのメソッドチェーンは素直に羨ましい
Pythonのimport/from importの仕様やジェネレータの仕様はなんだかなぁ状態
Rubyはメソッド周りがわけわかめ、def、proc、porc.new、->はなんとかならんかったのか

強力なライブラリはRubyよりもPythonのが多い
pandasやnumpyがめっちゃ強力、matplotlib,seaborn,plotlyでグラフもOK
JupyterがあるのもPythonの利点だったけど、最近はRubyも使える

画像処理は外部ライブラリを使うだけなので似たり寄ったり
C言語とのバインドはRubyでswig使うよりはPythonのが簡単に思う

Python2の頃は日本語処理が酷かったが、pytjon3になってからはそうでもない

バージョンアップごとの対応はどっちも辛かった
Ruby 1.8 -> 1.9 -> 2.0で都度キレた
Pythonは2.7から3系になったときに同じくキレた
4系でも多分キレると思う
0883デフォルトの名無しさん
垢版 |
2019/10/16(水) 19:03:43.52ID:sUcGSwhO
>>881
Rubyの標準クラスライブラリのリッチさは上位組だと思うけど
素の状態で勝負したらPythonに勝ち目はないね
0884デフォルトの名無しさん
垢版 |
2019/10/17(木) 00:12:04.35ID:nmwrV9Kg
Python は東大数学科・大学院など、数学・統計学などの重要度が高いから、あまりプログラミングと関係ない。
プログラマーのキャリアパス上からは、仕事が得られない

学歴・大学院などの要素が大きい。
MBA など、文系の修士号から来る人も多い

プログラミングは、手を動かすものだけど、
低学歴プログラマーが頑張っても、なんともならない領域

YouTube で、KENTA が言ってる通り、
初心者が1年勉強して、仕事を取れることがない。
周りが高学歴ばっかりだから

一方、Ruby は、Web 系サーバー側に限定されているから、プログラマーのキャリアパス上にある。
Ruby → JavaScript, Go, Elixir, Kotlin。
サーバー側の正統派のキャリアパス

最先端の自社サービス、GitHub, Airbnb, Kickstarter、
Cookpad、食べログ、Gunosy など

Rubyは、Java みたいな、5大SIer・多重下請け構造・階層ピラミッド・土方系とは異なる。
階層に入ると、1社経由する度に、3割抜かれる(システムの請負料金・保証料金)
0885デフォルトの名無しさん
垢版 |
2019/10/17(木) 06:45:24.35ID:gq3I2ckq
Rubyは作者が日本人だけあって言語が一時しのぎの感情論で作られていて論理性が全く感じられず
使うだけで洗脳されて馬鹿になるからやめた方がいい
pythonはその反対
0886デフォルトの名無しさん
垢版 |
2019/10/17(木) 10:27:02.49ID:tq7j3RVK
↑などという論理性が全く感じられない感情論を吐くのが
洗脳されて馬鹿になってる証拠
0887デフォルトの名無しさん
垢版 |
2019/10/17(木) 11:27:44.59ID:huR1Dm0j
Rubyは作者が日本人だけあって言語が一時しのぎの感情論で作られていて論理性が全く感じられない。
ちょっと使ってみただけでも、そんな感じになってるのが感覚的にわかるだろ
その雰囲気を肌で感じることが出来ないやつは、論理性がなく感情論で話をしてる
0890デフォルトの名無しさん
垢版 |
2019/10/17(木) 12:00:43.15ID:GTpPRCCe
PC用のソフトウェアが、スマホアプリのように気軽に課金される日は来ると思う?
PCから割れの被害がなくなる日は来ると思う?
0892デフォルトの名無しさん
垢版 |
2019/10/17(木) 13:28:26.72ID:ucUV19VT
>>890
バカじゃねえのか
有料課金質問サイトで質問しろよ

おめーはネタと情報はタダだと思ってんだろ
だからそれでいいんだよ
0893デフォルトの名無しさん
垢版 |
2019/10/17(木) 13:33:52.71ID:qaCXzdDd
独自URLを定義したいんだけど
ただ自分のアプリ(localhost動作)で使うだけのURLの場合、スキームはどうすべき?
dokuzi://my.app/

URLを使いたいのは、ただそうするのが標準だからかなと思ったから。
外部アプリから自分のアプリが管理してるデータへの参照を、
どんな文字列でもよかったんだけど、
どうせならURLっぽくやろうかなと思った。
0895デフォルトの名無しさん
垢版 |
2019/10/17(木) 15:54:01.39ID:lECi1og0
カスタムURIスキームの利点はユーザーがURLを指定できるところに
何でも起動できちゃうURLを仕込めるというところにあるから
自アプリだけで完結しているなら利点はないしそこまで好き勝手に使っていいという気はしないな
0897デフォルトの名無しさん
垢版 |
2019/10/18(金) 01:12:05.48ID:tY/eTMs7
Rubyはメソッドチェーンのおかげで最高の言語だと感じますが、間違いでしょうか?

grep、join、gsub、gsubってつながっていく様子が、まるで
ファイヤー、アイスストーム、ダイアキュート、ブレインダムド、ばよえ〜ん、
って印象です。
0898デフォルトの名無しさん
垢版 |
2019/10/18(金) 01:15:47.93ID:2g/GJrKd
関数繋げるだけならlispと何が違うんだ?

ただし、個人の主観は絶対的に正しいので、オメーが最高の言語だと感じてるならどうぞお好きにとしか言いようがない
つまりは、個人の主観に間違いなし、だ
コイツの脳内で渦巻いてる主観には間違いは無いし間違いがあろうとなかろうとそれには気付けない
だから主観そのものは絶対的に正しい
よかったネ!
0902デフォルトの名無しさん
垢版 |
2019/10/19(土) 06:28:11.22ID:dr1ysGqL
フォームから入力した値をDBに登録する際に、入力された値が決められた規則に従っているか確認したいので、
プログラムでチェックするべき範囲とDBのCHECK制約で行う範囲の明確な線引きとかガイドラインがあれば教えてください。
0903デフォルトの名無しさん
垢版 |
2019/10/19(土) 09:59:39.30ID:V83HT+bA
>>902
そんな雲をつかむような質問ではまともな回答しようがないので質問のガイドラインを勉強してきてください
0904デフォルトの名無しさん
垢版 |
2019/10/19(土) 10:29:12.51ID:fDUUZQql
まず、出来る限り、プログラムでチェックする。
ここでチェックできれば、ネット回線へ送られないから、すごく良い

DB 書き込みでは、すべてをチェックする。
ブラウザで、送られるデータをチートする人もいるので、必ずDB では、すべてチェックする!

基本、ブラウザから送られるデータを信用してはいけない!
チートしたり、伝送ミスで、データが間違っている事が多いから
0905デフォルトの名無しさん
垢版 |
2019/10/19(土) 11:02:07.69ID:nnyc8pgy
CHECK制約は使わない
せいぜい保険の最終防壁
いろいろ理由はあるがDBが返す「CHECK制約xxに違反しました」といったエラー情報をまともなエラーメッセージに変換するのがまず厄介
0906デフォルトの名無しさん
垢版 |
2019/10/19(土) 13:31:13.10ID:vCREqhgr
>>905
最終防壁なら、バグでもない限りでないんだから、そんなエラーをまともなエラーメッセージに修正する必要ないじゃん
スタックトレースをわかりやすい日本語に直さなきゃいけない。みたいな
アホなことをお前は言ってるぞ。
0907904
垢版 |
2019/10/19(土) 14:20:19.31ID:fDUUZQql
クライアント側でチートしたり、伝送エラーがある

ドラクエでは、よくエラーが起こっているから、
インターネットから来るデータは、絶対に信用してはいけない!

途中のルーターで、伝送エラーを見つけても、再送せず、そのまま送ってくるし
0910デフォルトの名無しさん
垢版 |
2019/10/19(土) 15:06:14.38ID:QmPBAH4r
>>902
明確な線引きやガイドラインは無い!!

CHECK制約で守れる整合性の重要度、不整合発生時の影響度、DBにアクセスするプログラムの数、
採用してる設計手法、維持管理・変更時の手間、パフォーマンスペナルティ、プログラマーのレベル等々
置かれた状況とトレードオフを判断して設計者が決めること

プログラム側のみでチェックする場合もあれば
DB側のみでチェックしてプログラム側でユーザーフレンドリーなエラーにする場合もあるし
両方でチェックしてDB側エラーは集約ハンドラで汎用エラーにする場合もある

プログラムーはプログラムだけで保証したがる
DB屋はプログラマーを信用してないからCHECK制約をできるだけ使いたがる
0911デフォルトの名無しさん
垢版 |
2019/10/19(土) 15:55:36.45ID:iFqGS+wa
そりゃ条件式の複雑度数が20を超えたらプログラムで対処、だろ
複雑度数がなんなのかは知らない
0913デフォルトの名無しさん
垢版 |
2019/10/19(土) 20:07:11.93ID:hpHQur/j
マルチエージェントシミュレーションをしようとしているのですが
シミュレーションを管理するクラスと各エージェントクラスはどのような関係にすべきでしょうか
各エージェントを管理クラスに保持すると一括してアップデートできて便利ですが、エージェントが他のエージェントの情報にアクセスできません
0914デフォルトの名無しさん
垢版 |
2019/10/19(土) 20:07:36.03ID:lFhCDuxs
開発プロジェクトの谷間にて、業務効率化スクリプトの機能追加や改善を行っています。
VBA、VBS、Ruby、Perl等いろんな言語のスクリプトが混在していているのですが、皆はこれが厄介だと言います。

しかし、チームで一番若い新人が一番四苦八苦しているのは正規表現の解読であり、私が質問を受けるのももっぱら正規表現関連ばかりです。

結局、業務効率化スクリプトなんてのは、正規表現がわかればその都度、「早く書ける」「操作性が良いのが書ける」を考えて言語を選べばよいだけという認識で良いですかね?
0915デフォルトの名無しさん
垢版 |
2019/10/19(土) 20:34:14.08ID:vCREqhgr
正規表現なんて、少し難しい漢字を知ってる程度のレベル
知らなきゃ困るが、知っていたからっていい文章(コード)が書けるわけじゃない
0916デフォルトの名無しさん
垢版 |
2019/10/19(土) 20:35:18.67ID:sd9gDFLM
>>906
早とちりだぞ
最終防壁として使う分にはいいが、CHECK制約単体でエラーチェックを賄うのはやめとけ、その理由の第一はメッセージのハンドリングがしにくから、という文意だ
0918デフォルトの名無しさん
垢版 |
2019/10/19(土) 20:56:38.06ID:lFhCDuxs
>>917
他にも色々ありますが、以下のようなものが代表的です。

・プロジェクト新規参入者のPCキッティング
・適切な対象の適切なタイミングでのSVN更新補助
・CUnitでのアサートチェックに適さないテスト結果ログの比較自動化
・静的解析ツールでは出来ない開発Pjソース上の不適切箇所の検出
0919デフォルトの名無しさん
垢版 |
2019/10/19(土) 20:58:12.65ID:lFhCDuxs
>>915

知ってたらいいものが書けるわけじゃないけど、知らないと全く以てスクリプトが書けないのだから、覚える以外に無いでしょう?
十分条件ではなく必要条件だということなだけなんですから。
0921デフォルトの名無しさん
垢版 |
2019/10/19(土) 21:59:47.46ID:QmPBAH4r
>>918
おお、想像してたのと全然違った

基本的には読みやすさとメンテのしやすさを考えてベースとなる標準言語を決めておいて
処理内容の特性によって違う言語を選択するようなゆるいルールを作っとくほうがおすすめ

自分はチームメンバー10人いれば下から3番目くらいのメンバーの技術レベルに寄せる
2人くらいできないやつがいても残りでカバーできるから

あと正規表現はもともと読みにくくなりやすいから部品に分解してコメント書いたり
多少遅くても読みやすい表現を選んだり簡単なテストコードを残すとかドキュメント生成とかする
言語によっては正規表現は一続きで書かないとダメなやつもあるからその辺も選択基準になる
0922デフォルトの名無しさん
垢版 |
2019/10/19(土) 22:24:10.31ID:QmPBAH4r
>>913
シミュレーションはわからないけど
エージェントが必要としてる他のエージェントへの参照を管理クラスが渡してやればいいんじゃないの?
0923デフォルトの名無しさん
垢版 |
2019/10/19(土) 22:49:51.20ID:lFhCDuxs
>>921
>おお、想像してたのと全然違った

どんなのを想像されていたのでしょうか?

>ベースとなる標準言語を決めておいて

標準とするならRubyでしょうね。Perlについては昔Perl大好きくんがいたから残っているだけで、新規に書く理由がないですからね。
VBSはInputBoxが標準で使えることと、Win環境である限りどこに持っていっても動くという利点以外に利点が無いので、こいつもRuby化したいですね。
VBAだけは、C#アドイン化が大変なのと、外部化するメリットが無いものが多いのでそのままメンテかな…。
0924デフォルトの名無しさん
垢版 |
2019/10/20(日) 07:08:06.61ID:ADDbXmaX
>>913
>エージェントが、他のエージェントの情報にアクセスできません

たぶん、Chef, Kubernetes などでも、
エージェント同士が直接アクセスする事は、認めていないと思う

そういうプログラミングは、難しすぎて出来ない。
多くのエージェント間で、整合性が取れない

必ず、エージェントはマネージャーに頼んで、マネージャーが仕切るはず!

デザインパターンで言うと、
直接やり取りのObserver(発行/購読)ではなく、
マネージャー経由のMediator(管制塔)
0925デフォルトの名無しさん
垢版 |
2019/10/20(日) 07:31:48.09ID:ADDbXmaX
>>914
テキスト処理なら、総合的に考えて、Ruby が良い!
Rubyでは、Perl 由来の暗号のような変数、$;, $< なども、使わないようにしていく方向

正規表現は、入れ子構造のあるものに対して、使ってはいけない!
例えば、URL の解析でも数千行あるから、複雑すぎて、一企業じゃ作れない

<div 1>
<div><div></div 4></div>
<div></div>
</div 8>

例えばこれを、div で最短マッチしても、div 1・4が対応してしまう。
これらすべてを正しく対応させるのは、至難の業

他にも、CSV 処理を、CSV Module を使わずに、正規表現でやってる人も、ダメ!
CSV, JSON, HTML など、入れ子構造を持つものは、パーサーで処理しないといけない!

正規表現では、数千行も必要だから、無理!
0926デフォルトの名無しさん
垢版 |
2019/10/20(日) 09:11:09.98ID:akKR2ina
Perlが廃れた理由が分かった
普通の人間には正規表現が難し過ぎるんだ
その部分がモロに出てるperlは忌避される
0928デフォルトの名無しさん
垢版 |
2019/10/20(日) 09:48:56.83ID:hHVN/TCw
廃れた理由はオブジェクト指向じゃないから

正確に言えば、オブジェクト指向をすることもできるし、
そのためのモジュールもあるが、どれもスタンダードにはならなかった。
モジュールを使わずにオブジェクト指向もできるがめんどくさい。
基本的な部分で書き方が色々ありすぎて統一できなかった。
レス数が900を超えています。1000を超えると表示できなくなるよ。

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