2 Feb 2010
下面所做的可能有点鸡蛋里跳骨头的味道,但却也十分有趣,希望各位能够在看了之后能够有所收获.
总所周知,浏览器兼容问题一直困扰着开发者们,勤劳的开发者们也想到了各式各样的小技巧来区分各个派系的浏览器.
!+"\v1"
这是在园子里的司徒正美童鞋那看到的,第一眼就被震惊了,原来判断可以这样的精悍.
以下是个人的理解,出处文尾连接1.
这是一个JavaScript类型转换的技巧,按照优先级,这里是从右往左(+ 取正> ! 逻辑求负).也就是将字符串"\v1"转换为数字后再求反.数字求反很好理解,只要不是0的都是true,然后 + 取正对字符串进行了转换,转换为数字.然后IE在这里就出现了歧义,错误的理解了转义符"\v",垂直制表符,关于制表符在文尾连接2有 更多的解释.在其他浏览器中能够正确解释这个制表符,IE则将这个制表符解释成了字母"v",这个当然无法转换成数字,自然转换NaN,按照逻辑操作符的 转换规则,转换为了false,再一个求反,则变成了true,趾高气昂的说,"我是IE,没错,TRUE!".
!+[1,]
同样是在司徒童鞋那看到的,天天逛园子的收货果然不少啊,关于这个判断语句的解释请移步司徒正美--全 世界最短的IE判定 .
不过在接下来的测试中,你会发现,这条最短的语句不一定是最快的.
!"1"[0]
这个是我翻看Ext源代码时发现的,在Ext.toArray的注释里作者告诉了IE无法使用数组下标访问字符串,这不就又可以分辨了么.
就是这个方法,IE中无法以数组下标的方式访问字符串,在Ext的注释中提示可以使用"abc".match(/./g)的方式,我就纳闷了怎么直接使用 原生的split方法,"abc".split(""),很明显的更直观,而且免去了一个正则的构造.
这个方法在FF下的效率已经超过了IE.
至于其他的方法,都是老生长谈的访问某个特殊属性,这里就不多解释了.不过在IE以及FF下访问不存在的属性相差可真大啊.
30 Jan 2010
作者:Joel Spolsky
[编者按]由于Joel Spolsky的双重身份(昔日耶鲁大学计算机系学长,今日Fog Creek软件公司的CEO),所以听听他的建议,对于当今无数困扰于就业压力的中国高校计算机专业学子来说,是大有裨益的。你们会发现,大多数建议,都在强调“软实力”的价值。本文转载自《软件随想录》(作者:Joel Spolsky ,译者: 阮一峰,2009年12月出版),感谢北京图灵文化发展有限公司的支持。
13 Jan 2010
在项目中需要一个在线帮助功能,于是临时设计了一个固定浮动的帮助按钮,在触发后能够弹出一个聊天窗口,确保能在任何页面中都能找到帮助.
由于需要使用弹出一个聊天窗口,而且站点自身使用了jQuery,于是考虑使用jQuery UI,介于加上了它后的页面变大许多,于是做了一些处理,以便形成惰性加载的效果(只在需要的时候加载页面样式表以及脚本).
在下面的代码中已经提供了详细的注释,使用时只需要引入这个脚本,和指定的CSS样式表即可.
31 Dec 2009
零九年结束了,迎来崭新的一零年.虎年.
正如上次年末总结一样,今天同样如此,在上次的展望中,仅仅只有Asp.net/C# 在不贬值的情况下偶有练习,其他的却频露疲样.数数自己零九年做了哪些鸡毛蒜皮.
总结零九年就是: 下学期里找到方向了.
人这个东西,不鼓捣点东西就不罢休的,可是不能总是盲目的乱做对不,所以要来点目标:
还活着,还能乱蹦乱跳,还能大步走~真好.
31 Dec 2009
26 Dec 2009
微软的Visual Studio 2010 已经发布了 beta2 版了,下载来看试了下味道~



新建项目里面相比vs2008多了许多模版,其中比较吸引我的就是MVC,还有Cloud Service .
由于最近在鼓捣Java , Struts2, Hibernate, 所以自然会拿出来和.Net 这边的比较比较.
Asp.net Mvc 中 Routing 主要起将URL请求转换到指定Control中去,并且通过URL捕获传参,Struts2中是通过 Filter 来启用某个Action.
Asp.net Mvc 中 Control 如其名字一样,控制器,负责将实体模型填充到ViewData或者TempData中去,然后在每个public方法中返回指定视图,并且能够指定名称或者传参.Struts2中 Action 起控制器的作用,Struts2 中获取参数很直接的就在Action的属性里面,传参的话直接添加到request里去就可以了,也很是方便,返回的视图是通过预先约定的name定义好的.
当然也有一些不同,Struts的每个Action对应的就是一个提交过来的表单,这和Asp.net Mvc里的Control 完全不同,Control 是写在public下的方法中的,两个框架的颗粒度不同,基本上Asp.net Mvc只需要几个Control ,然后根据不同的URL请求来判断该使用那种方法,而可能在一个页面中就有很多个表单提交,这就需要不同的Action 来完成相应的业务.
还有微软的云 Azure, 虽然还没能写个demo,不过看帮助也能得知个大概,不过貌似相比Google Engine App, Azure需要的配置文件也真的算是多,不知道是不是在Visual Studio舒适的环境待惯了,还是怎么的,都不喜欢那么动辄几个文件的配置了.
多写代码少说话~
6 Dec 2009
由于项目需要,所以转到了Java 平台,这是个习作,用于Java 上web 开发的练习.打算要实现一个简单的购物车模型的,只是时间不够马上又有别的任务了,于是就此作罢,拿出来,做个笔记.
环境是 : Win 7, Mysql 5.1 , MyEclipse 8 GA.

数据库设计

这是整个项目的文件层次
首先构建一些实体类,他们对应数据库中的每一张表.
然后为每个实体类写他们的数据库访问类也就是以DAO结尾的类,他们都继承于AbstractDAO抽象类,他是一个泛型类,提供了简单的增删改查方法,构造参数为数据库连接地址,用户名和密码,三个字符串参数.其他DAO都继承这个类然后实现这些方法即可.
接下来是BLL层,因为发现要跳转到Struts2框架上了,所以就放弃继续写下去的念头了,虽然三层还是可以这样摆,但是一些业务逻辑应该可以放到别的地方.现在只是简单的实现了一些登录,注册逻辑,其他的都没实现.
最后是前台的搭建,由于使用的是ExtJS,找了很多资料,原来也鼓捣过一次HelloWorld 的练习,不过和这次显然不能同日而语.由于只实现了登录和注册,两个Window嵌套两个Form,最后ajax提交,没有什么特别的.中间交互使用的是 JSON,在Java端还犯难了,最后找了Json-lib 这一组建来帮忙,简陋的登录系统实现了.
总体上和 .net 比较就是开发不那么舒服了,毕竟离开了维修死丢丢那么舒服的开发环境,尤其是代码自动完成,Eclipse似乎很迟钝.
这一趟下来学到了不少东西,再接再厉.
29 Nov 2009
大赛9月28日开幕,一共举行了两天,今日(29日闭幕),在湖南民政学院举行.
我们是27日去的,上午十一点到达,发现我们算是比较积极的,由于住宿问题,主办单位未能准备妥当,我们只能找周边酒店下榻,不过环境也还不错,起码比起 学校寝室方便,下午参观了赛场,晚上进行了抽签仪式,由于我们(应用程序设计,其实也就是做算法题)组一共就四间考场,而每个学院只能有三名选手,所以就 自觉的抽取不同考场的机号.
28日上午八点开始开幕式,人挺多的,据说到了八百多人,有很多组,应用程序的也就一百来号人吧.开幕式过后就进考场进行比赛了.
应用程序设计,四小时,五道基本算法题,单人完成.
我选择的是 Java, 环境是 Jdk 1.42 , Eclipse 3.1.不像上次ACM 的 Jdk 1.6,这次是正儿八经的 Jdk 1.42,所以心里算是比较稳定的.
一开始是把Eclipse 的首选项进行修改, 自动提示的触发所有字符都进行了触发,而不是原来的只有 "." 才有,并且设置响应速度为0, 而不是原来的200ms.
第一题是道水题,N个观众给M个选手投票的问题,第一行分别给出了这两个数据,第二行为观众所投的选手号(从1开始),思路很清晰,2分钟不到就提交了,报错,检查一遍,发现有个如果最大票数大于一人,要按编号从小到大输出,更正后提交,还是报错,就搁浅到这了.
第二题是求从1900年1月1日到 19~N -1 年 12月31日的每个月的13号,所占的星期几各是多少次,两个数组,分别装入闰年每个月份的天数以及平年的每个月份的天数,然后判断闰年还是平年,for 循环累加天数,在每个月头计算总天数的星期几加上5取模7,+5 是因为13%7=6,而我们存放13号占星期几的数组的下标是从0开始的,所以减去一.循环过后输出,样列测试是过了,但一直提交不成功,而且一直到比赛 结束.
第三题,狡兔三窟,我就不说故事的描述了,给定N,也就是产生从1开始一直到N的序列,从N出发,K=0,每次跳过K++个单位进 行访问,求最后哪几个单位是没有被访问过的,这道题起初也困扰着我,一直不知道该循环跳多少次才是正确的,最后龙龙跑过来激动的问我AC了多少道题时直接 告诉了我要爆破,循环10万,就YES了.我顿悟,修改后马上提交,成功.囧rz.
第四题,生分证从15位升至18位的算法,按照说明照写下来即可,没难度,当然你连最基本的序列和都不理解那就该补补课了.一次提交YES.我做了两个多小时,前面的三道题一直困扰着我,在这道题上终于返回了YES,真是让我内流满面.
第五题,哈夫曼编码,基本的基本,书上的例题,构造一颗哈夫曼树即可.没做的童鞋可以面壁了.构造树后对每个叶子节点访问并求出其高度,然后除法运算即可.
本次应用程序设计大赛的难度还是很简单的,起码没有前面ACM的变态,大多数童鞋都能完成三道以上,米落童鞋基础知识不牢固,以及极其低的人品导致最后只AC了三道题,算是正常发挥了,以后还得多多加强,争取AC所有题目.
最后感谢各位主任以及老师一路陪同,各位指导老师的诲人不倦,各位同僚们的并肩作战,让我们在这次比赛中收获了应收获的,只是没能夺魁始终有些遗憾,再接再厉吧!
14 Nov 2009
我就是一闲不住的主儿,还真的佩服自己挺能折腾的.
学期伊始迎新结束,带完班后马上就投入了算法的较量之中,虽然都是纯时间性质的,对于理论还是停留在一个很浅的层次,但起码意识到了各门语言的强大,也一口气投入了Java的怀抱.然后参加了某个项目,至今都不确定这个项目是否会流产,虽然童鞋们的学习进度很快,比得上改革开放时的深圳了,但是光有热情是明显不够的,后面的效率,以及核心功能的设计,最后投入市场,这些我也不保准,要知道万一前台的SQL Inject 导致安全出错,强插了后台,那我们就玩完了,而且运行之后的维护,还有代码文档的维护,全新的体验是不错,但是你突然就让我们几个搞作坊生产的来流水线上一条龙服务就有点霸蛮了.
发扬湖南人传统吧,霸得蛮,吃得苦.
我自己是感觉挺刺激的,上半年鼓捣了Python,下半年又鼓捣了Java (达人别笑,这是真的鼓捣,就停留在Hello World 的层次),两个都是Google Engine App 上面支持的,于是乎自然而然的想搭些东西在那上面,虽然完全无法商用的Google Engine App 的稳定性实在无法控制,但好歹是个 Free 的,不用白不用呢.下面汇报一些近期所发现的资源,希望能对您起哪怕一点点的作用.^_^