记忆从这里开始

时间过去了很久,希望有些东西能沉淀下来,虽然我有记录的爱好,却总不能坚持。 陆陆续续这么多年,弄了很多很多博客,要不是被限制,要不就是被墙了,甚至无缘无故被删除掉,白白浪费了我很多心血。所以我决定在建军节前夕,购买了这个空间和域名,在此安家。 这是博客的第一篇,特此记录。

自定义WordPress文章归档的显示数量

有时候我们希望在Wordpress侧边栏显示文章归档,可以在后台直接添加“文章归档”小工具就可以了,但Wordpress默认显示所有的阅读存档,如果我们的站点只有几个月,那还无所谓,但是如果我们的站点有两三年甚至更长的时间,那么显示出来的文章归档列表将是长长的一列,实在很不美观。其实我们可以通过修改Wordpress源码的方式对文章归档显示数量进行自定义。
具体方法: 使用FTP工具打开网站空间FTP,找到wp-includes文件夹下的default-widgets.php,下载下来,然后使用Editplus之类的文本编辑软件打开(不要使用记事本),搜索“widget_archives_args”,找到关键字所在的行,将其内容修改为:
'monthly', 'show_post_count' => $c,'limit' => 12)));
此行代码的作用就是使用wp_get_archives函数显示最近12个月的月度归档,当然我们也可以根据自己的需要修改为其他数值。
保存后使用FTP工具将修改后的default-widgets.php上传即可,上传前最好是做好default-widgets.php的备份,以免出现问题,要养成修改之前先备份的良好习惯。
本文参考了不得言的博客,原帖地址:http://www.budeyan.com/tech_notes/wordpress-wp_get_archives/,如果大家希望进一步了解wp_get_archives函数的使用,可以参考原帖
本文来源于:高海鹏的博客,原文地址: http://www.gaohaipeng.com/696.html
另一个修改处为:general-template.php 查找“wp_get_archives”函数.
参考http://blog.ithomer.net/2014/03/wordpress-article-archive-date-display-format/

在blogger中使用LISP的语法高亮

此文仅仅为那些想在blogger用LISP的语法高亮代码发帖的人。
首先,请参考:
让Blogspot支持语法高亮:
http://blog.venj.me/2010/06/blogspot.html
在Blogger中添加代码语法高亮:
http://zjunet.blogspot.com/2013/04/blogger.html。
syntaxhighlighter这个插件很好,可是没有为LISP定制的js.
那么,想用LISP语法也能达到这样的效果,只好自己动手了。
下面是我写的:shBrushLisp.js文件:
shBrushLisp
按照网上的方法,你添加进去就可以了。

dp.sh.Brushes.Lsp = function()
{
	var keywords =
	'abs acad_colordlg acad_helpdlg acad-pop-dbmod acad-push-dbmod ' +
	'acad_strlsort acdimenableupdate acet-layerp-mode acet-layerp-mark acet-laytrans acet-ms-to-ps ' +
	'acet-ps-to-ms action_tile add_list ads alert alloc and angle angtof angtos append apply arx ' +
	'arxload arxunload ascii assoc atan atof atoi atom atoms-family autoarxload autoload Boole boundp ' +
	'caddr cadr car cdr chr client_data_tile close command cond cons cos cvunit defun-q-list-set defun-q-list-ref defun-q ' +
	'defun dictadd dictnext dictremove dictrename dictsearch dimx_tile dimy_tile distance ' +
	'distof done_dialog end_image end_list entdel entget entlast entmake entmakex entmod entnext entsel ' +
	'entupd eq equal error eval exit exp expand expt fill_image findfile fix float foreach function ' +
	'gc gcd get_attr get_tile getangle getcfg getcname getcorner getdist getenv getfiled getint getkword ' +
	'getorient getpoint getreal getstring getvar graphscr grclear grdraw grread grtext grvecs handent help ' +
	'if initdia initget inters itoa lambda last layoutlist length list listp load_dialog load log logand ' +
	'logior lsh mapcar max mem member menucmd menugroup min minusp mode_tile namedobjdict nentsel nentselp ' +
	'new_dialog not nth null numberp open or osnap polar prin1 princ print progn prompt quit quote read-char read-line read ' +
	'redraw regapp rem repeat reverse rtos set set_tile setcfg setenv setfunhelp setq ' +
	'setvar setview sin slide_image snvalid sqrt ssadd ssdel ssget ssgetfirst sslength ssmemb ssname ssnamex ' +
	'sssetfirst startapp start_dialog start_image start_list strcase strcat strlen subst substr tablet tblnext ' +
	'tblobjname tblsearch term_dialog terpri textbox textpage textscr trace trans type unload_dialog untrace ' +
	'vector_image ver vlisp-compile vports wcmatch while write-char write-line xdroom xdsize xload xunload zerop '+
	'nil t pi';
	this.regexList = [
			{ regex: /;.*$/gm, 										    css: 'comments' },  	// 单行注释
			{ regex: /;\|[\S\s]*?\|;/g, 								css: 'comments' },		// 多行注释
			{ regex: dp.sh.RegexLib.DoubleQuotedString,					css: 'string' },		// 字符串
			{ regex: new RegExp(this.GetKeywords(keywords), 'gmi'),		css: 'keyword' },       // 内部函数
			{ regex: /|/gm, 										css: 'preprocessor' },  // 括号
			{ regex: new RegExp('\\#[a-zA-Z0-9]{3,6}', 'g'),			css: 'value' },
			{ regex: /(vl-)[\w->]+/gmi,									css: 'functions' },		// keywords
			{ regex: /(vla-)[\w->]+/gmi,								css: 'functions' },		// keywords
			{ regex: /(vlax-)[\w->]+/gmi,								css: 'functions' },		// keywords
			{ regex: /(:vlax-)\w+/gmi,									css: 'functions' },		// keywords
			{ regex: /(:vlr-)\w+/gmi,									css: 'functions' },		// keywords
			{ regex: /'/gm,												css: 'keyword' },		// keywords
			{ regex: /(\+|1\+|-|1-|\*|\/|=|\/=|>|<|<=|>=|~)/gmi,css: 'keyword' }	// Operators运算符
		];
	this.CssClass = 'dp-lsp';
	this.Style =	'.dp-lsp .value { color: red; }' +
					'.dp-lsp .keyword { color: blue; font-weight: bold; }' +
					'.dp-lsp .string { color: green; }' +
					'.dp-lsp .preprocessor { color: magenta; }' +
					'.dp-lsp .functions { color: blue; font-weight: bold; }' +
					'.dp-lsp .comments { color: grey; }'
					;
};
dp.sh.Brushes.Lsp.prototype	= new dp.sh.Highlighter();
dp.sh.Brushes.Lsp.Aliases	= ['lisp', 'lsp'];

效果如下:
LispSynHighlighter

关于谷歌被GFW之后的搜索引擎解决

从5月27号左右开始,谷歌(Google)在华的几乎所有的服务都处于无法使用的状态,谷歌官网域名Google.com、谷歌香港Google.com.hk所有服务都打不开。但我真心不喜欢百度搜索,很讨厌,有办法么?
1,Chrome浏览器下的google搜索解决。
首先,找一个没被封的google 镜像地址,譬如:209.116.186.246之类的,反正你去搜索吧。
然后在Chrome设置里面,从 “搜索” 项里面选择“管理搜索引擎”,弹出框里面的“其他搜索引擎”中设置:
第一个 是名字,随你便了,第二个是关键字 ,一般可输入网址,如你找到的地址:209.116.186.246, 第三个输入框中输入:
http://209.116.186.246/search?hl=zh-CN&q=%s
并把它设置为默认搜索引擎,这样就可以了,以后你的默认搜索就按照这个搜索了,不会跳转到www.google.com.hk上去了。
如果想把chrome浏览器的首页修改,在 设置里面的“启动”中选择 “打开特定网页或一组网页。 设置网页”,然后你输入找到的可用的google地址。
google search
2,IE浏览器中,如果你以前添加了google的搜索引擎了,那么如果不修改其地址,肯定又是打不开网页了,
修改地址简单,找到注册表的:
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\SearchScopes 里面的有关google项的,
把其 URL键值改成如下:
http://209.116.186.246/search?hl=zh-CN&q={searchTerms}
这样就可以了。

对白

我? ??至高无上。

这么多年来,一直不愿蜗居在城市花园
而愿栖身传统的废墟。
周围遍是理念的危崖,世事的荆棘
遍是尊严的丛林,自由的寒风
嘲笑像涛声一样不断淘空你的根,冷眼
反射着千万年被冰封的月色,挫折
在你走过的和未来的路上布满罗网和陷阱,梦想
在罅隙中艰难穿梭,高傲而孤独
你还需要什么?
离开或者涅盘。

但我不是一只凤凰。

世上并不存在绝对的庸俗和高雅。
叶子被阳光与黑夜交替修剪,每一片
具有相同卑微的脉络,每一片
具有相似灵魂的锯齿边缘,且
琐碎而平凡,至为真实,至为清淡
高贵从遍是渣滓和污秽的泥土中
生长出来,它的芳香谁都可以采摘。即使
乞丐拿在手中,亦能感到富足和素洁
你还要超越什么?
放弃或者是湮灭。

但我的心中还有一块镜子。

取下你的脸谱,告诉我你的额头上
是否铭刻着好与坏,正与邪?
人人都有一个盒子,却从来不知道里面还有什么。
盒子里有什么呢?一只蝴蝶
一只蝴蝶左右展翅,随风翕合
在盒壁的花园翩翩曼舞;
一只苍蝇它的卵四周膨胀;
盒子里有什么呢?一锭金子
永不生锈;一张渐渐发霉的荣誉证书;
一缕魔鬼化作的美丽青烟;抑或是
一个天使变幻的丑陋石块?
一段洁白无瑕的帛丝;抑或是
一件经历过生活压皱的衣裳?
或者全都不是。它可以空空如也
可以盒子套着盒子,象千瓣莲花
层层包裹,仿佛永无穷尽
你还要珍藏什么?
打开或者埋葬。

但我? ??永远至高无上。

(...没有回音,只有喧嚣。听不清每一句回答,每一个音节。这喧嚣竟是巨大无比的寂静。)

1996.11.8写于长沙

水仙香

年轻时的那束水仙花
香已逝 我难追
在一个晴暖的日子
我曾想画下她长长的发丝
洁白的梦 一掬清水
都挽留不住
她的素洁和高贵

我看见了幸福
如飞鸟的影子
匆匆闪过瞳孔
就在那瞬间我已错失
与她同行的列车
只剩漫长的铁轨
和更漫长的孤寂

世俗的人
只会唱着爱的民谣
把金色的戒指
戴在她的指尖上 说
爱你永远
而她无奈的欢颜
是我一生中唯一的记惦

还有谁能比懦弱的人
遭受更多的悲欢
如今我也开始慢慢放弃
慢慢忍耐 渐渐坚强
且让那束水仙花香
留在年轻

1996.3.1 于长沙

CAD中的美与乐

我是属于爱折腾的那一类人的。
CAD是我这个专业的必备工具。一天到晚都离不开它。
当然,有时候画图累了,就想开开小差。偶然的一次,我在用CAD的夹点拉伸的时候,竟然发现了一个很有意思的现象。
用过CAD的人基本都知道,一段弧有四个夹点 :弧的两个端点、弧段的中点、弧心。当我们把弧的中间的那个夹点拉到弧心的那个夹点位置后,弧心的那个夹点位置却跑走了,然后我又把弧中间的夹点拉到新的弧心处,当我这样重复下去,我开始以为整个弧会最后定在一个位置,但实际上没有,无论我这样做多少次,弧的位置永远也不会固定。
这个偶然的发现引起了我的注意。我觉得不是一个普通的问题,我感觉它是发散的。QJchen博士用Maple佐证了我的感觉--它的确是发散的!但是,发散的,并不意味这这些夹点的位置是毫无规律的。那么,我就开始折腾了:
首先,我用公式找出它们之间的关系,通过一番简单的数学推理,得到如下图的公式:

zzzf

这个关系看起来比我想象的要简单多了,跟求开平方的公式仅仅相差一个正负号,如此的简洁而美妙的公式。当然这个公式是对于实数集的,我又展开联想了,如果把这个公式扩展到复数集呢,按照这样的迭代,是怎样的效果呢?
很好,那么稍加推理,对某个位置(C_{x},C_{y})的迭代得到如下公式:

X_{n+1} = \frac{X_{n}}{2}-\frac{X_{n}}{2(X_{n}^{2}+Y_{n}^{2})}+C_{x};


Y_{n+1} = \frac{Y_{n}}{2}+\frac{Y_{n}}{2(X_{n}^{2}+Y_{n}^{2})}+C_{y};


到此,我想到了曼德布罗特的分形集,说做就做,我利用我编写的一段程序,加入了一点代码,然后在CAD上运行,得到了如下的效果:

结果证明了,它果然具有分形的性质。像啥?有的说是蝴蝶,有的说是猴子的脸,究竟像什么,就凭你的想象了。
我把这个图形叫做高飞鸟集。因为我没在其他人中或者其他地方看到过类似的图片。这也算是我的一个发现。
是啊,CAD中竟然蕴藏了这么多的乐趣和美,是我以前从未领略过的。
美是无处不在的,只不过我们还未发觉。

附注:多年前我就想把写下来,直至今日才付诸实现。

2014年8月21日 Highflybird于深圳

语法测试

;|This is a test ,Don't copy it!|;
(defun c:test ()
  (setq ent (car (entsel)))
  (setq obj (vlax-ename->vla-object ent))
  (setq pts (vla-intersectwith obj obj acExtendNone))
  (setq par (vlax-curve-getEndParam  obj))
  (setq i 0)
  (while (<= i par)
    (setq pt (vlax-curve-getpointatParam obj i))
    (princ pt)
    (setq i (1+ i))
  );while
  (princ)
);defun