我正在描绘一组程序的架构,这些程序共享存储在数据库中的各种相互关联的对象.我希望其中一个程序充当服务,为这些对象的操作提供更高级别的接口,以及通过该服务访问对象的其他程序.
我目前的目标是将Python和Django框架作为实现该服务的技术.我很确定我想知道如何在Linux中守护Python程序.但是,它是系统应支持Windows的可选规范项.我对Windows编程没什么经验,也没有Windows服务的经验.
是否可以将Python程序作为Windows服务运行(即在没有用户登录的情况下自动运行)?我不一定要实现这一部分,但我需要大致了解如何做以决定是否按照这些方式进行设计.
编辑:感谢目前为止的所有答案,它们非常全面.我想知道一件事:Windows如何了解我的服务?我可以使用本机Windows实用程序进行管理吗? 在/etc/init.d中放置一个启动/停止脚本相当于什么?
是否有跨平台的方式获取tempPython 2.6中的目录路径?
例如,在Linux /tmp下,在XP下C:\Documents and settings\[user]\Application settings\Temp.
可能重复:
Python:我在运行什么操作系统?
正如标题所说,我怎样才能在python中找到当前的操作系统?
当我操作路径和文件名时,我一直处于打结状态,因为我没有使用的通用命名系统.
我需要提出一个命名标准并坚持下去,我希望与其他人保持清晰和一致,所以我开放学习规范的答案.
考虑这个玩具问题:( Windows示例,但希望答案应该是平台无关的)
您已获得文件夹的全名:C:\ users\OddThinking\Documents\My Source.您想要遍历下面的文件夹,并将所有.src编译为.obj.
在某些时候,您正在查看以下字符串.
C:\users\OddThinking\Documents\My Source\Widget\foo.src
Run Code Online (Sandbox Code Playgroud)
那么,您将使用哪些标识符名称?
A) foo
B) foo.src
C) src
D) .src
E) C:\users\OddThinking\Documents\My Source\ - i.e. the top of the tree.
F) Widget\foo.src - i.e. the path from the top of the tree to the leaf.
G) Widget - i.e. one node of the tree.
H) C:\users\OddThinking\Documents\My Source\Widget\ - i.e. the name of the folder
I) C:\users\OddThinking\Documents\My Source\Widget\foo.src
Run Code Online (Sandbox Code Playgroud)
让我给出一些答案,让你开始吧.
A)基地名称?
B)文件名?还是文件名?选择标识符名称时,差异很重要,我在这里永远不会保持一致.
C)扩展
D)扩展.等等,这就是我所说的C.我应该避免存储点,只需要在需要时插入?如果特定文件上没有点怎么办?
H)路径名称?或等等,这只是路径吗?
I)文件名.等等,这就是我所说的C. Path.等等,这就是我所说的H.也许H应该是文件夹名称.不是"文件夹"是特定于Windows的术语吗?
两者之间有什么区别(如果有的话)(相对于.Net)?
对于Ubuntu和/或CentOS,是否有一个包,它有一个命令行工具,可以执行XPath单线程,foo //element@attribute filename.xml或者foo //element@attribute < filename.xml逐行返回结果?
我正在寻找一些可以让我只是apt-get install foo或者yum install foo然后只是开箱即用,没有包装或其他必要的改编的东西.
以下是一些接近的事例:
引入nokogiri.如果我写这个包装器,我可以用上面描述的方式调用包装器:
#!/usr/bin/ruby
require 'nokogiri'
Nokogiri::XML(STDIN).xpath(ARGV[0]).each do |row|
puts row
end
Run Code Online (Sandbox Code Playgroud)
XML :: XPath的.可以使用这个包装器:
#!/usr/bin/perl
use strict;
use warnings;
use XML::XPath;
my $root = XML::XPath->new(ioref => 'STDIN');
for my $node ($root->find($ARGV[0])->get_nodelist) {
print($node->getData, "\n");
}
Run Code Online (Sandbox Code Playgroud)
xpath来自XML :: XPath返回太多噪音,-- NODE --和attribute = "value".
xml_grep 来自XML :: Twig无法处理不返回元素的表达式,因此无法在不进一步处理的情况下提取属性值.
编辑:
echo cat //element/@attribute | xmllint --shell filename.xml返回类似的噪音xpath …
我想用Java监视以下系统信息:
可用磁盘空间(免费/总计)
*请注意,我的意思是整个系统可用的整体内存,而不仅仅是JVM.
我正在寻找一种不依赖于我自己的代码调用外部程序或使用JNI的跨平台解决方案(Linux,Mac和Windows).虽然这些是可行的选择,但如果有人已经拥有更好的解决方案,我宁愿不自己维护特定于操作系统的代码.
如果有一个免费的库可以以可靠的跨平台方式实现这一点,那就太棒了(即使它进行外部调用或使用本机代码本身).
任何建议都非常感谢.
为了澄清,我想获得整个系统的当前CPU使用率,而不仅仅是Java进程.
SIGAR API在一个软件包中提供了我正在寻找的所有功能,因此它是迄今为止我的问题的最佳答案.但是,由于它是根据GPL许可的,我不能将它用于我的原始目的(封闭源,商业产品).Hyperic可能会将SIGAR许可用于商业用途,但我还没有调查过.对于我的GPL项目,我将来肯定会考虑SIGAR.
根据我目前的需求,我倾向于以下方面:
OperatingSystemMXBean.getSystemLoadAverage() / OperatingSystemMXBean.getAvailableProcessors()(每个CPU的平均负载)OperatingSystemMXBean.getTotalPhysicalMemorySize()和OperatingSystemMXBean.getFreePhysicalMemorySize()File.getTotalSpace()和File.getUsableSpace()限制:
在getSystemLoadAverage()和磁盘空间查询方法仅仅是Java的6下可用另外,一些JMX功能可能无法适用于所有平台(即它的报道,getSystemLoadAverage()返回-1在Windows上).
尽管最初是根据GPL许可,它已经改变到Apache 2.0中,这通常可以用于封闭源代码,商业产品.
我将如何生成包含变量字符列表的长度在x和y字符之间的字符串的所有可能排列的列表.
任何语言都可以使用,但它应该是可移植的.
我正在考虑将跨平台项目从Visual C++,XCode和makefile中的单独构建管理系统切换到CMake.
我需要的一个基本功能是自动将目录中的所有文件添加到目标.虽然这很容易用make做,但使用Visual C++和XCode并不容易做到(如果我错了,请纠正我).是否可以直接在CMake中进行?怎么样?
在学习CMake之前,请随意添加我应该注意的任何其他事情,考虑到目前该项目是中等规模的(8个库,2个可执行文件,8个测试项目,它取决于大约8个外部库).
不时有人在SO上指出char(也就是"字节")不一定是8位.
似乎8位char几乎是通用的.我原本认为,对于主流平台,必须有一个8位char才能确保其在市场上的可行性.
现在和历史上,哪些平台使用的char不是8位,为什么它们与"普通"8位不同?
在编写代码时,考虑跨平台支持(例如,对于通用库而言),对于非8位平台,值得考虑的是什么char?
在过去,我遇到过一些char16位的ADI DSP .我认为DSP是一种利基架构.(然后,当时手工编写的汇编程序很容易击败可用的C编译器可以做的事情,所以我在该平台上没有真正获得C的经验.)