2008年7月25日星期五

学习kernel网络体系结构(3)

尽管,现在开始学习内核,我感觉自己的基础还是很不好的,没有进行一些系统的学习,而且基础部分也是七零八散的。没有把过去学到运用起来。所以现在还是以学习基础为主,不要好高骛远了!
这次主要写的是关于net的也就是说很多函数在dirvers/net/下还有在net/core/下
除了字符设备和块设备,网络设备是Linux内核中的第三类适配器。他们在设备文件系统/dev/中没有表示,这就意味着不能通过简单的读写来操作来访问他们。网络适配器不能被邦定到单个进程,他们运行在内核中并且独立于各用户进程[RuCo01]。
顺便添加几本好的书哦![RuCo01] Alessandro Rubini and Jonathan Corbet. Linux Device Drivers. Sebastopol, CA: O'Reilly & Associates, 2d ed., 2001. Online version at http://www.oreilly.com/catalog/linuxdrive2/index.html. (Visited on January 10, 2004.)
[BBDK+01] Michael Beck, Harald Böhme, Mirko Dziadzka, Ulrich Kunitz et al. Linux Kernel Programming. Boston: Addison-Wesley, 3d ed., 2002.
[BoCe00] Daniel P. Bovet and Marco Cesati. Understanding the Linux Kernel. Beijing and Cambridge, MA: O'Reilly, 2000
有空要看看哦!
我在include/linux/netdevice.h 这个目录下看net_device结构,此结构是内核中的所有网络设备的基础数据结构。它不仅包含网络适配器的硬件信息(中断,端口,驱动程序函数等等),还包括面向更高层网络协议的网络设备配置数据(IP地址,子网掩码等)。其中包含了大量的函数指针,更高层协议通过它们的全局名称来调用它们,随后驱动程序的硬件相关方法被各网络设备调用。

我认为还是先大体浏览一边而后在进行,认识细致的读和理会,它们中的每一个数据结构的意思都要明白和了解。

现在,大体把其中的主要的部分列举,它们中有网络设备的通用字段;硬件相关字段;网络层上的字段。Linux内核中的所有网络设备都被一个线性表连接起来。
网络设备的注册与注销,哦,drivers/net/net_init.c这个文件竟然在2.6.26中没有找到。
MAC协议(FDDI,HIPPI),难道是媒体介质访问控制(Medium Access Control,MAC)协议,应该看看了。
网络设备的开启和关闭,相关代码在net/core/dev.c下,同样,创建和寻找网络设备的代码,还有为状态改变而设计的通知链,在网络设备上进行传输,网络设备中的初始化网络适配器。
分配系统资源的帮助者函数
request_region() , release_region() , check_region()在kernel/resource.c下
request_irq() , free_irq()在kernel/irq.c下
request_dma() , free_dma()在kernel/dma.c下
但是,打开和关闭网络适配器,传输数据,包传输过程的问题,运行配置,适配器相关的ioctl()命令,网络设备的统计信息,适配器层次的多播支持,的主要函数在drivers/net/isa_skeleton.c下

sctp协议

几个相关的网站
http://www.ibm.com/developerworks/cn/linux/l-sctp/
http://www.ietf.org/
你应该下载相关的,软件才可以用。
http://sourceforge.net/projects/lksctp
他的相关的文档
http://www.ietf.org/rfc/rfc2960.txt
在以后的通信领域里面应该会比较多的应用sctp协议。
以后,看看,现在还是看一些简单的!
The Stream Control Transmission Protocol (SCTP) is a new IP transport protocol, existing at an equivalent level with UDP (User Datagra Protocol) and TCP (Transmission Control Protocol), which provide transport layer functions to many Internet applications. SCTP has been approved by the IETF as a Proposed Standard [1]. The error check algorithm has since been modified [2]. Future changes and updates will be reflected in the IETF RFC index.

2008年7月24日星期四

学习kernel网络体系结构(2)

尽管,看过了,但是还是不能深刻的记忆和理解,我感觉只有一步一步的实践了之后,你才会正真的理解其中的奥秘。我再次,重新看。Linux网络实现的灵活性和高效性的一个主要因素是缓冲体系结构,它管理了网络报文——所谓的套接字缓存(socket buffer) ,skb。
一个套接字缓存由俩部分组成:报文数据和管理数据。

看了这个图,我们将分析他们中的一些具体的参数。
我们要明白其中的指针指向的位置。

其实,内容很多,我们还是简单的了解一些,而后多读源代码,现在把一些代码粘贴,看看,那些和图里面是如何对应的。
自 2.6.22 版的核心開始,sk_buff 結構變更

struct sk_buff_head {
/* These two members must be first. */
struct sk_buff *next;
struct sk_buff *prev;
__u32 qlen;
spinlock_t lock;
};
但是,下面的和以前一些版本有些变化。
struct sk_buff {
/* These two members must be first. */
struct sk_buff *next;
struct sk_buff *prev;

struct sock *sk;
ktime_t tstamp;
struct net_device *dev;

union {
struct dst_entry *dst;
struct rtable *rtable;
};
struct sec_path *sp;

char cb[48];

unsigned int len,
data_len;
__u16 mac_len,
hdr_len;
union {
__wsum csum;
struct {
__u16 csum_start;
__u16 csum_offset;
};
};
__u32 priority;
__u8 local_df:1,
cloned:1,
ip_summed:2,
nohdr:1,
nfctinfo:3;
__u8 pkt_type:3,
fclone:2,
ipvs_property:1,
peeked:1,
nf_trace:1;
__be16 protocol;

void (*destructor)(struct sk_buff *skb);
#if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE)
struct nf_conntrack *nfct;
struct sk_buff *nfct_reasm;
#endif
#ifdef CONFIG_BRIDGE_NETFILTER
struct nf_bridge_info *nf_bridge;
#endif

int iif;
#ifdef CONFIG_NETDEVICES_MULTIQUEUE
__u16 queue_mapping;
#endif
#ifdef CONFIG_NET_SCHED
__u16 tc_index; /* traffic control index */
#ifdef CONFIG_NET_CLS_ACT
__u16 tc_verd; /* traffic control verdict */
#endif
#endif
#ifdef CONFIG_IPV6_NDISC_NODETYPE
__u8 ndisc_nodetype:2;
#endif
/* 14 bit hole */

#ifdef CONFIG_NET_DMA
dma_cookie_t dma_cookie;
#endif
#ifdef CONFIG_NETWORK_SECMARK
__u32 secmark;

#endif

__u32 mark;

sk_buff_data_t transport_header;
sk_buff_data_t network_header;
sk_buff_data_t mac_header;
/* These elements must be at the end, see alloc_skb() for details. */
sk_buff_data_t tail;
sk_buff_data_t end;
unsigned char *head,
*data;
unsigned int truesize;
atomic_t users;
};
套接字缓存是用来定位和管理一个报文在内核中被处理的整个周期的。
以上的代码都是在include/linux/skbuff.h 里面,有空在好好的看看其他的。
struct sk_buff可能是linux网络代码中最重要的数据结构,它表示接收或发送数据包的包头信息,并包含很多成员变量供网络代码中的各子系统使用。
这个结构被网络的不同层(MAC或者其他二层链路协议,三层的IP,四层的TCP或UDP等)使用,并且其中的成员变量在结构从一层向另一层传递时改变。 L4向L3传递前会添加一个L4的头部,同样,L3向L2传递前,会添加一个L3的头部。添加头部比在不同层之间拷贝数据的效率更高。由于在缓冲区的头部 添加数据意味着要修改指向缓冲区的指针,这是个复杂的操作,所以内核提供了一个函数skb_reserve来完成这个功能。协议栈中的每一层在往下一层传 递缓冲区前,第一件事就是调用skb_reserve在缓冲区的头部给协议头预留一定的空间。
skb_reserve同样被设备驱动使用来对齐接收到包的包头。如果缓冲区向上层协议传递,旧的协议层的头部信息就没什么用了。例如,L2的头部只有在 网络驱动处理L2的协议时有用,L3是不会关心它的信息的。但是,内核并没有把L2的头部从缓冲区中删除,而是把有效荷载的指针指向L3的头部,这样做, 可以节省CPU时间。
http://hi.baidu.com/zkheartboy/blog/item/2dd5207a28eb2fee2f73b355.html不错哦!
Linux内核为我们提供了很多函数来操作套接字缓存,如:1.创建,释放和复制套接字缓存 2.操作sk_buff结构里的参数和指针 3.管理套接字缓存队列
而这些函数一般在net/core/skbuff.c 和include/linux/skbuff.h函数中。

进程fork

学习了一段时间进程,用fork()函数把原来的进程,变为俩个进程,其实就是fork()创建了一个新的进程,新进程返回"0",原来的进程继续执行,返回一个新的PID。
在man手册中说fork create a child process
SYNOPSIS:梗概
#include
#include
pid_t fork(void);
看这是什么呢?pid_t是在types.h这个文件下的
pid_t Used for process IDs and process group IDs.
而fork()函数在unistd.h下定义了,而且还有 pid_t vfork(void);

DESCRIPTION: fork() creates a new process by duplicating the calling process. The new process, referred to as the child, is an exact duplicate of the calling process, referred to as the parent, except for the following points:
SEE ALSO
clone(2), execve(2), setrlimit(2), unshare(2), vfork(2), wait(2), capa-
bilities(7), credentials(7)
也就是说我们也要看这些相关的函数,才可以更好的理解和运用fork()函数。
进程是正在运行的程序,其实他是一个运行着一个或者多个线程的地址空间和这些线程所需
的系统资源。每一个进程将会被分配一个PID。进程有自己的栈空间,用于保存函数中的局>部变量和控制函数的调用与返回。进程还有自己的环境空间,包含专门为这个进程建立的环
境变量。进程还必须维护自己的程序计数器,这个计数器用来记录他执行到的位置,即执行
线程中的位置。
Linux进程表就像一个数据结构,它把当前加载在内存中所有进程的有关信息保存在一个表>中,其中包括进程的PID,进程的状态,命令字符串和其他一些ps命令输出的各类信息。每>个进程都是由一个我们称之为“父进程”的进程启动的,被父进程启动的进程叫做子进程。系
统运行的第一个进程是init进程启动的,它是其他所有进程的祖先进程。
Linux调度器以进程的优先级为基础来决定运行哪个进程。
等待一个进程用wait()
子进程终止时,它还与父进程之间的关联还会保持,直到父进程也完全结束或者是调用wait
才告结束。因此,在进程表中子进程不会立刻被释放。虽然子进程的不再运行,但是它仍然
存在于系统之中,它的退出码还需要保存起来以备父进程今后的wait调用,这时它将成为一
个死进程或者是僵死进程。
* The child has its own unique process ID, and this PID does not
match the ID of any existing process group (setpgid(2)).

* The child’s parent process ID is the same as the parent’s process
ID.

* The child does not inherit its parent’s memory locks (mlock(2),
mlockall(2)).

* Process resource utilizations (getrusage(2)) and CPU time counters
(times(2)) are reset to zero in the child.

* The child’s set of pending signals is initially empty (sigpend-
ing(2)).
* The child does not inherit semaphore adjustments from its parent
(semop(2)).

* The child does not inherit record locks from its parent (fcntl(2)).

* The child does not inherit timers from its parent (setitimer(2)
alarm(2), timer_create(3)).

* The child does not inherit outstanding asynchronous I/O operations
from its parent (aio_read(3), aio_write(3)).

The process attributes in the preceding list are all specified in
POSIX.1-2001. The parent and child also differ with respect to the
following Linux-specific process attributes:

gdb调试

今天,学习gdb调试,每一天都要有自己的计划。
在用gcc编译的时候就应当添加-g这个选项的。比如:$ gcc -g -o useupper useupper.c
然后你就进入到了(gdb) 你就可以输入命令了,如输入list
当然,我们一般还有设置一些断点,看看我们的程序运行到那里有什么问题,用break命令。(gdb) help break就可以看到他的详细信息了。然后当然用到next和step的命令了,他们的对比如下:
(gdb) help next
Step program, proceeding through subroutine calls.
Like the "step" command as long as subroutine calls do not happen;
when they do, the call is treated as one instruction.
Argument N means do this N times (or till program stops for another reason).
(gdb) help step
Step program until it reaches a different source line.
Argument N means do this N times (or till program stops for another reason).
我们也可以不一步一步用next和step的命令执行我们的代码,而是要直接执行到n行为止,那我们就用until命令吧!用print命令可以查看变量的值。有时可用finish继续执行直到目前的函数结束。
(gdb) help finish
Execute until selected stack frame returns.
Upon return, the value returned is printed and put in the value history.
命令backtrace和bt和where是一样的
(gdb) help bt
Print backtrace of all stack frames, or innermost COUNT frames.
With a negative argument, print outermost -COUNT frames.
Use of the 'full' qualifier also prints the values of the local variables.
我们也可以用display命令告诉 gdb,在每次程序停止在断点位置时自动显示数组的内容。
(gdb) commands我们用这个命令可以修改断点设置,不在断点处停下而是显示,然后继续执行。
Type commands for when breakpoint 2 is hit, one per line.
End with a line saying just "end".
>cont
>end
这里还可以设置其他的一些,如为了打补丁,改变变量用set variable 变量
而cont命令是
Continue program being debugged, after signal or breakpoint.
If proceeding from breakpoint, a number N may be used as an argument,
which means to set the ignore count of that breakpoint to N - 1 (so that
the breakpoint won't break until the Nth time it is reached).
我们可以用info查看一些信息,比如说查看断点及display命令的内容。
我们可以用disable来禁用我们过去的设置。
其他调试工具:
ctags,cxref和cflow等就是一些静态分析程序,他们可以通过源文件提供有关函数调用和函数所在位置的有用信息。prof和gprog等就是一些动态分析程序,他们提供的信息包括已经执行了哪些函数以及这些函数的执行时间。

2008年7月23日星期三

C语言

EOF ( end of file 文件结束标记 )

exit(int Code)中的Code是子进程交给父进程的退出码,父进程由此可以判断子进程的工作状态,比如 nmake(或make,项目管理程序)和cc(或cl,C编译器)的关系, cc就是make的子进程.如果编译成功,cc就用exit(0),父进程make得到这0之后,继续 做后面的事,如果编译失败,cc就用exit(-1),父进程make得到这个-1后,立即停止项目管理,让程序员查错.不管exit的参数是什么,只要调用就一定退出。

extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。extern用在变量声明中常常有这样一个作用,你在*.c文件中声明了一个全局的变量,这个全局的变量如果要被引用,就放在*.h中并用extern来声明。如果函数的声明中带有关键字extern,仅仅是暗示这个函数可能在别的源文件里定义,没有其它作用。即下述两个函数声明没有明显的区别:当然,这样的用处还是有的,就是在程序中取代include “*.h”来声明函数,在一些复杂的项目中,我比较习惯在所有的函数声明前添加extern修饰。

枚举的说明与结构和联合相似, 其形式为:
enum 枚举名{
标识符[=整型常数],
标识符[=整型常数],
...
标识符[=整型常数],
} 枚举变量;

2008年7月22日星期二

学习kernel网络体系结构(1)

最近在看The Linux Network Architecture其实这本书的名字很长的我就简写了。
学习内核,文件系统很重要,因为Linux内核中几乎所有项目都是通过文件系统接口加以处理的。
内核分为:整体式内核,微内核。
Linux是采用整体式内核的,但是2.0开始把某些功能变成了模块;可载人内核也可移出内核。
模块化的好处:接口的定义会始终如一。
在linux-2.6/net的目录下有很多关于网络方面的源代码,在linux-2.6/Documentation/networking目录下也很多的相关的文档是不是也要读一读呢?应该的,至少在暑假期间把这些都看一遍的。
[RuCo01] [BBDK+01] [BoCe00]这些资料应该看看。
学习网络,我们应该知道ISO/OSI参考模型,虽然它们现在用的不是很广泛但是对我们理解网络还是很有忙助的。

这边是模型图,但是现在应用比较多的还是TCP/IP,在看看它们的对比。好好观测它们之间的不同,和相同的地方,还有就是TCP/IP的优点。每一层之间的关系,和下一层,还有上一层的关系。

今天,感觉理解了服务和协议。我就简单的介绍一下。
一些预定义的规则控制不同计算机上相同层的俩个实例之间的通信,这些规则被称为协议。
一个层(第N层)向更高的层(第N+1层)提供一个功能集合,这个功能集合被称为服务。
我们也就是要理解同层与同层之间的关系,不同层与不同层之间的关系。
* 应用层 (Application):应用层是个很广泛的概念,有一些基本相同的系统级 TCP/IP 应用以及应用协议,也有许多的企业商业应用和互联网应用。
* 传输层 (Transport):传输层包括 UDP 和 TCP,UDP 几乎不对报文进行检查,而 TCP 提供传输保证。
* 网络层 (Network):网络层协议由一系列协议组成,包括 ICMP、IGMP、RIP、OSPF、IP(v4,v6) 等。
* 链路层 (Link):又称为物理数据网络接口层,负责报文传输。

好!明天继续!

我最近的计划

重要 && 紧急
夯实基础,重点深入
努力学好网络编程,学kernel,尽可地发邮件,参与开源里的项目
和大家一起学习,一定完成现在的任务
坚持!!!!!!
尽管,现在很多人已经放弃了,这次既然已经想作那么就作好,哪怕遇到更多的困难,我想我可以完成的,我可以做到的,不放弃,首先是自己不能放弃自己,然后尽可能让他人也不要放弃,现在就剩下俩个人了,我首先要提高自己的知识水平。正如第一句,夯实基础。
2008年 07月 18日 星期五 17:19:31 CST
今天,在git上注册项目,写需求分析。每天有计划的完成自己的计划,早上是学习和讨论,中午是参与网上的讨论和查找资料,晚上是学习kernel。按期完成自己的计划,不要再浪费自己的时间了!
2008年 07月 19日 星期六 13:18:28 CST
需求分析,没有写好,继续完成。看看文件系统,便于明天早上的讨论,练习进程间的通讯,编写C/S模型。好一步一步来!

gdb的学习

进程的总结

网络的学习

每天要不断看Linux方面的新闻,当然是去那些官网看,就是那些英文的网站,你是一流的人才

还有就是学关于认证里面的知识,系统的学习。

——————————————————————————————————————————————
重要 && 不紧急
扩展知识面
提高英语应用能力——和外国人沟通和英语专业的学习
为了明年的google summer of code准备
今年的认证考试,想,看其中的知识点,成为Linux的高手!

——————————————————————————————————————————————
不重要 && 紧急
写有一些生活的琐事,把自己的感触记录下来


——————————————————————————————————————————————
不重要 && 不紧急
参与大的项目,因为要学好现在的小的项目,学会更重要的!SSS
刚刚看看8月12日 西安 全天 西安软件园发展中心 西安软件园秦风阁综合楼多功能厅 西安市高新区科技二路68号西安软件园秦风阁综合楼7层
有2008 中国开源软件竞赛 - 开源行动日,看来我要考虑什么时候回家了!

2008年7月21日星期一

写软件需求分析

尽管看了小组里面很多人的软件需求分析,但是我还是感觉稀里糊涂的,我也就只好照猫画虎了,写我的软件需求分析了,但是自我感觉很不好,我们也讨论了可是最后还是不了了之了,而且现在想干的人也没有几个了。我想我会完成的,不论它的好坏,而且我要去吸引更多的人参与。但是,今天突然看到一本软件需求,这不就是我要的吗?
书名是《Software Requirements》 作者是Karl E.Wiegers
看这本书,而后再一步一步开始了写自己项目的需求分析!我写完后将上传到
http://repo.or.cz/w/gocoso.git感兴趣的人看看。先看书这中的重点内容:
IEEE软件工程标准词汇表(1997年)中定义需求为:
(1)用户解决问题或达到目标所需的条件或权能(Capability)
(2)系统或系统部件要满足合同,标准,规范,或其他正式规定文档所需具有的条件或权能。
(3)一种反映上面(1)或(2)所描述的条件或权能的文档说明。
软件需求包括:业务需求,用户需求和功能需求——也包括非功能需求。
(software requirements specification,SRS)
应该避免,(1)无足够的用户参与 (2)用户的需求不断增加 (3)模棱俩可的需求 (4)不必要的特性
(5)过于精简的规格说明书 (6)忽略了用户的分类
必须解决需求中的所有的TBD项。
需求规格说明的特点:(1)完整性 (2)一致性 (3)可修改性 (4)可跟踪性
需求开发可进一步分为:问题获取(elicitation),分析(analysis),编写规格说明(specification)和验证(verification)。
需求分析(requirement analysis)包括提炼,分析和仔细审查已收集到的需求,以确保所以的风险承担者都明白其含义并找出其中的错误,遗漏或其它不足的地方。
由于自己的软件开发经验不是很足,所以我感觉有时还要根据模板来开发,以不断提高自己的水平。
(一个模板)需求过程改进的活动计划
项目:<项目名称>
目标:<成功执行这份计划后希望达到的一些目标。说明业务方面的目标,而不是过程变更方面的。>
成功度量:<描述怎样确定过程变更是否达到了预期要求。>
组织受影响的范围:<说明在本计划中所描述的过程变更带来影响的广度>
人员和风险承担者:<明确谁实施该计划,每个人的角色,及投入时间承诺。>
跟踪和报告过程:<说明怎样跟踪计划中的活动条目进展情况,以及报告其状况结果等>
依赖,风险和限制:<明确对计划成功有帮助或有阻碍的各种外部因素。>
估计所有活动的完成日期:<希望该计划什么时候完成>
活动条目:<为每个活动计划写了3-10个活动条目>

一日是你的用户终身是你的用户。

软件需求规格说明模板
1.引言 1.1目的 1.2文档约定 1.3预期的读者和阅读建议 1.4产品的范围 1.5参考文献
2.综合描述 2.1产品的前景 2.2产品的功能 2.3用户类和特征 2.4运行环境 2.5设计和实现上的限制
2.6假设和依赖
3.外部接口 3.1用户界面 3.2硬件接口 3.3软件接口 3.4通讯接口
4.系统特征 4.1说明和优先级 4.2激励/响应序列 4.3功能需求
5.其它非功能需求 5.1性能需求 5.2安全设施需求 5.3安全性需求 5.4软件质量属性 5.5业务规则
5.6用户文档
6.其他需求
附录A:词汇表 附录B:分析模型 附录C:待确定的问题的列表

根据上面的学习完成了自己软件需求分析,我上传到了http://repo.or.cz/w/gocoso.git
哪位感兴趣,可以去那里下载。

2008年7月20日星期日

我的大二生活!

我的大二生活就在我不知不觉时就度过了,感觉忙碌不是很充实。总结一下,和朋友相互交流一下,想想你们的大学二年级是如何度过的呢?有多少的悲欢和离合呢,或许你有很多喜悦的事情,那就谈谈吧!
我是这样度过的,当还没有开学时,我就到了学校,哦,早到的人比我想象的要多。我感慨一年大学就那样度过了,平淡无奇,还好去冒了次险,不错的一次经历。大二,我还是比较幸运的,我的一个愿望就那样巧妙的实现了,就是去北京,看毛主席,因为他是我崇拜的一个偶像,从他的文章中我学到不少知识。所以有时,机遇是不禁意接地来到我们的身边,首先是你主动去寻找。大二,过得太快,我都不知道我在这一年里做了些什么呢?我终于开始挂科了,大二第一学期,不想作弊还是可以,但是这学期就不行了,我就开始作弊了,我想我不能这样下去了,这不是我,我是一个很老实的一个人啊!看来老实将会在这里让很多事情变得更加的难!努力吧!
再次,感觉到,同样做个好人,有时也是难的,因为他们不相信你是那么的好心的!尽管难,但我还是努力去做个好人,感觉小时候干了坏事,现在应该好好的弥补一下了,而且将来的生活中也难免会干我们很不想干的事情的,甚至是为了自己的利益而危害他人的利益的,但是我不会去干违法的事情的。其实,现在就有很多人早已经那样了,也许你们也是,但是这样的事情我们是无法避免的。我们的社会限制了我们的素质!这段写的不是很好!
好,开讲了。大二了,来到,学校,我就准备去感受一下作小生意了。从小受到商业的熏陶,对商业很感兴趣,也许我以后要走商业这条路了,但是我想了解这个世界,想改变这个世界,所以学习自然科学了。我找了个合伙人作,因为一个人没有多少意思的,买卖还算是可以的哦!转了一点小钱,给大一小生买锁和钥匙链,俩样一块买就比你买一种好。我在买的过程中看到很多人在买,但是他们的产品单一,我的锁也是多种多样的。这是经验,我们家过去的产品就单一,很少赚钱,种类多了就好了,但是要相关,这样同样的客户就很有可能买了,他们的选择也多了。如果,你们其中有人想经商,就多学点吧!在买的过程中,当然,存在我说的“坏事”了,比如,我骗人家我的好,其实我根本就不知道,人家问我是不是这个学校的,我说是(其实我不在咱们学校),让我以后多多关照,我就多多关照。再比如,在有些学校,上女生楼,还是比较麻烦的,但是也难不到我,自有办法,一次,被一个阿姨抓到我的同伙,也就带到了我,只是把我们赶出去了而已。大一新生基本还是比较好说话的,女生有些真的很漂亮,我同伙见到美女就不想走了,不论多少都卖——夸张了下@。当然上楼的办法一般很简单,阿姨也有忙的时候啊!见好就进!打搅N个女生宿舍,在此向你们道歉,有些学校她们的宿舍楼里,大几的也有,有时就冒昧地打搅了不是新生的宿舍了,一般她们是不买的,如果遇上不好说话的还有可能去告你。还记的,吓到一个女生,不好意思,她还穿这睡衣!当然,我在买的过程中还是要干好事的,帮人家搬东西,好像给N个人帮过,就不提了。而且我一般是帮了人家就走了,也不会给人家推销我的产品,原则问题!
当然回到学校,没有给新生买,也给很多人搬过东西,我几乎见了他们还是认识的,但是他们不知道会认识我吗?认识不认识,对我来说不是很重要了!但是,还是有些人,不放心让我帮忙,也许是不需要,估计是假的!好人还是难作哦!
给几个人送过东西,让我同学和朋友感觉到是我在追求某个人呢?随他们去想好了!我给人的光盘不少吧,从上学期到这学期,希望他们好好的利用。那些光盘有些是我刻录的有些是我让人家邮寄的。当然,还送过一些书给一些人,因为那些书对我用处不大了!请不要把我的好心当作什么哦,我并没有太多的想法的!请相信这个世界上有很多好人,尤其是我们没有利益关系的时候,去冒险的那次经历告诉了我很多。
寒假的时候基本就是在看电影中度过,没有好好的学,尽管带回去很多的书,每次我妈都要说我,还好没有拿我的轮滑鞋,因为有太多的雪了!又完成了一件我的小愿望,去和不认识的老师探讨知识。哦,在前面已经详细写了,在这里就不多写了!
大二,总是忙碌的,让我感觉我学的知识很不扎实,从大一我就进了兴趣小组,所以学的比较杂乱了。没有系统地好好学什么,现在我感觉很有必要好好的学一些了,不学不行啊,尽管什么也会一点,但是这一点其实用处不是很大的。接下来的大学生活我就应该专注的学习了!不能人家干什么我也跟这作什么,我不是那样的人,我想把我过去做的不是很完善的东西做得完善些,至少让自己看着舒服一些,那些知识已经很多了,还让我学更多的东西,而且是自己不是很感兴趣的事情,我真的不想那样了,我的朋友,当你看到这些请原谅我的个人想法,不是我不想和大家一起学。其实,我和大家一起学的,我感觉我还是做的可以,实在感谢孔建军!我大学遇到对我最好的人了!
关于作项目,感觉今年除了项目就是项目,大二啊就那么多的项目,哪有呢?会吗?基础还不是很扎实啊!可以完成那些真正的项目吗?了解,这是我的目的,但不是手段。而且关于google summer of code里面的项目真的很大,我的能力就根本完成不了,当然也就没有被人家录取,但是至少我参与了大的,我知道他们是如何了,而且和牛人聊天,用email交流,学到很多的东西,不仅仅是专业的。英文真的要提高,而且有必要专门的学习了!我现在很多时候收到外国的邮件,有些是私人的,我想更好的交流,而且很多网站也是英文的,不懂其中的意思的话,你要花很多时间去找不太好找到的才可以代替,或者就没有。啊哈!要让更多人参与很多人是外国的人,当然你要用英文写了,而且有些网站对中文的支持不是很好甚至不支持。申请在前面也讲了,就不多言了。完了后,再次,放弃,葡萄城的软件大赛,原因是他们是.net的,其实是我们没有时间了,还有就是团队有问题,没有沟通。接下来就是学校的比赛了,周立公C语言大赛,再次的中途放弃,感觉我们团队放弃的原因是由于我,一直很内疚。合作真的有这么难吗?我自我感觉还是很愿意听人家的建议的,可是真的能力有限,重要是没有坚持。但是,我的有一个朋友帮我没有放弃这个比赛,给我一些他的代码,让我很感动,他是宋飞,感谢他了,在此!一个小游戏而已,不仅仅要我理会到了编程的乐趣,还懂得了坚持。所以很感谢他。还有就是为他们抱不平,因为他们的软件我感觉比入选的很多都好,我就和老师争辩了很久,无果,我也很无奈。有时,有些人就是不听你解释,哎!没有伯乐千里马看来也只能先委屈了!
关于女生,他们说我心高,我心里是这么想的宁缺毋滥啊!不急着找吗?我也不是很清楚了,原因就不说了!关于拉女生的手,我承认我拉过N个人的手,但是没有一个是女朋友,倒是有一个我喜欢的。啊哈!一般是由于轮滑,拉一拉手,我感觉现在的人,不论男女拉手并没有什么吗?也不能说明什么,我还是一如既往的我,喜欢助人为乐,不要利用我的好心哦!其实,我以前也坏过的,小心,没有利用到我的好心!但是你们需要什么帮忙尽管说哦!尽管,我有时说话的声音还是比较大的,就那样了!认识了不少的美女,感觉有缘而已,其实我们既然来到一个学校其实都很有缘,所以男生我就认识的更多了,从大一到大四,女生吗?只是大一到大三而已,一般不是很熟。感觉有些美女还是比较傲气的,用我妹妹的话说你们不理我难道还要我主动理你吗?看来追美女就更难了,想要作朋友——普通的朋友,也许就更难了!关于她们,我也不知道要讲什么的好了,希望我认识的女孩们,越来越美。
关于运气,我感觉今天的好运,多数是建军给我的,感谢啊!现在,我们小组剩下的人,就我和他待在这个小组的时间最长了,从一开始到现在,其他的人,有些是断断续续的,有些是晚进的,也有新进的,从小组的没有任何到现在小有名气,我经历了每一步,感受到了每一步。感谢小组其他人的坚持,没有他们就没有小组的今天。现在的我们依然会努力的,把他们优良的传统保持下去。坚持,也许有天就成功了,你甚至都没有想到!大二,一次好运是去北京,参加了一个比赛,虽然比赛的结果不是很好,但是让我从中学到了很多知识!这次细细说说第二次好运,就是见到stallman,详情请看http://xiyoulinux.cn/blog/index.php?s=stallman&submit=,而且有幸一起吃了顿晚餐,更重要的是可以和名师们一起交流。可惜,我一是太激动二是我的英语太差了,故也没有问什么问题,可惜啊!所以我一定要学好英语,为了和更多的人交流。在不能这要丢人了!!!!!下定决心学好!我从此更加爱自由软件了,我早已经删除了windows,用GUN/Linux,真的很好用。尽管我的英语听力也不是很好,但是从简单的几个词里面和他的一举一动就要学到了不少。可贵的是他的执着的精神,爱好奉献,不求名利。很多了!!
哦,没想到,我的大二还是这么丰富啊!还有很多要写呢?不写不行的!已经写了一个下午了!
好,该谈谈我们小组大四的成员了,他们对我也不错,其实,每次吃饭还是把我给叫上,估计是建军的提议吧!和他们吃了好几次饭,让我提前感受了大四离别的气氛了,而后是他们陆陆续续的离开了。去了,我和他们谈论的也不是很多,现在才知道,年龄的差距永远不是问题,而是我们所处的环境,其实我和他们应该是一届毕业的,当然年龄也差不多,但是却不一样了!真正的年龄不是我们的年龄了,而是我们心里的年龄才是我们真正的年龄!我想我会做得更好的!再次感谢他们,我们会一如既往的。从他们那里,我也学到很多很多的东西,比进那些学生会要好很多。而且是我进来的时候,小组才刚刚成立!现在可以取得如此的成绩,真的已经很不错了,看来中国的自由软件开始发展了,而且开源社区的力量是比较大的!有人主动给我们小组邮寄书籍,有人来我们学校讲座,有名师来我们小组!这就是开源,分享自己的智慧。这些都是他们的能力换来的,和更多的人交流,分享我们的智慧,别人给予了我们,我们也应该给予别人更多的,何况现在小组有如此好的基础了呢,我现在还在实验室奋斗着,等待更多的人来到!
关于小组的现状,自我感觉,我们要不断的提高了,利用暑假。否则,临放假时的纳新,有200多人,下学期当如何呢?要更好的发展,当然首先要提高自己。
啊哈哦!啊哈,好,认认真真的学,踏实一些吧!学好,要不看书也要会,才是你基础好了!奥,这就是我的大二了,到此就是这样了!希望对其他人有些鉴戒的地方。

2008年7月18日星期五

一步一步学git

哦,下面有些错误,您要参考的话,还是要认真看完才可以。这样才会成功的,因为我是一步一步写的,连同我犯的错误,都写了!
哦,这是我后来找到的一个视频http://www.youtube.com/watch?v=4XpnKHJAok8
首先您为自己注册个用户,在这里注册http://repo.or.cz/m/reguser.cgi
注意,Public SSH key(s):是你在$ssh-keygen
之后Generating public/private rsa key pair.
Enter file in which to save the key注意这里你一般是回车,当然也可以自己选择一个目录,但是不改变还是比较好找到的。
按照提示输入公匙密钥/密码,生成的公匙默认保存在 ~/.ssh/id_rsa.pub里,这里的就是往Public SSH key(s):里面填的。这样就注册好了。
然后您要到这里http://repo.or.cz/about.html有个create a project,为您自己注册个项目吧!认真的读这个页面的英文,不要急躁哦!
注册完了你将会看到Initiated mirroring. You will be notified about the result by mail.
如果失败的话,你将收到一封这样的邮件,[repo.or.cz] 项目名clone failed
repodir failed with error code 0
看来不是很好注册哦,估计没有找到方法而已,等我找到,写到这里。
如果申请成功就会得到一封[repo.or.cz]项目名 clone completed
Homepage URL:在这里,我起初是写的git://repo.or.cz/项目.py.git
最后改名为http://repo.or.cz/r/gocoso.git,才好了,
http://repo.or.cz/w/gocoso.git !进去后你会发现git他会为你生成的哦!
Mirror URL git://repo.or.cz/gocoso.git
http://repo.or.cz/r/gocoso.git
哦,各位喜欢的话,去看看。
哦接下来就该到应用了。
不错的链接,中文教程http://www.bitsun.com/documents/gittutorcn.htm
http://github.com/johnson/mubs/wikis/how-to-use-git-to-develop
http://wangcong.org/blog/?p=283
这个也可以,但是使得我出了很多的错误http://www.kongove.cn/blog/index.php?s=git
我一边学一边用一边在这里总结,一起学哦!记的看看您装了git了吗?装了就直接看!
我想为我申请的那个项目push一些东西
首先$ mkdir gocoso
$ cd gocoso/
$ git-init-db
$ git-add test.txt
$ git-commit -m "add test.txt"
$ git push git+ssh://用户名@repo.or.cz/srv/git/gocoso.git master:master
哦到这里就出错了。不应该添加:master,到后来才明白,正确的见下面。
Enter passphrase for key '/home/gaowei/.ssh/id_dsa':
error: dst refspec master does not match any existing ref on the remote and does not start with refs/.
fatal: The remote end hung up unexpectedly
error: failed to push some refs to 'git+ssh://Gaowei@repo.or.cz/srv/git/gocoso.git'
应该是还没有创建Push URL吧!而且它Warning: This is a mirrored repository, thus you cannot push into it. Changing the user set will have no practical effect.
哦,在直接注册ssh不行Software error:在考虑一下
原来如此啊!
Project gocoso successfuly set up.
The push URL for the project is git+ssh://repo.or.cz/srv/git/gocoso.git.
原来,你是在注册的时候选择上Push mode.而不是Mirror mode.但是,Repository URL你也一定要填写的,到这里基本就可以了!感觉自己犯了错,还在这里写。啊哈!
这是突然看到有了俩个,一个是http://repo.or.cz/w/gocoso.git
一个是http://repo.or.cz/r/gocoso.git/
哦,但是push的时候还是失败了,这又是为什么呢?
我重新来一遍吧
[gaowei@(none) gocoso]$ git-add test.txt
[gaowei@(none) gocoso]$ git-commit -m "add a test.txt"
# On branch master
nothing to commit (working directory clean)这里不是很明白。
看到下面和上面的有什么区别了吗?这就是错误的原因。
$ git push 接下一行git+ssh://Gaowei@repo.or.cz/srv/git/gocoso.git master
Enter passphrase for key '/home/gaowei/.ssh/id_dsa':
Counting objects: 3, done.
Writing objects: 100% (3/3), 219 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To git+ssh://Gaowei@repo.or.cz/srv/git/gocoso.git
* [new branch] master -> master

我为开源多做些事情!

接触开源,有一段时间了,所以尽自己的能力为开源做些事情。
我现在主要是编写一些wiki,这也许就是web 2.0吧!贡献自己一些力量,传播更多的知识,分享更多的智慧。
我常去的,这是我们小组的wiki,有空我就去看看,有时添加一些知识,你也可以哦!http://www.xiyoulinux.cn/wiki
这个是我刚刚开始加入的,感觉还算可以,但是还是要很多人参与到其中
http://wiki.chinaunix.net/index.php/%E9%A6%96%E9%A1%B5
想学习kernel,所以我认为首先参与到中文内核开发者的团队里面,你有何高见呢?
http://wiki.zh-kernel.org/
我想为这个网站作一些翻译,而且它里面也准备申请google summer of code到时候还是想参与一下他们的项目的,要具体了解一下了,http://www.synfig.org/Main_Page
我常到这里但是做得太少了,讨论的太少了,感觉自己的英文水平真的要好好的提高了
http://www.daniweb.com/
哦,这个开源社区,刚刚起步,我们应该多参与,而且他的创办者来我们学校几次
http://www.zeuux.org/
还有灰狐,的程勇也到过我们学校,应该参与,可是现在我对java不是很感兴趣,现在学好C
http://huihoo.org/
我在申请google summer of code时候的项目就是在这里的,感觉到自由软件里面还真的很需要人才的,我们应该贡献自己的力量的,http://www.linuxfoundation.org/en/OpenPrinting
还有很多,我注册了,现在已经忘了,甚至我都不知道那个网站了,更不要说是名字和密码了。
以后把经常去的,多作些贡献,不好的网站和我作了小贡献的网站记录下,生活要注意细节问题。
好好努力!
我在几个项目在这里http://sourceforge.net啊哈被封了很久,现在又可以上了!
现在,我的项目在git网站了!http://repo.or.cz/啊哈!有空参与哦!
我的项目http://repo.or.cz/w/gocoso.git
好了,在这里添加一些我常去的网站。
http://www.google.cn/ http://www.baidu.com我想您是比较熟悉的了。
这几个是比较好的搜索rpm包的地方http://www.rpmfind.net/等待以后添加了,忘了。
Linux的一些不错的网站:
http://www.linux.org/
http://www.linux-mag.com/
http://www.linuxdoc.org/
http://www.linuxfocus.org/
http://lwn.net/
http://www.mjmwired.net/
== Linux资源 ==*[http://sourceforge.net/index.php 开源软件大厅]*[http://www.tldp.org Linux文档计划]*[http://www.kernel.org Linux内核官方网站]*[http://www.linux.org Linux新闻]*[http://www.freshmeat.net Linux程序下载中心]*[http://www.linux.com Linux.com]*[http://www.linuxwiki.org Linux Wiki]*[http://www.linux-wiki.com Linux-wiki.com]
=== 中國大陸Linux社区网站资源 ===
[http://www.chinaunix.net 中国最大的Linux/Unix技术社区][http://oss.lzu.edu.cn 兰大开源社区]
[http://www.linuxsir.org 黄嘴企鹅]
[http://www.linuxfans.org 中国Linux公社
[http://www.linuxforum.net 中国Linux论坛]
[http://www.linuxedu.net 中国Linux教育网】
[http://linux.chinaunix.net/ 中国UNIX社区-Linux时代]
[http://www.lupa.gov.cn 开源高校推进联盟]
[http://www.linuxdby.com Linux大本营]
[http://www.linuxdby.com 简体版]
[http://big5.linuxdby.com 繁体版]
[http://www.linuxeden.com Linux伊甸园]
[http://www.linuxaid.com.cn 中国Linux技术中坚站][http://www.oldlinux.org/cgi-bin/LB5000XP/leoboard.cgi OldLinux 论坛]
[http://freeway.linuxsir.org FreeWay 自由之路原创文档小组][http://freewill.linuxsir.org FreeWill 自由意志翻译小组][http://gentoo.linuxsir.org/doc/cn/ Gentoo 中文文档集散地][http://lfs.linuxsir.org LFS 中文用户小组]
[http://www.fcitx.org Fcitx 小企鹅输入法]
[http://linux.pku.edu.cn 北京大学Linux俱乐部]
[http://fsa.ia.ac.cn 中科院自动化研究所自由软件协会][http://www.gnome-cn.org 中文 GNOME 用户门户网站][http://linux.hiweed.com 海微 Hiweed-Debian Linux][http://www.linuxdby.com/blog.php Linux Blog][http://wqy.sourceforge.net 文泉驿中文字体计划][http://www.linuxren.org LinuxRen专注与内核][http://www.linuxsky.org Linux天空]
[http://www.linux-ren.org Linux人](Everest老巢)[http://www.linuxfire.com.cn Linuxfire](linuxfire俱乐部)[http://lcuc.org.cn 中国Linux校园联盟](LCUC)[http://www.chineselinuxuniversity.net/ 中国Linux大学][http://www.beijinglug.org 北京Linux用户组]
[http://www.tofree.org 中国地质大学开源社区]
=== 台灣Linux社群網站資源 ===
[http://linux.vbird.org/ 鳥哥的Linux 私房菜]
[http://www.linux.org.tw/ Taiwan Linux User Group][http://blog.linux.org.tw/ Taiwan Linux Blog Center][http://cle.linux.org.tw/ Linux中文延伸套件][http://www.gentoo.org.tw/ Gentoo@台灣]
[http://b2d.tnc.edu.tw/ B2D中文Linux計劃][http://wiki.debian.org.tw/index.php/Main_Page Debian Wiki][http://knoppix.tnc.edu.tw/ Knoppix中文交流網][http://planet.debian.org.tw/ Planet DebianTW][http://moto.debian.org.tw/ 摩托學園討論區]
[http://wiki.tossug.org/ Taipei Open Source Software User Group][http://www.study-area.org/menu2.htm Study-Area][http://www.openfoundry.org/ 自由軟體鑄造場]
[http://www.study-area.org/ Study Area 酷學園][http://mdk.linux.org.tw/ Mandriva(Mandrake)中文使用開發者社群]
=== 香港Linux社群網站資源 ===
[http://www.oaka.org/ 開放系統研用協會]
[http://www.linuxhall.org Linux Hall Online Project 資訊網][http://www.openstandards.org.hk/ 開源標準科技協進會][http://www.openstandards.org.hk/pages/os_article.htm 開源科技雜誌 OSS Journal]
[http://www.hklia.com/ HKLIA 香港 Linux 商會][http://www.hklpg.org/ HKLPG 香港 Linux 玩家網][http://www.linux.org.hk/ HKLUG 香港 Linux 用家協會][http://wiki.linux.org.hk/ OSWikiHK (香港開源維基)][http://elig.linux.org.hk/ Embedded Linux Interest Group][http://gnome.hk/ GNOME Hong Kong]
[http://www.debian.org.hk/ Debian Hong Kong]
[http://www.samba.hk/ Samba Hong Kong][http://freefonts.oaka.org/index.php/HKSCS_install 香港增補字符集 2001] for Linux】

proc文件系统

刚好今天看到,关于proc文件系统
proc文件一般是一种展示特定内核部分相关信息的文本文件。
很多系统开发人员都使用proc文件系统这种可简易以用户模式显示内核相关信息的功能。/proc目录都很容易实现。另外,/proc目录可以动态地注册和注销,于是常常有一些模块用到proc目录。
奇怪:我用ls查看proc显示大小为0:
niutao@niutao-desktop:/$ ls -l
dr-xr-xr-x 137 root root 0 2008-07-17 23:44 proc
而用鼠标右键查看属性却显示:
15,815 items, totalling 896.2 MB
(some contents unreadable)
针对同一个目录proc两个的显示结果为什么会不一样?
究竟那个才是正确的?
/proc目录下的所有文件都是虚拟文件。所以你ls -l看到是0,而且你的时间好像有问题,现在还没有到23:00呢?否则感觉应该是你登录的时间。这也真好说明他是变化的,而其他很多是不变的,当然也有变化的。
个人认为,仅供参考,用鼠标,感觉就像你进到一个房间,你看到的东西,不论是真的还是虚的,你的感觉他有多的就有多大。而你ls -l是在/,好比是你在屋子外,问里面有些什么东西,他们有多大,如果他是虚的当然是0了。如果你在/proc下看就又显示他还是0,可是kcore却是那么大,和鼠标下显示的一样大!应该和这个有关吧!
-r-------- 1 root root 527306752 07-17 20:43 kcore
猜Nautilus可能通过读取文件内容来获取其大小~~那样就是非0了~~

/proc/kcore
This file represents the physical memory of the
system and is
stored in the ELF core file format. With this
pseudo-file, and
an unstripped kernel (/usr/src/linux/vmlinux) binary,
GDB can be
used to examine the current state of any kernel data
structures.

The total length of the file is the size of physical
memory (RAM) plus 4KB.
我们老师的回答是
/proc 文件系统是一种特殊的、由程序创建的文件系统,内核使用它向外界输出信息。/proc 下面的每个文件都绑定于一个内核函数,这个函数在文件被读取时,动态地生成文件的"内容",例如,/proc/modules 列出的是当前载入模块的列表。

Linux系统对/proc的使用很频繁。现代Linux系统中的很多工具都是通过 /proc 来获取它们的信息,例如 ps、top 和 uptime。有些设备驱动程序也通过 /proc 输出信息,你的驱动程序当然也可以这么做。因为 /proc 文件系统是动态的,所以驱动程序模块可以在任何时候添加或删除其中的文件项。

特征完全的 /proc 文件项相当复杂;在所有的这些特征当中,有一点要指出的是,这些 /proc 文件不仅可以用于读出数据,也可以用于写入数据。不过,大多数时候,/proc 文件项是只读文件。

2008年7月13日星期日

最近学习网络编程

最近放假了,所以一直呆在实验室,学习自己喜欢的知识!感觉学到很多的知识,和大家一起分享。
ssh远程登录,ssh 对方主机名@加IP就可以了。scp 命令是远程拷贝文件,scp -r 主机名@加IP:目录 要拷贝到的目录
用scp也可以上传文件,用scp 你要上传的文件目录 登录主机名@IP:要上传到的目录。
还有就是tree加grep过滤,tree |grep pipe或者tree |less然后,用/你要search的关键字,n是下翻N是上翻。
要手动挂载的话,不知道你要挂载的,你可以在/dev/这个目录下看看,用/dev/sd然后tab的键,俩次看看,或者/dev/d或者也可以。
还有就是学习了进程,fork,管道,pipe,和套间字,socket。我用man分别看了他们的作用,还有就是看kernel源代码,了解了他们的一些简单原理,一切重在应用。
正在摸索用ctags,有空大家一起交流。
[gaowei@(none) FreeBSD]$ ls
[gaowei@(none) FreeBSD]$ cd ..
[gaowei@(none) vmware]$ ls
[gaowei@(none) vmware]$
[gaowei@(none) vmware]$

哦,我的vmware,原来freebsd可以,因为安装了freebsd和suse导致二者都不可用了。啊哈,我把他们都删除了,可是ls还是可以用的,但是没有显示了。我有空在来安装freebsd .的很多时候我们是可以解决问题的,但是我们就不想简单去,而是把它抛弃那样反而使得我们更麻烦了,所以我们应该把一些我们不是很确定的问题,保存了,以后说不定就可以解决了。
我会把我最近学习到的网络编程的知识发表在这里的!谢谢!

linux和windows

尽管,我可能对开源的理解还是不是很深刻,但是我感觉很多人对他没有概念,更不要说是自由软件了!我也就不谈开源。我就谈谈Linux和windows,这些我们还是比较熟悉的。我刚开始也是接触的是windows,我还不知道有什么操作系统,我在没有上大学的时候还以为上网就要用windows呢?现在想一想,啊,windows的推广真的深入世界,就算是我们那个小地方用的是它,而且人们就不懂什么是操作系统,也不懂计算机内部的机制,他们上网会暴露些什么自己的隐私。太可怕了,而好用的Linux只是为懂他的人服务着,不过现在好像也在不断的进行推广,为了更多的人用上好的系统。就像我们吃上放心的食品一样,我们知道他是如何生产的,对我们有什么好处等等,可是我们有时就是不知道我们的食品是如何生产的更尤甚是不知道他是的保质期是什么时候,我们吃了对我们有多大的影响,这些食品就向windows和他的下的一些软件。我们不知道他有些什么额外的功能,他也许会监视我们的一些活动呢?反正你很多时候是不知道他在我们的电脑上干了些什么?
有很多人说实用就好了,管他是什么系统呢?可是我们如果用windows一般估计是盗版的而且让你感觉上好像不是盗版,但是你不幸被检测到,他就会天天提示你,您是盗版的受害者。你就会知道哦,我们原来是盗版阿,不过一般是不会遇到这种情况的。再好好想想我们是多么的无知啊,用的系统还要受到别人的监视,也许我们的一举一动人家清清楚楚呢?我们的利益和安全,想想吧!你也许还是会用windows,你说你已经离不开他了,哦,这就是windows的高明的地方,啊哈,你已经是人家的网中鱼了,你还高兴着呢,说:”我用的windows也是free的,不是和你的Linux一样吗?”这些人就高兴去吧,也许这些人还要用windows赚钱和在开发一些别人用的软件,别人也同样不知道,你的软件内部有什么缺点,就算是你想改也没有办法,尽管你懂软件编程,更不可修改他们编写的代码——想按照自己的想法修改一些功能。我们应该有这些权力的,就像我们吃食品,他们为我们加工好,我们想改变他们的问道是没有办法的,那如果我们买的是原材料的话,我们想作什么样的口味是由我们自己的定的,这是多么的好呢?我们很多的人是喜欢自己做饭的不是吗?食堂的饭看得好,可是我们吃的多了就感觉到不是很好吃了,不知道你们感觉到了吗?而且他们放了很多的非自然的食品和调料,很多是对我们身体没有好处的!好吃不一定就是好的,所以实用的东西一不定有用。Linux的好处,你在网上搜索一下,就可以知道他是多么的优秀了,对你的工作将会有多大的帮助,和如何提高你的效率。在搜索一下 windows就知道他们的一些商业的丑闻了。想想看,他们从世界上剥削了多少的利益啊!而Linux为世界创造了多少的财富,估计要超过windows 了。
你没有windows一样和很好的,甚至更好,是肯定更好的!割掉你的windows吧!不要犹豫了,没有什么可以留恋的,除了让我们浪费时间和金钱就没有什么了。你要作的Linux下一样可以完成,甚至更好,不要用Linux来开发的软件而是为了windows哦!好了,你自己选择吧!明智的你,也许还是会干一些傻事的——还用windows!我想我用了Linux后我才懂得了操作系统和软件的一些真正的原理,看到我用的软件的代码,我想怎么改进就怎么改进,我想就是我们的!
啊哈,分享自己的智慧吧!
感觉我讨论的不是开源,其实开源是在我们的生活的细节里!
哦,刚刚看看8月12日 西安 全天 西安软件园发展中心 西安软件园秦风阁综合楼多功能厅 西安市高新区科技二路68号西安软件园秦风阁综合楼7层
有2008 中国开源软件竞赛 - 开源行动日,看来我要考虑什么时候回家了!

time