uniq、sort不得不注意的尾部空格(trailing whitespaces)

问题产生背景

自己写的一个基于FastDFS的客户端软件的日志格式如下:

[2013-09-06 08:57:01] 1884096 group6/M00/00/2D/Kj4ZKlIpKL6Actm8ABy_wPYwpa8782.mp3 ;fuckgfw.com/mp3k18/a2/1375_8767.mp3  
[2013-09-06 08:57:01] 1932032 group6/M00/00/2D/Kj4ZKlIpKL6APMlMAB17AFl-Zaw344.mp3 ;fuckgfw.com/mp3k18/a2/1390_20402.mp3
[2013-09-06 08:57:01] 2115392 group6/M00/00/28/Kj4ZK1IpKL6AUW6WACBHQHAveu0805.mp3 ;fuckgfw.com/mp3k18/a2/1381_8842.mp3  
[2013-09-06 08:57:01] 2340800 group6/M00/00/28/Kj4ZK1IpKL-ABGh8ACO3wLWZNXA955.mp3 ;fuckgfw.com/mp3k18/a2/1395_9009.mp3  
[2013-09-06 08:57:01] 1734272 group6/M00/00/28/Kj4ZK1IpKL-AZF8OABp2gDqh-sA949.mp3 ;fuckgfw.com/mp3k18/a2/1429_9466.mp3  
[2013-09-06 08:57:01] 2453888 group6/M00/00/2D/Kj4ZKlIpKL6AOkQ-ACVxgMD1aRE474.mp3 ;fuckgfw.com/mp3k18/a2/1429_9460.mp3  
[2013-09-06 08:58:00] 1375232 group14/M00/00/0C/Kj4ZLVIpKPqAFmmkABT8AAoz9lU552.mp3 ;fuckgfw.com/mp3k18/a2/1487_10243.mp3  
[2013-09-06 08:58:01] 3095808 group14/M00/00/0F/Kj4ZLFIpKPqAC73LAC89ACy9iyo432.mp3 ;fuckgfw.com/mp3k18/a2/1470_10017.mp3  
[2013-09-06 08:58:01] 2378240 group14/M00/00/0F/Kj4ZLFIpKPqADabyACRKANFt20E358.mp3 ;fuckgfw.com/mp3k18/a2/1471_10021.mp3  
[2013-09-06 08:58:01] 2102144 group14/M00/00/0C/Kj4ZLVIpKPqAOF32ACATgJsIdR0090.mp3 ;fuckgfw.com/mp3k18/a2/1465_9961.mp3  

nil、null与ngx.null

问题概述

今天第一次在nginx+lua架构下,写了个需要操作Redis的后台接口,该接口的功能主要是接受客户端的json格式的post请求,实现对保存在redis中的任务插入、删除、查询等。虽然nginx,lua等都是刚接触,但这几个接口还是顺风顺水的坐下来了,不能忘了感谢春哥章亦春。

在Redis中记录的任务其实很简单,每插入一个任务,就在redis中增加一个HASH结构,每次查询返回该SET的各个Field和对应的Value值,例如md5,filesize等。由于任务类型的不同,有的Field可能在该任务中不存在,此时在以json格式将查询结果返回时不应显示该Field。

以md5域为例,在对当前任务以md5域执行hget后,应该对返回结果做一个判断,如果该HASH结构并没有设置md5这个域,则跳过,继续执行后面的逻辑,如果设置了md5域,则把该域的Value取出来,插入到结果table中,后续再作为json格式返回结果的一部分,返回给后台。

无题

躺在水底

仰望

光影摇曳

扑朔迷离

就像

俯瞰众生

怎样可以连续做一百个俯卧撑

我一直有一个目标:连续做俯卧撑一百个。

我最早开始接触俯卧撑是在初中,那时在校外借宿,每天中午拿着饭盒到宿舍后,做的第一件事情就是做三十个俯卧撑再吃饭,最多的时候能连续做七十个。也就是从那个时候起,我的胸肌一直处于比一般同龄人大一圈的状态,但到了高中之后,就没有再坚持下去了。到了大学,偶尔心血来潮会试一下,快速的能做个三四十个,慢速的做十个都很费劲。这个状态,虽然与自己巅峰状态相去甚远,但跟身边的人比,也差不到哪里去。毕竟大家基本上都是死宅男,除了真三(那时候dota还没那么流行),就是武藤兰,剩下几个搞电子设计、算法竞赛的,一天到晚在实验室呆着。

但也有例外,正是在大学里,我才知道有人真的能连续慢速俯卧撑一百下,而且还是自己的同班同学。很多事情,其实你很早就知道不是什么稀奇的事,而一旦在你身边发生了,那感觉还是不一样的。但很遗憾,没有在大学里向他看齐,只是在心里埋下了一粒种子:其实我也可以做一百个,这东西并没有想象中那么遥远。

bash中while循环的一个大坑

起因是这样的,在一个常规的日志处理脚本中,最普通不过的while read line;do XXXX;done<file的应用场景。可是发现文件处理完后,该脚本并没有停止,仍在不停执行,准确点说,是死循环了。第一反应是想到是不是文件格式问题,导致在判断文件结束上出现了问题?但所有的文件都是在服务器上直接生成或创建的,不会存在这个问题。脚本通读了几遍,未果;无奈之下,只好祭出bash -x来。才发现,原来是在敲脚本时,不知怎么手抖了一下,在while和do语句之间,打上了个echo语句。这个就是罪魁祸首了,删掉后,脚本就恢复正常了。

如果就这么过去了,多没意思,我觉得有必要深究一下while的运行机制。