Archive

Archive for August, 2006

动态载入js并执行(未成功)

August 30th, 2006 Fwolf No comments

说是未成功,也包含了并未失败的含义,只是没有完全达到预期的目的罢了。

最初的想法是这样的,我零星的写过一些小文章或者小工具,都是使用html语言写的,但处于方便保存/转移/备份/浏览的目的,html中所有的内容全部都包含在一个文件当中,不使用图片,css和javascript也都直接包含在文件中。现在我想在这些文章和工具中添加一些统计代码和adsense代码,就想到了如果能有一个js文件,把统计代码和adsense代码都写在里面,然后在那些单独的html文件当中包含一下这个js文件就可以了,这样可维护性就大大的增强了。

首先要排除的是innerHTML方式,因为这种方式只能写入静态内容,写入js代码虽然能够成功,但被写入的代码却不会被执行。所以,最后采用了appendChild的方式,结果如下:

首先在html也中引用js文件:

<div id=”stat_51_la” style=”text-align: center;” /> <!– 这一句的作用稍后解释 –> <script src=”stat_51_la.js” type=”text/javascript”></script>

然后,具体被引用的js文件内容是这样的:

function stat_51_la() { //重定向document.write的输出方向 document.write = function(s) { document.getElementById(‘stat_51_la’).innerHTML += s; return false; } var s = document.createElement(“script”); s.type=”text/javascript”; s.src=”http://js.users.51.la/272422.js”; //document.getElementsByTagName(“body”)[0].appendChild(s); document.body.appendChild(s); } stat_51_la();

思路介绍:先看下面那段代码,就是document.createElement往后的部分,主要思路是通过document.createElement创建一个script对象,然后对他的属性进行赋值,尤其是src属性,代表这要引用的js script文件的uri,最后通过document.body.appendChild(s);把这个script对象添加为body的最后一个对象,实现js文件的动态载入,并且可以正确的执行所载入的js代码。但如果只作这么多工作的话,当动态载入的js文件中有document.write方法时,在IE下没有反应,但在Mozilla Firefox 下就会让你原来的网页消失,只显示document.write出来的内容,所要就要用到document.write = function(s)部分,重新定义document.write函数,把输出重定向到div id=”stat_51_la”当中,就能够比较好的解决这个问题了。

看起来已经解决了问题,并且用在51.la统计代码上效果很好,但在嵌入adsense代码的时候遇到了问题,大概检查了一下,好像是adsense也用到了类似的方法,两种相同的方法一嵌套,就变样了,实在是头大,没有精力再深入的查找原因了,就此打住,像adsense这样复杂一些的应用还是用后台脚本实现更方便。

参考:简单参考复杂讨论

Related posts

Categories: Web Frontend Tags:

Running Scared/夺命枪火/持续惊恐

August 28th, 2006 Fwolf No comments

没看的时候以为是一部恐怖片,开头也没有认出Paul Walker来——感觉老外都长得比较像呵呵,这部片子的导演使用镜头有些忽悠+晃悠,乃至片头的悬念,乔开车带着一个受伤的小孩,像是往医院赶路的情节,十分引人入胜,毕竟小孩子受伤的电影不多,一下子就把我的注意力抓住了。

故事情节的变化也是十分的突兀,但事情交代的很清楚,导演是个叙事高手。当乔和其他意大利黑帮成员点钱的时候,来了一帮抢钱的,可意大利黑帮就是不一般,被一堆人用散弹枪指着,还是找到机会反抗并战胜了对方,代价是几个牙买加人死了。但话锋一转,原来抢钱的居然是警察!一帮人赶紧逃之夭夭,路上同伙交代乔把黑枪收起来销毁。但乔似乎舍不得把这么好的枪扔掉,回家收藏了起来,却没有注意到被在地下室玩耍的小孩发现了。结果是一家人吃饭的时候,从隔壁传来了枪声,并射来了子弹,乔过去一看,顿时清楚了,隔壁的小孩把自己藏的枪拿去了,把虐待自己的“父亲”射伤,自己跑掉了。

故事发展到这里,一个有血有肉、拖着老婆带着孩子(意大利黑帮特色?)的黑帮帅哥已经塑造完毕,故事也起了头,然后就是一连串乔消灭自己没有销毁手枪和寻找小孩以及丢失的手枪的故事了,俨然好莱坞版的《寻枪》,只是这枪像变魔术似的换了好几个地方小孩身上-流浪汉-小孩身上-马桶-修车工-皮条客,俄罗斯小孩也不简单,能够从吸毒的流浪汉、皮条客、变态狂、警察等处一一逃走,长大了一定像《红场特警》那样猛。

大火拼发生在冰球场,并刻意换上了蓝色的灯光,以至于血都成了紫色,异常瑰丽。两个黑帮被一个混混和一个孩子挑唆,都拼光了,只剩下卧底英雄乔和俄罗斯小孩,俩人平静下来,去吃早餐,却又被皮条客碰上了,冤家路窄,搏斗之后,乔受伤,但仍坚持送俄罗斯小孩回家,实现自己对妻子和儿子的诺言。

片子很紧凑、情节很紧张、场面比较暗(夜间)、人物比较黑(黑帮)、画面比较火(火爆)、感觉比较美(暴力美学),总之,不错的片子,尤其是俄罗斯小孩演得太好了,史泰龙拍片不笑好歹还仗着脸部受过伤,这个俄罗斯小孩不笑的表情却也能够表达出很多复杂的情感来,还有他那蓝色的眼睛——太美了~

看完了别忘记告诉身边的女友,乔是个卧底,这一点无论是演员还是导演都隐藏的很深,不注意根本看不出来,别让她们看不懂总问“为啥、为啥”了。

Related posts

Categories: Movie Tags:

电视赛车抢不过篮球,篮球中国打不过希腊

August 27th, 2006 Fwolf No comments
(由于本月的Flickr空间已满,本帖中的图片必须使用firefox才能正常观看)

就像央视论坛F1版中网友说的那样,自从上战匈牙利大奖赛以后,F1迷们苦苦等待了20天,却盼来一个不播,改为直播中国对希腊的篮球世锦赛(可惜还没打过别人),更让人生气的是,不转播也罢,发个新闻在网站上啊,网站上的新闻俨然很“旧”:

网站上的新闻俨然很“旧

可以看到,除了工作人员今天一早更新了一条昨天排位赛的情况之外,其他的消息一概没有,就连平时大家很不满意的朱环朱格格也没露个脸报个信儿,到央视论坛F1版上一看,乖乖隆地东,“央视将直播F1土耳其站比赛 请网友关注本网节目预告”依然高悬:

“央视将直播F1土耳其站比赛 请网友关注本网节 目预告”依然高悬

唉,什么都不说了,网友们已经告诉结果了,莱科宁爆胎,马萨第一,阿隆索第二,舒米第三,两人积分差距又拉大一分,知道结果了再看录像就没有意思喽~咋就不能像转播世界杯那样,cctv5转播篮球,cctv2改直播F1呢?世界杯4年一次,一个60多场球,平均每年15、16场,F1每年都有,每年18场,都差不多嘛。

Related posts

Categories: Living Tags:

Apache文件权限设定的小窍门

August 27th, 2006 Fwolf No comments

通过这篇文章中的这件事,让我对linux下apache的设置和linux的权限机制有了进一步的了解,虽然原理是很简单的,但长期使用windows服务器的同志们未必就会知道。

情况是这样的,我这里为了日常调试程序方便,对程序文件有两个小要求,一是最好保存在home目录下,便于操作,二是文件的owner最好还是用户我,而不是apache,但要求既能够正常编辑,由能够正常的运行(在apache下,web访问)。因此,在home目录下建立了一个目录php,并且在apache中新建了一个别名Alias指向/home/fwolf/php目录。重启apache让设置生效后,却发现访问http://localhost/php返回“403 Forbidden”拒绝访问错误,问题到底出在哪里呢?

首先估计到应该是访问权限的问题,php目录默认的权限是755,owner为fwolf:fwolf,而apache是以用户www-data的身份运行的,所以编辑/etc/group文件,把用户www-data加到了fwolf组中,重新尝试访问,依然是403错误。进一步估计www-data用户的权限设置没有错,问题产生在其他地方。

进一步通过google查询之后,找到了一种调试权限的好方法:先su到root用户,再su www-data切换到www-data的用户环境,直接访问目标文件看是否“Permission denied”(以前怎么就想不到呢)。结果如下:

$ su Password: # su www-data sh-3.1$ ls ls: .: Permission denied sh-3.1$ cd /home/fwolf sh: cd: /home/fwolf: Permission denied sh-3.1$ cd /home/fwolf/php sh: cd: /home/fwolf/php: Not a directory

果然,虽然php目录的权限是755,按理说www-data应该能够访问的,但这时却不行,继续查找原因。。。原来问题出在了php目录的上级目录/home/fwolf上:

drwx—— 36 fwolf fwolf 4096 2006-08-27 15:53 fwolf

原来,上级目录/home/fwolf只允许用户fwolf本人访问,www-data虽然能够访问下级目录php,但无法“通过”上级目录,自然会产生403错误了。所以把/home/fwolf的权限更改为750,同时www-data已经被加到了fwolf组中,apache访问就正常了。

补充说明:linux系统中,目录的权限要有x才能进入。

Related posts

Categories: Apache, Linux Tags:

64位Ubuntu下的电影播放(失败)

August 25th, 2006 Fwolf No comments

本以为64位能快些,但装上之后,不但Inter D943的cpu却装了个amd64的ubuntu(x86_64架构),速度也没感觉快了多少,而且好像64位os下scim和openoffic还没法一起工作,愁死我了。

不过电影播放倒有可以替代的方法——卸载totem-gstreamer,安装totem-xine,感觉totem-xine虽然没有mplayer功能强大,但算是简单能用,至少avi系列的影片基本上都能够播放了(当然要加装libxine-extracodecs包),而且画质好像也比mplayer要好一些。两者的速度基本差不多。

64位(amd64)下的w32codecs找不到,可能就是没有,这样的话就只能暂时使用totem-xine了,不知道对mencoder有没有影响。另外totem-xine好像不认gb2312的字幕文件,把srt文件转换为utf8编码应该可以吧,totem-xine也不像mplayer那样能够自由选择字幕文件的编码。

唉,真是像冰块僵尸说的那样,“amd64支持得还是不够好,还是凑活用i386吧。flash(看网页) w32codecs(看电影) java(QQ)都有问题。”,还是暂时换回i386好了,怎么换呢?像升级内核那样直接安装行不行?我可懒得重新安装,待我试试再回来报告。

……

唉,不行,根本就不是一个源的,只能重新安装i386版本的了,有没有和我一样倒霉的兄弟啊?

不过在64位服务器上,由于不需要太多的娱乐功能,而大多数服务器软件在amd64下都有,还是要坚持装64位ubuntu的。

update @ 2006-8-26 这里有位老外说他已经成功的在64位系统下安装了w32codecs,解决了电影播放的问题,有兴趣的自己看吧,我是懒得再次重装系统了:http://www.ubuntuforums.org/showthread.php?t=54399

Related posts

Categories: Linux Tags: