問題タブ [code-migration]
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.
dependency-injection - インスタンス化を制御できないクラスを注入する最良の方法は?
私はGuiceにかなり慣れていないので、これが明白な質問ではないことを願っています...
C
リフレクションを使用してアプリケーションクラスの1つ(それを呼びましょう)を動的にインスタンス化するフレームワークを扱っているので、そのインスタンス化を制御することはできません。C
さらに、フレームワークがインスタンス化した後で新しく作成されたものにアクセスする簡単な方法はありません。これがどのC
ように見えるかです:
DIを使っC
て取得したいのですが。Dependency
これは明らかにシングルトンDependency
ですが、これは一般的にそうである必要はありません。
私は2つの可能な解決策を考え出しましたが、どちらも非常に整頓されているとは感じないので、専門家に聞いてみようと思いました。
静的注入。ただし、これがサービスロケーターのアンチパターンよりも大幅に向上するかどうかを確認するのに苦労しています。最終的には、外部から操作できる非最終的な静的フィールドになります...うーん。
C
フレームワークは、インスタンス化後に自身を初期化するためのフックをサポートしています(initialize()
上記の方法)。このメソッドは、セッターインジェクションを使用して新しく作成されたインスタンスをセルフインジェクトできます。
2の場合、これはより多くの外部変更可能性を意味すると思いますが、少なくとも単体テストなどの依存関係をもう少し明示的に公開します。問題は次のとおりです。その場合、どうすればGuice Injectorを手に入れることができますか(さらに別のサービスロケーターに依存することはできません)。また、アプリコード全体でインジェクターを明示的に参照することは疑わしい慣行であることも読みました(そして同意する傾向があります)。
あなたの洞察は本当にありがたいです。
どうもありがとう、
クリスチャン
c# - PowerBuilder/C++ アプリケーションを C#/WPF または Winforms に段階的に移植する
C++/Powerbuilder で記述されたレガシー アプリケーションを C# に移植する機会があります。このスプリントには、独立したダイアログを起動する機能があり、C++ から呼び出されるこの機能のマネージ実装用の CCW dll を作成する演習を行いました。マネージ DLL のビューに WPF を使用することにしました。これまでのところ、サンプル MFC アプリから WPF ウィンドウを起動するなど、マネージ DLl と相互運用できるので、とても良いです。
この戦略を推進する理由はいくつかあります。
- 10 年前のレガシ アプリの最近の再設計から生まれた、再利用可能な管理 DLL がたくさんあります。
- 私は C++ と比較して C# でかなりの経験を積んでおり、C++ では常に言語の構文とインテリセンスと戦っています。FWIW、私たちの会社はいくつかのツールに投資することでもっとうまくいくかもしれませんが、C++構文、ヘッダーファイル、およびアプローチの不一致に対する私の嫌悪感を実際に変えることはありません.
- 少なくとも私たちが開発する種類のアプリケーション用のデスクトップ アプリについては、C# が適していると思います。4.アプリを書き直す将来の計画があり、繰り返したくありません。したがって、この段階で、できる限り正しい設計を開始したいという誘惑にかられます。
- C++ のヘルプはあまりありません。
ただし、いくつかの懸念と質問があります。
この断片的なアプローチは進むべき道ですか?
パフォーマンスの観点からは、WPF ではなく Winforms と相互運用する必要がありますか? アプリケーションは GIS をホストするため、パフォーマンスが重要ですが、ThinkGeo の MapSuite をホストする別の WPF アプリケーションを開発したばかりで、非常にうまく機能します。主な違いは、レガシ アプリが WPF の従兄弟よりも GIS を多用することです。
WPF/Silverlight の運命についての最近の噂では、WPF を検討する必要がありますか? WPF/Silverlight が死んだ場合、デスクトップ アプリの代替手段は何ですか?
3.私を待っている落とし穴は何ですか?
これに関する考えやアドバイスは素晴らしいものです。これについてマネージャーと相談しますが、最初にあなたの考えや経験を聞きたいと思いました. ティア。
クラウス
編集:
申し訳ありませんが、アプリケーションは 10 歳であり、最初に述べた 25 歳ではありません。そこに少し混乱します。
compatibility - Ruby/Rails - ruby-mysql と mysql2 の両方での作業
非常に大きな Rails 2.3 アプリケーションを ruby 1.8 から 1.9 に移行しています。その過程で、古いruby-mysql
gem からmysql2
.
これは、すべてのActiveRecord::Base
ORM のようなクエリ (@users = User.find(:all, :conditions => {...})
など) で正常に機能しましたが、アプリケーションは、パフォーマンス関連の問題について、DB への直接クエリに大きく依存しています。次のようなものをよく見かけます。
また
また
このクエリは、主にそのために記述された指定されたクラス ファイルで行われることに注意してください。したがって、コントローラーやモデルなどではなく、主にapp_root/lib/
. また、古い宝石で使用したものと同等の機能を多く見つけることができないようです。良い例は#autocommit
like メソッドです (複数の INSERT などのバッチ クエリを有効にするため)。
mysql2
すべてのActiveRecord
ものとruby-mysql
データベースへのクライアントの直接接続のために、両方のgemを使用して移行をスムーズにしたいと思います。ただし、アプリの Gemfile に両方を含めると、Rails はデフォルトでどちらか一方に設定されているようです。アプリの読み込み時に Gemfile を含めるruby-mysql
だけで自動的に要求しないように構成する方法はありますか?
require 'mysql'
両方が存在することを確認し、古い宝石を厳密に使用したいファイルでのみ使用するにはどうすればよいですか? 私が取るべき他のアプローチはありますか?アプリ全体を一気に変換するのはかなり大きなリスクであり、私のチームが古いコードを Mysql から Mysql2 に適応させて移行する時間を確保したいと考えています。
ありがとう。
ef-code-first - コードの移行を伴うダブル テーブル
バックオフィスとフロントエンドの 2 つの部分で構成される大きなデータベースがあります。バックオフィスの部分はプロジェクトごとに変更されることはないため、ビジネスとデータのための独自のアセンブリがあります。
データ層には独自のコード移行がありDbContext
、BackofficeContext
. スキーマはBackoffice
フロントエンドも同じ構造で、独自のデータ層、独自のコード移行、およびDbContext
呼び出されFrontendContext
た . これはスキーマが異なりますFrontend
。
データベースでは、バックオフィスとフロントエンドに関連するテーブルが明確に分離されていることがわかります。これは私が望んでいるものです。
問題は 1 つだけです。の 1 つのテーブルにはFrontendContext
、 へのフィールドが含まれていますBackofficeContext
。
ユーザ テーブルは にありBackofficeContext
、UserChoises
テーブルは にありFrontendContext
ます。
のコード移行を実行するBackofficeContext
と、 のテーブルが作成されますUsers
。のコード移行を実行するFrontendContext
と、テーブルが作成されますが、UserChoises
テーブルも再度作成されUsers
ます。
このテーブルは移行ファイルから手動で削除できますが、新しい移行を行うたびに戻ってきます。
FrontendContext
を認識させる方法はありBackofficeContext
ますか?
entity-framework - Entity Framework コードの移行 - 最初の移行でスタックする
Nuget を介してプロジェクトに EF 5 を追加し、「Enable-Migrations」コマンドで移行を有効にしました。次に、"Add-Migration" を呼び出して、スキーマを生成するためのベース コードを生成しました。
次に、ドメイン オブジェクト ("TestProperty" と呼ばれる文字列プロパティ) の 1 つにプロパティを追加し、EntityTypeConfiguration ファイルにマッピングを追加しました (現時点では規則を無視しています)。
「Add-Migration」を再度呼び出すと、次のエラーが発生します。
ただし、「Update-Database」を呼び出すと、テーブルが既に存在するため、SQL 例外が発生します。
私の DbContext のコンストラクターでは、さまざまな更新戦略を試しました。
明らかな何かが欠けていますか?ここで解決策を試しましたが、うまくいきませんでした: ASP.NET の自動移行
ありがとう
編集: 更新 最初のステップを通過するための鍵は、最初の移行を作成し、生成されたコードを Up メソッドと Down メソッドから削除することです ( http://thedatafarm.com/blog/data-access/using-ef-migrations- with-an-existing-database/ )。
次に、モデルと EF マップを更新して、Add-Migration を実行します。これにより、正しいアップ コードとダウン コードを含む移行が生成されます。
問題は、更新を適用しようとすることです。Update-Database は、「保留中の変更があり、自動移行が無効になっているため、現在のモデルに一致するようにデータベースを更新できません...自動移行です。自動移行を有効にするには、DbMigrationsConfiguration.AutomaticMigrationsEnabled を true に設定します。Add-Migration を使用できます。保留中のモデルの変更をコードベースの移行に書き込むコマンド」. わかりましたので、もう一度 Add-Migration を試してみると、最後の移行とまったく同じコードで別の移行が生成されます。
Update-Database を実行すると、同じエラーが再び発生します。「Update-Database -TargetMigration 201304080859556_MyMigration -Force」を試してみましたが、「指定されたターゲット移行 '201304080859556_MyMigration' が存在しません。ターゲット移行が既存の移行 ID を参照していることを確認してください」が生成されます。
非常にイライラします!
ef-code-first - Code First: UserData と User テーブル
Code First と Code Migrations に問題があります。
User クラスと UserData クラス (姓名などのオプション情報を含む) がありますが、'Add-Migration' または 'Update-Database' コマンドを実行しようとすると、いくつかのエラーが発生します。
User クラスを作成しました。
および UserData クラス:
このセットアップでは、次のエラーが表示されます。
テーブル 'Users' に複数の ID 列が指定されています。テーブルごとに 1 つの ID 列のみが許可されます。
「Update-Database」を実行しようとしたとき (「Add-Migration」コマンドは正常に実行されます)。
既に UserData.cs に と を追加しようとしpublic User User { get; set; }
ましpublic int UserID { get; set; }
たが、「Add-Migration」コマンドでエラーが発生します。
タイプ 'UserData' と 'User' の間の関連付けのプリンシパル エンドを特定できません。この関連付けのプリンシパル エンドは、リレーションシップ fluent API またはデータ アノテーションのいずれかを使用して明示的に構成する必要があります。
これを修正する方法はありますか?
前もって感謝します。
entity-framework - ナゲット経由の参照 dll での EF コードの移行
状況があります。弊社では.net上にフレームワークを構築しており、そのフレームワークを利用して開発された製品で利用されています。現在、このフレームワークは最初に EF コードを使用しています。エンティティがフレームワーク プロジェクトの 1 つにあるため、生成された移行定義を使用して EF コード移行を実装したいと考えています。だから私はそれを実装しました。しかし、状況はこのフレームワークであり、Nuget パッケージ (内部) として他の製品に配布しています。
ここで、ProductAが、移行が有効になっている xyz.dll を含むパッケージを使用しているとします。「ProductA」の開発者は、最初にその xyz.dll 移行を使用してフレームワーク EF コードによって作成されたデータベースをアップグレードしたいと考えていますが、この dll は参照される dll としてのみ追加されます。プロジェクトが現在のソリューションになく、その参照dllにあるため、Update-Databaseなどのパッケージマネージャーコンソールでコマンドを実行しても機能しません
これを解決するにはどうすればよいですか?
javascript - Javascript % に相当する PHP
サーバー側で実行できるように、これらの関数http://www.movable-type.co.uk/scripts/latlong.htmlを PhP に変換しています。
私はJavascriptで次のコード行を持っています(行201)
これまでのところphpで私は持っています
%
ただし、それが Javascript で何を表し、PHP への同等の変換が何であるかはわかりません。
任意の洞察をいただければ幸いです。
ありがとう