自荐文章
还真没去过游乐园之类的地方呢,一直想体验一下蹦极之类的东西。上次听马赛勇说,你要玩蹦极就先去玩过山车,有本事你从山车开始到结束都挣着眼睛~
我这人比较谦虚,当时很惊讶的说“真这么恐怖啊~?”,其实~~开什么玩笑,我能怕过山车吗?,哼~
周日去了趟朝阳公园,之前连朝阳公园在哪儿都不知道。朝阳公园的环境确实不错,周日那天据说市里面天空弥漫着沙尘,公园里却一堆人在放风筝,就和家里夏天草地里的蜻蜓一样多~草地上只有很浅的绿色,空气很好。
和西洋梨子转了很久,看了很多诸如 激流勇进、超级飞船、宇宙旅行、七彩乐园、“索尼探梦”科普乐园、体育园、宠物乐园等适合各年龄段娱乐的富于惊险、刺激的项目,据说今年还将投入208米高的朝天轮项目,当然还有主角翻滚山车~

不过感觉这个山车不大,不过第一次玩山车还是比较过瘾的,全程都是那种不同角度的失重感觉~失重的感觉可不好受,和小时候从二楼掉下来的感觉有点类似,不过过山车不疼~

什么?你觉得没意思?去试试啊~!

连哄带骗的终于把西洋梨子带上去了,结果……

其实还有一个原因要上去的……上面这姑娘好像很勇敢坚强,不过就是全程没敢抬头,埋着头尽情的展现动人的嗓门,不到五分钟的时间把我的手都……
作了这么多年的PHP开发居然一直没有用debug工具,说来真的很丢人,于是最近学习了一下。
利用Xdebug+VIM配置的新的测试环境,能跟踪代码执行过程以及每一步的执行结果。Zend Eclipse的debug功能更为强大,配置也简单,不过公司的机器用了Xdebug,两者只能选其一~
Ubuntu+PHP+Apache+Xdebug+vim
由于ubuntu和debian都有“apt-get"这个工具,在ubuntu下配置起来就很简单了,分为A&B两步。
A、安装PHP模块和Xdebug模块
注意:这里假设用户已经通过apt-get install 过了apache2 和 php5了。
#其中php5-dev为了安装xdebug所以必须安装。
sudo apt-get install php5-xsl
#Xinc需要xsl extension
sudo pecl install xdebug
#编译成功说明已经安装完成
#如果上面的安装没有执行,那么应该是缺少perl,那么执行 sudo apt-get install perl
#编辑/etc/php5/apache/php.ini和/etc/php5/cli/php.ini加入
#zend_extension=”/usr/lib/php5/20060613+lfs/xdebug.so”。
sudo /etc/init.d/apache2 restart
#重启apache
B、安装VIM 插件
如果没有安装vim请现安装vim: sudo apt-get install vim
#进入用户根目录
wget http://www.greatmoo.com/xdebug-plugin.tar.gz
#下载xdebug的vim插件
tar zxvf xdebug-plugin.tar.gz
#解压
mkdir .vim
mv plugin/ .vim/
#建立vim用户配置目录,并且安装该plugin
C、使用
- 在你要debug的地址中加上参数“XDEBUG_SESSION_START=1“
- 进入vi,按F5开启监控端口
- 操作网页
- 进入VI的界面,然后就有提示你该怎么做了。
最近和一朋友聊天聊到东邪西毒、南帝北丐、中神通,东南西北四个人我都知道是谁,但是中神通我一直以为是“周伯通”,谈们说是王重阳,还笑话我对金庸的小说知道的也太少了~
的确呢,我没看过《射雕英雄传》,只听前辈们说过。于是这些天就把张纪中版的看了一遍,结果发现张纪中居然还演过片子呢,他演里面那个“回光返照” 的王重阳,整个42集的连续剧他的出场时间不到十秒钟-_-!!人家都说李亚鹏把郭靖演傻了,确实,好像话都说的吞吞吐吐的,有点智障的感觉~~其它演员 没的说,尤其是那个洪七公和周伯通。
然后和他们聊到一灯大师了,他们说天龙八部里面也有个一灯。天龙八部我看过,我就记得是“枯荣大师”。结果我赢了点东西,去网上查了一下他们的历 史。原来天龙八部是发生在北宋朝代,射雕英雄传是南宋。既然看到了朝代就顺便找到了这份表。还聊了些金庸小说里面谁最厉害,在降龙十八掌、六脉神剑、九阴 真经等一个一个筛选之后最终一致认为葵花宝典胜出~
中国历史朝代公元对照简表
① 约公元前14世纪盘庚迁都于殷,此后商也成为殷。
② 公元前841年(西周共和元年)为中国历史确切纪年的开始。
③ 包括王莽建立的“新”王朝(公元8年—23年)。王莽时期,爆发大规模的农民起义,建立了农民政权。公元23年,新王莽政权灭亡。公元25年,东汉王朝建立。
④ 这时期,在我国北方,先后存在过一些封建政权,其中有:汉(前赵)、成(成汉)、前凉、后赵(魏)、前燕、前秦、后燕、后秦、西秦、后凉、南凉、北凉、南燕、西凉、北燕、夏等国,历史上叫做“十六国”。
⑤ 这时期,除后梁、后唐、后晋、后汉、后周外,还先后存在过一些封建政权,其中有:吴、前蜀、吴越、楚、闽、南汉、荆南(南平)、后蜀、南唐、北汉等国,历史上叫做“十国”。
最近一个客户发现他的网站被别人域名指向了,而且在google里面搜索自己的网站内容发现居然别人的域名还比自己的域名靠前。真是奇怪,人家为什么这么好心呢,估计还是有别的原因,暂且不管别人的目的了。总之自己的孩子肯定不能让别人养一样,表面上占了些便宜而已…
一般出现这种情况都是网管的工作做的不到位,没有设置虚拟主机或者设置的不规范导致的。客户使用的是apache服务器。
第一步:设置虚拟主机
找到Apache配置文件,找到 “NameVirtualHost”这一行,如果前面有注释符后“#”则去掉。
设置一个自己域名的虚拟主机,这里是最简单的虚拟主机设置操作了。
DocumentRoot /home/www/
ServerName www.yourdomain.com
ServerAlias yourdomain.com
</VirtualHost>
第二步:设置第二个虚拟主机,使非“www.yourdomain.com”的重定向到“www.yourdomain.com”
RedirectMatch ^/(.*) http://www.yourdomain.com/$1
</VirtualHost>
细心的人可能会认为直接设置第二虚拟主机不就行了吗?应该是不行的,不信自己可以去试试,apache会在你使用正确域名的时候一直尝试重定向,最终导致网站无法访问。
对象(object)是组成Javascript的基本单元,事实上,javascript中的一切都是对象,而且充分发挥了这一点。书上是这样写的~事实上也的确如此!
来看几个实例增加一下理解。
代码1:
var objRef = obj; //引用
obj.oneProperty = true; //这里对obj赋值,因为objRef引用了obj的对象,所以给obj赋值的同时,所有成功引用了obj的都和其一起变化,因为他们指向同一个对象。
alert(obj.oneProperty == objRef.oneProperty); //结果为true
代码2:
var itemsRef = items;
items.push("four");
alert(items.length == itemsRef.length); //结果为true,和代码1的解释是一样的。
相信大家已经有一些自己的理解了,如果你还不理解或者对于这种对象的有些疑惑,那么看完第三个代码你应该就全明白了。
上面两个实例都是在讲引用了这个对象,实际项目中其实引用其本身的赋值会更多。
代码3:
var itemsRef = items; //
items = new Array("new", "array"); //itmes 通过 new 使其指向了一个新的对象了。
//itemsRef 指向的则还是 Array("one", "two", "three")。
alert(items != itemsRef); //结果依然是 true
年终和朋友们聊天,发现以前在亿邮(eyou.com)的同事Realazy 出书了(算是吧,翻译的,其博客首页有链接),是讲Javascript的,在其博客上极力推荐这本书,刚好我想系统的学习一下Javascript,就买了一本。
书里面的内容是用使用面向对象来实现,于是开始照葫芦画瓢学习。
来看看第一个实例代码,不过似乎有点问题,在做了下小的调整后正常了。这个实例可以很清楚的告诉我们,javascript的面向对象是很强大的。
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<script type="text/javascript" language="javascript">
function Lecture(name, teacher) {
this.name = name;
this.teacher = teacher;
}
Lecture.prototype.display = function () {
return this.teacher + " is teaching "+ this.name;
};
function Schedule(lectures) {
this.lectures = lectures;
}
Schedule.prototype.display = function () {
var str = "";
for(var i = 0; i < this.lectures.length; i++) {
str+= this.lectures[i].display() + " \n";
}
return str;
}
var mySchedule = new Schedule([
new Lecture("Gym", "Mr. Smith"),
new Lecture("Math", "Mrs. Jones"),
new Lecture("English", "TBD")
]);
alert(mySchedule.display());
</script>
<BODY>
</BODY>
</HTML>
今天发现gmail推出了sms功能,于是就去了解了一下,目前国内还没有开通这个功能。转啊转回了picasa相册,发现了右边多了个“名称标签”功能,点击之后提示“正在查找头像,关闭网页不会中断当前的操作”,很友好的功能不是吗~?
然后大概过了一段时间再去看相册的时候,发现程序执行完成了,右边提示框的内容变成了:
点击“添加名称标签”进去……一开始我以为仅仅是互联网上很流行的自动勾画出头像的功能,但是结果还是让我大吃一惊~
怎么样,看明白了吧。就是能根据头像的面部特征,相册能给面部特征相似的头像自动分类。而且准确率比较高,虽然有些确实是同一个人却没有划分到一起,但是就目前观察还没有发现其把不是同一个人划到一个类里面去。
记得看美国科幻片《第五元素》里面的身份识别是靠图像识别的,看来~这种技术在不久的将来就能实现了~
最近青草地上的博客们发文章怎么这么快呢,以前我发一篇文章能挂在首页一两周,左边的“博客新锐”存在的时间更长了,现在两三四五天就连带“博客新锐”都没有了。以前我的目标是让自己的文章或者博客名一直出现在首页,现在~还是争取一下更长的时间吧~算你们狠~
Javascript也算支持oop(面向对象),当让不要和java去做比较。使用面向对象能是程序更好的封装,更好的模块接口和常量。
简单的来讲就是可以把任何一个方法和变量放到Object对象中去。由于javascript的变量类型要求的不是很严格,于是乎可以无限类型无限 object的层数扩展(这一点和PHP中数组很想,PHP变量类型也是不严格的),好处就是很灵活。坏处对于中小项目来说不会有很大的影响,大项目嘛~等真正做大项目的时候再去研究总结吧,反正现在还没有真正参与过大项目。
javascript的面向对象很好玩,因为很简单,很随意,很灵活(和交朋友一样,一般人都喜欢这种朋友吧~?)。你会觉得在javascript面向对象这一块你可以当一个很出色的设计师,因为它本身规则很少,然后你就能给它定义很多规则,如果你的规则好那么你的规则就会成为标准。其实关键是你要用这个来干嘛!
来看一个面向对象形成过程:
obj.myStr = "this is string"; //变量类型
obj.myArr = [1, "str2", 3]; //和php一样没有数组类型,很灵活
obj.myInt = 2008;
obj.myFun = function (args1) { //函数类型
return args1+"result";
}
alert(obj.length); //结果是 4
alert(obj.myFun("test")); //结果是 "testresult"
从这个例子中你会发现原来这就是所谓的面向对象啊。没错,有总比没有好,关键还是看你用来做什么。就像php在5.0后引入了新的对象模型,完全重写了php处理对象的方式,允许更佳性能和更多特性。5.2加入了命名空间的支持。它们都在进步……
用它来做全局变量,你会发现你的程序突然有了很大的扩展空间了。做程序员也要自己动脑子去设计自己的程序,我是懒人,就不整理实际的应用内容了。
这个程序好像是一年前写的了,今天突然又要用了,于是上自己以前做的网站 www.maidee.com 上找到了这段代码。
功能就是实现窗口的拖动功能,不过前提是窗口的style属性为 position:absolute。
实现原理:按照鼠标的运动轨迹移动层的位置。
代码:
* 窗口拖动 start 调用方法:onmousedown = "divBlock_event_mousedown(arguments[0]);" //加在要拖动的窗口最外层就行了。
*/
function divBlock_event_mousedown(e) {
var e, obj, temp;
obj = document.getElementById("quick_window"); //要拖动的窗口ID
e = window.event ? window.event : e;
obj.startX = e.clientX - obj.offsetLeft;
obj.startY = e.clientY - obj.offsetTop;
document.onmousemove = document_event_mousemove;
temp = document.attachEvent ? document.attachEvent("onmouseup",
document_event_mouseup) : document.addEventListener("mouseup",
document_event_mouseup, "");
}
function document_event_mousemove(e) {
var e, obj;
obj = document.getElementById("quick_window");
e = window.event ? window.event : e;
with (obj.style) {
left = e.clientX - obj.startX + "px";
top = e.clientY - obj.startY + "px";
}
}
function document_event_mouseup(e) {
var temp;
document.onmousemove = "";
temp = document.detachEvent ? document.detachEvent("onmouseup",
document_event_mouseup) : document.removeEventListener("mouseup",
document_event_mouseup, "");
}
//窗口拖动 end
主要是配置了个邮件服务器,邮件服务器也是新服务器我最想配置的服务,一是形象,二是可以使用 mantis 或者 bugzilla,bugzilla没有中文版的,为了提高工作效率所以使用了mantis。
邮件服务器:
WebMail:mail.bjcl.net
软件环境:SquirrelMail+Exim4+dovecot
我的新邮箱: meiking@bjcl.net (哈~)
其他服务:
Apache php mysql mantis vsftpd ssh
公司新的网站也准备上线了:www.bjcl.net
