加班季开始了么?
生活
周末带媳妇去看了场电影,地心引力。
网上看评论不错,另外好久没带媳妇看过电影了,于是就带媳妇出来了。
3D效果很棒,片子不错。
周末在家做了个炸蘑菇,吃着还不错。
炸的时间有点长,花了一个小时。
这个得趁热吃,凉了就不好吃了,炸的时间太长,结果有点凉。
工作
今年做的项目很多,业务一直在调整。
新上的业务都喊着很急,做完之后可能又没有下文了。
上周五加班,十一点才到家,媳妇一个人大晚上在家等我。 :[
上次加班,十点才到家。
加班的时间越来越长,这是加班季开始了么?
[转载]影响一生的职业建议
前段时间我和一个同事进行了一次有趣的讨论。我们重新审视了我们的工作历史,并探讨了那些可以称之为丰富多彩的个人特性是如何对我们产生长期的负面影响的。之后我发现在我刚走出校园的时候确实有点混蛋(某些人也许会说我现在依然有点混蛋,不过这是题外话了)。那时候的我是一个自负,刻薄并不知道尊重其他人的人。不过我想那时候的我知道这些并反而对于这样的我感到自豪。
过去,我喜欢直接指出那些更加资深的工程师他们的错误,尽管大多说时间我是对的,但我却没有能力去让它起作用。曾经在一次正在进行的会议中,有个高级工程师打断了我,他当时说的话我至今记忆犹新,“如果你还不闭嘴的话,我就把你揍出屎来。”当时我对这句话嗤之以鼻因为我知道他不敢,但多年以后我才意识到这句话的背后含义:他真的想要这么做。
从那之后我成长了许多,我学会了注意言辞并不受本性的影响去尊重别人。我会在专业场合将讽刺之言抑制于口,而在与好朋友的私人场合下将其宣泄于外。 我并非无师自通学会自制力以及很多其他的宝贵经验,它们是在伴我一路走来的导师的精心指导下学会的。如果不是他们,也许我那糟糕的人际关系早已挫毁我的事业。
回想起来,正是由于这些我所接触到的人才使得我的事业变得如此顺风顺水。一路之上的导师们将一个纯粹的菜鸟塑造成一个我可以为之自豪的人。更重要的是,在他们的潜移默化之下,我现在不仅是一个好的程序员——同时也是一个好的队友和好人。他们对我的人生的影响是如此之深,以致我现在依然会将他们的建议转述给我现在指导的同事们。
同时,我也发现他们的建议具有普适性,所以我想将这些伴我一路成长的建议 分享给大家 。当然, 由于我的记忆力没有那么好所以我所复述的会与原话有些出入, 不过我想我应该已经抓到了它们中的精髓部分。
不要做快餐师
我最早的一份工作只持续了8个月所在的公司就倒闭了。 当我在和我的经理讨论接下来我该去做什么的时候,他给我了这样的建议:
Nicholas, 你比你的代码更有价值。 不论你的下一份工作是什么,确保你不会成为一个快餐师。不要接受一份告诉你了做什么以及如何去做的工作。 你需要工作在人们不仅欣赏你的工作能力也同样欣赏你对产品的观点的地方。
我一直把它牢记在心里。 成为一个履行者并不好——你需要去参与到通向实现之路的过程中。好的工程师不会仅仅 服从安排,他们给产品的主人发送反馈并与他们一起工作来使得产品变得更好。幸运的是, 我明智地去选择我的工作并从不使自己陷入到人们不尊重或者不重视我的观点的环境中。
自我推销
一天我在雅虎的第二任经理将我拉到一边并给我了一些建议。他说他曾经观察我的工作并觉得我有些内向
你的工作完成的很棒,真的很棒。我喜欢你的代码样式并且它们很少出bug。但是问题是其他人并没有意识到这一点。如果你想要获得与你所做的事相称的名分,你得让其他人了解这些。要让别人注意到你,你需要做一些自我推销。
我花了一些时间来领会他上所说的话,不过最终我想通了。如果你工作做的好,但是没有人知道你工作做的好,那么工作做的再好对你也没有任何人知道。 你的上司可以去支持你但是却不能为你证明你的情况。组织中的群众需要了解你的价值,达到这个目的的最好的方法是告诉别人你做了什么。
现在我会把这条建议提给许多同事。自我推销并不意味着:“看我,看我,我很牛B。" 它意味着让别人知道你在某个时间点完成了一个重要指标或者学到了一些新的知识。它也意味着向别人展示你所引以为傲的工作成果。它意味着为彼此的成就而庆贺。它意味在组织中有存在感。在角落里默写代码稍显古怪 ——别这样搞。发封简短的邮件:“嘿,我刚搞了个新的邮件布局。你们觉得它怎么样?"会大有裨益。
始关乎人
在我职业生涯的早期,我很追逐职称。我最想知道的一件事就是如何去升职。于是我在雅虎首页的第一次和上司的一对一会议上,我问他怎么做才可以晋升。他的话语至今萦绕在我耳边:
从某种程度上来说,已经不能根据技术来评价你了,现在要看你与人之间的交往方式了。
我不知道这是不是我曾经接受到的关于软件工程专业的最好建议。他太对了。在那个阶段,已经没有人回去怀疑我的技术能力了。在他们眼中,我是一个写的一手优质的好代码并很少出bug的家伙。我所欠缺的是领导能力。
之后,我曾看到无数的工程师遇到他们的事业瓶颈。他们聪明,写的一手好代码,然而由于与他人协作能力的缺乏却让他们裹足难前。每当有人在软件工程事业中停滞,我都会将这条建议转述给他们,而且它的确能恰到好处的帮到他们。
它没你想象的那么重要
在雅虎的有段时间,我非常失落。不,与其说是失落,倒不如说是愤怒更加准确。我靠频繁的与他人争辩来发泄我的怒火。一切都糟透了,我并不想如此下去。在一个特别艰难的日子,我向我的一位导师请教当一切都如此之糟的时候如何去保持冷静。他的回应是:
这很简单。你必须认识到:这些都不重要。今天一些蹩脚的代码被准入了,明天网站挂了。那又怎样呢?工作不是你生活的全部。工作问题都不是真的问题。对你最重要的是工作之外发生的事情。我回到家看到我老婆在等着我,这就很美好了。
那时我才从马塞诸塞州搬到加利福尼亚,朋友也很难交。工作完全构成了我的生活,只有它才让我感觉到自己还是一个完整的人。工作的走向完全意味着我生活的走向。这次谈话让我明白了我必须得去找寻生活中除工作之外, 在其中可以忘记工作上的烦恼的的部分。
他是对的,当我试着转变心态并将那些工作上的烦心事归类于“工作上的事”,我又能清醒的思考了。我会冷静的对待工作并有了更好的人际关系。
人各有路
当我在雅虎首次升任首席工程师的时候,我曾向我的主管请教说如何更好地理解这个角色所肩负的责任。我知道我需要更像一个领导,但是不知道如何去有威信。我找他寻求帮助,他如此说:
我不能明确的告诉你如何去变得有威信,这需要你自己去找。千人千路,你唯一需要做的是去找一个你可以接受并让你感到合适的方式。很遗憾我不能告诉你它是什么,但既然你在这个位置,就必须去找到它。
那一年我花了许多时间去观察那些权威人物以及他们与其他人交往的方式。我把他们走路,说话,处理问题的方式做了笔记。在经历百种尝试之后,我终于找到了属于我的那种方式。这是每个追求权威的人都要经历的荆棘之路,每个人都独一无二。不过相对他人而言,我比较幸运的是在出发之前已经有导师指给我了线索。
从“如何做”到“做什么”
在一次我与经理的谈话中,我问他对于处于新职位的我的期望是什么。他回答说:
以你今天的位置来说,你已经明白了“如何做”这个问题,比如说我们会告诉你需要完成什么然后你能明白的想出如何去完成。不过对于你的新职位,你需要学会回答“做什么”这个问题,我期待你来告诉我你需要做什么。
这是许多工程师泥足深陷的部分,也许如果不是这条建议,我也会陷进去。从“如何做”到“做什么”的转变非常困难而且需要大量的时间。它也需要你去成熟的均衡自己的个人欲望以及工作重点。毕竟,如果你能够任意支配你的时间,你也需要为你的产出负责。
在Box,我们称之为“奔跑的开环”,它意味着你们可以在尽量少的关注下做你们的事情,但是你们所做的整合起来却依然需要对公司或者机构可以造成积极的影响。许多想要到达下一级别的工程师会在此受挫,所以我依然会将这条建议给予需要的人。
在其位,谋其政
我曾经参与过一个会议,一言不发的从开始坐到结束。后面在一次与主管的一对一会议中,我提到了这件事,说我刚参加了一个不明不白的会并且没有发表任何一件。他说:
这种事永远不要有下次了。需要你参与一个会议,事出必有因。如果你不知道这原因,那么问下别人。如果没来由那么就撤吧。你现在扮演的是领导角色,就需要做领导该做的事情。不要默默地走进房间。尽可能表现出你的控制力,同时其他人也会认同它。
这条建议让我想起了高中时候表演课上学到的内容:没人知道你正在虚张声势。如果你能在紧张的时候表现的很轻松,那么其他人就不会知道你很紧张。领导力也是如此。俗语有云:假戏久坐假成真。从那时起,我不会再默不作声的参加会议。我会确定一个会议是否真的需要我去参加才去参加。
退一步海阔天空
曾经有段时间,团队中充满了各种争论。不过通常我会借用自己的权威性来结束这些争论,我也为之感到骄傲。那时我有种“终结者”的感觉,然后我的上司注意到了这点,并给我了如下建议:
我看到了正在进行的大量争论,并且我知道你常常最终会赢。虽然在大多时间你都是对的,但偶尔也让他们赢一次吧。从中挑选真正对你有意义的事情并为之努力,然后放过其他事情。百争百胜其实并没有必要。
对于这条建议,我一开始是抵触的。既然几乎所有时间我都是对的,凭什么要让别人赢?不过那时候我已经开始去相信他的直觉了,所以我决定放手一试。最终的结果是再没有那么多的争论了。人们不再觉得他们必须要胜过我,我也更善于辨明一件事情是否值得我去那么关心。我会在重要事项上坚持我的观点,至于其他的交由他们来解决。自此,所有会议的激烈程度都大幅下降了。
总结
回望毕业时那傲慢地自己,谁能料到我的事业人生会有今天。那时的我对谁也不服气,在别人眼里是个聪明却难相处的家伙,只有情非得已之下他们才会来和我打交道。如果不是这一路上的各位导师,以及事业早期那几次难堪的失败,我那糟糕的人际沟通技巧(或者由此导致的其他不足)早已将我完全搞垮。这些天,我会定期地去找那些比我有经验的人并寻求建议。可能我已不再犯那些明显的大错误,但是我更不会去等到错误发生之后才去找寻求那些我信任的资深人士的意见。
我在雅虎的最近五年是我事业转折点中最重要的一些。我不仅能够研究大量的有趣的问题,更重要的是我有幸结识了组织中许多很棒的经理以及其他导师。时至今日,我可以成为一个不管是在工作中还是在真实生活中都会为之自豪的人,这些谈话居功至伟。
如果要我给一条首要的建议,那就是“找出在工作中在某一方面(技术,组织能力等)强过你的人,并去靠近他们。试试看去经常性的跟他们一起吃午饭或和咖啡来汲取他们大脑中的大量知识,你的事业甚至是你的人生都会走向出乎意料的更好。
原文链接:http://www.nczonline.net/blog/2013/10/15/the-best-career-advice-ive-received/
转载自:http://plhyc1216.weebly.com/1/post/2013/11/the-best-career-advice-ive-received.html
PHP里的try/catch和set_exception_handler的执行顺序
在PHP里,try/catch和set_exception_handler都是用来捕获异常的,但是如果同时定义了这两个的话,谁会先执行呢?
如下代码:
set_exception_handler('myException'); function test($a) { if ($a > 1) { throw new Exception('the param is illegal !', 123); } echo $a; } try { test(2); } catch (Exception $e) { echo 'I am try/catch.'; } function myException($e) { echo 'I am set_exception_handler.'; }
输出结果:
I am try/catch.
结论:
set_exception_handler是用来处理所有未被捕获的异常。
simplexml_load_string解析的问题
在微信公众平台开发中,发现一个simplexml_load_string解析后的问题。
分析
微信给的PHP官方示例,代码如下:
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $fromUsername = $postObj->FromUserName; $toUsername = $postObj->ToUserName; $keyword = trim($postObj->Content);
这里假设fromUsername = 'openid';
后面往数据库里插入fromUsername数据的时候报错,提示openid字段不存在。
奇了怪了,openid明明是值,怎么会提示字段不存在呢。
在数据库插入前,打印fromUsername,输出如下:
SimpleXMLElement Object ( [0] => openid )
这里居然还是个对象,而不是字符串!!!
搜索一番,在php手册找到个同样的问题。
There seems to be a lot of talk about SimpleXML having a "problem" with CDATA, and writing functions to rip it out, etc. I thought so too, at first, but it's actually behaving just fine under PHP 5.2.6 The key is noted above example #6 here: http://uk2.php.net/manual/en/simplexml.examples.php "To compare an element or attribute with a string or pass it into a function that requires a string, you must cast it to a string using (string). Otherwise, PHP treats the element as an object." If a tag contains CDATA, SimpleXML remembers that fact, by representing it separately from the string content of the element. So some functions, including print_r(), might not show what you expect. But if you explicitly cast to a string, you get the whole content. Text1 & XML entities'); print_r($xml); /* SimpleXMLElement Object ( [0] => Text1 & XML entities ) */ $xml2 = simplexml_load_string(''); print_r($xml2); /* SimpleXMLElement Object ( ) */ // Where's my CDATA? // Let's try explicit casts print_r( (string)$xml ); print_r( (string)$xml2 ); /* Text1 & XML entities Text2 & raw data */ // Much better ?>
解决方法
同样的是在php手册下面找到解决方法,代码如下:
$postObj = (array)simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA); $fromUsername = $postObj['FromUserName']; $toUsername = $postObj['ToUserName']; $keyword = trim($postObj['Content']);
将对象转为数组后,报错消失。