Category Archives: Uncategorized

Golang 在 POSIX 系统下使用 PID 判断进程是否存在的方法

这是存在于 golib 库中一个长达两年的 bug。之前虽然有遇到,但也不是什么十分大的问题,所以没有留意。今天再次遇到,突然有点不爽,强迫症发作。

golib 的 pid 子包设计用于帮助服务进程生成 POSIX 系统下的 PID 文件。首先程序会判断指定的 PID 文件是否存在,以及该文件中标识的进程是否存在。如果进程存在则返回 ErrProcessExists 的错误;反之,如果进程不存在,则用新的 PID 覆盖文件内容。之前的代码使用了 os.FindProcess,但是这个函数的行为,与其文档描述实际在 POSIX 系统上是存在差异的。可以参考 go-nut 上的讨论,或者 Issue 7392048
Continue reading Golang 在 POSIX 系统下使用 PID 判断进程是否存在的方法

腾讯微博开放平台练手:微博擂台

前几天打通了腾讯微博的 OAuth,于是练手有了这个:微博擂台

“微博擂台”是利用腾讯微博开放平台的 API 开发的一个微博 PK 小游戏。
越有价值的微博胜利的几率越大。也就是说战斗力跟微博的影响力相关。
数值和计算公式只是我对于微博的基本数据的简化得来,没什么科学性,娱乐即可。
不要怀疑在 PK 的公平性上有什么问题,PK 不过的话,如果不是实力不足,那就是人品问题了。


表示 HP,收听你的人越多,HP 越给力。
表示速度,同发博数成反比,同听众数成正比。
看到就开心吧,这是幸运草。
如果跟随着你,就要小心了,运气欠佳啊!


如果你觉得这个东东还可以的话,请不要吝啬,分享到腾讯微博吧!

主修经济的

今天在例行学习爱枣报年终特刊的时候看到这么一个针对专家提出车票涨价言论的评论,很雷:
“我是主修经济学的学生,关于春运火车票价的问题,单从经济学的效率理论分析,提高调价确实是正确的,可是这不符合社会公平的要求。在经济学当中,效率和公平从来都是两难问题。所以,并不能说这个经济学理论观点是错的,只能说这个解决方法没有实操性罢了。”
我不懂经济,不过我懂:如果一个理论没有可操作性。或者与现实相左,那这个理论也就废掉了。上帝啊,为什么这些专家要用一个已经废掉的理论来说事呢?难道因为老百姓不懂经济,拿来糊弄么?还有就是,评论留言的这位“修经济的”,明知道作为票价涨价的理论基础不具有可操作性,那还给大家解释有这么一个具体理论干什么呢?有潜质,当中国经济学家的潜质……专家的事情,我不懂!

应用遗传算法快速寻找游戏装备的最优组合

本文是“数据建模与优化”课程的课程作业。切勿当真。仅供赏玩。下载完整代码和论文

摘要:本文介绍了应用遗传算法解决游戏装备的最优组合问题。首先会简单介绍什么是游戏装备的最优组合问题,以及研究该问题的实际意义。并介绍了解决该问题的现有方法——穷举法。然后给出了游戏装备的最优组合问题的数学语言描述,以及针对该问题应用遗传算法所需关键点,如编码方式、评估函数等。大量实验数据表明寻找游戏装备的最优组合遗传算法要优于穷举法。

关键字:遗传算法, 组合问题, 游戏装备

内容目录

1 简介 1

2 游戏装备问题 2

2.1 数学模型 2

2.2 遗传算法 3

2.3 求解步骤 4

3 实验 5

3.1 装备库种类n←2、最大装备数量m←50 6

3.2 装备库种类n←4、最大装备数量m←100 7

3.3 装备库种类n←6、最大装备数量m←100 8

4 总结 9

引用 10

课程感言 10

代码 11 Continue reading 应用遗传算法快速寻找游戏装备的最优组合

RatProxy 在 cygwin 下的编译

ubuntu 下已经搞掂,很简单:apt-get install make gcc build-essential libssl-dev ca-certificates,然后 make 即可。

cygwin 下有一点小麻烦,特别记录一下:

需要安装的包:make gcc binutils openssl-devel

需要做的改动:Makefile 的 CFLAGS = -Wall -O3 -Wno-pointer-sign -D_GNU_SOURCE 改为 CFLAGS = -Wall -O3 -D_GNU_SOURCE,去掉 -Wno-pointer-sign。否则会有一个不支持参数 xxxx 的报错。

然后一样,make 即可。

jquery 版的 ie 下 png 图片透明的 js 函数

1 function correctPNG(objTag) {

2 // 为 IE 时生效

3 if(jQuery.browser.msie) {

4 $(objTag).each(function(){

5 var src = $(this).attr(“src”);

6 // src 不为空,且为 png 格式图片

7 if (src != undefined && src.substring(src.length – 3, src.length).toLowerCase() == “png”) {

8 // 取出图片原有属性

9 var imgId = $(this).attr(“id”);

10 imgId = imgId == undefined ? : imgId;

11 var imgClass = $(this).attr(“class”);

12 imgClass = imgClass == undefined ? : imgClass;

13 var imgTitle = $(this).attr(“title”);

14 imgTitle = imgTitle == undefined ? : imgTitle;

15 var imgStyle = $(this).attr(“style”);

16 imgStyle = imgStyle == undefined ? : imgStyle;

17 imgStyle = “display:inline-block;” + imgStyle;

18 var imgAlign = $(this).attr(“align”);

19 // 图片对齐属性转为样式

20 switch(imgAlign) {

21 case “left”:

22 imgStyle = “float:left;” + imgStyle;

23 break;

24 case “right”:

25 imgStyle = “float:right;” + imgStyle;

26 break;

27 }

28 // 父标签为 a 时,应用鼠标样式为手指

29 if ($(this).parent().get(0).tagName.toLowerCase() == “a”) {

30 imgStyle = “cursor:hand;” + imgStyle;

31 }

32 // 设置宽高

33 imgStyle = “width:” + $(this).width() + “px; height:” + $(this).height() + “px;” + imgStyle;

34 // 设置 IE 的 PNG 透明滤镜

35 imgStyle = “filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\” + src + \”,sizingMethod=\”scale\”);” + imgStyle;

36 // 替换 img 标签为 span

37 $(this).replaceWith(“<span id='” + imgId + “‘ class='” + imgClass + “‘ title='” + imgTitle + “‘ style='” + imgStyle + “‘></span>”);

38 }

39 });

40 }

41 }