今天,把博客的文章归档页面建立好了,这样就可以在一个页面中查阅到本博客发表的所有文章,而且还提供了筛选功能,可以查阅到指定作者、指定年份、甚至指定月份发表的所有文章。

博客的文章归档与相关文章功能,相辅相成,为大家提供了一个相对较简单的聚合式阅读体验,希望大家能喜欢。查看本博客全部文章可通过点击导航栏中的文章归档按钮进入。

下面介绍下如何为WordPress博客添加文章归档功能,其实就是一个插件:WP-EasyArchives。此外,还会附带介绍下另一个文章归档插件:Clean Archives Reloaded。这两个插件都很优秀,自己择优取舍。 阅读全文 »

 


在上一篇文章中提到过,我已经不在Google工作了。我还没有想清楚应该去哪里—有两三个非常好的工作机会摆在我面前。因为在这段做决定时间里,我不再受雇于任何人,我想可以写一些专业性的东西,一些很有趣,但也会在同事和管理工作中导致关系紧张的东西。

 Google是一个非常优秀的公司。他们做出了很多令人称赞的东西—既是公司外部,人们可以看到的东西,也是公司内部。有一些在公司内部并不属于保密的事情,在外部并没有给予足够广泛的讨论。这就是我今天要说的。

让Google的程序如此优秀的一个最重要的事情看起来是非常的简单:代码审查。并不是只有Google做这个事情—代码审查已经被广泛的认可为一种非常好的做法,很多人都在这样做。但我还没有看到第二家这样大的公司能把这种事情运用的如此普遍。在Google,没有程序,任何产品、任何项目的程序代码,可以在没有经过有效的代码审查前提交到代码库里的。

所有人都要经过代码审查。并且很正规的:这种事情应该成为任何重要的软件开发工作中一个基本制度。并不单指产品程序——所有东西。它不需要很多的工作,但它的效果是巨大的。

从代码审查里能得到什么? 阅读全文 »

 


snmpwalk介绍及其用法一文中,介绍过net-snmp的snmpwalk的用法,殊不知,net-snmp还有trap的命令程序,可以用来测试snmp的trap方法(包括inform方法)。这些命令程序是: snmptrap、snmpinform和snmptrapd。其中:

  • snmptrap:可以模拟snmp agent发送一个trap到snmp管理端(一般称为网管,snmp manager或snmp client);
  • snmpinform:可以模拟snmp agent发送一个inform request到snmp管理端(Trap是发送给SNMP管理者的通知网络状况等的警告消息,而Inform是需要SNMP管理者确认接收的Trap。与Inform 相比较,Trap通知方式为不可靠传输,因为snmp管理端在收到一条Trap通知后无需回复任何确认信息,所以snmp agent无法知道Trap通知是否已经被snmp管理端正确接收);
  • snmptrapd:一个模拟snmp管理端接收trap/inform通知的程序;

由上可见,通过上述3个命令程序,我们可以研究snmp的trap行为及其报文,如果你正在开发snmp agent的trap功能但又没有snmp管理端,这3个程序则可帮上你的大忙。下面详细介绍这3个命令程序的具体用法。 阅读全文 »

 


本文主要介绍linux下两个命令:split和cat。其中,相信大家都熟悉cat命令,一般用来查看一个文件的内容,但是它还其它的功能,比如这里要介绍的文件合并功能,它可把多个文件内容合并到一个文件中。从split词义不拿理解,其为分割之意,常用于分割大文件。下面详细介绍。 阅读全文 »

 


移植eCos时,对其内存布局文件内容比较疑惑,特别不理解其中“SECTIONS”部分的含义。为理解eCos内存布局文件中的内容,特此研究了一翻,这里我以eCos中stm3210e评估板ROM启动方式对应的内存布局文件为例进行说明。

eCos的内存布局(the Memory Layout)文件,由ldi文件及其头文件组成,描述了目标板的存储器设计和定义了链接器脚本输出段(section)。一般情况 下,针对每种启动方式(startup type),eCos中的模板都提供了对应的内存布局文件。当建立自己的模板时,需要在CDL文件中为每种启动方式匹配对应的内存布局文件。 阅读全文 »

 


C/C++可变参数,“## __VA_ARGS__”宏的介绍和使用文章中,大致了解了在宏定义中如何实现可变的宏参数及其应用。这在自定义信息输出宏中特别有用。但不管如何,最终还是要由具体函数来实现可变参数,如printf函数,其原型大家都熟悉,如下:

int printf( const char *format, ... )

但是它是怎么实现可变参数的呢?又是如何获取这些可变参数的值呢?“…”省略号的应用规则又是什么?带着上述疑问,我们来解开这层面纱。 阅读全文 »

 


今天阅读代码的时候,在一个宏定义语句中,发现了个之前未曾见过的编译器预定义宏:“__VA_ARGS__”。当时,从代码语句中推测它代表宏参数:“…”(本文称之为省略号),依稀记得printf函数声明中有使用这个省略号,大概的意思是表示可变化的参数,但未深入了解。

在网上看了相关文章的介绍,主要涉及了C/C++函数中可变化参数的基础知识,并延伸到宏定义中的可变参数。借这一次的学习,算是对可变化参数有了比较详细的了解,尤其是解开了一直萦绕在头脑中printf函数声明中这个省略号的疑惑。

为更好了解C/C++中可变参数的知识,我从网上摘录了两篇文章,算是自己的一个总结。本篇主要是关于“## __VA_ARGS__”宏的介绍和使用。

阅读全文 »

 


1—10章节,我称之为stm32移植ecos系列的第一篇章:让Redboot和eCos跑起来。从中可以看到,借助eCos本身带的ST STM3210E EVAL board模板和examples,几乎不需要做什么修改就让eCos在STM32板子上跑起来了。这一方面得意于我的板子与该模板对应的ST官方板子在存储器设计上大同小异,另一方面则是得意于eCos良好的架构设计,使系统移植变得轻而易举。

在展开ecos裁减、配置和驱动编写移植之前,我来说下如何创建和使用自己的模板(Template)。这里可能会有人问了:官方都提供了模板,还需要创建自己板子的模板吗?这不是多此一举吗?

是的,表面上看有点多余,但实际上更符合系统移植方法与步骤。

  • ecos自带的模板一般是基于芯片厂家的评估板而创建的。而我们使用的目标板或多或少与这些板有差异,甚至有比较大的差异,有时,目标板的CPU在ecos中没有相应的模板,这时候只能借鉴相近的模板展开移植,以降低难度和减少工作量;这就使我们有必要根据目标板创建自己的模板;
  • 使用自己的模板可尽量少的去修改ecos本身的代码,这样便于与ecos cvs服务器代码保持同步,而不至于引起代码冲突;
  • 创建自己的模板,更深入了解ecos的模板、package、component、cdl脚本、HAL的概念;

由于ecos优秀的架构设计,所以创建自己的模板也变得很容易。 阅读全文 »

 


这是一个策略设计博弈谜题。说的是“囚犯与灯泡”的问题。

有100个囚犯分别关在100间牢房里。牢房外有一个空荡荡的房间,房间里有一个灯泡,以及控制这个灯泡的开关。初始时,灯是关着的。看守每次随机选择一名囚犯进入房间,但保证每个囚犯都会被选中无穷多次。如果在某一时刻,有囚犯成功断定出所有人都进过这个房间了,所有囚犯都能释放。游戏开始前,所有囚犯可以聚在一起商量对策,但在此之后,它们唯一可用来交流的工具就只有那个灯泡。他们应该设计一个怎样的协议呢?

这个经典的问题在网上转载无数,题目描述被好事者们改得天花乱坠,甚至加进了“这盏灯永远有充足的能源供应”、“如果灯泡坏了或是电路出了故障会马上修好”等条件,剥掉了“算法问题”的外壳,填补了本不存在的漏洞,让更多的人动起了脑筋。在论坛上,每次贴出这个问题,总会引起一大群人论战。但很不幸的是,这个题目的来源至今仍是个谜。据目前的已知情况推测,这个题目最早来源于伯克利大学的电气工程荣誉学会,时间大概是2001年。在2002年7月,IBM官方网站上的Ponder This趣题栏目介绍了这个题目,“囚犯与灯泡”一炮走红,随即遍布网络的各个角落。2003年,《数学情报》(Mathematical Intelligencer)杂志上发表了一篇题为《一百个囚犯和一个灯泡》(One hundred prisoners and a lightbulb)的论文,也让囚犯们正式引起了数学家的关注。

想必很多人知道这个问题的标准答案了。 阅读全文 »

 


二十弱冠,三十而立,四十为惑,五十而知天命……。今,而立之年,当而立感叹弱冠,当不惑感叹而立,是以记之。

今日岁月,同学朋友,多已家室,亦多有事业。生活重心,倾于家庭事业。回首自己,身无一物,亦无事业;身无伴侣,形影相吊,亦少知心;闭塞交通,少于交往;术不专攻,漫无目的;时不我待,何以归处?

宽阔心态,踏然处之;清除闭塞,沟通交往;廓清形势,不相争冠;刻苦努力,术有专攻;立志,立身,立业,始于足下,尚未晚矣。

 

© 2012 velep.com | reille blog | 管理| 粤ICP备15065318号-2| 谷歌地图| 百度地图| Suffusion theme|Sayontan Sinha

无觅相关文章插件,快速提升流量