ソフトウェア工学

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

16
あなたの好きなインタビューの質問は何ですか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 8年前に閉鎖されました。 ソフトウェア開発者へのインタビューで特に価値があると思う質問はありますか?特に有用になった質問についてはどうですか? 「コードを書く」などの面接アプローチだけでなく、あなたが尋ねたい特定の質問を探しています。
21 interview 

21
あなたが25人の開発者からなるチームのマネージャーだった場合、彼らをどのように動機付けますか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 6年前に閉鎖されました。 ベンチャーキャピタリストからの数百万人の支援を受けて、新しいスタートアップに雇われたと想像してください。 あなたの使命:organize the development of the next killer app。 25人の開発者はそれぞれを個別に面倒を見るには多すぎるので、モチベーションを高めるためにどのような決定を下しますか? ストックオプションから無料のCookieへの回答に感謝します;) もちろん、ここでのコツ(あなたが本当にそのようなスタートアップのマネージャーでない限り)は、それらのプログラマーの一人の立場に置かれています。 編集:それは架空のコンテキストです。この物語の目的は、あなたの願いを刺激することです。開発者の動機をキャプチャしたい。

10
メール通知を設定するためのベストプラクティスとエチケット
この質問は、Software Engineering Stack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行され ました。 Webサイトの顧客が購読する電子メールアラートを設定する場合、どのようなエチケットのルールに従う必要がありますか? 私は頭の上のいくつかを考えることができます: ユーザーはオプトアウトできます テキストのみ(または味のあるリモートイメージ) 週に1回以上送信されない クライアントは、メールの受信対象をきめ細かく制御できます(関心のあるもののみを受信します) 他に考慮すべき点は何ですか? プログラミングの観点から、電子メール通知を設定および実行するための最良の方法は何ですか? ASP.NETサービスを使用する必要がありますか?Windowsサービス?どちらに落とし穴がありますか? 送信された電子メールをログに記録するにはどうすればよいですか?それらが受信されたかどうかは気にしませんが、メールを送信したかどうかを証明する必要があります。

16
パフォーマンスを改善するためにどのような簡単なテクニックを使用しますか?
コードを読みにくくすることなくパフォーマンスを向上させるために簡単なルーチンを記述する方法について話している...たとえば、これは私たちが学んだ典型的なものです: for(int i = 0; i < collection.length(); i++ ){ // stuff here } しかし、私は通常、a foreachが該当しない場合にこれを行います。 for(int i = 0, j = collection.length(); i < j; i++ ){ // stuff here } lengthメソッドを一度だけ呼び出すので、これはより良いアプローチだと思います...私のガールフレンドはそれが不可解だと言います。自分の開発で使用する他の簡単なトリックはありますか?

4
JSPスクリプトレットが悪いのに、なぜJSXが良いのですか?
React.jsは、コンポーネントと要素のツリーを構築するためのXHTMLのような構文としてJSXを提供します。JSXはJavascriptにコンパイルされ、JSX固有のループまたは条件を提供する代わりに、Javascriptを直接使用します。 <ul> {list.map((item) => <li>{item}</li> )} </ul> まだ説明できていないのは、JSPで類似のコンストラクトが悪いと考えられる場合、なぜこれが良いと考えられるのですか? JSPのこのようなもの <ul> <% for (item in list) { %> <li>${item}</li> <% } %> </ul> はのようなタグで解決される読みやすさの問題と見なされます<c:forEach>。JSTLタグの背後にある理由は、JSXにも適用できるようです。 XHTMLのような構文(山括弧、ネスト)とJava / Javascript(中括弧、コンマ、括弧)を切り替えていない場合は、読みやすくなります。 レンダリング関数内で使用可能な完全な言語とプラットフォームがある場合、そこに属さないロジックを入れることを思いとどまらせることはほとんどありません。 JSXが異なる理由を考えることができる唯一の理由は次のとおりです。 Javaでは、間違ったことをするインセンティブがありました。JSPはホットリロードされるので、JSPにコードを入れて再構築/再起動のサイクルを避けようとしました。保守性は、即時の生産性のために犠牲になりました。スクリプトレットを廃止し、テンプレート構成体の固定セットに制限することは、実質的に保守性を強化する方法でした。JSの世界にはそのような歪みはありません。 JSPとJavaの構文は、<% ... %>Javaコードと要素の生成を区別するための余分な要素や、foreach概念やファーストクラスの機能を持たないJavaのネイティブな構文(最近まで)に不格好です。JSXでループと条件にネイティブJavascriptを使用する構文のペナルティはゼロではありませんが(私の意見では)、JSPほど悪くはなく、ループと条件にJSX固有の要素を導入することを保証するのに十分なほど悪くはありません。 私が見逃している何か他のものがありますか?

5
パブリックREST APIのOAuth2 ROPCと基本認証
ここで興味のある特定のユースケースは、公開されているサーバーエンドポイント(公開REST APIなど)に対してRESTクライアントを認証することです。 ここで最も簡単なソリューションは、基本認証です。しかし、ほとんどすべての状況において、OAuth2が優れた認証ソリューションとして宣伝されているとよく耳にします。 事は、あるのみ RESTサーバに対してRESTクライアント認証のために実現可能であるのOAuth2許可タイプがあるリソース所有者のパスワードの資格情報(ROPC)コード補助金と暗黙の補助金がため(認証サーバによってホストされている)UI / Webページを必要とするため、ログインしてクライアントアプリを手動で承認するユーザー。 ROPCが機能する方法は、リソース所有者のユーザー名/パスワードとクライアントIDをクエリ文字列パラメーターとして送信することです。これは、少なくともBase-64が資格情報をエンコードし、TLSで暗号化できるヘッダー内に送信するBasic Authよりも安全性が低い(IMHO)です! だから私は尋ねる:パブリックREST APIのコンテキストでは、OAuth2 ROPCは本当に基本認証よりも優れていますか?OAuth2 ROPCより安全なものは何ですか? 更新 AmazonのAWS向けの非OAuth2ベースのRESTセキュリティを説明するこの素晴らしい記事を読んだところです。これは基本的に、各RESTリクエストのハッシュが生成され、通常の(暗号化されていない)リクエストと一緒にサイドカーとして送信される秘密鍵ベースのソリューションです。クライアントとサーバーのみが秘密鍵を知っているため、サーバーがリクエストを受信すると(再び、通常のリクエスト+ハッシュされたリクエストを含む)、サーバーはクライアントの秘密キーを検索し、同じハッシュを通常のリクエストに適用し、次に、2つのハッシュを比較します。 これは、OAuth2のROPCよりもはるかに複雑で、複雑で、安全に聞こえます!ここで重要な何かを見逃していない限り、OAuth2 ROPCは単に送信client_idしてusernameおりpassword、クエリ文字列パラメーターとして...完全に完全に安全ではありません!このHMAC /ハッシュベースのソリューションは、はるかに印象的で安全なようです。 問題は、その記事の著者でさえ次のように述べていることです。 また、ある時点でOAuthを実装する必要があることをゆっくりと認識し、受け入れます。 バババウト?!?!OAuth2がこの賢いHMAC /ハッシュベースのソリューションよりも安全性が低い場合、この記事の著者はなぜOAuthをいつか受け入れる必要があると感じるのでしょうか。私は困惑している。
21 rest  oauth  https 

6
一般に、分岐を避けるために仮想関数を使用する価値はありますか?
ブランチミスの仮想コストに相当する命令の大まかな同等物があるように思われますが、同様のトレードオフがあります。 命令対データキャッシュミス 最適化の障壁 次のようなものを見ると: if (x==1) { p->do1(); } else if (x==2) { p->do2(); } else if (x==3) { p->do3(); } ... メンバー関数配列を持つことができます。または、多くの関数が同じ分類に依存している場合、またはより複雑な分類が存在する場合は、仮想関数を使用します。 p->do() しかし、一般的には、それを分岐対仮想関数どのように高価であり、いずれかが親指の大まかなルールを持っていた場合(4などの単純なとしてそれがあった場合に素敵な私が思っていたので、一般化するのに十分なプラットフォーム上でテストするのは難しいですifsがブレークポイントです) 一般的に、仮想機能はより明確であり、私はそれらに寄りかかります。しかし、コードを仮想関数からブランチに変更できる非常に重要なセクションがいくつかあります。これに着手する前に、これについて考えたいと思います。(簡単な変更ではなく、複数のプラットフォームで簡単にテストすることもできません)
21 c++  performance 

4
Visual Studio Solutionファイルの代わりにMSBuildを使用する必要があるのはなぜですか?
TeamCityを使用して継続的な統合を行い、ソリューションファイル(.sln)を介してリリースを構築しています。過去にさまざまなシステムでMakefileを使用してきましたが、msbuildを使用したことはありません(Makefile + XMLマッシュアップのように聞こえます)。ソリューションファイルの代わりにmsbuildを直接使用する方法に関する多くの投稿を見てきましたが、なぜそれを行うべきかについての明確な答えは見当たりません。 それでは、なぜソリューションファイルからMSBuildの「メイクファイル」に移行する必要があるのでしょうか?#define(機能化ビルド)が異なるリリースがいくつかありますが、ほとんどの部分はすべて機能します。 大きな懸念は、プロジェクト/ソースコードを追加するときに2つのシステムを維持する必要があることです。 更新: 人々は、次の3つのコンポーネントのライフサイクルと相互作用に光を当てることができますか? Visual Studio .slnファイル 多くのプロジェクトレベルの.csprojファイル(「サブ」msbuildスクリプトを理解しています) カスタムmsbuildスクリプト カスタムmsbuildスクリプトは手書きで、通常は既存の個々の.csprojを「現状のまま」消費しますが、Visual Studio IDE GUI内から通常どおり.slnと.csprojを消費/維持すると言うのは安全ですか?これは、メンテナンスの重複/重複を減らす方法の1つです... 他の人々の運用経験から、これに関するいくつかの光をいただければ幸いです

2
スタックとヒープのサイズはOSによってどのように制限されますか?
注:特定のOSが回答できるようにする必要がある場合は、Linuxを検討してください。 プログラムを実行するたびに、スタック用の領域とヒープ用の領域を備えた、実行する仮想メモリ空​​間が与えられます。 質問1:スタックとヒープに静的なサイズ制限(たとえば、それぞれ2ギガバイト)がありますか、またはこの制限は動的で、プログラムの実行中にメモリ割り当てに従って変化します(つまり、使用される合計4ギガバイト)両方なので、プログラムがスタックのみを使用する場合、4ギガバイトのスタックを持つことができますか? 質問2:制限はどのように定義されますか?使用可能なRAMメモリの合計ですか? 質問3:テキスト(コード)セクションとデータセクションについてはどうですか、どのように制限されていますか?
21 linux  memory  stack  heap 

5
TypeScriptの背後にある動機は何ですか?
この投稿を改善したいですか?引用や回答が正しい理由の説明など、この質問に対する詳細な回答を提供します。十分な詳細のない回答は、編集または削除できます。 この質問はして移行され、それがソフトウェア工学スタック所に答えることができるので、スタックオーバーフローから。 7年前に移行され ました。 JavaScriptがあり、次にFlashがあり、Silverlightがあり、HTML5がそれらすべてを所有していました。 それでは、TypeScriptの背後にある動機は何ですか?TypeScriptでどのような問題に取り組み、どのような改善が得られますか? http://www.typescriptlang.org/

3
Groovyで明示的なreturnステートメントを記述するタイミング
現時点では、Groovy / Grailsプロジェクト(私はまったく新しい)に取り組んでおりreturn、Groovyメソッドでキーワードを省略するのは良い習慣かと思います。私の知る限り、キーワードを明示的に挿入する必要があります。つまり、ガード句の場合、他のどこでも使用する必要がありますか?私の意見では、追加のreturnキーワードは読みやすさを向上させます。それとも、あなたはただ慣れなければならないものですか?そのトピックに関するあなたの経験は何ですか? いくつかの例: def foo(boolean bar) { // Not consistent if (bar) { return positiveBar() } negativeBar() } def foo2() { // Special Grails example def entitiy = new Entity(foo: 'Foo', bar: 'Bar') entity.save flush: true // Looks strange to me this way entity }

3
リフレクション:リフレクションの使用は、まだ「悪い」または「遅い」ですか?2002年以降、リフレクションで何が変わったのですか?
式または式ツリーを扱うとき、プロパティの値を設定および取得するためにリフレクションをたくさん使用していることに気付きました。リフレクションの使用がますます一般的になっているように思われました。検証用のDataAnotations、Attribute Heavy ORMなど。 それで、もし何か変わったとしたら?機械の速度だけですか?リフレクションを高速化するためにフレームワークに変更がありましたか? それとも実際に何も変わっていませんか?リフレクションを使用するのはまだ「悪い」ですか「遅い」ですか?
21 .net  reflection 

6
効率的なtry / catchブロックの使用法?
catchブロックは、ロジックの記述、つまりフロー制御などの処理に使用する必要がありますか?または、例外をスローするためだけに?コードの効率や保守性に影響しますか? catchブロックにロジックを記述した場合の副作用(ある場合)は何ですか? 編集: catchブロック内にロジックを記述したJava SDKクラスを見てきました。例(java.lang.Integerクラスから抜粋したスニペット): try { result = Integer.valueOf(nm.substring(index), radix); result = negative ? new Integer(-result.intValue()) : result; } catch (NumberFormatException e) { String constant = negative ? new String("-" + nm.substring(index)) : nm.substring(index); result = Integer.valueOf(constant, radix); } EDIT2: 私は、例外の中に例外的なケースのロジックを書くことの利点としてそれを数えるチュートリアルを行っていました: 例外を使用すると、コードのメインフローを記述し、例外的なケースに対処することができます。 catchブロックでロジックを作成する場合としない場合の具体的なガイドラインはありますか?

3
GithubのようなGithubのような「プルリクエスト」
私は金融機関のアナリストとして働いています。金融機関はデータの機密性のため、クラウドにデータを保存しません。ただし、コード管理にGitを使用してチームを成功させることはできました。私たちのサーバーにGithubのようなプルリクエストを実装する方法があるかどうか疑問に思っていました。私が興味を持っている特定の機能は、特定のブランチに実際にマージせずに、コメントの変更セットを送信する機能です。(1)変更を送信し、(2)変更をレビューしてコメントし、(3)コミットを受け入れるか拒否するかのワークフローが好きです。これを独自のサーバーに実装できますか(さらに良いことですが、簡単に実装できますか)。
21 git  code-reviews 

4
製品のバージョン管理と長期プロジェクトの分岐を処理する最良の方法は何ですか?
一般的に、製品ライフサイクル中に複数のリリースがあり、以前の製品のサポートが必要な長期プロジェクトの場合、製品バージョンとコードベースの分岐を処理する最良の方法は何ですか? より具体的な意味では、適切な分散バージョン管理(例:git)があり、チームの規模は小規模から大規模であり、開発者は一度に複数のプロジェクトに取り組んでいると想定します。直面している主要な問題は、その時点で存在していた古いバージョンをサポートする契約上の義務があることです。つまり、新しい開発では古いコードにパッチを適用できません(Microsoft Office製品がその例です。所有している機能年)。 その結果、各主要製品には複数の依存関係があり、それぞれのバージョンは年間リリース間で変更される可能性があるため、現在の製品のバージョン管理は複雑です。同様に、各製品には独自のリポジトリがありますが、ほとんどの作業はメインソーストランクではなく、その年の製品リリースのブランチで行われ、製品がサポートされるように製品がリリースされるときに新しいブランチが作成されます。これは、バージョン管理を使用するときに考えられるように、製品のコードベースを取得することは単純な問題ではないことを意味します。

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