問題タブ [backport]
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.
java - Java 1.5+ から 1.4 へのバックポート
次の 1.5+ コンストラクトを 1.4 に書き直す方法は?
python - Python 3.3 から 2.7 への機能のバックポートとモンキーパッチに関する実際的な考慮事項
python3.3 で導入された新しい smtplib 機能に興味があります:マルチホームマシン (または複数の IP アドレスを持つマシン) で特定の IP アドレスにバインドする機能です。
私が使用したい多くのビルディング ブロックは 3.3 に移植されていないか、ポートが非常に不安定であるため、この機能のためだけに 3.3 を使用するという考えは実用的ではありません。
この機能をバックポートするために、パッチまたはモンキーパッチを適用できます。私は smtplib.SMTP をサブクラス化し、基になるソケットにモンキーパッチを適用する傾向があります。これは、展開を簡素化し、基本クラスに影響を与える可能性が低く、政治的に正しいバックポートよりも簡単だからです。
Ruby の世界では、モンキーパッチはより容認されていますが、ほとんどの Python サークルでは、この危険ではあるが頻繁に役立つ手法は嫌われています。
私の質問は次のとおりです。そのような決定に直面したことがありますか、またはアドバイスを共有したいと思いますか?
(各アプローチの長所と短所に興味があります)
[アップデート]
pps 実際には、もう少し考えてみると、モンキー パッチは既存のクラスをインプレースで何らかの方法で変更することを意味し、標準の場所からロードするときに新しいコードが呼び出されることを常に想定していました (認めざるを得ませんが、今考えてみると、方法がわかりません)あなたはこれを行うことができます)。それは私がここで提案していることではありません - このサブクラスは、私自身のコードでのみ使用される、私自身のモジュール内の新しいクラスになります。【アンドリュー・クック】
アンドリュー、時間を割いて答えてくれてありがとう。このようにすれば、SMTP.connect コードをいくつかフォークすることになり、元のライブラリが更新されたときにフォークしたコードに変更が反映されないため、眉をひそめられます。私は mokeypatching をより外科的なものと考えていますが、そのような更新は、monkeypatched コードの周りにリファクタリングがある場合、コードを壊す可能性もあります。私のジェダイ マスターをフォークするか、モンキー パッチを適用するかのどちらかが好きではありません。彼らが導くダークサイドに。:-)
[アップデート]
最後に、送信 IP アドレスを選択できる拡張 EHLO 構文を受け入れる SMTP プロキシを作成しました。
twistedを使用するとSLOCは 40 未満でした。twistedはネットワーク コードにとって驚くべきものであり、別のプロセスを実行することを犠牲にして、2.7 ですべてを実行できます。
python - 古いバージョンのPythonで`@unittest.skipIf`を使用する
このunittest
モジュールでは、テストをスキップする機能が気に入っていますが、Python2.7以降でのみ使用できます。
たとえば、次のことを考慮してtest.py
ください。
以前のバージョンのPythonでテストを実行しようとすると、エラーが発生します。
古いバージョンのPythonを「だまして」、単体テストのデコレータを無視し、テストをスキップする方法はありますか?
android - JellyBeanランチャーをGingerBreadに移植する
JBランチャーをGBに移植しようとすると、新しいAPIに関連するエラーがたくさん発生します。サポートライブラリrevを追加しました。9-何も変更されていませんが、約1,000のエラーが発生しています。コードを書き直さずにバックポートする方法はありますか?
.net - タスク並列ライブラリのバックポートを使用している.net3.5アプリケーションをデプロイする方法
.net3.5用のタスク並列ライブラリバックポートを使用する既存の.net3.5アプリケーションの新しいバージョンを出そうとしています。System.Threading.dllをユーザー(バージョン1.0.2856.102)に配布する必要があることは知っていますが、どこに置くかわかりません。実行可能ファイルと同じディレクトリに配置するだけで実行できると思いましたが、それでも例外が発生します。このdllを認識させるために、ユーザーのマシンで何か特別なことをする必要がありますか?
例外は次のとおりです。
java - Retrotranslator Maven プラグインが別のプロジェクトのバックポート パッケージを認識しない
Retrotranslator Maven Plugin を使用して、JDK1.4 より前の環境での開発を容易にしようとしています。xyz-core という Maven モジュールがあり、ユニバーサル バックポート パッケージとして使用したいパッケージ br.com.company.xyz.core.backport があります。
問題は、プラグインがパッケージを見つけられないことです。そのパッケージをこのプロジェクトにコピーすると、機能します。しかし、他の多くのプロジェクトで使用されるため、別のアーティファクトにバックポート パッケージが必要です。
ここにポンがあります:
android - Android 4.0 のスイッチ ボタンを Honeycomb 以前にバックポートする方法
Android 4.0のSwitchトグルボタン(オン/オフ)をAndroid 3.0で使いたいです。サポートされているライブラリがあることを知りたいです。android.widget.Switch
ICSのソース コードをコピーしようとしましたが、うまくいきませんでした。
ありがとう。
java - ラムダ式を Java 7 にバックポートした人はいますか?
Java 8 が lambdas から生成するバイトコードの種類について読んでいて、Java 5 がリリースされたときのことを思い出しました。当時、JDK 5 でコンパイルされたバイトコードを JRE 1.4 で実行できるように変換するRetroweaverやその他のツールがありました。
Java 8 ラムダ用のバックポート ツールを作成した人はいますか? Java 開発者は、Java 8 の GA リリースを 6 ~ 12 か月待たずに、本番品質の Java 7 JRE でラムダをすぐに使い始めることができます。
以下は、バックポーターなどを比較的簡単に実装できる理由を分析したものです。
Java 8 ラムダは、Java 7 にはない JVM 機能 (例: invokedynamic
) を使用していないようで、java.lang.invoke.LambdaMetafactory
クラスとその依存関係は純粋な Java のように見えるため、サードパーティのライブラリに実装できるはずです。したがって、JDK 8 でコンパイルされたバイトコードは、LambdaMetafactory (別のパッケージの下) のコピーを含むサードパーティ ライブラリを追加し、代わりにそのメタファクトリを使用するようにバイトコードを変換することで、JRE 7 で実行できるようになります。java.lang.invoke.MagicLambdaImpl
暗示されているように、アクセシビリティチェックをバイパスするために、いくつかの合成クラスとメソッドも生成する可能性があります。または、初期のラムダ対応早期アクセス JDK の一部が行ったように、すべてのラムダに対して匿名の内部クラスを生成します。
ruby-on-rails - Rails 4 から Rails 3.2.11 への railtie コンソールの変更をバックポートしますか?
rails c
orを実行しているときに、テスト関連の警告と非推奨の通知が表示されますrails s
。このファイルまで追跡しました。
ただし、この問題は Rails 4.x で既に修正されているようです。
しかし、私の会社はまだ Rails 4.x にアップグレードする準備ができていません。
3.2.11 でこれらの変更をきれいに取得するにはどうすればよいですか?