ソフトウェア工学

システム開発ライフサイクル内で働く専門家、学者、学生向けのQ&A

7
グローバルに一意のパスワードを使用できない理由
システムのユーザー識別/認証プロセスについて誰か(クライアント)と意見の相違があります。それの要点は、各ユーザーにグローバルに一意のパスワードを持たせることです(つまり、2人のユーザーが同じパスワードを持つことはできません)。私はこれに対する明白な議論をすべて排除しました(セキュリティの脆弱性であり、認証と認証を混同します、それは無意味です)。 私はこれについて権威のある(または半権威の、または独立した)意見を探してさまざまなGoogle検索を行ってきましたが、何も見つけることができません私が知る限り)。誰も私にそのような独立した意見を指摘できますか? [編集] すべての回答に感謝しますが、この提案されたアプローチ/要件の問題をすでに理解しており、クライアントに説明することさえできますが、クライアントはそれらを受け入れません。 。 私はまた、デイリーWTFの記事を見つけたと思いますが、それはジョン・ホプキンスが指摘しているという問題がある-これは、それは価値が説明するように見えるしないように自明WTFであることを理由。 そして、はい、パスワードはソルトおよびハッシュされます。その場合、グローバルな一意性を確保するのは難しいかもしれませんが、それは私の問題を解決しません-それは単にクライアントが先に進まないという要件があることを意味します。実装します。そして、「塩漬けやハッシュに悩まされていません」と言う立場にいたら、「グローバルに一意のパスワードを実装していない」と言う立場になります。 なぜこれが悪い考えであるかについての独立したおよび/または権威ある情報源へのポインタは、まだ感謝して受け取られています... [/編集]

7
Java(まだ)はクロスプラットフォーム言語の選択ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 90年代にJavaを使い始めたときは、初日からすべて「一度書くだけでどこでも実行できます」でした。当時はおそらくそれがすべて真実で、私も合唱団の一員でした。 マルチプラットフォームランタイムを使用する他のすべての言語(python、flash、perl、html、php ...)を考慮して、これについてどう考えるかはもうわかりません。しかし、Javaはクロスプラットフォーム開発に向いていると思われるため、Javaを使用する必要があるという多くの議論がまだあります。 それで、それは今日でも本当ですか?Javaは今でもマルチプラットフォーム開発に最適な言語ですか? クロスプラットフォームの側面に焦点を当てて具体的に説明してください。 一般的な言語機能の比較は求めていません。 更新:これまでのところ素晴らしい反応です!ほとんどの答えは、JavaまたはWebを支持しているようです。スクリプト群衆からの入力はありますか?

10
よく知っている人にインタビューするには?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 9年前に閉鎖されました。 よく知っている人や友達になれる人にどのようにインタビューしますか?もし彼らの長所と短所をすでに知っているならどうでしょう。このタスクを他の誰かに委任することでこの状況を回避したいと思いますが、これがオプションではない場合はどうでしょう。個人的な感情があまりにも多く含まれており、偏見を持つことはほとんど不可能だと感じています。同様の状況にあった場合、どのように対処しましたか?
20 interview 

8
Emacsで生産性を高めるいくつかの方法は何ですか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 私はEmacsをかなり使用しており、最も基本的なコマンド/ショートカットに慣れていますが、Emacsには私が使用しているものよりも多くのものがあることを知っています。生産性の高いプログラマーになるのに役立つ、emacsのあまり知られていない機能にはどのようなものがありますか?

7
デイリービルドはどれほど重要ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 4年前に閉鎖されました。 ジョエルテストの基準の1つは、毎日のビルドです。アイデアは、ビルドが壊れた場合、それを壊した人がそれを修正するために周りにいるということです。ビルドを修正できない場合は、全員が古いバージョンをチェックアウトして作業する必要があります。一元化されたバージョン管理では、マージと分岐を可能な限り避けることが重要であるため、これがいかに悪いかを理解できますが、これは分散バージョン管理にとってささいな迷惑のように聞こえます。これに同意しますか?毎日のビルドが重要な理由は他にもありますか?

9
コードレビューは良いことだと上司を説得するためのヒント[非公開]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 4年前に閉鎖されました。 たとえば、プロジェクトでほとんど一緒に働いていない開発者が数人いる架空の会社で働いていて、上司がコードレビューに時間と費用の価値があるとは考えていなかったとします。 コードレビューの利点を描写するこのシナリオで提示できるさまざまな議論は何ですか?さらに、ここでのコードレビューに対する潜在的な議論は何であり、これらにどのように対抗できますか?

22
すべてのプログラマが読むべき一般的な技術ニュースのウェブサイトは何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 リンクと簡単な説明がなぜ非常に役立つでしょう。 一般的な技術のニュース、私はInfoQがあまりにも技術的ではないことを意味します。おそらくSOよりもP.SEにはるかに近いでしょう。 編集:このサイトは、開発者が業界、技術、発明などに関する一般的な知識を得るのに役立つはずです。毎朝車でニュースを聞いて、世界で何が起こっているのかを知るのと同じです。ただし、対象読者は、プログラマー、オタク、またはテクノロジーに関心のある他の人でなければなりません。


10
言語に依存しないプログラミングの本[閉じた]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 言語にとらわれない素晴らしいプログラミングやソフトウェア開発の本はありますか?なぜ読む必要があるのですか?

19
優秀なプロジェクトマネージャーにはプログラミングのバックグラウンドが必要ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 7年前に閉鎖されました。 プロジェクトマネージャーがさまざまなタスクを完了するための時間を見積もるように求めたときに、我慢できないことがあります。推定は推測であり、推測は間違っている可能性があります。一般に、要件とドキュメントが適切でないと、推測が誤ってしまいます。 ですから、プロジェクトマネージャーが、XとYのタスクにかかる時間と、クライアントからほとんど知られていないものや収集したものに基づいて番号を割り当てるのがどれだけ難しいかを推測しようとしていたのではないかとよく疑問に思います。 私の質問は次のとおりです。優れたプロジェクトマネージャーにはプログラミングの背景が必要ですか? あるいは、問題は、優れたプロジェクトマネージャーが以前は優れたプログラマーであった必要があるということでしょうか? 相関関係はありますか?

30
どの言語機能が有害と見なされますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 ロックされています。この質問とその回答はロックされています。なぜなら、質問はトピックから外れていますが、歴史的に重要だからです。現在、新しい回答やインタラクションを受け入れていません。 理由を説明し、(誤)機能が実装されている言語をリストしてください。 嫌いなものではなく、有害な機能と思われるものを投稿してください。

3
パブリックメンバーを仮想化または抽象化しないでください-本当にですか?
2000年代に、私の同僚は、パブリックメソッドを仮想または抽象化するのはアンチパターンだと言っていました。 たとえば、彼は次のようなクラスはうまく設計されていないと考えました。 public abstract class PublicAbstractOrVirtual { public abstract void Method1(string argument); public virtual void Method2(string argument) { if (argument == null) throw new ArgumentNullException(nameof(argument)); // default implementation } } 彼は言った 実装Method1およびオーバーライドする派生クラスの開発者はMethod2、引数の検証を繰り返す必要があります。 場合には、基本クラスの開発者は、カスタマイズの一部の周りに何かを追加することを決定しMethod1たりMethod2、後で、彼はそれを行うことはできません。 代わりに、私の同僚がこのアプローチを提案しました: public abstract class ProtectedAbstractOrVirtual { public void Method1(string argument) { if (argument == null) throw new …

2
ES / CQRS同時処理
私は最近、職場で適用する必要があるかもしれないので、CQRS / ESに飛び込み始めました。多くの問題を解決するため、私たちのケースでは非常に有望です。 ES / CQRSアプリが、単純化された銀行のユースケース(出金)にコンテキスト化されたように見える方法についての大まかな理解をスケッチしました。 要約すると、Aがお金を引き出した場合: コマンドが発行されます 検証/検証のためにコマンドが引き渡される 検証が成功した場合、イベントはイベントストアにプッシュされます アグリゲーターはイベントをデキューして、集約に変更を適用します 私が理解したことから、イベントログは真実の源であり、FACTSのログであるため、それから予測を導き出すことができます。 さて、この壮大な計画の中で私が理解できないのは、この場合に何が起こるかです: ルール:残高をマイナスにすることはできません 人Aのバランスは100eです 人Aは100eのWithdrawCommandを発行します 検証に合格し、100eイベントのMoneyWithdrewEventが発行されます その間に、人Aは100eの別のWithdrawCommandを発行します 最初のMoneyWithdrewEventはまだ集約されていなかったため、検証は合格です。これは、集約に対する検証チェック(まだ更新されていないため) 100eのMoneyWithdrewEventがもう一度発行されます ==>残高が-100eで、ログに2つのMoneyWithdrewEventが含まれる一貫性のない状態です 私が理解しているように、この問題に対処するにはいくつかの戦略があります。 a)集約バージョンIDをイベントストアにイベントとともに配置し、変更時にバージョンの不一致がある場合、何も起こらない b)検証層が何らかの方法で作成する必要があることを意味する、いくつかのロック戦略を使用する 戦略に関する質問: a)この場合、イベントログはもはや真実の源ではありません。どう対処するのですか?また、引き出しを許可することは完全に間違っていましたが、クライアントに戻りましたが、この場合はロックを使用する方が良いですか? b)ロック==デッドロック、ベストプラクティスに関する洞察はありますか? 全体として、並行性の処理方法に関する私の理解は正しいですか? 注:同じ人がこのような短い時間枠で2倍のお金を引き出すことは不可能であることを理解していますが、詳細に迷子にならないように簡単な例を取り上げました

4
サーバーのビジネスロジックエラーを表すためにHTTPステータスコードを使用する必要がありますか?
私は、クライアント(ブラウザーのJS)がサーバーと通信するためのAPI設計との岐路にあります。HTTP 409 Conflictを使用して、安全ロックが有効であるためにアクションが失敗することを表します。satefyロックは、開発者がお客様の生産システムを誤って変更することを防ぎます。特定のAPI呼び出しが失敗した理由を示すために、クライアントで409をもう少し優雅に処理するように任されました。 私の解決策は、409が原因で何かが失敗したときにクライアントに通知を表示するAJAX呼び出しの失敗ハンドラーをラップすることでした-これはすべて問題なく、同じメカニズムを使用する他の4XXおよび5XXエラーと一緒にうまく機能します。 ルートハンドラーの1つがビジネスロジックエラーに遭遇したときに409で応答するという問題が発生しました-私のAJAXラッパーは安全ロックがオンであることを報告しますが、クライアントの既存の障害ハンドラーは問題が何に基づいている(考えている)かを報告します応答の。簡単な解決策は、安全ロックを表すために使用するハンドラーの応答またはステータスコードを変更することです。 それが私の岐路に私を連れて行きます:HTTPステータスコードはビジネスロジックエラーを表すためにも使用されるべきですか?この質問は、私が直面しているのと同じ問題に対処しますが、あまり注目を集めませんでした。リンクされた回答で示唆されているように、ビジネスロジック内の障害を表すために適切なボディでHTTP 200 OKを使用することに傾倒しています。 ここに強い意見はありますか?誰かがこれを失敗を表す間違った方法だと私に納得させることができますか?
20 rest  api  web 

9
init()メソッドはコード臭いですか?
init()型のメソッドを宣言する目的はありますか? 私はコンストラクタよりも優先init()すべきかどうか、または宣言を避ける方法をinit()尋ねていません。 メソッドを宣言する背後に何らかの理由があるのかinit()(それがどれほど一般的かを見て)、それがコードのにおいであり、避けるべきかどうかを尋ねています。 init()イディオムは非常に一般的ですが、私は、任意の真のメリットを見ていません。 メソッドによる初期化を促進する型について話している: class Demo { public void init() { //... } } これはいつプロダクションコードで使用されますか? コンストラクターがオブジェクトを完全に初期化せず、部分的に作成されたオブジェクトを生成することを示唆しているため、コードの匂いがするかもしれません。状態が設定されていない場合、オブジェクトは存在しないはずです。 これは、エンタープライズアプリケーションの意味で、生産をスピードアップするために使用されるある種の手法の一部である可能性があると信じさせてくれます。それは私がそのようなイディオムを持つことを考えることができる唯一の論理的な理由です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.