大家我觉得我就像个傻子是不是傻啊,我好无语做数学的算法时侯老是乱,是不是我逻辑超差啊

小站会根据您的关注,为您发现更多,
看到喜欢的小站就马上关注吧!
下一站,你会遇见谁的梦想?
It's&my&Life.
从业务分析师角度看买票难问题
春运到了,12306被推上了风口浪尖,大家将买不到票的怨气全部吐在12306上!几年前火车票已经实名制了,那黄牛应该就找不到赚钱的空间了,但因为业务流程上的漏洞,造就了黄牛存在的空间。如何改善业务流程,让更多的票到真正需要的人手上呢?
12306网站真的是很烂吗?
这个网站确实很烂,加上它庞大的造价和一直不知名的网站建设者,所以它是烂上加烂!
但如果这个网站能做到这样的效果,那买票难的问题似乎就不应怪它了:
1)能及时发售车票;2)高访问量时网站不会没有反应,不会出错;3)能有效地杜绝各种漏洞,杜绝各种抢票软件。
如果上述三点都能做到,你去买票时如果网站提示你票已经售完,那你似乎就不应该责怪12306网站了,这是因为供远远小于求的原因导致的!无论12306如何强大,它都没有可能将无变成有。
但这些卖出去的票中,有百分之多少是真正卖到回家的人手中呢?有多少比例的票被黄牛控制了?实名制后黄牛为什么还有生存空间?
下面我们先看看一个旅客的正常的购票、取票和进站乘车流程,然后再看看黄牛如何找出漏洞实现倒票。
旅客购票、取票及进站乘车流程
具体步骤如下:
1)在12306上购票,输入身份证号码和姓名等信息,你可以输入多个身份证号码买多张票。2)你手持二代身份证到互联网取票机上取票,或者去柜台人工取票。3)你通过安检进入候车室。4)通过安检后,可能有工作人员对你进行实名验证。但这个步骤通常是省略的,就算有这个步骤,检查也很简单。通常只有一两位工作人员进行检查,而人流量非常大,工作人员仅仅是肉眼看看你的车票和身份证,身份证号码对上了,你就可以通过了,检查的时间往往不到5秒。我坐过很多次火车,只遇到一两次实名检查。5)你在候车室等车,到乘车时间,你持票通过闸口。这个过程不需要身份证,当然你持二代身份证直接过闸的除外。
上述的流程基本上就是让实名制形同虚设,这样就给黄牛留下了可乘之机。
黄牛的抢票流程
我先做一个假定,就是假冒的身份证不能在互联网取票机上取票,也不能在柜台取到票。如果这个假定不成立,那么黄牛更加是容易轻松倒票了。
黄牛的抢票流程是这样的:
1)事先准备大量的真实身份证。黄牛通常是一个团伙的,要搞定大量身份证并不难,如果身份证可以假冒的话,就更加不在话下了。2)用上述身份证号码在12306上购票,并且利用系统漏洞用抢票软件来抢。3)用上述身份证取票。4)将票倒卖给买不到票的苦逼的你,收取高价。5)告诉你进站攻略:如果没有实名检查,直接进站;如果有实名检查,就用一张假车票,假车票上的身份证号码与你的身份证号码一样,你用假车票混进去后再用真车票乘车。黄牛会为你提供周全的服务,假车票会连同真车票一起给你。当然黄牛也可以给你一个与真车票配套的假身份证,以便你混过实名检查,到时你注意不要拿错就行了,但造假身份证成本比较高,我估计黄牛会比较倾向提供假车票给你。
要杜绝黄牛,就必须自己扮演一次黄牛,看看他是如何利用漏洞的。上述的黄牛抢票流程,是我个人的无责任YY,真实的黄牛抢票流程可能比上述流程更加专业,如果黄牛和官方卖票的人有勾结,那么事情就会变得更加恐怖。
为什么飞机票没有黄牛?
这是因为飞机票真正做到实名制!
关键是安检这一步,安检时首先检查的是你的登机卡、身份证和本人是否一致,工作人员会通过系统来查证你的身份证、登机卡,还要肉眼观察你的样子看看你是否和身份证上的一样,这个过程你还被拍下视频或照片。
这样的严格检查,才能真正落实实名制,杜绝黄牛。
插一个稍微题外的话题,广州新白云机场的安检可能存在安全漏洞。
如果你要到乌鲁木齐市,是需要走专门的安检通道的,白云机场安排了专门的安检通道给到乌鲁木齐的旅客,这个通道的安检是比其他通道严格的。问题是有安全漏洞!
假设我是恐怖分子,我要携带的恐怖作案工具不能通过乌鲁木齐通道,我会怎样办?我会让我的同伙购买其他机票走其他通道,让他带上作案工具,过了安检后再将工具给我。
要杜绝这个安全漏洞,可能只能有两个办法:
1)乌鲁木齐通道过去的旅客,设立专门的通道给他们,一直到他们登机,这个过程还必须保证他们不能和其他人接触。这个办法不可行。2)那只能是第二个办法,就是所有通道都升级到乌鲁木齐通道的安检标准,这样就可以取消乌鲁木齐通道了。
最近到白云机场乘机,已经没有见到专门的乌鲁木齐通道了,可能是全部安全通道的检查标准都升级了。
要防恐怖分子,首先将自己变成恐怖分子,深入思考恐怖分子的可能做法,这样才能杜绝安全漏洞。这和要防黑客,要先自己做黑客是一样道理的。有些公司为了提高自己的安全等级,专门请一些人和团队来破解他们的安全系统,找出漏洞。
落实实名制,杜绝黄牛
12306网站本身并不能让票增多,要让大家更容易买到票,目前来说最有效的办法就是打击黄牛,落实实名制!
落实实名制的办法也不复杂,参考机场的做法就可以了,增加更多的人手和设备,真正做到车票、身份证和本人是一致的。落实实名制的同时,请多做广告宣传,让大家知道实名制已经落实了,让黄牛知道没有赚钱的空间,让人民群众知道找黄牛买票是搭不了火车的。
有人可能会说:火车站的人流巨大啊,要落实实名制工作量巨大不现实啊!
如果是真心想解决购票难问题,真心想为人民服务,这些困难就可以克服!要落实实名制其实也不需要增加很多成本,对于这么有钱的铁道部门来说不算什么大事,是有关部门想不想解决问题的问题。如果有关部门总是不去落实实名制,那么我们就理由去怀疑是不是有人从中获利!(这些不愿意落实实名制的人有可能本身就是黄牛)
小结:多从业务分析师的角度思考问题
本文分析了当前热点&购票难&,特别是分析了黄牛如何倒票的。
这个12306网站的项目愿景是什么呢,以下几个你会选哪个?
A)解决大家购票难的问题,让大家能安安心心快快乐乐的购票回家。B)让大家能通过网站买到票,减轻大家购票之苦。C)为大家增加一个购票的途径。
其实这个网站只能做到C。
一个系统要发挥更大的作用,不仅仅靠系统本身改善功能,更重要的是使用系统的单位也需要去改善业务流程,我们要多从业务分析师的角度为客户提供改善流程的专业建议,让客户的工作水平更高,让系统可以发挥更大的作用。
如果我们系统做得不好,可能首先应该检讨的是我们的业务分析是否到位。
如果我们的业务分析已经非常到位,但甲方就是很牛B很强势,不愿意去改,就好像这个铁道有关部门那样就是不落实实名制,我该咋办?
这个问题实在太有难度了,我的回答是:那只能靠RP大爆发了&&
无责任声明
本文对黄牛抢票流程或有白云机场的安检流程分析,仅仅是从我的视角出发,应该相当不专业、不全面和不够力度。
如果要解决相关问题,请有关部门真的去深入分析一下相关流程,这样才能针对性地改善问题。
本文的话题可能有点沉重,大家多从业务分析的角度来看待本文吧。
12306只是个例子,业务分析的道理其他信息化系统也是使用的。我用这个例子是因为当前是热点,如果你购买过车票的话,你会更有感触。
如果本文对你有帮助,麻烦点一下&推荐&啦,谢谢!
迟来的2013年度总结
13:58 by 麦舒,&665&阅读,&21&评论,&,&
很久没有在博客园写过东西,原来打算写的《深入了解Linq to SQL》的系列也太监了,自从来 到大上海,由于项目忙,再加上生活丰富,再另外自己在忙于写一个新的框架,实在没暇顾及自己的博客了。
为什么来上海
2013年,由于广州、深圳找不到工作,同时耍了半年,也厌倦了,经朋友介绍就来了上海。找不到工作的原因大慨是自己开的价格相对高,同时面试的公司也不怎么需要我这种人,再另外一个原因,相比那些小朋友,年纪大了,对方觉得我不会安稳地呆在那里上班。
上海与广州的差异
很多在广州的朋友都会问,能不能适应上海的生活。其实除了热一点,冷一点,还真没觉得有多大的区别,六月底刚来那会,感得上海就象个烤箱,竟然比广州还要热,让一直生活在热带地区的哥都难以适应,太不可思议了。上海的冬天比广州来得要早,也要冷,特别是前几天,那风把我的脸都吹麻了,连牙齿都冻痛了。每天出门的时候,我都会用&天真&造一个句子,&今天天真冷&。
至于生活上吃的、穿的,没感觉太大的区别,反正我经常吃的那几家店,在上海都能找到它们的门店,所以朋友问我,&上海菜是不是都很甜的,能习惯不。&的时候,我还真不好回答,我压根就没尝过上海菜。至于穿的,真心觉得比广州的要贵,广州一件两百多的衬衣,南京东路那里往往要卖到四百多。要不是实在没有衣服穿,肯定不会去那买了。突然觉得,广州的衣服真心便宜,哥暗下决心,回到广州,肯定要扫一次货。
呆在上海,真心感觉不到和广州的差别,以至于广州的朋友说要来上海玩,让我带路,立马让我头大,上海的那几个经典景点,在我看来一点意思都没,也就能忽悠一下山区来的小朋友。个人认为,倒是苏州、杭州的可玩性更大一点。
谢谢朋友的照顾
这次来上海,让我感触最深的是,朋友比钱更值钱。有朋友在,总会&千金散尽还复来&。这次来上海,也得到了很多上海朋友的帮忙,感谢他们对我的照顾。很多人都很奇怪我,在闸北上班,怎么就住张江。因为我来的时候,投靠的朋友就是住张江的,然后自己也觉得那附近不错,就一直住那了。
至于工作上,要做的倒是挺多,系统架构的设计,框架代码的编写,带新人,招新人,要打造出一个有战斗力的团队真心不易。由于公司规模小,在架构设计上可以随我发挥,由前端到后端,整个系统的架构都是由我来打造,不受任何的限制,除了项目间外。
由于有之前的积累,自认为打造出来的系统还是充满弹性和扩展性的。要有时间的话,会写个专题和大家聊聊这方面东西。也由于接触JavaScript的时间相对较多,现在是越来喜欢它了。
1、进一步完善自己 2013 写的两个框架,ALinq Dynamic 和 ALinq Inject
2、完善2010写的JData框架。
3、把自己写的框架整合起来,形成一个更为通用的系统。
4、把《深入了解 Linq to SQL》写完。
PS:现在公司招人中,有没有朋友有兴趣和我一块工作呢?
SQLSERVER MVP 我的心路历程和想说的话
SQLSERVER MVP 我的心路历程和想说的话
&首先声明:我不是DBA,我在公司的职位是技术支持,公司用的数据库软件是SQLSERVER,研究SQLSERVER是我自己的个人兴趣
这里一如既往的先感谢帮助过我的人(排名不分先后):
感谢微软公司、我的家人、博客园、宋沄剑、高文佳、听风吹雨、黄总、论坛里的怡红公子 、rmiao、KevinLiu328
我的同事、园子里的哥本哈士奇、stswordman、邀月等等等 ,还有很多很多人我需要感谢的
我在他们的帮助下不断成长~
2014年我换工作了,感谢以前那份工作带给我的出差生活,让我体会到中国各地的人情风俗,看到中国各地漂亮的景色,也感受到各种人情冷暖
关于SQLSERVER的开发
我一直很好奇,SQLSERVER这个软件到底有多少人在开发后来我看了一篇文章:
SQLSERVER要学习的内容
其实学习数据库有很多东西需要你掌握,不是说你学习了一两年的SQLSERVER,就能够说对于SQLSRVER非常精通
其实要学的东西还多着呢,没有多年的开发经验是很难精通SQLSERVER的,加上SQLSERVER的技术一直在更新
我觉得自己所掌握的SQLSERVER的东西还只是冰山一角
例如下面几项技术:
1、SQL Azure
2、SQLSERVER复制
3、SQLSERVER集群
4、SQLSERVER负载均衡
5、SQLSERVER插件开发
6、SQLSERVER BI开发
7、存储系统现在技术日新月异,今天你学会了这个,微软明天在SQLSERVER出个新功能,你也要学习在DBA的日常工作中,某些工作或者很多工作一般都会超出SQLSERVER联机丛书BOL(Books Online)的范畴有些SQLSERVER的功能甚至在BOL里都没有提到,只能自己测试所以学习是永无止境的,不单只对SQLSERVER的学习
为什么我选择写SQLSERVER方面的文章
博客园中的技术类文章非常多,编程,软件工程,运维,面试,算法等等其中写数据库方面的文章也是获得最多人关注的一种技术文章之一因为现在的程序大部分都离不开数据库,大部分都要用到数据库写数据库方面的文章不仅C#技术人员可以看,PHP技术人员可以看,JAVA技术人员也可以看而如果你写的是C#方面的文章,那么PHP技术人员并不想看,那么你的文章的关注率就会降低而目前市面上主流数据库就那么几个,找工作的时候也比较好,如果公司用的C#技术,只会PHP的程序员不会去面试编程语言这麽多,就算是主流的编程语言也有很多,有时候选择工作的范围也是比较窄的大家可以看一下博客园里推荐博客排行榜里,排前10的就有两个是数据库专家!
计算机之路从2007年开始说起吧2007年:高考时候数学不合格,最喜欢的科目是英语,糊里糊涂就考入了广州某个大专院校,糊里糊涂就选择了&软件开发&专业2008年:学习数据结构的时候特别对算法不感冒,无论怎麽听都不明白,想不到以后会做跟计算机相关的工作,虽然现在不是程序员2009年:考试各科都合格,顺利拿到毕业证,但是对于前面的路很迷茫2010年:在家乡的某个论坛认识了前一个公司的老板,老板在帖子里说亲自教授嵌入式编程,当时自己对计算机方面工作还是比较感兴趣跟老板一起出差,到客户那里进行系统培训,出差回来就进入了公司,公司做的是油站管理系统,用的数据库是SQLSERVER,慢慢开始研究SQLSERVER,但是真的算深入研究是从买了徐老师的《SQLSERVER企业级平台管理实践》这本书开始的~&跟大家一样,平时自己学习会买很多技术图书,其中有很多都当废纸卖给收废品的如果你想要的话我可以免费给你,前提是邮费您们来付(到付),反正摆在家里也是当摆设先到者先得,我会在文章结尾公布谁获得了我的书本&
可以提供的书籍有:FLASH CS4标准教程&Linux系统管理员职业技能鉴定教程面向对象程序设计与VC++6.0教程Windows server2003从入门到精通AUTO CAD实用教程VS2008高级编程等级考试-二级JAVA语言JAVA程序员上班那点事儿从零开始学EXCEL VBAC#应用程序设计教程网店赢家淘宝新手开店7步通ASP.NET案例教程批处理命令在Windows操作中的典型应用汇编语言程序设计教程第二版Illustrator CS3 中文版TCP/IP详解 卷1:协议Microsoft .NET 企业级应用架构设计程序员考试辅导C++程序设计教程--基于VS2008矛与盾 黑客就这几招矛与盾 黑客攻防与脚本编程WCF技术剖析深入浅出WPF留下您的联系方式:姓名,收货地址,手机,默认圆通快递
每人只能够取一本
某数据库大牛的话
数据库的变化,某一天我看到某位数据库大牛朱XX在新浪微博发了一条:关键之关键在于数据库的内核:存储机理,索引机制,SQL编译器,优化机制,等等,一般来说,数据库的小版本会改进优化机制,提供新函数,大版本可能就会提供新索引,改写SQL编译器等等,但是如果真正改变存储机理,那一定是革命性变化。我觉得这个也适用于SQLSERVER,SQLSERVER在SQLSERVER2005的时候,存储机理发生了比较大的变化,然后到SQL2008、 SQL2008 R2、 &SQL2012都没有多大变化存储机理,你掌握的个中原理也不会过时
我在这一年里大概做了哪些事清华出版社某个机构博图轩找我出书,sql中国区产品经理叫我加入sql pass(可惜在北京),也有猎头找到我问我有没有兴趣跳槽不过这些猎头很多都不靠谱,我写的是数据库方面的文章,他推荐一个在武汉的系统架构师的职位给我因为他看到我在博客园里资料,当时我感兴趣的技术写了&架构设计&,不过现在我改了
博客园里的某位大侠叫我去上海微软去面试SQLERVER技术支持(最后因为比较穷,心里没有底怕掌握的姿势不够,怕面试不通过亏了就没有去了)
对于前一份工作中所犯的错误
经常在论坛或者QQ群里经常说到:DBA是随时都要准备简历的,万一做错了,你有可能承担不起&本人曾经就试过,就算是初学者都知道的问题你也可能会犯了,因为工作太累等等原因虽然没有丢数据,但是因为我的出错,造成客户的数据错乱,让公司造成了损失被领导训了一顿,并要写检讨书,这件事虽然没有扣工资,但是印象特别深刻所以做任何重要操作前都需要备份,不然的话神仙也很难拯救您!这个教训会伴随着我~&
感谢博客园博客园真的很好:1 人多& 2 自定义js让不懂前端的人用简单的js能够装饰博客, 3上传图片方便,很多图片也不怕
关于数据库的优化
由于不是专业DBA,我客观的以我自己个人的观点讨论一下吧在这里再说一下性能,性能这个东西真的不能一概而论,比如某篇文章《性能极高的分页存储过程》,很多情况下,你的表有没有加索引,加的索引是不是对的数据量是不是很大,有没有用其他技术,性能都跟这些有关系&网上有很多数据库调优的教条、文章,真的非常非常多,每次我都要去收藏这些文章,记住每一个教条在哪种情况下用哪个教条去优化数据库,记不住了就在收藏的文章里找,现在我这种情况,好像用A文章的优化会比较好但是B文章里的情况跟我现在的情况又匹配,究竟用哪个好呢???当然啦,有部分文章还会误导人,有些文章中的环境跟你的环境又不一样,虽然情况一样,但是有可能因为数据库版本、操作系统版本不同会产生不一样的结果,最后用了也白搭如果你还停留在我上面所描述的阶段,那么你应该要系统地学习一下数据库结合实战经验,多动手做实验才是硬道理&说到这里让我想起了之前某件事情:我曾经在博问里问过一个问题&请问什么叫索引对齐?什么叫稠密索引 什么叫稀疏索引?&当时网上没有一篇文章能够说得很清楚,很明白,都是你抄我的文章,我抄你的文章无奈之后只有在博问里问高手了,我是一个非常喜欢寻根问底的人,不懂的东西一定要找遍互联网除非真的找不到答案,不然的话我不会罢休的&当时有一个小虾三级给了我这样一个回复
我当时无语了,一直到现在我还是没有明白&什么叫稠密索引 什么叫稀疏索引?&这个博问帖子我到现在还没有结贴o(&_&)o&其实要做大牛真的要经常看下面的网站里的博客文章,从中去吸收,我发觉基本上都是英文资料,学习起来非常吃力我希望有更多人去写书,去写像《SQLSERVER企业级管理平台实践》这样的有深度的书,或者翻译下面网站的一些博客,然后刊登在书本里就好了
关于技术屏蔽
这里说的技术指的是不泄露公司机密信息的情况下
比如下面这个场景比如:两个MVP在同一个部门,某天MVP大侠A遇到数据库问题,MVP大侠A说索引太宽了MVP大侠B不知道宽索引、窄索引,想请教MVP大侠A,但是MVP大侠A一副高高在上的样子最后,MVP大侠B走了我想如果MVP大侠A能够使用一些方式例如写博客、讨论、白板等工具来跟MVP大侠B沟通,结果肯定不一样(至于什么是宽索引,什么是窄索引我也不是很清楚)可惜大部分公司都不是这样没有大家互相切磋的平台,MVP大侠B不会进步,当然不是说谁的水平高的问题,大家交流一起进步才是最重要的,不是的话,辞职是迟早的事情&,或者会进入一个恶性循环&内部培训员工可以选择自己感兴趣的技术讲座有时候小公司(这里针对某些小公司不是全部)真的不适合新手,虽然做了很多项目但是充其量只能是熟手不能是大侠,小公司没有培训,很多制度不完善,打杂的活特别多&&最重要缺少的是交流和分享,交流和分享从何而来?网上、公司内部培训&、外面的技术沙龙(技术沙龙的内容讲的内容不一定是你们在使用的)所以关键还是公司内部培训网上的交流毕竟是有限的,面对面的交流才是最重要的!提高大家研究公司所使用的技术的兴趣&
对于博客园里面的每个读者和博主我这里有一个愿望:
对于博主:希望读者反对的时候留下您们反对的声音、意见,不要按一下&反对&按钮,拍拍屁股就走了,每个博主都希望听取反对者的真实的反对声音,进一步改进自己的文章&
对于读者:一篇好文章基本上都会有反对,不是一味地推荐,有反对的文章证明博文的题材比较有争议性既然有反对,证明这篇文章值得去看,有读者对此有不同的观点,如果只有推荐,那么大家都一味崇拜博主认为博主很牛,不动手验证一下,那么对读者是没有好处的&我这里的愿望不单只针对我自己写的博文,园子里的所有博主和读者应该都是这样希望吧o(&_&)o
在出差的时候看到吉日大师的书在2013年11月份去了南宁出差,由于酒店离南宁书城(朝阳广场附近)很近夜晚刚食完饭,就到处瞎逛,刚好路过南宁书城,进去肯定光顾一下计算机板块刚好看到吉日大师的书,我翻了几页没有买,里面写了吉日大师如何从低级程序员干到高级程序员,书里面他说了如何学习NEC公司的系统架构他的经历真的值得我们学习,我也希望有一天能把自己的经历整理成书
&不过最后我还是买了这本书,作为技术人员不能总是看技术书籍的,有时候也需要放松一下的o(&_&)o
井底之蛙其实有时候我也觉得自己是井底之蛙,为什麽这样说?大家可以看一下这篇文章:下面是文章中的内容:
下面是一个案例分析。我们在数据库的错误日志里,发现有下面的错误,并且产生了一个内存转储。
A time-out occurred while waiting for buffer latch -- type 2, bp FBFA40, page 1:153568, stat 0xc0010b, database id: 10, allocation unit Id: 58336, task 0xE2988 : 0, waittime 300, flags 0x1a, owning task 0xA2F048. Not continuing to wait.
下面是对内存转储的的分析,为了简单起见,不相关的调用堆栈被省略。
我们可以看到,下面的这个进程在获取Buffer Latch的时候,由于无法及时得到Latch锁,产生了上述错误信息,并生成一个内存转储。
0a `ebe00` sqlservr!CDmpDump::Dump+0x7c
0b `ebe093a0 5dd0c sqlservr!SQLDumperLibraryInvoke+0x1a0
0c `ebe093d0 503f7 sqlservr!CImageHelper::DoMiniDump+0x3d4
0d `ebe095d0 6af82 sqlservr!stackTrace+0x82b
0e `ebe0ab20 69f69 sqlservr!LatchBase::DumpOnTimeoutIfNeeded+0x19a
0f `ebe0abf0 e7bcc sqlservr!LatchBase::PrintWarning+0x205
10 `ebe0ace0 e7a29 sqlservr!LatchBase::Suspend+0xd12
11 `ebe0b950 a0689 sqlservr!LatchBase::AcquireInternal+0x1ff
12 `ebe0b9f0 a1792 sqlservr!BUF::AcquireLatch+0x8d
13 `ebe0bd10 a166c sqlservr!BPool::Get+0xc7
14 `ebe0bd70 a35a0 sqlservr!PageRef::Fix+0xbc
15 `ebe0bdd0 a320a sqlservr!BTreeMgr::Seek+0x44d
16 `ebe0bff0 a2e5d sqlservr!BTreeMgr::GetHPageIdWithKey+0x20a
17 `ebe0c070 a38e8 sqlservr!IndexPageManager::GetPageWithKey+0xbd
这时,错误信息中的owning task地址0xA2F048对于问题的分析就很重要了。
我们通过owning task的地址,结合内存转储分析,可以找到对应于该owning task的进程编号。
其调用堆栈如下:
# Child-SP&&&&&&&&& RetAddr&&&&&&&&&& Call Site
00 7fa68 000007fe`fcd910dc ntdll!ZwWaitForSingleObject+0xa
01 7fa70 83b1a KERNELBASE!WaitForSingleObjectEx+0x79
02 7fb10 82d76 sqlservr!SOS_Scheduler::SwitchContext+0x26d
03 7ffa0 82700 sqlservr!SOS_Scheduler::SuspendNonPreemptive+0xca
04 7ffe0 829ac sqlservr!SOS_Scheduler::Suspend+0x2d
05 00`000e7e46 sqlservr!EventInternal&Spinlock&153,1,0& &::Wait+0x1a8
06 00`000e7a29 sqlservr!LatchBase::Suspend+0x599
07 80cd0 45aac sqlservr!LatchBase::AcquireInternal+0x1ff
08 80d70 46a49 sqlservr!SQLServerLogMgr::GrowAFile+0x7c
09 00`000cb38b sqlservr!SQLServerLogMgr::ReserveAndAppend+0x1fb
0a 00`000cbe89 sqlservr!XdesRMReadWrite::GenerateLogRec+0x567
0b 813d0 cbc23 sqlservr!XdesRMReadWrite::LogBeginXact+0x243
0c 00`000cbc3f sqlservr!XdesRMReadWrite::MakeActive+0x64
0d 00` sqlservr!XdesRMReadWrite::GenerateLogRec+0x87
0e 816a0 74860 sqlservr!PageRef::ModifyRow+0xce0
0f 818f0 76749 sqlservr!PageRef::ModifyColumnsInternal+0x1b3
10 81b50 75f71 sqlservr!IndexPageRef::Modify+0x2fd3
上面的调用堆栈显示,这是在增长数据库日志文件。
由于数据库日志无法及时增长完成,因此导致了这个线程长时间拥有Latch锁而不释放,而其他进程无法及时获取相应的Latch锁。
到现在我还没有看明白在哪里可以看出数据库日志文件在增长?要看懂调用堆栈需要熟悉Windows的底层和SQLSERVER的内部原理,才知道SQLSERVER在做什么操作由于本人无论是对windbg工具还是Windows底层都是小白,所以到现在还没有看明白我也希望有朝一日可以达到这个级别
关于梦想驱动各位程序员肯定或多或少听过事件驱动,领域驱动这些软件开发概念就像事件驱动百度百科的解释:鼠标的一个点击,移动,键盘的按键按下等等操作,都是对应操作系统的一个事件,然后应用程序接受你的操作进行处理那么人呢?我们每天起床、刷牙、洗脸、上班、吃饭、下班/加班、睡觉究竟为了什么???人由什么来驱动??我觉得是由梦想来驱动,有了梦想我们就有了目标,可以追的目标正因为有梦想驱动着我们,我们觉得每天的生活才有意义,您们说对吗?我自己的梦想,嘻嘻,不方便透露了,希望不那么晚实现就行o(&_&)o
如何写一篇好文章写出一个好软件需要重构您的代码,写文章也是一样,要重构您的文章,重构您的语言文字
文章出品时间其实这篇文章我在2013年9月已经写好了,一直保存为草稿,一直在修改,一直在补充,希望在拿到MVP那天将自己的所有想法爆发出来文章标题我改了,感觉只有心路历程没有想说的话比较单薄,而且心路历程刚毕业3年多没有太多要说的
如果拿不到MVP,可能这些想法就会一直埋藏了&&这就是我的心路历程&有人说:当云计算普及之后,DBA这个职位就会消失了,无论DBA这个职位消失与否,我希望喜欢数据库的人还能做着数据库的相关工作无论是业余的还是平常工作中,就算是业余的,我相信您在未来的某一天可以找到一份自己喜欢的DBA的工作的&
以上为个人观点,如有不对的地方,欢迎大家拍砖o(&_&)o
分享一 团队
2013 是我经历过的最快的一年!
&& & 这一年五味俱全;
&& & 这一年悲喜交加;
&&&& 这一年很不平凡;
&&&& 继去年的&&后,总结去年,展望今年。
&&&& 去年在"梦的开篇"里我分享了4点创业初期的经历。
&&&& 在五月份至九月份开始,我都在做leader带领几个人在现场开发。
&&&& 那时才感觉到leader不是那么好做的。&&&&&&&分享一、程序员到leader&的转变
&&&&&&&&&很多的"程序猿"们期望能坐上团队leader或者说叫项目经理的位置,
&&&&&总觉得那样就不会那么累,那样就能清闲了。
&&&&&但是我的经历告诉我,没有积累的转变很困难!
&&&&&如何能做好leader已经成了各位想成为leader的程序员们的必修课!
&&&&&初创的小公司,制度神马的都不是很完善。做为一名团队leader其实是很考验人的。
&&&&&那么现场开发负责的就更多了,相当于是全权授权给你,及时处理,感觉就像钦差大臣。
&&&&&&&&&困难一: 团队
&&&&&&初创公司有两点最为重要:&1.老板的关系网 2.团队
&&&&&老板的关系我就不做发言了。就说团队吧!
&&&&&做为初创公司,我们的团队也是初创的。
&&&&&这个阶段我称之为"路人局"(ps:你不知道路人? 玩dota么?玩lol么?玩梦三么?玩三国英雄么? 你都不玩? 自己度娘谷哥去~)
&&&&&大家互相不了解,水平参差不齐,配合意识不到位。
&&&&&这时候就需要考验leader的能力,需要让团队发挥出自己的优势(ps:很明显我不合格~)
&&&&&如何协调大家的工作,保证分配合理,提高大家的职业技能,都是需要去考虑的。
&&&&&否则就会出现吵架,互相看不惯,不满等等现象。导致工作很难做下去。
&&&&&而且初创团队的leader你不单单是管技术,你还要管其他的。
&&&&&譬如:和客户协现场开发的办公环境, 员工的情绪管理等等。
&&&&&我们在做的这个项目因为项目经验的问题,导致误入了客户圈套,陷入了很难受的阶段。
&&&&&客户提出的报表越来越多,越来越细化,让大家都心烦意乱。
&&&&&前期对业务的不熟悉以及大家都是初次接触,进度缓慢。
&&&&&这个期间面对多方的压力,我确实乱了阵脚,憋了一肚子火。
&&&&&其问题总结如下:
&&&&&1.沟通不够及时
&&&&&& 我没有及时的去关注每个人的进度,去调整整个项目进度。
&&&&&& 而组员们也是憋着问题不说, 不提。(ps:或者是隐晦的提了,我没听懂)
&&&&&& 最后一下爆发出来。
&&&&&2.任务不透明化
&&&&&&&有一次经理问一个员工另一个员工在做哪一个模块,他说不知道。
&&&&&&&大家的任务不够透明,就觉得自己是不是比别人任务多,
&&&&&&&就觉得心里不平衡。
&&&&&3. 只批评不表扬
&&&&&&&这是个心理技巧,以前我也经常被骂的狗血喷头,而且也能理解。
&&&&&& 但是现在时代不一样了。管理方式等等都不一样了。部队都提倡文明带兵了。
&&&&&&&当他们做的报表有问题或程序有问题我就会直接指出来直奔主题。
    正是因为这样,大家都开始跟我对着干,本来一个小时能做完的他也会拖到一两天。
&&&&&&&那么好的领导应该是怎样的? 应该是哄着干!(ps:搞技术的也喜欢虚的)
&&&&&&&&&&&& 比如:你的组员写了一段程序,与实际要求有差距。
&&&&&&&&&&&& 通常: 你这个写的跟需求不一样! 做的都是无用功! 在好好看看需求! 赶紧改去!
&&&&&&&&&&&& 好领导: xxx&做个做的还不错,结构清晰,通俗易懂。但是这块你看,是不是应该是这样这样....
&&&&&&&&&&&&&那么通常来说后者大家更容易接受,起码你认可了他的工作。
&&&&&&& &4. 自恃才高
&&&&&&& 做为领导我们应该像唐僧一样,像宋江一样。
&&&&&&&&不要总是把组员的光彩遮罩住的同时,也不能让自己难受!
&&&&&&&&这点很难!
&&&&&&&&很多时候你大放异彩的时候组员对你就不满了,觉得功劳都被你抢了!
&&&&&& &很多时候你的组员大放异彩的时候组员对你就不满了,觉得你啥都不懂!
&&&&&&&&这点很难把握,所以要自我把握好。
&&&&&&& 很显然,我自己把握不好这个临界点~
    &其实以前总觉得某个项目要是离了我就转不了了!
    &现在我真觉得是错的!
    &离了你照样能转,只是有可能不如你在的时候好罢了!&
&&&以上是我今年关于团队的管理上的问题,分享出来与大家共勉。
&&&在新的一年里,送上诚挚的祝福。愿大家学业,事业,爱情大丰收!
敢问路在何方之路在脚下
& 最近好几个园友问我,萍姐,最近为啥不更新博客了。在这里,对那些一直以来默默关心,关注我的人说声抱歉。不是我不想写,是一直没有时间,没有精力。
此刻,随着公司人员流动越来越大,身边的好友同事也一个个辞职还乡或另有高就;看着办公室周围空荡荡的座位,不免心生感慨。。。。。。
&&& 首先,在这里再次叮嘱各位:过年了都要好好保管自己的财物啊,昨天在路上走着走着就又被盗了一部手机,心里难免不爽,后来想想也罢,小偷也要过年( ⊙ o ⊙ )啊!
&&& 有人说,我太喜欢抱怨;其实,我就是把博客园当做自己另外一个可以任意吐槽的家而已。在这里,我们不用带上伪装的面罩,不用努力挤出笑容,不用附和,不用。。。。。等等。
确实,这个社会给于我们很多东西的同时也让我们看清很多。想自己还停留在读书那一刻,已是不可能的了,如今还差3个月我就工作满两年了;
时光真如梭,岁月真匆匆。。。。。
&&& 是不是人一长大就会感慨,就会想很多?确是如此,每次和老妈打电话我就劝她不要操心,不要想太多;熟不知自己早已过天真浪漫的年纪了。偶尔静下心来就会莫名的烦躁,
想到工作,想到生活,更是不堪;也不是说非常不好,就是现实往往与想法相违背。好吧,大多数人亦如此;小小的我又在纠结什么呢?
&&& 后天就是2014年了,想想今年的自己,到底收获了些什么呢?想来想去除了多了点工作经验,脸上多长了几颗痘也就没什么了。工作和生活依旧过得平淡无味。
其实我从来没有想过,有一天自己会安安静静老老实实的坐在办公桌前敲代码,而且一敲就差不多两年。这点挺佩服自己的,写代码是一个枯燥无味的活,
竟然我熬过来了,想想就是个奇迹。因为我本是个心思不缜密,对数学深恶痛觉的人,想想自己每天和那些奇奇怪怪的语言打交道就够受了。&&&
& 对于未来,我想是该有个计划了,不能再这样浑浑噩噩下去。我是个不安现状的人,不喜欢一成不变的生活,明年准备辞职后找个可以出差的工作,
像实施之类的吧,觉得这样比较能够锻炼自己,也可以接触更多人,看看外面的世界,增长见识也是个不错的选择。&&&&
& &好了,说了一堆也不知道在说什么,总之一句话&&路在脚下。
&欢迎交流与探讨,文章都是有感而发,如果喜欢,请给予推荐,欢迎关注!!!
具有思考能力的电脑
投递人&&发布于
08:47&&有1088人阅读&&&&&&&
斯坦福大学开发的生物型电脑处理器
  去年,Google 的(neural network)通过一种让电脑 &自学& 的算法,让电脑通过一个基于一亿张照片的资料库进行分析和学习,最终能自行辨别出 &猫的照片&。今年 6 月,这间公司宣布将进一步运用神经网络让搜索变得更加精准。
  受益于脑科学研究探索上的进展,目前生物型电脑取得了新的突破。
  报道,2014 年高通将推出第一款商用版本的生物型电脑处理器。这种电脑不仅会作普通的运算,和普通电脑最大的不同是,这种智能电脑能学会&容忍&自己的错误继续保持运作,也就是说基本不会出现崩溃的状况。
  传统的电脑受制于程序,无论运算性能多强,但是目前电脑的所有行为仅基于人类的各种指令。这么多年来即使运算技术取得空前突破,但是电脑的设计依然基于现代电脑创始人之一的约翰&冯&诺伊曼(John von Neumann)在 65 年前定下的方向。
  简单来说,在传统电脑上程序会命令处理器工作,将得出的结果输出到内存上,但处理过程产生的数据只会极短暂地停留在处理器的缓存上,处理器并不会 &记忆& 之前做过的事情,整个电脑工作流程更像一条流水线。
  而新的智能电脑,则模仿人脑一样拥有一个神经系统,在工作时每个部件能互相影响,和传统的 &编程& 不同,数据传入电脑后,是通过整个 &神经系统& 相互反应而工作,而且整个工作过程跟人类思考和行动的方式非常类似。其实类人脑架构的电脑技术目前已经开始应用在一些大型科技公司(如之前提到的 Google),它们基于生物学中的神经系统的原理运作,让电脑能够在工作过程中 &吸收& 信息,从而根据现场的变化做出调整,这也是之前所讲这种电脑能够避自行矫错继续工作的原因。
  在未来,新一代的人工智能系统会因为这种技术变得更加先进,例如电脑将有可能像人类一样,具备真正意义上的感官能力,进而能够在面部、语音识别,统筹这些目前还是初始阶段的科技变得更加先进,目前这些领域仍然高度依靠人手操作。加利福尼亚电信与信息技术研究所(Calit2)是目前研究这种智能电脑的机构之一,负责人 Larry Smarr 表示传统的&工程型电脑系统&将逐步迈向&生物型电脑系统&。这种技术的革新将为一些自动化产业如自动驾驶扫清了道路。
  IBM 的电脑科学家 Dharmendra Modha 表示,新型的电脑具有学习能力,就像具有思考能力的传感器,未来的前景无所限量。当然,至少从目前来说,这种感知型电脑仍无法取代目前传统电脑,更多是以协作处理器的形式存在。其中之一最大的好处是这种电脑不容易崩溃,因为它们内部的算法一直在变,允许电脑不停地适应当前的工作环境,可能我们在未来将会和各种系统补丁说拜拜了。
  对于这种生物电脑来说,衡量处理能力是看 &脑袋& 大小的。例如去年 IBM 宣布开发出一款模拟人脑运作的超级电脑,就配备了 100 亿组神经元&&大概为人类大脑的 10%,&想& 的速度也比人脑慢 1500 倍。据《纽约时报》介绍,IBM、高通以及斯坦福大学已经开发出神经式构造的处理器,而高通更宣称将在 2014 年推出面向商业市场的产品。而另外,目前全球多所大学也已将重心放在生物型电脑领域的开发上。
成为明星程序员的10个提示
投递人&&发布于
23:34&&有2629人阅读&&&&&&&
  英文原文:
  &是 Open Software Integrators 公司的总裁与创始人,公司主要与一些开源公司合作,特别是那些初创公司,致力于为客户提供课程开发、培训、咨询与支持等服务。合作伙伴可以将精力放在核心的业务领域上,公司则为其提供专业的服务。近日,Andrew 撰文谈到了对于程序开发者来说,通过什么样的途径可以成为一个明星程序员,并给出了非常中肯的。
  很多开发者会认为要想成为一个明星程序员所需要做的事情一定都是与编程技能相关的,不过这种想法却是完全错误的!优秀的代码是很好,但要想得到更好的工作,获得更高的报酬则需要让更多的人知道你是谁。换句话说,你需要推销自己,下面是我根据这些年的工作经验所得出的成为明星程序员的 10 个提示。
  1. 撰写博客
  搭一个博客,一个月写几篇文章。进行真正的研究,确保你所写的不是那种非常简单的东西。更严肃地说,就是要学会怎么写文章。根据学校的英语老师教你的方式来做:创建一个大纲、叙述、检查语法和拼音。接下来,简化刚才所写的东西,要做到让读你文章的人快速过一遍就能迅速掌握文章的要点。现在的互联网可是要做到精益求精才行。
  2. 开源
  不要相信那些关于开源的谎话。你们当中的那些年轻人可能已经记不起来过去有的开发者会失业的那种情况了,不过即便在经济不景气的时候,我创建的开源项目的所有开发者依然不会被裁员。请确保你所开发的开源代码能够反映出你的工作。我希望使用最简单的解决方案来解决难题,不过我面试了很多开发者,他们都将简单的问题给搞复杂了。无论你相信与否,这么做是有市场的,不过请确保你所编写的代码能够反映出你所在的市场。
  3. 不是 6 个月,更不是 10 年
  不要每 6 个月就换一次工作。严肃地说,一个公司的很多人都会出现离职的情况,同时也会有新人加入进来。换句话说,不要在同一个地方,做相同的事情达到 10 年以上,否则你会与市场绝缘并形成惯性的。举个例子,假如你在 IBM 工作,那么要想保持自身的价值,你就不能仅仅满足于按照 IBM 的方式,使用 IBM 的技术栈来编写代码。我从来没有雇佣过在 IBM 等类似的公司中工作过 2 年以上的人。他们给我的印象常常是面试中表现很不错,不过在实际的编程中却败下阵来。
  4. 放眼新技术,着眼实际情况
  尤其是一些年轻的开发者们都喜欢使用新技术。&是我最喜欢的一种编程语言,不过平均来说,Ruby 带给我的回报是不如&&的,Ruby 的市场也比较小。事实也并非总是如此,&看起来势头很猛,不过不要忘记它的市场占有率,其实还是很小的。另一方面,也不要长久以来一直使用同样的技术,比如那些 COBOL 或是&&开发者们。
  5. 编写自己的文档
  当我参与开发一个项目时,经常会被拉出去参加会议,原因就是他们看了我编写的文档或是演示,而且能够理解,这种情况出现太多次了。我总是一张总览图开始,后面则是对其各种细节的阐述。问题是:对于一个非常忙碌的人来说该知道哪些内容呢?大多数经理们想要知道什么?请按照这个思路编写文档。
  6. 简洁是灵魂
  对于管理来说,那些知道自己在说什么的人常常会给出更简洁的答案。如果回答很长且很复杂,那就意味着回答的人并不知道答案是什么。此外,声调通常与主题的重要性成反比。如果有坏消息来了,那么大家走进办公室时就会轻手轻脚,关上门,然后窃窃私语。请保证你知道自己说的是什么,知道如何总结,如何描述细节,不过请不要事无巨细地进行方方面面的介绍。请确保你的团队成员都经过了深思熟虑,然后清晰地阐明你的哪些观点要好于其他人的。
  7. 当众发言
  知道如何做演讲,学习如何在公众场合发言。研究一个主题,然后让自己成为这个主题的专家。如果能有一些幽默感的话,在公众场合的演讲效果就会更佳。要想掌握这种技能,你需要花费很多的时间与精力,还要忍受住别人的嘲笑,不过对于工程师来说,如果能用英语向管理者解释清楚问题,同时能就某个主题做出专业的演讲,那么他的薪资一般来说要比那些不具备这种能力的开发者高一些。
  8. 现实一些
  你很喜欢 Erlang,不过 Erlang 的市场却没有那么大。,还应该知道那些&新&的话题,不过请不要说出这种不成熟的话&如果不是 Erlang,那我就不打算写代码了&,除非你真正理解了业务问题。这么做也许会让你成为一个狭窄领域的专家,不过即便这样也是有代价的,如果你所掌握的技能过时了,结果就不好玩了。当然了,&更适合于你自己的一些小项目,不过公司却不会在那种一次性的系统中对其进行投入,这种情况下 RDBMS 就很适合了。
  9. 解决疑难问题,了解相关工具
  花点时间学些大部分人都不了解的工具。你知道哪些很少有人知道/使用/理解的工具,让你比周围的人更具效率呢?比如说,Aspect4j 并不适合于每一个人,不过它却适合我。我编写了一些 .class 文件操作,让其在 Tomcat 下正常运行,从而替换掉 WebSphere,我修复了私有软件的内存泄漏问题。这每一次经历都让我超过了其他人,因为我使用了其他人很少知道的工具来解决重要的难题,而其他人则还在等待着厂商的解决方案。当然还有其他的,不过这些简单的工具却能够解决复杂的问题,让你超越其他开发者。
  10. 保持谦卑
  很少有开发者具备谦卑这种特质。有时,这意味着你需要做一些很具体的工作。极客的声望来去匆匆,不过请记住,是你的行动才让你收获这种声望的。下一周可能一切都烟消云散了。换句话说,&你并没有什么特殊的&。
66岁“技术宅”发明简易输入法
投递人&&发布于
17:37&&有2347人阅读&&&&&&&
  众多老年人想上网,却因为不熟悉拼音、不懂五笔输入法而打字难,只好望而却步。今年 66 岁的长沙市民张善淼花费 20 多年时间,发明了简易的&归一码输入法&和&老年人输入法&,相比于五笔输入法难记的上百个字根,他的输入法只要记 26 个字根,老年人输入法甚至只需用 10 个数字键来输入汉字。从感兴趣到最后发明成功,张善淼现已头发花白,家人曾多次劝他放弃,他说:&我觉得自己做的事情有意义,能解决问题,就会一直做下去。&
  最初想发明一部字典
  &我这么一个老头子,不是什么技术人才。&提到带有&科技味道&的输入法,家住开福区四方坪的张善淼说,他是通过几十年的扎实稳打和兴趣摸索出来的。后来的成果,离不开自己儿时对汉字研究的兴趣。
  &最初只是想发明一部字典。&他说,在上学时发现字典的设计远不如现在科学。如果要在字典中找到一个不认识的字,花三四分钟是常有的事。当时就想,他长大后设计一种新的查找方式,发明一部新的字典,让大家找字更加便捷。1972 年开始,他利用业余时间潜心钻在预想的查字法里,试图更巧妙地利用汉字部首、笔画等因素来查字。从最初的设想、到一个个汉字的测试,他每晚忙到 10 时多才睡。躺下之后,脑海中仍在测字演练。&那段时间就和着了魔一样,草稿纸都不知道用了多少。&15 年后,他最终把查字法定了下来,并设计字典。后来因为需要自费 8 万元到 10 万元后才可出版,家境本就不佳的他只好将此事搁浅。
  老年人打字只需用 10 个数字键
  上世纪 80 年代初,我国掀起第一次计算机普及高潮,五笔输入法也随之应运而生,但上百个字根让众人难以快速记住。当时,张善淼所设计的查字法已基本成型,他意识到,可在此基础上设计另一种更为便捷的输入法。
  &不仅要容易记,还要打字速度快,这是最基本的要求。&他说,1987 年开始设计时,家里没有电脑,他就直接手写,1 万多个汉字,2 万多个词组,他逐一编码、排序、演绎,有时改善一次,就需要一个多月。他多次因病住院,但仍在病床上操作。家人见状,常常劝他放弃,他却一直坚持。
  1993 年,在基础工作完成后,他让学计算机专业的女儿帮忙设计程序,将手工编码代入程序。直到 2003 年,输入法最终确定下来,而且只有 26 个字根。
  为表意&万码归一&,他将其取名为&归一码输入法&,并获得国家知识产权局颁发的发明专利证书。&老人也需要网络,但很多老人只知道点鼠标,因为不懂拼音和五笔,不知道打字。&张善淼又开始设计&老年人输入法&,他花了 1 万多元请人设计程序。今年 6 月,输入法最终确定,其最大特点在于,打字者只需要使用 0 到 9 这 10 个数字键。
  盼公司帮忙推广
  &在方言味浓重的地方,老人家不论用拼音输入法,还是临时学五笔输入法打字,都比较困难。&张善淼用略带普通话腔调的长沙方言说,自己也是一个&拼音盲&。昨日,张善淼向记者演示&老年人输入法&,该输入法主要是利用字的部首笔画数和笔画编成数字码,然后按相应数字码输入。在演示过程中,&我&、&新&等字均需摁 1 个数字键就会显示出来。他介绍,3500 多个常用字,最多只需要 3 键就可打出。
  &相比于老年人输入法,归一码输入法打字更快。&他边演示,边告诉记者,使用者只需要记住简单的规则和 26 个字根后,就可以顺利用这个输入法打字,而不用纠结于记太多字根和拆字,也不用苦于自己是&拼音盲&。&如果有人能因此受益,那也算了我的夙愿。&张善淼说,由于经济条件和精力有限,他现在无法向大众推广这两种输入法,希望能有公司帮忙推广。如果有公司和出版社有意帮忙推广输入法或出版张善淼的字典,可拨打本报热线 96333。
张善淼发明的&归一码输入法&结合了金木水火土五行,耳目人手心等身体器官,很好记。
[翻译]Bob大叔:反思极限编程
译者注: Bob大叔14年后再次谈论极限编程。极限编程经历了14年的风风雨雨后,Bob大叔将会给它怎么样的定义那?在我手中拿着的一本白皮薄书,在14年前彻底的改变了软件世界。这本书的标题是解析极限编程,副标题是拥抱变化。作者是Kent Beck,出版时间为1999年。这本书很薄,不到200页。排版很宽,间隔很远。写作风格即自由散漫又平易近人。章节不多,概念简单。但是其影响却像地震一样,甚至至今震动仍未平息下来。起始于第53页的章节10,列出了12项实践,引爆了行业内的大辩论。并催生了一场革命,改变了我们编写软件的所有方式。这些实践是:
计划游戏:当今被成为SCRUM。此观点认为软件应该按照任务列表中的优先级循序渐进的开发。
小版本:应当频繁和渐进式地部署软件。
隐喻:该概念最终在Eric Evans编写的《领域驱动设计》一书中明确化。系统结构应当建立在针对问题域的简单的智力模型之上。
简单设计:任何时候都要保证系统尽可能的简单,不用考虑对未来的担心。
测试:程序员和客户一起编写自动化测试来验证产品代码的行为与预期一致。当今我们称之为测试驱动开发(TDD)及验收测试驱动开发(ATDD)。
重构:软件内部结构能够并且应当被持续改进。
结对编程:如果团队成员各自单独工作,那么这称不上一个团队。真正的团队需要经常通过键盘进行合作。这样可以相互充分的分享知识, 正是团队成员的义务。
集体所有权:代码归属于整个团队,而不是某个个体。
每周工作40小时:经常加班的团队是失败的团队。
现场客户:在团队中加入一名真正的客户,用于对需求负责,开发团队能够始终轻易的接触到他。
编码标准:团队应当使用一致的编码风格保证代码整洁,易于沟通。
争议?很奇怪是不是?是不是并不是所有实践都有争议?但是14年前引起了疯狂争议。确实,整本书出版时,人们争议书中的描述不可能应用于实践,争议所有拥护者是如何的必躬屈膝,不听劝解,甚至是一行代码没写过的傻子&&呃,我不应当让这些过去的感受压倒我。因为,毕竟它们早已消失不再,而我们依然存在。看看这12项实践,你没有践行其中哪项?我温柔的读者中的大多数可能长期的践行大多数实践。如果说它们已经被普及肯定稍显夸张,但是更不夸张的说,它们现在已经成为主流。更重要的是,还未践行这些实践的团队至少在尝试它们。这些实践已经可以被完美的落地实施,而不再是一个被唾骂的异端。崛起过去的14年已经变得陌生。极限编程论战催生出来的敏捷运动,飞速成功,随后被项目经理接受,但是将程序员排斥在外。我们已经看到了确定性的、疯狂的成功,以及相应的(可预见的)无力的认证。我们看到了只采用了计划游戏(例如SCRUM)而忽略其他11个实践的策略失败了。这种策略被Martin Fowler称为无力的Scrum。我们已经经历了咨询师和作者分离的持续的推动,以及看板、精益及每一个新的项目管理方法的竞争。我们已经看到了软件工艺运动的发展,以及敏捷基因被慢慢的退化和稀释。在所有的炒作和翻腾中,这12项实践依然留存,只是其中一些名字有稍微改变。一周工作40小时变成了可持续增长率。测试变成了TDD。隐喻变成了DDD。小版本变成了持续集成和持续部署。但是尽管名称改变,但是这些实践依然和14年前描述的差不多。我们也看到极限编程这个名称几乎完全不用了。极少数人现在还使用这个词。一些人仍然使用XP这个缩写,但名称的大部分都已经消失。如果听到一个团队描述他们正在做的是极限编程,甚至正在践行所描述的这12项实践,我会觉得非常罕见。名称变了,但是实践未变。这些实践是持久的。 在翻腾,炒作,争议的咆哮和胡言乱语中,在人类争夺一个又一个位置的风雨中,在人类的贪婪,激情和骄傲的杂乱中,在所有的政治中,这些实践依然留存。稳定的价值观我相信这些实践这么持久是因为他们基于稳定的价值观这个坚实的基础。Kent Beck在他的书中第7章第29页描述了这样的价值观:
我可以尝试论证为什么这些价值观是正确的,但是我他们自身已经论证了这些。软件工匠能够拒绝这些价值观中的任何一个吗?软件工匠能够不努力争取在工作中保证这些价值观的展现吗?这些价值观正是软件工艺的价值观。我可以尝试辩论书中这12项实践拥抱和体现了这些价值观,但是这些实践的持久性足够证明,尽管围绕这些实践的名词和运动已经消散。成功极限编程已经成功了!它成功的超越了其支持者的最疯狂的梦想。它的成功是因为从诞生时的争议中幸存下来,在不可避免的倡导者的流失中幸存下来。它成功了是因为它活的比自己的名字更久!极限编程的成功正像结构化编程的成功。甚至没人再会考虑结构化编程,因为他们一直在使用结构化编程。我们正在尝试达到没人再会考虑极限编程的目标。这就是成功!一个想法从这场运动诞生一直存活到成为我们日常生活的一部分,这就是成功!回顾所以现在,2013年的最后几个星期,我花了些时间回顾1999年。那个时间Kent Beck写了一个突破性的书。这本书改变了一切。回顾并谨记:极限编程。简单的说,请承认它是:
优秀的软件实践的核心原文出处:&, 作者Uncle Bob Martin。
道哥:理想很美好?
投递人&&发布于
22:52&&有1221人阅读&&&&&&&
  有好些朋友看了昨天的文章后发消息来表示好。
  这是不明真相的群众。就像今天周教主发了个微博说数字公司员工除夕放假一天一样,好多人在后面围观说好人性化的公司啊,却不知道数字公司内部的压力之大和加班之狠在整个互联网都是罕见的,一将功成万骨枯。尼玛现在连高富帅都知道要勤奋了,让屌丝们怎么混啊。
  真相是,我昨天提到的那名工程师后来离职创业了,我想他是伤心着离开的。同样伤心离开阿里云的大牛里还有一个叫 Andy 的网络专家,中文名是「厉建宇」。我想「大牛」这个词也许已经不足以描述他了,用「巨牛」可能更合适一点,他是中国互联网骨干设施的先期建设者。
  Andy 当年来阿里云的梦想是去中国西部的高海拔地区建设风力发电站,建成像 Google 的数据中心那样绿色环保的「数据中心」。要在高海拔地区建数据中心是因为气温低,可以省很多空调钱,而且建在发电站附近的话电费会很便宜,而云计算中心动辄几万台服务器,消耗的电能是很可怕的。
  当时 Andy 给我们讲这个绿色能源的理想时让所有人都为之动容和陶醉。不过最后马云应该没有头脑发热真跑去建设发电站了,所以 Andy 的梦想在很长一段时间内都只能 YY 一下。于是他后来转做云计算的定制服务器,就像 Google 做的那样。
  最开始是定制云计算的交换机,真不愧是网络牛人,交换机都要自己做一个。当年他定制的交换机型号叫 S13 交换机,为这个名字我们笑了好久,并总是拿这个名字和交换机领域里的另一个笑话相媲美:「24 口交换机」要改名成「24 嘴交换机」。这个 S13 交换机到最后好像也没有用上。
  直到某一天,Andy 突然在内网写个帖子「王坚,你为什么要放弃?」,后来愤而离开了阿里云。至今在网上仍然能搜到这篇文章。
  在这封信里他写到:
  「思科让我回去做主管 EC3(企业级云计算),华为让我进入 CTO 办公室主管云计算业务,我都没同意,它们的薪水可都是高出阿里巴巴三倍的薪水!我想留下来,就是马总的一句&国有&企业 & 一个真正意义的公用事业!另外,是谁鼓励土豆,优酷建设自己的 FLV 基础设施呢?我怎么可能跟这些砸了我的事业的人再继续合作呢?这些设备厂商唯一想的事情就是让你多买一些,至于你能不能高效应用这些设备,它们才不关心呢!地球明天会不会因为 Global warming 而变得风雨无常,你的公司会不会因为低效而面临经营的困难都不是它们考虑的问题,因为他们只关心自己的荷包是不是够满,是不是够钱能够买一部 Audi R8 Spyder,明天会不会因为业绩不佳而被裁员&&」
  「我为什么不愿再继续写代码 & 这几个月为了提升服务器的性能,我每天工作到半夜,连续了三四个月,在代码的世界里,我很快地就找到了自己,很快地就能够有一些成就感,特别是捡起 15 年没有再读过的 TCP 内核代码,我很快乐我能够找出它在 LFN(高性能,高延迟(缓存))的不足,但是,做这个工作我只能带动几位工程师,做绿色数据中心, 我却能够带动整个中国的互联网基础设施工业,这就是我为什么不愿意再继续写写代码,而是希望能够去改变一个产业。」
  Andy 是另外一个不是为了钱,而是为理想奋斗的人。虽然这样的人最后在阿里云几乎都伤透了心而离去,但我也永远无法忘记阿里云的这段岁月和这些人。你可以嘲笑这样的人,但永远也无法否定这些人的存在。因为他们真的就在那里,在用那样的方式傻傻的坚持着。
  我很喜欢和工程师们待在一起,因为在工程师里,像 Andy 这么可爱的人总是会多一些。
  附:Andy2011 年写的:&王坚,你为什么要放弃&
  厉建宇是美籍华人,好多观念上跟我们有很大的不同。下文就是他之前要离开阿里巴巴留下的离职信。回顾了他在蓝讯和阿里巴巴的路程。本文也展现了他的一些工作理念,应该说跟着这样的领导还是跟对人的。也许这就是 google 之所以伟大的原因中的一点:简单。
  中文不佳,全用英文写又无法让更多的同学了解我的心路旅程,所以请各位原谅我蹩脚的中文。
  *一个简单的道理:一块 2TB 桌面级硬盘今天的价格约为 700 元,相同大小的企业级硬盘一块今天的要价仍然超过1,500 元,这两个硬盘最大的差别是 RVI 震动率的设置(因此,桌面级硬盘在震动率稍大的时候,依然能够正常工作,企业级硬盘为了提升可靠性,所以当震动略大的时候,会停止工作,保护磁盘),两者连螺丝的位置都相同(不是用于固定硬盘的螺丝,是用于固定磁盘内部机构的螺丝),我们假设硬盘仍然坚守摩尔定律(每 18 个月容量增加一倍),一年半后就算我们需要更换所有的桌面级硬盘(注),我们还可以做到用相同的成本,获取两倍的存储容量!四年半后,我们将以同样的价格拥有四倍的存储!加上半导体制程的进步,当固态硬盘开始取代机械硬盘(约计在 2015 年前后发生),我们服务器的性能和效率能将再上一个台阶(每块 SSD 可以提供 250MB/s 吞吐量,而且只有 2.5 英寸(SFF),一台 2RU 的服务器可以配置 24 个 SFF 的服务器,也就是 6GB 的吞吐量,这也就不难解释为什么 2012 年开始销售的服务器会配置两个万兆以太网端口了)!
  *成本!成本!成本!:我为什么放弃在 ChinaCache 的股权,回到美国求职呢?那是因为作为 CTO,我没有阻挡我的 CEO 快速扩张视频分享下载(FLV)这条业务线,结果,到 2008 年中,当土豆在投资者(VC)的降低成本的要求下,自建 CDN 设施的时候,Chinacache 的业务一下子下降了 60%,几个月前刚刚购买的交换机和服务器都必须折价出售,最糟糕的是还找不到买家,IT 设备的价格是天天掉价的!倘若当初 CEO 拒绝 10% 股权赎回的诱惑(VC 要求业绩必须连续两年出现 100% 增长),将发展 FLV 业务的经费投资在集群效率的优化,那么 ChinaCache 就可能可以用更低的成本提供 FLV 下载的业务,加上时段复卖及规模效应,就可以将 FLV 下载业务的销售价格低于土豆(自建 CDN)的成本价,土豆,优酷等视频分享业者也就不会在 VC 的压力下建设自己的 FLV 下载基础设施。两个月发不出薪水给普通员工啊!你们一定能够体会那种痛苦,我堂堂一个中国互联网骨干设施的先期建设者,居然要靠砸锅卖铁来等待 VC 的 bridge loan 来渡过那艰难的三个月,所以我把股权给了留下来的同事(不知道 CEO 有没有执行这个意愿),自己回到美国求职。相同的道理,阿里巴巴在过去十年,凭借优秀的商务模式,占据 80% 的电子商务市场,但是,业务模式创新的速度已不如前十年,同质竞争的压力又不断地增加&&&一种似曾相识的感觉涌上心头:2000 年之后,思科分别在两个阶段受到来自 Juniper 和华为的追赶,ChinaCache 只不过将类似的问题集中在一年之内爆发,所以,当这样的问题来临是,无论你请什么人来,都救不了这样的企业。
  *新商业文明 & 谈厂商和用户之间的关系 (扭曲化的结果就是贿赂,无意义的折扣),电子商务在解决供需的问题,我们也应该用相同的概念来解决我们基础设施的问题。讲实在话,阿里巴巴和国有电信运营商采购的腐败就只有一步之远!如果厂商在我们团建时提供一桌四千元的晚餐,我们这些月薪一万元的 SA 工程师,怎么能够不嘴软呢?如果团建经费再多一点,如果厂商招待费放开一点,我们的工程师需要厂商那一点点小恩小惠吗?
  *思科让我回去做主管 EC3(企业级云计算),华为让我进入 CTO 办公室主管云计算业务,我都没同意,它们的薪水可都是高出阿里巴巴三倍的薪水!我想留下来,就是马总的一句&国有&企业 & 一个真正意义的公用事业!另外,是谁鼓励土豆,优酷建设自己的 FLV 基础设施呢?我怎么可能跟这些砸了我的事业的人再继续合作呢?这些设备厂商唯一想的事情就是让你多买一些,至于你能不能高效应用这些设备,它们才不关心呢!地球明天会不会因为 Global warming 而变得风雨无常,你的公司会不会因为低效而面临经营的困难都不是它们考虑的问题,因为他们只关系自己的荷包是不是够满,是不是够钱能够买一部 Audi R8 Spyder,明天会不会因为业绩不佳而被裁员&&&&
  我愿意和 Intel 合作,是因为它总是能告诉我产业发展的方向,我原因和英业达,富士康,广达,锐捷合作,因为它们总是能够非常快速的反映我们的需求(直接帮助提升我们服务器的效率),我们甚至做到让这些厂商提供原材料的价格(BoM cost),让它们自己提它们认为合理的利润,借此建立一种可持续发展的合作关系。可是,每一次一到采购,我们这些策略就执行不下去(总是买 Dell,Huawei 品牌的商用服务器),我也没脸再跟 ODM 厂商要求开发新的机种(一个原因是厂商没有因为前期研发的付出而获利,另一个原因是 2011 年项目没有获得支持,所以研发经费为0)。
  就算在中国电信,也知道采购部门必须和需求部门分离,就这样还不能阻挡腐败的发生,我们阿里云却把运行维护,计划建设,采购放在同一个 VP 下,虽然这么做有助于解决(小)部门 KPI 被过份放大的问题,但是这三个部门合在一起,许多 Check & Balance 就消失了,结果当然不是以阿里巴巴的利益为优先,更不要提公用事业这个伟大的理想了!
  *我为什么不愿再继续写代码 & 这几个月为了提升服务器的性能,我每天工作到半夜,连续了三四个月,在代码的世界里,我很快地就找到了自己,很快地就能够有一些成就感,特别是捡起 15 年没有再读过的 TCP 内核代码,我很快乐我能够找出它在 LFN(高性能,高延迟(缓存))的不足,但是,做这个工作我只能带动几位工程师,做绿色数据中心,我却能够带动整个中国的互联网基础设施工业,这就是我为什么不愿意再继续写写代码,而是希望能够去改变一个产业。
  注:厂商提供的桌面级硬盘的质保也是三年,而根据 Google 提供的数据,硬盘的年损坏率略低于4%,生命周期内损坏率约为 8.6%,也就是说 90% 硬盘都能够工作三年,而不是一年半,那么一块硬盘差 800 元,12 块硬盘就是 10,000 元,11,000 台 12 盘的服务器三年的成本就节省一亿元人民币,这一亿元人民币难道不够让我们请 10 个高级系统工程师(三万元一个月也就是一亿元的 10%),,将我们硬盘跟换的流程优化,所以他们就不必每次跟换硬盘的时候都必须工作到半夜 12 点?
  (今日题图:the ants dream,作者:Rakesh Rocky)
  ==== 道哥的黑板报 ====
  走在创业道路上的文艺白帽子。
  微博、知乎:aullik5
  http://taosay.net
  微信公号:道哥的黑板报,微信 ID:taosay
杂谈---2013年,总结?吐槽?灌水?
  最近看到不少猿友都纷纷总结起自己的2013年,LZ也赶赶热潮,对自己一年的收获与失去来个大阅兵,这确实有助于自己来年的规划。如果各位猿友不喜欢写博客,也应该以其它的方式对自己进行总结,相信总是有好处的。至于LZ,已经习惯了博客,因此就暂且采取这种方式了。不过LZ也只是让手指在键盘上随心而动,所以难免是水文一篇,各位猿友尽可一笑而过。
  既然是一个技术人员的年度总结,那么技术方面的总结自然是不可或缺的,这也算是本文唯一不算太水的一部分吧。LZ这一年来,技术方面的书着实看了不少,认真看过的大约有四五本,粗略看过的就数不过来了,包括无数篇技术文章、英文文档以及相当多数量的源码,可谓是大大的丰收。
  说起这些书,LZ是一直不愿意吐露书名的,因为LZ一直坚信每个人适合的书都不一样。不过这一次是LZ自己的总结,并非是选书建议这一类的文章,因此还是要好好规整下自己看过的书籍。况且,如果让LZ一下子说出来看过哪几本书,还真想不出来,这就说明真的需要停下来总结一下了,否则就真的成了书虫了,只会吃书不会读书。
  准确的说,LZ看的书几乎都是这一年以内看的,更准确的说,是去年10月份加入到现在的公司之后开始看的。到现在的公司之前,工作当中加班非常频繁,因此几乎都没怎么看,每天都沉浸在疯狂的编码当中,就算是回家学习,也大多是看看一些技术文章而已。直到来到现在的公司后,LZ看书的道路才一发不可收拾,至今为止差不多刚好整整一年多一点。
  接下来这些是LZ一年里买的所有的书,共17本实体书,其中有1本LZ精读的电子书,总共18本书。
  《Java编程思想》【5星】【完毕】:这本书就不说了吧,Java的经典,经典中的经典,LZ从去年10月份开始读,大约花了三个月读完。
  《深入理解Java虚拟机》【5星】【完毕】:这本书也是经典中的经典,LZ读的时间好像并不长,但是收获巨大!
  《重构:改善既有的代码设计》【4星】【完毕】:这本书将LZ带进了重构的世界,LZ看的也非常快,但说实话,里面的技巧目前还真没什么施展的余地。
  《大话设计模式》【电子版】【5星】【完毕】:大话这本书是LZ进入设计模式世界的引导者,也正因为它,有了LZ的设计模式博文系列,也因此有人找LZ写书。不过LZ最近的生活和工作都有些改变(这点后面再说),所以写书一事暂且放下了,不知是好是坏,个人觉得多沉淀一下其实也好,但不得不说,写书真的是一件绝对靠毅力的事,这与写博客完全是两码事。
  《编译原理》【5星】【后续补上】:这本书就不需要LZ评价了,不过LZ目前还没看完,当时看了大约两章暂且放下了。这本书是LZ以后必读之书。
  《设计模式:可复用面向对象软件的基础》【4星】【进行中】:GOF的名著,之所以给4星,是因为难度太高。LZ现在看起来还有难度,原因是因为里面的smalltalk,实在是骨灰级语言。入手这本书的原因,原本是为了写书而准备的,不过由于写书的进度被拉下来了,所以这本书就没有急于攻破。
  《Java并发编程实战》【5星】【完毕】:好书中的好书,它也算当时解了LZ的燃眉之急。通过它,LZ才算进入了并发的世界,而且并发系列也将因它而出现,目前LZ其实正在写并发系列的第二篇文章,还未发表。
  《Effective Java》【4星】【进行中】:这本书LZ已经读了一半多,这类书给LZ的感觉是,看的时候会产生极强的共鸣,但是看过之后却记不住什么。不知道这是否是在潜在的影响LZ的编程手法。
  《代码整洁之道》【5星】【重点进行中】:这一本书与《重构:改善既有的代码设计》、《Effective Java》十分类似,都是在讲如何编写优秀的代码,只是这本书给LZ的感觉更实用。
  《深入理解计算机系统》【5星】【重点进行中】:这本书实在是难啃,但是LZ看的过程中收获巨大。这种书的价值体现,并不是最直观的收获,而是潜意识的影响。
  《算法导论》【未开始】:经典之作,不过LZ一直没有时间去啃下这本巨大的著作。里面的内容相信一定是非常精彩的,LZ期待着开启的那一天。
  《数据结构与算法分析》【后续补上】:这本书是LZ为Java准备的算法书,之前看了一些,没有继续观摩,之后也是要补上的。
  《代码大全》【未开始】:又是一本巨厚的著作,这本书号称也是经典之作,同样是LZ十分期待的一本书,期待着开启。
  《Maven实战》【未开始】:当初买这本是因为项目当中用到了maven,所以准备大致了解一下,结果翻了几页发现兴趣不大。悲哀,僵尸书了。
  《linux私房菜》【未开始】:这本书是给自己准备的linux工具书,买的时候就没打算仔细看,结果买过来以后发现真没仔细看。
  《分布式系统原理与范型》【未开始】:买它是为了了解一下分布式系统的原理,这本书LZ还是有兴趣的,只是一直没机会开启。
  《云计算》【后续补上】:这本书是当时LZ要回家一趟,所以买了一本带在火车上看,当时也看了不少,属于一本消遣的书,算是开阔下视野吧。
  《云计算与SOA》【未开始】:这本书与《云计算》是一起买的,因为还是想与工作联系起来,所以看到SOA就拿过来了,后续有时间可以拿来消遣,不打算细看。
  以上便是LZ这一年内染指的书籍,其中LZ翻过的书都有相应的星级评价,不过LZ还是要强调一下,这些评价都带有LZ强烈的主观意识,因此各位猿友若是哪位没看过上面的这些书,在看过此文后准备入手的话,请慎重选择。
  总的来说,LZ这一年在技术方面的进步还是十分明显的,看书只是一方面,甚至可以说是很小的一方面。LZ个人觉得,进步最大的原因还是对大量源码的钻研,对各种协议和规范的研究,以及对C/C++、shell、perl等多种语言的涉足。
  说起工作,LZ至今已经毕业四年多,接触编程工作两年多。由于LZ在21岁便已经大学毕业,也算较早的一列,所以玩心未退的LZ将这早毕业的一年果断的浪费了,又因为是数学专业转向编程,所以花了半年进行编程的培训,这一下几乎两年的时间就没有了。每每想起,悔恨不已。今年算是LZ工作中转折最大的一年(有点废话了,一共也就两年多),之前的一年,由于身处小公司,尽管得到了不小的锻炼,但却因为加班浪费了不少宝贵时间。
  这一年内,公司技术部从一年前的300多人(包含约100外包同事),发展成了现在的将近600人(包含约200外包同事),而LZ所在的项目组也算是跌宕起伏,走的人不少,来的人也不少。当时LZ来的时候项目组共有4个开发,算上LZ一共5个,现在之前的4位同事已经只剩下1位女士了,不过组里接连又来了8个开发(含4个外包),而我们的项目经理,在技术部格局调整后,已经荣升为部门经理,不过还仍然兼着我们的项目经理一职。很显然,从组里的人员流动就能看出,LZ这个刚来公司一年多一点的新人,忽然变成了老人了。
  以前LZ的任务就是写代码,是的,没错,就是每天闷头写代码,这本来也是程序猿的主要任务。可是最近变了,这些变化让LZ有些欢喜,也有些忧。不客气的说,LZ现在所做的事,其实就是项目经理做的事,这其中很大一部分原因,是因为LZ项目的项目经理实在太忙了,毕竟部门经理是要管很多事的。尽管LZ现在还挂着个名不副实的中级工程师头衔,也没有实质上的项目经理的权利,但这种变化太明显,已经容不得LZ推脱了。
  记得以前和别人讨论的时候,LZ说过,就算是给个项目经理的职位,自己也可能会拒绝的,总觉得自己偏向于研发经理一职。现在想想,真是可笑之极。现在还没有这个职位呢,还拿着程序猿的工资,同时干着项目经理的活,这种工资、职位都与责任不符合的情况下,LZ都毫不犹豫的接下了,要是给职位的话,LZ真不敢说会拒绝。
  不得不承认,自从担任了这个虚幻的&项目经理&之后,LZ的能力得到了极大的锻炼。这里面技术只是一方面,在技术上来说,以前作为程序猿接触不到的问题,作为虚幻的&项目经理&,还是要处理一下的,比如系统架构,部署架构,高并发等问题。不过更多的,还是沟通能力的锻炼,每天需要应付的同事各种各样,开发、测试、业务、运维、DBA、上层领导、虚幻的&下属&、其它组的项目经理等等,基本上所有的人都得见过来一遍,因为他们早晚会来找你的。
  这之后,工作上最大的改变,就是代码量明显骤降,目前已经几乎为0。LZ已经很久没写代码了,为数不多的几次时间也都是非常短的,因为是比较核心的代码,所以LZ只能挤着时间写,如果不这样的话,很容易被人打断。也正因为如此,所以LZ回来看书的动力更大了,生怕因此而拉下了技术。毕竟,在LZ项目组的近10个开发当中,除却一个211的应届生以外,全是三年以上经验的人。LZ作为工作经验倒数第二的人,压力还是蛮大的,如果不是LZ早来公司一步,相信也不可能是现在的情势。作为程序猿的LZ深知,要征服程序猿最简单有效的办法还是技术,因为LZ本身就是只服技术比自己强的人的一类(嘴上功夫的就不算了吧),尽管这并不绝对。
  其实这一切现状,看似都是非常好的,是LZ以前梦寐以求的情况,也就是希望能有个&项目经理&的锻炼机会。不过这也意味着,LZ早早的就与程序猿绝缘了,两年,LZ真的始料未及。LZ个人觉得,如果升的太快,其实并不一定好事。如果尚且没有深刻体会一线,就已经早早的退居一线,看似高升了却不一定有益。更何况LZ还没有真正升上去,只是悬在半空而已,万一不小心摔下来,估计不会太轻吧。
  说起来,这一过程中还是有不少郁闷事的。最典型的一点,就是名不正言不顺的问题。有些事情,需要组员配合,但是LZ并没有权利命令别人,尽管现在大部分情况下,组员们都会配合,毕竟大家都不傻,也都知道LZ其实也是为了项目的事,但往往有时候还是需要一些强制手段的,毕竟也不是所有事所有人都能理解的。有的时候,你管的话,属于自找苦吃,别人不一定配合你,还搞得自己好像管的太宽了。不管的话,这责任又在你身上,实在是进退两难。或许是LZ还没有找到更好的办法吧。
  貌似说到工作这里,还是十分凌乱的,LZ自己也感觉到了,目前的工作是有点凌乱。或许是LZ还没有找到现在的节奏,以前那种没任务就看看技术文章,有任务就听着音乐码代码的节奏已经完全被打乱了。
  总的来说,对于工作方面,还是确实有进步的,不过很明显,LZ还需要寻找自己的节奏。
  生活方面其实变化最小,不过说小的话,其实也不小。日,LZ的女友正式来北京与LZ一起奋斗,LZ美其名曰&&北京爱情故事的开始。日,LZ的女友正式成为LZ的未婚妻。
  自从某个欢乐的90后来到LZ的世界里,LZ的生活也产生了不小的变化。最明显的,就是LZ摆脱了一切生活琐事,可以专心的写博客、看书、写代码。90后开始还是有点意见的,不过被LZ以&一切都是为了你&的理由摆平了。自此,LZ便过上了平凡而又幸福的日子,尽管北京是个幸福指数偏低的城市。
  千言万语一句话,感谢90后的悉心照顾,如果LZ以后有幸成功了,那么至少有一大半功劳都应该是你的。
  本文越写越水了,感觉已经与总结关系不大了,对于2014,LZ没什么打算。因为LZ一直信奉一句话,只要大方向不错,任何弯路都是有意义的。所以LZ不打算给自己的2014铺上一堆计划,个人感觉还是没有太大必要,而且每天想着计划会有压力,若是实现了还好,若是实现不了,还可能会打消自己的积极性,有点得不偿失。如果非要说计划的话,LZ目前能想到的,就是找到自己新的节奏。
  无怨无悔的2013,走一步算一步的2014。
如何写一篇好的技术博客
投递人&&发布于
09:37&&有300人阅读&&&&&&&
  在工作过程中,发现对很多东西都一知半解,不是很透澈,到头来很容易模糊,如果有一篇好的技术博客予以总结,一来即使忘记了,回国头来再看,仍然能够从自己的思路中恢复;二来总结一下,还会发现一些潜在问题;三来,有利于大家交流技术。很多大公司都有自己的内部技术博客平台,写好自己的技术博客,对一个技术人员来说,也有一定的成就感。
  在网上查阅资料,经常可以看到一些技术博客,要么废话连篇、排版紊乱,要么代码占了篇幅的 60%,有些甚至是错的,会让人产生误解。因此,在这总结一下一篇好的技术博客应该是怎样的,同时也规整自己的不良习惯。本篇博客纯属个人的一点想法,是个原则性的东西,切忌逐条对号入座啊。
  本篇博客耗时 2 小时。
  一、带着明确的目的写博客
  经常看到这种博客,为了写博客而写博客。比如一篇介绍 socket 接口的使用方法的博客,罗列了一堆代码,凑上几句话:&首先&,其次&.,最后&&,就算 OK。如果你的目的是&练习如何使用写博客的软件&,或者&罗列接口&,甚至&练习写作的方法&,那么可能达到了目的。但是我想,写一篇技术博客,首先是要明确该博客的目的,通常是学习一项技术、解决一个技术问题什么的,比如&学习 Linux 内存管理机制&,&解决 kernel pannic 的问题&,&打发时间&等。
  不是所有的的事情都要写一篇博客来记录,要有自己的判断什么东西值的写,什么东西不值的写。
  二、写自己的博客
  网上相互转载的帖子很多,一篇写的不错的博客经常会被转载,建议不要轻易转载别人的帖子,要写自己的博客。同样一个知识点,或者同样一个问题,你的理解和别人的理解的程度很可能是不一样的,如果轻易的看过以后转载了别人的博客,可能意味着一次自我学习或体会的机会的放弃。可能有人会说:&同样一个 GFS 的架构图,我画也是这样,他画也是这样,因为 GFS 就是这样设计的&,这里并不是要求任何一个细节都自己去做,而是要有自己的想法、自己的理解,比如 GFS 分层的原则是什么?为什么这样分层,分层的好出?如果我要是去做的话,我会怎么搞?
  写自己的博客可不是意味着不转载别人的,比如说我看了一篇博客,并且经过实验,却是与博客里面写的完全一致,不多也不少,如果要是自己的写的话,也会写的基本一样,那就没必要再花费时间自己写了。另外,以及纯粹记录性的博客,可以转载,比如&C语言运算符的优先级&,当然转载还是原创都不重要了。
  另外,把别人的好的博客作为自己的原创,不但没品,而且自欺欺人。
  如果在博客中参考了别人的博客,可以在参考资料里面提及,如果是完全转载,也应注明转载出处。
  三、博客是总结,不是过程
  写博客有的时候是一个解决问题的过程。为了解决一个问题,今天采用了a方法,发现不行,明天采用了b方法,发现也不行,后天采用c方法,发现行了, 那么最终的博客应该是在c方法解决问题后,开始写的。当然,前面的a,b方法,是需要做记录的,但只是博客的原始材料,而不是博客本身。
  在刚开始写博客时,我经常出现这种情况:对一个技术不清楚,想了解一下,就开一篇技术博客,边查资料边填写博客,结果基本上就是读、复制、粘贴、 读、复制、粘贴&的过程。最后落到自己手里也是空空如也,想起一句谚语:&狗熊掰梆子&&掰一个丢一个&,在懊恼自己的缓存为什么这么少的同时,我也想是否是方法不对?后来我想过,要想掌握一项技术、知识,大概需要这样一个过程:实践遇到问题&&理论学习问题&&实践解决问题&&理论总结问题。我想很多情况我是缺少了其中的三个部分,只有&理论学习问题&的过程。
  后来,我就改成按下列步骤写博客了:
碰到了问题,如果解决不了,而又比较有价值的话,就先记录下来,作为一篇博客的开篇。
首先,先自己分析问题,基于已有的现象,思考,在笔记本上记录问题与可能的思路。
其次,从外界获取经验或者知识,比如请教别人,google 等,学习他们,在笔记本上记录关键点。
然后,在实际中用学来的方法去解决问题,笔记本做好记录,要像水流过水渠一样流淌前面记录的思路。
最后,拿过笔记本,将以上过程再总结成一篇博客。
  当然,并不是所有博客都能够先从&实践遇到问题&开始,因为很多情况下都是先从书本理论开始学习的(这也就产生了一定的局限性,有时候你学的很好, 反而陷入了固有的框架;有时你学的不好,显得自己更加无知)。这种情况,问题是需要自己总结出来的,比如 ULK 上会介绍中断和异常的处理机制,这包括中断的过程、CPU 的工作、内核的工作、软中断的处理、tasklet 等等,我们学习中断,不仅仅是一旦发生中断,Linux 内核是按照什么流程去处理,而是要找到这么处理的原因,也就是解决了什么问题。有时,实践验证的成本过高,在有条件的前提下做吧。
  知识开始学习的时候,经常是只见树木,不见森林。俗话说:&孤木不成林&,弄上三五棵树,才会有&森林&的感觉。
  四、尽量拒绝三手技术
  在实际学习或者工作中,一个问题不明白,那么就需要请教别人。如果能够从周围的高手、牛人那得到简单、直接的答复,那是最好的。如果不能,就需要自己在网上查找资料,可能一个问题,林林总总的在网上能搜出很多,选择看哪些就是个问题。尽量去选择原发性的材料,如果你在查 gcc 的一个编译选项是什么意思,可以使用 man 手册,如果还不清楚,就去 gnu 的官方站点去查,最好不要随便从某个转载的技术博客上获取。如果你要找 x86 平台 CPU 访问内存的方式,应该从 Intel 的官方站点去找 CPU 的资料,最好不要随便在网上找篇博客看了拉到(起码应该先看官方材料)。
  别人的博客自然带有别人的理解,而这种理解可能带有一定的主观性,有时甚至是错误的,应该养成从原产地采购的习惯。如果哪天能够发明一项技术,那么这算一手技术;如果你在学习一项成熟的技术,那么该技术就属于二手技术了,如果你再从一个非源发性的地方去学习,那么很可能就是&三手技术&。当然,需要考虑实践成本,有时实在找不到源发性的材料,也不要太勉强自己了。另外,英文文章的水平整体高于国人的文章水平,应该尽量看英文文章。
  五、分清主次、落脚关键点
  世界万事万物都有联系,凡是和本篇博客的主题有联系的问题,都在本篇博客中描述,是不现实的,也是没必要的。个人认为,一篇技术博客应该不超过两个主题,如果超过了,就应该拆分。但是次要问题可能会有不少,这些次要问题不一定都要解决掉,但一定要分清除优先级,和主题关系比较大的,应首先解决,关系小的,应其次解决,甚至并不在本篇博客中解决。对于没有解决的问题,可以列在&遗留问题&中,对于在其他博客中讨论的问题,给予链接。
  根据自己的能力,耕耘到合适的层次。我将掌握一项技术划分为如下层次,在博客中通常应该达到第三个层次:
听说过该技术,了解该技术解决什么问题;
使用过该技术,熟悉该技术的使用方法;
解构过该技术,熟悉该技术的架构、原理;
贯通过该技术,将该技术与自己的以有知识完全融合,可以利用该技术架构或解决其他问题。
  六、技术博客的风格
技术博客不是论文,技术博客由其实用性。当然,也有将论文发在博客上的,比如技术博客的作者大部分应该是工程师,而不是学院派。一篇技术博客可以是小到的一个编程技巧,可以写该技巧的原理、实现方法、好处,但不要写前 500 后 300 年的历史介绍和展望未来。技术博客通常关心技术的实用性,而非技术背后理论的复杂性。技术博客也不应该过分求全责备,把文章写的大而全,而应该追求小而精。
技术博客应以陈述语气,个人感情色彩应该过滤掉,技术不是生活的全部。有人写技术博客,常喜欢加入自己的心情,&xxx 让我好烦啊&、&xxx 很难,我一直持续搞了两天没睡觉&,我个人拒绝这种&呻吟&的风格。
忌罗列代码。代码是实现的过程,而不是原理,列代码是为了看清流程,而非为了列代码而列代码。我个人的习惯是尽量少列代码,如果能够使用校小的篇幅就能说明原理,绝不使用大篇幅的代码。但是如果简单的罗列代码能够一目了然,也绝不浪费过多的笔墨去描述过程。
图片胜过文字。图片配文字比单纯的文字更加方便理解,甚至一张图就可以省略文字了,多画图,少写字是个原则。
考虑时间成本。博客基本上是以时间换知识,因此需要越来越快,记录时间也很必要。
列出时间遗留问题,以备以后解决。
提前来的2013年总
一眨眼就要工作两年了,回想当年上大学的时候,还很惊奇地问老师,那么复杂的系统,类结构是怎么想出来的&&这一年,OODP又啃一遍,还整了个部门培训,UML不是问题了,PoEAA和DDD也基本拿下了,搭个架构应该不是问题。老实说,啃这些东西占用了我太多的精力!社区也有不少关于这方面的口水战,看腻了,不过我觉得,投入了就一定有收获~Spring.Net是好东西,不过可惜的是如果架构不牛逼的话几乎很难发挥出它的力量,嘛,借鉴思路吧。现在设计模块第一件事就是要造IoC,啥调用都巴不得用代理或者命令模式,总之,思维已经完全OO了。同时也承担了比较复杂的模块设计工作,写代码70%以上的时间在重构重构再重构。不过过度设计是病,得治~我觉得OO啥的也该放放了,至少等做到设计师/架构师再说吧,瓶颈了。个人感觉现在再啃这个的收益,肯定没啃产品设计或者经济学要高。&年初啃了啃WCF,也算了解了咋搞一个分布式系统,不过可惜那个分布式项目没交给我来做,但是也不算是什么损失,蒋金楠的书真心不错,即便不搞WCF,仔细读他的书对一个学框架设计的新手也是大有益处的~&然后就是那本传说中的CLR,据说是.Net程序员必读经典,于是整了一本看了看,讲的还算比较清楚的,不过,平心而论,我觉得这东西做个了解就行了,平时写业务逻辑倒很少真用得到,除非搞框架。看这东西的感觉其实就是&&哦~原来C#慢就是这个原因啊&&哦~难怪很慢&&&说到前端js嘛,这一年几乎没怎么写过UI效果,专攻后台了,工作当中也一样。相比某些几乎总是在做界面的同事,这一点就差一些了。不过话说回来我本来就对网页前端没啥兴趣,艺术细胞欠缺&&对移动端倒是有些兴趣&&不过倒是抽空看了看js的OO机制,于是觉得函数式挺有意思,也啃了啃C#的委托和linq,其实C/OC/C++当中也有函数指针和代码块的,好东西啊~但是到java当中就真心蛋疼了!&现在年底被要求做安卓项目,于是拿视频速成了一把,目前还算顺利~还真应了老师那句话,学通一门,转啥都快,就是OC这种异端,一两周拿下也}

我要回帖

更多关于 我觉得我就像个傻子 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信