• UML已死了吗? - [Linux Kernel UserModeLinux ]2007-09-08

    UML(UserModeLinux)已死了吗? 在短暂的未来中,没有人可以预测,UML/Xen/KVM,究竟哪一种技术会最终胜出。

    http://www.linux.com/articles/59616 http://virtminiconf.linux.hp.com/copy_of_program/uml-kvm-and-hardware-virtualization

    Tags: Linux Kernel UserModeLinux

    非非 发表于 00:06:56 | 阅读全文 | 评论 1 | 引用 0 | 编辑
  • 请看中文的内核开发邮件归档 - [Linux Kernel ]2007-09-06

    请看中文的内核开发邮件归档 没有故事能比这更为有趣的报道了。

    > > 今天四大distribution 的技术领导到场,跟大牛们诉苦,他们主要的问题是:bug > > 太多,还有就是驱动程序问题。很多驱动程序进不了mainline kernel,他们不得 > > 以才收进自己的distribution. Linus当场拍板说他收驱动程序,只要distro打算要。 http://zh-kernel.org/pipermail/linux-kernel/ http://zh-kernel.org/pipermail/linux-kernel/2007-September/000662.html ...

    Tags: Linux Kernel

    非非 发表于 00:11:29 | 阅读全文 | 评论 0 | 引用 0 | 编辑
  • 大事记 - [Kernel Linux ]2007-08-25

    一种关注开源事件的好方法是订阅LWN(LinuxWeeklyNews)的日历服务: http://lwn.net/Calendar/

    Tags: Kernel Linux

    非非 发表于 00:30:15 | 阅读全文 | 评论 0 | 引用 0 | 编辑
  • 2007-08-09 - [Linux ]2007-08-09

    Don't Panic在八月五日悄悄地发布,我来给它记上一笔。

    Tags: Linux

    非非 发表于 20:23:00 | 阅读全文 | 评论 0 | 引用 0 | 编辑
  • LVS - [Linux ]2007-07-10

    从IBM developWorks学到了很多:

    http://www.ibm.com/developerworks/cn/linux/cluster/lvs/part1/index.html
    http://www.ibm.com/developerworks/cn/linux/cluster/lvs/part2/index.html
    http://www.ibm.com/developerworks/cn/linux/cluster/lvs/part3/index.html
    http://www.ibm.com/developerworks/cn/linux/cluster/lvs/part4/index.html

    Tags: Linux

    非非 发表于 13:30:16 | 阅读全文 | 评论 0 | 引用 0 | 编辑
  • 下载文件技巧 - [Linux ]2007-07-09

    下载时选择一个链接,直接把它拖放到某个目标目录中,文件管理器(nautilus)就会出现正在复制的对话框。



    这一项特性非常酷,也就是说剪贴板里面有一个目标URL地址时,在文件管理器中粘贴,就会把它下载过来。

    Tags: Linux

    非非 发表于 13:27:01 | 阅读全文 | 评论 0 | 引用 0 | 编辑
  • 字符设备的mmap接口 - [Kernel Linux ]2007-06-17

    实现需要大量内存复制操作的字符设备时,还是以实现mmap接口为最好:

    http://lwn.net/images/pdf/LDD3/ch15.pdf

    Tags: Kernel Linux

    非非 发表于 10:33:27 | 阅读全文 | 评论 0 | 引用 0 | 编辑
  • amd64平台字长演示 - [Linux C ]2007-06-12

    一个简单的C程序如下,用来测试64位平台的基本程序参数:

    $ cat offsetof.c
    #include <stdio.h>
    
    #define PRINT_SIZE(type) \
            printf("sizeof " #type " = %lu\n", sizeof(type))
    
    #define offsetof(TYPE, MEMBER)  __builtin_offsetof (TYPE, MEMBER)
    
    #define PRINT_OFFSET(type, member) \
            printf("offsetof " #member " in " #type " = %lu\n", offsetof(type, member))
    
    struct ub {
            int a;
            char c;
            unsigned long b;
    };
    
    struct ub_packed {
            int a;
            char c;
            unsigned long b;
    } __attribute__ ((packed));
    
    int main(void)
    {
            PRINT_SIZE(struct ub);
            PRINT_OFFSET(struct ub, b);
            PRINT_SIZE(struct ub_packed);
            PRINT_OFFSET(struct ub_packed, b);
    
            return 0;
    }
    

    编译和运行效果:

    $ gcc -Wall offsetof.c
    $ ./a.out
    sizeof struct ub = 16
    offsetof b in struct ub = 8
    sizeof struct ub_packed = 13
    offsetof b in struct ub_packed = 5
    

    Tags: Linux C

    非非 发表于 01:51:30 | 阅读全文 | 评论 0 | 引用 0 | 编辑
  • syscall调用接口从2.6.19开始移到应用层, - [Kernel Linux ]2007-06-02

    syscall调用接口从2.6.19开始移到应用层,原来内核中使用_syscallN宏的方式来声明函数原型的方法不再有效:

    如声明:

    _syscall1(int, sysinfo, struct sysinfo *, info);

    不再需要,而是在程序中需要的时候直接调用:

    int syscall(int number, ...);
    • 第一个number是后面要接的参数个数,不是该系统调用的参数个数;
    • number后面顺序接上该系统调用的所有参数即可

    相应头文件包含也改变为

    于是调用sysinfo就变为:

    struct sysinfo s_info;
    syscall(2, __NR_sysinfo, &s_info);

    可见新的调用方式变得更为简洁了。

    References:
    • http://lxr.linux.no/source/include/asm-i386/unistd.h
    • http://lxr.linux.no/source/include/asm-i386/unistd.h?v=2.6.18
    • http://www.kernel.org/pub/linux/kernel/v2.6/snapshots/patch-2.6.19-git13.log
    • commit f5738ceed46782aea7663d62cb6398eb05fc4ce0 of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git

    Tags: Kernel Linux

    非非 发表于 13:29:54 | 阅读全文 | 评论 0 | 引用 0 | 编辑
  • 安装beryl之前需要restricted-driver: - [ubuntu linux feisty ]2007-06-01

    安装beryl之前需要restricted-driver:

    Tags: ubuntu linux feisty

    非非 发表于 09:06:09 | 阅读全文 | 评论 0 | 引用 0 | 编辑
  • 浏览时,忍不住把曾写在论坛的帖子再贴出来: - [Linux 开源 教育 ]2006-02-01

    浏览时,忍不住把曾写在论坛的帖子再贴出来:
    原文在这里:广东省Linux中心论坛 - 开源软件在中国教育面临的困境[草稿]

    Tags: Linux 开源 教育

    非非 发表于 15:13:30 | 阅读全文 | 评论 1 | 引用 0 | 编辑
  • 乌干达记事 - [Uganda vim Linux ]2006-01-19

    乌干达记事

    乌干达记事

    vim 软件中作者 Bram Moolenaar 在乌干达救助儿童的一些经历,先贴上来。

    Tags: Uganda vim Linux

    非非 发表于 03:44:04 | 阅读全文 | 评论 1 | 引用 0 | 编辑
  • 纪念深圳linux用户组第一期聚会如期举行!2006-01-15! - [szlug Linux ]2006-01-15

    庆祝深圳linux用户组第一期聚会如期举行!2006-01-15!

    http://groups.google.com/group/szlug

    Tags: szlug Linux

    非非 发表于 21:24:37 | 阅读全文 | 评论 0 | 引用 0 | 编辑
  • 明年要继续学习Python! - [Linux Python CPython ]2005-12-31

    又是年末了,想在最后的时间在BLOGBUS里贴一个Linux的TAG

    马上速战速决!

    终于照样写好了CPython Demo,明年要继续学习Python!

    crq@ $ cat capi.c
    #include <Python.h>
    
    static PyObject *c_system(PyObject *self, PyObject *args)
    {
        const char *str;
        if (!PyArg_ParseTuple(args, "s:must be a shell command", &str))
            return NULL;
        int ret = system(str);
        return Py_BuildValue("i", ret);
    }
    
    static PyMethodDef methods[] = {
        { "system", c_system, METH_VARARGS, "system with all" },
        { },
    };
    
    void initcapi(void)
    {
        Py_InitModule("capi", methods);
    }
    
    crq@ $ gcc -Wall -fPIC -O2 -I/usr/include/python2.2 -c capi.c
    crq@ $ ld -shared -o capi.so capi.o
    
    crq@ $ python
    Python 2.2.2 (#1, Feb 24 2003, 19:13:11)
    [GCC 3.2.2 20030222 (Red Hat Linux 3.2.2-4)] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import capi
    >>> dir(capi)
    ['__doc__', '__file__', '__name__', 'system']
    >>> capi.system("uptime")
     23:22:48  up 5 days,  8:02,  1 user,  load average: 0.00, 0.00, 0.00
    0
    >>> ^D

    Tags: Linux Python CPython

    非非 发表于 23:22:35 | 阅读全文 | 评论 3 | 引用 0 | 编辑
  • 推荐Linux-Assembly-HOWTO - [Linux nasm assembly ]2005-12-26

    查询表生成

    以下以一个简单例子演示了在LINUX下使用nasm编程。在许多需要计算正余弦的程序中,如果浮点数计算较多而且输入值要求不高,可以先计算一张数据表以供每次查询,以简化运行时的计算任务。

    在汇编语言中调用此程序使用fsincos浮点指令一次生成正统和余弦值,可以比C语言直接计算快得多。

    程序生成一列以逗号分隔的浮点数,可以复制到C程序中使用。

    本程序同时还演示了在LINUX系统下Intel FPU的编程。

    Tags: Linux nasm assembly

    非非 发表于 23:49:02 | 阅读全文 | 评论 0 | 引用 0 | 编辑
  • cpan-mirror - [CPAN Linux Perl ]2005-12-23

    应洪峰要求,将页顶banner移走了,临时换上了一张,找不到好图,只拉到cpan-mirro的一张图,图上红色的点都是CPAN在全世界各地的镜像站点。值得注意的是其在中国境内的点是何其的少啊,欧洲和美国境内最多,还包括冰岛和挪威,南非也有三个点,墨西哥,巴拿马,巴西和阿根廷也都有,澳大利亚和新西兰,夏威夷,印度和印尼,越南和柬埔寨,日本和韩国,中国境内只有北京一个点,香港一个点,和台湾有两个点。

    洪峰其人:(请看页顶banner就是了,Favorite Links里面也有一篇非常值得一读的PDF文件,洪峰原创。)

    Tags: CPAN Linux Perl

    非非 发表于 21:54:57 | 阅读全文 | 评论 0 | 引用 125 | 编辑
  • 答问卷 - [Linux ]2005-12-23

    答(置顶:blog的传播实验问卷)问:

    1、你如何知道我的blog(quasimo.blogbus.com)?
    以Linux为Tag找到的。

    2、你如何知道这一篇blog?
    以Linux为Tag找到的。

    3、你通常用什么途径阅读我的blog?
    通常不阅读。

    4、假如你不止一次打开我的blog,是通过:
    Greatnews点击标题,要回复的时候就点啊。

    5、对于blogbus.com你常使用打开以下页面或相关子页面吗?
    都不去,不过我对blogbus印象还是不错的。

    Tags: Linux

    非非 发表于 21:27:34 | 阅读全文 | 评论 1 | 引用 0 | 编辑
  • 学习 Python: - [Python Socket Linux ]2005-12-20

    学习 Python:

    当年学习写网络程序时是从每一个socket开始写,每一个有关socket调用的函数的错误处理也都亲手包办,近日所见 Python 的威力:

    以下简单事例展现从单处理到多处理的变迁原来如此简单:

    from SocketServer import TCPServer, StreamRequestHandler
    
    class StreamHandler(StreamRequestHandler):
      def handle(self):
        print 'Connect from', self.client_address
        for x in self.rfile:
          print >> self.wfile, x.strip('\r\n').replace('x', 'y')
    
    TCPServer(('', 7000), StreamHandler).serve_forever()

    SocketServer 是一个专营服务器的 module,从 TCPServer 类上实例化一个对象并调用其 serve_forever 便够成了服务端,其参数也很简单,一个是绑定的地址:所有本地IP的1036端口,一个是处理服务类,每当有连接进入时,TCPServer会自动实例化一个对象并调用其 handle 函数,于是我们要做的便只是写好如何处理了。而Handle中所写有 rfile 和 wfile 两个文件对象可写,正好避免了 socket 的 send 与 recv 的复杂过程。

    本例以不到10行代码实现了一个TCP echo服务器,并提供了一个简单的功能将输入字符串中的 'x' 转换为 'y',其中也可展现了 Python 的文本处理的强大功能。

    针对单处理的弱点,即同时只能处理一个客户端,以下版本只改动一个单词便实现了多线程版本,服务多个客户端。

    from SocketServer import ThreadingTCPServer, StreamRequestHandler
    
    class StreamHandler(StreamRequestHandler):
      def handle(self):
        print 'Connect from', self.client_address
        for x in self.rfile:
          print >> self.wfile, x.strip('\r\n').replace('x', 'y')
    
    ThreadingTCPServer(('', 7000), StreamHandler).serve_forever()

    同样 ServerSocket 模块中还包含了 UDPServer, ForkingTCPServer, ThreadingUDPServer, UnixStreamServer 等等一系列可用于服务器类的生成,所有你能想到的都罗列其中。查看了/usr/share/lib中 SocketServer.py 的实现代码,包括了很多行的代码总共才有400多行。

    也许你担心效率问题,但关于网络程序有一句话是从实践中所得:

    “在计算任务不多的网络程序中,性能的瓶颈在于IO而不是CPU。”

    Tags: Python Socket Linux

    非非 发表于 15:15:30 | 阅读全文 | 评论 2 | 引用 0 | 编辑
  • 方兴东观察 - [Linux ]2005-12-14

    看过这篇,觉得很有道理。还是要看看微软的真相。

    上周去一个朋友那里解决中国工商银行的网站登录,原来在中国包括银行等大型机构输入密码都已用上了ActiveX,而实际上ActiveX正是那么多恶意网站的避风濩,恶意脚本也出于VBScript居多,面对这些种垃圾语言,堂而皇之摆到银行网站上,该怎么说好呢?

    看看google做的gmail登录框上密码输入,用的是什么?是https,标准的安全协议早已有之,而且是独立于各个操作系统的安全标准,奈何不用?

    不过可惜其文中对于Linus Torvalds本人以及对Linux的描述方面错误太多。

    指出一个很严重的错误:Linus是芬兰人而不是荷兰人。

    Tags: Linux

    非非 发表于 13:52:46 | 阅读全文 | 评论 0 | 引用 0 | 编辑
  • ELF文件格式分析之二:符号表 - [Linux assembly ELF binutils ]2005-12-12

    Symtab & Relocation info (符号表与重定位表)

    写了一个2.4内核模块,正是分析Relocation所需要的。

    readelf 先按次序读 ELF header, Section Headers, Program Headers, Relocation entries, Symbol table entries, version information.

    Tags: Linux assembly ELF binutils

    非非 发表于 23:06:36 | 阅读全文 | 评论 3 | 引用 0 | 编辑