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

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

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

次スレは>>980が立てること
2021/05/07(金) 14:12:41.37ID:O1URPzeE
>>672
それ関係あるのか?

EやXみたいな記号で一般化するとコンテキストが共有できないから説明用の具体例に落としてくれ
2021/05/07(金) 14:27:52.27ID:O1URPzeE
顧客(E)の与信限度額を変更するには与信審査プロセス(X)を通過させなくてはならない
こういうやつなら顧客をupdateするより与信限度額の変更要求をcreateしたほうがいいかもしれない
2021/05/07(金) 14:40:44.13ID:z1031SHW
>>674
そう例えばそんな感じだ
直接エンティティをCUDしていい業務なんて、珍しいと思うんだよね(エンタープライズは特に)
だからRは公開してもいいけど、CUDはインターナルにしておくべきというのが俺の考え
2021/05/07(金) 14:46:06.24ID:z1031SHW
送金とかもそうだろ
口座残高を直接updateしたりしない
送金というタスクをリクエストすると思うんだ

直接CUDしちゃうと何故CUDしたのかという大事な情報が失われる
何故そうしたのかがわからないと適切なプロセスを通せない
2021/05/07(金) 15:06:06.09ID:O1URPzeE
>>675
与信限度額の変更要求をcreateしたほうがいいのは
認証/認可とは関係なくて変更要求自体を独立したエンティティとして管理した上で
要求を出した側もAPI経由で状態を確認できるようにするため

いずれにしろ変更要求が承認された後に顧客をupdateする処理は必要なので
それ用のREST APIを用意して一部の内部アプリで使うかもしれない
その辺は作り方次第
2021/05/07(金) 16:38:51.99ID:z1031SHW
>>677
うん
インターナルなAPI自体はあっていいと思う
問題はパブリックなAPIだな
2021/05/07(金) 19:29:10.93ID:psJuDR7M
>>656
WIRESHARKでパケット解析か?
TCPIPから勉強かね
2021/05/07(金) 19:44:01.73ID:re5QpdZI
ROで会話ログを取るツールを作って使ってたけど、セキュリティ対応で読んだパケットを解析できなくなった
方式も鍵の在りかもわからんので諦めた
単にTLSならローカルにプロキシ作って抜けばいいと思うけど、そんな単純でもないだろうと
2021/05/08(土) 17:06:41.76ID:3vrEhaHR
>>660
不正競争防止法という目障りな奴を吊し上げられる最強の法律があってだな
682デフォルトの名無しさん
垢版 |
2021/05/09(日) 13:44:17.81ID:WMytKT+1
>>656
MITM
2021/05/09(日) 18:54:58.54ID:UzJfW4LG
Cookieに関する正しい解答を選ぶ問題で、正解はbとdになってるんですけど、合ってます?
dの状況設定がかなり微妙な気がするんですが

a Web ページなどに埋め込まれた小さな画像であり、利用者のアクセス動向な
どの情報を収集する仕組みである。
b いつ、どの Web サイトを見たかといった履歴や、パスワードなどのログイン
情報などを利用者の PC やスマートフォンで使うブラウザごとに保存する仕組み
である。
c いつ、どの Web サイトを見たかといった履歴や、パスワードなどのログイン
情報などをサーバ側に保存する仕組みである。
d 個人を特定する情報が Cookie に含まれなくても、使う側の企業が他の名簿
データなどと組み合わせれば、個人を特定できる可能性がある。
2021/05/09(日) 19:03:48.72ID:4LqFqyf/
可能性があるって凄えー曖昧な表現だからまあ○でいいんじゃね
可能性ゼロじゃなきゃ○だよこんなもん
2021/05/09(日) 19:22:03.91ID:QPL6EqlE
dは、クッキー 名寄せ で検索すると詳しい話題
2021/05/09(日) 20:44:01.13ID:QngfRO5p
どんな情報でも個人を特定する情報になるから
クッキーの中身が何もない状態で
名寄せできるのだろうか?
2021/05/09(日) 23:03:18.29ID:MVBjVGaC
dは全然微妙じゃないと思う
むしろbを正解に含めるほうが微妙

一般的には
パスワードなどのログイン情報をCookieに保存したりしないし
いつ、どのWebサイトを見たかといった履歴もCookieに保存したりしない
(3rd party cookieは識別IDを保存するだけ)
2021/05/10(月) 01:27:03.51ID:ZN2PoVCE
そういやインターネットに必要なものはなにか?という問題で
DNSという候補があったな

事実上必須だけど、なくてもできないことはない
お前らならどう答える?
2021/05/10(月) 01:34:03.09ID:PNRDo5CI
電気
2021/05/10(月) 01:34:46.48ID:Cq8Tuej3
ノード
2021/05/10(月) 03:35:39.00ID:VOP1Kg+H
必要と答える
.comや.co.jpなくして今のインターネット(WWW)はなかった
ただ設問が択一問題だったりすると答えが変わるかもしれない
2021/05/10(月) 06:25:33.50ID:hSqSKkF5
paiza.ioでサンプルコードを写経してるんですが、
PHPのバージョンを4とか5に変更することはできませんか?
693デフォルトの名無しさん
垢版 |
2021/05/10(月) 11:00:00.36ID:ijuR9GM5
MVCでソフトウェアを書いてみたくて勉強中です

ボタン押したらデータベースからデータ持ってきて加工、表示に反映 をさせたい

V(ボタン押したらMにオーダー)→M(データ取得と成形して返す)→V(受け取って表示)

ですか? Cはなにをするの?
V→C→M→C→V が正解な気もするけど、その場合、Cがあいだに挟まる意味はなんですか?
2021/05/10(月) 11:15:33.05ID:XsYpa6BG
>>693
決まってない
https://qiita.com/os1ma/items/66fb47f229896b32b2e8
でも読むといい
2021/05/10(月) 11:52:00.48ID:Ofl3us4D
ちょww
斜め上過ぎて噴き出したわ
2021/05/10(月) 12:31:36.10ID:XsYpa6BG
結局はビジネスロジックをどこに書くのか
コントローラに全部書くのは問題がある
でもコントローラを廃止して他に持っていくのは問題外
結局は銀の弾丸はないという古来言われている類いの話

しいて言うならコントローラは「主に」ビジネスロジックを実装する部分と考えるしかない
2021/05/10(月) 13:35:23.24ID:Qz+CRcrD
> でもコントローラを廃止して他に持っていくのは問題外
コントローラーを廃止しないで、他に持っていけばいいやん

なんで朝食は、ご飯じゃなければパンしかない
パンはありえないからご飯しかない
みたいな話してるの?
2021/05/10(月) 16:17:28.42ID:1dDQoHV+
今でもハンガリアン記法はチームの開発では一般的ですか?
変数名でグローバルのセットうにg_つけるとか
2021/05/10(月) 16:22:57.64ID:XsYpa6BG
そんなシステムハンガリアンっぽい命名を使う奴は情弱
二十年くらい前からすでにアプリケーションハンガリアン使えと言われてるから
2021/05/10(月) 17:12:25.15ID:PEznfPue
質問があれば自分もよく知らない事柄にも関わらず
とにかく上から目線で回答をしたがる人ってどういう精神構造なの?
2021/05/10(月) 17:17:37.02ID:XsYpa6BG
間違ってるなら指摘すりゃいいだけなのに、人格攻撃に走りたがる人ってどういう精神構造なの?
2021/05/10(月) 17:18:28.27ID:ro06Xyvc
>>698
一般的かどうかは分からないが、ハンガリアン記法を上手く使ったアプリのソースコードを始めてみた時、なんと分かり易いコードだろうと思った。
2021/05/10(月) 17:50:01.25ID:Z6bOR+7k
ハンガリアンはスコープを表すためにはまだ生き残ってるし言語によっては強制されるものさえあるよ。
さすがにかつてのMSがやってたような型まで厳密に表記するようなハンガリアンは見なくなったけど。
2021/05/10(月) 21:31:14.25ID:Xq63WIFj
長い変数名にするのがどうも好きになれないんですよね、個人的に
ノートも詰めて書くタイプ、狭い面積に集約された情報がひと目で見れるのが好きというか
スクロールバーをあまり動かしたくないというのもあって
2021/05/10(月) 23:01:25.41ID:NpiN7QoU
ローカル変数は名前を極力短くして
その代わりスコープを狭くして
見える範囲に定義を置く

それができない大域変数は
長めの名前をつけて
名前だけで意味がわかるようにする
2021/05/10(月) 23:21:59.49ID:ViCp850r
>>693
MVC なら皆、YouTube で有名な、雑食系エンジニア・KENTA のサロンで、
Ruby on Rails をやってる

M・Vは用途がはっきりしてるけど、C はそれら以外の何でも屋

V→C→M→C→V
この後ろのC は、条件でルーティングを変える

例えば、データベースへ問い合わせて、
管理者なら、管理者用のビューへ、
一般ユーザーなら、一般ユーザー用のビューへ、ルーティングを変える
2021/05/11(火) 02:14:22.86ID:1enRFFJU
> M・Vは用途がはっきりしてるけど、C はそれら以外の何でも屋
いや、Cはコントローラーという用途にはっきりとしてるが?
それがわからんとはその健太とかいうのも大したこと無いな
2021/05/11(火) 02:44:14.51ID:PqdJAW37
自分だけが読むノートをマイルールで短縮して書くのは賢いと思う
チームで協力して作り上げる緻密で壮大なドキュメントに本人しか分からないマイルールを持ち込まれると困る
常識的な範囲内ならその人の癖なんだなと思う程度

スコープの狭い変数には短い名前をつけてほしいけどついレビューで毎度スルーしてしまう
2021/05/11(火) 05:02:50.34ID:ntA9kUuo
目標に対してフワッとしたソースコードのイメージだけ脳内で作ってコーディング途中にどんどん変更するクセが付いてるんですが、これはどうすれば治りますか?
今の所、メソッドやクラス単位の実装が殆どなので仕事では困ってないですが、先々怖いです。
2021/05/11(火) 07:29:29.72ID:tw3oDY8j
メソッドやクラス単位での実装が無いってのはバグ修正とかやってんのかな?

仕事なら普通メソッドやクラス単位の実装の前段階として設計があってそこで頭の中のフワッとしたソースコードのイメージを具体的なロジックに落とし込むからまずは設計を意識してみたらいいんじゃない?

あとは単純にその言語の知識が浅くて考えてた実装じゃ動作しないところが出てきて当初の構想とのギャップが大きくなってることが考えられるけどそこは経験積むしかないと思う
2021/05/11(火) 08:34:06.31ID:hFxGyLe7
>>693
かつてはコントローラーも独立したモジュールだったけど、今でははとんどフレームワークがやってくれるのでデスクトップやスマホアプリではViewとControllerはごっちゃになることが多いよ。いわゆるDocumentViewやViewControllerみたいな。
どうしてもViewを分離したいならMVVMの勉強したほうが良いと思う。
2021/05/11(火) 09:20:53.20ID:j9Zfa2es
>>709
それでいいよ
2021/05/11(火) 10:58:43.07ID:BEtvw8dr
メソッドとクラス単位だとカバレッジ回すことくらいじゃない?
714デフォルトの名無しさん
垢版 |
2021/05/11(火) 11:23:13.32ID:FWZS8iTB
>>704
めっちゃ判る
++
2021/05/12(水) 15:30:41.45ID:BYsP6rEK
MSクラウドというかAzureって Visual Studioと共に扱う(プログラミングする)のが普通?
それともVSなしで使うことも多い?
2021/05/12(水) 17:42:05.41ID:heOXda5C
MSスタックで固めるのが普通だね
それ以外を使おうとするととんでもなく糞品質なので、AWSかGCPを選択すべき
2021/05/13(木) 03:08:18.57ID:WkGNAmpl
>>716
そういうことより、Azureを自らの手によるプログラミング無しで使うケースはあるのかどうかが知りたい。
2021/05/13(木) 09:21:46.61ID:jG3Ok9VP
そりゃストレージとして使うとかパッケージソフトを入れて使うだけというのはクラウドの使い方として普通にあるよ
特にAzureは業務系の客がほとんどだからAWSやGCPに比べてもそういう使い方は多いだろうね
2021/05/13(木) 09:28:55.99ID:jG3Ok9VP
あとAzureの場合はActive Directoryのためだけに使うというのもよくあるよ(これも業務系)
極一部の忠誠度の高いMSフォロワーを除いて、開発者にとってはあまり好まれないプラットフォームだね
2021/05/13(木) 09:47:04.91ID:i4261GGU
見え見えベンダーロックイン
まぁGCPでもGoは親和性やら優遇されてるから同じようなもんか?(Firebaseが強力だわ
2021/05/13(木) 10:28:06.61ID:pdmRhsyU
まあロックインされてしまえば余計な判断が減って楽という面もある
IBMやOracleやジャップSIerなんかに比べればMSはぼったくらないし品質も低くはないから、ロックインを受け容れるならMSは悪くない選択だ
俺はそういう思考停止が嫌で前職のC#erばかりの会社を辞めたけど、利点があるのはよく理解している
2021/05/13(木) 11:28:09.12ID:0pD51twu
この流れに乗って質問だが、
この比較↓によると、AWSがダントツトップってことでOK?

AWS/Azure/GCPサービス比較 2021.05
https://qiita.com/hayao_k/items/906ac1fba9e239e08ae8

この比較だとサービスの有無しか分からんよね・・・
○△×で示してほしいんだが・・・
肝心な価格の比較が無いし・・・

あー、AWSが一番サービス多いなー(棒・・・ぐらいの印象しか無い
こういう人はAWS、こういう人はGCP、こういう人はAzureみたいなのは無いの?
2021/05/13(木) 11:43:40.79ID:i4261GGU
GCPは有料で仮想マシンを借りないとAppEngineベースでスピンという機構を理解する必要があるから、止めとけとしか
でもGCPはサービス提供できるレベルでの無料枠が貧乏人としてはありがたい
(ほぼ無料(ドメイン関連以外)で2サービス運用してる
2021/05/13(木) 11:50:40.76ID:pdmRhsyU
>>722
自分でコード書いて動かすのに使う前提でいうと
開発や運用にWindowsと.NETを使用し、それ以外を未来永劫使うつもりがないならAzure
上に該当せず、エンタープライズ系のお硬い案件だったり、システム基盤として継続的に運用していく必要があるようなものの場合はAWS
TCP/IPなどインフラ周りの基本的なところに明るくないならGCP
スマホゲームなど、単独のアプリを手っ取り早く世に出したいならGCP
いずれにも当てはまらない場合はAWS
2021/05/13(木) 14:41:22.15ID:ItPDnKAp
>>718
「Microsoftが提供するクラウドサービス・Microsoft Azureの利用率が通常時と比べて775%も増加していることが明らかになりました。これは新型コロナウイルスの影響で急増中のリモートワーカーや、インターネット利用率の増加によるものです。」
とあったけど、これは、Azureを利用するプログラマが使った量というわけでなく、Azureを使ったサイトをプログラマではない人々(+プログラマ)が使った量のこと??
2021/05/13(木) 14:42:14.97ID:pdmRhsyU
>>725
それはOffice365の影響
主にTeamsのテレカン
2021/05/13(木) 14:48:46.29ID:ItPDnKAp
>>726
クラウドの「使用量」というものはややこしい量だね。
2021/05/13(木) 15:03:20.57ID:pdmRhsyU
>>727
というか意図的にミスリードしてるんだよ
MSはOffice365を含めることでAzureのシェアを水増ししてるの
729722
垢版 |
2021/05/13(木) 19:13:51.51ID:0pD51twu
>>723
ありがd
基本、自分は無料枠しか使わないんだが、クラウドに関しては有料でもいいかなと思ってる
AWSだけは無料枠でプログラム組んでたんだけど足りなくなって毎月数十円だけ課金されるようになった
GCPはGoogle Laboratoryがあるから、そのうちGPU/TPU使うために毎月支払うことになるかも
730722
垢版 |
2021/05/13(木) 19:37:01.24ID:0pD51twu
>>724
ありがd
個人的にはLinuxも使うし、Azureは無いかな
継続的に運用していくシステム基盤が必要かは場合による
TCP/IPとUDPは大学ん時にC言語でクラサバ予約システム作らされたんで暗くはない

その感じだと自分にはAWSかな

AWSのGPUの価格は↓これで分かった
https://qiita.com/m0ch1m0ch1/items/81b136b8eac1395c82ba
でも、これって自分ひとり占有って考えていいんだよね?
誰にも邪魔されないよね?

GCPのGPUは1,072円/月で比較的お得だけど、
他の人がたくさん使ってたら待つことになるから速さは保証できないって書かれてた
731デフォルトの名無しさん
垢版 |
2021/05/13(木) 20:40:15.90ID:SdYNz8ux
8進数の代表的な用途って何がありますか?
16bitコンピューター以外で
2021/05/13(木) 20:45:11.34ID:i4261GGU
>>731
パーミッション
2021/05/13(木) 21:53:55.12ID:NATYYilK
Amazon Linux で、MySQL, Postgresql が数倍速くなる

YouTube で、くろかわこうへいのサロンで勉強できる。
Amazonの講習では、3日で21万円

GCP は、Tensor Flow

Azure の利点はない
2021/05/13(木) 22:30:04.77ID:ybfO81Zh
Lets encrypt←ドメインジャックされたらなり済まされる
CV、EV証明書←ドメインジャックされてもなり済まされない(証明書の企業情報で偽物とわかる)

これであってる?
2021/05/14(金) 01:18:45.41ID:678S/iU6
>>728
一見、AzureがAWSに迫って来てるように見えても大部分が Office365 の貢献だったりしてな。
詐欺だな。
2021/05/14(金) 04:59:16.00ID:v82vkmQG
文とステートメントとキーワードって
呼び方が違うだけで、同じ意味ですか? それとも全然違う意味ですか?

例えば、ある本・サイトでは
var文

別の本・サイトでは
varステートメント

また別の本・サイトでは、
varキーワード

などと書かれており、よくわかりません

意味が違うのなら、どういう意図でつかいわけがされているのですか?
2021/05/14(金) 05:46:53.98ID:L5IZjefz
毎朝5:30になったらデータ更新する

というアルゴリズムが思ったよりシンプルに書けない
時刻と更新済みフラグで判定して実行するのはいいとして、
次の日にフラグをリセットする処理をどうしたもんか
2021/05/14(金) 06:20:17.21ID:GWgcGB6j
×シンプルに書けない
○書けない
2021/05/14(金) 07:01:09.60ID:QMgVBpCt
>>736
式はexpression で、文はstatement

式は値を返すけど、文は返さない
2021/05/14(金) 07:20:06.50ID:L5IZjefz
質問者は式については書いてないけどな

varと書いてるから変数名のことなのだろう
そういう場所には識別子(identifier)と書くのが一般的

日本語の式は多義的すぎて、こういう場所に使うのは無理だと思う
expressionとequationの区別ができない時点で致命的
expressionはイコールを含まない式、equationはイコールを含む式
formulaは複数の変数を含むequation
2021/05/14(金) 07:38:33.63ID:qQzvrKNd
リセットしようとするから
実行済み日付を登録していけば?
2021/05/14(金) 07:53:37.05ID:b7pYGFY+
>>740
どのプログラミングか明確にしないで用語の議論しても仕方ないんじゃね。
少なくとも数学的な意味での用語の話ではない。
そこで言うイコールは代入の演算子か、等価の比較の演算子か。いずれにせよそれらも含めてすべてexpression(日本語訳は式)と呼ぶのは多くの言語で良くあることだろう。
2021/05/14(金) 07:54:18.15ID:b7pYGFY+
>>742
プログラミング → プログラミング言語
2021/05/14(金) 09:16:15.31ID:wlHwvB3M
>>736
文とステートメントは同じもので、ここでは変数宣言のためのvarを含む行全体のこと。
キーワードは特別な意味をもつ単語、つまりvarという単語を指す。
2021/05/14(金) 09:23:57.10ID:L5IZjefz
キーワードもidentifierの意味
varそのものは予約語(reserved word)
2021/05/14(金) 10:54:06.08ID:0kdm8qdh
>>737
単に毎朝5:30に実行すればいいだけなら更新済みフラグを判定する必要はない
コードを書く以前に要求仕様を明確にできてないように見える
2021/05/14(金) 11:02:39.53ID:L5IZjefz
もう少し正確に言うと、毎朝5:30に*一度だけ*実行する
無限に実行していいなら簡単

何かの処理をすると記述する箇所全てに一度だけと書くのは面倒じゃないか?
748デフォルトの名無しさん
垢版 |
2021/05/14(金) 11:06:35.79ID:pLRygybZ
>>747
>>741
2021/05/14(金) 11:24:37.13ID:qQzvrKNd
日次バッチで頻出するワークだからな
ちょっと高級になると日付と開始時刻、終了時刻を記録する
バッチが終了してないのにタスクが終了してたらロールバックして再開させなきゃならんことが多い(トランザクションとは別の話
2021/05/14(金) 11:31:34.69ID:3vx6Xu7K
こんなバカが用語の議論には熱心に参加してるの恐ろしいね
2021/05/14(金) 11:49:30.93ID:L5IZjefz
フラグとして持たせるのではなくて、最終更新日時を持たせる場合
時刻 >= 更新時刻 and (時刻 - 最終更新日時) > 適当な時間
なら更新する

適当な時間というのがどうしても登場して、
これが結局、更新時刻から適当な時間が過ぎたらフラグをリセットするのと意味的には変わらない
2021/05/14(金) 11:56:52.48ID:0kdm8qdh
>>747
>毎朝5:30に*一度だけ*実行する

例えば常駐プログラムで1分おきに時刻をチェックして5:30ならデータ更新処理を実行すればいい
これで不都合があるならその状況と対応方法をまず仕様化すること
実装方法を考えたりコードを書くのはそれから
753デフォルトの名無しさん
垢版 |
2021/05/14(金) 12:08:39.59ID:pLRygybZ
>>751
日付だけで時刻はいらないぞ
2021/05/14(金) 12:29:28.06ID:TrZlHS7o
うん、フラグの代わりに最終更新日を持てばいいだけだね
755736
垢版 |
2021/05/14(金) 12:30:00.03ID:v82vkmQG
>>744
ありがとうございます。
744さんの回答が最もシンプルで、最も私が求めていた回答です。
ありがとうございました。
2021/05/14(金) 12:39:39.16ID:xhQE0k+a
>>737
スケジュール管理は自分でプログラミングせずにCRON、バックグラウンドジョブ管理サービスなどを利用するといい

フラグではなくイベントを記録することで実行を制御する
イベントは追加Onlyにし、更新も削除もしない
イベントは最低限、以下の3種類
・プログラムが開始された
・プログラムが成功で終了した
・プログラムが失敗で終了した
2021/05/14(金) 12:58:13.60ID:L5IZjefz
シンプルに書きたいのに大掛かりになっていく

問題のややこしい点はもう一つあって、更新タイミングが日付の変わる直前ということ
(5:30は30時間制ではまだ前日の29:30)
まだその日のうちに翌日のデータを取得する必要があり、記録される日付は前日のものになる

それだけなら、当日に更新が無いことを条件にできるけど、実際には日付変更時以外にも、
任意のタイミングで更新はしてよいので、日付は当日になってしまう
2021/05/14(金) 14:11:15.28ID:0kdm8qdh
>>757
>任意のタイミングで更新はしてよいので、日付は当日になってしまう

それで何が困るの?
2021/05/14(金) 17:37:59.47ID:hkg2iu74
やりたいことは実はドシンプルではなくもう少し複雑だったというなら相応に手を加えるだけよ
日を跨ぐ時刻の判定にオフセット掛けるのは足し算でできるでしょ
もっと条件があるなら経過時間なり時間帯なりに判定を増やせばいい
2021/05/14(金) 18:39:57.23ID:L5IZjefz
些末な部分はどうでもよくて
何かそれは思いつかなかった的なアイディアがありそうな気がするんだけどな

現状の実装では、更新時刻の1分前になったら更新済みフラグをクリアする
その状態で更新時刻になると更新される
1分間クリアし続けるというのがいかにも汚い
不等号一発ではなくて、時間の幅を持たせて、という処理がどうしても付きまとう
761デフォルトの名無しさん
垢版 |
2021/05/14(金) 19:50:54.89ID:sCsXtIcF
>>758 に答えろよ
2021/05/14(金) 21:03:00.71ID:HZsGTEZ+
仕様を明確にしろと指摘されてるのに
ふわっとした要望だけ次々と追加

そりゃ書けないわな
2021/05/14(金) 21:58:40.24ID:qv+fvLmo
勿体ぶらずにサンプルコード出せよ
2021/05/14(金) 22:11:00.85ID:SGxg0iSp
一日一回データ更新するプログラムで
何が問題になるのか
フラグをクリアしたのにフラグが立ってて
クリアし続けないといけない恐怖話
2021/05/15(土) 00:21:09.70ID:Eqqjc3fM
脱初心者を目指すならフラグ変数を使わずに書けないか意識した方がいい
人のソースを見ているときに boolean execFlag なんて現れるとがっかりする
2021/05/15(土) 02:19:46.64ID:TcBunKlm
だから言ったろ?
シンプルに書けないか以前に「書けない」んだって
2021/05/16(日) 12:24:08.32ID:i0aHhWnL
https://ezoeryou.github.io/cpp-intro/#%E3%82%A4%E3%83%86%E3%83%AC%E3%83%BC%E3%82%BF%E3%83%BC%E3%81%AE%E5%9F%BA%E7%A4%8E

「std::end(v)はvectorの変数vの最後の次の要素を指し示すイテレーターを取得する。
最後の次の要素を指し示すイテレーターに対して、*で要素にアクセスを試みるとエラーになる。
int main()
{
 std::vector<int> v = {1,2,3,4,5} ;
 auto i = std::end(v) ;
 *i ; // エラー
}

と書かれているのですが、そもそもコンパイル時エラー? ランタイムエラー?
C++はrange checkしないはずですが、本当にエラーになるとしたらどういう仕組みですか?
768デフォルトの名無しさん
垢版 |
2021/05/16(日) 19:02:12.07ID:LkZOTUXR
アマグラマーです
プログラマーに聞きたいのですが、こんなコードはクソっていう書くときの指針(反面教師)があれば教えてください
アマなのでプロの経験談から学びたい
2021/05/16(日) 19:26:05.99ID:Hgwjinll
>>768
私のコードがよい反面教師になるでしょう、とくとご覧あれ
https://mevius.5ch.net/test/read.cgi/tech/1434079972/
2021/05/16(日) 19:46:24.28ID:Hgwjinll
>>767
こちらで試した例
https://ideone.com/2WVu4k ……@

@の実行結果は ideone でも、私のローカル環境でも、いろいろ変わりますね

>C++はrange checkしない
これは正しいです。そしてコンパイル時エラーはおこりません。

>最後の次の要素を指し示すイテレーターに対して、*で要素にアクセスを試みるとエラーになる。
は、その文章でいう「エラー」という言葉が具体的に何を表現しているかが曖昧模糊と言う意味で正確ではありません

1)実行時エラー: *p でアクセスしようとすると「Segmentation Falut」等で、実行プロセスが OS により強制終了させられる
2)実行時エラーすら発生せず、シレっと値を読み込むが、その値は書き手のコントロールの外であるから適当かつ予測できない値だったりする
3) その他(どんなパターンがあるかは私にもわからない)

@ではイテレータ p が v.begin() を超えてもしばらくは上記 2) 、おもむろに 1) が発生して終了しました
いろいろ言いましたが、イテレータが意味のある領域を指していることを保証するのはプログラマの責任ということです、それができなかったときのエラーの様態は千差万別で一つに定めることは不可能でしょう
2021/05/16(日) 21:28:38.45ID:59l26Czq
イテレータのendは終端であって内部領域を指してないからアクセスすんなよ!とmanに書いてないか?
772デフォルトの名無しさん
垢版 |
2021/05/17(月) 01:32:17.53ID:GHG/4QhJ
イテレータの話が出たのでちょっと聞きたいんだけど
いつも関数化するときどこまで書いたらいいのか迷います

例えばループ処理で配列xを得るとき
for i in source:
x += myfunc(i)

x = myfunc(source)

なんかコードはできるだけその場に書いてあるべきとも聞くので、あまり隠すのもよくないんでしょうか
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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