我正和一位朋友一起开展一个项目,我想回到我们代码的旧版本并将其设置为当前版本.我该怎么做?
我在vs08上使用"anksvn".
我在我的电脑上有我想要的版本,但是提交失败了; 我收到的消息是"提交失败,文件或目录已过期".
我的PC上也有subversion客户端.
阅读Java 8从lambdas中产生的字节码类型,我想起了Java 5发布的时候.当时有Retroweaver和其他工具用于转换用JDK 5编译的字节码以在JRE 1.4上运行.
还有人为Java 8 lambdas创建了这样一个后向移植工具吗?它将让Java开发人员今天开始在生产质量的Java 7 JRE上使用lambdas,而不必等待6到12个月的Java 8 GA版本.
以下是我对后向传递器应该相对容易实现的原因的分析:
Java 8 lambdas似乎没有使用Java 7不具备的任何JVM功能(例如invokedynamic
),并且java.lang.invoke.LambdaMetafactory
该类及其依赖项看起来像纯Java,因此应该可以在第三方库中实现它们.因此,使用JDK 8编译的字节码可以通过添加带有LambdaMetafactory副本的第三方库(在不同的包下)并通过转换字节码来使用该元数据来在JRE 7上运行.也许还会生成一些合成类和方法来绕过可访问性检查,这java.lang.invoke.MagicLambdaImpl
似乎意味着.或者为所有lambdas生成匿名内部类,就像一些支持lambda的早期访问JDK一样.
我正在阅读关于SO 的另一个问题的答案,其中@RomainGuy评论说可以(如果我错误地解释,请纠正我)从后续版本的android到早期版本的后端代码.具体来说,我感兴趣的是从Android版本2.3.3(Gingerbread)到版本2.2.2(Froyo)的BitmapRegionDecoder的代码反向移植.
我宁愿更普遍地问这个问题是什么是最佳实践/将代码从较新版本的Android反向移植到旧版本时应该避免什么,但stackoverflow暗示我的问题可能因为过于主观而被关闭.
也许如果对该主题有足够的兴趣,这个问题可能会"变形"为一个更普遍的问题......可能是一个社区维基?
在任何情况下,我都很感激有关如何做到这一点的任何见解.无论是特定于我的用例,还是更一般的建议.从java类中调用本机方法是否会使问题复杂化(必然涉及NDK)?
如果以这种方式确实(并且合理)采用樱桃选择和后端口代码,我认为很多人会发现知道如何非常有用.
当我尝试导入matplotlib时出现错误
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python2.7/dist-packages/matplotlib/__init__.py", line 128, in <module>
from matplotlib.rcsetup import defaultParams, validate_backend, cycler
File "/usr/local/lib/python2.7/dist-packages/matplotlib/rcsetup.py", line 29, in <module>
from matplotlib.fontconfig_pattern import parse_fontconfig_pattern
File "/usr/local/lib/python2.7/dist-packages/matplotlib/fontconfig_pattern.py", line 32, in <module>
from backports.functools_lru_cache import lru_cache
ImportError: No module named functools_lru_cache
Run Code Online (Sandbox Code Playgroud)
backports本身导入正常.当我尝试手动安装functools时
sudo pip install backports.functools_lru_cache
Run Code Online (Sandbox Code Playgroud)
我得到的信息
Requirement already satisfied: backports.functools_lru_cache in /usr/local/lib/python2.7/dist-packages
Run Code Online (Sandbox Code Playgroud)
然而,当我尝试
import backports.functools_lru_cache
Run Code Online (Sandbox Code Playgroud)
我得到的信息
ImportError: No module named functools_lru_cache
Run Code Online (Sandbox Code Playgroud)
系统信息Ubuntu 16 Python 2.7.12 Pip 9.0.1
我有成千上万行的python代码有python2.7 +样式字符串格式化(例如{} s中没有索引)
"{} {}".format('foo', 'bar')
Run Code Online (Sandbox Code Playgroud)
我需要在python2.6下运行此代码,python2.6 需要索引.
我想知道是否有人知道一个无痛的方式允许python2.6运行此代码.如果有一个"来自__future__ import blah"解决问题,那就太棒了.我没有看到一个.这些方面的东西将是我的第一选择.
一个遥远的第二个是一些脚本可以自动化添加索引的过程,至少在明显的情况下:
"{0} {1}".format('foo', 'bar')
Run Code Online (Sandbox Code Playgroud) 使用该unittest
模块,我喜欢跳过测试的功能,但它仅适用于Python 2.7+.
例如,考虑test.py
:
import unittest
try:
import proprietary_module
except ImportError:
proprietary_module = None
class TestProprietary(unittest.TestCase):
@unittest.skipIf(proprietary_module is None, "requries proprietary module")
def test_something_proprietary(self):
self.assertTrue(proprietary_module is not None)
if __name__ == '__main__':
unittest.main()
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用早期版本的Python运行测试,则会收到错误消息:
Traceback (most recent call last):
File "test.py", line 7, in <module>
class TestProprietary(unittest.TestCase):
File "test.py", line 8, in TestProprietary
@unittest.skipIf(proprietary_module is None, "requries proprietary module")
AttributeError: 'module' object has no attribute 'skipIf'
Run Code Online (Sandbox Code Playgroud)
有没有办法"欺骗"旧版本的Python来忽略unittest装饰器,并跳过测试?
Angular 1.3引入了一种新debugInfoEnabled()
方法,如果false
在应用程序配置函数中调用,它可以提高性能:
myApp.config(['$compileProvider', function ($compileProvider) {
$compileProvider.debugInfoEnabled(false);
}]);
Run Code Online (Sandbox Code Playgroud)
此外,Angular 1.3放弃了IE8的支持.这对我来说是一个问题,我的应用程序必须在IE8上运行.因此,我无法升级到角度1.3并且必须使用1.2.
有没有办法用角度1.2实现相同的功能?
特别是,至少有一部分debugInfoEnabled()
做了:
ng-scope
/ ng-isolated-scope
CSS类作为一种可能的选择,我可以分叉angularjs存储库并将该功能反向回1.2.然后,使用fork维护来自上游的更新.
非常感谢任何指针.
Python 3.4引入了新的正则表达式方法re.fullmatch(pattern, string, flags=0)
.
有没有人将这种新方法反向移植到旧的Python版本?
或多或少的标题暗示.虽然我还没有使用C++ 0x,但是我想在它发生时做好准备,而且我还想减少我必须重写的代码量才能使用它的一些功能.这样我就可以一次性地向前和向后兼容.
我发现的最有趣的一个是nullptr
,我最近经常使用它.
在检查了"官方解决方法"和Meyer的建议之后,我决定在我的C++和未来的C++ 0x程序中使用它.第二部分很简单 - 作为关键字,nullptr
只需支持.但第一部分让我感到有些不适.
Meyers提案的功能如下:
class nullptr_t { // ? this is my issue
// definition of nullptr_t
} nullptr = { };
Run Code Online (Sandbox Code Playgroud)
该提议的问题在于它声明了要声明为std::nullptr_t
C++ 0x所需的类型.这意味着对于"感觉原生"的解决方法,必须通过重新打开std::
命名空间来添加类型.我理解在C++程序中这是非法的(不像添加特殊化,这显然是皱眉和放开警告).
我想用nullptr
在舒适和在C++程序合法的方式.我想到的一个选项是在另一个命名空间中声明类型然后使用它using
:
namespace mylibrary {
class nullptr_t {
....
} nullptr = { };
// end namespace
}
// These would have to go in the header file.
using mylibrary::nullptr;
using …
Run Code Online (Sandbox Code Playgroud) 我在Python 2.7中使用Enum backport enum34.
根据文档,应该可以使用项目访问权限通过名称访问枚举成员.也就是说,以下应该有效:
from enum import Enum
class Foo(Enum):
bar = 1
baz = 2
print(Foo['bar'])
Run Code Online (Sandbox Code Playgroud)
但是,当我运行代码时,我在最后一行得到了这个错误:
TypeError:'type'对象没有属性'
__getitem__
'
我在这里遗漏了什么,或者这个功能在2.7后端没有实现?
backport ×10
python ×5
java ×2
android ×1
android-ndk ×1
angularjs ×1
c++ ×1
c++03 ×1
debugging ×1
decorator ×1
enums ×1
graphics ×1
java-7 ×1
java-8 ×1
javascript ×1
lambda ×1
matplotlib ×1
nullptr ×1
python-2.6 ×1
python-2.7 ×1
python-2.x ×1
python-3.x ×1
regex ×1
svn ×1
unit-testing ×1