关于Common-lisp

Common Lisp这门语言是我在大学中感觉第二难的编程语言——第一是汇编,我直到现在都不想碰它。

难在何处?第二章开始,一般语言断断续续看,一周也就看完了。但是common lisp,看了足足一个月——可能也是因为接触起来比较困难,屡次夭折我学习其的兴趣。据说,学了lisp的人都“疯”了,比如冰河先生,王垠先生等。但是对于一个Hacker来言,我想这更加大了这门语言魅力。(注:这个地方的因素有很多;本身lisp是不难的,入门的方式很重要。)

在书写代码的时候,总有种感觉,这个地方如果可以这么实现,那么真是爽之又爽。仔细想想,lisp这种加上'就转变的特性,就是人们所说的lisp可以自己写lisp程序,也就是类似于Java中的反射思想,这十分的诱人。但是相比较lisp,Java以及其他语言想要实现这个特点,可能要写很多代码——这就不符合一个懒人的特点,同样,写的代码越多,出bug的几率越大。

想到多少就大概写多少。过去的几天,发现自己突然对于lisp有了更高的理解,对于设计模式【噗嗤】以及lisp函数编程的一些特性也有摸到门框的感觉,十分开心。于是写这篇不足以称为“文章”的博客来略表自己开心的心情。

此后,这篇文章中更新学习笔记的内容


发现scheme更适合商业化;同时学学

跨站评论系统

多说马上就关闭了,静态站的评论系统何去何从。

首先想要分析一下duoshuo的代码,看看自己能否实现。

不过,在看duoshuo客户端代码的时候没有搞明白到底是如何实现确认目标来源的。

<!--多说js加载开始一个页面只需要加载一次 -->
<script type="text/javascript">
var duoshuoQuery = {short_name:"您的多说二级域名"};
(function() {
    var ds = document.createElement('script');
    ds.type = 'text/javascript';ds.async = true;
    ds.src = 'http://static.duoshuo.com/embed.js';
    ds.charset = 'UTF-8';
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ds);
})();
</script>
<!--多说js加载结束一个页面只需要加载一次 -->

似乎是自己生成生成一条Javascript代码,然后把head以及body加在上面,进而出一个界面。

embed.js就没有再看,好麻烦。

isso

在网上寻找一个合适的开源评论系统isso,可以自己搭建在主机上,使用Python+SQlite3实现。具体实现在其开源的代码中。

涉及到的知识有几个,一个是CORS,另一个还是CORS。

个人认为知识储备基本有了,但是如果要写还是很麻烦,于是就暂且弃坑了。

可以通过这个docker来部署wonderfall/isso,不过感觉docker-compose似乎存在问题,我无法直接挂载./config:/config,因此对于domer-compose中做此修改...../config/isso.conf:/config/isso.conf

此外,对于Flask实现这个留言系统,可以考虑通过flask-cors来实现。

《黑客与画家》读后

黑客与画家真是一本比较不错的书,点明了我许多朦胧的想法,也带来了很多新的思路。

就算是无法成为一个真正的成功者,成为一名合格的黑客也是不错的。话不多,来点摘录。时间间隔较长,
有时间再把相应的感受夹在其中。

一部分原因是,青少年在心理上还没有摆脱儿童状态,许多人都会残忍地对待他人。他们折磨书呆子的原因就像拔掉一条蜘蛛腿一样,觉得很好玩。在一个人产生良知之前,折磨就是一种娱乐。

如何制作viaweb

与用户直接对话的一些大型应用程序、被这些大型程序使用的程序、常驻后台报告系统出错的程序、重新启动出错部分的程序、生成统计报告或数据库索引的程序(偶然运行)、回收资源或者移动及恢复数据的程序(手动运行)、伪装成用户的程序(为了测试系统和发现bug)、诊断网络故障的程序、完成备份的程序、对外提供服务界面的程序、实时显示服务器状态和访问数据的程序(很受用户欢迎,对我们也是必不可少的)、修改后的开源软件程序(包括修正bug)以及许许多多的配置和设定文件。

你在害怕什么?

一件是你不懂得管理企业,另一件是你害怕竞争。可是实际上,这两件事都是没有通电的电篱笆。

此外,将公司管理视同软件优化还能帮助你避免VC担心的另一个陷阱——开发某种产品的时间过长。现在,黑客都已经熟知这一点,并总结出一个术语“过早优化”(premature optimization)。尽快拿出1.0版,然后根据用户的反映而不是自己的猜测进行软件优化

让书呆子保住他们的血汗钱,你就会无敌于天下。

什么是贫富差距

技术的发展加大了贫富差距,这是不是一个社会问题?好像没有那么严重。技术在加大收入差距的同时,缩小了大部分的其他差距。

贫富差距在人们无法温饱的时候尤为明显,但是在衣食足无特权的时候呢?

黑客们在想什么?

黑客改造语言的乐趣就好比外科医生摆弄病人内脏的乐趣,或者青少年喜欢用手挤破青春痘的那种感觉。至少对男生来说,某些类型的破坏非常刺激。针对青年男性读者的Maxim杂志每年出版一本特辑,里面一半是美女照片,另一半是各种严重事故的现场照片。这本杂志非常清楚它的读者想看什么^。

爆发的用户增长到底怎样?

用户是一把双刃剑。他们推动语言的发展,但也使得你不敢对语言进行大规模改造。所以,一开始的时候要精心选择用户,避免使用者过快增长。发展用户就像一种优化过程,明智的做法就是放慢速度。一般情况下,用户比较少意味着你任何时候都可以加大修改的力度。这时,对语言规格做出改变就像撕绷带,当你感到痛苦的一瞬间,痛苦就已经成为了回忆。如果用户数量庞大,修改语言带来的痛苦就将持续很长时间。

DNS服务

考虑到自己的树莓派经常没有一个固定的IP,如果在网络上进行提供我想要的服务无法访问,于是便想要解决这个问题。

怎么解决呢?

自己写一个么?

一开始考虑直接开一个RESTful的服务器,用来定时接收树莓派的请求,保存。然后通过web页面请求就可以得到IP地址,就可以通过某个调用来获取,就可以直接访问树莓派了。听起来似乎是一个比较好的解决方案,但是有没有更加优雅的呢?

想起动态IP地址,就想起了路由器中的花生壳服务。花生壳中,有一个DDNS(dymanic DNS),专门为了不确定的IP使用,但是花生壳的DDNS服务的免费套餐无法满足我的要求。付费的标准又比较高,我感觉我都可以利用这个价格自己构建一个DNS了。

等等?

自己构建一个DNS?如果我直接自己搭建一个DNS,这样直接记录一下自己DNS服务器的地址,然后还能自己整个域名访问,岂不快哉?这个主意很好,于是看了一下dnsmasq——好像不能完成自己的目的。那么不如直接搜索DDNS了。这样就找到符合自己要求的DDNS。这个需求的解决便算是完成了。