可惜,今天晚上要上课,不能陪在他身边了。
还好,即使多年以后,估计他也不会记得我今天没有陪他。。。
一大早把照片从相机里导出来,传到几张到http://picasaweb.google.com/xiaoyy2008/上面。
剩下的只能晚上回家慢慢传了。
Submitted by gouki on 2009, June 1, 10:17 AM
可惜,今天晚上要上课,不能陪在他身边了。
还好,即使多年以后,估计他也不会记得我今天没有陪他。。。
一大早把照片从相机里导出来,传到几张到http://picasaweb.google.com/xiaoyy2008/上面。
剩下的只能晚上回家慢慢传了。
Submitted by gouki on 2009, May 30, 9:45 PM
使用zend framework开发时,可以采用第三方模版,比如smarty,在网上找了很多资料,一般来说是两种
1、扩展view
2、使用Zend_Registry,在初始化的时候加载smarty,然后在输出的时候使用Zend_Registry::get('smarty')->display();
使用第二种方式的话,我当然是没有什么说的了。我这里说的是使用第一种方案。
在第一种方案中,官方有例子,页面地址为:http://framework.zend.com/manual/en/zend.view.scripts.html,写上一个类,调用Zend_View_Interface,写上相同的函数就可以了。。
官方有源码,我这里就不贴了。我把官方的例子写一下:
以上是官方的example。不过,如果按第一个例子测试,是会出错的。。。
请看第4行。。。静态方法居然用了new。(应该是粗心吧。不过我昨天是直接复制的,死活报错,也没有仔细看,丢人啊)写这篇 文章,主要也就是提醒一下,这个例子有点问题。
顺便说一下,由于官方的例子里,是把$_smarty写成了protected,那么,其实在外面是不能够被直接引用的。要么写一个__get方法,要么,把属性改为public吧
不过,在使用smarty后,你会发现,你原来的layout功能不能完全使用了,为什么呢?因为,在原来的layout里面,代码都是类似于这样:
大致是这样的代码,这个,可不能用在smarty中。虽然在smarty中也可以用标签来调用PHP代码,但这毕竟不是一个好办法。
不过还好,又有牛人写了一个很牛叉的例子。LOOK:http://anders.tyckr.com/2008/03/12/implementing-zend-layout-and-smarty-using-zend-framework-mvc/,不过这个例子我还没有全部看完,先贴上来。以后慢慢看,应该会用在项目中吧?
不然,我就用不了layout了,除非我放弃这个东西。。哈哈
Submitted by gouki on 2009, May 30, 3:01 PM
小家伙现在看到出去就很激动的。当前被谁抱着,其他人都不让抱的。
照片我还是会上传到picasaweb上面,正在研究zf和zgada,然后直接利用这个东东把图片当成相册使用。还不占用我的硬盘空间
oh yeah.
Submitted by gouki on 2009, May 30, 11:00 AM
jQuery是目前我用的最多的JS框架,毕竟他简化了我很多JS的操作,而且目前它的插件也非常多。所以看到有更新就放上来。(当然不是我翻译的,以我的水平,翻译出来的文章会比英文原文更难懂)
原文:http://www.5iya.com/blog/post/jquery-1-3-3-new.asp
全部翻译自 Brandon Aaron 的blog。
增强的toggleClass()
1.toggleClass也可以和addClass一样,用空格分隔多个class名称了。
.toggleClass("a b") == .toggleClass("a").toggleClass("b")
2.无参数时,自动删除、恢复全部class,也可以传递一个布尔值,true为恢复class,false为删除class。
3.也可以第一个参数为class名,第二个参数为布尔值,具体用法如下。
// 原始代码
// <div class="a b c"></div>
// 删除、恢复全部class
$('div').toggleClass(); // <div class="" />
$('div').toggleClass(); // <div class="a b c" />
$('div').toggleClass( false ); // <div class="" />
$('div').toggleClass( true ); // <div class="a b c" />
// 删除、恢复多个 class
$('div').toggleClass( "a b" ); // <div class="c" />
$('div').toggleClass( "a c" ); // <div class="a" />
$('div').toggleClass( "a b c", false ); // <div class="" />
$('div').toggleClass( "a b c", true ); // <div class="a b c" />
简化的hover()
1.3.3中,hover绑定事件可仅传递一个函数,将默认用做mouseenter/mouseleave公用的函数。
旧代码:
$('li').hover(function() {
$(this).addClass('test');
}, function() {
$(this).removeClass('test');
});
新代码:
$('li').hover(function() {
$(this).toggleClass('test');
});
live冒泡事件支持预设参数
// 预设参数
var eventConfig = {
selectedClass: "selected"
};
$("li").live("click", eventConfig, function( event ) {
// 绑定函数的参数event的data属性即为传递的预设参数
var selectedClass = event.data.selectedClass;
});
更好的支持其它windows、document对象
通过.contents()获得其它框架的document对象。
var iframeDoc = $('iframe').contents().get(0);
这样就可以获取其height/width/CSS属性或绑定事件。
// 获得框架宽度
$(iframeDoc).width();
// 获得框架高度
$(iframeDoc).height();
// 绑定事件
$(iframeDoc).bind('click', function( event ) {
// do something
});
// 获得CSS属性值
$('div', iframeDoc).css('backgroundColor');
注意,如果要处理框架内部网页元素,请使用此插件(配合jQuery 1.3.3/+),和以下语法:
$('iframe').win().bind('load', fn);
$('iframe').doc().find('a').click(fn);
增强的index()
两个变化,第一个,支持传递selector作为参数。
旧代码:
$("img").index( $("img.selected") );
新代码
$("img").index( ".selected" );
第二个,无参数传递,直接查找在同级元素中的位置。
旧代码:
var $this = $(".selected");
$this.parent().children().index( $this );
新代码:
$(".selected").parent().index();
自行指定this对象
在1.3.3中,可以在bind/live绑定事件时,自行指定this参数代表的对象。这个用法需求不多,而且可用event.target,event.currentTarget代替。
Submitted by gouki on 2009, May 28, 9:56 PM
以前也曾经转载过关于BASE64方面的文章,那时候仅仅介绍了原理啥的。这回我找来的内容是如何实现的。。。
通过google找来了javaeye上的文章,他写了转载自xxx,进入xxx的页面,他告诉我转载自yyy每个人在转载的时候都去掉了一些内容。基于这样的现状,我。。。
不想转载了,贴出几个地址,自己看吧。
javaeye:http://chmod777.javaeye.com/blog/320301
xxx:http://www.cnblogs.com/yiki/archive/2009/01/18/1377828.html
yyy:http://www.cnblogs.com/reonlyrun/archive/2006/12/29/640991.html
这些实现在PHPer看来都是学习的经验,但phper根本不需要进行这些,因为php自带了base64_encode,base64_decode函数。
我要说的是,如何将加密的后的字符串在URL里传递,众所周知,base64中有三个特殊字符:"/,+,=",其中,=是补位码,/和+的标准字符,但/和=在URL里有着特定的意义,如果放到URL里,可能会被当成其他功能进行处理 。
于是,写了一个小函数进行了转换: