| sihua's profilesihuaPhotosBlogLists | Help |
|
September 23 诚恳的面对失败反省这一周,对自己的表现实在不满意。
最不满意的是自己内心无法直面挫败的
感觉,缺省的认为自己是可以做到并做好的,
但事实呢,眼高手低也好,想法简单也罢,
事情做坏了还不认真、积极地补救,实在不够男人。
September 09 DB2数据库一个场景:一个表有几十万条目,删除其中的一部分(delete from xtable where time < '2005-09-09 12:00:00'),可能会失败,因为日志文件满,日志文件满之后整个数据库实例会停掉,删除日志更是灾难性操作……
原因:因为表项目很多,删除操作的事务就属于“大”事务,数据库初始设置的日志文件大小就不够用了
解决:扩大日志大小(logfilesz)限制(10倍),增加辅助日志(secondlog)的个数(10倍)
教训:数据库用起来真是学问多多 :(
June 30 Microsoft's Hejlsberg touts .Net, C-Omega technologies摘要如下:
//////////////////////
1。C#语言的设计目的、与C++的区别。 答曰:C#是为.NET平台裁剪的C语言家族的成员;它的生产效率比C++高,多了垃圾回收、类型安全等机制。
2。Visual Studio 2005的新特点 IDE功能
语言层次
3。C-Omega 项目的重要性 “C-Omega is a research project that explores language extensions in a couple domains. One is database integration, the other is XML. ” 这个项目可以认为是:“ let's take C#, let's try and take SQL, let's try and take XML or XQuery and let's all sort of put them into one big bowl and stir and see what comes out of it……” 以实验综合查询。 "So one of the things that the C# team, specifically, we've been thinking about for the last almost two years now is really trying to make inroads on the deep impedance mismatch that we have, generally speaking, between programming languages and databases. " 下面一段话不太理解,总之是想把查询语言与C#结合: “ SQL is based on relational algebra, so everything in SQL is a table with rows and columns. .Net, then C#, VB, it's all objects and hierarchies and inheritance ... and virtual methods. It's completely a different concept. The data types are different. In SQL, everything is nullable, things can be null. In our mainstream programming languages, things cannot be null. And now you've got to deal with the nulls. In SQL you write queries, and so I have a higher-level declarative way of expressing the set of data that you're interested in. [With] general purpose programming languages, you've got to write four loops and if statements and so forth. Often programmers sort of end up just being plumbers that tie together the domains, and the big problems they worry about are how to make the null go away and how to write the queries and strings and get the traffic over to the server and get the results back and so forth. So what we're looking at is really trying to much more deeply integrate the capabilities of query languages and data into the C# programming language. And I don't specifically mean SQL, and I emphatically don't mean just take SQL and slap it into C# and have SQL in there. But rather try to understand what is it expressively that you can do in SQL and add those same capabilities to C#. ” June 22 行进中开火“ 我很长一段时间都在想着这个教导。我想通了不论是战斗机空中格斗还是大规模舰队攻击,大部份军事战略战术都是以行进中开火作为基础的。我又花了十五年时间才想通了行进中开火也是一个人在现实生活中成功的基本原则。你每天都得往前进点儿,不用想你写的程序怎么差劲,怎么卖不出去,只要你不停地写,不停地改,滴水也能穿石。同时,要注意你的竞争对手朝你开火。他们是不是想让你全心全意应付他们地扫射,好让你往前走不了呢?” 有些东西经常看看、想想有好处,比如crazybit的主页上转的文章,呵呵:
/////////////////////////////////////
行进中开火 作者:Joel Spolsky
时不时,总有一阵儿,我什么事也干不了。 我也去办公厅,东瞄瞄,西看看,每隔十秒钟查一次电子邮件,网上逛一圈。也许干点象付运通卡账单之类不需要大脑的事。不过要回去哗啦哗啦写程序,可没门儿。 这种不出活的状态,一般通常会持续一两天。在我的软件开发生涯中也有过几个星期干不了活的时候。就像他们说的,我不在状态,我进入不了情况,我找不到组织。 人人都有情绪波动,有的人温和一些,有的响动大点儿,也有的可以整个乱套。但不管怎么着,那段不出活期似乎总是跟忧郁有点儿关系。 我不由得联想到那些专家说,人们基本上控制不了自己吃什么。任何节食计划都长不了。大家总是悠回各自的正常体重。也许作为一个软件工程师,我也不能控制什么时候最能出活。我唯一希望的就是发呆那段能被哗哗干活那段扯平,最终还能混碗饭吃。 自从我干上软件开发这一行起,我平均每天只有两三个的高效时间。这真让我头大。我在微软实习的时候,另外一个实习生告诉我,他每天12点上班,5点下班。5个钟头还包括午餐时间,但他的同事还对他特别满意。因为他干的活比一般人都多。其实我也一样。我每天只有两三个小时的高效时间。看着别人那么卖力的干,还有点不好意思。不过呢,我总是组里出活最多的。由此可见,“人件理论”和极限编程都坚持不加班,每周只干40小时,还是有点道理的。他们都清楚这么做不会降低一个小组的生产能力。 每天只能干两小时还没让我太担心,真让我担心的是完全干不了活的那些天。 我老想这是怎么回事儿。我努力回忆我出活最多的时候。估计是微软把我搬到一间漂亮的新办公室的时候。舒适豪华的办公室,窗外风景如画,窗对面樱桃花开满了石头堆砌的庭院。所有的一切都那么恰到好处。我马不停蹄地干了好几个月,一口气把Excel Basic的详细设计搞定。用象纪念碑那么高的一叠纸,详细描述了一个超大型目标模型和编程环境,工作之细致,令人难以置信。我自始至终就没停过手。去波士顿参加MacWorld I的时候,我都带着一台手提电脑,坐在哈佛商学院的大阳台上把Windows类别的所有文件都写完了。 按步就班并不难。通常我一天是这样度过的:1,去上班。2,查电子邮件和上网等等。 3,考虑是否应该吃完中饭在开始干活。4,吃完中饭回来。5,查电子邮件逛网。6,终于决定应该开始工作了。7,查电子邮件逛网,东瞄瞄,西看看。8,再次决定应该开始干活了。9,打开该死的编辑器。10,一直写些程序写到晚上7:30,写到忘记时间。 在以上第8步和第9步之间似乎有点缺陷,因为我不是每次都能顺利地执行下去。 对我来说,启动是唯一的难题。静止物体在不受外力作用的情况下会保持静止。大脑里有些物质的质量大得不可思议,让它加速太难了。但是只要速度上去了,在全速行使的情况下,倒不用使什么劲就能继续走下去。就象骑着自行车去作一次自费横穿美国的旅行,一开始,你根本想象不出要花那么多时间让车轮动起来,可是一旦动起来了,让它们继续转就不是一件很难的事了。
也许高效率的关键就:启动起来。配对编程法之所以成功,说不定就靠两个人在一起,互相强迫对方启动起来。 我在以色列当伞兵时,一次,有个将军来给我们讲实战战术。他告诉我们,步兵战术其实只有一种:行进中开火。你一边开火一边朝着敌人冲过去,火力让敌人抬不起头来,不能朝你开火 (当一个军人喊:“掩护我”的时候,他的意思就是“在我冲过街时候,你朝敌人猛烈开火,迫使他猫起来,没法朝我开火)。前进了,你就可以占领阵地,接近敌人,这样你的胜算要大的多。你要是不往前冲,敌人就有时间来搞清楚形势,这可不妙。你要是不开火,敌人就要朝你开火,撂倒你。
我很长一段时间都在想着这个教导。我想通了不论是战斗机空中格斗还是大规模舰队攻击,大部份军事战略战术都是以行进中开火作为基础的。我又花了十五年时间才想通了行进中开火也是一个人在现实生活中成功的基本原则。你每天都得往前进点儿,不用想你写的程序怎么差劲,怎么卖不出去,只要你不停地写,不停地改,滴水也能穿石。同时,要注意你的竞争对手朝你开火。他们是不是想让你全心全意应付他们地扫射,好让你往前走不了呢? 想想这些年来,微软开发出来的资料存取方法,从OBDC,RDO,DAO,ADO,OLEDB直到现在的ADO.NET,不停翻新,技术上有必要吗?还是因为那个设计组实在蹩脚,每过他妈一年就得重新发明一遍资料存取技术?(实际上可能真是)。它最终的效果其实是一道掩护火力,让竞争者别无选择,只能把本来该用来开发新功能的宝贵时间都用来移植和升级了。仔细看看软件行业,干得好的公司对那些大公司都依赖最少,不用把所有精力都用来为赶潮流而把程序重写一遍,还得修改那些只有在Windows XP上才会出现的缺陷。那些花太多时间去猜测微软未来发展方向的公司,日子都好过不了。有些人见了.NET就发怵,忍不住要按.NET来完全重建自己的体系结构,以为自己别无选择。哥门儿,看清楚了,微软是在朝你开火呢,而且这只是掩护火力。这游戏就是这么玩儿的。这样一来,他们就可以大步朝前走,而你却不能。你要支持Hailstorm吗?SOAP呢?还有RDF?是因为你的顾客需要,所以你支持它们?还是因为有人朝你开火而你觉得应该还击?大公司的营销部都懂火力掩护。他们到客人那儿就说,“你们不一定非买我们的。谁的产品最好您就应该买谁的。不过,我们想提醒您,在下单之前最好先确认他们支持(XML/ SOAP/CDE/J2EE)。否则你们就会被他们的技术套牢。”。等到小公司去向这个客户推销的时候,那个听话的CTO就会问他们:“你们有J2EE吗?”。他们回去就只好不管卖不卖得掉,都埋头打造他们的J2EE。他们也就再没有机会来展示自己的特色了。其实,这只不过是个打勾功能。因为有个打勾拦在那儿空着,你就必须有这个功能。其实谁都不需要它。这就是火力掩护。 对于我这样的小公司来说,行进中开火意味着两件事。别跟时间过不去,同时你还得每天都进步。天不负苦心人,你终有出头的一天。我昨天花了一天时间只不过让FogBUGZ的颜色稍微好看点。这不要紧,只要不停步。最重要的是,我们的软件越来越好,客人越来越多。在我们达到Oracle的规模之前,我们并不需要通盘战略。我们只需要每天早晨到办公室来,别多想,打开编程器。
原文:http://chinese.joelonsoftware.com/
June 20 作业科学技术史作业:读一本科学技术史方面的书,然后写2000字左右的读书报告,我写的东西通常被指为“确实不怎么样”,但是我还会尽力去写,比如以下的内容: ///////////////////////////////// ///////////////////////////////// 近日拜读了[美]格鲁弗·威尔逊所著的校园科普读物《科学巨人——西方科学发展史话》(范亚维 张世模译,中国档案出版社出版),本书是一部记录两千五百多年来西方科学发展里程的传记。如作者在序言中所说,本书“对从远古到爱因斯坦这一条真理探索者所走过的路线进行追踪”,它并没有对所涉及的科学、技术有太多专业性描述,而是注重于科学家生平与科学发展史,同时提及部分社会历史作为背景。时间跨度2000余年,对象覆盖面遍及天文、医学、生物学、化学、自然史和应用技术等许多学科,重点记录人物30多人,而连带论及的人物几倍于此,作者在人物选择、历史资料的组织上煞费苦心;用人物传记来阐明历史的推移本是自司马迁以来中国史学家长久使用的方法,这使得我们读起来丝毫未感到繁琐,并很容易沉浸在对这些大师的斗争和成就的缅怀中,难以释卷。 全书共二十八章,基本上每章记述一位改变历史的代表人物,通读之后,我暂且把它按照历史时期分为三个大部分:一是公元前600年到15世纪,对应书中第1到第10章,称为拓荒时期;二是15世纪到17世纪,对应书中第11到第18章,称为奠基时期;三是18世纪到20世纪,对应书中第19到第28章,称为建设时期。 2600年前的欧洲,当时的世界观还相当原始,例如人们认为日全食是太阳被妖魔吞没了。本书就是从生活在那个年代的泰利斯讲起,他从埃及学习了面几何学并加以发展,建立线几何理论,并运用这些知识成功预测了日全食改变人们的愚昧思想,被誉为“科学之父”。学者们都积极探索着世界的本源,泰利斯提出水是万物的本源,与他同时代的阿那克西曼德则选择混沌作为世界的要素;另外还有认为“没有人能两次踏入同一条河流”的赫拉克利特。稍晚一些、曾游历30年的毕达哥拉斯则逻辑地推论出“万物生于一”,“这是他迷恋数字的结果”。游历广泛的哲学家还有提出“不可分割的原子”的德谟克利特,这位认为“每个人对于宇宙都不过是阳光下跳动着的一粒微尘”的穷困而乐观的哲学家甚至被朋友们认为是的了精神病,并请当时著名的伟大医生希波革拉底为他治疗,结果却是两位伟人成了好友。希波革拉底生于大约公元前460年,他“使医学成为科学的最初尝试”,以高尚的道德发展了“希波革拉底誓约”。公元前384年,亚里士多德这位划时代的人物诞生。他是“第一个研究自然的学者,也是把科学和玄学结合起来的最后一批人之一”。繁忙而波折的一生中,亚里士多德“把科学给予了世界”,他是“第一个胚胎学家,逻辑科学创造者,自然史方面第一个分类者,第一个伟大的归纳推理学者”。生于公元前287年的阿基米德则是利用自然的天才。他发明了使用至今的杠杆和滑轮,创立静态流体力学,甚至一个人挡住了马塞留斯军队的进攻。 但是不能忘记这些拓荒者所处于的时代,他们的学说多是建立在天才的思想而不是科学的实践上,他们的学说,或被发展或被扭曲,正确和错误交织的知识统治着世界。“亚里士多德和盖伦被抬至神的高度”,托勒密的学说和基督教义的完美结合就开始了长达14个世纪的宗教统治! 然后就是十字军来了,欧洲才终于要走出愚昧、黑暗和瘟疫。“新的15世纪确实还是一个伟大的时代”,但是人们获取知识的渴望被“手抄书”的方式限制,终于有了发明单个子模印刷术的科斯特,从此开始“传播福音”。“革命”也开始了:哥白尼的《天体的转动》打破了托勒密学说1000年的统治,大胆怀疑盖伦和阿维生纳的帕拉塞尔·休斯也成为医学界“不朽的叛逆”。“欧洲智慧的成长是和那些愚蠢的恐惧和信仰的消失平行发展的”,这也促成天文学从黑暗中走出从而产生了现代世界。泰柯·布拉赫就为现代天文学做出了伟大的贡献,正是在他20年观测数据的基础上,开普勒经过艰苦卓绝的计算,于1609年发表《关于火星的说明》,提出三定律的前两个。医学方面,生于1578年的英国人威廉·哈维提出了心脏和血液循环的完整理论,从而“最终埋葬了盖伦”。物理学被亚里士多德束缚了17个世纪的手脚,也终于被一位25岁的青年,伽利略,所挑战,这位天才发明了望远镜并成为动力学的奠基人,他的研究成果被牛顿发展为运动三大定律。“站在巨人肩上的巨人”——艾萨克·牛顿生于1642年,他在不满25岁的时候已经发明了微积分,提出万有引力定律,对伽利略三定律给予清晰的表达,分析了太阳光并作了可能的光谱分析,成为经典物理的集大成者。这些伟大奠基者的身后,终于迎来了科学的浪潮。 “到了17世纪,黑暗时期已经过去了,经院哲学也已经逝去或者是奄奄一息了。全欧洲处处都是戴着一个大问号的光辉旗帜朝着上升的太阳飞舞”——科学已经成为一位“青年巨人”,各地都涌现出学会和学院,欧洲的大地也升起灿烂的群星,英国的生物学家安东尼·吕温荷克,观测土星、发明摆钟、坚持光波动说的荷兰人惠更斯,与牛顿匹敌的德国大师莱布尼兹,预测彗星的哈雷,“怪人”卡文迪许,还有接闪电的佛兰克林,以及瓦特、拉普拉斯等等。随后,“化学之父”拉瓦锡和进化论先驱拉马克,敲开电气时代之门的法拉第以及拯救生命的巴斯德,推翻《创世纪》神话的戴尔文,揭开遗传秘密的孟德尔,驯服雷电的赫兹……这些天文、物理、化学、生物学、医学的建设者们将人类一步步推向现代社会,同时也将人类思维和想象力扩展到无限的太空,直到人类历史上的又一个巨人——“思维空间的设计师” 爱因斯坦。科学终于大行其道! 掩卷沉思,感觉自己像是仰望星空的孩童,浩瀚的宇宙如此神秘,而探索它的人们留下不朽功绩的同时也留下了不朽的精神!“天才”是重要的,但必需的还是勤奋、坚持和充满好奇的心以及挑战贫穷、寂寞、误解甚至迫害的勇气。作为一本传记式的科普书籍,没有很强的理论性,但从作者精心编制的跨越25个世纪人类进步的掠影中,我们汲取了最为可贵的科学精神!
June 17 101件 Mozilla 浏览器能而 IE 不能做的事http://news.csdn.net/news/newstopic/21/21668.shtml
只可惜不能用MS特有的控件,也不知道该怪谁 另外还有貌似更恐怖的: Microsoft Now Owns OR Mapping Industry via New Patent, 真是这样的话,什么Hibernate、JDO、XSLT之类的岂不郁闷? 呵呵,熙熙攘攘,皆为利往 ///////////////// btw:用firefox写blog实在要排版的话可以用html的标签, 比如这样 :) June 14 再读《戒子篇》诸葛亮的《戒子篇》:“夫君子之行:静以修身,俭以养德。非淡泊无以明志,非宁静无以致远。夫学须静也,才须学也。非学无以广才,非静无以成学。慆慢则不能研精,险躁则不能理性。年与时驰,意与日去,遂成枯落,多不接世。悲守穷庐,将复何及”!
June 13 混淆和代码保护按照ww的指导,使用JShrink,过程相当简单,就是点点鼠标制定规则,保存描述文件,保存Jar包,运行程序检测是否正确。 碰到问题和解决方法如下: 1。 问题:只能读取文件夹内部的类文件,而不能递归读取其所有子目录中的类文件。而如果不能载入工程中的所有类文件,显然会出现不一致的问题。 解决:把整个项目打包,然后打开此Jar文件。另外不知道菜单中的 merge 选项是否也可行。 2。 问题:方法声明被修改,比如 原方法: public void startDocument() throws SAXException{} 制定规则保存此方法名之后的处理结果为: 输入结果 public void startDocument(){} 解决:说来惭愧,我没办法了,最后从网站上重新下载一个JShrink……就好了 ///////////////////////////////////////////////// 不喜欢混淆这种不开放的行为,但是既然做了体力活,也从网上找些相关的东西看看吧,改称“Java代码保护”。 ////////////////////////////////////////////////
内容出处: http://www.infosecurity.org.cn/content/websec/con_java_prog04120106.htm 混淆技术介绍 到目前为止,对于Java程序的保护,混淆技术还是最基本的保护方法。Java混淆工具也非常多,包括商业的、免费的、开放源代码的。Sun公司也提供了自己的混淆工具。它们大多都是对Class文件进行混淆处理,也有少量工具首先对源代码进行处理,然后再对Class进行处理,这样加大了混淆处理的力度。目前,商业上比较成功的混淆工具包括JProof公司的1stBarrier系列、Eastridge公司的JShrink和4thpass.com的SourceGuard等。主要的混淆技术按照混淆目标可以进行如下分类,它们分别为符号混淆(Lexical Obfuscation)、数据混淆(Data Obfuscation)、控制混淆(Control Obfuscation)、预防性混淆(Prevent Transformation)。 June 10 Gentoo搬家天基本装好Gentoo之后,用起来觉得挺好,但缺憾之一就是我给它留得空间太小, 只有5G,装了eclipse之类的软件之后就只剩下几百兆了,于是劫富济贫,从Windows再 剥来20G的分区,给Gentoo安个新家。
June 09 混淆工具:JShrink2.3.2,王伟介绍的。 简而言之是为了所谓的版权,把Java代码中的一些方法、字段名乱七八糟换换, 这样即使别人把它反编译,得到的信息也有限。 可以制定规则,保留某些类、方法、字段名不被混淆,以免引起逻辑错误。 但是据王伟介绍,嘿嘿……我们的弱点之一就是总把这个世界想得太美好了 //////////////////////////////////////////////////////////////////////////////////////// 感觉不是很爽 June 08 排版花很长时间写了个Gentoo安装手记,结果发布之后排版乱七八糟,这个时候我才注意,添加项的编辑框内没有原来IE下使用时显示的改变字符格式、笑脸符号等按钮,想来那是用JavaScript调用了IE特有的控件,而Firefox没能显示:( ,是这样么?
而且,刚才输入的换行符号也没有了,害我找了另外一台Windows系统的机器重新排版了一下。
咋解决呢? |
|
|