Posts Tagged www
写在zipsite1.0发布之后
首先,大肆宣扬一番:今天zipsite正式发布了第一个里程碑式版本 Ver1.0 Release!
话说去年11月份,刚接到一个项目,要在Android平台上开发一个基于手机通讯录的应用。众所周知的原因,Android开发者网站http://developer.android.com/ 在国内无法访问。一开始,我直接下载了本地版本的html全站镜像文件。作为一开始了解这个平台,读读SDK搭建方法一点问题也没有。后来对照几个example进行开发联系,发觉很多类型不知道何去何从,用了本地搜索发觉也是摸不着头脑。于是有了一个想法:为何不把手册放在网上,借助google来索引整个网站。
重新认识下PHP的输出
大概在02 03年或者更早,我第一次接触了PHP lib中的模板类,后来又开始用了众人皆知的Smarty,以及各种框架内自带的模板引擎。这段时间就几乎没有再用过直接的echo输出——临时的脚本除外。似乎现在再去写个网站,一大堆echo嵌入到HTML里,会被同行笑话的,至少会被认为是学生作品吧。本文就重新捡回这个命令,重新认识下。
PHP程序员的逻辑:
数据经过加工,传输给模板引擎,模板引擎选择合适的模板填充,输出为页面通过www服务器传输给用户。
再此之前,请自查手册,熟悉ob_end_clean() flush()以及相关联的输出控制函数。
如果能看懂如下伪代码,并认为这是一团糟糕的死循环的话请继续:
突破GAE文件数量的限制
这些天有个项目是需要一部分Android开发。本想去官网看文档,众所周知的原因,官网无法连接。下载了本地的文件,由于是做的整站镜像,搜索功能无法正常使用,这对于经常要使用此功能的我来说很是麻烦。于是想到了把文件上传到GAE,再利用Google的本地功能来实现。 想的很简单,写好了app.yaml就要上传。谁知道试了几次也不成功。帮助手册上说的很明确:
| 限制 | 值 |
|---|---|
| 请求大小 | 10 兆字节 |
| 响应大小 | 10 兆字节 |
| 请求持续时间 | 30 秒 |
| 同时动态请求 | 30 * |
| 应用程序文件的最大数目 | 1,000 |
| 静态文件的最大数目 | 1,000 |
| 应用程序文件的最大大小 | 10 兆字节 |
| 静态文件的最大大小 | 10 兆字节 |
| 所有应用程序和静态文件的最大总大小 | 150 兆字节 |
Ubuntu下安装Nginx+php(FastCGI)
Nginx是近期最火的www服务器软件,它的种种优势这里就不在累述了,直接进入正题吧。
安装nginx
老一套的把戏 sudo apt-get install nginx
安装好之后sudo /etc/init.d/nginx restart 启动服务,正常情况下,你应该可以访问它获得经典的Welcome to nginx!欢迎界面。
WordPress google-syntax-highlighter 插件的问题
小站上一直使用Google Syntax Highlighter for WordPress 插件实现代码高亮,就在上一篇文章发布之后,我发现了这个插件中存在的一个bug:windows + IE 8无法正常加亮python代码。
查阅了官方网站,发掘Google Syntax Highlighter for WordPress插件用的1.5版已经停止更新,只能使用2.0以上的版本,但2.0版本和之前的版本又存在兼容的问题,直接替换是不行的。不想每篇文章的修改<pre>标记,那就改插件喽。
GAE的数据导入问题
又是关于Google App Engine的问题。
根据GAE的官方文档,向GAE的存储区导入数据,导入了数次均出现问题,翻来覆去的无法成功。
CVS结构示例:1300428,浙江省嘉兴市,联通130卡 (一个手机号码的对应归属地列表)
configfile:
from google.appengine.ext import db
from google.appengine.tools.bulkloader import Loader
class MobilePhone(db.Model):
Number = db.StringProperty()
Area = db.StringProperty()
BrandType = db.StringProperty()
class MPLoader(Loader):
def __init__(self):
Loader.__init__(self, 'MobilePhone',
[('Number', unicode),
('Area', unicode),
('BrandType', unicode),
])
loaders = [MPLoader]
主要分析了一下,问题分为几类。
GAE的镜像
本想将LAMP中的PHP弄成Python,研究下Zope或者索性的Python CGI。想到目前推Python最起劲的公司正是Google,况且Google的App Engine又是免费资源,顺道着就申请了。
GAE对于很多人来说只不过是当作撑杆来翻墙的。其实不管从哪个方面来说,GAE的理念就是一个搭载了Java或Python页面框架的虚拟主机,而且支持一大堆的扩展(google wave上的机器人)。借助了Microblog,我在GAE上架设了本站的镜像站点。
flash播放MP3的问题
最近碰到了一个奇异的问题:apache的服务器,一个Flash调Mp3进行播放,用IE和chromium打开后启动时正常,一旦暂停后,再次播放就无效。但对于Firefox则完全正常。
反复检查代码,无果。将文件上传到另外一台机器后IE也正常。反复修改KeepAlive,disk-cache之类的设置,完全没有效果。
真是叫人郁闷。
将Apache日志实时写入mysql
貌似 站长Litrin已经很久没有关注过LAMP的东西了。
作为网站运行来说,日志分析是一个很重要的工作。当一个网站的日志到了一定程度,或者一个网站同时有多台服务器的时候,传统的文本日志分析总会遇到瓶颈。
这个时候我就会想起强大的sql语句。看了网上很多人的帖子,都是将日志转成sql语句再导入的,搞得有点复杂。本方案不需要任何多余的软件和操作,一切全是实时、自动,供各位参考。
配置Ubuntu的php支持OCI8
PHP的OCI模块支持Oracle总是比较让人头痛。这趟弄个ubuntu的安装文档。
通过ubuntu-server安装盘安装LAMP。当然,正常情况下,建议安装好openssh服务器,免得麻烦。
虽然ubuntu的server支持root直接登录,既然是ubutu,还是遵循它的sudo吧。
安装结束后,启动server。
首先,经典的更新
#sudo apt-get update; sudo apt-get upgrade

近期评论