个人独上妙峰山,被P,被抓作弊,被BS……

作者 : admin 于 2009年08月30日, 19:53:50
2009
08-30

原始图片 http://www.flickr.com/photos/40265853@N07/sets/72157622058873973/

因同行的同事周六加班,我的骑行就放到周末了,上周刚买的车,今天算第二次骑行,选择了一个不太长的地方:妙峰山。

早晨八点半我们在公司门口集合,出发点就是小营桥。走到温泉镇,同事由于昨日踢球膝关节疼痛,放弃了骑行,转向颐和园方向,

我只能孤身勇闯妙峰山。同事由于不熟悉北京的路,我把我的地图给他,结果,我在六环处没有拐弯,结果走了几公里的冤枉路,幸

亏提前打听,才走上正轨。这时才想起孔圣人的一句名言:鼻子下边就是路。

上了109国道,感觉身体能量逐渐消耗,但体力还行,但总是在20+的速度,据说很多QS都是30+甚至40+,本人努力了几次,不靠谱,

还是20+的好。路上碰上不少司机,打开窗口送我个指头-大拇指,很是感动。都是司机啊,眼泪哗哗的。

到了牌楼,我以为到顶了,给何总打了个电话,何总说,还有20公里,一直骑就行。我一看,果然有个路牌说20公里到妙峰山。继续

爬吧,20公里不是小菜么

刚开始爬,还能勉强保持20km,想想,20km,一小时不就上去了,可爬到一半,实在就不行了,勉强保持10km往上蹭。等看到8km牌

子的时候,体力就很差了,看着前后人少的时候,偷着推车前进,居然被一大姐给逮了,训斥我赶紧骑车。上车继续,结果还是被大

姐给P没影了。

爬行中发现一休息的老哥,小肚子比我大,也没我爬得快,但毅力好,始终能赶上我,快到峰顶3km的时候,我实在不行了,休息中

,老哥超过了我,我只好声明:我不行了,我得下去了。

休息几分钟,想想还差一点就到顶了,为啥不上去。继续走,连推带骑终于到了峰顶,休息,留影,走人。

中间碰见一个骑trek的大哥,正在寻找一个啥啥山头,说可以到防火道,我自然不知。临走人家问我:你咋还带个车锁?谁让我的车

子是贼必偷得捷安特呢。

一天骑行是120公里,骑行时间就不好意思说了,下午5点才到家。这成绩虽然比不上各位QS,但这是我骑行历史上的第80~200公里,自我感觉良好。

感谢同事陪我走过最无聊的路段
感谢司机同志给我的拇指
感谢摩托车队给我的拇指
感谢三蹦子(跨子摩托)给我的拇指
感谢车友给我的鼓励
感谢老哥陪我休息
感谢trek大哥对我的表扬
感谢一切车友

IMG_5223 IMG_5225 IMG_5226 IMG_5222 IMG_5220
IMG_5219 IMG_5221 IMG_5218 IMG_5217 IMG_5216
IMG_5215 IMG_5214 IMG_5212 IMG_5213 IMG_5206
IMG_5204 IMG_5205 IMG_5201 IMG_5198 IMG_5197

为啥要进行骑车运动

作者 : admin 于 2009年08月29日, 14:15:46
2009
08-29

周末买了一辆运动型的山地,入门级的,不算贵,配上一身的装备,花了不到3000块钱。邻居看见费解:为啥不买个好的电动车?好多同事也纳闷为什么自行车也有几千上万的价格?

解释一下:首先说北漂在北京的生活都是很苦的,有乐也是苦中作乐。北京的基础环境很差,比如空气、水质、环境、饮食习惯、生活节奏,这些因素会让北漂们的身体素质有天然的劣势。因此,不断运动强身健体是北漂的必修课。当然,自行车运动只是各种运动的一种,其他运动皆可。

自行车正逐渐成为一种全民运动。当年乒乓球在打出世界后,国内掀起乒乓热,因为乒乓运动占地少,设备简单,记得小时候村里架上两块水泥板,中间放上一排砖头,就是个简单的乒乓球运动场地。而自行车在中国的普及率是很高的,很顺其自然得就能成为大众认可的运动。自行车运动只是需要一条能通车的公路,或者能过车的山路即可,成本异常低。

自行车运动花式也比较多,公路、山地、越野、BMX、攀爬、速降……要是没谱,弄个破车傻骑也能出效果。

女生骑车,建议买个合身的运动车,因为传统的代步车能把你的大腿骑粗,运动车有氧运动能让你的大腿变细。

《哥 寂寞》小样-同事山羊的最新作品

作者 : admin 于 2009年08月26日, 13:25:48
2009
08-26

十三陵水库骑行路线详细

作者 : admin 于 2009年08月26日, 12:43:14
2009
08-26

清河出发,顺着八达岭高速,是没有啥疑问的,一直往昌平冲锋,直着走,别拐弯(小弯要拐,掉沟里后果自负)。但中间有个立交桥是需要左拐的,Y的牌子字向前面,得回头才能看见,没记住是哪个桥,稍等问一下。

12512616779005004

到昌平的西关环岛,就得掉头往市里了,走 府学路 ,那边人多,可以问问,府学路往前走,差不多穿过城区,往左看水库路,就能上水库了,那边就没啥可说的了,中间的分叉其实就是正转跟倒转的分叉。

未命名-2

路上车友应该不少,不认识路随时问,可以问问老乡。

回来的时候,环岛得绕大圈,否则得搬车子过去了。

mysql5.1触发器小试

作者 : admin 于 2009年08月25日, 22:51:18
2009
08-25

我一直以为mysql5.0的触发器好似没那么强大,被一个搞mssql的老大给忽悠了,其实mysql触发器从5.0就变得很强大,当然包括5.1。

这里拿一个demo说事:

  1. DROP TRIGGER IF EXISTS `ucenterhome`.`uchome_doing_test`;
  2. DELIMITER //
  3. CREATE TRIGGER `ucenterhome`.`uchome_doing_test` AFTER INSERT ON `ucenterhome`.`uchome_doing`
  4.  FOR EACH ROW BEGIN
  5.     INSERT INTO uchome_doing_1 SET doid= NEW.doid+3, uid= NEW.uid , username= NEW.username,`from`=NEW.`from`,dateline=NEW.dateline,message=NEW.message,ip=NEW.ip,replynum = NEW.replynum,mood=NEW.mood;   
  6. END
  7. //
  8. DELIMITER ;

每向uchome_doing表中插一条数据,就复制到uchome_dong_1表中一条。

有两个关键字:

  1. OLD  NEW

官方的解释:

The OLD and NEW keywords enable you to access columns in the rows affected by a trigger. (OLD and NEW are not case sensitive.) In an INSERT trigger, only NEW.col_name can be used; there is no old row. In a DELETE trigger, only OLD.col_name can be used; there is no new row. In an UPDATE trigger, you can use OLD.col_name to refer to the columns of a row before it is updated and NEW.col_name to refer to the columns of the row after it is updated.

还有两个关键字

  1. BEFORE AFTER

官方解释

The keyword BEFORE indicates the trigger action time. In this case, the trigger should activate before each row inserted into the table. The other allowable keyword here is AFTER.

十三陵半日游

作者 : admin 于 2009年08月24日, 07:43:35
2009
08-24

22日买上了新车,23日忍不住叫上同事一起出游。我们选择了一个很休闲的线路-十三陵。早晨9点出发,下午一点我到家。

图片如果看不到请点击这里查看原始相册 搜狐相册

mysql数据抽象层-PDO

作者 : admin 于 2009年08月20日, 16:02:02
2009
08-20

好久不用PDO了,公司这边有的项目使用PDO,再熟悉一下,继续沿用之前的方法:

没用数据绑定和一些高级的功能,只是实现基础功能。

  1. < ?php
  2. interface DateBaseConnect
  3. {
  4. #数据库连接
  5. public function Connect( $host , $user , $pass , $datebase );
  6. #使用数据库
  7. public function selectDateBase( $datebase );
  8. #执行一个查询
  9. public function query( $sql );
  10. #取得一行
  11. public function fetch( $sql );
  12. #取得所有
  13. public function fetchAll( $sql );
  14. #取得影响行数
  15. public function affectedRow();
  16. #取得结果行数
  17. public function recordCount();
  18. #取得上次插入ID
  19. public function insertID();
  20. #释放资源
  21. public function close();
  22. }
  23. class sPDO implements DateBaseConnect
  24. {
  25. #连接标识
  26. public $handle = false;
  27. #结果标识
  28. public $query;
  29. #查询次数
  30. public $exetime;
  31. #影响行数
  32. public $affectedRows;
  33. #statement
  34. public $statement;
  35. #数据库连接
  36. public function Connect( $host , $user , $pass , $datebase )
  37. {
  38. try
  39. {
  40. $this->handle = new PDO("mysql:dbname=".$datebase.";host=".$host, $user, $pass);
  41. }
  42. catch (PDOException $e)
  43. {
  44.             echo 'Connection failed: ' . $e->getMessage();
  45. }
  46. $this->exetime = 0;
  47. }
  48. #选择数据库
  49. public function selectDateBase( $database )
  50. {
  51.     return true;
  52. }
  53. #执行一个查询
  54. public function query( $sql )
  55. {
  56.     $this->affectedRows = $this->handle->exec( $sql );
  57. $this->exetime++;
  58. return true;
  59. }
  60. #取得一行
  61. public function fetch( $sql )
  62. {
  63. $this->statement = $this->handle->query( $sql );
  64. return $this->statement->fetch(PDO::FETCH_ASSOC);
  65. }
  66. #取得所有
  67. public function fetchAll( $sql )
  68. {
  69. $this->statement = $this->handle->query( $sql );
  70. return $this->statement->fetchAll(PDO::FETCH_ASSOC);
  71. }
  72. #取得影响行数
  73. public function affectedRow()
  74. {
  75. return $this->affectedRows;
  76. }
  77. #取得结果行数
  78. public function recordCount()
  79. {
  80. return $this->statement->rowCount();
  81. }
  82. #取得上次插入ID
  83. public function insertID()
  84. {
  85. $sql = sprintf("SELECT LAST_INSERT_ID() AS id");
  86. $pdostatement = $this->handle->query( $sql );
  87. $rs = $pdostatement->fetch();
  88. return $rs['id'];
  89. }
  90. #释放资源
  91. public function close()
  92. {
  93. unset($this->handle);
  94. }
  95. #析构函数
  96. function __destruct()
  97. {
  98. $this->close();
  99. }
  100. }
  101. #Demo
  102. $db = new sPDO;
  103. $db->Connect( 'localhost' , 'root' , '123456' , 'ucenterhome' );
  104. $rs = $db->fetchAll( "SELECT * FROM uchome_blogfield" );
  105. print_r( $rs );
  106. ?>

对UCenter Home的一点看法

作者 : admin 于 2009年08月17日, 22:27:19
2009
08-17

最近改了改UCenter Home,发现,这的确是个不错的产品,但不能算一个成熟的程序。

产品看法:

这个产品主要是服务一些个人站长和小型站点,功能模仿一些成熟的sns系统,模仿比较到位,而且功能上尽可能大的去完善,让管理员可以方便进行比较系统全面的管理。而从产品的设计体验上,也能适应中国大多数的用户。

所以,这个产品在国内算一套非常不错的sns建站系统。

编码方面:

要说代码,我相信阅读过代码的人一定很头疼,从discuz的bbs就这样。

代码只是面向过程,这个,在discuz方面,我估计是累积开发造成的,一个个版本升级,变化不能太大,如果变化真的太大,会失去一些开发者。另外,他自己升级也是个问题。

不过uch这个产品也开发成了这样。代码结构我倒挺喜欢,之前我写那个架子也是这样。优点:结构规范,适合多人协作。缺点,面向对象性,代码复用差。这个结构,我估计是公司某元老折腾的,然后有几个小弟进行模块开发。

为什么这么说,是有原因的,因为遍历整个代码,起码有两种以上的代码风格,而且人员之间沟通配合也造成了一些错误,虽然不是bug,但看得出来项目进行的仓促。不过这也是公司的一个战略措施,小戴同学总是及时放出产品来打压竞争对手。

再说负载,其实这个问题就不用说,从大量的垃圾sql语句就能看出,这个产品不能支持较大的负载。

再说最后一点,如果你想去优化改善,彻底改善,放弃吧。重写。

我看的只是uch2.0的预览版,估计正式版放出的时候,这些问题会有所改善。

Google便签功能曾经崩溃过

作者 : admin 于 2009年08月14日, 22:51:28
2009
08-14

自从google取消了首页登录,我用google便签就很少了,不知道他们战略目的是什么。

今天突然想到里边一条信息存档,上去查看,居然数据被回滚了(我有版本记录)。

我琢磨着应该是google的服务出了一次大问题,为了掩人耳目,把相关服务给屏蔽了。

对于技术失误,还要抱着容忍的态度去看待。

最近的总结

作者 : admin 于 2009年08月13日, 22:04:35
2009
08-13

1、相信团队的力量是无穷的,就好像组队打怪升级快。

2、不提倡个人英雄主义,一个人打boss一般的结果是over

3、分工合作,发挥长处。

4、集中精力做事情,稳下心来,事半功倍。

5、相信自己的实力,勇敢向前。

6、人都是善良的,世界多么美好。

7、同一个事情,同一个梦想。

8、大鱼大肉会长小肚子。

9、运动得坚持,人的耐性其实是表现在各个方面,坚持运动,还得坚持学习。

10、还有很多,因为数据库很贵,不多浪费。

11、做事想周全。

 Page 1 of 2  1  2 »