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

レス数が950を超えています。1000を超えると書き込みができなくなります。
1デフォルトの名無しさん
垢版 |
2020/06/21(日) 20:03:12.66ID:CQtEdpsm
質問する前にGoogleで検索しましょう。 http://www.google.com/
プログラム・ソフトの使い方は PC 初心者板やソフトウェア板へ。
ウイルス、ハッキング・クラッキングや犯罪行為に関わることを求めるような発言は禁止です。
Javascript は Web 制作板、CGI は Web プログラミング板へ。
業界談義、愚痴、雑談はプログラマ板へどうぞ。
ゲーム関係の話題はゲーム製作板へどうぞ。
ネタ、板とは関係の無い話題はご遠慮ください。
>>980を踏んだ人は新スレを建てて下さい。>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

前スレ
スレ立てるまでもない質問はここで 153匹目
https://mevius.5ch.net/test/read.cgi/tech/1586142285/
2020/08/31(月) 17:24:14.16ID:lWn/zYPT
パチ



パチ





パチパチ
パチ パチ パチ
ブラボー!

ワーオ!
グレート!
パチパチパチパチパチパチパチ
パチパチパチ
2020/08/31(月) 17:27:24.74ID:lWn/zYPT
はーい、ジャスラ●クでーす。

>>850
無断で歌詞を掲載した疑いでタイーホしまーす。
2020/08/31(月) 18:04:04.51ID:lWn/zYPT
>>851
つまんない
2020/08/31(月) 18:49:08.84ID:v4TvjCDz
セキュリティを軽視した結果がかつてのキンタマ事件であり昨今のランサムウェアをはじめとするトロイ騒動
2020/08/31(月) 19:16:02.53ID:STYVB6Xa
Android で JNI を使ったアプリを、AndroidStudioやgradleなどを使わずに
作成しているのですが、JNI の shared library が1つだけの場合は全て上手く
行き、*.apkが出来て、JNI から C、C から JNI の両方の呼び出しに成功しました。
ところが、shared libary を 2つ *.apk に埋め込んだ場合、大体は上手く行くの
ですが、shared library 間のシンボルの参照が上手く行きません。

linux で、libx.so で定義されたデータシンボルを、liby.so から参照したい場合、
liby.so を ld で作成する際に、libx.so の情報を ld のコマンドラインに渡す
必要がありましたか?

Windows用の(Android用)NDK付属の objdump で見たところ、libx.soの方は、
00002020 g O .bss 00000004 変数名XXX

liby.soの方は、
00000000 *UND* 00000000 変数名XXX

となっています。
2020/08/31(月) 19:23:47.98ID:STYVB6Xa
>>855
なお、
public class MainActivity extends Activity {
static {
System.loadLibrary( "x" );
System.loadLibrary( "y" );
}
・・・
}
としています。
857デフォルトの名無しさん
垢版 |
2020/08/31(月) 21:49:27.89ID:2H8rvrLM
イケハヤさんはハゲてるから帽子かぶってるんですか?
2020/09/01(火) 03:40:18.50ID:+Gf+BH3r
>>856
解決しました。
liby.soを(arm-linux用の) ld でリンクして作成する時、-lx として、libx.soを
探させると上手く行きました。
Windowsでもdllを使いたいときには、リンクする際に対応するimport libraryを
指定しないといけませんが、同様に、Linuxの場合もリンクする段階で、*.soを指定して
やらないといけないと言うことのようです。
動的リンクだからといって、あらゆる shared libraryを検索してくれるわけではなく、
予めどの shared library を検索したいかをリンカ(ldなど)に知らせるためにも
必要なようです。
できた、liby.soをreadelfやobjdumpしてみると、NEEDEDの項目に、
libx.soと出ています。
つまり、NEEDEDとなっている*.soだけを liby.soを開始する時に探して、NEEDEDに
書かれていない *.so は探さない仕組みのようです。
2020/09/01(火) 10:39:57.16ID:qSpoxw1b
この要件でおすすめのジョブ管理サーバおしえて

・商用無料のOSS
・CRON形式で定期実行可
・Web APIで任意のタイミングで実行可
・Web UI完備
・ジョブの実装は言語に依存しないこと
・軽量でハイパフォーマンス
2020/09/01(火) 10:47:05.56ID:EzjTWAdj
Goolge
2020/09/01(火) 12:38:35.80ID:LNiTvfH2
>>859
AWS CloudWatchのスケジュールとかGCPのCloud Schedulerとかでいいだろ
よほどヘビーに使わなきゃ実質無料
862デフォルトの名無しさん
垢版 |
2020/09/01(火) 12:44:00.02ID:/NSRorCL
店内飲食出来るパンやでテーブル席ついたら
落ちてたパンくずに蟻が100匹くらいたかってた
店にあったアルコール消毒スプレーを掛けたら
一部逃げ出した蟻も居たが大半はアルコールに溺れて
そのまま動かなくなったので死んで全滅したと思ってた
1時間程してアルコールが乾き切った頃
みんな生き返って動き回り始めた
蟻は気絶してただけなのか酔っぱらってただけなのか
2020/09/01(火) 13:53:37.99ID:Nbbg7pi3
JavaScriptでiframeElement.contentDocument.replace(url)した後に、iframeElement.contentDocumentがnullになってしまうんだけど、なんで?
仕方ないからiframeElement.outerHTMLに<iframe ...>を割り当ててからreplaceしてるんだけど気持ち悪いんで
2020/09/01(火) 13:58:25.89ID:Nbbg7pi3
>>863
ああ、環境はchrome 84.0.4147.135
って、アップデート待ち!?
まさかとは思うけどアップデート待ちだと起こる特殊状況?
2020/09/01(火) 14:02:48.14ID:Nbbg7pi3
>>864
85.0.4183.83 でも同様
2020/09/01(火) 14:41:07.90ID:+ZUPX0CY
>>863
確か、その手の現象は、iframeのロードが完全に終わって、ページが表示された
後で無いと null になってしまった気がする。
どうやってページの読み込みの完了を知るかは、また複雑だった気がする。
867デフォルトの名無しさん
垢版 |
2020/09/01(火) 15:25:22.04ID:fuWow3G5
timer で polling して != null まで待つ
2020/09/01(火) 15:31:50.18ID:WNML/qDz
既にCで書かれた複数のプログラムをGUIから動かしたいのですが何を使うのが良いでしょう?
例えばこのボタンを押せばこのプログラムが動くといったようなものです。
OSはwindows10です。
869デフォルトの名無しさん
垢版 |
2020/09/01(火) 15:34:26.60ID:fuWow3G5
tcl/tk
2020/09/01(火) 16:05:59.43ID:X/AXeJa2
>>868
cのプログラムをexeにコンパイルしている状態なら
c#でwinformでボタン配置して、Process.start()で呼べば良いが
ソースコードをそのまま流用するような場合はある程度知識が無いと
そもそも何も出来ないかと
2020/09/01(火) 16:10:37.70ID:4meeAMMW
>>868
ShellExecute関数
2020/09/01(火) 16:18:46.24ID:WNML/qDz
>>869
ありがとうございます、調べてみます
>>870
ソースコードは自作なのでそのあたりは問題ありません
GUI側でプログラムの引数や戻り値、後ちょっとしたグラフィックも扱えるものが良いですね
2020/09/01(火) 16:26:28.89ID:WNML/qDz
>>871
Excelは用意できないです
2020/09/01(火) 17:17:02.46ID:x63jWwwu
>>863
promise, async/await などの、非同期処理を使えないの?

JavaScript(JS)の質問は、この板よりも、
web制作管理板のJSのスレの方へ、書き込んだ方がよい
2020/09/01(火) 17:27:24.65ID:x63jWwwu
VC++ か何かで、managed(.NET)から、unmanaged(.NET以外)を呼び出す機構があったような。
.NETのunmanaged拡張(C++/CLI)

今でも使えるかどうかは、知らないけど

「c++ managed unmanaged」で検索!
2020/09/01(火) 18:41:19.55ID:3AXmEbq5
GUI側の言語は何でも良いの?
Cで!って言われるとあんま選択肢ないんだけど
2020/09/01(火) 18:46:49.24ID:Nbbg7pi3
>>866
あら、じゃあ二重にurlを変更しようとしているルートがあるのか?

でも、replaceしている箇所にブレークポイント仕掛けて、表示されている段階でreplaceするボタンを押して
そこでreplaceする前(でないとnull参照)にconsoleで確認して、なんでnull?と
気づかずになんかやってるパターンかなこりゃ
2020/09/01(火) 18:48:19.04ID:Nbbg7pi3
>>874
ありがちなTipsだったりするかなと
ありがとう
2020/09/01(火) 19:50:09.10ID:NT1puBvX
>>876
GUI側はなんでも良いです
2020/09/01(火) 20:48:44.14ID:usFRsaVF
WinFormでCの関数をDllImportして使うのがたぶん一番簡単

webviewでUI作ってUIのイベントハンドラからCの関数を呼ぶ方法もある
https://github.com/webview/webview
881デフォルトの名無しさん
垢版 |
2020/09/01(火) 23:25:47.93ID:Na3IYFyX
どこかのYoutuberが
いまはMacを買っちゃダメって言ってたんですが
これは本当ですか?
理由はなにかテクニカルなことだった気がします。

いまWeb系プログラミングのためにMacを買おうか検討しているのですが。
2020/09/01(火) 23:31:19.46ID:EzjTWAdj
ARMに変わろうとするかどうかの時期だからな

PowerPC Macはとっくに絶滅しただろ?
初代のIntel Macもシングルコアで早くに切り捨てられただろ?

今買うと、買ったすぐにいつまで使えるか気にしなければいけないし
ARM機をすぐに買っても初物だからこれも動作が怪しいし価格もこなれてないだろうし

今はタイミングが悪いよねーw

俺のMacは2013年もの。クソキーボード登場前で性能的にも現役で使えてる
あと数年耐えられるだろうから、買ったタイミングは良かったわw
2020/09/01(火) 23:37:34.84ID:WlRs9kXo
今も昔も将来もWeb系プログラミングのためにMacを買って良いときなど無い。
好みの問題でMacが欲しいだけなら今すぐ買え。待っていても買い時など来ない。
884デフォルトの名無しさん
垢版 |
2020/09/01(火) 23:41:13.60ID:AxyA6QFh
bool flag = true;
Do:
// 処理
if (flag) goto Do;

これでループを作れるからwhileが要らない気がしてきました。
メリットはcontinueで一気抜けられない入れ子状況下においてもgotoならいつでも一気に抜けられるところです。
while要りますか?
885デフォルトの名無しさん
垢版 |
2020/09/01(火) 23:50:32.83ID:Na3IYFyX
そうですARMかなにかだと言ってました。
それは新しいものなのですか?
買う予定なのはノートPCなのでMac Book のProかAirなのですが。
886デフォルトの名無しさん
垢版 |
2020/09/01(火) 23:51:59.96ID:Na3IYFyX
ちなみにMacは何の知識もありません。
正直そんなら欲しいとも思わないのですが将来はiPhoneアプリの開発もやってみたいのでそのためにはMacは必須と聞いたもので。
2020/09/01(火) 23:52:10.89ID:X/AXeJa2
>>884
whileループといわゆるdo whileループはループ内が必ず一度でも回る場合はdo whileで書く方がスマートですが
基本的にそういうループは少なく条件が成立すれば初回も回らないループの方が多いので
一般的にwhileなりforループやforeachを使う訳です
888デフォルトの名無しさん
垢版 |
2020/09/01(火) 23:54:17.08ID:Na3IYFyX
>>884
いまgoto使うのはハゲだけです。
なぜ素直に
Do{
//処理
}While();
にしない?
889デフォルトの名無しさん
垢版 |
2020/09/02(水) 00:01:05.64ID:NYistFqT
do-whileの中にcontinueで一発抜け出来ない部分があると、
これ全体がgotoで良くないか?ってなるわけです。
そしてwhileはforでできるからwhileの存在意義は消滅すると思います。
2020/09/02(水) 00:08:38.00ID:RfITVUZj
>>884
根本を誤解しているぞ
GOTOが廃れた理由はGOTOが貧弱だからじゃない
何でもありの最強カードだからだぞ
グローバル変数がどこからでもアクセスできる最強カードなのと同じ
public staticなメソッドもつよいぞ
制約のない最強を乱用すればするほど、最高レベルのソース読解力が求められる魔界に堕ちるリスクを増すことになる
2020/09/02(水) 00:09:11.77ID:Bkj/9gan
Macのペコペコキーストロークとクソタッチバーのせいで指の関節が再起不能になるからな
2020/09/02(水) 00:19:47.92ID:RfITVUZj
変数は定数の役割を代替できるので定数に存在意義はないですよねって言ってるのと同じ
俺はgotoをキレイに使うから大丈夫って自信があるなら、ひとりプロジェクトで自由に使えばいいんじゃないかな
2020/09/02(水) 00:45:14.08ID:Ze67OMaN
C++でちゃんとRAIIしてるときにオブジェクトの宣言すっ飛ばしてgotoするとなかなか厄介だから現実的にろくに使えない
2020/09/02(水) 01:09:20.43ID:/OorwRLB
>>886
そうだよ。Appleが独占してるせいでiPhoneアプリの開発は自由がない
しかたなくMacを使ってる人が多い

さてiPhoneのCPUはARM。MacもARMになる。
おそらく将来はARM搭載Mac専用でiPhone開発用の
高度なエミュレータとか登場そうだよなw

いやぁ実にタイミングが悪い
待ったほうがいいのか、待ったところで初物で問題が起きるかもしれないのか
中古でしばらく様子を見るのもありかもなw
895デフォルトの名無しさん
垢版 |
2020/09/02(水) 01:18:52.18ID:llsK6o3h
MacのARMはいつ登場するのですか?
896デフォルトの名無しさん
垢版 |
2020/09/02(水) 01:59:55.90ID:/XFBlUpE
>>895
https://jp.techcrunch.com/2020/06/10/2020-06-09-apple-could-reportedly-announce-mac-shift-to-its-own-arm-based-chips-this-month/?guccounter=1
>
> すぐに利用できるハードウェアの発表ではないが、
>2021年にリリースされるはずのARMベースのMac向け
>ソフトウェアを準備する時間をデベロッパーに与えるために役立つだろうという。
>ただしARMベースのMacハードウェアが製造されるのははるか先であるため、
>発表のタイミングは変わる可能性もあると記事は注意している。
2020/09/02(水) 02:01:21.20ID:13M4HIS6
そもそもiPhone優位ってのは日本だけのガラパゴスなんだよな
898デフォルトの名無しさん
垢版 |
2020/09/02(水) 02:04:07.26ID:SXFlbys1
gotoどころかswitchも使ったことが無さそう。
2020/09/02(水) 02:11:33.33ID:OTPjZje/
>>880
今ならWPFとか良さそうですね
2020/09/02(水) 05:41:30.45ID:7pXYU4Em
複数のループを一気に抜けたいときは
その箇所をサブルーチンにしてreturnで抜けるのが簡単でスマートかな

もちろん言語系がthrow〜catchやlast(ラベル)などサポートしてるなら使えばいい
いずれにしても、ループを抜けたいってだけの動機ならgoto使うほどのことはない。
901デフォルトの名無しさん
垢版 |
2020/09/02(水) 08:30:04.82ID:b48j9NlC
逆だな。
ループしたいからgoto使ってんだろ?
なら彼には機械語が向いている
2020/09/02(水) 11:54:34.61ID:Jr4NdJRH
ちょっとズレた質問になりますが、わかる方いましたら回答お願いします。

デスクトップに置くExcelのショートカットを、webドキュメントのショートカットとしてパソコンに認識させる方法ってありませんか?

理由は会社のパソコンはシャットダウンの度にデータが消されてしまい面倒なためです。
webドキュメントのショートカットのフリが出来れば消されないようなので…。
903デフォルトの名無しさん
垢版 |
2020/09/02(水) 12:18:35.60ID:/XFBlUpE
>>902> ショートカットのフリ
Excel.exeへのショートカット?
hoge.xlsxへのショートカット?
hoge.htmlへのショートカット?

デスクトップ自体が再起動リセットされるんなら

ショートカットは全てリセットされるんじゃないの?
ユーザースペース割り振られてるならそっちにすべきじゃない?
2020/09/02(水) 12:46:17.44ID:Jr4NdJRH
>>903
説明下手なのに読み取って頂いてありがとうございます

ショートカットはものによりリセットされないようです。(というのも削除するしないは会社が決めて管理しているようです)
今確認できている消えなかったものはwebドキュメントのショートカットだけです。httpsから始まり適当な文字で終わるものです。

やりたかったことはクラウド上にあるhttpsから始まり.xlsxで終わるショートカットを残すことでした。
いけそうで無理でした。
ショートカットのアイコンは普通のExcelのアイコンになっていました。
ユーザースペース(理解してない)はクラウド上にのみになってしまうのです。
905デフォルトの名無しさん
垢版 |
2020/09/02(水) 12:56:19.04ID:rnNUI4lA
.lnkを削除して.urlは消さないって事かな?
one driveのファイルって直リン出来んのかな?知らんわ
906デフォルトの名無しさん
垢版 |
2020/09/02(水) 13:33:32.70ID:llsK6o3h
ちょっとカツラがズレた質問になりますが、わかる方いましたら回答お願いします。

いろいろ考えてやっぱりMacノートを買うことにしたのですが
安いものでも軽く10万円を越えるのにびっくりです。
相場的にそのくらいなのですか?
予算は5-6万と考えていたのですが厳しいですかね?
あとMac BookのAirとProってどう違うのですか?Airが安めだけどProを薦めてる人が多い感じだけど。
907デフォルトの名無しさん
垢版 |
2020/09/02(水) 13:34:38.68ID:llsK6o3h
>>896
なるほどありがとうございます。
いろいろ考えたけど、買うのは「今でしょ」と決心しました。
2020/09/02(水) 13:46:40.72ID:/XFBlUpE
学生の頃に40〜50万円したのをバイトして買ったなあ
今でも捨てられずにいるWin95・・

10万円なら安い方だよ家電量販店なら20万円前後だからね
他の人もレスしてるけど
プログラミングするならキーボードの打ちやすさが大事
ファッションアイテムでしかないなら外観重視
2万円のドンキーにしとき
909デフォルトの名無しさん
垢版 |
2020/09/02(水) 13:52:55.67ID:llsK6o3h
あれれ
わたしもWindows95を親に買ってもらったけど
そんなに高かったっけ?
2020/09/02(水) 14:08:29.16ID:U40YU3HI
ドンキの2万円のパソコンは、メモリ不足で動かないだろ。
ブラウザを起動するだけで、一杯一杯

YouTube の動画でも、使い道に困っていたw
2020/09/02(水) 14:22:57.97ID:/XFBlUpE
>>909
レッツノートで42万円
https://www.itmedia.co.jp/pcuser/spv/1901/29/news029.html
銀パソブームのマグネシウム合金ボディーで三菱は60万円
2020/09/02(水) 14:29:37.02ID:/XFBlUpE
>>910
クラウドにコンソールとして繋げるWi-Fiの
キーボード&モニターだと思えば良いだけ
2020/09/02(水) 14:45:32.68ID:/XFBlUpE
>>911
訂正、三菱は銀パソじゃ無かったです。
ぺディオン
https://pc.watch.impress.co.jp/docs/article/970909/pedion.htm
標準価格:578,000円〜728,000円
CPU:MMX Pentium 200〜233MHz
RAM:32MB〜64MB(固定)
HDD:1GB
グラフィック:MagicGraph128+ 1.1MB RAM
2020/09/02(水) 15:24:56.65ID:6JccYJo3
主力スマホだって10万円くらいするのにPCが10万円で高いとか価値観おかしくね?
2020/09/02(水) 17:35:42.42ID:q+/noi+L
>>904
試してないからあてずっぽうだけど、拡張子「xlsx」を引っ掛けているならば、
該当するURLを短縮URLに登録して、登録した短縮URLをショートカットで
呼び出すのはできないかな
2020/09/02(水) 17:55:13.81ID:oPbAh6sy
>>904
file scheme試してみたら?
file:///C:/Users/User/Foo.xlsxみたいなやつ
2020/09/02(水) 21:03:34.21ID:bnI7y6/M
>>915
>>916
ありがとうございます。
どちらも試してみます!
2020/09/02(水) 21:17:29.68ID:UIr/ajI4
会社がやるなっつってること会社でやるなよ…
2020/09/02(水) 21:44:22.53ID:zuDWrISP
goto文がいけないのは、gotoで変数を持ったままループから飛び出したり、
ループに飛び込むことが可能なこと。可読性が著しく下がる。
920デフォルトの名無しさん
垢版 |
2020/09/02(水) 22:01:31.23ID:X8QkAlKf
>>918
会社なんて糞ですよ。気にもしていない。次のスキルアップのための踏み台。
2020/09/02(水) 22:44:53.75ID:d4v16vwV
プログラミング初心者が、初学者用のプログラミング学習本を読んで、
最後の方の章で「掲示板を作ってみましょう」「簡易ツイッターを作ってみましょう」みたいなのがあって、
そのソースコードを打って、はい完成しました

で?
次は何すればいいの??

という状況に陥る人はやっぱりプログラムには向かないんですかね・・・?
2020/09/02(水) 22:49:49.69ID:7eaUdZ9h
>>921
完成したものに自分があったら便利だと思う機能を追加してみたら?
923デフォルトの名無しさん
垢版 |
2020/09/02(水) 23:07:53.25ID:ul4sa9SZ
Mac BookのAirとProってどう違うのでしょうか?
2020/09/02(水) 23:31:59.00ID:dk5o+j+k
>>921
正直なところ、向いてないと思う。
その最後の方の章に行くまでに、ただ読んだだけ?
書いてあることに疑問を持ったり実際に書いて動かして試そうとしたりしなかった?
変えてみたらどうなるか、なぜそうなるのか、思った通りにならなければそれはなぜなのか、腑に落ちて疑問が解消するまで試行錯誤したりしなかった?
925デフォルトの名無しさん
垢版 |
2020/09/03(木) 00:45:13.69ID:i6UO46W8
>>921
はい。
926デフォルトの名無しさん
垢版 |
2020/09/03(木) 00:47:15.46ID:IG/XT9xA
>>921
たにぐちまことのPHPの本だな
2020/09/03(木) 01:35:16.46ID:hPKoXEB/
クラス定義の仕方にアドバイスお願いします。
車クラスを定義するとして、メンバ変数にサスペンションのバネ定数を定義したいとします。
ただし、車種によってサスが4本のものと3本のものがあり、変数名を「FR/FL/RR/RL」「FC/RR/RL」のように固有につけたい場合どうするべきか思い付きません。
「4輪車クラス」「3輪車クラス」で分けるべき?
2020/09/03(木) 02:56:05.50ID:d+ZpNCKo
>>927
どういう風にクラスを定義するのがいいかは利用目的に次第なので
車クラスを定義する目的や用途をまず定義するべき
2020/09/03(木) 05:56:53.62ID:yk4FSoXe
外から見えないメンバ変数なら勝手にやれとしか。
外から見て3輪と4輪の違いがあってそれをコンパイル時に区別できてほしいならクラスを分ける。
930デフォルトの名無しさん
垢版 |
2020/09/03(木) 06:28:54.04ID:i6UO46W8
>>927
変数をFC/FR/FL/RR/RL 5つ定義して
オーバーロードで検索
931927
垢版 |
2020/09/03(木) 08:00:24.20ID:hPKoXEB/
アドバイスありがとうございます。

>>928
後だしになってしまいすみません。
・C++
・車を制御するプログラム
・今は4輪向けだが後に3輪が控えてる
・3輪を自分が開発するとは限らない
というような状況を想定していました。

>>929
基本的には車が動くときの機能で使うため、車クラスの前進/後退/停止メソッドだけから参照するため、外部参照はないと想定しています。

>>930
オーバーライド、オーバーロードで出来ないかも検討していたのですが、5つ定義しておくというのはやっぱり変数の変更ってできないんですか?インスタンスが自分に関係のない変数を持つのはなにか気持ち悪い感じがしまして、、、

やはり3輪4輪でクラスを分けるべきか。
2020/09/03(木) 08:42:14.36ID:F9/SGTXZ
>>931
俺ならサスペンションを複数登録できる「車輪」クラスをまず作って、
車クラスには「前輪」と「後輪」の2つの車輪クラスを置くかな

これで四輪車も三輪車も二輪車も表現できる
2020/09/03(木) 10:03:31.69ID:d+ZpNCKo
>>931
前進/後退/停止メソッドが「FR/FL/RR/RL」「FC/RR/RL」で定義された各バネ定数を直接参照する必要があるのかな?

前進/後退/停止メソッドが各バネ定数と前進/後退/停止メソッドから渡される引数を使った計算結果に依存すればいいのであれば車クラスを分けるのではなくてサスを管理するクラスを分けて多態性を実現するのがオブジェクト指向的には普通
2020/09/03(木) 11:05:32.62ID:GyULYXpI
DDDのようなレイヤードアーキテクチャを採用した場合、
呼び出し階層の奥深くから、UIレイヤーにエラーを通知するにはどうすればいいだろうか?
クライアントの要望で、かなり細かくエラーを通知してUIに表示させなきゃならない

例外で通知する場合、
例外クラスが多くなりすぎる、
エラーを1つしか通知できない(警告だけして続行する場合に嵌る)

戻り値(あるいはout引数)で通知する場合、
エラーに配慮したインターフェースに変えざるをえない
統一されたエラー通知形式がないので人によりやり方がバラバラ

どちらにしてもダーティにならざるをえないと思うのだが、どうすればスマートに作れるんだろうか
2020/09/03(木) 12:44:33.26ID:s+Y20wWK
DDDしらんけど(笑)深い階層から"UIレイヤー"に限定して
エラー通知とかセンス悪いなぁ
層が分かれてるならUIとか関係なくただのエラー(情報)通知やろ?
受け取り側が何とか意識する必要はない

一つの例外に情報渡せばいいだろ?どうせ文字列だけだろうし
例外はそこで停止するもの
そうじゃないならイベント(コールバック)やろ?

イベントならコールバック関数呼び出してその戻り値で
処理続行するかどうか決められるような設計にするだろうな
2020/09/03(木) 12:45:53.03ID:UXCAe6Pv
そもそもの関心がレイヤを跨ってるんなら設計もそれを素直に反映するしかないだろう
変にレイヤ構造に組み込むことに拘って無駄な通り道を沢山掘るくらいなら、レイヤ構造の外にサービス作ってレイヤを飛び越えて受け渡ししたらいい
DDDだのレイヤードアーキテクチャだのと意識高いことをほざいているメリケン等が実際に作ったシステムを見てみりゃわかるが、だいたいクッソ雑だぞ
美しいレイヤ構造なんてのは客のクソ細けえ要望をいちいち真面目に相手にするジャップITじゃ無理無理
937デフォルトの名無しさん
垢版 |
2020/09/03(木) 12:51:25.27ID:t+42bWz4
https://www.tokyo-sports.co.jp/wp-login.php
どうやってログインしますか?
938デフォルトの名無しさん
垢版 |
2020/09/03(木) 12:56:14.72ID:DK3Ul6vK
どっかで観たアイコンだな
よわよわpwの予感
2020/09/03(木) 13:34:26.79ID:WSy+5JUJ
>>935
エラーを受け取ってどんなメッセージを出すかは受け取る側の責務だからエラー送出側でメッセージを決めたくない
かといって受け取り側がなんのエラーかを判断して適切なメッセージを生成するには多くのカスタム例外型が必要になって管理が追いつかない
ここで悩んでる

イベントハンドラはRPCの時に困るのではという気がする
2020/09/03(木) 13:40:03.09ID:WSy+5JUJ
>>936
サービスを作るとしてじゃあどういう構造にするかってとこで止まる
多種多様な処理から発生する多種多様なエラーを捌くにはどうすればいいか

要望が細かいから無理だと諦めるのは最後の最後時まではしたくない
2020/09/03(木) 13:50:41.59ID:s+Y20wWK
>>939
エラーコード投げればいいだけやろ
頭悪いなあw
2020/09/03(木) 15:04:39.41ID:ar2GYSXj
>>941
コードだけじゃ情報がぜんぜん足りない
2020/09/03(木) 17:00:29.54ID:s+Y20wWK
>>942
情報も渡せよ。要領が悪いな。

お前「カスタム例外の数が〜」
連想配列でも使えよ
2020/09/03(木) 17:45:03.45ID:atr5JQ9S
>>943
もっといじめてください
2020/09/03(木) 18:47:12.56ID:d+ZpNCKo
>>934
例外にするか戻り値にするかはエラーの種類や使ってる言語、レイヤー間のプロセス境界なんかに依存するので一概にどちらかにすべきというものでもなくて、状況にあわせて設計する必要がある

一般的には戻り値のほうが汎用的
Result<T, E>的なのを使ってシグニチャで判断できるようにするか
hasError/errorsのような共通ルールを持つbase classから処理ごとにXXXResultクラスを作って使う

ただドメインレイヤーで例外を投げたとしても
それを例外としてUIレイヤーまで伝播させなければいけないわけでもないし
逆に戻り値を使ったからといって戻り値のまま伝播させないといけないわけでもない
2020/09/03(木) 19:55:22.97ID:3OmTfQuF
>>943
連想配列では型安全性がないから論外

>>945
genericは悪くなさそう
エラー種別ごとに型を沢山作らなければならない点は解決しない
だが例外クラスに良くあるボイラープレートを省略できる利点があるか
ちょっと検討してみるわ
2020/09/03(木) 19:56:08.02ID:BJh39Y3Y
> 連想配列では型安全性がないから論外

型安全性は手段であり目的ではない
目的と手段を履き違えるな
2020/09/03(木) 20:03:50.63ID:3OmTfQuF
>>947
目的を達成するには適切な手段を選ぶ必要がある
連想配列では満たせない
以上
2020/09/03(木) 20:11:45.03ID:yk4FSoXe
エラーの通知というのが要件に含まれているものなら、言語仕様に依存した例外機構に任せるのは
後でいろいろギャップに悩まされる気がする。
2020/09/03(木) 20:17:33.85ID:gpxPJKJE
エラーの設計をこんなところでそもそも質問するなや
どんなに種類が多かろうが全てを伝えるなら膨大なエラーを定義するだけやろ
2020/09/03(木) 20:25:15.35ID:4yFpfo9o
もう、Javaみたいに例外をラップして、通信とか境界越えるときはJSONでラップした結果でも返したら?
レス数が950を超えています。1000を超えると書き込みができなくなります。