标签: forward-compatibility

如何检测IE11?

当我想检测IE时,我使用此代码:

function getInternetExplorerVersion()
{
  var rv = -1;
  if (navigator.appName == 'Microsoft Internet Explorer')
  {
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );
  }
  return rv;
}
function checkVersion()
{
  var msg = "You're not using Internet Explorer.";
  var ver = getInternetExplorerVersion();

  if ( ver > -1 )
  {
    msg = "You are using IE " + ver;
  }
  alert( msg );
}
Run Code Online (Sandbox Code Playgroud)

但IE11正在返回"你没有使用Internet Explorer".我该如何检测它?

debugging internet-explorer browser-detection forward-compatibility internet-explorer-11

207
推荐指数
7
解决办法
22万
查看次数

JDK"向上"还是"向后"兼容?

向后二进制兼容性(或向下兼容性) - 使用旧版本库API构建的客户端在新版本(wiki)上运行的能力.

向上二进制兼容性(或向前兼容性) - 使用新版本的库API构建的客户端在旧版本(wiki)上运行的能力.

关于自1.4.2以来J2SE 5.0中 JDK 不兼容性的一般Sun文档(以及Java SE 6与J2SE 5.0的兼容性)描述了JDK的兼容性,如下所示:

除了下面列出的不兼容性之外,JDK 5.0 与Java 2 SDK v1.4.2 向上二进制兼容.这意味着,除了指出的不兼容性之外,使用1.4.2版编译器构建的类文件将在JDK 5.0中正确运行.

我认为文档编写者在这句话中混淆了 "向上"和"向后"兼容性术语.它们描述了"向后"兼容性,但将此功能称为"向上"兼容性.

这是一个错字,错误或预期的术语吗?JDK"向上"还是"向后"兼容?

java backwards-compatibility binary-compatibility forward-compatibility

60
推荐指数
4
解决办法
5万
查看次数

Java 8默认方法是否会破坏源兼容性?

通常情况下,Java源代码已向前兼容.在Java 8之前,据我所知,编译类源代码都已经与后来的JDK/JVM版本向前兼容.[更新:这是不正确的,请参阅下面的注释'en en'等.]但是,在Java 8中添加了默认方法后,似乎不再是这种情况.

例如,我一直使用的库的实现java.util.List包括一个List<V> sort().此方法返回已排序的列表内容的副本.这个库作为jar文件依赖项部署,在使用JDK 1.8构建的项目中运行良好.

但是,后来我有机会使用JDK 1.8重新编译库本身,我发现库不再编译: - List使用自己的sort()方法实现的类现在与Java 8 java.util.List.sort()默认方法冲突.Java 8 sort()默认方法对列表进行排序(返回void); 我的库的sort()方法 - 因为它返回一个新的排序列表 - 具有不兼容的签名.

所以我的基本问题是:

  • 由于默认方法,JDK 1.8是否为Java源代码引入了前向不兼容性?

也:

  • 这是第一次这种前向不相容的变化吗?
  • 在设计和实施默认方法时是否考虑或讨论过这个问题?是否记录在任何地方?
  • 对于这些好处,(不可否认的是)不便打折吗?

以下是在1.7下编译和运行并在1.8下运行的一些代码示例 - 但不在1.8下编译:

import java.util.*;

public final class Sort8 {

    public static void main(String[] args) {
        SortableList<String> l = new SortableList<String>(Arrays.asList(args));
        System.out.println("unsorted: "+l);
        SortableList<String> s = l.sort(Collections.reverseOrder());
        System.out.println("sorted  : "+s);
    }

    public static class SortableList<V> extends ArrayList<V> { …
Run Code Online (Sandbox Code Playgroud)

java forward-compatibility java-8 default-method

54
推荐指数
2
解决办法
3386
查看次数

你今天如何使用C++ 11?

这是一个问题分为两个部分,第一部分是现在最重要的问题:

  • 您是否遵循C++ 11的设计和发展?您关注哪些博客,新闻组,委员会文件和其他资源?
  • 即使您没有使用任何新功能,它们如何影响您当前的选择?
  • 您现在使用哪些新功能,无论是在制作还是其他方面?

第二部分是关于新标准一旦成为最终的后续行动:

  • 你希望立即使用吗?除了前面提到的问题之外,你还在做什么准备C++ 11?
  • 显然,编译器支持必须存在,但仍然需要考虑同事,辅助工具和其他因素.什么会影响你的采用?

编辑:原来真是太争论了; 但是,我仍然对基本问题感兴趣,所以我试图将其清理干净,希望能让它接受.这似乎是一个比复制更好的途径 - 即使一些答案回应了议论语,他们仍然适用于他们解决问题的程度,并且所有答案都是适当的社区财产.

c++ standards forward-compatibility c++11

29
推荐指数
5
解决办法
3705
查看次数

切换到C++ 11

我们将使用C++作为编程语言开始一个持久的项目.

我读到C++ 0x将在2011年问世,所以他们称之为C++ 11.

当C++ 11出现时,我们仍然会开发该项目,并且想知道现在是否可以使用新C++标准的任何功能,以便能够:

  • 代码比旧的C++和
  • 新标准到货时容易切换?

c++ forward-compatibility c++11

22
推荐指数
2
解决办法
6193
查看次数

Node.JS无法在互联网上工作

我在windows上有nodejs的基本webserver hello world app,它可以在localhost上运行.但是,当我从互联网上测试时,它无法连接.我在netgear路由器中设置端口转发.我错过了一步让我的nodejs服务器对外界可见吗?

谢谢.

var http = require('http');
http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': 'text/plain'});
  res.end('Hello World\n');
}).listen(1337, "127.0.0.1");
console.log('Server running at http://127.0.0.1:1337/');
Run Code Online (Sandbox Code Playgroud)

porting forward-compatibility node.js

10
推荐指数
1
解决办法
8234
查看次数

python 3 语义版本化并且向前兼容

我正在研究一些想要引入 Python 3.6 以便在以 3.5 为标准的环境中使用的软件。阅读Python的文档我找不到任何关于是否:

  • 3.5代表一个语义版本号
  • 3.6 代表向前兼容的升级(即:为 3.5 运行时编写的代码保证可以在 3.6 运行时运行)

事实上,这个关于移植到 3.7 的页面的存在让我强烈认为,但我看不到关于版本号含义的官方文档(如果有的话,ala Linux 内核版本控制)

从更一般的意义上来说 - 3.X 版本流中是否存在围绕兼容性标准的 PEP?

python backwards-compatibility forward-compatibility python-3.x

10
推荐指数
1
解决办法
4182
查看次数

"backporting"nullptr到C++ - 前C++ 0x程序

或多或少的标题暗示.虽然我还没有使用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_tC++ 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)

c++ backport nullptr forward-compatibility c++03

9
推荐指数
1
解决办法
3834
查看次数

符号名称与新NASM版本中的新注册名称冲突?

想象一下你10年前写的这篇文章(在英特尔MPXbnd0.. bnd3注册表甚至在路线图上之前):

section .data

; define some globals which are part of an ABI so you can't just rename them
global bnd0      ; MPX bound register name conflict
bnd0: dd 123

global k0        ; AVX512 mask register name conflict
k0: dq 12345
Run Code Online (Sandbox Code Playgroud)

如何使用当前版本的NASM进行组装? 即NASM(或YASM)是否与支持新注册名称的新版本具有向前兼容性?

显然,在单个文件或项目中搜索/替换很容易解决.但理论上,您可以将全局变量名称作为库ABI的一部分,您可以从NASM导出或需要导入到NASM中extern ymm0.(必须声明外部符号,因此无法识别的寄存器名称永远不会汇编为符号引用.)

NASM语法已经不适合作为平台上C编译器输出的格式,这些平台不会为符号名称添加前缀_或执行其他类型的名称修改(例如Linux ELF).你无法编译全局int eax = 1;. 这就是AT&T语法%eax用于寄存器名称的原因.对该答案的评论中的讨论是启发这个问题的原因.请注意,GAS不需要声明外部符号; 无法识别的名称被视为符号(即使在.intel_syntax noprefix使用类似于MASM的语法的模式中).

相关:MASM如何处理新扩展的前向源兼容性?


你能以某种方式禁用MPX支持吗?

YASM支持一个CPU指令,允许您禁用对某些助记符的支持,但即使禁用AVX支持也不允许您将其ymm0用作符号名称.(YASM …

x86 assembly naming nasm forward-compatibility

9
推荐指数
1
解决办法
605
查看次数

FCM和GCM是前后兼容的吗?

Google正在弃用Google Cloud消息,转而使用Firebase云消息传递:

Firebase云消息传递(FCM)是GCM的新版本.它继承了可靠且可扩展的GCM基础架构以及新功能!请参阅常见问题以了解更多信息 如果要在新应用程序中集成消息传递,请从FCM开始.强烈建议GCM用户升级到FCM,以便从当前和未来的新FCM功能中受益.

根据我在服务器上进行的一些测试,FCM URL(https://fcm.googleapis.com/fcm/send)适用于GCM项目,反之亦然 - GCM URL(https://android.googleapis.com)/gcm/send)适用于FCM项目.

将所有现有GCM推送发送代码迁移到FCM将节省大量麻烦和重构(对于每次推送,我都不必检查应用程序版本是FCM还是GCM).

这种向后和向前兼容性是否得到官方支持或记录?

backwards-compatibility forward-compatibility google-cloud-messaging firebase-cloud-messaging

8
推荐指数
1
解决办法
2371
查看次数