Saturday, September 18, 2010

Blogger 重庆电信再次解封

(2011年3月3日,重新来编辑这个贴,其实这次解封时间只有几个小时,可能是GFW抽了一下)

重庆电信今天无意间打开 blogspot ,居然能访问了,很欣喜,写下来,距上次在Blogger写文章都有一年多了,也就是Blogger已经被大陆封一年。

今天能打开其实在这之前是有前兆的,前两天blogspot的页面能打开,但样式表域名下地址不能访问,载入的页面都没样式表,今天都能完整的打开了,很欣慰,不知道下一次中共的GFW什么时候再发疯?心中怒火何时才能平息?

在这之前两个星期我重庆电信曾经能访问Youtube的,也是同样不能载入样式表域名下的文件和视频,而是可以打开Youtube页面的,过了两天没见起色,依然所有都不能访问。

不知道是GFW的一次抽风还是真的解封了?希望是一次解封吧。


罪恶的GFW,中共已经成了大陆进步的绊脚石。叹息...

Sunday, November 15, 2009

博客暂时转移

由于中共对大陆网络的封锁,Blogger也遭殃被封,最近这次封锁都快半年了;所以博客也没有更新,偶尔只能通过代理访问到,不过现在的代理软件的服务器很多都也被封了,心中除了气愤还是气愤。现在暂时在CSDN.net上写博客,地址 http://blog.csdn.net/holeo

Friday, April 03, 2009

关于 Apache httpd 的模块 mod_jk.so

Apache Http 整合 Tomcat 集群及负载均衡,首先,Apache Http整合Tomcat有很多方法,主要的两个方法是用mod_jk和mod_proxy_ajp模块整合,其中jk是Tomcat专供链接Apache Http使用的,性能稳定,但缺点是配置稍比porxy_ajp复杂;porxy_ajp使用代理转发,他们都是通过把符合条件的URI通过ajp通讯交给Tomcat的ajp通讯端口处理实现整合;其中,jk通过更详细的URI配置,可以详细到文件名,但proxy_ajp就只能实现匹配目录,所以jk更适合Tomcat与Apache Http的整合。

首先使用jk来整合,Linux和Windows平台,可直接下载Tomcat编译好的二进制模块文件mod_jk.so,使用Unix平台部分需要手动编译;

在FreeBSD7中安装编译,已经安装配置好JDK16和Tomcat6还有Apache22,推荐使用ports安装,安装编译mod_jk更方便,基本不会出错:

#cd /usr/ports/www/mod_jk-apache2 ; make install clean ; rehash

完成后,在/usr/local/libexec能找到编译好的mod_jk.so,说明成功。在/usr/local/etc/apache22里能找到jk配置的例子文件mod_jk.conf.sample和workers.properties.sample,参考配置。

#ee /usr/local/etc/apache22/httpd.conf

include etc/apache22/extra/httpd-jk.conf

#ee /usr/local/etc/apache22/extra/httpd-jk.conf

LoadModule jk_module libexec/apache22/mod_jk.so

JkWorkersFile etc/apache22/workers.properties
JkMountFile etc/apache22/uriworkermap.properties
JkLogFile /var/log/mod_jk.log
JkLogLevel error

# ee etc/apache22/workers.properties

worker.list = tomcat

worker.tomcat.port = 8009
worker.tomcat.host= tomcat-hostname
worker.tomcat.type= ajp13
worker.tomcat.lbfactor= 1

#ee etc/apache22/uriworkermap.properties

/*.jsp = tomcat
/*servlet/* = tomcat
/*.do = tomcat
/*.action = tomcat

启用Tomcat的ajp通讯,默认是开启的端口是8009,上面的配置能实现Apache Http和Tomcat的整合;

稍后在下面的方法是用多个Tomcat实现集群和负载均衡,性能增强,容错能力增加。(未完,待续...)

关于Apache Http模块的性能优化

提高Apache性能,使用基于内存和磁盘的缓存管理,添加下面4个模块:

file_cache_module 此模块提供文件描述符缓存支持,从而提高Apache性能

cache_module 此模块提供基于URI键的内容动态缓存(内存或磁盘),从而提高Apache性能,必须与mod_disk_cache/mod_mem_cache同时使用

disk_cache_module 此模块为mod_cache提供基于磁盘的缓存管理

mem_cache_module 此模块为mod_cache提供基于内存的缓存管理

Wednesday, April 01, 2009

关于Apache httpd模块的一点笔记

Apache httpd 是个很好的web服务器选择,性能强大,扩展性强,合理配置好apache的模块(module)是非常重要的,直接影响到性能。最近在Unix上配置Apache时,琢磨出些东西,于是就写了下来:

如果是目前单单配一个提供静态服务的功能,且考虑到以后的功能扩展,安装编译时就用动态共享对象(DSO)模式,编译参数里带上自己需要额外添加的模块,后续需要扩展直接配置httpd.conf即可,方便易于维护。

若提供单一的静态服务,只需加载下面5个模块:

authz_host_module 供基于主机名、IP地址、请求特征的访问控制,最基本的。
logio_module 对每个请求的输入/输出字节数以及HTTP头进行日志记录,简单的日志,必备。
mime_module 通过读取部分文件内容自动猜测文件的MIME类型,不然就不能正确打开html文件,也不能正确显示图片,等等,但可以输出的。
dir_module 指定目录索引文件以及为目录提供"尾斜杠"重定向,这样方便使用。
speling_module 自动纠正URL中的拼写错误,也是容错,方便使用的。

如果再加上一个自动索引目录和文件的功能,在加上下面1个模块:

autoindex_module
自动对目录中的内容生成列表,类似于"ls"或"dir"命令。

为了安全,这个功能最好在特定的目录下使用,比如只在archive这个目录下使用:

首先去掉apache主目录的索引:
Options -indexes FollowSymLinks

然后添加下面的一个新的目录配置:
<Directory "/usr/home/holeo/webapps/ROOT/archive">
Options indexes
IndexOptions FancyIndexing NameWidth=60 FoldersFirst
ServerSignature on
</Directory>

为了提高传输效率,尚且还可增加一个Gzip功能,压缩输出的文件到客户端,减少传输时间和带宽,对静态文件如html,css,js很实用,可增加下面3个模块:

deflate_module 压缩发送给客户端的内容,这是主角。
headers_module 允许通过配置文件控制任意的HTTP请求和应答头信息,发送带gzip的消息。
setenvif_module 根据客户端请求头字段设置环境变量,浏览器类型比对(BrowserMatch),因为有些客户端浏览器不支持gzip,所以这个时候就不能压缩内容,否则客户端就不能正确显示内容;还有请求文件类型的比对,比如只压缩html,css,js,其他gif,jpg,zip等就不压缩,如果压缩图像以及zip等会增加服务器的额外负担,这样得不偿失。

使用gzip,还需配置下面的内容,这是本人使用的配置代码:

<Location />
# Insert filter
SetOutputFilter DEFLATE
# Netscape 4.x has some problems...
BrowserMatch ^Mozilla/4 gzip-only-text/html
# Netscape 4.06-4.08 have some more problems
BrowserMatch ^Mozilla/4\.0[678] no-gzip
# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
# Don't compress images
SetEnvIfNoCase Request_URI \
\.(?:gif|jpe?g|png|bmp|ico|exe|bin|rar|zip|iso|7z|rpm|tar|gz|bz|bz2|mp3|wav|avi|mkv|mov|wmv|wma|swf|flv)$ no-gzip dont-vary
# Make sure proxies don't deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</Location>

这些就是最常用的模块配置了,当然更多的功能,更强劲的还在其他更多的模块中,才能体现出Apache httpd真正的伟大。哈哈~

Tuesday, March 17, 2009

虚惊~差点把一个珍贵的八年前的硬盘给毁了

我一个30G的老硬盘,是8年前电脑的,里面有很多数据,都是很早很早的数据,记录这六七年来的电脑使用历程,每个阶段我都备份在里面的。由于需要今天准备装个WinPE,装在这个硬盘主分区里,因为我的U盘没在身上,不然绝对不会碰这个硬盘,结果在装老毛桃的PE时,把整个硬盘的所有分区给删了,这下麻烦了,惊慌啊,郁闷啊。

我顿时束手无策了,一看只有一个损坏的分区,什么都打不开,怎么办,我想用软件EasyRecovery恢复数据,这个是一定能恢复出来的,但这个很麻烦,文件很多,而且恢复出来没有原来的文件结构。但在用EasyRecovery时,用高级恢复时发现,可以找回原来分区,试了试,原来的FAT32和NTFS分区一个个都能找回,心想有救了,只要把原来分区表一恢复,整个硬盘的数据就回来了。但试了试用EasyRecovery不行,换了个易我分区表修医生,用这个软件好哇,选择重建分区表,一下子原来所有的分区都出来,分区表恢复了。这个高兴啊,哈哈~给自己一个教训!

Saturday, February 07, 2009

Hibernate的替代方案

不是说Hibernate不好,Hibernate有时确实反应太迟钝,速度不理想,希望大家不要在迷信Hibernate了,自动生成的SQL确实不能让人信服。但如果是做小型的开发应用,使用它能提高开发效率,值得一用。

Hibernate的替代方案有:Apache OJB,JDO,Toplink,EJB(CMP),JPA,以上是基于ORMapping的替代方案,同时市场上比较流行的另外一种框架 是:IBatis,它只对JDBC进行了简单的封装。程序员可以使用熟悉的Sql语句,利用数据库的特性对数据进行相应的优化。

不适合使用Hibernate的几种场合:

(1):如果你的程序存在大量的批量更新,批量查询时,不适合采用Hibernate。这是由于Hibernate缓存的原因。这同时也是ORMapping框架的通病。IBatis会是更合理的选择。
(2):关系错综复杂时,不适合采用Hibernate。面向对象和面向关系之间的冲突,使得"阻抗不匹配"的代价太大!
(3):如果程序使用到了数据库的特定功能,此时Hibernate并不会是你理想的选择。你要利用数据库的功能来完成优化,完成并发。这时你可以想想为什么两条实现同样功能的查询语句,执行的效率却可以天壤之别。Hibernate说到底也是需要SQL语句的。而自动生成的SQL语句,你相信它吗?

相信大家在工作中还碰到Hibernate反应迟钝的案例!等等,一定要加以总结!

Thursday, November 13, 2008

javascript 操作 iframe 的 src

$('mainFrame').contentWindow.document.location= 'f_account.jsp'; //IE FF 都正常

$('mainFrame').src = 'f_account.jsp'; //IE正常,FF2下不能使用

不得不知道的小技巧。