技术研究

关于apache下网站加速利器mod-pagespeed

自从有了自己独立服务器,一直认为自己网站速度还是挺快的,但自从上了监控宝之后,发现其实自己服务器的服务经常断。有很多时候网站是不可用的,这个让我很郁闷。一直在看dbanotes(大冯)的博客,知道他的服务器跟我都是在linode下,并且都是linux。然而我们的网站访问速度大相径庭。这一点肯定是我服务器没有配置好。
于是我通过查看两个网站页面HTTP状态,发现两个网站的网页返回HEAD信息差别不大,只有一个X-Mod-Pagespeed信息不知道是做什么的。看来这个参数的作用很大。
原来这是贴心的 Google 特为懒惰型网站主提供了傻瓜化解决方案,据称该模块可以有效将网页加载速度提高50%,Google这款加速模块简单的解决了许多复情况的问题:
-如果你的网站采用apache构建服务器,不需要对网站CMS系统进行处理即可应用;
-加速模块可以自行对网络传输的html字节优化及对图象,css进入压缩优化传输;
-智能缓存是一大亮点,它可以自动智能缓存,加速下载
以下是这个模块的版本
mod_pagespeed 32-bit .deb (Debian/Ubuntu)
mod_pagespeed 64-bit .deb (Debian/Ubuntu)
mod_pagespeed 32-bit .rpm (CentOS/Fedora)
mod_pagespeed 64-bit .rpm (CentOS/Fedora)
具体的安装方法:
首先先下载模块到服务器
如果你是debian的系统请运行一下命令
dpkg -i mod-pagespeed-*.deb
apt-get -f install
如果是centos的系统则
yum install at
rpm -U mod-pagespeed-*.rpm
重启APACHE后你会发现速度真的快了


php中json编码和解码的一些提示

对于php下的web service应用,json因其快速,轻量在小数据量传输的时候非常有优势,但用的时候有些小细节需要注意。我就是把数组存进去,再取出来的时候发现变成对象了,才发现原来是这样。
在运行环境上,json在php5.2以上才是内置的。
常用的方法是json_encode和json_decode。
json_encode的参数只有一个,就是要被转换的数据,而json_decode就不一样,他可以把json格式转换成对象(object)和数组两种
下面是个例子
$arr = array(”1″,”2″,”3″);
print_r($arr);
echo json_encode($arr);
print_r(json_decode(json_encode($arr)));
print_r(json_decode(json_encode($arr), true));
如果数组转成json,想解码回来的,别忘了加个参数true


wordpress获取当前分类页的ID

最近搞WORDPRESS的最新版,做模板的时候想获取当前分类的ID,以下是实现代码
获取当前分类页的ID
<?php if (is_category()) {
global $wp_query;
$cat_id = $wp_query->get_queried_object_id();
}
?>


android开发笔记

1. 修改了创建工程时候的默认activity的名称,发现发布项目时不能正常编译。编译的还是旧的名称,显示找不到:ActivityManager: Error: Activity class does not exist.
解决办法:在项目的根目录修改配置文件AndroidManifest.xml中的application中的activity
2. 对两个activity做跳转,发现部署后一直报错并“意外停止”,这是简单的小程序,不可能吃内存太多的。肯定是哪里不对。启用了debug模式,知道到logcat,发现里面有这样一句“ have you declared this activity in your AndroidManifest.xml”,看来又是AndroidManifest.xml的配置问题。果然在其中加了后,跳转后的activity正常了。
3. android程序在调试时出现了套接字异常“java.net.SocketException: Permission denied”。这是一个经典错误, Socket不能对外连接,错误不会被报出,调试的时候,能看到Exception, 一般是抛出 java.net.socketexception permission denied这个异常。只要你的程序想联网,就会抛出这个异常,最终联网失败。 原因是: 需要访问到网络必须要有权限,在AndroidManifest.xml中,需要进行如下配置:
4. could not write file images\/system.img, No space left on device一般的目录是这里C:\Documents and Settings\Administrator\.android,而这个盘已经满了,只剩下几十M的容量是不够的。(系统盘一般是C盘),因为空间不足就无法启动,删了一些文件后重新运行eclipse就好了
5. 往string[] 添加元素的方法,一个for循环中 string[i] = 对应item[i]


Android开发常见问题及解决方法

1.ActivityManager: Warning: Activity not started, its current task has been brought to the front
说明:模拟器中已经有一个实例在运行。
解决方法:退出模拟器中运行的程序,再次运行即可解决!
2.No grammar constraints (DTD or XML schema) detected for the document
说明:在编辑器中看到像这样关于缺少语法约束(DTD 或 XML 架构)的警告,尽管忽略这些警告。
解决方法:windows -> preferences -> xml -> xml files -> validation -> Indicate when no grammar is specified: 选择Ignore即可。
3.R.java: no such file or directory
说明:R类不存在。
解决方法:Windows->Preference->Java->Build Path中,将Folders改为选中Projects即可。
4.res\layout\*.xml: Invalid file name: must contain [...]


linode服务器重装全纪录

大家都说linode好用,还真的好用,这么一转眼就用了一年半了。最近刚刚重装了自己在LINODE的服务器。在此之前,我用的是debian,后来发现centos用起来太方便了。于是就琢磨着把系统换一下。在网上,查了好久的资料没有一个相对完整的解决方案。于是,我只好临时买了一个新的linode节点,做测试。下面就把大致的过程写出来。
其实,Linode的系统重装很快很方便。主要就是之前你的数据怎么整理,备份再在重装后恢复回来。
我的解决办法分两步:
1,首先先把现有的linode节点重新划分,把现有的一个镜像盘分为两个,举例来说,我现在的linode系统分为两个硬盘镜像(disk image):512MB Swap Image和Debian Disk Image,其中Debian Disk Image有16G,所有的东西都在这里。我用linode的resize工具现将16G中没有用到的10G划分出来。然后再新建一个硬盘镜像(Create a new Disk Image),把这10G作为一个外挂硬盘来用,命名为:extdisk。(注意:以上操作要先关闭系统)
2,在Lionde的系统配置部分(Configuration Profiles)找到自己的debian配置,点击编辑(edit),找到外挂硬盘(Block Device Assignment)部分,在/dev/xvdc这里下拉找到新建的外挂硬盘extdisk,保存设置。然后启动操作系统。
3,正常登录操作系统,首先查看外挂硬盘是否正常,打入fdisk -l 发现列表中已经有/dev/xvdc,接下来,我们就要想办法把外挂硬盘挂入操作系统了。现在你想挂入的地方新建一个目录,比如我选在根目录新建一个叫extdisk,命令是:mkdir /extdisk,然后用Mount /dev/xvdc /extdisk把外挂硬盘挂入操作系统。命令正常执行后,我们ls /extdisk,发现正常访问,这就表示我们的外挂硬盘正常工作了。我们可以把我们需要备份的文件都拷进来。
4,备份完毕后,关闭操作系统,开始重装。先删除debian的硬盘镜像(Debian Disk Image),然后删除操作系统的配置文件(My Debian Profile),之后在重建一个Linux版本(Deploy a Linux Distribution)就可以了,重建的时候,他会自动把你刚刚删除的硬盘镜像的空间用上,很方便。这次的Linux版本可要选对了,我选择的是Centos 5.5
5,启动centos,在把步骤3中的操作重做一遍,把刚刚的备份硬盘镜像重新挂进来,我们的重装就完成了。
重装系统风险很大,请大家务必慎重哈


linux centos 5 lamp(apache mysql php) yum自动安装shell脚本

手头有N台linux centos 5的服务器,每次配置都要打很多命令,不想这么烦下去了。
自己写了一个自动安装脚本,包括了apache mysql php的自动Yum安装。最后还设置了防火墙。
记录一下,想要源文件的可以跟我要。
别忘了,给这个文件这是一个执行权限,简单的来就是chmod 7777
#! /bin/bash
yum -y install httpd php mysql mysql-server php-mysql
echo ‘install httpd,php,mysql,php success’
# define auto run
/sbin/chkconfig httpd on
/sbin/chkconfig –add mysqld
/sbin/chkconfig mysqld on
echo ‘define httpd mysqld autorun success’
# start service
/sbin/service httpd restart
/sbin/service mysqld restart
echo ’start httpd mysqld success’
#define mysql password
mysqladmin -u root password ‘ismurray’
echo ‘define mysql password success’
# install apache ext
yum -y [...]


如何查看CentOS版本方法

有以下命令可以查看:
# lsb_release -a
LSB Version: :core-3.1-ia32:core-3.1-noarch:graphics-3.1-ia32:graphics-3.1-noarch
Distributor ID: CentOS
Description: CentOS release 5.4 (Final)
Release: 5.4
Codename: Final
这个命令适用于所有的linux,包括Redhat、SuSE、Debian等发行版。
root@MyMail ~ # uname
Linux
root@MyMail ~ # uname -r
2.6.18-164.el5
以下二种方法适用于RedHat,CentOS
root@MyMail ~ # cat /etc/redhat-release
CentOS release 5.4 (Final)
登录到linux执行rpm -q redhat-release
#rpm -q redhat-release
或CentOS
root@MyMail ~ # rpm -q [...]


针对各个浏览器常用的前端开发工具

Fiddler
一个很强大的http流查看工具
http://www.fiddlertool.com/fiddler/
Httpwatch
数据分析工具,头消息接受/发送的查看,POST数据查看.等等
http://www.httpwatch.com
IE Developer Toolsbar
IE下的FireBug.HTML及CSS调试工具
http://www.windowsmarketplace.com/details.aspx?itemid=2695980
Companion.JS
IE下的javascript调试工具.福音啊!福音啊!!福音啊!!!
http://www.my-debugbar.com/wiki/CompanioNJS/HomePage
FireBug
神一样的插件
Web Developer
FireFox下的查看工具,可以查看JS,CSS等页面信息
YSlow
页面性能优化查看器.基于FireBug
http://developer.yahoo.com/yslow
Javascript Debugger
FireFox下的javascript调试工具,比FireBug有更强大的调试功能.
Opera Developer Tools
Opera下的DOM,CSS查看工具,类似FireBug.
http://dev.opera.com/articles/view/opera-developer-tools/
webkit
Safari下的开发调试工具
http://nightly.webkit.org/


无法找到对动作脚本 2.0 进行类型检查所需的文件“toplevel.as”。请确保目录“$(LocalData)/Classes”在动作脚本首选参数的全局类路径中列出。

我现在是啥都搞,现在开始搞FLASH了,我也服气了
拿到新源码,发现“无法找到对动作脚本 2.0 进行类型检查所需的文件“toplevel.as”。请确保目录“$(LocalData)/Classes”在动作脚本首选参数的全局类路径中列出。”,搞不清楚是啥原因。
我保证有这个路径“$(LocalData)/Classes”但就是不起作用,一下是网上查到的解决办法
解决方法:
1、打开Flash CS4,选择编辑 > 首选参数 > ActionScript项 > ActionScript 2.0 设置 > 点击”+”
2、添加新路径,输入C:\Program Files\Adobe\Adobe Flash CS4\Common\First Run\Classes,
3、然后把Flash CS3的”toplevel.as“文件拷贝到此路径下
如果大家没有这个AS,肯定大家用的盗版,那就点下面链接下载吧:toplevel