﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客-gyn-随笔分类-other</title><link>http://www.cnitblog.com/gyn/category/2450.html</link><description>Win32下的Perl，无用的select，停滞的Tk，结束吧....</description><language>zh-cn</language><lastBuildDate>Wed, 28 Sep 2011 10:29:28 GMT</lastBuildDate><pubDate>Wed, 28 Sep 2011 10:29:28 GMT</pubDate><ttl>60</ttl><item><title>对在Erlang中用的makefile的一点解释</title><link>http://www.cnitblog.com/gyn/archive/2010/02/24/64375.html</link><dc:creator>gyn_tadao</dc:creator><author>gyn_tadao</author><pubDate>Wed, 24 Feb 2010 05:49:00 GMT</pubDate><guid>http://www.cnitblog.com/gyn/archive/2010/02/24/64375.html</guid><wfw:comment>http://www.cnitblog.com/gyn/comments/64375.html</wfw:comment><comments>http://www.cnitblog.com/gyn/archive/2010/02/24/64375.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/gyn/comments/commentRss/64375.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gyn/services/trackbacks/64375.html</trackback:ping><description><![CDATA[又重新开始读了《Programming Erlang》，也就又读到了第六章中的makefile，结合学习中的具体情况，略作了修改如下：<br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">.SUFFIXES: .erl .beam<br /><br />OUT </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> .</span><span style="color: rgb(0, 0, 0);">/</span><span style="color: rgb(0, 0, 0);">beam<br /><br />.erl.beam:<br />    erlc </span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">W $</span><span style="color: rgb(0, 0, 0);">&lt;</span><span style="color: rgb(0, 0, 0);"> ; mv $@ ${OUT}<br /><br />ERL </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> erl </span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">boot start_clean<br /><br />MODS </span><span style="color: rgb(0, 0, 0);">=</span><span style="color: rgb(0, 0, 0);"> kvs<br /><br />all: compile<br /><br />compile: ${MODS:</span><span style="color: rgb(0, 0, 0);">%=%</span><span style="color: rgb(0, 0, 0);">.beam}<br /><br /># application:<br />#     ${ERL} </span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">s application start ARG1 ARG2<br /><br />clean:<br />    rm </span><span style="color: rgb(0, 0, 0);">-</span><span style="color: rgb(0, 0, 0);">rf </span><span style="color: rgb(0, 0, 0);">*</span><span style="color: rgb(0, 0, 0);">.beam erl_crash.dump<br /></span></div><br />跟书里有的一点不同是，我把编译之后的文件转移到了beam文件夹里了，所以为此，在“~/.erlang”中也添加了该路径：<br /><br /><div style="border: 1px solid rgb(204, 204, 204); padding: 4px 5px 4px 4px; background-color: rgb(238, 238, 238); font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: rgb(0, 0, 0);">path_addz(</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">./beam</span><span style="color: rgb(0, 0, 0);">"</span><span style="color: rgb(0, 0, 0);">).</span></div><br />这样，就方便载入自己编写的模块。最后还是要对以上的makefile稍作解释，以便以后忘了可以看看。<br />.SUFFIX声明要用到的或者将生成的文件的类型；.erl.beam是指.beam依赖于.erl，紧接着下一行一个tab之后的是一段有关于这种生成关系的具体命令，我也就是在这里把beam文件移动到./beam文件夹里的；MODS和OUT都是定义的变量，方便重复使用（虽然这里没有再用到，但是至少看起来很清楚）；application这个替换被注释掉了，因为我几乎用不到，但也可能以后会用到，除了编译之外，它还负责运行编译之后的模块函数；clean就是删除当前文件夹下的beam文件。<br /><br /><img src ="http://www.cnitblog.com/gyn/aggbug/64375.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gyn/" target="_blank">gyn_tadao</a> 2010-02-24 13:49 <a href="http://www.cnitblog.com/gyn/archive/2010/02/24/64375.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最近的学习情况</title><link>http://www.cnitblog.com/gyn/archive/2009/08/16/60818.html</link><dc:creator>gyn_tadao</dc:creator><author>gyn_tadao</author><pubDate>Sun, 16 Aug 2009 02:29:00 GMT</pubDate><guid>http://www.cnitblog.com/gyn/archive/2009/08/16/60818.html</guid><wfw:comment>http://www.cnitblog.com/gyn/comments/60818.html</wfw:comment><comments>http://www.cnitblog.com/gyn/archive/2009/08/16/60818.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/gyn/comments/commentRss/60818.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gyn/services/trackbacks/60818.html</trackback:ping><description><![CDATA[
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<meta name="ProgId" content="Word.Document" />
		<meta name="Generator" content="Microsoft Word 11" />
		<meta name="Originator" content="Microsoft Word 11" />
		<link rel="File-List" href="file:///C:%5CDOCUME%7E1%5CADMINI%7E1%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml" />
		<!--[if gte mso 9]><xml>
 <w:WordDocument>
  <w:View>Normal</w:View>
  <w:Zoom>0</w:Zoom>
  <w:PunctuationKerning/>
  <w:DrawingGridVerticalSpacing>7.8 磅</w:DrawingGridVerticalSpacing>
  <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery>
  <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery>
  <w:ValidateAgainstSchemas/>
  <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
  <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
  <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
  <w:Compatibility>
   <w:SpaceForUL/>
   <w:BalanceSingleByteDoubleByteWidth/>
   <w:DoNotLeaveBackslashAlone/>
   <w:ULTrailSpace/>
   <w:DoNotExpandShiftReturn/>
   <w:AdjustLineHeightInTable/>
   <w:BreakWrappedTables/>
   <w:SnapToGridInCell/>
   <w:WrapTextWithPunct/>
   <w:UseAsianBreakRules/>
   <w:DontGrowAutofit/>
   <w:UseFELayout/>
  </w:Compatibility>
  <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
 </w:WordDocument>
</xml><![endif]-->
		<!--[if gte mso 9]><xml>
 <w:LatentStyles DefLockedState="false" LatentStyleCount="156">
 </w:LatentStyles>
</xml><![endif]-->
		<style>
				<!--
 /* Font Definitions */
 @font-face
	{font-family:黑体;
	panose-1:2 1 6 0 3 1 1 1 1 1;
	mso-font-alt:SimHei;
	mso-font-charset:134;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:1 135135232 16 0 262144 0;}
@font-face
	{font-family:"\@黑体";
	panose-1:2 1 6 0 3 1 1 1 1 1;
	mso-font-charset:134;
	mso-generic-font-family:auto;
	mso-font-pitch:variable;
	mso-font-signature:1 135135232 16 0 262144 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-parent:"";
	margin:0cm;
	margin-bottom:.0001pt;
	text-align:justify;
	text-justify:inter-ideograph;
	mso-pagination:none;
	font-size:10.5pt;
	font-family:"Courier New";
	mso-fareast-font-family:黑体;
	mso-bidi-font-family:"Times New Roman";
	mso-font-kerning:1.0pt;}
 /* Page Definitions */
 @page
	{mso-page-border-surround-header:no;
	mso-page-border-surround-footer:no;}
@page Section1
	{size:595.3pt 841.9pt;
	margin:72.0pt 90.0pt 72.0pt 90.0pt;
	mso-header-margin:42.55pt;
	mso-footer-margin:49.6pt;
	mso-paper-source:0;
	layout-grid:15.6pt;}
div.Section1
	{page:Section1;}
-->
		</style>
		<!--[if gte mso 10]>
<style>
 /* Style Definitions */
 table.MsoNormalTable
	{mso-style-name:普通表格;
	mso-tstyle-rowband-size:0;
	mso-tstyle-colband-size:0;
	mso-style-noshow:yes;
	mso-style-parent:"";
	mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
	mso-para-margin:0cm;
	mso-para-margin-bottom:.0001pt;
	mso-pagination:widow-orphan;
	font-size:10.0pt;
	font-family:"Times New Roman";
	mso-fareast-font-family:"Times New Roman";
	mso-ansi-language:#0400;
	mso-fareast-language:#0400;
	mso-bidi-language:#0400;}
</style>
<![endif]-->
		<p class="MsoNormal">
				<span style="font-family: 黑体;">最近在看</span>
				<span lang="EN-US">WebOS</span>
				<span style="font-family: 黑体;">和</span>
				<span lang="EN-US">Android</span>
				<span style="font-family: 黑体;">的相关资料，也算是学习吧，虽然并没有作进一步的深入开发的打算。</span>
				<span lang="EN-US">WebOS</span>
				<span style="font-family: 黑体;">的资料很少，现在能看的除了官网的</span>
				<span lang="EN-US">document</span>
				<span style="font-family: 黑体;">之外，只有一本《</span>
				<span lang="EN-US">Palm WebOS</span>
				<span style="font-family: 黑体;">》，我看的是</span>
				<span lang="EN-US">Rough Cut</span>
				<span style="font-family: 黑体;">版本的。</span>
				<span lang="EN-US">Android</span>
				<span style="font-family: 黑体;">的书籍就比较多了，甚至国人也有些的，这里要提醒切勿上当的的是一本宝岛某人写的，纯</span>
				<span lang="EN-US">Java</span>
				<span style="font-family: 黑体;">介绍加官网</span>
				<span lang="EN-US">Doc</span>
				<span style="font-family: 黑体;">，很春哥。我现在看的是一本叫《</span>
				<span lang="EN-US">Beginning Android</span>
				<span style="font-family: 黑体;">》的书，除了不多久，而且由浅入较深。这里说是较深，是因为较本书的目的来说是为了入门，所以不能算深；但是仔细读完这本书，我相信对</span>
				<span lang="EN-US">Android</span>
				<span style="font-family: 黑体;">的开发肯定能得心应手，至少能自己解决一些问题了，所以算是深的范围里了，综上所述用较深。一向来，我是很喜欢这种书的，因为学习效率高，文笔好的，更是看着如沐春风。至于《</span>
				<span lang="EN-US">Palm WebOS</span>
				<span style="font-family: 黑体;">》，我只能用痛苦来形容。举个例子吧，其中大量引用了一个提供每日信息的类似于</span>
				<span lang="EN-US">RSS</span>
				<span style="font-family: 黑体;">的</span>
				<span lang="EN-US">News</span>
				<span style="font-family: 黑体;">案例。应该说，这算是开发中的一个综合性高级应用了，最好是将它单独立为一章，在书的最后几个章节种。可本书，从第二章开始开始介绍，写了一个基本框架。第三章，在介绍</span>
				<span lang="EN-US">list</span>
				<span style="font-family: 黑体;">组件的时候，又拿了出来，改了一些数据之后，一讲到底，连</span>
				<span lang="EN-US">Ajax</span>
				<span style="font-family: 黑体;">都顺便说完了，这是很不好的。首先，其中有很多概念还没涉及到，你就拿出来讲，读者看不懂；第二，看不懂，可还得硬着头皮看，因为有很多细节他是穿插在里面的，不看，以后就更看不懂了；第三，这样就增加了学习的难度，无异于拔苗助长，看过去了，恭喜你，但更多人会将此书束之高阁了。我的做法是两本书一起看，一本卡住了先看看另外一本，等心情平复了再回过来看，如此交叉前进。这里有个前提是，这两本书都是关于移动开发的，虽然所属系统不同，但终究是一个大类，有相通可比较之处，一起看有利于总接归纳，算是相得益彰了。</span>
		</p>
		<p class="MsoNormal">
				<span style="font-family: 黑体;">另外，</span>
				<span lang="EN-US">WebOS</span>
				<span style="font-family: 黑体;">的开发终究是少了点调试的工具，虽然我很讨厌</span>
				<span lang="EN-US">Java</span>
				<span style="font-family: 黑体;">，但是难以调试的</span>
				<span lang="EN-US">WebOS</span>
				<span style="font-family: 黑体;">更令人痛疼，虽然开发的过程显然是</span>
				<span lang="EN-US">Js</span>
				<span style="font-family: 黑体;">来的舒畅。</span>
		</p>
<img src ="http://www.cnitblog.com/gyn/aggbug/60818.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gyn/" target="_blank">gyn_tadao</a> 2009-08-16 10:29 <a href="http://www.cnitblog.com/gyn/archive/2009/08/16/60818.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>TclTk暂时就到这里，休息，休息一下~</title><link>http://www.cnitblog.com/gyn/archive/2009/07/17/60180.html</link><dc:creator>gyn_tadao</dc:creator><author>gyn_tadao</author><pubDate>Fri, 17 Jul 2009 14:34:00 GMT</pubDate><guid>http://www.cnitblog.com/gyn/archive/2009/07/17/60180.html</guid><wfw:comment>http://www.cnitblog.com/gyn/comments/60180.html</wfw:comment><comments>http://www.cnitblog.com/gyn/archive/2009/07/17/60180.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/gyn/comments/commentRss/60180.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gyn/services/trackbacks/60180.html</trackback:ping><description><![CDATA[当我写完edcucumber之后，TclTk差不多算是可以暂时告一段落了。毕竟，在这个项目，如果这能算作项目的话，花费了很多的精力。从攻克一个又一个难题，到细节的处理，总之目前edcucumber是已经可以使用了，至少，我本人实在使用它处理TclTk程序的，而且相当方便于调试和编写实验脚本。如果那一天我觉得不够用了，我还会增加其他功能的，但目前还是暂停一下吧。在此期间，我对TclTk的认识也随着编写的深入而慢慢加深了。这是一个特点于缺点一样明显的语言，结合Tk在快速编写界面方面几乎无语言能出其右也。而对于数据类型支持的薄弱，使其在处理复杂数据是力不从心，虽然可以借助一些方法，但是总就不是能自然解决的，最关键的一点是没有类似于指针的数据类型，这相当让人头疼。在群里的管理员之职，其实更多的时候是挂羊头卖狗肉，由于个人喜好的原因，除了Tk之外，我对其他方面的内容涉及很少，尤其是Expect，而这又恰恰是很多人想要学习了解的。差不多了，就这个水平了，可能比浅尝辄止要好一点吧。<br />现实总是很残酷的（原先我想写有时候的），当我发现我花费在这个爱好上无数的时间却还不回什么回报的时候，感到的是深深的不安和自责。而的确，没有什么办法让这个TclTk变得有点价值，而爱好不能当饭吃吧，虽然没有它我也不会饿死，但事实是它并不能让我变得更好。我还是会写一些东西，算是对于TclTk的纪念，而且有一天我还会回来。差不多写了很多字了，零零碎碎的，我想大约到了20万字的时候就编本书。也没想法去出书，自个儿留着，以后看看，年轻时候还花了不少精力捣鼓这玩意儿。<br />C啊，我又回来了。苹果或者Android，也或者Palm....这次看看是不是能弄出点名堂.....至于本人的工作，唉.....干得多，反而要被人搞，就是这么一个世道....坏的就让他去吧，我不想自寻烦恼，好的一定要记着，话说受人之恩当涌泉相报，涌泉我估计是做不到，太tmd假了，记着记在心里，好好干，别给人丢脸。<img src ="http://www.cnitblog.com/gyn/aggbug/60180.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gyn/" target="_blank">gyn_tadao</a> 2009-07-17 22:34 <a href="http://www.cnitblog.com/gyn/archive/2009/07/17/60180.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一些杂谈和关于Emacs的字体设置</title><link>http://www.cnitblog.com/gyn/archive/2009/03/26/55781.html</link><dc:creator>gyn_tadao</dc:creator><author>gyn_tadao</author><pubDate>Thu, 26 Mar 2009 12:33:00 GMT</pubDate><guid>http://www.cnitblog.com/gyn/archive/2009/03/26/55781.html</guid><wfw:comment>http://www.cnitblog.com/gyn/comments/55781.html</wfw:comment><comments>http://www.cnitblog.com/gyn/archive/2009/03/26/55781.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/gyn/comments/commentRss/55781.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gyn/services/trackbacks/55781.html</trackback:ping><description><![CDATA[最近一直没有写博客，其实也没什么，主要是一直在看书，主要是两本书：《Programming Erlang》和《Emacs Lisp Intro》，以及一些关于parrotVM的文档。第一本关于Erlang的差不多看完了，真是非常好的书，难得一见，差不多是一口气读完的，对并发和多进程以及服务器端的设计有了更深的理解并较好的架构概念，目前看来还没有很好地消化，这需要时间和实践。至于parrotVM，这可是最近的一件大事，8年时间终于等来了1.0.0版，这本身就足够让人关注。不过CU和PerlChina的反应很冷淡，让人有点意外，目前看来研究的人还比较少，或者大牛们都在闷声啃文档。虽然算是正式了，但还是有点bug，比如win32的编译版本只能在C盘下正常运行，perl6的语法似乎跟《Perl6 essential》的设计也有出入...最后是《Emacs Lisp Intro》，这是因为最近在对vim实在无法适应，因为原来一直使用UE，习惯了用Ctrl的快捷键，换到vim之后，模式切来切去实在抓狂，于是用了Emacs。上手出乎意料的快，非常适合本人的习惯，不过就是字体有点难看。win下只要打开可选字体的显示项就可以选择一些比如雅黑的字体，但在linux下面似乎麻烦了不少，最后一狠心直接用“emacs -nw”在bash里运行得了，字体也很好看而且基本上一模一样。<img src ="http://www.cnitblog.com/gyn/aggbug/55781.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gyn/" target="_blank">gyn_tadao</a> 2009-03-26 20:33 <a href="http://www.cnitblog.com/gyn/archive/2009/03/26/55781.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Big-endian和Little-endian（转自：http://blog.csdn.net/NeptuneX/）</title><link>http://www.cnitblog.com/gyn/archive/2008/02/14/39738.html</link><dc:creator>gyn_tadao</dc:creator><author>gyn_tadao</author><pubDate>Thu, 14 Feb 2008 07:17:00 GMT</pubDate><guid>http://www.cnitblog.com/gyn/archive/2008/02/14/39738.html</guid><wfw:comment>http://www.cnitblog.com/gyn/comments/39738.html</wfw:comment><comments>http://www.cnitblog.com/gyn/archive/2008/02/14/39738.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/gyn/comments/commentRss/39738.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gyn/services/trackbacks/39738.html</trackback:ping><description><![CDATA[
		<span id="ArticleContent1_ArticleContent1_lblContent">简而言之：<br />Big endian machine: It thinks the first byte it reads is the biggest.<br />Little endian machine: It thinks the first byte it reads is the littlest.<br />举个例子，从内存地址0x0000开始有以下数据<br /> 0x0000     0x12<br /> 0x0001     0x34<br /> 0x0002     0xab<br /> 0x0003     0xcd<br />如果我们去读取一个地址为0x0000的四个字节变量，若字节序为big-endian，则读出<br />结果为0x1234abcd；若字节序位little-endian，则读出结果为0xcdab3412.<br />如果我们将0x1234abcd写入到以0x0000开始的内存中，则结果为<br />                big-endian     little-endian<br />0x0000     0x12              0xcd<br />0x0001     0x23              0xab<br />0x0002     0xab              0x34<br />0x0003     0xcd              0x12<br />x86系列CPU都是little-endian的字节序.</span>
<img src ="http://www.cnitblog.com/gyn/aggbug/39738.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gyn/" target="_blank">gyn_tadao</a> 2008-02-14 15:17 <a href="http://www.cnitblog.com/gyn/archive/2008/02/14/39738.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>新年新学习-erlang</title><link>http://www.cnitblog.com/gyn/archive/2008/02/11/39675.html</link><dc:creator>gyn_tadao</dc:creator><author>gyn_tadao</author><pubDate>Mon, 11 Feb 2008 04:59:00 GMT</pubDate><guid>http://www.cnitblog.com/gyn/archive/2008/02/11/39675.html</guid><wfw:comment>http://www.cnitblog.com/gyn/comments/39675.html</wfw:comment><comments>http://www.cnitblog.com/gyn/archive/2008/02/11/39675.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/gyn/comments/commentRss/39675.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gyn/services/trackbacks/39675.html</trackback:ping><description><![CDATA[好久没有来了，不是因为没有在学习，相反的，因为一直在学习新的东西，并且还没有形成理论体系，所以没办法写下心得。前些日子，打算学习一下java，但是因为自己脚本习惯已深，所以先学习groovy，再慢慢过渡到java上去。建议打算学习groovy的朋友看mastering groovy in action，至于那本programming groovy就不要看了，出的时间太早，有一些版本上的冲突。<br />在以前用perl写脚本的日子里，一直被并行或者说进程间的通信问题所困扰。一些信号处理的办法或者Tk中解决通信的办法，在windows下无法很好实现，或多或少存在一些奇怪的问题。这也是为什么下定决心要精通另外一种语言的原因。java无疑是最好的选择。但是在一次浏览csdn的时候，发现了一篇介绍erlang的文章。erlang是天然用来解决并行的语言，因其高效稳定的运行，被用在电信等需要大量并行计算的通信行业中。爱立信和北电的一些产品正是应用了erlang。如此看来，erlang不正是我们这些学通信出身的人的好帮手吗？于是二话不说，下了本programming erlang开始看起来了。<br />相比较perl，c，java，erlang更接近与haskell，而更有意思的是，出于安全考虑，变量一旦赋值就无法更改。递归被频繁地使用。比如说一个快排算法。<br />qsort(_, []) -&gt; [];<br />qsort([Pivat|T]) -&gt; <br />    qsort([X || X &lt;- T, X &lt; Pivat]) <br />    ++ [Pivat] ++ <br />    qsort([X || X &lt;- T, X &gt;= Pivat]).<br />总而言之，与平常接触的一些编程语言习惯格格不入，完全从零开始。当然数据结构的一些概念和算法还是相通的，看来大学时好好学习是非常重要的。<br /><img src ="http://www.cnitblog.com/gyn/aggbug/39675.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gyn/" target="_blank">gyn_tadao</a> 2008-02-11 12:59 <a href="http://www.cnitblog.com/gyn/archive/2008/02/11/39675.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>bash常用指令备忘</title><link>http://www.cnitblog.com/gyn/archive/2007/07/16/29892.html</link><dc:creator>gyn_tadao</dc:creator><author>gyn_tadao</author><pubDate>Sun, 15 Jul 2007 23:50:00 GMT</pubDate><guid>http://www.cnitblog.com/gyn/archive/2007/07/16/29892.html</guid><wfw:comment>http://www.cnitblog.com/gyn/comments/29892.html</wfw:comment><comments>http://www.cnitblog.com/gyn/archive/2007/07/16/29892.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/gyn/comments/commentRss/29892.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gyn/services/trackbacks/29892.html</trackback:ping><description><![CDATA[ASCII码：<br />响铃    7<br />退格    10<br />制表符    11<br />新行    12<br />换行    12<br />换页    14<br />回车    15<br />转移    33<br />常用的命令：<br />ls -a : 显示全部文件包括隐藏文件<br />vi : 按i进入插入模式，按:进入last line模式，之后按wq保存并退出，按q!强制退出<br />echo : -n不输出换行<br />wc : -c字节 -m字符数 -w单词数 -l行数<br />mv cp : 只需要目标文件夹即可执行拷贝或者移动<br />ln : -s建立一个可跨越档案系统的软链接，默认情况下显示在同一档案系统中建立硬链接<br />2&gt; : 标准错误的重定向<br />cut : -c1-5表示显示行的第一到五个字符，-d: -f1,5表示按冒号分割，然后显示分割出来的第一和五个字段，默认按制表符分割<br />paste : -d + 将各个文件的行用加号连接，-s合并单个文件的各行为一行<br />sed : 's/jin/hao/'将jin换位hao，-n '1,2p'显示第一、二行， -n '/jin/p'显示包含jin的行，'1,2d'不显示第一、二行，'/jin/d'不显示包含jin的行<br />tr : tr '[a-z]' '[A-Z]' &lt; intro将小写母转化为大写（替换字符不可为空），-s用于压缩重复的被替换字符, -d ' '删除空格<br />grep : -l之显示匹配的文件名，-n显示行号，-v不显示匹配的行, -i不区分大小写<br />sort : -n将第一字段的值按数字形式来排序，-u不显示重复的行，-r反序排列，+1n跳过第一个字段，+2n -t:按冒号来划分字段，并且跳过前两个字段<br />uniq : 删除相同的行，-d显示相同的行<br /><br /><img src ="http://www.cnitblog.com/gyn/aggbug/29892.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gyn/" target="_blank">gyn_tadao</a> 2007-07-16 07:50 <a href="http://www.cnitblog.com/gyn/archive/2007/07/16/29892.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个学习linux命令的好网站</title><link>http://www.cnitblog.com/gyn/archive/2007/05/24/27536.html</link><dc:creator>gyn_tadao</dc:creator><author>gyn_tadao</author><pubDate>Thu, 24 May 2007 06:00:00 GMT</pubDate><guid>http://www.cnitblog.com/gyn/archive/2007/05/24/27536.html</guid><wfw:comment>http://www.cnitblog.com/gyn/comments/27536.html</wfw:comment><comments>http://www.cnitblog.com/gyn/archive/2007/05/24/27536.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/gyn/comments/commentRss/27536.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gyn/services/trackbacks/27536.html</trackback:ping><description><![CDATA[
		<a href="http://www.linuxcommand.org/">http://www.linuxcommand.org/</a>
		<br />顾名思义，网站的名字就是linux命令的意思。老外的文笔的确要好上一点，不比一些中文资料，虽然是英文但也不会有味如嚼蜡的感觉。有感兴趣的可以去瞧瞧，很基础的一些东西，刚刚可以用于入门。<img src ="http://www.cnitblog.com/gyn/aggbug/27536.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gyn/" target="_blank">gyn_tadao</a> 2007-05-24 14:00 <a href="http://www.cnitblog.com/gyn/archive/2007/05/24/27536.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转蛮有意思的一段伪代码</title><link>http://www.cnitblog.com/gyn/archive/2007/03/09/23774.html</link><dc:creator>gyn_tadao</dc:creator><author>gyn_tadao</author><pubDate>Fri, 09 Mar 2007 01:32:00 GMT</pubDate><guid>http://www.cnitblog.com/gyn/archive/2007/03/09/23774.html</guid><wfw:comment>http://www.cnitblog.com/gyn/comments/23774.html</wfw:comment><comments>http://www.cnitblog.com/gyn/archive/2007/03/09/23774.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnitblog.com/gyn/comments/commentRss/23774.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gyn/services/trackbacks/23774.html</trackback:ping><description><![CDATA[result love(boy, girl)<br />{<br />    if( boy.有房() and boy.有车() )<br />    {<br />        boy.set(nothing);<br />        return girl.嫁给(boy);<br />    }<br />    if( girl.愿意等() )<br />    {<br />    while(!(boy.赚钱 &gt; 100,000 and girl.感情 &gt; 8 ) )<br />    {<br />        for( day=1; day &lt;=365; day++)<br />        {<br />            if( day == 情人节 )<br />            if( boy.givegirl(玫瑰) )<br />                girl.感情++;<br />            else<br />                girl.感情--;　　<br />            if( day == girl.生日 )<br />            if( boy.givegirl(玫瑰) )<br />            {<br />                girl.感情++;<br />            }else{<br />                girl.感情--;<br />                boy.拼命赚钱();<br />            }<br />        }<br />        if( boy.有房() and boy.有车() )<br />        {<br />            boy.set(nothing);<br />            return girl.嫁给(boy);<br />        }<br />        年龄++;<br />        girl.感情--;<br />    }<br />   else return girl.goto( another_boy);<br />}<br /><img src ="http://www.cnitblog.com/gyn/aggbug/23774.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gyn/" target="_blank">gyn_tadao</a> 2007-03-09 09:32 <a href="http://www.cnitblog.com/gyn/archive/2007/03/09/23774.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>泡妞三十六计(转)</title><link>http://www.cnitblog.com/gyn/archive/2007/03/01/23444.html</link><dc:creator>gyn_tadao</dc:creator><author>gyn_tadao</author><pubDate>Thu, 01 Mar 2007 12:23:00 GMT</pubDate><guid>http://www.cnitblog.com/gyn/archive/2007/03/01/23444.html</guid><wfw:comment>http://www.cnitblog.com/gyn/comments/23444.html</wfw:comment><comments>http://www.cnitblog.com/gyn/archive/2007/03/01/23444.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/gyn/comments/commentRss/23444.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gyn/services/trackbacks/23444.html</trackback:ping><description><![CDATA[
		<div>
				<font face="宋体" color="#009999" size="2">第一计：铁面计。</font>
				<font face="宋体" color="#009999" size="2">随着社会的发展，MM变得越来越凶。女人猛于虎，既要泡得MM，又不要被MM所伤，最好莫如戴上一幅铁面。有铁面护着，说多肉麻的话，脸不红，妹妹玉手打来鼻不酸来眼不花，当的过份英俊曾从寨主处悟得此计。等妹妹累了烦了芳心也就许了，一幅铁面，胜过德才兼备远矣！忠告是此计莫在大洋用，大洋MM太厉害了，简直是老虎中的老虎。此计尤其在开心E族失效，你有铁面计，东方MM有踢屁功。 <br /><br />第二计：打折计。看到一个MM，先要沉得住气。色不迷人人自迷，不要见到MM自家先乱了枪法。再美再傲的MM，都可以打折来看。她盘亮不一定条顺，她是美女，有可能是个草包。无论MM再好，打折打到脚脖子上，也就泯然众人矣。别把MM当回事儿，就成功了一半，威威深信此言。妞无常势，泡无常形，别打折打得太过份，对MM失去兴趣。有位老人家说过，要战略上邈视MM，战术上重视MM。 <br /><br />第三计：秋千计。有过打秋千经验的人知道，要想把秋千荡得高，需要一下一下地加力。泡成功一个MM，也得一下一下地加力。今日加力，明日减力，只能在原处晃荡。除非你是世外高人，三天打鱼，两天晒网，保持MM平衡，否则你只有金枪独抱，眼睁睁瞧着人家妞来妹往。记住了，泡妞要有条理，心急吃不了热豆腐。泡妞如做人，需要一步一个脚印。 <br /><br />第四计：吃草计。好马不吃回头草，所以好马常饿肚子。这个世道，只要MM存在一天，GG的命运就多舛一天。当MM都象狗熊掰棒子般被扔掉，好在你不是狗熊，目前腋下没有夹着棒子也不要紧，可以回过头再遛一圈。许多MM潜的很深，要小心寻找美人鲨的蛛丝马迹。辛GG在九百年前研究过此计，他说蓦然回首，那妞却在，灯火阑珊处。 <br /><br />第五计：高帽计。人都喜欢戴高帽，MM是人，所以MM喜欢戴高帽。懂得拍马屁的GG是好 GG，懂得拍MM马屁的GG更是人中俊杰。此计不容易把握，有些水平高的MM，只有水平很高的马屁才能够被薰倒。嘴甜的GG有妞抱，从实践中走来，还将向实践中走去。薰倒的MM容易下手，不过常倒的MM你千万不要下手，比如要提防东方MM倒地时暗藏兔子蹬鹰式。 <br /><br />第六计：黄花计。黄花计是指青春易逝，许多事许多人转眼就成昨日黄花，杜秋娘JJ在泡妞三百首中说过，花开堪折直须折，莫待无花空折枝。人生行乐能几时，不只是GG遇到一个好MM不容易，MM遇到一个好GG也不容易。一定要抢抓机遇，与时俱进，MM如黄花，转眼花飞去，泡妞工程，时不我待呀！记得有位浪费掉无数宝贵泡妞时间的GG惨痛回忆，“忆往昔，峥嵘岁月稠，只可惜，没有泡妞空悲切，白了少年头。” <br /><br />第七计：叉饭计。叉饭计是指无论多好饭，总吃一样总会腻的，只有均衡营养，才有利于身体健康。泡妞也是如此道理，才有利于GG们身体健康。你有一天觉得泡某个MM腻了的时候，就要考虑象鱼丝学习，有时候泡米饭MM，有时候泡烧饼MM，泡起妞来健康快乐。饭切忌吃得太饱，MM切忌泡得太多 <br /><br />第八计：土豆计。土豆藤蔓延伸多，土豆就结多远，即使藤蔓被毁，土豆依然可以保存，此计不适用于东方MM，她是生物老师，给她施此计，她挖地三尺也要把土豆刨出来。主旨是泡一个妞要有泡一个妞的收获，不要泡了N个妞，还跟一个妞没泡似的。有个叫保尔的老外说过，GG的一生应该是这样渡过的，当他回首往事，不因虚度年华而悔恨,不因碌碌无妞而感到羞耻，他应该自豪地说…… <br /><br />第九计：射雁计。这条计很老了，不过历久弥新，郎君还是把它写上了，老树也可以开新花嘛！两位古人射大雁讨论怎么吃雁的时候，雁已经飞跑了。看到MM，不要总想着泡到手后如何与她嘿咻，正当你做白日梦的时候，她说不定已经倒在别的GG怀里。射雁计主旨该出手时就出手，手出的不准，是技术问题，手出的不快，是思想问题。 <br /><br />第十计：金钱计。十个MM九个贪财，泡不到MM不要着急。临渊羡鱼，不如退而结网。在她的裙下死掉一百位GG也与你无关，你只须闷声赚银子。等你腰包鼓了，不用你去泡MM，MM排着队来泡你。有钱的GG自然妙语如珠、貌美枪粗、绅士风度、钻石老五。 <br /><br />第十一计：咖啡计。咖啡虽苦可以提神，泡妞虽苦也可以提神。即使你把一位MM泡上了床，也需要知道上床是个力气活。泡妞看起来表面光鲜，其中的酸甜苦辣只有自己知道。有MM的时候自然挺提神，提神过度难免神经衰弱，吃不香，睡不宁，这是典型的泡妞综合症。 <br /><br />第十二计：走狗计。这是普天下GG泡妞时用得最多的一条计，在MM眼睛的柔里，我宁愿做一条走狗，不计时间，不计名利，风雨无阻，无怨无悔。其实也挺有效的，走狗计实在是一条朴实无华的泡妞之计呀，推荐指数五星。 <br /><br />第十三计：台球计。记得有个段子，说女人和台球的区别，女人是杆进球不进，台球是球进杆不进。虽然泡妹妹的和打台球有区别，但目的都是进洞，虽然不能要求象戴维斯享得利基本上杆杆进洞，也得打几杆进一洞吧。台球计怎么样，不好说呀，泡妞如同打台球，十杆进一洞也是胜利。如果你泡妞只为她的心灵不为她的肉体，那整个大洋的GG都要佩服你的高境界。 <br /><br />第十四计：西游计。泡MM好比是师徒四人一马西天取经。泡妞时常不是一个人的事情，而是一群人的事情。一个泡妞三个帮，团结就是力量，大多数MM在群狼面前是没有招架之力的。成功要素是确定一个主泡手，不要妞未泡成，反而自家乱了阵脚，孔夫子有心得，GG之忧，不在泡妞，而在萧墙之内也。 <br /><br />第十五计：臭袜计。穿一个月不洗的袜子逻辑上比穿一天不洗的袜子要臭。一个月不泡妞的GG逻辑上要比一天不泡妞的GG劲头要足。这种劲头对MM来说诱惑力太大了，MM也需要尝鲜的。人活着就需要有活着的劲头，泡妞要有泡妞的劲头。 <br /><br />第十六计：卖柑计。杭有卖柑者，金玉其外，败絮其中，置于市,价十倍,抢购中。MM就是这样，哪怕她是草包，只要长的漂亮，总是泡者云集。虽然漂亮MM都是草包，但是想泡漂亮MM，GG就绝不能是草包。假如你是草包怎么办？很好办，你只需桃花运当头，泡她的GG比你更草包。 <br /><br />第十七计：两面计。外表绅士，暗地流氓，有这两种面孔的人，泡起妞来厉害得不得了。此计前人之途备矣，郎君不想续貂。只说中国的流氓文化。十个GG九个黄，还有一个是流氓。流氓皆是男人中的才俊之士，因此几千年来，流氓泡妞成功率一直居高不下。在诗经里借抱布贸丝泡妞的是小流氓，升官发财的是大流氓，当皇帝的是最大的流氓。你不要自吹泡的妞多，再多还多过皇帝吗？ <br /><br />第十八计：蝴蝶计。你和我是蝴蝶的双翅，停落时挨紧，飞翔时分离。此计运用到妙处，若即若离，如蝶舞动。这是程度较高的GG泡档次较高的MM常用手段。若即若离不是对MM忽冷忽热，而是你的一即一离都要牵动MM的芳心。动心——很奇妙的一件事呀！ <br /><br />第十九计：解牛计。庖丁解牛目无全牛，泡妞有了境界也会目无全妞。庖丁解牛十九年来，游刃有余，看到牛还怵然为戒，视为止，行为迟，动刀甚微；熟练的GG看到MM也都会小心翼翼的。庖丁刀下，牛如土委地；GG枪下，妞如土委地。特别注意，庖丁解牛刀十九年而刀刃若新发于硎，郎君不知道世上有没有GG泡妞十九年还枪如少年新的。泡妞慎之，慎之，泡妞天下之凶器，不得已而为之呀！ <br /><br />第二十计：画饼计。画饼当然是为了充饥。没有泡到MM，拿张MM的片片总是聊胜于无。郎君曾迷惑，把此计定为画饼计呢，还是望梅记呢？最后还是决定画饼吧，因为已经有情圣鱼丝画过饼了，想必画饼比望梅爽一些。望梅的滋味酸酸的，牙倒了可不妙。画饼容易泡妞难，年年画饼不是咱。 <br /><br />第二一计：唐诗计。熟读唐诗三百首，不会吟诗也会淫。爱的生说过，泡妞天才是百分之一的灵感加上百分之九十九的汗水。你流了百分之九十九的泡妞汗水，差不多已经是泡妞天才了。泡妞是个熟练活儿，没有泡到妞吗？不是你运气不好，而是你不熟练。有诗为证泡妞正当午，汗滴禾下土，谁知泡MM，个个皆辛苦。 <br /><br />第二二计：厕所计。不是教你偷窥上厕所的MM啊。你憋着SN的时候想上厕所，或者上厕所只是想在清净一下，抽根烟，然后呢？当然是离开，有谁BT想在厕所呆一辈子。你有很多种原因去泡妞，你有很多种原因把泡到的妞甩开。唉！这就是现实，未泡妞先打算甩妞，是GG的悲哀也是MM的悲哀 <br /><br />第二三计：苹果计。苹果砸脑袋，牛顿第一时间想到万有引力。MM经过面前，你要象牛GG学习，要在第一时间想到泡她。世间诸物道理相通，万有引力定理适用于泡妞定理，有漂亮MM经过时，GG总会感觉到万有引力。泡妞成功与GG质量成正比，距离成反比。你一时没有办法提高质量，只有想办法接近距离，近水楼台先得月，近身GG先得妞。其实MM没有人泡，也是挺寂寞的，让一个MM寂寞，简直是在犯罪。不信咱们可以在东方MM身上做个试验，一天不与东方MM打招呼，看东方MM什么反应。不过这个协议可能达不成，东方MM太招狼爱了。 <br /><br />第二四计：小鲜计。治大国如烹小鲜，泡妞如治国。老子的话意思不是说治大国象是烹小鱼一样容易，而是说烹小鱼时不能总是翻动，会把鱼翻烂的，讲的是无为而治。泡妞到了无为而泡的境界，当然是想泡谁就泡谁。不过无为的难度太大，对初学乍练的GG 只需要记得说话做事要三思而行，废话少说，闲淡事儿少做。每句话，每件事都要起到良好的泡妞效果，要搔到MM痒处，象烹小鲜一样，翻动不多，却是事半功倍。 <br /><br />第二五计：霸王计。郎君不是让GG们温习好《刑法》后搞rape。温柔对许多MM根本没有杀伤力，那就需要来个霸王硬上弓。初中物理教科书中提示我们，泡妞的阻力是恒定的，那泡妞力度越大，泡妞速度越快。当然你使霸王力的时候，一定会遇到MM 的阻力，你用的力一定要超过阻力，否则MM是不会就范的。能不能用霸王计，可以做个小测试，她在街上和一个男人手挽手逛，这时你敢不敢捧起她的脸吻一下，如果不敢，建议你用第二十计吧。 <br /><br />第二六计：睡觉计。如果泡妞萎靡不振，那就好好睡一觉去。你对她朝思暮想，衣带渐宽，她根本不会知道。当面她可以是主，背后就当她是猪好了。睡一觉去吧，明天你可以精神饱满地对她说昨夜一夜未睡，让她的心打鼓去吧。连睡觉都睡不好的GG，怎么能泡得好MM。可以毫不张地说，睡觉是检验泡妞心理素质的唯一标准。 <br /><br />第二七计：开心计。要泡妹妹得先到开心E族贫贫嘴，什么时候练得心花了，眼绿了，嘴油了，就可以泡妞去了。MM喜欢幽默的GG千古不变。梁锦松是怎么泡到伏明霞的，据伏明霞说，梁比较幽默。MM和你在一块儿开开心心的，这时候，你撵MM走，她都舍不得走。建议开心版弄个开心GG比赛，取得名次的皆可出师泡妞。 <br /><br />第二八计：牙婆计：如果没有红娘，张生泡不成莺莺；如果没有王婆，西门庆泡不成潘金莲。中介的力量真是强大呀。不要找GG为你牵线搭桥，顺手牵羊的教训太多了。郎君求学时曾与MM探讨过，要是张生泡红娘，西门庆泡王婆，世界将会怎样？ <br /><br />第二九计：秋鸿计。苏东坡告诫他侄女世上的常用泡妞手段是：人似秋鸿来有信，事如春梦了无痕。春梦无痕说的是三六计计中的最后一计，下文有交待。人似秋鸿说的是泡妞也得讲诚信，虽然女人的别名叫弱智，但女人感觉一向挺灵敏，诚信不诚信，她能感觉到。《礼记[$#8226]中庸》上说，诚者自成也。 <br /><br />第三十计：彩票计。买彩票为了中奖，虽然中奖的可能性很小。泡个好MM和买中头彩的难度差不多。有的GG不见兔子不撒鹰，有的GG的鹰吐血了还是没捕到兔子，但为了泡到合意的MM，GG们还是前赴后继。买彩票看彩经，泡妞看泡经，只能稳稳神罢了，总有总差那么一点的感觉。一道简单的几率题，身材好的MM一百个里也没一个，漂亮的MM一百个里面也没有一个，有素养的MM一百个里面也没有一个，一百的三次方是一百万，好妹妹是百万里挑一呀！。郎君忠告，中五块钱的彩票也是中彩，泡60分的妞也是泡妞。 <br /><br />第三一计：醉酒计。酒是色媒人，MM喝完酒容易搞定。可是现在很多GG不争气，喝酒喝不过MM。伤心ing，不愿多说。 <br /><br />第三二计：克螂计。屎克螂推粪球，武大郎玩夜猫子，什么档次的GG泡什么档次的MM，一般情况下是这样的，非要癞蛤蟆吃天蛾肉，别最后连苍蝇屎都吃不上。羡慕牛粪上插鲜花是正常的心理反应。可你别小瞧牛粪，他必有过人之处。赖汉取仙妻，表面风光，那赖汉背地里不知道承受了多少苦难，能娶到仙妻的赖汉，与伟人相去不远。 <br /><br />第三三计：守拙计。郭靖将守拙计运用得出神入化，所以武功练成了，黄蓉泡成了。非有大智慧不能用此计，郎君只是提一下这种现象罢了，真能达到大巧若拙境界的，哪里还用郎君教他怎么泡妞，都可以当郎君的老师了。郎君就没见过有真傻的小子能泡到好MM的。 <br /><br />第三四计：撞钟计。妞儿寂寞了，总是难免红杏出墙，所以你要时常恐固。做一天和尚撞一天钟，泡一天MM就要多讨好一天MM，不过现在MM挺复杂的，你就是天天临幸她，她也难免对别的GG投怀送抱，不过你对她好一点，她对别的GG投怀的次数少一点。长叹！这世道，出墙少的MM就是好MM，55555555555555555 <br /><br />第三五计：存酒计。郎君从来不会把酒储在一处，否则会酒到喝时尽空瓶，常用的方法是，某处存酒A，某处存酒B，某处……妞到用时方恨少，时常需要诸备一些备用。某处存MM甲，某处存MM乙，某处…… <br /><br />第三六计：飞翼计。苏东坡向侄女这样解释泡妞：“事如春梦了无痕”。李白说得狠：“事了拂衣去，深藏身与名”。GG常吟的一句诗，万花丛中过，片叶不沾身。郎君深明此理，所以将此计为压卷之计，三十六计，走都嫌慢，还是飞来得快</font>
		</div>
<img src ="http://www.cnitblog.com/gyn/aggbug/23444.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gyn/" target="_blank">gyn_tadao</a> 2007-03-01 20:23 <a href="http://www.cnitblog.com/gyn/archive/2007/03/01/23444.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>perl还是python</title><link>http://www.cnitblog.com/gyn/archive/2007/01/24/22267.html</link><dc:creator>gyn_tadao</dc:creator><author>gyn_tadao</author><pubDate>Wed, 24 Jan 2007 06:51:00 GMT</pubDate><guid>http://www.cnitblog.com/gyn/archive/2007/01/24/22267.html</guid><wfw:comment>http://www.cnitblog.com/gyn/comments/22267.html</wfw:comment><comments>http://www.cnitblog.com/gyn/archive/2007/01/24/22267.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/gyn/comments/commentRss/22267.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gyn/services/trackbacks/22267.html</trackback:ping><description><![CDATA[一度想转到python上的，但是总觉着就这样放弃perl实在有一些不值得。后来在写一个小工程的时候，又用到了perl，还是它比较方便。最近在看《高级perl编程》，的确是一本好书，好多内容是我以前不熟悉或者是模糊的。现在想来，还是先把perl学精通了，再涉足python的好。一来不至于把perl忘得太快，二来有些共通的地方也便于加深理解，最后毕竟在处理一些较小的工程时perl还是有其优势的。<img src ="http://www.cnitblog.com/gyn/aggbug/22267.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gyn/" target="_blank">gyn_tadao</a> 2007-01-24 14:51 <a href="http://www.cnitblog.com/gyn/archive/2007/01/24/22267.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一个直接运行c程序的东东－tiny C</title><link>http://www.cnitblog.com/gyn/archive/2006/12/12/20394.html</link><dc:creator>gyn_tadao</dc:creator><author>gyn_tadao</author><pubDate>Tue, 12 Dec 2006 00:37:00 GMT</pubDate><guid>http://www.cnitblog.com/gyn/archive/2006/12/12/20394.html</guid><wfw:comment>http://www.cnitblog.com/gyn/comments/20394.html</wfw:comment><comments>http://www.cnitblog.com/gyn/archive/2006/12/12/20394.html#Feedback</comments><slash:comments>8</slash:comments><wfw:commentRss>http://www.cnitblog.com/gyn/comments/commentRss/20394.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gyn/services/trackbacks/20394.html</trackback:ping><description><![CDATA[前段时间看见ibm上有人介绍tiny c，就下了一个试试，感觉不错，为了方便起见，又弄了一个bat。<br />比方说，我把tiny c安装在d盘根目录下，然后我在d盘里建个tiny的文件存放如下内容的名为tiny的bat文件：<br />@echo off<br />tcc -run -I d:/tcc/include -L d:/tcc/lib %1<br />然后在环境变量path中加入d:\tiny，然后就可以运行c脚本了。<br />写个hello, world，取名为hello.c，存在随便哪里。然后到cmd里，cd到那个文件夹下，再“tiny hello.c”，接着cmd里就会显示“hello, world”鸟。<br /><img src ="http://www.cnitblog.com/gyn/aggbug/20394.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gyn/" target="_blank">gyn_tadao</a> 2006-12-12 08:37 <a href="http://www.cnitblog.com/gyn/archive/2006/12/12/20394.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>分别用vbs、perl、python来操作文本</title><link>http://www.cnitblog.com/gyn/archive/2006/11/15/19177.html</link><dc:creator>gyn_tadao</dc:creator><author>gyn_tadao</author><pubDate>Wed, 15 Nov 2006 03:29:00 GMT</pubDate><guid>http://www.cnitblog.com/gyn/archive/2006/11/15/19177.html</guid><wfw:comment>http://www.cnitblog.com/gyn/comments/19177.html</wfw:comment><comments>http://www.cnitblog.com/gyn/archive/2006/11/15/19177.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/gyn/comments/commentRss/19177.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gyn/services/trackbacks/19177.html</trackback:ping><description><![CDATA[都是用来更新一个rm视频参数文件的。最早学asp的时候顺便用vbs写了一个，后来学perl就又写了一个，现在学python，凑活也写一个。基本上算是我的一个入门程序。用途就是用简单正则表达式找到时间段，再将它更新为当天日期，更新后的数据存在temp.txt中。perl最短，python比较干净。<br />vbs：<br />dim regOR<br />set regOR=new regexp<br />regOR.ignorecase=True<br />regOR.global=True<br />regOR.pattern="^([0-9]{1})$"<br />dim mytime<br />mytime=date<br />yy=year(mytime)<br />mm=month(mytime)<br />dd=day(mytime)<br />if regOR.test(mm) then<br />    mm=regOR.replace(mm,"0$1")<br />end if<br />if regOR.test(dd) then<br />    dd=regOR.replace(dd,"0$1")<br />end if<br />mytime=yy &amp; "-" &amp; mm &amp; "-" &amp; dd<br />dest=yy &amp; mm &amp; dd<br />pattern1="(.*[^0-9])([0-9]{4}\-[0-9]{2}\-[0-9]{2})([^0-9].*)"<br />pattern2="(.*[^0-9])([0-9]{8})([^0-9].*)"<br />regOR.pattern=pattern1<br />dim tempstring<br />Set fso = CreateObject("Scripting.FileSystemObject")<br />Set f = fso.CreateTextFile("d:\shixian\temp.txt", True)<br />Set fr = fso.GetFile("d:\shixian\shixian.rpjf")<br />Set ts = fr.OpenAsTextStream(1,-2)<br />do until ts.AtEndOfStream<br />    tempstring=ts.readline<br />    if regOR.test(tempstring) then<br />        tempstring=regOR.replace(tempstring,"$1" &amp; mytime &amp; "$3")<br />    end if<br />    regOR.pattern=pattern2<br />    if regOR.test(tempstring) then<br />        tempstring=regOR.replace(tempstring,"$1" &amp; dest &amp; "$3")<br />    end if<br />    regOR.pattern=pattern1<br />    f.writeline(tempstring)<br />loop<br />ts.close<br />f.close<br />set regOR=nothing<br />set ts=nothing<br />set fr=nothing<br />set f=nothing<br />set fso=nothing<br /><br />perl：<br />open(RPJF,"&lt;c:/code/10161.rpjf") or die("can not open because of $!\n");<br />open(TEMP,"&gt;c:/code/temp.txt") or die("can not open because of $!\n");<br />($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime();<br />$mday = sprintf("%.2d",$mday);<br />$mon = sprintf("%.2d",$mon+1);<br />$year += 1900;<br />$timerF = "$year"."$mon"."$mday";<br />$timerS = "$year"."-"."$mon"."-"."$mday";<br />while(&lt;RPJF&gt;){<br />    chomp();<br />    $_=~s/(.*)([0-9]{8})(.*)/$1$timerF$3/;<br />    $_=~s/(.*)([0-9]{4}\-[0-9]{2}\-[0-9]{2})(.*)/$1$timerS$3/;<br />    print TEMP "$_\n";<br />}<br />close(RPJF);<br />close(TEMP);<br /><br />python：<br />import re<br />import time<br /><br />pattern_name = re.compile(r'[0-9]{8}')<br />pattern_info = re.compile(r'[0-9]{4}\-[0-9]{2}\-[0-9]{2}')<br />(year, month, day) = time.localtime()[:3]<br />name = '%d%.2d%.2d' % (year, month, day)<br />info = '%d-%.2d-%.2d' % (year, month, day)<br /><br />try:<br />    file_rpjf = open('shixian.rpjf', 'r')<br />    file_temp = open('temp.txt', 'w')<br />    try:<br />        file_data = file_rpjf.readline()<br />        while file_data != '':<br />            file_data = pattern_name.sub(name, file_data)<br />            file_data = pattern_info.sub(info, file_data)<br />            file_temp.write(file_data)<br />            file_data = file_rpjf.readline()<br />    finally:<br />        file_rpjf.close()<br />        file_temp.close() <br />except IOError:<br />    pass<br /><img src ="http://www.cnitblog.com/gyn/aggbug/19177.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gyn/" target="_blank">gyn_tadao</a> 2006-11-15 11:29 <a href="http://www.cnitblog.com/gyn/archive/2006/11/15/19177.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>看看python吧</title><link>http://www.cnitblog.com/gyn/archive/2006/10/28/18544.html</link><dc:creator>gyn_tadao</dc:creator><author>gyn_tadao</author><pubDate>Sat, 28 Oct 2006 06:36:00 GMT</pubDate><guid>http://www.cnitblog.com/gyn/archive/2006/10/28/18544.html</guid><wfw:comment>http://www.cnitblog.com/gyn/comments/18544.html</wfw:comment><comments>http://www.cnitblog.com/gyn/archive/2006/10/28/18544.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/gyn/comments/commentRss/18544.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gyn/services/trackbacks/18544.html</trackback:ping><description><![CDATA[近年来python发展迅猛，无论在gui还是在web开发上渐渐显示出强大的实力。而perl却由于初期错误的开发方向，导致迟迟无法发布perl6。相比与python的蒸蒸日上、优秀的开发平台、活跃的社区，perl给人的感觉就是江河日下。单说wxwidget，perl版的连英文文档都少的可怜，而python早就有boa这样优秀的平台了；而在perl原先引以为傲的web开发领域，现在的perl又有多少发言权，所谓的成功案例永远都是亚马逊在线。难以驾驭大型项目更是perl的顽疾，越来越多的perler转向了python。虽然还是可以用缓慢而迟钝的pugs体验也许永远不会到来的perl6，但是还是会感到一些失落。<br /><img src ="http://www.cnitblog.com/gyn/aggbug/18544.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gyn/" target="_blank">gyn_tadao</a> 2006-10-28 14:36 <a href="http://www.cnitblog.com/gyn/archive/2006/10/28/18544.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ruby on Rails中添加对ibm DB2数据库的支持</title><link>http://www.cnitblog.com/gyn/archive/2006/08/20/15623.html</link><dc:creator>gyn_tadao</dc:creator><author>gyn_tadao</author><pubDate>Sun, 20 Aug 2006 13:11:00 GMT</pubDate><guid>http://www.cnitblog.com/gyn/archive/2006/08/20/15623.html</guid><wfw:comment>http://www.cnitblog.com/gyn/comments/15623.html</wfw:comment><comments>http://www.cnitblog.com/gyn/archive/2006/08/20/15623.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cnitblog.com/gyn/comments/commentRss/15623.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gyn/services/trackbacks/15623.html</trackback:ping><description><![CDATA[
		<p>Rails缺省没有对DB2的支持，倒是对mysql和postgresql支持得很全。事实上，用DB2来Rails的确不太配，但是有人用就该有相关得支持，还好<a href="http://raa.ruby-lang.org/project/ruby-db2">http://raa.ruby-lang.org/project/ruby-db2</a>里有相应程序得下载。这是google上搜出来的，但下下了却不知道咋装（偶刚摸ruby不久）。捣鼓了几下才发现，原来相当简单。<br />我是直接运行下载下来的包中的setup.rb文件的<br />ruby -w setup.rb<br />结果失败，显示如下：<br />setup.rb:714: warning: don't put space before argument paremtheses<br />unknown global option ''<br />try "ruby setup.rb --help" for usage<br />于是按照提示<br />ruby setup.rb --help<br />又得到一堆提示，选了其中一条安装命令试试<br />ruby setup.rb install<br />结果，又失败<br />setup.rb config first<br />try "ruby setup.rb --help" for usage<br />原来先要config过，接下来就一帆风顺了，依次键入<br />ruby setup.rb config<br />ruby setup.rb install<br />安装完了<br /></p>
<img src ="http://www.cnitblog.com/gyn/aggbug/15623.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gyn/" target="_blank">gyn_tadao</a> 2006-08-20 21:11 <a href="http://www.cnitblog.com/gyn/archive/2006/08/20/15623.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ruby symbol详解</title><link>http://www.cnitblog.com/gyn/archive/2006/08/13/15206.html</link><dc:creator>gyn_tadao</dc:creator><author>gyn_tadao</author><pubDate>Sun, 13 Aug 2006 11:17:00 GMT</pubDate><guid>http://www.cnitblog.com/gyn/archive/2006/08/13/15206.html</guid><wfw:comment>http://www.cnitblog.com/gyn/comments/15206.html</wfw:comment><comments>http://www.cnitblog.com/gyn/archive/2006/08/13/15206.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cnitblog.com/gyn/comments/commentRss/15206.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gyn/services/trackbacks/15206.html</trackback:ping><description><![CDATA[
		<p>
				<strong>起因<br /></strong>最近在学习ruby on rails，的确是一个优秀的数据库开发框架。但在过程中，发现在视图文件夹中的rhtml文件里有大量的类似于以下的语句：<br />&lt;td&gt;&lt;%= link_to recipe.title, :action =&gt; "show", :id =&gt; 1 %&gt;&lt;/td&gt;<br />这是一个指向链接，如果没有冒号这句话的意思很好理解：这是一个指向<a href="http://127.0.0.1:3000/recipe/show/1">http://127.0.0.1:3000/recipe/show/1</a>的连接，也就是“显示”数据库表recipe中“id”为1的条目的信息，但让人不解的是action和id前面的冒号，它们是干甚么用的？</p>
		<p>
				<strong>ruby面向对象特性的一个缺点<br /></strong>ruby中，一切皆是对象。就一个简单的字符串举例：<br />ruby -e 'puts "hello world".class'<br />String<br />这里打印了"hello world"的字符串所属的类，结果显示它是一个String对象的实例。我们还可以显示它的对象号。<br />ruby -e 'puts "hello world".object_id'<br />41436168<br />ruby一向标榜自己是完全的面向对象的原因就在于此，它的确做的很彻底。但是凡事有好就有坏，一个对象占用的内存空间显然会比纯粹的变量大得多，当程序中涉及到大量的字符串时，一个ruby程序会占用过多的内存。举个例子说：<br />我们用hash列表来存储歌曲的信息<br />song1 = { 'title' =&gt; 'used to love you', 'artist' =&gt; 'john legend'}<br />song2 = { 'title' =&gt; 'i still', 'artist' =&gt; 'backstreet boys'}<br />#......<br />#很多歌，这里只用两首<br />for i in 1..2<br /> thesong="song"+i.to_s<br /> eval &lt;&lt;-PROC<br /> #{thesong}.each_key { |key| puts key.object_id.to_s }<br /> PROC<br />end<br />结果：<br />41436144<br />41436408<br />41435904<br />41436000<br />因为object_id各不相同，在hash表中的各个key都是独立的String对象，即使内容相同（如'title'），ruby还是将其视为不同的对象，这样就无端地占用了不少内存。但事实上，大多数情况下，我们仅将hash中的key视为字段而已，不会涉及到String类的方法，ruby自动将其设置为对象有杀鸡用牛刀之嫌。</p>
		<p>
				<strong>symbol是什么<br /></strong>直译来说就是“符号”，在ruby就是形如:action这样的，一个冒号后跟一段字符串。显然，根据“一切都是对象”定律，它也是一个对象。<br />ruby -e ' puts :action.class '<br />Symbol<br />这个对象存在的意义在于，它解决了“同内容字符串，不同对象”带来的过多占用内存的问题。简单的说:action代表了'action'字符串，这里说的是字符串，不是字符串对象。<br />ruby -e ' puts :action '<br />action<br />更确切的讲就是一个symbol对象代表该对象的冒号后的字符串。<br />ruby -e ' puts :action '<br />action<br />ruby -e ' puts :"hello world" ' <br />hello world<br />所有同内容的字符串只需要一个标记对象就可以代替，这样减少了不必要的对象建立和内存占用。但是，正如我强调的“symbol代表的是字符串，不是对象”，因此不要希望标记可以使用String类的诸如capitalize，center等方法，如果使用的话只会得到提示方法未定义的错误报告：<br />ruby -e ' puts :action.capitalize ' <br />-e:1: undefined method 'capitalize' for :action:Symbol' (NoMethodError)<br />幸运的是，symbol提供了转换函数to_s用来生成一个字符串对象，它会提取字符串内容并将其升级为对象。<br />ruby -e ' puts :action.to_s.capitalize ' <br />Action<br />另外，很重要的一点是，symbol没有赋值方法，换句话说symbol一旦定义，将不能改变。<br />ruby -e ' :action="hello" ' <br />syntax error<br />很遗憾，即使使用了to_s，赋值依然无法顺利进行，因为ruby会认为“to_s=”是一个未定义函数。除非明确地为被转换生成的字符串对象指定一个引用（但事实上在复制之后该连接的指向又发生了变化）：<br />:action<br />myaction=:action.to_s<br />myaction="lala"<br />puts myaction<br />结果：<br />lala<br /><br /><strong>怎么使用symbol</strong><br />任何可以使用symbol的地方都可以使用与之向对应的字符串对象。在rails中有建立类似javabean的方法：<br />attr_reader :action<br />它建立了一个读取实例变量@action的方法，也可以写成这样：<br />attr_reader "action"<br />反之，只要<br />字符串在程序运行过程中不用改变<br />字符串不必使用String类方法<br />那么我们可以放心用symbol来代替字符串对象，从而大大减少内存的占用，在rails中尤为明显。因为需要频繁地在各个控制方法和页面之间跳转和传出数据，大量的方法名由symbol来代替，及节约了内存也提高了运行速度。</p>
<img src ="http://www.cnitblog.com/gyn/aggbug/15206.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gyn/" target="_blank">gyn_tadao</a> 2006-08-13 19:17 <a href="http://www.cnitblog.com/gyn/archive/2006/08/13/15206.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>行风热线网站服务器技术支持手册</title><link>http://www.cnitblog.com/gyn/archive/2006/06/13/12171.html</link><dc:creator>gyn_tadao</dc:creator><author>gyn_tadao</author><pubDate>Tue, 13 Jun 2006 06:25:00 GMT</pubDate><guid>http://www.cnitblog.com/gyn/archive/2006/06/13/12171.html</guid><wfw:comment>http://www.cnitblog.com/gyn/comments/12171.html</wfw:comment><comments>http://www.cnitblog.com/gyn/archive/2006/06/13/12171.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/gyn/comments/commentRss/12171.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gyn/services/trackbacks/12171.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 行风热线网站服务器技术支持手册																																																																				行风热线网站服务器技术支持手册																																						... 																								1			...&nbsp;&nbsp;<a href='http://www.cnitblog.com/gyn/archive/2006/06/13/12171.html'>阅读全文</a><img src ="http://www.cnitblog.com/gyn/aggbug/12171.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gyn/" target="_blank">gyn_tadao</a> 2006-06-13 14:25 <a href="http://www.cnitblog.com/gyn/archive/2006/06/13/12171.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tcl精鼎B5100上安装RH9的一些经验</title><link>http://www.cnitblog.com/gyn/archive/2006/05/22/10928.html</link><dc:creator>gyn_tadao</dc:creator><author>gyn_tadao</author><pubDate>Mon, 22 May 2006 13:57:00 GMT</pubDate><guid>http://www.cnitblog.com/gyn/archive/2006/05/22/10928.html</guid><wfw:comment>http://www.cnitblog.com/gyn/comments/10928.html</wfw:comment><comments>http://www.cnitblog.com/gyn/archive/2006/05/22/10928.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.cnitblog.com/gyn/comments/commentRss/10928.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gyn/services/trackbacks/10928.html</trackback:ping><description><![CDATA[之前是装过debian的，很方便的，但对中文的支持不好，所以就放弃了。<br />RH9已经很老了，所以一直担心对这台相对较新的电脑支持不好，事实上也验证了我的想法。<br />装完之后，显示器频率只能定在60Hz，相当闪烁。用redhat-config-xfreevid调了一下，不见效果。又在参数文件中锁定85Hz，重启还是没有用。到intel网站下载linux用显卡驱动，是tar.gz包，安装有点麻烦，但还算顺利，重启后依旧没用。最后想起在debian里时，好像是用的vesa驱动，立即试了一下，成功！<br />声卡无法检测，于是安装alsa万能驱动，重启后发现声卡，但检测发声不正常(放屁状)，只有升级内核，这就麻烦了，日后再说。<br />再root中service postgresql start，解锁postgres用户，重设密码，su进入后，createuser个人用户，允许createdb，不允许createuser，su个人用户。现在可以使用数据库了。<br />基本上还算可以，就是数据库版本老了点，7.3.4的。在postgresql官方网站上没用找到8.1.3的RH9安装包，连8.0的也没有，估计已经停止支持了。<br />凑活用吧～～:-&gt;<img src ="http://www.cnitblog.com/gyn/aggbug/10928.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gyn/" target="_blank">gyn_tadao</a> 2006-05-22 21:57 <a href="http://www.cnitblog.com/gyn/archive/2006/05/22/10928.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>利用批处理文件和vbs脚本实现网站视频自动录制</title><link>http://www.cnitblog.com/gyn/archive/2006/04/03/8611.html</link><dc:creator>gyn_tadao</dc:creator><author>gyn_tadao</author><pubDate>Mon, 03 Apr 2006 06:50:00 GMT</pubDate><guid>http://www.cnitblog.com/gyn/archive/2006/04/03/8611.html</guid><wfw:comment>http://www.cnitblog.com/gyn/comments/8611.html</wfw:comment><comments>http://www.cnitblog.com/gyn/archive/2006/04/03/8611.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/gyn/comments/commentRss/8611.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/gyn/services/trackbacks/8611.html</trackback:ping><description><![CDATA[
		<h2 style="margin: 13pt 0cm; text-align: center;" align="center">
				<span style="font-family: 黑体;">利用批处理文件和</span>
				<span lang="EN-US">
						<font face="Arial">vbs</font>
				</span>
				<span style="font-family: 黑体;">脚本实现网站视频自动录制</span>
		</h2>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">
				<b>
						<span style="font-family: 宋体;">关键字：</span>
						<span lang="EN-US">helix</span>
				</b>
				<b>
						<span style="font-family: 宋体;">，</span>
						<span lang="EN-US">vbs</span>
				</b>
				<b>
						<span style="font-family: 宋体;">脚本，批处理，压码参数文件</span>
						<span lang="EN-US">
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">
				<span lang="EN-US"> <o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span style="font-family: 宋体;">现在电视台基本上都有了自己的门户网站，我们可以充分利用网络的优势来扩大本地电视台的影响。事实上，将本地电视台的每日的王牌节目挂在网站上的做法已经成为建立电视台网站的必要组成步骤之一了。但随之而来的问题是：每天定时需要的手工录制过程，将给管理者带来极大的不便。在</span>
				<span lang="EN-US">windows</span>
				<span style="font-family: 宋体;">定时任务的基础上，将批处理程序与脚本程序有机的集合，就可以有效地解决这一问题。</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US"> <o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">
				<b>
						<span style="font-size: 14pt;" lang="EN-US">1</span>
				</b>
				<b>
						<span style="font-size: 14pt; font-family: 宋体;">：建立压码任务</span>
				</b>
				<b>
						<span style="font-size: 14pt;" lang="EN-US">
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span style="font-family: 宋体;">我们将使用一台带有视频采集卡的电脑来完成压码过程。虽然压码不是本文的重点，但还是有必要交代一下。主要就是使用</span>
				<span lang="EN-US">helix producer plus9</span>
				<span style="font-family: 宋体;">建立一个压码参数文件，事实上它只是一个带有</span>
				<span lang="EN-US">rpjf</span>
				<span style="font-family: 宋体;">后缀的</span>
				<span lang="EN-US">xml</span>
				<span style="font-family: 宋体;">文件（图</span>
				<span lang="EN-US">1</span>
				<span style="font-family: 宋体;">）。需要注意的是，音频输入选项有线路输入与</span>
				<span lang="EN-US">microphone</span>
				<span style="font-family: 宋体;">输入两种，这需要与实际的接入线路相吻合；另外，不必选择</span>
				<span lang="EN-US">2 pass vedio encoding</span>
				<span style="font-family: 宋体;">选项，选择它除了显示一个</span>
				<span lang="EN-US">warning</span>
				<span style="font-family: 宋体;">外不会有任何效果；再者，因为现阶段绝大多数的网络接入模式为拨号和</span>
				<span lang="EN-US">dsl</span>
				<span style="font-family: 宋体;">，所以只需要生成</span>
				<span lang="EN-US">56k</span>
				<span style="font-family: 宋体;">和</span>
				<span lang="EN-US">384k</span>
				<span style="font-family: 宋体;">码率的视频文件；最后，录制完成的视频文件，其名称最好用日期来标识，比如：</span>
				<span lang="EN-US">20060301.rm</span>
				<span style="font-family: 宋体;">。</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">&lt;?xml version="1.0" encoding="UTF-8"?&gt;<br />&lt;job xmlns="<a href="http://ns.real.com/tools/job.1.0.1">http://ns.real.com/tools/job.1.0.1</a>"&gt;<br />  &lt;enableTwoPass type="bool"&gt;false&lt;/enableTwoPass&gt;<br />  &lt;clipInfo&gt;<br />    &lt;entry&gt;<br />      &lt;name&gt;Author&lt;/name&gt;<br />      &lt;value type="string"&gt;ZSTV&lt;/value&gt;<br />    &lt;/entry&gt;<br />    &lt;entry&gt;<br />      &lt;name&gt;Copyright&lt;/name&gt;<br />      &lt;value type="string"&gt;(c) ZSTV2006 &lt;/value&gt;<br />    &lt;/entry&gt;<br />    &lt;entry&gt;<br />      &lt;name&gt;Keywords&lt;/name&gt;<br />      &lt;value type="string"&gt;ZSNews[2006-03-21]&lt;/value&gt;<br />    &lt;/entry&gt;<br />    &lt;entry&gt;<br />      &lt;name&gt;Title&lt;/name&gt;<br />      &lt;value type="string"&gt;ZSNews[2006-03-21]&lt;/value&gt;<br />    &lt;/entry&gt;<br />  &lt;/clipInfo&gt;<br />  &lt;input&gt;<br />    &lt;captureInput&gt;<br />      &lt;audioDeviceID type="string"&gt;Intel(r) Integrated Audio&lt;/audioDeviceID&gt;<br />.................................... <o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span style="font-family: 宋体;">我们可以建立一个名为</span>
				<span lang="EN-US">shixian.bat</span>
				<span style="font-family: 宋体;">的批处理文件来的调用上面所示的参数文件，内部具体如下：</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21.1pt;">
				<b>
						<span lang="EN-US">producer -j "d:\shixian\shixian.rpjf" -daw -lc "e,i"<o:p></o:p></span>
				</b>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span style="font-family: 宋体;">默认的录制过程会实时监控音频变化，并将它记录到一个叫</span>
				<span lang="EN-US">producer.log</span>
				<span style="font-family: 宋体;">的文件之中，但是产生的</span>
				<span lang="EN-US">wanging</span>
				<span style="font-family: 宋体;">记录很多，很快就使</span>
				<span lang="EN-US">log</span>
				<span style="font-family: 宋体;">文件变得巨大而且可能引起录制过程的意外中断，所以我们可以使用</span>
				<span lang="EN-US">-daw</span>
				<span style="font-family: 宋体;">参数关闭音频监视，再用</span>
				<span lang="EN-US">lc “e,i”</span>
				<span style="font-family: 宋体;">指明只记录错误和信息。这样做之后，录制过程就比较稳定了。</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span style="font-family: 宋体;">只要在计划中添加每日执行</span>
				<span lang="EN-US">shixian.bat</span>
				<span style="font-family: 宋体;">文件的任务，我们就会每天得到一个相同文件属性和名称的</span>
				<span lang="EN-US">rm</span>
				<span style="font-family: 宋体;">文件。在这里将每天产生一个带有</span>
				<span lang="EN-US">2006-03-21</span>
				<span style="font-family: 宋体;">属性的、名为</span>
				<span lang="EN-US">20060321.rm</span>
				<span style="font-family: 宋体;">文件。听起来很拗口，更糟糕的是这并没有减轻管理者的工作，因为他不得不每天打开服务器为其改名称。而且即便有幸雇佣了一名勤奋的管理员（他不介意每天做这样重复的事情），但他还是没办法更改文件中显示日期的属性，在这录制过程中已经决定了。除非</span>
				<span lang="EN-US">…….</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">
				<span lang="EN-US"> <o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">
				<b>
						<span style="font-size: 14pt;" lang="EN-US">2</span>
				</b>
				<b>
						<span style="font-size: 14pt; font-family: 宋体;">：建立修改压码参数文件的任务</span>
				</b>
				<b>
						<span style="font-size: 14pt;" lang="EN-US">
								<o:p>
								</o:p>
						</span>
				</b>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span style="font-family: 宋体;">原理很简单：每天更新压码参数文件中与日期相关的</span>
				<span lang="EN-US">xml</span>
				<span style="font-family: 宋体;">字段。在这个例子里是文件显示日期的属性和文件名。</span>
				<span style="font-family: 宋体;">下面就是用于更新日期字段的脚本代码：</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">dim regOR</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">set regOR=new regexp<span>           </span>‘</span>
				<span style="font-family: 宋体;">建立一个正则表达式对象</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">regOR.ignorecase=True<span>      </span><span>    </span>‘</span>
				<span style="font-family: 宋体;">忽略大小写</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">regOR.global=True<span>              </span>‘</span>
				<span style="font-family: 宋体;">搜索应用于整个字符串</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">regOR.pattern="^([0-9]{1})$"<span>     </span>‘</span>
				<span style="font-family: 宋体;">建立搜索模式为单数字表达式</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">dim mytime</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">mytime=date<span>                   </span>‘</span>
				<span style="font-family: 宋体;">用</span>
				<span lang="EN-US">date</span>
				<span style="font-family: 宋体;">函数达到系统日期，并赋值给</span>
				<span lang="EN-US">mydate</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">yy=year(mytime)<span>                </span>‘</span>
				<span style="font-family: 宋体;">提取系统日期中的年份</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">mm=month(mytime)<span>             </span>‘</span>
				<span style="font-family: 宋体;">提取系统日期中的月份</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">dd=day(mytime)<span>                </span>‘</span>
				<span style="font-family: 宋体;">提取系统日期中的日期</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">if regOR.test(mm) then<span>           </span>‘</span>
				<span style="font-family: 宋体;">检测月份是否为单数字（一月到九月）</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">mm=regOR.replace(mm,"0$1")<span>    </span>‘</span>
				<span style="font-family: 宋体;">如果是，则在月份前添加</span>
				<span lang="EN-US">0</span>
				<span style="font-family: 宋体;">使其成为两个数字</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">end if</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">if regOR.test(dd) then<span>            </span>‘</span>
				<span style="font-family: 宋体;">检测日期是否为单数字（一日到九日）</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">dd=regOR.replace(dd,"0$1")<span>      </span>‘</span>
				<span style="font-family: 宋体;">如果是，则在日期前添加</span>
				<span lang="EN-US">0</span>
				<span style="font-family: 宋体;">使其成为两个数字</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">end if</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">mytime=yy &amp; "-" &amp; mm &amp; "-" &amp; dd<span>   </span>‘</span>
				<span style="font-family: 宋体;">合并年月日为</span>
				<span lang="EN-US">”yy-mm-dd”</span>
				<span style="font-family: 宋体;">形式</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">dest=yy &amp; mm &amp; dd<span>                </span>‘</span>
				<span style="font-family: 宋体;">合并年月日为</span>
				<span lang="EN-US">”yymmdd”</span>
				<span style="font-family: 宋体;">形式</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">pattern1="(.*[^0-9])([0-9]{4}\-[0-9]{2}\-[0-9]{2})([^0-9].*)" </span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 157.5pt;">
				<span lang="EN-US">‘</span>
				<span style="font-family: 宋体;">设定模式变量</span>
				<span lang="EN-US">pattern1</span>
				<span style="font-family: 宋体;">为</span>
				<span lang="EN-US">”%d%d%d %d- %d %d -%d %d”</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">pattern2="(.*[^0-9])([0-9]{8})([^0-9].*)"<span>  </span>‘</span>
				<span style="font-family: 宋体;">设定模式变量</span>
				<span lang="EN-US">pattern2</span>
				<span style="font-family: 宋体;">为</span>
				<span lang="EN-US">8</span>
				<span style="font-family: 宋体;">个连续数字</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">regOR.pattern=pattern1<span>           </span>‘</span>
				<span style="font-family: 宋体;">建立搜索模式为</span>
				<span lang="EN-US">pattern1</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">dim tempstring</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">Set fso = CreateObject("Scripting.FileSystemObject")<span>   </span>‘</span>
				<span style="font-family: 宋体;">建立系统文件对象</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">Set f = fso.CreateTextFile("d:\shixian\temp.txt", True)<span>   </span>‘</span>
				<span style="font-family: 宋体;">新建名为</span>
				<span lang="EN-US">temp</span>
				<span style="font-family: 宋体;">的文本文件</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">Set fr = fso.GetFile("d:\shixian\shixian.rpjf")<span>          </span>‘</span>
				<span style="font-family: 宋体;">得到编码参数文件</span>
				<span lang="EN-US">shixian.rpjf</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">Set ts = fr.OpenAsTextStream(1,-2)<span>                 </span>‘</span>
				<span style="font-family: 宋体;">将参数文件以只读文本形式打开</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">do until ts.AtEndOfStream<span>                 </span>‘</span>
				<span style="font-family: 宋体;">建立循环，直到参数文件读取完毕</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">tempstring=ts.readline<span>                    </span>‘</span>
				<span style="font-family: 宋体;">以行为单位读取参数文件</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">if regOR.test(tempstring) then<span>              </span>‘</span>
				<span style="font-family: 宋体;">搜索改行参数是否存在日期字段</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">tempstring=regOR.replace(tempstring,"$1" &amp; mytime &amp; "$3")<span>  </span>‘</span>
				<span style="font-family: 宋体;">如存在，则更新</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">end if</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">regOR.pattern=pattern2<span>                   </span>‘</span>
				<span style="font-family: 宋体;">建立搜索模式为</span>
				<span lang="EN-US">pattern2</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">if regOR.test(tempstring) then<span>              </span>‘</span>
				<span style="font-family: 宋体;">搜索改行参数是否存在日期字段</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">tempstring=regOR.replace(tempstring,"$1" &amp; dest &amp; "$3")<span>  </span>‘</span>
				<span style="font-family: 宋体;">如存在，则更新</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">end if</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">regOR.pattern=pattern1<span>                  </span>‘</span>
				<span style="font-family: 宋体;">重新建立搜索模式为</span>
				<span lang="EN-US">pattern1</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">f.writeline(tempstring)<span>                   </span>‘</span>
				<span style="font-family: 宋体;">将更新后的数据写入</span>
				<span lang="EN-US">temp.txt</span>
				<span style="font-family: 宋体;">文件</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">loop</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">ts.close<span>                               </span></span>
				<span style="font-family: 宋体;">‘以下是关闭和注销各个对象</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">f.close</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">set regOR=nothing</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">set ts=nothing</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">set fr=nothing</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">set f=nothing</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">set fso=nothing</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span style="font-family: 宋体;">要说明的是为什么要在单数字的月份和日期前加</span>
				<span lang="EN-US">0</span>
				<span style="font-family: 宋体;">。打个比方比较容易说明：如果不加</span>
				<span lang="EN-US">0</span>
				<span style="font-family: 宋体;">，那么对于一个名为</span>
				<span lang="EN-US">2006111.rm</span>
				<span style="font-family: 宋体;">的文件，它究竟是指</span>
				<span lang="EN-US">2006</span>
				<span style="font-family: 宋体;">年</span>
				<span lang="EN-US">1</span>
				<span style="font-family: 宋体;">月</span>
				<span lang="EN-US">11</span>
				<span style="font-family: 宋体;">日还是</span>
				<span lang="EN-US">2006</span>
				<span style="font-family: 宋体;">年</span>
				<span lang="EN-US">11</span>
				<span style="font-family: 宋体;">月</span>
				<span lang="EN-US">1</span>
				<span style="font-family: 宋体;">日呢？加</span>
				<span lang="EN-US">0</span>
				<span style="font-family: 宋体;">后变成</span>
				<span lang="EN-US">20060111.rm</span>
				<span style="font-family: 宋体;">就一目了然了，是前者。</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span style="font-family: 宋体;">以上这段脚本代码的具体功能是将参数文件中的数据以行为单位导入到一个临时的文本文件中，实时监视与时间相关的</span>
				<span lang="EN-US">xml</span>
				<span style="font-family: 宋体;">字段并加以更新，最后在生成一个</span>
				<span lang="EN-US">temp.txt</span>
				<span style="font-family: 宋体;">的文件。之后我们要做的无非就是用一个批处理文件调用脚本，再删除旧的参数文件，最后将</span>
				<span lang="EN-US">temp.txt</span>
				<span style="font-family: 宋体;">重命名为参数文件。</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span style="font-family: 宋体;">这就是</span>
				<span lang="EN-US">update.bat</span>
				<span style="font-family: 宋体;">批处理文件中的代码：</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">@echo off</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">d:\shixian\update.vbs</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">if exist "d:\shixian\shixian.rpjf" del "d:\shixian\shixian.rpjf"</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">if exist "d:\shixian\temp.txt" rename d:\shixian\temp.txt shixian.rpjf</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span style="font-family: 宋体;">和第一节中一样，还是要将这个</span>
				<span lang="EN-US">update.bat</span>
				<span style="font-family: 宋体;">的批处理文件添加到计划与任务中，以便每日定时启动。</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">
				<span lang="EN-US"> <o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">
				<b>
						<span style="font-size: 14pt;" lang="EN-US">3</span>
				</b>
				<b>
						<span style="font-size: 14pt; font-family: 宋体;">：建立自动传输任务</span>
				</b>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span style="font-family: 宋体;">为了确保稳定，通常压码服务器与网站服务器是分离的，这就需要我们每日将录制的视频文件传输到网站服务器上。批处理文件中的</span>
				<span lang="EN-US">ftp</span>
				<span style="font-family: 宋体;">命令可以完美的实现这一功能。</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span style="font-family: 宋体;">以下就是</span>
				<span lang="EN-US">transfer.bat</span>
				<span style="font-family: 宋体;">批处理中的代码：</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">@echo off</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">ftp -s:media.txt</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">if exist "d:\shixian\shixian20060321.rm" del d:\shixian\shixian20060321.rm</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span style="font-family: 宋体;">考虑到</span>
				<span lang="EN-US">SCSI</span>
				<span style="font-family: 宋体;">硬盘惊人的价格，压码服务器的硬盘空间不必太大，最后一行的作用就是删除压码服务器中的视频文件，以节省空间。</span>
				<span lang="EN-US">Media.txt</span>
				<span style="font-family: 宋体;">是一个</span>
				<span lang="EN-US">ftp</span>
				<span style="font-family: 宋体;">参数文件，其中记录了</span>
				<span lang="EN-US">ftp</span>
				<span style="font-family: 宋体;">登陆服务器的名称、用户名、密码和相关的操作，具体形式如下：</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">open /</span>
				<span style="font-family: 宋体;">服务器名称或</span>
				<span lang="EN-US">IP</span>
				<span style="font-family: 宋体;">地址</span>
				<span lang="EN-US">/</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">/</span>
				<span style="font-family: 宋体;">用户名</span>
				<span lang="EN-US">/</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">/</span>
				<span style="font-family: 宋体;">用户密码</span>
				<span lang="EN-US">/</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">put /</span>
				<span style="font-family: 宋体;">要传输的文件名</span>
				<span lang="EN-US">/</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">quit</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span style="font-family: 宋体;">很明显，以上的各段代码中不乏需要更新的日期文字表达式。同样的道理，我们也需要使用一个类似的更新脚本，具体代码就不重复了。</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US"> <o:p></o:p></span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt;">
				<b>
						<span style="font-size: 14pt;" lang="EN-US">4</span>
				</b>
				<b>
						<span style="font-size: 14pt; font-family: 宋体;">：一些改进的意见</span>
				</b>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">1</span>
				<span style="font-family: 宋体;">：使用</span>
				<span lang="EN-US">media player</span>
				<span style="font-family: 宋体;">也可实现压码的功能。</span>
		</p>
		<p class="MsoNormal" style="margin: 0cm 0cm 0pt; text-indent: 21pt;">
				<span lang="EN-US">2</span>
				<span style="font-family: 宋体;">：在更新脚本中，用在声明和注销对象上的代码有好几行，如果使用</span>
				<span lang="EN-US">perl</span>
				<span style="font-family: 宋体;">可以大为简化。因为是</span>
				<span lang="EN-US">perl</span>
				<span style="font-family: 宋体;">提供了一系列操作符号来实现正则表达式的功能，而事实上</span>
				<span lang="EN-US">perl</span>
				<span style="font-family: 宋体;">就是为了处理文本而生的。<br /></span>
				<span lang="EN-US">open(RPJF,"&lt;c:/code/10161.rpjf") or die("can not open because of $!\n");<br />open(TEMP,"&gt;c:/code/temp.txt") or die("can not open because of $!\n");<br />($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst)=localtime();<br />$mday=sprintf("%.2d",$mday);<br />$mon=sprintf("%.2d",$mon+1);<br />$year+=1900;<br />$timerF="$year"."$mon"."$mday";<br />$timerS="$year"."-"."$mon"."-"."$mday";<br />while(&lt;RPJF&gt;){<br />chomp();<br />$_=~s/(.*)([0-9]{8})(.*)/$1$timerF$3/;<br />$_=~s/(.*)([0-9]{4}\-[0-9]{2}\-[0-9]{2})(.*)/$1$timerS$3/;<br />print TEMP "$_\n";<br />}<br />close(RPJF);<br />close(TEMP);<br />3</span>
				<span style="font-family: 宋体;">：使用磁盘映射能够更加方便的实现文件的传输，不过需要考虑安全问题。</span>
		</p>
<img src ="http://www.cnitblog.com/gyn/aggbug/8611.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/gyn/" target="_blank">gyn_tadao</a> 2006-04-03 14:50 <a href="http://www.cnitblog.com/gyn/archive/2006/04/03/8611.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>