ソフトウェア工学

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

2
JavaScriptを使用してCookieをドロップした場合でも、EU ICO Cookie法に準拠していますか?
Cookie法[1]に準拠するWebサイトを作成する他のサイトに適用するウィジェットを作成するという課題が私に提案されました。 サーバーコードを変更せずにこれを実行できますか? つまり、サーバー側にコードがあり、アフィリエイトCookieを応答に書き込み、JavaScriptウィジェットがwindow.loadイベントの後でそれを削除した場合、サイトは引き続きCookie法に準拠しますか? 次に、Google Analyticsと共有ボタンのCookieが表示されます。それらのスクリプトとiframeがJavaScriptで実行されないようにするにはどうすればよいですか? [1]情報コミッショナーのオフィス(ICO):新しいICO Cookie法

3
このフィルタリング動作の半科学的な用語はありますか?
特定の種類のフィルタリング動作に適用される用語を探しています。フィルター基準の選択に基づいて大量のデータがフィルター処理されるWebショップのようなインターフェースでよく使用されます。最も際立った機能は、結果をもたらさないフィルター基準を選択することが不可能であることです。そのようなフィルターはリアルタイムの更新で非表示になるためです。 例を見るには、blue-tomato.comウェブショップのこのブートファインダーセクションをご覧ください。 この種のフィルタリングの用語はありますか?

3
アジャイルでアプリケーションのアーキテクチャ/デザインを作成する方法は?
エンタープライズアプリケーションを開発しようとしているが、アジャイルプロセスから理解できる限り、機能を小さなチャンクに分割し、それらを繰り返し開発します。データベースとアプリケーションのコアを最初に作成してから、これらを繰り返し拡張していました。 問題は、以前に使用していたことを維持する必要がありますか(コアを最初に開発する必要がありますか)、ストーリーの開発にコア開発を分配する必要がありますか?後で、私はコードが将来の拡張のために十分に柔軟であるかどうか確信がありません! 何か案が?

6
面接の割り当て:どのくらいの期間が妥当ですか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 4年前休業。 そこで、ASP.NET MVC3プロジェクトのシニア開発者/チームリーダーの役割を採用しています。この人物は2つの主要な製品の1つをリードするため、これは私たちのチームにとって重要なポジションです。開発者の愛着がしばらくない製品です。 そのため、候補者がコントローラー、ビュー、ビューモデル、DAL、ユニットテストなどでスマートなことを行う必要があることを確認する必要があります。面接では、いくつかの些細なプログラミングの課題を使用しますが、ホワイトボードのコーディングに問題がある人には、輝く。 私が考えることができる最良の割り当て:些細なログインページの実装は、おそらく1時間以上の作業であり、2時間で上限を設定しても、100%終了することはほとんどありません。 これは公正ですか?私は、割り当てを合理的に保つことと、技術リーダーが必要とする幅広いスキルを披露する機会を申請者に与えることとの間のバランスをとろうとしています。
8 interview 

4
大規模または古いコードベースは、ナビゲートが容易であることが期待されますか?
私は大規模なコンピューターサイエンスの学生で、現在、大規模なエンタープライズWebアプリケーションを作成およびサポートしている会社の就職年にいます。現実の世界でソフトウェアがどのように生産されるかを体験した経験を愛しており、既存の機能を維持および拡張するだけでなく、製品の完全に新しい機能を開発する機会を提供する会社を見つけることができてとても幸運です。 とはいえ、これが正しく開発するための完璧な例になる可能性は非常に低いと私は非常に意識しています。実際、それとはかけ離れています。ここでの経験から多くのことを学んでいるように感じます。間違ったことを学んだり、道を進むのが難しいかもしれない同僚から悪い習慣を身につけたりしたくありません。ほとんどの場合、良い点と悪い点を簡単に区別できます。たとえば、ここでの単体テストのカバレッジは、さまざまな理由で事実上存在しません(ほとんどの場合、1つまたは2つの有効なポイントが混じった不十分な言い訳)。しかし最近は、よくわからないことが定期的に発生していることに気づきました。 新しいプロジェクトを始めるときはいつでも、当然、拡張、変更、または削除する必要がある関連コードを見つける必要があります。ほとんどの場合、アプリケーションの最も一般的に使用されるセクション内にないものは、コードベース内で見つけるのに時間がかかります。コードのセクションをよく知っている1人または2人の技術リーダーがいますが、彼らは時々困惑し、必要なものを探すのに長い時間を費やす必要があるか、最近コードのその部分を編集している人に頼る必要があります(誰か)助けを求めて。長い時間を言うとき、私は時間(通常)を意味するわけではありませんが、システムに漠然と精通している誰にとっても、良いコードベースは最低でも数分以内の任意のポイントにナビゲートできるように思えます。 だから、私の質問。上記の問題は、不十分な構造のコードが原因ですか?あるいは、開発者がコードベースについて十分な知識を持っていないためでしょうか?または、大規模なアプリケーションでは、ファイル構造を明確に保つためにどれだけの労力がかかるかに関係なく、それは単に避けられないのでしょうか? または、確かに...私は本当に重要ではないトピックに私の時間を無駄にしていますか?

4
REST API JSONペイロードの配列で常に単一のオブジェクトを返しますか?
私が取り組んでいるREST APIの場合、一貫したレイアウトでJSONを返したいです。 { "Data" : { "Id" : 123, "Email" : "charlie@somewhere.com" "Firstname" : "Charlie", "Surname" : "Brown", }, "Error" : null } ペイロードには常に「データ」と「エラー」が含まれ、どちらかがnullになる可能性があります。 私の質問は、「データ」と、実際には1つのオブジェクトしか返さないエンドポイントに関するものです。たとえばusers/current、現在認証されているユーザーを返すAPI があるとします。上記のようにそのユーザーを返したでしょう。「Data」という名前の単一のJSONオブジェクト。 ゼロ、1つ以上のオブジェクトを返す可能性のあるエンドポイントの場合、(もちろん) "Data"を配列にします。 { "Data" : [ { (first object) }, { (second object) } ], "Error" : null } 一貫性を保つために、「データ」は常に配列でなければならないという見方を聞いたことがあります。エンドポイントが論理的に1つのオブジェクト(またはnull)のみを返す場合でも。 他の人はどう思いますか?複数のオブジェクトが返されない場合は、「データ」と配列を作成する必要はないと思います。
8 api  rest  json 

5
Subversionでアプリの無料/有料バージョンを個別に維持する方法
Androidマーケットプレイスに有料アプリケーションを持っていますが、無料の広告サポートバージョンをリリースしたいと考えています。 私がこれを行うと思った最も簡単な方法は、広告を追加するための追加のコードを含むsubversionリポジトリーにブランチをセットアップすることでした。ただし、これをAndroidマーケットプレイスに送信しようとすると、一意のパッケージ名が必要になります。すべてのクラスファイルのパッケージを変更する必要があるため、トランクとブランチのマージが非常に面倒になるため、このソリューションはもはや機能しません。 これら2つのプロジェクトを一緒に保ち、パッチを共有しながら、異なるパッケージを使用する最良の方法は何ですか?

3
NoSqlデータベース-概念をカバーするまともなチュートリアル/本[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 5年前休業。 NoSqlデータベースの背後にある概念を学習するための優れたリソースを探しています。 私が見つけたもののほとんどは特定のテクノロジー(MongoDb、CouchDBなど)に関連していますが、特定の領域(一部はグラフDB、一部のKey-Valueなど)に焦点を当てるのではなく、NoSqlの背後にあるすべての概念の後にいます。 あなたの経験から共有して、優れたリソースを私に指摘できますか?

3
古いコードをリポジトリに追加する必要がありますか?
PHPサイトのSVNリポジトリがあり、最後のプログラマーはソース管理を適切に使用していません。その結果、私がここで作業を開始してからのコードのみがリポジトリにあります。 「バックアップ」としてファイルに保存された完全なコードベースの古いコピーがたくさんありますが、それらはソース管理されていません。ほとんどのコピーが保存された理由がわかりません。また、バージョン番号にタグを付ける合理的な方法もありません。私が行うすべてのバックアップが適切なファイルシステムのタイムスタンプを持って、バックアップが行われた日付を持っています。 関連するフレームワークとデータベースドライバーのアップグレードにより、古いコードは完全に機能しなくなります。現在のサーバー構成では機能しません。ただし、以前のプログラマーには独自のロジックがあったため、私は完全に古いコピーがないので、彼らが何をしていたのかを参照することはできません。 バージョン管理でこれを保持する必要がありますか?どうやって?古いコードを別のタグ/ブランチに分けますか?

3
前提条件の確認
私は、クライアントが設計上の契約の最後に留まっていることを保証する目的で、入力を検証するためのランタイムチェックを行うかどうかという質問に対する確かな答えを見つけたいと思っていました。たとえば、単純なクラスコンストラクターを考えます。 class Foo { public: Foo( BarHandle bar ) { FooHandle handle = GetFooHandle( bar ); if( handle == NULL ) { throw std::exception( "invalid FooHandle" ); } } }; この場合、ユーザーはFoo有効ななしでを作成しようとするべきではないと主張しますBarHandle。がコンストラクタのbar内部で有効であることを確認するのは適切ではないようですFoo。そのFooコンストラクタに有効な が必要なことを単純に文書化した場合BarHandle、それで十分ではありませんか?これは、契約による設計の前提条件を強制する適切な方法ですか? これまでのところ、私が読んだことはすべて、これについてさまざまな意見があります。50%の人がそれbarが有効であることを確認すると言うようですが、他の50%は私がそれをすべきではないと言っています。たとえば、ユーザーBarHandleが正しいことを確認したが、2番目の(そして不要な)チェックを行う場合を考えてください。もFooコンストラクタの内部で行われています。

7
どのようにしてオープンソースのウェブサイトを作り、利益を上げますか?
私はビジネスの感覚から正確に尋ねているわけではありませんが、たとえば、redditとTwitterはどちらも完全にオープンソースです。私の理解では、少なくとも彼らの利益の大部分は彼らのウェブサイトでの広告によるものだということです。それでは、誰かが自分のコードをコピーし、いくつかの小さいながらも効果的な変更を加えて自分のWebサイトを作成するのを防ぐには、どうすればよいでしょうか。 私はウェブサイトを持っているのでこれをお願いします、そして私は広告を通してそれでお金を稼ぎたいです。また、コードをオープンソースにして、見栄えを良くしたいのですが、このようなことが起こらないようにしたいと思っています。私のサイトは、Twitterやredditのような機関ではありません(おそらく近づくこともないでしょう)。彼らがあまりにも大きいので、誰かが自分のサイトをコピーすることを心配していないのか、あるいはオープンソースであるにもかかわらず実際に保護されているのかはわかりません。 redditはCPALを使用し、TwitterはApacheライセンスを使用します-これは彼らが必要とする保護を提供しますか、それとも私が得ていない何かがありますか?

9
なぜ仮想マシンが必要なのですか?
それぞれのOS(ターゲットとなっているOS)のソースコードをコンパイルする代わりに、一度コンパイルしてどこでも実行できます。 この質問のために、私はそれをVMと呼びます(たとえば、Javaと.NETの両方)。したがって、プログラムの実行は次のようになります ------------ ---- ---- | Executable | -> | VM | -> | OS | ------------ ---- ---- それは完全に理にかなっています、コンパイラはそれぞれのVMのために汎用のままです。ただし、VMの実装は、インストールするマシンによって異なります(* nix、windows、mac)x(32ビット、64ビット)。 私の質問は、それぞれのマシン用にVMを作成する代わりに、なぜその特定のマシン用にコンパイラーが作成されないのですか?これにより、それぞれのVMをダウンロードする代わりに、それぞれのコンパイラをダウンロードすると、そのコンパイラがその特定のマシンのmachine-code + OSを処理します。最終的には、あらゆるマシンのネイティブコードの実行。確かに、各ソースコードはその特定のマシン用にコンパイルする必要がありますが、今日では、自動化されたシステムであるscmビルドがこの作業に役立ちます。 混乱している私の理由は正しいですか、またはここでいくつかの専門知識が不足していますか? 編集: ポータビリティ: はい、それは1つの理由ですが、今日の自動化システムでは移植性が大きな問題ですか?他のマシン用にコンパイルする必要がないという事実をどれくらいの頻度で心配する必要がありますか?ネイティブマシン用にコンパイルされたコードを使用すると、パフォーマンスが大幅に向上します。Javaを例にとると、Windowsで低レベルのプログラミングを行うことはできず、JNIを選択する必要があります。 TeamCity / Jenkinsなどの自動化システムを利用してください。バージョン管理を介して送信されたコードが実行可能ファイルになるような自動化されたシステムセットアップを使用できます。

2
大量のデータを処理する低カップリング
通常、それらの間でリスト、セット、およびマップを交換するクラスを作成することにより、低結合を実現します。現在、Javaバッチアプリケーションを開発していますが、十分なメモリがないため、すべてのデータをデータ構造内に配置できません。データの1つのチャンクを読み取って処理し、次のチャンクに進む必要があります。したがって、読み取るデータがまだあるかどうかなどをどこかで確認する必要があるため、カップリングを低くすることははるかに困難です。 私が今使っているのは: ソース->プロセス->持続 処理するクラスは、読み込む行がまだあるかどうかをソースクラスに問い合わせる必要があります。 そのような状況でのベストプラクティスや有用なパターンは何ですか? 私に言わなければ、自分自身を説明しているといいのですが。

4
スケーラビリティ(マルチコア)の理由からPythonではなくClojureを使用するのは良い考えですか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 質問を更新して、ソフトウェアエンジニアリングスタック交換のトピックになるようにします。 4年前休業。 http://clojure.org/rationaleと、Clojureと多くの言語の間の他のパフォーマンス比較を読んだ後、使いやすさを除けば、Pythonではなく、Clojureでコーディングするべきだと思い始めました。実際、私はClojureを学ばないことに無責任であると感じ始めました。 それは意味がありますか?Lisp方言や他の関数型言語よりも、Pythonなどの命令型言語を使用して、すべてのコアを本当に効率的に使用できないのでしょうか。それのすべての利点は不変データを使用することから来るようですが、Pythonでそれを行うだけですべての利点を得ることができませんか? 私はかつてCo​​mmon Lispを学び始め、大学図書館から借りた本からほとんどすべての演習を読んで実行しました(Amazonでの人気が低いにもかかわらず、かなり良いことがわかりました)。しかし、しばらくして、簡単なことをするのに苦労しすぎた。本質的にもっと不可欠なものがあり、それらを機能的な方法でモデル化することが困難になると思います。 では、この新しいマルチコアの未来を利用するアプリケーションを構築するために、PythonはClojureと同じくらい強力ですか? セマフォ、ロックメカニズム、または他の同様の同時実行メカニズムを使用することは、Clojureの「自動」並列化に代わる優れた方法ではないと私は思います。

4
コミットプラクティスの改善について
私は自分のコミット方法を改善する方法を考えていました。 いいえとの間に相関関係はありますか?ソースコードの行となし。コミットの? 私が関わった最近のプロジェクトでは、1000行ごとに30回のコミットを行っていました。 プロジェクトの1つの典型的なファイルには、これらの統計があります language: JavaScript total commits that include this file: 32 total lines: 1408 source lines: 1140 comment lines: 98 no. of function declarations: 28 other declarations: 8 別のファイルにはこれらがあります... Language: Python total commits that include this file: 17 total lines: 933 source lines: 730 comment lines: 80 classes: …

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