统
计 信 息 |
| 专 辑:6 |
评 论:10 |
| 日 志:133 |
人 气:1602 |
|
|
|
最
新 日 志 |
| Flex builder 3体验 -- 博客:苏的笔记 发表于2008-5-9 21:25:39 | 因为自己之前很少开发web应用程序,对web技术了解也不多,比较落伍,为了充实自己,最近在学习web方面的一些技术,比如rest、flex,感觉现在的web技术比起几年前真的差别很大。 为了学习flex,下载了flex builder3,真的很惊喜,IDE竟然就是基于eclipse的,用起来极其顺畅,看来adobe的策略很是高明,即省事又较少初学者的学习曲线。 flex是一种RIA技术,在构建交互性强的web非常棒,在最近的调查中,ajax/js依然占据了90%以上的市场,flex和silverlight占据了不到10%的份额,虽然份额不大,但RIA应该是web发展的一个重要方向,不然ms不会死命推silverlight。 现在在市场上,貌似flex学习气氛比较火,不过典型案例确实少了点,大部分网站都是用了少量的flex。其实flex的应用范围还是挺广泛的,比如做视频在线播放(不知道土豆、youtube是否用了?)、在线office、在线游戏等等。 flex比起java applet来说,有很多优势,比如说最终以flash格式来发布(也可以直接在AIR中运行),基本上每个浏览器都会支持,而浏览器对jre的支持却很有限,而且UI界面比awt,swing好看、丰富得多,最重要的是flex里面支持根据internet的通信方式,比如http,rest...。当然,applet使用java开发,基本没有学习曲线,这点是flex无法比拟的,看着applet逐渐没落,flex应该可以大展拳脚。 flex builder3真的是一个很强大的flex IDE,通过它学习flex变得很………… | | --------------------------------------------------------------------------------------- | | | |
| Digester -- 博客:苏的笔记 发表于2008-5-9 9:08:09 | Apache Jakarta common里面的一部分。最早是从struts发展过来的,历史不多讲,网上介绍的多的是。它的主要功能就是能简化xml到对象映射。 以前,我们将xml中的信息读出,然后赋给对象,一般要通过SAX等来实现。实际上,这样操作起来很麻烦,而且每个不同的xml,可能你需要写不同的解析代码,扩展性不好。而且处理嵌套层次关系时非常复杂。 Digester能做到的就是帮助我们简化这些操作,将xml中的数据直接读取并映射到你定义好的java object中,而且这些对象间的嵌套层次关系也能轻松处理。 只需要在里面设置好一些属性和RuleSet,然后调用parse即能返回这个xml文件对应的根对象。 其内部的实现,实际上通过注册的一些RuleSet,按照strategy pattern来对xml中的不同元素按不同的规则做匹配和转换,最后生成对象实例。 | | --------------------------------------------------------------------------------------- | | | |
| 了解一下日本的战国-幕府历史 -- 博客:苏的笔记 发表于2008-4-27 19:55:08 | 最近突然想了解一下日本战国-幕府时代的历史,没细看,只大致了解了一下概况。 日本战国大约有130多年,跨越14xx-16xx,战国之后然后就是幕府时代,接着就是明治维新了。 幕府历史中最重要的就是德川家康,提起德川家康,一定会与织田信长和丰臣秀吉二人关联在一起。 关于战国,现在倒是有很多游戏来自战国题材,中国青少年了解日本历史大概也是通过游戏吧,太让人伤心了。 武士道精神大概源于此吧。 日本二战后,在屈辱下得到了快速发展,大概也来自于德川家康的精神吧,日本的忍术大概也是如此吧。 这与中国的刘邦似乎比较相近,与中国提倡的主流精神有些差别,呵呵。所以,中国就是中国,日本永远是日本。中华文明是几千年积累的结果,现在的日美文化侵略是难以撼动中国人道德观的。 | | --------------------------------------------------------------------------------------- | | | |
| 仁仁幼儿园趣事1 -- 博客:苏的笔记 发表于2008-4-27 19:40:50 | 仁仁2岁了,也到了上幼儿园的年龄(仁爸妈好像都没上过幼儿园,呵呵),上周算是仁仁去幼儿园的第一周吧,总的说来表现还好,一天比一天有进步。 本说好上上周就去的,但是一直下雨,就拖着到上周天气变好才去,没办法,仁仁喜欢在室外玩耍,下雨天憋着不出门实在是件很难受的事。 第一天到幼儿园,抱着外公就是不愿意下来,直到陪他玩了一会才愿意,呵呵。经过一周的适应,现在仁仁进步多了,不过他内心还是不愿意去幼儿园的,因为家里更加自由。 小孩也挺有意思的,好像很懂大人的心思。平日如果要到幼儿园去,他就睡觉拖到8点才起来,一到周末不用去幼儿园他就6点起床,一点不浪费自己玩耍的时间。 | | --------------------------------------------------------------------------------------- | | | |
| 新版本的开发-纪实 -- 博客:苏的笔记 发表于2008-4-25 10:54:44 | 新版本的开发进行得如火如荼,整个版本的周期预计10个月,有11个左右的研发人员参与开发,到目前为止应该说已经可以看到产品的轮廓了。在整个开发过程中,团队不断磨合,不断摸索,对需求管理、开发流程等不断改进,虽然还存在不少问题,但大家对一些基本准则基本认同。在这个阶段,我们着重强调了code review、单元测试、反思改进。 对于code review,以前也进行过,但没有形成系统,时断时续,成为开发中的鸡肋。这次使用过程中,有不少体会。 1,必须有编码规范,版本管理规范,这些convention需要在大家认可的基础上不断完善。“不以规矩,无以成方圆”,有了规矩,就需要强力执行。 2,尽量用自动化工具,定期生成报告,减轻大家工作量,提高生产率。我们使用的是eclipse集成开发环境,里面有很多实用的插件,subversion、checkstyle、jupiter、ant、cruise control都是一些很好用的工具,当然,工具需要按照团队的实际去设置哪些该屏蔽掉,这个过程需要有互动、不断调整的过程。比如说checkstyle缺省的规则会报无数warning,严重打击大家的积极性。 3,code review中对提出的一些有代表性的问题,需要提出并加入到编码规范中。 4,对于code review的时间安排,个人觉得不宜太频繁,最好能固定下来review的周期。我们最早是每周一天,每次2人讲解代码、设计思路,然后大家各自在下周花半天去code review,并统一在下周的一天进行这些意见的总结并安排下一轮的讲解,这样花费的时间太………… | | --------------------------------------------------------------------------------------- | | | |
| 新年新气象 -- 博客:苏的笔记 发表于2008-2-14 22:18:05 | 新年新气象,2008年有很多愿望,但不能太贪,在此希望大家身体健康、开开心心,仁仁更乖些,更聪明,更健康,茁壮成长。 这个春节没回成湖南,特想儿子和父母,呵呵,等过几天,回趟家看望你们。 虽然哲人说人生不是规划出来的,但我每年总归都要计划一番,年终总结一下,周末在家好好想想,:-) | | --------------------------------------------------------------------------------------- | | | |
| 过年又见老大 -- 博客:苏的笔记 发表于2008-2-14 22:15:36 | 今年过年没有回湖南,除夕又见老大,风采依旧,最重要的是未来大嫂和我们一起共进晚餐,呵呵,祝福他们一路幸福。 去年下半年,老大的team509经营得非常不错,我也非常佩服他们的钻研精神和勇气,更佩服他们的个人能力,希望他们的梦想能早日成真,能够在安全界为中国人争一份光,这年头执着、有能力的人一定能成功。 在这里,再次推荐一下team509:http://www.team509.com | | --------------------------------------------------------------------------------------- | | | |
| yourblog半个月不能使用 -- 博客:苏的笔记 发表于2008-2-14 22:11:12 | 差不多半个月不能用,很郁闷,也许是挪窝的时候了。 真不知道yourblog.org是怎么想的,竟然能够让一个网站维护上那么久。 老实说,这个blog存在的不足还是很多的,比如无法将自己的blog导出成pdf或者word,或者提供一个导出自己所有blog的功能。这样备份也比较方便,据我所知,很多wiki软件可以做到这点。 | | --------------------------------------------------------------------------------------- | | | |
| 昨天11岁的狗狗阿宝走了 -- 博客:苏的笔记 发表于2008-1-31 20:01:21 | 这一阵,湖南一直大雪,昨天打电话给妈妈,得到一个更坏的消息,在我家生活了近11年的狗狗阿宝去了,更可恶的是被坏人毒死的,真是伤心至极,要知道,阿宝已经成为我家的一部分,它乖巧、聪明、漂亮、忠实、通人性,自从来到我家就非常讨人喜欢。老实说,在阿宝来我家之前,我家是很讨厌狗的,我觉得猫比狗可爱多了,但后来发现自己完全错了。11年前,它们漂亮的六兄弟姐妹出生后,它们的妈妈就去了,叔叔把它带到我家的第一天,想不到已经那么久了,那时弟弟也才十岁而已。 睹物思人,虽然它只是一个小动物,但没有了它,生活中总觉得不习惯,时间长了,感情愈深,尤其是我爸妈,他们两人在老家,一定很孤单,过了年一定要家里再养一条狗狗。 希望以后这样的事情不要再发生,强烈鄙视那些坏人。 | | --------------------------------------------------------------------------------------- | | | |
| 2008年的大雪 -- 博客:苏的笔记 发表于2008-1-30 12:50:25 | 又下雪了,这个冬天也许大家听到这句话都起茧了,这可是在50年难遇的大雪纷飞的冬天。湖南的下雪冰冻天已经持续20来天了,我父母说他们也是小时候才遇到这样冷的冬天,看来仁仁也赶上了这趟车,哈哈。 临近春节,大家都躁动起来,没票的着急,有票的也着急,可这又能怪谁了。只是希望每个人都平平安安度过这个春节。 | | --------------------------------------------------------------------------------------- | | | |
| quartz介绍 -- 博客:苏的笔记 发表于2008-1-30 12:45:47 | quartz源代码的14个例子非常好,建议分析,执行一下。把log4j.xml拷贝到src/java即可。 CronTrigger也可以指定一个Job类。 0/15表示每15x执行一次 Scheduler.start()执行之后,任务才会被真正调度。 同一Job(fullName相同的job)的JobDataMap是共享的。(example4) round的job,如果上一个job还没有执行结束,就需要跳过。需要从JobDataMap中获取一个状态标志isRunning,运行结束设为Idle并存入JobDataMap中。这样的一个问题是必须多过一轮才能执行到。(这样是否可以容忍了?)参考example5的实现。 haha,仔细看完example5之后,原来没那么复杂,quartz已经做得很好了,只要将job实现StatefulJob接口即可,而不是原来的Job接口,哈哈。 job fullname的规范:group1.job1 trigger fullname的规则:group1.trigger1 groupname=Task类型 jobname=j+task类名+job启动时间 triggername=t+task类名+job启动时间 如果一个job执行过程中发生异常,那么我们是否可以控制这种异常了?答:可以。quartz提供对job.execute执行过程中发生异常的继续处理流程,可以通过JobExecutionException来进行控制,比如: JobExecutionException e2 = new ………… | | --------------------------------------------------------------------------------------- | | | |
| 介绍confluene -- 博客:苏的笔记 发表于2008-1-13 18:31:06 | confluence与jira一样,同样出于Atlassian公司之手,jira有的优点它同样具备,呵呵。 它可以作为一款wiki知识库系统、blog系统等,有如下特点: 提供了丰富的排版格式库,比如贴图,贴代码,画表格…,太多了,呵呵,这一点是最吸引人的地方,目前很多主流的blog都没有他丰富。 其他特点就不说了。 通过它可以让团队的知识得到最大化的共享,你可以建立每个人的blog、每日工作日志、学习心得、产品需求、项目进度、产品用户手册、团队活动、意见征求、样板代码…可以做的太多了,通过这样做,团队的每一个细节都是透明的,项目进度和质量自然也就能得到保障,团队气氛也能更加活跃。 | | --------------------------------------------------------------------------------------- | | | |
| 介绍jira -- 博客:苏的笔记 发表于2008-1-13 18:30:25 | jira是Atlassian公司出品的一款bug、任务管理的商业软件,其他bug跟踪管理软件怎么样,我不太了解,但我感觉jira在易用性,可扩展性上都非常不错,一个新手基本上不需要培训就能上手。 Web应用的系统,这与bugzilla等相同,它是基于Java实现的,可以安装在各种不同的操作平台下。 简单易用,而且扩展性非常强,这一点是本人认为该软件的最亮点。 规范的workflow,使用了OSWorkFlow作为工作流的引擎。 可对bug,feature,task等进行跟踪管理,而且能够与subversion进行关联。 | | --------------------------------------------------------------------------------------- | | | |
| 任务与沟通 -- 博客:苏的笔记 发表于2008-1-13 18:29:25 | 项目管理最忌讳的是:给下级下达的任务没有明确的输出和期限。 很多领导寄托于下级能够充分理解领导的思路,岂知每个人的理解力和技术能力是有很大差异的,领导想到的未必下级能想到,下级有疑惑的地方也未必能及时主动和上级沟通,尤其是程序员大都比较内向,最后就是领导把任务分配下去后不闻不问,下级也闷头做事,最后到了领导突然想起来的时候一问才发现结果差之千里。 在一个团队里面,要听到反对意见其实很难。 对于领导来说,最可恶的是下级有问题不说,有困难也憋着,到了最后一刻才说,往往延误产品的交付期。 对于下级来说,最郁闷的是领导让做一件事情,可是什么也没说清楚,也没说要什么时候完成,最后就只能等着被训。 沟通能力应该是现代人最重要的能力之一,道理大家都明白,但要做起来却非常难。 | | --------------------------------------------------------------------------------------- | | | |
| 代码重构 -- 博客:苏的笔记 发表于2008-1-13 18:28:14 | 上周五中午修改产品的一个bug时,突然发现任务栏中有多个ping进程,占用了大量的CPU,导致有时候系统运行会较慢。 关于这个问题,实际上以前自己早就发现,也想过要做一些改进,最终都因为时间原因(大部分都是托词)或者其他原因,一直拖着没有进行改进。 其实,很多问题就是这样,程序员的忍耐能力往往比用户要强,不到万不得已是很难自觉去改进的,尽管去改一个问题也许并不需要花太多的时间,而改进后的效果往往是非常明显的,最终都因为各种借口而没有去付诸行动。 就拿这个问题,花3个小时,我将原来的代码重构了一遍,通过重构,代码更加清晰,性能也提高很多,最重要的是再也不需要起大量的外部进程了。联想到元旦前重构一个模块也是如此,该模块是一个实习生编写的,现在已经离开公司,代码里面滥用了线程同步和缓存,导致缓存查询很慢,同步快过多导致代码的可维护性可伸缩性都不好,最终重构下来,并没有使用太多技巧就搞定,运行效果很不错。 代码重构,并不一定要在里面使用很多的编程技巧,使用过多的设计模式,也许你只是改了个变量名,加了行注释,将一个大函数分拆成几个小函数,也许带来的效果就大不一样,重构最重要的是要让代码更清晰简洁,降低维护成本,在代码变得清晰的时候,实际上做性能优化就更容易,更能发现隐藏很深的bug。 写代码不可能一下子就写得完美,也不可能一下子就完全设计到位,为了让我们的代码更加有效、优雅,程序员需要坚持持续重构,从小处到大处,不要非积累到一定的量之后才进行,“只争朝夕”是我们的一个信念。 程序员不愿意重构的一个原因可能是因为担心重构后的代码导致不能满足旧的需求………… | | --------------------------------------------------------------------------------------- | | | |
| 求opensource的wiki软件 -- 博客:苏的笔记 发表于2008-1-13 18:27:07 | 最近想找一个wiki软件,这样即使不上网,在笔记本上也可以写blog或者wiki,将自己的一点思路及时记录下来,以免火花错误。 有几个需求最好能满足: 开放源代码,java实现,web展示。 能贴图片、代码、表格,有比较丰富的排版格式。 文章可以转化为pdf。 同时支持mysql或者文件存储。 能批量备份、导出。 有哪位达人知道符合要求的软件,可以在comments中给回复,本人不胜感激。 | | --------------------------------------------------------------------------------------- | | | |
| 亮宝结婚,贺一下 -- 博客:苏的笔记 发表于2008-1-9 19:59:43 | | 呵呵,明天亮宝结婚,猛贺一下,虽不能到场,但祝福一个都不能少。 | | --------------------------------------------------------------------------------------- | | | |
| java里面实现Tree -- 博客:苏的笔记 发表于2008-1-9 19:55:14 | Tree不是jdk中自带的标准数据结构,但是这个数据结构经常用到。 tree有很多种,比如典型有二叉树,红黑树等,jdk中TreeSet,TreeMap有部分实现,大家看一下代码便能搞清楚里面到底做了哪些工作。 最近的工作需要用到tree,不是简单的二叉树,而是每个节点下可能有n个子节点的树,这些子节点存放的元素还有一定的顺序,实现的tree最终还必须是一个Collection。 虽然思路不复杂,要写好还真不容易。 首先,tree是递归的,我们需要实现的类较多,包括Node,Collection,Iterator等。Node需要包含自身存储的对象,而且包含父亲,儿子,兄弟,本身是个递归结构。递归起来就要求思路必须清楚,调试要仔细,不然很容易出错。 其次,Iterator必须能实现前序,中序等各种遍历方式,一般来说,至少实现一种吧,呵呵。 再次,要实现addNode,removeNode,findNode等一系列操作接口,逻辑比List要复杂得多,尤其是每个节点还要排序,查找的时候需要使用二分法。 总算完成,也参考了KSS library的实现,这个库写得还可以,写出来的人java和数据结构基础不错。 通过实现tree,程序的可扩展性好了很多,原来实现使用了大量的if else语句,根据不同的条件来选择响应,现在每个节点都存储一个callback类,快速匹配到就call了,哈哈。 后记: 大家可以参考《Java数据结构和算法中文第二版》 最近2米国教授大肆批评当前计算机教育把java作为入门语言,而且很多人工作中也只用java,导致目前的程序员对………… | | --------------------------------------------------------------------------------------- | | | |
| ClassLoader学习使用 -- 博客:苏的笔记 发表于2008-1-9 19:42:24 | 1,ClassLoader的关键 我的目的就是实现一个java版本的plugin机制,能够动态从非classpath的文件目录加载class文件,从而提高程序的可扩展性。 比如:我们目前支持cisco,huawei等设备的信息获取,未来我们需要支持juniper等,那么在我们编写好juniper的信息获取程序文件后,只需要将juniper的class文件放在单独的目录,或者单独jar,而不用管这个jar、目录是否在之前设置的classpath中。 以前,在c程序中,都是通过dll/so的方式加载的,非常方便的,现在发现java的ClassLoader更加强大,呵呵。 载入一个class到内存,比如从网络,jar,zip,加密的文件等等 public Class<?> loadClass(String name) throws ClassNotFoundException 默认的处理: 如果已经加载过,则直接返回; 否则,如果有父classloader,则让父classloader进行加载,没有父就让Bootstrap进行加载;如果都加载失败,则调用自身这个ClassLoader的findClass方法。 所以覆写findClass是关键。 protected Class<?> findClass(String name) throws ClassNotFoundException 系统默认的ClassLoader的实现:直接抛异常,这就让你的子类必须实现这个类。呵呵 所以,如果要实现自己的ClassLoader,则findClass是关键。………… | | --------------------------------------------------------------------------------------- | | | |
|
|
|
|
|