ソフトウェア工学

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

4
ファイルとフォルダのスーパーセットを表すWord [終了]
休業。この質問は意見に基づいています。現在、回答を受け付けていません。 この質問を改善してみませんか?この投稿を編集して、事実と引用で回答できるように質問を更新してください。 4年前休業。 ファイルとフォルダの両方を表すことができるクラスの名前を考え出そうとしています。誰もがこれについての言葉を知っていますか?
10 naming 

4
ライブラリの分離を可能にしながら、多態性動作の設計パターン
Itemクラスの階層があるとしましょう:Rectangle, Circle, Triangle。それらを描画できるようにしたいので、私の最初の可能性はDraw()それぞれに仮想メソッドを追加することです: class Item { public: virtual ~Item(); virtual void Draw() =0; }; ただし、コアライブラリには基本的な表現しか含まれていないのに、描画機能を別のDrawライブラリに分割したいと思います。私が考えることができるいくつかの可能性があります: 1-のDrawManagerリストを受け取り、何をすべきかを計算Itemするdynamic_cast<>ために使用する必要がある: class DrawManager { void draw(ItemList& items) { FOREACH(Item* item, items) { if (dynamic_cast<Rectangle*>(item)) { drawRectangle(); } else if (dynamic_cast<Circle*>(item)) { drawCircle(); } .... } } }; これはRTTIに依存し、1つのクラスが階層内のすべての項目を認識するように強制するため、理想的ではありません。 2-もう1つのアプローチは、描画の責任をItemDrawer階層に任せることです(RectangleDrawerなど)。 class Item { virtual Drawer* GetDrawer() …


3
65535という数字に何か特別なものはありますか?
2¹⁶-1&2⁵=2⁵(または?明らかに?) 今日、開発者がビット単位の65535&32とは何か、つまり2¹⁶-1&2⁵=と尋ねた。最初は自発的に32と思っていましたが、数分考えて32と答えると簡単に思えました。32が正解だったようですが、どうですか。65535 =2¹⁶-1= 1111111111111111(ただし、この2進数はすべて-1(?)である必要があるため、正しくないようです)、32 = 100000ですが、変換できませんでした。何かに答える。答え32は実際には取るに足らないものですか?同じように2¹⁶-1&2⁵-1= 31ですか?開発者が正確に65535について質問したのはなぜですか? 私に評価を求められたバイナリは1111111111111111&100000でしたが、1111111111111111が-1ではない理由がわかりません。-1にすべきではありませんか?65535はオーバーフローを引き起こす数値であり、どうすればそれを知ることができますか?

3
ジェネリックスと型消去
Javaのジェネリックスは型消去を使用して実装されます。JLS は、インスピレーションは後方互換性であったと言います。一方、C#のジェネリックはreifiableです。 理論的には、ジェネリックスを「消去」または「復元可能」として持つことの利点と欠点は何ですか? Javaは何かに欠けていますか?

1
Node.jsまたはサーブレット?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 4年前休業。 私はJavascriptサーバー側言語、つまりNode.jsについて多くのことを聞いて読んだり、Nodeを支持する多くの比較を見たりしました。 何がそれを良くしたり速くしたりするのか、あるいはそれがJavaサーブレットのように成熟したものとどのように関係しているのかも理解できません。 ただし、サーブレットは、Node.jsとは対照的に、マルチスレッドのプログラミング言語の上に構築されています。では、node.jsをどのように高速化できますか? 1000Kのユーザーがデータベースレコードをクエリすると仮定すると、Node.jsがサーブレットよりも遅くなることはありません。 また、サーブレットはNode.jsに比べてセキュリティが優れていませんか?

3
プログラマは1日にどれくらい集中できますか?[閉まっている]
現在のところ、この質問はQ&A形式には適していません。回答は事実、参考文献、専門知識によって裏付けられると期待していますが、この質問は、議論、議論、投票、または拡張ディスカッションを求める可能性があります。この質問を改善でき、再開できると思われる場合は、ヘルプセンターにアクセスしてください。 7年前休業。 あり、この質問(今のように閉じられている建設的ではない一日あたりの平均生産性について尋ねました)。 私の質問は、プログラマーの生産性に関する科学的研究はありますか?月曜日から金曜日まで一貫して8時間の質の高いプログラミング作業を行うのは非常に難しいと感じざるを得ません。もしそうなら、これを調査する文献はありますか?

3
データベースアクセスをカプセル化するにはどうすればよいですか?
データベースアクセスの管理に使用される適切なクラス構造の例は何ですか?私はクラスカプセル化のファンであり、データベースタスクを実行しないようにコンテナ(車など)を好みます。 また、将来的にはデータベースキャッシュなどを簡単にドロップできる機能も必要です。 私はしばしば、単一のシングルトンクラスによって実行される検証とデータベースアクセスのためのゲッターとセッターを備えたコンテナークラスのパターンを採用しています。そうは言っても、これはしばしば2つの間で混合され、かなり混乱します。 私の質問が理解しにくい場合は申し訳ありません。データベースに関する条件については、はっきりとはわかりません。必要に応じて、遠慮なく説明を求めてください。
10 c++  database 


2
データをキャッシュするか、データベースにヒットする必要がありますか?
私はキャッシュメカニズムを使用していないので、次のシナリオで.netの世界で私のオプションは何なのかと思っていました。 基本的に、ユーザーがカテゴリー(フォルダーと考える)のIDを渡すRESTサービスがあり、このカテゴリーには多数のサブカテゴリーがあり、各サブカテゴリーには1000のメディアコンテナー(ファイル参照オブジェクトと思う)があり、 NASまたはSANサーバー上にある可能性のあるファイル(この場合、ファイルはビデオです)。これらのカテゴリ間の関係は、いくつかの権限ルールとサブカテゴリに関するメタデータとともにデータベースに保存されます。 したがって、UIの観点からは、遅延して読み込まれたツリーコントロールがあり、これはユーザーが各サブフォルダーをクリックすることによって駆動されます(Windowsエクスプローラーと考えてください)。ビデオファイルのURLにアクセスすると、ビデオを見ることができます。 システムが成長するにつれて、ユーザー数は1000に増加し、サブカテゴリとビデオは10000になる可能性があります。 問題は、各リクエストがデータベースにヒットする現在の動作方法を続行する必要があるか、それともデータのキャッシュについて考える必要があるかです。 IIS 6/7とAsp.netを使用しています。

2
Key-Valueストレージのアイテムを期限切れにするアルゴリズムは何ですか?
現在のKey-Valueストレージがアイテムの「有効期限」を実装する方法について考えていました。現在、私は私の心の中に2つのバリアントを持っています: それらは何もしません(期限切れのデータを保持します)。たとえば、何らかのキーでGETした場合にのみチェックします。ここでの問題は、メモリが限られている場合、期限切れのアイテムが削除されないことです。 それらは、「期限切れが最も早い」ことを可能にするために追加のデータ構造を保持します。私はそれがこのようなものでできることがわかります: storage_data = dict(key -> [value, expire_timestamp]) expire_tree = SomeBinaryLikeTree(expire_timestamp -> [keys])

3
Javascriptは、本来の目的で設計されたものを超えて開発されましたか?
私は、Javascriptの目的、いつ、どのように使用するべきかなどについて友人と話していました。彼は次のように述べています: JavaScriptは、HTMLページにインタラクティブ機能を追加するように設計されました [...] JavaScriptはHTMLデザイナーにプログラミングツールを提供します HTMLの作成者は通常プログラマーではありませんが、JavaScriptは非常に単純な構文を持つスクリプト言語です!ほとんど誰でも、HTMLページにコードの小さな「スニペット」を挿入できますJavaScriptはイベントに反応できます JavaScriptは、ページの読み込みが完了したときや、ユーザーがHTML要素をクリックしたときなど、何かが発生したときに実行するように設定できます。JavaScriptはHTML要素を読み書きできます。 JavaScriptはHTML要素のコンテンツを読み取って変更できますJavaScriptを使用してデータを検証できます JavaScriptを使用して、フォームデータをサーバーに送信する前に検証できます。これにより、余分な処理からサーバーを節約できます JavaScriptを使用してビジターのブラウザーを検出できます-JavaScriptを使用してビジターのブラウザーを検出でき、ブラウザーによっては、そのブラウザー用に特別に設計された別のページをロードできます。 JavaScriptを使用してCookieを作成できます-JavaScriptを使用して、訪問者のコンピューター上の情報を保存および取得できます。 ただし、Javascriptは最近よりも多くのことに慣れているようです。私の友人もJavaScriptのOOP機能の使用に反対し、「データを処理するのではなく、検証するだけでよい」と主張しています。Javascriptは、データの検証とWebページで派手なグラフィックの作成に本当に制限されていますか? 彼はさらに「JavaScriptを介してデータベースにアクセスすることを試みてはならない」と主張し、「一般的にJavaScriptでの重い作業をしたくない」とも述べています。私は彼の意見に同意することはできませんが、これについてもう少し入力をお願いします。 だから、私の質問:Javascriptは上記の定義からより強力なものに進化しましたか、それを使用する方法は変更されましたか、それとも私はただ間違っていますか?これは主観的な質問だと思いますが、それ以上の情報は見つからないので、他に何もないとしても、いくつかのリンクが良いでしょう。私は議論を求めているのではなく、答えを求めています。
10 javascript 

7
RDFS / OWLとXMLの違いは何ですか?
メタデータを管理および作成するためにタグ付け/マークアップシステム(http://www.schema.org/など)を使用する場合に比べて、RDFS / OWLのオントロジー言語にはどのような利点があるのでしょうか。

9
言語/フレームワーク/テクノロジーが「将来性がある」かどうかの判断
私はPHP開発者で、最近CodeIgniterを使い始めました。CodeIgniterに関連する何かを検索するときはいつでも、ブログの投稿と通常は'09または'10のものではないので、考えさせられました。それに代わる別のフレームワークはありますか? 他の言語やフレームワークについても同様です。特定の言語またはフレームワークの学習をどの時点で中止しますか?新しく登場し、取り上げる価値のあるものを見つける簡単な方法はありますか?

6
スレッドは仮想メモリまたは実メモリを使用しますか?
Linuxサーバーを最適化して、プロセスごとに10,000スレッドを処理しようとしていましたが、現在は382スレッドしか処理していません。あたりとして、この記事で、次の式は、可能な全スレッドを調べるために使用されます。 number of threads = total virtual memory / (stack size*1024*1024) つまり、スレッドはすべてのデータを仮想メモリに格納します。そして、私の知る限りでは、仮想メモリは、RAMやキャッシュではなくハードディスクに保存されているLinuxマシンのスワップスペースです。 だから私の質問は、スレッドがデータを処理/格納するために格納するためにハードディスクを使用するかどうかです。 はいの場合、これはパフォーマンスに影響しませんか?それらをRAMまたはキャッシュに置くことでパフォーマンスを向上させることはできますか?どうやって? いいえの場合、スレッドはどのように機能しますか? 更新: 役に立たないの答えによると、仮想メモリは大まかに構成されたシステムです: 物理メモリ(RAM) アタッチしたスワップファイル 仮想アドレスが物理メモリで使用できない場合に仮想アドレスを物理アドレスに変換し、ページフォールトを発行するためのハードウェアサポート (カーネル)ソフトウェアサポート:ハードウェアが使用するルックアップテーブルを管理し、必要に応じてスワップからページをプルすることにより、これらのページフォールトを処理します。 したがって、仮想メモリ上にあるものはすべて、RAM(実メモリ)とハードディスク(スワップファイル)にまとめられます。そしてとしてジェームズ彼の答えの中で説明 HDDは、このようなLRUなどalgorithimsを使用してカーネルによって取られる対ラムの決定。

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