問題タブ [project-structure]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 重複することがある複数のプロジェクトの SVN プロジェクト構造と分岐戦略
私は、4 人の小さなチームのために、堅実な SVN リポジトリ構造と分岐戦略を考え出そうとしています。常に 4 つのメジャー プロジェクトといくつかのマイナー プロジェクトが開発中であり、プロジェクト間で重複することがよくあります。私たちの現在の戦略は完全に非効率的であり、これらの各フォルダー (約 15 程度) を 1 つのバージョン管理された「トランク」フォルダーの下に配置することで構成されています。これは、分岐するたびに、15 のプロジェクトすべてを分岐することを意味します (作業コピーを更新して分岐をプルダウンし、全体像を把握するのに約 20 分かかります)。
主な懸念事項は、一部のプロジェクトが重複していることです。機能やタスクがプロジェクト A とプロジェクト B で何かを変更する必要があることは珍しくありません (これらのプロジェクトはすべて同じデータベースと通信し、同じデータベース テーブルを使用します。さらに、プロジェクトはすべて、基本的に 1 つの「傘」アプリケーションの関連部分であるため、1 つのプロジェクトでクラスを変更すると他のプロジェクトに影響を与えるように、ビジネス層を共有します。例として、主要なプロジェクトには基本的に次のようなものがあります。
- プロジェクトA:フロントエンドECサイト
- プロジェクト B: バックエンド フルフィルメント/管理システム
- プロジェクト C: フロントエンド サイトのノーブランド コピー (同じものから CSS スタイルを除外し、機能を減らしたもの)
- プロジェクト D: Web サービス API
A と B は絡み合っていますが、B はサービスとしてのソフトウェア アプリケーション (当社が独自のクライアントとして機能) であり、C は顧客のフロント エンドです (A は自社のフロント エンドとして機能します。C は本質的に機能が少なく、会社固有の詳細がない)。D はクライアントのみがアクセスしますが、私の最終的な目標は、A、B、および C のすべてが Web サービスを介して D の機能を使用することです (基本的には、私たち自身のドッグフードを食べます)。
3 週間の展開戦略 (3 週間ごとに運用展開を行うことを意味します) を使用することを決定したところですが、現在の SVN 戦略は扱いにくく、分岐が非常に苦痛になります。
複数のプロジェクトが重複している場合、それらすべてをブランチ/タグ/トランク形式の 1 つのプロジェクト フォルダーに保持することは理にかなっていますか?それとも、それらを個別のプロジェクトとして扱うべきですか? たとえば、SaaS のフロントエンド/バックエンドを一緒にして、独自のサイトと Web サービスを分離するなど、いくつかを組み合わせることができますか?
同様のプロジェクトに携わる人々からの提案やアドバイスは素晴らしいものです。
entity-framework - EF/Silverlight アプリケーションのプロジェクト構造
私は現在、新しいプロジェクトで不要な作業を避けるために、3 層ソリューションの適切なプロジェクト構造を見つけることに取り組んでいます。
プロジェクトは、コア製品で構成されます。
- EF コードの最初のモデルを保持するモデル プロジェクト
- サーバー上にビジネスロジックと通信ロジックを持つプロジェクト
- クライアント上のリポジトリ プロジェクト
- ビューとビュー モデルを含む Silverlight プロジェクト (ここでは caliburn.micro を使用します)
問題は、顧客が上記のすべてのプロジェクトの変更につながる可能性のある特別な要件を持つ可能性があることです。そこで、基本構造をそのまま使用して、同じ構造を顧客に作成できると考えました。変更がない場合は、基本クラスを拡張して何も追加しない空のクラスしかありません。
これにより、次の問題が発生します。
- 1 つのプロジェクト (既に完全に機能している) に基底クラスを持ち、モデル クラスを新しいフィールドで拡張する可能性のある別のプロジェクトを持つことは、Entity Framework (コードが最初) の問題ですか?
- ユーザー コントロールを変更するのは XAML の問題ですか? たとえば、コアに 5 つのテキスト ボックスで構成されるユーザー コントロールがあり、2 番目のボックスをラジオ ボタンに変更したいが、それ以外は何もしないとします。
顧客固有の変更を処理するためのより良い方法があれば、プロジェクト構造の変更も受け入れます。
編集:問題を解決するには、おそらく次のアプローチを使用します。
エンティティ フレームワーク:
コードを最初に使用すると、あるモデル プロジェクトを別のプロジェクトに拡張することが可能になるようです。これは、次のように書くことができることを意味します。
その作業を行うために必要なのは、DbContext 内の行だけです。
XAML
XAML で同様の動作を得るには、Caliburn.Micro (MEF と組み合わせて) を使用する必要がありました。これはここで非常に役立ちます。
MEF を使用して動的にフェッチされる ContentControl 要素を含む UserControls を作成します。つまり、すべてのビューと ViewModel を含むコア プロジェクトが再びできたことになります。顧客のためにどこかで特別なコントロールを交換する必要がある場合は、コントロールを ContentControl に変更し、そのためのコア ビューと ViewModel を作成します (これは、変更要求の前と同じです)。ContentControl のこの ViewModel には、エクスポート インターフェイスと ExportMetadata で注釈が付けられ、優先度 1 が設定されます。次に、コア コントロールの代わりに他のコントロールを持つ別の UserControl を使用して別のプロジェクトを作成し、同じインターフェイスを持つエクスポートとして再度注釈を付けますが、優先度を高く設定すると、顧客固有のコントロールが読み込まれます。
これの短い例:
メイン ユーザー コントロールとビュー モデル:
コア コントロール:
顧客固有の制御:
エクスポート インターフェイス:
ExportMetadata インターフェイス:
私はこれを使用して質問に答えました。これは、同様の問題をすでに解決している可能性のある他の人々からの意見にまだ興味があるからです。
c++ - C++プロジェクトを編成する方法
プロジェクトの編成に関して、C++のベストプラクティスとは何かを知りたいです。すべてのソースファイル(.cpp)をsrcフォルダーに配置し、ヘッダーファイル(.h)をインクルードフォルダーに配置する必要があることを読みました。想定どおりですか、それともヘッダーファイルをソースファイルフォルダーに配置する必要がありますか?
これは私のフォルダツリー構造です
asp.net - UI はリポジトリを参照する必要がありますか?
4 つのアセンブリがあります。UserInterface、BusinessLogic、DataAccess、Common。
ユーザー インターフェイスは DataAccess にあるリポジトリを参照しますが、それは悪い習慣ですか? UserInterface が DA アセンブリに結合されないように、BusinessLogic でパススルー メソッドを作成する必要がありますか?
BusinessLogic メソッドが関連する Repository メソッドを呼び出すだけの場合でも?
それとも私はペンダントですか?
factory-pattern - OOD - メイン アプリケーションの再デプロイを回避するためにプロジェクトを設計および構造化する方法 (ファクトリー パターン?)
ファクトリパターンの使用と実装に関する私の理解を確認したいと思います。いくつかのゲーム (チェス、ポーカー) をプレイするアプリケーションを設計しているとします。ゲームは、CSV、XML のいずれかのソースからロードされますが、アプリケーションを再コンパイル/再展開せずに新しいソース (DB など) を追加する機能が必要です。ファクトリ ロジックと新しいローダーを展開したいだけです。
これは、ゲーム ローダーのファクトリ パターンを示唆しています。次のようなものですが、具体的なローダーがリストを返すため、循環依存が発生します。
私が見つけた解決策は、ゲーム、チェス、ポーカーを移動する新しいプロジェクト Application.Model を作成することです。ecc そうすれば、Application.prj と Factory.prj は Application.Model だけを参照する必要があります。また、DB ソースを追加するには、factory.prj の再コンパイルとデプロイのみが必要です。
これは行く方法ですか?または、ファクトリ パターンを実装して同じ結果を得る方法はありますか。反省したくない。
django - Djangoプロジェクトのフォルダの名前を変更しましたが、古い名前が残っています
一般的なDjangoプロジェクトの構造について詳しく読んだ後、「media」フォルダーの名前を「static」に変更しました。これは、WebアプリのCSS、javascript、および画像が含まれており、ユーザーがアップロードしたファイルがないためです。ただし、私のプロジェクトは新しいディレクトリを見つけられず、ファビコンは引き続き提供されており、localhost:8000 /media/images/favicon.pngの古いディレクトリからダウンロードできます。
私のテンプレートでは、次のようにcss/jsファイルに直接リンクしています。
また、urls.pyでは何も面白いことが起こっていません:
何か案は?
編集
何らかの理由で、urls.pyがDjangoアプリのすべてのURLを解決する必要はないと思いましたか?何を考えているのかよくわかりません...とにかく、ドキュメントに従ってコードに適切な変更を加えましたが、それでも機能させるのに問題があります。
settings.py
urls.py
レンプレート
私が今何を間違っているのかわかりません...STATIC_ROOT
コードをウォークスルーすると、正しく解決されているようです(「static」フォルダーはsettings.pyと同じディレクトリにあります)。
編集2
https://docs.djangoproject.com/en/dev/howto/static-files/#serving-static-files-in-developmentに従って、 urls.pyを次のように変更しました。
まだ運がない。
java - すべてのパッケージに対して Java クラスを 1 回インポートする
たとえば、次の構造があるとします。
- src.main.java
- 最初
- one.java
- 2.java
- three.java
- 2番目
- alpha.java
- beta.java
- ガンマ.java
- 最初
first
パッケージのすべてのクラスをパッケージ内のすべてのクラスにインポートしたいsecond
。
今、私はsecond
パッケージ内のすべてのクラスを指定しています:
パッケージ内のすべてのクラスを一度にインポートできますか?
django - 新しい Django 1.4 プロジェクト構造のユースケースは?
これは、django 1.4 で django アプリを作成する必要がある場所に対するフォローアップの質問のようなものだと思います。 最終的な答えは、「Django がプロジェクト構造を変更した理由を誰も知らない」というものでした。これは少し物足りないようです。
新しい Django プロジェクトを開始しています。現在、http : //www.deploydjango.com/django_project_structure/index.html で概説されている基本構造に従っています。
しかし、共通のプロジェクト レベル コンポーネントを備えた大部分が独立したアプリケーションで構成されるマルチ開発者環境も想定していると思います。そのため、プロジェクト パスとアプリ パスを分離した方がすっきりしているように思えます。
ただし、これについて特定の非様式的な論理的根拠を考え出すのは困難です. (私はこれまで主に単一アプリのプロジェクトしか扱っていなかったので、ここで何かが欠けている可能性があります。)
主に、私は Django 1.4 が後者の方向に進んでいるように見えるという事実に動機付けられています。この変更の動機となった理論的根拠または予想されるユースケースがあると思いますが、それが何であるかについては憶測しか見ていません。
質問:
- 1.4 プロジェクト構造の変更の動機は何ですか?
- プロジェクトの内外にアプリを配置することで重大な影響が生じるユースケースはありますか?
android - すべてのサードパーティ ライブラリを使用したバージョン管理の Android/Eclipse プロジェクト
これが取引です。Facebook SDK と Chris Banes の PullToRefreshListView に基づいてアプリを開発しているとしましょう。SDK を自分のワークスペースにインポートし (ワークスペースがいっぱいになるのであまり好きではありません!)、アプリでライブラリとして参照します。PullToRefreshListView にいくつかの変更を加えています。たとえば、カスタム フォントを追加したり、ラベルの 1 つの色を変更したりします。
現在、Git を使用してプロジェクトのバージョン管理を行っています。プロジェクトを Git サーバーに配置し、同僚がプロジェクトをプルして、同じ SDK (私が使用したのと同じバージョン) をセットアップして参照するのに苦労することなく作業できるようにしたいと考えています。プロジェクト。ライブラリの 1 つにいくつかの変更を加えたので、コードを提供しないと、別の人がプロジェクトを完全に復元することはできません。
- このような場合、どのように行動すればよいでしょうか?
- コンパイルされていないライブラリを libs フォルダなどに置くことはできますか?
- そうでない場合、これを達成する正しい方法は何ですか?
グーグルまたはスタックオーバーフローを検索するときに見つけることができるのは、libsフォルダーでコンパイルされた.jarファイルを使用する方法です。これは良いですが、探しているものではありません。
基本的に、サードパーティのライブラリを使用してプロジェクトを構築する良い方法を探しています。