小编jdm*_*jdm的帖子

两个矩形之间的差异(XOR),如矩形?

我正在寻找一种简单的方法来计算两个矩形之间的差异.我的意思是所有属于一个矩形的点,但不属于两个(所以它就像XOR).

在这种情况下,矩形是轴对齐的,因此只有直角.我相信差异区域可以用0-4个矩形表示(如果两个矩形相同则为0,如果只有一个边缘不同则为1,一般情况下为4),我想将差异区域作为列表矩形

您还可以将其视为在移动/调整实体矩形时必须更新的屏幕区域.

示例:将矩形"a"的宽度加倍 - 我想要添加的区域(R).

+----+----+
| a  | R  |
|    |    |
+----+----+                   
Run Code Online (Sandbox Code Playgroud)

相交的矩形(a和b) - 我希望T,L,R和B在矩形中给出的区域(可能的其他分区),但不包括X:

+------------+  a
|      T     |
|·····+------+-----+  b
|  L  | X    |  R  |
|     |      |     |
+-----+------+·····|
      |    B       |
      +------------+
Run Code Online (Sandbox Code Playgroud)

我更喜欢python解决方案/库,但任何强大的算法都会有所帮助.

geometry rectangles

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

从内存地址创建python对象(使用gi.repository)

有时我需要调用一个只存在于C中的gtk/gobject函数,但返回一个带有python包装器的对象.以前我使用过基于ctypes的解决方案,效果很好:

http://faq.pygtk.org/index.py?req=show&file=faq23.041.htp

现在我从PyGtk("import gtk")转向GObject-introspection("来自gi.repository import Gtk"),我可以使用什么呢?

python ctypes pygobject

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

NoSQL数据库的开销和(in)效率?

我有一个关于NoSQL类型数据库的问题,特别是MongoDB,但它通常适用于大多数基于键值或基于文档的存储.NoSQL的一些卖点是速度和可伸缩性,但在我看来,与关系数据库相比,存在显着的开销.

  1. 你有很多重复,因为(几乎)一切都是非标准化的.你无法做很多事情,因为这是这类数据库的重点.我更关心下一个:

  2. 有很多开销,因为如果你有一个JSON文档,你必须保存每个文档的所有键(和所有结构信息).因此,对于10000行,您必须保存字符串'age','name',... 10000次.

  3. 数据库不能做很多聪明的事情,比如创建索引或二叉树(以节省时间)或以紧凑的方式存储整数(因为其中一个自由格式的文档可能有一个字符串,其他所有的都有一个int,等等.)

我知道你可以编写你自己的视图或map/reduce算法来获得类似索引的东西,但乍一看似乎对于一般情况来说NoSQL必须是非常低效的空间和CPU.

真的那么糟糕吗?NoSQL数据库中有哪些优化(比如MongoDB)?与使用关系数据库相比,存储大量相同的复杂JSON文档的开销是多少?

performance overhead nosql

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

python 中匿名函数的配方?

我正在寻找允许在 python 中内联定义函数或多行 lambda 的最佳食谱。

例如,我想执行以下操作:

def callfunc(func):
   func("Hello")

>>> callfunc(define('x', '''
...     print x, "World!"
... '''))
Hello World!
Run Code Online (Sandbox Code Playgroud)

define我在这个答案中找到了该函数的示例:

def define(arglist, body):
    g = {}
    exec("def anonfunc({0}):\n{1}".format(
        arglist,
        "\n".join("    {0}".format(line) for line in body.splitlines())), g)
    return g["anonfunc"]
Run Code Online (Sandbox Code Playgroud)

这是一种可能的解决方案,但并不理想。理想的功能是:

  • 更聪明地处理缩进,
  • anonfunc更好地隐藏内部结构(例如,在函数范围内没有)
  • 提供对周围范围/捕获中的变量的访问
  • 更好的错误处理

以及一些我没有想到的事情。我有一个非常好的实现,完成了上述大部分内容,但不幸的是我失败了。我想知道是否有其他人做过类似的东西。

免责声明:

我很清楚这在 Python 用户中是有争议的,并且被认为是 hack 或 unpythonic。我还知道 python-dev 邮件列表上有关多行 lambda 的讨论,并且故意省略了类似的功能。然而,从同样的讨论中我了解到许多其他人也对这样的功能感兴趣。

我不是在问这是否是一个好主意,而是:既然有人决定实施这个,(要么出于乐趣和好奇,要么出于疯狂,真正认为这是一个好主意,要么被枪指着)如何使匿名define工作尽可能接近def使用Python(2.7或3.x)当前的设施?

例子:

更详细地解释一下为什么,这对于 GUI 中的回调来说非常方便:

# gtk example:
self.ntimes = 0
button.connect('clicked', …
Run Code Online (Sandbox Code Playgroud)

python anonymous-function

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

在Gjs/Gnome Shell中调用DBus方法

如果我有总线名称,对象路径和接口,如何从Gjs调用DBus方法(在gnome-shell扩展中)?

我正在寻找以下python代码的等价物:

import dbus
bus = dbus.SessionBus()
obj = bus.get_object("org.gnome.Caribou.Keyboard", "/org/gnome/SessionManager/EndSessionDialog")
obj.Open(0, 0, 120, dbus.Array(signature="o"))
Run Code Online (Sandbox Code Playgroud)

(请注意,由于某些python-dbus魔法,我没有显式使用该接口,但我可以使用iface = dbus.interface(obj, "org.gnome.SessionManager.EndSessionDialog").由于我有接口名称,我可以使用查询它的解决方案.另请注意,此示例将是在Gjs中愚蠢,因为它回调到gnome-shell)

dbus gnome-shell gjs

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

使用tinycss获取元素的计算样式

给定一个 css 样式表和一些 XML / HTML 元素,我如何使用tinycss来获取元素的计算样式?

例如:

p {
  font-family: Arial;
}
.foo {
  color: red;
}
Run Code Online (Sandbox Code Playgroud)
<p><span class="foo"></span></p>
Run Code Online (Sandbox Code Playgroud)

我想检查内部跨度元素并发现它具有字体系列和颜色集,并且可能某些属性具有默认值(例如字体大小)。

tinycss 似乎只能解析 css (部分地,没有选择器)。cssselect可以解析选择器,并给出它们的特殊性。它可以接受一个选择器,将其转换为 xpath,这样我就可以询问“哪个元素与该选择器匹配”。但我想做的几乎相反:“这个元素的计算样式是什么?”

我可以获得与我的元素匹配的所有选择器的列表,然后是与所有父元素匹配的所有选择器的列表,并实现 CSS 级联和特异性算法,但这似乎是已经编写好的东西。事实上,它可能已经在 tinycss 或相关模块中,但我只是找不到它 - 我的意思是,这可能是您想要使用解析的 css 做的主要事情。有什么想法如何用tinycss或其他方式做到这一点吗?

css python tinycss

5
推荐指数
0
解决办法
627
查看次数

在Windows 10中带有标题栏的模糊窗口?Windows Update后停止工作

我正在尝试在Windows 10中创建一个带有"玻璃"效果的透明窗口.直到最近:

截图

我一直在做的是:

  • 绘制到目标DC,包括alpha通道.在普通GDI中执行此操作的一种方法是使用alpha通道构建图像,并使用SRCCOPY将其用于DC.您还可以使用AlphaBlend函数.
  • 然后我使用SetWindowCompositionAttribute(或DwmExtendFrameIntoClientArea)在Windows 10(或更早版本)上启用模糊.

这工作到今天,并在更新后突然停止工作 - 窗口现在是不透明的.我使用了系统还原并且有一天回去了,它实际上又恢复了!任何想法我该如何解决这个问题?

gdi dwm windows-10

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

分支函数中的模板参数?

我有一个模板函数,有一点我想根据模板参数使用不同的代码:

template <typename T>
void function(const T &param) {
    // generic code here...

    // pseudo-code:
    if constexpr isinstance(param, Banana) {
        param.peel();
    } else if constexpr isinstance(param, Apple) {
        // do nothing, Apple has no method `peel`
    }
}
Run Code Online (Sandbox Code Playgroud)

我不想专门研究整个功能,因为大多数代码都是共享的。我要插入的语句实际上是一种临时调试措施。我知道正确的做法是创建一个重载函数,doPeel然后调用它:

void doPeel(const Banana &param) { param.peel(); }
void doPeel(const Apple &param) {}
Run Code Online (Sandbox Code Playgroud)

但是我很好奇,有没有一种方法可以在编译时告诉函数中某个给定变量的类型(模板专门化)是什么...以便使用仅针对一种类型进行编译的语句?

我不知道这样的事情是否可以实现constexpr-还是编译器在废弃分支中强制执行类型?我还尝试使用lambda进行处理-为这两种情况都定义lambda,并且仅调用其中一种,但是我找不到解决方法。有任何想法吗?

c++ templates constexpr

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

Use django ORM with multiprocessing?

I have a Django ORM database (mysql or sqlite), and would like to process each row with a fairly computationally intensive operation. What I have right now is something like:

entries = Entry.objects.filter(language='')
for e in entry:
    e.language = detect_language(e.text)
    e.save()
Run Code Online (Sandbox Code Playgroud)

If the database was the bottleneck, I would use a transaction to speed it up. However, the detect_language function is what takes the most time. I could try to run the script multiple times in parallel, but that would …

python django django-orm python-multiprocessing

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

如何为没有电池的设备配置AOSP?

我正在为类似平板电脑的设备构建Android AOSP 6(棉花糖),该设备永久安装(例如工业部署)并且没有电池。但是,当我加电时,它会显示一个充电指示灯,并且功率读数为0%。我希望这主要是一个表面问题,但我想摆脱该指标。我必须更改什么才能告诉Android没有电池?我认为这是可能的,因为Android也可以在机顶盒等设备上运行。

android android-source

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