スレ立てるまでもない質問はここで 157匹目

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2021/06/18(金) 22:50:39.76ID:dSkONN1n
この板はプログラムを作る人のための板です。
あらゆる質問はまず
スレ立てるまでもない質問はここで
スレにしてください。

【前スレ】
スレ立てるまでもない質問はここで 156匹目
https://mevius.5ch.net/test/read.cgi/tech/1613809074/

次スレは>>980が立てること
2021/07/04(日) 00:05:03.14ID:aHJdtdht
>>71
5ch は、日本語はsjis とか、20年前の技術だから、
バグだらけで、現在に対応できていない

各サーバー毎に、挙動も異なるし、
書き込んだ文字列の後に、; が表示される事もある。バグ

単に文字列を表示するだけじゃなく、
フォントを変えたり、HTML を解釈するから、
普通の掲示板よりも、格段に難しい
78デフォルトの名無しさん
垢版 |
2021/07/04(日) 00:31:07.73ID:I3mRy3sU
>>71
アホユキはスキル全然ないよ。
Youtubeでたまにプログラミングの話題になったときの発言を聞くと一発でスキルが無いのが分かる。
7977
垢版 |
2021/07/04(日) 02:36:43.42ID:aHJdtdht
ホリエモン・ひろゆきは、プログラマーではない。
どういう技術が必要かとか、そういうのは調べているかも知れないけど

開発者と言うよりも、管理者

話している内容から、あまり知らないように思われる
80デフォルトの名無しさん
垢版 |
2021/07/04(日) 10:28:47.88ID:pili1Lz/
>>73
>>77-79
https://bokurema.com/
2021/07/04(日) 15:47:52.65ID:gC/LMA5R
マコなり社長はプログラマーだったらしいがな
82デフォルトの名無しさん
垢版 |
2021/07/04(日) 17:15:36.99ID:OXyMLYXe
>>81
その人もスキルは低い。
経営者に逃げる者はもともとプログラミングに向いていなかった。
2021/07/04(日) 21:29:47.64ID:aHJdtdht
YouTube で有名な、雑食系エンジニア・KENTA のサロンは、日本6位。
日本のトップは、KENTA

経歴
https://github.com/kenta-polyglot/cv

TOEIC 820点だから、100以上の技術を学べる

Ruby on Rails なんて、ほとんど英語ができる文系。
ビジネス用のフレームワークだから、ほとんど英語で決まる。
英語 = 年収

ドラゴン桜と同じ
英語ができる文系が、東大理1 に受かる

英語では点差が開くけど、
数学ができても、点差が開かないから受からない
2021/07/04(日) 22:06:27.00ID:ZLI7DyBh
これ完全に本人やろ
ゴミは二度と来るなよ
85デフォルトの名無しさん
垢版 |
2021/07/05(月) 14:53:28.83ID:zfQ+6anv
本人なら馬鹿

他人なら本人に迷惑だからやめれ
86デフォルトの名無しさん
垢版 |
2021/07/05(月) 22:44:57.85ID:zXics9HJ
プログラミングしてる人におすすめのチートシート下さい
2021/07/06(火) 00:12:26.46ID:NJP4BZI0
Rubyおじさんは国産のAIだよ
5chとYouTubeで学習した結果壊れてしまった
8883
垢版 |
2021/07/06(火) 00:37:35.73ID:AJxevGXU
雑食系エンジニア・KENTA 流・勉強方法のチート!
最も勉強時間を少なくして、効率的に稼ぐ方法

Web系エンジニアを目指す人のためのプログラミング学習ロードマップ、2021/2
www.youtube.com/watch?v=0TABrlhci5M

2021年のWeb系エンジニア転職を成功させる3つの技術要素、2021/4
www.youtube.com/watch?v=70VrB7LTe9g

Rails, Linux, Docker Compose, Node.js(Webpack, Babel), Bootstrap
VSCode(Remote Container, WSL2 ならRemote WSL), Heroku, CircleCI、データベース

今までは、Docker Composeまでが初心者用コースだったが、
最近は誰でも、Docker出来るから、
AWS Fargate, Terraform, React, Vue.js, TypeScript も加わった

だから、AWSのくろかわこうへいのサロンにも、入る必要がある。
KENTA流チートでは、1年の未経験者が、10年以上のプロよりも技術力が上になる!

実際に米国年収では、Railsの1,300万円を抜いて、
AWS Solution Architect が1,400万円と最高位になった!

一方、Node.js は900万円だけど、Railsの2倍募集はある
2021/07/06(火) 03:39:58.44ID:nSctAZgU
>>88
グロ
2021/07/06(火) 11:05:18.71ID:9I0L2pl5
やめろと言われてやめる様子も無いところを観ると本人か
2021/07/07(水) 00:37:18.43ID:uTLk5wKZ
AWS LambdaとかAzure FunctionsってJavaとかC#をサポートしてるけどさ
これって関数の呼び出しのたびにバイナリがロードされんの?
めたくそ遅くなりそうな気がするんだが大丈夫なのかな
2021/07/07(水) 00:48:30.37ID:1s6qCIV1
一度起動したコンテナはしばらく使い回されるから大丈夫
糞Azure糞Functions糞に至ってはIISでホストされる実質ごく普通のWebアプリケーションで、
そのHTTPのエンドポイントをサーバーレス関数に見立てているだけで全くもってサーバーレスではない
2021/07/07(水) 01:20:21.98ID:uTLk5wKZ
>>92
サンクス
リクエストない時は課金もないって聞いたから都度ロードしてると思ったけどそうじゃないのね
2021/07/07(水) 01:39:34.23ID:bUHYGk47
ひょっとしたら、メモリにはプログラムを数分間しか保持しないのでは?

10分ぐらいアクセスが無いと、プロセスを削除するかも
2021/07/07(水) 01:50:19.62ID:1s6qCIV1
>>93
AWS Lambdaはリクエストのない間プロセスが起動したままフリーズする
Azure Functionsには従量課金のプランと時間課金のプランがあり、時間課金の方は実質本当にただのWebアプリだから自明だろう
従量課金の方はLambdaと似た仕組みであると推測されるが、俺はほとんど時間課金の方しか使ったことないから詳しくは知らん
ただし糞Azure糞や糞Azure糞Functions糞は絶対に使うな
2021/07/07(水) 11:49:06.28ID:qVtaH2wa
A社が提供するCRUD API(カスタマイズ不可)
自社で管理する業務領域BのNoSQL鯖
自社で管理する業務領域CのNoSQL鯖

この3つの間でトランザクションを実装したい
そんなこと可能ですかね?
2021/07/07(水) 12:48:46.38ID:n7+/G6RR
有効な現行バージョン番号を持つ場所(X)を設けて、更新後の新しいバージョンはXが更新されるまで使用されないようにする
Xの更新はABCすべての更新が成功したことを確認した後に行う
2021/07/07(水) 14:16:24.72ID:vUBZA2na
>>96
もちろん可能
「saga transaction」で検索
2021/07/07(水) 15:02:32.83ID:uTLk5wKZ
>>97
Aが履歴管理してないのでちょっと無理そうでした

>>98
調べたんすけどすごい複雑すね
Aが削除APIをサポートしてないと補償できないっぽいのと、排他制御がかなり難しいのではという感想
2021/07/07(水) 18:34:58.88ID:opTZ3hwS
>>99
履歴管理されてないのがAだけなら、最後にAを更新して成功したらバージョン上げるようにすりゃいいんじゃね
Aの更新だけが反映されるタイミングが生じるのは避けられないけど、Aが即時のインプレース更新しかできないなら仕方ないでしょ
Aに好きなメタデータを持たせられるなら、Aに更新後のバージョンX+1を持たせといてA.XがXに一致しないときはエラーにするくらいはできるかもね
2021/07/07(水) 20:57:30.40ID:vUBZA2na
>>99
分散トランザクションの実現方法は
現実的には2フェーズコミットとSagaの2つしかないので
求める一貫性と同時実行性によってどちらかを選ぶ

Sagaがめんどくさく感じるかもしれないが
2フェーズコミットであってもやることは基本的に同じ
トランザクションが終わるまでリクエストをブロックするかどうかの違い

どちらを選んでも分散トランザクションそのものの複雑さはなくならない
102デフォルトの名無しさん
垢版 |
2021/07/08(木) 18:24:52.83ID:jJ2baH5P
色んな機器を家のwifiに繋いでるせいかパソコンが遅いのでwifiルーターを増やせばいいのかと思ったんですけど、パソコンが1台しかない場合wifiルーターを増やしてもパソコンは遅いままですか?
103デフォルトの名無しさん
垢版 |
2021/07/08(木) 18:33:40.40ID:Uj7a+mEi
プログラムを最適化すれば速くなるよ
104デフォルトの名無しさん
垢版 |
2021/07/08(木) 18:53:17.82ID:zWBGj7ZC
オブジェクト指向を身に着けて
動画ファイルの整理しようと意気込んだのは良いけど
分類分けだとお目当ての動画を探し出すのが大変だと気づいた
どうしたらいい?
2021/07/08(木) 18:57:45.88ID:XtaqRsen
とあるメンテナンスされてないOSSライブラリに修正やカスタマイズを入れたいのてすが、

1. githubでfork
2. fork先でブランチ切って修正をpush
2. pull request出す際は、base repositoryがデフォルトではfork元なのを、自分の所に変更(したマージを積み重ねていく)

のは

a. お作法的に変でしょうか
b. fork元に通知など行ってしまうでしょうか(forkの時点で分かる件はこの際無視)
c. 仮にfork元のメンテナと連絡が付き、修正を一通り取り込みたいとなった場合、取り込みが面倒になったりしますでしょうか

fork元へのprと、共有リポジトリ的な使い方のお作法は検索で見つかったのですが、このパターンがよく分からず…
2021/07/08(木) 19:53:29.25ID:GuqICNe5
>>104
そのデータはオブジェクト指向的にis-aでは扱いきれないのでhas-aで考えるべき
たとえばあるファイルがhas-a例のプール、かつhas-aつぼみ、といったタグ付けの方向で考えるとうまくいく
2021/07/08(木) 20:30:23.06ID:d04v5wzF
動画静画の分類なんてエロ、1、数回、いっぱいの4つに分けるだけでいいと天原が言ってた
2021/07/08(木) 21:23:05.64ID:3cxWeTdK
動画ID : タグID は、Ruby on Rails で良くある、多対多では?

1つの動画には、複数のタグを関連付ける。
1つのタグは、複数の動画に関連付けられる
2021/07/09(金) 17:57:34.83ID:EuqbNmJ1
>>101
CAP定理だともう一つあったような?
なんだったっけ
2021/07/09(金) 18:03:54.51ID:w0l6CXLG
BASE
111デフォルトの名無しさん
垢版 |
2021/07/10(土) 02:14:39.36ID:+NmTA3Oo
XSSとCSRFの違いがよく分かりません
どなたか説明をお願いしたいです
2021/07/10(土) 02:28:34.81ID:icE46eu/
「xss csrf 違い」で検索!

>>105
git の事は、gitのスレで聞いてください!
2021/07/10(土) 14:34:00.43ID:5XZ7T6Ma
MS ACCESSだと、例えば
SELECT COUNT(DISTINCT 商品価格) FROM 商品台帳;
みたく、COUNT句の中にDISTINCTを入れた書き方はできませんか?使えませんね
2021/07/10(土) 15:00:01.40ID:ZKZ1b0ji
>>111
間違えやすいので自分も間違ってるかもしれないが

XSS は同一オリジン制約をうまいこと回避して任意のスクリプトを実行させることが出来る脆弱性
CSRFは、その上でサイトの認証をうまいこと回避して任意の命令をサイトに実行させられる脆弱性

普通はXSSが実行できたとしても認証情報は守られているので、サイトに偽の命令を送っても実行されない
2021/07/10(土) 15:33:55.00ID:fOJ6OsHP
>>113
使えないのはググることもできないお前自身かと
https://ampeanuts.hatenablog.com/entry/2018/05/09/014634
116デフォルトの名無しさん
垢版 |
2021/07/10(土) 16:18:35.84ID:M8z6v9pM
これblenderで使うpythonなんですけどもう少し良い書き方あったりしますかね?
framenumber変数は実際に使うときは可変で数字がどんどん増えていくんですが
そこからtotalframe変数を引くと目的の数字が取り出せるんですが
このスクリプトだとwhile部分でマイナス以下になるまで計算を続けて
最後にelseで数字をマイナス以上にするという調整が入ってきてここが無駄な気がしてます

framenumber = 31
totalframe = 20

while framenumber > 0:
framenumber = framenumber - totalframe
else:
framenumber = framenumber + totalframe
117デフォルトの名無しさん
垢版 |
2021/07/10(土) 17:18:24.97ID:hyh546Qk
>>116
割り算
2021/07/10(土) 17:20:58.47ID:aL5ZqWOz
framenumber %= totalframe
119デフォルトの名無しさん
垢版 |
2021/07/10(土) 19:45:54.71ID:++81KWKS
>>117
>>118
ありがとう なおしました
120111
垢版 |
2021/07/10(土) 23:22:31.36ID:+NmTA3Oo
>>112
検索していくつかサイトを見てみましたがよく分かりませんでした

>>114
ありがとうございます
しかし完璧には理解できませんでした…
121デフォルトの名無しさん
垢版 |
2021/07/11(日) 03:52:09.34ID:lhtTwFv6
すいません
動きのあるプログラムが作りたいのですがググってみると物理の知識が必要みたいでして
小中高まともに学習してなくて理科から物理基礎までまともに知識ないんですが
ピンポイントでどっからどこまでやれば良さそうでしょうか?
2021/07/11(日) 04:50:45.74ID:KzRRh8fp
>>121
プログラミングやりたいって奴には基礎をないがしろにしてピンポイントな知識だけでどうにかしたい、どうにかできるんでないかと考えている奴をよく見るが、何でなんだろう
それでやりたいことが実現できると思ってるような奴には物理学もプログラミングも無理だから諦めろ
物理を理解したいなら数学もちゃんとやれ
2021/07/11(日) 05:28:09.78ID:E2vDaFku
>>122
お気に触ってしまったらすいません。
ご指摘の通り算数も数学も小学校から復習し直してます。
あまり頭が良いほうじゃないのでやらなくて良いものは出来るだけ避けたくて聞きました。
時間かけてでも真剣に習得したいのでよろしくお願いします。
2021/07/11(日) 05:40:19.44ID:q9j4Dajs
数学しらないてもできるとおもうぞ
たぶん いまから調べる
2021/07/11(日) 05:43:40.78ID:zgsq5Mo2
物凄くざっくりとした質問でピンポイントで教えろ!って凄いw
2021/07/11(日) 05:48:22.67ID:q9j4Dajs
HGIMG4 3.6β1プロ生ちゃんデモ版
スクリプト言語HSP(Hot Soup Processor)でプロ生ちゃんを動かすデモです。
HSP3の3D機能をサポートするプラグインHGIMG4と、3DゲームエンジンUnityを組み合わせることで FBX、VRM、MMDなど多彩な形式の3Dキャラクターを活用することが可能になります。
https://www.youtube.com/watch?v=ZTE8TpYNWWI

Google製ライブラリLiquidFunを使った
HTML5物理演算入門
https://ics.media/entry/12206/

Javascript で動く軽量物理エンジン OimoPhysics と3Dレンダラ Three.js で書いた短いサンプルコード
https://qiita.com/yamazaki3104/items/797b28bba833c06f5f25
2021/07/11(日) 11:05:31.96ID:bBgxyDlv
最低限の労力で知識を得たいとき、知識の深さ優先探索とGoogleで割となんとかなると思ってる
2021/07/11(日) 20:04:08.11ID:ROy10d1B
C++で、floatやdoubleを文字列に変換したいんですが、
to_wstring()は使い易いものの、少数が6桁までしか変換されず、
0.0000001が0.000000となってしまいます。
例えば、0.000000123あればそのように変換されるようにするにはどうすればよいでしょうか?

理屈上はfloatやdoubleの指数部を参照すればそのような変換は可能だと思うのですが、
そのような変換を行う標準的な関数等はないでしょうか?
2021/07/11(日) 20:38:03.85ID:q9j4Dajs
自作すれば?
2021/07/11(日) 20:40:27.39ID:lZiRxAj0
C++ の質問は、C++のスレへ書き込んで聞いてください!

まず、float, double が、10進数で何桁まで表示できるか調べた方がよい。
2 ^ 10 = 1,024、約999 だから、10ビットが、3桁

それと、内部的には最大桁数まで持っていても、
出力すると、表示されない設定なのかも?
2021/07/11(日) 20:40:45.61ID:q9j4Dajs
1以上ならば、その整数部分を出力して0-1の数値だとして
10倍ずつしていれば1桁の整数が取り出せるからそれを点(.)の右にかけばいいだろう
2021/07/11(日) 20:44:35.88ID:q9j4Dajs
でも上のは足す、引く、掛けるを繰り返すことになるから誤差が心配だが
ちょくに内部表現にアクセスできたほうがいいのか
しらない
2021/07/11(日) 20:49:55.44ID:q9j4Dajs
frexp() - 浮動小数点値の仮数と指数の取り出し

double frexp(double x, int *expptr);

浮動小数点値 x を、正規化小数部を示すコンポーネント m と、指数部を示す別の項 n にブレークダウンし、m の絶対値が 0.5 以上、かつ 1.0 より小さいか、または 0 に等しくなるように、また x = m * 2n になるようにします。
関数は、expptr が指す位置に整数の指数 n を保管します。

戻り値
正規化小数部 m を戻します。
https://www.ibm.com/docs/ja/zos/2.2.0?topic=lf-frexp-frexpf-frexpl-extract-mantissa-exponent-floating-point-value
2021/07/11(日) 21:39:57.27ID:p4EQuXU+
ウェブサイトに画像アップロード機能作ったんですけど、画像かどうかチェックしなくても問題ないよね
2021/07/11(日) 22:28:02.90ID:lZiRxAj0
画像チェック機能なしにするの?

Ruby on Rails のActive Storage で、
S3 へ画像をアップロードするとか、調べてください!
136128
垢版 |
2021/07/11(日) 22:36:38.00ID:ROy10d1B
みなさん、ご回答ありがとうございます。

>>133を使って自作を試みてみます。

>>130
以後、気を付けます。
2021/07/11(日) 23:19:57.13ID:9u9MeYv0
>>134
違法コンテンツとか、攻撃の踏み台ってわかる?
138デフォルトの名無しさん
垢版 |
2021/07/12(月) 22:36:26.12ID:YLoUVXD1
ビジネスが破綻する大半の原因は、 ”ビジネスを始める人の大半が、真の意味での
「起業家」ではなく、 起業したい、という熱に浮かれた「職人」として働いているに過ぎない。”
という事実にあります。
「職人」によって運営されているビジネスは、ビジネスが働くのではなく、彼ら自身が毎日働くこと
によって、成り立っています。
彼らは毎日、自分がやり方を知っている仕事を一生懸命にこなしていますが、「起業家」としての
視点が無いために、成長に限界が生まれます。
そして、生計を立てるために、彼ら自身がずっと働き続けないとならないのです。

誰もが必ず陥る罠
私が見ている限り、起業熱にうなされる人たちは、必ずと言ってもよいほど誤った
「仮定」を置いてしまうようだ。実は、のちに彼らが苦難の道を歩むことになるのは、
この、「仮定」が致命的に間違っているからなのである
致命的な仮定とは・・・「事業の中心となる専門的な能力があれば、事業を経営する能力は
十分に備わっている」ということである
私がこの仮定を致命的だと書いたのは、この仮定が間違っているからにほかならない
事業の中で専門的な仕事をこなすことと、その能力を生かして事業を経営することは
全く別の問題である。高い専門能力を持つ人にとって、独立は他人の為に働くという苦痛から
解放されるということを意味していた。それにもかかわらず、前提となる「仮定」が致命的とも
いえるほど間違えているために、彼らは自由になるどころか、自分が始めた事業に苦しめ
られるようになってしまうのである
マイケルEガーバー「はじめの一歩を踏み出そう」P28~29
2021/07/13(火) 02:02:18.68ID:nZiTM0Ei
興味本位の質問で申し訳ないのですが1つ

google翻訳の音声出力ってあるじゃないですか
あれのen出力って、検索結果画面から出力した場合とページを開いてから出力した場合で音に違いがあるんですよね
ページを開いてから出力した場合の音声はGoogle Text To Speech APIで動いているようなのですが、検索結果画面から出力した場合の音声はどこから出力されているのでしょうか
知っている方がいれば教えてください
2021/07/13(火) 21:08:43.80ID:aO3Sze2Q
データベースへの書き込み、読み出しを行うアプリケーションは接続時にテーブルの存在チェックなどは基本的にやるべき?
2021/07/13(火) 21:36:54.89ID:kDn3q6a/
そこで自前でチェックしたとして、エラーだったらどうしたいかを考えればいい
チェックしなかった場合と結果がどう変わるのかを検討する
「○○テーブルがありません」と、万に一つもありえないケースのためにエラー処理とメッセージを設計して、その奇跡のメッセージを目にしたユーザーは幸運であると祝いたいだろうか
チェックしなければSQLを受け取ったDBMSはテーブル不在時にエラーコードを吐き、使っているドライバは例外を投げるかもしれない
そのログをどこかに吐いてユーザーには想定外エラーと伝えるだけでいいなら事前の自前チェックは無用の長物になる
2021/07/13(火) 22:24:41.47ID:QsXB5/qu
>>140
ユーザーが自由にテーブル名を入力できる場合や
テーブル名が動的に生成される場合を除いて普通はチェックしない
なければエラーになるだけ
2021/07/13(火) 22:30:48.89ID:aO3Sze2Q
ありがとう
10年近く前に作られたプログラムを見る機会があったんだけど、データベースと接続したあとにテーブルのレコード数を確認することでテーブルが正常か異常かをチェックしてる箇所があって、このやり方が一般的なのだろうかと思っていたんだ
2021/07/14(水) 14:24:51.40ID:QC3eIOjv
スマホアプリ(マルチP)で書式やインライン要素(箇条書きの点、リンク、画像)などを扱えるリッチなテキストエリアが欲しいんだけど良いライブラリあります?
できればワードみたいに入力中にもリッチな表現にしたい
無理なら入力中はただのテキストエリア、非入力中はリッチテキスト表示(Markdown風)でも可
2021/07/15(木) 02:12:29.61ID:Bg4t7qF5
ACID特性も二層コミットなどITパスポートレベルの言葉すら出て来ないとか、このスレのレベル落ちたな
2021/07/15(木) 11:03:54.58ID:YvGaZ0G0
メソッドは単機能にして短く記述すべきってのは出来るだけ意識してる
でも例えば「あるテーブルのアップデート」って処理があったとして○○条件の場合は□□レコードを更新とか、分岐を含んで行数が嵩んだ場合は各条件毎にメソッドを切り出したほうが作りとしてはいいの?

個人的には「あるテーブルのアップデート」っていう単一の機能しか持ってないからここから更に切り出すとかえって可読性が落ちるのかなあとも思うんだけど綺麗な作りとしてはどっちなんだろうか?
2021/07/15(木) 11:52:41.02ID:53A1iuau
名前を見ただけで何やってるかわかるような、適切な命名さえできるならどこまで細かく分けてもいい
名前が思い付かないなら分けるな
2021/07/15(木) 12:24:06.60ID:Whn2w6xi
>>146
条件によって更新対象を決定
更新
更新を保存
この3つは分けるのが基本だよ

foo = 更新対象の検索()
foo.DoSomething()
保存(foo)
2021/07/15(木) 12:28:34.62ID:BCsPZE5b
データベースだとコミットでは?
2021/07/15(木) 15:01:31.10ID:38KkMSUU
>>146
クラス分割と同じで責務の分割とか関心事の分離と言われる視点が最優先
行数とかは二の次

与えられた条件によって更新対象を判断するという役割が
「あるテーブルをアップデート」するという役割の中に完全に隠蔽されるべきものなのかどうか
2021/07/15(木) 18:25:48.78ID:nUmkW7e9
>>148
>>150
言いたい事は何となく分かる
出来れば分けたいけど、テーブルをアップデートする処理に隠蔽される(必要なもの?)気もする


変数名は適当だけどこんな感じの処理を書いてる(C#)
やりたい事は配列内の要素の状態によってアップデートする内容を変えたい
これが10レコード分あってレコードが増える事は無い
似たような処理だから出来れば関数化したいけど、条件分岐する要素の数がレコードによって違ったりする(ifの中身が1つの時や3つの時もある)からこれを切り出す良い方法が思いつかない…

// 1レコード目の更新処理
var query = db.change_statuses.Single (x => x.id == 1)
if(bol[100]) query.enable = 1;
else query.enable = 0;

if(bol[35]) query.state = 1;
else{
if(bol[40] || bol[41]) query.state = 2;
else if(bol[42] || bol[43]) query.state = 3;
else query.state = 0;
}

db.SaveChanges()
2021/07/15(木) 19:42:34.78ID:Whn2w6xi
>>151
データアクセスに隠蔽されるべき分岐というのはあるよ

例えばポリモーフィックなオブジェクトの保存処理とかだね
派生クラスAはテーブルAに
派生クラスBはテーブルBに
それぞれ保存したい
しかしメソッドの引数は基底クラスで受け取ってどちらも同じように使えるようにしたい
とかね

こういった要求はデータアクセスの実装の都合によるものだ
その知識はデータアクセスの責務を担うクラスとメソッドが引き受けるべき
そのために分岐が必要なら分岐させるのが正しい
153デフォルトの名無しさん
垢版 |
2021/07/15(木) 19:53:56.12ID:fWs3lP2K
Udemyの無料コースって登録し放題ですか?制限ありますか?
2021/07/15(木) 19:58:19.23ID:Whn2w6xi
>>151
int CalcEnable(bool[] bol) => bol[100] ? 1 : 0;

int CalcState(bool[] bol) {
if (bol[35]) return 1;
else if (bol[40] || bol[41]) return 2;
else if (bol[42] || bol[43]) return 3;
else return 0;
}

void UpdateFoo(Foo obj, bool[] bol) {
obj.Enable = CalcEnable(bol);
obj.State = CalcState(bol);
}

var foo = db.change_statuses.Single(x => x.id == 1);
UpdateFoo(foo, bol);
db.SaveChanges();
2021/07/15(木) 20:19:53.45ID:nUmkW7e9
>>154
すごい
分かりやすいしちゃんと分離出来てる

重ねて申し訳ないんだけど
>>151のコードを例にした場合、処理するレコードによって条件分岐の式(ifやelse ifの中身)が変わるときは、それぞれにメソッドを作るべき?
オーバーロードってやつを使えば良いんだろうか

// 2レコード目の処理
if(bol[36]) query.state = 1;
else{
//3つの要素を確認
if(bol[44] || bol[45] || bol[46]) query.state = 2;
//3つの要素を確認
else if(bol[47] || bol[48] || bol[49]) query.state = 3;
else query.state = 0;
}

// 3レコード目の処理
if(bol[37]) query.state = 1;
else{
//1つの要素を確認
if(bol[50]) query.state = 2;
//2つの要素を確認
else if(bol[51] || bol[52]) query.state = 3;
else query.state = 0;
}
2021/07/15(木) 20:32:04.05ID:Whn2w6xi
>>155
CalcEnable1 省略
CalcEnable2 省略
...

CalcState1 省略
CalcState2 省略
...


UpdateFoo1
 obj.Enable = CalcEnable1(bol);
 obj.State = CalcState1(bol);

UpdateFoo2
 obj.Enable = CalcEnable2(bol);
 obj.State = CalcState2(bol);


つうかその前にちゃんと意味が理解できる名前をつけたほうがいいよ
bol[35]はなんの真偽を表す値なの?
bol[40]の意味は?
1行目のレコードって何なのさ?
2行目とは何が違うの?
2021/07/15(木) 20:52:37.75ID:38KkMSUU
bolの知識に依存してるから
bolかbolをwrapしたクラスに聞けば
stateを答えてくれるようにするといい
(bolってなんか知らんけど)

テーブルをアップデートするメソッドは
stateやenableのような変数だけ受け取れば十分
2021/07/15(木) 21:08:05.11ID:nUmkW7e9
>>156
CalcEnableとCalcStateは中身に応じて複数作る必要があるってことだね

名前はごめん
ここに書くために適当な名前にしてる
bol[]は256点のビット信号を格納してる
例えばbol[1]は○○センサ、bol[2]は□□センサのON/OFFをtrue/falseで格納してるイメージ

データベースのテーブルは
id,name,enable,state
の構成になってて
1行目は1,機械A,0,0
2行目は2,機械B,1,0
みたいになってて
Aがテーブルのアップデートに参照するのはbol[35,40,41,42,43]
Bがテーブルのアップデートに参照するのはbol[36,44,45,46,47,48,49]
って違いがある
2021/07/15(木) 22:14:53.86ID:hgbJVeFb
GoFのテンプレートパターンかストラテジーパターンで綺麗に共通化できるよ
enableとstateの取り方を教えてくれるインターフェースを定義する
それをレコードごとに10個分実装する
更新ロジックはそのインスタンスとクエリーidだけ引数か何かで渡して貰えば、ひとつに集約できる
2021/07/15(木) 22:37:11.33ID:38KkMSUU
センサの信号の羅列を
アプリケーションにとって意味あるモデルに変換するのは
誰が担うべき責務なのかを考えるといいんじゃない?

DBにおけるリポジトリみたいにセンサの詳細を隠蔽するクラスを用意してそれにやらせるか
アプリケーション層に変換ルールを管理するクラスを用意して明示的に変換処理を挟むか
いずれにしろ永続化層でやる処理ではなさそう
161デフォルトの名無しさん
垢版 |
2021/07/16(金) 21:41:12.04ID:DRuxLTuc
なにも作成しない、更新もないパターンがあるとき
コードはif使って仕組みを明示すべき?
サンプルコード見てると、わりと空打ちできるように作ってあって全部通すのを見るけど

(1)
if make_data():
__update()

(2)
new = make_data()
if new:
__update(new)

(3)
update(make_data())

(4)
make_data()
update()
2021/07/16(金) 22:18:52.61ID:J3IrN4Ey
>>161
make_data()って名前で何も作成しないのはちょっと勘弁

まあfind_hoge()としてhogeに変更を加えてrepository.update(hoge)する場合なら
updateにnullやempty的なものは渡さないので(2)が一番まとも
関数の役割分担や責任範囲をどう考えるか次第なのでケースバイケース

(1)や(4)のようにレシーバーも指定せずに暗黙的に共通リソースを変更するのはあまり良くない
2021/07/16(金) 22:28:44.32ID:VW9BmXd5
>>161
そんなのは業務要件次第だよ
164デフォルトの名無しさん
垢版 |
2021/07/16(金) 22:35:19.90ID:DRuxLTuc
>>162
なるほど
了解しました
2021/07/16(金) 23:11:44.68ID:HlFxDsxb
windowsで複数ソフトをまとめてインストールして
システム環境変数を設定するプログラムを作成したいと思いますが、
どういった方法が良いでしょうか?
2021/07/17(土) 00:14:51.29ID:xmQE+uIu
タスクランナー・環境構築ツール

Linux, AWS なら、主にRuby 製のツール。
Vagrant, Chef, Itamae, Kumogata

Go 製のTerraform とか

Mac なら、Homebrew とか。
これも元々は、Ruby製

Windows なら、Chocolatey と言うのを聞いたことがあるけど、漏れは知らない。
漏れは、WSL2, Ubuntu 18.04, Docker を使うから
167デフォルトの名無しさん
垢版 |
2021/07/17(土) 15:06:40.88ID:eTC1af8g
>>165
ム板的には
https://docs.microsoft.com/ja-jp/windows/msix/desktop/desktop-to-uwp-third-party-installer
2021/07/19(月) 23:55:11.42ID:jyJepTNx
>>166-167
たくさんそれ用のアプリがあるんですね。
ありがとうございます!
2021/07/20(火) 00:02:07.78ID:Pdhee8xy
>>166
一つ伺いたいんですが、DockerからWindowsアプリのインストール、使用環境構築など出来ますか?
初心者なため、アプリ開発環境の構築などアプリ開発者向けのツールだとばかり思ってました。
2021/07/20(火) 00:35:56.82ID:8+mWqGJv
dockerは基本的にリナックスのツールだよ
Windowsコンテナもあるけど使ってる人見たことないねぇ
2021/07/20(火) 23:40:50.39ID:/fp0B2mS
基幹システム(のUIというかユーザー側)ってどんなんが多いの?
Windowsアプリ?Web?
2021/07/21(水) 07:13:32.21ID:8pbFLQqb
基幹が何を指すのかにもよるだろうけど社内の業務系システムはほとんどWebだろ
2021/07/21(水) 07:53:06.92ID:eN61x/pR
個々の端末にインストールが不要でOSを問わないから他の方式に変わる未来はないな
2021/07/21(水) 08:37:52.19ID:KG1goB3t
そうでもないぞ
クラサバ(クライアント側はWindowsアプリ)も多いし、アポロ計画さながらの黒背景に緑色の文字(いわゆるバカ端末)なんてのもまだまだ生き残ってる
2021/07/21(水) 08:49:23.26ID:eN61x/pR
んな特殊すぎるクライアントは一般業務じゃ使わないかな
ちなみに特殊というのは開発者しか使わないA5:SQLみたいな類のクライアントを含む
2021/07/21(水) 08:56:59.33ID:KG1goB3t
一般業務という謎用語は知らんが、例えば一般的なERPパッケージでもWindowsクライアントアプリは普通に使われるぞ
177デフォルトの名無しさん
垢版 |
2021/07/21(水) 11:53:18.71ID:cUhe3977
デフラグメンテーションとメモリコンパクションの違いはなんですか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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