haojii

一个专注于技术的IT男

Follow me on TwitterRSS订阅

  • 首页
  • 关于
  • 玩具

link的地址以斜线开头完全没有道理啊

八 25th

由Jacky发表在CSS

没有评论

在内部搭一个类stackoverflow的系统,选了个基于django的开源的osqa,部署的时候陆陆续续发现源码里有点小问题,比如用户相关的很多link是这样写的:


<a href="/users/{{ user.id }}/{{ user.username|slugify }}/">{% gravatar user 32 %}</a>

这么搞的话link就指向了服务器的documentRoot,但是我不会把osqa这个应用直接挂在根域名下,这样的hard code我觉得挺愚蠢的。

其实同样的问题也存在我们的jsp里面,这个编程习惯不好,要改正其实也不难,手工做的话可以取得app的rootPath就行了,或者用url标签来帮我们自动搞定。(django&jsp都有的)

另一个Note:osqa第一次装的时候会把配置信息写到forum_keyvalue表里面,后面修改上传路径等的配置没有用,必须到数据库修改。


mysql> update forum_keyvalue set value="S'/upfiles/logo.png'
    "> p0
    "> ." where id=26;

	mysql> update forum_keyvalue set value="S'/var/lib/osqa/forum/upfiles'
    "> p0
    "> ." where id=33;
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0

mysql> select * from forum_keyvalue where id=33;
+----+----------------+-------------------------------------+
| id | key            | value                               |
+----+----------------+-------------------------------------+
| 33 | UPFILES_FOLDER | S'/var/lib/osqa/forum/upfiles'
p0
. |
+----+----------------+-------------------------------------+

Something more:
Larry wrote 2 useful CSS related posts:
CSS – small tips (设置图像最大宽度,打印分页)

CSS – sprites, manage images (图像合并切割)

END

CSS, HTML, web开发

久疏战阵

八 13th

由Jacky发表在JavaEE

2个评论

语言这玩意是熟能生巧的,久疏战阵必然导致一些遗忘,虽说我常写些小玩意玩玩,但也扛不住关于java语言细节的拷问,感觉中国人面试就喜欢的问这样的问题,抗议

昨天被问到的问题是这样的,父类A有一个方法申明抛出异常ExceptionA,继承自A的子类B能不能覆盖这个方法,且声明抛出ExceptionA和ExceptionB?

回答这个问题的时候我不是非常确定,认为可以,因为印象中看到过类似的代码。

面试官却说这个是不可以的,相信他这么说的原因肯定是因为众多java编程书里面都有这么一点,方法覆盖的时候,子类方法不能抛出比父类方法更多的异常

然而这句话对么?结束之后,抱着怀疑的态度,我就在eclipse试了一下,其实这句话不完全对。

第一种情况:子类抛出的是父类声明异常的子类,这句话不适用


class A
{
 public void method() throws Exception{}
}
class B extends A
{
 public void method() throws ClassNotFoundException, IOException{}
}
class C extends A
{
 public void method() throws Exception, IOException{}
}

第二种情况:子类声明多出来的异常是unchecked Exception,这句话不适用


class A2Exception extends RuntimeException
{
}
class B2Exception extends RuntimeException
{
}
class A2
{
 void method1() throws A2Exception{}
}
class B2 extends A2
{
 @Override
 void method1() throws A2Exception,B2Exception{}
}

第三种情况:唯有这种情况下,编译不能通过,这句话能够适用


class AException extends Exception
{
}
class BException extends Exception
{
}
class A1
{
 void method1() throws AException{}
}
class B1 extends A1
{
 @Override
 void method1() throws AException,BException{}
}
java

追求完美引发的杯具

七 20th

由Jacky发表在曾经的一天

没有评论

项目需要,借了个BroadWorks Application Server新版的环境,上去之后发现很多“垃圾”数据

我们发SOAP消息创建出来的数据也不容易找到,就想弄一个“干净的测试环境”,然后我删除了一些“垃圾”数据,由于数据太多,加上上周五头痛,我还没来得及把数据都删除了

这周收到了BroadSoft Engineer和Manager的邮件,说上面的数据已经存了几年了,是多么有价值,还威胁我们说考虑是不是不再借这个测试环境给我们。。。

杯具呀,追求完美有时候也会惹麻烦,以后还是尽量十全九美吧,积累RP

感想
shAppleStore-1

惭愧,我也做了一回痴情的苹果粉丝

七 10th

由Jacky发表在曾经的一天

1个评论

我一直认为不管做谁的粉丝都是一件无聊的事情,浪费感情、时间、精力、钱

对于“当粉丝”这件事情的反感,基本上开始于看了湖南卫视超女中粉丝的疯狂情绪

我相信有信仰是好事,但是各种粉丝群体盲目的崇拜不是理性思维的我愿意接受的

惭愧的是,今天我也做了一回痴情的苹果粉丝

早上5:30起床,6:00出发坐地铁,不到7:00就到达陆家嘴国金中心苹果浦东店,然后等10:00的开业,委实不是件理性的事情

我也不太明白为何自己如此兴奋,以至于早上闹钟没响我就醒了

是何原因将我吸引至此呢?肯定不是为了苹果发一件T-shirt

难不成我也成了苹果粉丝一族?惭愧。。。

早上到的时候,天还不怎么亮,透明玻璃房里的苹果LOGO发光还能得到

在工作人员的引导下排入了广场最外圈的那队,看我前一圈的人有编号牌275,估计了一下我应该在500以内的。
排在我后面的是个秃顶的大爷,精神可嘉,早饭没吃路过看到人多,他也进来排队了,虽然怀疑过苹果的创立者是不是比尔盖茨,后来被一个中年大叔忽悠他是巴菲特,他自己还念叨这巴菲特好像是炒股的,然后中年大叔告诉他是巴菲特的另一个产业,他也就信了。不过这大爷还知道苹果不是Windows操作系统,真不错,佩服!

由于年龄的原因,他懂的不多,但是他还蛮好学的,问了不少搞笑的外行问题,逗得我们恨开心。

虽然他对苹果懂的不多,但是从他安心排队的这件事情上来看,比某些穿着打扮仪表堂堂却恬不知耻硬是插队的中年叔叔们,素质高了N倍。

排在我前面隔着两个人是一家三口,这个小女孩穿了件印有Apple Logo的衣服,在爸妈的怀里碗iPad上的植物大战僵尸,俨然是今天的明星,被好多镜头拍了N多次,貌似会上apple的新闻,还签了肖像使用协议,P.S.可能我的腿会出现在背景中,哈哈。

我用手机拍的这张,她妈用《独唱团》帮她挡太阳呢,话说今天看到好几个人都带了这本书,用来消遣排队时间。

Apple对顾客就是上帝这个理念今天展示得很不错,排队的时候会给你发水喝,主动收集空瓶子,再给你水;遇到突然下雨,这时候工作人员捧出好多有Apple Logo的雨伞发放,引起粉丝们一阵欢呼雀跃,有的人竟然收起自己带来的雨伞,向工作人员索要苹果的,工作人员也解释说伞要回收的,然后就听到好多人议论怎么能偷一把出去,当然偷这件事情不好,但是某种程度上反应了粉丝们对任何于苹果有关的东西的狂热心态。

下图为雨停后出太阳,一对情侣再苹果伞下面遮荫,挺温馨的。

这是一张下沉式广场四圈对的全景图,我从新浪找的,嘿嘿,发现了我的身影,还好我的衣服比较明显,哈哈!陈鎏也在上面某个点上,HSBC附近?我不太确定了。。。

开门前30分钟,苹果店员的加油呐喊口号,有点象传销组织上课培训那感觉,汗一个。。。

正式开门的时候,排第一个的哥们被抬进去了,我排在第四圈也很快就被放进去了,一路都有苹果店员跟你击掌欢迎,气氛好不热烈,沿透明台阶涉级而下,踏入地下一层的时候,会发给你一个贴有Apple封条的白色长方形盒子,里面有一件红色纪念T恤。

下图中另一款黑色T恤是街旁网签到赠送的,街旁的工作人员还拍了一张我手持T恤照片。

下图是在AppleStore浦东店才有的东方明珠版MAC包和iphone外壳,本想买一个iphone外壳的,结果一看400多,太贵了,属于奢侈品,以后淘宝克隆版吧!!!

差不多11点的时候,我从Apple店出来,找到街旁的工作人员,拿到了黑色的T恤,这时候外面排队的还是很多很多,估计还有1000+

中饭和女朋友参加她的同学聚会,下午在一个音响效果比较差的但是价钱还行的地方K歌,唉,很久没K歌了,忘记我的水准了,结果再一次发现我唱歌很难听,悲剧!!!

劳累一天后,8点到家,发帖到现在。。。

总结:苹果就像是邪教,种种疯狂,想不明白为什么

Apple, 排队

GoDaddy域名续费

六 30th

由Jacky发表在站长日志

1个评论

赶在7月1号之前续费了我这个域名,因为7月1号之后GoDaddy就要涨价了

续了两年,使用优惠码节省了6$,最后支付了15$

google搜索出来的第一个link超有用:Godaddy promo code and coupons list for 2010

tips: 要选取适合的优惠码,有的是百分比的,有的是注册域名打折的,有的是全场通用型的

还有就是信用卡网上美元支付很方便,就是很没安全感

域名

用户的输入总是很有创意的

六 24th

由Jacky发表在Unix/Linux

没有评论

有时候看似天衣无缝的代码遇到极具创意的用户是不得不低头的

且看下面一段简单的shell代码,检查用户输入如果是合法的文件,然后做一个copy

-r 测试文件存在且可读

-d 检测是否是目录

如果文件存在且可读而且不是目录,(这里不关心文件内容),那么这个输入是否合法呢?

#!/bin/sh
echo "Enter the name of the new licence key file"
echo "licencekeyfile=\c"
read _afile

if [ ! -r $_afile ]
then
	echo "File does not exist"
	exit 1
fi

if [ -d $_afile ]
then
	echo "Licence key file must be a regular file"
	exit 1
fi

#Copy new licenceKey to /var/sog/etc/.licenses/licenseKey
if [ "$_afile" != "/var/sog/etc/.licenses/licenseKey" ]
then
	cp $_afile /var/sog/etc/.licenses/licenseKey
fi

...

用户如何break这个貌似天衣无缝的条件检测的?

Enter the name of the new licence key file
licencekeyfile=/home/user/.licenses/lic*

如果 /home/user/.licenses/lic* 匹配多个文件的情况下,-r 和 -d 判断都能通过,接下来运行到cp 就杯具了

会报下面这个错:


cp: Target /var/sog/etc/.licenses/licenseKey must be a directory
Usage: cp [-f] [-i] [-p] [-@] f1 f2
 cp [-f] [-i] [-p] [-@] f1 ... fn d1
 cp -r|-R [-H|-L|-P] [-f] [-i] [-p] [-@] d1 ... dn-1 dn

真的佩服用户输入的创意啊,为了避免匹配多个文件的情况,不得不用下面的代码来修bug


matches=`ls $_afile | wc -l | sed 's/ //g'`
if [ $matches != 1 ]
then
 echo "Your input of the new licence key file is not valid, it matches $matches files :"
 ls $_afile
 exit 1
fi
bash, linux, unix, 用户输入

My Latest News in 7 Days Vacation

六 18th

由Jacky发表在曾经的一天

没有评论

Today is the fifth day of my 7 days vacation.

This was a great holiday for sure.


Having watched the E3 press conferences, I add N3DS to my wish list

Have to say Nintendo press conference was the most successful one compare to Microsoft and SONY.


In Nintendo World:

Still the Nintendo official games was the best ones in its consoles like always.

For me, I almost do not care about the 3rd party games, even Kojima’s Metal Gear Solid, because I can play Metal Gear Solid in another console with amazing screen effects. This point might change later since N3DS offers unique 3D experience now.

Reggie… gorilla …

Miyamoto was not so good at playing Zelda.

Iwata’s English sounds familiar…


In XBOX World:

The new XBOX 360 looks OK, kinda cool, but not still so attractive to me.

Maybe it was caused by the feeling that XBOX games always gets Windows version. (Maybe wrong)

As a matter of fact Microsoft press conference was also great, inherited the fantastic gaming show style, the great games heated the atmosphere.

The Project Natal renamed to Kinect, the full body motion sensor enables you to play with your body, no additional game controllers needed.

I can’t go to E3 to try the Kinect myself, so I have a little bit doubt about the gaming experience.

When will Microsoft design a portable game device?


In SONY World:

PS move did’t bring so much surprise for SONY fans. It is just learning from Wii, plus it gets a stupid light in the front. I don’t like that design.

No new console update, which is reasonable, PS3 is still the most advanced console till now.

In this 3D year, SONY played the card of 3D gaming which is reasonable too, but still feels like not so close to us.


In WorldCup season, everyone is excited, I do watched several matches.

Argentina was the brightest team with the world’s brightest stars.

The two Koreas did played tough role in the field. I think every opponent can never underestimate the two Koreans. 


NBA Final champion finally won by LAKERS this moring!  

Fall behind in the first three quarters, but take the lead in the last quarter.

This was a great show even in the NBA history.


Somthing goes on in my life:

Finally I get the driving license. For the last time the coach ‘Blackmailed’ us 60RMB for its paper fee.

We invite the coach to dinner for teaching us how to drive.

I got so tongue-tied that the coach also brings his concubine – 40-50 year old, heavy makeup, shows cleavage, looks good…

Our coach was definitely an ugly looking guy. Surprisingly unbelievable !!!


I matched a new pair of glasses, when choose the frame I just go for the good looking one, didn’t ask for the price.

When everything was decided, the price scared me a little.

After paid 1211RMB in cash desk, felt like my legs went weak.

This should be an impulsive buying, normally I do not do that.


At last I want to note one important thing, Helen and I choose 35度创意摄影 to take our wedding-photos.

Everything was decided, we just waiting for the day to film, will show photos when it’s ready.

Just I can’t get used to all my moustache shaved.

生活

学车日志(6)

六 7th

由Jacky发表在曾经的一天

没有评论

学车终于告一段落

今天大路考也顺利通过了

时间挺合适的

再往后拖就要热了

算是一桩心事完成

life is moving on…

学车

jQuery Tips : 给AJAX回调函数传递额外参数

六 5th

由Jacky发表在JavaScript

没有评论

讨论这个问题基于如下场景:点击页面上某个按钮之后,触发click事件,事件处理函数内部发送一个AJAX请求,AJAX回调函数更新页面的某一个部分

具体到这个例子,我们希望button1和button2点击之后,用AJAX的方式取example.html的内容,然后动态更新页面的id=callbackdemo3的div

HTML如下: 

<div id="callbackdemo1">
	<button id="button1">ajax load1</button><br/>
</div>
<div id="callbackdemo2">
	<button id="button2">ajax load2</button><br/>
</div>

<div id="callbackdemo3" class="log"></div>

<button onclick="$('.log').html('');">clear</button>

第一种做法:

适用于最简单的情况,也是比较直观的做法,就是在ajax回调函数中,使用jQuery的id选择器$(“#callbackdemo3″)得到id为callbackdemo3的div后更新其HTML内容

$("#callbackdemo1>#button1").click(
function load(){
	$.get("example.html",{ 'param[]': ["var1", "var2"] },
		function f1(data, textStatus, XMLHttpRequest)
		{
			$("#callbackdemo3").html(data);
		}
		);
}
);

 

第二种做法:

定义好一个接受额外参数的回调函数,然后在默认回调函数的内容调用这个预先定义好的回调函数

 这样就能达到传递额外参数的目的了,较之第一种方法,此方法能比较方便的利用各个回调函数的上下文。

function callback_with_extraParam(data,param)
{
	param.html(data);
}
$("#callbackdemo2>#button2").click(
function load(){
	var extraParam = $("#callbackdemo3")
	$.get("example.html",{ 'param[]': ["var1", "var2"] },
		function f2(data)
		{
			callback_with_extraParam(data,extraParam);
		}
		);
}
);

 

对于额外参数的重要性,不妨看一个稍微复杂一点点的HTML情况,我们希望更新button3下面的那个div的HTML,这个div没有id,那么如何做呢? 

<div id="callback_complexdemo">
  <button id="button3">ajax load3</button><br/>
  <button onclick="$('div',$(this).closest('div')).html('');">clear</button><br/>
  <div></div>
</div>

当然使用#callback_complexdemo>div也是可以的,但是如果是更加复杂的HTML页面呢?如果没有id=callback_complexdemo呢?嵌套很深呢?

这种情况下,我们就需要有效利用上下文参数这个特性了。

在click的事件处理函数load()中,我们可以方便的获得当前元素的位置var whereAmI = $(this);
这个whereAmI是个jQuery对象,然后在AJAX回调函数f3中,我们利用whereAmI即被点中的这个button想办法去获得想要的div

这一行代码新手有的人看不懂:$(‘div’,$(whereAmI).closest(‘div’))

首先$closest_parent_div = $(whereAmI).closest(‘div’)即查询获得whereAmI最近的父div对象

然后$(‘div’,$closest_parent_div) 即在最近的父div对象这个上下文中,查找内部的div对象

$("#callback_complexdemo>#button3").click(
function load(){
	var whereAmI = $(this);
	$.get("example.html",{ 'param[]': ["var1", "var2"] },
		function f3(data)
		{
			console.log(whereAmI);
			$('div',$(whereAmI).closest('div')).html(data);
		}
		);
}
);

 

 希望通过这个小例子,能让大家学会如何给AJAX回调函数传递额外参数,以及实用且重要的上下文参数。

AJAX, JavaScript, jQuery, web开发, 高手必备

Workshop – Walk in the Cloud with Google App Engine

五 31st

由Jacky发表在GoogleAppEngine

没有评论

I will hold a workshop of Google App Engine for the next codekata activity, welcome to join me.

Preview:

Click Here: http://jhaddressbook.appspot.com/contact

Slides:

GoogleAppEngine, Presentation, workshop
12345»...最后一页 »
  • 为了节约各位宝贵的时间,允许看帖不回帖!

    如果哪篇日志实在打动你,请留下宝贵意见!

    • 最新评论
    • 热门文章
    • 存档
    • 标签
    • 分类
    • CSS (4)
    • GoogleAppEngine (5)
    • iPhone (3)
    • JavaEE (6)
    • JavaScript (11)
      • jQuery (1)
    • Notifier (2)
    • PHP (2)
    • Presentation (1)
    • python (1)
    • Struts (1)
    • Unix/Linux (4)
    • WebDev (8)
    • WordPress (1)
    • 大事件 (2)
    • 小问题 (6)
    • 曾经的一天 (19)
    • 杂项 (2)
    • 站长日志 (4)
    分页 失败 学车 感想 插件 生活 网事 翻译 高手必备 AJAX avatar baidu checksum comment CSS EL google GoogleAppEngine gravatar http iPhone java JavaScript jboss jndi jQuery jsp lyrics md5 movie mplayer Notifier python Q&A qq reflection screen SEO sevlet shell Struts ubuntu usability web开发 WordPress
    • 2010年八月 (2)
    • 2010年七月 (2)
    • 2010年六月 (5)
    • 2010年五月 (5)
    • 2010年四月 (7)
    • 2010年三月 (4)
    • 2010年二月 (6)
    • 2010年一月 (12)
    • 2009年十二月 (8)
    • 2009年三月 (1)
    • 2009年二月 (4)
    • 2008年十一月 (1)
    • 2008年十月 (2)
    • 2008年九月 (1)
    • 在火车站被一个小孩抱住腿 (4)
    • Working with Events, Part 3: More Event Delegation with jQuery (3)
    • TeamName SilverBullet (3)
    • Hello world! (2)
    • [WebDev]有用的http-equiv属性 (2)
    • Working with Events, part 1 (2)
    • 阴差阳错 (2)
    • 久疏战阵 (2)
    • AVATAR (1)
    • CSS分割背景图片的技巧 (1)
    • Rockie: ...
    • 昵称(必须)任鸟飞: 挺悲哀的,没必要记那么多,知道有那么回事就可以。中国人确实很迂腐。
    • very: 支持下,很强大
    • bigCat: 去捆绑paypal王道
    • 行者: 呵呵,从百度过来的,搜索一个问题。 博客不错,还是Media Temple的主机,价格挺贵的~ 我是做前端的,欢迎回访,可以的话,做个友情链接。...
    • larry: 同情,考试蛮刺激的 ;-)
    • Jacky: Home键 + 顶部关机键 按一下
    • larry: 截屏是怎么搞得?
  • Calendar

    2010年九月
    一 二 三 四 五 六 日
    « 八    
     12345
    6789101112
    13141516171819
    20212223242526
    27282930  
  • 最近文章

    • link的地址以斜线开头完全没有道理啊
    • 久疏战阵
    • 追求完美引发的杯具
    • 惭愧,我也做了一回痴情的苹果粉丝
    • GoDaddy域名续费
  • My Buzz
    iambad: RT @rtmeme: RT @Cattyhouse RT @rebecca_kidult: 转《盗梦空间》引进国内号称一刀未剪,主要原因是电影局那帮人的智商,实在不知道从哪里剪起。对此,我深信不疑。
    19 hours ago, comment
    iambad: RT @rtmeme: RT @BaoliDao RT @yimaobuba: 汤唯终于因为在贱党伟业饰演杨开慧被解禁,中宣部表示:这一举动表达了汉奸睡得,主席为啥睡不得的正确思想取向
    19 hours ago, comment
    iambad: RT @rtmeme: RT @tonyq0802 RT @Cattyhouse: 我知道了,原来苹果中国的价格直接是美国价格乘以8,汇率无效。
    19 hours ago, comment
    iambad: RT @ceoSteveJobs: There's no camera on the iPod nano. Why? Because our design team wanted to put it behind the clip. Yeah, real brilliant.
    19 hours ago, comment
    iambad: Test post a photo ☺ http://moby.to/k2mm6y
    7:12 AM Sep 02, 2010, comment
    iambad: RT @rtmeme: RT @chouti: 同事问,新的iPod Touch和iPhone4有什么区别? 回答,通过移除电话模块修复了信号门的Bug -___-
    4:21 AM Sep 02, 2010, comment
    iambad: RT @rtmeme: RT @tenione: 乔帮主把nano拦腰截断就变成了新的nano和shuffle
    4:21 AM Sep 02, 2010, comment
    shunz: 对比了最新版的城际通、凯立德、道道通、高德以及灵图等GPS地图以后,发现还是城际通的地图最新最全,但是软件的设计是凯立德更人性化一点。
    9:13 AM Sep 01, 2010, comment
    iambad: RT @rtmeme: RT @duanzi: Via @oopsimtim: 今天坐地铁,人还不算多,某一站时进来一个男生,身材看起来比较胖一点…他进来之后地铁就发出“滴~~滴~~滴~~”的关门警告声。 接着他一下子突然就跳到站台上去了…看着地铁门关上,他嘴里喊着着: ...
    7:25 AM Sep 01, 2010, comment
    iambad: RT @rtmeme: RT @cashq RT @duck_1984: 上海近期不宜前往的影院,星美正大、港汇永华、海宁路国际。
    4:47 AM Sep 01, 2010, comment
     
  • RSS 最近的分享

    • rtmeme: RT @ioola RT @localhost_8080: 昨晚梦见男朋友和别的女人在逛街,梦里我的第一反应是查源代码…结果调试半天查不出来为什么显示的是那个女人不是我,最后含泪把那个女人给注释掉了,再一运行就是我男朋友自己逛街了…醒来字脸呆了很久…rz 2010/09/03
    • rtmeme: RT @tengbiao RT @c06658: 韩寒:我们的领导群从这一批换成了那一批,治国口号从这一堆换成了那一堆,丰功伟绩从这个会变成了那个会,社会悲剧只是从这个人变成了那个人 2010/09/03
    • 2010年09月03日 2010/09/02
    • rtmeme: RT @Cattyhouse RT @rebecca_kidult: 转《盗梦空间》引进国内号称一刀未剪,主要原因是电影局那帮人的智商,实在不知道从哪里剪起。对此,我深信不疑。 2010/09/02
    • rtmeme: RT @O_David_O RT @caii: 汤唯因为演了色戒而被封杀,但是,她将因为出演毛泽东的初恋女友而被官方捧贺。这说明什么问题?我觉得是:你可以脱,但是要看脱给谁。 2010/09/02
    • 【视频下载】苹果 iPod 发布会 2010/09/02
    • Oh Shit! 2010/09/02
    • Engadget首发:三个火枪手iPod shuffle vs nano vs touch (2010) (27 留言) 2010/09/02
    • 上海世博会,丢尽中国脸 2010/09/02
    • 笔记软件Evernote入门介绍 2010/09/01
  • Tag Cloud

    分页 失败 学车 感想 插件 生活 网事 翻译 高手必备 AJAX avatar baidu checksum comment CSS EL google GoogleAppEngine gravatar http iPhone java JavaScript jboss jndi jQuery jsp lyrics md5 movie mplayer Notifier python Q&A qq reflection screen SEO sevlet shell Struts ubuntu usability web开发 WordPress
  • 我的足迹

    • 我的GoogleReader分享
  • 链接表

    • code's life
    • JeffChen在胡言乱语
    • Man can be an artist in anything
    • Shadow & Honnix
    • snow river and er
    • tdsparrow
    • 梦许之地
    • 老茂博客
  • 用户登录






    • 忘记你的密码?
版权所有 © 2010 haojii | 由digitalnature提供主题Mystique | 由WordPress强力驱动
RSS订阅 XHTML 1.1 顶端