招聘美工的一个评语

我们招聘美工的过程中,有一道题:“一个UI的Hifi prototype,客户感觉系统有些压抑,希望修改一下这个设计”。前面两个面试者我们都让他当场做,可是结果不理想,主要原因是他们不习惯Mac下的Photoshop或者Fireworks。所以第三个面试的时候,我们让她回家试试。结果让我很失望,主要原因是美工的思路不对。她修改了不少细节,修改了几个按钮的设计,加上了水晶的反光,修改了Tab设计,加上了玻璃的风格,可是她无视了对比度过低造成的界面太灰的问题,也无视了排版的一些基本的禁忌(比如一致性)。

我非常认同的一句话是对于美工的日常设计90%都是排版工作。那么我列出我对这个作业的考察点:

  1. 排版调整:突出表现系统的信息架构,起到视觉焦点引导的作用。
  2. 颜色搭配:视觉的调整,改变对系统的整体印象,引导用户使用系统的情绪(紧张、放松、严肃)
  3. 细节调整:也起视觉焦点的引导的作用,帮助用户按照我们的交互设计使用系统。影响用户的潜意识,提升用户对系统质量的认同。

它们的优先级是60%,30%,10%,也就是说排版和颜色最为重要。

这不是一个系统的想法,并不适用于美工的日常工作,我主要强调做这样事情的一个思路,美工需要用自己的工具来引导客户。

工具-不会用不丢人,怕会用才丢人

工具就是进行生产劳动时所使用的器具。工具的目的在于提高生产劳动的效率。感慨于一些真正的Geek的blog,我也想了一些工具对于我的重要意义,用来作为下一段的目标。

人家说工欲善其事必先利其器,还有磨刀不误砍柴工,实际上在说明工具对提高工作效率真的非常有意义。

今年的我,上游离于前端开发和后端开发之间,同时我还要在两个不同的团队(ThoughtWorks StudioCruiseMingle两个产品开发团队)之间切换,所以对于我来说频繁的需要Context Switch(工作环境切换)。两个团队所使用的技术也不同。

  • Cruise是一个标准的Java团队,大家的开发工作站都是Ubuntu环境,IDE是Intellij IDEA,源代码控制是Mercurial(aka. HG),自动化构建脚本基于Ant,持续集成工具就是自己开发的Cruise。
  • Mingle团队是标准的JRuby on Rails团队,大家开发机器是Macbook pro或者Mac mini,编辑器是TextMate(JRuby部分有IntelliJ IDEA的工程),源代码控制是Git,自动化构建脚本基于Rake,持续集成工具有两个,其中提交前使用的precommit CI是基于我们公司的开源产品CruiseControl.rb,而主持续集成服务器是基于Cruise(也就是前面那个团队的产品)。
  • 两个团队所使用的敏捷环境是Mingle,用过Mingle的朋友知道,这个NB的工具的可配置性很高,这两个团队的Mingle项目模板区别很大。
  • 这两个环境的区别还是相当大的,而且每次我切换了团队(大约2个月的周期),我很有可能就需要很大的更新我的Macbook pro上面的各种库。
  • 当我做前端开发的时候,我还要切换与我的Mac上的Photoshop CS3和Mac的VMWare Fusion上的Fireworks中(使用Windows的Fireworks的原因是授权,我的正版授权是Windows的)。使用Fireworks的原因是我们的设计师使用它,所以我需要使用它来调整一些小的设计。
  • 在做Javascript逻辑的部分,我需要在Firefox 3/2、Safari 3、IE6/7(VMWare Fusion)之间切换,每个浏览器都有不同的附加调试工具(主要的三个Firebug、Inspector、IE Dev toolbar)。

我想对于一个强悍的程序员(最近比较崇拜的delphijhdcola云风等神人)来说做这样的环境切换也许还是可以的。可是对于我这个不善于multi-task工作的人来说,马上让脑子适应不同环境,熟练使用不同的工具就成为了一个挑战。

所以,结果是,这一年中,我基本上对于这些工具很少深入学习,基本上就是凑合着使用,如果没有通用的快捷键我就懒得去翻手册学习了。结果就是使用HG的queue功能(超级有用的qnew、qrm、qpop、qpush系列)的时候经常把自己搞崩溃(今年居然有和李彦辉教授在pair的时候搞丢了2个小时内的修改,相当丢人),所以后来在使用HG的时候异常小心,生活在心理阴影下面。而对于Git,我居然完全没有使用过stash功能(和HG的queue类似)。昨天胡凯还问我是否用过bisect,是一个折半查找坏提交的功能(在HG和Git里面有等价的功能),我完全没有使用过。因为这些精巧的基于命令行的源代码控制工具对于程序员来说非常之重要,从这个角度体现了我对于工具的不求甚解达到了什么程度。突然想到梅兰芳里面十三燕那个很棒的台词“输不丢人,怕才丢人”,用不好工具没事,但是害怕学习用工具那就是很丢人的问题了。

那么自我分析的结果就是,由于环境切换,我缺少了专注,形成了对学习环境中的工具的恐惧,最后影响了我的工作效率。

下面的内容用来自勉,分析一下工具对于我到底有多么的重要(也就是说这个是我使用和学习工具中比较Happy的部分)。对于还没有注意到工具重要性的朋友,可以关注一下,看看是否有所借鉴。

  1. 关于GTD:去年看了不少退墨的文章,我深感这种意为减轻压力的“Todo list“对我的重要。最早我使用了文本文件来记录,每天一个文件。但是后来发现跨天完成的任务使用这种方式不好,需要手工拷贝。所以后来按照每个Context(家、单位、电脑、手机…)放一个文件,然后使用日期作为风格,跨天的任务我就拷贝一下,这个文件本身放在EverNote里面实现多平台共享。但是后来我发现这样也不好,因为不明显,也不好做计划。再后来我开始使用iGTD,发现似乎不错,它的结构比较简单,而且它分开了context和project两个概念,所以像“OpenParty、Mingle、Cruise、梦想”也有了自己的归宿。GTD的做法,please google之。
  2. 关于工作和休息的切换:一开始我惊艳于Livid修改过的TimeOut这个软件,但是它运行的经常很慢。后来我使用了原版的AntiRSI这个抗劳损软件,它的原理就是根据你设定的时间提醒你做短休息(一般是15分钟,站起来休息30秒),还有长休息(一般是45分钟,站起来休息5分钟)。再做结对编程的时候弹出它可能你的pair会有意见,但是你需要通过它的实际效果来感动他们。结果是Mingle的队友已经基本上都在使用它了。
  3. 分布式版本控制工具:DVCS可以帮助你更好的管理本地分支,让分支变得轻量,而且它还可以帮助较大的分布式团队更好的管理自己的本地主干。而且他们里面还有很多帮你管理提交习惯的工具,比如前面提到的提交队列工具,可以鼓励你使用更加频繁的本地提交。当然使用分布式版本控制工具的前提就是你要仔细阅读一下hand book,学习一下他们的基本概念和原理,这样才能达到更好的效果。
  4. Feeds工具:我使用Google Reader阅读文字型RSS Feeds,使用iTunes订阅Podcast。
    • 阅读工具多了去了,你的选择很多。但是要做的是学会更好的使用这些工具。今年从Patrik lightbody那里学会了重构Rss Feed订阅的重要性,要减少一个feed使用多个tag进行管理,因为一般鼓励在一定时间段里面保持未读feed不要积攒太多(这就失去了持续阅读的能力),但是如果使用多个Tag标记feed,那么在统计未读条目的时候往往会重复统计,会造成很大的阅读压力,而且对于给自己的不同feed组定不同的优先级也不利。
    • 所以我首先做的是将所有的订阅单一化,分类清晰了很多。分类有一个小技巧,不要对个人博客按照主题打标签,比如以前我给robbin的博客打上java的标签,而livid打上了apple的标签,那么在我决定要看哪个标签下的主题的时候就会感觉很迷惑,因为个人博客都没有固定主题,所以这些标签就编程没有意义的误导了,所以我现在对于这类feed直接标记为“Interesting Person(有意思的人)”,我可以给这些人很高的优先级。
    • 另一类是如GizmodoLifehacker这种信息门户型,他们每天要更新50+的新条目,所以我把他们放到一个单独的如news portal这样的分类里面,我可以给他们很低的阅读优先级。
    • 不同优先级的条目在Google reader里面还可以对应列表/展开的方式查看,可以很好的提高使用效率。再有就是Google Reader的快捷键,在吃午饭的时候,右手用来吃饭,左手可以通过一个空格健来实现滚动和查看下一条,s是标星,Shift+S是共享,这个基本上就可以实现单手阅读了,很方便。
    • Podcast是坐地铁上班时很重要的学习工具:因为地铁和很多交通工具非常拥挤,即使带上书也没有空间看(尤其时备上电脑上班的我们)。所以在非常拥挤的时候我会选择听音频的Podcast,如锵锵三人行(了解时事)开卷八分钟(了解好书,不过越来越没意思了)、Ruby on Rails Podcast(Rails的)、RailsEnvyTackSharpJDD主讲的关于摄影)等等。在不是那么拥挤,也就是胸前有10厘米以上空间的时候,我会选择看视频Podcast,最精彩的是TED Talks的演讲,不错的有Apple Quick TipsX-Play Game Previews等。用这种方式消磨时间比用PSP好很多。这是一个购买iPod touch 2的理由^__^
  5. 信息分享服务:这个又是一个很大的话题。大家在聊天的时候经常感觉很有收获,原因是兴趣相投的人在互通有无可以带来很多的有用信息,而不是像电视的新闻节目或者报纸那样给你带来没有针对性的噪音。社会化网络SNS实际上是个很好的分享有用信息的平台,可是我不是很喜欢facebook等给我带来的参与压力,所以我一般通过一些通用的分享服务来满足自己的需求。
    • 我一般通过Last.fm来实现音乐播放历史的跟踪,通过它的推荐服务来发现一些我喜欢的音乐。这实际是一个相关度算法的应用场景,它不同于简单的试听型的网站(现在国内的xiami.comkedou.com我觉得基本上属于这种类型),它的目的不是给你知道的音乐听,而是根据你听过的音乐推荐你一些音乐听,收集音乐品味的过程叫scrobbler,我在使用iTunes放音乐以后会被自动同步到last.fm并用来做数据挖掘。使用Last.fm服务需要注意的就是要及时更正你的mp3-tag信息,这样你提交的数据就不会是垃圾,这对未来享用推荐服务非常重要。但是现在我发现的一个问题是,由于中文有简体和繁体,所以很和多时候Last.fm的亚洲歌手的名字都会出现多个版本,这给推荐带来了难度,也许国内的服务上可以帮我们解决这个问题吧。使用iTunes的朋友可能苦恼于mp3-tag信息乱码,那么使用Glider开发的ID3Mod2这个软件。
    • 看电影和看书通过豆瓣就很爽了,我对它使用的很初级,但是豆单等已经聚合过的相关分组已经可以给我看电影很多启发了。使用豆瓣这样的工具我们要做的就是尽量及时的更新你的阅读列表,这样豆瓣得到你的更多数据,那么推荐也会更加准确。
    • 我非常珍惜Google Reader的share功能,尤其是share with note。因为这个几乎是最好的和靠谱的朋友分享信息的手段,我一直认为这个是最好的一个人肉过滤器,你的朋友圈子越准确,得到的share也就更符合你的品味。自己在share的同时,可以看到你的share的朋友就和你做了非面对面的交流。而且有的时候如果你1个月没有读feed,已经无从看起的时候,完全可以把他们置为已读,然后去看朋友的分享。这减少了很多信息过滤的成本。
    • 最后一个重要的分享服务就是Twitter了。Twitter解决了你不能和所有的你想交朋友的人聊天的缺憾,这样你可以轻松的follow业界大牛,如d2hkent beck等。它也是一些重要信息的最快速发布场所,同时也是一个重要的社交场所。在使用Twitter以后我发现我甚至越来越少的在使用IM软件了。使用Twitter这个工具你需要做的就是有节奏的发信息,而不是三天打鱼两天晒网,这样大家不会因为你太贫而退订你,也不会因为常年见不到你的twitt而忘记你。
  6. 信息存储服务:网上看到好东西我们经常想收藏,这种行为叫做网摘,最早我使用CyberArticle(荣幸的买了正版,用的很High),而后用了Linux,所以改用Scrapbook,作为firefox的插件它是跨平台的。此时我的同时推荐我使用在线的Google记事本,这几个软件都能很好的做网摘。但是这几个软件的缺点是缺少协作,那么后来最常见的就是社会化书签应用,delicious,在浏览器装个插件以后它可以帮你用tag管理书签,好处是还顺便帮你做推荐服务,很方便。后来我发现并非只有这些数据需要存储,我们还需要网络磁盘服务,这类服务很多,我个人倾向于使用Dropbox,它的好处是各个平台都有客户端(Win、Mac、Linux),而且是用户空间磁盘系统,用起来和本地磁盘一样,它同样可以用来在项目组之间共享一些文档、电子书等。最后,我还推荐一个类似M$的OneNote的免费在线文档、及数据存储服务EverNote,我用它来存储一些简单的文本文档,还有用它写一些视频note,因为它有一些方便的工具帮你来做音频或者视频的记录。(对了,还有梦断代码里面描述的难产的软件Chandler,它是一个本地的数据中心软件)
  7. 快速启动服务:就是使用键盘快捷索引的启动工具,有代表性的是QuickSilver(是Mac下的,详情看Robbinlu的这篇blog),它显然比Mac自己的Spotlight好用(而它又比win下的很多桌面搜索强很多很多)。通过培养这样的软件可以帮你极大的提高效率。Windows下有launchy也很不错。
  8. 还有很多,但是我没有必要一次全部说完……

下面要分析一下我做的不好的地方,迎来跟踪我的改进:

  • 没有认真的学习Git和HG的用法,没有很好的贯彻他们的最佳实践。
  • 没有很好的学习shell。很少给自己写脚本来提高每天工作的效率。对很多*nix命令还很不了解,如wc、du……,对于微语言awk等不了解,这就限制了我制造自己的组合工具的能力。
  • 没有学习如何使用Mac的automator和appleScript。
  • 对于C语言的了解太初级,还是大学上课的水平,而它又是读懂很多code的关键(我并不想成为c程序员)。
  • 没有很好的整理好自己在各个网站的帐号。所以经常忘记去使用这些服务。
  • 没有很好的整理自己家的硬盘,没有对里面的电影和音乐进行过删减。因为数据也会过期,如果总是舍不得那么它们都被积累为工作噪音。所以要勇于与过去告别。
  • 没有好好学习Photoshop和Fireworks的使用,总是在使用低效的重复劳动。
  • 没有管理好自己的博客。我今年做了的事情就是把blog从BlogJavaLive Space移动到了朋友的机器上的wordpress上,但是由于访问速度比较慢,而且离线的时候写东西不方便,我今年也很少写blog post。
  • 没有学会使用一个有效的照片库软件,iPhoto的分库功能我最近才知道,不过没有认真整理(要减少单个iPhoto Lib的大小,这算个最佳实践)。我也应该学会使用一个LightRoom或者Apeture那样的面向摄影的后期软件。
  • 没有学会使用图片分享服务,我游离于flickr、picasa web和好看簿之间,前两者现在都有了iPhoto客户端,但是我还没有很好的使用。在9的内容做好后,我要更好的利用图片分享服务。
  • 没有很好的学习Ruby on rails,虽然一开始仔细阅读并且也用1.0的rails写了些小应用,但是我的知识没有及时更新。
  • 没有很好的清理自己的数据遗迹,我这个人很注意备份,但是没有注意清理过期的备份,想个好的工具来解决它,如TimeMachine。
  • 没有使用好Facebook和Linkedin这两种SNS,它们实际上能够帮助我很多
  • 没有利用好我买的图书,书是学习工具,而不是收藏品,我没能很好的阅读它们。

暂时先准备写到这里,其它的关于工具的话题我会另开post来总结。(最后更新于2008年12越21日)

中文网志年会2007


中文网志年会2007

跟大野狼、蚂蚁、二傻参加了今年的网志年会。这里记录下我的见闻。这不是一篇时效性很强的故事,但是看完以后你会回忆起网志年会的点点滴滴。



第一天最精彩的Session-第一天最精彩的Session 飞猪为反波做了一个Keynote。非常酷!Keynote比PPT更容易做出酷的东西。



反波是关于博客Podcast的,会场的整体效果-反波是关于博客Podcast的,会场的整体效果



会场提供的演示用电脑是个Mac MB063,让我看了感觉很激动,不过这个对于居大多数的Windows用户并不怎么友好-会场提供的演示用电脑是个Mac MB063,让我看了感觉很激动,不过这个对于居大多数的Windows用户并不怎么友好



反波的banner做的很吸引眼球-反波的banner做的很吸引眼球



会场的边上有朋友躺着听keynote-会场的边上有朋友躺着听keynote



穿插场中有大量使用Mac的用户-穿插场中有大量使用Mac的用户



中文网志年会到场的也有很多国外友人-中文网志年会到场的也有很多国外友人



换个角度看会场,可以说这次的会演讲的人数与质量成反比,几个论坛形式的话题感觉都是各说各的,没有意思-换个角度看会场,可以说这次的会演讲的人数与质量成反比,几个论坛形式的话题感觉都是各说各的,没有意思



现场的叽歪借机火了一把,想模仿Twitter一夜走红的路子。但是会议有这样的互动方式的确是个亮点。-现场的叽歪借机火了一把,想模仿Twitter一夜走红的路子。但是会议有这样的互动方式的确是个亮点。



这位大哥也用小白,在处理照片,很艺术,他的照片也都很不错。认识这位大哥的朋友可以介绍一下。-这位大哥也用小白,在处理照片,很艺术,他的照片也都很不错。认识这位大哥的朋友可以介绍一下。



VAIO和MAC。感觉还是用黑苹果那位大哥姿势比较牛!叔叔练过是吧…… -VAIO和MAC。感觉还是用黑苹果那位大哥姿势比较牛!叔叔练过是吧……



一位以无影手使用Macbook Pro的老大,英文纯正,拜一个-一位以无影手使用Macbook Pro的老大,英文纯正,拜一个



译言的老大也是标准的小海龟,这个网站绝对是口碑绝佳,所以他一上台就受到了极大的关注!这也是很多人反映的第一天最期待的Session。不负众望,这个演讲也很成功,思路清晰,老大是风流倜傥呀。-译言的老大也是标准的小海龟,这个网站绝对是口碑绝佳,所以他一上台就受到了极大的关注!这也是很多人反映的第一天最期待的Session。不负众望,这个演讲也很成功,思路清晰,老大是风流倜傥呀。



Google docs目前真的是我们的自来水,用它来做演示真的好聪明-Google docs目前真的是我们的自来水,用它来做演示真的好聪明



互动的价值就在这里,活跃气氛呀。玛丽是那位号称台湾Twitter女王的网友,后面有提到。zola是周曙光。-互动的价值就在这里,活跃气氛呀。玛丽是那位号称台湾Twitter女王的网友,后面有提到。zola是周曙光。



现场的笔记也是Google docs,他们在组织杀人……-现场的笔记也是Google docs,他们在组织杀人……



这位大哥的头巾吸引了我的眼球,相当彪悍-这位大哥的头巾吸引了我的眼球,相当彪悍



中间我去照了夕阳,第二天大野狼请我到这里吃了french tea pot,好好吃呀。-中间我去照了夕阳,第二天大野狼请我到这里吃了french tea pot,好好吃呀。



会场后面很多人找Twitter女王签名……那两天相当冷,佩服她的裤袜。-会场后面很多人找Twitter女王签名……那两天相当冷,佩服她的裤袜。



互动网的老大PHD在讲的时候有人去访问了一下互动网……结果出现了有些暴露的美女图,相当的不协调。不过这样的场面倒是挺有趣的。这图明显不够猛,很多人评论说……-互动网的老大PHD在讲的时候有人去访问了一下互动网……结果出现了有些暴露的美女图,相当的不协调。不过这样的场面倒是挺有趣的。这图明显不够猛,很多人评论说……



这个关于大硬盘的评论,汗-这个关于大硬盘的评论,汗



Twitter女王特写……旁边的那位美女是维基百科的台湾区工作人员。那个不是mac小白,而是一个ASUS。-Twitter女王特写……旁边的那位美女是维基百科的台湾区工作人员。那个不是mac小白,而是一个ASUS。 我不是好色之徒,全世界的女人我只欣赏我老婆……
但是不得不佩服人家的生活态度,大冬天串薄薄的,然后坐地上,那小PP是什么感觉呢?想来难受……莫想歪……



这个是Day2了,出席人数少了很多。不过这个logo我比较欣赏。-这个是Day2了,出席人数少了很多。不过这个logo我比较欣赏。



这个还是第一天的……我喜欢这种动中取静的感觉,Laptop会改变你的生活。-这个还是第一天的……我喜欢这种动中取静的感觉,Laptop会改变你的生活。



第一天结尾的时候关于维基百科的附加值开发的论坛,据大野狼说给他启发不小。-第一天结尾的时候关于维基百科的附加值开发的论坛,据大野狼说给他启发不小。



这个是Day2里面最精彩最精彩的Session,个人认为也算是两天最精彩的!Ito博士讲共享经济。-这个是Day2里面最精彩最精彩的Session,个人认为也算是两天最精彩的!Ito博士讲共享经济。 Ito弄出了last.fm等一大堆我很喜欢的网站,拜拜。而且他的英语日本腔不是很重,这个赞一下。
而后有有人问了他The next big thing是什么,他说是mobile设备和video game。感慨人家眼光毒辣呀。
而后又得知,问问题的人是Livid,一直非常仰慕的一位比我年轻的开发者……剃了头不认识了,后悔当时没有过去认识他。



还是Day2,开始的时候一直放这个Clone星球大战splash的video session。-还是Day2,开始的时候一直放这个Clone星球大战splash的video session。



Ito博士的共享经济Topic-Ito博士的共享经济Topic



给本本贴贴纸是一个很酷的行为艺术,GNU和firefox还有Ubuntu估计所有这样的本子上面都会有的贴纸。-给本本贴贴纸是一个很酷的行为艺术,GNU和firefox还有Ubuntu估计所有这样的本子上面都会有的贴纸。



伊藤Ito博士的Topic讲的很好,不过翻译的阿姨表现不是很好,明显很多词都翻译的不对。有点Bilingual能力的人都会不爽,下次推荐让IT业内人士做翻译。-伊藤Ito博士的Topic讲的很好,不过翻译的阿姨表现不是很好,明显很多词都翻译的不对。有点Bilingual能力的人都会不爽,下次推荐让IT业内人士做翻译。



另外一个布满贴纸的Dell laptop-另外一个布满贴纸的Dell laptop



还是MBP养眼,说mac改变生活那绝对不是盖的,想起土老冒罗永浩批评苹果鼠标只有一个键的事……感慨呀。-还是MBP养眼,说mac改变生活那绝对不是盖的,想起土老冒罗永浩批评苹果鼠标只有一个键的事……感慨呀。



大野狼的主要任务就是与各大网站的老大交流-大野狼的主要任务就是与各大网站的老大交流



这个关于CC的图释非常到位,我们很多时候都在fair use,这个的规范过程就是CC要解决的。-这个关于CC的图释非常到位,我们很多时候都在fair use,这个的规范过程就是CC要解决的。



这个Panel是开源软件社区的一个讨论,不过还是有点Boring,但是这几位都是值得敬佩的朋友!-这个Panel是开源软件社区的一个讨论,不过还是有点Boring,但是这几位都是值得敬佩的朋友! 正在发言的是啄木鸟社区的创始人之一,黄东,他也是从高中毕业就以程序员为职业放弃求学过程的成功人士。他对我有知遇之恩,非常感谢。那天和他讨论了有一个小时,谈好看簿性能扩展的事情,很有启发,感谢老黄。
最右边的Bill Xu,是给招商银行写公开信的GNU教徒,曾经是我的直属上司,以前感觉想法有点偏激,这次感觉明显务实了一些,很高兴看到这种改变。



这个Panel好像是关于内容创造的?keso很多人都眼熟。其它人不认识,基本上这个session比较boring。-这个Panel好像是关于内容创造的?keso很多人都眼熟。其它人不认识,基本上这个session比较boring。



这位是可敬的庄老师!那天的topic得到了现场很多朋友的认可。图上有好看簿logo,庄老师讨论了使用好看簿作为教学工具的好处。-这位是可敬的庄老师!那天的topic得到了现场很多朋友的认可。图上有好看簿logo,庄老师讨论了使用好看簿作为教学工具的好处。 有人这样评价庄老师的Topic:“正统学校的老师做的PPT就是脚踏实地。内容非常扎实,无懈可击。”



keso的设备并不专业,也是拍友-keso的设备并不专业,也是拍友 咳嗽居然用的是sigma的头,机身好像是400D or 40D,没看太清楚。不过镜头如果没猜错是17-50,素质还是相当一般的。这个DSLR估计也就是个拉风的小DC替代品。



托laptop的板子不错,边听讲边用笔记本-托laptop的板子不错,边听讲边用笔记本



还是场外的自由感觉比坐在椅子上还有趣-还是场外的自由感觉比坐在椅子上还有趣



女王拍咳嗽-女王拍咳嗽



继哲Bill Xu在发炎-继哲Bill Xu在发炎



大野狼和诸位名人坐在一起,鹰眼发光呀-大野狼和诸位名人坐在一起,鹰眼发光呀



刚才提到的用小白的大哥在演示iPhone,iPhone在那天出镜率很高。-刚才提到的用小白的大哥在演示iPhone,iPhone在那天出镜率很高。



女王被围拍,这部分俨然是个小王国了-女王被围拍,这部分俨然是个小王国了



老黄发炎-老黄发炎



这位外国友人是个摄影师,同时使用MBP,可惜此时网络连不通……-这位外国友人是个摄影师,同时使用MBP,可惜此时网络连不通……



大野狼所处环境,女孩子用小黑不怎么搭配-大野狼所处环境,女孩子用小黑不怎么搭配



会场的外景,相当壮观!-会场的外景,相当壮观!

以上内容由Diamond Tin!于2007年11月27日创建于好看簿。 点击此处访问原始链接,或此用户的更多内容

好看簿:用照片记录和分享生活的图片博客”

昨天没有虚度

本来是“今天没有虚度”,晚了几分钟。
1、起来收拾整理一下床。
2、电脑硬盘干净一些了,目前整理了50%以上了,分区大小都已经调整完毕了,有点像华容道游戏。
3、今天终于有时间看看技术了,当然发现自己大大落伍。现在的社会几个小时不学习就会落伍,而我有一个月了。看了看Javaeye上关于分布式Cache、事务、集群部署架构、SNA架构,其实这些东西的主题是差不多的,正确性和性能。我发现我对这些还是很感兴趣的,而且也可以理解他们在说什么,动手试验一下,也许还能赶上一些。
4、花了一个下午的时间在医院陪妈妈和大姨聊天,缓和姥姥住院的紧张气氛。晚辈应该多陪陪老一辈。
5、恩,没啥,可以思考,吃饭,洗澡,象生活了,而不是四处奔波焦虑的人。
当然,烦心事很多,家里事都赶一块了……
还好,zz很开心,而我,明天去sina面试,奥,是今天,祝我好运。

2006.1.16 工作总结

我们使用的JSValidation升级为1.0b4以后就不工作了,我本想放弃。后来下午灵机一动,把新的1.0b4用UTF-8转存一下就OK了,靠!而且同时发现我们使用的已经是1.0b4了,我去年就……靠靠!
发现比较有趣的地方:
1、Webwork封装的sessionMap其实就是Map,使用起来完全相同。使用map.put map.get即可,自己放什么类型就是什么类型。
2、Webwork的OGNL里面自动set回来的parameter是String[]类型,遍历时使用((String[])session.get("somekey"))[0]即可访问到,注意先检测是否contains那个key。原理是由于html的form的name允许重复,所以返回的可能是parameter或者parameters,后者就是一个数组,所以OGNL的setter会自动把你的结果全部以数组方式保存。直接使用就有点麻烦了,不过无所谓了。所以webwrok里面ModelDriven风格才是推荐。
所以我们的需要使用Session的UserAuthenticationManagerjiu只需map.get即可。
而后就是漫长的实现,发现了global-results,这个需要配置在package里面。发现它可以覆盖,即在子package的global-results会覆盖父package的global-results,方便。
不过要注意,在package里面,global-results要在action前面声明。
然后还发现一个非常重大的Bug,或者说问题,是关于Spring的:
在配置的时候使用模版方式定义,即:
<bean id="basicActionWithAuthtication" abstract="true">
此时该bean里面的所有注入属性都可以工作,也就是parent指向basicActionWithAuthtication的bean都会继承它的ref bean。
但是在该bean里面声明的singleton="false"却不会被继承。
这个需要参考以下参考书了,比较重要,不能误解!
在Spring reference的第26-27页(1.2.6)第3.5节Abstract and child bean definitions:
A child bean definition will inherit constructor argument values, property values and method overrides from the
parent, with the option to add new values. If init method, destroy method and/or static factory method are
specified, they will override the corresponding parent settings.
The remaining settings will always be taken from the child definition: depends on, autowire mode, dependency
check, singleton, lazy init.
意思就是一般构造参数和参数值及方法都会从parent继承和覆盖,而如果指定了init方法destroy方法和static factory方法,也会覆盖parent的相应配置。
但是depends on、autowire mode、dependency check、singleton、lazy这些属性则不会被继承,都直接从child中获取。
这也就解释了我们使用的parent里面设置singleton="false"为什么不起作用(Spring默认true,其实就是我们的parent设置不会被继承)。
里面还有个说明有意思:
对于没有制定abstract="true"的action,如果它的class没有指定,则它默认情况下也是一个abstract。但是对于那些指定了class的bean,如果不指定abstract="false",则默认它会初始化。但是对于无abstract声明,但由没有class制定的bean,被引用或者初始化,则会报错!所以要注意,考虑好你的class是否是abstract,声明好。个人人为还是纯抽象并作为模版比较好,表示配置相同的那种方式(都指定class,且有parent关系)则不太合适。
这个的严重性会造成Webwork的action变成singleton,如此的话,两台机器同时调用/administrator/load.action就会调出同一个admin,太可怕了!