随笔分类 - 重复发明轮子
摘要:作者:庄晓立 (liigo)日期:2011-1-19原创链接:http://blog.csdn.net/liigo/archive/2011/01/19/6153829.aspx转载请保持本文完整性,并注明出处:http://blog.csdn.net/liigo关键字:HTML,解析器(Parser),节点(Node),标签(Tag)这是进入2011年以来,本人(liigo)“重复发明轮子”系列博文中的最新一篇。本文主要探讨如何设计和实现一个基本的HTML文本解析器。众所周知,HTML是结构化文档(Structured Document),由诸多标签(<p>等)嵌套形成的著名的文
阅读全文
摘要:作者:liigo日期:2009/11链接:http://blog.csdn.net/liigo/archive/2009/11/23/4858535.aspx转载请注明出处:http://blog.csdn.net/liigo 编译(compile)和链接(link),是计算机编程语言的通用处理系统。编译,是把程序源代码转换为目标文件;链接,是把目标文件转换为可执行文件。把编译和链接分成两个相对独立的子系统,是为了简化,是为了分而治之,也有基于通用性的考虑。编译器(compiler)的任务是把程序源代码编译为目标文件。通常每一种编程语言,都会有它自己的编译器,各种编译器的输出都是目标文件(.o
阅读全文
摘要:本文原始链接:http://blog.csdn.net/liigo/archive/2009/10/29/4744700.aspx作者:liigo, 2009/10/29转载请注明出处:http://blog.csdn.net/liigo 假设有一个基于关键字匹配的文本过滤系统,或类似的系统,需要一个配置文件,用于设定欲过滤的关键字列表。该怎么设计这样一个配置文件呢?又该如何编码实现呢?此文将给出一个可行的方案。这是本人(liigo)重复发明轮子系列文章的新一篇。 因为是一个小型应用系统,我对配置文件提出的要求是:简单直观,易于实现,同时保持足够的灵活性和可扩展性。我对配置文件的设计结果如下:
阅读全文
摘要:本文首发地址:http://blog.csdn.net/liigo/archive/2009/09/22/4582018.aspx转载请注明出处:http://blog.csdn.net/liigo作者:liigo, 2009/09/22 在下围棋时,当一个棋子落到棋盘上,它会对周围对方棋子的死活产生影响,如果对方棋子没有气了(死了),必须从棋盘上拿掉(提子)。这个过程体现到围棋软件中,就需要通过程序代码判断某一个棋子或某一片棋子的死活状态,进而把死掉的棋子从棋盘上移除。 进一步分析的话,刚落下的棋子,只可能威胁到周围与其紧临的上下左右方向的四个对方棋子(也可能是三个或两个,如在边角的话),而
阅读全文
摘要:平时写程序时经常会用到的遍历子目录枚举文件的功能,用 Windows API 函数 FindFirstFile() 和 FindNextFile() 直接实现起来会相当繁琐,有许多细节需要注意和记忆,要在短时间内写出可以正常工作的、没有BUG的、能够递归遍历多层子目录并枚举其中所有文件的程序代码,不是一件轻松的事情。以下这个 doFileEnumeration() 函数,是我(liigo)在 Windows API 函数 FindFirstFile() 和 FindNextFile() 的基础上封装实现的,可以轻松自如的处理遍历子目录枚举文件的任务,使用起来非常简单,具有较高的实用价值。这个.
阅读全文
摘要:这是本人(liigo)独立实现的SGF格式围棋棋谱文件解析器,本文介绍其实现细节。网络上肯定可以找到完善的开源的SGF解析器,这是毋庸置疑的,我不直接使用它们,也不参考它们的实现代码,而是自己独立编码实现,是有原因的,因为我想自己重复发明轮子,并且认为这样更有助于提高我的编码能力。(关于我的“一定要学会重复发明轮子”的不成熟的论调,今后我将会专门撰文表述。) 我(liigo)开发的这个SGF解析器,采用基于事件的简单API,类似于XML解析器中的SAX(Simple API for XML)。这种解析器的核心是:由用户事先提供一系列回调函数,解析器在解析的过程中,依次调用相关的回调函数并传入.
阅读全文
浙公网安备 33010602011771号