<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7505026804770634898</id><updated>2011-04-21T10:40:49.661-07:00</updated><category term='gnuplot'/><category term='Reading'/><category term='Python'/><category term='flash'/><category term='MathML'/><category term='计算机管理'/><category term='auto'/><category term='news'/><category term='web'/><category term='阅读、Reading、C++'/><category term='latex'/><category term='development'/><category term='阅读'/><category term='latex-suite'/><category term='Batch Command'/><category term='转贴'/><category term='计算机'/><category term='Windows'/><category term='dot'/><category term='graphviz'/><category term='RIA'/><category term='Computer'/><category term='C++'/><category term='编程技巧'/><category term='DIP'/><category term='Google Guice'/><category term='Endnote'/><category term='程序、计算机管理、脚本命令、Batch Command、Computer'/><category term='技巧'/><category term='tips'/><category term='grep'/><category term='Delphi'/><category term='resource'/><category term='vim'/><category term='code'/><category term='actionscript'/><category term='review'/><category term='程序员'/><category term='update'/><category term='astyle'/><category term='脚本命令'/><category term='程序'/><category term='xetex'/><category term='Script'/><category term='tool'/><category term='IoC'/><category term='highlight'/><category term='swfkit'/><category term='gnumake'/><category term='freeware'/><category term='book'/><category term='question'/><category term='操作技巧'/><category term='回顾'/><category term='GTD'/><category term='脚本'/><category term='editor'/><category term='lstlisting'/><category term='software'/><category term='批处理'/><category term='MonkeyGTD'/><category term='Python 3'/><category term='habits'/><category term='deve'/><category term='C++ primer'/><category term='新闻'/><category term='pdftk'/><title type='text'>今我来思</title><subtitle type='html'>#included "智慧";import 人生.经历;using 生命.爱心</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>69</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-7226711824852551712</id><published>2009-04-07T17:34:00.000-07:00</published><updated>2009-04-07T17:41:29.237-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='development'/><category scheme='http://www.blogger.com/atom/ns#' term='swfkit'/><category scheme='http://www.blogger.com/atom/ns#' term='actionscript'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><title type='text'>Swfkit Pro中设置默认Flash播放器</title><content type='html'>SwfKit Pro3.4 中安装的Flash播放器为9.0.124.0，其并不支持FlashCS4所输出的Flash10格式。要将其Standalone打包中的默认Flash播放器升级为10.0，应采取如下操作：&lt;br /&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;下载最新版的Flash ActiveX安装软件（install_flash_player_10_active_x.exe），&lt;/li&gt;&lt;li&gt;将安装软件复制到 Swfkit 的 Data 目录下&lt;/li&gt;&lt;li&gt;修改 Data目录下的flash_player.ini 文件，由原来的：&lt;div class="code"&gt;[Info]&lt;br /&gt;Version=9.0.124.0&lt;br /&gt;Name=install_flash_player_active_x.exe&lt;/div&gt;&lt;br /&gt;修改成：&lt;br /&gt;&lt;div class="code"&gt;[Info]&lt;br /&gt;Version=10.0.12.36&lt;br /&gt;Name=install_flash_player_10_active_x.exe&lt;/div&gt;&lt;div class="code"&gt;&lt;br /&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;重新编译Swfkit项目&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-7226711824852551712?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/7226711824852551712/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=7226711824852551712' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/7226711824852551712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/7226711824852551712'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2009/04/swfkit-proflash.html' title='Swfkit Pro中设置默认Flash播放器'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-2776267575367102563</id><published>2009-03-31T19:42:00.000-07:00</published><updated>2009-03-31T20:13:53.537-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RIA'/><category scheme='http://www.blogger.com/atom/ns#' term='MathML'/><category scheme='http://www.blogger.com/atom/ns#' term='flash'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>当MathML与Flash相遇</title><content type='html'>在理工科网络化教学中，最麻烦的就是如何在Web上正确有效地显示数学公式。在MathML之前，通常做法是利用专用工具将Word或LaTeX文档中的数学公式渲染成JPG或GIF格式，再嵌入到HTML文件中。这样的做法问题在于数学公式与HTML文本间无对应关系，排版困难，且不能随浏览字体大小的改变而自动缩放。随后出现了&lt;a href="http://www.blogger.com/www.openmath.org"&gt;OpenMath&lt;/a&gt;，其采用XML方式来对数学公式进行表达。由于Openmath提供了特定格式的XML语言定义了数学对象的语义字典，故其可将数学对象在不同的计算机环境间交换，从理论上解决了Web环境的兼容性问题。但Openmath的问题在于其只关心数学公式的语意，而不关心数学公式的视觉效果，故其主要面向数学系统专家而非Web出版者。基于上述原因，1999年W3C组织提出了基于XML语言标准的数学标记语言——MathML，其结合了HTML、XHTML与Openmath等语言的优点，具有良好的数据存储格式、可拓展性与高度结构化，从而成为Web上数学公式出版的工业标准。目前主流浏览器，如Firefox、Opera等都默认支持MathML，而IE6则可用通过插件（如IBM的&lt;a href="http://www.blogger.com/www.software.ibm.com/techexplorer"&gt;TechExplorer&lt;/a&gt;或 MathPlayer）来浏览MathML。&lt;br /&gt;&lt;br /&gt;MathML的缺点在于其繁缛的语法结构不利于人的输入与阅读，从而又出现了许多MathML辅助输入工具。比如利用MathType公式编辑器可将当前的公式用MathML形式输出，或者利用TeX4ht工具将TeX公式输出成MathML代码。这些都是非在线时的MathML辅助输入工具。&lt;br /&gt;&lt;br /&gt;目前，在线式的MathML编辑工具主要有两类：基于TeX或者LaTeX系统的写作工具，如 AsciiaMathML 与 LaTeXMathML。其采用Javascript将TeX或LaTeX数据控制字符串转换成MathML语义字符串。另一类是所见即所得的Web编辑器，如 Webeq 和 amaya 等，其利用Javascript或Java构建一个类Word的编辑环境来输入公式。&lt;br /&gt;&lt;br /&gt;上述的工具都是基于HTML或XHTML的，在以Flash为主流的RIA日益盛行的今天，如何在Flash中创建MathML呢？Ionel Alexandru给出了一个很好的解决方法。他开发了一个&lt;a href="http://mathmlflash.blogspot.com/"&gt;AS3的代码包&lt;/a&gt;，可以方便地渲染出基于MathML语义字符串的Flash MovieClip。虽然其尚未能完全覆盖所有MathML定义，但已经很不错了。加油 Ionel Alexandru！&lt;br /&gt;&lt;br /&gt;当MathML遇上Flash，必然带来基于Flash平台的理工类网络教学软件一次技术上的飞跃！而基于LaTeX的Flash交互平台也离我们不远了！&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-2776267575367102563?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/2776267575367102563/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=2776267575367102563' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2776267575367102563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2776267575367102563'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2009/03/mathmlflash.html' title='当MathML与Flash相遇'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-2637251255155062277</id><published>2009-03-30T05:13:00.000-07:00</published><updated>2009-03-30T05:15:00.111-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Endnote'/><category scheme='http://www.blogger.com/atom/ns#' term='技巧'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>用Endnote进行资源管理心得</title><content type='html'>&lt;div style='text-align:center;margin:0px auto 10px;'&gt;&lt;a href='http://2.bp.blogspot.com/_ufO6ICWIhsI/SdC3WEpTWeI/AAAAAAAAAnU/g-J2QCj0CVs/s1600-h/Endnote%E7%9A%84%E4%BD%BF%E7%94%A8.jpg'&gt;&lt;img src='http://2.bp.blogspot.com/_ufO6ICWIhsI/SdC3WEpTWeI/AAAAAAAAAnU/g-J2QCj0CVs/s320/Endnote%E7%9A%84%E4%BD%BF%E7%94%A8.jpg' border='0' alt='' /&gt;&lt;/a&gt;&amp;nbsp;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;Endnote&lt;/strong&gt;是一个优秀的文献管理软件。经过一段时间的试用，我逐步建立一个用Endnote的文献资源管理流程。本文主要介绍Endnote中的一些基本类型，与我使用Endnote的一些技巧。&lt;br/&gt;&lt;br /&gt;&lt;br /&gt;Endnote提供了许多的文献类型，从使用角度上，我觉得可分为如下几类：&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;学术&lt;/strong&gt;:这是Endnote最主要的功能，即管理科学文献。&lt;br/&gt;&lt;br /&gt;  &lt;ul&gt;&lt;li&gt;Journal Article:学术期刊论文&lt;/li&gt;&lt;li&gt;Conference Proceeding:学术会议论文集中的论文&lt;/li&gt;&lt;li&gt;Conference Paper:学术会议论文：其与Conference Processin的区别在于其主要指未发表或未收入论文集中的论文&lt;/li&gt;&lt;li&gt;Book:出版的书籍&lt;/li&gt;&lt;li&gt;Thesis:学位论文&lt;li&gt;&lt;li&gt;Report:学术报告&lt;li&gt;&lt;/ul&gt; &lt;br/&gt;学术文献主要可通过一些国内外的学术数据库进行查找，然后通过对应的Filter（过滤器）导入到Endnote中。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;书籍&lt;/strong&gt;:主要是建立自己的图书馆。&lt;br/&gt;&lt;br /&gt;  &lt;ul&gt;&lt;li&gt;Book:图书&lt;/li&gt;&lt;li&gt;Electronic Book:电子图书&lt;/li&gt;&lt;li&gt;Edited Book:其与Book的区别在于其是某个书系中的由多个编辑制作的书&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;对于外文图书信息的录入，可利用Endnote的Remote Library Search 方式在国外图书馆中进行搜索，我常用的是Yale与MIT的图书馆，其藏书量大且连接速度快。在搜索时尽量利用搜索式缩小范围，否则会下载许多图书条目而浪费流量。对于国内图书，则只能在国家的OPAC中进行检索，或是到本地图书馆OPAC中进行检索。一般这些系统都不提供Endnote远程接口，一些有MARC条目输入。可根据MARC条目自己编写Filter，但比较麻烦。还一种方法是利用Google Scholar Search进行搜索，然后用其BibTeX输出，再导入到Endnote中。&lt;br /&gt;  &lt;li&gt;&lt;br /&gt;  &lt;li&gt;&lt;strong&gt;工作&lt;/strong&gt;：建立面向工作的参考文献集。&lt;/li&gt;&lt;br /&gt;  &lt;ul&gt;&lt;li&gt;Govenment Document:政府文档，也可将单位的主要文档存放其中&lt;/li&gt;&lt;li&gt;Grant:授权书&lt;/li&gt;&lt;li&gt;Encyclopedia:百科全书&lt;/li&gt;&lt;li&gt;Directory:字典，一些工程手册也放在这个类别中&lt;/li&gt;&lt;li&gt;Legal Rule/Regulation:规则条例&lt;/li&gt;&lt;li&gt;Patent:专利，有时也将项目说明书等文档放入其中&lt;/li&gt;&lt;li&gt;Catalog:目录，主要是一些汇总文件集&lt;/li&gt;&lt;li&gt;Standard:标准，以及一些常用参考手册&lt;/li&gt;&lt;/ul&gt;&lt;br/&gt;这些文献应单独放在一个库中，这样利于快速浏览。&lt;br /&gt;  &lt;/li&gt;&lt;br /&gt;  &lt;li&gt;&lt;strong&gt;网络收藏&lt;/strong&gt;:用Endnote来管理自己浏览与下载的网络资源&lt;/li&gt;&lt;br /&gt;  &lt;ul&gt;&lt;li&gt;Blog:博客文章，用PDF打印&lt;/li&gt;&lt;li&gt;Web Page：网页，用抓屏软件存储为JPG格式。&lt;/li&gt;&lt;li&gt;Computer Program:优秀的软件与源代码等。&lt;/li&gt;&lt;li&gt;Electronic Article:下载的电子文档&lt;/li&gt;&lt;li&gt;Online Multimedia:下载一些小视频或动画等，并且将下载的图片等也放入其中&lt;/li&gt;&lt;br/&gt;定期清理迅雷/FlashGet等下载目录，将有用的信息放入Endnote库。&lt;/ul&gt;&lt;br /&gt;&lt;li&gt;&lt;strong&gt;个人&lt;/strong&gt;：建立自己个人文档的数据库&lt;/li&gt;&lt;br /&gt;  &lt;ul&gt;&lt;li&gt;Personal Communication：一些个人交流信息，如Email，MSN/QQ的聊天记录等&lt;/li&gt;&lt;li&gt;Film or Broadcast:看过的电影等信息，就是将豆瓣的本地化&lt;/li&gt;&lt;li&gt;Case:项目,主要用来管理一些个人项目&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/ul&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Endnote的使用技巧：&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;不要将所有的文献都放入一个Endnote库中，而要建立多个库，比如 BookLibrary,WebArticleLibrary等，这样可以设置每个库的默认文献类型，利于进行输入。而且由于库比较小，在打开时比较快。Endnote有导入Endnote库文件的功能，故可定期（如半年/一年）将文献库进行合并(&lt;strong&gt;注意Endnote在导入文献库时并不将文献条目上附加的文件一并导入&lt;/strong&gt;)。&lt;/li&gt;&lt;br /&gt;&lt;li&gt;应充分利用 Research Note 字段，而且利用（0-5）分来给每个文献进行打分，如"5.详细介绍了Omega函数的应用"这样的短小笔记，如果是比较长的笔记，则应存入Text文档中，然后将该文件Attach到该条目上&lt;/li&gt;&lt;br /&gt;&lt;li&gt;将Keyword作为Tag来进行管理，每个关键词用&lt;i&gt;分号&lt;/i&gt;来分隔&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div style='clear:both; text-align:CENTER'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-2637251255155062277?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/2637251255155062277/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=2637251255155062277' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2637251255155062277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2637251255155062277'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2009/03/endnote-endnoteendnoteendnote-endnote.html' title='用Endnote进行资源管理心得'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ufO6ICWIhsI/SdC3WEpTWeI/AAAAAAAAAnU/g-J2QCj0CVs/s72-c/Endnote%E7%9A%84%E4%BD%BF%E7%94%A8.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-6779205721962877968</id><published>2009-03-20T02:03:00.000-07:00</published><updated>2009-03-20T03:05:29.925-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lstlisting'/><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>listings宏包的设置</title><content type='html'>经过一个上午的尝试，我采用如下的方法来定义listings宏包，可得到一个格式优美的源程序PDF渲染效果。&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;在导言区的命令是&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;\usepackage{xcolor} % 颜色增强&lt;br /&gt;\definecolor{lightgrey}{HTML}{D0CFCF}% 亮灰色&lt;br /&gt;\definecolor{lightblue}{HTML}{D5EDF1}% 亮蓝色&lt;br /&gt;\definecolor{greyblue}{HTML}{0A499B}% 灰蓝色&lt;br /&gt;\definecolor{greygreen}{HTML}{19400B}% 灰绿色&lt;br /&gt;\usepackage{listings}&lt;br /&gt;\lstset{basewidth={0.5em,0.35em},basicstyle=\small,keywordstyle=\color{greyblue}, commentstyle=\color{greygreen}, frame=shadowbox, rulesepcolor=\color{lightgrey},numbers=left, numberstyle=\tiny,breaklines=true,framesep=5pt,rulesep=5pt,framexleftmargin=5mm}%&lt;br /&gt;\lstnewenvironment{tex}{\lstset{language={[LaTeX]TeX}}}{}%TeX 代码&lt;br /&gt;\lstnewenvironment{cpp}{\lstset{language={[ISO]C++},mathescape,escapechar='}}{}%C++ 代码&lt;br /&gt;\lstnewenvironment{matlab}{\lstset{language={MatLab},mathescape,escapechar='}}{}%MatLab 代码&lt;br /&gt;\lstnewenvironment{html}{\lstset{language={HTML},escapechar='}}{}%HTML&lt;br /&gt;\lstnewenvironment{makefile}{\lstset{language={[gnu]make},escapechar='}}{}%Gnu Make&lt;br /&gt;\lstnewenvironment{python}{\lstset{language={python},escapechar='}}{}%Python&lt;br /&gt;\lstnewenvironment{vbscript}{\lstset{language={VBScript},escapechar='}}{}% VBScript&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;在主体部分的样例为&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;\begin{cpp}&lt;br /&gt;#include&lt;iostream&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;int main(void)&lt;br /&gt;{&lt;br /&gt;// '\textit{创建一个简单的程序}'&lt;br /&gt; std::cout &lt;&lt; "hello" &lt;&lt; endl; // sample code $\alpha$&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;\end{cpp}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;如果需要文本环绕的话，则可采用 wrapfigure 宏包，代码如下：&lt;br /&gt;&lt;div class="code"&gt;&lt;br /&gt;\begin{wrapfigure}{L}{0.5\textwidth}&lt;br /&gt;\begin{cpp}&lt;br /&gt;#include&lt;iostream&gt;&lt;br /&gt;using namespace std;&lt;br /&gt;int main(void)&lt;br /&gt;{&lt;br /&gt;// '\textit{创建一个简单的程序}'&lt;br /&gt; std::cout &lt;&lt; "hello" &lt;&lt; endl; // sample code $\alpha$&lt;br /&gt; return 0;&lt;br /&gt;}&lt;br /&gt;\end{cpp}&lt;br /&gt;\end{wrapfigure}&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;令人遗憾的是，我尚不能写一个通用的环境，其能将 latex 代码的渲染效果与 latex 源代码 并行显示&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-6779205721962877968?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/6779205721962877968/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=6779205721962877968' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/6779205721962877968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/6779205721962877968'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2009/03/listings.html' title='listings宏包的设置'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-466665870891263979</id><published>2009-03-18T23:05:00.000-07:00</published><updated>2009-03-18T23:12:44.789-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='deve'/><category scheme='http://www.blogger.com/atom/ns#' term='update'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='Python 3'/><title type='text'>升级到 Python 3.1 的兼容问题</title><content type='html'>&lt;a href="www.python.org" target="blank"&gt;Python 3.1&lt;/a&gt; 已经发布了。兴冲冲地将陪伴了我多年的 2.X 版本卸载了，安装上 Python 3.1。结果一些旧 Py 脚本无法正常运行。其原因是 Python 3.1 并不与 2.X 相兼容。看来在日新月异的今天，保持“兼容性”与追求“创新性”间的矛盾越来越大了。理解理解，不妨&lt;strong&gt;将旧程序的移植作为学习的动力&lt;/strong&gt;。&lt;br/&gt; IBM DevelopWorks 中国网站上有一组介绍 Python 3 的入门文章，&lt;a href="http://www.ibm.com/developerworks/cn/linux/l-python3-1/index.html" target="blank"&gt;由此进入&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-466665870891263979?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/466665870891263979/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=466665870891263979' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/466665870891263979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/466665870891263979'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2009/03/python-31.html' title='升级到 Python 3.1 的兼容问题'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-5818547148200872449</id><published>2009-01-30T06:04:00.001-08:00</published><updated>2009-01-30T06:04:49.597-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GTD'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='update'/><category scheme='http://www.blogger.com/atom/ns#' term='MonkeyGTD'/><title type='text'>MonkeyGTD 3 的网络升级方法</title><content type='html'>MonkeyGTD 3 支持网络升级。其方法是：&lt;br /&gt;1.先备份现有的MonkeyGTD3&lt;br /&gt;2.点击页眉右上角的"backstage"，打开页眉主菜单&lt;br /&gt;3.点击"import"&lt;br /&gt;4.将"http://monkygtd.tiddlyspot.com/upgrade.html"填入"URL or Pathname"文本框中&lt;br /&gt;5.点击"open"按钮，开始网络升级&lt;br /&gt;6.在下载的tiddlers列表首部，选中表格首行的选中框，这样可以选中所有的tiddlers&lt;br /&gt;7.在该列表下面有两个选择框，都不要选中（很重要！）&lt;br /&gt;8.点击"Ok"按钮，重新修改所有的tiddlers，这样就完成了升级&lt;br /&gt;9.升级后realms会默认不选中，所以要选取realms，这样方能显示以往的GTD信息&lt;br /&gt;10.保存当前的MonkeyGTD 3&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-5818547148200872449?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/5818547148200872449/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=5818547148200872449' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/5818547148200872449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/5818547148200872449'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2009/01/monkeygtd-3.html' title='MonkeyGTD 3 的网络升级方法'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-3795934155794229117</id><published>2008-08-24T20:39:00.000-07:00</published><updated>2008-08-24T20:40:30.150-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='MonkeyGTD'/><title type='text'>给MonkeyGTD初学者的信</title><content type='html'>你好：&lt;br /&gt; 首先，你要知道GTD的基本知识。&lt;div dir="ltr"&gt;&lt;wbr&gt;GTD是用来管理日常事务的一种工作方法。&lt;wbr&gt;而MonkeyGTD则是一种帮助你实现GTD的软件。&lt;wbr&gt;其实存在许多的GTD软件，而且许多人也采用Gmail、&lt;wbr&gt;Outlook等常用工具来实现GTD。&lt;wbr&gt;而我则是将MonkeyGTD与纸笔结合来使用的。&lt;wbr&gt;GTD的宗旨在于提高工作效率，&lt;wbr&gt;对于究竟采用某种工具并不是很重要的。最重要的是工具要能&lt;span style="color: rgb(255, 0, 0);"&gt;符合你&lt;wbr&gt;目前的工作需要&lt;/span&gt;，&lt;wbr&gt;脱离目前的工作需求而单纯的学习GTD软件是不会成功的。&lt;wbr&gt;毕竟它不是Word、也不是Java。&lt;br /&gt;   如何确定自己的工作需求呢？先准备一张大白纸和几种颜色的笔，&lt;wbr&gt;然后将你所能想到的要做的工作写下来（&lt;wbr&gt;用色笔标注其不同的优先等级），&lt;wbr&gt;然后用线段将其中有关联的工作联起来。比如："整理办公桌""&lt;wbr&gt;将文件夹中的下载歌曲整理""刻录工作日常文件"等。&lt;wbr&gt;当你完成这步后，你就可以开始使用MonkeyGTD了。&lt;br /&gt;   打开MonkeyGTD，先创建一个Project（项目），&lt;wbr&gt;然后在项目中建立一些Action（行动）。比如"&lt;wbr&gt;工作文档的整理"项目中就可以将上面的"刻录工作日常文件"&lt;wbr&gt;作为一个Action。在GTD中Action是有优先次序的，&lt;wbr&gt;如"Next（立即要做）""WaitFor（&lt;wbr&gt;等待某人或某事发生时做""Future（暂时不急日后再做）"&lt;wbr&gt;，将不同的Action标识上不同的优先级。&lt;wbr&gt;MonkeyGTD会自动将不同的Project中的"&lt;wbr&gt;Next"工作组合给你看。这样你要做的事情就清晰了。&lt;br /&gt;   注意GTD是手段，一定要循序渐进，创建适合自己的GTD，&lt;wbr&gt;提高生活质量是最重要的。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-3795934155794229117?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/3795934155794229117/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=3795934155794229117' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/3795934155794229117'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/3795934155794229117'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2008/08/monkeygtd.html' title='给MonkeyGTD初学者的信'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-8364359584585472577</id><published>2008-08-03T03:16:00.000-07:00</published><updated>2008-08-03T03:19:14.366-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tool'/><category scheme='http://www.blogger.com/atom/ns#' term='graphviz'/><category scheme='http://www.blogger.com/atom/ns#' term='dot'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>用dot绘制有向图</title><content type='html'>Dot 是 Graphviz 套件中的一个重要工具，其可以方便地绘制有向图。&lt;br /&gt;有向图是计算机科学中重要的表述手段，常见的 流程图 就是一种有向图。&lt;br /&gt;&lt;br /&gt;Dot采用一种很简单的语言来描述有向图中的Node（节点）和Edge（边）。&lt;br /&gt;&lt;br /&gt;在使用Dot前，应先浏览 Graphviz 安装目录下的 share/graphviz/doc/pdf/&lt;br /&gt;下的 dotguide.pdf 文件，其中&lt;br /&gt;P5 一个很好的样例，描述了Dot的基本使用方法，涵盖大多数 有向图 绘制&lt;br /&gt;P10 Node（节点）的属性设置表&lt;br /&gt;P11 Edge（边）的属性设置表&lt;br /&gt;P12 Graph（图）的属性设置表，上述三张表可以打印出来作为常用参考&lt;br /&gt;P26 介绍 subgraph 的使用样例，其可以更好地简化和复用&lt;br /&gt;P38 Node（节点）的样式&lt;br /&gt;P39 Arrow Head （边箭头）的样式&lt;br /&gt;P40 Color（颜色）名称目录&lt;br /&gt;&lt;br /&gt;在看完上述使用手册后，可以编写一个简单的样例代码试用一下 dot 命令。&lt;br /&gt;&lt;br /&gt;dot 命令的详细手册在 dot.pdf 中&lt;br /&gt;&lt;br /&gt;建议：&lt;br /&gt;(1)在Windows平台下不要采用dot后缀，其和Word的DocumentTemplate相冲突，会自动打开Word而不是Dot命令，所以采用 dotg 后缀。&lt;br /&gt;(2)如果要在图中采用中文，则要将文本存储为UTF-8格式，并且按照下面的方式来定义节点或者边中的文本字体&lt;br /&gt;&lt;code&gt;&lt;br /&gt;node[shape="box",fontname="simyou.ttf",fontsize="10"];&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;br /&gt;对于有向图，Graphviz套件中还有其它几个工具，都可以使用相同的Dot语言来描述，其生成的图按照不同的算法，呈现的形式有所不同，以适用不同的表述需求。&lt;br /&gt;&lt;br /&gt;比如建立一个sample.dotg源代码文件后，可通过下面的批处理来生成多个有向图进行比较&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;dot -Tpng sample.dotg -o sample.dot.png&lt;br /&gt;neato -Tpng sample.dotg -o sample.neato.png&lt;br /&gt;twopi -Tpng sample.dotg -o sample.twopi.png&lt;br /&gt;circo -Tpng sample.dotg -o sample.circo.png&lt;br /&gt;fdp -Tpng sample.dotg -o sample.fdp.png&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-8364359584585472577?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/8364359584585472577/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=8364359584585472577' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/8364359584585472577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/8364359584585472577'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2008/08/dot.html' title='用dot绘制有向图'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-2727492570262082230</id><published>2008-07-29T18:51:00.000-07:00</published><updated>2008-07-29T18:57:43.846-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='grep'/><title type='text'>Windows平台下gVim中的Grep工具的使用</title><content type='html'>Grep是Unix/Linux平台下重要的搜索工具，如何在Windows平台下gVim中也能使用Grep工具呢？&lt;br /&gt;&lt;ul&gt;&lt;li&gt;下载Grep For Win：这是一个开源软件，可以很好的在Windows平台下实现Grep功能&lt;/li&gt;&lt;li&gt;下载Grep.vim：这是gVim的一个插件，用来集成外部Grep工具&lt;/li&gt;&lt;li&gt;配置Grep.vim：在vimrc文件中用命令来配置Grep For Win工具&lt;br /&gt;&lt;br /&gt;&lt;code&gt;&lt;br /&gt;" 配置Grep插件&lt;br /&gt;let Grep_Path = 'D:\InstallSoft\GrepForWin\grep.exe -S'&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;这样在Vim中采用命令 ":Grep sample E:\CppSource\*.cpp" 就可以在Vim中直接进行Grep了&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-2727492570262082230?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/2727492570262082230/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=2727492570262082230' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2727492570262082230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2727492570262082230'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2008/07/windowsgvimgrep.html' title='Windows平台下gVim中的Grep工具的使用'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-2286164632526863882</id><published>2008-07-27T20:18:00.000-07:00</published><updated>2008-07-27T22:04:49.476-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='GTD'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='MonkeyGTD'/><title type='text'>欢迎来到MonkeyGTD 3.0</title><content type='html'>&lt;span style="font-weight: bold;"&gt;"GTD"是一门高效实用的工作信念，而"MonkeyGTD3"则是实现GTD的工具。&lt;br /&gt;&lt;/span&gt;本文将基于GTD学习与实现的一些经验基础上，介绍MonkeyGTD3的基本概念与新增功能。适用对象:了解GTD,具有强烈工作优化欲望,使用Firefox作为主浏览器。&lt;br /&gt;&lt;br /&gt;1.GTD使用经验&lt;br /&gt;在讨论MonkeyGTD3之前，先对于GTD谈一些我的学习与使用经验，因为掌握正确的GTD精神，方能发挥MonkeyGTD3的真正效能。&lt;br /&gt;&lt;br /&gt;首先，&lt;span style="font-weight: bold;"&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;GTD不是目标、不是道路，而是信念&lt;/span&gt;。&lt;/span&gt;作为GTD的学习新手，常会将GTD作为一种类似与ISO9001的工作流程规范或是CMM5的软件开发规范来看待。在学习的初期就希望能实现如《GTD》作者David Allen所述的工作方案，这是不好甚至有害于GTD学习的。绝大多数人都不可能面对David Allen所面对的工作强度，所以也没有必要照着他的方案来工作。否则就是"教条"，会陷入繁文缛节中，最终损失的是时间、精力与对GTD的信心。我曾向一些朋友推荐"GTD"工作法，但他们在学习尝试一段时间后都放弃了，其中最主要的原因即在于此。要明确，GTD的精髓是：&lt;span style="color: rgb(255, 0, 0);"&gt;用自己的脑和手来解决问题，而不是搁置问题。&lt;/span&gt;所以要针对自己的特殊情况来设计工作方法，用Gmail、Palm或者纸笔，每天、每周或者不定期的进行检查，只要是有利于提高工作效率、解放大脑的都是GTD方法。没有什么"GTD规范操作手册"，也没有什么"GTD标准进阶路线"。从自我做起，从小处提高，用自我的力量来解放自己，这方能从GTD中体味GTD的快乐。所以GTD是一种信念，类似于宗教中的"自我心理启示"。&lt;br /&gt;&lt;br /&gt;其次，&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;GTD要需求驱动，与时俱进&lt;/span&gt;。起先应以当前需求为主，从最小处做起，在不断修改增进自我工作方案的基础上，将GTD逐步推广到其它领域。比如我最先只是为了学习GTD，并且找寻对自己目前工作最适宜的GTD工具，所以我只限制用GTD来管理自己的计算机编程语言方面的学习事务，其它的工作仍按照既往习惯来进行。然后随着对GTD的认识深入与对于GTD软件（如MonkeyGTD）的操作熟练后，将其它的工作甚至部分生活琐事都用GTD来完成。虽然《GTD》作者本人可以用GTD来管理极其繁杂的商业事务，而且网上达人能用Gmail、BlackBerry等能实现国际化全天候的GTD，但我尚没有达到这样的境界。目前我只能在PC机前进行GTD，但这已经很不错了，而且也满足了我的需求。随着以后工作生活需求的驱动，我可能会添置一些设备（Blackberry甚至Iphone），并学习如何使用它们来构建更大的GTD系统。但目前不需要，我只要不断地完善目前的GTD系统就可以了。&lt;br /&gt;&lt;br /&gt;最后，&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;GTD是一种习惯&lt;/span&gt;。要以养成GTD习惯为目标。GTD的道路是很不容易的，其最重要的是要和既有的习惯做抗争。以往当一件事情做完时，我总想去吃点东东放松放松（这也是我肥胖的原因所在），而GTD则要求在事情完成后回顾(Review)一下工作列表，将完成事务设置为完成，并着手准备下一事务。类似这样的对个人自身习性的变更是很难的，由性急到沉稳，由拖沓到守时，都是利用GTD来进行&lt;span style="color: rgb(255, 0, 0);"&gt;自我修炼&lt;/span&gt;的过程。虽然GTD的规模不同，方法各异，但"Get Things Done"的实用目标是一致的。GTD不是用空想或文本设计的完美来衡量其实施价值，而是以所完成的事务的质量和数量为依据来衡量的。而要能坚持GTD的唯一方法，就是将GTD化作自己的习惯，用"GTD的惯性"来改造自己，提升自己的效能。&lt;br /&gt;&lt;br /&gt;以GTD为信念，从小做起，以需求为驱动，不断将新的GTD手段内化为自己的日常习惯，是我这几年学习与实践GTD的一些心得。放在本文之前，希望在使用MonkeyGTD之前能先确立对GTD的信心，做好GTD的准备，使MonkeyGTD真正成为有效的GTD工具。&lt;br /&gt;&lt;br /&gt;2.MonkeyGTD3简介&lt;br /&gt;&lt;br /&gt;MonkeyGTD是一款基于单个网页文件的GTD系统。我从MonkeyGTD1.0就开始使用这个工具&lt;a href="http://yankchina-gbk.blogspot.com/2007/01/monkeygtd.html"&gt;（当年的博文）&lt;/a&gt;。其小巧精致的结构，单个文件的便捷，与Firefox的完美搭配和GTD理念的精彩诠释是我当年选中这款软件的最重要的原因。自1.0，2.0到今天的3.0，MonkeyGTD正逐渐成为TiddlyWiki平台下最流行的GTD工具。而每次升级，MonkeyGTD都给人以更新的概念，更方便的操控与更美观实用的界面。&lt;br /&gt;&lt;br /&gt;虽然MonkeyGTD使用容易，但其最重要的缺点在于文档的缺少和与《GTD》的概念不一致，对于初学者造成许多困扰。所以在本文中，我着重介绍MonkeyGTD的概念，希望能对初学者有所帮助。&lt;br /&gt;&lt;br /&gt;3.MonkeyGTD3的组织架构&lt;br /&gt;&lt;br /&gt;MonkeyGTD3中的组织结构与《GTD》所述有所不同，其更契合基于Web的组织与管理。就想操作系统用(硬盘、文件夹、子文件夹、文件）这样的多层次系统来组织管理文档一样，MonkeyGTD中采用多层形式来管理事务（在《GTD》中称为"行为(Action)"）。&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Realm：最高级别的组织单元，其从整体上将所属事务进行划分，如在两万高空俯瞰地球。其以标签页的形式在MonkeyGTD3的左上角显示。默认分类是"Personal(私事)"与"Work(公事)"。这个概念是从MonkeyGTD2新增的。&lt;br /&gt;请注意，虽然MonkeyGTD3提供了新增/修改/删除Realm的菜单，但本人强烈建议新手不要进行修改。MonkeyGTD3提供了足够多的低级别组织单元来进行管理。&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Areas与Context：第二级别的组织单元。其将所属事务进行大体划分。Areas，即"工作区域"，偏重于行为;而Context，即"场景",偏重于空间。Context是《GTD》的概念，而Areas是MonkeyGTD2中新增加的概念。&lt;br /&gt;举例而言，你可以新增一个 Web Publish 的Areas作为管理 博客发表、论坛发布或者个人网页修改等相关事务(Action)或项目(Project)，而增加一个 OnBed 的Context作为在床上时要做的事务的管理单元。建议默认的Areas与Context不要做删除。&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Project与Subproject：第三级别的组织单元。其是一组具有明确目标与严格时间顺序的操作事务(Action)的集合。注意Project与Subproject是有明确时间限制的，而Areas与Context则没有。Project是《GTD》的概念，而Subproject是MonkeyGTD3新增的概念。由于MonkeyGTD3是基于Javascript的系统，所以建议少用Subjective，最好不要将甘特图的多层Project方式移植到MonkeyGTD中，这样会极大地减慢系统运行速度。&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Action与Tickler：MonkeyGTD中的最小组织单元。Action是一个具有明确目标的操作事务，而Tickler是具有时间提醒功能的Action。Action是《GTD》概念，而Tickler是MonkeyGTD3新增的概念（会在本文后面介绍）&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;4.MonkeyGTD3的Action多维空间&lt;br /&gt;在GTD系统中，Action是最核心的基本单元，所有的管理都围绕Action而展开，从此角度来看，MonkeyGTD就是Action的管理系统。在MonkeyGTD中，Action的属性是由多个角度的不同属性来进行描述的，就像Action是一个多维度空间中的一个点一样。&lt;br /&gt;&lt;ul&gt;&lt;li&gt;组织维度：Action隶属于某个Realm中的某个Project或Subproject&lt;/li&gt;&lt;li&gt;进度维度：Action是Next、WaitFor或是Future&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Next：马上要做的事&lt;br /&gt;&lt;/li&gt;&lt;li&gt;WaitFor：等待某个事件触发而要做的事。这个触发时间可能是别人，或者是某个时间，或者是其它的某个动作。其中某个时间触发是最常见的形式，如开会等。在MonkeyGTD3中，其单独成Tickler对象。&lt;/li&gt;&lt;li&gt;Future：未来不确定某个时间而要做的事。比如要看一本不是很急但很想看的书、或者学习打太极拳等。&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;空间维度：Action是操作者在某个Context（场景）下完成的，比如Call场景就说明其是在电话机旁操作的，而Office场景说明其在办公室完成，而Errand则是在出差路上完成的&lt;/li&gt;&lt;li&gt;区域维度：Action是在某个Areas下完成的，比如其是一个Research（科研）工作，或者是个Training（教育培训）工作&lt;/li&gt;&lt;li&gt;关联维度：在MonkeyGTD3中新增了Contact，其可以将Action与其它的Project或者Action等相互关联起来，在同一个视图中呈现出来。&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;5.MonkeyGTD3新增的对象&lt;br /&gt;&lt;br /&gt;基于前两个版本，MonkeyGTD3对程序在功能与界面上做了许多改动，其中新增了两个重要对象，即Tickler与Contact&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tickler应该是MonkeyGTD1.0中的Reminder的增强版。其是具有时间提醒性质的Action。其进度维度指标是"WaitingFor"。其可以很方便地解决如开会、约会等具有确切时间的操作事务，而且其具有Repeat功能，可以方便地进行周期设置。不仅如此，其还可以用来设置一些"Deadline"，从而有效提高工作效率，防止过多的过时Action还放在MonkeyGTD中。&lt;br /&gt;在MonkeyGTD2中将Reminder去掉了，这给我原有的GTD操作带来不少的麻烦。在MonkeyGTD3中Tickler的出现解决了许多困扰。&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Contact是MonkeyGTD3中新增加的功能，也是我期盼很久的好东东。随着GTD规模的增大，需要将一些在不同Project中的Action放在同一个视图中显示。原来的方式是采用TiddleWiki的Tag，但这样的显示不是GTD化的，其不能够显示Action的其它属性（如进度属性等）。而Contact的出现则（部分地）解决了这个问题。其就像一个张贴便签条的BBS面板，可以将不同的Action放在一起显示，从而提供了从自定义角度来查看整个事务多维空间的能力。由于每个Action只能关联一个Contact，所以这样的功能还是有些弱，但不好总比没有强呀。&lt;/li&gt;&lt;/ul&gt;虽然MonkeyGTD3提供了不少新特性，但其本质框架变化不大，对于学习GTD和采用MonkeyGTD的新手，我的建议是：&lt;br /&gt;&lt;ul&gt;&lt;li&gt;如果每日事务&lt;10件，或者管理action项目&lt;100件(累积)，则用monkeygtd1.0。其界面简单，速度快，概念清晰&lt;/li&gt;&lt;li&gt;如果每日事务&gt;20件，或者管理Action项目&gt;300件(累积)，则一定要用MonkeyGTD3.0。其优化的面板和新功能会极大提升你的GTD效率。&lt;/li&gt;&lt;/ul&gt;关于MonkeyGTD3的具体使用，可以通过Email:yankchina@gmail.com与我联系。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-2286164632526863882?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/2286164632526863882/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=2286164632526863882' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2286164632526863882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2286164632526863882'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2008/07/monkeygtd-30.html' title='欢迎来到MonkeyGTD 3.0'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-9040473825467493</id><published>2008-07-24T01:22:00.000-07:00</published><updated>2008-07-24T01:24:25.228-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='resource'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><title type='text'>网络化的工作图</title><content type='html'>&lt;a href="http://websequencediagrams.com/"&gt;http://websequencediagrams.com/&lt;/a&gt;是一个基于网页的工作流图生成软件，其通过简单的脚本语言生成美观的工作流图，有趣且有用。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-9040473825467493?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/9040473825467493/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=9040473825467493' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/9040473825467493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/9040473825467493'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2008/07/blog-post.html' title='网络化的工作图'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-4078148786835604326</id><published>2008-07-23T20:38:00.000-07:00</published><updated>2008-07-23T20:42:18.598-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><category scheme='http://www.blogger.com/atom/ns#' term='latex-suite'/><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>将Txt文档也绑定到Latex-Suite上</title><content type='html'>用Latex-Suite习惯后，连Txt文档也要绑定上去，同时解决一个问题，即Vim需要检查Tex的格式来决定是否启动Latex-Suite。而我并不用ConTex和PaintTex，故将之屏蔽。修改后的$VIM/vim71/filetype.vim相关代码如下&lt;br /&gt;&lt;code&gt;&lt;br /&gt;" TeX&lt;br /&gt;au BufNewFile,BufRead *.latex,*.sty,*.dtx,*.ltx,*.bbl    setf tex&lt;br /&gt;"au BufNewFile,BufRead *.tex            call s:FTtex()&lt;br /&gt;"yankchina@gmail.com 2008-07-24&lt;br /&gt;au BufNewFile,BufRead *.tex            setf tex&lt;br /&gt;au BufNewFile,BufRead *.txt         setf tex&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;这样在编写Txt文件时也能用Latex-Suite快速插入Latex标签了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-4078148786835604326?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/4078148786835604326/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=4078148786835604326' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/4078148786835604326'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/4078148786835604326'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2008/07/txtlatex-suite.html' title='将Txt文档也绑定到Latex-Suite上'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-4250999793557611500</id><published>2008-06-18T18:28:00.000-07:00</published><updated>2008-06-18T18:29:22.227-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Script'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='astyle'/><category scheme='http://www.blogger.com/atom/ns#' term='Batch Command'/><title type='text'>用Astyle批量美化C++程序代码</title><content type='html'>&lt;div class="entry"&gt;    &lt;p&gt;astyle是一款很好的C++/Java/C#代码美化工具。可采用下列代码来进行批量美化&lt;/p&gt; &lt;pre class="prettyprint"&gt;&lt;span class="pln"&gt;REM yankchina@gmail&lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt;com&lt;br /&gt;REM &lt;/span&gt;&lt;span class="pun"&gt;批量将本目录中的所有&lt;/span&gt;&lt;span class="pln"&gt;C&lt;/span&gt;&lt;span class="pun"&gt;++文件用&lt;/span&gt;&lt;span class="typ"&gt;Astyle&lt;/span&gt;&lt;span class="pun"&gt;进行代码美化操作&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;REM &lt;/span&gt;&lt;span class="lit"&gt;2008&lt;/span&gt;&lt;span class="pun"&gt;-&lt;/span&gt;&lt;span class="lit"&gt;06&lt;/span&gt;&lt;span class="pun"&gt;-&lt;/span&gt;&lt;span class="lit"&gt;16&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;REM &lt;/span&gt;&lt;span class="pun"&gt;设置&lt;/span&gt;&lt;span class="typ"&gt;Astyle&lt;/span&gt;&lt;span class="pun"&gt;命令位置和参数&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;set astyle&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="str"&gt;"D://InstallSoft//astyle//astyle.exe"&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;set mode&lt;/span&gt;&lt;span class="pun"&gt;=&lt;/span&gt;&lt;span class="pln"&gt;ansi&lt;br /&gt;REM &lt;/span&gt;&lt;span class="pun"&gt;循环遍历目录&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="kwd"&gt;for&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;r &lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;%%&lt;/span&gt;&lt;span class="pln"&gt;a &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;(*.&lt;/span&gt;&lt;span class="pln"&gt;hpp&lt;/span&gt;&lt;span class="pun"&gt;)&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;do&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;%&lt;/span&gt;&lt;span class="pln"&gt;astyle&lt;/span&gt;&lt;span class="pun"&gt;%&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;--&lt;/span&gt;&lt;span class="pln"&gt;style&lt;/span&gt;&lt;span class="pun"&gt;=%&lt;/span&gt;&lt;span class="pln"&gt;mode&lt;/span&gt;&lt;span class="pun"&gt;%&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="str"&gt;"%%a"&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="kwd"&gt;for&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;r &lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;%%&lt;/span&gt;&lt;span class="pln"&gt;a &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;(*.&lt;/span&gt;&lt;span class="pln"&gt;cpp&lt;/span&gt;&lt;span class="pun"&gt;)&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;do&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;%&lt;/span&gt;&lt;span class="pln"&gt;astyle&lt;/span&gt;&lt;span class="pun"&gt;%&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;--&lt;/span&gt;&lt;span class="pln"&gt;style&lt;/span&gt;&lt;span class="pun"&gt;=%&lt;/span&gt;&lt;span class="pln"&gt;mode&lt;/span&gt;&lt;span class="pun"&gt;%&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="str"&gt;"%%a"&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="kwd"&gt;for&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;r &lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;%%&lt;/span&gt;&lt;span class="pln"&gt;a &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;(*.&lt;/span&gt;&lt;span class="pln"&gt;h&lt;/span&gt;&lt;span class="pun"&gt;)&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;do&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;%&lt;/span&gt;&lt;span class="pln"&gt;astyle&lt;/span&gt;&lt;span class="pun"&gt;%&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;--&lt;/span&gt;&lt;span class="pln"&gt;style&lt;/span&gt;&lt;span class="pun"&gt;=%&lt;/span&gt;&lt;span class="pln"&gt;mode&lt;/span&gt;&lt;span class="pun"&gt;%&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="str"&gt;"%%a"&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;REM &lt;/span&gt;&lt;span class="pun"&gt;删除所有的&lt;/span&gt;&lt;span class="pln"&gt;astyle&lt;/span&gt;&lt;span class="pun"&gt;生成文件&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="kwd"&gt;for&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;/&lt;/span&gt;&lt;span class="pln"&gt;r &lt;/span&gt;&lt;span class="pun"&gt;.&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;%%&lt;/span&gt;&lt;span class="pln"&gt;a &lt;/span&gt;&lt;span class="kwd"&gt;in&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="pun"&gt;(*.&lt;/span&gt;&lt;span class="pln"&gt;orig&lt;/span&gt;&lt;span class="pun"&gt;)&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;do&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="kwd"&gt;del&lt;/span&gt;&lt;span class="pln"&gt; &lt;/span&gt;&lt;span class="str"&gt;"%%a"&lt;/span&gt;&lt;span class="pln"&gt;&lt;br /&gt;pause&lt;/span&gt;&lt;/pre&gt;   &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-4250999793557611500?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/4250999793557611500/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=4250999793557611500' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/4250999793557611500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/4250999793557611500'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2008/06/astylec.html' title='用Astyle批量美化C++程序代码'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-1693861294930839693</id><published>2008-05-06T20:28:00.000-07:00</published><updated>2008-05-06T20:29:27.169-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='DIP'/><category scheme='http://www.blogger.com/atom/ns#' term='Reading'/><category scheme='http://www.blogger.com/atom/ns#' term='IoC'/><category scheme='http://www.blogger.com/atom/ns#' term='Google Guice'/><category scheme='http://www.blogger.com/atom/ns#' term='程序员'/><title type='text'>Goolge Guice是什么？</title><content type='html'>阅读《程序员》2008.05期P96的《设计决定、反悔、散弹式修改和架构污染》一文，对于其中的Google Guice不明白，于是上Google搜索一下，直到这是一个Java的IoC容器实现，有利于写成满足DIP（Dependence Inversion Principle）的程序代码。要学习这样的架构，需要很多的编程实践方可以。&lt;br /&gt;参考文献：&lt;br /&gt;&lt;ul&gt;&lt;br /&gt; &lt;li&gt;&lt;a href="http://http//docs.google.com/View?docid=dqp53rg_3hjf3ch" title="Google Guice 用户指南"&gt;Google Guice 用户指南&lt;/a&gt;&lt;/li&gt;&lt;br /&gt; &lt;li&gt;&lt;a href="http://http//dev.csdn.net/develop/article/24/24397.shtm" title="CSDN 介绍IoC"&gt;CSDN 介绍IoC&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-1693861294930839693?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/1693861294930839693/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=1693861294930839693' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/1693861294930839693'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/1693861294930839693'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2008/05/goolge-guice.html' title='Goolge Guice是什么？'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-665710105521342078</id><published>2008-04-27T20:33:00.000-07:00</published><updated>2008-04-27T20:39:18.492-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>VIM与Latex-Suite中的问题解决</title><content type='html'>1.在装载Template时会有自动进行缩进，从而影响了原来的格式。我给Latex-Suite的作者Email后，想到可以在template.vim中的ReadTemplate函数中在exec IMAP_PutTextWithMovement前后进行filetype indent on/off 开关Vim的indent功能；&lt;br /&gt;2.在main.vim文件中修改了$$映射修改成~$&lt;++&gt;$~&lt;++&gt;，从而可以解决在CJK文件中将英文与中文隔离开。&lt;br /&gt;3.增加了一个F3的映射到noh命令，清除匹配搜索结果高亮。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-665710105521342078?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/665710105521342078/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=665710105521342078' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/665710105521342078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/665710105521342078'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2008/04/vimlatex-suite.html' title='VIM与Latex-Suite中的问题解决'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-3441752444201427399</id><published>2008-03-20T00:08:00.001-07:00</published><updated>2008-03-20T00:19:58.132-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>bras的自动拨号</title><content type='html'>我原以为要像Linux系统一样建立一个l2tp的协议，所以从l2tp上下手来查找bras系统的自动拨号程序。今天突然想到bras拨号也是放在“拨号链接”中，是否可以用adsl的自动拨号脚本呢？于是Google一下，果然找到了Windows的命令，是 rasdial linkname username password。再用命令 hh netcfg.chm 可以查到 rasdial 的详细手册。于是做了一个bat脚本。格式如下：&lt;br /&gt;&lt;br /&gt;rasdial bras /disconnect&lt;br /&gt;&lt;br /&gt;if %1 == a goto opena&lt;br /&gt;if %1 == b goto openb&lt;br /&gt;goto :EOF&lt;br /&gt;&lt;br /&gt;:opena&lt;br /&gt;rasdial bras username@a pwd&lt;br /&gt;goto :EOF&lt;br /&gt;&lt;br /&gt;:openb&lt;br /&gt;rasdial bras username@b pwd&lt;br /&gt;goto :EOF&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;如果要想类似服务一样自动启动的话，可以采用VBS脚本，如：&lt;br /&gt;Dim Wsh&lt;br /&gt;set Wsh=wscript.createobject("wscript.shell")&lt;br /&gt;Wsh.Run "RASDIAL cqcnc username password",1,flase&lt;br /&gt;WScript.quit&lt;br /&gt;注意在WindowsXP或Windows2003下面要对目录安全性进行设置，这样在“计划任务”中添加该脚本，就能自动拨号和断开链接了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-3441752444201427399?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/3441752444201427399/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=3441752444201427399' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/3441752444201427399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/3441752444201427399'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2008/03/bras.html' title='bras的自动拨号'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-2213873249335016385</id><published>2008-02-21T23:26:00.000-08:00</published><updated>2008-02-21T23:31:41.945-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='技巧'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Windows下的文本查找</title><content type='html'>原来我一直使用Editplus的“多文件搜索”功能作为Windows下文本查找工具。但现在我离开Editplus转向Vim后，就没有如此“利器”了。想在Linux下的Grep是专门用于文本搜索的工具，所以Google“Windows grep”，找到一个“Grep for Windows”的压缩包，解压并将目录填入系统“环境变量”的PATH中，就可以在Vim中调用如下命令来进行多文件查找了&lt;br /&gt;:! grep -S "sampletext" C:\\samplesrc\*.cpp&lt;br /&gt;&lt;br /&gt;另：在TotalCmd中可利用其Alt+7开启搜索框，选中查找文本即可。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-2213873249335016385?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/2213873249335016385/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=2213873249335016385' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2213873249335016385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2213873249335016385'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2008/02/windows.html' title='Windows下的文本查找'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-2963049344923625934</id><published>2008-01-20T22:51:00.000-08:00</published><updated>2008-01-20T22:55:20.234-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xetex'/><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><title type='text'>GVim中更改编码方式</title><content type='html'>最近在学XeTeX+Zhspacing，GVim中需将文件编码在UTF-8与GB2313之间频繁切换，如果单纯变换文本编码则GVim界面中的提示符都成了乱码，故编写一个键盘宏如下：&lt;br /&gt;&lt;br /&gt;"" 更换显示编码&lt;br /&gt;"" 2008-01-21&lt;br /&gt;map &lt;c-e&gt;&lt;c-u&gt; :set encoding=utf-8&lt;cr&gt;:let $Lang="zh_CN.UTF-8"&lt;cr&gt;&lt;br /&gt;map &lt;c-e&gt;&lt;c-g&gt; :set encoding=cp936&lt;cr&gt;:let $Lang="zh_CN"&lt;cr&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-2963049344923625934?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/2963049344923625934/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=2963049344923625934' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2963049344923625934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2963049344923625934'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2008/01/gvim.html' title='GVim中更改编码方式'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-3746683612592381257</id><published>2008-01-20T18:57:00.000-08:00</published><updated>2008-01-20T18:58:14.347-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reading'/><category scheme='http://www.blogger.com/atom/ns#' term='review'/><title type='text'>与物理学同行——读《几何学的故事》</title><content type='html'>这部数学史写得比较浅显，但前后有些割断，前面主要叙述了几何的一个重要分支——欧几里德几何的发展与非欧几何的诞生，而后面则介绍了近现代物理学与几何 学，特别是非欧几何、微分几何之间的关系。这就需要读者具有比较好的近现代物理学知识，至少对于“黑洞”“弦论”“广义相对论”“色相”等物理学名词不感 冒。&lt;br /&gt;　　========================================================&lt;br /&gt;　　下面是我阅读该书的摘录 {}中是随想&lt;br /&gt;　　&lt;br /&gt;　　P18 泰勒斯主张，借助于观察与推理，人们能解释自然界中发生的一切。——{自然界是服从规律的}&lt;br /&gt;　　&lt;br /&gt;　　P27 毕达哥拉斯提出区别自己成员的方法，一是不在公众场所小便；二是在别人面前不进行色情活动。——{可见当时社会风俗，当众小便与性行为是很普遍的，蛮荒呀}&lt;br /&gt;　　&lt;br /&gt;　　P32 欧几里德《几何原本》最重要的贡献是革新了逻辑方法。——{直到今天，这样的逻辑能力仍需要长期训练方能获得}&lt;br /&gt;　　&lt;br /&gt;　　P33 每一条论断都必须证明，直觉虽然是一种有价值的指导，但必须在证明的大门口得到检验。......许多时候直觉是失败与错误的，而审慎的形式推理将揭示真 理。——{这是现代很多人所不知道的，现在社会过于渲染直觉的重要，造成许多人的盲从。现实多能归化于博弈，而在博弈中审慎的形式推理的作用是绝对性的}&lt;br /&gt;　　&lt;br /&gt;　　P35 {方形游戏在日常生活中很常见。能发现公平下的微小差别的人方能积累财富——这是《长尾理论》应用几何学的一个很好例子。这种能力大多要求后天培养训练，会计是基石}&lt;br /&gt;　　&lt;br /&gt;　　P69 所谓“奥卡姆剃刀”，简单地说就是：一个人应该根据尽可能少的假定为创建理论而努力。——{专门有一本书《奥卡姆剃刀》来论述此种思想对于当今社会的深刻影响}&lt;br /&gt;　　&lt;br /&gt;　　P87 笛卡尔：“我的全部物理除了几何就一无所有了”。——{现代弦论好像也如此}&lt;br /&gt;　　&lt;br /&gt;　　P98 平行公理与欧几里德理论其它部分的关系难以捉摸，不亚于它的深奥。&lt;br /&gt;　　&lt;br /&gt;　　P103 没有平行，距离变得捉摸不定。——{应用到人际关系中，只有保持宽容，你和他人的关系方能稳定}&lt;br /&gt;　　&lt;br /&gt;　　P123 庞加莱直线——圆的任意一段与圆盘的边界相交成直角的弧。——{初看不明确，细想一想真佩服数学家语言抽象能力，一流的数学家必然是一流的文学家}&lt;br /&gt;　　&lt;br /&gt;　　P124 双曲空间的庞加莱模型是一个实验室。在这个实验室里，容易发现某些不寻常的定理和性质，这些定理与性质是早先研究过的数学家极不容易揭示出来的。&lt;br /&gt;　　&lt;br /&gt;　　P128 微分几何是曲面的理论。......高斯指出：一个曲面可以看成本身就是一个空间；二是一个给定空间的弯曲程度可以只在曲面本身上加以研究，而与一个可能包含它或者可能不包含它的较大空间无关。&lt;br /&gt;　　&lt;br /&gt;　　P137 黎曼说明了如何把球面解释为一个二维的椭圆空间。&lt;br /&gt;　　&lt;br /&gt;　　P139 {吹起来的呼啦圈，看来世间许多事务都在黎曼几何上，而非在欧式几何上}&lt;br /&gt;　　&lt;br /&gt;　　P142 避免由于措词有限而导致循环论证的唯一方法，是在这本词典中容纳一些不加定义的术语。.......数学系统也容纳了一些不加定义的术语，并寻求为了使系统有意义所必需的最少术语。&lt;br /&gt;　　&lt;br /&gt;　　P177 爱因斯坦：“一个人为了考试，必须把所有这些资料都塞入大脑，不管这个人愿意不愿意。这种强制手段对我有这么大的威慑作用，以致我在通过期末考试以后的一 整年的时间内，发现自己考虑任何科学问题都兴味索然。”——{真知灼见，看来爱因斯坦也为“应试教育”而苦恼过}&lt;br /&gt;　　&lt;br /&gt;　　P210 爱因斯坦：“当一个无识别能力的高度近视的人从地球表面走过时，他不会意识到他走过的轨迹路线是弯曲的。我为发现这一事实而感到十分幸运”。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-3746683612592381257?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/3746683612592381257/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=3746683612592381257' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/3746683612592381257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/3746683612592381257'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2008/01/blog-post.html' title='与物理学同行——读《几何学的故事》'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-4164766467081638084</id><published>2008-01-08T22:54:00.000-08:00</published><updated>2008-01-08T23:01:43.693-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer'/><category scheme='http://www.blogger.com/atom/ns#' term='技巧'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='计算机'/><title type='text'>Cterm的自动登录</title><content type='html'>采用Cterm的默认自动登录方式，不能跳过BBS前面的“十大”等页，所以根据BBS特点，修改自动登录过滤器如下：（当遇到/则执行/说明）&lt;br /&gt;1.请输入帐号     %U\n    输入帐号&lt;br /&gt;2.请输入代号    %U\n     输入代号&lt;br /&gt;3.请输入密码    %C\n     输入密码&lt;br /&gt;4.上次连线时间  \n\n    跳过连线时间页面&lt;br /&gt;5.继续                  \n        当遇到继续时都默认跳过&lt;br /&gt;6.好朋友列表      q%e     跳过在线好友页面&lt;br /&gt;7.主菜单              %e        停止在主页面上&lt;br /&gt;8.主选单               %e        停止在主页面上&lt;br /&gt;&lt;br /&gt;这样登录就“清爽”多了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-4164766467081638084?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/4164766467081638084/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=4164766467081638084' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/4164766467081638084'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/4164766467081638084'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2008/01/cterm.html' title='Cterm的自动登录'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-6904039498112431957</id><published>2008-01-07T19:23:00.000-08:00</published><updated>2008-01-07T19:24:01.128-08:00</updated><title type='text'>Acrobat安装20225问题的解决方法</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_ufO6ICWIhsI/R4Ls0PL5OBI/AAAAAAAAAX0/gnIYOkWYVuU/s1600-h/Snap1.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_" style="CLEAR: both; FLOAT: left; MARGIN: 0px 10px 10px 0px" alt="" src="http://2.bp.blogspot.com/_ufO6ICWIhsI/R4Ls0PL5OBI/AAAAAAAAAX0/gnIYOkWYVuU/s320/Snap1.jpg" border="0" /&gt;&lt;/a&gt;  今天安装Acrobat时遇到20225问题（如图所示），这样就无法使用Acrobat PDF Printer功能。同实验室的也遇到这个问题，解决方法是：&lt;br /&gt;1.修改Windows系统的Path环境变量。&lt;br /&gt;   打开“我的电脑-属性-高级-环境变量”，找到Path一栏，复制保存Path栏中的字符串，然后在该字符串的最前面填入&lt;br /&gt;   SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;&lt;br /&gt;2.重新启动计算机&lt;br /&gt;3.重新安装Acrobat，这时就不出现20225问题了&lt;br /&gt;4.最后将保存的原始Path字符串再复制回去&lt;div style='clear:both; text-align:LEFT'&gt;&lt;a href='http://picasa.google.com/blogger/' target='ext'&gt;&lt;img src='http://photos1.blogger.com/pbp.gif' alt='Posted by Picasa' style='border: 0px none ; padding: 0px; background: transparent none repeat scroll 0% 50%; -moz-background-clip: initial; -moz-background-origin: initial; -moz-background-inline-policy: initial;' align='middle' border='0' /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-6904039498112431957?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/6904039498112431957/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=6904039498112431957' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/6904039498112431957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/6904039498112431957'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2008/01/acrobat20225.html' title='Acrobat安装20225问题的解决方法'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ufO6ICWIhsI/R4Ls0PL5OBI/AAAAAAAAAX0/gnIYOkWYVuU/s72-c/Snap1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-3828252636120318826</id><published>2008-01-06T22:45:00.000-08:00</published><updated>2008-01-06T22:47:10.994-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer'/><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>TotalCmd中F4呼唤Vim</title><content type='html'>TotalCmd中F4呼唤Vim的命令如下：&lt;br /&gt;   D:\Program Files\gvim.exe -p --remote-tab-silent&lt;br /&gt;这样只打开一个Vim，且不同文件在不同的Tab中。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-3828252636120318826?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/3828252636120318826/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=3828252636120318826' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/3828252636120318826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/3828252636120318826'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2008/01/totalcmdf4vim.html' title='TotalCmd中F4呼唤Vim'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-546003141469838627</id><published>2007-12-13T22:44:00.000-08:00</published><updated>2007-12-13T22:46:29.467-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><category scheme='http://www.blogger.com/atom/ns#' term='question'/><title type='text'>MikTex's FNDB</title><content type='html'>阅读MikTex帮助文件——“为了加速文件搜索，MikTex使用一个已知文件列表来搜索文件。该列表称为 file name database(FNDB)。强烈建议当你在TEXMF目录中添加或删除文件后，用MikTex提供的工具来刷新一下该文件列表。”郁闷，并没有告诉我怎么通过命令行刷新这个文件列表。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-546003141469838627?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/546003141469838627/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=546003141469838627' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/546003141469838627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/546003141469838627'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/12/miktexs-fndb.html' title='MikTex&apos;s FNDB'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-165645914378628903</id><published>2007-12-05T17:02:00.000-08:00</published><updated>2007-12-05T17:34:10.273-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='脚本'/><category scheme='http://www.blogger.com/atom/ns#' term='Script'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Windows脚本技术</title><content type='html'>Windows与Unix/Linux所不同的根本所在是设计目的，前者为非专业人士设计，图形界面（GUI）是根本；而后者则关注功能实现，命令行（Console）才是根本。所以在Unix/Linux上脚本编写是件很容易的事，但到了Windows上则成难事。其难有三：一则Windows中大部分软件都是基于GUI的，你很难用命令行将其“串联”起来；二则Windows中脚本多要涉及COM等概念，对于Windows的结构体系要有很多的了解方能“游刃有余”；三则MSDN中虽然有相关的脚本介绍，但比较分散，没有系统性，样例程序又很少，这给学习与使用带来很多问题。&lt;br /&gt;&lt;br /&gt;我近日要解决一个问题，能自动将某个Zip包中的多个PDF文件解压后分解成页，筛选掉重复的页然后再合并成一个PDF。原以为在两日内就能完成的脚本程序，竟用了一周的时间。现在将其间的思考与经验进行总结：&lt;br /&gt;&lt;br /&gt;1.在Windows中有四类脚本。&lt;br /&gt;&lt;br /&gt;(1)命令行，就是Windows自带的一些命令，如for等，这些命令可以构成最简单的批处理，特别是For命令，使用得当会起到事半功倍的效果。比如要将某个文件夹中所有的.htm文件后缀名修改成.html，用rename *.htm *.html是不行的，可以用 for %i in (*.htm) do rename %i %il 来实现。如果要将for命令写入BAT文件，则应该为 for %%i in (*.htm) do rename %%i %%il 。&lt;br /&gt;&lt;br /&gt;(2)WSH脚本，这是Windows中最常用的一类脚本，也是Windows平台内置的最强大的脚本系统。WSH，即Windows Script Host，其基于COM技术框架，可调用Windows平台内嵌的几个强大的COM对象，最常见的是“WScript.Shell”，“Scripting.FileSystemObject”，“ADODB.Connection”“ADODB.Command”，熟悉COM编程、ASP的人应该对此不陌生。其优点在于可以用VBS或JS等比较高级的语言来编程而不仅仅是命令行的累积。其缺点是调试很困难。&lt;br /&gt;由于其与COM的内在联系紧密，所以有时人们会在BAT文件中临时创建一个VBS文件，然后调用该VBS文件以实现BAT所无法实现的功能，其基本结构如下：&lt;br /&gt;&lt;br /&gt;@echo. &gt;&gt;sample.vbs      ::创建一个sample.vbs文件，并写入一个空行&lt;br /&gt;@echo WScript.Echo "Hello,WSH World"&gt;&gt;sample.vbs ::这里将vbs中的代码写入文件中&lt;br /&gt;.......&lt;br /&gt;@echo. &gt;&gt;sample.vbs    ::再写入个空行&lt;br /&gt;@cscript //I //nologo sample.vbs  ::调用该vbs脚本&lt;br /&gt;@del sample.vbs ::删除该脚本&lt;br /&gt;&lt;br /&gt;(3)基于动态语言环境，如Python，Ruby等。这样的动态语言一般都有与平台交互的对象库，通过动态语言来编写程序，易于调试与OOP化，复用性高，健壮性强，移植性好。但其要学习一门动态语言有些难度，而且对于一些临时性的简单工作也显得“大材小用”。如果要编写一些最常用且要不断修改的程序，基于动态语言是首选。&lt;br /&gt;&lt;br /&gt;(4)一些特殊的自动化程序，如AutoIt，AHK(Auto Hot Key)等。这些软件其实就是一个解释器，可以将你编写的脚本进行解释运行。由于它们是完全面向Windows编写的，对于Windows的GUI支持的很好，而且有很强大的辅助编写脚本功能（如将鼠标动作录制成脚本等）这样就极大方便了GUI的自动化。所以如果面对许多GUI操作时，这类脚本当是最好选择。当然由于这些脚本语言具有一些特定性，在编写时仍需要熟悉其函数库；而且这些脚本是与Windows紧密相连的，其无法像动态语言脚本那样可以简单地移植到其它平台上。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-165645914378628903?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/165645914378628903/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=165645914378628903' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/165645914378628903'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/165645914378628903'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/12/windows.html' title='Windows脚本技术'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-8261008959726661952</id><published>2007-10-08T19:10:00.000-07:00</published><updated>2007-10-08T19:13:03.027-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='pdftk'/><title type='text'>PDFTK的样例</title><content type='html'>PDFTK是一款PDF的命令行工具，其可以完成许多PDF合并、分割工作。&lt;br /&gt;下面是我从网络上摘得的PDFTK的样例，翻译列表如下：&lt;br /&gt;&lt;br /&gt;Merge Two or More PDFs into a New Document&lt;br /&gt;将两个或多个PDF文件合并到一个文件中&lt;br /&gt;pdftk 1.pdf 2.pdf 3.pdf cat output 123.pdf&lt;br /&gt;&lt;br /&gt;or (Using Handles):&lt;br /&gt;或者采用句柄&lt;br /&gt;pdftk A=1.pdf B=2.pdf cat A B output 12.pdf&lt;br /&gt;&lt;br /&gt;or (Using Wildcards):&lt;br /&gt;或者通配符&lt;br /&gt;pdftk *.pdf cat output combined.pdf&lt;br /&gt;&lt;br /&gt;Split Select Pages from Multiple PDFs into a New Document&lt;br /&gt;在所选PDF文件中选择页面合并到新的文件中&lt;br /&gt;pdftk A=one.pdf B=two.pdf cat A1-7 B1-5 A8 output combined.pdf&lt;br /&gt;&lt;br /&gt;Encrypt a PDF using 128-Bit Strength (the Default) and Withhold All Permissions (the Default)&lt;br /&gt;用128位密码（默认值）加密PDF并封锁所有权限（默认值）&lt;br /&gt;pdftk mydoc.pdf output mydoc.128.pdf owner_pw foopass&lt;br /&gt;&lt;br /&gt;Same as Above, Except a Password is Required to Open the PDF&lt;br /&gt;与上面相同，但不需要PDF文件打开密码&lt;br /&gt;pdftk mydoc.pdf output mydoc.128.pdf owner_pw foo user_pw baz&lt;br /&gt;&lt;br /&gt;Same as Above, Except Printing is Allowed (after the PDF is Open)&lt;br /&gt;与上面相同，但不允许打印（在PDF打开后）&lt;br /&gt;pdftk mydoc.pdf output mydoc.128.pdf owner_pw foo user_pw baz allow printing&lt;br /&gt;&lt;br /&gt;Decrypt a PDF&lt;br /&gt;解密PDF&lt;br /&gt;pdftk secured.pdf input_pw foopass output unsecured.pdf&lt;br /&gt;&lt;br /&gt;Join Two Files, One of Which is Encrypted (the Output is Not Encrypted)&lt;br /&gt;合并两个文件，其中一个是加密的（输出文件不是加密的）&lt;br /&gt;pdftk A=secured.pdf mydoc.pdf input_pw A=foopass cat output combined.pdf&lt;br /&gt;&lt;br /&gt;Uncompress PDF Page Streams for Editing the PDF Code in a Text Editor&lt;br /&gt;解压PDF页面流以便于在文本编辑器中编辑PDF代码&lt;br /&gt;pdftk mydoc.pdf output mydoc.clear.pdf uncompress&lt;br /&gt;&lt;br /&gt;Repair a PDF's Corrupted XREF Table and Stream Lengths (If Possible)&lt;br /&gt;修理PDF损坏的XREF表格和流长度（如果可能的话）&lt;br /&gt;pdftk broken.pdf output fixed.pdf&lt;br /&gt;&lt;br /&gt;Burst a Single PDF Document into Single Pages and Report its Data to doc_data.txt&lt;br /&gt;将单个PDF文件各页拆开，并将数据汇报到文本文件中&lt;br /&gt;pdftk mydoc.pdf burst&lt;br /&gt;&lt;br /&gt;Report on PDF Document Metadata, Bookmarks and Page Labels&lt;br /&gt;将PDF文件的元数据、书签和页码标号输出到文本文件&lt;br /&gt;pdftk mydoc.pdf dump_data output report.txt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-8261008959726661952?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/8261008959726661952/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=8261008959726661952' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/8261008959726661952'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/8261008959726661952'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/10/pdftk.html' title='PDFTK的样例'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-230571086269229733</id><published>2007-09-09T23:38:00.000-07:00</published><updated>2007-09-09T23:49:00.806-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><category scheme='http://www.blogger.com/atom/ns#' term='freeware'/><title type='text'>用Wink制作帮助教程</title><content type='html'>今天在&lt;a href="http://blog.sina.com.cn/xbeta"&gt;善用佳软&lt;/a&gt;上看到一个小型的屏幕捕捉软件Wink，才2M大小，下载安装后试用一下的确不错。主要是其免费且生成Flash格式文件，很适合我这样的“懒于文笔”描述的人来使用。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-230571086269229733?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/230571086269229733/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=230571086269229733' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/230571086269229733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/230571086269229733'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/09/wink.html' title='用Wink制作帮助教程'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-1360213299498438497</id><published>2007-09-04T18:42:00.000-07:00</published><updated>2007-09-04T20:43:46.728-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer'/><category scheme='http://www.blogger.com/atom/ns#' term='vim'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><title type='text'>Latex-Suite 4步安装（根据官方稿翻译）</title><content type='html'>1.下载并解压缩文件&lt;br /&gt;到 http://vim-latex.sourceforge.net/ 下载压缩包，并解压到你的~/vimfiles目录（Windows）或者~/.vim目录（*nix）中。如果你已经很久没有升级了，最好应先移除~/vimfiles/ftplugin/latex-suite目录再安装&lt;br /&gt;注意：如果你已经安装一些Latex文件拓展，则应阅读 高级安装 以避免覆盖某些你既有文件。&lt;br /&gt;2.在.vimrc配置中增加特定内容&lt;br /&gt;&lt;div class="sourcecode"&gt;&lt;br /&gt;" REQUIRED. This makes vim invoke Latex-Suite when you open a tex file.&lt;br /&gt;filetype plugin on&lt;br /&gt;&lt;br /&gt;" IMPORTANT: win32 users will need to have 'shellslash' set so that latex&lt;br /&gt;" can be called correctly.&lt;br /&gt;set shellslash&lt;br /&gt;&lt;br /&gt;" IMPORTANT: grep will sometimes skip displaying the file name if you&lt;br /&gt;" search in a singe file. This will confuse Latex-Suite. Set your grep&lt;br /&gt;" program to alway generate a file-name.&lt;br /&gt;set grepprg=grep\ -nH\ $*&lt;br /&gt;&lt;br /&gt;" OPTIONAL: This enables automatic indentation as you type.&lt;br /&gt;filetype indent on&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;3.安装帮助文件&lt;br /&gt;要安装帮助到Vim中，应启动Vim并：&lt;br /&gt;helptags ~/.vim/doc (*nix)或 helptags ../vimfiles/doc(windows)&lt;br /&gt;4.完成！&lt;br /&gt;安装完成，现在Latex-Suite可以自动启动，你可&lt;br /&gt;:help latex-suite.txt 来阅读在线帮助&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-1360213299498438497?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/1360213299498438497/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=1360213299498438497' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/1360213299498438497'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/1360213299498438497'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/09/latex-suite-4.html' title='Latex-Suite 4步安装（根据官方稿翻译）'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-5307377177498558608</id><published>2007-09-02T20:54:00.000-07:00</published><updated>2007-09-02T21:00:41.578-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='auto'/><title type='text'>用Python来分析《新东方背单词》的录入格式</title><content type='html'>我想使用《新东方背单词》来背一些自己浏览文章时遇到的生词。该软件提供了一个建立自己图书并从文本格式文件批量录入的功能，但在帮助中没有提供详细的格式说明。于是我用Python编写了一个简单程序来生成测试文本，找到其中规则。代码如下：&lt;br&gt;&lt;br /&gt;&lt;code class="sourcecode"&gt;&lt;br /&gt;# Recite words&lt;br /&gt;sl = []&lt;br /&gt;sll = []&lt;br /&gt;for i in range(26):&lt;br /&gt;    sl.append( chr( ord('a') + i ) )&lt;br /&gt;for i in sl:&lt;br /&gt;    for j in sl:&lt;br /&gt;        sll.append( i + j )&lt;br /&gt;f  = open('recite.txt','w+')&lt;br /&gt;f.write('&lt;w&gt;w \n')&lt;br /&gt;for i in sl :&lt;br /&gt;    if i &lt;&gt; 'w' :&lt;br /&gt;        f.write( '&lt;' + i + '&gt;' + i + '\n' )&lt;br /&gt;f.close()&lt;br /&gt;f  = open('recite1.txt','w+')&lt;br /&gt;f.write('&lt;w&gt;ww \n')&lt;br /&gt;for i in sll:&lt;br /&gt;    f.write('&lt;' + i + '&gt;' + i + '\n' )&lt;br /&gt;f.close()&lt;/code&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;生成的文件录入《新东方背单词》后显示对应的格式，从而得到格式定义符如下：&lt;br /&gt;&lt;code class="sourcecode"&gt;&lt;br /&gt;w--单词&lt;br /&gt;c--中文解释&lt;br /&gt;e--英文解释&lt;br /&gt;d--短语&lt;br /&gt;p--音标&lt;br /&gt;f--词频&lt;br /&gt;k--考点&lt;br /&gt;h--助记法&lt;br /&gt;s--同义词&lt;br /&gt;a--反义词&lt;br /&gt;o--其它&lt;br /&gt;ee--例句&lt;br /&gt;&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-5307377177498558608?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/5307377177498558608/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=5307377177498558608' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/5307377177498558608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/5307377177498558608'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/09/python.html' title='用Python来分析《新东方背单词》的录入格式'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-3486376081578693428</id><published>2007-09-02T20:49:00.000-07:00</published><updated>2007-09-02T20:54:18.198-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reading'/><category scheme='http://www.blogger.com/atom/ns#' term='editor'/><category scheme='http://www.blogger.com/atom/ns#' term='habits'/><title type='text'>《Seven Habits of Effective Text Editing 2.0》阅读笔记</title><content type='html'>1.这不是Vim操作入门，其没有介绍Vim的基本知识，而是集中于编辑器的使用方法，这些方法也可在其它编辑器中使用。&lt;br /&gt;2.要充分认识到编辑器的作用，既不能漠视编辑器的功能而用“蛮力”来完成工作，但也不要面面俱到地学习编辑器所有功能。对于Vim和Emacs这样的骨灰级编辑器来说，完全学习是"Mission Impossible"。&lt;br /&gt;3.建立一个良好的习惯很重要，但更重要地发现问题，并能用智慧地方式进行解决的勇气与耐心。我们往往会有很多好的提高效率的想法，但在工作或学习的压力下，常不能坚守，而白白失去提升的机会。所以本文中非常强调发现的过程，即发现问题与发现解决方案。&lt;br /&gt;4.方案不要一步完美，这样的方案往往不存在（或在我们头顶的三万公尺上）。要有踏出第一步的勇气，先建立一个力所能及但又有所提高的方案，这样即能增强信心，又为进一步完善提供基础。在不断地完善中学习编辑器，用好编辑器。&lt;br /&gt;5.查找与修正是编辑中最常用的功能。用好编辑器的试金石是检查自己是否能自如地利用编辑器功能来快速查找定位与修正。而正则表达式的知识是非常关键的。在Windows下成长的一代似乎没有Unix/Linux人们与生俱来的模式观念，而模式在正则表达式中是最基本的。要努力锻炼这样的思维，虽然起步比较吃力，但终身收益。&lt;br /&gt;6.编辑器好似兵器，而运用编辑器的方法则是每个人的内功。如果内功不强，即是神兵利器在手也发挥不了作用；而如果内功强劲，那么简单的编辑器也能发挥大作用。努力改变自己的思维，发现、创新、提升、再发现是每日必修的内功。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-3486376081578693428?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/3486376081578693428/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=3486376081578693428' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/3486376081578693428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/3486376081578693428'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/09/seven-habits-of-effective-text-editing.html' title='《Seven Habits of Effective Text Editing 2.0》阅读笔记'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-2885529701375254608</id><published>2007-08-28T20:54:00.000-07:00</published><updated>2007-08-28T20:59:51.095-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer'/><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='gnumake'/><title type='text'>GNU Make学习(1)</title><content type='html'>1.Make是一个“古董级”的工具，其像橡树年轮，记录了近三十年计算机科学进步的痕迹。或许在学习Make中你会如考古般发现新奇的过往智慧，但更多的时候你将迷失于旧与新的迷雾之中，这也正是Make对于Windows平台下成长的一代程序员来说难懂的原因。但在每个IDE的F5或F9的背后，都能找到Make的身影。要进阶编程功力，当从了解Make开始。&lt;br /&gt;&lt;br /&gt;2.Make是一个工具，它完成两个任务：一是建立一个多个文件的关系图，其用来描述文件间的依赖关系；二是检测文件的新旧，并按照关系图来进行命令执行以完成局部或整体的更新工作。所以在Make中存在两类语言，一为建立关系图，一为进行文本处理。&lt;br /&gt;&lt;br /&gt;3.在学习Make前，应了解本机上的Make环境。在Windows系统中，由于安装BCB、VC2005等都会自带Make工具。而本文所用的Make是GNUMake 3.8，在Cygwin和DevCPP中都有。不同的Make对应不同的语法，故在BCB中由bpr文件导出的Make文件不能在GNUMake下编译。我就是犯了一次这样的错误。&lt;br /&gt;&lt;br /&gt;4.Make中最简单的方式就是通过显性说明来建立关系图。对于小项目这还是很不错的方案，但对于大项目则不行。原因有三：一是重复声明过多，代码冗余，不利于维护；二是声明过细，移植性差；但最重要的是往往文件关系复杂到无法通过人脑来进行关系声明，这就必须用一种计算机辅助方式来进行关系推衍，这在Make中称为“Rule（规则）“。&lt;br /&gt;&lt;br /&gt;5.Makefile难于阅读与调试的原因在于其自上而下的书写格式与”（关系图）自底而顶“的执行顺序往往是不一致的，也是人难于掌握的。所以Makefile采用Target（目标）与Rule（规则）这两种机制来分割问题。要注意的是这两种机制是双刃剑，其使用不当往往会造成Makefile的更晦涩难懂。&lt;br /&gt;&lt;br /&gt;6.Phony Target用于结构化Makefile，将问题分割，并可优化用户界面。而其中的Empty Target则用来控制命令执行范围，避免非更新区域的反复执行。而对于大项目，制定一个Help Phony是常用技巧。但Phony Target也会破坏一些自然逻辑结构，从而给阅读带来一些障碍。要适当应用Phony Target，不要采用特殊技巧，在欺骗Make工具的同时也会欺骗阅读者，可能包含未来的你。&lt;br /&gt;&lt;br /&gt;7.Rule则屏蔽了关系图的细节，让计算机来自动铺砌关键帧间的空隙。所以良好的Rule即能提高阅读性，又能提高执行效率。&lt;br /&gt;&lt;br /&gt;8.Make诞生于Unix，其带有很强的*nix家族的色彩。比如其支持的通配符（WildCards）与Bourne Shell相同，包括~,*,?,[...]和[^...]。其有着古旧的&lt;tab&gt;键缩进惯例。&lt;br /&gt;&lt;br /&gt;9.在Makefile中要注意变量展开、宏展开和函数展开的顺序。要充分理解Automatic Variables（自动变量）的作用；要用VPATH来指定被搜索文件的目录；要善于利用正则表达式来处理文本变量问题，特别是在gcc -M问题上。要小心地分割项目，善于利用eval函数来达到特定要求。&lt;br /&gt;&lt;br /&gt;10.注意递归变量的声明与使用，这些变量与C中指针相似。&lt;br /&gt;&lt;br /&gt;11.变量用$()来取值，摈弃过时的${}方式。&lt;br /&gt;&lt;br /&gt;12.注意Command的Comment（前面有&lt;tab&gt;)与Makefile的Comment间的差异&lt;br /&gt;&lt;br /&gt;13.正是有了简洁而强有力的函数支持，GnuMake具有很强的文本处理能力；而定义良好的自定义函数或宏，可提高Makefile的通用性和移植性。&lt;br /&gt;&lt;br /&gt;14.inline函数是最常见的形式。&lt;br /&gt;&lt;br /&gt;15.命令修改符 @-消音；- 消噪音（埋头工作） + 无论如何都要工作（即便是--just print模式）&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-2885529701375254608?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/2885529701375254608/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=2885529701375254608' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2885529701375254608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2885529701375254608'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/08/gnu-make1.html' title='GNU Make学习(1)'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-8537922398816921312</id><published>2007-08-23T19:10:00.000-07:00</published><updated>2007-08-23T19:24:01.801-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reading'/><category scheme='http://www.blogger.com/atom/ns#' term='C++ primer'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>新读《C++Primer4》</title><content type='html'>虽然《C++Primer3》是我的枕边常读之书，但这次《C++Primer4》仍给我许多新的启发。该版进一步强调了C++作为一门工程语言的实用性。如在章节设置上，第一部与第二部都没有叙述Class的定义等内容，而是从使用者角度介绍STL中最常用库的介绍。这表明作者认为目前C++程序员更应该了解STL库，去用STL库，而不总是去设计“原始而拙劣”的Class。在第一部Basic中，作者将String、Vector等STL中最常用库介绍放在语句表达式之前介绍，并将Array与Pointer并入一章叙述，都体现了这一点。想现在大学中，许多学生学习完C++后，对于 Bind、Transform 等知之甚少，而 Class 也编写得很糟糕，就更感到《C++Primer》作者的真知灼见。“用比创建好”——这是《C++Primer4》给我的最深印象。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-8537922398816921312?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/8537922398816921312/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=8537922398816921312' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/8537922398816921312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/8537922398816921312'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/08/cprimer4.html' title='新读《C++Primer4》'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-1924857024520421611</id><published>2007-08-20T23:48:00.000-07:00</published><updated>2007-08-20T23:59:44.944-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='highlight'/><category scheme='http://www.blogger.com/atom/ns#' term='技巧'/><category scheme='http://www.blogger.com/atom/ns#' term='code'/><category scheme='http://www.blogger.com/atom/ns#' term='web'/><category scheme='http://www.blogger.com/atom/ns#' term='计算机'/><title type='text'>网页上的代码高亮</title><content type='html'>在网络上发现一个源自Google的工具，可进行代码高亮。&lt;br /&gt;1.下载并解压&lt;a href="http://google-code-prettify.googlecode.com/files/prettify-small.zip"&gt;文件包&lt;/a&gt;，其中有两个文件:CSS和JS&lt;br /&gt;2.在HTML文件头引用CSS与JS&lt;br /&gt;&amp;lt link href="prettify.css" type="text/css" rel="stylesheet"&amp;gt&lt;br/&gt; &amp;lt script type="text/javascript" src="prettify.js"&amp;gt&amp;lt/script&amp;gt&lt;br /&gt;3.在HTML正文中执行JavaScript命令，如 &amp;lt body onload="prettyPrint()"&amp;gt &amp;lt /code &amp;gt&lt;br /&gt;4.需要高亮的代码用&amp;lt code class="prettyprint" &amp;gt ... &amp;lt /code &amp;gt包围即可。&lt;br /&gt;原文地址:&lt;br /&gt;&lt;a href="http://google-code-prettify.googlecode.com/svn/trunk/README.html"&gt;http://google-code-prettify.googlecode.com/svn/trunk/README.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-1924857024520421611?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/1924857024520421611/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=1924857024520421611' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/1924857024520421611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/1924857024520421611'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/08/blog-post.html' title='网页上的代码高亮'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-4256604781598224719</id><published>2007-08-19T20:11:00.000-07:00</published><updated>2007-08-19T20:28:17.204-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lstlisting'/><category scheme='http://www.blogger.com/atom/ns#' term='latex'/><category scheme='http://www.blogger.com/atom/ns#' term='gnuplot'/><title type='text'>lstlisting的使用技巧</title><content type='html'>lstlisting中使用lstinputlisting命令导入外部源代码，不要全部导入，这样常会引起Latex解释错误。应定义起始/结束行号，这样即清楚，Latex编译也很快。&lt;br\&gt;&lt;br /&gt;&lt;div class="code"&gt;\lstinputlisting[language=Gnuplot,firstline=1,lastline=2]{sample01.plt}&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-4256604781598224719?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/4256604781598224719/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=4256604781598224719' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/4256604781598224719'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/4256604781598224719'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/08/lstlisting.html' title='lstlisting的使用技巧'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-4250282360394276383</id><published>2007-08-18T00:47:00.000-07:00</published><updated>2007-08-18T00:50:53.985-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Computer'/><category scheme='http://www.blogger.com/atom/ns#' term='计算机管理'/><category scheme='http://www.blogger.com/atom/ns#' term='Batch Command'/><category scheme='http://www.blogger.com/atom/ns#' term='脚本命令'/><category scheme='http://www.blogger.com/atom/ns#' term='程序'/><title type='text'>Firefox中的Gmail显示</title><content type='html'>最近Firefox中Gmail总是显示不正常，但在IE中却能正常显示，我原先以为是Firefox升级后的问题，今天Google得知原来是ADblock的缘故，故在ADblock中增加两条新的过滤条目后即可。&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;@@|http://*.google.com/&lt;br /&gt;@@|https://*.google.com&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-4250282360394276383?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/4250282360394276383/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=4250282360394276383' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/4250282360394276383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/4250282360394276383'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/08/firefoxgmail.html' title='Firefox中的Gmail显示'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-6541171678491536331</id><published>2007-08-03T05:30:00.001-07:00</published><updated>2007-08-03T05:30:58.110-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='阅读'/><category scheme='http://www.blogger.com/atom/ns#' term='Reading'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>《C++沉思录》阅读笔记(5)</title><content type='html'>1.在一个具有继承关系的类群中使用容器会遇到许多在使用内在类型（元类型）时所不会遇到的问题，因为机器是不了解它要处理的问题的规模是多大。它像一个满脸青春痘的少年面对制定一个跨国企业下年度财务预算报表时一样茫然无措。这并不是说少年不够聪明，而是他没有多少经验。即便对于一个经过多年磨炼的人来说，面对一个无法预测边界的工作时，他多少也会紧张。&lt;br /&gt;2.将继承与容器共用，迫使我们要处理两个问题：控制内存分配和把不同类型的对象放入同一个容器中。这其实是一个RTTI问题。在C++中的语言层次，并没有提供一个完善的RTTI解决方案，但其确提供了解决该问题的工具。可惜地是，该问题是OOP中最常见也是最难于理解的问题，故后来的Delphi、Java、C#等都将RTTI作为语言级机制内化起来。这固然为新手入门带来很多好处，并能大幅提高软件工业的生产效率。但软件生产是一个如此特殊的产业，了解RTTI等底层技术的人的产能可能是一般新手的几百倍。或许其只是在产生了形式上的"效率提高"的繁华，而实际整体并没有太多增长。&lt;br /&gt;3.在容器中应该使用代理对象而不是对象本身。&lt;br /&gt;4.在编辑器中手工编写一下代码，有时不需要编译就可以理解作者意图，而单纯阅读总像"雾里看花"。&lt;br /&gt;5.不应该接受对象，而应该接受对象指针或者引用。这虽然带来显而易见的效率优势，也带来棘手的问题，因为使用对象指针比直接使用对象要困难，未初始化的指针是非常危险而且没有什么简单办法可以防范。所以要在其间增加一个代理类，将指针管理封装起来，这样就有效隔绝了指针问题的蔓延。&lt;br /&gt;6.Handle类的实现越看越和COM机制相似，或许COM的实现就是采用这样的技术。&lt;br /&gt;7.Copy on write技术能有效提高效率，在编写完成代码后，应该用该技术优化既有代码。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-6541171678491536331?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/6541171678491536331/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=6541171678491536331' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/6541171678491536331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/6541171678491536331'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/08/c5.html' title='《C++沉思录》阅读笔记(5)'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-2719023273912870671</id><published>2007-08-03T05:29:00.002-07:00</published><updated>2007-08-03T05:30:22.331-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='阅读'/><category scheme='http://www.blogger.com/atom/ns#' term='Reading'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>《C++沉思录》阅读笔记(4)</title><content type='html'>1.OOP-&gt;使用继承和动态绑定的编程方式;&lt;br /&gt;2.检查表不是任务清单，它的用途是帮助你回忆起可能会忘掉的事情，而不是来约束你；&lt;br /&gt; (1)构造函数&lt;br /&gt; (2)私有数据成员&lt;br /&gt; (3)带参数的构造函数&lt;br /&gt; (4)是否每个构造函数都初始化所有的数据成员&lt;br /&gt; (5)析构函数&lt;br /&gt; (6)虚析构函数&lt;br /&gt; (7)需要复制构造函数&lt;br /&gt; (8)赋值操作符&lt;br /&gt; (9)赋值操作符能正确地将对象赋值给对象吗？&lt;br /&gt; (10)定义关系操作符&lt;br /&gt; (11)删除数组时采用delete[]&lt;br /&gt; (12)在复制构造函数与赋值操作符参数中使用const&lt;br /&gt; (13)如果函数有引用参数，其应该是const吗？&lt;br /&gt; (14)适当声明成员函数为const&lt;br /&gt;3.C++更适合于那些喜欢思考的程序员；&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-2719023273912870671?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/2719023273912870671/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=2719023273912870671' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2719023273912870671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2719023273912870671'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/08/c4.html' title='《C++沉思录》阅读笔记(4)'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-2700173275186236557</id><published>2007-08-03T05:29:00.001-07:00</published><updated>2007-08-03T05:29:40.611-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='阅读'/><category scheme='http://www.blogger.com/atom/ns#' term='Reading'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>《C++沉思录》阅读笔记(3)</title><content type='html'>1.Murphy's Law 墨菲法则，一件事只要有可能变糟，就一定会变糟。&lt;br /&gt;2.通常我们不可能为特定的工具挑选合适的问题；而应该为特定的问题挑选合适的工具，但目前我们常常会在没有分析问题前就决定了工具，这常常是因为商业意义或其它原因。有时我会在第一次技术讨论会上，在一段5分钟的简短需求说明后，听到项目经理斩钉截铁地提出要采用J2EE+***或者ASP.NET+***等方案，然后兴致勃勃地讲述该技术平台的优越性，宛然他是某家技术提供商所雇用的推销员。&lt;br /&gt;3.C++主要设计目的是可移植性和可并存性，其可移植性与跨平台不是一个概念。在Java以前就有许多包裹着不同层次系统的语言，很显然Java是其中最成功的一个，而其由于商业推广目的，并不会强调移植性与跨平台间的概念差异。虽然从计算机科学家的角度来看，这样的差异是如此之大，以至于许多专家认同"Java不是跨平台，Java自己就是平台"。但对于程序工人来说，这样的差异是细小的。而对于商人来说，这样的差异是产生"现金流"的风道。&lt;br /&gt;4.C++的目的不是安全，而是自由。我想随着软件工业的发展，C++与Java会不断分化，科学家使用C++，而商业系统中的技术工人则采用Java（或者与之类似的C#等）。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-2700173275186236557?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/2700173275186236557/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=2700173275186236557' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2700173275186236557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2700173275186236557'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/08/c3.html' title='《C++沉思录》阅读笔记(3)'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-141042539196997878</id><published>2007-08-03T05:28:00.001-07:00</published><updated>2007-08-03T05:28:59.235-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='阅读'/><category scheme='http://www.blogger.com/atom/ns#' term='Reading'/><category scheme='http://www.blogger.com/atom/ns#' term='C++'/><title type='text'>《C++沉思录》阅读笔记(2)</title><content type='html'>1.很多最成功、最有名的软件最初都是由少数人开发的；&lt;br /&gt;2.软件业中，软件制造的规模和经济效益不成正比；&lt;br /&gt;3.抽象是机器所不易而是人所擅长的工作，不同层次的抽象产生不同层次的系统，要厘清不同语言能赋予人不同的层次的抽象能力。有些抽象不是语言的一部分。&lt;br /&gt;4.在某处很显然的约定在另一写地方会成为"隐讳"的细节而不为自己和他人所觉察、最终成为最难于Debug的Bug。&lt;br /&gt;5.人应该成为工具的主人而不是依附工具的奴仆。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-141042539196997878?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/141042539196997878/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=141042539196997878' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/141042539196997878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/141042539196997878'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/08/c2.html' title='《C++沉思录》阅读笔记(2)'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-2728484935733304825</id><published>2007-08-02T18:21:00.000-07:00</published><updated>2007-08-02T18:23:41.654-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='阅读、Reading、C++'/><title type='text'>C++沉思录阅读笔记(1)</title><content type='html'>实用和抽象是C++的本质特性。不要陷入教条主义的泥潭，但要尊重编程手册与智慧。在面对代码时要始终保持实用主义原则，而在确保程序正常工作的基础上，敢于挑战自我，用眼光考察代码的未来，用头脑抽象问题的本质。对于一个优秀的C++科学家来说。编程应是(1)集中考量问题的本质(2)定义一个类来抓住本质，确保其能工作(3)将其逐步抽象建立一个更一般问题的解决方案(4)在遇到符合这个本质的问题就采用该类。&lt;br /&gt;思索是C++程序员的特权，因为从语言角度C++给于程序员最大的自由度。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-2728484935733304825?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/2728484935733304825/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=2728484935733304825' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2728484935733304825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2728484935733304825'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/08/c1.html' title='C++沉思录阅读笔记(1)'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-5083201920414774865</id><published>2007-07-01T19:15:00.000-07:00</published><updated>2007-07-01T19:25:16.568-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='批处理'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>python过滤HTML代码小记</title><content type='html'>我常用Python来过滤HTML代码，其中一项工作是将网络上批量下载的文章进行重命名。一般操作是先下载索引页面（HTML），然后用FlashGet批量下载文件；用Python过滤索引页面以获取文件下载名与实际文件名的对应列表，最后转换为BAT文件批处理。&lt;br /&gt;但我一直没有能解决如何判断A标签的class属性问题，因为我以前的代码是：&lt;br /&gt;def start_a(self,attrs):&lt;br /&gt;    idText = [ v for k, v in attrs if k == 'class' ]&lt;br /&gt;    fileHref = [ v for k, v in attrs if k == 'href' ]&lt;br /&gt;    print fileHref&lt;br /&gt;    if idText == 'a': #这里判断class的属性，有问题的&lt;br /&gt;      self.inValid = True&lt;br /&gt;      self.fileHrefs.append( fileHref )&lt;br /&gt;def end_a(self):&lt;br /&gt;    self.inValid = False&lt;br /&gt;其中判断A标签的class属性那段是有问题的。原因是我没有区分Python中数组与字符串的关系。今天我重读Python帮助后才意识到这一点。我的新代码如下：&lt;br /&gt;def start_a(self,attrs):&lt;br /&gt;    idText = [ v for k, v in attrs if k == 'class' ]&lt;br /&gt;    fileHref = [ v for k, v in attrs if k == 'href' ]&lt;br /&gt;    print fileHref&lt;br /&gt;    if idText == ['a'] : #用数组来判断&lt;br /&gt;      self.inValid = True&lt;br /&gt;      self.fileHrefs.append( fileHref [0]) #在序列数组中添加字符串而非子序列数组&lt;br /&gt;def end_a(self):&lt;br /&gt;    self.inValid = False&lt;br /&gt;这样就解决问题了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-5083201920414774865?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/5083201920414774865/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=5083201920414774865' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/5083201920414774865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/5083201920414774865'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/07/pythonhtml.html' title='python过滤HTML代码小记'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-2631827738418670913</id><published>2007-06-25T19:32:00.000-07:00</published><updated>2007-06-25T20:05:26.563-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tips'/><category scheme='http://www.blogger.com/atom/ns#' term='操作技巧'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><title type='text'>批量下载后的文件名过滤</title><content type='html'>用FlashGet批量下载文件后面临一个文件名更改过滤的问题。我的解决方案是：&lt;br /&gt;1.在批量下载时，同时下载该网页的HTML文件；&lt;br /&gt;2.用Python来过滤出对应的HTML文件；&lt;br /&gt;3.将过滤文件修补成Bat文件，运行后则可批量更改名称；&lt;br /&gt;=====================================================================&lt;br /&gt;Python过滤源代码&lt;br /&gt;# -*- coding: cp936 -*-&lt;br /&gt;# yankchina@gmail.com&lt;br /&gt;# 2007-06-26 pass&lt;br /&gt;&lt;br /&gt;from sgmllib import SGMLParser&lt;br /&gt;class MyHtmlFilter(SGMLParser):&lt;br /&gt;    def reset(self):&lt;br /&gt;        SGMLParser.reset(self)&lt;br /&gt;        self.inValid = False&lt;br /&gt;        self.fileHrefs = []&lt;br /&gt;        self.fileNames = []&lt;br /&gt;&lt;br /&gt;    def start_a(self,attrs):&lt;br /&gt;        #idText = [ v for k, v in attrs if k == 'class' ]&lt;br /&gt;        fileHref = [ v for k, v in attrs if k == 'href' ]&lt;br /&gt;        #if idText == 'a01' :&lt;br /&gt;        self.inValid = True&lt;br /&gt;        self.fileHrefs.append( fileHref )&lt;br /&gt;    def end_a(self):&lt;br /&gt;        self.inValid = False&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;    def handle_data(self, text ):&lt;br /&gt;        if self.inValid:&lt;br /&gt;            self.fileNames.append( text )&lt;br /&gt;       &lt;br /&gt;       &lt;br /&gt;def FilteHtmlFile( inFileName,outFile ):&lt;br /&gt;    ''' Filte Html File&lt;br /&gt;&lt;br /&gt;    '''&lt;br /&gt;    import os&lt;br /&gt;    if os.path.exists( inFileName ):&lt;br /&gt;        inFile = open( inFileName, "r")&lt;br /&gt;        parser = MyHtmlFilter()&lt;br /&gt;        parser.feed( inFile.read() )&lt;br /&gt;        inFile.close()&lt;br /&gt;        parser.close()&lt;br /&gt;        print len( parser.fileNames )&lt;br /&gt;        for i in range( len( parser.fileNames) ):&lt;br /&gt;            outFile.write( parser.fileHrefs[i][0] + "   " + parser.fileNames[i]+ ".doc \n " )&lt;br /&gt;            print parser.fileNames[i]&lt;br /&gt;            print parser.fileHrefs[i]&lt;br /&gt;        print inFileName, len( parser.fileHrefs )&lt;br /&gt;       &lt;br /&gt;if __name__ == "__main__" :&lt;br /&gt;    outFileName = 'output.txt'&lt;br /&gt;    outFile = open( outFileName, "w" )&lt;br /&gt;    htmlFileName = "1.htm"&lt;br /&gt;    FilteHtmlFile(htmlFileName, outFile )&lt;br /&gt;    outFile.close()&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-2631827738418670913?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/2631827738418670913/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=2631827738418670913' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2631827738418670913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2631827738418670913'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/06/blog-post.html' title='批量下载后的文件名过滤'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-3733216300130019046</id><published>2007-06-21T19:36:00.000-07:00</published><updated>2007-06-21T19:41:24.366-07:00</updated><title type='text'>AutoIt的学习与开发心得</title><content type='html'>AutoIt3是一个Windows平台下的自动脚本工具，其脚本语言接近VBScript，但拓展了许多Windows平台的有效功能，如窗体控制、DLL调用、网络开发等。我下载了AutoIt3并进行了短期学习，开发了一个简单的脚本程序，用来在TotalCmd中调用创建一个Readme.txt文档。以前我经常手动创建这样的文档很烦人，而现在看着屏幕上一闪而过的Notepad，自有一种欣慰。&lt;br /&gt;下面是程序脚本：&lt;br /&gt;#cs ----------------------------------------------------------------------------&lt;br /&gt; AutoIt 版本: 3.2.3.14第一版)&lt;br /&gt; 脚本作者: yankchina@gmail.com&lt;br /&gt;    Email: yankchina@gmail.com&lt;br /&gt;    QQ/TM:&lt;br /&gt; 脚本版本: 1.0&lt;br /&gt; 脚本功能: 新建一个名为Readme.txt的文档，并在文档首部写入日期和作者信息&lt;br /&gt;&lt;br /&gt;#ce ----------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;; 脚本开始 - 在这后面添加您的代码.&lt;br /&gt;Dim $AuthorInfor = "yankchina@gmail.com " ;作者信息&lt;br /&gt;Dim $ReadmeFilePath = "F:\CacheTemp\" ; 默认保存路径&lt;br /&gt;;如果有命令行参数，则取第一个命令行参数为文件保存位置&lt;br /&gt;if $CmdLine[0] &gt; 0 Then&lt;br /&gt;    $ReadmeFilePath = $CmdLine[1]&lt;br /&gt;EndIf&lt;br /&gt;Dim $ReadmeFileName = $ReadmeFilePath &amp; "readme.txt"&lt;br /&gt;;判断文件是否存在&lt;br /&gt;Dim $FileIsExist = FileExists( $ReadmeFileName )&lt;br /&gt;;以写模式打开文件，并写入题头信息&lt;br /&gt;$file = FileOpen($ReadmeFileName,1)&lt;br /&gt;; 检查文件是否正常打开&lt;br /&gt;If $file = -1 Then&lt;br /&gt;    MsgBox(0, "错误", "无法打开目标文件"&amp;$ReadmeFileName)&lt;br /&gt;    Exit&lt;br /&gt;EndIf&lt;br /&gt;;写入标题信息&lt;br /&gt;if not $FileIsExist Then&lt;br /&gt;    FileWriteLine($file,"帮助说明文档")&lt;br /&gt;    FileWriteLine($file,$AuthorInfor)&lt;br /&gt;EndIf&lt;br /&gt;FileWriteLine($file,"")&lt;br /&gt;FileWriteLine($file, getCommentLine("-",40) )&lt;br /&gt;FileWriteLine($file,@YEAR&amp;"-"&amp;amp;@MON&amp;"-"&amp;amp;@MDAY&amp;" "&amp;amp;@HOUR&amp;":"&amp;amp;@MIN)&lt;br /&gt;&lt;br /&gt;FileClose($file)&lt;br /&gt;;运行记事本程序&lt;br /&gt;Run("notepad.exe "&amp; $ReadmeFileName) ;运行记事本程序&lt;br /&gt;if WinWaitActive("readme.txt - 记事本") Then&lt;br /&gt;    Send("^{END}") ;下移到文件底部&lt;br /&gt;    Send("!+0") ;开启中文输入法&lt;br /&gt;EndIf&lt;br /&gt;;--------------------------------------------------------------------------&lt;br /&gt;;获取一个注释字符串列&lt;br /&gt;Func getCommentLine($CmtChar,$CmtNumber)&lt;br /&gt;    $ResultStr = ""&lt;br /&gt;    For $i = 0 to $CmtNumber -1&lt;br /&gt;        $ResultStr = $ResultStr &amp; $CmtChar&lt;br /&gt;    Next&lt;br /&gt;    Return $ResultStr&lt;br /&gt;EndFunc&lt;br /&gt;;---------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;用AutoIt自带工具编译成exe文档后，在TotalCmd中设置一个自定义命令，参数是&lt;br /&gt;%P，这样就可方便地在当前活动目录中创建Readme.txt文件了。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-3733216300130019046?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/3733216300130019046/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=3733216300130019046' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/3733216300130019046'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/3733216300130019046'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/06/autoit.html' title='AutoIt的学习与开发心得'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-5759660520242155471</id><published>2007-05-17T20:01:00.000-07:00</published><updated>2007-05-17T20:09:30.373-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='程序、计算机管理、脚本命令、Batch Command、Computer'/><title type='text'>Windows下没有图形界面</title><content type='html'>Windows是以图形界面的方便易用而行销于世，但如果没有图形界面，该如何控制Windows呢？&lt;br /&gt;昨天虾米管的服务器出现问题了，其无法启动“网络连接”界面来设置网卡的IP地址。我怀疑是某个服务进程损坏了。重装Windows是最后一步庸招，当前还不需要使出来。在没有图形界面的时候，命令行是最有效的工具。&lt;br /&gt;我的方法是编写如下Bat文件，通过 netsh  interface 命令修改了网卡的IP地址。&lt;br /&gt;netsh interface ip reset name="本地连接"&lt;br /&gt;netsh interface ip set address name="本地连接" source=static addr=*.*.*.* mask=255.255.255.0&lt;br /&gt;netsh interface ip set address name="本地连接" gateway=*.*.*.* gwmetric=1&lt;br /&gt;netsh interface ip set dns name="本地连接" source=static addr=*.*.*.*&lt;br /&gt;netsh interface ip set wins name="本地连接" source=static addr=none&lt;br /&gt;&lt;br /&gt;看来在Windows下，学习命令行还是相当有用的。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-5759660520242155471?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/5759660520242155471/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=5759660520242155471' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/5759660520242155471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/5759660520242155471'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/05/windows.html' title='Windows下没有图形界面'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-3261842607230344573</id><published>2007-03-30T02:35:00.001-07:00</published><updated>2007-03-30T02:35:51.358-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='新闻'/><category scheme='http://www.blogger.com/atom/ns#' term='news'/><category scheme='http://www.blogger.com/atom/ns#' term='转贴'/><title type='text'>美丽的素数 伟大的证明[转贴]</title><content type='html'>（来源: 科学网）&lt;br /&gt;&lt;br /&gt;    公元前3世纪，古希腊数学家欧几里得已经证明素数的数目是无穷的；2004年，陶哲轩和格林证明存在任意长的素数等差数列，他们的发现揭示了素数中存在的某种规律。&lt;br /&gt;&lt;br /&gt;    在数学家的眼中，素数是美丽的。就像原子之于化学家、DNA之于遗传学家，素数是自然界中全部数的最基本的结构砖块。那么究竟什么是素数呢？也许任何一位小学三年级的学生都会清楚地回答这个问题：在正整数中，除了1以外，只能被自身和1整除的数就是素数，素数从2，3，5，7，11和17开始……&lt;br /&gt;&lt;br /&gt;    美丽的素数&lt;br /&gt;&lt;br /&gt;    1，2，3……是正整数，其他数字如负数、有理数则都是以正整数为基础定义出来的，所以，研究正整数的规律非常重要。因为任何一个整数均可表示为素数的乘积，而且这个表示是唯一的，所以，研究清楚素数的问题非常重要，但从素数中是很难得到一条定理的。&lt;br /&gt;&lt;br /&gt;    公元前3世纪，古希腊数学家欧几里得已经证明素数的数目是无穷的。今天，陶哲轩和格林证明“存在任意长度的素数等差数列”，揭示了素数中存在的某种规律。&lt;br /&gt;&lt;br /&gt;    什么是等差数列呢？这是一个古老的数学课题。一个数列从第二项起，从后项减去前项所得的差是一个相同的常数，则这个数列就被称为等差数列。比如，1，3，5是一组由三个数构成的等差数列，1，3，5，7则是由4个数构成的等差数列。&lt;br /&gt;&lt;br /&gt;    用素数构成的等差数列被称为素数等差数列。比如从5开始，以12为间隔常数，就可以得到这样的序列：5，17，29，41，53，65……但对这个数列来说，只有前5个数是素数，因此，5，17，29，41，53是一个由5个素数构成的等差数列。因为65可以被5和13整除，不是素数，所以这个特定的素数等差数列不可能延展到6个数的长度。&lt;br /&gt;&lt;br /&gt;    问题出现了：由其他素数构成的等差数列会更长吗？答案是肯定的。事实上，199，409，619，829，1039，1249，1459，1669，1879，2089就是间隔常数为210的10个素数构成的等差数列。&lt;br /&gt;&lt;br /&gt;    而且，数学家们一直认为，由素数构成的等差数列可以任意长，这个猜想提出的时间太长，以至没有人知道这个问题最初是由谁提出来的。但是，在2004年前，没有数学家能证明它。&lt;br /&gt;&lt;br /&gt;    永不消失的素数&lt;br /&gt;&lt;br /&gt;    到目前为止，已知的素数等差数列的长度为23，即由23个素数构成的等差数列，而且这还是在当今最先进的计算机上找到的，这个数列的第一个数是 56211383760397，数之间的间隔常数为44546738095860，最后一位数是56211383760397+ 44546738095860×22.&lt;br /&gt;&lt;br /&gt;    根据上面的描述，一个比较清楚的事实是：随着自然数数值的增加，素数的分布变得越来越稀疏，要寻找这样的等差素数序列就越来越困难。但是，古希腊数学家知道素数是永远不会彻底消失的，自然界中有无穷多个素数。&lt;br /&gt;&lt;br /&gt;    尽管在正整数中，素数看起来是以一种随机的方式出现的，但在19世纪末，法国数学家雅克。哈达玛达（Jacques Hadamard）和比利时数学家法勒布赛（Charles de la Vallee-Poussin ）证明：一种隐藏的规则存在于素数稀疏的背后。换言之，在看似混乱无序的素数数列中，一定存在某种规律。&lt;br /&gt;&lt;br /&gt;    而存在任意长的素数等差数列则是素数性质中的另外一种规律。尽管数学家一直认为“存在任意长度的素数等差数列”，但到2004年前，还没有人能证明它的存在。&lt;br /&gt;&lt;br /&gt;    有关这个问题的一个真正的进展出现在1939年，当时，荷兰数学家Johannes van der corput证明：有无穷多个由3个素数构成的等差数列。那么，由4个素数构成的等差数列的数目是不是也无穷多呢？&lt;br /&gt;&lt;br /&gt;    伟大的证明&lt;br /&gt;&lt;br /&gt;    英国大数学家Atath Brown证明，由前面三个素数和后面不超过两个素数的乘积构成的4个数的等差数列有无穷多。&lt;br /&gt;&lt;br /&gt;    1975年，匈牙利科学院的数学家施米列迪（Endre Szemeredi）证明了一个定理。如果简单地解释，这个定理的意思是在任何不会快速稀疏的整数子集中，肯定会有任意长度的等差数列。世界上只有极少数数学家能懂得这个证明，但施米列迪定理不适合于素数，因为，随着自然数的增加，素数的出现会突然变得稀疏。&lt;br /&gt;&lt;br /&gt;    2002年，两位20多岁的数学家着手证明施米列迪定理在某种特定性质的素数子集中也成立，他们希望能证明：有无穷多个由4个素数构成的等差数列。为了证明这个问题，陶和格林用了两年多的时间分析证明施米列迪定理的4个完整证明的背后因素。&lt;br /&gt;&lt;br /&gt;    陶哲轩说：“我们研究施米列迪定理并努力推进它，以便它能解决素数的问题。为了实现这个目标，我们借用这4个证明方法来建造一个施米列迪定理的扩展版。每次当格林和我陷入困境时，其中一个证明的思想总能解决我们的问题。”&lt;br /&gt;&lt;br /&gt;    两年后，用了一个非常漂亮的方法，格林和陶哲轩解决了问题，但结果实在惊人。2004年4月18日，两人宣布：他们证明了“存在任意长度的素数等差数列”，也就是说，对于任意值K，存在K个成等差级数的素数。例如 K=3，有素数序列3， 5， 7 （每两个差2）……K=10，有素数序列  199， 409， 619， 829， 1039， 1249， 1459， 1669， 1879， 2089 （每两个差210）。他们将长达 50页的论文——《素数含有任意长度的等差数列》——张贴在当日的预印本网站上，并向《美国数学年鉴》（Annals of Mathematics）投稿。&lt;br /&gt;&lt;br /&gt;    这是一项惊人的成就，他们的发现揭示了素数中存在的某种规律。这是一项伟大的成就，他们的证明立即在国际学术界引起轰动。2004年5月21日出版的美国《科学》杂志报道说，“两位数学家用数论中一个令人眩晕的突破结束了一个问题。”&lt;br /&gt;&lt;br /&gt;    《发现》杂志将陶哲轩和格林在素数方面的研究评选为2004年100项最重要的发现之一；2004年出版的《现代数论导引》已经引用这篇尚未正式发表的论文所涉及的工作。&lt;br /&gt;&lt;br /&gt;    据最新消息，格林和陶哲轩的这篇论文已被《美国数学年鉴》接受，即将出版。（王丹红/编译整理)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-3261842607230344573?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/3261842607230344573/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=3261842607230344573' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/3261842607230344573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/3261842607230344573'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/03/blog-post_4990.html' title='美丽的素数 伟大的证明[转贴]'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-6657198317923049837</id><published>2007-03-30T02:32:00.000-07:00</published><updated>2007-03-30T02:33:10.167-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='转贴'/><category scheme='http://www.blogger.com/atom/ns#' term='review'/><category scheme='http://www.blogger.com/atom/ns#' term='回顾'/><title type='text'>程序员四大忌 你该如何避免[转帖]</title><content type='html'>来源：希赛社区  更多内容请登陆：http://bbs.csai.cn/bbs/index.asp&lt;br /&gt;&lt;br /&gt;一忌：轻易言败，没有自信&lt;br /&gt;&lt;br /&gt;　　没有永不放弃精神的程序员，只是一个有程序员名号的假程序员。一个真正的程序员，知道在程序设计的过程中，可能会遇到不计其数的困难和问题，可能有极多的挫折和失败，而成功只有一次。&lt;br /&gt;&lt;br /&gt;　　就为解决一个问题，我们可能连续十几甚至几十小时的坐在计算机前不停的工作。一个问题解决了，可能又有其它的问题出现。而你要是不能坚持下来，可能从前的一切努力都流失了。轻易言败的人请不要做程序员，你不可能成功。执着是最可贵的。&lt;br /&gt;&lt;br /&gt;　　执着的程序员都是相信自己的人，每时每刻都会鼓励自己，你做的出来，你能解决，你会成功。这样他才能坚持下去。&lt;br /&gt;&lt;br /&gt;二忌：浮华不实，自满自大&lt;br /&gt;&lt;br /&gt;　　夸夸奇谈的人不是优秀的程序员。整个程序设计的过程就是一个研究学习，应用，再研究学习，再应用的过程。一名优秀的程序员决不会认为自己足够好了，不需要再提高了。自满自足的人不会是好程序员，会很快落后以致落伍。所以越是优秀的程序员越是感觉自己懂得少，不会在人前故意卖弄，这并不是故作谦虚，而是实实在在的感受，亲自体会才能明白。&lt;br /&gt;&lt;br /&gt;　　浮华的程序员会不懂装懂，不停的强调语言的优劣，平台的好坏。追求所谓最新最时尚的技术，停留在表面问题上。或假做深沉，用不适合的方式做不适合的事情。就像孔已己一样，以为知道"茴"字有四种写法就是学问。最后是简单的作不好，困难的也作不好。&lt;br /&gt;&lt;br /&gt;三忌：死气沉沉，不求甚解&lt;br /&gt;&lt;br /&gt;　　优秀的程序员是充满激情和活力的程序员。求知欲和创造欲是原动力。有求知欲你才能不停的学习，有创造欲你才能不停的超越自己。死气沉沉的程序员已经对程序设计失去了兴趣，很快就会主动或被迫离开。&lt;br /&gt;&lt;br /&gt;　　创造不是指你要发明什么别人不知道的技术或方法，而是说不能仅仅知道怎么做，还要知道为什么这样做。之后你才能创造，其实程序设计的整个过程就是创造的过程。&lt;br /&gt;&lt;br /&gt;四忌：强调客观，忽略自身&lt;br /&gt;&lt;br /&gt;　　很多程序员都是在失败的时候强调客观因素，而优秀的程序员的程序员都是先反省自己。要明白自己缺陷，再努力去学习。没有人事事都做的成功，也没有人生来就什么会做。所以失败了，多想想自身的原因，这样你才会不停的进步，而不是留在原地抱怨。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-6657198317923049837?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/6657198317923049837/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=6657198317923049837' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/6657198317923049837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/6657198317923049837'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/03/blog-post_30.html' title='程序员四大忌 你该如何避免[转帖]'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-8339054647657200730</id><published>2007-03-06T04:24:00.000-08:00</published><updated>2007-03-06T04:34:06.632-08:00</updated><title type='text'>传统之大略——《我的哲学之路》笔录</title><content type='html'>　　  该书概况了汤一介教授的哲学研究心得，可视为一本精湛的传统哲学入门随笔。如果于丹教授的“心得”可给我以传统经典的现代解读的话，那么这本书则从宏观的角度给我以传统哲学体系大体架构。&lt;br /&gt;　　 汤教授将中国传统哲学的理论体系梳理为三个层次：普遍和谐观念——宇宙人生论；内在超越精神——境界修养论；内圣外王之道——政治教化论。其中所蕴含的古 代朴素辨证法都是从日常生活经验中得来的。汤教授认为普遍和谐是：自然的和谐，人与自然的和谐，人与人的和谐（社会生活的和谐）以及人自我身心内外的和 谐。而中国哲学（包括儒家、道家和中国化的佛教）与西方哲学最大的不同是它是以“内在超越”为特征的；其价值在于把“人”看成是具有超越自我和世俗限制能 力的主体。如此通观古今，为当代之大家。&lt;br /&gt;　　 汤教授如是研究传统哲学的目的在于将其有价思想元素应用于现代社会。他认为哲学是文化的核心，深刻地反映着一个时代的精神面貌。所以研究并提炼哲学观念可 以总结人类社会文化精华。虽然汤教授认为：自古以来，我们的社会是一个以家族为本位的农业宗法专制社会，这种社会是缺乏开拓性的，比较注重守成，因此不大 注意向外输出自己的文化，在制度和观念上都压制着开拓精神，但他提出：“己所不欲，勿施于人”是可以为不同文化传统的民族和国家所共同接受的伦理准则；他 提倡“和而不同”，其意思是要承认“不同”，在“不同”基础之上形成的“和”（“和谐”或“融合”），才能使事物得到发展；从人类社会发展到今天看，任何 文化不受外来文化的影响是不可能的，也是不可取的。但是只有充分发挥其原有文化的内涵精神，才可以更好地吸收外来文化以滋养本土文化。由此看来汤教授是主 张一种“包容”的“拿来观”与“弘扬”的“送去观”，这比较现在许多困守故纸堆的“保守派学者”要开明许多。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-8339054647657200730?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/8339054647657200730/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=8339054647657200730' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/8339054647657200730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/8339054647657200730'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/03/blog-post.html' title='传统之大略——《我的哲学之路》笔录'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-4529216130890331724</id><published>2007-02-27T17:00:00.001-08:00</published><updated>2007-02-27T17:00:10.355-08:00</updated><title type='text'>ADSL MODEM 设置</title><content type='html'>今天回来发现无法上 ADSL，打 10000 号咨询后解决了。方案记录如下：&lt;br&gt;1. 故障表现为 ADSL MODEM 的 ADSL 灯不亮， ISP 技术工程师重新刷新电信端口。&lt;br&gt;2. 在刷新端口后故障仍未解决。技术工程师问我是否重新启动过该 MODEM，这样 &lt;br&gt;会造成该 MODEM 的工作模式与网络设置不匹配。需要重新设置 MODEM 模式。&lt;br&gt;  (1) 将本机 IP 设置为 192.168.1.11 ，网关设为 192.168.1.1&lt;br&gt;  (2) IE 登录 192.168.1. 1，修改&amp;quot;基本设置-ADSL模式&amp;quot;为 标准 &amp;quot; G.dmt&amp;quot;模 &lt;br&gt;式。保存后，系统会提示&amp;quot;重启&amp;quot;。用软件重启该 MODEM 。&lt;br&gt;3. 原因是：该 MODEM 长期不用，造成端口无法与远程计算机进行同步操作，且在 &lt;br&gt;本网络中只能使用 G.dmt 模式。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-4529216130890331724?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/4529216130890331724/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=4529216130890331724' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/4529216130890331724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/4529216130890331724'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/02/adsl-modem.html' title='ADSL MODEM 设置'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-1190099464100355277</id><published>2007-02-25T19:07:00.000-08:00</published><updated>2007-02-27T16:46:57.681-08:00</updated><title type='text'>EPS图片绘制与转换</title><content type='html'>在 Latex 中， EPS 是最常用的图片格式。但由于我最常用的 Visio 不支持 &lt;br&gt;EPS 输出，所以我要重新寻找合适的 EPS 图片绘制与转换工具 。&lt;p&gt;【绘制】&lt;br&gt;   Metapost 和 Asymptote : Metapost 是 Latex 平台使用最广泛的图片绘制环 &lt;br&gt;境，其语法还是很容易学习的。但在 CTex 套件中的 Metapost 在 WinXP2 平台下 &lt;br&gt;编译似乎并不好，有时会出错。所以我最常用的绘制环境是 Asymptote， 其优点 &lt;br&gt;是编译稳定，且是类 C 语法，对于程序员更容易上手。但其支持文档很少，其帮 &lt;br&gt;助文件中对于支持包的解释更少，常常需要直接阅读 asy 代码。&lt;p&gt;【转换】&lt;br&gt;   (1) bmeps： CTex 套件中这个工具可以将 JPG/TIFF/PNG 格式的图片转换到 &lt;br&gt;EPS 格式。由于在编译 Latex 之前总要进行对应的转换，可以用下面的 Windows &lt;br&gt;命令行来批处理（保存在 BAT 文件中运行）。&lt;br&gt;  for %%f in (*.jpg) do D:\CTeX\texmf\miktex\bin\bmeps.exe -c -t jpg %%f &lt;br&gt;%%~nf.eps&lt;br&gt;  for %%f in (*.png) do D:\CTeX\texmf\miktex\bin\bmeps.exe -c -t png %%f &lt;br&gt;%%~nf.eps&lt;br&gt;  for %%f in (*.tiff) do D:\CTeX\texmf\miktex\bin\bmeps.exe -c -t tiff &lt;br&gt;%%f %%~nf.eps&lt;br&gt;  (2) 我使用了 eps2png(linux)、AdvanceBatchConverter（Windows）和 &lt;br&gt;ReaConvert（Windows）这三个软件来进行 EPS 到 JPG/PNG 格式的转换，但效果 &lt;br&gt;都不是很好，会出现锯齿感。&lt;p&gt;【数据可视化】&lt;br&gt;   gnuplot：在编写 Latex 文件中，常要将一些数据进行图表化。我以前的方法 &lt;br&gt;是在 Excel 中导入数据绘制图表，然后导出为 JPG 文件，再转换为 EPS 格式。 &lt;br&gt;如果遇到大规模数据则在 Matlab 中编写个小程序来绘制。现在看来这都是很&amp;quot;笨 &lt;br&gt;拙&amp;quot;的方法。现在我使用 gnuplot 来进行数据绘制，该软件是一个数据绘制环境， &lt;br&gt;可以对数据进行2D/3D绘制，并提供多种图片格式输出（如JPG/EPS），甚至可直接 &lt;br&gt;输出 Latex/Metapost等代码。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-1190099464100355277?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/1190099464100355277/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=1190099464100355277' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/1190099464100355277'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/1190099464100355277'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/02/eps.html' title='EPS图片绘制与转换'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-873221932120434757</id><published>2007-02-24T06:22:00.000-08:00</published><updated>2007-02-24T06:36:57.956-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Delphi'/><category scheme='http://www.blogger.com/atom/ns#' term='编程技巧'/><title type='text'>Delphi中的UI组件控制</title><content type='html'>Delphi的VCL设计精妙，给现代许多Framework提供了良好的基础与开发思路。在 &lt;br&gt;Delphi中，继承自TControl的UI组件可以在运行期进行遍历并能够修改其属性。比 &lt;br&gt;如常见的选择框样例，某个选择框的点选决定了一个GroupBox中多个组件的状态。 &lt;br&gt;我写了一个简单的Delphi函数来完成这个功能。&lt;br&gt;&lt;div class="sourcecode"&gt;unit FuncComponentDisplay;&lt;p&gt;interface&lt;br&gt;uses&lt;br&gt;  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,&lt;br&gt;  ComCtrls, StdCtrls, ExtCtrls;&lt;p&gt;&lt;br&gt;procedure SwitchGroupBoxState(CheckBox: TCheckBox; ParentObj: TControl );&lt;p&gt;implementation&lt;p&gt;{ TComponentDisplay }&lt;p&gt;procedure ChangeEditDisplay(aEdit: TEdit;&lt;br&gt;  State: Boolean);&lt;br&gt;begin&lt;br&gt;  aEdit.Enabled := State;&lt;br&gt;  if State then begin&lt;br&gt;    aEdit.Color := clWindow;&lt;br&gt;  end&lt;br&gt;  else begin&lt;br&gt;    aEdit.Color := clBtnFace;&lt;br&gt;  end;&lt;br&gt;end;&lt;p&gt;procedure ChangeButtonDisplay( aButton:TButton; State:Boolean );&lt;br&gt;begin&lt;br&gt;  aButton.Enabled := State;&lt;br&gt;end;&lt;p&gt;procedure ChangeCheckBoxDisplay( aCheckBox:TCheckBox; State:Boolean );&lt;br&gt;begin&lt;br&gt;  aCheckBox.Enabled := State;&lt;br&gt;end;&lt;p&gt;procedure ChangeRadioButtonDisplay( aRadioButton:TRadioButton; &lt;br&gt;State:Boolean );&lt;br&gt;begin&lt;br&gt;  aRadioButton.Enabled := State;&lt;br&gt;end;&lt;p&gt;procedure ChangeProgressBarDisplay( aProgressBar:TProgressBar; &lt;br&gt;State:Boolean );&lt;br&gt;begin&lt;br&gt;  aProgressBar.Enabled := State;&lt;br&gt;end;&lt;p&gt;procedure ChangeTrackBarDisplay( aTrackBar:TTrackBar; State:Boolean );&lt;br&gt;begin&lt;br&gt;  aTrackBar.Enabled := State;&lt;br&gt;end;&lt;p&gt;procedure ChangeListBoxDisplay( aListBox:TListBox; State:Boolean );&lt;br&gt;begin&lt;br&gt;  aListBox.Enabled := State;&lt;br&gt;  if State then begin&lt;br&gt;    aListBox.Color := clWindow;&lt;br&gt;  end&lt;br&gt;  else begin&lt;br&gt;    aListBox.Color := clBtnFace;&lt;br&gt;  end;&lt;br&gt;end;&lt;br&gt;procedure ChangeComboBoxDisplay( aComboBox:TComboBox; State:Boolean );&lt;br&gt;begin&lt;br&gt;  aComboBox.Enabled := State;&lt;br&gt;end;&lt;p&gt;procedure ChangeMemoDisplay( aMemo:TMemo; State:Boolean );&lt;br&gt;begin&lt;br&gt;  aMemo.Enabled := State;&lt;br&gt;  if State then begin&lt;br&gt;    aMemo.Color := clWindow;&lt;br&gt;  end&lt;br&gt;  else begin&lt;br&gt;    aMemo.Color := clBtnFace;&lt;br&gt;  end;   &lt;br&gt;end;&lt;p&gt;procedure SwitchGroupBoxState(CheckBox: TCheckBox; ParentObj: TControl );&lt;br&gt;var&lt;br&gt;  I: Integer;&lt;br&gt;  TempObj : TComponent;&lt;br&gt;begin&lt;br&gt;  for I := 0 to CheckBox.Owner.ComponentCount - 1 do begin    // Iterate&lt;br&gt;    TempObj := CheckBox.Owner.Components[I] ;&lt;br&gt;    if (TempObj is TControl) then begin&lt;br&gt;      if (TempObj as TControl).Parent = ParentObj then begin&lt;br&gt;        if ( TempObj is TEdit )  then begin // TEdit State Switch&lt;br&gt;          ChangeEditDisplay( (TempObj as TEdit), CheckBox.Checked );&lt;br&gt;          continue;&lt;br&gt;        end;&lt;br&gt;        if ( TempObj is TButton ) then begin&lt;br&gt;          ChangeButtonDisplay( (TempObj as TButton), CheckBox.Checked );&lt;br&gt;        end;&lt;br&gt;        if ( TempObj is TCheckBox ) then begin&lt;br&gt;          ChangeCheckBoxDisplay( (TempObj as TCheckBox), CheckBox.Checked );&lt;br&gt;          continue;&lt;br&gt;        end;&lt;br&gt;        if ( TempObj is TRadioButton ) then begin&lt;br&gt;          ChangeRadioButtonDisplay( (TempObj as TRadioButton), &lt;br&gt;CheckBox.Checked);&lt;br&gt;          continue;&lt;br&gt;        end;&lt;br&gt;        if ( TempObj is TProgressBar ) then begin&lt;br&gt;          ChangeProgressBarDisplay( (TempObj as TProgressBar), &lt;br&gt;CheckBox.Checked);&lt;br&gt;          continue;&lt;br&gt;        end;&lt;br&gt;        if ( TempObj is TTrackBar ) then begin&lt;br&gt;          ChangeTrackBarDisplay( (TempObj as TTrackBar), CheckBox.Checked);&lt;br&gt;          continue;&lt;br&gt;        end;&lt;br&gt;        if ( TempObj is TListBox ) then begin&lt;br&gt;          ChangeListBoxDisplay( (TempObj as TListBox), CheckBox.Checked);&lt;br&gt;          continue;&lt;br&gt;        end;&lt;br&gt;        if ( TempObj is TComboBox ) then begin&lt;br&gt;          ChangeComboBoxDisplay( (TempObj as TComboBox), CheckBox.Checked);&lt;br&gt;          continue;&lt;br&gt;        end;&lt;br&gt;        if ( TempObj is TMemo ) then begin&lt;br&gt;          ChangeMemoDisplay( (TempObj as TMemo), CheckBox.Checked);&lt;br&gt;          continue;&lt;br&gt;        end;&lt;br&gt;      end;&lt;br&gt;    end;&lt;br&gt;  end;    // for&lt;br&gt;  ParentObj.Enabled := CheckBox.Checked ;&lt;br&gt;end;&lt;p&gt;end.&lt;/div&gt;&lt;p&gt;其调用方法是：&lt;div class="sourcecode"&gt;&lt;br&gt;procedure TForm1.CheckBox1Click(Sender: TObject);&lt;br&gt;begin&lt;br&gt;  SwitchGroupBoxState( ( Sender as TCheckBox ), GroupBox1 );&lt;br&gt;end;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-873221932120434757?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/873221932120434757/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=873221932120434757' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/873221932120434757'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/873221932120434757'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/02/delphiui.html' title='Delphi中的UI组件控制'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-6434302866078348912</id><published>2007-02-02T04:59:00.000-08:00</published><updated>2007-02-02T19:27:20.418-08:00</updated><title type='text'>为何不去作文章？</title><content type='html'>    要写论文了。但我的指尖总在写就的论文大纲晃动。为什么呢？因为我想要一个合乎性情的写作方案。何也？就是可以将科学论文、数学公式、程序代码、工作小 记、思想片段等一系列的元素组织在一个简单的系统中，并能快速地进行打印、电子邮件与博客发布。这样我就可以放开自己的思绪，按照"非线性"的方法进行论 文编写与思想记录了。&lt;br&gt;     首先我排除了 &lt;i&gt;Word&lt;/i&gt; ，虽然其是许多人管理发布文档的"标准手段"，我却不欣赏。&lt;i&gt;Word&lt;/i&gt; 在编辑数学公式与版式设计上是如此的繁琐，而且由于&lt;i&gt; DOC&lt;/i&gt; 文件是二进制文件，其不能用&lt;i&gt; CVS&lt;/i&gt; 来进行版本管理与文本比对，实在不适合进行多个文档的长期的交叉式的编辑。这时 &lt;i&gt;Latex&lt;/i&gt; 进入我的学习视线。&lt;i&gt; Latex&lt;/i&gt; 是采用标识语法符号来进行排版，其类似于程序编写，很适合我；而且其是文本编辑，可以进行 &lt;i&gt;CVS&lt;/i&gt; 版本管理。优点多多，而且在不断地使用中会有更深刻的认知与更高明的技巧，实在是"可玩"的文档排版方案。所以我对 &lt;i&gt;Latex &lt;/i&gt;进行 了近2个月的系统学习，有些"玩物丧志"了。&lt;br&gt;     但这至多解决了文档排版的问题，如何记录自己思想的点滴，并能进行方便地汇总呢？我尝试了几种方案：一是用&lt;i&gt; DiaryOne &lt;/i&gt;电 子笔记本进行记录。&lt;i&gt; DiaryOne&lt;/i&gt; 笔记本很方便，而且可以添加附件与录音。但其在信息组织上很是简陋，只能按目录进行存放，不适合多线交叉管理。然后我又用了&lt;i&gt; Wiki &lt;/i&gt;。 &lt;i&gt;Wiki&lt;/i&gt; 是一种非常利于进行非线性编辑的工具，其可以将所写文档以链接的方式进行交叉管理；由于我多是用来记录文本，所以在尝试了一些需要安装或需要&lt;i&gt; PHP &lt;/i&gt;支持的&lt;i&gt; Wiki &lt;/i&gt;程序后，最后确定使用&lt;i&gt; TiddlyWiki &lt;/i&gt;——这个单文件的&lt;i&gt; Wiki &lt;/i&gt;作为记录之用。很神奇的一个小软件，将 &lt;i&gt;JavaScript&lt;/i&gt; 显示技巧应用得很出色。我建议每个学习使用 &lt;i&gt;Wiki&lt;/i&gt; 的人最好从 &lt;i&gt;TiddlyWiki&lt;/i&gt; 开始。要使用好这个软件，应安装 &lt;i&gt;Firefox&lt;/i&gt;，否则无法实现其强大的信息管理功 能。但可惜的是 &lt;i&gt;TiddlyWiki&lt;/i&gt; 不支持附件，这给我带来太多的困扰。思量很久，终放弃。随后我将目光转动近年来如火如荼的 &lt;i&gt;Blog&lt;/i&gt; 上。虽然我有许多的 &lt;i&gt;Blog&lt;/i&gt; ，但使用率并不高，主要原因是其需要太多的 &lt;i&gt;Web&lt;/i&gt; 编辑时间，而只有 &lt;i&gt;MSNSpace&lt;/i&gt; 与 &lt;i&gt;Blogger&lt;/i&gt; 支持我最喜爱的电邮发布。 &lt;i&gt;MSNSpace&lt;/i&gt; 虽然是个很好的 &lt;i&gt;Blog&lt;/i&gt; 系统，但其最大的问题是访问速度。可能&lt;i&gt; MS &lt;/i&gt;将其与操作系统捆绑太多，或是国内访问较慢，每次我登录它都要等待很长时间。而 &lt;i&gt;Blogger&lt;/i&gt; 的国内访问以前一直不稳定，我申请后就未认真打理。但这次我重新评估 &lt;i&gt;Blogger &lt;/i&gt;,不仅它的 &lt;i&gt;beta&lt;/i&gt; 字样消失了，而且其在国内访问速度很快，与 &lt;i&gt;Google&lt;/i&gt; 的 &lt;i&gt;Gmail&lt;/i&gt;、&lt;i&gt;Doc&lt;/i&gt; 等结合的更好。在新版本中 &lt;i&gt;Blogger&lt;/i&gt; 提供了全方位的模板代码编辑与电邮输入输出功能，这强烈地吸引了我。我手写了模板&lt;i&gt; CSS &lt;/i&gt;代码，并且定义了电邮发布与电邮输出，从而可以同步更新 &lt;i&gt;Blogger&lt;/i&gt; 和 &lt;i&gt;MSNSpace&lt;/i&gt; ，这是太好了。经过上面的一番探索，我决定采用 &lt;i&gt;Email&lt;/i&gt; 的方式来发布 &lt;i&gt;Blog &lt;/i&gt;。利用 &lt;i&gt;Blog&lt;/i&gt; 的 TAG 功能来组织自己的思想片段。&lt;br&gt;     在 &lt;i&gt;Windows&lt;/i&gt; 平台上最常用的电邮工具是 &lt;i&gt;OutLook&lt;/i&gt; 。虽然它很好用，但我仍不满意，因为它不支持 &lt;i&gt;HTML&lt;/i&gt; 代码输入，就是不能在编写 &lt;i&gt;HTML&lt;/i&gt; 邮件正文中直接插入 &lt;i&gt;HTML&lt;/i&gt; 代码。于是我想到 &lt;i&gt;Foxmail&lt;/i&gt;，它曾是我经常使用的电邮工具。我下载了最新版的 &lt;i&gt;Foxmail 6&lt;/i&gt;，可惜它也不支 持 &lt;i&gt;HTML&lt;/i&gt; 代码直接插入功能。最后我发现 &lt;i&gt;Firefox&lt;/i&gt; 阵营的 &lt;i&gt;Thunderbird&lt;/i&gt; ，它虽然没有 &lt;i&gt;Firefox &lt;/i&gt;那样有名，但其品质却很出众。不仅有强大的自定义的 &lt;i&gt;Filter&lt;/i&gt; 功能，而且支持 &lt;i&gt;HTML&lt;/i&gt; 代码插入。更出色的是它也是基于 &lt;i&gt;Add-On&lt;/i&gt; 的，可以从网上下载许多有用的小插件，自己也可以编写一个。我下载了一个 &lt;i&gt;pasteCode&lt;/i&gt; 的插件，其可以在粘贴 &lt;i&gt;C、C+ +、Java&lt;/i&gt; 代码时自动为关键字等加上高亮颜色，很有趣。&lt;br&gt;    "磨刀不误砍柴工"，通过前面的探索，现在我对自己的这一系列编辑方案进行总结，就是 &lt;i&gt;Thunderbird + Gmail + Blogger + Latex(CTex) + Editplus 。&lt;/i&gt;其间的交流与联动，我写了一些 &lt;i&gt;Python&lt;/i&gt; 小程序来完成。对于流程图，我试用了不少工具，但目前看来还是 &lt;i&gt;MS&lt;/i&gt; 的 &lt;i&gt;Visio&lt;/i&gt; 最好，只是一想到它竟然不能发布为 &lt;i&gt;EPS&lt;/i&gt; 格式就很切齿。&lt;br&gt; &lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-6434302866078348912?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/6434302866078348912/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=6434302866078348912' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/6434302866078348912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/6434302866078348912'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/02/blog-post.html' title='为何不去作文章？'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-2979593435069192863</id><published>2007-02-02T00:15:00.001-08:00</published><updated>2007-02-02T00:15:16.524-08:00</updated><title type='text'>BCB中的计时与显示</title><content type='html'>&lt;FONT face=宋体&gt;  &lt;DIV&gt;&lt;FONT   size=4&gt;在程序开发中常要实现计时与计时显示。在BCB中一般方式是利用Timer控件来进行计时。样例代码如下：&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face="Lucida Console"&gt;void __fastcall TForm1::Timer1Timer(TObject   *Sender) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // timer interval callback   function&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;iTimerCount ++ ;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (   iTimerCount &amp;gt; 1000 ) { Timer1-&amp;gt;Enabled = false; }&lt;BR&gt;}&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT size=4&gt;但Timer控件有两个缺陷：&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT   size=4&gt;(1)其不是一个精确的计时器，其只能保证秒级的精确性，即只有设置其Interval属性为1000的倍数是才是比较准确的。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT size=4&gt;(2)其运行级别很低，这样在多线程程序中会造成高级别线程堵塞了Timer线程从而造成计时不准确。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT   size=4&gt;认识到以上两点，可将Timer控件只作为时间显示来用，而不作为计时，在每次显示时获取当前时间，并用MilliSecondsBetween函数与开始计时时间进行比较，得到毫秒级的差值，然后进行格式化显示。&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;样例代码如下：&lt;/DIV&gt;  &lt;DIV&gt;(1)开始计时代码：&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face="Lucida Console"&gt;&amp;nbsp; iTimerCount =   0;&lt;BR&gt;&amp;nbsp;&amp;nbsp;startTime = Time();//&amp;lt; startTime 是一个 TDataTime   变量&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;(2)计时代码：&lt;/DIV&gt;  &lt;DIV&gt;&lt;FONT face="Lucida Console"&gt;&amp;nbsp; void __fastcall   TFrmMain::Timer1Timer(TObject *Sender) {&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // timer interval   callback function&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; double msValue = MilliSecondsBetween(   Time(),startTime );&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Label5-&amp;gt;Caption = AnsiString(   msValue / 1000.0 );&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; iTimerCount ++ ;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;   if ( iTimerCount &amp;gt; 1000 ) { Timer1-&amp;gt;Enabled = false; }&lt;BR&gt;}&lt;/FONT&gt;&lt;/DIV&gt;  &lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/FONT&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-2979593435069192863?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/2979593435069192863/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=2979593435069192863' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2979593435069192863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2979593435069192863'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/02/bcb.html' title='BCB中的计时与显示'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-3365090733342975664</id><published>2007-01-30T05:45:00.001-08:00</published><updated>2007-01-30T05:45:56.682-08:00</updated><title type='text'>“博客园”技术博客转移成功！</title><content type='html'>今天我将原来在"博客园"中的技术博客进行整理，转移到Google的Blogger中，以便更方便地用Gmail来发布与管理博客。 &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-3365090733342975664?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/3365090733342975664/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=3365090733342975664' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/3365090733342975664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/3365090733342975664'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/01/blog-post_9252.html' title='“博客园”技术博客转移成功！'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-741356003203697473</id><published>2007-01-30T05:41:00.000-08:00</published><updated>2007-01-30T05:42:12.556-08:00</updated><title type='text'>牵模式的手——《模式的乐趣》阅读笔记</title><content type='html'>很显然，从一开始我并未想到这样薄薄的一本书竟然配我走过两个多月的时光，而且让我时时激起购买它的欲望（现在我还是遵循"书非借不能读"的古训）。想起那天和Decland谈起《DesignPattern》，他感慨于该书Scholar气息太浓，Sample太少。现在我也有同感了。的确《DesignPattern》太过于严谨，对于OO的新手来说缺少亲近它的欲望。而这本小册子，则很能成为阅读《DesignPattern》的辅助读物，像筵席外的一份零食。 &lt;br&gt;"简而言之，模式也是世界上出现的一种事物，其规则告诉我们如何创建这种事物，以及何时必须创建它。它既是过程，也是事物；既是对存在的事物的描述，也是对创建这种事物的过程的描述。——Alexander[1979]"&lt;br&gt;"对于软件来说，算法、数据结构是基本构件，模式也是，甚至更像是定义算法和数据结构的模具"&lt;br&gt;"模式的一个主要目标就是，以一种别人容易接受的方式，捕捉那些重复出现的问题的解决方案（以及可以使用这些解决方案的约束和场景）"，从语义表达角度，模式所能传达的信息更多，更精密。这也是其难于掌握的原因。像情侣间一个细微的眼神，如果没有日日夜夜的厮守，是无法达到的。 &lt;br&gt;"每一种模式都应该是对其他模式的补充。每增加一种模式都应该让系统更加强壮。这样的系统可以不断发展，且不会增加维护的压力，也不会降低整个系统的性能——系统增大后通常会导致这种结果。我们希望创建一个各部分互为补充的框架，希望每一个新增的部分都能让其他部分更加强壮"&lt;br&gt;"模式不会存在于真空中。实际上，模式不仅依赖于其自身，而且依赖于整个体系结构中所有其他模式。每种模式本身都由相互依赖的其他成分组成"。模式更像软件的社会化属性，在良好模式设计的系统中，众多简单对象合同协作，完成复杂任务。可见，模式可以由人的管理模式进行映射。善于了解模式的人一定也是善于发现社会协同机制的人。 &lt;br&gt;"没有经验的开发人员常常不理解设计与实现之间的区别，所以这些习惯语法就成了他们表达设计思想的唯一途径""如果你唯一的工具是锤子，你就会把所有的东西都当作钉子"&lt;br&gt;"模式是不依赖于编程语言的（与之相反的习惯语法是编程语言特有的）。从某种程度上讲，模式构成了一种语言，它比编程语言更进了一步，使开发人员可以彼此交流设计思想。……模式本身超越了任何具体的语言，这绝不是要忽视选择编程语言的重要性，只是希望你认识到，编程语言不应该限制我们提供有价值的技术的能力" &lt;br&gt;"当一个人从事设计活动时，他的行为完全受当时他心中已有模式语言的支配。当然，随着经验的增长，每个人心目中的模式语言都会随着时间而变化。但是，在必须做出设计决定的那个特定时刻，他要完全依赖在此之前他已经积累的模式语言。不论他的设计多么小或多么复杂，他的设计活动将完全受他心目中已有的模式以及他将这些模式组合新的设计的能力的支配——Alexander[1979]" &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-741356003203697473?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/741356003203697473/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=741356003203697473' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/741356003203697473'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/741356003203697473'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/01/blog-post_9977.html' title='牵模式的手——《模式的乐趣》阅读笔记'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-1411169701906907560</id><published>2007-01-30T05:39:00.000-08:00</published><updated>2007-01-30T05:40:12.970-08:00</updated><title type='text'>有知者无畏！-读《与熊共舞》</title><content type='html'>当我合上这本书的黑色封面的时候，不由想起《老人与海》中的那句名言：人不是生来就被打败的。的确，在这本书中，洋溢着一种人类理性无比的自信。不是吗？&lt;br&gt;风险管理，在许多人看来，是如此虚无缥缈的东西，人们似乎无法完整地定义风险，也无法确切地预知未来。在风险的面前，除了迷惘与祈求，大多数时候总会如鸵鸟一样将头埋在沙中，欺骗自己没有看到风险。但作者却没有这样，他在最艰涩的地方开凿，在最朦胧的地方勾绘蓝图。虽然我还不能完全理解那些曲线间的确切含义，但我明了在这些曲线的后面是一颗充满理性与必胜信念的心。 &lt;br&gt;其实不仅在软件界有风险管理，在其他领域，甚至于在生活的方方面面都应存在如是的&amp;quot;管理&amp;quot;。在问题面前不回避，在挫折面前不动摇，用理性的力量与经验的承继去解决它们。这是一种伟大的性格，一种光辉的精神。&lt;br&gt;[写此篇以自励] &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-1411169701906907560?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/1411169701906907560/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=1411169701906907560' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/1411169701906907560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/1411169701906907560'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/01/blog-post_5794.html' title='有知者无畏！-读《与熊共舞》'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-6958026843109841239</id><published>2007-01-30T05:38:00.001-08:00</published><updated>2007-01-30T05:49:01.564-08:00</updated><title type='text'>在脚边的程序段</title><content type='html'>这几日总是为Floater菜单的不运行而烦恼，因为我找不到产生错误的原因。我总是认为是脚本有误，但今天参考去年我编写的精品课程网站脚本，发现其没有什么问题。静下心来又细查了一遍，突然发现去年的网页头部没有&lt;div class="sourcecode"&gt;&amp;lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"&amp;gt;&lt;br /&gt;&amp;lt;html xmlns="http://www.w3.org/1999/xhtml"&amp;gt;&lt;/div&gt;&lt;br /&gt;突然我知道问题症结了，原来是Dreamweaver8自动设置的Web头比较严格，其阻止了浏览器解释一些特殊Javascript代码。解决很方便，只要将文件头替换掉就可以了。&lt;br /&gt;现在知道要解决问题，往往不要仅关注问题本身或附近，要有抬头四顾的能力。只有这样才会在不经意间找到真正的原因。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-6958026843109841239?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/6958026843109841239/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=6958026843109841239' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/6958026843109841239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/6958026843109841239'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/01/blog-post_30.html' title='在脚边的程序段'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-3801667054140803012</id><published>2007-01-30T05:37:00.001-08:00</published><updated>2007-01-30T05:49:56.274-08:00</updated><title type='text'>JavaScript CodeSnippets——获取Cookie</title><content type='html'>&lt;div class="sourcecode"&gt;function getCookie(Name) {&lt;br&gt;　　var search = Name + &amp;quot;=&amp;quot;&lt;br&gt;　　var returnvalue = &amp;quot;&amp;quot;;&lt;br&gt;　　if (document.cookie.length &amp;gt; 0) {&lt;br&gt;　　offset = document.cookie.indexOf(search)&lt;br&gt;　　if (offset != -1) {&lt;br&gt;　　offset +=  search.length&lt;br&gt;　　end = document.cookie.indexOf(&amp;quot;;&amp;quot;, offset);&lt;br&gt;　　if (end == -1)&lt;br&gt;　　end = document.cookie.length;&lt;br&gt;　　returnvalue=unescape(document.cookie.substring(offset, end))&lt;br&gt;}&lt;/div&gt;&lt;br&gt;用法：&lt;div class="sourcecode"&gt;if( getCookie(&amp;quot;myCookie&amp;quot;) ){ &lt;br&gt;//Todo something&lt;br&gt;} &lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-3801667054140803012?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/3801667054140803012/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=3801667054140803012' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/3801667054140803012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/3801667054140803012'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/01/javascript-codesnippetscookie.html' title='JavaScript CodeSnippets——获取Cookie'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-8759540745428283595</id><published>2007-01-30T05:36:00.001-08:00</published><updated>2007-01-30T05:52:03.875-08:00</updated><title type='text'>BCB中执行SQLServer远程存储过程</title><content type='html'>BCB中执行SQLServer的远程存储过程，应采用TADOConnection与TADOStoreProc组件组合使用。其中TADOConnection组件作为连接数据库，而TADOStoreProc组件则作为运行存储过程。&lt;br&gt;1.连接数据库&lt;div class="sourcecode"&gt;void __fastcall TDataModule::OpenADOConnection()&lt;br&gt;{&lt;br&gt;ADOConnection1-&amp;gt;ConnectionString = &amp;quot;...&amp;quot;; &lt;br&gt;ADOConnection1-&amp;gt;LoginPrompt = false;&lt;br&gt;&lt;br&gt;try&lt;br&gt;{&lt;br&gt;ADOConnection1-&amp;gt;Connected = true;&lt;br&gt;}catch(...)&lt;br&gt;{&lt;br&gt;//TODO: Show Database Open Error Message&lt;br&gt;return;&lt;br&gt;}&lt;br&gt;return;&lt;br&gt;}&lt;/div&gt;&lt;br&gt;2. 设置存储过程&lt;br&gt;(1)在BCB中最好采用设计器来设置TADOStoreProc组件的存储过程名，这样可以自动将存储过程的参数添加。记得在Build前将TADOConnection的Connected设为false就可以了。 &lt;br&gt;(2)在运行期采用Parameters属性来设置存储过程参数&lt;div class="sourcecode"&gt;StoredProc1-&amp;gt;Close();&lt;br&gt;StoredProc1-&amp;gt;ParamByName(&amp;quot;@ParaID&amp;quot;)-&amp;gt;AsString = edtID-&amp;gt;Text;&lt;br&gt;//其它参数&lt;/div&gt;&lt;br&gt;(3)采用ExecProc方法或Open方式运行存储过程&lt;div class="sourcecode"&gt;if(!StoreProc1-&amp;gt;Prepared) &lt;br&gt;StoreProc1-&amp;gt;Prepare();&lt;br&gt;StoreProc1-&amp;gt;ExecProc();&lt;/div&gt;&lt;br&gt;(4)最后可以通过参数或者TDataset来获取结果&lt;div class="sourcecode"&gt;Label1-&amp;gt;Caption = StoreProc1-&amp;gt;ParamByName(&amp;quot;@ReturnValue&amp;quot;)-&amp;gt;AsString; &lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-8759540745428283595?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/8759540745428283595/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=8759540745428283595' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/8759540745428283595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/8759540745428283595'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/01/bcbsqlserver.html' title='BCB中执行SQLServer远程存储过程'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-3476529746455478537</id><published>2007-01-30T05:33:00.001-08:00</published><updated>2007-01-30T05:47:08.609-08:00</updated><title type='text'>SQL Server安装文件挂起错误解决办法【转帖】</title><content type='html'>&lt;span style="font-weight: bold;"&gt;现象：&lt;/span&gt;&lt;br /&gt;安装SQL Server的时候，系统提示。"以前的某个程序安装已在安装计算机上创建挂起的文件操作。运行安装程序之前必须重新启动计算机。" ，但是重启依旧不能解决。&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;解决：&lt;/span&gt;&lt;br /&gt;打开注册表编辑器，在&lt;div class="sourcecode"&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ Control\ Session Manager&lt;/div&gt;中找到&lt;span style="color: rgb(255, 0, 0);"&gt;PendingFileRenameOperations&lt;/span&gt;项目，并删除它。这样就可以清除安装暂挂项目。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-3476529746455478537?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/3476529746455478537/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=3476529746455478537' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/3476529746455478537'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/3476529746455478537'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/01/sql-server.html' title='SQL Server安装文件挂起错误解决办法【转帖】'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-5256051135708728035</id><published>2007-01-30T05:29:00.001-08:00</published><updated>2007-01-30T05:30:50.862-08:00</updated><title type='text'>AccessSQL语句中的时间处理</title><content type='html'>在Access中如果要比较日期，应该用DateValue函数来进行格式归一化。比如：&lt;div class="sourcecode"&gt;delete from sf_guestonline where lastactivity &amp;lt; DateValue(&amp;#39;2006-9-24 下午 01:46:16&amp;#39;)&lt;/div&gt;在雪人论坛(access)版中存在用#来标示时间的用法，由于Access驱动的问题，在一些机器上（比如我的）就不能用，所以应该采用DateValue函数的方式。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-5256051135708728035?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/5256051135708728035/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=5256051135708728035' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/5256051135708728035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/5256051135708728035'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/01/accesssql.html' title='AccessSQL语句中的时间处理'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-2819696516534568185</id><published>2007-01-30T05:27:00.001-08:00</published><updated>2007-01-30T05:27:34.470-08:00</updated><title type='text'>Linux环境下可视化开发[翻译]</title><content type='html'>&lt;p&gt;原文：Visual Development on Linux&lt;br&gt;&lt;a href="http://openubuntu.blogspot.com/2006/11/visual-development-of-linux.html"&gt;http://openubuntu.blogspot.com/2006/11/visual-development-of-linux.html&lt;/a&gt;&lt;br&gt;对于许多比较依赖鼠标的人来说，印象中Linux下开发不是件容易事。如果你乐于命令行则另当别论。现在你有了选择。已经有一大堆的Linux可视化开发环境等着你用呐！下面我来介绍几款....（此处省略原文N个词，老外就是啰嗦呀） &lt;/p&gt; &lt;p&gt;1.NetBeans&lt;br&gt;一个JAVA开发环境！作为一个玩JAVA的，你不一会儿就会爱上她！wo！拖拖拉拉就完成一个程序啦！&lt;br&gt;她支持：&lt;br&gt;一般的Java程序或库开发&lt;br&gt;Web程序开发&lt;br&gt;EJB开发&lt;br&gt;WebService、WebService客户端&lt;br&gt;J2ME MIDP程序&lt;br&gt;JAVA图形化用户界面开发&lt;br&gt;NetBeans 插件&lt;/p&gt; &lt;p&gt;2.QT/KDevelip Desinger&lt;br&gt;QT是KDE上最好的开发环境，其也可用于Gnome。只要托拖拽拽就可以完成一个数据驱动的C++程序咯{译者注:KDevelop更好用一些，我在Rethat Enterprise 环境的C++开发都用KDevelop}&lt;/p&gt; &lt;p&gt;3.Gambas&lt;br&gt;一个VisualBasic的克隆。对于要转入Linux的VB程序员是非常有用的哟！美观简捷的界面，可通过Gambas方便地连接主流数据库（MySQL，PostgreSQL等）&lt;/p&gt; &lt;p&gt;4.NVU&lt;br&gt;一个取代Macromedia产品的网页编辑器。WYSIWYG，且可直接FTP到你的网站&lt;/p&gt; &lt;p&gt;5.Eric&lt;br&gt;一个简便高效的PythonIDE哟！&lt;/p&gt; &lt;p&gt;6.Eclipse&lt;br&gt;最流行的开源开发环境{译者注：这个就不用再说啦，网上连篇累牍}&lt;/p&gt; &lt;p&gt;7.JDeveloper&lt;br&gt;一个免费非开源的Java编辑环境，可以像VB/Delphi一样开发Java程序。其来源自Oracle，JDeveloper使用Sun的JDK。&lt;/p&gt; &lt;p&gt;8.Planner&lt;br&gt;一个类似Project的项目管理软件，可以轻松绘制甘特图。&lt;/p&gt; &lt;p&gt;9.RealBasic&lt;br&gt;一个商业的IDE。可以像VB一样的开发。&lt;/p&gt; &lt;p&gt;10.IntellijIDEA 6.0&lt;br&gt;一个开发Java的商业环境&lt;/p&gt; &lt;p&gt;{译者注:我在Linux下一般就使用KDevelop和Eclipse就可以了，当然KEdit、Vim和Emacs也是常用的编辑器，但不能可视化开发。毕竟Linux不是Windows，操控性比可视化更重要！不是吗？}&lt;/p&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-2819696516534568185?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/2819696516534568185/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=2819696516534568185' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2819696516534568185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2819696516534568185'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/01/linux.html' title='Linux环境下可视化开发[翻译]'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-1500997848794509024</id><published>2007-01-30T05:23:00.001-08:00</published><updated>2007-01-30T05:23:48.471-08:00</updated><title type='text'>《Win32多线程程序设计》笔录</title><content type='html'>读后感：&lt;br&gt;&lt;br&gt;这本书是一本Win32下多线程的抗鼎之作，其涵盖了多线程编程的方方面面。我阅读的原因在于期望能了解原汁原味的Win32下多线程编程。而我以前只是使用BCB的TThread等对象进行Win32多线程快速开发。阅读后的确对于Win32下的许多概念清楚明了不少，但也产生许多新的疑问。但我知道，这些疑问许多并不能在这本书中获得求解。在.Net下的Windows多线程开发已经有了新的发展，需要我继续努力学习。&lt;br&gt;我以前对侯捷老师的译注总有些不适应，总感觉侯老师严谨有余，亲和力不足。但这本书中，侯老师的精彩译注，以及对于原著错误的指正，使我的阅读受益匪浅。我才真正感受到严谨的魅力。感谢侯老师。 &lt;br&gt;下面是我的笔录，其中{}为我的随感。&lt;br&gt;&lt;br&gt;笔录：&lt;br&gt;&lt;br&gt;P4&lt;br&gt;多线程，使程序得以将其工作分开，独立运作，不互相影响&lt;br&gt;&lt;br&gt;P12&lt;br&gt;线程廉价：线程启动快，退出快，对系统资源冲击小，且线程彼此分享了大部分核心对象的拥有权。&lt;br&gt;&lt;br&gt;P26&lt;br&gt;WinBASE.H --&amp;gt;CreateThread 产生一个线程&lt;br&gt;&lt;br&gt;P33&lt;br&gt;1.多线程程序无法预期--&amp;gt;掌握多线程程序的预期是一项很高级的分析编程能力 &lt;br&gt;2.执行次序无法保证&lt;br&gt;3.线程对于小的改变有高度的敏感--&amp;gt;调试器会引入不确定&lt;br&gt;4.线程并不是立刻启动&lt;br&gt;5.线程上的资源泄露更常见且更致命的&lt;br&gt;CloseHandle释放核心对象；GetExitCodeThread 线程结束代码；&lt;br&gt;ExitThread 强制结束线程&lt;br&gt;&lt;br&gt;P47&lt;br&gt;主线程:Primary Thread&lt;br&gt;1.负责 GUI(Graphic User Interface) &lt;br&gt;2.该线程结束会使其它线程强迫结束、无从清理；&lt;br&gt;&lt;br&gt;P48&lt;br&gt;经验显示，线程的各种相关函数是错误高危险群，而适当的错误处理可以阻止挫败并产生一个比较可信赖的程序；&lt;br&gt;&lt;br&gt;P51&lt;br&gt;Microsoft Threading Model --&amp;gt; GUI Thread、Worker Thread&lt;br&gt;&lt;br&gt;P53&lt;br&gt;设计目标：简单和安全、更甚于复杂和速度；&lt;br&gt;在线程之间以最低表面积来设计程序；&lt;br&gt; [最低表面积：线程共享的数据结构]&lt;br&gt;&lt;br&gt;P59&lt;br&gt;成功秘诀：&lt;br&gt;1.各线程的数据要分离开来，避免使用全局变量；&lt;br&gt;2.不要在线程之间共享GDI对象；&lt;br&gt;3.确定你知道你的线程状态，不要径自结束程序而不等待它们的结束；&lt;br&gt;4.让主线程处理用户界面(GUI)&lt;br&gt;&lt;br&gt;P62&lt;br&gt;绝不要在Win32中使用BusyLoop；&lt;br&gt;[应该用WaitForMultipleObjects\MsgWaitForMultipleObjects] &lt;br&gt;[控制自由触发Event为非自由触发Event，这样可以来避免系统的死锁]&lt;br&gt;&lt;br&gt;P75&lt;br&gt;Unix的Signal--&amp;gt;立即的消息信号，有冲击&lt;br&gt;Windows Signaled Object --&amp;gt;内部状态的改变，无冲击&lt;br&gt;&lt;br&gt;P94&lt;br&gt;在Windows系统中：PostMessage() 异步 并行；SendMessage() 同步 串行&lt;br&gt;&lt;br&gt;P95&lt;br&gt;最容易的同步机制：Critical Sections &lt;br&gt;InitializeCritical Section \ DeleteCriticalSection \ EnterCriticalSection \ LeaveCriticalSection&lt;br&gt;[EnterCriticalSection 可嵌套]&lt;br&gt;[加上CriticalSection保护后可以实现数据操作的&amp;quot;原子化&amp;quot;]&lt;br&gt;&lt;br&gt;P100&lt;br&gt;不要长时间锁住一份资源；而CriticalSection是不知道线程的生死的--&amp;gt;Mutex(互斥器)--&amp;gt;WaitForMultipleObjects &lt;br&gt;&lt;br&gt;P108&lt;br&gt;Mutex--&amp;gt;核心对象，牺牲存储保证运行稳定；可跨线程\跨进程使用；Mutex有可能被&amp;quot;不负责&amp;quot;的线程&amp;quot;遗弃&amp;quot;。&lt;br&gt;[Mutex是Windows所特有，在其它系统中则使用Semaphore{旗语}&lt;br&gt;&lt;br&gt;P120&lt;br&gt;EventObject(事件)--&amp;gt;最具弹性的通步机制；Event的状态完全在你的控制之下；可以精确地告诉一个Event对象做什么事，以及什么时候去作；其应用于多种类型的高级IO操作中。 &lt;br&gt;CreateEvent\SetEvent\ResetEvent\PulseEvent&lt;br&gt;&lt;br&gt;P128&lt;br&gt;同步机制摘要*&lt;br&gt;&lt;br&gt;P132&lt;br&gt;TerminateThread --&amp;gt;放弃一个线程--&amp;gt;最糟糕的想法，永远不要这么用。&lt;br&gt;&lt;br&gt;P135&lt;br&gt;Windows中终结Thread的标准操作方式：建立一个Event对象来自检Thread消亡，即周期性地检查一个Event对象，以决定要不要结束自己。 &lt;br&gt;&lt;br&gt;P140&lt;br&gt;优先级：线程的社会阶层&lt;br&gt;&lt;br&gt;P157&lt;br&gt;Overlapped IO是一个高层技术：Windows给于我们具有Thread能力的IO函数&lt;br&gt;&lt;br&gt;P198&lt;br&gt;要加上Volatile量来表明其在多线程下不能被编译器错误优化。&lt;br&gt;{对单线程有效优化对于多线程常带来BUG}&lt;br&gt;&lt;br&gt;P200&lt;br&gt;{引入数据库的Transaction(事务)来解决多线程的数据一致性问题}&lt;br&gt;{侯捷先生的译著中这样的拓展译注很有用，且尊重出处，当效之} &lt;br&gt;&lt;br&gt;P204&lt;br&gt;{在不考虑效率下，将锁定范围扩大会解决很多棘手问题。如将一个树型数据集根点锁定以避免其它线程的非法操作}--&amp;gt;排他锁定&lt;br&gt;&lt;br&gt;P215&lt;br&gt;{作者给出一个Read/Write锁定方案，没看懂}&lt;br&gt;Fine Granularity{逐个锁}:很容易产生死锁、效率瓶颈的情况尚可令人放心、&amp;quot;锁定&amp;quot;所花费的时间可能招致高度浪费。 Coarse Granularity{全部锁}：使用简单、死锁风险极低、容易产生效率瓶颈。两者都是十分极端的。 &lt;br&gt;&lt;br&gt;P260&lt;br&gt;一个非静态的类成员函数都有一个隐藏起来的参数被推入堆栈中，当编译器需要处理类的成员变量时，它需要这个隐藏参数的帮助，这就是&amp;quot;this&amp;quot;参数（一个指针）&lt;br&gt;&lt;br&gt;P261&lt;br&gt;为了以一个成员函数启动一个线程，要么你就使用静态成员函数，要么你就得使用C函数（而非C++成员函数）&lt;br&gt;&lt;br&gt;P274&lt;br&gt;异常情况处理机制的好处在于，它在标准函数调用和返回（Call/Return）模式之外运作。 &lt;br&gt;&lt;br&gt;P277&lt;br&gt;如果要在MFC程序中产生一个线程，而该线程将调用MFC函数或使用MFC的任何数据，那么你必须以AfxBeginThread或CWinThread::CreateThread来产生这些代码&lt;br&gt;&lt;br&gt;P278&lt;br&gt;面对Windows程序设计中的线程，有下列三种层次：&lt;br&gt;1.Win32API CreateThread() EndThread()&lt;br&gt;2.C Runtime Library _beginthreadex() _endthreadex() &lt;br&gt;3.MFC AfxBeginThread() {MFC方式封装了上述两种方法}&lt;br&gt;&lt;br&gt;P286&lt;br&gt;{MFC给我们作了许多封装，在该页给出一个NakedVersion来说明封装细节}&lt;br&gt;&lt;br&gt;P294&lt;br&gt;你不能放一个指针（指向一个CWnd）到结构中。而该结构被一个Worker线程使用。你也不能把一个指向CDialog或CView的指针交给另一个线程&lt;br&gt;{这是享受MFC方便同时的代价}&lt;br&gt;&lt;br&gt;P300 &lt;br&gt;虽然MFC的同步控制类对于基本结构的锁定很有帮助，但它们面对比较复杂的工作时却黯然失色。{这是享受MFC方便同时的代价}&lt;br&gt;&lt;br&gt;P304&lt;br&gt;所有传送给某一个窗口之消息，将由产生该窗口之线程负责处理。{这是一条设计原则，这样可以使UI设计更清晰}&lt;br&gt;&lt;br&gt;P311&lt;br&gt;欲在一个MDI程序中有效率地使用多个线程，我的建议是以一个线程处理所有的用户输入，以及所有用户界面的管理，然后使用一个以上的线程来负责诸如重绘、打印等工作。......你的主线程（负责主框架窗口）总是应该能够有所回应，不会陷入长时间计算的泥沼中。 &lt;br&gt;&lt;br&gt;P318&lt;br&gt;所有这些问题或许都可以绕道解决。但很明显我正在强迫系统做一些它并没有被设计那么做的事情。我越是想办法挖东墙补西墙，整个机制就越是变得脆而虚弱。......这个例子提醒我不适当使用线程所带来的危险。不幸的是，在&amp;quot;适当使用&amp;quot;与&amp;quot;不适当使用&amp;quot;之间，界限模糊。&lt;br&gt;{清楚了解系统内部机制是很重要的。不要用蛮力，要从内部挖掘，攻&amp;quot;心&amp;quot;为上}&lt;br&gt;&lt;br&gt; P321&lt;br&gt;对于一个多线程程序调试，如果没有经过小心的策划，很可能就像抓蝴蝶一样。你可以看到问题，接近它，但是当你几乎已经就要用手抓着它时，它飞走了，然后在另一个地方出现。&lt;br&gt;&lt;br&gt;P325&lt;br&gt;运转记录：程序全身插满printf()；{要注意I/O是很慢的操作，这样就会对程序本身有冲击}&lt;br&gt;&lt;br&gt;P336&lt;br&gt;进程可用来作为&amp;quot;隔板&amp;quot;机制。这有点像船舱被分割为防水壁和许多船壳一样。利用不同的进程所产生出来的边界，可以阻止错误到处蔓延。 &lt;br&gt;&lt;br&gt;P336&lt;br&gt;在同一进程的不同线程之间搬移数据，最简单的一种做法就是利用消息队列。......Windows定义了一个消息，名为 WM_COPYDATA，专门用来在线程之间搬移数据--不管两个线程是否同属一个进程，和其它所有的消息一样，你必须指定一个窗口，也就是一个 HWnd，当作消息的目的地。所以接受此消息的线程必须有一个窗口（译注：也就是它必须是个UI线程）&lt;br&gt;&lt;br&gt;P339&lt;br&gt;进入C++世界，情况又更复杂些了，绝不可以把&amp;quot;指向某个拥有虚函数的对象&amp;quot;的指针当作lpData来传递{这样就很麻烦了，因为在MFC中，由于继承，多数对象都具有virtual的析构函数，如CString。这样就无法直接使用它们作为WM_COPYDATA的传递参数来在进程间传递数据。如此看来WM_COPYDATA局限性很大，是&amp;quot;戴着脚镣跳舞&amp;quot;呀} &lt;br&gt;&lt;br&gt;P344&lt;br&gt;WM_COPYDATA是唯一一个可以在16位程序和32位程序之间搬移数据的方法；但其效率低，不能传递给没有窗体的线程，不支持PostThreadMessage&lt;br&gt;&lt;br&gt;P345&lt;br&gt;Win32的一个基础观念就是，进程之间要有严密的保护。每一个进程认为它拥有整部机器，从一个进程中要看到另一个进程的地址空间的任何一部分，都是不可能的。&lt;br&gt;&lt;br&gt;P346&lt;br&gt;所谓共享内存，是一块在设计时即打算给一个以上的进程在同一时间都看到的内存区域。 &lt;br&gt;&lt;br&gt;P346&lt;br&gt;设定一个共享内存区域（Shared Memory Area）需要两个步骤：&lt;br&gt;(1)产生一个所谓的file-mapping核心对象，并指定共享区域的大小--&amp;gt;CreateFileMapping&lt;br&gt;(2)将共享区域映射到你的进程的地址空间中。--&amp;gt;MapViewofFile/UnmapViewofFile--&amp;gt;OpenFileMapping/CloseHandle&lt;br&gt;&lt;br&gt;P354 &lt;br&gt;任何Collection Class（译注：用于array、list、map之C++类），不论来自MFC或其它地方，都不能够安全地使用于共享内存中。&lt;br&gt;&lt;br&gt;P361&lt;br&gt;使用共享内存不是件容易的事{对于多线程，也是一样} &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-1500997848794509024?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/1500997848794509024/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=1500997848794509024' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/1500997848794509024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/1500997848794509024'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/01/win32.html' title='《Win32多线程程序设计》笔录'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-483439057619675617</id><published>2007-01-30T05:17:00.001-08:00</published><updated>2007-01-30T05:22:42.864-08:00</updated><title type='text'>Delphi开启Windows目录对话框代码</title><content type='html'>今天整理以往的项目代码，发现自己以前在网上找到的一段Delphi开启Windows目录对话框的代码，觉得对许多Delphi初学者很有用，特转贴出来。由于时间过久已经无法知道是从什么地方摘录的，在此特向原作者表示感谢！&lt;br&gt;&lt;br&gt;Windows目录对话框是一个标准的WindowsUI控件，其可以列出一个目录列表，并且可以显示新增按钮。由于Delphi中并没有提供对于该控件的封装，所以新手（包括当年的我）大多使用Win31目录下的DriverList、DirectoryList、FileList和 FileFilterList四个控件进行组合来获取当前目录，这样操作复杂且不美观。有的高手可以直接用WindowsAPI调用Windows目录对话框，但我确直到找到该段代码前还是使用最原始的方法{叹自己的懒惰呀！} &lt;br&gt;&lt;br&gt;该段代码分为两个部分：(1)控件代码 (2)调用代码&lt;br&gt;(1)控件代码：由于该控件没有封装成Delphi控件格式，其使用方法有些原始，就是将它的源文件BrowseForFolderU.pas复制到当前项目目录并添加到当前项目中。代码如下{是别人高手写的，致敬呀......}&lt;br&gt;&lt;div class="sourcecode"&gt;unit BrowseForFolderU;&lt;br&gt;&lt;br&gt;interface&lt;br&gt;function BrowseForFolder(const browseTitle: String; &lt;br&gt;const initialFolder: String = &amp;#39;&amp;#39;): String;&lt;br&gt;&lt;br&gt;implementation&lt;br&gt;uses Windows, shlobj;&lt;br&gt;var&lt;br&gt;lg_StartFolder: String;&lt;br&gt;&lt;br&gt;///////////////////////////////////////////////////////////////////&lt;br&gt;// Call back function used to set the initial browse directory. &lt;br&gt;///////////////////////////////////////////////////////////////////&lt;br&gt;function BrowseForFolderCallBack(Wnd: HWND; uMsg: UINT;&lt;br&gt;lParam, lpData: LPARAM): Integer stdcall;&lt;br&gt;begin&lt;br&gt;if uMsg = BFFM_INITIALIZED then&lt;br&gt; SendMessage(Wnd,BFFM_SETSELECTION,1,Integer(@lg_StartFolder[1]));&lt;br&gt;result := 0;&lt;br&gt;end;&lt;br&gt;&lt;br&gt;///////////////////////////////////////////////////////////////////&lt;br&gt;// This function allows the user to browse for a folder &lt;br&gt;//&lt;br&gt;// Arguments:-&lt;br&gt;// browseTitle : The title to display on the browse dialog.&lt;br&gt;// initialFolder : Optional argument. Use to specify the folder&lt;br&gt;// initially selected when the dialog opens.&lt;br&gt;//&lt;br&gt;// Returns: The empty string if no folder was selected ( i.e. if the&lt;br&gt;// user clicked cancel), otherwise the full folder path.&lt;br&gt;///////////////////////////////////////////////////////////////////&lt;br&gt;function BrowseForFolder(const browseTitle: String;&lt;br&gt;const initialFolder: String =&amp;#39;&amp;#39;): String; &lt;br&gt;const&lt;br&gt;BIF_NEWDIALOGSTYLE = $40;&lt;br&gt;var&lt;br&gt;browse_info: TBrowseInfo;&lt;br&gt;folder: array[0..MAX_PATH] of char;&lt;br&gt;find_context: PItemIDList;&lt;br&gt;begin&lt;br&gt;FillChar(browse_info,SizeOf(browse_info),#0);&lt;br&gt;lg_StartFolder := initialFolder; &lt;br&gt;browse_info.pszDisplayName := @folder[0];&lt;br&gt;browse_info.lpszTitle := PChar(browseTitle);&lt;br&gt;browse_info.ulFlags := BIF_RETURNONLYFSDIRS or BIF_NEWDIALOGSTYLE;&lt;br&gt;if initialFolder &amp;lt;&amp;gt; &amp;#39;&amp;#39; then&lt;br&gt;browse_info.lpfn := BrowseForFolderCallBack; &lt;br&gt;find_context := SHBrowseForFolder(browse_info);&lt;br&gt;if Assigned(find_context) then&lt;br&gt;begin&lt;br&gt;if SHGetPathFromIDList(find_context,folder) then&lt;br&gt;result := folder&lt;br&gt;else&lt;br&gt;result := &amp;#39;&amp;#39;;&lt;br&gt;GlobalFreePtr(find_context); &lt;br&gt;end&lt;br&gt;else&lt;br&gt;result := &amp;#39;&amp;#39;;&lt;br&gt;end;&lt;br&gt;&lt;br&gt;end.&lt;/div&gt;&lt;br&gt;(2)调用代码：和一般函数调用很类似。先在调用窗口pas文件前引用一下该控件文件&lt;div class="sourcecode"&gt;uses&lt;br&gt;　BrowseForFolderU；&lt;/div&gt;然后是&amp;quot;八股&amp;quot;代码&lt;div class="sourcecode"&gt;procedure TForm1.BtnSampleExecute(Sender: TObject); //演示按钮Click事件函数 &lt;br&gt;var&lt;br&gt;oPath,oPath1,outMsg:String;&lt;br&gt;begin&lt;br&gt;oPath1 := &amp;#39;c:\&amp;#39;;//目录对话框的初始目录&lt;br&gt;outMsg := &amp;#39;Windows目录对话框演示&amp;#39;;//目录对话框上显示的提示信息&lt;br&gt;oPath := BrowseForFolder(outMsg,oPath1);//启动Windows目录对话框，一句话就解决了。&lt;br&gt;if oPath = &amp;#39;&amp;#39; then //如果返回地址为空，则报错 &lt;br&gt;begin&lt;br&gt;outMsg := &amp;#39;你没有选取任何目录！&amp;#39;;&lt;br&gt;Application.MessageBox(PChar(outMsg),&amp;#39;WARNING&amp;#39;,0);&lt;br&gt;Exit;&lt;br&gt;end;&lt;br&gt;else //否则由oPath中提取选取目录地址，进行操作&lt;br&gt;begin&lt;br&gt;　　　//你的操作代码&lt;br&gt;end;&lt;br&gt;end;&lt;/div&gt;&lt;br&gt;就这么简单咯，希望能给Delphi初学者一点帮助。&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-483439057619675617?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/483439057619675617/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=483439057619675617' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/483439057619675617'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/483439057619675617'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/01/delphiwindows.html' title='Delphi开启Windows目录对话框代码'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-8519110961159846184</id><published>2007-01-30T05:14:00.000-08:00</published><updated>2007-01-30T05:15:50.927-08:00</updated><title type='text'>Delphi中使用JPEG图片</title><content type='html'>这是个&amp;quot;过期&amp;quot;技术问题，我仅作为存档贴出来。以备日后参考。&lt;br&gt;Delphi中读取JPEG图片可使用TJPEGImage对象，样例代码如下：&lt;div class="sourcecode"&gt;var&lt;br&gt;&amp;nbsp;&amp;nbsp; jpeg :TJpegImage ;&lt;br&gt;begin&lt;br&gt;&amp;nbsp;&amp;nbsp; jpeg := TJPEGImage.Create;&lt;br&gt;&amp;nbsp;&amp;nbsp; try&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; jpeg.LoadFromFile(FileName);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Image1.Canvas.Draw (0,0,jpeg);&lt;br&gt;&amp;nbsp;&amp;nbsp; finally&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; jpeg.Free;&lt;br&gt;&amp;nbsp;&amp;nbsp; end;&lt;br&gt;end &lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-8519110961159846184?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/8519110961159846184/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=8519110961159846184' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/8519110961159846184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/8519110961159846184'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/01/delphijpeg.html' title='Delphi中使用JPEG图片'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-1264661510268545295</id><published>2007-01-30T05:11:00.001-08:00</published><updated>2007-01-30T05:12:35.062-08:00</updated><title type='text'>Delphi中压缩文件</title><content type='html'>Delphi中压缩文件的最好方式是使用ZipTV控件。其样例代码如下：&lt;br&gt;&lt;div class="sourcecode"&gt;procedure TForm1.Button1Click(Sender: TObject);&lt;br&gt;var&lt;br&gt;&amp;nbsp; FileCompressed,I: Integer;&lt;br&gt;&amp;nbsp; FileName:String;&lt;br&gt;begin&lt;br&gt;&amp;nbsp; if SaveDialog1.Execute then&lt;br&gt;&amp;nbsp; begin&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Zip1.ArchiveFile  := SaveDialog1.FileName;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Zip1.DateAttribute := daFileDate; // default value&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Zip1.StoredDirNames := sdRelative; // default value&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Zip1.CompressMethod := cmDeflate; // default value&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Zip1.FileSpec.Clear ;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; for I := 0 to ListBox1.Items.Count - 1 do // Iterate&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; begin&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Zip1.FileSpec.Add(ListBox1.Items[i]);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; end; // for&lt;br&gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileCompressed := Zip1.Compress;&lt;br&gt;&amp;nbsp; end;&lt;br&gt;end;&lt;/div&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-1264661510268545295?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/1264661510268545295/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=1264661510268545295' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/1264661510268545295'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/1264661510268545295'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/01/delphi.html' title='Delphi中压缩文件'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-4042531293569060778</id><published>2007-01-30T04:48:00.001-08:00</published><updated>2007-01-30T05:13:16.054-08:00</updated><title type='text'>VBA小试牛刀</title><content type='html'>今天在看一本电子书《诸葛亮的十堂哲学课》时，突然想将其重新编辑成PDF格式。当我将书的第一章内容复制到Word中时才发现字符中混杂了太多的回车符。这时我想起前几天学习的VBA课程，在这里小试牛刀咯。&lt;br&gt;下面就是我写的一段VBA程序，可以将文本中的多余空行删除。其算法是逐行扫描文档，当发现该行只有一个符号（必为回车符）时就将其删除。&lt;br&gt;&lt;div class="sourcecode"&gt;iCount = 0&lt;br&gt;Dim ps As Paragraph&lt;br&gt;Dim rngRange As Range &lt;br&gt;For Each ps In ActiveDocument.Paragraphs&lt;br&gt;iCount = iCount + 1&lt;br&gt;Set rngRange = ps.Range&lt;br&gt;&lt;br&gt;If rngRange.Characters.Count = 1 Then&lt;br&gt;&amp;#39;MsgBox (rngRange.Characters(1))&lt;br&gt;rngRange.Delete&lt;br&gt;End If&lt;br&gt;Next&lt;/div&gt;&lt;br&gt;但我还没想出如何能删除段末尾的回车符，我不知道如何判断，虽然可以通过 &lt;br&gt;&lt;div class="sourcecode"&gt;If rngRange.Characters(rngRange.Characters.Count) = Chr(13) Then&lt;br&gt;&lt;/div&gt;来判断段落结尾处的字符是否是回车符，但如果简单删除，则会将原有的段落去除。且这样会引起循环的错误，在进行段落遍历的时候产生错误。&lt;br&gt;我想到可以用一个数组来存放单个回车符的位置，然后利用原文档中段落间有两个回车符的特点，将单回车符删除就可以了。&lt;br&gt;下面是代码，其可以在短文档中用，在长文档时还是会有数组溢出。要重新考虑算法咯。 &lt;br&gt;&lt;div class="sourcecode"&gt;Sub ClearBlankReturnChar()&lt;br&gt;Dim iCount, iIndex, iParagraphsNum&lt;br&gt;iCount = 0&lt;br&gt;iIndex = 0&lt;br&gt;Dim aLines(10000)&lt;br&gt;&lt;br&gt;Dim ps As Paragraph&lt;br&gt;Dim rngRange As Range&lt;br&gt;For Each ps In ActiveDocument.Paragraphs&lt;br&gt;iCount = iCount + 1 &lt;br&gt;Set rngRange = ps.Range&lt;br&gt;If rngRange.Characters.Count &amp;gt; iMaxRangeCount Then&lt;br&gt;iMaxRangeCount = rngRange.Characters.Count&lt;br&gt;End If&lt;br&gt;&lt;br&gt;If rngRange.Characters.Count &amp;gt; 1 Then&lt;br&gt;iIndex = iIndex + 1&lt;br&gt;aLines(iIndex) =  rngRange.End&lt;br&gt;End If&lt;br&gt;Next&lt;br&gt;&lt;br&gt;For i = 1 To iIndex - 1&lt;br&gt;Selection.SetRange aLines(i) - i, aLines(i) - i + 1&lt;br&gt;&amp;#39;MsgBox (i)&lt;br&gt;Selection.Delete&lt;br&gt;Next&lt;br&gt;End Sub&lt;/div&gt;&lt;br&gt;夜已经很深了，早点睡咯！2006年8月13日&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-4042531293569060778?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/4042531293569060778/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=4042531293569060778' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/4042531293569060778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/4042531293569060778'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/01/vba.html' title='VBA小试牛刀'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-1074140858346724130</id><published>2007-01-30T04:45:00.001-08:00</published><updated>2007-01-30T04:46:17.459-08:00</updated><title type='text'>WindowsXP定时关机脚本</title><content type='html'>我以前写得一个脚本，每次重装机器都要用到，现贴在这里，以免下次重装要到备份光盘里找！&lt;br&gt; &lt;div class="sourcecode"&gt;at 22:00 /every:m,t,w,th,f,s,su Shutdown -s -f&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-1074140858346724130?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/1074140858346724130/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=1074140858346724130' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/1074140858346724130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/1074140858346724130'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/01/windowsxp.html' title='WindowsXP定时关机脚本'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-3710714486354764686</id><published>2007-01-30T04:38:00.001-08:00</published><updated>2007-01-30T04:42:47.723-08:00</updated><title type='text'>删除CVS版本控制目录</title><content type='html'>今天要将一个Dreamweaver制作的网站进行更新，但由于这次采用CVS来管理网站源文件，所以在系统目录中混入了许多CVS子目录。更新时因为这些细碎的文件夹造成FTP上载速度很慢，于是想到可以先复制一个目录然后采用批处理脚本删除其中所有的CVS文件夹。参考Zeali的Blog（&lt;a href="http://www.zeali.net/entry/351"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;http://www.zeali.net/entry/351 &lt;/span&gt;&lt;/a&gt;）中的BAT批处理文件，编写如下的批处理文件 ClearCVS.bat。&lt;br /&gt;&lt;div class="sourcecode"&gt;@echo On&lt;br /&gt;@Rem 删除CVS版本控制目录&lt;br /&gt;@PROMPT [Com]#&lt;br /&gt;@echo Find CVS&lt;br /&gt;@for /r . %%a in (.) do @if exist "%%a\CVS" @echo "%%a\CVS"&lt;br /&gt;@echo Find CVS Dir....OK&lt;br /&gt;@pause&lt;br /&gt;@for /r . %%a in (.) do @if exist "%%a\CVS" rd /s /q "%%a\CVS"&lt;br /&gt;@echo Clear CVS Dir Mission Completed&lt;br /&gt;@pause&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;而且我发现Dreamweaver也会在站点目录中存放许多_notes目录，参考上面的脚本再编写一个新的ClearNotes.bat如下&lt;br /&gt;&lt;div class="sourcecode"&gt;@echo On&lt;br /&gt;@Rem 删除_notes目录&lt;br /&gt;@PROMPT [Com]#&lt;br /&gt;@echo Find _notes&lt;br /&gt;@for /r . %%a in (.) do @if exist "%%a\_notes" @echo "%%a\_notes"&lt;br /&gt;@echo Check _notes Dir ....OK&lt;br /&gt;@pause&lt;br /&gt;@for /r . %%a in (.) do @if exist "%%a\_notes" rd /s /q "%%a\_notes"&lt;br /&gt;@echo Clear _notes Dir Mission Completed&lt;br /&gt;@pause&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;这样就可以轻松解决目录冗余的问题了。&lt;br /&gt;=======================================================================&lt;br /&gt;我编写了一个Python程序，也可以完成清除CVS目录的工作&lt;br /&gt;&lt;div class="sourcecode"&gt;# &lt;a href="mailto:yankchina@gmail.com"&gt; yankchina@gmail.com&lt;/a&gt;&lt;br /&gt;# Clear CVS Folder&lt;br /&gt;def ClearCVSFolder( inFolderName ):&lt;br /&gt;    ''' Clear CVS Folder&lt;br /&gt;    '''&lt;br /&gt;&lt;br /&gt;    import os&lt;br /&gt;    for root, dirs, files in os.walk( inFolderName , topdown = False ):&lt;br /&gt;        for name in dirs:&lt;br /&gt;            cvsname = root +'\\' + name + '\\cvs\\'&lt;br /&gt;            if os.path.isdir( cvsname ):&lt;br /&gt;                os.remove( cvsname )&lt;br /&gt;                print 'Remove CVS DirectoryName:' + cvsname &lt;br /&gt;&lt;br /&gt;# InputMain Function&lt;br /&gt;def inputMain():&lt;br /&gt;    import sys&lt;br /&gt;    if len(sys.argv)&amp;gt;=2:&lt;br /&gt;        currentDir = sys.argv[1]&lt;br /&gt;    else:&lt;br /&gt;        print "Please Input Folder Name: "&lt;br /&gt;        currentDir = raw_input()&lt;br /&gt;    print "Clear CVS Label Folders"&lt;br /&gt;    ClearCVSFolder(currentDir)&lt;br /&gt;    print "Any Key To Return..."&lt;br /&gt;    currentDir = raw_input()&lt;br /&gt;   &lt;br /&gt;if __name__ == "__main__":&lt;br /&gt;    inputMain() &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-3710714486354764686?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/3710714486354764686/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=3710714486354764686' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/3710714486354764686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/3710714486354764686'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/01/cvs.html' title='删除CVS版本控制目录'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-2036707276094944872</id><published>2007-01-29T20:13:00.001-08:00</published><updated>2007-01-29T20:21:21.116-08:00</updated><title type='text'>微软课程学习笔记</title><content type='html'>&lt;span id="sub_center_20"&gt;&lt;p&gt;2006 八月 05, 10:34 上午&lt;br&gt; Word下的VBA学习笔记&lt;br&gt; =======================================================================&lt;br&gt;  参考陈锐《Word下的VBA开发》&lt;br&gt; =======================================================================&lt;br&gt;  1.VBA简介：一个内嵌于Office的编程扩展。要了解VB/VBA/VBScript之间的关系。&lt;br&gt; 2.采用MS的VBASDK可以在自己的软件中增加VBA控制。&lt;br&gt; 3.最简单的VBA操作就是录制宏。在录制宏时，会&amp;quot;过忠实&amp;quot;地保留你的操作，产生大量冗余代码，这要求我们来进行一些清除工作。&lt;br&gt;  4.VBA的资源以Project（工程方式）进行管理，包括模版\代码等&lt;br&gt; 5.命令窗口可快速执行代码，并可以输出一些感兴趣的内容。如&lt;br&gt; ?ActiveDocument.Tables.Count&lt;br&gt; 可直接在命令窗口中直接输出结果&lt;br&gt; 6.建立一个新的VBA可以从录制宏开始。这里可以做一个将该文件中的所有表格的第一个行进行合并，然后文本居中加粗。在录制宏后，可以立即阅读宏记录，如果遇到不能理解的对象或操作，可以用Ctrl+F1调出快捷帮助来。下面是一段样例代码：&lt;div class="sourcecode"&gt;&lt;a href="mailto:%27yankchina@gmail.com" target="_blank"&gt;&amp;#39;yankchina@gmail.com&lt;/a&gt; 2006-08-05&lt;br&gt; &amp;#39;陈锐《Word下的VBA开发》&lt;br&gt;Dim t As Table&lt;br&gt;For Each t In ActiveDocument.Tables&lt;br&gt; &amp;#39;循环操作表格&lt;br&gt; t.Rows(1).Cells.Merge&lt;br&gt; t.Rows(1).Cells.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter&lt;br&gt; t.Rows(1).Cells(1).Range.Bold = wdToggle&lt;br&gt; Next&lt;/div&gt;  &lt;p&gt;在VBA中点选不同的过程，即只运行该过程。&lt;br&gt; 7.Word对象模型是掌握VBA操作的基本知识，而且要有OOP的知识结构。&lt;br&gt; 8.在Word中创建一个Office对象，可以使用&lt;br&gt; Set olApp = CreateObject(&amp;quot;outlook.application&amp;quot;)&lt;br&gt; 来创建，陈锐的例子都是很棒的，这个例子可以根据Word中的表格来创建Outlook联系人。我可以根据这个例子来创建一个VBA脚本，来在Word中 创建一个Outlook的联系人表。也可以在Outlook中编写VBA来自动根据Word中的表格来发送Email信息。&lt;br&gt;  =======================================================================&lt;br&gt;  我要收集一些自己在日常工作中的自动化需求，然后用VBA或.Net方式来编程实现&lt;br&gt; =======================================================================&lt;br&gt;  《程序员2006》学习笔记&lt;br&gt; =======================================================================&lt;br&gt;  这是微软WebCast上一期节目，回眸2005，展望2006。&lt;br&gt; 1.微软新的认证体系&lt;br&gt; 2.Microsoft网站上有一个ScoreReportAndLearningPlan，这样可用来进行个人技能检测。&lt;br&gt; 3.Microsoft E-Learning 免费的培训学习资料/视频。&lt;br&gt; =======================================================================&lt;br&gt;  《VisualStudioTeamSystem情景演示》学习笔记&lt;br&gt; =======================================================================&lt;br&gt;  1.方法论+工具&lt;br&gt; (1)有法可依：XP、RUP、MSF...&lt;br&gt; (2)有法必依：工具：BugManagerSystem、SourceControl&lt;br&gt; (3)执法必严：集成，各种工具集成工作&lt;br&gt; (4)违法必究：企业管理制度&lt;br&gt; 2.可以下载Microsoft的MSF文档来学习一些微软的项目开发经验。&lt;br&gt; 3.在VSTS中有MSF的模版，这样可以自动组织到CMM3水平。这说明在微软中的软件开发系统已经是完全信息化了。（目前我看到的许多软件开发团队和开发项目其仍然是手工化管理，好奇异的事情，不自动的软件系统来创建自动项目）&lt;br&gt;  4.在VSTS中用Excel来管理项目需求（Title/Kind/State/Priority），可要参考MSF文档来确定其结构。&lt;br&gt;  5.将Excel需求导入Project，在Project中进行工程安排。记得上次学习Project可以直接导入Excel文件的。&lt;br&gt;  6.架构师主要完成架构设计，并且应向代码设计人员下发逻辑实现。&lt;br&gt; 7.项目经理可以通过VSTS来访问察看项目进度，也可以从团队网站中进行察看。&lt;br&gt; 8.VisualStudio2005中的类图更契合.NET语言的特性。&lt;br&gt; 9.NUnit一个成员加入MS，这样在VSTS中会生成NUnit单元测试框架。且其可以通过代码的背景来看到测试的结果，而不是某个测试函数是否测试通过（很Cool的单元测试）。&lt;br&gt;  10.VSTS中可以使用Shelve方式将代码挂起在服务器端。&lt;br&gt; 11.VSTS中可对代码进行统计分析。并可以通过自定义规则方式来检查团队代码的命名规则。&lt;br&gt; 12.在VSTS中有LoadAndStressTest/ManualTest/UnitTest/WebTest等不同测试项目。且提供了虚拟测试环 境，这样就可以构建Win98/Win2000/WinXP等不同软硬件环境下的测试。可以方便地生成图表，找到软件BUG和瓶颈。&lt;br&gt;  13.MSF4.0包含的轻快开发软件进程是我当前要学习的重点。&lt;br&gt; &lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-2036707276094944872?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/2036707276094944872/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=2036707276094944872' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2036707276094944872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2036707276094944872'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/01/blog-post.html' title='微软课程学习笔记'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7505026804770634898.post-2592408445099446892</id><published>2007-01-29T19:30:00.001-08:00</published><updated>2007-01-29T20:08:42.458-08:00</updated><title type='text'>细线条框表格的CSS代码</title><content type='html'>今天朋友问我如何制作一个细线条框。在以前的方法是通过两个嵌套表格来实现细线条表格的制作，但这种方法与W3C网络标准不符，所以应该采用css的方法来制作单线条框。原理是利用定义对象上下左右边线，内部的单元格绘制上边和左边，外部的表格绘制下边和右边。具体CSS代码如下：&lt;div class="sourcecode"&gt;&amp;lt;style type="text/css"&amp;gt;&lt;br /&gt;&amp;lt;!--&lt;br /&gt;.frameTable {&lt;br /&gt;    border-right-width: 1px;&lt;br /&gt;    border-bottom-width: 1px;&lt;br /&gt;    border-top-style: none;&lt;br /&gt;    border-right-style: solid;&lt;br /&gt;    border-bottom-style: solid;&lt;br /&gt;    border-left-style: none;&lt;br /&gt;    border-right-color: #000000;&lt;br /&gt;    border-bottom-color: #000000;&lt;br /&gt;}&lt;br /&gt;.frameTable td{&lt;br /&gt;    border-top-style: solid;&lt;br /&gt;    border-top-width:1px;&lt;br /&gt;    border-left-width:1px;&lt;br /&gt;    border-top-color: #000000;&lt;br /&gt;    border-right-style: none;&lt;br /&gt;    border-left-style: solid;&lt;br /&gt;    border-left-color: #000000;&lt;br /&gt;    border-bottom-style: none;&lt;br /&gt;}&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;/style&amp;gt;&lt;/div&gt;&lt;br /&gt;调用的方法如下：&lt;br /&gt;&lt;div class="sourcecode"&gt;&amp;lt;table width="900" border="0" cellspacing="0" cellpadding="0" &lt;span style="color: rgb(255, 0, 0); text-decoration: underline;"&gt; class="frameTable"&lt;/span&gt;&amp;gt;&lt;br /&gt;  &amp;lt;tr&amp;gt;&lt;br /&gt;    &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;    &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;    &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;  &amp;lt;/tr&amp;gt;&lt;br /&gt;  &amp;lt;tr&amp;gt;&lt;br /&gt;    &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;    &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;    &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;  &amp;lt;/tr&amp;gt;&lt;br /&gt;  &amp;lt;tr&amp;gt;&lt;br /&gt;    &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;    &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;    &amp;lt;td&amp;gt; &amp;lt;/td&amp;gt;&lt;br /&gt;  &amp;lt;/tr&amp;gt;&lt;br /&gt;&amp;lt;/table&amp;gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7505026804770634898-2592408445099446892?l=yankchina-auto.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://yankchina-auto.blogspot.com/feeds/2592408445099446892/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7505026804770634898&amp;postID=2592408445099446892' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2592408445099446892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7505026804770634898/posts/default/2592408445099446892'/><link rel='alternate' type='text/html' href='http://yankchina-auto.blogspot.com/2007/01/css.html' title='细线条框表格的CSS代码'/><author><name>YANKCHINA</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_ufO6ICWIhsI/ST4J5aWtVDI/AAAAAAAAAjE/AQYGO16zBBU/S220/YankMap_1.jpg'/></author><thr:total>1</thr:total></entry></feed>
