选择 (2009-12-20)

今天博客恢复了,顺利的把空间转到了国外

最近面临一个选择,
我不知道是接受领导的好意继续留在这工作,
还是明年换一个新的地方。
本来计划是过完年以后
把手头的事情处理完,找到合适的人接班,
我就可以离开了。
但是现在不得不提前跟领导说我要离开的事。

其实,我真的很需要一台笔记本,现在用的已经不行了
但是如果要了,我就没办法开口说离开了。
决定周一和领导说清楚,
笔记本我还是自己买了,
还是很感谢他。
因为在这里我学会了很多东西。
希望领导别误会我的意思
明年我也很迷茫,不知道能不能找到适合我的工作
趁这几个月 还能好好学习,做点能拿得出手作品出来 : )

前几天刚走了一位重要的同事
我现在才觉得团队成员是那么的重要,
少了谁都不行
每离开一位同事的时候我都觉得特别可惜
他们都很优秀.
以他们为榜样,向他们学习!





 

点击查看原文阅读(162) | 评论(0) | 分类:我的日记

程序界超级大杯具 (2009-12-16)

据网友提供的《蜗居》第24集3:30秒截图,有理由相信小贝是搞 C++ 的。
桌子上那本书放大看是《大规模Cpp程序设计》,为无数想为 cpp献身的人士叹惜呀。
搞了一辈子C++,结果老婆跟了宋思明。这部电视剧深刻揭露了C++程序员的杯具性。
相信这个重大发现将彻底粉碎那些少年们对程序员这个职业的向往,
这个时代女生不会因为你写了一个搞笑程序而嫁给你。
建议广大程序们建议你们周围的少男们看一下蜗居,
如果他以你为荣,以后想当程序员。你可以告诉他,
小贝就是程序员,然后告诉他宋思明是公务员。
相信他就会重新考虑自己人生的选择了!
程序界大悲剧-蜗居

点击查看原文阅读(199) | 评论(0) | 分类:转载

我的三年工作总结 (2009-12-12)

今天想总结一下这三年的工作情况
以便明年有更好的开始!


都说时间一晃就过。想起来,自己工作三年了
赶在年末总结狂潮之前,提前给自己做个总结。

在工作这三年中,我先后在三家公司工作
看到了团队的成长,也看到了团队的解散
感受到了新产品上线前的充忙,也感受到了产品上线后无人搭理的落寂
也有一点被人指手划脚时的抗拒...

项目:
项目初期将整个过程预期得太简单,导致将目标定的太庞大,
没有将迭代考虑在内,做软件的时候是这样,
做网站的时候也是这样,最终导致某些产品夭折无法上线。
事无巨细的考虑,而不去是抓产品的核心功能,
只会让整个系统越来越复杂,
于是脚步一直停留在原地打转转,
产品迟迟上不了线,磨到最后,所有人都失去了信心;

执行力
一个再好的计划没有执行力就出不来,
而就算是再不好的计划有了执行力,
后期也可以咸鱼大翻身。

细节
细节决定胜败。然而太多人不关注细节,用户体验,
都在应付式的随便整整,仅仅是以能用的标准来做产品,
将自己的身份凌驾于用户之上,
用户想要的是好用的产品而不只是能用的产品;

前期
没有任何调研,没有任何的准备,
突然就说要开始某某产品,这是最糟糕的事情。
接到任务的人只会是一头雾水,于是照着已有产品搬一个模子过来,
至于这个产品面向的用户群体、任务目标是什么就都不管了;

后期
产品上线后,以为就结束了,
没有后续的迭代行为,做完一个丢一个,
回头一望,一路上半死不活的产品躺在那里垂死挣扎;

成就感
如果从自己手里出来的产品,
自己都感觉不到任何成就感的话,
那这个产品就是失败的,彻彻底底的失败。
失去了成就感,也就失去了工作的动力;

团队
没有感受到真正的团队文化,各自为政各自为战,
名是一个团队,实则是分散的个体。
这样的团队做出来的东西缺乏整体统一的思路,
最终只能是形似而神不似;

信任
老板尊重与信任员工,能给于员工足够的空间和时间。
当老板凡事都要插手过问时,员工会感觉到上级对自己缺乏信任
于是创造性的思维就停止了,上级让做什么就做什么
不再有主动性,出来的东西也仅是完成任务而已;

未来
公司人力是至关重要的!
希望上级与员工能站在互相理解的立场
因为我看到每个员工已经尽自己最大的努力了
老板只是一味的站在自己的立场考虑事物
最终就会像我所在的上一家公司的团队一样,
整个团队离职;
我希望会有更强的人加入团队当中!


 

点击查看原文阅读(202) | 评论(0) | 分类:我的日记

败家 (2009-12-07)

周末姐和妈出去给我买衣服了
用了双安的购物券
又买了两件很贵的衣服
我感觉穿着这种衣服太败家了
哎,表面看起来就是件普通的衣服
这两天工作忙
每天都有做不完的活
真想把工作早点做完...
 

点击查看原文阅读(229) | 评论(1) | 分类:我的日记

JS控制DIV层拖/拉/放 (2009-12-02)

今天下班回家路上看了会书
其实JS拖拽层并不是太难

简单嘚瑟一下原理:
1. css的position:absolute属性控制层定位
2. onmousedown onmouseup onmousemove事件控制
3. 层跟随鼠标移动中获取x,y轴坐标

判断鼠标是不是左键按下去了?是,把控制权交给mouseMove()函数
左键松开把mouseMove()函数控制权销毁


最简单的例子

代码如下
  1. <script type="text/javascript">
  2. var ie = (document.all);
  3. var ns = !ie;
  4. var _dragobj;
  5.  
  6. function dragInit() {
  7.     document.onmousemove = mouseMove;
  8.     _dragobj = document.getElementById('test');
  9. }
  10.  
  11. function mouseMove(e) {
  12.     x = (ns)?e.pageX:event.x;
  13.     y = (ns)?e.pageY:event.y;
  14.  
  15.     _dragobj.style.left = (x+12)+'px';
  16.     _dragobj.style.top = (y+5)+'px';
  17. }
  18. </script>
  19.  
  20. <body onload="dragInit();">
  21. <div id="test" style="position:absolute; width:20px; height:20px; background:#000">Mouse</div>
  22. </body>

其中mouseMove函数中IE使用event获取坐标,非IE用pageX,pageY获取坐标


下面是一个完整的例子
流程如下:
初始化 dragInit()  ->  按下鼠标启动startDrag()把控制权做好安排  ->  交给mouseMove()处理拖拉放  ->鼠标松开mouseUp()把控制权收回。

代码如下
  1. <style type="text/css">
  2. .move {cursor:move;}
  3. .op {opacity:0.5;-moz-opacity:0.5;filter:alpha(opacity=50);}
  4. .t {color:#00F;font-weight:bold;}
  5. #Layer1 {
  6.     position:absolute;
  7.     width:431px;
  8.     height:244px;
  9.     z-index:1;
  10.     left: 37px;
  11.     top: 127px;
  12. }
  13. </style>
  14. <script type="text/javascript">
  15. var ns = (navigator.vendor == ("Netscape6") || navigator.product == ("Gecko"));
  16. var ie = (document.all);
  17. var _dragobj,_dragActive=true;
  18. var _maxi=0,_curri,_className;
  19.  
  20. function mouseMove(e){
  21.     //set drag status
  22.     _dragActive=false;
  23.  
  24.     x=(ns)?e.pageX:event.x;
  25.     y=(ns)?e.pageY:event.y;
  26.  
  27.     _dragobj.style.left=(_cx+x)+'px';
  28.     _dragobj.style.top=(_cy+y)+'px';
  29.  
  30. }
  31.  
  32. function mouseUp(e){
  33.     _dragobj.className=_className;
  34.  
  35.     //set drag status
  36.     _dragActive=true;
  37.     _maxi++;
  38.  
  39.     document.onmousemove=noopMouse;
  40.     document.onmousedown=noopMouse;
  41.     document.onmouseup=noopMouse;
  42.  
  43.     snapGrid(true);
  44. }
  45.  
  46. function mouseDown(e){
  47.     dragable=(_dragobj.getAttribute('dragable')=='dragable');
  48.     _className=_dragobj.className
  49.     _dragobj.className=(dragable)?'op':_className;
  50.     //alert(_dragobj.style.filter);
  51.  
  52.     //change current layer to top
  53.     _dragobj.style.zIndex=_maxi;
  54.  
  55.     //start drag command
  56.     document.onmousemove=mouseMove;
  57.  
  58.     //get offset between layer position and cursor position
  59.     x=(ns)?e.pageX:event.x;
  60.     y=(ns)?e.pageY:event.y;
  61.  
  62.     _cx=_dragobj.offsetLeft-x;
  63.     _cy=_dragobj.offsetTop-y;
  64.  
  65. }
  66.  
  67. function noopMouse(e){
  68.     return false;
  69. }
  70.  
  71. function hitTest(a,b){
  72.     //is current layer overlay with other ?
  73.     var ax,ay,aw,ah;
  74.     var bx,by,bw,bh;
  75.  
  76.     ax=a.offsetLeft;
  77.     ay=a.offsetTop;
  78.     aw=parseInt(a.style.width);
  79.     ah=parseInt(a.style.height);
  80.  
  81.     bx=b.offsetLeft;
  82.     by=b.offsetTop;
  83.     bw=parseInt(b.style.width);
  84.     bh=parseInt(b.style.height);
  85.  
  86.     if((ax+aw)>=bx && ax <=(bx+bw) && (ay+ah) >=by && ay <= (by+bh)){
  87.         return true
  88.     }else{
  89.         return false
  90.     }
  91. }
  92.  
  93. function dragInit(){
  94.     var i, a, main,obj;
  95.  
  96.     for(i=0; (a = document.getElementsByTagName("div")[i]); i++) {
  97.         obj=document.getElementById(a.getAttribute("id"));
  98.         if (obj.style.zIndex==null || obj.style.zIndex==''){
  99.             obj.style.zIndex=i;
  100.         }
  101.         _maxi=Math.max(obj.style.zIndex,_maxi);
  102.     }
  103.     _maxi++;
  104. }
  105.  
  106. function startDrag(layerName){
  107.     //is this layer dragable?
  108.     dragable=(document.getElementById(layerName).getAttribute('dragable')=='dragable');
  109.  
  110.     //to avoid when mouse over layer, change layer obj
  111.     if (_dragActive&&dragable){
  112.         if (document.getElementById(layerName)!='null'){
  113.             _dragobj=document.getElementById(layerName);
  114.  
  115.             document.onmousedown=mouseDown;
  116.             document.onmouseup=mouseUp;
  117.         }
  118.     }else{
  119.         document.onmousemove=noopMouse;
  120.         document.onmousedown=noopMouse;
  121.         document.onmouseup=noopMouse;
  122.     }
  123. }
  124.  
  125. function snapGrid(b){
  126.     var grid=20;
  127.     var diffx=parseInt(_dragobj.style.left)%grid;
  128.     var diffy=parseInt(_dragobj.style.top)%grid;
  129.  
  130.     if (b){
  131.         _dragobj.style.left=parseInt(_dragobj.style.left)+((diffx>(grid/2))?(grid-diffx):(0-diffx))+'px';
  132.         _dragobj.style.top=parseInt(_dragobj.style.top)+((diffy>(grid/2))?(grid-diffy):(0-diffy))+'px';
  133.     }
  134. }
  135.  
  136. function isDragable(layerName){
  137.     //is this layer dragable?
  138.     dragable=(document.getElementById(layerName).getAttribute('dragable')=='dragable');
  139.     //document.getElementById(layerName).className=(dragable)?'move':document.getElementById(layerName).className;
  140.     document.getElementById(layerName).style.cursor='move';
  141. }
  142.  
  143. function lockDrag(layerName){
  144.     document.getElementById(layerName).setAttribute('dragable','fixed');
  145. }
  146.  
  147. function releaseDrag(layerName){
  148.     document.getElementById(layerName).setAttribute('dragable','dragable');
  149. }
  150.  
  151. </script>
  152. </head>
  153. <body onload="dragInit();">
  154. <div id="test" dragable="dragable" style="position:absolute; width:200px; height:100px; border:#000 1px solid; background:#EEE; left: 580px; top: 100px;" onmouseover="isDragable(this.id);" onmousedown="startDrag(this.id);">
  155.     <table width="100%" border="0" cellspacing="1" cellpadding="2">
  156.         <tr>
  157.             <td align="right" bgcolor="#0000FF"><img src="images/x.gif" width="15" height="15" /></td>
  158.         </tr>
  159.     </table>
  160. <a href="javascript://" onclick="lockDrag('test');">Lock</a><br />
  161. <a href="javascript://" onclick="releaseDrag('test');">Release</a>
  162. </div>
  163. <div id="test1" dragable="dragable" style="position:absolute; width:780px; height:100px; border:#000 1px solid; background:#EEE; left: 0px; top: 0px;" onmouseover="isDragable(this.id);" onmousedown="startDrag(this.id);">
  164.     <table width="100%" border="0" cellspacing="1" cellpadding="2">
  165.         <tr>
  166.             <td align="right" bgcolor="#0000FF"><img src="images/x.gif" width="15" height="15" /></td>
  167.         </tr>
  168.     </table>
  169. </div>
  170. <div id="test2" dragable="dragable" style="position:absolute; width:200px; height:100px; border:#000 1px solid; background:#EEE; left: 580px; top: 200px;" onmouseover="isDragable(this.id);" onmousedown="startDrag(this.id);">
  171.     <table width="100%" border="0" cellspacing="1" cellpadding="2">
  172.         <tr>
  173.             <td align="right" bgcolor="#0000FF"><img src="images/x.gif" width="15" height="15" /></td>
  174.         </tr>
  175.     </table>
  176. <a href="javascript://" onclick="lockDrag('test2');">Lock</a><br />
  177. <a href="javascript://" onclick="releaseDrag('test2');">Release</a>
  178. </div>
  179. <div id="test3" dragable="dragable" class="t" style="position:absolute; width:200px; height:100px; border:#000 1px solid; background:#EEE; left: 580px; top: 300px;" onmouseover="isDragable(this.id);" onmousedown="startDrag(this.id);">
  180.     <table width="100%" border="0" cellspacing="1" cellpadding="2">
  181.         <tr>
  182.             <td align="right" bgcolor="#0000FF"><img src="images/x.gif" width="15" height="15" /></td>
  183.         </tr>
  184.     </table>
  185. <a href="javascript://" onclick="lockDrag('test3');">Lock</a><br />
  186. <a href="javascript://" onclick="releaseDrag('test3');">Release</a>
  187. </div>

点击查看原文阅读(268) | 评论(1) | 分类:WEB前端

收到《大道PHP》和《AJAX应知应会90题》 (2009-11-30)

今天又收到康盛的书了,
免费的, 呵呵
一本是《大道PHP:LAMP+Zend+开源框架整合开发与实战》
另一本是 《AJAX技术应知应会90题》
全是好书
今年买书一分钱没花
就能看这么多书
幸福啊~~
感觉看书比报培训班划算多了
又能学习了

大道PHP:LAMP+Zend+开源框架整合开发与实战


AJAX技术应知应会90题

 

点击查看原文阅读(279) | 评论(4) | 分类:我的日记

职场四课 (2009-11-28)

今天看到一片文章,
好像是从国外翻译过来的
挺好玩的, 转过来分享

第一课
一个男人在他妻子洗完澡后准备进浴室洗澡。这时,门铃响了。
妻子迅速用浴巾裹住自己冲到门口。
当她打开门时,邻居鲍勃站在那儿。
在她开口前,鲍勃说,“你如果把浴巾拿掉,我给你800美元。”
想了一会儿,这个女人拿掉浴巾赤裸地站在鲍勃面前。几秒钟后,鲍勃递给她800美元然后离开了。
女人重新裹好浴巾回到屋里。
当她踏进浴室时,丈夫问她,“是谁呀?”
“是邻居鲍勃。”她回答。
“哦,”丈夫说,“他有没有提到还欠我800美元?”
故事寓意:
及时与同舟共济的股东分享重要信息,将会避免不必要的曝光。

 

第二课
一个销售员、一个办事员和他们的经理步行去午餐时发现了一盏古代油灯。
他们摩擦油灯,一个精灵跳了出来。
精灵说:“我能满足你们每人一个愿望。”
“我先!我先!”办事员说,“我想去巴哈马群岛,开着快艇,与世隔绝。”
倏!她飞走了。
“该我了!该我了!”销售员说,“我想去夏威夷,躺在沙滩上,有私人女按摩师,免费续杯的冰镇果汁朗姆酒,还有一生中的最爱。”
倏!他飞走了。
“OK, 该你了。”精灵对经理说。
经理回答:“我要那两个蠢货午饭后马上回来工作!”
故事寓意:
永远让你的老板开口先。

 

第三课
一只鹰坐在高高的树上休息,无所事事。
一只小兔子看见鹰并且问它,“我能象你一样坐着什么都不干吗?”
鹰回答:“行啊,为啥不行。”
于是,兔子坐在鹰下面的地上休息。突然,一只狐狸出现了,它扑到兔子身上把它吃掉了。
故事寓意:
要想坐着无所事事,你必须坐在非常、非常高的位置。

 

第四课
一只小鸟飞去南方过冬。天实在太冷了。它冻僵了,掉在一片田野上。
它躺在那儿时,一头母牛走过来在它身上拉了一堆屎。
冻僵的小鸟躺在粪堆里,开始感觉到了温暖。
牛粪确实使它暖和过来了。
它躺在温暖的牛粪中,异常高兴,并开始唱起歌来。
一只过路的猫听到鸟叫赶过来看个究竟。
顺着声音,它发现了牛粪下的小鸟,并迅速把它拖出来吃掉了。
故事寓意:
(1) 并不是每个在你身上拉屎的都是你的敌人。
(2) 并不是每个把你拖出粪堆的都是你的朋友。
(3) 当你深陷粪堆中的时候,最好闭上你的鸟嘴!

 

点击查看原文阅读(196) | 评论(1) | 分类:转载

得到淘宝玩偶-奋斗男 (2009-11-25)


期待已久的淘宝玩偶今天得到了, 
对免费的东西还是挺感兴趣的
可是实物没有照片好看啊,  
猛地一看,像李小龙~~
小人背面写着燃烧
正面写着青春
摆在办公桌上,
看着还成
其实我喜欢那只熊猫

收到淘宝玩偶奋斗男 - 1

收到淘宝玩偶奋斗男 - 2

点击查看原文阅读(224) | 评论(1) | 分类:我的日记

w3网站改版了 (2009-11-24)

今天发现www.w3.org网站改版了,比以前看着更舒服
w3网站改版

点击查看原文阅读(196) | 评论(0) | 分类:我的日记

生日2 (2009-11-05)

11月5号是我阳历的生日
没想到今天又在公司过了一次小小的生日
感谢诸位父老乡亲们
还想着我,hehe
生日二


 

点击查看原文阅读(461) | 评论(2) | 分类:我的日记