<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>潘魏增</title>
	<atom:link href="http://panweizeng.com/feed" rel="self" type="application/rss+xml" />
	<link>http://panweizeng.com</link>
	<description>学海无涯苦作舟</description>
	<lastBuildDate>Wed, 01 Feb 2012 14:28:41 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4-alpha-19719</generator>
		<item>
		<title>潘采夫女儿的数学题解法</title>
		<link>http://panweizeng.com/pancaifu-daughter-math.html</link>
		<comments>http://panweizeng.com/pancaifu-daughter-math.html#comments</comments>
		<pubDate>Wed, 01 Feb 2012 13:22:36 +0000</pubDate>
		<dc:creator>潘</dc:creator>
				<category><![CDATA[动态]]></category>
		<category><![CDATA[算法]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=1720</guid>
		<description><![CDATA[专栏作家潘采夫在新浪微博发了一条信息： 正改女儿的数学试题，有一道坑爹题这样的：在火炉上烤饼，饼的两面都要烤，每烤一面要2分钟，炉上只能同时放2张饼。要烤5张饼，至少需要（）分钟？标准答案是10分钟，但我算来算去至少得12分钟，而女儿答的是5分钟，到底哪个对呢？ 这道数学题目比较简单但很有趣，所以该条信息的转发数和评论数都相当多。 正确的解法是：假设每一个饼有A和B两面，5张饼编号为1、2、3、4、5，则有1A2A，3A4A，5A1B，5B2B，3B4B，一共需要烤5次，共10分钟。 把该题再扩展一下： 火炉上最多可以同时放m张饼，饼的每面需要烤t分钟，现在有n张饼，最短需要多长时间？ 据说这个题目曾经在topcoder上面出现过，解法也比较简单。 我的思路是：忽略正反两面，如果有n张饼，则需要烤2n个饼面。显然，如果n m的情况，我们来分析两种实际例子： 当m=2, n=5，一共有10个饼面 t ●● t ●● t ●● t ●● t ●● 很明显，需要(10/2)t = 5t的时间 当m=3, n=5，一共有10个饼面 t ●●● t ●●● t ●●● t ●○○ 最后只剩一个饼面，但也需要花一个t的时间，所以总时间是4t，即取大于(5*2)/3的整数 所以我的答案是：n]]></description>
			<content:encoded><![CDATA[<p>专栏作家潘采夫在新浪微博发了一条<a href="http://weibo.com/1214686260/y2jHGphk3" target="_blank">信息</a>：</p>
<p class="quote">
正改女儿的数学试题，有一道坑爹题这样的：在火炉上烤饼，饼的两面都要烤，每烤一面要2分钟，炉上只能同时放2张饼。要烤5张饼，至少需要（）分钟？标准答案是10分钟，但我算来算去至少得12分钟，而女儿答的是5分钟，到底哪个对呢？
</p>
<p>这道数学题目比较简单但很有趣，所以该条信息的转发数和评论数都相当多。</p>
<p>正确的解法是：假设每一个饼有A和B两面，5张饼编号为1、2、3、4、5，则有1A2A，3A4A，5A1B，5B2B，3B4B，一共需要烤5次，共10分钟。</p>
<p>把该题再扩展一下：<br />
<strong>火炉上最多可以同时放m张饼，饼的每面需要烤t分钟，现在有n张饼，最短需要多长时间？</strong></p>
<p>据说这个题目曾经在<a href="http://community.topcoder.com/tc" target="_blank">topcoder</a>上面出现过，解法也比较简单。</p>
<p>我的思路是：忽略正反两面，如果有n张饼，则需要烤2n个饼面。显然，如果n <= m，则需要2t的时间。<br />
现在来考虑n > m的情况，我们来分析两种实际例子：</p>
<p>当m=2, n=5，一共有10个饼面<br />
t ●●<br />
t ●●<br />
t ●●<br />
t ●●<br />
t ●●<br />
很明显，需要(10/2)t = 5t的时间</p>
<p>当m=3, n=5，一共有10个饼面<br />
t ●●●<br />
t ●●●<br />
t ●●●<br />
t ●○○<br />
最后只剩一个饼面，但也需要花一个t的时间，所以总时间是4t，即取大于(5*2)/3的整数</p>
<p>所以我的答案是：n <= m ? 2t : ceil(2n/m) * t   </p>
<p>补充：<br />
题设中，t是不可分割的，那假如t是可以分割的，答案又是多少呢？<br />
n <= m ? 2t : (2n/m) * t<br />
当n > m 时，操作方法：以一秒钟（或者更短的时间）为单位，把饼放上去，烤一秒钟，然后拿下来。当时间足够小的时候，所花时间为(2n/m) * t。<br />
这时候，炉子是一种资源，还有时间片、调度算法，看来潘采夫还需要给女儿普及《操作系统》课程才行。</p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/pancaifu-daughter-math.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2012年春节回家记</title>
		<link>http://panweizeng.com/spring-festival-2012.html</link>
		<comments>http://panweizeng.com/spring-festival-2012.html#comments</comments>
		<pubDate>Tue, 31 Jan 2012 13:07:55 +0000</pubDate>
		<dc:creator>潘</dc:creator>
				<category><![CDATA[动态]]></category>
		<category><![CDATA[春节]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=1701</guid>
		<description><![CDATA[感谢铁道部今年全面实施实名制购票并开发了网上订票系统，总体上火车票比往年要好买很多，而且免去了寒夜排队的皮肉之苦。 本来已经买到一张1月21日的卧铺票，后来打电话到柳州客运总站（0772-3808400）询问了解到，柳州到合山的班车平时最晚发车是18：45，但除夕那天最晚是14：15，也就是下午就没车了，而且初一一天不发车。这也就意味着，如果1月21日乘车，则1月22日即除夕下午到达柳州的话，将赶不上年夜饭，而且会在市里滞留两天。于是急忙改变行程计划，最终买了1月19日下午的火车票，提前两天启程回家，同时也买好了1月27日的返程票。 回去的是硬座票，上车后本来可以去列车长办公室排队补卧铺，后来想之前既然抱着坐硬座的心，此时又何必动摇，于是就没去排队登记，别人能坐得，我也不惧。事实证明是，真是好了伤疤忘了疼，去年的痛苦经历早已没有印象，现在又遇上，一如既往地难受，下车的时候几乎半残，即使现在已回北京，臀部和脊椎还隐隐有不适的感觉。 1月20日下午17:40左右到达柳州，晚点1个小时，老邓没有买到18：45的汽车票，当天晚上还是在他家过夜。给老邓买了一盒进口的巧克力，去年进门忘记给他烤鸭，今年这种错误不能再犯。 1月21日早上8：30从柳州汽车总站坐临时加班车回家，在总站才发现原来在www.966800.com可以买从柳州到合山的班车票，总站里面有换车票的服务点。因为当天路桥维修，班车走到半道又折回市内，废尽周折终于在11：30左右进家门。 1月22日是除夕，下午和妹妹跑到街上买了本地的酸泡菜来吃，晚上吃一只正宗的土鸡，都是好怀念的美味。 1月23日初一，在家呆着，一家人看电视剧《谜案1937》，这是一部神奇的剧，里面有一个中国版的福尔摩斯探长。 1月24日初二，回外婆家，表妹今年生了一个大胖小子，青春梦已老，我也正式升级成为叔叔。晚上三姑六婆又在讨论我的个人问题，我也已经习惯。2011年，我所认识的同学和朋友基本上都集中一拨全结婚了，剩下我一个孤家寡人。已经结婚的和热恋中的人是幸福的，他们已经找到真爱。我的爱情还在来的路上。 1月25日初三，从外婆家回来，去百姓超市把在火车上要吃的东西都准备好。晚上一家人一起看电影《辛亥革命》，因为父母不喜欢看带字幕的外语片，只能看这种了。 1月26日初四，睡到下午一点，起床吃饭看《英雄喋血》，剧情一般，但是摄影很出彩，把岭南风光拍得十分唯美。看完之后去维基百科重温了这一段荡气回肠的历史，把相关的历史人物都翻了一遍，无意中重读了读林觉民的《与妻诀别书》，竟然感动到流泪。这种英雄大义只有长大成熟之后才能真正明白。 1月27日初五，踏上了回京的路途，在车站看着父母送别自己时的样子，特别心酸。遗憾我不能在他们身边看着他们老去，而我也有自己追求的生活。 1月28日初六下午17：00左右回到北京的小窝，春节假期结束。 一些经验 关于买票 放票的时间点别弄错，这个每年都可能不同，所以最好临近还是要以官方发布的信息为准 抢票的时候务必要把电脑的时钟校准好，分秒必争，不管是网络订票还是电话订票这个都非常关键 超过首发日期后，系统出票时间比较集中的两个时间段：12：30-14：00，18：30-20：00 如果不能买到始发站的票，可以看看最近一站有没有票，比如说先买到石家庄到柳州的票，然后再买北京西到石家庄，因为短途的票量相对充裕，比较好安排时间。回家那趟车隔壁座位的哥们，他的老婆孩子就是这样上车的。网络购票退票非常方便，所以完全可以做出很多车票组合。 我用的刷票工具是12306订票助手，之前利用验证码的漏洞，可以一直自动登录和自动提交订单，非常好用。可惜目前这个漏洞已经修复，不过现在还是可以用它来刷票。 关于坐火车 长时间坐硬座，每隔一段时间要去厕所活动一下筋骨，带上眼罩和眼镜盒，趴着或者仰头睡觉有用 带些水果，补充维生素 卧铺最好带耳塞，车厢总会有人打呼噜，可以带牙膏牙刷]]></description>
			<content:encoded><![CDATA[<p>感谢铁道部今年全面实施实名制购票并开发了网上订票系统，总体上火车票比往年要好买很多，而且免去了寒夜排队的皮肉之苦。</p>
<p>本来已经买到一张1月21日的卧铺票，后来打电话到柳州客运总站（0772-3808400）询问了解到，柳州到合山的班车平时最晚发车是18：45，但除夕那天最晚是14：15，也就是下午就没车了，而且初一一天不发车。这也就意味着，如果1月21日乘车，则1月22日即除夕下午到达柳州的话，将赶不上年夜饭，而且会在市里滞留两天。于是急忙改变行程计划，最终买了1月19日下午的火车票，提前两天启程回家，同时也买好了1月27日的返程票。</p>
<p>回去的是硬座票，上车后本来可以去列车长办公室排队补卧铺，后来想之前既然抱着坐硬座的心，此时又何必动摇，于是就没去排队登记，别人能坐得，我也不惧。事实证明是，真是好了伤疤忘了疼，去年的痛苦经历早已没有印象，现在又遇上，一如既往地难受，下车的时候几乎半残，即使现在已回北京，臀部和脊椎还隐隐有不适的感觉。</p>
<p>1月20日下午17:40左右到达柳州，晚点1个小时，老邓没有买到18：45的汽车票，当天晚上还是在他家过夜。给老邓买了一盒进口的巧克力，去年进门忘记给他烤鸭，今年这种错误不能再犯。</p>
<p>1月21日早上8：30从柳州汽车总站坐临时加班车回家，在总站才发现原来在www.966800.com可以买从柳州到合山的班车票，总站里面有换车票的服务点。因为当天路桥维修，班车走到半道又折回市内，废尽周折终于在11：30左右进家门。</p>
<p>1月22日是除夕，下午和妹妹跑到街上买了本地的酸泡菜来吃，晚上吃一只正宗的土鸡，都是好怀念的美味。</p>
<p>1月23日初一，在家呆着，一家人看电视剧《谜案1937》，这是一部神奇的剧，里面有一个中国版的福尔摩斯探长。</p>
<p>1月24日初二，回外婆家，表妹今年生了一个大胖小子，青春梦已老，我也正式升级成为叔叔。晚上三姑六婆又在讨论我的个人问题，我也已经习惯。2011年，我所认识的同学和朋友基本上都集中一拨全结婚了，剩下我一个孤家寡人。已经结婚的和热恋中的人是幸福的，他们已经找到真爱。我的爱情还在来的路上。</p>
<p>1月25日初三，从外婆家回来，去百姓超市把在火车上要吃的东西都准备好。晚上一家人一起看电影《辛亥革命》，因为父母不喜欢看带字幕的外语片，只能看这种了。</p>
<p>1月26日初四，睡到下午一点，起床吃饭看《英雄喋血》，剧情一般，但是摄影很出彩，把岭南风光拍得十分唯美。看完之后去维基百科重温了这一段荡气回肠的历史，把相关的历史人物都翻了一遍，无意中重读了读林觉民的《与妻诀别书》，竟然感动到流泪。这种英雄大义只有长大成熟之后才能真正明白。</p>
<p>1月27日初五，踏上了回京的路途，在车站看着父母送别自己时的样子，特别心酸。遗憾我不能在他们身边看着他们老去，而我也有自己追求的生活。</p>
<p>1月28日初六下午17：00左右回到北京的小窝，春节假期结束。</p>
<p>一些经验</p>
<p>关于买票</p>
<ul>
<li>放票的时间点别弄错，这个每年都可能不同，所以最好临近还是要以官方发布的信息为准</li>
<li>抢票的时候务必要把电脑的时钟校准好，分秒必争，不管是网络订票还是电话订票这个都非常关键</li>
<li>超过首发日期后，系统出票时间比较集中的两个时间段：12：30-14：00，18：30-20：00</li>
<li>如果不能买到始发站的票，可以看看最近一站有没有票，比如说先买到石家庄到柳州的票，然后再买北京西到石家庄，因为短途的票量相对充裕，比较好安排时间。回家那趟车隔壁座位的哥们，他的老婆孩子就是这样上车的。网络购票退票非常方便，所以完全可以做出很多车票组合。</li>
<li>我用的刷票工具是<a href="https://github.com/zzdhidden/12306" target="_blank">12306订票助手</a>，之前利用验证码的漏洞，可以一直自动登录和自动提交订单，非常好用。可惜目前这个漏洞已经修复，不过现在还是可以用它来刷票。</li>
</ul>
<p>关于坐火车</p>
<ul>
<li>长时间坐硬座，每隔一段时间要去厕所活动一下筋骨，带上眼罩和眼镜盒，趴着或者仰头睡觉有用</li>
<li>带些水果，补充维生素</li>
<li>卧铺最好带耳塞，车厢总会有人打呼噜，可以带牙膏牙刷</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/spring-festival-2012.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>后端基础知识</title>
		<link>http://panweizeng.com/be-basics.html</link>
		<comments>http://panweizeng.com/be-basics.html#comments</comments>
		<pubDate>Tue, 16 Aug 2011 01:51:52 +0000</pubDate>
		<dc:creator>潘</dc:creator>
				<category><![CDATA[动态]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=1614</guid>
		<description><![CDATA[在团队内部做了一次《后端基础知识》的技术分享，这里也公开出来，希望对一些朋友有用。 前端工程师所必备的技能之中，后端知识的重要性显而易见，它会影响前端工程师的大局观，会直接影响分析解决问题的效率和准确度，在了解系统架构、调试以及排查故障的时候特别有用。后端基础知识掌握得越透彻，解决问题的能力就越强。前端工程师不仅应具有界面到代码的双重洁癖，而且还应该有前端到后端的双重思维。 这次分享的目标，是要完整解释地址栏输入美团网址到服务器最终返回网页给用户浏览器这个过程，主要涉及DNS解析、HTTP协议、HTTP服务器和Web开发框架四个和前端密不可分的知识点。 演示文档 pdf格式：http://panweizeng.com/download/be-basics-meituan.pdf]]></description>
			<content:encoded><![CDATA[<p>在团队内部做了一次《后端基础知识》的技术分享，这里也公开出来，希望对一些朋友有用。</p>
<p>前端工程师所必备的技能之中，后端知识的重要性显而易见，它会影响前端工程师的大局观，会直接影响分析解决问题的效率和准确度，在了解系统架构、调试以及排查故障的时候特别有用。后端基础知识掌握得越透彻，解决问题的能力就越强。前端工程师不仅应具有界面到代码的双重洁癖，而且还应该有前端到后端的双重思维。</p>
<p>这次分享的目标，是要完整解释地址栏输入美团网址到服务器最终返回网页给用户浏览器这个过程，主要涉及DNS解析、HTTP协议、HTTP服务器和Web开发框架四个和前端密不可分的知识点。</p>
<p>演示文档<br />
pdf格式：<a href="http://panweizeng.com/download/be-basics-meituan.pdf" title="后端基础知识">http://panweizeng.com/download/be-basics-meituan.pdf</a></p>
<div style="width:595px" id="__ss_7894858"><object id="__sse7894858" width="595" height="485"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=be-basics-meituan-110815082104-phpapp01&#038;stripped_title=ss-8854224&#038;userName=panweizeng" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse7894858" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=be-basics-meituan-110815082104-phpapp01&#038;stripped_title=ss-8854224&#038;userName=panweizeng" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="595" height="485"></embed></object></div>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/be-basics.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>第二十一期web标准交流会总结</title>
		<link>http://panweizeng.com/w3ctech-21.html</link>
		<comments>http://panweizeng.com/w3ctech-21.html#comments</comments>
		<pubDate>Mon, 08 Aug 2011 01:45:21 +0000</pubDate>
		<dc:creator>潘</dc:creator>
				<category><![CDATA[动态]]></category>
		<category><![CDATA[交流会]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=1636</guid>
		<description><![CDATA[这次交流会是在美团北京总部中华厅举行的，参会人数在四五十人左右。其中作为主场，美团前端团队全部到场，另外原百度有啊前端团队也有不少人到场，比如吴亮（月影）、JK、阿肆等，见到了豆瓣老卡、西红柿，傲游赵锦江，百度小雷，tension等等老朋友，还有一些第一次见面的新朋友们。 北辰泰岳大厦周六全天没有空调，现场非常闷热，再次向来参加交流会的朋友们道歉。另外美团还是创业的小公司，也没有礼物或者公仔送给大家，不过我们还是挺用心地布置了一下会场：） 交流会分享的主题首先是美团前端工程师尚春的《YUI3在美团》，介绍和总结了美团网在YUI3迁移过程中的挑战和实践。然后是人人网的李靖威分享《人人网前端架构与静态编译框架》，给大家详细讲解了OPM开发工具，该工具已经在googlecode上面开源。最后是待业中的刘跃（5long）同学给大家讲《又一个前端模块系统》，刘跃同学非常geek，代码演示时linux命令敲得眼花缭乱，令人心醉。 交流会结束之后，和吴亮、JK、老卡、锦江等人一起聚餐。JK问我为什么美团会选择YUI3，我当时的回答是，除了YUI3已经没有其他更合适的方案，这里再详细叙述一下。 美团团队以前主要使用YUI2，它是YUI团队的经典作品，在前框架时代是非常优秀的类库，我们用它完成了海内网、饭否网和美团网的开发。YUI2接口也许没那么性感，入门可能稍微复杂一点，但在YUI2框架下编码，代码写起来整整齐齐，让人赏心悦目，开发和维护起来都比较省心。 由于前端技术日新月异，YUI2的缺点开始逐渐凸显，例如 YUI2以后将不再维护，YUI3才是YUI的未来 浏览器更新加速，bug越来越多 开发方式落后，影响工作效率 这些缺点促使我意识到基础库迁移刻不容缓，这个事情趁团队规模还小，越早做越好。美团技术团队情况比较特殊，前端工程师数量非常稀有，甚至在初期单兵作战状态维持了非常长的时间，所以后端工程师也要参与前端部分工作内容，比如编写HTML模板、CSS和简单的JavaScript。刚开始我也曾经为选择jQuery还是YUI3来做最终的基础库而纠结。jQuery优点是新手和后端工程师都能很快上手，可以省去很多工作，但质量无法控制，任何一个有代码洁癖的前端工程师，这都是难以接受的。选择YUI3也会遇到其他问题，比如学习成本高，要后端工程师去弄这个没有动力，也不可行。 经过反复考量，YUI3几个突出的优点让它成为最终的选择。 真正的框架，真正的重型武器，强劲的持续开发能力，可以应对快速的业务发展 帮助工程师成长，培养良好的工程思维 代码规范整齐，容易维护，适合有洁癖的工程师 事实上美团项目初期尝试用过YUI3，因为接口变化太大，前期学习不够充分，为了保证项目进度，最终还是采用了最熟悉的YUI2，事实证明，当初这个选择是非常明智的。随着团队成长，我们最终引入了YUI3，在迁移过程中，遇到了很多技术上的和工程上的挑战，但是我们一直在前进，一直在行进中开火。从结果来看，YUI3为我们团队提供了先进生产力，为快速开发、快速部署、快速迭代提供了源源不断的力量。 以下照片由美团前端工程师弥新锋帮忙拍摄。 集体合影，里面大牛有很多，你能找出几个？ 李靖威同学在分享，图上可以看出前端工程师用mac还是挺多的 macbook show，六台macbook加一只iphone4 晒一下我的工位，周围还有好多空位置，欢迎前端工程师来美团和我一起做事情。]]></description>
			<content:encoded><![CDATA[<p>这次交流会是在美团北京总部中华厅举行的，参会人数在四五十人左右。其中作为主场，美团前端团队全部到场，另外原百度有啊前端团队也有不少人到场，比如吴亮（月影）、JK、阿肆等，见到了豆瓣老卡、西红柿，傲游赵锦江，百度小雷，tension等等老朋友，还有一些第一次见面的新朋友们。</p>
<p>北辰泰岳大厦周六全天没有空调，现场非常闷热，再次向来参加交流会的朋友们道歉。另外美团还是创业的小公司，也没有礼物或者公仔送给大家，不过我们还是挺用心地布置了一下会场：）</p>
<p>交流会分享的主题首先是美团前端工程师尚春的《<a href="http://shangchun.net/?p=165">YUI3在美团</a>》，介绍和总结了美团网在YUI3迁移过程中的挑战和实践。然后是人人网的李靖威分享《人人网前端架构与静态编译框架》，给大家详细讲解了OPM开发工具，该工具已经在<a href="http://code.google.com/p/staticcompiler/">googlecode</a>上面开源。最后是待业中的刘跃（<a href="https://github.com/5long">5long</a>）同学给大家讲《又一个前端模块系统》，刘跃同学非常geek，代码演示时linux命令敲得眼花缭乱，令人心醉。</p>
<p>交流会结束之后，和吴亮、JK、老卡、锦江等人一起聚餐。JK问我为什么美团会选择YUI3，我当时的回答是，除了YUI3已经没有其他更合适的方案，这里再详细叙述一下。</p>
<p>美团团队以前主要使用YUI2，它是YUI团队的经典作品，在前框架时代是非常优秀的类库，我们用它完成了海内网、饭否网和美团网的开发。YUI2接口也许没那么性感，入门可能稍微复杂一点，但在YUI2框架下编码，代码写起来整整齐齐，让人赏心悦目，开发和维护起来都比较省心。</p>
<p>由于前端技术日新月异，YUI2的缺点开始逐渐凸显，例如</p>
<ul>
<li>YUI2以后将不再维护，YUI3才是YUI的未来</li>
<li>浏览器更新加速，bug越来越多</li>
<li>开发方式落后，影响工作效率</li>
</ul>
<p>这些缺点促使我意识到基础库迁移刻不容缓，这个事情趁团队规模还小，越早做越好。美团技术团队情况比较特殊，前端工程师数量非常稀有，甚至在初期单兵作战状态维持了非常长的时间，所以后端工程师也要参与前端部分工作内容，比如编写HTML模板、CSS和简单的JavaScript。刚开始我也曾经为选择jQuery还是YUI3来做最终的基础库而纠结。jQuery优点是新手和后端工程师都能很快上手，可以省去很多工作，但质量无法控制，任何一个有代码洁癖的前端工程师，这都是难以接受的。选择YUI3也会遇到其他问题，比如学习成本高，要后端工程师去弄这个没有动力，也不可行。</p>
<p>经过反复考量，YUI3几个突出的优点让它成为最终的选择。</p>
<ul>
<li>真正的框架，真正的重型武器，强劲的持续开发能力，可以应对快速的业务发展</li>
<li>帮助工程师成长，培养良好的工程思维</li>
<li>代码规范整齐，容易维护，适合有洁癖的工程师</li>
</ul>
<p>事实上美团项目初期尝试用过YUI3，因为接口变化太大，前期学习不够充分，为了保证项目进度，最终还是采用了最熟悉的YUI2，事实证明，当初这个选择是非常明智的。随着团队成长，我们最终引入了YUI3，在迁移过程中，遇到了很多技术上的和工程上的挑战，但是我们一直在前进，一直在行进中开火。从结果来看，YUI3为我们团队提供了先进生产力，为快速开发、快速部署、快速迭代提供了源源不断的力量。</p>
<p>以下照片由美团前端工程师弥新锋帮忙拍摄。</p>
<p><img src="http://panweizeng.com/wp-content/uploads/2011/08/w3ctech-21-1.jpg" alt="" title="第二十一期web标准交流会" width="800" height="537" /><br />
集体合影，里面大牛有很多，你能找出几个？</p>
<p><img src="http://panweizeng.com/wp-content/uploads/2011/08/w3ctech-21-2.jpg" alt="" title="第二十一期web标准交流会" width="800" height="537" /><br />
李靖威同学在分享，图上可以看出前端工程师用mac还是挺多的</p>
<p><img src="http://panweizeng.com/wp-content/uploads/2011/08/w3ctech-21-3.jpg" alt="" title="第二十一期web标准交流会" width="800" height="537" /><br />
macbook show，六台macbook加一只iphone4</p>
<p><img src="http://panweizeng.com/wp-content/uploads/2011/08/w3ctech-21-4.jpg" alt="" title="第二十一期web标准交流会" width="800" height="537" /><br />
晒一下我的工位，周围还有好多空位置，<a href="http://panweizeng.com/meituan-fe-job.html">欢迎前端工程师来美团和我一起做事情</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/w3ctech-21.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>实时本地调试线上页面</title>
		<link>http://panweizeng.com/debug-online.html</link>
		<comments>http://panweizeng.com/debug-online.html#comments</comments>
		<pubDate>Wed, 27 Jul 2011 14:35:11 +0000</pubDate>
		<dc:creator>潘</dc:creator>
				<category><![CDATA[动态]]></category>
		<category><![CDATA[nginx]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=1621</guid>
		<description><![CDATA[关于在线本地调试的方法，玉伯的文章《在线本地调试大观》已经分析叙述非常全面了。这里提供另外一种思路，供前端工程师们参考。我觉得可能是最简单的方式，也容易扩展。 这个思路是使用ngnix来作普通的正向代理。配置如下： server { listen 8000; #监听端口，这里监听8000 #server_name localhost; resolver 8.8.8.8; #域名解析服务器 location / { #这里指定本机代码仓库的静态文件目录，这里不设置就是直接取线下服务器的文件 root /Users/xp/projects/meituan.www/static; #取消默认文档 #index index.html index.htm; #如果访问的是文件夹，就是找默认文档，代理到原地址去找 if ($request_uri ~* \/$ ){ proxy_pass http://$http_host; } #如果目标url对应的文件没找到，就代理到原地址去找 if (!-e $request_filename) { proxy_pass http://$http_host; } #如果对应的host是CDN服务器，就代理到线下的CDN测试服务器，以下的s1是一个意思 if ($http_host = s0.meituan.net){ proxy_pass http://s0.xpmt.meituan.com; } if ($http_host = s1.meituan.net){ proxy_pass http://s1.xpmt.meituan.com; } #如果对应的host是Combo服务器，就代理到线下的Combo服务器 [...]]]></description>
			<content:encoded><![CDATA[<p>关于在线本地调试的方法，玉伯的文章《<a href="http://lifesinger.wordpress.com/2011/07/24/online-local-debug/">在线本地调试大观</a>》已经分析叙述非常全面了。这里提供另外一种思路，供前端工程师们参考。我觉得可能是最简单的方式，也容易扩展。</p>
<p>这个思路是使用ngnix来作普通的正向代理。配置如下：</p>
<pre class="brush:bash">
server {
    listen       8000; #监听端口，这里监听8000
    #server_name  localhost;
    resolver 8.8.8.8; #域名解析服务器
    location / {
        #这里指定本机代码仓库的静态文件目录，这里不设置就是直接取线下服务器的文件
        root   /Users/xp/projects/meituan.www/static;
        #取消默认文档
        #index  index.html index.htm;
        #如果访问的是文件夹，就是找默认文档，代理到原地址去找
        if ($request_uri ~* \/$ ){
            proxy_pass http://$http_host;
        }
        #如果目标url对应的文件没找到，就代理到原地址去找
        if (!-e $request_filename) {
            proxy_pass http://$http_host;
        }
        #如果对应的host是CDN服务器，就代理到线下的CDN测试服务器，以下的s1是一个意思
        if ($http_host = s0.meituan.net){
            proxy_pass http://s0.xpmt.meituan.com;
        }
        if ($http_host = s1.meituan.net){
            proxy_pass http://s1.xpmt.meituan.com;
        }
        #如果对应的host是Combo服务器，就代理到线下的Combo服务器
        if ($http_host = c.meituan.net){
            proxy_pass http://c.xpmt.meituan.com;
        }
    }
}
</pre>
<p>浏览器如Firefox/Chrome/IE等设置代理服务器为localhost，端口为8000即可。</p>
<p>线下服务器使用的是Git仓库中的代码，实时调试线上页面，如果测试OK了，即可push到远程仓库立即部署上线。</p>
<p>TODO：<br />
Mac系统安装nginx以及相应的设置<br />
相关代码截图演示</p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/debug-online.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Git基础</title>
		<link>http://panweizeng.com/git-basics.html</link>
		<comments>http://panweizeng.com/git-basics.html#comments</comments>
		<pubDate>Sun, 19 Jun 2011 15:04:59 +0000</pubDate>
		<dc:creator>潘</dc:creator>
				<category><![CDATA[动态]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=1591</guid>
		<description><![CDATA[上个月末在公司内部作了一次《Git基础》的主题分享。这里把分享内容公布出来，希望对一些朋友有用。如果之前没有接触过Git，wikipedia上面已经有非常好的介绍。 演示文档 pdf格式：http://panweizeng.com/download/git-basics-meituan.pdf keynote格式：http://panweizeng.com/download/git-basics-meituan.key 以下是一些presentation notes，前面的数字对应keynote文档中实际的slide页码。 1. 欢迎参加美团技术学院第三讲《Git基础》 2. linux开源社区以前使用bitkeeper来管理代码，05年bitkeeper公司和linux开源社区蜜月结束，终止了合作关系。linux之父Linus Torvalds完成了Git的最初设计和开发。Git是一套内容寻址文件系统，从内部来看，是一种简单的key-value数据存储。Git继承了unix的优良传统，通过很多小工具结合起来构造了强大稳健的系统。网上流传很多Linus语录，我印象最深的一句是：“talk is cheap, show me the code.” 3. 什么是核心竞争力 5. 最新的开源项目大部分都采用Git来管理，同时越来越多的项目开始迁移到Git，这种趋势已经不可逆转。 目前采用Git的项目有：linux, android, rails, jquery, debian, tornado, samba, redmine, node.js, redis, fedora, perl, gcc, mootools, symfony, cakephp, gnome, kde, compiz, prototype, yui, qt, phpmyadmin, drupal, wine, puppet, yum, vlc, x.org, postgresql, haskell, eclipse, &#8230; 6. [...]]]></description>
			<content:encoded><![CDATA[<p>上个月末在公司内部作了一次《Git基础》的主题分享。这里把分享内容公布出来，希望对一些朋友有用。如果之前没有接触过Git，wikipedia上面已经有<a href="http://en.wikipedia.org/wiki/Git_(software)" target="_blank">非常好的介绍</a>。</p>
<p>演示文档<br />
pdf格式：<a href="http://panweizeng.com/download/git-basics-meituan.pdf" title="Git基础">http://panweizeng.com/download/git-basics-meituan.pdf</a><br />
keynote格式：<a href="http://panweizeng.com/download/git-basics-meituan.key" title="Git基础">http://panweizeng.com/download/git-basics-meituan.key</a></p>
<div style="width:595px" id="__ss_7894858"><object id="__sse7894858" width="595" height="485"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=git-basics-meituan-110619092416-phpapp02&#038;stripped_title=git-basicsmeituan&#038;userName=panweizeng" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse7894858" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=git-basics-meituan-110619092416-phpapp02&#038;stripped_title=git-basicsmeituan&#038;userName=panweizeng" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="595" height="485"></embed></object></div>
<p></p>
<p>以下是一些presentation notes，前面的数字对应keynote文档中实际的slide页码。</p>
<p>1. 欢迎参加美团技术学院第三讲《Git基础》</p>
<p>2. linux开源社区以前使用bitkeeper来管理代码，05年bitkeeper公司和linux开源社区蜜月结束，终止了合作关系。linux之父Linus Torvalds完成了Git的最初设计和开发。Git是一套内容寻址文件系统，从内部来看，是一种简单的key-value数据存储。Git继承了unix的优良传统，通过很多小工具结合起来构造了强大稳健的系统。网上流传很多Linus语录，我印象最深的一句是：“talk is cheap, show me the code.”</p>
<p>3. 什么是核心竞争力</p>
<p>5. 最新的开源项目大部分都采用Git来管理，同时越来越多的项目开始迁移到Git，这种趋势已经不可逆转。<br />
目前采用Git的项目有：linux, android, rails, jquery, debian, tornado, samba, redmine, node.js, redis, fedora, perl, gcc, mootools, symfony, cakephp, gnome, kde, compiz, prototype, yui, qt, phpmyadmin, drupal, wine, puppet, yum, vlc, x.org, postgresql, haskell, eclipse, &#8230; </p>
<p>6. 以前的分支开发就像是一次分娩，异常痛苦。在享受过本地分支的快感之后，任何不支持本地分支的版本控制系统都是不人性的，都是反人类的。工程师都是有个性的人，管理程序员就像在放养一群猫。程序员如果觉得这个事情不酷，他就会心情不好，心情不好就不想编程，强迫自己编程就会写出丑陋的代码。使用Git本身就很酷，会让你的心情好起来。</p>
<p>9. Git更像是个小型的文件系统，但它同时还提供了许多以此为基础的超强工具，而不只是一个简单的VCS。</p>
<p>10. tree就类似目录。commit包含tree、timestamp、log，有0个或者多个父对象。</p>
<p>13. 对于任何一个文件，在 Git 内都只有三种状态：已提交（committed），已修改（modified）和已暂存（staged）。</p>
<p>18. 对远程裸露仓库的第一次提交，需要指定主分支名master。</p>
<p>19. git status会告诉你当前在哪个分支，哪些文件被改动过，哪些修改已经放在暂存区，哪些文件没有被git跟踪。</p>
<p>21.<br />
git diff HEAD #和最后一次本地提交之间的差异<br />
git diff origin #和本地仓库原始版本比较</p>
<p>26. 如果只有一个工程师并且代码还从来没有发布上线，那么在主干上开发是没有任何问题的。除此之外，要想快速开发，快速修复线上故障，以及同其他工程师协作，分支开发几乎是必须的。在Git下工作，开分支就像吃饭和呼吸空气一样，本来就是一件轻松自然、顺理成章的事情。</p>
<p>28. 在Git中切换分支可以说是真正的无痛切换</p>
<p>31. 在update hook中约定只有以自己名字开头的分支才能新增和删除</p>
<p>34. 这个工作流的特点是</p>
<ul>
<li>单主分支结构，即远程和本地都以master作为主分支，工程师在develop分支上开发</li>
<li>本地master作为远程master和本地develop的桥梁，主要做pull和push的操作，保证和远程master同步</li>
<li>develop开发完成后，从develop创建mirror用于合并master上最新的改动，合并成功（可能要解决冲突）后，再在master上合并mirror分支并push到远程</li>
<li>发布脚本更新发布机器上的master到最新版本，建立master的发布tag，然后开始发布</li>
<li>线上代码稳定后，删除develop和mirror分支</li>
</ul>
<p>注意：</p>
<ul>
<li>develop和mirror分支的名字只要是非master的任意名字都可以</li>
<li>mirror分支的作用是，如果合并发生冲突，可以保留一份干净的副本，如果改动很小，这个分支也可以不要</li>
<li>发布tag是代码库的快照，方便回滚，注意发布tag不会更新到远程仓库，只相当于一个缓存，命名规范为YmdHis-$commit_hash</li>
<li>回滚操作sync.meituan rollback [$tagname/$commit_hash] 默认回滚最近一次发布，如果指定tagname或者commit_hash则发布对应的代码版本</li>
</ul>
<p>35. 这个开发工作流非常简单，只需要记住一点：master是连接远程代码库和本地分支的桥梁，桥梁的功能只有一个就是连接。</p>
<p>39. 在开发某个项目的时候，目录会搞得很乱，这是又想切换到其他分支同时又不想提交现在的代码，这时候stash就很有用。</p>
<p>42. 如果觉得最后一次提交的信息不够诗意或者忘记提交了一些重要文件，这时候这个操作就很有用。</p>
<p>43. 衍合的风险 <a href="http://progit.org/book/zh/ch3-6.html" title="衍合的风险" target="_blank">http://progit.org/book/zh/ch3-6.html</a> </p>
<p>48. 最好的学习方法是多练，要把常用的Git操作变成手指的条件反射。</p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/git-basics.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>VIM入门与进阶</title>
		<link>http://panweizeng.com/vim-intro.html</link>
		<comments>http://panweizeng.com/vim-intro.html#comments</comments>
		<pubDate>Mon, 09 May 2011 14:31:19 +0000</pubDate>
		<dc:creator>潘</dc:creator>
				<category><![CDATA[动态]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=1292</guid>
		<description><![CDATA[上周在公司内部作了一次《VIM入门与进阶》的主题分享，这里把分享内容公布出来，希望对一些朋友有用。我的vim配置可以去github下载。 演示文档 pdf格式：http://panweizeng.com/download/vim-meituan.pdf keynote格式：http://panweizeng.com/download/vim-meituan.key 以下是一些presentation notes，前面的数字对应keynote文档中实际的slide页码。 1. 只要是程序员，多少都会知道vim，你会看见身边有同事在用它，有一些狂热的爱好者在向你推销它。在美团更是耳濡目染，如果不用vim都感觉自己是少数派。 2. 计算机发展史上出现过不计其数的编辑器，它们中的绝大多数都昙花一现，只有两种编辑器屹立不倒，赢得了最庞大最忠实的用户群，一个是vim，一个是emacs。 3. 在学校作linux版主的时候就开始学习接触vim，但并没有用在严肃的编程活动中。直到加入现在的团队之后才开始完全使用vim来工作。我也并不是一开始就皈依vim教，同样经历过一番痛苦的抉择。 4. Bill Joy就像普罗米修斯，给黑暗的程序员世界带来了火种。传说Bill Joy用一个周末写出了vi，又用一个周末重写了BSD kernel, 再用一个周末写出了最稳定的TCP/IP实现，注意：Bill Joy这个时候还是加州伯克利大学一个穿T恤的穷学生。各位都在使用mac系统，其实都在享受着Bill Joy带来的恩惠。Bram给vi注入了新的生命，把vi带到了一个新的高度。 5. 无出其右的编辑速度，秒杀所有的编辑器。 6. 千人千面，在公司走一圈，你会发现每个人使用vim的方法都不一样。不过大体上，公司内部有两个比较大的派别，一个是亚非系，一个是魏增系。尤其对我这种专注做前端的人而言，纯粹的视觉动物。一个编辑器如果配色很丑，那结果就是NO！无论在哪个unix发行版都能找到vi的程序，linux和mac默认是vim，bsd默认是古典版本的vi。这样的好处是你每次到一台机器，都有称手的兵器可以用。 7. 为什么vim会有如此快的编辑速度呢？这得益于键盘上的每一个键都有它特殊的功能，就好像我们玩魔兽争霸，里面每一个兵种都有它自己的用途。在普通模式下，所有的键都代表某种操作命令，不需要ctrl、shift、cmd、option这些修饰键，不需要鼠标，甚至手都不用离开主键盘区。 8. vim有这么多优点，那有没有缺点呢？有，最大的缺点可能就是看起来很复杂。我今天就带大家一起剥开vim的果壳，一起来看看vim到底有什么东西。 40. 相对于大部分编辑器，vim的学习曲线是非常陡峭的，没有熟悉很多命令之前，可能什么也做不了，这使得大部分人望而却步。 41. 很多人在第一级台阶的时候就已经退缩了。只有翻过最险峻的几个台阶之后，才会大彻大悟，发现另外一番风景。使用vim最爽的时刻就是：&#8221;我靠，你是怎么做到的？！&#8221;，为了这一句惊叹，你可能需要付出很多的努力。尽管如此如此，学习vim不是那么轻松，当然也没有那么难，关键看是否掌握了一些方法。 42. Unix知识在传统上都是通过言传身教的方式来传承的，vim学习方法中最重要的就是要找对一个好老师。好的老师可以给你正确的指导，可以让你少走很多弯路，可以给你鼓励，可以给你勇气。现在你在美团，那你非常地幸运，公司里面有很多高手都可以当你的老师。 43. 和所有的Unix工具一样，手册是最好的参考书。 44. practice makes perfect。vim的操作只有在不断的练习中才能够熟练掌握，vim的真义也只有在不断的练习中才能够体会。要让你的操作熟练到纯粹是手指的条件反射。 46. 纯属个人观点，可以辩证的来看。 49. 两面派，对vim和emacs都很虔诚，但是从来不参与圣战。 51. 使用vim可以提高效率，但和优秀程序员没有直接的关系，会使用vim并不代表你有多么牛。没人会在乎那些大牛使用什么编辑器，除了一些狂热爱好者以外。但是，我有一点可以保证，就是在美团，你不仅可以学会vim，而且还可以学得很好。]]></description>
			<content:encoded><![CDATA[<p>上周在公司内部作了一次《VIM入门与进阶》的主题分享，这里把分享内容公布出来，希望对一些朋友有用。我的vim配置可以去<a href="https://github.com/panweizeng/env">github</a>下载。</p>
<p>演示文档<br />
pdf格式：<a href="http://panweizeng.com/download/vim-meituan.pdf" title="vim入门与进阶">http://panweizeng.com/download/vim-meituan.pdf</a><br />
keynote格式：<a href="http://panweizeng.com/download/vim-meituan.key" title="vim入门与进阶">http://panweizeng.com/download/vim-meituan.key</a></p>
<div style="width:595px" id="__ss_7894858"><object id="__sse7894858" width="595" height="485"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=vim-meituan-110509084512-phpapp02&#038;stripped_title=vim-7894858&#038;userName=panweizeng" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse7894858" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=vim-meituan-110509084512-phpapp02&#038;stripped_title=vim-7894858&#038;userName=panweizeng" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="595" height="485"></embed></object></div>
<p></p>
<p>以下是一些presentation notes，前面的数字对应keynote文档中实际的slide页码。</p>
<p>1. 只要是程序员，多少都会知道vim，你会看见身边有同事在用它，有一些狂热的爱好者在向你推销它。在美团更是耳濡目染，如果不用vim都感觉自己是少数派。</p>
<p>2. 计算机发展史上出现过不计其数的编辑器，它们中的绝大多数都昙花一现，只有两种编辑器屹立不倒，赢得了最庞大最忠实的用户群，一个是vim，一个是emacs。</p>
<p>3. 在学校作linux版主的时候就开始学习接触vim，但并没有用在严肃的编程活动中。直到加入现在的团队之后才开始完全使用vim来工作。我也并不是一开始就皈依vim教，同样经历过一番痛苦的抉择。</p>
<p>4. Bill Joy就像普罗米修斯，给黑暗的程序员世界带来了火种。传说Bill Joy用一个周末写出了vi，又用一个周末重写了BSD kernel, 再用一个周末写出了最稳定的TCP/IP实现，注意：Bill Joy这个时候还是加州伯克利大学一个穿T恤的穷学生。各位都在使用mac系统，其实都在享受着Bill Joy带来的恩惠。Bram给vi注入了新的生命，把vi带到了一个新的高度。</p>
<p>5. 无出其右的编辑速度，秒杀所有的编辑器。</p>
<p>6. 千人千面，在公司走一圈，你会发现每个人使用vim的方法都不一样。不过大体上，公司内部有两个比较大的派别，一个是亚非系，一个是魏增系。尤其对我这种专注做前端的人而言，纯粹的视觉动物。一个编辑器如果配色很丑，那结果就是NO！无论在哪个unix发行版都能找到vi的程序，linux和mac默认是vim，bsd默认是古典版本的vi。这样的好处是你每次到一台机器，都有称手的兵器可以用。</p>
<p>7. 为什么vim会有如此快的编辑速度呢？这得益于键盘上的每一个键都有它特殊的功能，就好像我们玩魔兽争霸，里面每一个兵种都有它自己的用途。在普通模式下，所有的键都代表某种操作命令，不需要ctrl、shift、cmd、option这些修饰键，不需要鼠标，甚至手都不用离开主键盘区。</p>
<p>8. vim有这么多优点，那有没有缺点呢？有，最大的缺点可能就是看起来很复杂。我今天就带大家一起剥开vim的果壳，一起来看看vim到底有什么东西。</p>
<p>40. 相对于大部分编辑器，vim的学习曲线是非常陡峭的，没有熟悉很多命令之前，可能什么也做不了，这使得大部分人望而却步。</p>
<p>41. 很多人在第一级台阶的时候就已经退缩了。只有翻过最险峻的几个台阶之后，才会大彻大悟，发现另外一番风景。使用vim最爽的时刻就是：&#8221;我靠，你是怎么做到的？！&#8221;，为了这一句惊叹，你可能需要付出很多的努力。尽管如此如此，学习vim不是那么轻松，当然也没有那么难，关键看是否掌握了一些方法。</p>
<p>42. Unix知识在传统上都是通过言传身教的方式来传承的，vim学习方法中最重要的就是要找对一个好老师。好的老师可以给你正确的指导，可以让你少走很多弯路，可以给你鼓励，可以给你勇气。现在你在美团，那你非常地幸运，公司里面有很多高手都可以当你的老师。</p>
<p>43. 和所有的Unix工具一样，手册是最好的参考书。</p>
<p>44. practice makes perfect。vim的操作只有在不断的练习中才能够熟练掌握，vim的真义也只有在不断的练习中才能够体会。要让你的操作熟练到纯粹是手指的条件反射。</p>
<p>46. 纯属个人观点，可以辩证的来看。</p>
<p>49. 两面派，对vim和emacs都很虔诚，但是从来不参与圣战。</p>
<p>51. 使用vim可以提高效率，但和优秀程序员没有直接的关系，会使用vim并不代表你有多么牛。没人会在乎那些大牛使用什么编辑器，除了一些狂热爱好者以外。但是，我有一点可以保证，就是在美团，你不仅可以学会vim，而且还可以学得很好。</p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/vim-intro.html/feed</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>如何高效做事情</title>
		<link>http://panweizeng.com/to-be-effective.html</link>
		<comments>http://panweizeng.com/to-be-effective.html#comments</comments>
		<pubDate>Fri, 29 Apr 2011 13:19:41 +0000</pubDate>
		<dc:creator>潘</dc:creator>
				<category><![CDATA[动态]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=1283</guid>
		<description><![CDATA[今天整理笔记，发现了09年某次内部交流会上的总结，过了两年回头看，有些做得不错，有些还需要持续改进。我们常说的高效，是相对于时间来定义的。 to be a effective developer 思路清晰，代码清晰，易读易维护 执行力强，集中精力作事情 选择高效的工具 善于对问题作拆分 制度约束作用小，自我修养是关键 to be a effective dev team 人和人在一起作事情，沟通最重要 事先定义接口文档，如果有变更，及时通知大家 重要的会议记录和头脑风暴，应该有人整理会议记录，可以回头review 团队的职责和分工要清楚，每个人知道自己要作什么东西 不要让其他成员等待 团队成员应对团队整体的进度能有一定的把握 设计时要能对工作量的估计更准确一些 两本书 《程序员修炼之道——从小工到专家》http://www.china-pub.com/18020 《卓有成效的程序员》http://www.china-pub.com/192175]]></description>
			<content:encoded><![CDATA[<p>今天整理笔记，发现了09年某次内部交流会上的总结，过了两年回头看，有些做得不错，有些还需要持续改进。我们常说的高效，是相对于时间来定义的。</p>
<h3>to be a effective developer</h3>
<ul>
<li>思路清晰，代码清晰，易读易维护</li>
<li>执行力强，集中精力作事情</li>
<li>选择高效的工具</li>
<li>善于对问题作拆分</li>
<li>制度约束作用小，自我修养是关键</li>
</ul>
<h3>to be a effective dev team</h3>
<ul>
<li>人和人在一起作事情，沟通最重要</li>
<li>事先定义接口文档，如果有变更，及时通知大家</li>
<li>重要的会议记录和头脑风暴，应该有人整理会议记录，可以回头review</li>
<li>团队的职责和分工要清楚，每个人知道自己要作什么东西</li>
<li>不要让其他成员等待</li>
<li>团队成员应对团队整体的进度能有一定的把握</li>
<li>设计时要能对工作量的估计更准确一些</li>
</ul>
<h3>两本书</h3>
<ul>
<li>《程序员修炼之道——从小工到专家》<a href="http://www.china-pub.com/18020">http://www.china-pub.com/18020</a></li>
<li>《卓有成效的程序员》<a href="http://www.china-pub.com/192175">http://www.china-pub.com/192175</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/to-be-effective.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>第十六期web标准交流会总结</title>
		<link>http://panweizeng.com/w3ctech-16.html</link>
		<comments>http://panweizeng.com/w3ctech-16.html#comments</comments>
		<pubDate>Sun, 20 Mar 2011 13:31:29 +0000</pubDate>
		<dc:creator>潘</dc:creator>
				<category><![CDATA[动态]]></category>
		<category><![CDATA[交流会]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=1268</guid>
		<description><![CDATA[这期交流会是百度有啊赞助的场地，地点在中关村软件园12号的首创办公区。办公楼环境非常好，光线通透，百度有啊和百度联盟已经从百度大厦搬到这里。作为东道主，百度有啊的前端团队基本都到齐了，有月影、阿肆、屈屈等。 交流会主题围绕前端架构展开，首先是JK同学分享的Qwrap框架设计。Qwrap是百度有啊前端团队内部使用的开发框架，现在已经开源出来，代码可以在github上找到。Qwrap拥有一套核心的静态库，提供无污染的版本，和其他框架不产生冲突。Qwrap有一些非常独到的思路，比如分享中提到的retouch机制，可以开发出同时满足prototype与jquery等用户习惯的应用。 接下来是网站优化组的敏亮同学分享有啊在前端优化方面的经验。有啊团队在客户端抓取了对页面性能影响的指标数据，并在监控统计系统中可以随时观察异常情况，如果说发现DOMReady的时间过长，可以去检查最近上线的代码改动，追踪对性能影响的bug，这点值得我们学习。另外值得一提的是，优化组总结了Javascript代码性能规范，培训前端新人是一份很不错的文档，会后就厚着脸皮要了一份。 然后屈屈同学给大家讲前后端协作模式中新的尝试。有啊前端团队尝试将MVC中的VC由前端工程师来负责，减少了前后端开发人员之间的沟通和协作成本，这对大公司来说可能是有一些借鉴意义的。美团技术研发部还是很小的一个团队，这种尝试暂时还没有必要，因为前后端的开发工程师都坐在一起，协作成本不高。 最后嗷嗷分享手机前端框架，讲他在手机模块化开发中的一些心得。有阿手机站点做得很细，有普通手机版，宽屏手机版，android版，iphone版等等，怎么使用多套模板共享同一份数据变得异常重要。 这次交流会第一次带徒弟参加，收获也算不小，希望交流会能做得更好。]]></description>
			<content:encoded><![CDATA[<p>这期交流会是百度有啊赞助的场地，地点在中关村软件园12号的首创办公区。办公楼环境非常好，光线通透，百度有啊和百度联盟已经从百度大厦搬到这里。作为东道主，百度有啊的前端团队基本都到齐了，有月影、阿肆、屈屈等。</p>
<p>交流会主题围绕前端架构展开，首先是<a href="http://www.cnblogs.com/jkisjk/">JK</a>同学分享的<a href="http://qwrap.com/">Qwrap</a>框架设计。Qwrap是百度有啊前端团队内部使用的开发框架，现在已经开源出来，代码可以在<a href="https://github.com/wedteam/qwrap">github</a>上找到。Qwrap拥有一套核心的静态库，提供无污染的版本，和其他框架不产生冲突。Qwrap有一些非常独到的思路，比如分享中提到的retouch机制，可以开发出同时满足prototype与jquery等用户习惯的应用。</p>
<p>接下来是网站优化组的<a href="http://varnow.org">敏亮</a>同学分享有啊在前端优化方面的经验。有啊团队在客户端抓取了对页面性能影响的指标数据，并在监控统计系统中可以随时观察异常情况，如果说发现DOMReady的时间过长，可以去检查最近上线的代码改动，追踪对性能影响的bug，这点值得我们学习。另外值得一提的是，优化组总结了Javascript代码性能规范，培训前端新人是一份很不错的文档，会后就厚着脸皮要了一份。</p>
<p>然后<a href="http://www.imququ.com/">屈屈</a>同学给大家讲前后端协作模式中新的尝试。有啊前端团队尝试将MVC中的VC由前端工程师来负责，减少了前后端开发人员之间的沟通和协作成本，这对大公司来说可能是有一些借鉴意义的。美团技术研发部还是很小的一个团队，这种尝试暂时还没有必要，因为前后端的开发工程师都坐在一起，协作成本不高。</p>
<p>最后<a href="http://www.aoao.org.cn">嗷嗷</a>分享手机前端框架，讲他在手机模块化开发中的一些心得。有阿手机站点做得很细，有普通手机版，宽屏手机版，android版，iphone版等等，怎么使用多套模板共享同一份数据变得异常重要。</p>
<p>这次交流会第一次带徒弟参加，收获也算不小，希望交流会能做得更好。</p>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/w3ctech-16.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>美团网长期招聘前端工程师</title>
		<link>http://panweizeng.com/meituan-fe-job.html</link>
		<comments>http://panweizeng.com/meituan-fe-job.html#comments</comments>
		<pubDate>Thu, 17 Feb 2011 00:38:51 +0000</pubDate>
		<dc:creator>潘</dc:creator>
				<category><![CDATA[动态]]></category>
		<category><![CDATA[美团]]></category>

		<guid isPermaLink="false">http://panweizeng.com/?p=1232</guid>
		<description><![CDATA[美团网在去年引爆了团购行业，是国内最早、规模最大、口碑最好的团购网站。我们已经获得全球最大的VC红杉资本的投资，并计划今年将公司队伍扩大到2000+人，覆盖全国所有的大中小城市。尽管如此，支撑美团网的技术团队一直还保持小而精悍的团队规模。因为我们深知优秀软件工程师的产出是普通工程师的十倍百倍，也明白优秀的人喜欢同优秀的人共事。 前端工程师作为技术研发团队中的重要成员，承担着实现视觉界面和用户交互的艰巨任务。同公司所有的部门一样，美团前端团队也在大规模招聘新的成员，我们能够提供的包括：浓烈的学习氛围，广阔的成长空间以及业内最有竞争力的package。如果你是一个踏实上进、乐于分享、以最优秀的前端工程师作为目标的年轻人，那么就来加入我们吧，期待和你一起，为美团用户奉上从视觉效果到代码实现都赏心悦目的作品。 ps[0].公司给每位前端工程师都配备MacbookPro 15″笔记本电脑、27″IPS液晶显示屏和人体工学椅。当然这些我个人觉得并不重要，重要的是在美团，你可以和一群geek工程师一起解决技术难题，一起成长，一起体验激情创造的过程。 ps[1].也许你注意到美团网还有很多不完善之处，这些正是你可以大展拳脚的地方！ 职位要求 本科以上学历，习惯阅读英文原版技术文档和书籍； 对可用性、可访问性、前端性能优化等相关知识有深刻的认识和实践经验； 精通XHTML/CSS/Javascript等前端技术，习惯于手写符合W3C标准、兼容多种浏览器的代码； 熟悉至少一种JS框架（如YUI/JQuery等），我们目前主要使用YUI； 掌握至少一门非前端脚本开发语言（如PHP/Python等），并有一定的实战经验； 加分项 苹果重度用户或Linux爱好者优先（请在邮件中注明为什么喜欢Mac或Linux）； 有个人独立作品/开源作品者优先（请在邮件中附上作品源码或者作品地址）； 有个人技术博客或在各技术社区活跃者优先（请在邮件中附上博客地址或社区ID）； 补充说明：如果你是经验未必很丰富，但是态度积极、有潜力、有自信的年轻人，也欢迎给我们投简历。 应聘方式 发送一封标题格式为&#8221;应聘前端工程师-姓名&#8221;的邮件到 panweizeng(at)gmail.com，并随信附上： 你应聘美团网的理由； 你常用的开发环境和开发工具； 你阅读过并推荐的至少三本前端开发必读书籍； 你写过的自己认为最优秀的代码； 你的简历。]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.meituan.com">美团网</a>在去年引爆了团购行业，是国内最早、规模最大、口碑最好的团购网站。我们已经获得全球最大的VC<a href="http://wiki.mbalib.com/wiki/%E7%BA%A2%E6%9D%89%E6%8A%95%E8%B5%84%E5%85%AC%E5%8F%B8">红杉资本</a>的投资，并计划今年将公司队伍扩大到2000+人，覆盖全国所有的大中小城市。尽管如此，支撑美团网的技术团队一直还保持小而精悍的团队规模。因为我们深知优秀软件工程师的产出是普通工程师的十倍百倍，也明白优秀的人喜欢同优秀的人共事。</p>
<p>前端工程师作为技术研发团队中的重要成员，承担着实现视觉界面和用户交互的艰巨任务。同公司所有的部门一样，美团前端团队也在大规模招聘新的成员，我们能够提供的包括：浓烈的学习氛围，广阔的成长空间以及业内最有竞争力的package。如果你是一个踏实上进、乐于分享、以最优秀的前端工程师作为目标的年轻人，那么就来加入我们吧，期待和你一起，为美团用户奉上从视觉效果到代码实现都赏心悦目的作品。</p>
<p>ps[0].公司给每位前端工程师都配备MacbookPro 15″笔记本电脑、27″IPS液晶显示屏和人体工学椅。当然这些我个人觉得并不重要，重要的是在美团，你可以和一群geek工程师一起解决技术难题，一起成长，一起体验激情创造的过程。</p>
<p>ps[1].也许你注意到美团网还有很多不完善之处，这些正是你可以大展拳脚的地方！</p>
<h3 class="title"><strong>职位要求</strong></h3>
<ul>
<li>本科以上学历，习惯阅读英文原版技术文档和书籍；</li>
<li>对可用性、可访问性、前端性能优化等相关知识有深刻的认识和实践经验；</li>
<li>精通XHTML/CSS/Javascript等前端技术，习惯于手写符合W3C标准、兼容多种浏览器的代码；</li>
<li>熟悉至少一种JS框架（如YUI/JQuery等），我们目前主要使用YUI；</li>
<li>掌握至少一门非前端脚本开发语言（如PHP/Python等），并有一定的实战经验；</li>
</ul>
<p><strong>加分项</strong></p>
<ul>
<li>苹果重度用户或Linux爱好者优先（请在邮件中注明为什么喜欢Mac或Linux）；</li>
<li>有个人独立作品/开源作品者优先（请在邮件中附上作品源码或者作品地址）；</li>
<li>有个人技术博客或在各技术社区活跃者优先（请在邮件中附上博客地址或社区ID）；</li>
</ul>
<p><strong>补充说明：如果你是经验未必很丰富，但是态度积极、有潜力、有自信的年轻人，也欢迎给我们投简历。</strong></p>
<h3 class="title"><strong>应聘方式</strong></h3>
<p>发送一封标题格式为&#8221;应聘前端工程师-姓名&#8221;的邮件到 panweizeng(at)gmail.com，并随信附上：</p>
<ol>
<li>你应聘美团网的理由；</li>
<li>你常用的开发环境和开发工具；</li>
<li>你阅读过并推荐的至少三本前端开发必读书籍；</li>
<li>你写过的自己认为最优秀的代码；</li>
<li>你的简历。</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://panweizeng.com/meituan-fe-job.html/feed</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
	</channel>
</rss>

