升级KDE到3.5.4,启动之后发现:图标不见了! 大部分图标都变成默认的空图标了……
于是去网上搜,似乎有人说KDE启动着的时候不能升级云云。费了半天劲,发现似乎KDE无法找到那些图标,可供选择的图标里也没有。去/usr/local/share/icons,来到crystalsvg目录,发现似乎就是系统知道的那些图标,而程序图标都在hicolor里面。最后想了一个暂时解决方法:把hicolor里面的东西都拷过去! 一混,就好了……
结论:电脑比较傻,骗骗电脑比较容易……
Old Blog Link: http://computer.mblogger.cn/henryhu/posts/61352.aspx
被libc弄得晕头转向……
编译 kports,结果 configure 检查QT的时候报错,查看config.log:libqt-mt.so: undefined … __res_state
我一看,又是这个…… 从前见过,但从前加了 -pthread 就好了,现在怎么不行呢?然后,去网上找,什么都没有;去 /usr/lib和/lib和/usr/local/lib grep,都没有…… 汗……
于是去 /usr/src/lib/libpthread 里面找,一点都没有发现……
偶尔灵机一动,想到可能在别的库里面。于是到 /usr/src/lib 里面找,结果在 /usr/src/lib/libc/resolv/res_state.c 里面找到了。既然这样,为什么 /lib/libc.so.6 里面会grep不到??
尝试一下,重新编译安装libc,再试,好了!!
估计是上次没有 make buildword 的结果…… 以后一定make buildworld…
Old Blog Link: http://computer.mblogger.cn/henryhu/posts/61348.aspx
FreeBSD中读取Ethernet Address的一种可行方法
#include <net/if.h>
#include <ifaddrs.h>
#include <net/if_dl.h>
#include <net/ethernet.h>
int main()
{
struct ifaddrs *list;
if(getifaddrs(&list) < 0)
{
perror("getifaddrs");
return;
}
struct ifaddrs *cur;
for(cur = list; cur != NULL; cur = cur->ifa_next)
{
if(cur->ifa_addr->sa_family != AF_LINK)
continue;
char *name = cur->ifa_name;
printf(name);printf("\n");
char *addr;
struct sockaddr_dl *sdl;
sdl = (struct sockaddr_dl *)cur->ifa_addr;
addr = ether_ntoa((const struct ether_addr *)LLADDR(sdl));
printf(addr);printf("\n");
}
freeifaddrs(list);
return 0;
}
看了TCP/IP Illustrated Vol 2,再看看源代码,才知道当 sa_family==AF_LINK 时,ifa_addr实际上是 struct sockaddr_dl 格式, 根据书里的写法,LLADDR宏是用来从sockaddr_dl获取ether_addr的位置,而ifa_addr里面的各个数的定义也清楚了……
struct sockaddr_dl {
u_char sdl_len; /* Total length of sockaddr */
u_char sdl_family; /* AF_LINK */ (当前版本AF_LINK=18, socket.h)
u_short sdl_index; /* if != 0, system given index for interface */(我的rl0是1)
u_char sdl_type; /* interface type */ (IFT_ETHER, 0x6, if_types.h)
u_char sdl_nlen; /* interface name length, no trailing 0 reqd. */ (我的为3("rl0"))
u_char sdl_alen; /* link level address length */ (ETHER_ADDR_LEN, 0x6)
u_char sdl_slen; /* link layer selector length */ (0, 难道还是没有用?)
char sdl_data[46]; /* minimum work area, can be larger;
contains both if name and ll address */ ("rl0"+ether_addr…)
};
而LLADDR宏也就是把sdl_data偏移掉接口的名字,接下来就是接口的地址……
另外,struct ifaddrs和struct ifaddr很象,但是原来的ifa_ifp,也就是回指接口结构的指针没了。安全考虑? 为了区分内核和用户?
所以,坚信Linus的名言,有问题去看源代码!……
Old Blog Link: http://computer.mblogger.cn/henryhu/posts/61230.aspx
Reading "TCP/IP Illustrated Vol 2"
当初想装FreeBSD就是因为看了这套书的缘故(BSD网络实现和FreeBSD还分不清楚)。但是安装不成功,最后把Vol1,Vol3都读完了也没有装好。后来装好了FreeBSD,又没有时间看。现在终于有了些空闲,能够慢慢研究这套书了。
Vol2讲的是实现,也就是把源代码和原理结合起来讲。我一边看一边翻FreeBSD的源代码,发现基本的东西没有变(书上的第一个样例打上去还能编译,改了一下地址还能用~),但是代码量大了很多(那时据说网络部分只有15000行左右~),有些东西删掉了,更多的东西加了进去。
看看源代码的确对理解工作原理有很大的益处…… 但必须要这样的一本书来进行适当的引导,因为…… 代码的数量太多了!
法国的最终结果
上次那个是去面试,这次是最终结果了。
我们班最初报的10个进了5个,初审少了3个,跑了1个,复审少了1个。
为’FD、HJC、XMM、XHK同学感到难过,你们会有更好的结果的!……