问题标签 [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.

0 投票
3 回答
129 浏览

java - 将 Java 1.5+ 向后移植到 1.4

如何将以下 1.5+ 构造重写为 1.4?

0 投票
1 回答
206 浏览

python - 关于将功能从 python 3.3 反向移植到 2.7 与猴子补丁的实际考虑

我对 python3.3 中引入的一个新的 smtplib 功能感兴趣:能够绑定到多宿主机器(或具有多个 IP 地址的机器)中的特定 IP 地址。

我想使用的许多构建块都没有移植到 3.3 或端口非常不稳定,所以仅仅因为这个特性而使用 3.3 的想法是不切实际的。

为了向后移植此功能,我可以使用补丁或猴子补丁。我倾向于子类化 smtplib.SMTP 并对底层套接字进行猴子补丁,因为它简化了部署,似乎不太可能影响基类并且比政治上正确的反向移植更容易。

在 ruby​​ 世界中,monkeypatching 更容易被容忍,但在大多数 python 圈子中,这种危险但经常有用的技术是不受欢迎的。

我的问题是:你有没有遇到过这样的决定和/或想分享一些建议?

(我对每种方法的优缺点感兴趣)

[更新]

pps 实际上,再想一想,我一直认为猴子修补意味着以某种方式就地修改现有类,以便在从标准位置加载时调用新代码(我必须承认,现在我想到了,我不知道如何你可以这样做)。这不是我在这里建议的 - 这个子类将是一个新类,在我自己的模块中,仅由我自己的代码使用。[安德鲁·库克]

安德鲁,感谢您花时间回答。这样我会分叉一些 SMTP.connect 代码,而且它也令人不悦,因为当原始库更新时,我的分叉代码不会包含更改。我认为 mokeypatching 更具有外科手术性,但如果对 monkeypatched 代码进行任何重构,此类更新也有可能破坏代码。要么分叉要么给我的绝地大师们打补丁,否则他们会引导他们走向黑暗的一面。:-)

[更新]

最后,我刚刚编写了一个 SMTP 代理,它接受扩展的 EHLO 语法,允许选择传出 IP 地址:

使用twisted时它的SLOC低于 40 ,twisted 对于网络代码来说非常棒,而且我可以在 2.7 中做任何事情,但要以运行另一个进程为代价。

0 投票
3 回答
4757 浏览

python - 在旧版本的 Python 中使用 `@unittest.skipIf`

有了这个unittest模块,我喜欢跳过测试的特性,但它只在 Python 2.7+ 中可用。

例如,考虑test.py

如果我尝试使用早期版本的 Python 运行测试,我会收到错误消息:

有没有办法“欺骗”旧版本的 Python 以忽略 unittest 装饰器并跳过测试?

0 投票
1 回答
929 浏览

android - 将 Jelly Bean 启动器移植到 GingerBread

在尝试将 JB 启动器移植到 GB 时,我遇到了很多与新 API 相关的错误。我添加了支持库 rev。9 - 没有任何改变,我收到大约 1000 个错误。有没有办法在不重写代码的情况下对其进行反向移植?

0 投票
1 回答
572 浏览

.net - 如何部署现在使用任务并行库 backport 的 .net 3.5 应用程序

我正在尝试推出现有 .net 3.5 应用程序的新版本,该应用程序现在使用 .net 3.5 的任务并行库反向端口。我知道我需要将 System.Threading.dll 分发给用户(版本 1.0.2856.102),但我不确定该放在哪里。我以为只要把它放在与可执行文件相同的目录中就可以了,但我仍然遇到异常。我需要在用户的机器上做一些特别的事情来让它识别这个 dll 吗?

这是一个例外:

0 投票
0 回答
172 浏览

java - Retrotranslator Maven 插件无法识别另一个项目上的反向移植包

我正在尝试使用 Retrotranslator Maven 插件来促进在 JDK1.4 之前的环境中进行开发。我有一个名为 xyz-core 的 maven 模块,其中有我想用作通用后端包的包 br.com.company.xyz.core.backport。

问题是:插件找不到包。如果我将该包复制到这个项目,它就可以工作。但是我需要一个单独的工件上的 backport 包,因为它将在许多其他项目中使用。

这是pom:

0 投票
1 回答
903 浏览

android - 如何将 Android 4.0 的切换按钮反向移植到 Honeycomb 及更早版本

我想在 Android 3.0 中使用 Android 4.0 的 Switch 切换按钮(开/关)。我想知道它有任何支持的库。我试图android.widget.Switch从 ICS 复制源代码,但无济于事。

谢谢。

0 投票
2 回答
3496 浏览

python - python中的'with'函数有什么作用?

我有一个 python 脚本,它读取一个 .csv 文件,该文件适用于 Python 2.7,但在 Python 2.4 上运行良好。抛出的错误在线

就在这里,它给了我一个语法错误,所以我的问题是“with”做了什么(或者这其中的任何部分都可能在 2.4 中引发语法错误)。我在任何地方都找不到有关此功能的文档,部分原因是它的通用名称。

0 投票
1 回答
7241 浏览

java - 有人将 Lambda 表达式反向移植到 Java 7 吗?

阅读有关Java 8 从 lambdas 生成什么样的字节码时,我想到了 Java 5 发布的时间。当时有Retroweaver其他工具,用于将使用 JDK 5 编译的字节码转换为在 JRE 1.4 上运行。

有没有人为 Java 8 lambdas 创建过这样的反向移植工具?它可以让 Java 开发人员今天已经开始在生产质量的 Java 7 JRE 上使用 lambda,而无需等待 6-12 个月的 Java 8 GA 版本。

以下是我对为什么诸如 backporter 应该相对容易实现的分析:

Java 8 lambda 似乎没有使用 Java 7 没有的任何 JVM 特性(例如invokedynamic),并且java.lang.invoke.LambdaMetafactory类及其依赖项看起来像纯 Java,因此应该可以在第 3 方库中实现它们。因此,使用 JDK 8 编译的字节码可以在 JRE 7 上运行,方法是添加一个带有 LambdaMetafactory 副本的第 3 方库(在不同的包下),并将字节码转换为使用该元工厂。java.lang.invoke.MagicLambdaImpl正如似乎暗示的那样,也许还会生成一些合成类和方法来绕过可访问性检查。或者然后为所有 lambda 生成匿名内部类,就像一些第一个启用 lambda 的 Early Access JDK 所做的那样。

0 投票
0 回答
75 浏览

ruby-on-rails - Backport railtie 控制台从 Rails 4 更改为 Rails 3.2.11?

运行时,我收到了一些烦人的与测试相关的警告和弃用通知;rails c或者 rails s我追踪到这个文件

但是,看起来这个问题已经在 Rails 4.x 中修复了:

但是我的公司还没有准备好升级到 Rails 4.x。

如何在 3.2.11 中干净利落地获得这些更改?