之前让xiaoyi把需求给YY了出来,我也不知道该写什么,看也没看就让他交了。这次是动真格的了,设计文档肯定要懂一些的。星期六下午把EVC,platform builder给装了起来,仍然是一头雾水。
不过在突然发现了EVC的模拟器功能以后,一切都很OK了。大家的看法是:大不了交一个只有emulator版本的作业上去,这个就很简单了。争取在今天晚上和明天早上把EVC的版本做到可以下棋,判断。
Author: Marshall
考试,实习,比赛,项目(以上不分顺序)
刚接到IBM的电话,好奇怪
开发web应用难于上青天,web开发十八难
系统越做越大,问题越来越多,有些彻底解决了,有些凑合解决了,有些还没有办法,现在把碰到的主要问题列出来,给大家前车之覆:
1 跨浏览器布局的问题: 由于浏览器之间的微小差距,在布局复杂的页面时将会碰到麻烦
我现在的项目就要求firefox 和ie. 由于ie一些著名的bug,有时候不小心就踩到地雷。
2 日期控件
如何实现跨浏览器的日期控件,如何设定缺省值,如何实现大范围的日期直接定位?如何自适应多区域格式问题?
我也用过不少现成的东西,比如 http://www.mattkruse.com/javascript/calendarpopup/
但都有或多或少的问题
3、分辨率
如何支持常见分辨率,例如800*600 ,1024*768,1280*1024?表格和层如何自适应?
有些客户喜欢居左居中,有些内容超宽,有些超宽内容还在容器里,有些还要叠加,把这些混在一起麻烦就来了
4、防止SQL注入式攻击
参数使用占位符,这个算是基本解决了,只是有些担心数据库的效率。
5.防止脚本攻击。 有时候需要在页面允许部分html或javascript代码, 如显示多行文本。
html 转义我知道,但我要允许部分html代码起作用,比如我要让<br>起作用,其他不起作用,以实现多行文本
6、用户非授权页面访问
如何实现每个页面的安全验证,如何防止用户通过直接拷贝具体页面地址等方式,访问系统; 包括没有链接的某些页面和jsp 页面。 如何控制部分权限,最小控制单元是什么?
看上去很简单,但一深思问题就来了,
每个页面的安全验证:动态页面一般是 URL + Query String
URL数量有限,但Query String一般以id为参数,有许多,所以如以URL为基础验证,则有时候
粒度不够细,如加上Query String,则不能再以配置表为基础校验,因为Query String乘以
用户数量(或角色数量,将是一个天文数字),所以如何建立安全验证规则表又是一个头疼的
问题,每个系统的安全验证规则都不一样。
再深入,你会发现如果一个操作被分成几个步骤,此时,这几个步骤的页面必须是相同的权限
设置,否则用户操作到一半,告诉他没有权限,他会被气死的。
如果再细化粒度,页面某些元素能够被部分用户修改和看见,你的头开始疼了吗?
7、重复提交问题
功能操作完成后,鼠标右键点击所在页面,选择弹出菜单的刷新功能,容易出现重复提交问题。
功能操作完成后,通过浏览器的后退键进行重复操作,容易出现重复提交问题。
URL没有重定向,刷新页面出现重复提交问题。
某功能键反应时间延迟时,在短时间内重复点击该功能键,容易出现重复提交问题;
某些用户习惯双击按钮,某些用户错误地点了两次按钮,某些鼠标出现故障,导致单击变成双击,结果发生重复提交。
如果不加处理,这些请求都会被服务器处理,从而导致错误的结果。
struts的token确实能解决问题,但用户老是向我抱怨,为什么我不
能用浏览器的回退按钮重新提交,我在其他网站上从没有这个问题,你如何解释?
然后你还会发现部分操作是能够允许重复提交的。
8.如何锁定资源如记录:这是一个老大难问题了,为此还搞了不少东西出来。
用 关键词 隔离级别 脏 锁定 去搜搜,就会发现,要解决这个问题是有方法的,但代价
你愿意承担吗?开发代价,性能代价,可用性代价
9,如何防止浏览器记住数据,某些浏览器能够为每一个URL记住用户输入的数据,在某些情况下是危险的。比如我修改了某些数据,但由于某些原因我想刷新,此时数据已经被其他用户修改,但在浏览器里面你看到的是你修改的数据(你用刷新按钮也不能看到新数据)。如果你再次保存,你认为你没有修改数据,但数据已经被修改了。当页面是脚本动态生成的时候,这个问题更严重。
常发生在firefox等浏览器上。
10,如何防止或侦测客户修改浏览器设置,比如客户在打开页面之后关闭脚本功能。
有时候甚至不是用户禁止脚本,而是么某些软件和插件,病毒甚至企业文化影响到用户设置。
11,回退问题,对于工作流熟悉的人对这个问题很清楚,某个操作节点如何回到启动点,如何回到上一节点,如何避免硬编码? 比如一个页面被两个操作流所共享,此时安全验证是个问题,回退也许要仔细考虑。
12,校验问题,如何同时实现客户端和服务器端校验,客户端调用服务器端的校验功能。
我已经在使用struts自带的apache commons validator,可是我不得不修改许多地方才能
用起来。比如我有些隐藏字段需要校验。但commons validator居然使用focus语句,导致出错。
这是小的bug,但更麻烦的是部分服务器端的校验没有办法在客户端实现。比如validwhen
又如,某些校验需要查询数据库,所以我想要的校验应该是能够被ajax 调用,这样
校验在客户端和服务器端完全一样,但这样客户端校验还有必要吗,我们原来用客户端校验
是看中他的校验响应快,不给服务器加负担。所以我又迷茫了。
13,如何防止数据伪造,如何防止客户使用特殊工具和技术伪造数据提交到服务器。
浏览器发送的数据都是遵循公开的标准,嗅探器等黑客工具可以随便地修改你的数据,
还有一些神奇的浏览器插件可以任意修改数据。就算ssl也只能保障中间传输,客户端无法控制。你还认为你的隐藏字段是安全的吗?你还认为你的select只有那几个选项吗?
14, 如何追踪定位错误,如何处理异常?
在一个运行的系统里,你如何知道哪个数据产生了这个错误?多个用户的日志绞缠在一起
如何组织?
15,如何在两个操作之间传递大量数据,尤其是非存储数据。
比如分页数据(按什么列排序的第几页,过滤条件)一般是不存储到数据库的,但在某些时候必须传递到下一个页面,session 也不是最终解决方案。
16, 带安全控制的断点续传的上载 和下载
甚至服务器端恐怕也要装点什么,这个可是许多企业的忌讳
17,分布式环境的特殊处理,
18,如何提高开发效率?
Macromedia的历史
转自http://blog.csdn.net/JavaProgramers
Macromedia被并购进入Adobe的尘埃已经落定,新的产品,新的策略将在2006年产生。我相信一定有不少人对Macromedia公司的历史颇感兴趣,在这里,我为大家贴出一个完整无误的Macromedia历史和发展进程,相信能够帮助不少人了解Macromedia这家公司是如何发展并推动Web进程的,让我们记住曾经的Web发展之路上,曾经有过一个出色的公司叫作Macromedia。
- 1984年,美国芝加哥,MacroMind公司成立。公司致力于高质量的音频和视频和动画在艺术领域的软件开发。产品包括MacroMind3D,Action!,和VideoWorks(这就是以后的Director)。—那年我7岁,我发现我和数字7很有缘,:D
- 1987年,MacroMind搬迁,从芝加哥搬到旧金山410 Townsend Street,位于MultiMedia Gulch地区。同年,VideoWorks 2.0发布,此外,另外2家公司Paracomp和Authorware成立,Paracomp主要产品是Swivel3D,Authorware的产品则和他的名字相同。
- 1988年,VideoWorks新版本更名为Director 1.0发布。如此推算,VideoWorks应该是世界上最老牌的多媒体动画创作软件之一。
- 1991年,MacroMind收购Farallon软件公司,同时获得该公司的SoundEdit等一系列的工具软件集合。同年,MacroMind和Paracomp公司合并,推出的产品有MacroMind-Paracomp TitleMaker,MacroMind-Paracomp Magic,Paracomp DrawTools for MacDraw,Paracomp SwivelArt和MacroMind Three-D 1.2。
- 1992年,MacroMind,Paracomp和Authorware三家公司合并变成为Macromedia。同时,调整产品线,发布了ModelShopII,MediaMaker 1.5,MacroModel 1.0,Action 2。
- 1993年,Macromedia Nasdaq上市,股票代码MACR,发行222万普通流通股,每股12美金。
- 1995年,Macromedia推出名为“Wheel”车轮计划,主要是面向Director而言。同年收购Altsys公司,FreeHand和Fontographer成为公司产品线的成员。210万股票被售出,第一次股票拆分计划公布。这一年,产品有Shockwave Player,XRes1.0,SoundEdit 16 2,Fontographer,FreeHand 5,Authorware 3和DeckII。
- 1996年,公司年营业额达到1亿。Shockwave Player被下载1500万次。
- 1997年,Macromedia收购FutureWave公司,FutureSplash软件更名为Flash。Dreamweaver 1.0发布。同年还推出HomeSite 1.0和Flash 2.0。
- 1998年,Dreamweaver诞生仅1年就售出10万套。紧接着,Flash也售出10万套。同年,Nescape宣布浏览器绑定Flash Player。
- 1999年,Flash4的播放器全面开始普及,制作Flash不再需要透过AfterShock发布。同年,Flash Player下载次数达到1亿。Macromedia也被财富杂志评选入全球软件50强。
- 2000年,Flash5发布,初步包含面向对象的语法开发方式。Flash的打印功能实现。
- 2001年,Macromedia收购Allaire,ColdFusion和JRun纳入旗下。同年,3D Shockwave Player发布。
- 2002年,发布MX产品线,Macromedia诞生10年。同时,Flash开始向Mobile进军,而Generator软件功能并入ColdFusion。
- 2003年,收购eHelp公司,RobeHelp和RoboDemo(后续的Captivate)并入产品线。收购Presedia公司,Breeze Solution诞生。发布Studio MX 2004产品。
- 2004年,Flex 1.0发布,Flash Lite 1.0和1.1产生。
- 2005年,Flash Cast被NTT Docomo采用成为3G Portal Solution。Nokia签订下Flash Lite大批量授权许可。同年,发布Studio8。Adobe收购Macromedia公司完成。
上述就是Macromedia公司的发展历程。
<![CDATA[转自http://blog.csdn.net/JavaProgramers
Macromedia被并购进入Adobe的尘埃已经落定,新的产品,新的策略将在2006年产生。我相信一定有不少人对Macromedia公司的历史颇感兴趣,在这里,我为大家贴出一个完整无误的Macromedia历史和发展进程,相信能够帮助不少人了解Macromedia这家公司是如何发展并推动Web进程的,让我们记住曾经的Web发展之路上,曾经有过一个出色的公司叫作Macromedia。
- 1984年,美国芝加哥,MacroMind公司成立。公司致力于高质量的音频和视频和动画在艺术领域的软件开发。产品包括MacroMind3D,Action!,和VideoWorks(这就是以后的Director)。 –那年我7岁,我发现我和数字7很有缘,:D
- 1987年,MacroMind搬迁,从芝加哥搬到旧金山410 Townsend Street,位于MultiMedia Gulch地区。同年,VideoWorks 2.0发布,此外,另外2家公司Paracomp和Authorware成立,Paracomp主要产品是Swivel3D,Authorware的产品则和他的名字相同。
- 1988年,VideoWorks新版本更名为Director 1.0发布。如此推算,VideoWorks应该是世界上最老牌的多媒体动画创作软件之一。
- 1991年,MacroMind收购Farallon软件公司,同时获得该公司的SoundEdit等一系列的工具软件集合。同年,MacroMind和Paracomp公司合并,推出的产品有MacroMind-Paracomp TitleMaker,MacroMind-Paracomp Magic,Paracomp DrawTools for MacDraw,Paracomp SwivelArt和MacroMind Three-D 1.2。
- 1992年,MacroMind,Paracomp和Authorware三家公司合并变成为Macromedia。同时,调整产品线,发布了ModelShopII,MediaMaker 1.5,MacroModel 1.0,Action 2。
- 1993年,Macromedia Nasdaq上市,股票代码MACR,发行222万普通流通股,每股12美金。
- 1995年,Macromedia推出名为“Wheel”车轮计划,主要是面向Director而言。同年收购Altsys公司,FreeHand和Fontographer成为公司产品线的成员。210万股票被售出,第一次股票拆分计划公布。这一年,产品有Shockwave Player,XRes1.0,SoundEdit 16 2,Fontographer,FreeHand 5,Authorware 3和DeckII。
- 1996年,公司年营业额达到1亿。Shockwave Player被下载1500万次。
- 1997年,Macromedia收购FutureWave公司,FutureSplash软件更名为Flash。Dreamweaver 1.0发布。同年还推出HomeSite 1.0和Flash 2.0。
- 1998年,Dreamweaver诞生仅1年就售出10万套。紧接着,Flash也售出10万套。同年,Nescape宣布浏览器绑定Flash Player。
- 1999年,Flash4的播放器全面开始普及,制作Flash不再需要透过AfterShock发布。同年,Flash Player下载次数达到1亿。Macromedia也被财富杂志评选入全球软件50强。
- 2000年,Flash5发布,初步包含面向对象的语法开发方式。Flash的打印功能实现。
- 2001年,Macromedia收购Allaire,ColdFusion和JRun纳入旗下。同年,3D Shockwave Player发布。
- 2002年,发布MX产品线,Macromedia诞生10年。同时,Flash开始向Mobile进军,而Generator软件功能并入ColdFusion。
- 2003年,收购eHelp公司,RobeHelp和RoboDemo(后续的Captivate)并入产品线。收购Presedia公司,Breeze Solution诞生。发布Studio MX 2004产品。
- 2004年,Flex 1.0发布,Flash Lite 1.0和1.1产生。
- 2005年,Flash Cast被NTT Docomo采用成为3G Portal Solution。Nokia签订下Flash Lite大批量授权许可。同年,发布Studio8。Adobe收购Macromedia公司完成。
上述就是Macromedia公司的发展历程。
]]>
CVSNT的非系统用户的添加
CVSNT一般只要建一个CVSPUB用户,再用cvs passwd命令添加用户,cvs chacl改用户权限
,不用对于每一个用户都建一个系统帐户的。可以直接在wincvs的console里操作比较方便
命令:
cvs -d C:\CVS_ROOT passwd -r CVSPUB -a Marshall
注:我的CVS_ROOT在C:\CVS_ROOT,映射到的系统用户为CVSPUB,添加的用户名为Marshall
读书计划
我的书架上从来就是如山高般的书。一般是宿舍有一堆,学院有一堆,工作室有一堆。现在宿舍有了三堆了。自己买的、同学借的、图书馆的、课本发的都有,我看过的书很多,但看完的书就。。。。呵呵
最近书堆又达到了一个新的高度,鉴于以往的经验,发现要一个良好的读书计划才是消化这些书的正道,以前都是随手抓来看的。这个计划比较大,一年也看不完,先列出来,一年以后再来看看自己有没有完成。不过看完是一回事,理解运用又是另一回事咯。
软件工程类:人月神话、人件、敏捷软件开发、程序开发心理学、死亡之旅
J2EE: J2EE without EJB、J2EE核心模式、精通Spring、使用Ant进行开发
WEB:Javascript权威指南、Ajax基础、Ajax实战
Java:深入Java虚拟机、代码大全
Linux:LINUX源码情景分析、UNIX高级环境编程
网络:TCP/IP详解(Vol 1)、UNIX网络编程
Web Service:Java Web Service开发指南、Java与SOAP
其他:过河卒、开源软件文集、鹦鹉的定理
算起来一共23本,还有几本一时想不起来名字了,所以实在太多了。野心是大,但是实现这个计划八成不可能了,呵呵。
最后扯几句最近看的书吧。“Java夜未眠”这种程序员文化的书看起来很休闲,书中描写的一些台湾的风情在我看来很是熟悉和有同感,先感慨一下从小看着台湾电视长大。要不是现在两岸不通,我一定首选台湾读研博。
“开源软件论文集”是本好书,对了解开源软件的哲学、想法很有帮助,其中对Eric Raymond更是佩服得五体投地,现在同时也在看Raymond的五部曲里的“大教堂与集市”。对里面几句话比较有印象:科学家总是比工业家更容易留名,从小到大我们知道了多少科学家,而工业家除了洛克菲勒和卡耐基就没有了。软件的源代码更像是一种研究成果,像科研一样用来分享,用来推动人类发展的,而不应该被封闭,成为个人或公司的私有品。结果现在我一边用着windows+onenote写BLOG,一会还要发布到space上,一边却极度BS M$,同时还要去IBM实习,呵呵。
“J2EE without EJB”也是本不错的书,Rod Johnson的Expert One-on-One也算比较经典了。我还没接触EJB就被告知EJB是个烂东西。里面讲Spring的部分倒也不错。没想到Spring居然是Expert One-on-One第一本书里的一些思想的产物,还包括了那本书的一些示例代码。
“人月神话”看了一半,感觉这本书写得够超前,一些现代的东西都被Brooks预计到了,不愧Turing Awards。
“敏捷软件开发”还没怎么看,不过附录里那篇“代码就是文档”值得推荐,网上也有这个的原文的。
IBM面试
很早就想写这篇了,可惜那时一直在等消息,也就没什么心情写。上周五接到了IBM的通知,让我7月5号过去上班,心里的一块石头终于落了地。
第一次知道IBM的实习是在大二的时候,张冰晶告诉我洪光已经在IBM实习了。我觉得很奇怪,他才大三,还有一些课要上才对,怎么已经到IBM实习了?后来又听说他是混成研究生进去考试,后来都通过了笔试和面试(到后来面试的时候人家也知道他是小本,呵呵)。瞬间觉得学长巨牛无比,自己以后可以过大公司招聘的前几关就很不错咯。
大二的下学期我选了嵌入式方向,一方面受了02级学长获奖的鼓舞,一方面觉得现在嵌入式是最来钱的。但到了大三开学两个多月的学习之后,我发现这不是适合我的方向。首先我,或者说我们软院的学生,严重缺乏硬件基础知识,比如模拟电路、数字电路;计算机体系结构上也觉得不够深;第三,汇编语言等底层能力也不足,这方面的唯一经验来自大二下学期的计算机组成原理实验课,而这门课独立完成一份较为完整大作业的人也不过5个以内吧(选这门课的也有50多人)。老师的教学水平也不敢恭维,虽然他的态度还是值得钦佩的,助教的水平就更不用说了。估计大家混下去的支撑还是学长的比赛成绩吧。到了大三第二学期,刘峰说上一届搞嵌入式的只有一个学生的时候,我彻底放弃了这个方向,投奔J2EE阵营,也开始盘算起未来的路。
事实上我大三从11月开始,做项目的方向在有意识地向IBM靠拢。对B/S的认识从原来的做做网站,转变成发展方向。在做动力中心的网站过程中,我不止一次的抱怨以后再也不做网站了,我要回归原来的桌面环境,使用熟悉的C++,同时鄙视JAVA的执行速度。现在看来,半年多前的看法是多么的短视。对整个软件开发的方向,我也有一个大体的认识了,也可以做出基本的预测。在我看来,以后软件更会朝着B/S方向发展, 客户端技术这些年没有太多的突破(或者是我比较不关心),而服务器技术却在日新月异地更新,从静态页面到CGI再到ASP.NET/J2EE,加上刚出现的ajax技术,不断发展的Rich Client,服务端将会是以后的主流,也是我主攻发展方向。
这方面的公司,我想首推IBM了。中间件、应用服务器都是我比较感兴趣的方面,而IBM的支持开源战略(虽然不少人一直在抨击,但总比微软好,但SOA比赛中不能用LGPL的库,却让我大惑不解),也是我比较欣赏的。于是乎,在寒假的VOD项目真正叩响J2EE大门的时候,我的短期目标,已经朝向IBM的实习。
IBMCSDL的实习机会还是不少的,大概每两周就会有一份walker或其他人贴的信息。某次贴了以后,李明华还回贴说自己都不好意思骚扰胡茵MM了。
今年2月底,IBM上海的CSDL启动了五校联招计划。刚刚进入J2EE世界的我,觉得机会来了(虽然底气可能有点不足,毕竟才接触几个月)。LP的舍友的BF曾经在那里实习过,于是我通过LP要了他的QQ了解一些情况。虽然与当初想的有点不同,但还是开始了人生第一份简历的制作。
制作简历和笔试的情况在前几篇BLOG里已经写过了(见近期杂记之IBM)。面试的通知是在4月11号收到的,整整拖了一个月。。。。那次是在公交车上,看到021打头的电话,还没到目的地就赶快下车听电话,跑到大楼后面把时间地点又问了胡MM一遍。马上通知了LP,LP很开心的说,下午还陪我去买火车票。家里的电话到中午才有人接,也告诉了爸爸妈妈。又联系了也接到了通知的同学,可惜不是一个时间段的。下午又是在LP的帮助下,通过xiaodudu联系上了洪光。晚上又联系了michael,到上海就先去他那里玩,呵呵。
我13号先去上海,火车上旁边坐了一个德国中年妇女,英文一般,也没有了练习的兴致。中午吃过了LP准备的午饭,又小睡了一下,差不多到上海了。出站不用上地面就坐上了地铁到了黄陂南路,出了站到处找瑞安广场,查过地铁站离瑞安广场只有几十米。转了一圈,发现地铁出口边上的大厦叫shui-on,再看中文–就是它了!果然是高级写字楼,出入的都是高级白领啊,穿得旯邋遢他都不好意思进门了。到了8楼,和学长谈了20分钟,还碰到刚面试完的同学。不过比较郁闷的是我面试的什么部门到现在还不知道。。。
当天晚上和第二天中午得到了michael的盛情款待。大概14:00到的瑞安广场。又见了学长一次,直接杀过去找胡MM,胡MM被吓了一跳估计,说到了时候就通知我。学长给我泡了杯红茶去干活了,我一个人坐在茶水间等。不过那种感觉不是很好,就自己上10楼去前台等了。
比较痛苦的是那杯茶我不知道怎么处置。在茶水间看到了关于茶水废弃的要求,但不敢乱动,于是上楼。上楼还是没发现哪里可以倒水的,又怕乱放正好被面试官撞见不好,只好一边吹一边把整杯茶给喝了。。。。然后再才杯子扔在突然发现的篓子里。
面试的时候谈的主要是做过的项目。我对VOD说了一通,也剖析了几个Hibernate的问题,一个是数据库连接池,还有一个是压力测试。然后他们问了我设计模式的应用的问题,我就拉了动力中心主页日志记录的command模式。接下来的技术的问题:面向对象的原则是什么?有什么好处?我觉得这个问题很大,就主要扯扯重用,把以前写MFC的经验拿出来说说。具体的技术问题也问了一个:抽象类和接口的构造函数有什么不同?接口显然是没有构造函数的,抽象类的我觉得和普通类的没什么不同,呵呵。最后是英文问题,问我what’s the difference between the C++ language and the Java language?晕~~好大的区别。。。我只讲了一个多重继承的问题,还想讲底层高层的方面的时候却卡住了。。。这时候外面有人等着要开会,面试官(这时候只剩下一个了,一开始是两个)也就打断了我,说只是想测测我的英文水平,不是要我深入分析一个问题。然后问了我什么时候available,告诉我会尽快通知我。
之后的两个星期又是一点消息也没有。直到上周五胡MM的通知,觉得自己的努力还是没有白费。我的第一份简历、第一次笔试、第一次面试和第一次实习都是IBM的,呵呵,和这家公司还是挺有缘的。
感谢我申请intern的过程中,同学、朋友们给我的帮助,其中还是首推LP了,从联系学长、帮我看简历、准备上海的行情,到之间等待的鼓励,都给了我很大的帮助。在这里要特别谢谢LP!另外还有michael、几个学长、YIKA、老板、同学,还有。。。。还有。。。。那个德国人下车时也祝我“Good luck with your job-hunting”可见RP之好。嗯,回去还得再攒攒RP的。