2011年12月24日星期六

git初体验

git是linus设计的一个分布式代码管理软件,被他自己成为The stupid content tracker, 傻瓜内容跟踪器。这周简单学习了git的基本概念和一些基本命令,与svn有很大不同,这里总结一下。

1、git与svn的服务器客户端模型不同,git的服务器和客户端内容是完全相同的,用户完全可以在本地修改,提交,但如果需要多人合作开发时,需要将自己的本地镜像提交到服务器,相当于把本地的代码、提交记录拷贝到服务器。

2、git客户端和服务器的通信不直接使用用户名密码,而使用密钥、公钥进行加密通信。


3、git可以很方便的建立分支,这是我觉得非常有意思的功能,在svn上建立一个分支需要svn管理员配合,我如果想在本地做多个修改测试,不实用分支的就需要做多个拷贝。git上我可以建立一个分支,在分支上做开发提交,如果可以就把分支上的代码合并到主干,如果不可以就可以直接删除分支,十分方便。

4、不需要联网就可以提交代码,使用svn的时候我有时候在家里修改代码,必须等到第二天到公司才能提交,有时候就忘记了自己都做了那些修改,commit msg该如何写。用git可以随时提交,到公司同步即可。

5、git本地未commit有staged、unstaged两个状态,staged表示下一次要commit的修改。


上面3、4两个特性是我最喜欢的特性,我在github上注册了账号,我想做一些社会化的开发,第一步就从学习git开始,继续体验使用git,学习一下git的基本原理。github推荐了git pro书,书籍blog上画的git状态图十分清晰明了。打算先用git命令行工作一个月,再去使用github的mac下的GUI客户端。

2011年12月17日星期六

总结2011,展望2012

2012年有很多想做的事:
走出去,看看外面的世界。
学一门新语言,从python开始
业余参与github的项目,能够提交万行代码。

2011年11月24日星期四

mac lion下的emacs使用

 主要内容:
1、lion下brew的安装
2、使用brew安装emacs及全屏设置
3、emacs类似source singht的语法高亮
4、cscope的安装和配置
5、cedet的安装

内容
1、lion下brew的安装
          brew全名为homebrew,是mac os下的一套包管理软件,类似ubuntu上的apt-get。直接使用brew安装emacs十分方便,而且emacs加入了lion中全屏的支持,升级也方便。
          homebrew中介绍了如何安装homebrew十分简单。

2、使用brew安装emacs
          brew update 更新brew库
          brew info emacs查看你要安装的emacs的版本信息
          brew options emacs查看emacs的安装配置选项
          brew install emacs --cocoa --srgb 安装emacs
           brew程序默认是安装到/usr/local/Cellar/目录下,并不在/Application目录,你可以使用软连接:
            ln -s /usr/local/Cellar/emacs/23.3a/Emacs.app /Applications/Emacs.app这样emacs就会出现在你的应用程序目录中。你也可以直接将Emacs.app移动到Applications目录,不过这样不方便brew对它升级。
           M-x ns-toggle-fullscreen 可使emacs进入全局模式,再运行一次退出全局模式。绑定一个快捷键更为方便
           (global-set-key [C-f7] 'ns-toggle-fullscreen)
           我用的emacs为23.3.1版本,貌似当前可以升级到24了。如果你在23版本安装中遇到编译问题可以参考这里


3、emacs类似source singht的语法高亮
          emacs的局部变量,函数调用等都是不高亮的,看着比较单调。zjl-hl插件可以实现类似source insight中的高亮效果。首先需要下载三个el文件zjl-hl.elregion-list-edit.elhighlight.el,将插件放到你的插件目录(我的是~/.emacs.d)后面两个被第一依赖。
          在.emacs中加入如下代码:

          (require 'zjl-hl)
          (zjl-hl-enable-global-all-modes)
          来源在这里这里



4、cscope的安装和配置
          brew install cscope安装cscope

          生成cscope数据库索引,具体参考这里
          1、建立cscope.files文件,指定要索引的文件,这里我要建立的是linux kernel的数据库,我对非x86框架和驱动代码关系,所以不索引这些代码。
     2、cscope -b -q -k生成索引数据库
     3、去这里下载cscope-indexer,这是一个脚本直接拷贝到/usr/local/bin即可,因为emacs建立索引时使用cscope-indexer -r命令,所以要下载它。我们直接使用命令行时也可以直接使用它,而不用第二条中的命令。
         
          在emacs中使用cscope
          1、下载xcscope.el放入插件目录,在.emacs中加入(require 'xcscope)
          2、c-h v cscope-program RET 修改mac下cscope的路径(我的是/usr/local/bin/cscope),要选择保存所有场景。
          3、c-s s a 设定索引文件目录
          现在可以使用快捷键来浏览代码了。c-c s c-h查看cscope命令帮助
                C-c s s              序找符号
                C-c s g             寻找全局的定义
                C-c s c              看看指定函数被哪些函数所调用
                C-c s C             看看指定函数调用了哪些函数
                C-c s e             寻找正则表达式
                C-c s f               寻找文件
                C-c s i               看看指定的文件被哪些文件include
          参考这里这里这里这里。  

5、cedet的安装
           直接参考这里,评论更精彩。

2011年8月20日星期六

配置macos新映像,文件系统支持区分大小写,使用svn

   在macos从svn服务器checkout代码时,出现如下错误:
svn: In directory 'iptables/extensions'
svn: Can't open file 'iptables/extensions/.svn/tmp/text-base/libxt_CONNMARK.c.svn-base': No such file or directory

   在google上搜索到svn checkout: No such file or directory on Mac OSX这篇文章,了解到macos下默认的文件系统是不区分大小写,而我要checkout的代码包含了同名但大小写区分的文件,最终导致了svn checkout源码失败。
   虽然作者给出了两种解决方案,当都没有细说,未说明具体的操作步骤,然后从评论里发现了亮点:use Disk Utility to create a sparse bundle disk image。大意为单独创建一个区分大小写的磁盘映像,将代码checkout到这个映像。
    研究了一下Disk Utility这个工具,有两种方案:1、建立新分区 2、建立新映像。我选择了第二种方案,这种方案不改变磁盘的结构,映像只是一个文件存储在原有的文件系统之上十分好用。
    在应用程序-实用工具中打开磁盘工具,在菜单栏里选择文件-文件-空白映像文件,弹出新建映像文件菜单
(存储为:,填映像文件存储的路径)
(名称:,填映像的挂载名称,挂载后会在桌面上限制,跟U盘类似)
(大小:,任意)
(格式:,选择区分大小写日志式)
(加密:,任意)
(分区:,选择单个分区-apple分区图)
(映像格式:,选择稀疏磁盘格式)
    最后点击创建即可,这是会看到桌面上多了一个挂载磁盘,为新建立的映像挂载。 在此挂载目录即可存储大小写区分的文件。











2011年7月14日星期四

挚友

真诚的友人
鲁迅 《书信集·致李秉中》:“飞短流长之徒,因盛传我已被捕……老母饮泣,挚友惊心。”
邹韬奋 《患难馀生记》第一章:“我出国后《生活》周刊即被封闭,挚友 杜重远 先生即接着创办《新生》周刊。”

价值释义
挚友是能够激励对方的存在,对他们的批评意见颇为信赖。 一个人,也许朋友会很多:一起工作的朋友,一起学习的朋友,一起玩耍的朋友……
但朋友也有很多种:有挚友,普通的朋友,也有酒肉朋友,甚至还有有只为利用而交的的朋友……
人生是一次漫长的旅行,挚友是不可缺少的!只有拥有自己的真正的朋友,旅程才不会孤单。也许你常听某人说:“我朋友怎么怎么样”,但这种常把朋友挂嘴边的人往往没有真正的朋友。但当你有心事时,你所说的朋友却抽不出时间听你倾诉,从未为你提供双肩让你的泪水流淌。
酒肉兄弟千个有,落难之中无一人。一个普通的朋友会带瓶葡萄酒参加你的派对,一个真正的朋友会早点来帮你准备并且为了帮你打扫而晚点走。
正所谓“君子之交淡如水,小人之交甘若醴”“真朋友,淡中如水;假朋友,蜜里调油。”美国开国总统华盛顿曾说:“真正的友情,是一棵成长缓慢的植物。”找到自己的挚友是一个漫长的过程。正所谓“路遥知马力,日久见人心”相信在长久的相处中,各位能找到自己的挚友。珍惜这份真正的友情,并在一言一行中发展它!相信总有一天,你们的友谊会超越亲情!不再会有隐瞒,不再会有欺骗,不再会有怀疑,不再孤单!相信这个世界是美好的!*切记:选择朋友要审慎,摒弃更要审又慎。

                                                                                        --摘自百度百科
                                                                                                    共勉

2011年5月22日星期日

搜索引擎使用技巧

总结了些goolge搜索引擎的使用技巧:
1、使用“-(减号)”去掉不需要的内容
比如我们想搜索有关航天火箭,我们搜索关键字“火箭”,结果里有好多关于NBA火箭对的内容,这是几可以用“-(减号)”去掉NBA的内容,“火箭 -NBA”可以得到更为精确的内容。

2、使用“OR”关键字和“”双引号
当我们在搜索框输入两个词(如“A B”)时,搜索结果页面是即包含A也包含B的页面,如果我们想搜索包含A或者包含B的页面时,写“A OR B”即可得到。如果我们想单词就是“A B”连在一起的组合,就需要使用双引号将其括起来。

3、使用搜索引擎变量
搜索某一类型的文件:filetype:*,如filetype:doc搜索后缀为doc的文件
在某个制定网站内搜索:site:*,如site:com.cn在所有的com.cn结尾的网页中搜索
在标题中搜索某关键字:intitle:keyword,这里keword会出现在网页的title中
在url中搜索某关键字:inurl:keyword,keyword会出现在网址中。

2011年4月24日星期日

《把时间当作朋友》、《Rework》读书笔记

本周读了这两本书,李笑来的《把时间当作朋友》是读第二遍。读这两本书有有一些小思考。

两本书都是实用性的书,一本教你如何使用时间更好的工作生活,一本是教你如何开公司如何创业的。但是两本书有很多交集,在如何做决定、如何对待问题、如何解决问题上的处理方法都是相同的。我想人生任何事情的本质就是如何决定、对待和处理问题。

读的过程中每一页,每一个观点都很适用自己。但是两本书读完之后,又觉得什么收获都没有,什么都没有记住。很痛苦,从觉得自己不会读书。前些时间自己还读过一本《如何阅读一本书》来培养自己的阅读能力,但是读过之后还是没有多大提高。我只能用笑来的观点来告诉自己了:“你并不孤独”所有的人都不是天才,普通人都是这样的,读一次能从书中吸取的知识是很少的,需要之后不停的阅读并且实践。“耐心”学习需要很大的耐心,要学会“推迟自己的满足感”慢慢来学习。

慢慢的学会使用各种“工具”来辅助自己更好的管理住自己的时间,自己的生活。

没有办法一下学会书中所有的观点,就要学会抓住重点,先总结三个从有感觉的书中观点:
1、立刻行动,不要在乎方法、工具。因为你最重要的是完成某件时间,而你是用什么方法、什么工具完成的重要吗?不要把时间浪费在方法的确定和工具的选择上。
2、控制自己:控制大脑、控制情绪、推迟满足感。学会更有耐心,学会控制对外界输入的输出,学会利用自己的情绪。
3、你并不孤独:世界上肯定有人跟你遇到了相同的问题,痛苦的人不止你一个,但他们可以度过苦难,你也可以。

2011年2月25日星期五

SVN服务器的搭建

SVN是一种版本控制系统,工作需要自己搭建了一台SVN服务器,在这里总结一下。我使用的是F8操作系统,安装完成后,自带有SVN服务器。主要说一下配置过程。

1、创建项目目录
mkdir /svn
2、创建SVN项目
svnadmin create –fs-type fsfs /svn
命令执行完后,会在/svn下创建一个SVN项目,/svn目录下包含conf、dav、db、hooks、locks目录以及format、README.txt文件。
3、将最初代码导入到项目中
svn import /root/svn file:///svn –message “import initial code”
本命令将/root/svn目录下所有的文件和目录导入到/svn这个项目中,注释为message内容。本中方法是在服务器机器上直接操作,也可以使用SVN客户端工具将客户端机器上的代码发到SVN服务器上。
svn import –m “” /root/svn svn://10.50.10.233/trunk
这样/root/svn目录下的所有代码,会被上传到SVN服务器的本项目的trunk目录下。
4、修改SVN服务器配置文件
修改svnserve.conf:将anon-access、auth-access注释去掉,并将内容改为none、write;password-db为密码文件路径、authz-db为权限文件路径,修改为本项目的配置文件路径,我这里的路径为/svn/conf/passwd和/svn/conf/authz。
修改/svn/conf/passwd:添加用户,如test1 = 111111。用户名 = 密码格式。
修改/svn/conf/authz:按照示例,在[groups]中添加组合本组的成员,然后添加访问目录和那些组可以访问这个目录。
5、将svnserve程序设置为开机启动。
将/usr/bin/svnserve –d –r /svn 添加到/etc/rc.local文件最后。

到这里配置就完成了。我们可以使用SVN客户端软件来测试一下。


SVN主干(trunk)、分支(branches)、标记(tags)的意义
三个词的含义是我们认为加给SVN服务器的,在SVN服务器的程序设计中并没有这些概念。
主干:代码的主线,可读可修改。
分支:开发中在某一点遇到了不同或临时的需求,就建立一个分支,同时在主干和分支上做开发,分支可以由多个,是可读可修改。
标记:标记是代码进程中的一个镜像。如在某个时刻,项目完成了一个里程碑,这时在SVN服务器上打一个标记,给一个名字。以后就可以获取这个里程碑时的代码了。标记是可读不可修改的。
使用svn cp主干路径 分支或标记路径 -m命令即可建立分支和标记

2011年2月18日星期五

《你的知识需要管理》读书笔记

  书中有理论也有实用的东西。理论告诉你向那个方向努力会比较好,实用的告诉你如何寻找这个方向,如何努力。
  书中讲的很多的理论其实也是大道理,读起来有种感觉就是:“这个我也知道啊”,但是知易行难,比如:
  与人沟通需要话题,而这个话题就需要自己去匹配。也让自己“有料”,对别人有话题才行。
  把自己的想法知识,不管用什么方法表达出来,都会自己有很大的提高。
  事后多总结,多反思自己,比读多少书都强。
  学会共享知识,推销自己,让别人知道自己的价值,自己的知识量。
  书中也共享了很多实用的知识:
  如何学习一个陌生的领域。
  如何更好的利用搜索引擎。
  如何更好的利用好工具,网络工具。
  如何给给文件和文件夹命名。
  如何保存自己的知识及寻找自己的知识。
  
  我很认同作者总结的个人知识管理的5个步骤:学习知识、保存知识、共享知识、使用知识、创造知识。人价值的体现也是遵循这些步骤的,有前两步铺垫的人,算一个合格的人;中间两步做的很好的人,别人会很认同这种能给被人带来价值和帮助的人,算一个优秀的人;能够创新的人就算是顶级的人才了,能够标新立异,做出别人做不出来的东西。
  
  ”世事洞明皆学问,人情练达即文章。“所有的东西都是可以在后天学习、练习的。从这本书中学到了些理论,但更多的是实用的知识,所以说这本书对我来说算一本实用书。

2011年2月12日星期六

man手册数字的意义

1、Standard commands (标准命令)
2、System calls (系统调用)
3、Library functions (库函数)
4、Special devices (设备说明)
5、File formats (文件格式)
6、Games and toys (游戏和娱乐)
7、Miscellaneous (杂项)
8、Administrative Commands (管理员命令)
***************************************************************************

1 用户命令, 可由任何人启动的。

2 系统调用, 即由内核提供的函数。

3 例程, 即库函数。

4 设备, 即/dev目录下的特殊文件。

5 文件格式描述, 例如/etc/passwd。

6 游戏, 不用解释啦!

7 杂项, 例如宏命令包、惯例等。

8 系统管理员工具, 只能由root启动。

9 其他(Linux特定的), 用来存放内核例行程序的文档。

转自:
http://hi.baidu.com/bihailan/blog/item/c9af7813b608a4095baf538c.html

2011年1月13日星期四

《国富论》阅读笔记一

最近对经济学感兴趣,于是问了几位推上的经济学大牛该那什么作为入门读物,各位大牛一直推荐《国富论》。于是就从当当买了一本来读。
欧洲政策引起的不均等一小节,讲的是政府和同业行会指定的各种制度(学徒制、时间限制)对某一行也发展的影响。政府适度的政策和同业行会的适度整合是可以帮助行业的发展的,可以促进行业工人交流、共同学习,但是如果过度就会成为现在说的地方保护政策,限制了正常的竞争,影响了行业的正常发展。
这个让我联想到了我从事的程序员这一行业,我目前接触到的程序员基本上都是各做各的基本上很少交流,很少会有技术等类的分享。就和闭关锁国一样,没有交流,就很少会有提高。在推上看到,那些比较优秀的程序员,都会有很多的朋友,他们拥有沟通的技能,乐于沟通,经常参加同行聚会来交流来共同提高。由于公司的不合理政策,员工之间很少谈论薪资,没有参考,很难给自己一个合理的价格。互相交流可以相互参考,给自己一个合理的价格。销售比较容易跳槽,薪资也会比较高,也是这个原因。我想说的就是:做为一个程序员,想成为一个优秀且衣食无忧的程序员,就要多沟通(写博客、与人沟通)、多参加行业聚会、认识新朋友,认识外面的世界,不要成为一个自我感觉良好的井底之蛙。

PS:写的很痛苦,不能将文章写的由论据到论证到成为结论,不能将自己的想法完整的表述出来,还是需要多写来提高自己啊。