Nov 16

从上大学开始就从vista(笔记本自带)开始(错过xp时代了),后来流行装双系统,也搞过xp玩。最主要还是搞linux,当时好像是ubuntu和debian,后来知道他们是一家。跟其它同学不同,就算ubuntu这好东西,我还是觉得不合适,最后还是放弃了。

从接触windows到了解windows,喜欢windows,到知道linux,到了解linux,到喜欢linux,到讨厌windows, 到不讨厌windows,到理解windows,到不怎么用linux,到用windows也用linux,到只用linux,到现实。

那时我一直坚定地觉得windows方便(主要是视觉上亲切,不同工作环境用不现系统嘛),特别是出了win7之后,视觉上总觉得比linux舒服(不管linux搞得多炫)。

那时用linux也通过虚拟机,试过virtualPC(这个主要用来虚拟dos,方便),然后用vmware,装redhat(centOS),这种搭配稳定了一段时间,其实我一直觉得redhat+gnome界面好用,怎么说呢?就是给人一种沉稳的感觉,用着放心。

之后还是觉得vmware太大了,用着不流畅(可能是我配置电脑太差了),在猫的介绍下用上了colinux了,开始是用debian lenny,桌面用的是xfce,当然印象最深的就是apt-get这个命令了,太帅了。

再之后就是archlinux了,而且再也没有换过其它发行版了。

0.archlinux足够简单。它只给了我们一个基本系统,其它都是自己加上去的。

1.配置方便。rc.conf加上其它的一些配置文件,从开机到各种模块服务加载,我感觉可以完全控制我的系统。

2.pacman+abs。更新,安装软件方便。不管是下载安装还是自己编译都可以统一管理。

总体感觉:轻量,简洁,安心,自由。

archlinux通过虚拟机和双系统都搞过,最后稳定在winddows+colinux+archlinux+putty这种搭配,算是集windows和linux优点于一身了吧。

其实最后我是实在忍受不了我机器上windows7的速度,才决定重新装回双系统(更确切是找回我那沉睡在硬盘某角落的arch),进行了各种折腾式的配置。

开学的时候经过一翻折腾把windows7彻底弄掉:整个硬盘从以windows分区为中心转向以linux分区为中心,转向完全的linux分区。

使用linux总免不了在各种桌面环境(图形界面)之间纠结。

我的桌面使用发展轨迹大概是这样的:

1.gnome(redhat,ubuntu,centos)

2.kde(在arch里面安装完,就直接pass了)

3.gnome太大,换xfce4,之后再换lxde,再换回xfce4

4.不再用整套桌面环境,改用用管口管理器+桌面配件搭建自己的个性桌面环境

    a.sawfish+xfce某些组件。主要因为它是用lisp语言配置的。

    b.fvwm,之前一直没碰,因为听说很复杂。也就是从这个暑假开始折腾的,从完全fvwm到fvwm+lxpanel。

    c.fvwm的方案用了一两个月。

5.发现自己fvwm用得最多只是它的键绑定,界面什么的还是没配置得让我满意,于是决定试试gnome,不过这回是3。安装完之后发现我的各种需要都可以得到满足,于是就这么定了。

可是蛋疼的事情还是发生了,有个项目必须用windows开发,在看到了virtualbox,kvm跑xp的表现后,我不得不作出艰难决定,再装回windows7。

一开始以为很简单,只要找个分区就行了,但就是装不成功。原来windows7要求两个主分区,但我只剩扩展分区可以用了。没办法,可怜的arch 最终还是给霸道的windows7让路了,arch重新退守到扩展分区,让出最开始的两个主分区,不过整体上arch还是占有磁盘大部分空间的,并间接控 制着windows7的领地。

不折腾,不纠结!

Nov 16

暑假的时候,想找个linux下的即时战略游戏,于是就找个这个游戏。

Globultaion2是一个跨平台的即时战略游戏,当然其 复杂性比不上魔兽/dota,但也因为简单和创新的任务自动分配资源,简化了操作,使游戏者更关注于战略,更能吸引我这样的人。它自带地图编辑器,战 役,AI,YOG联机对战,地图也挺多的,对于我这种没打过Dota的人,已经足够了。

现在是Beta 4 (0.9.4.4),有些试验性功能,有些功能没开。

详细:http://globulation2.org/wiki/Main_Page

Oct 10

由于要用windows的软件,所以在virtualbox下安装了xp。因为一直是左手使用鼠标,但是安装使用了左手风格的指针后发现鼠标作用点的位置不在指尖。搜索到一个办法:

1.在控制面便->鼠标中设置切换左右键,变成右手。
2.步骤1比较简单,但是左手鼠标指针的图标有点繁琐。

    a)将你希望要变换成左手的图标找出来。
    b)下载并安装可以编辑ani这种鼠标图标文件的软件,我用的是Microangelo Toolset 6(其他的有相同功能的可)
   c)用 b)中的软件打开你要编辑的鼠标指针图标,首先当然是变换方向,第三行的工具栏有flip horizontal
   d)最重要的一部,设置热点,不然你会发现鼠标指针的指尖知道的地方,不是鼠标真正起作用的地方,
    在第二行的工具栏有个set hot spot的功能,功能图标是一个有点的鼠标指针。将热点设置到图标中的鼠指针的指尖位置,保存即可
   e)最后在鼠标的设置图标中使用这个图标即可。

最关键就是d)设置热点,在virtualbox中设置成指尖位置是不行的,测试发现设置成最左下角就可以解决了,此时作用点正好在指尖。

Oct 10

郭去疾对乔布斯一生的总结,很感人。http://t.qq.com/p/t/2672116257737

乔布斯是戏剧人生最精彩的诠释者:

你可以出身卑微,但必须卓然不群;

纵使你将众叛亲离,也注定要重头再来;

最迷人的剧情不是后来居上,而是王者归来;

最伟 大的战局不是尖峰对决,而是独孤求败;

最完美的谢幕不是激流勇退,而是嘎然而止。

美人难免迟暮,英雄方能不朽,

花淘尽,正是好处,却是了处。

Sep 20

M67的那篇文章在这:http://www.matrix67.com/blog/archives/1598
很久之前就转到自己博客上来了,在这里,当时也没细看,当然也没看明白。
今天仔细分析了下,终于明白怎么回事了。
先用字符串“I love you to death! You are the cutest and sweetest girl I've ever met.”生成程序为:

     #include      <stdio.h>
   main(t ,_,a)  char*a;{return
 t<1?main(*a,a[-t],"=a-1kj3gnm:q\
ebh_cf*<r.d>i^+?,()[?qzyrjuvcdefg\
h,!kbpolwxs'.t main(")&&a[-t]&&main
(t-1,_,a):t/2?_==*a?putchar(32[a])
  :_%115<36||main(t,_,a+1):main(
    0,t,")?r<g:?1<3?+<#?#m:}(\
      w+b_?1<}3?tt(yk:?+|b:\
        ?n3+:>+?([m?>.::+\
          :>+?e)kr?)ig{\
            :?y:~g:k?\
              ,:+^")
                ;}

是一个很漂亮的心形,用gcc编译执行输出:

i love you to death! you are the cutest and sweetest girl i've ever met.#

Sep 20

     前段时间花了三天时间把买了好久《大话设计模式》看了一遍。

     我是先看的附录,也就是面向对象基础。
     这是一本通俗易通的好书,毋庸置疑。看完之后至少有三个收获:
1.对面向对象语言编程(书中用的是C#)有更深的理解。
       面向对象三大特性:封装,继承,多态。
       抽象类与接口是什么?
       泛型,事件,委托与代理。
    真如书中所说,看完比上一个月课,读几本砖头书印象深,理解透。
不是说看完了就学到很多东西,而是看完之后你会有“原来如此”感觉,理解了基础,再深入就不是问题。
2.UML类图
  UML包含的东西当然很多,但书中用一例子就把类图继承,依赖,接口等等基本要素都讲到了,
至少让你我这个从没用过UML的人,看到类图能明白是什么意思。
3.设计模式及面向对象原则
  全书围绕大鸟和小菜,讲解了GOF的23个设计模式+简单工厂模式,及面向对象的四大原则+其它几个原则。

  单一职责,开放-封装,依赖倒转,里氏代换是面向对象编程之所以有效的原则,它们让软件系统是可复用,可维护,可扩展,灵活性好的。也是这些设计模式所遵守的原则。

     看完了,想想应该练习下。可书中都是用面向对象语言实现的(C#,Java等)。可我不怎么用面向对象语言,我就想用C语言来
实现它们。可C语言如何面向对象呢?之前看过有用结构来模拟实现类的,但继承,多态这些怎么弄呢?想起了很久以前瞄过的一本书《OOC》,讲的是用标准c实现面向对象。把c和对象放在一起,大家就会想起C++,是啊!有C++不就行了,为什么要折腾c呢?可就是有很多人对c++不满意,Linux之父Linus就是力挺C而批判C++的。讨厌C++的人似乎认为C++过于复杂,内部机制陷阱过多等等。OOC作者也是由于对c++不满足而转向c。

OOC这本书中主要讲了以下两点:一个发现,一个实现。
1.发现c是完全面向对象的
2.利用c实现面向对象(这里不是用c实现一个面向对象的语言,而是就是用c实现面向对象)
从抽象数据类型说起,到面向对象的要素讨论,最后提出自己的对象模型,推导出了一个类树。包括对象,类,继承,多态,最后还实现了类型检查,异常处理。为了方便编程,作者实现了一个预处理器。这本书对理解面向对象原理,很有帮助。
这里有本书的原文和部分译文下载:http://wiki.chinaunix.net/OOC
我开始看前几章觉得很晦涩难懂,硬着头皮,中文加英文看下去,搞清楚了大概思路,作了一些变化,
自己也写了一个预处理器玩了下,现在也可以很容易定义类,实现继承、多态等。

     后来搜索“面向对象理论”,发现一篇自称是扯淡的文章:http://www.iteye.com/topic/89241
我觉得这文章还是很有启发意义的,至少知道了面向对象的历史,发展,知道了有类,无类语言,3P和4P的概念。

     看了评论发现《程序设计--实践之路》这本书,这是本讲如何设计语言的书,从编译原理,语言发展,到语言的各种要素。
大概看了下里面“10.数据抽象和面向对象”一章,才知道从基本类型(整数,浮点),函数类型,结构类型,后来发展出
模块类型,按理论,类是从模块类型发展而来,面向对象也应该按此发展。可事实上面向对象的基本要素都是从20世纪60年代
开发的simula语言中来的。

     关于c语言实现面向对象,最经典的应该是gtk+了,一个基于C语言的面向对象的图形编程环境。
其中GOjbect就是基于C语言的面向对象的实现,它和glib是gtk+的两大基石。
这里面有很多关于GObject的文章:http://ekd123.is-programmer.com/posts/28754.html
什么时间好好学习下GObject了。

Sep 18

在youtube上面看到这个视频专辑:“Hardware and Operating System basics”

如果看不了,我已经上传优酷了:硬件和操作系统概要

主要内容:

  • programming the CPU and its interactions with memory and i/o devices: instructions, registers, big-endian vs. little-endian, memory-mapped vs. port-mapped i/o, interrupts, hardware exceptions, the cache
  • use of memory: stack-based execution, allocating heap, virtual memory, swapping, stack allocation
  • operating systems: Windows vs. Unix, processes, drivers, pre-emptive multi-tasking, system calls, blocking, the filesystem, IP

介绍在这里