Archive for the '工作·生活' Category

3月30号.可能一辈子都要记住的日子.

今天看到了原本光秃秃的树冒出了嫩芽,可能是经过前几天春雨的滋润.应该算是迎来了北京的第一个春天吧…新的一年真真正正的开始了.我的新的旅程也将从今天开始了…很高兴的是.接下去要走的路不是我再是我自己一个人了…

加油加油加加油~~~!

小区门前的桃树开花了~~!很美的.

31号00:09

夜深了…要睡觉了…希望今天晚上有个好梦…

找个时间补上桃花的照片

第一次长城印象~!

经过以前几个月的拖拉,本来早该去年11月就去的长城留到了昨天才去。虽然如此,但我还是觉得很值。因为这次的旅行跟以往的都不一样。

不一样在什么地方呢?

首先,去的地方不一样。这次去的地方可是中国的标志,国人的骄傲,国际上出了名的,连毛主席都说不到此地非好汉的话的八达岭长城啊。

其次,这次不是我自己一个人去。嗯嗯。虽然以前也不全是自己一个人游玩,但至少这次对我来说很特别。

没有再次了。废话不多说,上图。

天气不是很好,没有太阳,有点阴沉沉的,但是并不影响我们出游的心情,以下是在小区外的公交站等公车时的情景

天气不是很好,没有太阳,有点阴沉沉的,但是并不影响我们出游的心情,以下是在小区外的公交站等公车时的情景

经过上公交,下公交,再上公交,再下公交,再再上公交,再再下公交,最后终于在919慢车的带领下到达了目的地。给入口处来个照

经过上公交,下公交,再上公交,再下公交,再再上公交,再再下公交,最后终于在919慢车的带领下到达了目的地。给入口处来个照

登上长城,应该是在第一个烽火台,炮口里边的“花花公子”。哈哈。

登上长城,应该是在第一个烽火台,炮口里边的“花花公子”。哈哈。

我怀疑此是第一个穿高跟鞋爬长城的奇女子。。。没想到后来,看到有一女子(简称为A)穿着比这更高的高跟鞋下来,只能委屈她为第二个了。唉,那个A君早不来晚不来,偏偏我们上山那会从我们旁边下城,应该等我们下城之后或者下城时嘛。这样就分不出谁先谁后了~汗。

我怀疑此是第一个穿高跟鞋爬长城的奇女子

雄伟的长城,这个可不是艺术风景照啊。朴实自然。

雄伟的长城,这个可不是艺术风景照啊。朴实自然。

这是下城用的滑车,还有索道,当然您可以也选择步行下城,但出于时间考虑,919末班车听说是5:00左右,所以还是节约时间吧

这是下城用的滑车

下城坐索道,如果速度快点的话可以当过山车玩,因为旁边的美女刚开始还尖叫来着。

下城坐索道,如果速度快点的话可以当过山车玩,因为旁边的美女刚开始还尖叫来着。

下城了,这是由索道下城后的出口,往前一直走就会回到919的公交站的。

下城了,这是由索道下城后的出口,往前一直走就会回到919的公交站的。

完结中间省略照片若干,就是不给你们看!

第一次煮的南瓜粥~!

在往伟大的厨师进军的路上,这是我的第一道坎。

经过N分钟的共同努力,一起做的南瓜粥终于出锅啦,馋死你们。哈哈

贴上些图来

可怜的南瓜就这样被我分尸后在毡板上

可怜的南瓜就这样被我分尸后在毡板上。

将南瓜放到锅里面后。搅啊搅,还像那么点事吧。。。当然那不是我在搅。表眼花将南瓜放到锅里面后。搅啊搅,还像那么点事吧。。。当然那不是我在搅。表眼花

准备出锅

准备出锅

盛出来了,给两碗粥来点全家福吧。大的是我的。某人说这个碗像宠物碗,真的像吗?那个是微波炉用的碗呀。

盛出来了,给两碗粥来点全家福吧。大的是我的。某人说这个碗像宠物碗,真的像吗?那个是微波炉用的碗呀。

至于味道嘛。只能以“不错” 这个词来形容。哈哈,馋吧

我的第一回酒吧行.

与同事商量好这周末去酒吧,因为这周烦心的事情实在多,听说酒吧是一个可以消愁解闷的地方,因此就说好了这周末去酒吧.说出来您别笑话,这可是我第一回上酒吧~!以前都是觉得那是个不正经的地方.所以都没去,虽然有朋友约过.但都没去成.

今天下午说好要加的班加完后.带着浓浓的睡意边走边困的回到了宿舍,在回来的路上还在跟同事说着晚上去哪的问题,是咖啡厅呢还是酒吧?回到宿舍后在网上找了找住所附近的酒吧和咖啡厅. 发现没找到什么有用的信息.因此,还是没有定下来最终去哪.同事担心说着说着就不去了.因此先出去再说,初步定在公司附近的一个咖啡厅,或者是五道口那里的酒吧街.在外头走着走着,最后还是决定去酒吧了.于是,搭上公车,到城铁站,换乘城铁直达五道口.

到了五道口下了城铁后,由于对这一带不熟,加之没有在网上做好充分的调查,不知道酒吧应该往哪走.于是就先用我们聪明的脑瓜判断,往人流多的方向走.于是下了城铁站往右走,看到了几座高楼建筑,上面有着SOHU的LOGO,原来SOHU在这啊~!在下边找了找,只发现了咖啡厅,失望,再往里走走,发现,Google的大标志牌立于楼顶,原来Google中国在这啊~!继续找了找,还是没发现酒吧.于是,这时想起我的手机来了,手机上网搜一搜.还真是有效啊,一搜就搜出好几条,得到了些有用的信息.五道口成府路~!可是成府路在哪呢?唉,没办法.再往现在的方面往前走估计是找不到了,因为里面看起来不那么热闹了.于是往来的时候的方向回去.没办法了,只好问路了.同事问了一个水果摊的老板,得到了一个模模糊糊的答案,不过大概知道了具体方向,于是往水果摊老板所指的方向走去.走了段时间,奇怪啊.怎么还没影啊.没办法,只好再问问路了.于是同事去问了一个穿着制服的人(应该是城管,也可能是交管,或者是保安),终于得到了一个肯定的答案,往前走左拐,最里边.呵呵.说完谢谢后就急忙的往正确的方向走去..

进到了一条不算热闹的路,不过路边的美女还真是多啊.前前后后,从我们旁边经过的基本都是美女,想起以前我也来过这里,上次是跟Edsion来的这里,就为了买盒韩国泡菜.呵呵.所以估计从我们旁边经过的美女应该基本都是韩国人吧,因为早就听说过五道口这一带是韩国人在北京的聚集地了.果然呢,偶然听到路过的美女讲的话,还真的是韩国味呢.

说回正题,因为之前走过这条路,而且也算是走得比较深,没发现过有酒吧,所以对我们走进来能找到酒吧这件事不是抱有很大的希望,只是撞撞运气吧.走着走着,找到了一间不错的咖啡厅,但我坚决那个啥~!(学一同事的口头禅,哈哈)不去咖啡厅,因此只有继续找的份了,于是又继续往前找,过了没多久,一串大字映入我的眼帘"BAR",很明显,酒吧找到了,只不过还不知道是我们想要找的那种酒吧(适合解闷的) ,但是有总比没有好,因为当时也没底不知道继续往下找还能不能找到,于是就先进去看看再说.

进去后,首要任务当然是找个位置啦.本来是坐吧台的,但是同事说还是找个位置坐吧.吧台不适合.因此就换到座位上.酒吧给我的第一印象就是,挺随意,这种环境确实很适合聊天,喝酒解闷(昏暗的灯光,配合着时而轻快时而沉闷时而激动的音乐).本来打算来酒吧不喝酒,点杯饮料啥的就行了,但没办法,这种氛围下,还是忍不住点了瓶啤酒(我是个不喝酒的男人),因为可能最近有些事确实挺闷的,来点酒或许可以帮忙解解愁.

一坐就是一个多小时,酒也喝完了,小菜也吃完了.正准备走时,酒吧的音乐音量及音乐节奏突变,本来平和的音乐气氛换成了一首很动感的音乐. 吧台那灯光也都打开了,接下来就听吧台上有人说了句什么什么秀.当时猜测应该是调酒师要表演什么了吧.

果然没错,调酒师在吧台那耍起杂技来了.呵呵,确实很不错.以我现在的表达能力,可能还没办法将其表演的内容给绘声绘色的描述出来,不过,由于当时觉得这东西少见,加上当时聊完天,说完话,喝完酒,心情好了些,再加上背景音乐的力量实在无法抗拒,情不自禁的,拿走手机录了下来,纪念一下我第一次上酒吧的经历.

第一次的酒吧之行就写到这.

我的新手机i550W。晒晒~!

在淘宝上出掉了用了四个多月的SE M600i。换了现在这个Samsung i550w。

其实,想换掉M600i并不是因为这个机子有多少差,而是因为他现在已经不具备满足我新的需求的能力。实话实说。M600i这款机子不差,音乐方面,应该说是没得说的,因为索尼的机子或多或少音乐也不会差到哪去,特别的,我还为M600i配了一个原装的入耳式线控耳机,索爱的Walkman系列所配的高端耳机,用那个耳机听音乐,光一个好字是没办法形容的。电池续航能力也很强,正常来说至少都能用三天。比我前一个手机N记的N70来说不知道好几倍,以前用N记的N70时,即使电池同样是950ma的容量,N70也只能用个勉强2天,不怎么玩的情况下,要知道,SE的这款屏幕是2.6,比N70的2.1大了不止一点。在这种情况下。电池续航还比N70来得强,可见SE的这个电池确实挺不错。虽然如此,但是M600i没有摄像头这点,现在已经无法让我接受,只身来到北京,有时无聊四处逛逛的时候,发现什么有趣的东西想拍下,又没带相机,没辙,因此基于这个原因,我就已经有点想把该机换掉了。另外,同事的一个9300(没记错的话应该是这个型号),有带WIFI功能,我们中午去吃午饭的时候,那位同事经常拿起来搜一下看看有没有WLAN,如果有的话就是开始网络旅程,通过他的这部9300我才知道什么是WIFI,以前在看M600i评测时有见过哪个文章说这个M600i有个遗憾是不支持WIFI,因为当时也实在不知道啥是WIFI,所以也没当回事,还欣然接受。现在看来,没有WIFI确实少了点什么,想像一下,跟朋友到中关村的星巴克或者有免费无线网络的场所,拿起手机,上上网,喝点小饮料,是多少惬意的事,WIFI上网比GPRS上网有几大好处,一,网速快,这是没得比的。二,免费,只要有无线路由器,有无线信号及你拥有接受的权限,那么你要上什么网,下什么东西都是免费的,不用像GPRS那样支付给谁任何费用,当然手机充电的电费不算。基于这点。M600i不满足我新的需求。再另外,另一个同事买了个N95 8GB,在我们吃完午饭的空档时间里,给我们演示了他的GPS功能,很好很强大,定位到我们所在的大厦,非常准确。对于我一个经常只身到陌生的城市的人来说(07年5月份只身到南京游玩,再从南京到上海,上海再到深圳,虽然说在这几个城市都有熟人在,但并不是你想出去的时候,别人都有时间给你做导游的。因为别人也有别人自己的工作。7月再只身到南京,直到07年11月,只身到北京这个真真正正的人生地不熟,刚来时一个熟人也没有,去哪都需要自己先通过手机上WAP网站查查,然后再根据查到的结果走,还好北京的交通发达,基本很多地方公交都可以到,直达或换乘。唉!突然想到这个有点伤感,因为在那段时间里是已离我远去的M600i陪我渡过的。不过留个回忆吧。),这东西再实用不过了。因为他可以帮助我这个方向感不是那么强的人掌握方向。而M600i是没有的。于时,有了我现在手上这部Samsung i550w。

怎么会是这部呢?可能很多人都没听过这个型号,的确,三星的机器型号并没有像N记的N系,SE的W系和K系那样深入人心。不知道或没听过这个型号是正常的,即使是三星的粉没听过也是正常的。因为这款机子并没有在中国大陆上市,我买的时候(上个礼拜六,2008年3月1号),在香港也还没上市,加上这个i550W是2007年i550的升级版,2月二十几号才刚上市的,网上的评测,新闻相对来说也是少之又少。所以,三星的粉没听过也是非常正常滴。买这个机子是跟我一同事一块买的,他也正好这段时间要换手机(正是因为他要换手机,我才下狠心将我的M600i给出掉的),本来是相中N记的N82的,因为这款机子无论配置,功能什么的都完全符合我们的需求,加上是N记的N系,对其的期待更是不用说了,但是由于上市不久,加上可能性价比太高,买的人多,市场需求量大,在年后,这款机子的价格逆市,不降反升,而且还不只是升了一点点。从价格上来说,3500的价格高出了我的预算不止一点点。加上这款机子现在只有银色版的,个人觉得实在是太难看啦~!(丑记一下)。本来是说好等待黑色版的上的,但是听一些国外的媒体说该机子的黑色版在国外要四月份左右才上市,加上黑色版比普通版可能还得贵个几百块,所以。当时只能选择等待,也跟那个要换手机的同事说好等待N82。因为在买手机前我都会很关注各大门户的手机频道,忘了在哪天,突然看到这款i550w的“曝光”新闻,一眼就相中了,很是喜欢,Samsung,wifi,GPS,S60第三版,300万AF等,于是通知我那同事。一起关注起了这个机子,本以为还没上市。或者还得在一段时间才能上市,没想到到淘宝上一搜,发现已经有人在卖了。而且还是个不错的卖家。没过几天,我们就狠下心,打了钱,等待新机子的到来了。就这样i550W入手了。。。

这个机子的特性我就不写啦。。。小小的记录一下。。。

额外提一下,这个的Camera那是不一般的“简单”啊,那可是真的真的非常非常的简单!功能很少,照相并没有达到我的预期效果。不过好在GPS,WIFI这两个大的功能还算好用。呵呵。

晒晒用我的i550w拍的照片我的第一台本本,Dell Vostro 1400 安静的躺在我的办公桌上。

我的第一台本本,Dell Vostro 1400 安静的躺在我的办公桌上。

在北京新买的一个Dell原装双肩包,用来背着上下班确实比以前用单肩包来得舒服得多在北京新买的一个Dell原装双肩包,用来背着上下班确实比以前用单肩包来得服务得多

关于手机就写这么多啦。

PHP如何在一个二维数组指定键的位置插入新的元素?

昨天一同事说起了这个问题,首先考虑的是PHP的内置数组函数库有没有类似的函数,查了查手册,没发现。后来就觉得自己写一个函数来实现。

考虑到“顺序”的问题(在指定键的位置处插入一个新的元素,如在array(’a'=>array(1),’b'=>array(2),’d'=>array(4))中的键为b的元素后面插入一个新的元素array(’c'=>array(3))),而键名又不一定都是数字,所以我第一个想到的就是将非数字的键转化为数字键名,因为只有数字键名才能排序,以前有做过类似的函数,但具体是什么时候用到的,现在一下子也想不起来。现在把我的思路说一下。顺便贴上代码,备忘。

首先用array_keys()获得要插入的数组的所有键名,我们称array_keys获得的结果叫keys,这个键名是通过数字索引的。这样我上面提到的将非数字键名转化为数字键名就实现了。接下来就是获得指定键名在keys中的数字ID,我们称这个ID为offsetID,然后遍历keys将所有大于offsetID的数字键名往后移一位,空出一个位置来存放这个新的元素。这样就实现了。。。

以下是代码

<?php
$arr = array(’a'=>array(1),’b'=>array(2), ‘d’=>array(4));
insert($arr, array(’c'=>array(3)), ‘b’);
print_r($arr);exit;
function insert(&$array, $new, $last = NULL)
{
/* 如果不是数组就退出 */
if (!is_array($array))
{
return FALSE;
}
$offset = $last;
if ($last === NULL)
{
$offset = key($array);
}

$old_keys = array_keys($array);
$new_key = key($new);
$new_val = $new[$new_key];
foreach ($array as $_k => $_v)
{
if ($_k == $offset)
{
$key_offset = array_search($offset, $old_keys);
}
}
foreach ($old_keys as $_k => $_v)
{
if ($_k > $key_offset)
{
$old_keys[$_k+1] = $_v;
}
}
$old_keys[$key_offset+1] = $new_key;
$new_arr = array();
foreach ($old_keys as $_v)
{
if ($_v == $new_key)
{
$new_arr[$_v] = $new_val;
}
else
{
$new_arr[$_v] = $array[$_v];
}
}
$array = $new_arr;
}
?>

早睡早起,今天很早就到公司了。

今天异常的早起。7:100就醒了,磨磨蹭蹭到7:30左右起来,到大厦的B2去吃了次早餐,这次早餐好像是我在北京的第个数次吃,记得之前有吃过一次,就是在还没进公司之前,刚来北京的那几天,在我住的宾馆附近(玉泉路那边)的老上海城隍庙小吃吃的南瓜粥,怀念啊,确实挺好吃,题外话。到公司大概8:30,大厅的灯还没开,前台的两个MM还没有来,偶尔有人进出,这种气氛很熟悉,想想,这么早就到公司应该是继第一次(第一天上班那次)以来的第二次。想起那次来,当时那么早来公司的原因是“第一天上班绝对不能迟到”这个理念,那天,在宾馆的时候很早就起来了,大概也是6点多,洗漱完后就背上我那单肩包出外坐“运通114”,1个多小时的车程。到公司的时候也大概是8:30左右。门也是开着的,我进到公司大厅,坐在了旁边的沙发上,翻阅着公司的宣传单,就这么干坐着,因为那时我还知道我应该在哪上班,我的位置是哪个。大概十多分钟过去后,第一个跟我搭话的人(没记错的话应该是前台的一个MM)跟我说了句:“这么早就来了啊”。这时大厅的灯开启了,陆陆续续的很多同事都到了,刷门卡上班。

早睡早起是好的,继续努力

充实的生活果然会帮你扫除很多烦恼

今天是充实的一天。

昨天晚上很快就入睡了,当然今天也很早就醒了,不过愣是多躺了几分钟,我有睡懒觉的习惯。相比以前,昨天晚上的睡觉质量应该算有所提高,所以对今天白天的精神我有期待。应该会比以前有精神多了。还是老样子刷完牙,洗完脸,背上电脑,出小区,搭公车,上班去。与以往不同的是,觉得今天的早晨很清新,应该说是这两个礼拜来看得最清晰的一个早晨了。

吃完早饭(包子+开水)就开始工作了。

今天一天单挑JS。完成了一个Draggable类和一个Dialog类,在编写中遇到了些问题,比如取浏览器中“网页的宽度,高度,滚动条的scorllTop…”,还有取页面中某个层的高度,由于兼容性问题,取那些高度经常都会差那么点。要嘛在FF下正常取得,在IE下取不得,要嘛就是IE下取得到,FF下不行,网上找了些资料。解决了这些问题。其中有一个问题让我印象很深,在取一个层的高度的时候,我用alert(div.clientHeight)取到的值一直都是0,可是很奇怪,我在Firebug中能看到这个值不为0,研究了挺久,后来想想,是不是因为我没有将这个层放到HTML文档中才引起的(这个div对象是我用document.createElement生成的,还没有append到body中),后来将这个在append到body后alert了一个这个值,果然,取得了。事情也就这么解决了。先append到body后再取值就能取得到了。另外一个问题就是document.body.scrollTop这个值,当HTML文档声明了以XHTML的DTD做为头时,document.body.scrollTop是无效的,总是为0,这个时候应该使用document.documentElement.scrollTop取而代之。

末尾再说句:加油!!!你会克服这些你现在讨厌的东西的!! !

睡觉~~~~!

正确的使用继承

在我们使用面向对象编写程序的时候,经常会因为不知类应该如何组织而无从下手

我们应该如何来组织各种各样的类呢?下面我拿一个简单的例子来说。

在一个网站程序中通常都需要用到上传文件,有的地方只允许上传文本文件,有的地方则只允许上传图片。这个时候我们需要一个类来处理上传文件,很多人通常的作法是写一个FileUploader类,然后在FileUploader中定义一个成员allow_exts来判断所要上传的文件是否是一个合法的,系统允许的文件。这样做是没错的,但是有的时候,我们需要检测上传的图片文件的某些信息来限制图片文件的上传,又有的时候我们需要检测上传的文本文件的信息(比如不能包含某某字符之类的)来限制上传,遇到这种需求,很多人都选择在FileUploader中新增加方法,然后在类中再去分情况调用这些过滤的方法(比如当遇到只允许上传txt文件的时候,就调用某个方法来检测该上传文件中是否包含某个字符),这样做会允许一些问题,假如我的需求变得更多的时候,我就得在“检查文件扩展名”那块代码中写入N种情况,做N种处理,所有可能出现的情况都挤在FileUploader这个类中了,所有的代码都已包含在FileUploader中,从面向对象编程的角度去看 这种作法,显然,你能看出这个FileUploader类并不是面向对象的类,而是一个高级的函数,一个代码组织得比函数清晰的类,仅此而已,它并不能算做是一个面向对象的类。

最近比较常用类来组织自己的代码,因此,以下是我的一点小小的愚见。

对于以上那种情况,我们可以这样子来看。

不管上传文本文件,还是上传图片文件,它都是一种“文件上传”,因为我们可以抽象出一个类,名字叫做”FileUploader”,在这个类中,我们视它为一个万能的文件上传器,你可以上传任意种文件。当然我们也可以通过限制其中的一个成员allow_exts来限制它允许上传的文件类型,“文本上传”我们将其叫为 “TextUploader”,TextUploader从FileUploader继承,因为TextUploader是一种特殊的FileUploader,因此TextUploader拥有FileUploader的所有功能及成员,这时我们需要对TextUploader进行特殊处理,在上传前检查要上传的文件是否是个有包含不该包含的字符,这时我们只需要重写FileUploader的相关函数,在该相关函数中增加判断是否包含不该包含的字符的代码即可。呵呵,这样子关系是不是清楚了点了呢?图片上传同理。

总而言之,在设计类之前首先要先将其能抽象出来的尽量抽象出来。然后即可在代码层面表示了,那个时候一切都那么理所当然

太可怕了,我的密码竟然一直都被另一个不认识的人知道

早在N年前,当我还在读高中时,注册了我的第一个域名,当时对这一行根本不懂,想注册个域名,所以觉得价格最便宜越好,因为当时手头钱不多,50多块钱的域名注册费还是向家里人多要,经一网友介绍,以45元/年的价格购入了我的第一个域名。

到现在已经差不多3年了。这个域名续费了几次。密码也同样忘记了几次。但当时是通过代理端帮忙将密码发回我邮箱的,按一般的想法是,应该是代理商在某后台面板那按某个按钮将我域名的密码通过服务器自动取得密码并自动发送到我域名的管理邮箱。当时也没太在意这回事。今天准备给我域名续费的时候,去找了那个代理,谈着谈着,他直接用QQ给我发了我域名的账号及密码。太可怕了。一个域名的管理密码竟然被这个代理端知道。那要是某一天这个域名做值钱了呢?是否代理商可以很容易的将该域名改为自己的?

Next Page »