问题标签 [future-proof]
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.
perl - Perl 脚本可移植性和未来证明
由于来自我们团队外部的压力,我们不得不将一百多个 Perl 脚本从 Sparc 移植到 x86。这意味着将数十条 shebang 行从其他内容更改#!/home/Perl/bin/perl -w
为其他内容,这真的很痛苦。什么是这样做的好方法(我在Lycos上找不到任何东西)?
还有,当我们被迫从 x86 迁移到其他东西(我想像 Cray)时会发生什么?有没有办法“面向未来”?
future-proof - 何时牺牲向后兼容性?
基本上,我想知道在新版本要求使用旧版本创建的内容(自动)转换为新版本格式的应用程序中具有这种行为,但以向后兼容为代价。
Visual Studio 对其.sln
文件执行此操作。
这种做法有什么优点/缺点吗?
我想在我正在编写的应用程序的上下文中(3d 内容创建),我正在考虑寻找潜在的不同方法来及时创建事物(更快、更好、更高效),这可能只有在较旧的内容文件时才有可能实现被转换为以看似相似的方式创建相同事物的新方式。
例如,也许v1
有一个Shape
类,你意识到你可以通过使用一个类v2
来更通用、更快地做到这一点。PolySpline
但是为了拥有旧Shapes
的PolySplines
内容,您将转换旧的内容文件,并且一切都将与新版本兼容。
这是一个合理的想法吗?
javascript - 为什么在 Safari 中使用 JavaScript 计划 22034 年 Q1 不可靠?
在浏览器端(Safari 5.0.1)计算遥远的未来日期时有一些可疑之处,将字符串传递给Date()构造函数:
我将其缩小到 22034 年的 2 月至 3 月的过渡:
在任何以后的 date中提供它,构造函数总是返回一个 Date 对象关闭一天!
更早的日期呢?二月的最后一天看起来不错:
我的直觉告诉我,这看起来像是与闰年相关的错误。但是这里的模式是什么,这个错误的解释是什么?
编辑:
如果我们要求 2 月 29 日怎么样?
这将返回 2 月 + 1 天的最后一天(其标准行为)。
xml - 在 XML 层次结构中添加属性或创建新级别?
我目前正在处理一个为只有 2 个级别的 XML 层次结构编写的 XML 文档。现在,我想向它添加一个一对多的分类,这会破坏与该文件一起使用的大部分代码。
我可以将该分类添加为新级别,也可以将其实现为同一级别的属性(几乎就像标记一样)。
当前的:
建议的:
或者:
哪种方法更易于维护?
arrays - Array.toString() 是否保证在 ActionScript 3 中保持不变?
是否可以向Array.toString()
用户显示输出,或者字符串格式是否有可能在 ActionScript 3 或其他编译器的未来版本中发生变化?
c# - 扩展方法向前兼容
使用扩展方法,我们可以轻松地将方法添加到任何类型。显然,这开启了在未来版本的 .net 中不再调用扩展方法的可能性(例如,该类型现在包含与扩展方法具有相同签名的方法)。
这应该是一个问题吗?
如果是这样,我应该如何处理这个问题并设计我的扩展方法以尽量减少发生这种情况的代码更改?
python - 25 年后运行的程序的设计技巧
如果创建一个需要现在运行的应用程序(主要进行数据处理),也许(也许不是)10 年或 25 年后,这些应用程序有哪些设计技巧?
一般规则适用:依赖开源软件和经过验证的平台和故障安全数据格式。
出于可读性原因,该语言必须是高级语言(也许唯一的选择是由对原始代码知之甚少的人在 15 年内重新编写应用程序)。
我会选择 UNIX(Linux)+Python+YAML/JSON(/CSV/plaintext),这个选择的任何提示或替代工具集?Scheme/lisp 已经存在了很长时间,而且真的很难搞砸语言基础,因为一切都是独立的。
编辑:请不要忘记有关实际设计和代码的提示,例如2038 年的问题!
cross-browser - 当新的浏览器版本出现时,是否有不需要更新的 javascript 库?
在我的工作中我使用dojo,我的经验是,当浏览器发生重大升级时,旧版本的dojo的某些部分会损坏。为了使 Web 应用程序在最新的浏览器版本中运行,您确实必须不断更新到最新版本的 dojo。
我想知道所有 javascript 库是否都是这种情况,因为我现在正在研究一个大师项目,这是一个我的教授已经投入使用的网络应用程序。我想使用图书馆的一些不错的功能,但我不希望我会永远维护这个项目。当浏览器升级出来时,我不希望应用程序停止工作。
无论如何,如果有人对此主题有信息或建议,我将不胜感激。
python - (unicode 错误)“unicodeescape”编解码器无法解码字节 - 带有“\u”的字符串
为 Python 2.6 编写代码,但考虑到 Python 3,我认为将
在一些模块的顶部。换句话说,我是在自找麻烦(为了将来避免它们),但我可能在这里遗漏了一些重要的知识。我希望能够传递一个表示文件路径的字符串并实例化一个简单的对象
MyObject('H:\unittests')
在Python 2.6中,这工作得很好,不需要使用双反斜杠或原始字符串,即使对于以 开头的目录'\u..'
,这正是我想要的。在该__init__
方法中,我确保所有单次\
出现都被解释为 ' \\
',包括在特殊字符之前的那些,如\a
, \b
, \f
, \n
, \r
,\t
和\v
(\x
仍然是一个问题)。使用(本地)编码将给定的字符串解码为 unicode 也可以按预期工作。
为Python 3.x做准备,在编辑器中模拟我的实际问题(从 Python 2.6 中的干净控制台开始),会发生以下情况:
(直到这里还可以:'\u'
由控制台使用本地编码进行编码)
换句话说, (unicode) 字符串根本不会被解释为 unicode,也不会使用本地编码自动解码。即使对于原始字符串也是如此:
相同的 u'\u'
:
另外,我希望isinstance(str(''), unicode)
返回True
(它没有返回),因为导入 unicode_literals 应该使所有字符串类型都成为 unicode。(编辑:)因为在 Python 3 中,所有字符串都是 Unicode 字符序列,所以我希望str(''))
返回这样一个 unicode 字符串,并且type(str(''))
既是 <type 'unicode'>
,又 <type 'str'>
是(因为所有字符串都是 unicode)但也意识到<type 'unicode'> is not <type 'str'>
. 周围一片混乱……
问题
- 我怎样才能最好地传递包含'
\u
'的字符串?(不写'\\u
') - 是否
from __future__ import unicode_literals
真的实现了所有 Python 3. 相关的 unicode 更改,以便我获得完整的 Python 3 字符串环境?
编辑:在 Python 3 中,<type 'str'>
是一个 Unicode 对象,<type 'unicode'>
根本不存在。就我而言,我想为 Python 2(.6) 编写可在 Python 3 中运行的代码。但是当我 时import unicode_literals
,我无法检查字符串是否为,<type 'unicode'>
因为:
- 我假设
unicode
不是命名空间的一部分 - if
unicode
是命名空间的一部分,<type 'str'>
当它在同一个模块中创建时,它的文字仍然是 unicode type(mystring)
将始终返回<type 'str'>
Python 3 中的 unicode 文字
# coding: UTF-8
我的模块过去常常通过顶部的注释以“utf-8”编码,而我的locale.getdefaultlocale()[1]
返回“cp1252”。因此,如果我MyObject('çça')
从控制台调用,它在 Python 2 中编码为“cp1252”,MyObject('çça')
从模块调用时编码为“utf-8”。在 Python 3 中,它不会被编码,而是一个 unicode 文字。
编辑:
我放弃了希望避免在 a 之前使用 '\' u
(或x
就此而言)。我也了解导入的限制unicode_literals
。但是,将字符串从模块传递到控制台的许多可能组合,反之亦然,每种不同的编码,以及是否导入unicode_literals
以及 Python 2 与 Python 3,让我想通过实际测试来创建一个概述。因此下表。
换句话说,在 Python 3type(str(''))
中不会返回<type 'str'>
,但是<class 'str'>
, 和 Python 2 的所有问题似乎都可以避免。
r - 如何确保 R / Rcpp 代码可重现(“可分发”)?
我已经为一篇论文写了一些 R 代码,依赖于一些外部包(例如plyr
and )并使用andreshape
编写了几个相对简单的内联 C++ 函数。inline
RcppArmadillo
为了研究可重复性的目的,我想确保它可以在我自己的计算机(Win64)以外的计算机上“按原样”执行。
我的问题:假设我包含了用于安装所需软件包的代码,RcppArmadillo
(和Rcpp
和inline
)软件包是否足以编译用 编写的函数RcppArmadillo
,或者最终用户是否需要更改系统路径以在他的 Windows 机器上进行编译?如果没有,是否有可能/建议从我端保存已编译的函数并包含在我要运送的 R 代码中?
此外,在不太可能的情况下,代码应该在一段时间后(比如几年)运行,是否足以在当前版本中包含完整的 R 安装和相关软件包以使代码“面向未来” ?
我希望这个问题很清楚。