2009年5月20日, 20:46
下午同 baohua 一块做 pair programming,一个不小心,打翻一大杯可乐到 thinkpad 上面,注意,可乐还是加过冰的哦。
一阵慌乱后,发现 thinkpad 居然还能正常工作,赶紧保存了已经修改的程序文件,又一阵忙乱关上电脑。
拔掉电源,从桌上把 thinkpad 倾斜着拿起来,就有很多可乐顺着导流槽从下面流了出来。
虽然很相信 thinkpad 的品质,却也还是不停地在心里面念着阿弥陀佛。找 paul 借来了螺丝刀打开机器,拿掉键盘以后,仔细观察,99%的地方都很干,唯一有湿的地方就是靠近网卡的主板上了。估计是因为大部分可乐都泼在了网卡这一侧,太多水,无法很快排掉,只能溢出来到主板上了。
过了约一个小时,重新上电,正常启动系统,激动!仔细检查,发现除了网卡无法正常工作以外,其余一切正常。
怀着忐忑的心,在地铁上想了诸如修理、外置网卡多种可能性,匆忙赶回家,拆开电脑,拿起吹风,对着网卡部位就是一阵吹(注意,我家只有吹热风的吹风机,所以,要小心脱焊),然后又等了一会,重新上电,接上网线,网卡的提示灯就亮了,进入系统,一切正常,欣喜不已,特此记录。
分类: Experience | 3 评论 »
2008年6月28日, 23:04
最近自己DIY了一台mini pc,装上了 gentoo,可是中文输入法一直没搞掂。
基本安装步骤参见 gentoo 官方2008.0标准安装文档,之后参照官方 Xfce 安装配置文档,最后按照 Scim 官方说明文档安装。
成功启动 X,看到那个小老鼠启动画面,可是,ctrl+space 没反应?来来回回 merge/unmerge 几次,都没有结果,仔细看了几篇文章 1 2 3,似乎也没有解决的办法。困扰了我好几天。只好先玩玩 Xming,发现这个东东的最新版本居然要donation 以后才能下载,还号称 opensource ?果然很多人在 argue 这个东东。Anyway,这个东东用起来还是很简单的,安装好以后在putty设置 Enable X11 forwarding,并且设定 X display location 为 localhost:0 (这一步很重要)就可以在远程运行 GUI 程序,在本地桌面显示咯。
好了,继续来解决输入法问题。结果也很简单。这篇帖子描述的情况跟我遇见的一致。照做,重新 emerge 一下 scim,成功~
记录一下我最终使用的 USE 变量设置:USE=”-gnome -kde -qt3 -qt4 X dbus hal startup-notification xscreensaver cdr dvd opengl dri xv cjx nls unicode immqt-bc gtk”
Show 图一张

顺便说一句,要玩 Linux,最好用虚拟机或者两台电脑,一台装Linux一台用来上网找答案。
分类: Computer | 没有任何评论 »
2008年4月9日, 21:35
使用Flash请求资源的时候经常会碰到缓存的问题。这里分两种情况讨论:
1)被请求的资源是数据内容(XML或者JSON等文本数据)被缓存
比如:使用 URLLoader 请求一个 XML 数据 http://localhost/test.xml
这个时候在 IE 的缓存目录(通常在\Documents and Settings\{User}\Local Settings\Temporary Internet Files)产生一个与http://localhost/test.xml对应的缓存文件,用来保存test.xml返回的内容,以后每次请求URLLoader都返回这个文件内容。
Adobe 的知识库中有一个解决办法是给请求的资源加上一个随机数做参数:
loadVariables("mypage.asp?nocache=" + random(65000), 0, "POST");
myXML.load("path.xml" + "?" + Math.random());
看具体内容在这里。
如果能控制服务器的话,可以通过设定Http头的Cache-Control属性为no-cache来解决
response.setHeader("Cache-Control", "no-cache");
如果是Java Web App可以做一个filter专门来映射那些需要不被缓存的请求的资源,比如,在web.xml中做如下设定
<filter>
<filter-name>CacheControlFilter</filter-name>
<filter-class>net.nevillblog.flash.app.filter.CacheControlFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>CacheControlFilter</filter-name>
<url-pattern>/xml/*</url-pattern>
</filter-mapping>
2).swf文件本身被缓存
在 Adobe 的知识库谈到的解决办法是在HTML里面设定Expires参数和No-Cache参数,
具体内容看这里。
这个方法的不足之处是会导致整个html页面都会被重新请求,实际只要是SWF文件重新被请求。
我的解决办法是通过设置Apache的mod_expires,设定让SWF文件不被缓存,原理其实是相同的(即设定Cache-Control属性)。
在Apache的配置文件中设置如下代码:
ExpiresActive On
ExpiresByType application/x-shockwave-flash "now 1 seconds"
当然还要记得启用mod_expires即可。
分类: Experience | 1 条评论 »
2008年2月12日, 17:24
源码下载
做一个 Flash 程序,要实现一个 loading 过程,当加载一个比较大的外部资源,要显示加载进度,当外部资源全部都加载到本地播放器(Flash Player)以后,就开始播放。
下面是装载的完整过程:(以源码中的文件为例)
1)Player 装载 LoaderTest.swf,并产生相应的 LoaderInfo (可以通过在 LoaderTest 中访问 this.loaderInfo 属性得到)
2)LoaderTest 中使用 flash.display.Loader 对象调用 load 方法进行装载,装载的过程中会产生 open / progress / init / complete 几个事件,如果发生读取错误,会产生 ioError 事件
3)loader 装载完成以后,可以使用 loader.content 来访问被加载的影片(SimpleMovie.swf),使用 loader.contentLoaderInfo 来访问 SimpleMovie.swf 的 LoaderInfo 类的实例对象(即:这个时候在 SimpleMovie 里面访问到的 loaderInfo 属性与 LoaderTest.loader.contentLoaderInfo 是同样一个对象)
装载完成以后整个关系图可以如下表示:(图片来自 Adobe Flex Laugnage Reference)

在实际使用 loader 的过程中遇到了一个小小的问题:装载比较大的 swf 时,往往没有完全装载成功,影片剪辑就开始播放了。
要看到这个效果需要在 IDE 中编译执行 LoaderTest.fla,在 Test Movie(快捷键 Ctrl + Enter)打开的 Flash Player 中从 View 菜单选择 Download Settings,设置一个比较慢的下载速度,比如 56K(4.7KB/S),然后再从 View 菜单中选一次 Simulate Download(快捷键还是 Ctrl + Enter),这样,我们看到的效果是,进度条到了 100% 以后就立马跳出来的是 SimpleMovie 里面的 Over! 画面了。从 Flash IDE 的输出我们看到这样的执行顺序:Open -> Progress -> Init -> Complete (在我的机器上,Init 大概是发生在 Progress 到了 8% 左右的时候)。
既然原因找到了,要解决这个问题的办法也很简单,修改 movieInit 这个方法,将 movieHolder.stop(); 前面的注释去掉
- protected function movieInit(event:Event):void {
- trace("init");
- movieHolder = MovieClip(loader.content);
- //设定当前 fps 同被加载进来的 .swf 相同
- stage.frameRate = loader.contentLoaderInfo.frameRate;
-
- //看看取消注释后有什么变化
- //movieHolder.stop();
- }
再重新编译执行一下,就可以看到正确的效果了。
仔细看了一下 Adobe 的参考文档,里面对 Loader 的 init 事件说明大概是这样的:(翻译自 LoaderInfo 参考手册)
当被加载对象的所有属性和方法都能被访问到的时候,就产生该事件。要产生这个事件必须同时满足下列两种情况:
1)被加载的 DisplayObject 对象(本代码中的 SimpleMovie.swf,对于 LoaderTest 来说就是 loader.content)的所有属性都能被访问
且这个 DisplayObject 关联的一个叫做 loaderInfo 对应的 LoaderInfo 对象能被访问到(我的理解,能被访问到就是不为空)
2)这个 DisplayObject 里面所有子对象都被构造好、准备就绪了
也就是说,当 LoaderTest 中的 loader.contentLoaderInfo 和 loader 的其它的一些属性能被访问了,这个 contentLoaderInfo 就迫不及待的发出了 init 的信号,而此时,装载的过程并没有真正完成,还有很大一部分内容都没有被加载呢。真正加载完成、一个字节都没有漏掉的时候应该是 complete 这个事件发生的时候,只有在这个时候,被 loader 装载的 swf 之中每个对象、每个属性才能被真正访问到。
如果,我们把 stage.addChild(movieHolder) 这句从 loadComplete 移到 movieInit 里面来,我们可以看到 Flash 的边装载边播放的特性。即在 init 发生以后, SimpleMovie 就开始从第一帧开始播放了,此时的 Progress 大概在 8% 左右。
不过,一般情况下不要利用这个特性这么做。因为,在项目实践中,Tiger 发现被事先装载的部分可能是音乐,这样会出现音乐先播放,而画面跟不上的情况。
写这篇之前当然进行了一些搜索工作,找到一些文章说明 Flash 9 以前版本的 Loader 搞反了 init 和 complete 这两个事件,有兴趣可以读一下。
参考阅读:
1)http://www.awflasher.com/blog/archives/468
2)http://whatdoiknow.org/archives/001982.shtml
分类: Computer | 没有任何评论 »
2007年9月4日, 2:04
自上次(8月21)开通评论功能以来。。。到今天 akismet 积累了 1w 多条垃圾评论。
有些是被被自动过滤掉了,但是大概四分之一(约3k多)是手动过滤的,实在受不了过两三天就来清理上百条垃圾评论,于是又上网搜索了一番,发现只要是自己用 WP 架 blog 的人都面临这种问题。
仔细挑来选去半天,最后决定用捷克人做的这个插件,不知道效果如何,试试用几天看吧。
在弄这个插件的过程中,搜索到了很多有意思的blog,这个过程我觉得才是今天最值得 blog 的部分啊。。。
下面数数看:
看这个域名就觉得很厉害,狠 kuso,当然,里面的内容也很精彩,科技 + 美女 !!挖!总觉得 Engadget 这样子的网站看多了有点想吐,现在发现原因所在了,就是因为少了乱七八糟的花边新闻啊(和谐很重要啊啊啊)。比如这篇讲寇乃馨的,就让我对闷锅和寇mm都更进一步了解啊~
这里让我感兴趣的有两篇,一篇是讲一位14岁的站长(14岁的时候我大概在玩大航海二和三国志英杰传吧),还有一篇是讲用SEO对付骗子,当然,这两篇都需要一些延伸阅读(比如继续点击文章里面的链接)。不过这个blog似乎有段时间没更新了,也许作者跟我习惯差不多 -_-#
说这个站点是技术性和谐方法,是因为它使用了三种(至少目前我只发现了三种)和谐技术,列举如下:
- 使用图片(最常规的截图啦)
- 使用脑残体(90年后的这个创造生来不就是为逃避检查的么?),这个方法80前应该都想不到。。。
- 最后这个方法你需要查看页面源代码才知道。不过还是能被 google 搜索到这个网站,看来这个方法不算太高明
说了这么多,总结一下就是自己架设 Blog 玩的人都是有一些共同点的(比如喜欢捣腾,好新奇的东西,其实就是 Geek),所以他们的 blog 一定有些有意思的地方看看
最近举行了一次 WordCamp Beijing 2007 活动,有人介绍了这次活动(当然从这里能找到更多的介绍和 blog),可惜我没有鼓起勇气去参加。。。只好等明年了。(好想要那个印有 WP 的 T 恤 >_<)
分类: Experience | 没有任何评论 »
2007年8月23日, 16:10
今天再介绍一个网站 Musicovery (其实是 Danny 介绍的),很 Cool 的界面,
你可以根据自己的倾向(包括年代,舞曲还是情绪颜色), 随机选择音乐来播放,
还能链接到 ebay / Amazon / iTunes 直接购买,
我在想,这个要是能做成一个桌面的 widget 就更厉害了,不知道会不会有人这么干。
分类: Experience | 1 条评论 »
2007年8月21日, 13:54
似乎是一个日本人研究动画技术做的 http://roxik.com/pictaps
Alex 帮我做了一个在 这里 (注意,是有配乐的哦)
顺便说一下,我的blog升级到 WP 2.0.11 版本了,留言功能重新开放
分类: Experience | 2 评论 »
2007年7月8日, 0:40
可能是由于我的这个 wordpress 程序比较老了,反 spam 的程序有漏洞或者其它什么原因,从前天开始就有了一大堆 spam 出现。
花了半个小时来清理,先是 delete from comment_table where comment_content like ‘%pron%’ or comment_content like ‘%sex%’ 这样子删,后来发现这样子太慢,仔细观察,基本上我这些 spam 都是在 7 月以后发生的, 就直接 delete from comment_table where comment_date > ‘2007-07-01′,然后世界终于清静了,真是小访问量,少量 comment 的 blog 的最大优点,反 spam 相当迅速啊。
提醒大家如果看到全是英文的评论,不要去点评论里的链接,很危险的哦。
现在暂时关闭评论功能,待我升级新的 WP 程序再说。在家 CDMA 上网实在太慢,没空搞这个 -,-
分类: Experience | 没有任何评论 »
2007年5月29日, 1:17
自从去年到同事家做饭以来,每隔几周就会做一次饭菜。特别是最近一个多月,陆陆续续尝试了几种以前没做过的菜,这两周就连续尝试了烧鸡翅,炸鸡腿和土豆烧牛肉,下面来总结一下经验:
1、烧鸡翅的时候应该把姜蒜切得大块一些,爆完姜蒜以后捞起来,然后放鸡翅、佐料跟水,换小火,注意翻炒,小心粘锅。(评语:味道不错,小心粘锅,再接再励)
2、炸鸡腿要用小火,一开始不需要油太热,五成热油加上小火慢慢炸,时间要比较长。(评语:炸的时间欠短,做菜要有耐心,不过好歹算是熟了,还不够入味)
3、土豆烧牛肉,今天刚尝试的新菜,是结合了前面的2种做法(唔,没错,我是很有计划很有目的循序渐进的进行修炼的),土豆应该只在锅里过一下油就ok了(我过了2遍,怕第一遍不够熟。。-_-),因为后来要跟牛肉一起烧,有足够的时间烧熟,要炸熟了待会再烧就烂了。牛肉先处理好以后,应该也用小火慢慢多炸一会。然后就是一起统统放到锅里烧了,只是为了防止粘锅,在加佐料的时候最好小火,或者先加少许水。可惜DC坏了,pp没有。。。我的处女土豆牛肉烧挖~下次做的时候再补上吧。(评语:土豆很入味,牛肉不够烂,色香感觉不错)
唔,最后感谢同事可爱的小 Andy 提供厨房、柴米油盐和当我的小白鼠外加洗碗工 
另外记记本周的吃喝事。先是成都的杨同学跑来北京出差,去了千锅居五道口店,无奈席间喝酒去了,基本不记得吃了什么菜。。。所以只好期待改日故馆重吃。不过晚上去了传说中的西门鸡翅(据同学说是最正宗最老的那家),就在北大西门对面,不过大招牌上写的却是什么贵州菜,大门上横着红底横联,上书“西门鸡翅”,其实店不大,人还挺多,服务员完全忙不过来,都是客人自己弄桌子弄椅子和点菜。。。当然,这里的招牌菜式的鸡翅,味道确实很赞,另外还有拔丝菠萝也不错,是一个消夜的好去处,只是。。。离我住处太远。。。打车回来花了80大洋。。。
周日晚上跑去了一家名叫书虫的咖啡店,Danny 推荐说这里的 coffee 很不错,点了一杯 Latte,有点小贵,20大洋,只是觉得口感比我的雀巢速溶好些吧,但也不知道哪里特别(改次再去补补咖啡常识 -_-#)。不过端着本本在那坐了一晚,第一次用 python 做了一个小程序,感觉还是有点小兴奋,值得纪念一下。
分类: Experience | 3 评论 »
2007年5月19日, 2:03
其实从4月错过火车以后一直都过得很衰。。。
比如把adsl猫的变压器烧掉,导致几天都不能上网;去火车站接mm,结果火车提前到,让我迟到;从武汉带相机到北京,结果发现相机坏了,感觉是CCD出了问题,还不知道到哪里去修。
庆幸的事情是,2号陪mm去天坛开心的玩了一天(虽然没有照片…),而且幸运的躲开了故宫人流最高峰时间。
另外,再次去了海底捞火锅店,虽然是第三次去吃,但是觉得这次是最high的,跟mm两个人吃了130多,感觉最好吃的是毛肚,2个人吃了2份。。。强烈推荐各位喜欢火锅的朋友尝试一下,个人认为是在四川以外吃到的最好的火锅了。
分类: Experience | 1 条评论 »