-
读书 VS. Google 后遗症
读过Fenng的三十学艺与 Linux Networking Cookbook之后,我非常认同下面这一段: 搭建Linux防火墙、使用Linux路由、使用Nagios监控网络、和自动网络安装服务等章节,对于一个系统管理员来说是绕不过去的话题,或许有人觉得我用搜索引擎直接找这些不就成了,不过,恕我直言,现在能搜到的技术信息多半零零散散,缺乏准确性。 没错,之前我就是这样的,有事问Google。不得不承认Google是根很不错的拐棍,多亏了它,我总是能找到问题的答案。后来不知不觉的,我变得懒惰并满足于通过Google解决问题。一个很相似的情况就是金山词霸这类软件,鼠标一晃,翻译就出来了,所以过后什么也没有记住,因此下次还得用鼠标晃一下。 既然我当初能摆脱对词霸的依赖,现在我也可以摆脱对Google的依赖(当然,也绝对不是用Baidu来帮忙了)。立此存照。 PS. Books to load: Linux Networking Cookbook Linux Command Line and Shell Scripting Bible Python Cookbook
-
别把Webserver累坏了
天气又热起来了,想着服务器在机房里累的呼呼冒着热气,我多少有些于心不忍,于是想办法帮它减负吧。 首先是网页模板方面: 尽量减少修饰目的的<img/>,改用css来修饰模板,减小传输流量和request数目 合并CSS和JS,就是把所有用到的CSS写到一个文件,JS写到一个文件,减少request数目 HTML CSS JS文件的minify,就是去除文本中多余的空格、换行、注释等等 然后是HTTP Server方面: 静动分离,例如用nginx服务静态文件,而apache2服务动态内容(php,……) 利用浏览器端的cache(Apache2: mod_expires; Nginx: expires),降低重复访问时的流量。 对文本或非压缩格式文件开启gzip压缩 关闭access log或者将log写到另外的服务器 最后是webapp方面: 很多CMS都有内建的cache机制,尽量开启,减少DB操作 尽量减少安装组件或插件,特别是访问统计这类,DB开销很大 好了,简单总结一下,抛砖引玉吧。 附:Apache 2.0 开启gzip压缩和expire的例子 SetOutputFilter DEFLATE SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|zip|pdf)$ no-gzip dont-vary ExpiresByType image/gif “access plus 1 week” ExpiresByType image/jpeg “access plus 1 week” ExpiresByType image/png “access plus 1 week” ExpiresByType text/css …
-
Unicode编码中的简繁中文互转
现在简繁中文的转换已经不像从前那样,是gbk/ big5两种文字编码之间的转换,而是在同一个编码,Unicode,当中不同编码的映射。当然,简繁中文绝对不是简单的一一对应关系,有一对多的个别情况,例如简体的“后” 对应繁体的 “后”和“後”。行业词汇也有差别,例如大陆说“宽带”,而港台说“寬頻”;大陆说“操作系统”,而港台说“作業系統” 等等。 因此当我决定用Python程序将森海塞尔简体中文网站转换为繁体中文网站时,我的计划分三个步骤: 提取行业高频关键字,找到简体和繁体的对应,编成词典 利用现有的Python中文本地化工具包,将关键字之外的文字转换 请港台Freelancer人工校对,确保本土化 第一步,我的词典替换程序在此: 第二步,我利用的是pyzh中文工具包中的fanjian.py完成。特别感谢pyzh项目组的全部成员和fanjian.py程序作者ne.manman和zsp007! 下面就交给香港的朋友了,希望不会累坏他:) 顺便说,Songbird很不错,有点山寨iTunes,那又怎样呢?毕竟Linux下面还没iTunes。 Songbird
-
不着边际:Matrix一定会实现
老妈来到北京后就一直抱怨北京的空气质量太差,其实差的又怎么会仅仅是空气呢?水污染、食品污染都在一口一口的吃掉人们的健康。照这个势头下去,没准人类真的会被自己的造物——机器所取代了,因为对比一下就会很清楚,在一个到处污染的环境下,机器的生存能力更强: 人类需要食物、水、氧气,而机器只需要能量。 人类怕污染,机器不怕,核辐射都不怕。 人类更换器官,显然比机器更换部件麻烦的多。 人类离不开机器,但是机器却可以离开人。 顺便纪念一下我最喜欢的电影《Matrix》十年了:)
-
Exo-Diva计划基本完成
一切基本按计划进行并完成。上图: 计划开始前,留图纪念 Diva晾在外面了。可惜LAN Party的机箱了。机箱靠外一侧的进气口全部封死了。 连线完成,开机测试。一点噪声都没了,真不习惯:) 出了两点意外:一是贝尔金的USB HUB单口供电居然不够外置DVD刻录机的。幸好DVD刻录机可以接另一个USB口辅助供电。二是主板居然只支持PS2键盘开机,USB键盘不行。又一次幸好主板有个bug,就是掉电后恢复之前状态的选项只要打开,那么每次加电都会自动开机,哈哈,桌面的接线板开关就成了电源键了。 等待酷暑和大雨的考验。
-
笑笑十三个月了
忙碌的时候,时间就像看DVD开了2X快进一样。我们还没来得及给笑笑准备抓周,又是一个月过去了。不过笑笑显然没闲着,进步多多! 笑笑学会了捉迷藏,她会晃晃的走到垂地的窗帘后面,然后一声也不出得等爸爸来找。不过很显然,这位初学者忽略了自己投射到窗帘上的大大的影子了。当爸爸出现时,她还会大叫一声,并企图趁乱逃跑。 尽管我们不能再像以前那样轻松的用个洋娃娃转移笑笑的注意力,让她忘却她的无礼要求,但笑笑最近似乎认识到了现实的残酷——不是每一件事情都是可以做的,例如把书架上的书全搬到地上——因为奶奶会打屁股的! 上次逛超市,我发现山寨版的乐高正在促销,尽管表明3+,我还是买了下来。我把细小的积木块挑出来并藏了起来,避免它们被笑笑当甜点吃掉。于是笑笑开始玩乐高(山寨版),当然了,最初她只是扔来扔去的,但是终于有一天,笑笑把一块乐高插在了另一块上,并高兴的大叫一声。于是我给笑笑买了一套乐高(正版)。 笑笑已经出过了婴儿急疹,发低热两天,然后疹子就出来了。好在有《郑玉巧育儿经》在手,笑笑爸妈泰然处之,并无意外。 最后还有一件小事情,笑笑会用吸管吸酸奶了。
-
从6.7到0.01
编程果然不能偷懒!我这一偷懒,CPU就不知道要受多少累、冒多少热气了。一开始,我采用了很无脑的穷举方法,复杂度是O(n**2),结果肯定正确的,但是长度一万的数组就可以耗去6.7秒的CPU时间。 raymond@raymond-laptop:~/_Work/Dev/python$ python le.py time: 0:00:06.708924 return: 1 0 0 0 之后,在高手提示下将复杂度降低到n (log n + 1) ,结果不错了。 raymond@raymond-laptop:~/_Work/Dev/python$ python le.py time: 0:00:00.010430 return: 1 0 0 0 对应改进后的代码: def leader3(array): t = len(array) //2 array.sort() p = -1 c = 1 for i in array: if p == i : c+=1 if c > t:…
-
偷闲,写了个初级二叉树排序
二叉树是计算机算法中普遍采用的数据结构。在所有排序算法中具有高效率的二叉树排序就是基于此结构。我抽空用新学的Python写了一个试试: class node: left = None right = None value = 0 def __init__(self, v): self.value = v def walk(self): r = [] if self.left: r.extend(self.left.walk()) r.append(self.value) if self.right: r.extend(self.right.walk()) return r def insert(self, n): if self.value < n: if self.right: self.right.insert(n) else: self.right = node(n) else: if self.left: self.left.insert(n) else: self.left = node(n) if…