自由软件之父来西邮“传教”了

周四(5月28日)中午十一点多接到哲思自由软件社团徐继哲的电话,说是Richard Stallman、Akira Urushibata、Dora 要来我们学校,心里真的很激动。因为原定25日的西安活动由于地震原因被取消了,非常非常遗憾。我还准备等他们来西安了,商量交流活动的事,和stallman去翠花山游玩什么的。突然说要来到我们学校做一次交流活动,真是太高兴了。

由于这次活动来的比较突然,且考虑安全问题,所以我们没有做任何宣传,只是小组新闻组上(http://groups.google.com/group/xiyoulinux?hl=zh-CN)发布了一条消息。出乎我们意料,下午活动的时候来了很多人,都令徐继哲等感到惊讶,赞叹西邮是自由软件的好土壤。这是对我们西邮 Linux 的一种肯定,更是对我们的一种激励。

我们没有刻意去邀请任何一位领导,只是把热爱自由软件的韩老师请了过来,他写的课本里就有stallman的一片文章(why software should not have ower?)。

活动的具体内容大至有如下:

Richard Stallman的演讲,其实用演讲不太合适,因为我们这次更多的是一种学习和交流。他带领我们重温了自由软件(Free software)的4个自由度:
1.出于任何目的,运行软件的自由。
2.学习软件如何工作,以及为了满足自己的需要修改软件的自由。(显然,这个自由度的前提是能够访问软件的源代码)
3.为了帮助你的邻居,将软件拷贝给他的自由。
4.为了能够让整个社团受益,公开发行改进之后的软件的自由。(显然,这个自由度的前提是能够访问软件的源代码)

然后又又讲了一些自己对自由软件运动、自由软件与开源软件的区别、linux与GNU、GPL协议等内容。接下来,他把更多的时间留给了我们西邮的linux爱好者。同学们提问非常积极,也都从中得到了自己满意的答案。其中stallman语速极慢,争取让每一个人听懂他的话,为大家解答提出的每个问题。徐继哲也在提问过程中,及时回答大家的问题,整个讨论过程充满了自由、祥和的气氛。由于第二天就要赶回北京搞活动,我们的讨论不得不在18:30结束,会后大家争先去Stallman等合影、签名留念。我当然也不会放过这机会了 😉
比较幸运的是我还和Stallman等人一起共进晚餐,他对菜谱很有研究,对菜名及其做法很感兴趣,还用笔记本把拼音记下来,反复读。另外一个日本的朋友 Akira Urushibata也很好学,有个小本子,记录墙上一些名言。stallman 和akira用筷子都很熟练,stallman的女友Dora用这就不太顺手了。发现翻译这活不好干,当然不是把“寒山”翻译成“cold mountain”那么简单,寒山好像是个人名。通过这些交流,明显感觉到自己英语口语极差,不过也对自己也是硬着头皮说了一些,毕竟平时英文邮件没白看。Stallman的语速很慢,很清晰,基本还能听懂。

大师就是大师,二十几年如一日能坚持了下来确实令人敬佩,不过“教父”现在不知道是深沉了,还是操劳过多精力减退,不像操作系统革命中那样“活跃”了。通过这个活动使大家对自由软件有了新的、更清楚的认识,坚定了为自由软件做贡献的信念。

比较好的是,stallman 那天没有暴发自己的怪脾气,比较温和 😉 经管大家有些人对stallman怪异的脾气不太理解,毕竟他不是真正的圣人。

部分照片见: http://xiyoulinux.cn/album ;其他照片、录像随后奉上~

读取文本文件,以行为单位分隔

今天小康让我给他写个程序,要求读取文本文件,并以行为单位保存在一个数组里,然后用一个循环使用每行的内容。
下面两个程序只是对单位行输出,但分隔为单位行的目的达到。

/*FileName: readline.c*/
#include
#include
#include
#include
#include
#define MAX 256

char s[MAX][MAX];

int read_line(int fd,char *buf)
{
char ch;
int i = 0,j;

if ((j = read(fd,&ch,1)) == 0) {
return EOF;
}
while (ch != ‘n’ && j != 0 ){
buf[i++] = ch;
j = read(fd,&ch,1);
}

buf[i++] = ”;
return 1;
}

int string()
{
char buf[MAX];
int fd=open(“readline.c”, O_RDONLY);
int j=0;
int i=read_line(fd, (char *)buf);
while (i != EOF ){
if (i == 1){
strcpy(s[j++], buf);
fflush(stdout);
}
i = read_line(fd,buf);
}
return j;
}

int main(void)
{
int i;
int j=string();
for(i=0; i<j; i++)
printf(“%sn”, s[i]);
return 0;
}

#!/bin/bash
#FileName: readline.sh
L=`cat readline.c|wc -l`
i=1
while [ $i -le $L ]
do
p=’p’
IP=$i$p
sed -n `echo $IP` readline.c
let i=$i+1
done

利用预处理使C看起来像Algol-68

利用预处理使C看起来像Algol-68,C专家编程上说是为了便于调试,其实这样的代码在往往难以维护,可读性差。

#include <stdio.h>
#define IF if(
#define THEN ){
#define ELSE }else(
#define FI ;}
#define WHILE while(
#define DO ){
#define OD ;}
#define INT int
#define STRING char*
#define	BEGIN {
#define END }

INT compare(STRING s1, STRING s2)
/* K&R参数定义形式
INT compare(s1, s2)
STRING s1;
STRING s2;
*/
BEGIN
	WHILE *s1++ == *s2
	DO IF *s2++ == 0
		THEN return (0);
		FI
	OD
		return (*--s1 - *s2);
END

/* K&R参数定义形式
int compare2(s1, s2)
char * s1;
char * s2;
*/
int compare2(char * s1, char * s2)
{
	while (*s1++ == *s2){
		if (*s2++ == 0)	return 0;
	}
	return (*--s1 - *s2);
}

int main(void)
{
	printf("%dn", compare("aca", "acA"));
	printf("%dn", compare2("aca", "acA"));
	return 0;
}

rcu(Read-Copy update)──读拷贝更新

今天在看ULK时,对照源代码,发现在 include/linux/list.c中有好多类似 fun() 、fun_rcu()的函数对
如 list_del()、list_del_rcu(); list_add()、list_add_rcu() 等
这里的rcu是Read-Copy Update的意思,它是2.5/2.6内核中引入的新技术,它通过延迟写操作来提高同步性能。
操作系统中,数据读取操作远多于写操作,而rwlock机制在多处理器环境下随着处理机增多性能会迅速下降。针对这一应用背景,IBM Linux技术中心的Paul E. McKenney 提出了”读拷贝更新”的技术,并将其应用于 Linux 内核中。 RCU 技术的核心是写操作分为“写”和“更新”两步,允许读操作在任何时候无阻访问,当系统有写操作时,更新动作一直延迟到对该数据的所有读操作完成为止。Linux 链表中的RCU功能只是 Linux RCU 的很小一部分,对RCU链表的使用和一般链表的使用方法基本相同。

在删除表项的函数中,用到了include/linux/poison.h 中定义的两个宏
#define LIST_POISON1  ((void *) 0x00100100)
#define LIST_POISON2  ((void *) 0x00200200)

static inline void hlist_del(struct hlist_node *n)
{
__hlist_del(n);
n->next = LIST_POISON1;
n->pprev = LIST_POISON2;
}

static inline void INIT_LIST_HEAD(struct list_head *list)
{
list->next = list;
list->prev = list;
}

这是为了防止意外使用一个已被删除的表项指针产生页错异常,在初始化时则是将表头的pret和next指针置都执行头结点。

灾难面前的感动

《一位伟大母亲留给孩子的最后一条短信》

亲爱的宝贝,如果你还活着,一定记住我爱你!

《生死不离》

生死不离,你的梦落在那里
想着生活继续
天空失去美丽,你却等待明天站起
无论你在哪里,我都要找到你
血脉能创造奇迹
你的呼喊就刻在我的血液里

生死不离,我数着秒等你消息
相信生命不息
我看不到你,你却牵挂在我心里
无论你在哪里,我都要找到你
血脉能创造奇迹
搭起双手筑成你回家的路基

生死不离,全世界都被沉寂
痛苦也不哭泣
爱是你的传奇,彩虹在风雨后升起
无论你在哪里,我都要找到你
血脉能创造奇迹
你一丝希望是我全部的动力

《孩子快抓紧妈妈的手》

为汶川地震死去的孩子们而作
作者不详
孩子快
抓紧妈妈的手
去天堂的路
太黑了
妈妈怕你
碰了头

抓紧妈妈的手
让妈妈陪你走
妈妈

天堂的路
太黑
我看不见你的手
自从
倒塌的墙
把阳光夺走
我再也看不见
你柔情的眸
孩子
你走吧
前面的路
再也没有忧愁
没有读不完的课本
和爸爸的拳头
你要记住
我和爸爸的摸样
来生还要一起走
妈妈
别担忧
天堂的路有些挤
有很多同学朋友
我们说
不哭
哪一个人的妈妈都是我们的妈妈
哪一个孩子都是妈妈的孩子
没有我的日子
你把爱给活的孩子吧
妈妈
你别哭
泪光照亮不了
我们的路
让我们自己
慢慢的走
妈妈
我会记住你和爸爸的模样
记住我们的约定
来生我们一起走

2008年哲思自由软件峰会(北京|上海|西安)

2008年5月24日-5月31日 中国 北京-上海-西安

关于哲思自由软件峰会
哲思自由软件峰会的主要目的是普及自由软件思想,通常邀请国际顶极大师来中国就自由软件、开源软件、互联网等领域发表演讲,话题涵盖思想、法律、技 术、教 育、学术、企业、投资等。峰会的形式是开放式的,鼓励中国的自由软件爱好者和支持者踊跃参加,让中国自由软件社区能够近距离接触国际顶极大师,一起探讨、 交流。
嘉宾介绍

Richard Stallman
自由软件基金会创始人及主席、GNU工程创始人,美国工程院院士

自由软件黑客和活动家,GNU工程的创始人,GNU General Public License作者。他是GNU Compiler Collection的主要作者,同时还开发了GNU Symbolic Debugger,GNU Emacs和很多其他GNU软件。他获奖众多,包括美国计算机学会Grace Murray Hopper奖,MacArthur Foundation fellowship,电子边疆基金会先锋奖,Takeda Award for Social/Economic Betterment和数个荣誉博士头衔。


倪光南
中国中文信息学会理事长 中国工程院院士 中科院计算机所研究员

倪光南,汉族,1939年生,浙江镇海人。1961年毕业于南京工学院(现东南大学), 首创在汉字输入中应用联想功能,中科院计算所公司(联想前身)和联想集团首任总工程师。主持开发了联想式汉字系统、联想系列微型机,分别于1988和 1992年获得国家科技进步一等奖,联想集团即以联想式汉字系统起家并由此而得名。1994年被遴选为首批中国工程院院士,现为中国中文信息学会理事长, 中科院计算所研究员,北京市人民政府参事。

宫敏
技术科学博士 北京凝思科技总裁毕业于北京大学无线电系。之后在芬兰赫尔辛基理工大学潜心研究深感兴趣的“并行处理”项目(后发展为“分布式处理”)。正是在芬兰,宫敏 博士参与了Linux操作系统的开发与研究,也正是他把Linux引入了中国。宫敏博士还是中国自由软件库的创始人之一,被誉为为中国自由软件界元老。

2000年宫敏博士回国开始创建北京凝思科技有限公司。


Akira Urushibata
生 于1966年,日本东京。1971年至1976年随父母到美国俄亥俄州生活。在日本高中,外语是非常重要的课程。当时他的英语已经很流利了,所以开始学习 中国古典文学。第一台个人计算机出现的时候,Akira Urushibata正在读高中,他在内存极小的计算机上(他的掌上电脑当时仅有1.4k的RAM)学习编写BASIC程序。

参与的自由软件活动:
1992年在东京与Richard M. Stallman见面。
2004至今参与Netpbm图像处理包的开发。
喜欢的编程语言:x86汇编、c、awk、Bash Shell

最喜欢的GNU/Linux发行版:LFS

喜爱的中国诗人:王之涣、杜甫


王星耀
Sun公司副总裁 Sun中国工程研究院院长

在成为Sun公司全球工程部门的副总裁之前,王星耀是负责Solaris网络与安全技术的高级总监,同时也是Solaris 10产品发布委员会的主席。在加入Sun公司之前,王星耀曾经为Adaptec工作。


李欣
英特尔中国开源软件技术中心(OTC) 软件工程师

李欣于2004年加入英特尔从事虚拟化技术的开发,致力于在IA-32平台上开发基于英特尔虚拟化技术的VMM,活跃于开源虚拟化项目Xen和KVM。


徐继哲
哲思自由软件社区创始人
日程安排
哲思自由软件峰会-上海站-复旦大学

* 时间:2008年5月24日 星期六 14:00~16:00
* 地点:上海市杨浦区邯郸路440号 复旦大学(邯郸校区)新闻学院 蔡冠深报告厅
* 地图:去参加哲思自由软件峰会-上海站

哲思自由软件峰会-西安站-西安交通大学

* 时间:2008年5月28日 星期三 14:00~18:00
* 地点:西安市咸宁西路28号 西安交通大学 科学馆101
* 地图:去参加哲思自由软件峰会-西安站

哲思自由软件峰会-北京站-清华科技园

* 时间:2008年5月30日 星期五 14:00~18:00
* 地点:北京市 清华科技园科技大厦A座2层,启迪国际会议中心报告厅
* 地图:去参加哲思自由软件峰会-北京清华科技园站

哲思自由软件峰会-北京站-清华大学

* 时间:2008年5月31日 星期六 14:00~18:00
* 地点:清华大学 主楼后厅
* 地图:去参加哲思自由软件峰会-北京清华大学站

峰会说明

* 哲思自由软件社区是哲思自由软件峰会的主办单位,官方网站是:http://www.zeuux.org。
* 哲思自由软件峰会是开放式的活动,参会者不需提前报名,免费参加。
* 峰会的一些细节信息可能会发生变更,建议你加入哲思zeuux-announce邮件列表,随时获得最新消息;加入zeuux-universe邮件列表,一起参与讨论。
* 购买哲思自由软件T恤,支持中国自由软件社区;购买哲思GNU GPL v3 T恤,到活动现场有机会获得Richard Stallman亲笔签名。
* 参加哲思自由软件峰会,参会者每人可获得一本《哲思自由软件手册》。
* 如果你想成为此次活动的赞助商或合作伙伴,请联系assistant@zeuux.org。

主办单位

Pigeons 0.1 正式发布

实现功能:与遵循IPmsg协议的客户端(如:windows飞鸽传书)能共进行消息通信。
待实现功能:文件传输、穿透NAT
项目采用git控制版本,git树地址: http://repo.or.cz/w/pigeons.git
开发平台:QT4+linux

0.1版下载地址:http://kongove.whostas.com/pigeons.0.1.tar.gz

已实现功能可能还存在许多bug,欢迎您参与测试,有任何问题,请联系我们,谢谢!
(xiyoulinux@googlegroup.com) or (kongjianjun@gmail.com)

—友情提示
1. 下载源码包:
wget http://kongove.whostas.com/pigeons.0.1.tar.gz
2. 解压文件:
tar xvfz pigeons.0.1.tar.gz
3. 进入源码目录:
cd pigeons.0.1/src
4. 编译:
qmake
qmake QT+=network
make
5. 运行:
./src

在pigeons.0.1/src/里有个脚本 install.sh 可以完成4、5步
如果要编译,您必须安装QT4,G++等环境,不过一般下载源码解压后就能直接运行我编译的可执行文件 ./src