<?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>welefen &#187; 百度</title>
	<atom:link href="http://www.welefen.com/tag/%e7%99%be%e5%ba%a6/feed" rel="self" type="application/rss+xml" />
	<link>http://www.welefen.com</link>
	<description>风为人世在，在世人为风。</description>
	<lastBuildDate>Thu, 09 Sep 2010 11:29:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>如何减少前端异步请求的数量</title>
		<link>http://www.welefen.com/reduce-asyn-request.html</link>
		<comments>http://www.welefen.com/reduce-asyn-request.html#comments</comments>
		<pubDate>Tue, 07 Sep 2010 01:57:25 +0000</pubDate>
		<dc:creator>welefen</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[前端]]></category>
		<category><![CDATA[异步请求]]></category>
		<category><![CDATA[百度]]></category>

		<guid isPermaLink="false">http://www.welefen.com/?p=341</guid>
		<description><![CDATA[开发模式 在前端开发中，一条很重要的优化原则就是减少HTTP请求数。但在实际开发中，有时候不得不用大量的异步请求。这里的异步请求所指的都是页面加载时的，之后用户操作过程中所发生的异步请求并不影响加载的速度。 在百度这边，由于FE需要写模板。所以很多时候有些功能如果有接口了，RD同学就要你使用异步接口。但异步接口使用多了就会影响页面的性能。比如说百度空间个人中心在页面加载时差不多要处理10个异步请求。这个数量是非常大的。如果减少这些异步请求的数量成为了优化的重点之重。 实现方案 目前想到一条比较可行的实现方案是通过一个公用的代理页面，前端在处理时将这些异步请求分组去处理。代理页面获取到打包的URL，然后服务器端去请求，最后将合并后的数据输出。 在服务器端去请求，由于数据是服务器对服务器的，数据网络传输时间可以忽略不计。 实现代码 if(typeof Space == 'undefined') window.Space = {}; Space.asynJs = function(){ &#160; &#160; var&#160;_isStart = false, &#160; &#160; &#160; &#160; stack = []; &#160; &#160; function&#160;start(){ &#160; &#160; &#160; &#160; if(_isStart){ &#160; &#160; &#160; &#160; &#160; &#160; throw&#160;new Error('asynJs request is start.'); &#160; &#160; &#160; &#160; &#160; &#160; return&#160;false; [...]]]></description>
			<content:encoded><![CDATA[<h2>开发模式</h2>
<p>在前端开发中，一条很重要的优化原则就是减少HTTP请求数。但在实际开发中，有时候不得不用大量的异步请求。这里的异步请求所指的都是页面加载时的，之后用户操作过程中所发生的异步请求并不影响加载的速度。</p>
<p>在百度这边，由于FE需要写模板。所以很多时候有些功能如果有接口了，RD同学就要你使用异步接口。但异步接口使用多了就会影响页面的性能。比如说百度空间个人中心在页面加载时差不多要处理10个异步请求。这个数量是非常大的。如果减少这些异步请求的数量成为了优化的重点之重。</p>
<h2>实现方案</h2>
<p>目前想到一条比较可行的实现方案是通过一个公用的代理页面，前端在处理时将这些异步请求分组去处理。代理页面获取到打包的URL，然后服务器端去请求，最后将合并后的数据输出。</p>
<p>在服务器端去请求，由于数据是服务器对服务器的，数据网络传输时间可以忽略不计。</p>
<p><img class="alignnone size-full wp-image-355" title="asyn-request" src="http://www.welefen.com/wp-content/uploads/2010/09/asyn-request.png" alt="" width="682" height="303" /></p>
<h2>实现代码</h2>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Green;">typeof</span><span style="color: Gray;"> </span><span style="color: Blue;">Space</span><span style="color: Gray;"> == </span><span style="color: #8b0000;">'</span><span style="color: Red;">undefined</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Teal;">window</span><span style="color: Gray;">.</span><span style="color: Blue;">Space</span><span style="color: Gray;"> = </span><span style="color: Olive;">{}</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">Space</span><span style="color: Gray;">.</span><span style="color: Blue;">asynJs</span><span style="color: Gray;"> = </span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">_isStart</span><span style="color: Gray;"> = </span><span style="color: Green;">false</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">stack</span><span style="color: Gray;"> = </span><span style="color: Olive;">[]</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">function</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">start</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">_isStart</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">throw</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">new</span><span style="color: Gray;"> </span><span style="color: Blue;">Error</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">asynJs request is start.</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">false</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">_isStart</span><span style="color: Gray;"> = </span><span style="color: Green;">true</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">for</span><span style="color: Olive;">(</span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">i</span><span style="color: Gray;"> = </span><span style="color: Maroon;">0</span><span style="color: Gray;">, </span><span style="color: Blue;">len</span><span style="color: Gray;"> = </span><span style="color: Blue;">stack</span><span style="color: Gray;">.</span><span style="color: Blue;">length</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;"> &lt; </span><span style="color: Blue;">len</span><span style="color: Gray;">; </span><span style="color: Blue;">i</span><span style="color: Gray;">++</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Gray;">!</span><span style="color: Blue;">stack</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">])</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">continue</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">setTimeout</span><span style="color: Olive;">(</span><span style="color: Green;">function</span><span style="color: Olive;">(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #ffa500;">//如果该组只有一条记录，就不用走通用代理了。</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Blue;">stack</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;">.</span><span style="color: Blue;">length</span><span style="color: Gray;"> == </span><span style="color: Maroon;">1</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">baidu</span><span style="color: Gray;">.</span><span style="color: Blue;">sio</span><span style="color: Gray;">.</span><span style="color: Blue;">callByServer</span><span style="color: Olive;">(</span><span style="color: Blue;">decodeURIComponent</span><span style="color: Olive;">(</span><span style="color: Blue;">url</span><span style="color: Olive;">))</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Green;">else</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">var</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">url</span><span style="color: Gray;"> = </span><span style="color: #8b0000;">'</span><span style="color: Red;">url[]=</span><span style="color: #8b0000;">'</span><span style="color: Gray;"> + </span><span style="color: Blue;">stack</span><span style="color: Olive;">[</span><span style="color: Blue;">i</span><span style="color: Olive;">]</span><span style="color: Gray;">.</span><span style="color: Blue;">join</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">&amp;url[]=</span><span style="color: #8b0000;">'</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">baidu</span><span style="color: Gray;">.</span><span style="color: Blue;">page</span><span style="color: Gray;">.</span><span style="color: Blue;">loadJsFile</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">http://hi.baidu.com/st/asynproxy.php?</span><span style="color: #8b0000;">'</span><span style="color: Gray;"> + </span><span style="color: Blue;">url</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Gray;">,</span><span style="color: Maroon;">0</span><span style="color: Olive;">)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">function</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">load</span><span style="color: Olive;">(</span><span style="color: Blue;">url</span><span style="color: Gray;">, </span><span style="color: Blue;">group</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">group</span><span style="color: Gray;"> = </span><span style="color: Blue;">group</span><span style="color: Gray;"> | </span><span style="color: Maroon;">0</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">url</span><span style="color: Gray;"> = </span><span style="color: Blue;">encodeURIComponent</span><span style="color: Olive;">(</span><span style="color: Blue;">url</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">if</span><span style="color: Olive;">(</span><span style="color: Gray;">!</span><span style="color: Blue;">stack</span><span style="color: Olive;">[</span><span style="color: Blue;">group</span><span style="color: Olive;">]){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">stack</span><span style="color: Olive;">[</span><span style="color: Blue;">group</span><span style="color: Olive;">]</span><span style="color: Gray;"> = </span><span style="color: Olive;">[</span><span style="color: Blue;">url</span><span style="color: Olive;">]</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span><span style="color: Green;">else</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">stack</span><span style="color: Olive;">[</span><span style="color: Blue;">group</span><span style="color: Olive;">]</span><span style="color: Gray;">.</span><span style="color: Blue;">push</span><span style="color: Olive;">(</span><span style="color: Blue;">url</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">return</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">load</span><span style="color: Gray;">:</span><span style="color: Blue;">load</span><span style="color: Gray;">,</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Blue;">start</span><span style="color: Gray;">:</span><span style="color: Blue;">start</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}()</span></li></ol></div>
<p>该实现方式就是提供了2个方法load和start，load用于填充要请求的异步接口，start在页面底部启动请求。因为页面一般都分成头，中，尾3个部分，所以start方法可以在尾部文件里直接调用就可以了。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">Space</span><span style="color: Gray;">.</span><span style="color: Blue;">asynJs</span><span style="color: Gray;">.</span><span style="color: Blue;">load</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">http://pageurl1</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span></li>
<li><span style="color: Blue;">Space</span><span style="color: Gray;">.</span><span style="color: Blue;">asynJs</span><span style="color: Gray;">.</span><span style="color: Blue;">load</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">http://pageurl2</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: Maroon;">1</span><span style="color: Olive;">)</span></li>
<li><span style="color: Blue;">Space</span><span style="color: Gray;">.</span><span style="color: Blue;">asynJs</span><span style="color: Gray;">.</span><span style="color: Blue;">load</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">http://pageurl3</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: Maroon;">2</span><span style="color: Olive;">)</span></li>
<li><span style="color: #ffa500;">//在页面最底部启动请求</span></li>
<li><span style="color: Blue;">Space</span><span style="color: Gray;">.</span><span style="color: Blue;">asynJs</span><span style="color: Gray;">.</span><span style="color: Blue;">start</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li></ol></div>
<h2>PHP端的实现</h2>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">&lt;?php</span></li>
<li><span style="color: #ffa500;">//url is array</span></li>
<li><span style="color: #00008b;">$urls</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$_GET</span><span style="color: Olive;">[</span><span style="color: #8b0000;">'</span><span style="color: Red;">url</span><span style="color: #8b0000;">'</span><span style="color: Olive;">]</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">//经过白名单过滤后的URL</span></li>
<li><span style="color: #00008b;">$urls</span><span style="color: Gray;"> = </span><span style="color: Blue;">apply_domain_filter</span><span style="color: Olive;">(</span><span style="color: #00008b;">$urls</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: #ffa500;">//实例化Curl类</span></li>
<li><span style="color: #00008b;">$curl</span><span style="color: Gray;"> = </span><span style="color: Green;">new</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">Curl</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: #00008b;">$contents</span><span style="color: Gray;"> = </span><span style="color: Green;">array</span><span style="color: Olive;">()</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">foreach</span><span style="color: Olive;">(</span><span style="color: #00008b;">$urls</span><span style="color: Gray;">&nbsp;</span><span style="color: Green;">as</span><span style="color: Gray;"> </span><span style="color: #00008b;">$url</span><span style="color: Olive;">){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//需要配置对应URL的transmit</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #ffa500;">//请求时带上传递过来的Cookie</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #00008b;">$contents</span><span style="color: Olive;">[]</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$curl</span><span style="color: Gray;">-&gt;</span><span style="color: Blue;">get</span><span style="color: Olive;">(</span><span style="color: #00008b;">$url</span><span style="color: Gray;">, </span><span style="color: #00008b;">$_COOKIE</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Green;">echo</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">join</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">;</span><span style="color: #8b0000;">'</span><span style="color: Gray;">, </span><span style="color: #00008b;">$contents</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Blue;">?&gt;</span></li></ol></div>
<h2>额外的收益</h2>
<p>目前一些框架(tangram)里domready时执行一些函数时并没有提供函数排序的功能，这样就不能实现重要的异步请求先加载不重要的请求后加载的功能。目前百度空间app平台这边实现方式是通过setTimeout延时来执行。如果设置的时间较短，各个浏览器表现的不一样。如果设置的时间比较长，有会影响页面加载的时间。</p>
<p>通过现在的这种方式后，不光实现了异步接口分组的功能，同时实现了重要的先加载，不重要的后加载。<br />
先加载的东西只要第二个参数传值小一些就可以了。</p>
<h2>风险</h2>
<p>由于通用代理管理的是获取URL然后请求的工作，所以如果在后端不做一些判断的话可能引发一些风险，甚至XSS漏洞。目前想到的主要是2点。</p>
<p>1、通用代理要判断域，非白名单制定域不予请求<br />
2、返回时必须设置header为application/javascript来阻止直接请求的XSS漏洞</p>
]]></content:encoded>
			<wfw:commentRss>http://www.welefen.com/reduce-asyn-request.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>回顾2009</title>
		<link>http://www.welefen.com/%e5%9b%9e%e9%a1%be2009.html</link>
		<comments>http://www.welefen.com/%e5%9b%9e%e9%a1%be2009.html#comments</comments>
		<pubDate>Thu, 31 Dec 2009 15:35:36 +0000</pubDate>
		<dc:creator>welefen</dc:creator>
				<category><![CDATA[我的杂谈]]></category>
		<category><![CDATA[2009]]></category>
		<category><![CDATA[百度]]></category>

		<guid isPermaLink="false">http://www.welefen.com/?p=220</guid>
		<description><![CDATA[2009马上就要过去，2010马上就要开始。在展望新的一年的同时，回顾下我在2009年的变化。 一切从年初开始说起。。。 杭州的故事 继去年的惨淡经历后，混迹于杭州，继续在阿里巴巴做前端开发外包工作。 但心里暗下决心，2009我一定要改变什么，不然就废弃了，到了2010估计就没奋斗的决心了。 但由于某些方面的特殊性，又不能太果断的换工作，对我来说找一份新的工作太难了。 虽然每天上下班要在公交车了呆4个小时，但始终疲惫的坚持着。 6月份获知阿里巴巴要在8月初搬到滨江的新大楼。 这样我上班就更远了，给我一种换工作的准备。 正好在blueidea看到上海的一个外企在招前端开发工程师的职位，想到外企应该在某些方面不是很严，于是乎就投了简历。 今天下来就收到了offer，一个月后告别杭州，去了上海。 这样终于告别了再阿里巴巴的外包工作，感叹他们在某些方面太严。 自己虽然不是个特别优秀的人才，但比他们招进来的一些人还是稍微强一些的，一切都是个杯具。。。一个大杯具 在这里要特别感谢冯婷，她给了我很多的帮助。她弟弟也为我做了件特殊的事情。 上海，新的开始 记得当天去的时候，还没找好房子，当天晚上是住在宾馆的，第二天就要上班。 就这样加盟到lexisnexis上海分公司。 上班后，正式加入到了一个新的团体，虽然这个团体不是很强，但还是希望自己尽快融入到他们中。 计划是这里是新的开始，要在这里好好发展。 经过自己的努力，第二个月就拿到了优秀员工奖，是一种鼓励，也是一种安慰。 一个小小的遗憾就是，在这里并不在单单做前端开发的工作，更多的是做PHP方面的开发。 自己做饭，午餐吃自己带的便当，平平淡淡，身体要好很多。 生活很有规律，吃早餐，喝牛奶，早睡早起。。。一切都很好 国庆节回了趟杭州，因为家人都在那边。 回来后发现金大为在QQ上给我留言了，说有事找我。 说百度前端在招人，要我给个简历给他。 慢慢等待，经理面试，技术面试，经历了一个多月。 这一个多月是在担心和紧张中度过的。 这还只是个开始。 突然有一天，我们经理说，要给我转正，因为我差不多来了三个月了。 一边是百度的offer还没来，一边是上海这边的经理要给我转正。 转正后离职就要一个月了。 在办理转正手续前一分钟，终于说出了辞职。 大家都一愣一愣，感觉对不起他们。 这里要感谢金大为，没有他的推荐，就没办法来百度。 北京 &#8211; 跌倒后再爬起 12.2号加入到百度。 去年就是从北京跌倒的。 去不了百度，去不了新浪，只能回家休养一段时间。 今年我又回来了。 并且看上去不是太糟。 愿一切继续好下去，不指望有太好的成就。 因为我折腾不起。。。 好好发展，慢慢发展，坚持。。。 结语 再次感谢冯婷，金大为。 感谢JerryQu，阿贵。 2009，他们在工作上给了我很大的帮助。 感谢一切给我帮助的人，愿你们一切都好。 愿大家都有个好身体，不要瞎折腾。]]></description>
			<content:encoded><![CDATA[<p>2009马上就要过去，2010马上就要开始。在展望新的一年的同时，回顾下我在2009年的变化。</p>
<p>一切从年初开始说起。。。</p>
<h2>杭州的故事</h2>
<p>继去年的惨淡经历后，混迹于杭州，继续在阿里巴巴做前端开发外包工作。</p>
<p>但心里暗下决心，2009我一定要改变什么，不然就废弃了，到了2010估计就没奋斗的决心了。</p>
<p>但由于某些方面的特殊性，又不能太果断的换工作，对我来说找一份新的工作太难了。</p>
<p>虽然每天上下班要在公交车了呆4个小时，但始终疲惫的坚持着。</p>
<p>6月份获知阿里巴巴要在8月初搬到滨江的新大楼。</p>
<p>这样我上班就更远了，给我一种换工作的准备。</p>
<p>正好在blueidea看到上海的一个外企在招前端开发工程师的职位，想到外企应该在某些方面不是很严，于是乎就投了简历。</p>
<p>今天下来就收到了offer，一个月后告别杭州，去了上海。</p>
<p>这样终于告别了再阿里巴巴的外包工作，感叹他们在某些方面太严。</p>
<p>自己虽然不是个特别优秀的人才，但比他们招进来的一些人还是稍微强一些的，一切都是个杯具。。。一个大杯具</p>
<p>在这里要特别感谢冯婷，她给了我很多的帮助。她弟弟也为我做了件特殊的事情。</p>
<p><span id="more-220"></span></p>
<h2>上海，新的开始</h2>
<p>记得当天去的时候，还没找好房子，当天晚上是住在宾馆的，第二天就要上班。</p>
<p>就这样加盟到lexisnexis上海分公司。</p>
<p>上班后，正式加入到了一个新的团体，虽然这个团体不是很强，但还是希望自己尽快融入到他们中。</p>
<p>计划是这里是新的开始，要在这里好好发展。</p>
<p>经过自己的努力，第二个月就拿到了优秀员工奖，是一种鼓励，也是一种安慰。</p>
<p>一个小小的遗憾就是，在这里并不在单单做前端开发的工作，更多的是做PHP方面的开发。</p>
<p>自己做饭，午餐吃自己带的便当，平平淡淡，身体要好很多。</p>
<p>生活很有规律，吃早餐，喝牛奶，早睡早起。。。一切都很好</p>
<p>国庆节回了趟杭州，因为家人都在那边。</p>
<p>回来后发现金大为在QQ上给我留言了，说有事找我。</p>
<p>说百度前端在招人，要我给个简历给他。</p>
<p>慢慢等待，经理面试，技术面试，经历了一个多月。</p>
<p>这一个多月是在担心和紧张中度过的。</p>
<p>这还只是个开始。</p>
<p>突然有一天，我们经理说，要给我转正，因为我差不多来了三个月了。</p>
<p>一边是百度的offer还没来，一边是上海这边的经理要给我转正。</p>
<p>转正后离职就要一个月了。</p>
<p>在办理转正手续前一分钟，终于说出了辞职。</p>
<p>大家都一愣一愣，感觉对不起他们。</p>
<p>这里要感谢金大为，没有他的推荐，就没办法来百度。</p>
<h2>北京 &#8211; 跌倒后再爬起</h2>
<p>12.2号加入到百度。</p>
<p>去年就是从北京跌倒的。</p>
<p>去不了百度，去不了新浪，只能回家休养一段时间。</p>
<p>今年我又回来了。</p>
<p>并且看上去不是太糟。</p>
<p>愿一切继续好下去，不指望有太好的成就。</p>
<p>因为我折腾不起。。。</p>
<p>好好发展，慢慢发展，坚持。。。</p>
<h2>结语</h2>
<p>再次感谢冯婷，金大为。</p>
<p>感谢JerryQu，阿贵。</p>
<p>2009，他们在工作上给了我很大的帮助。</p>
<p>感谢一切给我帮助的人，愿你们一切都好。</p>
<p>愿大家都有个好身体，不要瞎折腾。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.welefen.com/%e5%9b%9e%e9%a1%be2009.html/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->