2009年9月7日星期一
我的25年嵌入式生涯--------周立功
对于今天很多的年轻人来说,一味注重技术至上的观念刻骨铭心,其实很多时候努力并非一定有回报。事实上,有不少出类拔萃的人才往往做出来的产品就是卖不掉,因为设计者压根儿就不了解用户的需求和心理以及产品功能的恰当定义,而总想在同事及其老板面前卖弄自己的技术和产品功能。其实有很多思维性的东西恰恰是很多人所忽视的,因为从一开始的出发点就错了,怎么可能取得辉煌的成绩呢?所以有时拥有卓越的技术并不一定代表人生的成功,很多企业就是死在一些自命不凡的"卓越人才"手中。
它山之石可以攻玉,减少"阶段0"的开发
有所"创造"确实是人人期待的,令人瞩目的发明虽然激动人心却谈何容易,人们时常将盖茨没有任何爆炸性的发明作为茶余饭后的笑料,我们不妨从另外一个角度去探索微软的成功奥妙从而为我们所用。确实不假,盖茨的DOS源代码是从帕特森手上"买"来的。这些年来,我收集了世界各地中英文版有关微软的专著来比较研究,大家仅仅注意到盖茨为建立整个行业架构标准的远见,并叹服盖茨深得市场运作经验的精髓,我认为这些研究成果都是后来者研究微软成功经验,是"牵强附会"不可复制的理论总结。
当初微软公司还仅仅是一家很稚嫩的公司,可以说生存下去是盖茨作为老板唯一的使命。事实上,正当盖茨决定动手来写IBM所要的OS时,原计划在一年左右完成,但IBM公司只给了他几个月的时间。尽管帕特森的QDOS并不完善错误百出,但为了履行对IBM的承诺,盖茨购买了QDOS改贴标签后卖给了IBM公司。盖茨对此心知肚明,因为他知道如果用一年的时间来做OS的开发,他将失去与巨人IBM的合作机会,那是一种浪费。付一小部分的技术费用没有关系,只要能获得Know-how,获得更高的利润就好了。通过支付权利金引入技术,然后以模仿的方式学习他人的技术,再改造成符合IBM需要即可。"买"――只要有现成的就不需要自己开发,这就是盖茨的过人之处,而且恰恰是很多人忽视的地方,值得我们所有人学习和仿效。盖茨就是由于没有"阶段0",从而大幅度地降低开发风险。
当年,我是一个人单枪匹马借了2.15万元出来创业的,可以说是负资产,后来才开始有伙伴注资6万元。没有经验怎么办?我有一个非常好习惯,读书从不拘泥于他人的观点,也满足于人云亦云,否则那就是听别人讲故事,那不是您的东西,有入宝山空手而归。我认为,要想成功就必须"研究"成功者的轨迹,向成功者学习。
下面我会把我"第一桶金"的故事告诉你,这也是尽量减少"阶段0"开发一个非常典型的例子。当年,《羊城晚报》几乎每天都有半版广告刊登信息台(听歌、悄悄话等)广告,一打听广告费每天几十万。当时相信不少人在利用公费电话在拨打这些信息台。后来我送货到客户那里发现电话机都外加了一个铁壳并上了一把锁,从看到那一幕开始,我决定做电话加密码锁,锁长途电话0字头,手机、BB机、信息台的9字头。通过朋友介绍,福州某公司有这个技术,于是我打了一个试探性的电话,使用5000元购买方案和源代码,对方非常爽快地同意了。我生怕有变立即坐飞机到福州去,很快就见到了郑新建工程师,他原来在福州某公司工作,我见到他的时候已经离开了福州某公司,但仍然自己写一些产品解决方案,通过福州某公司销售。买到方案与源代码之后,我立即带样机到各地去做测试,发现这台样机兼容性太差,而且市场已经开始在卖的产品也存在同样的问题,我想只要解决好兼容性的问题,如果在任何地区交换机局域网都能够使用,那就是最好的产品不愁没有市场。
我当时既没有资金也没有生产和销售经验,到底怎么将技术变成市场上所需要的产品呢?那是因为我找到了生产电话分线器的广州市白云区百新电器厂的老板陈国亮,由他生产和销售,每销售一台产品给我提成。以这个项目为起点,我们使用PIC单片机的数量很快就达到了每月100K以上,一年以后Microchip香港公司经理Andi主动找上门来将当时的广州强力电子研究所发展成为了授权分销商。毫不否认盖茨的远见和判断力是微软至关重要的核心竞争力,但盖茨也绝非天才,否则盖茨就不会在浏览器上输给网景了,尽管微软使用的很多技术都不是微软所发明的,但毫不妨碍微软独步天下。
注重核心技术,其余的外包
通过创业以来第一个项目的成功,我深深地体会到商业模式比技术本身更重要。
通过十多年的努力,我们设计的"铁将军(Steel
Mate)"品牌汽车防盗器、汽车倒车雷达不仅成为了全世界范围的"隐性冠军",而且为GE等世界著名汽车厂商售前市场提供配套产品,与此同时我们为智能卡酒店门锁厂商设计与制造的各种智能卡门锁控制模块在国内也一直处于第一名的地位。他们为何能够取得与众不同的成功呢?其最大的长处就是产品创意与制造、简约时尚风格的工业设计、模具制造技术以及精心打造的销售渠道,这些厂商深刻明白"注重核心技术做自己擅长的,其余的外包分段取利"的基本道理,而对于我来说就是"智慧出租",通过与强者合作获得双赢。通过这些成功经验的积累,我们开始全力以赴注重发展核心技术,将自己不擅长的技术全部外包。比如,我们长期投资清华大学计算机系,并建立以陈渝博士后为主Linux内核开发团队,为公司底层的技术提供良好支撑,而我们自己则将精力集中于Linux驱动开发。这种分工合作、协同开发的模式赢得市场上宝贵的时间,并快速取得了应用成果。
也许有程序员会关心JTAG开发工具问题,那也是一个"外包"的项目。当时,我们在网上发现了一个由计算机爱好者业余时间设计的H-JTAG,这是一个比较稳定的调试器软件,正好适合我们使用。于是我就同设计者联系,并决定由周立功单片机资助他继续开发,同时,其开发成果还免费提供给网上的用户下载,保证它作为一个自由软件。其实,无论是Linux还是H-JTAG都是开源软件,如果担心其它的同行因此受益而超越自己的话,难免需要在公司负担很多开发人员,面面俱到地做许多事实上是重复的开发工作。其实,我们的合作伙伴都是所在领域的专家,如果自己从头到尾去学习和开发,不仅抢了合作伙伴的饭碗,而且结果未必理想。这种情况下不但会延误宝贵的商机,而且还会影响与合作伙伴之间的关系。其实只要引入我们企业长期积累和制定的嵌入式系统工程管理思想和规范,即可得到自己想要的结果:"做你最擅长的,其余的外包",类似这样的案例在周立功单片机将会越来越多。
专注与差异化生存
1999年1月23日我离开了原公司,先后分别创立了广州周立功单片机发展有限公司与广州致远电子有限公司,分别从事贸易业务与产品制造。作为代理商通过为客户提供解决方案从而达到大批量销售芯片是代理行业惯常使用的手段,而实际上通过设计能够真正达到增值获得丰厚回报的代理商却少之又少。要知道过去公司的人才数量和资源是非常宝贵的,如果没有正确的战略,机会可能稍纵即逝。事实上创业开始的前几年,我们一共为用户设计了超过100个品类的产品,产品型号超过500种,可以说几乎涉及到了各行各业,但能够带来稳定而丰厚回报的案例几乎没有。我经过一段时间的思考和报表分析发现,目前公司的业务做得太多、太杂,没有将任何一个行业做精。于是我下定决心减少用户数量集中精力在1-2个行业做强、做大,直至成为顶尖的行业专家,坚持十年如一日重点做好汽车配套产品与智能卡门锁控制模块的开发。通过多年的精耕细作,我们通过为直接用户设计产品增值年销售单片机的数量已经超过了1000万片,无论是对用户还是对半导体公司来说,我们无疑是一家非常有价值的代理商。1999年5月,PHILIPS半导体公司邀请我去上海洽谈是否有意向代理LPC700单片机,当我拿到用户手册时离去上海的时间只有5天。当时公司不像现在有250位大学生,总共只有8个人,怎么办?我一边写商业计划书,一边与大家翻译用户手册、打字和贴图,面对机会就像抓住救命稻草一样加班加点,每天只休息3-5个小时。第5天我赶到上海东亚富豪酒店时,我将整整齐齐的材料放在了来自美国PHILIPS半导体公司2位经理的面前,包括吃饭在内仅仅只洽谈了2个小时,代理权就正式谈下来了。事后他们告诉我,就是因为我与众不同,专注且非常有个性。
风雨变换诱惑莫测,人怕出名猪怕壮,这是常理!随后找上门来要求我们代理芯片的著名半导体公司不下10家。这时候,对于很多人来说不做什么就是一个艰难的选择。此时,我认为不管对方开出的条件多好,有冲突的就是不做,性能不突出的也不做,如果能够形成价值链互补,就一定要通过自己的努力和业绩表现主动去"求"半导体公司授权给我们,我就是这样取得了Keil、Catalyst、Sipex的代理权和信用额度。2004年SHARP半导体公司北京、日本、美国一共五位经理来到我的办公室要求我代理SHARP的ARM,帮助SHARP在中国推广以及制造用于全球销售的开发套件,我根本没有思考就一口回绝了,可以说SHARP给我的条件非常之好,特别是美国人觉得是非常不可思议的事情,作为商人这么好的赚钱机会都不要。为什么?我们之所以暂时"强大",就是因为我们长期以来专注于发展PHILIPS半导体,集中精力对准焦点成为了小河里的大鱼,进而才引起了众人的关注。如果我们分散了精力,最后的结果一定会什么都不是!当决定专注的目标之后,接下来的就是想办法如何做得与众不同,这是一件不容易的事情。最重要的就是穷举用户最大的需求和竞争者最容易忽略之处,然后将其做到最好。
为了推广好PHILIPS的单片机和ARM,我们定位于帮助初学者快速入门,至今一共编写出版了20多本专著,并将大部分版权全部捐献给了出版社用于降低成本,同时我也还会继续坚持将这项工作做下去、争取做得更好。邓小平有一句名言:"计算机要从娃娃抓起!"我认为,任何一个有远见的厂商,要想成功地推广嵌入式系统,一定要从在校大学生抓起,这必定是一件一举多得的好事。既能够提高企业的美誉度,又能获得市场占有率,还能为学生提供实践的理论基础。为何很少有厂商或者代理商心甘情愿去做?这不仅可帮助企业建立差异化,而且还能够给企业带来长远的利益,何乐而不为?比如说,至今在国内任何一家代理商的网站上几乎都找不到完整的芯片中文数据手册、用户手册与应用手册,不是我们的同行不知道其中的重要性。首先大家普遍认为这是半导体公司的份内之事,其次大家或许感到自己做好之后放到网站任由用户免费下载,会给其它代理商占了便宜。但很多人却始终不明白,这是满足用户需求制造公司服务差异化的最佳机会。于是我们决心从网站入手坚持长期投资,做中国最好的嵌入式系统专业技术网站,建立专业的技术支持与开发团队。特别是对于优质用户的服务,网站还专门开通了"快速绿色通道",如果这样的用户遇到问题,都是由我、分公司经理及其相关服务部门的经理牵头负责实施"保姆式"的服务,我们实施的服务战略就是:"用有限的资源为有效的用户提供高质量的服务"。
"你若亲近神,神就亲近你!"
2001年8月一篇来自PHILIPS内部刊物的报道《风险意味着机会》,我是被推上了"本地英雄"封底人物栏目的第一位亚洲代理商;2004年PHILIPS半导体公司又给我授予了"优秀卓越贡献奖",来自全国各地的用户连续多年通过《亚洲资源》媒体将我们公司评选为"本地十大最受客户欢迎的分销商"。没有用户崇高的忠诚度和长期的大力支持,我们不可能从1999年以来连续多年销售单片机取得PHILIPS亚太区第一名的业绩。一个"人弃我取"的机会成就了我,尽管个人与团队的努力至关重要,但可以毫不掩饰地说,如果没有PHILIPS半导体经理的慧眼相马,一定是巧妇难为无米之炊,业界不会再有我的一席之地。在嵌入式系统应用技术方面与我们不相伯仲或者说比我们聪明能干的人才何止万千,为何只有少数人能够脱颖而出呢?就是因为想法太多、不专注,不能坚持在一个行业里面十年如一日地下苦功夫。但面对众多的竞争者和后来者,我每天都如履薄冰,不敢有丝毫的懈怠,每天坚持学习到深夜,因为唯有不断地学习和更新思维才有可能具备远见并及时规避可能出现的失误。
关注用户的需求
其实维系企业生命的关键在于产品是否能够获得市场的青睐,我们要做的并非是成为技术的领先者,而是要将技术成果转化为迎合消费者需要的商品。八十年代是一个物质缺乏的年代,而今天的人们更加注重消费享受和情感的分享,这是任何人都无法否认的现实。我们公司刚开始做产品时,由于我个人偏爱蓝色,所以我凭着老板的权威将所有产品的外观全部都做成蓝色,其实当时也有不少的人向我提出改进意见,但我仍然还是无动于衷,为什么?就是因为我是做技术出身的,而且从创业初期开始一直都是依靠技术一路拼杀过来的,可以说过于迷信技术的力量,因此在很长的一段时间内,公司完全走的是研究的路子。而我却恰恰忽视了用户读产品的心理需求,以至于在产品推向市场之后一直都无法打开局面。当时,EasyPRO系列编程器面市的时候,其销售数量一年下来都不到500套,同时有用户表示对于产品的设计很不满意,这可以说是一次深刻的教训。于是我下定决心组建工业设计事业部,首先从EasyPRO系列通用编程器开始,亲自管理、研究和参与产品的外观设计,将原来的模具全部废掉重新设计。尽管是第一次设计,在产品的外观上没有做出非常杰出的效果,但无论如何,新产品外观比原有的产品出众得多。2005年10个月的时间里,EasyPRO系列通用编程器的销售数量达到了6000套。2006年我们又推出了SmartPRO系列智能型通用编程器,预计本年度销售编程器的总数量将超过10000套,而这些产品将带着我和我们公司跻身于国内编程器市场主流品牌之列。从那次深刻的教训以后,我明白好的外观设计可以凸现产品的魅力,让产品与环境融为一体,刺激消费者产生强烈的购买欲望。即使是普通产品,经过精心设计,也会成为一件时尚产品,甚至让人们觉得它就是一件艺术品,从这一点来说,时尚、新潮、艺术化的外观设计是塑造产品品牌形象的第一要素。从那以后,我开始改变产品简介、广告以及展示会的形象设计,为了配合新的形象,我们展开了大规模、全方位的宣传:一方面尽量多地为用户提供产品简介手册,同时通过大量的媒体广告,让用户认识并初步了解公司,从而迅速有效地提高了品牌知名度;另一方面组织各种全国巡回演讲、免费ARM技术培训活动和产品展示会,而且我们每次参加展示会都是投入4个摊位并进行特装展位设计,目的就是为了获得与用户积极沟通的机会。2003年暑假期间,周立功单片机投资80万元邀请了行业3位著名的嵌入式系
统专家组成讲师团在全国10个城市主办了免费的ARM巡回演讲,提供了免费的午餐,可以说规模空前。这次巡讲中,共有8000多人参加了这次活动,随后公司趁热打铁推出了售价400元的EasyARM2104开发学习套件,第一个月生产的1000套在15天之内抢购一空,直到销售了15000套之后才因新产品的推出而停产。这次活动不仅收回了80万元的宣传费用,而且还直接或间接地影响了超过50万嵌入式相关人员,强有力地达到了品牌宣传的目的。在赢得丰厚利润回报的同时,也打造了嵌入式行业一次非常成功的"事件营销"经典案例,我深深地体会到"俘虏"用户的心是提升品牌的唯一途径。
全球化市场意识
过去,一个公司可能需要等到10年之后才开始考虑是否全球化,而今天由于网络技术的发展,无论我们身处何地,世界各地的新信息仿佛就在眼前,谁也不会被边缘化了,所以今天成立公司明天就要准备全球销售。这几年ARM已经到了热得不得了的程度,很多人不以为然,其实这是一种必然趋势。事实上,我在美国PHILIPS半导体公司看到,美国1997年出版的《嵌入式系统》杂志就已经大量刊登OS与32位嵌入式系统开发工具等文章和广告。在美国硅谷主办的嵌入式系统展示会上,来自欧美的上千展位展现在我眼前的是各种各样嵌入式系统产品,中国厂商普遍展示的是蜂鸣器、继电器等低档元器件。我第一次身临其境地感受到了中美之间的差距究竟有多大。中国太需要懂得国际市场需求和游戏规则的人才和企业家了。同样是做USB分析仪,全球只有5家,我们自己的USB分析仪升级版在中国目前定价为3800元,这款产品原来的售价只有1800元,用户还认为太贵了。其实这样的产品在国内一年的销售数量也就200台,但是同样的情况在美国,一个小公司一年的销售额就能够到2000万美元,他们的单台最低售价不低于10000美元,以至于美国同行直接给我来电话,希望我在售价的基础上至少加一个0。中国企业不做全球化销售能行吗?不行!而且中国企业必须向价值链顶端攀升,否则我们只能做欧美消费品市场的廉价加工基地。
个性化的企业文化,帮助他人走向成功
通过与用户合作所经历的共同成功过程中,用户将我教育成为了一个善良、上进、诚实、优秀的人才。我不仅懂得如何做自己最擅长事情的方式方法,而且也懂得了如何与用户、与员工分享成功的道理。一旦芯片销售数量增大成本下降就主动给用户降价,赢得了用户更长远的支持;公司效益提高了,年终就主动给员工涨工资、加奖金并对优秀员工提供购房津贴。由于公司的规模不大,我们一直以招聘二类本科应届生为主,在内部采取导师制的培养模式,为他们提供至少一年的严格训练,帮助他们规划职业生涯,想尽办法提供机会将他们培养成优秀的人才。这些年来不少公司打电话向我们公司挖人,关键人才从未出现过流失,至今跳槽的员工不超过12人,我深深地感到这就是我人生最大的快乐和财富,离开了支持我的用户和追随我的人才,我将变得一钱不值。为了保证企业的可持续发展所带来的人才困境,我与江西理工大学合作以五年为期开办了"3+1"嵌入式系统应用开发特训班,与此同时还设立了每人3000元共10人的"周立功奖学金"资助那些动手能力极强而成绩中等的学生,开展校企无缝联接,培养嵌入式系统创新性开发人才的有益尝试,即就是从7个班中选拔30位爱好者用3年的时间修完所有课程,我们为每一位学生提供一台计算机、全套开发工具及其设计中所发生的一切费用,由我们组织著名专家开设专题讲座和课程,学校组织1位专职辅导员和2位指导教师,并由我们提供必要的津贴,然后用一年的时间专门做毕业设计,为此我们制定了严谨、细致的培训计划。这些年我们还不断赞助各省电子大赛、毕业设计大赛、创新设计大赛,捐赠了50所大学单片机创新实验室,以求扩大企业的知名度和广泛寻求人才的来源。
最后的话
很多开发工程师以为这些都是老板或者经理们应该考虑的问题,与己无关,其实是大错而特错。作为一位优秀而卓越的开发人员,如果希望获得人生的完全成功和快乐,我们时刻需要明白,任何一个企业的可持续发展一定是群策群力的结果。1981年我经历了高考失败之后上了技校,1999年我作为劳动模范被保送上了大学,创业至今十多年来,往事依然历历在目,用户给予我的回报很多,很难在此一一完全道来,谨以此文与同行、用户分享和交流。这些年来,我陆续捐资资助教育、设立奖学金以及帮助家乡修建乡村水泥公路、祠堂等公益事业回馈社会。1990年的中秋节,我只身一人南下广东打工,不曾想到会有今天这样的成绩,我一直非常珍惜这来之不易的机会。作为一个嵌入式技术爱好者,我的愿望就是:"生命不息、奋斗不止!"力争为发展中国的嵌入式系统应用技术贡献自己的一份力量。
2009年9月6日星期日
程序员的几个思维惯性(转)
有一些是感悟,也有一些只是见闻。
1."怎么可能".
"程序出问题时,他会说:这怎么可能,我的程序前几天还跑的好好的,我只不过改了~~~,没问题。
如果问题的症状出在别人的模块,项目经理让他检查代码时,
他会说这问题肯定不出在自己身上,甚至可以拍着胸脯说绝对没问题。
即使他真去检查代码,也不会一行一行仔细
看,那些自以为没问题的地方眼睛一刷就过去了。 结果n个人折腾个半死,
到最后问题竟定位到自己刚改动的代码上。资格越老的程序员越有这种倾向。
没有血的教训,很难深刻体会这一点。
2."标新立异"和"拿来主义"
编码时有两种极端的思维,一种是"标新立异",另一种是"拿来主义"。
对于前者,他倾向于认为别人的实现不够好。带着怀疑和学习的态度,
喜欢做些小动作,总要怎么修改下,使其看起来和原来的不一样,更符合自己的"风格"。
这些人往往是IT行业的新军,他们有的是"创新精神"。殊不知道,这种"创新"
给项目带来inovaiton和活力的同时,也往往会给项目引入许多难以排查的新问题。
对于后者,他往往习惯通过过各种途径获取和自己模型相近的实现,然后在
这上面修修改改就用,不会努力让已有的实现有一次新的质的提高,让自己更上一层楼。
他们主要是一些有一定工龄的程序员,被工作磨去菱角,也磨去创新的动力。
很多开发人员就是从"标新立异"到"拿来主义"的逐步演化的。
3."能用就行"
这个时代太流行"能~~~就行"了。我老婆就说"文章没必要写的文绉绉的,让人家看懂就行!"。
这对我是可能是一个"讽刺",也是一个安慰吧。很多开发人员写代码时,听到经理说自己定义的
数据结构不规范,自己的算法缺乏效率,自己定义的接口不标准不好用没有隐藏足够的信息等等,
他们常常会嘀咕着说"能用就行!"。
boot loader能全部用C程序编写吗?
loader呢?再看看题目,这里只考虑所有的代码只能是以函数的形式出现。那C程序中函数调用要一个什么样的环境呢?堆栈!我们写C程序时在函数名的后面,就是用花括号将代码括起来的,开始的花括号其实可以理解为有一段汇编代码(具体细节以后会有文章进行解释)对堆栈进行操作。那堆栈从哪来呢?显然,堆栈是一块内存区,也就是说我们用C程序写代码之前,必须保证内存已经初始化好了、可以用了。回忆一下,我们在《什么是boot
loader》一文中提到,SDRAM内存芯片的初始化是boot
loader中很重要的一步。也就是说,我们必须保证初始化好了SDRAM内存芯片后,才能进行C函数调用。因此,完全用C语言来实现boot
loader是不可行的。
像Bootloader 这样底层的程序一般认为是要用纯汇编来写的。但是用汇编写的程序
可读性肯定没有用C写的程序好。汇编程序不宜维护,没办法向其它类型的CPU
去移植。这些方面C的程序是没有问题的!_
那么Bootloader能否用纯C语言去写呢?不可能。因为有些操作特殊寄存器的指
令也是特殊指令,用C是实现不了的。有些功能用C也是不能实现的。用C不能
作的有:
1. 操作CP15寄存器的指令
2. 中断使能
3. 堆栈地址的设定
所以,只要知道这几条汇编指令可以了,不必学习所有的汇编指令。是不是上手很
快呀。下面来看看我们在Bootloader中所用到的汇编部分:
asm ("_my_start:
mov r14, #0x70
mcr p15, 0, r14, c1, c0, 0 /* MMU dISAbled, 32 Bit mode, Little endian */
mrs r14, cpsr
bic r14, r14, #0x1f /* Mask */
orr r14, r14, #0xc0 + 0x13 /* Diasble IRQ and FIQ, SVC32 Mode */
msr cpsr, r14
ldr r13, =0xc0020000 /* Setup Stack */
");
简单吧,比看几十K的汇编程序感觉好得多吧。
也许你会问:硬件的初始化怎么办?那是要操作寄存器的。
我说:看看这段C的代码:
*((DWORD*)(dwHardwareBase + HW1_SYSCON1)) = SYSCON1_VALUE;
明白了吧,ARM中把寄存器映射在内存中了,就跟读写内存没有区别。
现在编写程序的问题已经全部解决了,但是否就没有问题了呢?不是。你的程序应
该写成什么样呢?怎么编译生成二进制文件呢?
让我们先写一个程序试一下吧:
#define DWORD unsigned int
int main(void)
{
register DWORD dwHardwareBase;
asm ("_my_start:
mov r14, #0x70
mcr p15, 0, r14, c1, c0, 0 /* MMU dISAbled, 32 Bit mode, Little endian */
mrs r14, cpsr
bic r14, r14, #0x1f /* Mask */
orr r14, r14, #0xc0 + 0x13 /* Diasble IRQ and FIQ, SVC32 Mode */
msr cpsr, r14
ldr r13, =0xc0020000 /* Setup Stack */
");
dwHardwareBase = (DWORD)0x80000000;
return 0;
}
编译一下:
C:>ccarm -c -O2 -mcpu=arm710 -mlittle-endian -nostdlib -fvolatile
-nostdinc –static
sam1.c
C:>ldarm -o sam1.out -Ttext 10000000 sam1.o
ldarm: warning: cannot find entry symbol _start; defaulting to 10000000
sam1.o(.text+0xc):fake: undefined reference to `__gccmain'
sam1.o(.text+0xc):fake: relocation truncated to fit: ARM_26 __gccmain
我们发现应该把main定义成_start
#define DWORD unsigned int
void start(void)
//gcc需要把它定义成_start,VxWorks的egcs要把它定义成start。
{
register DWORD dwHardwareBase;
asm ("_my_start:
mov r14, #0x70
mcr p15, 0, r14, c1, c0, 0 /* MMU dISAbled, 32 Bit mode, Little endian */
mrs r14, cpsr
bic r14, r14, #0x1f /* Mask */
orr r14, r14, #0xc0 + 0x13 /* Diasble IRQ and FIQ, SVC32 Mode */
msr cpsr, r14
ldr r13, =0xc0020000 /* Setup Stack */
");
dwHardwareBase = (DWORD)0x80000000;
}
编译一下:
C:>ccarm -c -O2 -mcpu=arm710 -mlittle-endian -nostdlib -fvolatile
-nostdinc –static
sam1.c
C:>ldarm -o sam1.out -Ttext 10000000 sam1.o
C:>objdumparm -d sam1.out > sam1.asm
现在来看看汇编的源代码:
sam1.out: file format coff-arm-little
DISAssembly of section .text:
10000000 <_start>:
10000000: e1a0c00d mov ip, sp
10000004: e92dd800 stmdb sp!, {fp, ip, lr, pc}
10000008: e24cb004 sub fp, ip, #4
1000000c <_my_start>:
1000000c: e3a0e070 mov lr, #70
10000010: ee01ef10 mcr 15, 0, lr, cr1, cr0, {0}
10000014: e10fe000 mrs lr, cpsr
10000018: e3cee01f bic lr, lr, #1f
1000001c: e38ee0d3 orr lr, lr, #d3
10000020: e129f00e msr cpsr, lr
10000024: e59fd000 ldr sp, 1000002c <$$lit__1>
10000028: e91ba800 ldmdb fp, {fp, sp, pc}
1000002c <$$lit__1>:
1000002c: c0020000 andgt r0, r2, r0
10000030 <__CTOR_LIST__>:
10000030: ffffffff swinv 0x00ffffff
10000034: 00000000 andeq r0, r0, r0
10000038 <__DTOR_LIST__>:
10000038: ffffffff swinv 0x00ffffff
1000003c: 00000000 andeq r0, r0, r0
哈哈!在<_start>和<_my_start>之间的代码在干什么?是在保存现场吧,还用到了
堆栈。而这时堆栈还没初始化,向堆栈里写东西那不乱套了!应该屏蔽这段代码。
那就在<_start>之前放一个跳转指令跳到<_my_start>吧。
#define DWORD unsigned int
asm ("
.text
.global _start
_start:
bl _my_start /* Omit the entry code for function c_start() */
");
void c_start(void)
{
register DWORD dwHardwareBase;
asm ("_my_start:
mov r14, #0x70
mcr p15, 0, r14, c1, c0, 0 /* MMU dISAbled, 32 Bit mode, Little endian */
mrs r14, cpsr
bic r14, r14, #0x1f /* Mask */
orr r14, r14, #0xc0 + 0x13 /* Diasble IRQ and FIQ, SVC32 Mode */
msr cpsr, r14
ldr r13, =0xc0020000 /* Setup Stack */
");
dwHardwareBase = (DWORD)0x80000000;
}
应届毕业生,绝对有你不知道的——档案,面试,合同法,薪水,为人处事等问题
近年来,大学毕业生对自己的档案不管不问,已不是个别现象。据了解,在各院校、各级毕业生就业主管部门和各地人事部门人才交流中心,被大学毕业生遗弃的档案都不少。超过择业期,毕业生的档案会被学校退回原籍。
从郑州大学毕业两年的杜玉峰,毕业后辗转了两三家单位,没把档案当回事。谁知道今年评职称,他才想起档案没在单位。他也因手续不全,评职称被耽误了一年。
省人才交流中心人事代理部业务负责人告诉记者,档案要记录一个人的经历、学历、职称等,表明一个人的行政隶属关系。就业后要转正定级、职称申报、办理养老保险,以及开具出国、考研等有关证明,都要用到档案。
他说,有些在私营企业工作的大中专毕业生,择业期满后没有到学校办理报到证,也没有转档案,其档案被打回原籍,这样失去了报到资格,就业手续需要重新办理,只能按照招工手续,即身份是合同制工人,而自己奋斗了十几年的正式干部身份就没了。
毕业生与用人单位签约时,要询问清楚用人单位的性质,如果是国家机关、国有事业单位、国有企业,本身或者其主管单位是有人事管理权的,可以接收档案。其他各类非公企事业单位、各类民营机构一般是无人事管理权的,要通过人才交流中心来接收学生,学生的档案要放到人才交流中心。
按照规定,学校应将学生档案转给有档案管理支配权的单位和国有企业、各级毕业生就业主管部门,以及县级以上政府人事部门所属的人才交流中心。
县级以上政府人事部门所属人才交流中心均可为毕业生接收管理档案,并依据档案为毕业生提供转正定级、职称评定、出国政审、考研证明等一系列内容的服务。
有就业单位档案这样办
毕业生将《就业协议书》交所在学校,由学校统一到毕业生就业主管部门办理毕业生就业报到证。需要迁移户口的毕业生,还需要持就业报到证、毕业证等材料到原籍办理户口迁移证。办理了人事代理的,由所在学校统一转移到人才交流中心,经清点、核实,符合条件的,办理存档手续。需要办理户口的,持存档手续、毕业证复印件、户口迁移证、身份证和身份证照片等在工作单位或人才交流中心办理入户手续。应聘单位无集体户口的,可直接迁入省或市、县的人才交流中心集体户口。
择业期内怎么办
择业期内,毕业生可以将档案存放在学校。但如果择业期满,要提前办理人事代理手续。
持《就业协议书》直接到人才交流中心,签注人事代理意见;将《就业协议书》交所在学校,由学校统一到有关部门办理毕业生就业报到证,由所在学校将毕业生档案转递到人才交流中心,办理存档手续;持就业报到证、户口迁移证、身份证等材料办理存档和入户手续。
超过择业期的毕业生档案该怎么办理
超过择业期仍未落实工作单位的专科以上毕业生,持国家有关政策规定的有效文书(证件)到入学前户口所在地人才交流中心开具商调函,凭商调函由原档案管理单位将人事档案移交本人才服务中心;人事档案在个人手中保存或在无档案管理权的单位保存的,凭就业报到证先到当地政府人事部门所属人才服务机构补办有关手续,完善档案材料(私自拆封或无档案管理权的单位拆封的,需退回原毕业院校重新审查、密封),而后,再将档案移交到人才交流中心。此时,毕业生已经不再具有就业报到资格,需要就业的需重新办理招工、聘干等就业手续,或者按照国家不包分配毕业生的就业办法,办理毕业生就业工作介绍信。
这部分毕业生的户口如果在入学时已经迁到学校,现在只能迁回毕业生入学前户口所在地,在其他地方不能办理入户。
最后,提醒各位大学毕业生,2007年7月之前将档案转到省人才交流中心实行人事代理的大学毕业生(以就业报到证日期为准),见习期满后需要办理转正定级手续。届时,可持档案卡到省人才交流中心领取《转正定级表》。其中,需要办理初聘专业技术职务资格认定者,可持档案卡到该中心领取初聘表,办理相关手续。
2.应届毕业生 教你几招面试绝招
"回想起几年前的这个时候,我也和版上的多数同学一样,不停地投递简历,听宣讲会,参加笔试和面试,等offer。作为自毕业后一直在企业从事人力资源工作并组织和参与过几年校园招聘活动的浙大人,我想结合亲身经历谈谈校园招聘的话题。"在浙大缥缈水云间的work版上,一位HR发表了洋洋洒洒数千字的长文,帮学弟学妹们解答有关校园招聘的问题。
没想到这篇文章迅速成为点击率最高、反馈最多的帖子。所有看过的学生都盛赞:真是一篇好文,好好学习后,受益良多。
面试作答要理清思路
"我在找工作那年,接到HR参加面试的电话后,立即赶到学校图书馆阅览室,花了一晚上把该企业的相关书籍都快速浏览了一遍。在宣讲会时,又认真听了相关介绍,并且招聘宣传册上的很多信息都记得差不多了。面试时,当面试官问我为什么想到该企业工作时,我就结合企业历史、文化特点、发展机遇和个人的职业生涯规划谈,赢得了面试官的认可。
之后如愿进入该企业工作,某日和当时面试我的领导吃饭时,了解到那天我谈的有些信息甚至他之前都不是特别清楚,给他留下了深刻的印象,还没有开始复试,他就基本上定下来要最终录用我了。"
因此,这位HR提出,如果想加入企业,请尽可能多了解企业情况。不过,充分准备不只是了解企业背景信息,更重要的是理清思路。
很多企业招聘面试时有不少问题是相同的,属于必答题。比如:自我介绍,最大的优/缺点,最成功/失败的事,职业生涯规划,为什么加入我司等。对于常见的问题,不少文章或书中给出了一些回答模式或建议,可以稍作参考,但不要拘泥于此,否则可能适得其反。
回答问题时不要太干瘪,要有血有肉,有理有据,有总结有分析。一般来说,描述一件事你应将其前因后果简明扼要地说明白,至少说明一个完整的STAR,即在什么情况下(Situation),要做什么事情/完成什么任务(Task),你采取了哪些行动(Action),最终结果如何(Result)。
千万不要试图编故事
回答问题最关键的是要记住诚信为本,不要试图去编故事。
如果当面试官问你第一个问题时,你就开始编故事。有经验的面试官一般都能识破,他会通过一个又一个连环问题追问相关细节。"开始几个你可能还能招架,不过我相信你不会笑到最后。"因此,如果你没有亲身经历过某事或参与过某个项目,不了解事情的来龙去脉或项目运作的整个过程,请不要轻易编造。
这位HR还提出,如果你真的经历很少,又想以某项目或事情作为佐证,那至少在面试前得先好好准备一下,将准备编造的故事彻底理清,并保证自己到时不会自打耳光。总之,坦诚会给你加分,欺骗后患无穷。
感觉好为什么没录用
不少同学面试后自我感觉很好,但没被录用,就会发出质疑。
事实上,这有两种可能:
一是你面试表现的确不错,但可能排在n+1,限于招聘名额n,择优录取,只能说声遗憾。如果接到企业的拒信说:"您的学识和能力给我们留下了深刻印象,但本次招聘名额有限,暂时无法录用。我们会将您的材料保存在公司人才库,有合适空缺时会优先与您联系,感谢您参加我司校园招聘,希望您继续支持和关注我司的发展!"这可能是名副其实的。此时,你有可能作替补,当有人拒签或毁约时你的机会就来了。
二是你只是自我感觉良好罢了,面试官并不认同你的表现。其实,面试感觉好坏与录用与否并没有必然的联系。"我记得当年复试时感觉就不怎么好,回来后也以为没戏了,结果某天手机一响,喜讯传来。后来到公司后我与领导聊天时了解到,我在复试时的表现的确一般,但其中有几个亮点加上初试时的优秀表现让他决定录用我。因此,我想告诉大家的是,没必要对面试时的表现太在意,你也不要刻意去猜测面试官的问题究竟是想要考查你什么,一是猜不透,二是没必要。"
细节真的能决定成败
"曾经在面试某人时,几个面试官评价都还不错,但我发现此人的应聘表填写不完整,并且有几处和面试回答时并不一致,还有一些小错误。而该岗位工作繁杂,要求非常耐心、细心和认真,因此我建议不予录用,最终被淘汰。"这位HR以此来告诉应届毕业生,细节决定成败。
细节体现在很多方面,包括言行举止、着装等。参与过几年的校园招聘,发现很多同学不太在意,闹了一些笑话,比如西装扣子、商标标签问题等。我们知道,西装的讲究很多,因此要多加留意,建议同学们找些资料看一下,了解相关细节,以免出丑了还不知道怎么回事。
另外,在面试时一定要展现良好的精神状态。我在校园招聘面试时发现有些同学坐在那里没精打采,低着头,小动作不断,说话声音很小,显得很不自信。你说,换成你是面试官会有何感想?建议同学们在面试前要保证充足的睡眠,不要熬夜,面试时要坐姿端正,抬头挺胸,精神专注,声音清晰,充满自信。
3. 关于新的合同法
2007年底 《劳动合同法》让老板集体恐慌?
《劳动合同法》即将正式实施。由于对1994年颁布的《劳动法》中劳资双方的权利、义务等进行了较大调整,新法引起了社会空前广泛的关注。新法的实施,是对长期以来劳资不平等对社会造成巨大不公的一次强力矫正。从短期看,《劳动合同法》提高了企业的用人成本,会让一些企业感到不适应甚至阵痛;但从长远来看,《劳动合同法》有利于敦促企业以人为本,构建和谐的劳动关系。这是企业基业稳固的基石。本报今日推出"特别策划――聚焦《劳动合同法》",吁请企业尊重法律,尊重和善待职工,以赢得长远、健康发展。――编者
在距离新法实施不足3个月之时,华为爆出"辞职门"事件,这场轰轰烈烈的"7000名员工先辞职再竞争上岗",普遍被人们解读为是华为对新《劳动合同法》的一种规避。
爆出类似"辞职门"事件的声音不绝于耳。沃尔玛、韩国LG等相继传出裁员的消息,而被裁掉的多是临时工和长工龄这样的群体。
《市场报》记者在百度上输入"2008年新劳动法",得到49.2万条相关内容。除了对新法内容的介绍和各种解读,还伴随着网民们遭遇雇主不公待遇和年底惨遭解雇的各类申诉。如果将新法比作一个天平,在新法正式实施之时,焦虑的不仅仅是某些老板,还有急需增进对新法的了解、以捍卫自身权益的打工族。
年前被裁掉的正是新法最想保护的那类人群。在"踩雷"之前,企业老板们提前与他们划清了界限。那么,这部新法究竟暗藏了多少利刃,竟引发这场2007年底老板们的集体恐慌呢?
利刃1:限制合同短期化
一份对各地用工市场的调查显示: 60%以上的用人单位与员工签订的劳动合同是短期合同,合同期限大都在1年之内,劳动合同短期化倾向明显。
有专家认为,新法的一大亮点就是着力解决劳动合同短期化问题。这体现在:强调书面劳动合同的重要性,规定用人单位自用工之日起超过1个月但不满1年未与劳动者订立书面劳动合同的,应当向劳动者每月支付两倍的工资。同时规定,1年以上不签书面合同的,就视为签订了无固定期限劳动合同;规定连续订立两次固定期限劳动合同续订合同的应当订立无固定期限劳动合同;规定终止合同时用人单位一般情况下应当按照每年1个月的标准向劳动者支付经济补偿,经济补偿最高不超过12个月;规定在某些特殊情形下(如在该单位连续工作满10年又续订劳动合同的),用人单位应当与劳动者订立无固定期限劳动合同。
利刃2:不签合同代价高昂
将不签订书面劳动合同的后果明确写进立法,体现了立法者落实"书面合同"的决心。新法实施后,违反这一规定的用人单位将付出高昂的代价。
根据《劳动合同法》第八十二条第一款,用人单位自用工之日起超过1个月不满1年未与劳动者订立书面劳动合同的,应当向劳动者每月支付2倍的工资。第十四条第三款则规定,用人单位自用工之日起满1年不与劳动者订立书面劳动合同的,视为用人单位与劳动者已订立无固定期限劳动合同。
更加明确和详细的对违法后果予以明确,大大提升了劳动者权利救济的可诉性,同时也因"违法成本"的高昂而提高了某些用人单位试图违法违规的门槛。
利刃3:详细规定试用期长短
在很多情况下,试用期过长一直被用人单位无偿占有其劳动成果的劳动者诟病,劳动者和雇主签订劳动合同时对此争议最多。而这一现象,将在《劳动合同法》中以更为详尽和明晰的规定予以遏制。新法规定,劳动合同期限3个月以上不满1年的,试用期不得超过1个月;劳动合同期限1年以上不满3年的,试用期不得超过两个月;3年以上固定期限和无固定期限的劳动合同,试用期不得超过六个月。此外,同一用人单位与同一劳动者只能约定一次试用期。
而在试用期领不到工资,或者按比例领取工资的不公平待遇,新法则提出了试用期最低工资的参考标准对其予以纠正:劳动者在试用期的工资不得低于本单位相同岗位最低档工资或者劳动合同约定工资的80%,并不得低于用人单位所在地的最低工资标准。因此,在试用期方面,《劳动合同法》更加具体化和更具可操作性。
利刃4:合同自然终止也要补偿
按照旧法的规定,只有在用人单位单方面解除或主动提出解除未到期的劳动合同时,无过错的劳动者才会获得补偿;如果是合同到期终止,一般情况下劳动者不会得到任何补偿。而在新法中,这一被执行了12年的规定将被颠覆。《劳动合同法》中规定,除劳动者原因不能续约的外,劳动合同终止用人单位也要支付经济补偿,其标准与解除长期劳动合同的标准完全一样,这在第四十四条和四十六条中得以体现。
新法的这一规定属国际通行做法,是对诚信履行劳动合同员工的一种鼓励,也体现了员工离职后使其生活有所保障的一种人文关怀。而对于补偿标准是否过高的问题,有专家认为,这依赖于企业内部制度和经营管理水平是否也在同步提高。只要是守法的企业,成本应该不会大增。
利刃5:劳务派遣难避责
劳务派遣是指由派遣机构与派遣劳工订立劳动合同,由派遣劳工向要派企业给付劳务,劳动合同关系存在于派遣机构与派遣劳工之间,但劳动力给付的事实则发生于派遣劳工与要派企业之间。究其本质,劳务派遣是一种招聘和用人相分离的劳动力经营模式:一方雇用工人但不使用工人,另一方不招聘工人但实际使用工人,双方通过"劳务协议"的方式确立派遣和用人关系。这种经营权和使用权的分离,使劳务派遣先天就有不可弥补的缺陷,劳动者的岗位稳定性和职业安全感很难受到保护,职工的权益也极易受到侵害。
劳务派遣自上世纪90年代后开始在我国逐渐流行。据不完全统计,目前我国的劳务派遣公司有两万多家。一些用人单位热衷于使用劳动派遣工,很大程度上希望能规避责任。
针对新法会增加企业成本、影响用工稳定和用工质量的诸多企业家们的焦虑,有专家认为:《劳动合同法》的出台,在短时期内对企业的管理会带来一定的影响,但也应该注意到,《劳动合同法》的制定宗旨是"完善劳动合同,构建和发展和谐稳定的劳动关系,保护劳动者的合法权益" 。从本质上出发,这是一部保护劳资关系的法律,它的出现体现了共享价值和均衡思想的胜利。对于企业来说,在企业内部营造和谐的、具有发展竞争力的劳资关系,才是巩固和维护自身利益的根本。
新劳动法将于2008年1月1日起施行,这可以说是我们的福音。目前很多用人单位还在延用旧劳动法的用工条款,许多同学对新劳动法的规定还不太清楚。为避免不必要的劳动争议,依法维护自己的合法权益,我们要认真学习新劳动法,慎重签订劳动合同。(请注意试用期的新规定) 【喜欢就分享,让更多的同学都知道】
新劳动法颁布 用工观念须转变
一、用工不能再不签书面劳动合同
《劳动合同法》第10条规定,建立劳动关系,应当订立书面劳动合同。这一规定重申了《劳动法》的规定,即在我国建立劳动关系需要订立书面的劳动合同。但是,在实践中,大多数企业至今仍有一个错误的认识,认为签订劳动合同就是将自己套牢,没有合同就与职工没有劳动关系,可以规避法律的规定自由处置员工的录用与辞退,而且还可以不缴、少缴税款和社会保险,即使员工去告,也会因缺乏证据而不了了之。其实不然,劳动和社会保障部在2005年专门发布的《关于确立劳动关系有关事项的通知 》中早已明确,在用人单位未与劳动者签订劳动合同,认定双方存在劳动关系时可参照的凭证,包括(1)工资支付凭证或记录(职工工资发放花名册)、缴纳各项社会保险费的记录;(2)用人单位向劳动者发放的"工作证"、"服务证"等能够证明身份的证件;(3)劳动者填写的用人单位招工招聘"登记表"、"报名表"等招用记录;(4)考勤记录;(5)其他劳动者的证言等。其中,(1)、(3)、(4)项的有关凭证的举证责任在用人单位。而且这一《通知》还规定了用人单位终止事实劳动关系的也需要支付经济补偿金。因此,我国的劳动法律法规和政策明确杜绝了劳动者因没有劳动合同而在发生劳动争议后求助无门的情况,企业逃避责任的空间更加狭小。更为重要的是,《劳动合同法》还规定,用人单位自用工之日起不与劳动者订立书面劳动合同的,将面临许多惩罚措施。
1、用人单位自用工之日起超过1个月但不满1年未与劳动者订立书面劳动合同的,应当向劳动者每月支付2倍的工资。
2、用人单位自用工之日起1年不与劳动者订立书面劳动合同的,视为用人单位与劳动者已订立无固定期限劳动合同。一旦订立无固定期限的劳动合同,没有法律规定的可以解除劳动合同的情形,用人单位无法辞退劳动者,否则,违法辞退要支付2倍的经济补偿金。
由此可见,新法实施后用人单位不签订书面劳动合同的,将面临风大的法律风险。因此,用人单位必须转变以前的观念,牢固树立起"用人就要签订书面合同"的观念。
二、劳动合同不能再一年一签
在以往的实践中,用人单位用工往往喜欢一年一签劳动合同。原因主要是,先前的法律规定劳动合同到期终止的,企业不需要支付经济补偿金,因此,一年一签劳动合同,可以规避解除劳动合同支付经济补偿金的风险。但是,这一做法在新法实施后将不再好使。
首先,《劳动合同法》第46条规定,人单位维持或者提高劳动合同约定条件续订劳动合同,劳动者不同意续订的情形外,依照本法第四十四条第一项规定终止固定期限劳动合同的,用人单位应当向劳动者支付经济补偿金。这就意味着,劳动合同期满后,用人单位不与劳动者续签劳动合同或者与劳动合同续签劳动合同时提供的条件比原劳动合同约定的较低导致劳动者不愿续签劳动合同的,用人单位需要支付经济补偿金。这一规定是劳动合同到期终止与劳动合同解除在支付经济补偿金上的区别趋于淡化。因此,一年一签劳动合同的优势不在明显。
其次,《劳动合同法》第14条规定,连续续签两次固定期限的劳动合同后,再次续签劳动合同的,如果劳动者提出签订无固定期限劳动合同的,用人单位必须同意。这就意味着如果企业选择一年一签劳动合同,那么两年后,企业只有两种选择,要么选择不续签合同,支付经济补偿金后,与劳动者分道扬镳;要么选择续签劳动合同;选择分道扬镳,可能会使自己培养的员工流失,等于为他人做嫁衣;选择续签,可能面临签订无固定期限劳动合同的风险。
由此可见,选择一年一签劳动合同,对企业来说是极不利的。新法实施后,企业应注意劳动合同期限的合理搭配。
三、违约金不能再随意设定
劳动合同中能否为劳动者设定违约金条款,是一个比较有争议的话题。《劳动法》对这一问题规定不是很明确。各地的地方性立法对此规定是大相径庭,有的可以约定违约金,有的是限制违约金。《劳动合同法》的出台使这一问题走向了统一。《劳动合同法》规定,只有在两种情形下,用人单位可以约定由劳动者承担违约金:
一是在培训服务期约定中约定违约金。用人单位为劳动者提供专项培训费用,对其进行专业技术培训的,可以与该劳动者订立协议,约定服务期。劳动者违反服务期约定的,应当按照约定向用人单位支付违约金。违约金的数额不得超过用人单位提供的培训费用。用人单位要求劳动者支付的违约金不得超过服务期尚未履行部分所应分摊的培训费用。
二是在竞业限制约定中约定违约金。用人单位与劳动者可以在劳动合同中约定保守用人单位的商业秘密和与知识产权相关的保密事项。对负有保密义务的劳动者,用人单位可以在劳动合同或者保密协议中与劳动者约定竞业限制条款,并约定在解除或者终止劳动合同后,在竞业限制期限内按月给予劳动者经济补偿。劳动者违反竞业限制约定的,应当按照约定向用人单位支付违约金。竞业限制的人员限于用人单位的高级管理人员、高级技术人员和其他负有保密义务的人员。竞业限制的范围、地域、期限由用人单位与劳动者约定,竞业限制的约定不得违反法律、法规的规定。在解除或者终止劳动合同后,以上规定的人员到与本单位生产或者经营同类产品、从事同类业务的有竞争关系的其他用人单位,或者自己开业生产或者经营同类产品、从事同类业务的竞业限制期限,不得超过二年。
由此可见,新法实施后,除以上两种情形外,用人单位不得与劳动者约定由劳动者承担的违约金,或者以赔偿金、违约赔偿金、违约责任金等其他名义约定由劳动者承担违约责任。
四、试用期不再是廉价期
试用期本来是用人单位与劳动者在劳动合同中协商约定的对对方的考察期。但是,用人单位滥用试用期的现象比较严重。《劳动合同法》延续了《劳动法》有关试用期的一些规定,如试用期属于劳动合同的约定条款,双方可以约定也可以不约定试用期;试用期包含在劳动合同期限之内;试用期最长不得超过六个月。同时,针对实践中一些用人单位滥用试用期的问题,如试用期过长、过分压低劳动者在试用期内的工资、在试用期内随意解除劳动合同等,《劳动合同法》作出了一些与《劳动法》不同的新规定:
1、试用期的期限与劳动合同的期限对应关系有规定,即劳动合同期限三个月以上不满一年的,试用期不得超过一个月;劳动合同期限一年以上不满三年的,试用期不得超过二个月;三年以上固定期限和无固定期限的劳动合同,试用期不得超过六个月。以完成一定工作任务为期限的劳动合同或者劳动合同期限不满三个月的,不得约定试用期。
2、同一用人单位与同一劳动者只能约定一次试用期。续签劳动合同时,不论是否变更岗位都不得在约定试用期。
3、试用期应包括在劳动合同期限之内。单独的试用期合同不成立,该试用期合同就是劳动合同,视为用人单位放弃试用期。
4、试用期工资有了新标准。新法规定:劳动者在试用期的工资不得低于本单位同岗位最低档工资或者劳动合同约定工资的80%,并不得低于用人单位所在地的最低工资标准。
5、违法试用要支付赔偿金。新法规定:用人单位违反本法规定与劳动者约定试用期的,由劳动行政部门责令改正;违法约定的试用期已经履行的,由用人单位以劳动者试用期满月工资为标准,按已经履行的超过法定试用期的期间向劳动者支付赔偿金。即超期试用的除支付试用期工资外,还另外支付一个转正后的工资作为赔偿金。
因此,新法实施后,试用期也不再是廉价期,用人单位在试用期的行为将受到更多的制约。
五、辞退员工不再轻而易举
《劳动合同法》除沿用《劳动法》关于用人单位单位辞退劳动者情形分为三大类:即时通知解除、预告通知解除和经济性裁员。但是用人单位在每一类辞退员工的情形中都有条件限制,如即时通知解除劳动合同的,用人单位需要承担举证责任,即劳动者在试用期内不符合录用条件或严重违纪或严重失职、营私舞弊给本单位造成重大损失或劳动合同无效或员工兼职给完成本单位工作造成严重影响或被追究刑事责任等;预告通知解除劳动合同的,需要符合法定情形、履行法定程序;经济性裁员也要符合裁员的条件并履行法定程序等。
法律在规定用人单位可以辞退劳动者情形之外,还规定了用人单位不得解除劳动合同的六种情形。《劳动合同法》第42定,劳动者有下列情形之一的,用人单位不得依照本法第四十条、第四十一条的规定解除劳动合同:(1)从事接触职业病危害作业的劳动者未进行离岗前职业健康检查,或者疑似职业病病人在诊断或者医学观察期间的;(2)在本单位患职业病或者因工负伤并被确认丧失或者部分丧失劳动能力的;(3)患病或者非因工负伤,在规定的医疗期内的;(4)女职工在孕期、产期、哺乳期的;(5)在本单位连续工作满十五年,且距法定退休年龄不足五年的;(6)法律、行政法规规定的其他情形。
此外,对于有工会的,用人单位单方解除劳动合同,应当事先将理由通知工会。用人单位违反法律、行政法规规定或者劳动合同约定的,工会有权要求用人单位纠正。用人单位应当研究工会的意见,并将处理结果书面通知工会。
最后,法律规定了用人单位违法辞退员工的法律后果。《劳动合同法》第48条规定,用人单位违反本法规定解除或者终止劳动合同,劳动者要求继续履行劳动合同的,用人单位应当继续履行;劳动者不要求继续履行劳动合同或者劳动合同已经不能继续履行的,用人单位应当依照本法第八十七条规定支付赔偿金。《劳动合同法》第87条规定,用人单位违反本法规定解除或者终止劳动合同的,应当依照本法第四十七条规定的经济补偿标准的二倍向劳动者支付赔偿金。
综上,新法实施后,用人单位辞退劳动者的条件更为严格、程序更为复杂、违法辞退的成本要翻倍。因此,辞退员工不再是"欲加之罪、何患无辞"。
六、劳务派遣用工不再是避风港
劳务派遣子在我国产生以来,以其机制灵活、用工效率高、便于分散法律风险等而获得企业青睐,逐渐成为劳动力市场上一个重要组成部分,成为"人力资源外包"的一种形式。但是,新法实施之后,劳务派遣将不再是企业规避风险的港湾。
1、法律明确了用工单位应当履行的义务。《劳动合同法》第62条规定的用人单位的义务主要包括用工单位应当执行国家劳动标准,提供相应的劳动条件和劳动保护;告知被派遣劳动者的工作要求和劳动报酬;支付加班费、绩效奖金,提供与工作岗位相关的福利待遇;对在岗被派遣劳动者进行工作岗位所必需的培训;连续用工的,实行正常的工资调整机制;应当按照劳务派遣协议使用被派遣劳动者,不得将被派遣劳动者再派遣到其他用人单位。
2、定用工单位与劳务派遣单位承担连带责任。为防止用工单位规避劳动保障法律法规,促使用工单位只有在真正符合社会化分工需要时才采用劳务派遣形式用工,并且与规范的劳务派遣单位合作、督促劳务派遣单位依法履行义务,《劳动合同法》规定,在被派遣劳动者合法权益受到侵害时,用工单位与劳务派遣单位承担连带赔偿责任。这一连带责任的规定,将使企业采用劳务派遣用工的法律风险大幅度增加,劳务派遣用工方式分散法律风险的作用荡然无存。
七、规章制度不再单方可以决定
在企业管理者的观念里,企业规章制度应该是企业自主决定的,属于企业单方决定的事项。其实不然,这一观念已与法律的规定相冲突。《劳动合同法》第4条规定,用人单位在制定、修改或者决定有关劳动报酬、工作时间、休息休假、劳动安全卫生、保险福利、职工培训、劳动纪律以及劳动定额管理等直接涉及劳动者切身利益的规章制度或者重大事项时,应当经职工代表大会或者全体职工讨论,提出方案和意见,与工会或者职工代表平等协商确定。这里的"讨论通过"、"提出方案和意见"、"平等协商"等规定已经是规章制度有单方行为变为了双方行为,即新法实施后,企业制定规章制度的行为将是一个民主表决和集体协商的双方行为。
八、拖欠劳动报酬不再可取
《劳动合同法》第85条规定:用人单位有下列情形之一的,由劳动行政部门责令限期支付劳动报酬、加班费或者解除、终止劳动合同的经济补偿;劳动报酬低于当地最低工资标准的,应当支付其差额部分;逾期不支付的,责令用人单位按应付金额50%以上100%以下的标准向劳动者加付赔偿金:(1)未依照劳动合同的约定或者未依照本法规定支付劳动者劳动报酬的;(2)低于当最低工资标准支付劳动者工资的;(3)安排加班不支付加班费的;(4)解除、终止劳动合同,未依照本法规定向劳动者支付经济补偿的。这一规定的出台,将大大加重用人单位拖欠工资的成本。因为,原劳动部《违反和解除劳动合同的经济补偿办法》规定,用人单位克扣或者无故拖欠劳动者工资的,除在规定的时间内全额支付劳动者工资报酬外,还需加发相当于工资报酬25%的经济补偿金。这次劳动合同立法加大了对无故拖欠工资行为的处罚力度,将原来加付25%的标准提高到了50%——100%。
此外,《劳动合同法》还为劳动者追讨欠薪开辟了绿色通道,其第30条第2款规定:用人单位拖欠或者未足额发放劳动报酬的,劳动者可以向当地人民法院申请支付令,人民法院应当发出支付令。
因此,新法不仅规定了企业拖欠劳动报酬要加付一倍以下的赔偿金,还为劳动者讨薪开辟了绿色通道。欠薪的成本要大幅度增加,欠薪将得不偿失。
九、招工不可再收取押金、扣押证件
在实践中,有些企业以防偷、防跑、防犯规等等为由在与劳动者签订劳动合同时,收取"押金"、 "保证金"等,如果没有押金,就扣下试用期期间的工资做抵押。其实,这种做法是违反法律的,一旦劳动者向劳动部门投诉,企业是得不偿失。《劳动合同法》第9条再次规定:用人单位招用劳动者,不得要求劳动者提供担保或者以其他名义向劳动者收取财物,不得扣押劳动者的居民身份证或者其他证件。而且新法还规定了用人单位违法的处罚措施,其第84条第1款规定:用人单位违反本法规定,扣押劳动者居民身份证等证件的,由劳动行政部门责令限期退还劳动者本人,并依照有关法律规定给予处罚。第84条第2款规定:用人单位违反本法规定,以担保或者其他名义向劳动者收取财物的,由劳动行政部门责令限期退还劳动者本人,并以每人500元以上2000元以下的标准处以罚款;给劳动者造成损害的,应当承担赔偿责任。因此,新法实施后,企业在招工时收取押金、扣押证件的,不仅面临行政处罚,还将面临民事赔偿。
十、退工义务不再可以随意拖延履行
劳动合同解除、终止后企业还需要积极相关的附随义务,如对于从事有职业危害作业员工在劳动合同解除、终止前作健康检查,支付经济补偿金,出具劳动关系解除、终止证明,转移档案、社保关系等。需要指出的是,《劳动合同法》还为这些附随义务设定了时间表。《劳动合同法》第42条规定,对于从事有职业危害作业员工在劳动合同解除、终止前未作健康检查的,单位不得解除、终止劳动合同。《劳动合同法》第50条规定,用人单位依照本法有关规定应当向劳动者支付经济补偿的,在办结工作交接时支付。《劳动合同法》第50条规定,用人单位应当自解除或者终止劳动合同之日出具解除或者终止劳动合同的证明,并在15日内为劳动者办理档案和社会保险转移手续。《劳动合同法》第84条规定,劳动者依法解除或者终止劳动合同,用人单位扣押劳动者档案或者其他物品的,由劳动行政部门责令限期退还劳动者本人,并以每人500元以上2000元以下的标准处以罚款;给劳动者造成损害的,应当承担赔偿责任。由此可见,新法实施后,用人单位解除、终止劳动合同的附随义务有了时间表,有人单位应在法定时间内积极履行附随义务,否则,将有可能承担赔偿责任。
中华人民共和国劳动合同法
中华人民共和国主席令
第六十五号
《中华人民共和国劳动合同法》已由中华人民共和国第十届全国人民代表大会常务委员会第二
十八次会议于2007年6月29日通过,现予公布,自2008年1月1日起施行。
4. 关于薪水
非国企的6000不见得多,国企的3000不见得少。
我这里所说的非国企包含了民企(华为等等)、一般的外企以及上海、深圳那些满天遍地的小公司。表看猫扑上面的很多人发贴"每月4000怎么过"、"每月6000怎么供房",呵呵,这些帖子真的很误导我们的很多学弟——这么告诉你吧,一向以高薪吸引人才的华为给99级本科生的"实际月薪"(能真正拿到手里的)是2000出头、硕士毕业生3000出头。你要问怎么会这么少?就是这么少。下面我就来慢慢解析不同体制的公司(单位)的薪水。
可能大家在51job或者其他招聘场所,都会经常看到一些巨头公司常年累月的把招聘信息挂在那里,好像他们永远缺人。其实这种招聘信息你大可不必当真,很多时候这只是公司探试行业就业形势的行为——根据收到的简历来分析目前某一职位的供缺情况。比如如果发现能够在某一职位收到很多比现公司在这个职位上工作的员工更牛的人的简历,那公司就会在未来的时间里大幅度削减这一职位员工的薪水,当然它不见得会明目张胆不分青红皂白扣在职员工的薪水,至少它不会再给你涨多少;新招入的这个职位的员工的起薪就砍一半先。
再回头来说我刚才提到的"实际月薪"。我说了,非国企的6000月薪不算多。首先非国企的薪水通常是税前、而且诸如社会保险、养老保险、失业保险云云都没有扣除——在深圳一个非国企月薪6000,那么杂七杂八扣完以后能拿到手里就是不到5000,再每月供房2000,剩下就是2000多,平时吃喝拉撒就全在里面了,还要想清楚你要结婚生子,看你一个月能存多少。这样看6000多不多?
下面我们来看国企的3000。通常一个部门公务员或者事业单位的朋友告诉你,他月入3000,那这3000就是零花钱3000。你要晕?!国企有一个计划经济留下的传统,讲发给员工的薪水的数目从来都是税后,而且是把各种保险以及住房公积金全部扣除后的数目。顺便强调一下住房公积金这个东东。很多在非国企工作的人都不知道,甚至以为是住房补贴,至少我知道华为是没有这个东东的——我一个高中同学大学毕业在上海闯荡了2年,甚至不知道什么是住房公积金,我茫然,所以觉得有必要说说,我担保这里工作了几年的很多猫也不知道。
住房公积金是每月从你的工资中扣除一部分钱,再由单位将这笔钱乘以2用于支付你的供房,所以扣得越多越好——比如我目前在单位的住房公积金是875,那么单位就会每月拿出1750元打到我的住房按揭账户,那么每月的月供我就几乎可以不管了。话题再回到月薪3000,这个时候供房已经没有压力,而且在效益好的国企或者部门每月还会有水、电、气补贴,时不时会发些莫名其妙的钱(诸如工会活动费),再加上年终奖(这个是大头,效益好的国企的年终奖堪比跨国公司的分红,我一个朋友在中国银行xx分行,今年年终奖7万)。这就是为什么那么多人打破头要当公务员的原因。
这样一算,觉得国企收入咋样?有时候很多国企钱发得很散,自己都没有察觉,过一阵几百、过一阵几百……这些钱再算自己收入的时候往往都没有算进去。有的人觉得自己收入少,其实只要记个账,绝大部分人收入都不低。当然,这样的收入也不是绝对,根据我的一点点经验,国企的一个公司或者一个部门,效益好不好和你的老总或者x局的能耐有很大关系——有能耐的领导是能让下面的人吃饱、自己也吃饱而又能糊弄上级的能人。这也是同样一个单位地域不同部门不同收入差距大的原因。
有调查美国的大学生就业选择排行——1.部门;2.跨国公司;3.自主创业;4.中型公司。不要想在一些不知名头的小公司作呆一辈子的打算
5.关于为人处事
很多工作了很多年的人往往会对即将工作的年轻人说这么一句话"少说话,多
做事"。当时有很多人给我说过,我没有在意,到今天才真正知道这句话的分量!
很多初出茅庐的毕业生,新到单位,豪气凛然、意气风发,大有大干一番事业
的决心和勇气,盯着主管或者主任那个位置,恨不得马上取而代之——于是乎抓来
10几年读书学习的经验如法炮制——引起班主任的注意,我当上了班长;引起了系
领导老师和同学的注意,我当上了学生会干部;来到单位,我同样要引起领导的注
意,要他们时刻注意的我存在,要出头。这样想你就傻x了。枪打出头鸟,打的就
是这种不知天高地厚的小鬼。言多必有失,一失就会得罪人——这话不仅仅适用于
国企,民企、外企之间的人事关系都是这样。不要总以为你有天大的本事无处施展
而一幅怀才不遇状,我不相信刚从学校毕业谁就有什么本事,下面这句话不是奚落
应届毕业生,"大学刚毕业你就是屎",真的是这样,不要把自己看高了,和你在
一个办公室里的人比你牛的人多得去了。你刚工作就不要乱说话,没你说话的份,
2年以后你才有资格和领导搭讪。每天在那里向在学校一样想着怎么吸引"领导"
的目光,大家都盼着往上爬,你刚来就那么活蹦乱跳、那么多说不完的话同事会怎
么想?可能你只是想聊天,和同事增进感情,呵呵,你可知看似风平浪静谈笑风生
的一间屋子暗藏了多少杀机?张三和李四2年前结下的梁子现在还在明争暗斗;那
五和赵刘现在正在为一个副主管的位置争得面红耳赤……你和其中一个人谈笑风生
,嘿嘿,他的另一头可看在眼里。不要招人烦,就不要说话,复印文件之类的杂活
跑快点(多做事同时也要看情况,不要瞎抢着干,要审时度势,比如另一个老同事
想巴结领导要干,你就不要上了,要大家都不想干的东西,你才上)。只要让领导
知道公司目前有你这个人、老同事在谈起你的名字的事会说"xx,老实,实在……"那你的第一年就圆满了。
所以刚毕业时不要好高鹜远,关键在于踏实肯干、学习知识和业务技能。而不要总抱怨待遇太少。
淡泊以明志,宁静以致远。
这是我比较有同感的几段话,希望在你们将来的岁月里有所帮助。
当你在为错过落日的美丽而懊悔时,你又将错过月亮的光。
智慧妻子
2
老公想吃苹果时马上就去洗。经验证明推来推去的结果不仅有伤和气而且所消耗的时间和能量已经能洗完苹果了。
3
点菜时要明确说出想吃什么。免得点完之后谁都不爱吃或者只有一方爱吃事后犯嘀咕。
4 吵架时绝不说分手或者离婚,免得事后下不了台。
5 尽量不要用食物(特别是水果,拎着又沉)做礼物,免得吃完之后就忘记。
6 吵架时尽量少发火多流泪。
7 一定要记住老公的生日(阳历的和农历的),保证第一个向老公说生日快乐。
8
养成一见老公就笑的习惯(可以想象和你一起散步时因为他越来越鼓的肚子远远看着让人搞不清哪个是孕妇)。特别是下班回家开门时。
9
需要老公陪同而老公不能陪同的时候想象自己是保家卫国者的妻子,告诉他:你忙吧,我能行。
10 软磨硬泡的时候注意发挥女性特色。
11 故意在他半睡半醒的时候亲他并帮他盖好被子。
12
在他吹嘘自己的时候假装很崇拜他,并表现出对未来幸福生活充满希望的样子。
13
在你看电视或碟片看到故事里的婚姻生活很悲惨的时候,想一下你丈夫对你好的时候,不在身边的话就给他打个电话,在身边的话,就趴在他身上哭一会,并且说,我们不要那样好不好?
14
在老公向你献殷勤之后表现出特别兴奋的样子,并且说一句"老公你对我最好了!"以资鼓励。
15
偶尔的用不经意的语气对老公说起诸如某位男同事刚来的时候想请你去喝咖啡,而你却因为想要给你去买件T恤拒绝的事。
16
既然已经选择和他共度人生,就不要幻想改变他,能改变的只有自己。教育是徒劳的,感化是可行的。如果还是不行,在和他闹翻前准备好退路。
17
用他的钱健身买衣服和化妆品。在他眼里至少你在每个年龄段都比上不足比下有余。而这一点只要你愿意修饰是很容易做到的。男人乐意为妻子的美丽买单。
18
在你无聊的时候找些对你有好处的事情做,多花钱也无所谓。切记不要选择和男人聊天,一旦红杏出墙,最好的结果是你常常陷入去与不去约会的两难选择。
19
老公的缺点要一分为二的看。天下没有绝对的缺点与优点。如果他懒惰,那么他就会有更多的休息时间;如果他没钱,那么他会少些出轨的可能;如果他长得难看,就会少些第三者的可能;如果他没有上进心,他会把全部注意力集中在你的身上。
20
男人在工作学习和思考的时候,不要试着让老公的注意力转移到你身上来。因为他们是为了共同的家奔波劳累,这时唯一能做的是给他宁静的空间,可以去给他快喝干的水杯里加水,或者去熬一锅猪蹄银耳汤,等他干完活,就着窗外的零星灯火喝一碗,他会感觉特别温暖。
工作中用到的软件(转)
Studio外,都是开源的,可以免费使用。你去google用本文的软件名做关键字可以很容易地搜索到这些软件,以及它们的文档和用户手册,来学习使用。它们是全世界乐于奉献的软件高手们智慧的结晶,好用不是吹的。
1. vi
现在人们所说的vi,都是指vim(http://www.vim.org/),它是一个功能十分强大的快速编辑工具,不仅可以用它写普通文章,还能够编写各种语言的代码,而且如果你有相应的配置文件,就可以支持关键字多色彩显示。而它灵活的快速编辑功能,更是我的最爱。你可以不使用鼠标而十分便捷地移动光标,或者删除、更改、替换,而移动或者编辑的单位,可以是一个字符、一个单词、一句、一行、一段、句首、句尾等等,这样你就可以完全不使用鼠标而快速编辑,比起使用鼠标,要快很多。
而用vi写代码还有不少很好用的功能,首先是可以限制行宽。我们的代码需要限制行宽在80个字符,刚开始不适应这个要求,因为这个要求最初是为了适应那种老古董终端的,而现在那种东东都进了垃圾堆和博物馆。但是,由于已有的代码都保持了这样的格式,而且组内的很多专家级开发者30多年来一直是这样的习惯,所以,我们新人必须去适应。使用vi可以设置列宽为80个字符,这样超出后就折行了,很容易辨认。
第二,vi可以与cscope合作,完成代码浏览的功能。cscope我在后面还会介绍,有了vi和cscope,我们就有了大部分Visual
C++的功能,还有不少超越,而且可以避开它的很多缺点。
第三,vi有丰富的插件,可以完成很多辅助功能,比如拼写检查。第三,针对代码编写,有很多体贴的辅助功能,比如写c代码的多行注释时候,当输入回车换行后,自动有一个星号放在新行并且与上一行的星号在同一列;写c++代码多行注释时也自动有一个//放到新行。
vi的windows版本gvim还支持windows的编辑命令,比如Ctrl-c, Ctrl-v, Ctrl-x,
Ctrl-p, Ctrl-z, Ctrl-y等等,对于习惯了Windows文本编辑器的用户,很容易适应。
vi也有一些缺陷,首先是对汉语的支持比较差,你没办法使用w或者b向后、向前移动一个词,因为vi没有分词能力,它会把光标移动到下一个非汉语字符的位置,当然它也没办法完成针对汉语的拼写检查。即便如此,并不影响我使用vi的兴趣,事实上,虽然我的机器上有公司购买的正版的ms
office办公软件,我只用过powerpoint来创作一些ppt用于演讲,其余的时候,都是在用vi。
新手对于vi还有一个困惑,就是命令比较多,很难掌握,不好记住。我最初就是这样,后来发现了一些规律:vi的命令都是动宾结构的,可选地前缀一个数目。比如2dw删除当前光标后面两个单词,这里面的2就是数目,表示执行这个命令两次,而真正的命令dw就是一个动宾短语,d表示删除,w表示当前光标后面两个单词。于是我们只要记住所有的动词和所有的可以操作的对象即可。对文本的动作无非这些:删除(d)、更改(c)、复制(y)、移动
(<,>),而可以操作的对象是从当前光标位置开始,到一定范围结束的所有字符,这个范围包括词首(b)、词尾(w)、句首(()、句尾
())、行首(^)、行尾($)、上一行(-)、下一行(+)、上一段({)、下一段(})
。所以一个命令是这样的形式:数目-动作-对象,这样你输入2dw时候,vi就把当前光标位置开始的两个单词删除。如果你不输入动作,那么默认的动作是移动光标而不改变文件内容,这样你可以很快地把光标移动到目标位置,然后进入输入模式来输入字符,这远比抓住鼠标,然后转滚轮或者移动鼠标来定位要快很多。当然,有少数命令还是要特殊记忆,比如针对字符的删除是x,替换是r,这时自然没有了范围因为范围已经固定成为光标下面的单个字符了,所以你可以用3x来删除从当前光标位置开始的3个字符。
vi特意为编码准备了一个[和]命令,在命令模式下两次输入[或者]字符,你好发现光标移动到了上一个{的位置或者下一个}的位置,这可以帮助我们快速地定位到上一个函数或者类、下一个函数或者类。
要有效地使用vi的搜索和替换功能,你就要掌握一些正则表达式(regular
expression, regex)
的知识了,可以说,在*nix上面工作,正则表达式是基本要求,因为shell, sed,
perl等等的脚本,都会或多或少地使用到它。
2. cscope
这个软件可以做代码快速浏览,你可以快速找到一个函数、类、变量、宏的定义,一个函数调用了那些其他函数,以及那些其他函数调用了它,等等。这里(http://cscope.sourceforge.net/)
可以下载cscope,还有使用手册。在Linux上,它是我所知道的最有效的代码浏览工具。它可以和vi密切配合。首先,你可以在vi里面输入命令来调用cscope完成上述代码浏览功能,同时,当cscope列出一系列符合条件的条目后(比如你要找到所有调用了printf的函数,cscope返回给你一个列表,里面每一个都是一个这样的函数),选择一个,cscope又会启动vi来显示代码,而这样的嵌套不受数目限制。cscope的另一个强大功能是,它支持各种各样的编程语言,默认是c语言。这个教程全面地介绍了如何让vi和cscope协同工作:http://cscope.sourceforge.net/cscope_vim_tutorial.html
3. gcc
gcc恐怕是当今全世界使用的最多的编译工具了,很重要的一个原因是:它包含了很多种语言的编译器
:) .
使用编译器的方式是写Makefile,而我写出第一个Makefile的方式是修改一个简单的已有的Makefile。后来仔细看过了很多
Makefile,对它们越来越熟悉了,觉得它们越来越亲切了,它好过visual
studio的很重要的一个原因是,你从Makefile中可以清楚地看到整个编译、链接的过程。而configure脚本自动产生Makefile,然后由Makefile编译链接这种工作方式,是*nix平台上非常有特色的一种发布方式。gcc比较新的版本都是完全遵循c++语言标准的,而且它有逐步替代各个平台上的c/c++编译器的趋势。
4. gdb
gdb是一个功能很强大的调试工具,它的影响力很大,以至于诸如perl,
python等的调试器,都是用和gdb一样的调试命令集。但是在用户友好性方面,说实话,我用过的最好的调试工具还是MS
的Visual
Studio,毕竟gdb输出的密密麻麻的纯文本看起来还是很费神,特别是当你的代码中有很多c++类模板时候,一个模板类可能要占据调试输出的好几行,看起来相当头大。要不是我的显示器屏幕够大,我想我前段时间会崩溃于此的。所以当可以在windows上面调试时,我先用vc调试通过,然后放到*nix
上面编译链接运行测试、这时常常会祈祷万事大吉,但偏偏有几次在*nix上面有问题而不得不调试。
上面四个工具的有机组合,基本上构成了在*nix上面的集成开发环境,虽然在用户友好性方面它们比不过visual
studio,但是你不可能囿于ms
的小世界,否则你的产品很可能发展空间不大;而对于我们的产品Berkeley
DB,其多平台的支持是最基本的特征之一,所以,这些工具是肯定要使用的。刚开始觉得他们像旧石器时代的产品,但是现在觉得它们是我离不开的好朋友了,它们虽然没有花哨的外表,虽然没有那么体贴入微,但是他们的稳定可靠、不思索取只求贡献、优秀的技术品质等等,都是现在很吸引我的方面,自由软件的世界正是由于这些坚硬的磐石做根基而如此稳定可靠。
5. visual studio
在微软的平台上开发时,我会用到它,另外就是,调试时尽量使用它。它的代码编辑器有些缺点,首先是编辑速度较vi慢,而且,如果你没有选择等宽的字体,就不方便保持代码格式,或者本来对齐格式良好的代码,在vc里面反而不对齐了,等等。当然,浏览代码还是很方便,虽然有时候索引数据旧了却不更新,以至于"
转到定义"等功能不准确了。vc自负地相信它自己能够自动地做好索引更新,可惜它没有完全做好,我只好忍受索引不一致期间的痛苦;cscope则相反,用户命令它更新索引它才这样做,这样至少我可以"要求"它立刻更新索引,它会忠实的执行我的命令.
6. gprof
这是与gcc协作的一个profiling工具,不能对其他编译器创建的可执行文件做profiling。通过把你的软件用profiling模式编译,然后运行软件,你就得到了一个profiling数据文件,把这个文件送给gprof,gprof就能够产生一个
profiling报告,它能给你报告你的代码中各个函数执行花费的总的时间、被调用的总次数,以及任意一个函数调用了那些函数,每个函数各花费了多少时间、被调用了多少次。用这些数据我们可以分析软件的性能,比如某个函数花费了过多的时间,或者被调用了过多的次数,就要分析原因,这很可能能够帮助你找到影响性能提高的不良设计。这些数据可以帮助我们找到软件中影响性能的代码,以及不良的设计,以便改正。通常,应该对软件的所有的测试程序跑
profiling
test,并且我有一个tip,就是你的测试程序要持续很长一段时间,这样计时才准确。因为计时的时间单位是0.01毫秒,而profile的代码单位是函数,所以如果一个函数只执行了几次,它的总时间在报告中可能是0.02毫秒,而这个数字是不准确的,很可能你下一次得到的结果是0,或者0.06毫秒。为了准确,我们的测试必须要尽可能多地覆盖到代码的各个角落,并且测试最好在同一个进程中重复很多很多次,这样绝大多数比较复杂的函数都可以执行足够多次以便每个函数耗时多十几倍于计时单位0.01毫秒,这样计时才是准确的。如果用脚本多次运行同一个测试程序,结果还是不准确的,因为它们在不同的进程中执行,时间没有累积起来。
7. gcov
这也是gnu的一个很有用的工具,它能产生测试覆盖统计数据,以便我们搞清楚软件的那些地方还没有测试到,从而增加更多的测试来覆盖到那里。当测试覆盖率提高后,不仅软件的质量更加可信和可靠,上面的gprof产生的profiling报告也会更加全面准确,从而对性能分析和提升也有益处。
gcov产生的覆盖报告是纯文本的,看上去比较枯燥,而lcov能够把这种结果转换为html页面,这样看起来直观很多。
8. cygwin
这是一个运行在Windows上面的用于模拟*nix用户使用环境的软件,完全安装后,它包含了几乎所有*nix上面常用的软件工具,这让我们在
windows上面高效地工作成为可能。我的感觉是,当完全习惯了在*nix环境下工作,适应了使用shell和各种脚本来批处理的工作模式后,工作效率会比原来Windows上面提高很多,并且完全离不开cygwin了。
9. mercurial
这是一个分布式的源码控制系统,它的功能比cvs或者svn要强大的多,支持各种复杂的版本控制任务,比如多个分支的管理等。所谓分布式的,是说如果多人协作工作,每个人的机器(site)上面都有关于这个代码库的所有信息,它们是平等的,当然,在实际使用中,我们还是会使用一个中心服务器,所有开发者向这个site提交更改。现在有windows上的图形界面版本TortoiseHg,以及Eclipse插件。如果加上MqExtension,使用就更加方便了。以前一直在用cvs,也用过一段时间svn,感觉还是mercurial更好用更强大。
10. patch
与mercurial以及其他版本控制工具紧密相关的,就是
patch工具,它用于把版本控制软件产生的补丁文件(diff 文件,也叫做patch)
应用(apply)到代码库中。另外,偶尔还需要独立的 diff 工具比较文件。
11. Eclipse
我用的是Eclipse的各种变体,比如vxworks,
qnx等的IDE,他们附带在这些嵌入式平台提供的整套开发环境中。它们都是在Eclipse的基础上略作改动的,我几乎找不到多少它们与正宗的
Eclipse的不同。这就是开源的好处---大家不用重复开发功能相近的一大堆IDE了,全世界的高手们认认真真做好一个IDE,大家一起受益。
12. Putty
我用这个软件来连接我的Linux服务器,在真实的Linux环境中工作。它还有一个小兄弟,叫做WinSCP,类似
ftp,用于在两台机器之间传递文件。当然,使用putty还会间接地用到ssh,来安全地连接远程机器。 与putty类似功能的还有vnc,
vnc是一个c/s架构的软件, 在远程服务器上面安装上vnc服务器并且启动服务器后,客户端与之连接,它的好处是当客户端断开连接后,对于远端的服务器来说,你仍然在登录状态,这样,如果你需要运行一些持续几天的脚本的话(在命令上追加后台运行'&'指令并不总是管用),
可以用vnc。
13. Thunderbird
我用它收发邮件,我的感觉是,它比outlook好用很多,另外,由于我在linux上面也是在用它,所以统一使用一个软件还是简单的多。
14. firefox
功能强大的浏览器,除了在淘宝交易外,我都用firefox上网,实在找不到更多不用它而使用ie的理由。
15. pidgin
公司内部的IM协议是Jabber,而自己还有msn、yahoo账户,所以直接使用pidgin,简单方便。最欣赏它的有两点:首先是多协议,多平台,开源,开放,稳定可靠;第二是,它没有任何广告,而这是值得敬重的--pidgin的开发团队值得我们用户尊敬。如果pidgin也动不动喷出一个广告,像拉出一坨屎一样的话,我会对它很反感的,这个世界上除了钱之外,还有更多其他东西值得珍惜和追求。在中国现在这个铜臭气熏天的时代,能有多少个
IM开发商做到这一点?
16. bash
它是*nix的常用 shell之一,
很多批处理的工作可以写出shell脚本来运行。用习惯了bash,包括cygwin上面的bash,觉得Windows的Explorer以及其他管理工具太慢太麻烦了,更别提自动化了。
17. ssh
用它安全地登录另一台机器,并且在其上执行各种操作。例如,我们可以通过ssh登录到远程机器上面运行各种shell脚本执行批处理任务,这通常是自动化测试当中重要的一步。
18. doxygen
用它可以自动产生代码API文档,只要我们在代码中用特殊标记来标记文档格式即可。这样做的好处是,软件的文档和代码更新可以同步进行,因为这些文档就是写在代码文件中的。更新代码的同时更新文档,然后运行doxygen,新的文档就产生出来了。在Berkeley
DB的下一个发布版本中有我完成的一个规模较大的功能模块,
其中使用了doxygen格式的API 文档,感觉相当不错!
如果一个软件不是一个类似Berkeley
DB的程序库,而是一个直接面对用户的GUI软件,我们仍然有必要在所有代码文件中添加doxygen标记的文档,这样可以产生出供开发者使用的文档。
19. docbook
它也是用来产生文档的,不过文档内容是单独维护的。这是因为,除了API
文档以外还有一些文档不针对某个类或者函数,而是介绍性的或者全局性的文档,这是放在代码文件中不合适。所以,我们可以使用还有docbook标记的
xml文档来记录这类文档的内容和格式,然后使用docbook产生各种输出,包括html网页,WinHelp文件,pdf文件,ps文件,等等。
从下一个版本开始,我们内部使用docbook格式的xml文档,所有的文档包括API
文档使用docbook的xml格式来标记。那么,是不是使用了doxgen标记的源代码中的API
文档还要重新写成docbook的呢?这是我前段时间遇到的一个现实的棘手的问题,
在google、百度都没有搜到自动转换工具。doxygen可以输出xml格式的文档,于是我自己动手写了一个python脚本,把doxygen的xml输出文档转换为docbook的xml输入文档,完成了这种自动转换。这样,我可以首先使用doxygen产生xml格式的文档,然后运行python脚本转换为docbook的xml输入文档,然后运行docbook处理这些文档,产生最终的与其他docbook
API 文档兼容的API 文档。 以后有机会给大家详细介绍这个自动转换工具。
20. Linux
公司内部有大量的机器安装着Linux操作系统,除了保留一些Windows系统的机器用于对windows平台的支持、开发和测试外,公司的各种
IT系统以及对各种产品的开发、测试的机器都是Linux系统。当然,非技术员工的笔记本电脑还是在使用windows。我用到的Linux系统包括
Ubuntu和Oracle Enterprise
Linux,都是很好用的Linux操作系统。有些同事在自己的笔记本上面也换装了linux系统,我还没有,因为ubuntu的qq不可以视频、语音聊天,而虚拟机还是有些慢。强烈建议腾讯为中国的linux普及做出自己的贡献---开发出支持主流桌面linux(ubuntu,
fedora)的完全功能的qq,事实上,国家信息产业部应该以行政命令的形式要求腾讯予以支持。如果这一点做到了,那么广泛地普及linux会容易得多。
大家可以发现,我们使用的软件当中,除了微软的少数几个软件外,都是开源的软件。事实上,据我所知,我们公司的标配软件中,有相当大一部分是开源软件,我所知道的付费软件只有微软的windows,
office,visual studio等少数几个。
GTD: Getting Things Done
用org-mode有一周了,期间翻了翻戴维·艾伦的《尽管去做-无压工作的艺术》(getting
things done, GTD)一书,感觉这个理念很有意思,我喜欢。
GTD
没有和别的时间管理方法混为一谈,自然是有其特别的地方的。先想想像planner之类的时间管理工具,不外是先定大目标,小目标,然后细分为许多可操作
性强的事,安排到每一天。如此由上而下的理念已被绝大部分人所接受,但饶是如此,大家仍然感觉每天是在疲于奔命,说不好哪天会冒出一堆意料之外的事,逼着
你变身救火队员;
或者说突然接到老板一个不可抗拒的命令,使得你的所有计划泡汤。。
那究竟是什么地方出了问题呢,至少有几点:
自上而下列举事项的方式可能让你照顾不到一些细微不入流的事项,而这些事在任何一天都有可能爆发
你列出的事有些不是必须当天做的,强制列上会牵制你的精力
一般的时间管理只列出了你很少一部分而不是全部要操心的事,仍然有大量琐事在你心中萦绕,影响工作效率
任何临时突发事件均使得你先前的安排作费
而GTD的出现正是针对以上几点的。在正式进入正题之间,我们应该先确立一些理念,因为要做好任何事都是需要信仰的(正如开源、Emacs、LATEX,没有信仰是坚持不下来的:),具体如下
心中装的事情越少,工作效率越高
事情极少由于时间匮乏而受阻(尽管每个人都这么认为),它们陷入困境往往是由于一开始不知道如何采取行动而造成的
自下而上地将所有可能萦绕在你心中的事列出来,用一个可靠的外部体系来替你管理它们
收集自己所有的想法,只鼓励不打击,追求数量不求质量
经常回顾、整理那个外部体系,分析每件事并确定下一步行动
2 收集、处理
根据只管去做(GTD)的理念,你需要一个可靠的外部系统来接管所有可能扰乱你心绪的事情,而你的心中应该是无所牵挂,可以"只管去做"的。
在这里,org-mode自然就是那个可靠的外部系统了,这在emacs23下是自带的,稍稍在.emacs下加点配置
(add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
(define-key global-map "\C-cl" 'org-store-link)
(define-key global-map "\C-ca" 'org-agenda)
(setq org-hide-leading-stars t)
(setq org-log-done t)
下面就正式开始吧,先建个文件夹,如
/.org/,在里面新建org文件,比如与工作无关的个人事务都放在self.org里,它的大概样子如下(第一行以后再解释):
+TAGS: EASY(e) COMM(c) OFFICE(o) READ(r) URGENT(u) FUTURE(f) WAIT(w)
MEMO(m)
* 阅读、充电
** 计算机
* 强身健体
** 力量、健美
** 有氧运动
* 人际关系
* Basket
** 临时篮子
然后就开始静下心来,耐心地,自下而上地将你所有萦绕于心中的所有事情转移到这个系统中去。记住是所有,不要留任何隐患,所有具体不具体的,成熟不成熟的都要写下来,总之就是不要让它再幽魂不散地骚扰你的心境了。
比如说,你今天发现图书馆新开的自习室里有很多你感兴趣的新书,总时不时地觉得该提高一下表达能力、写作能力、演讲能力,还有一堆书想看,希望能培
养良好的阅读习惯,还想学用blender作三维建模,想起北京秋天不长了,该出去享受一下阳光顺便活动一下生锈的筋骨了,想起本科同学好久不联系
了。。。都写下来吧,不管是些具体的事、模糊的意向还是些不成熟的想法,先记下来再说。初次做这个大概需要一两个小时,写下上百条都不要奇怪,往后就要靠
平常注意积累了。
以下仍然只是个示例:
#+TAGS: EASY(e) COMM(c) OFFICE(o) READING(r) URGENT(u) FUTURE(f) WAIT(w)
MEMO(m)
* 阅读、充电
** 养成阅读习惯
*** 没有条件创造条件也要上,晚上远离电脑两个小时,去图书馆 :EASY:
*** TODO 下载感兴趣的jar电子书传到手机上,利用一切间隙看
** 计算机
*** 阅读<Mastering Algorithms with perl> :FUTURE:
*** 学习blender三维建模 :FUTURE:
** 英语
*** 千万别学英语 :EASY:
- [ ] 每天反复听同一盒磁带
- [ ] 反复听一个月后听写、跟读
* 强身健体
** 力量、健美
*** TODO 去趟天成买对哑铃 :EASY:
** 有氧运动
*** 去八达岭残长城转转
*** 参加一次1.3+级的穿越
*** 骑车绕北京城半圈
* 人际关系
*** 好久没见老同学了
* Basket
** 临时篮子
*** 文献中心二楼的研究生自习室很好,很强大 :MEMO:
*** 提高一下表达、写作能力 :URGENT:
*** 提高演讲能力 :FUTURE:
*** 阅读<哲学的故事> :READING:
所有事项都以*开头,*数目代表了级数,org-mode其实就是一种outline
mode,带*的是outline项。org-mode支持对outline项作以下操作(鼠标在outline项上):
TAB折叠、打开子项,Shift-TAB折叠、打开整个文档
C-c C-c指定当前项标签,如上面的:URGENT:, :MEMO:等,方便以后分类查找
M-左右方向键减/增*数目
M-上下方向键移动当前项位置
C-c C-t设定当前项状态为TODO DONE或空白
C-c C-s规划时间(只建议用于约会或非此时不可的情形)
C-c C-d设定最后期限(deadline)
好了,现在假设你现在已经有了一个长达几百行的列表,千万别让它就这么堆着,那样你就前功尽弃了,好不容易从脑中清除出来的东西可能过不多久又重新萦绕在你脑中。你现在要做的便是清理你放在这个你所依赖的系统里的所有信息,具体过程如下:
逐一处理,马上作出决定,不要积压
如果认定是垃圾,删除
如果可委派别人,委派出去,将该项标签设为:WAIT:,这个标签下的事情都不用你干(爽吧)
2分钟可完成的立刻干掉
应该尽快采取行动但超过2分钟的,C-c C-t设为TODO
这是一件不具体的事务(如养成阅读习惯),那么确定如何实施下一步(创造条件,下载jar书)
也许在将来再做的事设标签为:FUTURE:
不要剩余有未处理的事项,以后注意随时添加,及时检查处理(比如前面的例子就还有四、五项未处理,不应该)
3 规划、执行
一个大学讲师在上课的时候带了一袋沙子、一袋小鹅卵石、几块大石头和一个木桶,问有没有人能把这几种不同形状的东西都装进木桶。一个热心的学生自告奋勇走
上讲台随手抓起沙袋就往木桶里倒,然后把小鹅卵石也放了进去,但是轮到大石头的时候,他发现木桶里的空间已经不够了。讲师遗憾地摇了摇头。他把木桶清空
了,先把那几块大石头放进木桶,再把小鹅卵石放进去,然后倒入沙子。最后他摇了摇木桶,只见这三种不同形状的东西配合得天衣无缝,把木桶挤得满满的。
我们做规划的第一个原则是优先放置大石头,每周前把一周要做的重要事情在org-mode中将其优先级设为最高(shift+上下键设定每项的优化
级),但设定的事情尽量要少,因为这些事情是必须完成而且应尽早完成的。至于要不要一开始就设定日期,就看个人喜好了,有人在时限压力下工作更好,有人则
会产生焦虑,但一般GTD不建议一开始将日期都定好(当然一些本身具有时限性的事情除外)。
然后是每天的规划了,同样是应当确定大石头,一般是两到三件最重要的事,在org-mode中C-c
C-s将其规划到当天,并且优先级设为最高(shift+上下键设定每项的优化级),事情应该描述得尽量具体,且保证当天能完成(完不成就细化)。然后就
是尽早搞定你大石头了,一定不要找延误的理由,做完后表扬一下自己。至于其它事务,你一高兴当然会多少顺便做一些的,不是么?等一段时间后回头你就会发现
不少事在不知不觉中就完成了,特别是重要的事都没延误。
如果你有定力地全神贯注投入工作几个小时,一定会比不断分心的工作一天取得更多的成果。一般进入专注状态需要15分钟时间,所以
能保持专注状态的外界环境和心理环境十分重要。进入专注状态前花几分钟清空头脑中萦绕的琐事(写到org中),总比你进入专注状态后再被干扰要好。
至于执行,不用说,当然越专注越好,一次只做一件事,而做事时头脑中的琐事已经被事先清理出去了。另外,尽可能改善你的工作环境。
做完一件事后,C-c
C-t改成DONE,然后表扬一下自己,再扫描一下清单,找出下一步要做的,记得应该是真正可执行的下一步。所有事情被延误就是因为没想好具体的下一步做
什么,而不是因为时间不够,所以要对任何看着不具体的事情花一分钟想想下一步做什么,这一分钟绝对花得值
至于扫描清单,因为列表太长了,自然org-mode会贴心地提供一系列帮助你查找的方法:
C-c /: 在当前org中按关键词查看,比如你可查找某个tag如office:C-c / <ret>
office <ret>
C-c a a:
日程表,在日程表状态下,d或w为按日或周查看,.为跳到当日,左右键为前后一天(周)
C-c a t:
列出所有TODO,每项上按中键可跳到对应的org,至于其中的操作也很方便,自己看菜单了解一下吧
C-c a m:
根据tag来查找,这就是一开始每件事都要用标签定性的原因,这时候查就方便了,比如你要办公室就查office,要外出就看看trip中有什么可顺便完
成的事,觉得头脑发胀要换思路就查查有什么easy的事,如果想气使颐指一下就看看wait中别人有什么事没给你做完,正豪情万丈中就看看future中
有什么伟大的规划....
c-a a M: 根据tag来查找,但只针对TODO项
另外C-a a C可以自定义一些查找方式,自己试试吧
4 回顾、简化
这里的回顾不是指周末或每天晚上的反省,而是对目标和org-mode中所记录的所有事情的回顾。
每周回顾的重要意义在此: 它给了你一次机会,
来重新整理所有的事情并检视什么是最重要的任务。
以下是GTD每周回顾的一些步骤:
回顾你的长期目标,中期目标和短期目标
将没归类的(一般集中放在最后,或者平时用纸记着)、还没确定下一步是什么的事情逐一处理、具体化,加上标签(C-c
C-c),归入相应情境
C-c a a 看看日程表,看看有什么约会或有deadline的事
按每种情境(C-c a m)查看任务清单,心里有数
设定大石头,但不着急放到每一天
至于每一天开始时的回顾,最重要的就是先设定三件最重要的事了,三件就行了,而且描述得尽量具体可行,尽量在早晨就完成,这样在反省时不至于觉得当天没做什么。还有就是三块大石头中应当有一件与你的中长期目标或人生规划相关,这样能增进成就感。
再有就是简化,因为GTD始终原则就是保证你能专注地只管去做一件事。它建立一个系统帮助你把头绪里的琐事清理出来就是为了你专注,它不提前把乱七
八糟的事安排满你的日程也是为了你专注,它每天只在日程中定三件事同样是为了你专注。那么你的org-mode中列表那么长是不是有点影响你的专注了哈,
那就简化它吧。
清除。有时候我们认真权衡一下会发现很多事是没必要做或可以拖延的,还有很多事2分钟就搞定了,这些都清除或搞定之
对你的目标足够明确,然后结合你的目标来筛选,同样还有可清除的
减少你的承诺
把能堆一起的波速堆一起,合适时突击全部完成
永远只在当日日程中只安排三件事,最重要的三件,而且有一件与你的中长期规划有关
将 一些琐碎的东西分离出去,比如我的日程表(C-c
a)只搜索两个org文件:work.org,
self.org,但我可以还有其它一堆org文件,比如是某门学科或某本书的研习计划(顺便说一下用org做学习笔记不错,比如可先列出书中章节,每章
节下面用 - [ ] Question
的形式列出所有要了解的问题,了解每一项后更新问题答案并C-c C-c之使其变成 -
[X] Answer 的形式)
对于分离出去的org文件,可以用[[file:name.org][description]]的形式来相互链接。事实上,
org提供的链接功能很强,甚至可用shell命令。
5 反省、激情
用GTD或者org-mode做时间管理的根本目的就是要掌控自己的生活,既不要被一些毫无意义的事情耽延,也不要陷入看起来没完没了的工作中被消磨掉所有锐气。
要想保持锐气和激情,那么我们就需要反省和自我激励,良性的心理暗示起到的作用绝对是你预想不到的。
为了充分反省,不妨新建个review.org,没必要加入日程表中,内容示例如下,当然究竟写成什么样必须根据你个人情况来,自己构想来的系统用起来才真正有效:
* REVIEW
** 每日反思
- [ ] 今天我有什么样的付出?我是用什么的方式付出?
- [ ]
今天三块大石头是什么?哪项与我的人生规划有关?都放下了吗?没有的话,下一步是什么?
- [ ] 1.
- [ ] 2.
- [ ] 3.
- [ ] 今天我学到了什么?
- [ ]
今天我给自己的人生提高了什么品质?对于未来,我在今天作了什么样的投资?
** 周末反思
- [ ] 这周的规划都完成?效果如何?
- [ ] 这周的工作有没有陷入手忙脚乱中?哪些需要调整?
- [ ] 这周的工作状态是不是专注?是什么事情让我分神或担忧?怎么消除?
- [ ]
这周有什么事情坚持每天做了(如背英语文章、看书、培养某项习惯等)?如果没有,为什么不坚持?
** 感觉无趣时反思一下
- [ ]
此刻人生中有什么让我觉得快乐?让我快乐到什么程度?带给我什么样的感受?
- [ ]
此刻人生中有什么让我觉得振奋?让我振奋到什么程度?带给我什么样的感受?
- [ ]
此刻人生中有什么让我觉得感激?让我感激到什么程度?带给我什么样的感受?
- [ ]
此刻人生中有什么让我觉得欣赏?让我欣赏到什么程度?带给我什么样的感受?
- [ ]
此刻人生中有什么值得我努力的?让我努力到什么程度?带给我什么样的感受?
- [ ]
我喜欢什么样的人?什么的人喜欢我?让我喜欢到什么程度?带给我什么样的感受?
最后很重要的一点就是做你想做的事。试想你每天在做的每一件事都是你所喜欢做的,那么你肯定会愿意付出更多努力来做你想做的事的,也就是说,耽延自
然就会少了,事情也就几乎不可能被堆积下来(前面不止一次说过,事情没完成永远不会是因为时间不够,要么是你不知道下一步怎么走,要么就是你根本没走)
你也许会笑:"做我想做的事,说得轻巧,由得了我吗?"那么我问你,你知道你究竟想做什么吗?如果你知道了,你知道下步是什么吗?你所说的下一步已经具体到马上可以执行了吗?如果以上你的回答都是,那么为什么不去做呢?
比如说你现在的工作烦透了,是该反省做改变的时候了,那就在review.org后面加上:
** 我要找份喜欢的工作
*** 调查
- [ ] 有谁在从事你心仪的工作?
- [ ] 他们是如何得到这份工作的?
- [ ] 获取这份工作有什么要求与标准?或者说绊脚石是什么?
- [ ] 一份更高的学位?
- [ ] 一份不错的工作经验?
- [ ] 或者其他的技能?
*** 设定计划:想出一些有用的方法去解决你的绊脚石
- [ ] 进修、培训
- [ ] 求教,有意积累相关经验
- [ ] 自学
*** 开始行动, 不要等待
- [ ] 每天反省:我有没除掉了哪颗绊脚石或向目标迈进了一步?下一步是什么?
- [ ] 每周反省:我有没有坚持不懈?下面该怎么走?
6 完结
GTD(只管去做)是我在搜索org-mode时无意中看到的,其实也是粗粗看了一下,可能远未得精髓,但还是挺喜欢这套理论的,包括org-mode也挺合我品味,不仅用来做日常计划,还读书笔记、学习计划和学习笔记都用它了。
至于我写的这份笔记,其实每篇写得都很仓促的,很大程度是为了完成任务而写的,哪位觉得写得太烂的请见谅。也许后续我会根据理解的加深重写一下。
关于GTD,原书和更多的资料可以从褪墨中找到,如果你对这个感兴趣,还是建议你去通读原著。至于org-mode,我觉得还是很强大的,自己用M-x
org-info可看帮助,各位尽可以发挥自己的创造力和想象力来灵活运用。
当然你还可以将GTD结合其它理论来完善自己的系统,比如结合富兰克林自我修炼表格,将其第一列改成你每日反省或每周反省的项目。至于要反省的内
容,就看你自己了,比如你要改变你自私残忍的性格(开玩笑了),或者你要改变作息,那都可以写上。另外也可像富兰克林一样,每段时间应特别重点关注其中一
项,等等。
最后说一下org-mode是可以导出为html或text的(还有xoxo格式其实也是html,自己试试看吧)。但默认的html样式实在不怎样,好在可自定义,先在.emacs上加:
(defcustom org-export-html-style
"<link rel=\"stylesheet\" type=\"text/css\" href=\"wheer.css\">" ""
:group 'org-export-html
:type 'string)
然后输出的html就可以用自定义的css了,以下只是个示例:
html {font-family: Times, serif;font-size: 12pt;}
.title,.author { display:none; }
.todo { color: red; }
.done { color: green; }
.timestamp { color: grey }
.timestamp-kwd { color: CadetBlue }
.tag { background-color:lightblue; font-weight:normal }
.target { background-color: lavender; }
pre {border: 1pt solid #AEBDCC;background-color: #F3F5F7;
padding: 5pt;font-family: courier, monospace;}
table { border-collapse: collapse; }
td, th {vertical-align: top;border: 1pt solid #ADB9CC;}
h2{ margin: 5px 0 10px 0;background-color: #AEC5CE; font-size:1.5em;}
h3{ margin: 0px 0px 5px 0;padding: 5px 5px 5px 10px;
font-size:1.2em; border-top: solid 1px #9AB7C2;
border-bottom: solid 1px #9AB7C2; font-variant: small-caps; }
h4{ color: black; margin: 3px 0px 5px 0px;
padding: 3px 5px 3px 15px; font-size: 1em;}
h5{ color: black; margin: 3px 0px 3px 0px;
padding: 3px 5px 3px 25px; font-size: 1em;}
p{ margin:0px 10px 0px 18px; }