别了,广州

广州,可以说是我的第二故乡,我在这里奋斗了十二年,除了我的家乡,这里算是我呆过的最久的城市。虽然,我对别的城市了解不深,但是我也到过不少城市,总体感觉,广州相对来说还是一个比较接受外地人的、宽容的、精致的中国现代城市。

可是,我不得不说,我还是没法继续在广州奋斗下去,虽然风景不错,但似乎看不到彼岸、看不到安定、看不到归宿。

虽然我的学历不高,只是大专学历,但是我也努力过,尝试着在广州买房安定下来,也组织了家庭,憧憬更美好的生活。可是我发现,随着自己的成长,要想在广州安顿和融入,所面对的问题只会越来越多,越来越遥不可及。

所以,我选择了离开。人活着,并不仅仅是为了要融入一个地方,花掉十年或者更多时间更不值得,何苦继续执着下去?何必呢?

所以,别了,广州。谢谢您带给我的一切和您留给我的一切美好记忆~!

UTF格式下字符串的比较

有两个UTF8的文本文件,前5个字符都是”uid”,可是用PHP来比较,==和strcmp都不对。十六进制下看,确实是有不同:

肉眼完全无法辨别。0xFFFE2200后面多了“0xFFFE”这个字符串。原来是有名的U+FEFF. BOM

根据维基的解释,多了FFFE的这个文件实际上是个UTF-16格式。

In UTF-16, a BOM (U+FEFF) may be placed as the first character of a file or character stream to indicate the endianness (byte order) of all the 16-bit code units of the file or stream.
英文倒是好办,用匹配模式清楚杂物即可。中文的话难道要不断检测“0xFFFE”这个字符串。特别是对于不懂技术的客户来说,这可真是伤脑筋。

关于IE6的URL包含中文的乱码问题

IE6下(其它浏览器暂时没发现这个问题)如果URL包含中文的字符,解析后会出现中文乱码的问题。哪怕是urlencode中文,decode后问题依旧。

解决办法可以使用base64_encode来编码,有个技巧是需要回避+加号,因为加号可能被当作urlencode的字符被自动解析成空格。只要注意这一点,URL包含中文的乱码问题就可以解决。

通过AGAL学习Stage3D

好久没有玩玩Flash 3D,官方的Stage3D AGAL教程已经放出。相对于Away3D的Molehill教程,变化不大,而是多了perspective和camera的教程。主要亮点在于AGAL的学习,对于OpenGL和WebGL的Vertex和Fragement学习都是很好的补充。

首先是安装环境,我使用FLalsh CS5测试,下载最新的Flex SDK,和11.0的playerglobal11_0.swc和flash player 11,以及com.adobe.utils.AGALMiniAssembler。
然后在Setting->preference->actionscript下的actioscript3.0 setting里面修改Flex SDK Path为你的解压路径/flex_sdk_4.5.1.21328A。
最后,安装FP11Publish_cs5.mxp让flash piblish setting里面支持flash player 11.0。直接上官方代码,享受AGAL的快感吧~

同样编译错误不用惊慌:VerifyError: Error #1014: 无法找到类 flash.display3D::Context3D。

打开这里publish preview->html才是王道。

另外,发现之前的incubator看flv视频很容易让Firefox崩溃,现在毫无压力。

把博客换到云主机

最近博客慢得要死,正愁没办法。惊喜地发现Godaddy推出云主机服务,因为最近有看到一个博客也用的最新的Godaddy云主机做博客,速度很快,所以毫不犹豫的下了单,一个月最便宜只要$3.74/mo,服务器是AP,亚洲太平洋地区。

但是云主机配置好后,使用FTP却让我有些失望,家里ADSL的4M,FTP上传只有可怜的2K/s左右,还好云主机支持SSH,本来打算用scp或者sftp来转移博客,不过都被connection refused。最后只有tar打包,使用wget下载。终于看到满意的1.2M/s。

博客转移完毕发现速度并没有想象的快,不过比原来好很多,期待云主机给我更多的惊喜~

租车不计免赔还是应该买

这次在神舟租车算是又栽了一回,租车时想着现在开车已经足够小心,每天40元的不计免赔就可以省了,于是租车没有要不计免赔。谁知天意弄人,偏偏在长洲岛的小集市和小贩的推车有了刮擦,右后车门刮出一手掌长,两指宽的刮痕。还车时,神舟以喷涂刮擦需要全喷整个车门为由,开价我560元的维修费,还有75元的一天误工费。天杀的,这种要价真他妈的黑!我印象中在同一个位置凹陷的修补也才260元,苦于自己没有时间,只能任人宰割…。

这635元足以支付16天的不计免赔。贵过上一次赔付轮胎的价钱。神舟租车你好野!算算今年我租车已经花费接近一万元,租车这摊混水,我是不再想随便涉足。如果神舟租车整天只想着如何从客户的身上刮下更多的油水,而不是提高服务水平,我想你是神宇租车都没用!

再次遇到Mysql set names编码问题

最近和编码挺有缘的,升级Mysql数据库又遇到set names编码问题。老的数据库是latin1,数据是GB2312,新的数据库是utf8,数据表也是utf8。通过PHPMYADMIN导入新数据库后,set names utf8后,数据仍为乱码。

后来发现因为老的数据库是latin1,所以应该是set names latin1,而数据表是utf8,但是数据仍为GB2312,所以网页应该是GBK编码。问题解决。

表格TD内高度14像素以下图片的空白问题

在做网页的时候发现表格的TD内如果只放高度比较小的图片,网页上td图片上方将出现一行多余的空白。用FF3和IE8均发现这个问题。经测试高度小于14像素的图片才会出现空白。在TD上和CSS定义TD的高度和图片一致,均不能解决问题。

一般认为问题应该是处在行距上,但是line-height和font-size为0,还是不能解决问题。既然图片高度变化可以影响这个空白,问题应该在图片身上。经测试display:block给图片,问题解决。

更新:发现排队的DIV也有这个问题,不过只是在IE下,float:left可以解决。

租车维修记

这一次租车带着家人,考虑到拿车和换车的方便性,我选择了E嗨租车。在机场到达大厅门口拿车,然后在酒店还车。虽然我已经有一些租车的经验,拿车时验车也很充足。但是我还是忽略了一些地方,导致这次租车出现的小风波。

我拿车的时候,E嗨的工作人员并没有告知我租的马自达有问题。在还车前两天,车上发动机的黄灯亮了起来,由于我对汽车硬件一窍不通,于是拿车去维修点检修,被告知火花塞里的土太多,需要清洗,如果需要更换火花塞,大概需要两百多块的费用。

好在我在维修之前,电话询问了E嗨,原来他们知道这两马自达发动机线路有问题,并强调不会影响开车。这样才没有继续维修车辆,把事情复杂化。

Jquery Click事件被激发两次的问题

今天遇到Jquery Click事件被激发两次的奇怪的现象,HTML代码很简单:

<a href=”javascript:void(0);” id=”add”><img src=”add.png” border=0”> Add</a>

在Javascript中使用click事件

$(document).ready(function() {

$(‘#add’).click(function() {alert(‘ok’);});

});

点击后发现alert了两次。寻思了很久,不得其所。网上搜索暂时有如下解决办法:

$(‘#add’).unbind(‘click’).click(function() {});

难道今天是两个1,alert也要闹节吗?囧~

如何不登录Discuz后台刷新模板缓存

Discuz修改后,缓存的模板常常无法更新,为了不总是麻烦客户,要求后台管理密码,最好的办法就是用程序来刷新。方法很简单:

先手工删除forumdata/templates里面的缓存模板文件,再运行:
if(!file_exists($objfile)){
require_once DISCUZ_ROOT.’./include/template.func.php’;
parse_template($tplfile, $templateid, $tpldir);
}
 

关于FTP到Linux主机文件上传不完整的问题

遇到个有趣的情况,从XP使用FTP上传文件到vsftpd的linux系统,PHP显示源代码,而wget的PHP则可以运行。发现 所有文件的第一个字符都会丢失。例如PHP就会变成<?php -> ?php。同一款FTP软件也上传文件到别的Linux系统,却都没有任何问题。可以肯定的是,不关short_tag的问题,PHP解析和配置都是正常,要不wget的PHP是无法正常运行的。那就只能先假设Linux的vsftpd有问题,换成Linux系统下的FTP来mget XP的PHP文件,还是显示源代码。难道是binary,没有用二进制上传的问题?用dos2unix测试问题依旧,换成FTP binary 下载XP的PHP的文件后,发现终于可以正常运行。

 

Virtualbox下用CentOS6作为测试服务器

网络方式用NAT,系统是XP,所以Host是XP,Guest是CentOS6

  1. Virtualbox下用CentOS6 Live CD ISO 创建CentOS6系统,安装Mysql+PHP+Nginx环境。
  2. 安装ftp用于Guest从Host传输数据。
  3. 要做到Host可以访问Guest,从Guest传输数据,需要Vboxmanage的帮忙。找到Virtualbox安装目录,开通SSH、FTP和HTTP端口映射。例如:
    VBoxManage setextradata “zhaiduo_centos6_NPM” “VBoxInternal/Devices/e1000/0/LUN#0/Config/http/Protocol” TCP
    VBoxManage setextradata “zhaiduo_centos6_NPM” “VBoxInternal/Devices/e1000/0/LUN#0/Config/http/GuestPort” 80
    VBoxManage setextradata “zhaiduo_centos6_NPM” “VBoxInternal/Devices/e1000/0/LUN#0/Config/http/HostPort” 8008
    就是把Guest的TCP 80端口映射到Host的8008端口。这样,我们就可以通过host ip:8008访问guest。其中”zhaiduo_centos6_NPM”是虚拟机名称,e1000是Guest使用的Intel的网卡,有些是pcnet。可以通过dmesg | grep eth查到。http是服务名称。然后修改虚拟机的配置,在NAT网络连接下的port forwarding rules添加相应的端口映射rule。如果觉得麻烦可以直接修改Documents and SettingsZhaiduoVirtualBox VMszhaiduo_centos6_NPM下面的zhaiduo_centos6_NPM.vbox。
  4. 设置完后重启VirtualBox,发现Guest仍然不能访问,应该是iptables的问题,简单一点iptables -F清空,然后/etc/init.d/iptables save、restart即可。复杂一点可以这样:
    iptables -L -n –line-number
    iptables -D INPUT input里面reject的那一行的行号
    iptable -A INPUT -m state –state NEW -m tcp -p tcp –dport 80 -j ACCEPT
    iptable -A INPUT -j REJECT –reject-with icmp-host-prohibited
    最后保存、重启。
  5. 关于vsFTPd的安装很简单,yum install成功后,设置/etc/vsftpd/vsftpd.conf,enable chroot_list_enable和指定chroot_list_file。如果启动后登录FTP出现如下错误:
    500 OOPS: cannot change directory
    解决办法:
    setsebool ftp_home_dir 1
    setsebool allow_ftpd_full_access 1
    service vsftpd restart
  6. 最后say hello to Nginx.

坑爹的document.getElementById

document.getElementById作为返回DOM元素对象的快速方法给大家带来很多方便。而且当DOM元素不存在的时候,getElementById就不会返回该元素对象的引用而是NULL。如果不自己进行返回的检查,NULL后面的语句将无法执行。

有趣的是getElementById返回的NULL在for循环下将自动退出,类似于break的效果。不得不说这是一个hack for break。而且Javascript错误控制台也不会有任何错误和警告。这就坑爹啦,一旦出现问题,将很难被发现。

奇怪的Discuz论坛错误:Current template file not found or have no access

Discuz!论坛换到新的服务器出现一个令人诡异的错误:

Current template file ‘././templates/default/discuz.htm’ not found or have no access!
经过细密排查,发现并非文件权限和文件是否存在的问题。而是DISCUZ_ROOT出现了一个怪怪的问题:

在include/template.func.php里面的函数function parse_template($tplfile, $templateid, $tpldir),里面有两句:

if(!@$fp = fopen($tplfile, ‘r’)) {
dexit(“Current template file ‘./$tpldir/$file.htm’ not found or have no access!”);
}
发现DISCUZ_ROOT的路径是E://…,此为正确路径,而$tplfile的路径竟然变成了D://,服务器D盘是光驱,自然会找不到。

至于这个$tplfile什么时候跳成D的,很是诡异,暂时没有发现源头。难道是万圣节快到?^_^!

解决办法可以加个preg_match匹配替换错误的D路径,论坛一切正常。

IIS6返回Bad Request (Invalid Hostname)的问题

一款新的云主机系统需要安装IIS6+PHP+Mysql的环境。可以一切准备就绪后发现打开网页是:Bad Request (Invalid Hostname)。

IIS6和系统配置IP并没有不同,也确定域名没有解析错误。后来用netstat -an发现IP居然是10.0开头,看来是主机没有绑定系统配置的IP。

打开网络链接属性查看,果然IP段是自动选择,设定IP段后,问题解决。

发现一个有趣的现象:这款国内公司提供的所谓的云主机,CPU有2.4G,内存1G。可用起来的感觉和1.8G CPU/512内存的VPS差不多,真是开眼界。

另外如果在Mysql 安装向导设置过程中出现如下错误:

终结点映射器中没有更多的终结点可用 error code $00800706D9
最好不要勾选Firewall对端口3306的忽略。

国庆租车

由于家里有事,不得不在国庆这样的节假日租车,比较了E嗨和神舟租车,同一款车日租费在国庆都长了很多,神舟涨了150左右,E嗨便宜些,也有50多。我租车也有十几次了,心中各自了解E嗨和神舟租车的优劣:

优势:

  • E嗨租车
    价格相对实惠,取车地点灵活,还车验车没有那么死板和严格,工作人员好沟通,取车速度快
  • 神舟租车
    车况较新、较好,服务手续齐全,门店多,可以去门店挑车
    劣势:

  • E嗨租车
    车况比较旧,比较脏,取车常有延误,通常无法选车,门店少,有时还车不方便

  • 神舟租车
    工作人员虽然还算礼貌,但是不好沟通,还车多纠纷,很容易被赔钱,取车速度慢
    综合上面的考虑,加上最近一次在E嗨租车的体验非常糟糕,车很脏,取车等了一个多小时,又兜去门店办手续。再加上坐车的舒适度和安全性考虑,这次我决定选择较贵的神舟租车。

Firefox Nightly升级到10.0a1

好久没有跟进WebGL,冲着HTML5和WebGL,我把Minefield升级到Nightly 10.0a1 (2011-09-28)。打算利用时间好好学习一下HTML5和WebGL。本来想买个Macbook Air,但是考虑到做苹果开发的局限性和难度,我还是更倾向于弄弄免费的HTML5和WebGL。毕竟3D也是我的兴趣,我很看好HTML5和WebGL,又能免费开发,又能跨平台一劳永逸。

Paypal账户受到限制

前段时间用paypal的sandbox测试,完成后,又因客户的要求用真实paypal做了程序调试。后果是我的paypal账户受到限制。

虽然paypal提供了两条解决方式,但是对我没有任何帮助:

  • 地址证明
    (为了确认您的地址,请将含有您的姓名和地址的账单复印件发送给我们。有用的文件包括家用水电气账单、手机账单、保险账单或学费账单。)
    我现在是租房子住,什么水电账单都不是我的名。手机账单的真实姓名也肯定和我的paypal帐号名不同,原因在于我注册paypal帐号是还没有中文版,所以用了英文的昵称。
  • 提供有关付款的更多信息
    点击进去提示出错“交易号无效或不完整。请再次选择。”
    最后我想到了改名,但是我点击进入。分别尝试了三种改名方法,我又傻眼了。

  • 个人姓名变更(结婚、离婚、法律)
    谁会因为结婚、离婚、法律问题改名?

  • 个人姓名变更(注册时不正确或较小的姓名更改)
    只能改一两个字母
  • 商家名称变更(变更联系人姓名)
    哪有营业执照复印件
    Paypal啊,我到底是欠了你什么?发了好几封邮件来提醒我,却又让我无路可走,这让我情何以堪!

我的帐号名是以前Paypal没有中文版时注册的。现在又让我用回真实姓名。明明是Paypal考虑不周,Paypal的错,却要让我来承受,让我烦忧!这让我情何以堪!

情何以堪!

 

安装CentOS6服务器环境遇到的编译错误

no acceptable C compiler found in $PATH

yum -y install gcc

configure: error: C++ compiler cannot create executables

yum install gcc gcc-c++ gcc-g77

error: no curses/tempcap library found

yum -y install ncurses-devel

Configure: error: XML configuration could not be found

yum -y install libxml2 libxml2-devel

configure: error: Can’t find OpenSSL’s <evp.h

yum -y install openssl openssl-devel

configure error please reinstall libcurl distribution

yum -y install curl-devel

configure error not found ldap.h

yum install openldap-devel

Can’t locate extUtils/makemaker.pm

Can’t locate CPAN.pm

yum -y install perl-CPAN

configure: error: libjpeg.(a|so) not found‎

yum -y install libjpeg-devel

#freetype.h not found
yum -y install freetype-devel

Windows下Mysql的Lost connection问题

VPS的Windows下AMP环境,Mysql出现如下错误:

Error: Lost connection to MySQL server at ‘reading initial communication packet’, system error: 0

发现Mysql服务无法停止和启动,重新配置也无效。本以为网站打不开,后来发现网站打开很慢,但是ping正常。

最后发现C盘空间不足,一检查,原来是logfiles满了,清除后,一切正常。

GD模块函数imagecopyresized让图片失真的问题

今天遇到PHP的GD模块函数缩小图片,让图片失真的问题,后来发现是imagecopyresized这个函数的问题。而用imagecreatetruecolor和
imagecopyresampled却没有这个问题。

系统环境:PHP Version 5.2.6-1+lenny9
GD Support enabled
GD Version 2.0 or higher
FreeType Support enabled
FreeType Linkage with freetype
FreeType Version 2.3.7
T1Lib Support enabled
GIF Read Support enabled
GIF Create Support enabled
JPG Support enabled
PNG Support enabled
WBMP Support enabled

电信宽带的断网问题(终结篇)

本以为前个星期的中国电信ADSL宽带的断网问题已经解决,可是后来还是发现有些小毛病,比如固定电话通话时有杂音,ADSL上网时固定电话会不定时的提示N个8的来电(N>=4)。上网掉线的问题虽然有好转,但还是有点小慢。昨天还是在打电话报了故障,今天有个新的师傅上门,他一听问题描述,立刻回答这是分线器的问题,我给他看我在电脑城买的新的华为分线器,他一看便说是假货,只值1-2元(我花了20块大洋),然后掏出自己的印有中国电信的分线器,掂一掂感觉要重一些,他解释道:“真的分线器是有分频作用,假的根本没有。所以还是会影响固话和上网质量。”

最后经测试,问题确实解决,这次才算是真正解决好了问题。不免长叹一声,以前那位中国电信的哥们儿怎么会上门5-6次搞不定,如此简单的问题,专业人士一看便知。真是遇到极品!好消息是,那位哥们儿已经调职,不再负责这个片区,家里的宽带和固话可算是有了安宁日。这个烦恼总算有了终结!

Paypal的Buy Now按钮追踪

Paypal的Buy Now按钮是比较简单快捷的在线支付形式。但是要做好Buy Now按钮的订单状态追踪统计似乎并不容易。简单设置返回路径和IPN的返回路径并不能解决问题。原因在于Buy Now按钮提交到Paypal的数据无法跟踪,而只能通过IPN来获取买家订购状态。但是没法比较关联买家和IPN返回的状态。考虑到用户可以重复购买,不用购物车,只记录最简单的订单状态。最后采用辅助状态标记来解决这个问题。通过Paypal沙盒的测试,基本达到要求。

电信宽带的断网问题

前段时间困扰了差不多一个星期的上网问题终于得到解决。中国电信的工作人员来了3次,并没有从根本解决问题,我只能说我伤不起,中国电信靠不住,我还是DIY吃自己。

根据我的上网问题,主要表现在拨号时出现错误提示:分别是691和678。691错误主要是:帐号密码的问题。这个问题在电信人员修改端口后得到解决,但是678错误却一直让电信人员手足无措,什么都试过了,还是问题依旧。最后电信人员认定是电话线的分接器有问题,可我重新买了一个新的后,发现还是问题依旧。

已经一个多星期的忍受,我发现自己已经没有力气和电信纠缠,每次报故障的回复都是48小时以内的等待,我已经伤不起,自己开始交换电话线,一根根的测试,看是不是线路的问题。最终我的想法是对的,确定电话主线没问题后,接上分接器,一切终于正常。苦笑……

关于轮胎的租车陷阱

虽然我已经租过好几次车,但是这次我还是陷入了一个租车陷阱。这次是在神舟租车租的车。我习惯提前一天租车,旁晚提车,第二天就不用那么早起来。18:30开始验车,首先就是轮胎,初看起来没有明显的瑕疵,也挺干净。接着车厢四周,车内,车尾箱,很快验车完成,觉得挺顺利。

等到几天后的18:30开始还车验车,首先轮胎,发现左前轮胎外壳损坏,有点纳闷了,没有印象发生过轮胎的碰撞,验车的哥们儿赶紧询问另外的同事,那同事仔细一看,原来验车单上已经有说明。这是验车的哥们儿突然手指轮胎外侧一个地方,用手指一拨,一条不起眼的小裂缝被发现了,赶紧又找来另外一个同事,那同事说轮胎需要赔偿。我赶紧说这个不能证明是是我租车的时候造成的。那同事说不可能,有裂缝的轮胎我们是不会租给客户用的。我立刻傻眼了,真是无以辩驳。

交钱吧,420轮胎加上75元/天的误工费,NND,算我倒霉,以后租车一定要仔细看轮胎,旧轮胎的车不要租。

第二次租车体验

第一次我是在神州租车租的车,体验都还不错,可是遇到神州租车五一的五折优惠,又预订晚了,最后还是选择了E嗨租车。租车租了七天,加上GPS一共费用1800元,车型是马自达两厢的小排量车。和神舟不同的是,初次租车,E嗨没有40元/天的不计免赔保险。放车和接车,E嗨都是由工作人员在街头交接,不像神舟在自己的门店交接。所以在交接手续上比较不方便。个人更喜欢门店的交接方式,这样在交接车辆时能够检查的比较仔细,不易出错漏。

另外,这次租出我还是出现了车辆的刮擦事件,右后门有一些凹陷。上次在神舟租车可以不计免赔保险,可是这次就要自己掏腰包啦。E嗨接车的工作人员建议我自己修,300元可以搞定。要是让他们弄至少450元,还要加上200元每天的误工费,奶奶的,这就是租车公司的差别吧。让用户方便点,不宰客的公司真是难找,E嗨的公告也不少,应该算是大公司。可是出现问题却全凭一张嘴说,毫无规章条例可循。

好在E嗨的工作人员随身携带POS机,可以刷信用卡,交款付费还算方便。不过问题又出在他们的POS机无法即时取消信用卡的预授权,虽然我不是十分介意无法立即取消授权,但是这足以让一个用户感觉一个公司的服务专业程度比较差劲。

总结这次租车的体验,租车一定要去有门店的公司,可以自由选择车辆,只凭网上的选择远远不够。作为新手开车,面对容易发生刮擦的来车,尽量放慢车速,甚至可以暂停车辆。特别要注意右边的车距,因为对右边的车距估计不足,更容易造成刮擦。租车最好提前一个月预定,越晚车越少,越贵。

XP遭遇死机

刚从Windows7的死机噩梦中逃离出来,没想到XP的死机厄运又降临到我身上。主要表现在开机进入XP的过程中无固定点的死机。频繁的死机导致无法找到无线网络,甚至无法开机。检测过磁盘没有发现问题,进入安全模式发现并没有死机的现象。试着修改启动项,问题依旧。最后决定删除以下几个软件,问题居然解决:

  • 360杀毒
  • 360安全卫士
  • 谷歌拼音
  • 有道词典
    我的系统配置也不算很差,双核2.2G,3G内存,500G硬盘。没想到会被这些软件搞死。虽然没有了杀毒软件,但是只要不用IE浏览器,小心钓鱼网站,给网卡增加防火墙功能,不用Office,我想杀毒软件的确已经没有必要。况且,现在的杀毒安全软件已经不是单纯的单一软件,装上了它,你就套上了一个无底洞,一个耗光你的系统资源的吸血鬼。再次装上谷歌拼音,没有发现死机。有道词典启动的时候,感觉对系统流畅性有影响,暂时没装。先观察几天再做总结。

更新:根据硬件检测,CPU和显卡温度可达90多度,这个应该是频繁死机的根源。可是另外一台联想Thinkpad的笔记本电脑的CPU和显卡温度100度以上,几乎不会死机。难道这就是笔记本电脑的差别。