设计的实用性

2010年4月13日 由 admin 2 条评论 »

事情的起因是,去年网络中心achao老师让大家做一个学校FTP搜索引擎的首页,各位Computer fans开始各显神通。可其实老师的本意是让大家做一个HTML页面出来,有些同学误解老师的意思,拿ps画,而画完了,却又没人懂得切图,更没人写CSS和JS。这情况是我早就料到的。然而下面说的是我没料到的事。

昨晚到网络中心去,给小危老师“辅导”毕业设计(囧,要不怎么说)。他给我看了Pluwen童鞋画的搜索引擎首页设计图,说achao让他试着做一个这样的页面,可他做了几天了,还是没做出来。我平常是几乎不做页面的人,因为我不喜欢处理那么多浏览器的兼容性问题。但我对css还是略有了解,况且既然别人有困难,我一向是很乐于帮助的。我和小危探讨了图如何切之后,让他用ps把图切好,我开始写代码。小危老师对我不用Dreamweaver的可视化操作来设计网页很惊讶,我表示专业人员都是这样的切图的- -其实网页设计上我也只是个半桶水。。页面做好之后,在IE6和火狐下测试,发现导航条在火狐下会下移10个像素。我知道这是IE6的问题,使用了一个IE6 hack技巧之后,问题解决了。(没料到的是最后这件事竟然是我做的。。)

在做导航条的动画切换时,我发现Pluwen的设计之中采用了较多的颜色渐变。这样做的后果就是,在切换到其他导航菜单的时候,当前被激活菜单的背景色会和周围的颜色渐变格格不入。也容易导致切图失败——因为你总要去涂抹原图,往往还费力不讨好。可见这些花俏的特效还是不能滥用,除非你能把握到最终的效果。在更多的时候,设计还是要以实用为好。

跟踪客户需求变更和虚惊一场

2010年4月10日 由 admin 没有评论 »

本来题目里说的是两件事的,合在一篇里写,足以见证这一周的tough。

先说第二件事,其实和第一件也有关系。根据客户的需求,修改了index.html页面。本应该上传到/templates下,却一不小心上传到网站根目录/,把客户原本的flash首页给覆盖了。这下心想over了,俊哥那应该没有存底的,只好自己做一个吧,embed标签还是会的。

刚用编辑器建立一个新的html文件,要先写上keywords和description,就用google百度了一下客户的网站,看到了一句短短的描述。下意识的点了链接,发现点开的竟然不是index.php而是index.html的flash首页!Oh~搜狗浏览器威武~看来是搜狗把页面和域名都缓存了缘故。查看源代码,ctrl+c,Ctrl+v,Ctrl+s。。

(我们也可以通过查看网页快照找回从前的页面源代码,前提是你的站点被收录了)

吸取教训:1、以后静态首页扩展名用.htm,模板文件用.html或者.php,避免覆盖;2、或者首页模板文件不叫index.html而叫做default、Homepage;3、不管怎样,以后上传文件多加小心,合理给文件命名,最大程度避免杯具的再次发生。

说第一件事。

去年做的单子,客户是自动控制行业的一家公司。最近,原本负责他们公司网络的网管员(也是负责他们公司网站建设的人)走人了。新上任的这一位网管貌似有点想法,一直在联系我,前后提出了一些更改方案,主要的修改是把产品分类从三级增加到5级,我按他的要求做了。完了之后,说还是不完善,又提出让我过去当面沟通。

见面之后,我很诧异他竟然是个男的,电话里我一直以为是个御姐~o(∩_∩)o 哈哈。交流过程中,我发现他们走人的那位似乎工作交接没有做到位,这位新的网管简直是完全不知所以然,连个后台地址用的都是测试时候用的虚拟主机四级域名(年前就弃用了)。。

我向他展示了新后台的使用方法后,他倒是气定神闲提出了很多前台页面的修改需求,还不忘讽刺他那位前同事接手的这件事(网站建设)没做好。我当即表示,一开始需求就是你们客户提出的,另外我们对你们行业也不甚了解,自然要按照你们客户的需求来做。现在你觉得没有满足你的需求,那也正是说明当初你根本没弄清楚自己的需求,责任不在于我们开发人员。可以说,现在的情况是你们需求产生变动,不是我们当初没把你们需求做好。

他哪里知道,他提出的几点修改需求,足以让我让我和俊哥把产品分类推到重做,况且我之前花在产品分类和其他一些地方上的修改已经很多了。

我和俊哥说了,他说没事,需求变动大就要他们加钱。谁知过两天之后,客户又打来电话说,我给你个网站地址,你就照着上面的来做。。看了看  说行

前后两天的努力,总算按客户的意思做好了,前台页改得面目全非,动用到了数据表结构变更,url更是重新设计,分类列表的递归输出。。不过还好,最后终于上线了。

这次的事让我体会到跟踪客户需求变更的重要性,因为有时候,用户只是简单的一句话,对于项目的调整来说工作量是非常巨大的。。在项目的初期,我们应该先调研,帮客户弄清需求,并考虑将来可能遇到的需求变动;在适当的时候,我们可以让客户知道需求变更的代价。

通过这个项目,也开始有点体会到“随着 Web 应用程序变得越来越复杂,简单的 CRUD 操作已经无法满足对于复杂应用程序的开发要求。”接下来,要好好学习一下软件工程,并把面向对象的程序设计和实现运用到新项目当中去。。

回顾一下曾经开发过的 PHP 应用,大部分开发者都会发现这些应用中,数据的创建、读取、更新和删除操作是重复最多次的操作。但是不管我们如何简化这些 CRUD(创建、读取、更新、删除)操作,面对客户不断变化的需求,应用程序的内在结构总是逐渐变得凌乱。

而造成这种情况的根本原因就是我们没有正确使用面向对象的技术来设计和实现这些应用程序。由于业务逻辑固有的复杂性被所谓的 CRUD 快速开发能力所掩盖。本应是内聚的业务逻辑却拆散为一个个 CRUD 操作,分散到了应用程序的不同部分。如此一来,业务逻辑的变化必然会导致应用程序内部产生连锁反应式的改动,应用程序内在结构的逐渐腐朽变成了不可逆转的趋势。

不知道会不会怪我。。

2010年4月4日 由 admin 1条评论 »

这一周竟然一篇日志都没写。。懈怠了懈怠了。唉

昨晚用Thinkphp搞了个后台,剽窃了 pbdigg的模板 ,不知道会不会怪我 ,唉

Thinkphp设计得很好,很多地方都替开发者考虑得周全了。。比如第二张图中的?m=admin上两张图:

他会提示:

系统发生错误

您可以选择 [ 重试 ] [ 返回 ] 或者 [ 回到首页 ]

[ 错误信息 ]

非法操作admin

[ TRACE ]

[10-04-04 11:38:04] () Action->__call(admin, Array)
[10-04-04 11:38:04] () LogAction->admin()
[10-04-04 11:38:04] F:\wwwroot\libra\lib\ThinkPHP\Lib\Think\Core\App.class.php (415) call_user_func(Array)
[10-04-04 11:38:04] F:\wwwroot\libra\lib\ThinkPHP\Lib\Think\Core\App.class.php (439) App::exec()
[10-04-04 11:38:04] F:\wwwroot\libra\admincp.php (11) App::run()

真好。。

入手M8一周小记

2010年3月27日 由 admin 没有评论 »

周一的时候入手了M8,自然少不了好好折腾一番。

常用的软件和游戏通过很方便的一键安装包安装,同时安装的还有一个叫做M8 Dock的软件。效果很炫。

M8文件管理器中的文件不能直接发送到桌面作快捷方式,必须通过M8优化精灵这个第三方软件。这是新手通常会比较疑惑的地方。

一开始用的是官网上的9612固件,音乐播放的外放音量很小。

周二换了点讯输入法,虽然一开始对M8原生的全键盘输入法充满热情,当我发现屏幕上密密麻麻的微型全键盘不仅不好输入,而且在联想输入上远没有传统手机键盘那么快。换了点讯之后,一切都解决了,而且保留了装酷时候用的全键盘的输入。

周三升级到最新的975固件,很高兴音乐外放音量变大了。不过貌似有时会有破音。

周四开始玩植物大战僵尸。。至今我的右手拇指尖仍然很疼。。

周五是杯具的一天。刷了Android系统,实现了双系统启动,却发现触摸屏没有用,原因是没有新的PET屏幕的驱动。

今天又是杯具的一天,早上起来本来要给LJH同学炫耀一下Android,开机后发现进不了Android了,连续不断的刷出出错提示,一行又一行的,强制关机管不了,只能拔电池T_T

如果让我给m8评分,那我会毫不犹豫的打9分。作为魅族的第一款手机产品,做得实在是出人意料的棒。完美的音质,较流畅的RMVB视频播放,以及支持多点触摸的wince系统,几乎都无可挑剔。(打一下广告)

最后,期待官方早点推出Android系统固件,毕竟魅族在全世界还是小众,要去傍Android这棵大树,才能为用户谋利,说到这里,不禁又要为M8没有独立的3D图形芯片纠结一下。。唉,就算有了Android固件,很多G2、G3上的3D游戏还是玩不起吧。。

囧。。Visual Studio最新广告 – 让我做你下一行code

2010年3月26日 由 admin 没有评论 »

看了这条新闻  觉得这个广告策划实在是太雷人了。。问题在于,那个女的不可能是code,那个男的也不是programmer,看上去哪里都好假。。有网友评论如下

女:我是你的什么?
男:你是我的CODE啊!
女:原来我是CODE啊?!
男:这样,我就可以天天打你了!
女:(受虐样的笑)

Let’s folk-Rhythm of the rain

2010年3月21日 由 admin 3 条评论 »

Let’s folk…

Listen to the rhythm of the falling rain,
telling me just what a fool i’ve been.
i wish that it would go and let me cry in vain,
and let me be alone again.
the only girl i’ve ever loved has gone away.
looking for a brand new start
but little does she know that when she left that day.
along with her she took my heart.
rain, please tell me, now does that seem fair
for her to steal my heart away when she don’t care
i can’t love another,
when my heart’s somewhere far away.
the only girl i’ve ever loved has gone away.
looking for a brand new start
but little does she know that when she left that day.
along with her she took my heart.
rain, won’t you tell her that i love her so
please ask the sun to set her heart aglow
rain in her heart and let the love we knew start to grow.
listen to the rhythm of the falling rain,
telling me just what a fool i’ve been.
i wish that it would go and let me cry in vain,
and let me be alone again.
ooh listen to the falling rain…

让PHP支持像jQuery那样的链式操作

2010年3月19日 由 admin 1条评论 »

群里有人讨论这个问题,我的想法是在方法里返回this指针(指向对象本身),通过对私有成员$sql的赋值,来获得最终的执行语句,并返回相应结果。

Class Database{
    private $sql;
...
    public function where($condition){
        //此处省略n行...
        return this;
    }
    public function limit($limit){
        //此处省略n行...
        return this;
    }
    public function execute(){
        return this->query($sql);
    }
    public function select(){
        //此处省略n行...
        return this;
    }
}
//调用时:
$DB = new Database();
$DB->where($condition)->limit(20)->select();

用NoSQL替代MySQL ?

2010年3月15日 由 admin 1条评论 »

今天看到一条消息,说Digg要和Mysql说再见了。

这本来是无可后妃的。DBMS只是用来管理数据的,做统计、经营分析之类的事情。这个任务往往要求不是实时的。高速存取也不是它的强项,信道是有限的。RAM Cache虽然快但是硬件成本不说,它不够稳定,特别是对事物控制。所以出现了 noSql这一说法,这是必然趋势。

可以遇见,ram cache与noSql同步关系,noSql与dbms异步关系。noSql不是对DBMS的替代。作用为减轻业务库压力,提高前端响应、即时数据共享。这些都是在保证事务,数据稳定前提下进行的。

我预见的RIA未来

2010年3月12日 由 admin 4 条评论 »

像我看齐,起一个幽默一点的标题吧。

下面是我用Google Trends搜索到的Flex和Extjs两项RIA技术的关注度对比。可以看出,Flex在全世界关注程度远超Extjs啊。。这两门RIA技术分别代表了两个阵营——以flex、sliverlight为代表的基于runtime的表示层技术和以javascript为代表的浏览器脚本技术。

flex extjs

据我所知,Extjs目前还没有一个完善的可视化编辑器,所有的页面呈现必须自己编写代码,这是比较蛮烦的。。而Flex有一个相对比较完善的可视化编辑器,基于flash技术的UI组件也比extjs要丰富和完善,(毕竟Adobe是大公司 实力雄厚哇),世界上95%以上的PC机上装有flash插件,而flex正是基于flash。

无论还是js还是flash,都是这个世界的浏览器中支持得最广泛的技术。Extjs的代码显然更易学一点(基于javascript),但UI构建上比较欠缺;反观Flex,有一个趋于完善的开发环境,但其mxml和actionscript脚本显然学习成本较高。所以他们是各有所长吧。但就google趋势上来看,Adobe的拥趸者明显多一些,所以学习资料自然多一些——这一点我已经到学校图书馆考证过了。。

那么再看一下最近颇为火爆、被称为RIA杀手的HTML5与前面两项技术的对比吧:

flex extjs html5

但是HTML5怎么可能成为RIA杀手呢,仅因为几个<video>、<canvas>之类的标签吗?大家都知道,flash、sliverlight和JavaFx和浏览器的关系,一直都是插件和平台的关系(Extjs是例外)——HTML5显然还没有强大到可以集成那么多的UI组件,比如DataGrid、List、Tree等。可见啊。HTML5和RIA是会共存下去的。那么至于Flex和js究竟哪一个才会成为RIA开发的真正主流呢,市场会说明一切的。我看好Flex。

涛哥深情献唱《莫斯科郊外的晚上》

2010年2月27日 由 admin 没有评论 »

。。唱得真好