人人网最近搞的挺狠,网页手机人人桌面三个每登录一次算一次分。我要玩人人,想玩的好,又怕被人人玩了。网页登录这个手动登就行了,因为我每天也要上去看看新鲜事什么的,手机人人这个现在由收菜工具来做,每次收菜就相当于登录一次,人人桌面的一直没有着落。今天研究了一下资料,做出来一个模拟器,放在VPS上每天登一次,hoho。现在每天能自动把三个登录分都拿到了。

首先下了最新的人人桌面,开wireshark,然后登录人人桌面。分析捕获的数据包,发现使用了XMPP协议,这个协议不是很熟,上网搜了下。原来很多聊天工具都是用这个协议。准备用Python实现这个功能。

首先去网上找了找相关结果,装上相应的库,看了看对应文档。又复习了下Python。参考一个例子,修改一下搞了出来。能用了。以后再慢慢完善,听说留言回帖什么的都有分拿,等有空加上自动留言什么的。

关于浏览器

[| 2010/06/12 19:51]
Chrome在我这里有一个毛病,就是连续使用几天后就开始占用很高的cpu,解决方法就是重启一下。以前是连续开机时间72小时左右(待机,不重启)最近发现十几个小时就开始了。用Sysinternals的一个任务管理器查看,上面写的也不清楚,不知问题所在。网上说清理缓存,我清理了也无效。每次关闭Chrome后还会留一个进程赖在那里大占cpu,忍无可忍准备换个浏览器。

FF我已经装了,缺点是启动太慢了。IE缺点是切换选项卡总是卡。Opera以前用过,手感很奇怪。搜狗也装了,外观感觉很恶。于是决定下个Safari。

下载很快,安装略慢,装好后直接卡住。关闭再开,开不了了。留下两个进程,任务管理器无法关闭。彻底无语,估计只能重启才能关掉了,我现在开着一大堆编程的东西,重启一下代价太大。于是决定还是继续用Chrome算了。


郁闷
今天看了几个媒体的推荐装机配置,发现有一个共性,就是内存都选2G的,现在内存价格确实不低,2G300元的价格也不是个小数目,特别对于低配机来说,但是相对于CPU提高一个档次需要几百元来讲并不算多。我认为现在装机还是4G为好,Windows7默认开机大概就要占用八百多M的内存,剩余内存只有1.2G,为了系统在打开新程序时相应不至于过慢,剩余内存数应该保证在最低300M左右,也就是说可用内存只有900M。刚才观察了下任务管理器,Chrome在打开多个选项卡浏览的时候大概要占用200M以上的内存。QQ占用大概50到100M内存,其他乱七八糟的东西也要占300-400M,也就是说现在2G内存还是比较宽裕的,但是开个跑跑卡丁车之类的估计就要动用swap。但是随着软件更新换代,占用的内存数量是翻番往上涨的,估计一到两年后2G内存就开始捉襟见肘。

下面看看CPU,这个我没有太定量的感觉,但是总体上操作系统不换代的情况下程序升级对CPU占用的影响并不大,平时我们的CPU也大多处在休息状态,只有开Flash游戏的时候(比如种菜)时才会占用比较多的CPU,但是总体来说现在的4核CPU坚持三年以上还是问题不大的。双核CPU三年后可能会比较慢,但是CPU不够强力只是会慢一点,内存不足的话基本就慢的无法忍受了。

假如内存+CPU搭配中,内存是瓶颈的话,随着时间流逝,电脑表现如下:流畅->玩卡丁车卡,玩的时候要把别的都关了->看网页开的选项卡多了卡,一次只能看2个网页->开Firefox卡,要换成很轻量级的比如opera->杀毒软件卡,开机奇慢->开个qq都很卡,上qq都是奢望,别说别的了。
电脑可用性慢慢降低,就像一个水桶,刚开始能装50KG水,慢慢40,30,20,10,0。像是慢性自杀。

假如CPU是瓶颈的话:流畅->打开卡丁车的速度从5秒提高到10秒->打开卡丁车的速度从10秒提高到15秒->打开卡丁车的速度从15秒提高到20秒->打开卡丁车的速度从20秒提高到25秒。

在前期的时候打开小软件的时间从0.5秒提高到1秒,人根本感觉不出来。慢慢从1秒变成等一下,慢慢变成一小会,慢慢变成等一会。但是始终是可以用的。

在2G内存的装机配置中,除了那些搭配奔腾双核或者比较低端CPU的配置,其他搭配都是内存先成为瓶颈。在装机时我倾向的推荐配置是在搭配时让内存稍稍高于CPU一点,即4G内存搭配4核CPU,或者4G内存搭配主流以上双核CPU,这样可以使用最少的钱获得最长的电脑可使用时间。


后记:本文只适用于普通家庭用户且想使用win7的,假如坚守xp,那么由于xp64位版还是很非主流的,2G就2G吧。
对于电脑发烧友来讲6G到8G内存搭配4核都是可以的。理由?上个我电脑的任务管理器图:
点击在新窗口中浏览此图片
现在只是开了很少几个程序时候的截图,平时内存占用大多在3G以上徘徊。可能你会感觉不可思议,其实很正常,一个开发用的Linux环境300M,QQ,浏览器,Adobe Reader,CHM Reader,还有一些乱七八糟的东西,占用内存都很大的。笔记本只有两个插槽,假如有三个的话我一定会再加2G内存的。

折腾XEN

[| 2010/06/08 00:58]
新搞的vps在yum update的时候总提示要yum-complete-transaction,也就是某次yum过程没有完成就被结束了。今天修复一下。

装上yum-utils包后,运行/usr/sbin/yum-complete-transaction。开始修复了,64Mram本来就处在完全占用状态,而swap开始时只占用了2m,之间swap的占用量一路上升,直到最高峰的200M。。。这时vps的反应已经非常慢了,过了好几分钟才完成修复工作。。不过总算是完成了,要是碰上OpenVZ的就直接malloc失败退出了。

不过有了新担忧,假如某台服务器上的某人全天候开大程序占用巨大swap的话岂不是整个服务器的磁盘响应速度都会大受影响?在OpenVZ由于无法使用swap,所以好控制。XEN平台下一旦出现这种情况就是灾难了。不知主机商们是如何防止这种情况的。
前几天搞vps,不知怎么的搞的yum update的时候总是卡住,ctrl+c都不好使,今天看了看,发现是在执行rpm系列命令时卡住了。原因是rpm包数据库坏了,只要执行:
rm -f /var/lib/rpm/__db*
rpm -vv --rebuilddb

即可。

基于XEN的和基于OPENVZ的VPS

[| 2010/06/07 01:00]
昨天不甘寂寞,搞了个基于XEN技术的VPS,对比使用下。

本来买了RapidXEN的VPS,但是该公司非常傲慢,主页上说为了防欺诈中国用户要怎么怎么样等多长时间云云。我对PAYPAL用的也不熟,钱都转了还怎么欺诈?不知道是什么意思。看了看网上好像评价也不怎么样。决定放弃这个。

还有两个选择,prgmr和tinyvps。(其实口碑最好的是linode,不过价格太高,我只是评测而已,搞那么高端的也没什么用),64M配置的版本价格分别是5$和4$(使用优惠码后)。ping了下,prgmr的速度很好,两百多毫秒,tinyvps要慢一点,但是比我现在用的ramhost的也快点。

下单买了prgmr,客服发邮件告诉我把ssh的公钥发给他们,发过去后就没有下文了,连支付的接口都找不到。。

于是注册tinyvps,支付,马上就开通了,自动化,速度非常快,配置:64M内存,128M交换,5G硬盘,50G流量。登录进去后机器正在yum update,过了一会,升级完毕。

开始细细对比两种VPS。首先,最大的区别就是XEN技术的虚拟机独自运行自己的内核,支持SWAP,可以应付突发内存需求。一款基于OpenVZ技术的VPS假如有256内存,那么生产环境中平时应用到150基本就是极限了,因为假如一旦有突发的内存请求,比如yum,或者编译新程序什么的。内存太满会直接malloc失败导致服务崩溃。而对于XEN来说,由于swap的存在,平时运行状态可以把所有分配到的RAM都用上,一旦有突发状况,有了swap的缓冲,虽然会导致速度变慢,但是还是能保证服务的持续提供的。

所以我感觉对于低端产品,比如256M-OpenVZ和128M-XEN对比的话,还是选择XEN较好,因为对于这些VPS,yum和编译软件所占用的内存相对总内存量来说还是比较大的,这样在平时操作中波动较大,OpenVZ技术的VPS很容易撞红线。对于中端来说,512M-OpenVZ和256M-XEN对比的话,我感觉可能OpenVZ就要相对好一点了,因为这时OpenVZ可利用的内存相对更多一点。对于高端来说,1G以上的那些VPS方案,基本不用选择了,我好像没见过OpenVZ大于1G内存的方案,并且即使假如有,由于OpenVZ的可超售性,这种高端VPS如果超售的话后果还是很恐怖的。

由于XEN技术独立运行自己的内核,所以很多系统开销要独立承担,进程数要比OpenVZ多很多。初始内存占用量也比较大。不过独立内核的好处就是自由度很高,可以通过ntpdate自己校对时间,可以通过iostat查看硬盘读写状况,等等。

通过查看磁盘信息,发现该VPS有两块虚拟硬盘,一块是5G,另一块是128M的swap,由于感觉128M也不太多,于是又跑到tmp目录下划了256的一块文件加到swap里。

另一个好处是XEN可以搭建二层VPN,如使用比较多的PPTP-VPN,这种VPN使用比较傻瓜化,Windows内置拨号程序,便于分享给朋友们用。

XEN有自己的grub.conf,可以自由设定启动选项。

其他特性还没有好好体验~继续评测中。

VPS进行软件升级,不爽

[| 2010/06/05 21:23]
每次yum update 总是提示我要升级一大堆软件包,以前都放任不理,今天感觉实在不好看,于是决定升级一下。

首先选择更新所有,在test阶段会告诉malloc失败,退出。Openvz的VPS就是这毛病,没有swap,突发内存需求无法处理。不爽,只好一个一个的升级。等升级到glibc软件包,也就是C的运行时库的时候,一下子要装24M,内存依然不够。于是关掉Mysql,不行;关掉Nginx,不行;关掉php-cgi,不行。。。最后留了一百多兆的内存空间,依然不行。不能装就不能装吧,先升级下别的。。结果yum还卡住了。出去吃了个饭回来,还卡在那。kill掉重新来,还是不行。无语了,让它在那卡着吧,明天再说。

给VPS添加IPV6

[| 2010/06/05 21:11]
今天在网上看到一个文章,是讲关于给VPS添加IPV6地址的,其原理就是利用一台既具有IPV4,又具有IPV6地址的服务器作为代理服务器,通过虚拟一块网卡并将其流量转发至代理服务器,来实现VPS添加IPV6地址的。


实现原理,首先开启TUN,像ramhost是默认开启的,burst.net可以在控制面板里手动开启。假如没有开启的可以联系客服,这里不再赘述。

下载源码并编译:
wget http://tb-tun.googlecode.com/files/tb-tun_r14.tar.gz
tar zxf tb-tun_r14.tar.gz
gcc tb_userspace.c -l pthread -o tb_userspace

这个源码只有一个源文件,代码很短,粗看一下大概是封装和转发的一些东西。

去tunnelbroker.net注册个号,然后Create Regular Tunnel。在IPv4 Endpoint内填入VPS的IP。

建好后,查看Tunnel,Routed /64就是被分配的IPv6地址段。可以从中随便选个IP。

添加虚拟网卡,设置IP等信息。
setsid ./tb_userspace tb [Server IPv4 address] > /dev/null

ifconfig tb up

ifconfig tb inet6 add [你选的IPv6地址]/64

ifconfig tb mtu 1480

route -A inet6 add ::/0 dev tb

一切完成后,ping6 ipv6.google.com测试一下。


原文网址:http://qiaodahai.com/personal/article/2010/openvz-virtual-machine-configuration-ipv6-with-tunnelbroker-net.htm


不过在tunnelbroker.net里是提供Linux下的设置方法的,不依赖外部程序,没有测试,但是原理相同,应该也是好用的。

蓝牙GPS模块使用手记

[| 2010/06/01 00:19]
首先感谢国家,再感谢Google。感谢各英文论坛,不感谢中文网站。

今天拿到GPS模块,跑回来试用一下。本来想连接到智器上用的,但是城际通什么的不是动辄上G就是不好使,我急着尝鲜,于是用电脑连接一下。看看能定位不。

以前没玩过GPS,不知道是怎么通信的,上百度搜下,全是广告,剩下的若干结果全都是同一个内容互相抄。无语,只能求助GOOGLE,使用英文搜索(GOOGLE用中文搜索也全是垃圾结果),搜出来一堆结果,看了下,有收获。


Linux下电脑连接蓝牙GPS是把GPS模块映射到串口上,然后有个叫GPSD的服务,从串口读入GPS模块发的信息进行封装,其他导航程序通过读取GPSD提供的数据来分析位置等信息。

首先要解决映射到串口的问题。

首先用Gnome上的蓝牙小工具对GPS模块进行配对。认证码是0000

运行hcitool scan,搜索一下附近蓝牙设备。能搜出GPS模块的MAC。记下来。

有人说要用sdptool browse “你的GPSMAC” 来显示下模块信息看看CHANNEL,我的模块什么也不显示,就使用了默认值,也好用。

修改/etc/bluetooth/rfcomm.conf文件。这就是要映射到的串口的配置文件

rfcomm0 {
bind no; #是否启动时绑定,默认值是no,那就no。
device < GPS MAC ADDRESS>; #模块的MAC
channel 1; #默认是1,由于我只连了GPS模块,所以一般模块就用的channel1
comment "Serial Port"; #随便起个名子,没用
}

然后使用rfcomm connect 0,连接。

假如告诉你已经被占用,就先rfcomm release 0一下。

假如提示*****in process 。那就重启模块,重启蓝牙服务什么的试试,我刚开始遇到这个问题,后来过了会莫名其妙就好了。

假如没问题的话,会提示你已经连上了,说按CTRL+C可以退出。不要退出。退出后映射的虚拟串口就又没了。

下面启动gpsd,没装的要装上。gpsd /dev/rfcomm0

下面就可以启动其他gps客户端来定位导航什么的了。如果只是想测试一下模块是否好用,就使用xgps,可以显示星图,和当前位置等一些信息。
xgps是存在于gpsd-clients软件包里的。



在宿舍窗台上能搜到的星:点击在新窗口中浏览此图片

模块是淘宝买的,鼎天2100。三个指示灯,红灯在电量不足时闪烁。蓝灯标识蓝牙连接状态,连接上后长亮,否则闪烁,绿灯标识定位状态,可有效定位时长亮,反之闪烁。

上几个图,手机拍的,图片不清晰,呵呵。在目录中显示的是缩略图,大图会在文章阅读页面显示。

点击在新窗口中浏览此图片
点击在新窗口中浏览此图片
点击在新窗口中浏览此图片


Blog今日更新:图片显示

[| 2010/05/30 01:25]
最近几天在搞博客的图片显示,之前去面试的时候面试官就提出过“你的博客只是一些文字的东西,不能显示图片啊”。不能显示图片确实是个硬伤,是博客功能的一大缺失,今天终于搞完了。顺利实现了图片显示功能。


首先就是考虑图片的存储位置和在表示方式。

某些博客程序把图片放到mysql里,这确实很方便,易于管理。但是效率实在不敢恭维,数据库服务器本来就是系统瓶颈,还把图片都扔进去,无疑加大了数据库服务器的负载。并且也不利于分开部署,所以我决定把图片以文件的格式存放。

然后需要考虑图片在文章中的表示方式。最后展示给用户的时候肯定是html了,但是存储到数据库的时候假如存储成html标签的话既不安全,也对兼容性有影响。所以决定使用UBBCode方法,用“[”代替“<”,在显示时再转换。转换过程很简单,正则表达式即可。

这时又出现了一个问题,就是在首页显示的时候,由于要截取文章的前端部分显示,很有可能将img标签截断,这样影响显示。想了好几天,今天终于找到了一个比较好的方法:先用preg_split把文章按“img标签对”作为分隔符分开,这样其他文字就被分成了几大段,通过判断这些段落的起始位置和结束位置可以很简单的判断是否有“img标签对”跨越分界线。若有,则把分界线左移即可。

实践中还发现另外两个问题,一是正则匹配贪婪性问题,若不配置成非贪婪,那么在有多张图片的时候,会匹配第一个img开始标签和最后一个img结束标签。会导致问题,所以要加上问号设置为非贪婪匹配。问题二是img标签对不成对的问题,有可能文章中为了说明[img]而写了一个,这样的话匹配时会从该[img]开始匹配,直到遇到一个【/img】为止,显然会破坏文章,所以匹配img标签对时正则表达式应写成“以[img]开始,中间是非[img]的任意值,以【/img】结束”,这样可以保证匹配的图片url是正确的。



作为一个网站,首页速度非常重要,假如打开首页的时候加载了一大堆巨大的图片,会严重浪费带宽,也会因为页面打开过慢而造成不好的用户体验,所以我决定在首页显示缩略图,在正文中显示原图。这样就遇到了一个问题,就是在用户上传图片的时候可以自动生成缩略图。由于图片处理是比较耗费资源的,所以我决定使用C语言来做这件事。

OpenCV是一个很好用的图形库,很容易就做了个生成缩略图的小程序出来。在用户上传图片后自动调用该程序生成一个缩略图。不过每次生成缩略图都会调用该程序。进程创建和切换的开销太大,稍后会改装成服务来运行。


由于首页上显示缩略图,所以url和正文的不同,需要做相应修改,这里使用了preg_replace_callback,自己写了回调函数,将url进行相应的转化。


至此,图片功能就实现了。下一步要做的就是优化功能,在显示大图时像其他网站一样,先下载缩略图显示一个模糊的图像,再一点一点下载大图替换成清晰图像等功能。


贴个图,呵呵:
点击在新窗口中浏览此图片
分页: 24/31 第一页 上页 19 20 21 22 23 24 25 26 27 28 下页 最后页 [ 显示模式: 摘要 | 列表 ]