手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2011年04月的文章

WebQQ 3.0发布上线

WEBQQ 3.0上线了,1的时候速度非常快,只有QQ
2的时候用的人不少,象个应用中心。但当时其中的gmail邮箱登录,引起了很多人的反感。。。
3终于上线了,昨天试用了一下,感觉还是不错的,看来这个3更有点趋向于WEBOS了。难道真的是QQ准备要推出OS了?
3里面的QQ我是用的相对比较舒服的,主要是。。。。它居然支持了讨论组。嗯,你没有看错,它真的支持讨论组了。以前所有的版本(除windows外)都没有一款支持讨论组的,这实在是让我用的很不爽。现在webqq3终于支持了,也就是说我以后可以不用客户端也能很方便的聊天了(聊天记录、表情就没有办法了。对于非会员来说爽啊,又没广告又没其他啥的。。。)但目前还有一个有点不爽的地方那就是,采用flash版本后,输入法的延迟、窗口打开的延迟还是有一点的。有时候会突然卡一下之类的。当然将就点的话就啥事都没了。

不多说了,再说下去就成软文了,访问:WebQQ 3.0
不过我更希望其他平台下是出一个客户端而不是WEB型的。或许对于QQ来说,出一个WEB的更方便,毕竟不用去维护多平台了。。不是吗?或许他们推出WEBQQ就是想放弃其他平台下的QQ客户端吧。

Tags: webqq

虚拟机上iptables不支持nat转发?

在虚拟机上尝试装ppptp的时候,发现一个问题,因为最后需要设置iptables,但是在执行的时候,报了这个错:
can’t initialize iptables table `nat’ ,后面还有一句我就不贴了。

找了很多资料,发现可能是在编译内核的时候,把nat去掉了。这样我就无法转发nat了。也就是说我的pptp是没有办法成功运行了。

再google了一下,发现一些问题,如果要加上这个nat,好象非得重新编译内核。否则无法装上。当然,也看到一篇文章说直接运行某句命令就OK了。【来源:http://pearlin.info/enable-nat-module-for-vps-cant-initialize-iptables-table-nat-table-does-not-exist/】
但好象我的虚拟机不是openVZ的。。。继续哭泣

XML/HTML代码
  1. I was getting the following error which configuring NAT on a VPS server.  
  2.   
  3. =========  
  4.   
  5. # iptables -t nat -nvL  
  6. iptables v1.3.5: can’t initialize iptables table `nat’: Table does not exist (do you need to insmod?)  
  7. Perhaps iptables or your kernel needs to be upgraded.  
  8.   
  9. =========  
  10.   
  11. You can fix this by using the following commands.  
  12.   
  13. vzctl set 115 –iptables “iptable_nat iptable_filter iptable_mangle ip_conntrack ipt_conntrack ipt_REDIRECT ipt_REJECT ipt_multiport ipt_helper ipt_LOG ipt_state” –save  
  14. Saved parameters for VE 115  
  15.   
  16. # vzctl restart 115  
  17. …  
  18. # vzctl enter 115  
  19. # iptables -t nat -nvL  
  20. Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)  
  21. pkts bytes target prot opt in out source destination  
  22.   
  23. Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)  
  24. pkts bytes target prot opt in out source destination  
  25.   
  26. Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)  
  27. pkts bytes target prot opt in out source destination   

不知道VPS的提供商能不能帮我装了。如果不行,那我可能就要換VPS了。。。痛苦啊。下次还是用UBUNTU吧。方便。。。。

Tags: iptables, nat

我就看看,不说话:UCweb与支付宝联手推手机浏览器安全支付平台

我从chinaz上面复制过来的。。。其实我更想知道,下一步是什么,原文:http://chinaz.com/News/tel/04201I6352011.html,

【TechWeb消息】4月20日消息,UC优视公司与支付宝宣布,通过双方合作,UC浏览器的开放架构和插件技术能让支付宝安全支付插件便捷的接入移动互联网,从而解除网站与支付宝的对接障碍,实现手机安全支付。

数据显示,不论是手机网游市场还是手机淘宝交易量,都与PC平台相差悬殊,主要原因就是移动支付手段的匮乏,用户迫切需要手机上像PC一样的方便快捷和安全的支付模式。UC与支付宝合作,将为移动支付打通做出贡献。

通过此次合作,在用户用手机访问电子商务网站并有支付需求时,UC浏览器会对当前网址进行安全支付代码的识别。那些与支付宝具有合作关系、并已内嵌了可被UC识别的安全代码的网址将会触发支付宝安全支付插件,为用户提供如PC平台一样安全、便捷的手机支付服务。

对于移动互联网产业而言,一直以来最大的困扰就是“造血能力不足”。很多企业都无法从创业初期的“输血”阶段(资金来源主要依靠天使投资+风险投 资)顺利过渡到“自我造血”的发展阶段,问题根源主要在于两大盈利途径——toC增值服务和面向用户的电子商务无法正常进行。UC与支付宝的合作或将改变 这一产业窘境,推动中国移动互联网的发展。

据悉,UC优视提供的核心产品UC浏览器能运行在Symbian、Android、iPhone、Windows Mobile、Win CE、Java、MTK、Brew、OPhone等主流手机平台的200多个著名手机品牌、逾3000款手机终端上。截至2011年3月,公司已取得用户 超过2亿、用户月使用量(PV)超过600亿。

支付宝是国内领先的独立第三方支付平台,是阿里巴巴集团的关联公司。截止到2010年12月,支付宝注册用户突破5.5亿,日交易额超过25亿元人 民币,日交易笔数达到850万笔。目前除淘宝和阿里巴巴外,支持使用支付宝交易服务的商家已经超过46万家;涵盖了虚拟游戏、数码通讯、商业服务、机票等 行业。

据CNNIC数据显示,截至2010年12月底,我国手机网民规模达3.03亿,年均保持约35%左右的高速增长。据专家预测,2011年将是移动 支付全面爆发的元年。根据易观国际预测,2011年年底中国移动支付用户规模将快速增长到2.21亿,从而超过PC上网支付用户数。(可心)

--EOF--
手机支付,拉卡拉支付,指付通,电话银行,手机银行客户端,还会有什么?(app store中可以在app里集成交易,下一步呢?国内是否也会考虑在android、WP中等集成支付宝、财付通之类的支付?)
SP的冬天?我觉得有点象。。。随便猜测啦

Tags: ucweb, chinaz, alipay

8年了。。。我的能力还停留在写留言本的技术能力上。。。。

无题,痛哭,看图
大小: 14.14 K
尺寸: 500 x 45
浏览: 1392 次
点击打开新窗口浏览全图
8年前什么水平,现在仿佛还是什么水平。。。
哎。哭泣中

8年,抗战都结束了。。。

Tags: gouki, 留言本

yhustc:Twisted+AC自动机构建高效的过滤服务器

这是yhustc帮烂桔搞定AC自动机的过程。上次在PHPX上看到也有人用PHP实现了一个,但我估计在大并发的时候,效率也不会高到哪里去。PHP纯处理字符串效率毕竟还是不咋地。。如果用perl呢?没试过。。。。还是看一下yhustc怎么实现在的吧。
yhustc的网址是:http://www.yhustc.com ,yhustc在文中还提到了twisted,我没用过这个玩意,后来google了一下,发现还是很迷糊。
原文内容如下:

橘子有个网站,访问量大约每天500万PV,为了怕被屏蔽,需要对一系列敏感词进行过滤(超过1200个词),然后才输出内容给用户。

替 换给定关键词的功能,每种编程语言都有,PHP的最强大。基于正则匹配替换的大家都有,就不提了。基于精确匹配的字符串替换,PHP的 str_replace函数可以根据给定的数组,一次函数调用对多关键词进行匹配。自然橘子用的也是这个咯(如果使用的是for i < 1200 顺序的循环,基本系统效率可以无视了)。可是现在问题出现了:系统负载非常高,而且是持续的高,晚上10点的高峰期CPU一直100%的满负荷运行。

要优化性能,就需要一步步的分析瓶颈在什么地方:

1、 由于橘子说有些关键词以后没准会解封,所以不想把原始内容就保存为带上一堆****这样子。因此原始内容都保存的好好的,那么给用户输出的,是每次过滤过 后的结果。那么这里自然有个问题,就是相同的内容,针对每个用户都被过滤了一次,这不明摆着的CPU浪费嘛。我说你可以考虑空间换时间, 加硬盘后上缓存,一定时间内都只过滤一次,其他用户都读缓存即可,这样计算开销几乎全部省下来了。但是橘子哭穷啊,SSD的硬盘两千多一块。IDE的插上 去就得给机器断点,现在百度正在考验自己的站点,这个电断不得(如果IDC够好的话,夜里换其实没啥问题,偏偏他的IDC技术不照)。那行,看来还是只能每次都过滤了,你爱折腾我也没办法。

2、分析一下PHP的str_replace,他既然支持多关键词的数组输入,说明内部肯定是一个AC自动机。 什么是AC自动机,大家请自行google并学习,我就不长篇大论了。本来多关键字替换的应用,AC自动机是最好的选择,但是为啥他的服务器负责就是居高 不下呢?这与PHP的实现机制有关,PHP的生命周期是一个WEB请求,那么每个用户请求页面时,调用一次str_replace。即使输入的数组是一摸 一样的,也必须重新构建一个AC自动机的搜索树,这个搜索树初始化的计算开销以及内存开销乘以并发数,严重降低了系统性能。(也不全是PHP生命周期引发 的,主要是因为AC自动机是封装在str_replace内部实现的,即使是串行的调用,相同输入仍然会每次都初始化自己的搜索树)

那么我们现在的问题就很明确了:实现一个全局的AC自动机,用他来处理所有的请求即可。这个任务PHP是没法执行了,加之要找AC自动机的相关模块才能自己二次开发,选定了python来干这个事情。https://hkn.eecs.berkeley.edu/~dyoo/python/ahocorasick/  这里是python的AC自动机的模块,非常的简单易用,看看就会。 

读 取关键词列表,添加关键词,构建搜索树,OK!测试一下关键词的搜索效果,windows平台下10000次的循环搜索,python的程序比直接用 PHP的str_replace执行时间缩短了200倍,当时震惊的一塌糊涂!!(不过这跟PHP在windows平台执行效率低也有关系,linux上 面明显要快非常多)

话不多说,把python的程序封装到一个Socket TCP Server里面,这样便于WEB的PHP程序通过套接口请求服务,把原文发过来,过滤后又发回去,这样就实现了一次过滤。 

高高兴兴的把程序发给橘子,结果一上服务器,反而比先前的PHP str_replace效率还差。

3、这时候才想到一个问题,我做的测试是串行执行的,只能算运行总时间。如果要上web上面应用,需要考虑并发问题。也就是需要ab测试。ab -c 500 -n 500测试了一把,果不其然,效率忒低。继续分析,我觉得是高并发情况下,python那个简单封装的TCPServer不够用。线程开销和阻塞式的服务 模式拖低了系统效率。为什么会有这种问题,请问自己“你写的http server能跟apache比不?”这里面的性能优化太高深,搞不明白,怎么办呢?我们需要站在巨人的肩膀上才行。于是想到可以用Twisted库来构建自己的TCP Server。什么是Twisted?也请自行google,并且学习一下。

 

把TCP的服务器用Twisted改写了之后,AB测试了一把,大大的有惊喜:

PHP的str_replace版本

ab -c 500 -n 500 str_version.php
Requests per second:    165.86 [#/sec] (mean)
Time per request:       3014.552 [ms] (mean)
Time per request:       6.029 [ms] (mean, across all concurrent requests)

PHP + python的旧版本的tcp server + AC自动机

ab -c 500 -n 500 old_ac_filter.php
Requests per second:    165.06 [#/sec] (mean)
Time per request:       3029.286 [ms] (mean)
Time per request:       6.059 [ms] (mean, across all concurrent requests)

PHP + python的twisted版本的tcp server + AC自动机

ab -c 500 -n 500 twisted_ac_filter.php
Requests per second:    620.93 [#/sec] (mean)
Time per request:       805.246 [ms] (mean)
Time per request:       1.610 [ms] (mean, across all concurrent requests) 

高并发的情况下,每秒处理的请求数提升了4倍,效果那不是盖的。

晚上十点,又迎来了一个访问量的高峰,情况非常稳定,橘子回报:

“之前这个点都是满负载跑-,-  -v-而且还是关闭了在线统计功能的情况下”

“现在我把在线统计打开了,cpu也就50%左右”

反正是够用了,就优化到此为止吧。

其实这个需求,还有进一步优化的余地,空间换时间+全局的AC自动机,可以把系统性能提高若干数量级。 

大 致思路是:在内容刚刚产生的时候PHP通过UDP消息把需要处理的东西发送给python程序,python实现一个两个线程的生产消费者模式的工作进 程。消费线程每次取出消息槽里面一个需要处理的请求,使用一个全局的AC自动机对内容进行处理,然后存放起来,继续处理下一个请求,当没有请求的时候就阻 塞住。生产线程是一个UDP的server,收到数据后就给消息槽添加一个请求数据,并且给消费线程发送信号激活它工作。如此往复即可。

--EOF--
小知识:
Twisted是一个事件驱动的网络框架,它由Python写成,基于MIT授 权协议。Twisted支持各种各样的底层协议,比如:TCP,UDP,SSL/TLS,多地址传输,Unix socket等,以及HTTP,NNTP,IMAP,SSH,IRC,FTP等其他高级协议。有了这些支持相当于有了一个强有力的基础,你可以用它来开发 诸如web server,Mail server,即时通讯软件 等等。

这里还有一个简单的教程(繁体字)

http://ez2learn.com/index.php/python-tutorials/twisted-tutorials

Tags: twisted, ac自动机, python, yhustc

Records:28123456