2008年7月30日星期三

First lisp code I wrote

I wrote this lisp program to implement Newton's method about calculate square root
To calculate a number's square root.Newton method two argus
1.the number self 'x'
2.a guess value 'g'

All code are under here:

(define zero_error "zero is not recommend to guess")
(define (ab x)
  (if (< x 0)
      (- x)
      x))
(define (good-enough? g x)
  (if (< (ab (- g (/ x g))) 0.00001)
  true
  false
  )
  )
(define (improve g x) (/ (+ g (/ x g)) 2) )
(define (sqrt-iter g x)
  (if (= g 0)
      zero_error
      (if (good-enough? (ab g) x)
          g
          (sqrt-iter (improve (ab g) x) x)
          )
      )
  )
(sqrt-iter -1 2)
(sqrt-iter 1 3)
(sqrt-iter 0 5)

2008年7月29日星期二

Collection of emacs learnning

Emacs学习了一些基本的操作,这里稍微做些整理,感觉自己还不够努力,以这样的速度估计到老也赶不上世界发展的速度。

emacs中最基本的两个键是ctrl和alt(以下称为C和M)

任何操作都是一些键的组合。想了一下一个纯文本的编辑器要实现多功能最好的就是勇这种shortcut的方式。

C - v :forward one screen
M - v :backward one screen
C - l :redisplay (make current cursor in the middle screen without any arguments)

They are the most useful shortcuts in emacs.

C - p :up line
C - n :next line
C - b :backward a character
C - f :next character
M - b :backward a word
M - f :next word

C - a :Move to beginnging of line
C - e :Move to end of line
M - a :Move to beginning of sentence
M - e :Move to end of sentence

M - < :Move to beginning of this text (press shift + comma to type <)
M - > :Move to end of this text

C - u :count a num (usually pass this num as a argument to another command)
C - g :quit all inputed commands

C - x 1 :Kill all window unless the one with cursor on

< delback > :Delete the character just before cursor
C - d :Delete the next the character after cursor
M - < del > :kill the word before cursor
M - d : delete the word after cursor

C - k :kill from cursor tp end of line
M - k :kill to the end of current sentence

Delete part

C - @/< space > : select a region
C - w : kill the words selected

difference between kill and delete
kill can be reinserted delete can not be reinserted

This kind of reinserted called yanking

C - Y :yanking(also called paste)
C - w :kill words select(also called cut)

C - _ :Undo (shift + - = _)

combination key
C - x C - f :open a file
C - x C - s :save a file

C - u 0 C - l :redisplay page using current cursor as first line
C - h k C - f :Open a new window to display help info for `C - f` command 
C - x C -b :list all buffer

C - x s :save some buffers

M - x :following long commands

C - h m :open help doc

C - x f :set a line long(using in text mode)
M - q :re-fill paragraph

C - h v :some variables can customize emacs
C - h f :function name
C - h a :open a window contain all M - x commands(support reglex)
C - h i :online help doc

C - h r :manual

2008年7月27日星期日

Sun Jul 27 11:53:19 CST 2008

新系统安装完毕
有点问题
1.输入法不响应快捷键,很不方便,期待解决办法是研究一下scim的架构
2.evolution的fliter问题,需要时间学习
3.emesene不好使了。。只能用pidgin,凑和

改善也有,不过没注意。。。

笑话一则:
今天聊天是发现,肥猪居然不知道人的牙齿掉了就不会再张出来。。。。
可能是她一直在长牙,就觉得还会张吧。。。

2008年7月26日星期六

Record google repo file

[google]
name=Google - i386
baseurl=http://dl.google.com/linux/rpm/stable/i386
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

2008年7月24日星期四

转篇关于linux目录的文章

今天突然发现忘了/var 里面存放什么东西 决定转篇文章来放着

不知道这些目录结构规范是谁设计出来的,还是比较科学的,期待有更好的目录规范 :)

linux中有很多系统目录,对各个目录的作用了解下还是蛮有好处的

  • /bin 是binary的缩写,这个目录是对Unix系统习惯的沿袭,存放着使用者最经常使用的命令。如:ls,cp,cat等为得到最小的系统操作性所需要的那 些命令通常来说,这个目录已经包含在你的“path”系统变量里面了。当在终端里输入ls,系统就会去/bin目录下面查找是不是有ls这个程序。
  • /dev: 是device的缩写.这个目录下是任何Linux的外部设备,其功能类似Dos下的.sys和Win下的.vxd。在Linux中设备和文档是用同种方 法访问的。例如:/dev/hda代表第一个物理IDE硬盘。主要存放与设备(包括外设)有关的文件(unix和linux系统均把设备当成文件)。
  • /etc
    包含所有核心配置文件。这其中包括网络配置、系统名称、防火墙规则、用户、组,以及其他全局系统项。

/etc/group : 组用户信息;

/etc/passwd : 包含所有的用户信息,如密码,登录shell等;

/etc/fstab : 配置系统有哪些文件系统;

/etc/inittab : 配置init在不同运行级别下分别如何启动系统;

/etc/hosts : 域名解析的配置信息;

/etc/inetd.conf : 进程控制信息;

/etc/printcap:配置如何与打印机通信;

/etc/XF86Config:包含XFree86的初始配置;

  • /home: 用户主目录,每个用户都有自己的用户目录,位置为:/home/用户名。当然,root用户除外。
  • /lib: 这个目录里存放着系统最基本的动态链接共享库,其作用类似于Windows里的.dll文档。几乎任何的应用程式都需要用到这些共享库。
  • /lost+found: 这个目录平时是空的,当系统不正常关机后,这里就成了一些无家可归的文档的避难所。对了,有点类似于Dos下的.chk文档。
  • /mnt: 这个目录是空的,系统提供这个目录是让用户临时挂载别的文档系统。
  • /proc: 这个目录是个虚拟的目录,他是系统内存的映射,我们能够通过直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里.应该永远 不要备份这个目录。它不是一个真实的文件系统,而是运行内核和环境的虚拟化视图。它包括诸如 /proc/kcore 这样的文件,这个文件是整个运行内存的虚拟视图。备份这些文件只是在浪费资源。
  • /root : 是根(root)用户的主目录。
  • /opt : 是安装许多非系统文件的地方。IBM 软件就安装在这里。OpenOffice、JDK 和其他软件在默认情况下也安装在这里。
  • /usr: 这是个最庞大的目录,我们要用到的很多应用程式和文档几乎都存放在这个目录了。具体来说:
    /usr/X11R6:存放X-Windows的目录。
    /usr/bin:存放着许多应用程式.
    /usr/sbin:给终极用户使用的一些管理程式就放在这.
    /usr/doc:这就是Linux文档的大本营.
    /usr/include:Linux下研发和编译应用程式需要的头文档在这里找.
    /usr/lib:存放一些常用的动态链接共享库和静态档案库.
    /usr/local:这是提供给一般用户的/usr目录,在这安装软件最适合.
    /usr/man:是帮助文档目录.
    /usr/src:Linux开放的源代码,就存在这个目录,
  • /var: 这个目录中存放着那些不断在扩充着的东西,为了保持/usr的相对稳定,那些经常被修改的目录能够放在这个目录下,实际上许多系统管理员都是这样干的.顺 便说一下,系统的日志文档就在/var/log目录中. 包含系统守护进程(服务)所使用的信息,包括 DNS 配置、DHCP 租期、邮件缓冲文件、HTTP 服务器文件、db2 实例配置,等等。
  • /dev
    包含硬件设备的文件表示。如果计划还原到一个空白的系统,那就可以备份 /dev。然而,如果计划还原到一个已安装的 Linux 系统,那么备份 /dev 是没有必要的。

一道智力题

昨天晚上 身体不是很好 回家就睡觉了。没写

今天中午到的公司 乘着装rawhide tree 的时候 整理一题昨天做的智力题

题目:
有100个球,AB2人分别取球每人每次可以取[1-5]个球,A先取,拿到最后一个球的人就赢得了这个比赛。问A的策略。
刚上来我觉得,无论A第一次取多少个B都能改换自己取球的数量做到使球数有一定奇偶规律,让自己一定能拿到球。但是细想又不是这样,那A如何可以使用这个先机来确定自己的胜利呢?

我从A最后一次取球的期望值开始推论
1.A最后一次期望球数为d1={5,4,3,2,1}
这样自己才能把球一次拿完取得胜利。那A如何取最好第二次才能使B无论如何取都逃脱不了剩下上面那个集合里面球数的命运呢?可以知道,当B面临6球的时候,无论他如何取,球数都会最终被控制在d1中。
2.所以A最后第二轮期待的集合d2={11,10,9,8,7}
A最后第二次取球时遇到d2内任何一个数的时候他是必胜的。他此时只需把球拿剩6个就能确保自己的胜利。从而A希望B最好第二轮面临的球数是12. 这样就能必胜。取球的策略就是 自己和B取球的和等于6.
3.d3={17,16,15,14,13}=> 上轮目的让B面临18 取球策略也是 自己和B取球和为6.
4.d4={23,22,21,20,19}=> 上轮B面临 24 策略同上。
。。。
。。。
。。。
可以退出规律 即每次A期待B上轮面对的剩球数之差为6
a1 = 6 a2 = 12 a3 = 18 ...... a10 = 60 ...... a16 = 96.
可以推段出 B一共可以拿 16次 球 第一次 期待B面对96 球

得出结论为第一次 A应拿走4球 之后每次取球策略为:取球数和上次B取球数之和为6
如此就能必胜。

这题在某种程度上有点像海盗分金问题。 又有点像2个男孩追女仔。2个男的都需要遵守女孩定下的规定(每次取球数目限制)但是A却能得到优先权。 如果A没有计划傻乎乎的行动,第二轮就能让B把女孩强去了(把每次期待的必胜结果留给A)
告诫每个比较讨女孩欢心的男孩,不要觉得她一定就是你的一定要认真对她:)
对于男孩B就要等待A的失误了:)
今天继续学习emacs 继续整理文档准备新系统,一定要坚持先把工具强化。
还有希望我家那头猪身体好起来

2008年7月22日星期二

All of the starting point ”Tue Jul 22 20:45:25 CST 2008“

07年8月开始用gmail
08年7月开始用blogger

写个blog为的是:记录自己的一些学习笔记;写一些心得.体会;既是督促也算是总结的地方

现在是 Tue Jul 22 20:40:45 CST 2008,目前我的blog名字 还待定 总的来说 希望起一个 带有庇护所的意思的名字。最近老觉得 自己像小丑 或是说是不入流的 演员。 还没登上自己的舞台。就先叫 “clown crown” 名字来源于 D-gray man 里面主角的一个技能。 感觉很酷 白色小丑?


总结一下最近要做的事先
1. 重装系统
1.1 让本本的分区更合理 打算使用2 个raid0 一个用于创建home 分区 一个用于根/ 并把/home加入一个lvm中以便以后扩展
1.2 换回32位系统 使用64位系统 并不为我带来性能上的优势 反而还需要额外安装很多32位的软件包反而浪费了空间。
2. 总结最近对dhcpv6的研究 对rfc3315进行整理。
2.1 整理 关于ipv6 socket 编程规范 的rfc
3. 使用更聪明的单词 记录机制 记录工作中遇到的单词 刚开始保持每周100个单词的学习量。
4. 学习lisp 语言 尽快学习 SICP (Next step TAOCP)
5. freemind repo 开发
6. 多读些杂志和书 回复文学感 这样才是写好这个blog 的长久之计 :)


PS: 预告下明天的 内容 emacs 的初步使用 学习 语法和方法