- 博客(99)
- 资源 (3)
- 收藏
- 关注
原创 一段PHP版本的lambda实现
还有些缺陷,但能实现Church的自然数的lambda定义class lambda{ private $f; private $args; private $count; public function __construct($f, $args = []) { if ($f instanceof lambda) {
2014-11-05 11:27:40
10151
原创 每个公司都有那么几个2B把memcache_add封装成memcache_set
他们把add封装为if(!add(...)) set(...);把replace封装为if(!replace(...)) set(...);把increment封装为if(!increment(...)) set(...);现在,所有的操作都不会返回false了,使用者可以无脑的调用,不用做任何返回值的检测。只是,当他们真的需要add
2013-11-29 12:03:05
10525
2
原创 分享一个带权随机函数
/** * 带权重的随机数 * * 权值越小,概率越偏向min,反之偏向max * @param min * @param max * @param weight 取值范围 [-1, 1] * @return */ publi
2013-08-05 14:18:15
13211
原创 发现一款感觉很不错的学英语软件:Rosseta Stone
Rosseta Stone,即罗塞塔石碑,不止可以用来学英语,还可以学日语,法语,粤语,汉语等等。这软件其它不说,至少让我有兴趣学。我现在美国英语1级还没学完,但是学了也有10多个小时了,进度报告里看着自己每一课的得分和时间汇总,很有成就感。这是一款用flash做的软件,尝试简单的拿asv去破解,未果。主要尼玛asv有个脱壳插件也需要找破解版,这也太坑了。原版不
2013-07-05 21:28:10
17463
原创 vim里面如何去掉文件最后一行的eol
按说,文件结尾没有eol是一种不正确的文件格式,但是许多windows下的软件喜欢这样。这个我们暂且不讨论,先看看去除eol的需求是怎么来的:php文件结尾如果是 ?>, 并且这个php被include了,并且......(这个条件我忘记了,总之我还没有碰见过也不想碰),那么
2011-09-13 15:22:59
25907
原创 从windows到*nix(六) 程序开发
提纲 集成环境编译器(gcc)调试器(gdb,printf)依赖管理(make)搜索代码(grep)代码编辑器(vim)代码内跳转(ctag,cscope)函数和类列表(taglist)自动补全(^N, ^x^o)编译错误/代码对应(make+vim)程序员手册(man) 从这一章开始,要开始讲大家最关心的问题了,就是究竟在*ni
2010-01-14 17:50:00
22615
1
原创 从windows到*nix(五) IO重定向与管道
标准IO stdin,stdout,stderr,分别是标准输入,标准输出,标准错误。windows和*nix下都有的。默认情况下,标准输入相当于从键盘输入,标准输出和标准错误相当于向屏幕输出。C语言中,这三个是FILE*类型(文件指针),例如你用printf,那么内容直接输出到标准输出,等价于fprintf(stdout,...);你用scanf,直接从标准输入读取,等价于fsc
2009-12-28 09:59:00
23337
原创 从windows到*nix(四) 编辑器
本文是针对vi来说的,因为它及它的变种在*nix上使用最广泛,但是挫败的用户数却最多。用户遵循某安装或者配置指示,一路顺利,直到遇到:“用vi编辑xxxx.conf,在其中加入xxxx”,没经验的用户不但无法继续,就连退出vi都是一个难题。 虽然*nix上还有其他更适合windows用户习惯的编辑器,但是它们不一定随时可用(如:没有安装)。我承认vi不好用,但是,掌握最基本的vi用法,利用
2009-12-25 10:41:00
22134
原创 从windows到*nix(三) 多任务
我们知道windows是一个多任务操作系统,同时运行的任务可以任意切换,还有任务管理器,*nix也是。你一定不会满足一次只执行一个程序,等待程序结束后再执行下一个。下面我们来看看怎么做: 后台启动找一个耗时比较长的例子来说明一下问题:$ sleep 10(10秒后)$ 这是程序在前台运行时的情形,如果你等不及,那么你可以在执行时让它在后台运行:$ sleep 10
2009-12-24 10:03:00
22972
3
原创 从windows到*nix(二) 日常操作
在windows下,我们有这样一个使用流程:登录系统->浏览文件系统->找到程序执行/找到文档打开->退出系统。 登录在*nix中,有两种登录方式,一种是直接在本地终端上登录,一种是通过ssh或者telnet远程访问。不管哪种方式,在输入用户名、密码并成功登录后,出现在面前的是一个提示符,一般来说是$符号或者#,提示符也可以自己定制,如下所示$oyd@localhost ~ $
2009-12-22 16:45:00
24150
5
原创 从windows到*nix(一) 软件的安装
注:本系列文章讲述对程序员而言windows和类unix操作系统(*nix)在使用上的异同,并以*nix为主。涵盖内容包括程序安装、日常操作、编辑器,IDE,管道,GUI vs CLI......,文章宗旨在于引导有经验的windows程序员顺利过渡到*nix下。 windows下安装软件的一般步骤是解压缩,找到setup.exe,点击它,然后next,选安装目录,next,选可选组件,n
2009-12-21 16:55:00
25715
13
原创 受不了cygwin的诸多问题和龟速,终于装了一个正宗的linux
公司的一台开发用机再一次崩了,几经变迁,已经找不到管理员,cygwin用着有时候行,但有时候真的无能为力,遂决定装一台真正的linux。windows日常还得用,只好搭上VMware这次装的是Gentoo linux,先下了个100M的iso启动光盘,启动进去后再下了130M的包,之后还算顺利。 重启之后,完全就是符合我要求的开发环境,没有图形界面,GCC/MAKE工具齐全,把ss
2009-12-16 17:33:00
22708
2
原创 分享一个linux下的C程序读取配置文件的方法
分享一个linux下的C程序读取配置文件的方法当你的配置文件是形如 key1=value1 # 这是注释 key2=value2 类型的文件时,真的是非常非常简单,非常快捷。假设你的配置文件名为/path/to/file/myconf你的C程序为/path/to/file/myprog那么编写一个sh脚本,脚本内容为 . /path/to/file/myc
2009-12-14 18:40:00
25885
5
转载 关于换肤、子类化,征求解决方案
(转我自己在论坛上发的老帖2004-06-25 14:52:52 在 VC/MFC / 界面 提问) 对于应用程序的换肤及子类化。下面是我尝试过一些方法, 以在CAboutDlg中子类化其中的Button为例: 第一种:直接用现成的类 1.自己写一个类class CButtonXP : public CButton{/*...*/}
2009-12-10 15:13:00
22199
原创 autobook的目录
Top: Autoconf, Automake, and Libtool Contents: Table of Contents Index: Index About: About this document Table of Contents 1. 介绍 1.1 本书是什么 1.2 本书不是什么
2009-12-10 12:57:00
22814
原创 第一次滑雪经过——教你如何省钱
以下经验只针对北京的滑雪场,阅读对象仅限从没滑过雪的人。我不说滑雪的感受,那些你们自己滑的时候去体验。我只探讨如何花尽量少的钱享受尽量多的乐趣。 选周一到周五去,不要在周末。因为一,周末票价贵一点,二、周末人多你滑不上,无形中降低了你的乐趣,另外人多容易造成事故。请不开假的自己权衡一下,是上一天班重要还是体验一项自己没尝试过的运动重要。再说年底了,留这么多年假不请完也不能给你折成钱。
2009-12-09 01:30:00
23368
原创 直接访问mysql的BDB存储引擎
我们知道BDB是一种嵌入式的数据库,存取效率比mysql高,但是管理起来没有mysql方便,在分布式应用中同步也是一个问题。恰好mysql是支持用BDB作为存储引擎的(5.1之后就不直接支持了,因为BDB被oracle收购了),那么能不能让mysql来进行数据管理和同步,而实际应用则绕过mysql直接访问BDB文件呢? 尝试了一下:首先取得mysql 5.0源代码,按如下参数配置
2009-11-30 11:23:00
27104
1
原创 换部门,开始学新东西了
终于不做php的web开发了,博客这么久不更新,和这个也有一定关系(php实在是太简单了,简单到你根本没什么好说的)。 现在重新拾起丢下已久的C/C++,有些知识要学习:邮件系统的结构,postfix的结构FreeBSD系统使用(有些地方和linux的不一样,连make都和gnu的不同)autotools的使用(很早就想学了,一直没狠下心来,直到我现在面对两种不同的操作系统
2009-11-25 15:31:00
22287
原创 习武经历(四)
因为最近练起来很郁闷,练武日记漏了一次没记。大体说起来就是老也打不过别人,还老挨打,昨天还负了伤,眉角上开了一道小口,可能会留下疤痕,以后我就是反派角色中常见的刀疤脸了。胳膊上早已是伤痕累累见惯了我都不当回事了,可是我速度慢反应慢力量差,我真的怀疑我能否练成。师父说的半年就能练成,现在已经过去一个月了。黐手老师还没专门教,但是潜移默化的也会一点了。可是这被老师称为同门间的杂技,实战意义不大
2009-08-03 14:19:00
22282
原创 习武经历(三)
这一段时间的练习,我已经彻底抛弃"武术以弱胜强"的这种天真想法了。就像师父说的,格斗中永远都是强打弱,而武术的作用是使习练者由弱变强。即使抛开力量耐力上的因素不说,就是纯技巧性的招式,也要求习练者反复练习,直到变成一种本能反应。因为格斗中,对手不会给你时间去思考遇到什么情况用哪种招数。 这次来了一个新人,以前练拳击的。开始的热身仍然是对马冲拳。之前师父交代过,说这次来新人碰胳膊你就可以
2009-07-15 15:59:00
22626
原创 习武经历(二)
第二次去,算是拜师了。师父给布置了几个练习让回家每天练习:冲拳训练(包括空拳、墙靶),一摊三伏,胫骨及桡骨硬度训练,其他人还没来,顺便又教了我一招夺刀术。不过夺刀还是很危险的,反应跟不上还是不要去碰的好。 这次来的人比上次少,一个练内家拳的中年汉子,一个是师父的另一弟子,和我年纪差不多,不过身材比我高多了。 我和师父说好以后是隔一周去一次,所以这次练习的内容明显有点多,感觉短时间内
2009-07-02 10:36:00
19855
转载 从Wolff定律看中国人的体质和运动人才年轻化
Wolff定律告诉我们外形随外界应力的改变而改变,Pauwel在进一步的研究中提出了应力改变的极限性,骨生长随应力的改变界于µ0~µ1 小于µ0的应力则骨吸收停止,大于µ1的应力将发生骨的损害。但至今仍无人提出人类年龄成长过程中µ值的成长规律及成长曲线,停留在经验性的发现和对中国童星及体育运动员较西方年轻化的疑惑中,所以我用数学的模式进行无理由的假设发现了骨科很多研究难题与之有关,同时看到西
2009-07-01 10:19:00
15646
原创 第一次习武的经历
从小就做武侠迷,用了近20年,终于圆梦了。很好玩,但是没有想象中轻松。 这天,一个练太极的,一个散打的,一个泰拳的,我以及另一个初学者,再加上老师,共六人。 (仅仅备忘,所以记流水账了)6点多就醒来,7点不到出门,披星戴月,快9点时候,我是第一个到的,和老师聊了聊,先教我站一个桩,说是比传统站法要稳一些。我先按传统姿态站,他横向轻轻一推我就倒了,再按他的站法,前后左右都推了一下
2009-06-22 16:47:00
11891
1
原创 围棋AI之路(五)自然选择过程
上次一个网友建议我用遗传算法,不过当时我没有找到合适的遗传因子,其实根本原因是我那时候正在手工测试程序的棋力,我自己和程序下,发现问题,然后看看怎么改进。这个过程中其实带有太强的主观色彩了,直到一周前我正式摒弃了UCG的想法,我才终于决定用自然选择的方式来测试程序的棋力。摒弃UCG前面的文章中提到过UCG的思想,也就是认为博弈树实际上应该看做是一个图,因为下棋时的每一个局面,都可以用不止一种顺序走
2009-01-10 23:41:00
15661
7
原创 围棋AI之路(四):来自UCG的改进
UCT的实现前文只顾抱怨,忘记讲述UCT的实现部分了,这里补上。UCT算法本身在第一篇已经详细阐述过了,具体实现上唯一的一个要点就是使用内存池来为Tree分配节点。树的结构如下所示:templateclass Node { static Pool m_pool;public: Vertex v; int win; uint cou
2008-12-29 14:07:00
5555
3
转载 常见围棋术语英译
下面是在下列出的一批常见英文围棋术语。每一项的第一个词(大多数情况)是日本围棋术语的日文读音。接下来,有的有用括号标出的英文翻译或注释,有的没有。最后是中文解释。括号中的英文翻译(如果短的话)往往就是现在经常使用的英文围棋术语。加(*)表示常用的重要的围棋术语。例如,aji,atari,等等都没有对应的英文翻译,可以直接用。“furikawari”意为“转换、交换”,现在一般用“exchange
2008-12-29 12:43:00
9105
原创 围棋AI之路(三)UCT,进来之后才发现是地狱
照例还是先公布代码 http://download.csdn.net/source/913373以及编译好的可执行程序,下载地址:http://download.csdn.net/source/913515前面介绍的UCT算法听起来很诱人,但是只有你真正去实验一下你才知道原来有这么多问题。理论上,UCT是一个一致的算法,它可以随着模拟次数的增加而自然提高棋力,而且理论上,它
2008-12-27 00:11:00
12947
2
原创 围棋AI之路(二)棋盘的实现
代码先公布:http://download.csdn.net/source/891878到现在为止,我只实现了一个棋盘,确切的说是在棋盘上随机走棋的速度测试程序,我借鉴了lib-ego,在上面做了一些改进,现在这个棋盘可以使用围棋规则或者五子棋规则。我的目标是让我的AI程序用同样的算法来对待围棋、五子棋甚至小时候玩过的黑白棋,它不需要任何棋类知识,你只要告诉它下棋的规则。我们的脑细胞可曾了解究竟什
2008-12-20 23:37:00
14904
10
原创 围棋AI之路(一)理论
注:本文其实只介绍mogo程序所采用的MC+UCT算法。记得以前还曾为深蓝击败顶尖人类棋手而暗喜,庆幸自己选择了围棋这一体现人类智慧优越感的游戏。因为人机博弈的设计不外乎两个方面:估值和搜索,而这两者在国际象棋上表现非常好,深蓝仅仅靠的暴力搜索下出的妙手让大师也手足无措,你要不信,去问问卡斯帕罗夫和深蓝对局时什么感受。然后估值和搜索用在围棋上似乎失灵了,一来无值可估,计算机如何看待局部的好手成了全
2008-11-14 19:06:00
26576
31
原创 字符串匹配算法(四)可以滑动多远
记得在穷举法中,每一趟比较后,无论成与不成,都将模式向右滑动一个位置,然后继续比较。有没有办法能利用之前的比较结果,使得模式滑动的更远一点呢?在介绍经典的KMP算法前,我先介绍几个简单的滑动类算法。Not So Naive同名字一样,这个算法的确有点幼稚,它根据模式的前两个字符是否相同来滑动比穷举法稍长一点的距离:如果前两个字符相同,那么文本中与第二个字符不同则必然也与第一个不同;如果前两个字符
2008-11-09 16:41:00
3929
4
原创 字符串匹配算法(三)位运算的魔法——KR与SO
位运算经常能做出一些不可思议的事情来,例如不用临时变量要交换两个数该怎么做呢?一个没接触过这类问题的人打死他也想不出来。如果拿围棋来做比喻,那么位运算可以喻为编程中的“手筋”。按位的存储方式能提供最大的存储空间利用率,而随着空间被压缩的同时,由于CPU硬件的直接支持,速度竟然神奇般的提升了。举个例子,普通的数组要实现移位操作,那是O(n)的时间复杂度,而如果用位运算中的移位,就是一个指令搞定了。K
2008-10-31 18:53:00
3010
2
原创 字符串匹配算法(二)穷举与自动机
穷举法又叫暴力法。大多数程序员眼里,它是幼稚的,但大师们不这么认为。Rob Pike, 最伟大的C 语言大师之一, 在《Notes on C Programming》中阐述了一个原则:花哨的算法比简单算法更容易出bug、更难实现,尽量使用简单的算法配合简单的数据结构。而Ken Thompson——Unix 最初版本的设计者和实现者,禅宗偈语般地对Pike 的这一原则作了强调: 拿不准就穷举(Whe
2008-10-30 13:45:00
4515
原创 字符串匹配算法(一)简介
注:本文大致翻译自EXACT STRING MATCHING ALGORITHMS,去掉一些废话,增加一些解释。文本信息可以说是迄今为止最主要的一种信息交换手段,而作为文本处理中的一个重要领域——字符串匹配,就是我们今天要说的话题。(原文还特意提及文本数据数量每18个月翻一番,以此论证算法必须要是高效的。不过我注意到摩尔定律也是18个月翻番,这正说明数据的增长是紧紧跟随处理速度的,因此越是使用高效
2008-10-29 15:22:00
6768
6
原创 php调用C代码的方法详解
在php程序中需要用到C代码,应该是下面两种情况:1 已有C代码,在php程序中想直接用2 由于php的性能问题,需要用C来实现部分功能针对第一种情况,最合适的方法是用system调用,把现有C代码写成一个独立的程序。参数通过命令行或者标准输入传入,结果从标准输出读出。其次,稍麻烦一点的方法是C代码写成一个daemon,php程序用socket来和它进行通讯。重点讲讲第二种情况,虽然沿用syste
2008-10-28 17:10:00
30685
7
原创 直面经典:重温KMP(不着一图,尽得精髓)
KMP算法,每一个初学者都曾被它搞迷糊,在数据结构教材上,这个算法出现的如此之早,你怎能指望一个还没搞懂二叉树遍历的人来理解KMP呢,记得越快,忘得越快。直到多年以后回过头来看看,这才发现KMP算法如神谕般震撼了我。实在无法想象当初Knuth、Pratt、Morris三人竟然同时发现了它。 我们假设一个场景,你手上拿着一串红蓝两种颜色的珠子,墙上挂着一串更长的珠子,同样是红蓝两色的,你的任务就是找
2008-10-20 14:45:00
3417
8
原创 软件的价值在哪里?软件根本就没有价值!!
今天听朋友谈起他准备去买个wii,因为想玩某游戏。他为了玩某个游戏愿意花几千块钱买wii,但是我知道,他很难为了某游戏,去花100多买个正版游戏。(这里我省略了一个前提:有盗版的情况下)这让我想起,我以前的公司卖打印机给客户,20多万一台的卖。但是一套软件只要几千块,用户也不愿意买,只能作为打印机的附赠品。其实那家公司是做软件的,只不过软件有个打印功能。我开始思考,为何人们普遍不愿意承认软件的价值
2008-09-22 12:44:00
4360
39
转载 家乐福网站被黑存照
.tt { background-color: #000000;}.tt{ color: #00FF00; font-weight: bold;}.STYLE2 {font-size: 33px; }.STYLE4 { font-size: 12px; color: #FFFF00;}.STYLE5 {color: #33FF
2008-04-22 16:49:00
2023
3
转载 Twofish加密算法详解
.p9 {font-size:9pt;text-decoration:none;}a:link {color:#000099;text-decoration:none;}a:visited {color:#000099;text-decoration:none;}a:hover {color:#FF3333;text-decorati
2008-03-28 10:53:00
7126
1
原创 发现一个超立方体的模型,感慨人类脑子不够用呀
网址:http://4d.shadowpuppet.net/4d.php 是个flash,下载有点慢,耐心等待一下 在观看2d和3d图形时,我明显感受到作为人类在智力上的优越感,但是到4d的时候,天哪,这究竟是个什么东西,尽管我也曾经想像过超立方体的一些性质,甚至还想过做一个它在3d投影的模型,但是真摆在我面前,还是无法理解,这时我觉得人类智力程度上与猫狗区别其实不大。
2008-01-23 14:51:00
8638
10
原创 PHP中include路径的解决方法汇总
这几天整理一份很乱的代码,这才意识到php对include处理不是一般的贱:别的编程语言在处理include中的相对目录时,都是以当前处理的文件作为基准。也就是说,如果A包含B,B包含C时,C再包含一个含相对路径的文件,那么路径是相对于C的。这样的处理很自然,符合人们的直觉,也便于开发出路径无关的程序包。 可是PHP不这样,它优先相对工作目录来处理,并且如果路径中包含. ..的话,则只相对于工
2008-01-08 13:55:00
37896
5
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人