区分Windows上运行的Python应用程序和其他操作系统(通常是Linux)的常见检查是使用条件: if sys.platform == 'win32': … 但是我想知道今天64位Python在去年被广泛使用的时候是否安全呢? 32真的意味着32位,或者基本上是指Win32 API? 如果有可能有一天sys.platform为“win64”也许这样的条件会更普遍? if sys.platform.startswith('win'): … 还有另一种检测Windows的方法我知道: if os.name == 'nt': … 但是我从来没有在其他的代码中看到后者的使用。 那么最好的方法是什么? UPD :如果可以,我想避免使用额外的库。 要求安装额外的库来检查我是不是在Windows工作,可能会让Linux用户烦恼。
这是我第一次尝试在C ++中编写任何有点复杂的东西,我试图构build一个共享库,我可以从Objective-C和.NET应用程序(可以,那部分后来…) 我有的代码是 – #ifdef TARGET_OS_MAC // Mac Includes Here #endif #ifdef __linux__ // Linux Includes Here #error Can't be compiled on Linux yet #endif #ifdef _WIN32 || _WIN64 // Windows Includes Here #error Can't be compiled on Windows yet #endif #include <iostream> using namespace std; bool probe(){ #ifdef TARGET_OS_MAC return probe_macosx(); #endif #ifdef __linux__ […]
例如,在一个简单的目录创build操作,我可以这样做一个OSError: (Ubuntu Linux) >>> import os >>> os.mkdir('foo') >>> os.mkdir('foo') Traceback (most recent call last): File "<stdin>", line 1, in <module> OSError: [Errno 17] File exists: 'foo' 现在我可以捕捉到这样的错误: >>> import os >>> os.mkdir('foo') >>> try: … os.mkdir('foo') … except OSError, e: … print e.args … (17, 'File exists') 是否有一种跨平台的方式,我可以知道17或“存在的文件”总是意味着相同的东西,这样我可以根据情况采取不同的行为? (这是另一个问题 。)
GCC / G ++macros区分Linux和Mac OSX的macros?
我需要的是获取本地应用程序数据目录path的平台无关的方式。 System.getenv("LOCALAPPDATA")似乎只适用于Windows。 我如何去做这件事?
好的,所以我不想在这里开始一场神圣的战争,但是我们正在试图巩固我们处理我们的应用程序configuration文件的方式,并且我们正在努力做出决定采取最好的方法。 目前,我们发布的每个应用程序都使用它自己的临时configuration文件,无论是属性文件(ini风格),XML还是JSON(目前只有内部使用!)。 我们目前的大部分代码都是Java,所以我们一直在看Apache Commons Config ,但是我们发现它非常冗长。 我们也看了一下XMLBeans ,但看起来好像很多。 我也觉得自己被推向XML是一种格式,但是我的客户和同事对尝试别的东西感到担忧。 我可以从客户的angular度来理解,每个人都听说过XML,但是在一天结束的时候,不应该使用正确的工具来完成这项工作。 现在人们在生产系统中使用什么样的格式和库,是否有人试图避免使用尖括号税 ? 编辑:真的需要成为一个跨平台的解决scheme:Linux,Windows,Solaris等,用于连接configuration文件的库的select与格式的select一样重要。
\ n和\ r(我知道它和操作系统有关)有什么区别,回显可以跨平台工作的换行符的最佳方法是什么? 编辑:作为对Jarod的回应,我将使用ths在.txt日志文件中回显换行符,尽pipe我相信我将来会使用它来回显HTML makup到页面上。
我们公司正在挑选原生Android / iPhone开发和一些跨平台解决scheme,特别是Marmalade SDK(原Airplay SDK)。 我们是一家计算机视觉公司,这意味着我们需要低级别的摄像头设备。 而且,我们的应用程序在计算上是昂贵的,这意味着我们倾向于挤出可用的每一点处理能力。 我们的团队在Objective-C和Java(或C)方面都有足够的经验来提供平台特定的解决scheme。 然而,我们的主要焦点始终是C ++,因此我们希望防止团队分裂,而采用跨平台的解决scheme。 我们最大的担忧是,selectMarmalade会牺牲处理速度(主要关注点),或者通过复杂化低级访问相机帧缓冲区来严重增加开发时间。 所以我的问题是,除了显而易见的优点之外,还有Marmalade SDK对处理器密集型video处理应用程序的特殊限制。
什么是最现代的C ++语言unit testing方法? 具有更大内省能力的语言(比如Python)的类有unit testing框架,这些框架在某种程度上更自然地使用。 unit testing可以更容易地定义。 相比之下,传统的CppUnit (基于JUnit )似乎采取了非常保守的方法。 有没有更新,更好的使用C ++(甚至C ++ 11)的特定function使生活更轻松? 我一直在使用CppUnit框架一段时间,以简单的方式对Windows本机C ++(Visual Studio 2005和2010)的部分项目。 我们之前没有selecttesting驱动开发方法,因为已经有很多遗留代码,我们发现为它添加testing是相当困难的。 我们不得不重构应用程序,但是即使在这种情况下,添加所有漂亮的testing也是非常耗时的。 最近,我们已经切换到Visual Studio 2013(因为C ++ 11标准实现),我们将开始一个新的,相当长期的项目。 有了以前好的(小)unit testing经验,我想尝试一下testing驱动开发的方法。 由于该项目不是一个小的(预期大小与大约相同,即大约200 k行代码),我宁愿更容易(但不是更低的能力)的框架。 新项目有可能导致跨平台的实施(Windows和Linux)。 在Visual Studio 2013中有一个unit testing支持,但我没有经验,它将如何适应跨平台。 到目前为止,我已经find了C ++的unit testing框架列表 。 但是,我们不能看出它们在原理上有什么不同。 我目前有三名候选人(保守select): 提振 – 可能的候选人; C ++标准的testing平台; 因此有可能被广泛接受; 可能是最大的用户群。 它似乎比CppUnit更先进。 CppUnit – 我知道,但是编写所有代码并不是一件愉快的事情。 Visual Studio 2013内置 – […]
我们公司即将开始为移动平台开发less量产品,因为我要求首席技术官研究可用的不同工具的优缺点,以实现最佳质量/成本效益的解决scheme。 我们将主要针对iOS和Android,Windows-Mobile和BlackBerry的次要目标。 候选人: 在进行了一些背景研究之后,我发现了以下可能的候选人: 原生 – 使用原生工具和语言为每个平台进行简单但费力的开发。 HTML5,CSS和JavaScript – 可以是设备浏览器(网站)上运行的Web服务,也可以是围绕WebKit封装代码的应用程序。 Rho mobile – 由Google制作,应该是不错的 – 不过基于Ruby(我们不太习惯),并且有一个复杂而又脆弱的开发环境。 PhoneGap – 看起来很容易,主要基于Javascript – 它是开源的,但最近被adobe收购 – (不是一个好的标志) Appcelerator – 从Javascript到PHP和Python的任何东西,都有一个很好的API访问范围,但是我们听到许多拒绝(苹果)的故事,以及在不同平台上使用复杂代码时的不兼容问题。 而且更像MoSync,Sencha,Appmobi和Corona(没有亲自testing过)。 一些参考点: 我们不打算开发游戏,我们计划开发的应用程序正处于商业应用程序和信息工具的领域。 应用程序不依赖于设备API的过度使用(但需要一些小的基本访问) 该公司已经开发了iOS,我们有一个本地的iOS开发人员(Objective-C的极客) 我们希望确保能够继续开发我们的应用程序,而不会因为新的操作系统或API而破坏它们 预先确保应用程序不会因为跨平台代码(主要是AppStore)而被拒绝是有益的, 就像任何一家公司一样,我们希望尽可能提高成本效益 – 另一方面,我们坚持高质量的产品和顶级的用户体验。 没有比StackOverflow更好的地方提出这个问题,我将不胜感激开发者在这个主题上的经验。