- 博客(36)
- 收藏
- 关注
搭建《虚拟机的设计与实现:c/c++》中的HEC虚拟机的调试环境
在阅读编程书籍的时候,如果能边看书边对着机器操作,那么效果会非常好,刚才在看Bill Blunden的《Virtual Machine Design and Implemetation in C/C++》(中文翻译书名叫做《虚拟机的设计与实现:c/c++》)的第三章,作者从main函数入手,将虚拟机的执行流程娓娓道来。如果能边调试那段代码边看书,这样效果会很不错。因此打开随书的源码的目录,进...
2008-06-19 17:30:17 231
原创 PraticalCommonLisp第三章笔记(2)
1.C: void foo(){ bar1(); bar2(); }lisp: (defun foo() (函数体))因此很自然地在“函数体”部分填入bar1, bar2(defun bar1() (format t "bar1"))(defun bar2() (format t "bar2"))(defun foo() ((bar1) (bar2)))很不幸这是错误的,对于list语
2008-01-10 15:55:00 532 1
原创 如何检测C++头文件是否包含了必须的头文件
如果一个C++头文件包含了必须的其他头文件,任何一个其他文件去引用这个C++头文件时,都不需要包含额外的头文件。如何检测呢,在同一个工程里创建一个空的cpp文件,然后只包含这个C++头文件,然后编译,成功则说明了这个头文件至少包含了必须的其他头文件。
2008-01-10 15:50:00 1022
原创 使用python来创建一个xml文件
--------------------------------- as always, fuck "顶" button-----------------今天想使用python来创建一个xml文件。找了下资料,发现资料不是很多,基本上都是使用python来解析xml文件的。比如我要将内容为 dikatour
2008-01-09 14:55:00 2911 1
原创 PraticalCommonLisp第三章笔记(1)
刚才准备继续第三章的阅读,突然想起来自己有第三章得阅读笔记。粗略地重新过了一遍笔记,发现效果甚好:),看来记录读书笔记的这个习惯还是挺不错的。因此决定继续保持下去。1. Think before proceeding to hack..2. 这章需要完成的程序功能:你有一堆CD,每张CD都有标题和艺术家等信息,你想整理这些CD,并且标识你有多么地喜欢每一张CD,如果你喜欢一张CD,你很可能把它刻录
2008-01-08 09:22:00 466 1
原创 Bill Gate's Speech at harvard
临下班,看csdn新闻,瞥到了Bill在harvard的演讲。全文很长,很震撼。耐心看完吧:) http://www.gatesfoundation.org/MediaCenter/Speeches/Co-ChairSpeeches/BillgSpeeches/BGSpeechHarvard-070607.htm
2008-01-07 18:58:00 568
原创 搜狗输入法升级后小小的遭遇
今天搜狗输入法提示有更新,乖乖更新之。没重启。继续干活。后发现打"d"出现的第一个字是"的",现在是"都",而打"l"出现的第一个字是"来",而不是原来的"了"。现在下班重启机器发现恢复原样了。 :)
2008-01-07 18:33:00 348
原创 python中try结构中变量的作用域
-------------- go to hell.-------import socket, systry: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #1except socket.error, e: print "creating socket failed: %s" % e sys.exit(1)try:
2008-01-07 15:36:00 1869
原创 upon这个单词的灵机启发
以前学习英语时一直没弄明白什么地方该用on,什么地方该用upon,事实上到现在我也还没有弄明白。刚才在看>时,看到upon这个单词时,突然"惊讶"地发现原来upon == up + on, 先up,然后再on...非常地形象 :) 以后可以适当地使用分割法,把一个单词分来成部分来窥探
2008-01-05 16:45:00 374
原创 PracticalCommonLisp第二章阅读笔记
/*-----------------------------------------------fuck csdn blogs "顶" button, what a piece of shit!*/ >第二章介绍了lispbox开发工具的使用,由于我以前没有使用过emacs,所以这一章很费脑筋,足足看了两遍,终于可以稍微比较熟练地使用工具写程序了。下面是一些记录。:注意,最重要的是理解快捷键盘
2008-01-05 16:20:00 1196 2
原创 Windows平台中下载使用LispBox
参看>,到http://www.gigamonkeys.com/lispbox/下载windows上的Allegro版本的lispbox,安装过程中会到它的网站上下载一个相关安装程序,等所有全部结束后,会弹出emacs,出现书中描述的prompt符号:“CL-USER>"遇到的问题:当初看了g9的文章,因此下载了clisp版本的listbox,但是那个版本里的emacs根本没有prompt符号(我
2008-01-04 17:01:00 4313 4
原创 lisp的一篇好文章 => The Roots of Lisp
这几天一直断断续续地在hack common lisp,但相关书籍实在太少(好的书又巨厚,巨复杂,以及巨难懂(全是E文:()),又全天在工作,又把大量时间花在了python上面,又...一直对lisp的list概念迷迷糊糊,为什么一个列表要写成 (1 2 3),为什么要有这个引号在list前面呢?诸如此类的疑问,由于学习其他语言从来没有遇到过这样的问题,因此一直没有搞明白。今天看了下paul g
2008-01-04 16:21:00 1137
原创 如何让python调用C和C++代码
安装python后,会有一个chm格式的python手册。要搞明白如何让python调用C/C++代码(也就是写python的extension),你需要征服手册中的>厚厚的一章。在昨天花了一个小时看地头晕脑胀,仍然不知道如何写python的extension后,查阅了一些其他书籍,最终在>书中找到了教程。下面记录一下如何在visual studio 2005中,写一段C/C++的MessageB
2008-01-03 16:26:00 1861
原创 hacking new languages
元旦3天放假,恰好项目最紧的时候已经过去,闲下来,准备学习一些新技术。在离开大学使用C++开发IM软件一年半后,我成了一个典型的Windows程序员。1. 只使用Windows,忽略其他操作系统(Linux,FreeBSD etc.)2. 只使用visual studio(从vc6, 2003, 2005 etc.)开发IM程序,并且只使用VC部分。3. 更糟糕的是只使用C++,与古老的Win32
2007-12-31 16:03:00 515
原创 DiveIntoPython读书笔记3
---------------------------------------------------------------------class Test: Its a test class just for fun def __init__(self): self.data = {"hello":"world", "shit":"shi"} de
2007-12-29 16:57:00 393
原创 dive into python学习笔记2
python中如何做到类似C++的重载操作符的事情呢?比如在C++中,你重载operator就可以使用std::cout /* 顺手写了下C++的实现,突然觉得要把C++学好是需要付出巨大努力的。 反之,学会了C++,再去学习其他语言则相对容易的多。*/std::ostream& operator{ return os }而在python中,如果我们直接打印一个对象的话,打
2007-12-29 14:55:00 344
原创 DiveIntoPython读书杂想
当定义一个函数时,任何一门语言都需要一种机制来确定函数的一些基本性质,比如:返回值类型(可选,动态语言是没有类型的,还记得吗?) 函数名 函数参数 函数的边界(如何确定函数的开始和结束) 如何返回C/C++/Java的做法:int foo(double d){ return 3;}lua的做法:function foo(d) return 3endperl的做法:sub foo {3;
2007-12-29 12:00:00 856
原创 分割合并文件
工作以后基本不用C,全是C++,今天复习C语言中的文件操作,顺便写了个简单版本的文件分割和合并的程序。// FileSplitter.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include #include #include namespace{ std::string DecoratePath(const st
2007-12-28 11:52:00 283
原创 C操作文本
1. 文件和unicode的关系?没关系,文件是文件,unicode是unicode编码。将文件想象成二进制数据,如果你存入文件时存入的是unicode字符(比如每字符是两字节的),那么整个文件是unicode字符的二进制数据。反之,如果存入的是ASCII字符,那么整个文件就是ASCII字符组成的二进制。读取也可以按照字符读取也可以按照二进制读取,如果是按照字符读取,如果你知道文件里存取的都是un
2007-12-28 11:13:00 392
原创 ProgrammingInLua书中关于table的记录
a = {x = 0, y = 0, "hello", "world"}分析:可以使用a.x, a.y来引用x,y,使用a[1], a[2]来引用"hello"和"world".那如果是a ={ x = 0, "hello", y = 0, "world"}呢?没试过,估计"world"的引用还是a[2].a.x相当于a["x"],现在相当多的语言除了基本的数字索引外,都允许字符串索引.因此这里的
2007-12-26 11:45:00 265
原创 处理文件目录斜杠问题的一个kiss办法
string slash= "/";string slash_ex = "/"; //如果你要求dir必须是带斜杠或者反斜杠的process_file(string dir){ file = dir + slash + "foo.txt"; .....handle file.}//如果是带的process_file(string dir){ file = dir
2007-12-26 11:43:00 435
原创 markov算法阅读笔记
------------------------------------ fuck "顶“------------------在>第三章中,两位作者举了一个markov算法的例子,文章一开头,作者以Frederick P. Brook的名言来说明了数据结构的重要性-"如果你只给我看流程图,不给我看你的数据结构表,我可能还是很困惑;如果你给我看了你的数据结构表,流程图有些时候并不重要,流程太明显了
2007-12-20 17:40:00 397
原创 比较元素是否全部相同的一个写法
............................................. fuck "顶" button......................bool Identical(char *a[25], char *b[25]){ bool fIdentical = true; for (int i = 0; i if (strcmp(a[i],
2007-12-20 16:47:00 388 1
原创 链表中随机选择一个节点的算法
从>书中学到的。首先是自己简单地思考该问题,因为我们不知道链表的长度,所以我们要去遍历链表for (T *pT = pList; pT != NULL; pT = pT->next){};如果我们随机出来一个数字10,而当我们去遍历链表的时候长度最后只有3,那我们该取哪个数字呢?其实问题的根源是:怎么保证我们能够随机,每个节点选择的概率是一样公平的呢?书里给出的答案是这样的:char *pStr
2007-12-20 15:27:00 714
原创 C语言中的循环要注意的一个细节
............................................. ( kill 顶 button)...............平时在C++中的循环大多都是一个整型循环,比如for (int i = 0; i 但是在C语言中可能大量使用了指针,因此可能是一个指针循环,比如:typedef struct IntList IntList;struct IntList{
2007-12-20 13:33:00 391
原创 在C语言中建立模型
C是过程式语言,比起面向对象语言,要将一个模型对应到C代码,是有些麻烦的。比如我要建立一个链表,在链表首部插入元素,如果在C++中,我很容易将这个模型对应到C++代码,std::list intList;intList.push_front(3);而C的代码,typedef struct IntList IntList;struct IntList{ int val; IntL
2007-12-20 11:46:00 509
原创 Sqlite简易使用指南
从Sqlite主页上下载下来发现只有一个sqlite3.exe文件,双击后,是一个简朴的console界面,尝试在"sqlite >"提示符下输入c:/test.db,发现并没有在c:盘创建一个数据库文件。向同事请教才明白,"Sqlite >"提示符下的操作是在某个数据库文件中执行sql语句,而我的目的却是要创建一个数据库文件,数据库文件都没创建,何谈进行相关sql操作。要创建一个db文件的话,现
2007-09-13 12:57:00 785
原创 ATL中CComQIPtr设计的一个问题
代码如下,我要从一个接口获得另外一个接口的指针://下面的代码展示从IIMContactManager接口指针成功地获得了IIMGroup接口指针CComPtr spCM;//...这里省略一行代码表示从一个COM对象里获得IIMContactMananger接口CComQIPtr pGroup(spCM);//而以下的代码却失败了CComPtr pGroup;hr = spCM->Quer
2007-09-13 10:42:00 513
原创 lambda的原理和简单实现
对我来说,第一次使用Boost.Lambda的时候感觉是非常震撼的。它减少了代码的编写量,增强了信息的局部性,让代码更加紧凑简洁。但是lambda的原理却让人非常的迷惑,考虑下面的一行代码,这行代码打印一个容器内的所有元素的值:std::for_each(str_con.begin(), str_con.end(), std::cout 这里的_1到底是什么东西呢?我按照语法规则来逻辑地分
2007-09-13 08:12:00 826
原创 设计和C++
csdn的博客里有一位叫刘江的作者发表了一篇文章,描写了大名鼎鼎的linus最近与一位M$的工程师关于C和C++的口水战。linus说明了自己对于C++的观点 -- 很不喜欢,当然也翔实地说明了原因。接着国内的两位我比较尊敬的同行也纷纷发表了C和C++语言相互比较的一些观点。刚才又匆匆看了下pongba的新文章:why C++。pongba真是才华横溢啊,年纪轻轻,英文也好,coding以及C+
2007-09-11 23:56:00 372
原创 list,rbegin以及base
虽说使用stl已经很熟练了,但还是经常要犯这样那样的一些小错误。看下我的这个错误吧。我有一个list,一个map,list里包含了一些人的个人资料,姓名啦(假定姓名是唯一的),年龄啊。由于某种原因,姓名的值可能为空的。现在有一个需求:要求提供一个姓名,能迅速找到这个人的资料。根据这些要求,我就很自然的使用了一个map,map的key是姓名,value是这个姓名在list里的iterator值,因此
2007-09-06 16:08:00 2437
原创 boost::lamda常犯的错误和解决办法
使用boost::lambda时最容易犯的一个错误就是就是将需要的表达式直白的表达出来。比如想从一个Foo的容器中找到值为3的那个元素,可能你会写出这样的式子。 struct Foo { int val; }; typedef std::vector FooVec_t; FooVec_t foo_vec; ..... FooVec_t::const_iterator p = std
2007-09-06 14:40:00 853
原创 正则杂想(1)
alibaba alibaba 2 9 2007-08-16T06:01:00Z 2007-08-16T06:01:00Z 1 48 278 Alibaba 2 1 325 11.8132 Clean Clean 7.8 磅 0
2007-08-16 20:12:00 316
原创 如何正确迅速编写代码(1)
alibaba alibaba 2 42 2007-08-16T06:46:00Z 2007-08-16T06:46:00Z 1 243 1387 Alibaba 11 3 1627 11.8132 Clean Clean 7.8 磅
2007-08-16 20:09:00 677
原创 巧用Google Code备份代码以及备份博客
<!--.STYLE3 {font-size: large}.STYLE4 {font-size: 36px}.STYLE5 {font-size: 24px}body,td,th { font-family: 宋体; font-size: 24px; color: #003399;}body { background-color: #CCCCC
2007-08-16 01:03:00 4031 6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人