图片非常的大,请耐心等候~~
在stdio.h中发现一个很强悍注释
我的Emacs配置
原来一直想用Vim来写东西,不过Vim的出生就被定义为做一个编辑器。他的职责就是做好一个编辑器,Vim也不愧为编辑器之神,他确实是非常棒的编辑器。在Unix中,几乎每个工具都是设计为只做一件事,所以我也不想勉为其难将Vim变成一个好用的IDE。
俺曾经尝试使用vim-gdb把gdb嵌入vim,不过用户体验是在让人无法接受,于是就放弃了。
于是只能投身神的编辑器、伪装成编辑器的操作系统——Emacs。
不过俺还是喜欢vim的按键风格,所以俺装了evil,把Emacs变成了超强版的Vim。
代码提示就不说了,Emacs下很轻易就可以做到转到定义处,重构等等。
好的工具是敏捷开发的必要前提啊~又想起了一句古诗:君子性非异也,善假于物也。
俺的最新的Emacs配置请见:https://github.com/cedricporter/vim-emacs-setting
配置效果如下:
我的Vim配置
我的Vim配置,参考了众多大牛的配置。这个配置我用了挺长的一段时间了,觉得用起来还算顺手。
此配置过的Vim非常适合用来写Python、shell和一般的配置文件。
最新的配置文件可以在https://github.com/cedricporter/vim-emacs-setting获取,我不定时会更新它。
配置效果如下图:
我的FTP Server——ftp.py
在上文中,我们简要地学习了下FTP协议,链接 http://everet.org/2012/03/ftp-protocol.html。
有兴趣的同学们可以去围观下。
因为最近偶看了下FTP协议,所以决定写个FTP Server玩玩。毕竟一直写的都是应用程序,于是乎想写下服务器端的程序。
ftp.py
ftp.py由Python 2.x实现。目前有部署到我的服务器上。支持Windows、Unix和类Unix系统。支持多线程模式和多进程模式,不过在Windows上仅支持多线程模式。支持虚拟用户。
其中多进程模式支持以其他用户身份运行,加强了安全性。
1 | usage: ftp.py [-d] [-h] [-p port] [-o] [-t] |
其中用户设置写在ftp.py.config中,如果文件不存在则默认使用anonymous账户。
用户设置文件ftp.py.config格式如下:
account_info = {
‘et’:{‘pass’:‘123456789’, ‘home_dir’:’/root/’},
‘lst’:{‘pass’:‘987654321’, ‘home_dir’:’/tmp/’}
}
也就是账户名+密码+家目录路径。
ftp.py.config
我们还可以在ftp.py的同级目录中通过ftp.py.config设置我们的FTP Server。
最大用户连接数 limit_connection_number
``超时时间(单位:秒)timeout
``默认家目录:default_home_dir
日志文件:logfile
运行的用户身份:runas_user
默认值为:
1 | limit_connection_number = 5 # max client number |
源码如下:
Python端口转发及重定向实现Eclipse的TCP/IP Monitor
记得在上个学期的时候选了徐扬老师的《Web服务与面向服务的体系结构》,讲了SOA之类的一堆东西。然后实验就是要4个下午做完IBM一个星期的培训课程……
于是偶们便开始无脑地照着下面这本手册来狂做实验。记得要做10多个实验,算一下一个下午要做2-3个实验,所以当场做的话只能无脑操作鸟。不能不说是教育的悲哀啊。
记得在做“Exercise 7. Creating Web service clients”,有一小节是使用TCP/IP Monitor来检查SOAP消息。
也就是在Eclipse的TCP/IP Monitor中,设置监听一个端口如9081,然后设置你的SOA服务器的端口9080。然后你和9081端口的通信就会重定向到了9080.然后你就可以看到他们的数据传输。
进程间通信:管道pipe一个简单的例子
管道是进程间通信的有力的武器.记得初中时在写Windows的后门的时候,也是开了一个匿名的管道和cmd进行交互.今天终于在Linux上写了下管道.
在Linux下,两个程序之间传递数据的最简单的方法就是使用popen和pclose两个函数了。但它们都是需要启动一个shell。这个成本略高啊。
于是我们可以使用底层的pipe函数。通过这个函数,我们在两个程序之间传递数据而不需要启动一个shell来解释请求的命令。
原型是:
1 | #include <unistd.h> |
参数是一个由两个整型的文件描述符组成的数组的指针。成功返回0,失败返回-1,并设置errno来表面失败的原因。
两个文件描述符以特殊的方式连接起来。写到file_descriptor[1]的所有数据都可以从file_descriptor[0]中读回来。数据基于先进先出FIFO的原则。
我们使用read和write来访问数据。
管道有一些内置的缓冲区,它在write和read调用之间保存数据。
十二生肖
今天突然发现,我在中国生存了二十多年,竟然连十二生肖的循序都不知道,于是乎就上网找了下记录一下。
生肖也称属相,是中国和东亚地区的一些民族用来代表年份和人的出生年的十二种动物。生肖的周期为12年。每一人在其出生年都有一种动物作为生肖。十二生肖即鼠、牛、虎、兔、龙、蛇、马、羊、猴、鸡、狗、猪,依次分配于十二地支,是中国民间计算年龄的方法,也是一种古老的纪年法,亦称十二生肖。十二生肖(兽历)广泛流行于亚洲诸民族及东欧和北非的某些国家之中。
来自百度百科。
Python进行图像处理——生成交替颜色的格子图
今天小孟师兄要一张贴图做测试,屠文翔同学用Fireworks花了两分钟做了下面的一张图片。但是师兄说要一张颜色相隔的图片,于是Fireworks此时就显得有点力不从心了。于是此时Python就要上场啦。
Fireworks生成的图:
好,下面,我们来用Python的PIL库来敏捷地生成一个颜色相隔的格子图。只需要10行代码。
一款期待已久的Chrome插件——Evernote Clearly
Evernote Clearly是Chrome的一款插件。Evernote的各种产品我的超喜欢,确实很贴心啊~特别是Evernote的笔记,比有道笔记,Microsoft OneNote都强多了。
它的介绍如下:
Clearly makes blog posts, articles and webpages clean and easy to read. Save them to Evernote to read them anywhere.
它可以将网页以另外的风格显示出来,而且还可以自定义风格。
举个例子,下图是 http://www.w3.org/Protocols/rfc959/4_FileTransfer.html 在Evernote Clearly下的观看模式,很明显就舒服很多了,原页面是白刷刷的一片左对齐的文字,真让人蛋疼。