读书笔记-《细说清朝》

2013年4月20日 1 条评论 4,217 人阅读过  

读历史首先是要看写这段历史的人的口碑和人品,再去看读者对这本书的评价,历史被歪曲的太多,没有经过沉淀的历史书籍从不敢读,黎东方教授的细说系列长久以来被认为是历史读物中的上品,而清朝又是和我们衔接最紧密的一段历史,对于清朝发生的那些事情多多少少都有些了解,却从来没有完整客观地知道那个时代都经历过什么,也从来没有对那个时代的人有一个客观的评价,于是鼓起勇气读完了《细说清朝》。

读这本书感觉作者仿佛一位说书人,将那个年代的历史对你娓娓道来,清朝瞬间的崛起,短暂的辉煌,上百年的内忧外患都在本书中尽然展现,这本书更好地帮我们了解了那个时代的历史,更好地了解了那个时代的人。

中国的历史是帝王的历史,相比之下美国的历史则是平民的历史,这一点也不假,那么厚的一本《光荣与梦想》也不过讲了区区四十年的美国历史,刨除几个大的历史事件,绝大多数篇幅都在描述民众生活常态,以至于读起来会感觉枯燥很多,甚至一部《阿甘正传》都能概括美国大半部历史,相比之下四十年在中国的历史长河中不过是弹指一瞬,中国有太多的四十年,有太多的朝代更迭,帝王更替,而在这漫长的历史中最不值钱的也最不值得一提的便是平民百姓,思想被禁锢被奴化的中国人最容易被历史淡忘,于是历史上只留下了帝王将相。

...
分类: 读书笔记 标签: ,

读书笔记-《观念的水位》

2013年3月17日 3 条评论 5,162 人阅读过  

网络上对于刘瑜的评论似乎趋向于两个极端,说她好的自然大有人在,说她不好的也不在少数,还有人调侃地把她和安妮宝贝和孤郭敬明相提并论,不同的人有不同的政治立场,刘瑜作为一名时评作家,她的观点自然有人赞同有人反对,这都无可厚非,不管是《民主的细节》还是刚读完的这本《观念的水位》,对我而言都是非常有营养的。

根据百度百科里面的介绍,刘瑜在《南方周末》写时评专栏,在《新周刊》写书评和影评专栏,也正像作者在序言中提到的,《观念的水位》这本书就是这些专栏文章的合集,所以前半部分大多是时政评论,后半部分就是书评和影评,我对书评和影评不太感冒,没有读过的书没看过的电影被别人一评价,这书这电影再看起来就没有原来的味道了,观点就会不自觉得被这些评论牵着鼻子走,所以对我而言前半部分的吸引力要远大于后半部分。这本书把一些离散的文章集合在一起,作者也没有刻意地去让他们之前有什么衔接,所以读起来思维可能需要有一点跳跃,比如前一篇在讲伯林墙,后一篇就已经在说曾国潘了。

书中有一篇文章名字和书名相同,以这篇文章的标题作为书名,我相信作者有她的意图,此书的出版意在提高读者的政治观念,文化观念,历史观念,因为只有民众观念的提高才能促成社会变革,这篇文章中有一段话我很赞同,在这里引用一下:

我心中理想的社会变革是一个“水张船高”的地程:政治制度的变革源于公众政治观念的变化,而政治观念的变化又根植于人们生活观念的变化。水涨了,般自然浮起来。我观察社会变革的动力,不那么关注船上有没有技艺高超的船夫,而更关注水位的变化。

...
分类: 读书笔记 标签:

读书笔记-《万历十五年》

2013年3月9日 没有评论 3,785 人阅读过  

多书,科幻玄幻政治历史,有些书是用来娱乐打发时间,有些书是为了开阔眼界,丰富内涵,每读完一本总会有些许的思考,但却一直没有把读完这本书带来的收获记录下来,今天决定开始对读过的>每本书写读书笔记,不能让这些书的内容只是作为过眼云烟,记录下来也算对自己有所沉淀。

黄仁宇的这本《万历十五年》是从杭州回北京的飞机上读完的,读这本书花了不少时间,这期间也主要因为工作太忙,工作之余还要抽出时间来补专业知识,所以就冲淡了读这些文学作品的时间。出差唯一的好处是可以>在旅途中读书,这个过程是很享受的。

《万历十五年》这本书写的是万年皇帝第十五年也就是公元1587年前前后后的历史,作者黄仁宇博士履历丰富,学识也很渊博,《万历十五年》在我看来没有博人眼球的华美文字,字里行间也是朴实无华,作者站在一个>后来人的角度上客观公正地去审视那个年代的历史,为我们重现了一个典型的中国封建王朝有政治和民生。

...
分类: 读书笔记 标签:

Common Lisp使用iolib进行网络编程

2012年1月4日 1 条评论 7,853 人阅读过  

Common Lisp进行网络编程可用的库还是挺多的,比较常用的库有usocketiolib,usocket我简单了解了一下没有真正拿来用,它的API比较简单,文档写得比较全面,相比之下,iolib要比usocket强大的多,但缺点是文档太少,官方的文档可用的内容非常少,但如果能阅读一下iolib的相关源码,就会发现其实iolib是一个很强大的网络编程库,其中包含了DNS解析,socket基本操作(bind,listen等等),IO多路复用以及通常用来做IPC的socketpair,而且iolib的multiplex用起来有种libevent的感觉,用iolib可以实现一般的应用层网络编程,至于是否支持raw socket,我还没仔细研究,不过感觉应该问题不大。

1.iolib的安装
使用asdf-install可以在线安装iolib,但貌似asdf-install不会自动解决包的依赖问题,最近才发现原来asdf-install其实已经是一个废弃的项目,官方已经不推荐使用了,在cliki的asdf-install首页最开头就有一句醒目的提示语:

ASDF-install is OBSOLETE. DO NOT USE ASDF-INSTALL, EVER. DO NOT ASK AROUND ABOUT HOW TO GET IT RUNNING. IT IS O-B-S-O-L-E-T-E. Not working. Not maintained. Please use quicklisp instead.

...
分类: Lisp 标签: , ,

Common Lisp为Babel添加GBK支持

2011年12月22日 1 条评论 6,960 人阅读过  

前段时间在学Common Lisp,接触新语言我干的第一件事一般是通过HTTP抓取某个web页面,因为对网络编程比较感兴趣,而且平时写的程序也多是网络相关的,所以比较关心这方面的用法,于是用IOLib写了一个简单的小程序尝试着抓取了几个大门户网站的页面代码,关于IOLib的基本用法改天我也写篇日志记录一下,也算是和大家分享一下,毕竟能找到的中文资料比较少,而且文档也不是特别全,就像这篇文章里面说的:”Such is the nature of open source documentation. “,于是大多数的用法都得通过hack源代码来弄明白,言归正传,在写这个小程序的时候我遇到了一些问题,关于字符编码的问题,下面慢慢道来吧。

IOLib的receive-from方法是通过调用recvfrom来进行的,这种带缓存的接收方式很符合其它语言进行编程的套路,但它所接收到的buffer数据是需要存储在一个vector ‘(unsigned-byte 8)中的,虽然字符串在本质上也是向量,但对于字符串的很多操作不能直接应用于vector,而且vector中的元素都是每个字符的unicode编码,而不是确定的字符,于是便需要进行转换,最初我使用的办法:

(map 'string #'code-char buffer)
...
分类: Lisp 标签: , ,

使用ASDF构建Common Lisp程序包

2011年12月13日 7 条评论 8,083 人阅读过  

在切入正题之前先写点不相关的,工作确定之后便开始忙论文的事,忙里偷闲总想搞点什么以做娱乐,不得不说,腾讯面试官说过的要精通两到三门不同的语言我印象很深刻,自己也想尝试一下新东西,VIM让我审美疲劳了,也想尝试一下Emacs,机缘巧合由田春老师翻译的《实用Common Lisp编程》刚上市不久,Emacs和Lisp也有不少渊源,再加上Lisp作为一门生命持久的元老级别的语言,至今仍然能倍受广大黑客的推崇,我相信它一定有学习的价值,而且Hadoop的MapReduce据说也是受Lisp的map和reduce函数的启发而来,相信对于Lisp的学习肯定不会是浪费时间,尽管将来工作中应用Lisp的机会可能很少,但深入学习的话肯定会对自己有一定的启发和帮助。

于是几乎同一时间我开始尝试使用Emacs并在卓越上订购了中文版的《实用Common Lisp编程》,抽空阅读尝试。总起来说这本书是非常不错的,几乎是面面俱到,但有些我认为也很有用的宏如defstruct,deftype,check-type等书中没有给出相关介绍,另外关于cl的package书中有一章节专门讲了定义的规则,但对于package的管理及安装并没有提及,我个人觉得如果是practical编程的话提一下cl中重要的ASDF包管理工具还是很有必要的,既然书中没有提到就得自己通过其它的渠道去了解学习,这方面中文的资料相对较少,大多数的资料都是在外文网站上查到的,当然也包括到stackoverflow上的提问。

...
分类: Lisp 标签: , ,

毕业求职经历

2011年11月2日 27 条评论 10,959 人阅读过  

前天去淘宝把三方交了,找工作就到此为止了,找工作的经历虽然不算复杂漫长,但也觉得很累很辛苦。

正式开始投简历找工作应该是从九月份开始的,九月中旬注册了几家招聘网站,陆陆续续地开始往外投简历,目标也比较明确,虽然专业一直是通信,但却想去互联网公司做后端开发,服务器或者分布式系统相关的开发,所以通信类的公司没有怎么投简历,只投了华为的云计算方向和爱立信的软件研发方向。国企没有投,片面地觉得国企是最没有战斗力的公司,还是想到互联网行业的私企做些有挑战性的工作。

第一家面试的公司是IBM研究院,在上地的钻石大厦,离北邮超级远,先坐车到清华西门,然后转车到西北旺,下车后发现右手边是农田,左手边是树林,没有路人,没有出租车,于是完全迷路了,后来沿着树林走了一段时间后偶然发现树林对面有座大楼冒出个头来,于是穿过树林过去问了下那楼的保安,说那就是钻石大厦,OMG,让我好找。IBM CRL没有笔试,师兄推荐的部门,因为是第一次面试没什么经验,也没有准备英文自我介绍,还有些紧张,做了一个简单的slide,没有被问到复杂的算法问题,因为时间比较短,所以挑了一两个重点的项目讲了讲,结束后感觉表现真的很烂,也可能是师兄推荐的原因最后让我拿到了二面的机会,二面安排在十一前,仍然是讲项目,在师兄的指点下改了slide,而且也提前准备了英文自我介绍,这中间也参加过几次面试,也有了点经验,所以感觉还不错,结束后几天也拿到了互联网公司的offer,IBM CRL感觉不太适合我,那边偏向于研究一些,像我这种做工程的在那边确实不是太好发展,于是联系师兄把情况说清楚了,已经浪费了大家两次面试的时间了,如果有第三次面试机会我还是不去了,这样IBM的面试也就到此为止了。

...
分类: My Life 标签:

Redis的事件循环与定时器模型

2011年10月7日 1 条评论 9,203 人阅读过  

假期的最后一天,简单翻阅了下Redis的源码,读一款server软件的源码我一般是从进程/线程模型开始的,Redis让我有些诧异,它采用了单进程单线程的模型,一般的server软件都会采用多进程或者多线程再或者多线程多进程混合的模型来设计,从而充分利用多核处理器的并行计算能力来提高软件的性能,Redis这种模型我只能推断程序的可并行化程度不高,顺序计算反而能省去多线程同步和维护线程池/进程池的开销,我对于数据库server端的设计没有什么经验也没有太多的理解,如有谬误欢迎大家指正。

当然,这里要写的不是关于Redis的进程模型,而是Redis的事件模型和定时器模型。

Redis没有依赖libevent,而是自己通过IO多路复用的方式来实现了事件循环和定时器,不像nginx或者apache有多种多路复用方式可供选择,Redis只采用了三种:epoll/kqueue/select,默认采用epoll,在linux环境下最优的方式当然是epoll,当在FreeBSD平台下epoll不存在时则使用kqueue,当然若两种方式都未定义则使用性能最差的select,我只阅读了跟epoll相关的代码。

...
分类: NoSql 标签: , ,

Memcached内存管理机制浅析

2011年9月8日 5 条评论 11,417 人阅读过  

Memcached的内存管理在网上也可以搜集到不少不错的文章,新浪的这篇《Memcached深度分析》讲得不错,读别人的文章还是不如自己直接去读源码分析源码来得直接,这里写一下我阅读Memcached源码时对于Memcached内存管理机制的理解。

Memcached的代码结构很简单,从main()函数入口进去之后便是几个模块的初始化函数,和内存管理相关的主要有两个函数,一个是assoc_init(),这个是用来初始化哈希表的,关于这个哈希表的作用留在外面讨论,另一个是slabs_init(),该函数用来初始化slab,下面先来讨论一下slab机制。

1. 内存slab的管理
1.1 slabs的初始化

Memcached把内存分为一个个的slab,每个slab又分成一个个的chunk,系统会定义一个slab_class数组,其中每个元素是都是一个对该slab的描述,包括这个slab里面的每个chunk的大小,这个slab里面包含多少个chunk等信息,先把slab分布情况打印出来看看,对Memcached的内存分配有个大体的认识,然后再去读代码可能会好一些。

...
分类: NoSql 标签: ,

VIM复制粘贴的那些事

2011年9月7日 11 条评论 9,855 人阅读过  

说起vim的复制粘贴一直是个比较困扰我的问题,之前一直用gvim,跟系统剪贴板之间的复制粘贴都没有问题,gvim毕竟还需要再开个窗口,麻烦,而且不如vim那样快捷,但vim里面最让我头痛的是复制粘贴问题,想把vim里面的内容复制到其它的地方貌似怎么也不行,粘贴进来的话免强可以,但格式可能会很乱,折腾来折腾去,今天先是发现了个往外复制比较蹩脚的办法:

:set mouse=v

这样鼠标就可以变成文本选择指针的样子,可以选择选择字体,然后点右键选复制,或者CTRL+SHIFT+C,但如果mouse=a这种模式下的话选择之后,右键的复制是灰色的,当然这种情况复制如果有行号的话行号也会被复制进去,所以在复制前先把行号关了,复制完再打开,这办法貌似也能凑合,但着实太不专业,而且太麻烦,远不如用gvim的“+y这种来得方便,“+y这个很多推友表示是可以的,但在我这里不可以,刚经@multiple1902指点,有可能是vim编译的问题。

查看了一下vim版本相关信息:

vim --version

发现clipboardxterm_clipboard这些选项都是不可使用的功能,这样看来果然是编译问题了,slackware讲求KISS,编译的时候没有加入该选项也可以理解,于是从vim官网svn上check下来源码(话说我为啥check下来的是7.2呢,难道7.3还没有stable…),重新编译。

...
分类: Linux 标签: ,