問題タブ [forward-compatibility]
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 - このハックは T4 の定義済みの動作ですか?
私は最近、かなり複雑な T4 クラスの単体テストを行うための遠征に着手しました。私は大きなブレークスルーに到達しましたが、観測された動作は偶然にすぎない可能性があることを恐れています (つまり、Visual Studio の将来のバージョンで壊れる可能性があります)。
私は基本的に次のようなものを持っています:
MainTemplate.tt:
そして、 generator.tt.cs に私は持っています
これの観察された動作は、宣言されたクラスなどを T4 テンプレートから使用し、コード ファイルを通常どおりコンパイルできることです。ただし、すべての定義された動作でタグ<#+
とタグの前にコメントを付けていますか? #>
将来、この破損のリスクがありますか?
また、MonoDevelop と Visual Studio 2012 の両方でこれをテストしました。両方で動作するようです。ただし、Visual Studio 2008 との互換性は私にとって重要ではありません。
.net - 3.5 から 2.0 への .NET Framework の上位互換性
.NET フレームワークの特定のバージョン間の上位互換性に関する確かなアドバイスを探しています。
わかりやすくするために、.NET 2.0 のみをサポートし、ストアド プロシージャを含む v3.5 アセンブリとそのすべての v3.5 依存関係を読み込む SQL Server 2008 について話しているとします。
一方では、.NET フレームワークのほとんどが下位互換性があることがわかっています。また、前方互換性はフレームワーク 1.1 でのみサポートされて
おり、それ以降はサポートされていない こともわかっています。ただし、フレームワーク 2.0、3.0、および 3.5 の CLR バージョンは同じで、 CLR 2.0 です。
これらの事実はどのように組み合わされますか?
「CLRは同じ」という事実は勝つのですか?CLR のバージョンは 3 つの FW バージョン間で同じであるため、v3.5 のコードを v2.0 環境に安全に導入できると言えますか? どのような場合に、「前方互換性はサポートされていません」という通知を、一般的なケースでは真実であるとして却下できますが、v3.5 と v2.0 の関係の特定のケースでは真実ではありませんか?
(実際に、すべての依存関係を含む v3.5 アセンブリを SQL Server 2008 にインポートしようとしました。動作します。しかし、それが動作する必要があるため、または壊れやすい魔法のために動作するかどうかを知りたいです。)
python - Python 3.2 プログラムに Python 3.3 from None 例外構文を適切に含めるにはどうすればよいですか?
実際のエラーに関するより良い情報をユーザーに提供するために、例外を再発生させようとしています。Python 3.3 にはPEP 409が含まれています。raise NewException from None
元の例外のコンテキストを抑制する構文を追加します。
ただし、Python 3.2 をターゲットにしています。Python スクリプトは解析しますが、実行時にfrom None
構文に遭遇すると生成さ れTypeError: exception causes must derive from BaseException
ます。例えば:
にカプセル化raise e_reraise from None
するとtry
、さらに大きな例外スタックトレースが生成されます。python3.3
私のXubuntu 12.10は/usr/lib/python3/dist-packages/*
、python3.2モジュール用にセットアップされたモジュールをプルするため、バージョンチェックも機能しません。(大規模なトレースバックError in sys.excepthook:
を作成する便利なものを取得します。)
Python 3.3 で実行しているときに PEP 409 機能を使用し、Python 3.2 では黙って無視する方法はありますか?
c# - 下位互換性と下位互換性を備えたプラグインアーキテクチャ
私は現在、プラグイン型システムを使用するC#製品に取り組んでいます。これは目新しいことではなく、インターフェイスを使用してこの機能を非常に簡単に実装する方法について多くの情報を見てきました。
また、インターフェイス名を更新することで下位互換性を実装する方法も確認しました。例:バージョン間のインターフェイスの変更-管理方法は?
メインのexeとプラグインの間のバージョンの不一致に関して、私たちの製品で予測できるシナリオは複数あります。
- メインプログラムプラグインと同じプラグインバージョン
- プラグインより新しいメインプログラム
- プラグインより古いメインプログラム
情報から私は1と2の仕事をうまく集めることができました。しかし、「上位」互換性(3)を正しく実装する方法を理解できていません。
プラグインAPIにメソッドを追加することだけが私たちの意図です。
どんなアイデアでも大いに役立ちます。
.net - 同じクラス ライブラリへの複数の参照
2 年前に、たとえば .NET クラス ライブラリを作成したとします。このmylib.dll
ライブラリは、foo.dll
オープン ソース化され、MIT ライセンスを取得している .
多くの顧客が、私のライブラリとその依存関係アセンブリを使用していました。パッケージmylib.dll
付きでしたfoo.dll
。
日が経ち、 の作成者はfoo.dll
API を壊し、今では新しいバージョンのライブラリをデプロイしました。この新しいバージョンには、古いバージョンに含まれていた型のほとんどが含まれていますが、一部のメソッドが欠落しているか、変更されています。
問題
foo.dll
一部の潜在的な消費者は、自分のアプリケーションで新しいバージョンを既に使用しています。私がそれらを供給するmylib.dll
と、彼らはそれを使用できません。古いメソッドとシグネチャを備えmylib.dll
た古いバージョンの が必要なため、ビルドを成功させることさえできません。foo.dll
この問題を克服するにはどうすればよいですか?
この問題が再び発生しないように、前方互換性のあるソリューションが必要です。だから私はいくつかのことを考えました:
- の新しいバージョンを使用するようにソース コードを更新します
foo.dll
。しかし、それには多くの手間と時間がかかります。さらに、この問題はいつか再び発生する可能性があるため、前方互換性はありません。 - の正確なバージョンのソースを持っているので
foo.dll
、名前空間を簡単に変更して全体を再構築できるかもしれません。このようにして、自分のバージョンの を楽しむことができます。これfoo.dll
はライセンスが MIT であるため合法です。変更されたアセンブリmylib.foo.dll
などに名前を付けることができます。ILMerge
のようなものを使用して全体をマージすることもできmylib.merged.dll
ます。 mylib.dll
必要な機能foo.dll
がインターフェースと実装に分離されるように再設計します。エンジニアリングに関しては、これが最も洗練されたソリューションです。時間的には大惨事であり、真の解決策とは言えません。
私の質問
上記の #2 を達成するために、特定のソース コードの名前空間を変更する簡単な方法はありますか?
javascript - E4x がサポートされなくなった後、グリースモンキー スクリプトを変換する
非推奨の E4X を使用するこのスクリプトを変換するにはどうすればよいですか?
私はプログラマーではありませんが、どこから始めればよいか説明していただければ、最善を尽くします。
最初は、CDATA の問題ではないようです...
ここに Buggzilla のリンクがあり、私の問題を説明しています: Firefox 17 は E4X に依存する Greasemonkey スクリプトを壊します (新規: Firefox 21 はそのサポートを完全に削除します)
ここで、E4x が使用されている最初のインデックスを取得します (コード「ricCB」で検索)。
最初にここに投稿 : 何かが更新された後、Greasemonkey スクリプトが機能しなくなった
internet-explorer - IE11を検出する方法は?
IE を検出したいときは、次のコードを使用します。
しかし、IE11 は「Internet Explorer を使用していません」と返します。どうすれば検出できますか?
debugging - Internet Explorer 11 には null レコードセットがあります
XML データ バインディングを使用する従来の ASP アプリがあります。IE9 エミュレーション設定では、バージョン IE10 まで正常に動作します。しかし IE11 では、レコードセットは常に null です。ただし、値は #DATASRC および DATAFLD を使用して入力フィールドに正しくバインドされます。recordset.absolutePosition を介して特定のレコードにアクセスしようとすると、爆撃します。データ バインディングが機能しているように見えるので、データの特定の行を指定する方法が必ずあるはずです。