Software Engineering Homework

虽然放假了,但最近的时间都用在做作业和做实验上了。第一次用Qt4 Creator开发一个软件,靠自己胡乱摸索,稍微了解了一下工作原理。这IDE似乎比VS那个还要强大,面向对象的编程方法,所有地方只打”.”就能自动识别和转换成”->”,比Codelite方便和稳定很多。Qt4的类库也很强大,QString,QList比STL的string,vector功能多很多,用起来效率也很高。在@__kd__ 的同学介绍下,才知道还有mapper等实用的功能,不过还没用上,Qt4的MVC界面设计也没用上,下次再试试,哈哈!

继续阅读

Socket Programming Homework

Design:

The software consists of two parts. The server program and the client program. The server program
is simply a command line application that receives only one argument to specify the directory the file
server hosts. And the client program is written in Qt4 GUI framework, so a friendly visual user
interface is shown to the user.

Functions:

1. Listing directories from server.
2. Downloading files from server. Large files (4GB) are supported.
3. Multi-clients access and multi-threading supported.
4. Uses maximum network speed, nearly 50Mbytes/s transfer ability on PC.
5. The cross-platform Qt4 GUI supported.
6. Current version only support two basic FTP commands(LIST, RETR) for file listing and file
transferring. To simplify the development, the implementation of these commands is not
compatible with the RFC related specificiations.
继续阅读

Python与OpenCV人脸检测

因为这个学期学习的Pattern Recognition需要做一个Lab实验,而我所在的小组的题目是人脸识别。我想参与做的工作是人脸检测定位,然后提取特征。

为了减少工作量,尽量采用现成的技术和现有的库,例如OpenCV。最容易实现而且已经被广泛实践的就是人脸的定位了,使用过google plus或者facebook的人都知道,在浏览相片的时候,能够自动识别人脸并且提示圈人。目前发现新浪微博的相册还无此自动识别功能,只有手动寻找位置……

人脸检测效果如下:

继续阅读

在路由器上写CMCC自动登录脚本2 (shell篇)

继上一篇在路由器上写CMCC自动登录脚本介绍用python脚本实现cmcc自动登录之后,用起来不是很爽!另外发现openwrt也不支持perl脚本,所以想到用shell脚本重新写一遍。方便在没有python环境下,能够直接使用。

今晚琢磨了两个小时,终于成功写出busybox能够支持的登录脚本了。因为登录过程中多次跳转,需要记录JSP的SessionID,所以需要下载安装完整版的wget,才能使用到wget的cookie功能!(busybox自带的wget不支持cookie功能)
继续阅读

MySQL数据库优化的一些笔记

0. 索引很重要

之前列举记录用了下面的语句。state字段为索引。

SELECT * FROM feed_urls WHERE state='ok' AND feed_url<>'' LIMIT N,10

当记录数量很大时,有几万之后,这句SQL就很慢了。主要是因为feed_url没有建立索引。后来的解决方法是,把feed_url为空的,设为一个ok以外的state值,就行了。

1、索引不是万能的

为了计算记录总数,下面的语句会很慢。
继续阅读

通过友情链接进行博客Feed的搜集,你的博客收录了吗

很久没有发一些有技术含量的文章了,最近发博文都有一种应付式的感觉,真对不起自己。感觉有时候是我沉醉于一样东西太长时间了,把我正常的生活节奏都打乱了,而却没有注意到这样子反而效率很低下。适时抽时间出来总结一下是蛮重要的!所以,以后决定每天都抽一个小时出来自我总结,觉得有所感想就写下来,有技术研究的,就给大家分享一下吧!

这两天在写下面的一个东西,用来搜集博客种子(Feed)的RSS或者Atom地址的。没有种子的博客不会被收录进来。因为只有Feed才对我有用!

网站地址:http://feed.readself.com/

继续阅读

jQueryUI写一个调整分类的拖放效果 [附Demo]

最近,想用jQuery做一个网页的树目录结构,并且可以使用鼠标拖动调整选项的位置。我在网上找了一下插件,基本上看了好几款比较著名的,都觉得代码太复杂了或者界面太丑了等各种不符合我的要求。所以还是自己动手丰衣足食,还是坚持简单就是美的代码风格。

继续阅读

写了个Python脚本监控nginx进程

接上一文用iptables让SSH服务对陌生人说不。还是有点担心这个学期内,nginx可能会因为系统各种原因而出现异常退出,导致Web服务暂停。所以,又来了一个方案。

#!/usr/bin/env python
import os, sys, time

while True:
    time.sleep(3)
    try:
        ret = os.popen('ps -C nginx -o pid,cmd').readlines()
        if len(ret) < 2:
            print "nginx process killed, restarting service in 3 seconds."
            time.sleep(3)
            os.system("service nginx restart")
    except:
        print "Error", sys.exc_info()[1]

设置文件可执行属性,加入到/etc/rc.local,总算放心了。
这种方法还可以监控别的进程,我相信应该有现成的监控软件,但是我觉得写个脚本更方便。