我正在寻找一种简单的方法来计算两个矩形之间的差异.我的意思是所有属于一个矩形的点,但不属于两个(所以它就像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解决方案/库,但任何强大的算法都会有所帮助.
有时我需要调用一个只存在于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"),我可以使用什么呢?
我有一个关于NoSQL类型数据库的问题,特别是MongoDB,但它通常适用于大多数基于键值或基于文档的存储.NoSQL的一些卖点是速度和可伸缩性,但在我看来,与关系数据库相比,存在显着的开销.
你有很多重复,因为(几乎)一切都是非标准化的.你无法做很多事情,因为这是这类数据库的重点.我更关心下一个:
有很多开销,因为如果你有一个JSON文档,你必须保存每个文档的所有键(和所有结构信息).因此,对于10000行,您必须保存字符串'age','name',... 10000次.
数据库不能做很多聪明的事情,比如创建索引或二叉树(以节省时间)或以紧凑的方式存储整数(因为其中一个自由格式的文档可能有一个字符串,其他所有的都有一个int,等等.)
我知道你可以编写你自己的视图或map/reduce算法来获得类似索引的东西,但乍一看似乎对于一般情况来说NoSQL必须是非常低效的空间和CPU.
真的那么糟糕吗?NoSQL数据库中有哪些优化(比如MongoDB)?与使用关系数据库相比,存储大量相同的复杂JSON文档的开销是多少?
我正在寻找允许在 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) 如果我有总线名称,对象路径和接口,如何从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)
给定一个 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或其他方式做到这一点吗?
我正在尝试在Windows 10中创建一个带有"玻璃"效果的透明窗口.直到最近:
我一直在做的是:
这工作到今天,并在更新后突然停止工作 - 窗口现在是不透明的.我使用了系统还原并且有一天回去了,它实际上又恢复了!任何想法我该如何解决这个问题?
我有一个模板函数,有一点我想根据模板参数使用不同的代码:
template <typename T>
void function(const T ¶m) {
// 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 ¶m) { param.peel(); }
void doPeel(const Apple ¶m) {}
Run Code Online (Sandbox Code Playgroud)
但是我很好奇,有没有一种方法可以在编译时告诉函数中某个给定变量的类型(模板专门化)是什么...以便使用仅针对一种类型进行编译的语句?
我不知道这样的事情是否可以实现constexpr
-还是编译器在废弃分支中强制执行类型?我还尝试使用lambda进行处理-为这两种情况都定义lambda,并且仅调用其中一种,但是我找不到解决方法。有任何想法吗?
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 …
我正在为类似平板电脑的设备构建Android AOSP 6(棉花糖),该设备永久安装(例如工业部署)并且没有电池。但是,当我加电时,它会显示一个充电指示灯,并且功率读数为0%。我希望这主要是一个表面问题,但我想摆脱该指标。我必须更改什么才能告诉Android没有电池?我认为这是可能的,因为Android也可以在机顶盒等设备上运行。
python ×4
android ×1
c++ ×1
constexpr ×1
css ×1
ctypes ×1
dbus ×1
django ×1
django-orm ×1
dwm ×1
gdi ×1
geometry ×1
gjs ×1
gnome-shell ×1
nosql ×1
overhead ×1
performance ×1
pygobject ×1
rectangles ×1
templates ×1
tinycss ×1
windows-10 ×1