New blog, new start, memories off 博客迁移!

“红花当然配绿叶. 这一辈子谁来陪. 渺渺茫茫来又回. 往日情景再浮现. 藕虽断了丝还连. 轻叹世间事多变迁”


从最后一次写博客到现在 ,我停写了大概五个月的博客。从那之后我的休息时间比之前空余出来不少,可总提不起兴致来写博客。

不过,五个月来我也没有闲着。因为时间多了,就有空停下来放慢节奏: 翻翻已经积了很久灰的工具书,逛逛网上牛人们的博客,同时也补充积累了不少非计算机专业的知识。

我捉摸着,是到了继续写博客的时候了。 为了督促自己行动起来,我决定把博客迁移到 牛逼烘烘的 GitHub Pages上。

之前的博客是用的CSDN在线博客服务。我是最近才知道了静态博客系统这种看起来很Geek的玩意儿。 网上提到了几种其他的流行的博客系统, 发现GitHub Pages上面原生支持的是Jekyll,我一拍脑门,就用它得了。

经过一个周末的时间,我浏览了一些关于用Jekyll在GitHub Pages上搭建静态博客的文章。 了解了一些常用操作后后,就把之前在CSDN的几篇博文转移到了这里。

因为笔者主要在Windows平台上开发,而Jekyll在Windows上的支持性并不好,导致迁移博客时出现了非常多的文件编译错误问题,让人焦头烂额。

短暂的使用过后,我觉得静态博客系统最厉害的地方在于它抛弃了MySQL的使用。 在线的动态内容,比如帖子的留言和评论,被云端的评论服务系统所替代托管。 例如本博客使用的DISQUS。可能是我孤陋寡闻好久没关注业内消息了,不过看到这个想法的时候确实让我眼前一亮。跟这个类似的还有著名的 Gravatar头像托管,用户在评论时填写了邮箱,博客程序会自动查找在Gravatar上是否有与之绑定的头像,一劳永逸。

虽然Jekyll提供给用户很高的自由度和高度定制的自动化机制,但用Jekyll写博客还是不如所见即所得的在线博客写起来更方便更直观一些,并且作为普通的博客用户来说学习曲线过陡了点。 这就像是学校里大家写论文时对于文档编辑器的选择了:普通青年用Word,文艺青年用LaTex,二逼青年用写字板。

最后,感谢博客的主题原作者codepiano提供的中文本地化的博客模板。很合我胃口, 呵呵

用OpenCV实现Photoshop曲线功能的"在图像中取样设置黑场"

某位朋友在实验中遇到一个任务,具体来说,就是给定一张含有细胞组织采样的显微图片,手动用photoshop去除这张图片的灰色背景,从而获得背景比较干净的图片方便细胞计数 。原始实验图片如下:

cells-origin.PNG

>> 继续阅读 <<

用优先级随机概率解决今天吃神马问题

众所周知,决定吃饭吃什么,不管是午休同事吃饭,亦或是朋友聚餐,可是堪比“我是谁?我从哪里来?要到哪里去?”一样的哲学难题难以解决。最催人泪下的回答“随便”更是难煞了多少少男少女,引发了无数的悲欢离合。 这几天我公司的几个同事吃饭时说起了这个问题,作为程序猿,决定用‘随便’的方法写一个随机程序来解决这个世界性难题。

最直接的方式无非是,罗列出我们可以选择的附近所有可以去的餐馆,放入一个数组,然后随机取数组其中一个餐馆

这种方式显然不可取,因为每个餐馆被选择的概率相同,而作为有智慧的个体我们显然是有偏好的。同事Y提出,把更想去的餐馆复制多个,放到数组中,这样大家更想去的餐馆被选中的概率就会更大一些。这种直接的办法实现起来虽很简单而且也足够用,但是有着 蛋疼 崇高理想的我们显然不满足于这种图样图森破的解决方案。

我提出,扩散到一般性情况,实现成精确到小数点的去设置每个餐馆的优先级数字(数字越大越容易被选中),各个餐馆优先级数字的比值代表着它们之间被选中的可能性比值。想到大学中学过的概率方法,这种情况下,我们可以通过概率累积函数的方式实现。

例如,我们有餐馆A,B,C三个,我们分别给他们优先级为3,2,1。这样三个餐馆被选中的概率分别为p(A) = 3/6 = 0.5,p(B) = 2/6 = 0.33, p(C) = 0.17;概率积累函数是,P(A) = p(A) = 0.5, P(B) = P(A) + p(B) = 0.83, P(C) = P(B) + p(C) = 1。这样我们通过随机数生成器生成一个0到1之间的小数,我们通过这个数来决定被选择的餐馆是哪个。

今天午休时间实现了一下这个程序, 代码如下(C++)

>> 继续阅读 <<

用Prolog完成Greplin challange

去年在Imperial College学习中我选修了非常有趣的Prolog课程。从名字(Programming in Logic)不难看出这是一个专门为人工智能设计的语言;而且跟传统的过程式语言(如C++)和函数式编程语言(如Haskell)思考的方式完全不同,Prolog是一种声明式的逻辑编程语言。

如Wiki中所说,”有别于一般的过编程语言,prolog的程式是基于谓词逻辑的理论。最基本的写法是定立物件与物件之间的关系,之后可以用询问目标的方式来查询各种物件之间的关系。系统会自动进行匹配及回溯,找出所询问的答案。” 这句话很好,我直接复制过来了。 Prolog解决问题的方式非常巧妙。鉴于篇幅问题,读者有兴趣可以去查找其他更详尽的学习资料查看Prolog具体的编程写法。

>> 继续阅读 <<