一个基于Jquery的打字效果插件TypingCat

前段时间,要写一个页面,需要用到打字效果。在网上找到几个基于jQery的插件,但是有些太复杂,有些不太可控。于是干脆就自己写了一个。
用法和效果都比较简单,直接把html的代码写出来,看注释应该就知道怎么用了首先需要在 <head></head> 中加载必要的插件

<head>
…
<script type=”text/javascript” src=”js/jquery.js”></script>
<script type=”text/javascript” src=”js/TypingCat.js”></script>
</head>

而html的body中有如下标签内容(用来承载打印效果的位置):

<body>
<div><a href=’#’>back</a></div>
<div id=’pra1′>
<div id=’word1′></div>
<div id=’word2′></div>
<div id=’word3′></div>
</div>
<div id=’pra2′>
<div class=’word1′></div>
<div class=’word2′></div>
</div>
</body>

然后需要做的是,在任意位置加入下面的代码(开始使用插件,示例是放在了head标签里面):

<head>
<script type=”text/javascript” src=”js/jquery.js”></script>
<script type=”text/javascript” src=”js/type.js”></script>
<script>
$(function(){
l_blink_speed = 300;    //’‘闪烁速度 speed ” blinking
l_blink = 14;           //‘’闪烁次数 times ” blink
l_blink_s = 8;          //‘’闪烁次数(少)times ” blink (fewer)
l_start = 2;            //how long to wait before a new line starts
l_start_q = 1;          //how long to wait before a new line starts (quick)
w_blink = 80;           //汉字打印时间间隔 speed of tying
hide_time = 2000;      //字体层隐藏速度 speed of hiding
wait = 1000;            //weit 3 second before start
typeWriter(“this is Pra1’s 1st words”,”#pra1″,”#word1″,l_start,l_blink_s);
typeWriter(“this is Pra1’s 2nd words”,”#pra1″,”#word2″,l_blink_s,l_blink);
typeWriter(“this is Pra1’s 3nd words”,”#pra1″,”#word3″,l_blink,l_blink_s);
typeWriter(“this is Pra1’s 4nd words”,”#pra1″,”#word3″,l_blink_s,-1);   //retype in the same div. -1 means this pragraph  will disappear after finishing typing
typeWriter(“this is Pra1’s 1st words”,”#pra2″,”.word1″,l_start,l_blink_s);
typeWriter(“this is Pra1’s 2nd words”,”#pra2″,”.word2″,l_blink_s,-2);   //-2 means this pragraph will not disappear and ” will blink without stop
})
</script>
</head>

真正产生效果的是typeWriter(str,pra_id,div_id,wait_before,cur_wait)
参数的意义分别是:
str:需要打印的文字,注意最好不要打印‘’这个符号,因为它作为光标使用了
pra_id:段落的id或者类名,从例子中可以看出,如果是传入id则用”#id”的形式,如果传入样式的类名则用“.class”的形式。文字的消失是以段落为单位的。
div_id:每一行用div层引起来,这里是段落中各个div的id或者样式类名。用法同上。
wait_before:上一行的光标闪烁次数,也就是说上一行打印结束后多久才开始打印本行。
cur_wait:本行结束是,光标的闪烁次数。
上面的一些变量有说明,可以自己修改调整各种效果的时间和速度。
效果可以看这里
下载在这里

发表评论

圣诞文字素材

大概在一个月前,
我打算做一些准备,来迎接圣诞节
以做纪念
百度的某位前辈已经有生命证明
动漫宅如果不及时纪念自己的人生
就可能只剩下被人纪念的机会了

于是我怀着某种特定的心态
写下了这样一页PAGE

在无数次尝试和修改这些效果的时候

我一直希望最后她能够在一个雪夜降生

并被人注视

与其说我是在期盼一个Christmas

不如说对White的态度更殷切一些

 

在毕业在即的今天

我想用这样的方式来怀念那些在这几年曾出现在我视野里的人

尽管有很大一坨都很惹人厌

但正是因为有人群

才有了真正的基友

 

当然,重点是,我要用她来感谢那些在我眼前闪过的姑娘们

人生短促而多磨难

只要还有你们在

就值得来此尘世走一遭

 

不管你发没发我卡片

不管我修没修你电脑

不管我解不解你衣衫

不过你解不解我风情

 

此时此刻

我是如此

想念你

没有们

Read more “圣诞文字素材” 发表评论

《鸿门宴》观影记录

今天中午拿到票,结果3点多的时候中心忽然有事,弄完都5:40了,电影是5:45开始,赶到影院的时间是6:00。

一进去就看到刘亦菲被欺负。根据国际惯例,欺负女人的,一定会便当。欺负女主的,肯定会马上便当。果不其然,在刘亦菲脱到一半的时候,霸王出现了。坏人就便当了。

Read more “《鸿门宴》观影记录” 发表评论

关于时间旅行的一些讨论

前言

穿越是近年来大家喜闻乐见的娱乐活动。大众开始关注穿越,我想“电视剧”这种大众媒体形式应该做出了不小的贡献。从很久之前大名鼎鼎的《寻秦记》,到现在各种“清穿”剧,还有在微博上被炒起来的《李献计历险记》,都在某种程度上代表了穿越的一种类型。作为一个伪资深理论科幻读者,某猫将在本文对“穿越”这一行为做一个全面的分析和总结,希望能够带领大家穿越迷雾,一睹芳容。
接下来,我们分别来看一下和时间旅行所相关的有趣原理和其可行性分析。

Read more “关于时间旅行的一些讨论” 发表评论

日志统计脚本

今天同学说让我写个脚本统计日志。日志是一些ip的捕捉记录,根据协议的类型定义了一些ID和子ID。统计的需求是统计出各个类型的客户IP和服务IP。
这些日志是自动写入的,每天会根据日期生成一个文件夹,文件夹中每个小时生成一个日志文档。脚本要做的就是便利24个文档,读取内容进行分析。
由于需要把24个文档在一起分析,所以同学一开始的思路是:

对每一个类型进行统计,每次统计都遍历所有文件

明显效率不怎么样,但是实际上也够用了因为只要在服务器上让脚本跑起来,过几分钟回去看结果就行了
但是因为脚本要给别人看 = = ,所以不能太难看,因此要重新写一下。
开始的脚本是shell脚本,我不太熟悉,所以用python重写了
思路就是定义一堆 list 变量用来记录 IP,每读入一个 IP 就在 list 里面查找 not in,如果找不到就插进去。
最后统计list的长度
这样只需遍历一边文件就行了,但是……………………………………
不知道为啥,貌似python写完之后比原来还慢
后来同学一句话点破,not in 查找的时候需要对字符串进行匹配,而原来的 shell 脚本是用 sort 排序之后用 unique 进行去重统计,难怪这么慢。
于是考虑将 IP 字符串转换成long型再存储在 list 里面,这样匹配的时候是不是能快点?
但是结果好象还是不理想。在少量数据(两个日志文件)的时候,大概能比shell(8s)脚本慢几秒种(16s,是两倍左右),但是在大数据量的情况下就不容乐观了(多出1/3左右的时间)。
大量数据的情况下会慢几分钟 = =
不过貌似数据量越大差距越小,足够大的话有可能超过shell,但是差距还是太差了啊.
后来在网上查找了一下,发现原来字典的查找速度更快,因为字典在查找的时候使用 hash。于是尝试把所有 list 换成字典。
果然效果神速。在两个文件的时候,2.9秒左右。既然 hash 了,那么将 IP 转化位long型也没有意义了反而做了无用工。去掉之后大概是2.7秒。
然后调整了匹配的顺序,将数量较多的类型先匹配,这样又快了一点点。
如此做一个总结:

Read more “日志统计脚本” 发表评论

读取文件奇数行

今天处理“如何读取文件偶/奇数行”这个问题的时候,本来是打算用python来解决
python本身是很简单的,偶数代码如下:

f = open('./test.file','r')
while f.readline():
    print f.readline()

奇数行代码如下:

f = open('./test.file','r')
print f.readline()
while f.readline():
    print f.readline()

在网上想看看别人怎么做的,结果发现大部分是shell中的实现,尤其是用sed命令实现。以前没用过这个工具,居然这么简单:
读取奇数行:

sed -n 'p;n' ./test.file

读取偶数行:

sed -n 'n;p' ./test.file

-n:quite,就是不会将读取的文件行默认显示出来
n;p:这是两个命令,读取一行之后,对这一行进行两个操作
n就是直接读取下一行
p就是打印该行
于是效果就是,读两行打印一行
n;pp;n的区别就是先读还是先打印了,也就达到奇偶切换

发表评论

海量数据处理总结

备战百度,在海量数据处理的主题上做一个总结。
详情来自http://www.cnblogs.com/pkuoliver/archive/2010/10/02/mass-data-topic-1.html

1.Bloom Filter

将数据通过hash函数映射到位数组,比如hash(str)=3则将位数组第三位置为1
对每一条数据都用k个hash函数进行映射,也就是一条数据会将位数组的最多k位的值置1
在查找数据是否存在的时候,则对其进行k次hash,如果位数组中对应的各位都被置1了,则说明该数据已经存在(明显是有一定错误率的)
Bloom Filter可以用来实现数据字典,进行数据的判重,或者集合求交集.
同时,对其进行改进,即位数组每一位不再是0/1,而是数据出现的次数counter,那么出现数据则+1,删除数据则-1,这样可以实现删除操作。

实例:

Read more “海量数据处理总结” 发表评论

OpenVPN分析

OpenVPN
从架构上来看,OpenVPN在某种程度上和 tinc 或者和VTun 比较相近,它是一个基于用户模式(user-mode)的程序,通过 TUN/TAP 接口与 TCP/IP 栈进行通信。作为用户程序运行的 OpenVPN,带来了移动性和易维护性的优点,正如我们在 VTuntinc 中看到的那样。和 tinc 一样,OpenVPN 在VPN服务中使用两种通道:一个携带用户的IP数据报文的数据通道,一个处理“密钥交互和配置(key negotiation and configuration)这种协议事务的控制通道。
OpenVPN 把两个通道都封装在UDP数据包中。两个通道使用相同的端口,所以一个给定的数据报既可以包含数据通道数据也可以包含控制通道数据。因为OpenVPN使用TLS协议进行认证和密钥交换,而TLS需要一个可靠的传输层,所以OpenVPN在控制通道中添加了一个可靠的层。这样保证了TLS所需要的可靠性,但是在数据通道中没有高可靠性的层( but that there will not be competing reliability layers on the data channel),所以我们在SSL和SSH VPN 中看到的干扰现象不会发生。
Read more “OpenVPN分析”

发表评论

暗夜红天(译“red sky at night”)

By Matthew Juke(新闻作者,译者注)
20世纪九十年代,中国从一个封闭的壳中苏醒,开始看到越来越多的科幻作家涌现出来。在我们面前的,则是中国最突出也是最高产的两位科幻作家,韩松和潘海天。书虫准备在三月十七日的中国科幻和中国未来可能性的主题中邀请此二人(who are going to be putting forth the case for Chinese science fiction and the prospects for the future of the country at the Bookworm on March 17.)
在此之前,他们对环球时报谈到了科幻的过去,当下,以及在未来的状况。

第三代(Third foundation)

早在变革和开发之前,中国科幻便开始了启蒙(emerge)。而当下,这两个人都被看作是中国第三代科幻人。
Read more “暗夜红天(译“red sky at night”)”

2 个评论