小编phi*_*hag的帖子

如何模块化Python应用程序

我有很多使用通用定义的脚本.如何将它们分成多个文件?此外,在我的场景中无法以任何方式安装应用程序; 必须可以同时运行任意数量的版本,并且它必须在没有超级用户权限的情况下工作.我想出的解决方案是:

  • 每个脚本中都有重复的代码.凌乱,可能是最糟糕的计划.
  • 将所有脚本和公共代码放在一个目录中,并用于from . import加载它们.这种方法的缺点是我想将我的库放在除应用程序之外的其他目录中.
  • 将公共代码放在自己的目录中,编写一个__init__.py导入所有子模块的文件,最后用于from . import加载它们.保持代码组织,但维护__init__.py和限定名称需要一些开销.
  • 将库目录添加到 sys.pathimport.我倾向于这一点,但我不确定是否摆弄sys.path 好的代码.
  • 使用加载 execfile (exec在Python 3中).结合前两种方法的优点:每个模块只需要一行,我可以使用专用.另一方面,这避开了python模块概念并且对全局命名空间进行了规范.
  • 使用编写和安装模块 distutils.这将为所有python脚本安装库,并需要超级用户权限并影响其他应用程序,因此不适用于我的情况.

什么是最好的方法?

python

5
推荐指数
1
解决办法
2910
查看次数

灵活、可靠和便携的服务发现

我正在寻找一种方法,让 LAN 中的客户端无需任何配置即可找到我的服务器应用程序的所有实例。我不想自己破解某些东西,而是想使用现有的解决方案。就我个人而言,我需要用 Python 完成它,但我很高兴听到任何其他语言的解决方案。

那么为什么我不使用avahiOpenSLP或其他一些Zeroconf / SLP解决方案?好吧,还有一些额外的标准,我的印象是上述系统都不符合它们。

我正在寻找一种解决方案:

  • 灵活。它必须不需要超级用户权限,即只使用端口>1024。
  • 固体。它必须在一台机器上允许多个相同和不同服务类型的服务,并在启动广告服务器的实例停止或崩溃时继续广告服务。
  • 便携式。它必须几乎可以在任何地方运行,或者至少在 *BSD、Debian/gentoo/RedHat/SuSe Linux、Mac OS X、Solaris 和 Windows NT 上运行。
  • 。理想情况下,一个 Python 脚本就是整个解决方案。我对地址自动配置或类似的东西一点也不感兴趣,尽管我不情愿地接受一个具有许多我不需要的功能的解决方案。此外,任何一次性设置都是严格禁止的。

我期待这样的事情:

def registerService(service): # (type, port)
    if listen(multicast, someport):
        if fork() == child:
            services = [service]
            for q in queriesToMe():
                if q == DISCOVERY:
                    answer(filter(q.criteria, services))
                elif q == ADVERTISE and q.sender == "localhost":
                    services.append(q.service)
    else:
        advertiseAt("localhost", service)
Run Code Online (Sandbox Code Playgroud)

python language-agnostic service-discovery

5
推荐指数
1
解决办法
2781
查看次数

如果没有cmp,je如何工作?

.L10:
    leal    (%rsi,%rsi,4), %edx
    movsbl  %al,%eax
    addq    $1, %rdi
    leal    -48(%rax,%rdx,2), %esi
    je  .L3
Run Code Online (Sandbox Code Playgroud)

在上面只有cmp前面je,它在这里如何工作?

64-bit assembly

5
推荐指数
2
解决办法
751
查看次数

python只获取类属性没有超类

那么是否有可能只为最具体的类获取属性的字典/列表?到目前为止我正在使用

   for attr, value in obj.__class__.__dict__.iteritems():
Run Code Online (Sandbox Code Playgroud)

但这也会给我在超类中定义的属性。有什么办法可以避免这种情况吗?

python

5
推荐指数
1
解决办法
2095
查看次数

来自 VK_Code 的 ASCII 字符

我有一个小的 WIN32 C 应用程序,我在其中使用该KBDLLHOOKSTRUCT结构。此结构包含用于按下键的 VK 代码。

我尝试将其转换为 ASCII 字符。为此,我使用了 Function MapVirtualKey,它运行良好。

唯一的问题是,一个 VK 代码可以保留多个字符。例子:

在我的键盘(瑞士-德语)上存在 key-char .。如果我按Shift+.然后它会创建一个:. VK 代码是相同的。那没问题,我还可以检查是否Shift被按下或被Caps Lock激活。

我唯一的问题是:我怎样才能得到字符 ':'?我需要这样的功能:

GetKeyChar(vkCode, shift)

我需要这个来获得键盘的“正常”和“移位”值。当然,我可以对此进行硬编码,但我不喜欢以这种方式进行。

c winapi keycode shift

5
推荐指数
1
解决办法
8016
查看次数

使用SIGTERM终止后,Selenium Server不会绑定到套接字

被杀一次后,selenium服务器挂起所有进一步的启动,甚至没有尝试获取服务器端口.

重新启动可以解决问题.作为一个不同的用户运行也会使selenium再次启动,但是在进程被杀之后它将不再起作用.

这是在VirtualBox VM中的Linux 2.6.32-5-amd64(debian squeeze)上.看记录系统时,它的调用工作时,它不是,一些部件似乎锁定前的插座甚至约束.该硒日志是有很大帮助没有.

输出也没有任何指示:

$ java -jar selenium-server-standalone-2.28.0.jar
Dec 27, 2012 5:41:35 PM org.openqa.grid.selenium.GridLauncher main
INFO: Launching a standalone server
17:41:35.703 INFO - Java: Sun Microsystems Inc. 14.0-b16
17:41:35.704 INFO - OS: Linux 2.6.32-5-amd64 amd64
17:41:35.737 INFO - v2.28.0, with Core v2.28.0. Built from revision 18309
17:41:35.867 INFO - RemoteWebDriver instances should connect to: http://127.0.0.1:4444/wd/hub
17:41:35.868 INFO - Version Jetty/5.1.x
17:41:35.868 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]
17:41:35.869 INFO - Started …
Run Code Online (Sandbox Code Playgroud)

java linux selenium jetty

5
推荐指数
1
解决办法
1064
查看次数

从异步捕获抛出时堆栈跟踪不完整

为什么在重新抛出异步异常时没有异步堆栈跟踪?对于节点 12+,运行以下代码时出现异常:

async function crash() {
    try {
        await (async () => {throw new Error('dead');})();
    } catch (e) {
        throw new Error('rethrow');
    }
}

async function foo() {
    await new Promise(resolve => setTimeout(() => resolve(), 1));
    await crash();
}

async function entrypoint() {
    try {
        await foo();
    } catch(e) {
        console.log(e.stack);
    }
}
entrypoint();
Run Code Online (Sandbox Code Playgroud)

非常不完整:

Error: rethrow
    at crash (/async-stackt/crash.js:6:15)
Run Code Online (Sandbox Code Playgroud)

通过在 的开头定义异常crash()找到了一种解决方法,这会产生更好的结果:

Error: rethrow
    at crash (/workaround.js:2:17)
    at foo (/workaround.js:12:11)
    at async entrypoint (/workaround.js:17:9)
Run Code Online (Sandbox Code Playgroud)

这不是最优的,因为无论是否需要,都必须提前构建错误,并且堆栈跟踪有些不精确。 …

javascript v8 node.js

5
推荐指数
1
解决办法
976
查看次数

我试图将一个方法转发给super,但偶尔也不起作用.为什么?

这是有问题的代码,为此示例简化:

/** A version of Hashtable that lets you do
 * table.put("dog", "canine");, and then have
 * table.get("dogs") return "canine". **/
public class HashtableWithPlurals extends Hashtable {
  /** Make the table map both key and key + "s" to value. **/
  public Object put(Object key, Object value) {
    super.put(key + "s", value);
    return super.put(key, value);
  }
}
Run Code Online (Sandbox Code Playgroud)

java

4
推荐指数
1
解决办法
116
查看次数

Python 3.2不会导入cookielib

我到处寻找这个,但是找不到答案.我检查了我的python版本,它是版本3.2.当我尝试导入时cookielib收到:

ImportError: No module named cookielib

我已经看到它在Python 3.0中被重命名为 http.cookiejar并且它将自动导入cookielib.

我想也许在我的python配置中有一些疯狂的错误,所以我想我应该尝试http.cookiejar像这样导入import http.cookiejar.这并不是全部,我得到并且错误:

EOFError: EOF read where not expected.

这不是我预期的错误,因为import http.cookies进口就好了.

有没有人能解决这个问题?我在俯瞰什么?

完全错误:

Traceback (most recent call last):
  File "C:\Users\Spencer\Downloads\selenium-2.20.0.tar\selenium-2.20.0\selenium-2.20.0\test", line 1, in <module>
    import urllib.request, urllib.parse, http.cookiejar
EOFError: EOF read where not expected
Run Code Online (Sandbox Code Playgroud)

python

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

为什么char**不能成为C++中以下函数的返回类型?

我在C++中有以下功能:

char** f()
{
    char (*v)[10] = new char[5][10];
    return v;
}
Run Code Online (Sandbox Code Playgroud)

Visual Studio 2008表示如下:

error C2440: 'return' : cannot convert from 'char (*)[10]' to 'char **'
Run Code Online (Sandbox Code Playgroud)

为了使这个功能起作用,返回类型究竟应该是什么?

c c++ function return-type char

3
推荐指数
3
解决办法
868
查看次数