ソフトウェア工学

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

7
Pythonはどのタイプのアプリケーションにとって悪い選択ですか?[閉まっている]
閉じた。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集して事実と引用で答えられるように質問を更新してください。 閉じた3年前。 私はPythonの学習を始めたばかりで、言語に関するコンテキストをもう少し取得したいと思います。 多くの場合、PythonはCやC ++に比べて遅い言語であることを認識しています。したがって、可能な限り迅速に実行する必要のあるアプリケーションにとって、Pythonはおそらく最良の選択ではありません。 これ以外では、Pythonは読み書きが簡単な優れた汎用言語のようです。利用可能なライブラリにより、膨大な機能が提供されます。パフォーマンスが重要なアプリケーション以外で、Pythonを使用するのが悪い選択はどこですか(そしてその理由)。
21 python 

3
数値レシピの現代的な代替手段は何ですか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 過去において、数値レシピの本は、数値アルゴリズムのゴールドスタンダードリファレンスと見なされていました。初期のFortranエディションの後には、CおよびC ++などのエディションが続き、最新版になりました。これらを通して、最新のアルゴリズムのリファレンスコードを提供しました。 現在、古いエディションは無料でオンラインで入手できます。 残念ながら、今ではほとんど歴史的な本としてのみ有用だと思います。「ソフトウェアエンジニアリング」の実践は時代遅れであるように思われ、実際のコンテンツは文献に追いついていません。 現代のプログラマは、同様に包括的でありながら親しみやすいどのような参照を代わりに見るべきでしょうか?

5
ASP.NETアプリの背後にあるクライアント側のJavascriptとC#コードの間でデータを渡す方法
ASP.NETアプリケーションの背後にあるクライアント側のJavaScriptコードとC#コードの間でデータを渡す最も効率的で標準的な方法を探しています。私はこれを達成するために以下の方法を使用しましたが、それらはすべてちょっとしたファッジを感じます。 JavaScriptからC#コードにデータを渡すには、非表示のASP変数を設定してポストバックをトリガーします。 <asp:HiddenField ID="RandomList" runat="server" /> function SetDataField(data) { document.getElementById('<%=RandomList.ClientID%>').value = data; } 次に、C#コードでリストを収集します。 protected void GetData(object sender, EventArgs e) { var _list = RandomList.value; } 別の方法に戻ると、どちらかのScriptManagerを使用して関数を登録し、Page_Load中にデータを渡すことがよくあります。 ScriptManager.RegisterStartupScript(this.GetType(), "Set","get("Test();",true); または、ポストバックの前、または初期化または事前レンダリングの段階で、コントロールに属性を追加します。 Btn.Attributes.Add("onclick", "DisplayMessage("Hello");"); これらの方法は私に役立って仕事をしてくれましたが、完全ではありません。クライアント側のJavaScriptとC#バックエンドコード間でデータを渡すより標準的な方法はありますか? HtmlElementクラスを説明するこのような投稿を見てきました。これは私が検討すべきものですか?

11
フリーランサーは、クライアントにプロジェクトのニーズに合わせてiPadのスポンサーを依頼できますか?
私はクライアントのためにフリーランスのWebプロジェクトをしています。クライアントは、テスト目的でiPadを購入するように頼んでいます。iPadを手に入れるように彼に頼むべきですか? それ以外の場合、iPadは必要ありません。プロジェクトの支払いを受けているときに、スポンサーを求めるのは倫理的ですか?試してみるべきですか?

3
Node.jsは実際にスケーラビリティを向上させますか?
私はC10Kの問題について読んでいますが、特に注目すべきは非同期サーバーI / Oを指す部分です。http://www.kegel.com/c10k.html#aio これは、スレッドがI / O割り込み(イベント)に依存しながら、スレッドがユーザーの要求を処理できるようにすることで、Node.jsがサーバー上で行うことをほぼ要約していると思います。フルCPUジョブ。スレッドは、他のこと(非ブロッキング)を利用して、ジョブが完了したとき(たとえば、ファイルが見つかった、またはビデオが圧縮されたとき)に通知を受けることができます。 これは、その後、スレッドがソケット、つまりサーバー上のユーザーにとってより「利用可能」であることを意味します。 それから私はこれを見つけました:http : //teddziuba.com/2011/10/straight-talk-on-event-loops.html ライターは、イベント駆動型フレームワーク(割り込みスレッド)がスレッドを解放するかもしれないが、実際にはCPUがしなければならない作業量を減らさないと主張しています。ここでの理由は、たとえば、ユーザーがアップロードしたビデオを圧縮するように要求した場合、CPUは実際にこのジョブを実行する必要があり、それを実行中にブロックすることです(簡単にするために、ここでは並列性を忘れます-もっとよく知って!)。 私は簡単なコーダーであり、サーバー管理者などではありません。知りたいのは、Node.jsが「クラウドコンピューティング」の神からの贈り物なのか、それとも熱気であり、実際にスケーラビリティを改善して企業の時間やお金を節約できないのか、ということです。 どうもありがとう。

5
静的クラスを名前空間として使用する
この質問は、Software Engineering Stack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行され ました。 名前空間として静的クラスを使用している他の開発者を見てきました public static class CategoryA { public class Item1 { public void DoSomething() { } } public class Item2 { public void DoSomething() { } } } public static class CategoryB { public class Item3 { public void DoSomething() { } } public …

7
恐ろしいC#プログラミングインタビューテスト-何かアドバイスはありますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 私はC#開発の仕事を揃えていますが、面接する前に、雇用機関とのテストに合格する必要があります。 今、私は10年以上のプログラミング経験があり、C#で3年以上の経験がある上級開発者ですが、このテストを本当に楽しみにしていません。失敗する可能性が十分にあると思います。 私の経験では、これらのテストは、日常の仕事の状況でめったに使用しないものを尋ねることは予測できません。 良い本やウェブサイトなど、私が何を修正すべきかについて、あなたの最善のアドバイスが必要です。準備するのに1週間もかからず、これに合格することが不可欠です。 前もって感謝します。 編集:このようなテストを書くことに関する私の懸念をさらに正当化するために、次の質問を検討してください。 12)イベントは: a) The result of a users action - correct answer b) The esult of a party c) code to force users action テストによると正解はAですが、私はSOA開発を行ってきたので(多くの場合、イベントはシステムイベント(ユーザーアクションではない)に基づいている場合があるため)、イベントを駆動する必要がないことは100%確信していますこれはC#の質問でもありました(ASP.netの質問ではありません)私の理解に基づいて、私は本当に正しい答えを見つけることができませんでしたが、Bは最高のようです(パーティーの定義が:この種の質問は私を怖がらせます。
21 c#  interview 

12
「Do One Thing」パラダイムが有害になるのはいつですか?
この投稿を改善したいですか?引用や回答が正しい理由の説明など、この質問に対する詳細な回答を提供します。十分な詳細のない回答は、編集または削除できます。 この質問は、Software Engineering Stack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行され ました。 引数のために、指定されたファイルの内容を行ごとに出力するサンプル関数を次に示します。 バージョン1: void printFile(const string & filePath) { fstream file(filePath, ios::in); string line; while (std::getline(file, line)) { cout << line << endl; } } 関数は、抽象化の1つのレベルで1つのことを行うことが推奨されることを知っています。私にとっては、上記のコードはほとんど1つのことを行い、かなりアトミックです。 一部の書籍(Robert C. MartinのClean Codeなど)では、上記のコードを個別の機能に分割することを提案しているようです。 バージョン2: void printFile(const string & filePath) { fstream file(filePath, ios::in); printLines(file); } void …

7
自己資金によるサバティカル後の履歴書のギャップにどのように対処しますか?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 8年前に閉鎖されました。 Programmers.SEには、長時間の休暇を取ることが良いアイデアであるかどうか、そしてスキルレベルを維持するためにその休暇中に何をすべきかについての質問が山ほどあります。 /software/31536/will-taking-two-years-off-for-school-in-a-related-field-destroy-a-mid-level-devel /software/102009/can-i-take-a-year-off-without-hurting-my-career 開発者になるのに1年か2年かかるとしたら、それに戻るのは本当に難しいですか? /software/91176/is-taking-a-break-in-career-to-learn-stuff-a-bad-idea 彼らは本当に役に立ちましたが、私はまだ自己資金でサバティカルを取るためのロジスティックの詳細について質問があります。 私はソフトウェア開発者として働いてから1年の終わりに近づいています(現場で7年間働いた後)。今年は、ベーキング、縫製に十分な時間がなかった興味を探求しました。 、写真撮影、そして新しくて面白い友達を作ります。この間、私は他の方法では探求する機会がなかったであろう技術や分野のペット開発プロジェクトにも取り組んできました。さらに、プログラミングのニュースやブログを読んだり、追いかけたりする時間がなかったソフトウェア開発の本をすべて読みました。 開発プロジェクトはすべて、Micro ISVの一部になることに目を向けてきましたが、プロジェクトの1つだけがあらゆる種類の生産段階に到達しました。このプロジェクトは印象的ですが、あまり成功していません(まだ!) かなり活発なプログラミングブログを持っています。これは、ソフトウェア開発への高い献身を反映していると思い、1年間プログラミングスキルを棚上げしただけではないことを示しています。 私の質問は、この情報を履歴書/カバーレターレベルで潜在的な雇用者に送信する最良の方法は何ですか? このサバティカルをインタビューの場で説明できると確信しています。しかし、履歴書レベルでは、採用マネージャーは履歴書を破棄するためにできる限りの言い訳を使用することを知っています多分それはカルマです。)だから私は履歴書/カバーレターがキックアスの新しい仕事を得る上で本当にトリッキーな部分であると感じています。 私は何をすべきかについていくつかのアイデアを持っていますが、より大きなコミュニティが容認できるものと見なすものがわかりません。私が検討しているアプローチは次のとおりです。 個人的なプロジェクトの概要を説明するサバティカルタイムの履歴書に特別なセクションを設けます。これを行う場合、ラベルを付けるための良い方法は何ですか? 個人の会社名を作成し、これらのプロジェクトをその会社の履歴書の実務経験セクションに入れます。これは最もやりがいのある方法のように思えますが、インタビューの段階に達すると、それが策略として認識されるのではないかと心配しています。また、これを行う場合、タイトルとして何を入れますか? 私の履歴書をそのままにして、私のアクティブなブログへのリンクとともに、カバーレターのすべてを説明します。 おそらく私が考えていないことはありますが、私は他のアイデアを受け入れています。 私は自分の個人的な状況に関する特別な雪片の情報の束を含めたことは知っていますが、より一般的な場合には答えを好むでしょう。ここでの個人的な詳細は、私のために特別に設計された回答のリクエストとしてではなく、例としてのものです。

5
非倫理的な開発プロジェクトを引き受けるのを防ぐにはどうすればよいですか?
自営業の時代に戻って、私はかつて小規模でかなり高額なプロジェクト「ニュースレターシステム」を採用しました。 すべてが順調で、マイルストーンが到達するたびに請求書が支払われ、私は幸せな開発者でした...クライアント氏がメールヘッダーのなりすましやその他の機能を要求し始めるまで、最終的に私は非常に洗練されたスパムメーラーを構築しているという結論に至りました。 長い話を短くするために:経済的な考慮により、私が始めたものを終わらせました。私は今日までそもそも仕事に就いたことをresしている。もしもクライアントの名前をグーグルで悩ませたら、警告されただろう。 誰かの手で見たくないコーディングを終わらせないために、どのような戦略を使用できますか?

6
ユニットテストを追加することは、よく知られているレガシーコードにとって意味がありますか?
私はTDDの意味でのユニットテストについて話している。(自動化された「統合」ではなく、テストと呼ぶのが好きです。) レガシーコード:(C ++)テストなしのコード。(参照:マイケルフェザーズのレガシーコードでの効果的な作業) しかし、次のようなレガシーコード:私たちのチームが過去10〜5年間作業してきたコードです。そのため、何かを変更するためにどこに置くべきかについて非常によく考えています。 私たちは何のために(Boost.Test経由)の場所でのユニットテスト持ち、いくつかの後に来たか、ユニットテストのための「自然な」フィットされているモジュール(一般的なアプリの特定のコンテナ、文字列のもの、ネットワークヘルパーなど) 適切な自動受け入れテストはまだありません。 さて、最近、3つの新しいユーザー向け機能を実装する「喜び」がありました。 それらのそれぞれは、私が変更するのに必要なコード部分に慣れるのに約1〜2時間、変更するのに必要な(小さな)コードを実装するのに1〜2時間、そしてアプリを確認するのにさらに1〜2時間かかりましたその後正しく実行され、実行するはずでした。 今、私は本当に小さなコードを追加しました。(各機能に対して1つのメソッドといくつかの呼び出し行があると思います。) このコードを(WEwLCで提案されている方法のいずれかを介して)除外するので、単体テストが理にかなっている(完全なトートロジーではない)ために、さらに2〜4時間は簡単にかかっていました。これにより、各機能に50%〜100%の時間が追加され、すぐにメリットは得られません。 コードについて何かを理解するのに単体テストは必要ありませんでした コードがアプリの他の部分に正しく統合されているかどうかをテストする必要があるため、手動テストは同じ量の作業です。 確かに、あれば、後に、「誰かが」に沿って来て、そのコードに触れ、彼は理論的には、そのユニットテストからいくつかの利点を持つことができます。(テストされたコードの島はテストされていないコードの海に住んでいるので、理論的にのみ。) したがって、「今回」は、ユニットテストを追加するというハードワークを行わないことを選択しました。テスト対象のものを取得するためのコード変更は、機能を正しく(そしてクリーンに)実装するためのコード変更よりもはるかに複雑でした。 これは、強く結合されたレガシーコードの典型的なものですか?私は怠け者ですか/チームとして間違った優先順位を設定していますか?または、オーバーヘッドが高すぎないものだけをテストするのが賢明ですか?
21 c++  tdd  legacy  unit-testing 

5
Tennentの通信原理の良い説明は何ですか?
この質問は、Software Engineering Stack Exchangeで回答できるため、Stack Overflowから移行されました。 8年前に移行 。 私は、この原則が何であり、言語設計にとってそれが非常に重要であるのかを理解するのに苦労しています。 基本的に、すべての式に対して expr言語の、この構造とまったく同じである必要があると述べています。 (function () { return expr; })() また、Rubyはこの原則に従うが、Pythonは従わないと聞いた。これがなぜ真実なのか、それともまったく真実なのかはわかりません。

7
意図せずにプログラマーになる:正しい方法 [閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新して、 Software Engineering Stack Exchangeのトピックになるようにします。 4年前に閉鎖されました。 私の経歴は電気工学、より正確にはDSPです。私が現在働いている会社は、アナログハードウェアを構築する、多くの多様なプロジェクトを行っています。ここにいる他の誰よりもコンピューターにやや近いので、私は多くの場合、組み込みデバイス(これで問題ありません)とWindowsまたはLinux OSの両方のコードを書いています。後者が私にとって外国の領土です。 私はコーディングでき、いくつかの言語(C / C ++、Java、一部のVB.NET)を知っていますが、それらは信号および画像処理、ニューラルネットワーク、およびその他の同様のアプリケーションのアルゴリズムシミュレーションにのみ使用しました。私にとって、プログラミングは何よりも計算ツールでした。しかし、適切な本格的なソフトウェアを作成しなければならないプロジェクトがますます増えており、それを行う必要がなく、本当に興味がなかったので、どうすればよいかわかりません。私は、仕事の要求のためにある程度コーダーに変換されたかなりの数のエンジニアを見てきましたが、彼らのほとんどは彼らがしたことでそれほど良くありませんでした。多くの人が同じに遭遇したと確信しています。 優れたユーザーインターフェイス、優れた内部アーキテクチャなどを備えた適切なソフトウェアの作成を学ぶ場合、どのようにすればよいですか?何が良い習慣で何がそうでないのかを教えてくれる仕事をしている人はいません。言葉の生の意味でコードを書くことができるとすれば、良いソフトウェアを書くことについて他に知っておくべきことはありますか?

3
Node.jsは他のサーバー側フレームワークとどう違うのですか?
Node.jsが非常にポピュラーになったことに気付き、小規模なプロジェクトを実行している人々のインスタンスを見てきました。 また、長所と短所のリストを見て、Node.jsで何ができるかを理解しましたが、PHP、Perl、Rubyなどの他のより成熟したサーバー側の技術との違いについてはまだ明確ではありません。レール。 特に、Node.jsと現在の選択肢との違いは何ですか?その理由は何ですか?

4
Flyweightパターンの使用例はありますか?[閉まっている]
閉じた。この質問はより集中する必要があります。現在、回答を受け付けていません。 この質問を改善したいですか?この投稿を編集するだけで1つの問題に焦点を当てるように質問を更新します。 2年前に閉店しました。 私はデザインパターンを研究しており、フライウェイトパターンに出くわしました。私は自分のアプリケーションでパターンを使用する機会を探していましたが、その使用方法を理解するのに苦労しています。また、他の人のコードを読んだときに、フライの重量パターンが使用されている兆候は何ですか? 定義によると: 共有を使用して、多数の詳細なオブジェクトを効率的にサポートします。 正しく読んだ場合、辞書とハッシュテーブルはフライウェイトのインスタンスになる可能性がありますが、これは正しいですか? 前もって感謝します。

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