小编Ind*_*oad的帖子

GDB 漂亮打印:从 children() 的迭代器返回字符串,但显示为 char[]

我有一个方便的类,我使用它可以轻松地将一组“汇总器”函数添加到 GDB 漂亮的打印机(例如,一个Rect类可以有一个 [ Area] 字段,由 Python 计算)。然后它也打印所有现有的孩子,所以你可以一次看到所有的东西。

class SummaryAndFieldIterator:
    """
    Iterator to first go through a list of summariser functions,
    then display all the fields in the object in order
    """
    def __init__ (self, obj, summaries):
        self.count = 0
        self.obj = obj;
        self.summaries = summaries;
        self.keys = sorted(obj.type.iterkeys())

    def __iter__(self):
        return self

    def __next__(self):

        if (self.count >= len(self.keys) + len(self.summaries)):
            raise StopIteration
        elif self.count < len(self.summaries):

            name, retVal = self.summaries[self.count](self.obj)
            # FIXME: this doesn't seem to …
Run Code Online (Sandbox Code Playgroud)

python debugging gdb pretty-print gdb-python

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

使用GtkStyleProviders自定义小部件字体,颜色和背景的正确方法

在试图清理约弃用一些警告Gtk.Widget.modify_base,Gtk.Widget.modify_font我发现了建议的替代物,override_background_color(和其等同为字体和颜色)已过时.我现在正在尝试研究如何为小部件提供这些样式.

字体,颜色和背景用于自定义TextView窗口小部件,并且这些值的值作为某些首选项的一部分存储在某些字符串中,以便用户可以自定义几种不同的颜色.

对于字体和文本颜色,似乎最好的方法是Gtk.TextTag使用适当的样式创建s,并将insert()文本缓冲区的任何实例更改为insert_with_tags().TextBuffers和TextTags似乎没有"默认样式"概念.

但是,文本标签不会处理整个文本视图的背景.

建议的方法似乎是GtkStyleProvider,但我应该如何将这些用户指定的颜色提供给提供者?

很多例子像这样加载字符串常量:

string style = """
    GtkButton {color:#ff00ea; font:Serif 12;}
    GtkButton:hover {background-color:#3085a9;}
    GtkLabel {background-color:#898989;}
    GtkEntry {background-color:green; color:red;}
""";
CssProvider provider = new CssProvider();
provider.load_from_data(style,-1);
Run Code Online (Sandbox Code Playgroud)

但在这种情况下,每次配置更改时我都必须手动格式化并插入字符串到一大块CSS中,并将其反馈到样式中,这看起来非常混乱.我也不确定这些是否可以在加载后更改,因为似乎没有改变信号.

我想另一种方式是以某种方式继承GtkStyleProvider和实现我自己的,但这对于设置一些颜色似乎有些过分,并且似乎很少有文档.

大多数GTK +程序(甚至是GNOME的)似乎只是做它的"旧"的方式与modify_*override_*而忽略了弃用,这是我不明白,如果那些使用CSS加载后可以改变它的少数.

这些只是两个选择吗?哪一个是"正确的"?

css gtk fonts colors styling

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

响应 GTK+ 3 中的主题更改

某些应用程序可以实时响应 GTK+ 主题更改。例如,Thunar、Geany、lxrandr、Hexchat 都会在主题更改时更新它们的 UI,例如在 lxappearance 中。这些都是 GTK+ 2 程序。

另一方面,到目前为止,我尝试过的所有 GTK+ 3 程序(包括 baobab、moserial gucharmap、ghex、pamac、evince、xreader)似乎无法重新加载主题,需要重新启动应用程序。

lxappearance(gtk2在我的系统上编译)正在发送一个 GTK+“信号”(不是 100% 在 GTK-land 中的术语)以导致应用程序重新加载:

// src/lxappearance.c line 198
static void reload_all_programs()
{
#if GTK_CHECK_VERSION(3, 0, 0)

/* TODO Port this to something else than gdk_event_send_clientmessage_toall */

#else
    GdkEventClient event;
    event.type = GDK_CLIENT_EVENT;
    event.send_event = TRUE;
    event.window = NULL;

    if( app.use_lxsession )
    {
        event.message_type = gdk_atom_intern_static_string("_LXSESSION");
        event.data.b[0] = 0;    /* LXS_RELOAD */
    }
    else
    {
        /* if( icon_only )
            event.message_type = …
Run Code Online (Sandbox Code Playgroud)

gtk themes gtk2 gtk3 gnome-3

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

OSX Kext无法正确释放

我已经基于Wagerlabs代码(使用驱动程序用户客户机应用程序模型)为热插拔SCSI设备编写了设备驱动程序kext,并且一切正常。唯一剩下的担心是,驱动程序似乎没有被一致地释放,尤其是在应用程序崩溃的情况下。例如,当我尝试卸载kext时,即使在断开设备连接和关闭应用程序的情况下,仍然存在驱动程序和用户客户端的突出实例(驱动程序通常超过用户客户端)。

我已经登录了诸如之类的驱动程序功能free(),当我关闭计算机时,可以看到它们正在执行,因此这些实例显然仍可以终止。确保驱动程序实例终止并释放的“正确”方法是什么,即使主机应用程序崩溃,终止不当或通常不计划的事情?

macos memory-management device-driver kernel-extension

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

显示 Git 索引中并在工作副本中更改的文件

我有一个 Git 预提交钩子,它会去除空格并将修改后的文件保留在工作副本中,这样它就不会踩踏像git add -p.

如果我提交多个已更改文件中的一个,并且更正了空格,则我会在工作副本中更改两个文件和一个暂存文件(该文件也在工作副本中,但暂存更改存在空格错误):

vi fileWithBadWS.txt  # leave bad whitespace
vi fileWithGoodWS.txt # don't leave bad whitespace
vi unrelatedFile.txt

git add fileWithBadWS.txt fileWithGoodWS.txt 
git commit -m "Commited files, one with bad whitespace" # pre-commit hook fails
Run Code Online (Sandbox Code Playgroud)

仓库现在看起来像这样:

On branch master
Changes to be committed:

        modified:   fileWithBadWS.txt  # bad WS
        modified:   fileWithGoodWS.txt

Changes not staged for commit:

        modified:   fileWithBadWS.txt   # fixed WS
        modified:   unrelatedFile.txt                                 
Run Code Online (Sandbox Code Playgroud)

我可以用:

  • git diff去看fileWithBadWS.txt并且unrelatedFile.txt
  • git diff --cached查看暂存文件fileWithBadWS.txt和 …

git git-diff pre-commit-hook git-index

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

删除包含小于/大于限制的数字的行?

我有很多这样的行,由grep -n

path/to/dir/file1.txt:4: Match
path/to/dir/file1.txt:40: Another Match
path/to/dir/file2.txt:2: Match
path/to/dir/file2.txt:564: Yet another Match
Run Code Online (Sandbox Code Playgroud)

我想消除行号小于(例如)10 的行。我知道我可以使用 轻松获得行号cut -d: -f2,但是你怎么能用它来丢弃这些行并继续将其余的输出输送到full 所以你最终得到:

path/to/dir/file1.txt:40: Another Match
path/to/dir/file2.txt:564: Yet another Match
Run Code Online (Sandbox Code Playgroud)

grep sed pipe

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

Python 中的字符串连接比 Go 快得多

我正在考虑使用 Go 编写一个主要处理文本的小程序。根据我对 Go 和 Python 的了解,我非常确定 Go 会更快。我实际上并没有对疯狂速度的具体需求,但我想了解 Go。

“Go 将会变得更快”的想法得到了一个简单测试的支持:

# test.py
print("Hello world")
Run Code Online (Sandbox Code Playgroud)
$ time python dummy.py
Hello world

real    0m0.029s
user    0m0.019s
sys 0m0.010s
Run Code Online (Sandbox Code Playgroud)
$ time python dummy.py
Hello world

real    0m0.029s
user    0m0.019s
sys 0m0.010s
Run Code Online (Sandbox Code Playgroud)
// test.go
package main

import "fmt"

func main() {

    fmt.Println("hello world")
}
Run Code Online (Sandbox Code Playgroud)

就原始启动速度而言看起来不错(这完全是预期的)。高度非科学的理由:

$ time ./test
hello world

real    0m0.001s
user    0m0.001s
sys 0m0.000s
Run Code Online (Sandbox Code Playgroud)

然而,我的下一个人为测试是 Go 在处理字符串时的速度有多快,我预计同样会被 Go 的原始速度所震惊。所以,这是令人惊讶的:

$ strace python test.py 2>&1 | wc -l
1223
$ strace …
Run Code Online (Sandbox Code Playgroud)

python performance string-concatenation go

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