这里有跳水

我认为很多黑客没有意识到他们需要多谨慎
当使用枚举时。问题经常发生,因为人们
(通常是无意中)对尺寸,
的整数表示的对齐或符号性
编译器使用的枚举。

C99表示每个枚举类型应与
整数类型。类型的选择是由实现定义的。
实现可能会延迟选择哪种整数类型
直到看到所有枚举常量
.什么
这意味着一旦编译器看到所有常量
您已经为该枚举定义了,它将决定哪个整数
要使用的表示形式,可以是有符号的或无符号的
任意大小的整数。

因此,GNOME黑客要小心了。gconf_enum_to_string()
肮脏的.看一下原型:

gboolean gconf_string_to_enum(GConfEnumStringPair查找表[],常量gchar*str,gint*枚举值_retloc);

我看到的错误包括:

{枚举{A,B}test_enum;gconf枚举字符串(枚举字符串,字符串,(int*)&测试字符串);}

这肯定会导致某些架构崩溃,因为
对齐枚举与预期不同
对齐整数。所以应该是:

{枚举{A,B}test_enum;int测试int;if(gconf_enum_toString(enum_tostr_table,str,&testint)){test_enum=测试int;}}

此外,这会中断:

{
枚举{A,B}test_enum;
int测试int;

test_enum=-1;
gconf_num_to_string(枚举表、字符串和测试输入);
test_enum=测试int;

如果(test_enum
这里的问题是,您假设枚举具有签名
表示,而实际上编译器可以选择无符号
代表。如果转换失败,if(测试编号
检测它。

Alex还指出,在API中向枚举添加值时
您需要小心,不要无意中更改
因为编译器选择使用大整数表示
用于之前使用的枚举。

伏都教

我讨厌现在知道事情是如何运作的。尤其是我
严重依赖黑客。但我喜欢有机会
最终弄清楚这该死的东西是怎么工作的
变得非常简单。

本周我发现我必须调试libtool的一小部分
行为。它以前一直对我有用,我认为
它以某种方式工作,但在这种情况下却不是这样
工作正常。我能感觉到自己感冒了
汗流浃背。不要让我调试libtool!求你了,上帝,不…

但乌云散去了。这很简单。

当您构建可执行文件时,它会链接到库
在同一个模块中,您需要某种方法才能运行它
使用已卸载的库卸载的可执行文件。所以,
libtool将一个脚本放在您认为已卸载的位置
可执行文件应该是,它的功能如下

  • 当您第一次运行脚本时,它会重新链接
    您的可执行文件--rpath$path-to-lib/.libs
    将可执行文件放入.libs/lt-myexec文件.
  • 这会导致链接器将数据传输路径精灵
    属性,它告诉动态加载器
    在哪里查找库。(请参阅ld.so手册页)
  • 最后,脚本只运行修改后的可执行文件。

例如:

$>ls-l.libs/*gdk-pixbuf-csource-rwxrwxr-x 1 markmc markmc 51262 2月26日11:28.libs/gdk-pixbuf-csource$> ./gdk-pixbuf-c源用法:gdk-pixbuf-csource[options][image]$>ls-l.libs/*gdk-pixbuf-csource-rwxrwxr-x 1 markmc markmc 51262 2月26日11:28.libs/gdk-pixbuf-csource-rwxrwxr-x 1 markmc markmc 51294 2月28日15:48.libs/lt-gdk-pixbuf-csource$>objdump-p.libs/gdk-pixbuf-csource | grep RPATH$>objdump-p.libs/lt-gdk-pixbuf-csource | grep RPATHRPATH/gnome/head/cvs/gtk+/gdk-pixbuf/.libs:/gnome/head/INSTALL/lib$>ldd.libs/gdk-pixbuf-csource | grep gdk_pixbuflibgdk_pixbuf-2.0.so.0=>/gnome/head/INSTALL/lib/libgdk_pi xbuf-2.0.so.0(0x0087d000)$>ldd.libs/lt-gdk-pixbuf-csource|grep-gdk_pixbuflibgdk_pixbuf-2.0.so.0=>/gnome/head/cvs/gtk+/gdk-pixbuf/.libs/libgdk_pixbuf-2.0.so.0(0x004a0000)

不完全是,惊天动地。但很高兴知道。

2004年2月28日

这是一个有趣的一周,完全专注于Fedora包装和
bugzilla很管用。很好地提醒了大家时间下沉的幅度有多大
可以修复非x86构建。调试ABI需要一天半的时间
pcc不匹配,破坏gtk2构建!太棒了。

很高兴能在结束一周的时候感觉到
不过,对事情处理得很好。

2004年2月25日

我真的很惊讶我的动机是如何跃升的
转会到红帽子公司,收获颇丰。我甚至喜欢吃布吉拉
这些天来,工作、打包和发布团队的东西。显然,这不可能
最后。我必须尽快恢复对Vino之类的东西的黑客攻击…

GNOME 2.6看起来已经步入正轨。像gtk这样的东西+
进度表和持续的管柱冻结断裂已释放
在我们昨晚的irc会议之后,我们的heebie jeebies团队有些紧张
我很有信心发布的版本不会太大
挂接装置。

Alex和我一直在将Fedora Core中的GNOME包更新到
最新的GNOME测试版。希望在FC2测试2进入开发阶段时
周五冻结,我们将更新大部分包。重大优先事项
是将新的文件选择器发送给Fedora测试群,所以
我今天将更新gtk+/atk/pango/glib到最新版本。也要去
把小gnome-netstatus小程序也推进去🙂

RFB协议

因此,我与RFB协议维护人员在
RealVNC(真实VNC)关于获取
新的RFB安全类型–我在Vino中添加了这些类型,用于执行
加密&在协议中注册。尽我所能
在这一点上作出决定:

  • 注册的安全类型比中显示的多
    协议规范。
  • 安全类型1-16保留用于“标准”安全
    类型。
  • 将安全类型添加到
    “参考实现”……恰巧是
    RealVNC正试图从中赚钱。

我拿不定主意是在乎这个还是
我应该让卧床不起的人躺着。我主要担心的是什么
如果我们决定要添加其他内容,就会发生这种情况
到协议。哦,好吧,当我们走到那座桥的时候,穿过那座桥。
RealVNC的人很友好,所以我不认为他们会
实际上是个问题。

最后,我们一致认为我必须使用不同的数字
识别新的安全类型,我必须修改方式
新的安全类型实际上有效。最终结果–我刚刚
推出了新版本的Vino,在
协议。

维诺

我刚进口维诺进入CVS。其“远程桌面”功能
对于使用VNC的GNOME投标邀请书
我在Sun时写的协议。

目前,与其他VNC服务器相比,最值得注意的是:

  • 支持使用SSL加密RFB协议流
  • 在允许远程用户之前提示用户的对话框
    连接
  • 导出本地显示,因此不必启动
    单独的VNC显示
  • 正确集成到GNOME中

更多详细信息

在这里
.

这个

TODO公司
列表包括:

  • 使用新的
    损坏
    扩展而不是轮询屏幕
  • 编写一个基于GTK+的客户端–当前客户端是一个Java applet
    但您可以使用任何其他vncviewer而无需加密
  • 使用DNS-SD和mDNS进行服务发现
  • 更好的身份验证方案

调制解调器太烂了

一个相当“有趣”的一天,做bugzilla工作,区分和
并行推动2.5.4 tarball和jhbuilding GNOME HEAD
通过56k拨号线路。我想我会倒计时
分钟后爱尔兰电讯
傻瓜们设法拨动神奇的DSL开关…

我到底是怎么忍受了一整年的
新西兰?

离开太阳

所以,今天是我为Sun工作的最后一天,感觉非常非常
很奇怪。这是很好的几年,我真的要
想念这个地方和这里伟大的人们。我还是不敢相信
我的梦想是全职开发自由软件
真的。Sun让这一切成为可能,为此我将永远感激。

然而,从好的方面来看,它标志着一个新的令人兴奋的开始
冒险——为红帽工作。实际上,这有点令人畏惧。
看到他们的精彩表现,我不知道我是否会
能够达到他们的标准。我迫不及待地想要
虽然开始了🙂

我希望人们不要读到这些不存在的东西——
即使我要离开,我仍然认为太阳是一个很好的地方
这是一家前途光明的公司。
我搬到Red Hat与“更好”无关
公司,以及与我有关的一切
新挑战的机遇。

我买不到罗伯特·弗罗斯特的
道路
未执行
我现在都快疯了。它很好地总结了
我的感觉……但那可能只是宿醉🙂