我的python项目下有一个名为"logging.conf"的配置文件,该文件如下所示:
[formatters]
keys: console, logging
[formatter_console]
format: %(asctime)s | %(message)s
[formatter_logging]
format: %(message)s
etc etc etc
Run Code Online (Sandbox Code Playgroud)
试过:syntax on,什么也没发生,.conf文件看起来很简单.无论如何我可以打开一些语法来使.conf文件更加丰富多彩和可读性?
我最近刚刚来到了傀儡遗产.围绕它的一些问题:
使用傀儡继承是一种好习惯吗?一些有经验的傀儡同事告诉我,傀儡中的遗传不是很好,我不太相信.
来自OO世界,我真的想在封面下理解,傀儡继承是如何运作的,如何压倒一切也是如此.
使用sphinx,我知道你可以通过以下方式显示一段python代码片段或ruby代码片段:
.. code-block:: ruby.
${your ruby code goes here}
Run Code Online (Sandbox Code Playgroud)
如何显示linux命令的代码片段或仅显示与任何语言无关的某些控制台命令?我不在乎它们是否在语法上没有正确突出显示,我只是希望它们在doc中显示为除普通文本之外的一段代码.例如.
ls -lsa .
make file
Run Code Online (Sandbox Code Playgroud) "并行性提示"在风暴中用于并行运行的风暴拓扑.我知道有工作流程,执行者和任务等概念.使并行性提示尽可能大有意义,以便尽可能地并行化拓扑?
我的问题是如何为我的风暴拓扑找到一个完美的并行性提示数.它取决于我的风暴群集的规模,还是更像拓扑/作业特定设置,它从一种拓扑到另一种不同?还是取决于两者?
我使用PyDev for Eclipse作为我的IDE并使用pip作为我的包管理工具,运行virtualenv.
每次我想在项目中使用/包含一些新库或新依赖项时,我都会将它们添加到pip-requires文件中.依赖关系安装在我的虚拟环境中,运行后没有问题pip install -r pip-requires.
我的环境:
更新:我的Pydev设置:

问题:
更新:
Env/bin/python作为解释器,如屏幕截图所示,某些基本模块在eclipse中无法解决,例如.import copy, import json我应该使用默认值/usr/bin/python作为解释器,只需将虚拟环境添加site-package到PYTHONPATH中吗?这样我就可以解决标准python库(例如json)和我自己的项目依赖项?我知道在通用出来之前就会问这个问题.在Array强制执行返回类型的情况下,Array确实胜出了一些,它更加类型安全.
但是现在,使用最新的JDK 7,每次我设计这种类型的API时:
public String[] getElements(String type)
vs
public List<String> getElements(String type)
Run Code Online (Sandbox Code Playgroud)
我总是在努力想出一些很好的理由来回归一个阵列或者其他方式.在选择String []或List作为API的返回类型时,最佳做法是什么?或者它是马的课程.
我脑子里没有特殊情况,我更希望找到一个通用的利弊比较.
python是否与java Preconditions库有任何等价物.例如
在java中,你可以检查这样的参数:
public void dummymethod(Cat a, Dog b) {
Preconditions.checkNotNull(a, "a can not be null.");
Preconditions.checkNotNull(b, "b can not be null.");
/**
your logic
**/
}
Run Code Online (Sandbox Code Playgroud)
如果a或b为null,Java会抛出Runtime Exception,python如何,python的最佳实践是什么?
我有一个文件"test.txt":
this is 1st line
this is 2nd line
this is 3rd line
Run Code Online (Sandbox Code Playgroud)
以下代码
lines = open("test.txt", 'r')
for line in lines:
print "loop 1:"+line
for line in lines:
print "loop 2:"+line
Run Code Online (Sandbox Code Playgroud)
只打印:
loop 1:this is 1st line
loop 1:this is 2nd line
loop 1:this is 3rd line
Run Code Online (Sandbox Code Playgroud)
它根本不打印loop2.
两个问题:
open()返回的文件对象是可迭代的吗?这就是为什么它可以用于for循环?
为什么loop2根本没有印刷?
语境:
我想使用log4j将审计相关的日志写入特定的日志文件,比方说audit.log.我不想使用syslogappender(基于udp),因为我不想容忍数据丢失.另外,当文件达到一定大小时,我使用logrotate来旋转audit.log.
问题:
我遇到的是,当logrotate将文件audit.log旋转到audit.log.1时,log4j继续写入audit.log.1而不是写入audit.log.
可能的方法:
我知道除了使用logrotate之外我可以使用rollingfileappender进行日志轮换,所以当scrollfileappender滚动文件时,它会毫无困难地切换到新文件.但我不能使用rollingfileappender的原因是我想使用logrotate的post旋转功能在旋转发生后触发一些脚本,而滚动文件无法提供.
我能想到的另一种绝望的方法是自己编写一个log4j自定义appender来关闭日志文件(audit.log.1)并在检测到文件被旋转时打开新文件(audit.log).
我从未使用ExternallyRolledFileAppender,但是如果可以使用logrotate post rotate将信号发送到ExternallyRolledFileAppender并使log4j知道文件被旋转,并开始写入新文件?
题:
只是想知道是否有一些像已经发明/写的那样的追加者?或者我还有其他选择来解决这个问题吗?
log4j logrotate rollingfileappender fileappender log-rotation
这是Ubuntu 12.04 env.我在盒子上的端口8020上运行TCP服务:
我的问题是:
为什么端口8020在nmap中没有被发现作为开放端口,而nestat说它正在监听?
如果我跑
netstat -tuplen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 127.0.0.1:9001 0.0.0.0:* LISTEN 0 10564 1917/python
tcp 0 0 127.0.0.1:8020 0.0.0.0:* LISTEN 117 29259 4448/java
Run Code Online (Sandbox Code Playgroud)
但如果我跑
nmap -v -sT 127.0.0.1
Starting Nmap 5.21 ( http://nmap.org ) at 2012-08-10 08:51 PDT
Initiating Connect Scan at 08:51
Scanning localhost (127.0.0.1) [1000 ports]
Discovered open port 53/tcp on 127.0.0.1
Discovered open port 22/tcp on 127.0.0.1 …Run Code Online (Sandbox Code Playgroud) python ×3
java ×2
apache-storm ×1
collections ×1
fileappender ×1
iterable ×1
linux ×1
log-rotation ×1
log4j ×1
logrotate ×1
m2eclipse ×1
netcat ×1
nmap ×1
port ×1
puppet ×1
pydev ×1
vim ×1