小编Pau*_*lan的帖子

使用Python创建SVG

我正在构建一组包含不幸数量的硬编码值的SVG文件(它们必须打印一些大小为mm的元素,而其他元素必须按百分比缩放,并且大多数值是相对于彼此定义的).而不是手工管理这些数字(天堂禁止我想改变一些东西),我想我可能会用我可信赖的锤子蟒蛇来完成任务.

SVG 1.1本身并不支持任何可以让我按照自己的意愿行事的变量方案,而且我不想将javascript或不稳定的w3c草案规范引入混合中.一个显而易见的解决方案是使用字符串格式来读取,解析和替换SVG文件中的变量.对于更大的文档来说,这似乎是一个坏主意,但具有简单和便携的优点.

我的第二个问题是研究可用的python-> svg库.不幸的是,似乎少数选项往往太新(pySVG仍然有一个不稳定的界面),太旧(自2005年以来没有更新),或被放弃.我没有密切关注,但我的感觉是图表应用程序不够灵活,无法生成我的文档.

我遇到的第三个选项是使用一些其他绘图工具(例如cairo)可以说服推出svg.这具有(潜在)缺点,即不能原生地支持对我来说如此重要的绝对元素大小,但可能包括输出PDF的能力,这将是方便的.

我已经完成了谷歌搜索,所以我正在寻找那些使用过任何提到的方法或者可能知道其他方法的人的意见.选择任何解决方案的长期稳定性对我来说很重要(这是手动编码的原始原因,而不仅仅是使用插图画家).

在这一点上,我倾向于第一个解决方案,因此欢迎使用python来解析和替换XML文件中的变量的最佳实践建议.

python xml graphics svg

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

清理嵌套的Try/Excepts

我刚刚写了一大堆代码,这些代码让我觉得它比最优化的嵌套要多得多.我想了解如何改进这种风格的建议,尤其是它更符合"Flat比嵌套更好".

for app in apps:
    if app.split('.', 1)[0] == 'zc': #only look for cron in zc apps
        try:
            a = app + '.cron'
            __import__(a)
            m = sys.modules[a]

            try:
                min = m.cron_minute()
                for job in min:
                    k.add_interval_task(job[0], 'minute task', r(M_LB, M_UB),
                                        60*job[1], 
                                        kronos.method.threaded, (), ())
            except AttributeError: #no minute tasks
                pass

            try:
                hour = m.cron_hour()
                for job in hour:
                    k.add_daytime_task(job[0], 'day task', range(1, 8), None,
                                       (job[1], r(H_LB, H_UB)), 
                                       kronos.method.threaded, (), ())
            except AttributeError: #no hour tasks
                pass

        except ImportError: #no cron …
Run Code Online (Sandbox Code Playgroud)

python

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

在保留属性的同时使用lxml.objectify替换节点文本

lxml.objectify像这样使用:

from lxml import objectify

o = objectify.fromstring("<a><b atr='someatr'>oldtext</b></a>")

o.b = 'newtext'
Run Code Online (Sandbox Code Playgroud)

结果<a><b>newtext</b></a>,丢失节点属性.它似乎是直接用新创建的元素替换元素,而不是简单地替换元素的文本.

如果我尝试使用o.b.text = 'newtext',它告诉我 attribute 'text' of 'StringElement' objects is not writable.

有没有办法在客观化中做到这一点,而不必将其分解为不同的元素并涉及etree?我只想替换内部文本,同时保留节点的其余部分.我觉得我在这里缺少一些简单的东西.

python xml lxml

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

从garmin读取信息

我想从garmin地图中提取信息(经度,纬度,位置名称),并在我的java Web应用程序中使用此信息的数据库.但我不知道如何从garmin地图中提取诸如城市之类的区域信息作为文本或二进制文件.如果有人知道它请帮助我.

map geospatial garmin

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

好的多人/ mmo客户端<>服务器游戏是否在运动计算中使用延迟?

这里有几个问题.

想象一下,我有客户端A将要向服务器发送以下消息:"START START VVEMENT FORWARD".

服务器不会立即收到此消息,因为延迟会导致延迟.

问题1:ping(或更好:往返时间)是客户端向服务器发送消息并接收响应所需的时间.如果您可以忽略服务器注意到它已收到消息并开始发送响应(这应该非常短)所需的时间,这是否意味着以下内容?

  1. 客户端向服务器发送一些内容所需的时间=往返时间/ 2
  2. 服务器向客户端发送内容所需的时间=往返时间/ 2

因此,当客户端A发送该消息时,服务器将在客户端发送消息后的往返时间/ 2毫秒内接收该消息.这引出了我的下一个问题.

问题2:如果客户端首先发送包,然后在实际执行客户端命令(在这种情况下:向前移动)之前等待往返时间/ 2毫秒以补偿延迟/延迟?

现在,服务器将向所有附近的玩家发送以下消息:"客户端A现在正在向前移动".然后,这些客户端将确保客户端a的角色开始移动,这将引导我进入下一个问题.

问题3:客户端是否应该收到其他客户端已移动的消息,并考虑到此消息是由服务器往返时间/ 2毫秒发送的?那么用于运动计算时间戳的当前时间应该减少往返时间/ 2?

在我看来,所有这些方法都会确保客户端之间的同步得到改善,因为延迟会被考虑在内.这是正确的做事方式吗?大多数其他好的多人游戏都这样做吗?您想提供的任何评论,建议,替代方案或随机但相关的呼喊?提前致谢.

synchronization latency multiplayer roundtrip

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

在Clarion中发布到网上

我正在为客户开发RESTful API.问题是,他正在使用一种名为Clarion的相当模糊的语言.它是专有的和封闭的,文档不是免费在线提供的.

每当我们讨论将数据从他的代码传递给我的时候,然后又回来,他开始谈论"ftp文件上传"和直接服务器到服务器的SQL.毋庸置疑,这些想法带回了过去不好的日子.我做了一些谷歌搜索,我找不到任何证据表明这种语言能够创建HTTP Post请求,更不用说使用SSL加密来保护它们免受窥探.

我正在寻找具体的建议,我可以指导他实现他的交易结束.我特别希望避免尝试通过FTP将XML请求作为文件传递,或者将它们写入磁盘并调用某些脚本.不言而喻,但我也不想在我的服务器上运行专有的号角服务器代码或DLL.

Clarion能否生成POST请求?在Clarion中难以生成XML吗?是否有一个更简单/更容易使用的格式,我的客户可能有更多的成功?没有数据比键/值对更复杂.

我在python中编码,但如果有一些方法可以将数据传送到我的服务器,我可以反序列化任何合理的数据格式.

network-programming http clarion

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

Prolog是和=.为什么它们的工作方式与逻辑约束不同?

我仍然是prolog的新手,我正试图解决为什么数学约束似乎不像逻辑那样工作的方式.

似乎有足够的信息来解决这个问题:

f(A, B) :- A = (B xor 2).
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试时f(C, 3),我回来了C = 3 xor 2.,这不是很有帮助.更不实用的是,如果输入被反转,它根本无法找到解决方案.使用is而不是=使示例输入返回正确的答案,但反过来拒绝甚至尝试任何东西.

从我之前的实验中看来,似乎我可以编写一个使用二进制文件逻辑上完成这个功能而没有麻烦的功能,事实上它会双向进行.是什么让数学与众不同?

作为参考,我第一次尝试解决我的问题看起来像这样:

f(Input, Output) :- 
    A is Input xor (Input >> 11),
    B is A xor ((A >> 7) /\ 2636928640),
    C is B xor ((B << 15) /\ 4022730752),
    Output is C xor (C >> 18).

这从输入到输出都可以正常工作,但不是相反.如果我切换is=,它会产生一个长的逻辑序列,其值被替换但无法找到数值解.

我正在使用xor内置的swi-prolog ,但它可以很容易地定义.我希望能够使用prolog在两个方向上完成这个功能,并且真的不希望必须手动实现逻辑行为.关于如何重新解决问题的任何建议都是值得欢迎的.

prolog bitwise-operators

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


为什么这么多应用程序/框架将其配置文件保持为未执行的格式?

许多框架将其配置文件保留为与程序其余部分不同的语言.例如,Appengine以yaml格式保持配置.比较,DJango settings.py是一个python模块.我可以看到很多不利之处.

如果它与程序的其他部分使用相同的语言,我可以

在配置文件中做有趣的事情.

 MEDIA_DIR = os.path.join(os.path.dir(__file__), 'media')
 #Or whaever the correct cals are, you get the idea.
Run Code Online (Sandbox Code Playgroud)
  • 不必学习新的(公认的轻量级)格式
  • 我的工具按预期工作.
  • 我可以做import conf

我可以看到它的优点,如果它是像C/C++等重量级语言,但对于python,为什么它有意义.这似乎就是在不增加任何好处的情况下夺走权力.

python settings configuration yaml

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