Submitted by gouki on 2009, November 1, 12:18 PM
新闻来源:Think Vitamin,http://www.cnbeta.com/articles/96791.htm
这是 Think Vitamin 网站对 Learning jQuery 作者 Karl Swedberg 的一次简短访谈。Karl Swedberg 是 JavaScript 和 jQuery 技术专家,撰写了大量相关文章,并在各种 Web 开发设计大会上有与 jQuery 相关的讲座。 对那些可能还没听说过 jQuery 的设计师来说,什么是 jQuery
jQuery 是一种让开发和设计者在他们的网页中添加交互内容的工具,它的核心命令让你在网页中定位或创建对象并对之进行操作,它事实上是一种更容易使用的 JavaScript,可以不必强迫页面刷新而对页面进行各种操作。
在你看来,为什么 jQuery 对 Web 设计师有用?
JavaScript 为设计拓宽了视野,而 jQuery 让这一切变得更简单。对那些通晓 CSS 的设计师来说,编写 jQuery 代码很类似,而对于那些拥有 Flash 经验的设计师来说,jQuery 是一种标准化的,开放的技术,它可以实现类似 Flash 的交互效果。
你将在 The Future of Web Deisgn New York 大会上做 jQuery 讲座,大体内容是什么?
我将对 jQuery 库做一简介,接下来会通过一些实践一步一步讲解如何在站点中提升用户体验,我将演示一些技术,看看 jQuery 如何弥补 CSS 或某些浏览器的 CSS 处理的不足。我将讲解如何善用动画,如何防止滥用。最后将演示一些有趣的插件。
jQuery 有不少实用插件,哪一些是设计师不可或缺的?
这要看网站,或者说客户的需求。我自己常用的一个插件是 Mike Alsup 设计的 Cycle Plugin,这是一个轮番播放图片的饰件,拥有很漂亮的过度效果,这个插件并不限于播放图片,还可以播放任何内容,它确实很不错,在那么小的空间可以放那么多内容。
最近我还对 jQuery UI 插件颇感兴趣,这套插件使富用户体验,如拖放操作,变得很简单,它包含的部件都很棒,我已经开始使用其中的对话框,Tab 以及日期选择器等。
在你看来,Web 设计的未来是什么?
在预测任何未来技术方面我完全象个傻瓜。在某些方面,如果我们无法摆脱那些旧浏览器的话,事情可能没多少改变,不过,即使现在,在那些更好的浏览器身上,我们也已经看到一些令人振奋的东西,我期待看到一些全新的东西。
Webkit 引擎开发团队已经做在 CSS 动画方面做了很多工作,他们甚至将触角伸向图形硬件来实现炫目的视觉效果。Firefox, Safari, and Chrome 正在 JavaScript 引擎方面你追我赶,而众多 JavaScript 库也在性能上大幅提升。我们会开到越来越多的 HTML 5 元素的使用,如 Canvas, 音频,视频。Web 字体方面也将更加完善,不管从技术方面还是版权方面。可以肯定的是,未来的 Web 会让人惊异。
本文来源:http://carsonified.com/blog/dev/jquery/karl-swedberg-on-jquery/
中文翻译来源:COMSHARP CMS 企业网站内容管理系统官方站
看到这些新闻,你还有什么好犹豫的?国内除了blueidea外,还有51js网站,当然还有一个博客也一直关注着jQuery那就是cssrain.cn,黑黑,我的博客也略有关注。但仅限于使用。。。
Misc | 评论:0
| 阅读:17269
Submitted by gouki on 2009, October 31, 8:40 PM
由于自己也遇到过类似问题,所以,看到这篇文章的时候 就更为观注,其实文章也没写什么,只是把自己的遇到的问题列了一下,但,能够引起共鸣的就是好文章 。
先贴原文,然后再把我的事情说一下:
项目已经进入数据割接测试一轮尾声,记得刚刚进入数据割接测试的阶段,大家都很茫然,让我们想起了当时数据准备阶段,这一幕又重现了,数据准备是因为数据 及其复杂,业务复杂,大家对其他人负责的业务不熟悉,导致数据准备成为一块绊脚石,然而开发人员都很忙,没有时间一起配合准备。而数据割接测试也同样面临 着类似问题,一方面业务及其复杂,新老系统的设计逻辑和数据结构有很大的差异。而我们大部分人对老系统不熟悉,参与割接的开发人员对新系统不熟悉,导致割 接测试困难重重。
刚开始我们采用的是把老系统线上的数据割接到新系统,然后我们选择几种典型业务按一定条件准备了一些用户,在新老系统中对比这些用户的数据。发现这这些用 户的记录不熟悉,用户的数据又比较乱,不是登录不了,就是密码不对,要不就是没有用户信息,要不就是不能发布宝贝,还要去修改相应的用户信息等等,这样准 备数据一天都快过去了进度很慢。后来大家提出用自己平时用的用户计划好场景,到日常中去构造一些数据,造好后再把这些用户给割接的人,让他们把相应的用户 数据增量割接过来。然后再用这些用户在新系统中做交易,看数据是否正确。另外备用一两个用户,在新系统中做同样的数据,进行比较。有些没办法构造的场景才 选用哪些已有的用户数据去查看。即自己构造的数据和上线上的数据互相弥补
这样做有几点好处:
首先自己构造的数据自己清楚,不用再去找这些用户数据。
其次自己平时用的用户,用户信息都是全的,能登录,能发宝贝,能做交易,能订购,不用再去修修补补,那怕是要修改,修改的地方也少点。
虽然这样一来有点进展,但是还是遇到了很大的麻烦,有很多数据割接过来完全错误,因为新老系统的数据结构很大的差异的问题,很多逻辑不对。而项目中的开发 忙于项目,完全不重视数据割接,后来我们建议新老系统开发人员和测试人员一起配合测试数据割接测试,保证数据的正确性。
针对以上出现的问题,个人觉得首先要保证迁移脚本的正确性,那最好是新老系统的开发人员配合编写脚本。万一项目中开发人员没时间,审核的时候要新老系统的开发人员要一起慎重审核脚本的逻辑。否则不能保证脚本的正确性,那更谈不上保证数据的正确性。
----以上为转贴,来源于:http://rdc.taobao.com/blog/qa/?p=4515
以前在XX公司的时候也遇到过,或者说,任何一个公司在新旧系统更换的时候,估计都会遇到吧?一般在这种情况下,最重要的是保留用户数据,毕竟如果没有用户,那网站也就没有存在的必要了。其次就是用户相关的数据,比如资料信息、历史、或者各种各样的操作。或许你会认为没有什么必要,但有的用户就喜欢翻旧事。前段时间在某群内看到有人把01、02年的贴子翻出来炫耀,以证明自己在某网站的年代长远。所以说,用户是奇怪的。
如果是电子商务的话,还得保证以前的订单和订单相关资料需要完全正确,否则,对谁来说都是一个损失。就象文章最后一段话,其实很多时候都是开发新系统的人在写迁移脚本,而这些人对于老系统并不熟悉,到最后,数据其实是模凌两可的,看上去正常就是皆大欢喜的事情了。其实也不是原始开发人员不做这些事,要知道,IT公司,跳槽情况非常常见,原始开发人员说不定几年前就跳槽了,越是老的公司,在初期的代码就越乱,越往后越感觉无法整合。迷惘中的新开发人员也只能跟着感觉走了。
HOHO
Misc | 评论:0
| 阅读:16493
Submitted by gouki on 2009, April 22, 9:36 AM
HTML重构,以前是一个新鲜的东西,我也没有理解,博客园上有人在介绍,还写了三篇。。。
我这里只简单的复制点东西,还是以链接为重吧。(战略篇全文如下)
《Refactoring HTML: Improving the Design of Existing Web Applications》是一本精彩的HTML重构指南,作者给出了HTML重构的实践路线和方法。本文是《Refactoring HTML》的读书笔记,按照我的理解将全书的分为:战略篇,战术篇,工具篇。
本文是战略篇:全局方略的角度介绍重构的内涵,原因,时机,目标
嗯哼,我们开始:
进行重构就像打一场仗,而战争的发起是要慎重考虑的,《孙子兵法》里面讲“兵者,国之大事,死生之地,存亡之道,不可不察也。”所以动手重构之前首先要回答下面几个问题:
- 什么是重构?
- 为什么进行HTML重构?
- 什么时候进行HTML重构?
- HTML重构的目标是什么?
- 面对质疑:还要重构么?
什么是重构 Refactoring?
本书侧重实战,没有《UML Distilled》那样高屋建瓴的抽象,即使有抽象,抽象层面牵扯的细节过多(这一点在后续的阅读中也可以发现)。这一部分内容我援引了《Refactoring: Improving the Design of Existing Code》对重构的定义:
Refactoring (noun): a change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior.
Refactor (verb): to restructure software by applying a series of refactorings without changing its observable behavior.
为什么进行HTML重构?
抽象地讲,HTML重构的可以让代码更能适应变化,应对系统和领域需求为新功能的开发提供更优秀的基础。
具体地讲,HTML重构可以:
- 让代码更具有可读性,更容易理解
- 重构过程中往往有意外的收获:发现隐藏的系统Bug
- 增强页面可用性, 关注点从设计者开发者转移到使用者
- 缩短提高页面的呈现时间(Slow pages -Rendering Times)
- 解决页面浏览器不兼容问题
- 搜索引擎优化Search Engine Optimization
进行HTML重构的时机?
- 每一次进行重新设计之前;新功能将构建在一个更稳固的基础之上
- Refactor When You Need to Fix a Bug
- Refactor As You Do a Code Review
- 一个原则:勿以善小而不为;重构的过程往往是断断续续的,很少有一个连续的时间给我们进行重构。所以我们只要有机会进行重构,就动手去做吧
HTML重构的目标(What Refactor To) ?
- XHTML
理由:XHTML更加严格,浏览器不再解析乱作一团的标签而是格式规范的页内容,这时负担从浏览器转移到页面开发者。内容聚合,搜索引擎优化,样式表都可以更好的应用基础。开发者能够更容易调试和解决问题,因为问题更容易定位了。XHTML不能完全解决浏览器兼容问题,但是它能够消除大部分的浏览器不兼容问题已经居功甚伟。主流HTML编辑器都提供对XHTML的支持。XHTML是未来Web应用提供坚实的基础,如:MathXML MusicXML SVG。
- CSS
理由:将展现层从内容中分离出来。为不同的阅读者提供高可读性。减少代码重复,节省带宽。
REST(Representational State Transfer表述性状态转移)是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。REST提出了一些设计概念和准则:
1.网络上的所有事物都被抽象为资源(resource);
2.每个资源对应一个唯一的资源标识(resource identifier);
3.通过通用的连接器接口(generic connector interface)对资源进行操作;
4.对资源的各种操作不会改变资源标识;
5.所有的操作都是无状态的(stateless)。
REST之所以能够提高系统的可伸缩性,是因为它强制所有操作都是stateless的,这样就没有context的约束,如果要做分布式、做集群,就不需要考虑context的问题了。同时,它令系统可以有效地使用pool。REST对性能的另一个提升来自其对client和server任务的分配:server只负责提供resource以及操作resource的服务,而client要根据resource中的data和representation自己做render。这就减少了服务器的开销。
重构的目标不是金科玉律,你没有必要逐一进行实践。你可以按照XHTML->CSS-->Rest的顺序按部就班步步为营,也可以根据实际情况调整重构目标和计划。但是只要你做了,你就可以从重构过程中得到好处。
面对质疑:还要重构么?
重构的本质决定了它不是生产性的,重构的完成并没有新功能的产生。所以重构往往面临来自各方面的质疑:
面对质疑我们给出这样的答案:
- HTML重构从长远来看为后续开发提供了一个良好的基础,实际上是节省了时间。因为系统更容易添加新功能,更容易维护。重构的过程能让开发者对以前的工作有一个思考,对新人是一个熟悉系统的机会。
- HTML重构本身并不会占用太多的时间,因为我们有很多自动化的工具可用。
- HTML重构不需要一个连续的时间,断断续续的时间未尝不可,对于开发者来说,进行重构就像日行一善。
HTML重构:战略篇
HTML重构:战术篇
HTML重构:工具篇
Tags: html, 重构
PHP | 评论:3
| 阅读:21807
Submitted by gouki on 2009, February 21, 9:16 PM
这是一篇TdWeb的笔记,在征得他的同意后,我放了上来。他最初是为Lite版本写的,但现在这些单字母函数在标准版里也都同样存在了。因此这些资料在两个版本的ThinkPHP中都同样适用。由于Tdweb偷了点懒,部分代码都是直接复制过来的,所以,我稍做了一下整理(主要是页面样式的稍做更新,同时对于部分语句进行了一些更新,tdweb莫生气)
原文网址:http://bitctw.cn/hl/docs/
原文如下:(我仅针对单字母函数作介绍)
TP所有单独的函数,除了两个用来生成项目的buildAppDir之类的,其余都在框架目录/Common/functions.php这个文件里。
有人不太喜欢TP这种单字母函数,其实这也是TP的一个特色,如果理解了这些函数的作用,不管是背,还是写,都是非常方便的,接下来我们以字母顺序开始。
A函数(基本是Action的简写)
A函数是用来实例化我们的Action类的,例如我们的程序有2个Action分别是IndexAction和TestAction,在 IndexAction中有个myHello方法能够输出hello world,如果我也想在TestAction中也输出同样一段文字怎么办?最原始的方法首先我们导入IndexAction.class.php这个文 件,然后new IndexAction,最后调用myHello方法才行。
代码一般为 :
PHP代码
- <?php
- import("@.Action.Index");
-
- class TestAction extends Action{
- public function index()
- {
- $index=new IndexAction();
- echo $index->myHello();
- }
- }
- ?>
那么,如果我们用A函数,怎么写呢?
PHP代码
- <?php
- class TestAction extends Action{
- public function index()
- {
- $index=A("Index");
- echo $index->myHello();
- }
- }
- ?>
呵呵,少写很多代码吧。当然,这还不是最偷懒的方法,请看下边的R()函数,就知道什么是偷懒的极致了。
B函数
这是随着行为应运而生的新生函数,可以执行某个行为,例如B('app_begin');就是在项目开始之前,执行这个行为定义的所有函 数,支持2个参数,第二个参数支持需要接受一个数组,例如B('app_begin',array("name"=>"tdweb","time"=>time()));这样。
C函数
获取配置值,这个大家用的应该不少。虽然使用方便,但是C函数无疑是一个非常强大的函数。
获取值:
获取所有设置:C(); 不传递任何参数,返回一个包含所有设置的数组。
获取指定配置:C('URL_MODEL') 这样就能得到URL_MODEL的配置信息
获取指定二维数组配置:C("array.name"),这样就返回数组array下的key为name所对应的值
设置值:
为二维数组赋值C("array.name","value"),原理同上(获取array.name的值),后边的value是值
批量赋值:
$test=array("URL_MODEL"=>1,"THIN_MODEL"=>true");
C($test);
这样直接将数组里的值赋值了
判断是否赋值:
C("?URL_MODEL")这样前边加个"?",如果已经赋值,则返回true
需要说明的是,这里虽然更改了配置的值,但是仅仅是这个页面做了更改,到下个页面就不起作用了,如果想改就永久更改,那么需要配合F函数,将配置文件写入config.php才行。
D函数
DAO函数应该是我们写程序用的最多的函数了。和A函数类似,如果不使用D函数,就需要导入Model,然后new Model,剩下都是一样的。
但是D函数有2个有点,一是如果之前实例化过这个Model,那么就不再实例化了,剩资源;二是方便调试,如果不存在 这个Model,会抛出TP异常,非常人性化。
如果访问本项目的Model直接D("Model名称");就可以了,如果打算跨项目访问,就使用 D("Model名称","项目名称");其他的就没什么说的了
F函数
快速读取和保存文件数据
快速保存数据:F("mydata","这里是要保存的数据"),这样就在项目Data目录下保存了一个名叫mydata.php的文件,里边的内容是该函数的第二个参数。
指定保存时间 :F("mydata","这里是要保存的数据","60"),这样,如果下次再访问,间隔大于60秒则删除次缓存文件。
指定保存目录:F("mydata","这里是要保存的数据","60",DATA_PATH) ,这样就指定保存在data目录下
立即删除缓存:F("mydata",null),第二个参数传递一个null值,这样就删除了mydate这个缓存
读取缓存数据:F("mydata"),这样就读取这个缓存了
L函数
语言定义函数,L("intro")获取定义成intro的语言,l("intro","介绍")为intro赋值,关于这个赋值的长久性,道理同C函数一样。
R函数
还记得我们的A函数吧,如果仅仅想执行某个方法,其实用R函数更方便,刚才的可以替换成
PHP代码
- <?php
- class TestAction extends Action{
- public function index()
- {
- $index=R("Index","myHello");
- echo $index;
- }
- }
- ?>
呵呵,是不是更简单?
S函数
全局缓存读写函数,和C类似,不过是直接写成文件的哦,写在Temp目录下,不过在缓存有一点需要注意,如果缓存名称是aaa,那么缓存生成的文件名称就是md5("aaa")的值,值得注意。
U函数
U函数是很强大的一个函数,它主要是进行URL组装,同时支持不同模式和路由
例如:
取得当前模块的Action地址 :U("/nowMethod");
取得当前模块的Action地址,并传递参数:U("/nowMethod?params=test");
(如果不习惯上边那种方式,可以使用U("/nowMethod",array("params"=>"test");这样的数组方式传递参数,效果是一样的)
访问其他模块的方法:U("Other/otherMethod"),这样就是访问Other模块下的otherMethod方法
跨项目访问:U("appname://Other/otherMethod");
使用路由访问:U("appName://routeName@moduleName/actionName?params");
另外,如果想直接跳转,那么就在第二个参数写1,例如U("/nowMethod",1);这样就直接调转到指定URL了
好了,介绍了TP的9大函数,相信你或多或少也有些了解了吧。如果想了解更多更好的功能,请看function.php的代码,注释很详尽
稍微排版了下,也删了点不太和谐的内容,希望可以给大家带来帮助。。
Tags: thinkphp, 单字母, 函数, 整理
PHP Framework | 评论:1
| 阅读:34300
Submitted by gouki on 2009, February 20, 11:29 AM
不可否认,IBM在开发者资源方面做的还是挺不错的,虽然有偏重于IBM自己的工具的倾向,但对于WEB方面的资源还是很多。
对于英文不好的同学,可以查看:http://www.ibm.com/developerworks/cn/
这里的资料是全部中文的,当然你还可以有取向,比如我是做WEB的,我一般就看:http://www.ibm.com/developerworks/cn/web20/ ,WEB2.0的相关资源
如果你对自己写的文章有自信,你也可以去投稿,以期让更多的人了解你,投稿网站在:http://www.ibm.com/developerworks/cn/author/
会让你根据征稿内容和您的特长,然后下载WORD模版写好后发给网站,审核后就会公布哦。
Tags: ibm, 学习资料
Software | 评论:1
| 阅读:18490