小编Roy*_*yHB的帖子

google.maps.Size允许哪些单位?

google.maps.Size函数的文档说:

Size(width:number, height:number, widthUnit?:string, heightUnit?:string)
Run Code Online (Sandbox Code Playgroud)

widthUnit和heightUnit参数的默认值似乎是像素.如果它被称为新的google.maps.Size(30,30,"px","px"),该函数可以正常工作

我想知道支持哪些其他单位类型.

google-maps-api-3

7
推荐指数
1
解决办法
4578
查看次数

减少大字典使用的内存

我需要创建一个内存对象,其中包含9位整数的键和与每个键相关联的布尔值.我一直在使用dict,如下面的简化示例:

#!/usr/bin/python
from __future__ import print_function
import sys

myDict = {}
for n in range(56000):
        myDict[n] = True

print('Count:',len(myDict),' Size:', sys.getsizeof(myDict))
Run Code Online (Sandbox Code Playgroud)

我需要能够查找并检索与每个键关联的布尔值.问题是字典的大小.在64位Linux系统上使用Python 2.7和上面的例子,根据sys.getsizeof(),dict的大小是3.1兆字节.(每个条目大约56个字节,用于存储9位数加上一个布尔值)

我需要在dict中存储(约)55.000个条目的布尔状态.每个dict键是一个9位整数.我尝试使用整数和str(theInteger)作为键,而不改变dict的大小.

我应该使用其他类型的数据结构或方法来保存具有如此大数据集的内存吗?

python python-2.7

6
推荐指数
1
解决办法
4927
查看次数

Linux:从shell命令创建共享内存段

我想从Unix启动脚本创建一个共享内存段.创建的段将由几个PHP脚本访问.

是否有shell命令来创建指定密钥,模式,权限和大小的共享内存网段?

ipc shared-memory

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

使用socat复用传入的TCP连接

外部数据提供商与我们的一台服务器建立了TCP连接。

我想使用socat来“复用”传入的数据,以便多个程序可以接收从外部数据提供程序发送的数据。

socat -u TCP4-LISTEN:42000,reuseaddr,fork OPEN:/home/me/my.log,creat,append
Run Code Online (Sandbox Code Playgroud)

愉快地接受传入的数据并将其放入文件中。

我想做的是允许本地程序连接到TCP端口并开始接收从连接到外部端口的数据的操作。我试过了

socat -u TCP4-LISTEN:42000,reuseaddr,fork TCP4-LISTEN:43000,reuseaddr 
Run Code Online (Sandbox Code Playgroud)

但这不起作用。我还没有在socat doco中找到任何与背对背TCP服务器相关的示例。

有人可以指出我正确的方向吗?

socat

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

Python 日志记录。将格式化程序与 logging.exception() 一起使用

我有一个日志格式化程序,当前将所有常规日志级别格式化为 json 字符串。当我想查看日志时,我使用带有 javascript 的网页将 json 转换为 's in a table。我使用的格式化程序是:

formatter = logging.Formatter(
    '{"datetime":"%(asctime)s","level":"%(levelname)s","app":"%(app_name)s","module":"%(module)s",' +
    '"line":"%(lineno)d","function":"%(funcName)s","msg":"%(msg)s"}'   #<switch2>'
)
Run Code Online (Sandbox Code Playgroud)

这工作正常。我现在想使用 logging.exception() 记录异常。

似乎 logging.exception 不提供在所有其他日志记录级别中找到的项目的字典。

如何捕获 logging.exception 提供的堆栈跟踪,以便我可以将其转换为与我为所有其他类型的日志条目创建的 json 兼容的形式?对于 logging.exception,我需要的是获取堆栈跟踪并将其放入 json 的“msg”元素中。如果 logging.exception 不提供其他 dict 元素,如 asctime、level 等,我可以自己即时创建它们。

python logging error-logging python-2.7

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

mongo查找具有指定键的对象的字段

mongo db的文档看起来像:

{
    "_id":  : ObjectId("55cb43e8c78b04f43f2eb503"),
    <some fields>
    "topics": {
        "test/23/result": 149823788,
        "test/27/result": 147862733,
        "input/misc/test": 14672882
    }
}
Run Code Online (Sandbox Code Playgroud)

我需要查找具有包含特定键的主题字段的所有文档.即查找所有具有topic.key ="test/27/result"的文档

我已经尝试了很多东西但是没有工作,也没有尝试下面的工作,他们没有返回记录事件,虽然有些应该匹配:

db.collName.find({"topics.test/27/result": {$exists:true}});
db.collName.find({"topics.test\/27\/result": {$exists:true}});
Run Code Online (Sandbox Code Playgroud)

如何使查询工作?

斜杠字符由另一个进程插入.它们是mqtt主题名称.

mongodb mongodb-query

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

log4javascript - 不显示跟踪消息

我正在使用log4javascript版本1.4.3.
在我的应用程序中,它适用于除trace之外的所有日志级别.为了简化问题并确保问题不在我的应用程序中,我使用作者示例代码作为示例并添加了setThreshold(log4javascript.TRACE),然后添加了一行来生成跟踪条目(我也删除了他的例子中只与ajaxAppender相关的行只留下了popUpAppender).

当我运行代码时,错误调试消息出现在log4javascript popUp窗口中,但没有跟踪消息.

显然,我没有正确理解跟踪级别的使用或跟踪消息的配置.如果有人可以指出我的方式错误,那么我可以修复我的应用程序日志记录.

下面失败的示例代码.

<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
        <title>log4javascript example from  manual</title>
        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
        <meta name="author" content="Tim Down - tim@log4javascript.org" />
        <meta name="description" content="log4javascript, a logging framework for JavaScript based on log4j" />
        <meta name="robots" content="all" />
        <script type="text/javascript" src="/tracker/libraries/log4javascript.js"></script>
        <script type="text/javascript">
            //<![CDATA[
            var log = log4javascript.getLogger();
            var popUpAppender = new log4javascript.PopUpAppender();
            var popUpLayout = new …
Run Code Online (Sandbox Code Playgroud)

javascript log4javascript

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

在try/except中使用装饰器包装类方法

我有一个通用函数,它将有关异常的信息发送到应用程序日志.我exception_handler在类中的方法中使用函数.传入和调用的应用程序日志处理程序exception_handler创建一个实际发送到日志文件的JSON字符串.一切正常.

def exception_handler(log, terminate=False):
    exc_type, exc_value, exc_tb = sys.exc_info()
    filename, line_num, func_name, text = traceback.extract_tb(exc_tb)[-1]
    log.error('{0} Thrown from module: {1} in {2} at line: {3} ({4})'.format(exc_value, filename, func_name, line_num, text))
    del (filename, line_num, func_name, text)
    if terminate:
        sys.exit()
Run Code Online (Sandbox Code Playgroud)

我用它如下:(一个超简化的例子)

from utils import exception_handler

class Demo1(object):
    def __init__(self):
        self.log = {a class that implements the application log}

    def demo(self, name):
        try:
            print(name)
        except Exception:
            exception_handler(self.log, True)
Run Code Online (Sandbox Code Playgroud)

我想改变exception_handler用作大量方法的装饰器,即:

@handle_exceptions
def func1(self, name)
    {some code that gets …
Run Code Online (Sandbox Code Playgroud)

python decorator python-2.7 python-decorators

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

如果n秒后没有读取,则Twisted TCP服务器超时

通过以下示例,如何在读取时最好地实现看门狗定时器?

如果没有收到数据,我希望服务器在n秒后关闭连接.然后,客户端必须重新连接才能继续发送数据.

from twisted.internet import reactor, protocol as p
from threading import Lock

class Echo(p.Protocol):
    def __init__(self, factory):
        self.factory = factory

    def connectionMade(self):
        with self.factory.mutex:
            self.factory.clients.append(self)

    def connectionLost(self, reason):
        print('Connection lost)
        with self.factory.mutex:
            self.factory.clients.remove(self)

    def dataReceived(self, data):
        self.transport.write(data)

class EchoFactory(p.Factory):
    def __init__(self):
        self.clients = []
        self.mutex = Lock()


    def buildProtocol(self, addr):
        print 'Connection by', addr
        return Echo(self)

reactor.listenTCP(5007, EchoFactory())
reactor.run()
Run Code Online (Sandbox Code Playgroud)

twisted

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

Twisted ReconnectingClientFactory - 自动重新连接还是显式调用connector.connect()?

当使用 Twisted ReconnectingClientFactory 并且连接丢失时,我是否需要从 clientConnectionLost 方法中调用 connector.connect() 还是会自动发生?

答案似乎很明显,因为它毕竟是 ReconnectingClientFactory但 Twisted 文档在这里说了一些让我想知道的东西:

“调用 connector.connect() 可能很有用 - 这将重新连接。”

术语“可能有用”的措辞和使用导致了这个问题,因为基本客户端工厂的 api 文档也说了同样的事情。

Max 的答案是正确的,但经过进一步研究,我认为“更正者”的答案如下:

def clientConnectionLost(self, connector, reason):
    # do stuff here that is unique to your own requirements, then:
    ReconnectingClientFactory.clientConnectionLost(self, connector, reason)
Run Code Online (Sandbox Code Playgroud)

这允许您执行应用程序所需的专门操作,然后调用工厂代码以允许 Twisted 为您调用 retry()。

twisted twisted.internet twisted.client

2
推荐指数
1
解决办法
2052
查看次数

MarkerClustererPlus:标记在集群中显示/隐藏时的事件?

使用 MarkerClustererPlus 时 - 我想在一个事件上挂一些代码,该事件是由markerClusterer 显示/隐藏集群中的标记时触发的。

MC+ Doco 似乎没有表明这样的事件。

查看 MC+ 代码,似乎聚类器使用了 marker.setMap() 并且标记没有“map_changed”事件。

我可以将代码添加到集群器以在调用 marker.setMap 时触发事件,但我不想更改运行良好的代码 - 不想在更新 markerClustererPlus 时创建配置管理问题。

有什么建议?

google-maps-api-3

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

jquery:even:奇怪没有按预期工作IE10

在有桌子的页面上,

在$(document).ready()中,我有以下代码:

   populateTable();  // creates and appends TR's to the table from in-memory vars
   $("#table1Body tr:even").css("background-color", "rgb(181,221,181)");
   $("#table1Body tr:odd").css("background-color", "rgb(255,255,220)");    
Run Code Online (Sandbox Code Playgroud)

这在Firefox,Chrome和Safari中可以正常工作,但......

在IE10中,只有少数(有时没有)表行被交替着色直到我将鼠标移动到屏幕上的表中并再次出来,然后再次进入.我第一次将鼠标移动到表格中时,一些行获得了正确的背景颜色,但有些则没有.当我将鼠标移出并再次返回时,所有行都会获得正确的背景.

populateTable函数不执行任何可能导致与任意完成相关的问题的ajax或其他任何东西,它只是将内存中的变量加载到s中并将它们追加到.为了验证这一点,我将代码捆绑到一个函数中并从setTimeout执行函数,延迟时间为5秒 - 这并没有改变.

有什么想法吗?

jquery internet-explorer

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

两个补充相同的代码python/JavaScript不同的结果

在python 2.7中,以下代码返回正确的结果(-18027917)

from __future__ import print_function

def twos_comp(val, bits):
    if (val & (1 << (bits - 1))) != 0:
        val -= 1 << bits
     return val

valBinary = "110111011001110101001110011"
print(twos_comp(int(valBinary, 2), len(valBinary)))
Run Code Online (Sandbox Code Playgroud)

在JavaScript(Node.js)中,以下代码返回不正确的结果(1995238003)

function toTwosComplement(val, bits) {
    if ((val & (1 << (bits - 1))) != 0) {
        val -= (val - 1) << bits;
    }
    return val;
}

valBinary = "110111011001110101001110011";  // same as python example
console.log(toTwosComplement(parseInt(valBinary, 2), valBinary.length));
Run Code Online (Sandbox Code Playgroud)

显然,位运算符(或int/parseInt)的行为有所不同,但我无法看到它是什么.

javascript python node.js

0
推荐指数
1
解决办法
112
查看次数