分类目录归档:我的代码

用CodeIgniter写了第一个企业网站

某个晚上,发现使用PHP Web Framework来开发一些功能比较一般的商业网站效率挺高的。因此,有兴趣接触一下这方面的东西,免得我每次给自己的应用编写站点都Copy一大堆重复使用过的代码。搞Web的人太多了,同时涌现出来的Web框架也太多了,不知道选择哪一个好,怕选到一个不适合自己的,就浪费了不少时间了(虽说也能从中学到一些东西)。

上网搜索了一下,国外很多人推CakePHP,Zend Framework,Yii,Symfony,CodeIgniter等。在某论坛上看到有很多人推ThinkPHP(TP)的,好像人气挺高的。之前有个同学跟我推荐过ThinkPHP,我当时对基于别人的基础上开发站点还不怎么依赖,没多大兴趣。这次上官网看了一下,没找到在线的Example代码,所以没有理会。

后面看到有人推荐CodeIgniter(CI),听起来也挺不错的,于是上官网看了一个20分钟建博客的视频教程。从此就感觉到用它的框架的确比我之前自己写的那个框架方便多了!虽然要遵循一些规矩比较多,但是功能很强大,很全!点这里可以观看视频“Create a Blog in 20 Minutes”。
继续阅读

用alarm信号处理阻塞socket的超时

以前在使用阻塞(blocked)socket的connect,send,recv函数的时候,通常都使用settimeout来设置超时。
如下,

#!/usr/bin/env python

import socket
import time

fd = socket.socket()

try:
    print "connect", time.ctime()
    fd.settimeout(5)
    fd.connect(("twitter.com", 22))
except:
    print "timeout", time.ctime()
finally:
    fd.settimeout(0)

继续阅读

自动翻译WordPress所有的中文别名为英文

因为之前的文章,wordpress直接用了中文做别名,这样以别名为固定链接的设置就会导致URL不是那么的友好,而且wordpress还不会去掉中文标点,所以感觉有点怪怪的。今晚写个脚本,利用网上的翻译引擎,把我博客的所有中文别名都翻译为英文。这样就可以用英文的URL作为固定链接来定位我的文章了。

1、导出数据库

暂时只做一个测试,所以我把wp的数据库从服务器上dump出来,然后下载到本机。

mysqldump -uroot -p xiaoxia > blog.sql
tar zcf blog.tar.gz blog.sql

2、导入到本地的mysql中

mysql> create database xiaoxia;
mysql> use xiaoxia;
mysql> source blog.sql;

继续阅读

写编译器:学习GNU Flex,写一个词法分析器

以下内容仅为个人学习笔记,非正规教程,难免有疏漏之处,请指出!

目标要分析词法的对象是一种叫TINY+的计算机语言。下面是一个Example,

char str;
int x, fact;
str:= 'sample program in TINY+ language- computes factorial';
read x;
if x>0 and x<100 then {don’t compute if x<=0}
    fact:=1;
    while x>0 do
        fact:=fact*x;
        x:=x-1
    end;
    write fact
end

继续阅读

如何让多个进程监听同一个TCP端口

通常我的服务器上都会启用多个php-cgi程序,有时候这样做是很必要的

1. 可以同时让多个进程处理请求,负载均衡。
2. 避免一个进程崩溃时,在重新启动前,无法及时提供服务。

启用多个相同服务进程必然需要考虑共用一个socket。对于php-cgi程序来说,是通过stdin文件描述符来传递这个socket。

工作原理如下:
继续阅读

一道C语言趣味题

在某群看到,

趣味题:
编写原型为int foo(int i, int n)的c函数,实现打印i,i+1,…,n-1,n,n-1,…,i+1,i的序列。要求函数内只能有一条语句,只能有一个分号,只能有一个printf,并且只能用这个printf输出。不允许使用if、else、do、for、while、goto关键字。

没有给出参考答案。下面是我自己写的一个方法。
继续阅读

File Into PNG,用PNG封装文件

众所周知,PNG是一种无损的图像压缩存储格式。“无损”意味着我们除了可以把图像数据存放到PNG容器之外,还可以把非图像数据(例如文本、音频、视频等)数据压缩并存放到PNG容器中。现在似乎还没有这类软件可以让我们直接把数据压缩到PNG,据说iceboy大牛写了一个(纠正一下,不是iceboy,是twd2同学啊),没有用过(似乎需要Windows和.net运行环境)。详见:http://twd2.me/index.php/archives/1036

花了一晚时间研究,我也用Python写了一个压缩和解压缩的程序,同时支持在线使用,入口:

http://lab.xiaoxia.org/file2png/

例如,把一个CPP代码封装到PNG里,用图片查看器可以看到下面的一坨:

拉伸一下看看,
继续阅读