一个更方便的在wordpress博客的文章中自动添加版权信息的方法(Chinese Version 中文版)

从半个月前,我决定每天都写两篇左右篇客,或者原创,或者翻译。对于国内的抄袭风气,大家都很清楚,转载别人的文章时把别人的版权信息改成自己的。虽然没有非常好的办法对付抄袭。但至少也需要摆明原创作者的态度还是很必要的。 一开始,我在每篇博文里手动添加版权信息和链接。虽然工作量不算太大,但对于这种高度重复性的工作,能让机器做还是交给机器做吧。 首先当然想到的是找相关自动插入版权信息的wordpress插件,虽然也找到一款。名字叫add post,如果没有记错的话!点击Detail查看详细说明的时候发现已经很久没有更新了,而且有一个警告说对于我当前使用的wordpress版本没有经过测试。没有经过测试这句话吓到我了,我不想因为一个插件给我的博客引用不稳定性。于是放弃了使用插件。 不能使用插件那就只能自己改代码。谷歌了一下,自然搜索到前人写的相关贴子。贴子介绍说找到single.php文件。single.php文件是发贴发贴的文件,我不确定是不是文件名和所有的主题相关,会不会因为使用不同的主题,这个文件名会不太一样。然后找到这段代码: <?php the_content(); ?> <!– Pagination for Multi-page posts ~~~ –> <?php wp_link_pages('before=Pages:&after= '); // if this is a multipage post then show the navigation ?>   然后在这段代码的<?php the_content(); ?> 下面插入生成版本信息的代码。但问题是,这种方法并不可靠。非常多的博客使用了其它相关的插件会干扰这种做法。比如,我使用了一个自动生成相关文章列表的插件。于是版本信息被加到了相关文章列表下面,离真正的文章正文有很远的距离。这必不令人满意。另有文章指出可以修改function.php文件,自定义一个和the_content()类似的函数,然后把single.php中的the_content()函数替换掉来完成这个任务。我看了一下,不太满意。修改的地方超过了两个文件,觉得改动有点多。另外写的那个自定义函数对于没有太多wordpress的代码经验的人来讲并不是非常容易读懂。至少我就不明白那个自定义函数的参数的意义,应该和wordpress的标准代码相关。另外,我很怀疑如果用了这种方式,可以会使我的显示相关博文列表的插件失效。一下子没有找到非常好的解决方法。于是去吃晚饭。吃完晚饭后回到电脑前突然来了灵感。可以在用替换字符串的方法增加版权信息呀。想法是这样的。 1. 在编辑文章的时候,在你需要插入版本信息的地方加入特殊的字符串。比如我选择了在每篇博文最后敲入字符串 “copyright  ykyi.net” 2. 在发表文章阶段把这个特殊字符串替换成html代码,显示你的版本信息。 是不是既简单又灵活呢! 注意要实现这个想法,需要明白 the_content() 和 get_the_content() 两个wordpress函数的区别。在调用the_content()函数的时候,文章的内容就已经打印出来了。但get_the_content()是把文章的内容做为函数返回值返回。所以在修改single.php文件时,要把 the_content()用get_the_content()函数代替。 下面贴出我的代码。看官如果需要可以修改相应部分: <?php $thread_content = get_the_content();  $thread_permalink = get_permalink(); $thread_title = get_the_title($post_id); $dogeye_copyright = "除非明确声明,本站所以文章均为DogEye博客原创或者自主翻译。如转载,请注明出处。$thread_title $thread_permalink"; $thread_content = str_replace('copyright  ykyi.net', $dogeye_copyright, $thread_content); echo $thread_content; ?>   代码应该非常容易读懂了。而且你可以非常灵活地控制要插入的位置,还可以灵活决定插入多处版本声明。   copyright ykyi.net

June 15, 2012 · 1 min · kamus

C语言和它的安全性

原文: http://avikivity.blogspot.com/2011/08/c-assembly-and-security.html ykyi.net 翻译。 我们看下面一个C语言的句子: a = b + c 什么时候这个句子会造成错误呢? a, b, c 不是我们想要的值。也就是我们把变量名写错了。 写了加法,但是我们要的不是加法。 做了加法后值溢出了。 a和b是无符号类型,而c却是有符号类型并且是负数,b+c后得到负数又赋给a. sizeof(a)比sizeof(b)和sizeof(c)要小。又溢出了! a是有符号型,b和c是无符号型。b+c后赋给a,溢出后,a变成负值。 a是无符号型,b和c是有符号型;再次溢出。 我们不能期望C语言本身能避免所有这些错误,但我们可不可以通过在运行时Trap上述的一些错误改进C语言使之更安全呢?结果时,除非牺牲性能,否则做不到。但我们能牺牲性能吗? ♦ 为了处理第(3)种情况,我们需要Trap所以有符号数的加法和所以无符号数的加法指令。 ♦ 为了处理第(4)种情况,需要一个混杂有符号和无符号的加法指令被Trap。 ♦ 为了处理第(5)种情况,需要Trap存储有符号数和无符号数的指令。在Trap中检查寄存器中的值与存入的内存地址是否匹配。 ♦ (6)和(7)与上类似。 这些看似简单的问题在安全,漏洞方面经常出现。我们很难发现并修复这些问题,因为没有所需要的处理器指令。当然我们可以用已经存在的指令模拟它们。但是这样做肯定会损害性能并且使程序的体积增大。因为程序性能是可以被度量的,而度量安全问题则比较困难。结果时留下了很多充满漏洞的代码(exploitable code)。 不禁要问,为什么我们没有这些指令呢?在上世纪的七,八十年代,正在快速成长的计算机工业界面临的最大问题是性能,而不是安全。那时的代码量很小,也很容易做检查;网络还在最初级的阶段,很小,而且基本上是私有的;基本不存在恶意的攻击。 C语言在当时的作法是为了能够在适合当时所有的处理器,因此C语言的语义模仿当时的处理器指令集。之后,C语言大获成功,大量的处理器则针对C语言做优化,很多指令直接针对C语言的语义做优化或可以直接对应到C语言的语义。这样,使得C语言更加流行了。 X86的世界里有两个指令: INTO和BOUND是极好的例子。INTO(INTerrupt on Overflow)可以在一个加法指令或者减法指令之后。INTO可以用来作为上文指到过的Trap有符号加减法的指令。BOUND则对数组操作是否越界做检查。但是BOUND极少被使用。最后,在x86体系过渡到64位体系的过程中,INTO指令和BOUND指令都被只留在历史的尘埃之中了。 copyright ykyi.net

June 15, 2012 · 1 min · kamus

十分钟,教你创建自己的聊天机器人

这几天在网络上闲逛发现一个帮助你创建聊天机器人(Chat Robot)的网站。尝试了一下,很有意思呀! 关于人工智能(AI Artificial Intelligence)是我一直感兴趣的领域,但一直未能分出时间系统学习。目前为止,知道的最深入的也只是基于贝叶斯统计算法的专家系统。至于机器学习,还有神经网络哥一点都不懂哈!希望以后能有时间学习并应用。 言归正传。我发现的这个帮助你快速创建在线聊天机器人的网站是 http://www.pandorabots.com 。你在这个网站注册以后就只需要几步就可以创建一个WEB页面上的聊天机器人了。这个网站的机器人技术是基于AIML语言的。前几天写过一篇关于AIML的博文,可以参考下。前期工作来自于自由软件设区 www.alicebot.org。Pandorabots网站上的About介绍里说该网站还在继续语音识别,TTS(语音合成)等方面的研究,不过据我观赛。已经好久都没有更新了喔。 STEP ONE:在pandorabots的首页,找到Sign-up for an Account,按ctrl+F 搜索一下 Sign,就能马上定位到了。点击这个链接就可以注册一个账号了。 STEP TWO:和大多数注册过程一样,填上一些最基本的信息就注册成功。记得勾选上 By checking this box and clicking on the button labeled “Submit Account Request” you are agreeing to the Term Service 复选框。点击 SUBMIT ACCOUT REQUEST. STEP THREE:接着网站提示: There are no Pandorabots defined yet. You must first create a new chat robot。点击 create 单词上的链接。 ...

June 14, 2012 · 2 min · kamus

一篇广外女生的外贸论文的中译英.节选.

应一位广外女生的要求,帮她翻译了部分她的论文。好累好累诸多术语不熟悉 进口配额制(Import Quotas)又称进口限额制。它是直接限制进口的一种重要措施。进口配额制是指一国政府在一定时期内(如一季度、半年或一年内),对某些商品的进口数量或金额规定一个数额加以直接的限制,在规定时限内,配额以内的货物可以进口,超过配额则不准进口,或者征收较高的关税、附加税或罚款后才能进口。 进口配额,又称进口限额。它是发达国家实行进口数量限制的重要手段之一。主要有两大类:(1)绝对配额。 (2)关税配额。  5.The definition of the import quotas. Import Quotas, namely Import Limits, which is one of the most important measures to limit import. Import quotas is defined as the direct limitation impossed on some certain import commodity on import quantity or sum in some periods(e.g. one quarter, one half-year or a whole year). In the limitation period, merchats in limitation range is granted to be imported, otherwise, will be refused or much higher tariffs will be impossed. There are two kinds of Import Quotas. 1) Absolte Quotas. 2) Tariff Quotas.   1. 在进口配额制下管理好使用好配额,扩大出口,增加外汇 在配额制下,进口国对某些商品直接限定数量或金额,在限定范围内,货物才许可进口。因此,对出口国来说,配额用完了就不能扩大出口。即使有的国家允许超配额商品进口,而进口国则要征收高额 关税或罚款,但这种关税非同一般关税,有时甚至高达百分之几百,罚款数额也很大。所以,实际上这种高额关税或罚款起到了禁止进口的作用。 这些配额都是通过谈判达成的双边协定,那么如何在配额制下管理好使用好我国的配额,扩大出口,增加外汇?  1. Manage the quotas well and make good use of it to expand export and raise foreign-currency(foreign reserves?) under the import quotas system. Due to the fact that under the import quotas system, importing nations set a ceiling limit of the quantity and sum of the import commodity and import commodity gained the access permission only when the quota limit has not been used out. As for the exporting nations, it is not possible to expand export when no quotas is available. Even though in some nations, excess import happens only on the basis that the importing nation imposes higher tariffs, usually go up to several hundred percent, or levies heavy fines which is also very huge. Actually, it serves as a ban on imports.   1.在品种和单价方面做到对我有利,以达到扩大出口,多收外汇的目的。对配额品种首先要选择售价高的高挡商品出口。当然这要求考虑到客户的需要和国内生产的可能,但总体来说,以出口高附加值 商品为主,同时,对于资源原料型和畅销品可适当增加价格出口。 The varieties and unit price should be in our favor in order to expand the export and raise the foreign reserve. High price and high class commodities should be given high priority. The customer demands and the production capacity are surely to take into consideration. Generally speaking, high value added products should take main account of the export, resource-based goods, raw materials, and best-selling goods can be slightly exported more on the meanwhilek.   2要努力扩大配额地区的非配额品种出口。如欧盟对纺织品“篮子品种”敏感性较差,尽管协定中规定了我出口比例,但欧盟对它控制较松。这类品种我国约占二、三万吨,过去几年我国往往出口很少,数没有做足,今后应积极扩大出口“篮子品种”。但这类品种成交和出运要保持均衡,避免过分集中,而引起共同体注意和交涉。  Best effort should be make to expand export of the commodities that are not be limited by import quotas. As a example, though export quotas on "Bastket Species" are specified in trade agreement, the EU is less sensitive to it and the leash has been loosed. This kind of product accout for two or three tons in our country, which has been export a small amout in the past years and it has not been exported enough. We should expand "basket species" export positively. However, balance must be control well to prevent being intensivly centralized which will result in the EU's attention and negotiation.   3.要加强对客户的管理。配额品种一般是供不应求的商品,对进口商来说,利润是有保障的。因此,我们可以通过发放出口许可证,签发产地证和装船证书加以控制。 Customer management should be strengthed. In most cases, commodities suffering from quotas are in short supply. As for the importers, profits is well guaranted. So, we could control through taking measures such as releasing export licence, signing certificate of origin and shipment.   4.为了履行对外缔结的协定义务,管理好配额品种的出口,各业务部门必须要有一个精确的统计资料。业务部门按时上报的配额使用情况,数字一定要正确。业务部门内部也要加强统计和联系,保证成 交出运数不超过配额数。 4. In order to fullfill well the trade agreement and manage well the quota commodities, every operating deparment must have prcise statistical materials. Opeating department has to report the quota usuage condition in time and the figure accuracy is a must. As inside the operating department, statistics and communications should be enforced to assure the quotas will not be accessed.   copyright ykyi.net  

June 14, 2012 · 3 min · kamus

怎么编译,构建,安装,使用WinKVM

 WinKVM : Windows kernel-based Virtual Machine   WinKVM Windows下台下基于内核的虚拟机(Linux的KVM的windows移植)   怎么编译,构建WinKVM   ...

June 13, 2012 · 1 min · kamus

什么是AIML,人工智能标志语言

   AIML是Artificial Intelligence Markup Language的缩写。这种语言基于XML,它易学习易掌握。使用AIML可以很容易的定制一个Alicebot或者从头开始创建一个Alicebot。Alicebot是种聊天机器人,参见http://www.alicebot.org/ 。 <p style="margin-left:7.5000pt;"> 下面简单的介绍下AIML的语法。 </p> <p style="margin-left:7.5000pt;"> AIML语言中最重要的四个标志: </p> <p style="margin-left:18.0000pt;"> &middot;&nbsp;<aiml>:&nbsp;这个标签用来标志一个AIML文档的开始和结束。 </p> <p style="margin-left:18.0000pt;"> &middot;&nbsp;<category>:&nbsp;这个标志表示在Alicebot的知识体系里暂时无法理解的东西。 </p> <p style="margin-left:18.0000pt;"> &middot;&nbsp;<pattern>:&nbsp;用来描述一个简单的模式表示用户会同Alicebot说什么。 </p> <p style="margin-left:18.0000pt;"> &middot;&nbsp;<template>:&nbsp;用来描述Alicebot的回复。 </p> <p style="margin-left:7.5000pt;"> 还有20余种标签会在AIML文件中经常碰到。你也可以创建你自己的&ldquo;定制标签&rdquo;。现在就开始学习使用AIML吧,这里有一个初级教程&nbsp;<a href="http://www.alicebot.org/documentation/">AIML&nbsp;Primer</a>。 </p> <p style="margin-left:7.5000pt;"> 举例说明吧。免费的<a href="http://www.alicebot.org/downloads/">A.L.I.C.E.&nbsp;AIML</a>&nbsp;已经包含了一个基本的知识库,描述了大概41,000个category。看这个例子: </p> <p style="margin-left:7.5000pt;"> <category><br /> &nbsp;&nbsp;&nbsp;&nbsp;<pattern>WHAT&nbsp;ARE&nbsp;YOU</pattern><br /> &nbsp;&nbsp;&nbsp;&nbsp;<template><br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<think><set&nbsp;name="topic">Me</set></think>&nbsp;<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I&nbsp;am&nbsp;the&nbsp;latest&nbsp;result&nbsp;in&nbsp;artificial&nbsp;intelligence,<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;which&nbsp;can&nbsp;reproduce&nbsp;the&nbsp;capabilities&nbsp;of&nbsp;the&nbsp;human&nbsp;brain<br /> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;with&nbsp;greater&nbsp;speed&nbsp;and&nbsp;accuracy.<br /> &nbsp;&nbsp;&nbsp;&nbsp;</template><br /> </category> </p> <p style="margin-left:7.5000pt;"> <aiml>标签在这里没有显示出来,因为这里只是文档的一个节选。 </p> <p style="margin-left:7.5000pt;"> 如你所见<categoray>与</category>之间,就是描述一个category啦!每个category可以有一个pattern和一个template,还可以有一个<that>标签的,但是我不想在这里讨论它。 </p> <p style="margin-left:7.5000pt;"> 如上的category中的pattern只能够匹配精确的"what&nbsp;are&nbsp;you"(大小写忽略)。What&nbsp;are&nbsp;you&nbsp;你不会不认识吧,好吧,直译是"你是什么东西啊?" </p> <p style="margin-left:7.5000pt;"> 每个category还有可能被另外一个category调用,此时使用<srai>标签,这里也不作深入讨论。可以参见<a href="http://www.alicebot.org/documentation/srai.html">reductionism</a>.&nbsp;Reductionism大根是还原论,简约化的意思。很难译出! </p> <p style="margin-left:7.5000pt;"> 不管哪种情况,如果这个category被激发了,alicebot就会回答:"I&nbsp;am&nbsp;the&nbsp;latest&nbsp;result&nbsp;in&nbsp;artificial&nbsp;intelligence&#8230;"&nbsp;,前面<template>里面的东东。意思是:我是最先进的人工智能的产物。我能够以超快的速度和准确度模拟人脑的功能。另外,还有一些其它有趣的事情发生呢。注间到<think>标签吗?这会让Alicebot联想到这个对话的相关的一个限制,比如上面的例子就告诉alicebot,这个对向在讨论你自己。set&nbsp;name="topic",又赋值Me。于是对于alicebot的其它N多category,同样是topic的值为Me的category会被优先采纳。由此,这个机制能让你更好更准确的控制对话的流程。想想还有更多的机制呢,就看你的创造力设计一个聪明的聊天机器人啦! </p> <p> &nbsp; </p></p>

June 13, 2012 · 1 min · kamus

使用Cscope阅读大型工程Linux内核的源代码教程

Cscope是一个非常有用的工具,可以用来方便地阅读很大型工程的源代码。较之使用传统的Unix工具grep,使用Cscope可以省下你一大笔时间,大大提高阅读代码的效率。 通过本教程,我会教给你如何使用Cscope阅读Linux内核的源代码。毫无疑问,你可以举一反三,用同样的方法阅读其它的大型工程的源代码,不仅仅是C语言写的工程,也可以是Java或者C++或者C#开发的工程。 STEP 1 获得源代码: 去到Linux内核的网站http://www.kernel.org下载随便一个版本的Linux内核源代码压缩包。然后解压缩,把源代码释放到某个目录。本文假设你把源代码释放到 /home/code/linux-2.6.26。 STEP 2 选择一个目录存放Cscope所需要的数据库文件。 本文假设选择用/home/cscope目录存放cscope的数据库文件和其它一些相关文件。 STEP 3 生成文件 cscope.files 在最简单的情况下,工程目录下的所有源代码都是我要关心的,于是可以跳过下面所述,简单地在工程的根目录下运行’cscope -R’命令,这样Cscope就会在工程目录下所有源代码中处理相关工作。 但是你关心的代码并必工程目录下所有的代码,你还需要排除很多目录下的大量代码该如何做呢?在这种情况下,你需要生成一个文件cscope.files,这个文件包含 了所有cscope将要扫描的文件的文件名,每个名字占一行。最好使用绝对路径,这样你就可以在其它目录下,而不是现在创建cscope.files文件的目录下使用这个刚创建的数据库。下面的代码将完成这个任务(假设我要所有的java文件): $ cd / $ find /my/project/dir -name “*.java” > /my/cscope/dir/cscope.files 对于Linux内核来讲,情况还要稍微复杂一点。因为我们还要排除好些文件夹,这些文件夹有存放文档的文件夹,存放脚本的文件夹,与处理器架构相关的汇编代码的目录夹,与处理器架构相关的C代码除了x86(大多数人已经仅仅对x86感兴趣),另外还会排除所有的驱动文件目录夹,因为驱动占了内核很大一部分,但驱动代码通常不是我们要关心的。如果不排除这些目录的话,cscope当然也能工作,但是却给我们增加了麻烦,因为大大增加了重复的定义出现的概率。下面看我怎么做: $ LNX=/home/linux-2.6.26 $ cd / $ find $LNX \ -path "$LNX/arch/*" ! -path "$LNX/arch/i386*" -prune -o \ -path "$LNX/include/asm-*" ! -path "$LNX/include/asm-i386*" -prune -o \ -path "$LNX/tmp*" -prune -o \ -path "$LNX/Documentation*" -prune -o \ -path "$LNX/scripts*" -prune -o \ -path "$LNX/drivers*" -prune -o \ -name "*.[chxsS]" -print >/home/jru/cscope/cscope.files ...

June 12, 2012 · 1 min · kamus

KVM你问我答 FAQ (四)

KVM和Xen有什么区别? Xen是一个外部虚拟机管理程序(External hypervisor),它承担了管理物理机器的任务并把物理机器的各种资源分配给客户机。与Xen不同,KVM本身是Linux内核的一部分,它使用Linux自己的进程调度和内存管理。这就天然决定了KVM易于使用并于体积会很小。仅管体积小,但KVM的功能确不少。比如,KVM可以把客户机从内存中兑换到物理磁盘上,如同swap普通进程一样释放RAM。KVM目前只在提供支持硬件虚拟化的x86机器上运行(如vt/svm指令集)。从这这方面讲,Xen通过修改客户机操作系统,充许虚拟机运行在没有硬件虚拟化技术的x86平台上运行。这种虚拟化技术称之为准虚拟化paravirtualization,参见另一贴:Linux的虚拟化技术。KVM在CPU级别不支持paravirtualization,但为了指高I/O性能,会对设备驱动程序支持准虚拟化。 KVM和Vmware有什么区别呢? VMware是一个商用专用虚拟化产品,KVM是在GPL许可证下发布的自由软件。 KVM和QEMU有什么区别? QEMU是模拟器。参见Linux的虚拟化技术 KVM & QEMU 。 KVM有windows下的移移植版本吗? ...

June 11, 2012 · 1 min · kamus

KVM你问我答 FAQ (三)

我在使用QEMU,如何知道我有没有启用KVM的硬件加速功能? 如果你怀疑你没有启用KVM提供的硬件加速功能。你可以按照下面的步骤做检查。首先,看看你有没有得到下面的提示信息: qemu-system-x86_64 -hda myvm.qcow2 open /dev/kvm: No such file or directory Could not initialize KVM, will disable KVM support 如果是这种情况,请再检查: kvm模块被正确载入了吗? lsmod | grep kvm. 查看 dmesg 的输出,保证没有这个提示信息: “KVM, disabled by BIOS”. 请确保/dev/kvm 确实存在,而且你有权限使用它。 其它诊断方式: 如果你能使用 QEMU monitor ( ctrl-alt-2, 再 ctrl-alt-1 回到 VM 的显示屏 ),敲入 info kvm 命令。如果正常的话,应该有“KVM support: enabled”这条信息输出。 在host机上敲 lsmod | grep kvm 命令,看看输出的最右栏。如果kvm在正常运行的话,这个数字不能是0。这行的数字与架构相关的模块(一般指的是kvm_intel,或kvm_amd)有联系,它显示了有多少个VM正在使用这个模块。举例说明,如果你有两个虚拟机正在使用KVM模块,host机的CPU使用的是vt技术,那么就会得到: # lsmod | grep kvm kvm_intel 44896 2 kvm 159656 1 kvm_intel ...

June 10, 2012 · 2 min · kamus

Six factors to help you create a great website

I’m wondering how to create a great site to put me in bucks. I would like to share some ideas with you in the hope it would be helpful. [originally post on zausiu’s blog http://ykyi.net] Content is the most important thing. If your website is a long-term business, don’t even think about black-hat SEO. Appropriate legal SEO is necessary, but it can’t be too over-killing. High quality content is worthier of your time and effort.Search engine’s algorithm is quickly changing. If your website is friendly to the visitor, it’s friendly to SE too. Visitors can benifit from your site. That’s why they will come back. Useless website cannot survive in the internet world. In the huge wave of SNS age, take advantage of the SNS is a must. As you know, something sprend in social network like infectious virus. If you have enough time and technology support. Consider develop related desttop version application and app for mobile phone. Those apps must be able to update automatically, and you can control them in the server side. So, you can push all kinds of infomation to the apps, which will guide the users to visit your website, so your site traffic increases. What is more, the apps will be released to various kinds of download sites. Most likely your website URL will be post there which are your high-quality external links. You surely know how much the high-quality external links means to your site. You’d better have a team, even though you are versatile and are able to play a number of roles. Remember it’s not a age for lone heroes any more, everybody is limited in some aspects. ...

June 9, 2012 · 2 min · kamus