分类存档:

廉价的低功耗低性能动态独立IP家用服务器

家中有联通 10M 光纤,每月 140 大洋,每天只有晚上回家用一用太浪费了。需要在家里装一台服务器,做一些爬虫、数据异地备份之类的事情。在家里部署个小型服务器的重点是可以利用动态IP的优势,连续不停的换IP。用独立的机器相比在家用机的windows中开个虚拟机,可以更稳定。弄这个服务器不需要太好的性能,廉价、低功耗就最好。

选型

考虑价格和功耗,下面4个平台入选:

  • 树莓派及 MK802 代表的嵌入式平台:功耗极低,10W以下,但购买成本要 200-400 元,有这个价格不如搞atom了。arm 平台程序可移植性和管理方便程度未知。
  • 刷 Openwrt 的无线路由:功耗极低,5W以下。虽说不要求台高性能,但 300Mhz 的 CPU 和 64M 内存的性能实在是触到了下限。mips也有同上的平台兼容问题。
  • ATOM 平台:功耗够低,但略贵,二手主板 + CPU 分型号最低 150-300。印象中 ATOM 平台最低档的 N230、N270 的性能,似乎是不敌同频率迅驰。
  • MODT 迅驰:功耗也够低,因为年份太久远二手市场淘汰货蛮多,套板价格在 100 以下的很多。
最终 主板 + CPU + 内存 + 机箱 + 运费 = 120RMB 搞定一套迅驰平台。

详细配置:

845GV + ICH4 的 ITX 主板,板载迅驰一代 1.0GHz 一枚,80元。
内存 512MB DDR400 一条,20元。
铁皮机箱 + 35W 电源 10元。
似乎是某酒店淘汰的客房用机,机箱内无硬盘位,默认配置是网络启动。
功率插座实测满载功率 22W ,连续开机一天大约消耗电费0.25元。

环境搭建

系统:

想不用机械硬盘,可以比较抗造也比较省电。于是翻出一个 16G 的 Sandisk CZ50 装系统,以后还可以把各种没用的小容量u盘丢上来拼软RAID。唯一需要担心的就是 NAND Flash 的写寿命,没事儿又不存重要数据。
装系统遇到些麻烦,直接 UltraISO 写的u盘能启动系统,但安装过程中找不到光驱也找不到安装文件,可能是主板 BIOS 的支持限制,没加载 USB-ZIP 驱动?启动 PE 也是,启动进系统之后就找不到U盘了。于是用 UP19 量产了一个 USB-CDROM,解决问题。
12.04 的 ubuntu 也有问题,安装光盘上带的 kernel 一定要求 cpu 指令集支持 pae。而400外频的迅驰是最后一代不支持 pae 的 CPU。网上解决方案有很多,我选了个比较稳妥的曲线方案。先装10.04,安装过程中很顺利的在u盘上分区并装好 grub。然后再升级 12.04 ,新的 kernel 可以支持 non-pae 的 CPU,问题解决。
接口部分特写小主机

网络:

家里的联通光纤经测试可以双拨。现有网络是正常的无线路由+光猫的结构,光猫 LAN1 连无线路由 WAN,由路由拨号得到公网独立 IP_1,无线路由上配置了花生壳。将光猫 LAN2 和小主机同时插到无线路由 LAN 上,小主机 eth0 分配一个固定的内网IP,并且在 eth0 上配置 ppp 拨号。拨号的 ppp0 上会得到一个额外的公网独立 IP_2,写一个 crontab 每10分钟断线重拨,就可以不停的换IP地址了。
QQ截图20130509143656
远程管理时通过花生壳的域名连接到无线路由,然后再跳到小主机的 eth0。由于重拨的只有 ppp0,管理用的 eth0 的连接是稳定始终不会受 ppp0 重拨的影响中断的。
 ssh中
经测试,多拨不会增加总带宽,于是乎总带宽还是上行 512k,下行 10M。如果负载设的太多,工作的时候上行带宽经常爆掉。一定要限制一下,不然影响家里正常上网。据@whusnoopy 说,北京联通最多允许3拨,还是蛮厚道的。

后话

机箱很小,在外壳螺丝孔上拧俩长螺栓的话,正好可以挂在家里放路由等设备的壁挂架上,十分合适。以及,之前有一个用坏掉的笔记本屏幕改造的小显示器,虽然各种搬家导致屏幕已经是半碎裂状态,挂一起看看控制台还是十分合适的。
其实家里现在的台式机:880G+开核X145的功耗也够低了,带硬盘待机 45W,满负载 65W,算下来一天0.6元左右电费。这样搞就是太钻牛角尖的想想压缩成本,如果成本 double 一下可以在功耗不变的情况下搞 双核atom + DDR2 的组合了。但现在用这家的10块钱机箱电源实在是超值,估计再遇不上第二家了,于是依依不舍的另买了一个空箱子等着再收其他 ITX 主板弄来玩。实际上没必要这样在硬件成本上苛求,但是折腾至上,开心最重要嗯。

网络中心全家福
这是家里的网络中心,主体结构是在进门玄关鞋架的上方钉的一个可折叠壁挂架。多余的光纤和电话线网线藏在光猫的包装盒里,同时也充当了桌面。盒子上面摆了光猫和无线路由,盒子侧面挂了个插线板给这些设备提供电源。架子下面挂了显示器和小主机。空间利用刚刚好。
P.S. 其实这个显示器自带电阻触摸屏,并且猫用usb-avr做过一个简单的触摸屏驱动板给夫人用。

参考阅读:

这个显示器刚做出来的时候:http://photo.renren.com/photo/224248072/album-222663704#photoOwner=224248072?photoId=456613169?large=fm331.img.xiaonei.com/pic001/20080119/23/50/large_9169d177.jpg

列车正晚点预测(一)线性模型

yupiao.info积累的历史正晚点数据已经满一年了(不包括前一版yp.scat.net.cn的数据)。先打个广告:本站欢迎数据交换,本站可提供数据包括列车时刻、正晚点原始数据,衍生的正晚点率、正晚点预测参数等,详洽 i@yupiao.info

由于各种神奇的原因,铁道部总是不能给出完全的晚点数据,经常有那么几个车站会抽风无数据。而往往同一次车,在各个车站的正晚点规律又是有据可循的。因此果断预测搞起。
这里先用一个最简单的模型,由假设某一站晚点时间只与上一站相关,并且二者是线性相关的。这里我们用 Twd_n 表示列车在第n站的晚点时间,则有 Twd_n = Twd_n-1 * a + b。
为了证明这个模型的合理性,取两个经常晚点的车站,将他们晚点历史数据绘制散点图,横轴是上一站晚点时间 Twd_n-1,纵轴是本站晚点时间 Twd_n。可见点的分布基本满足线性关系。图中直线是二者一阶多项式拟合的结果,即 f(x) = a * x + b,看上去非常能反应散点的分布规律。其中一次项的参数 a 取值范围大多在就是[0.6, 1.1],反映的是两站晚点时间的相对关系;常数项 b 常见取值范围 [-30, 30],反映两站晚点时间绝对关系。图中这条直线的参数大致为 a=0.7, b=20 。
复杂一些的模型,比如图中的这条是二阶多项式拟合的曲线,虽然拟合效果比一次更好一些,但 x=0 附近太向上翘了,这是不符合实际情况的。


于是,晚点时间计算就是这样:
Twd_n = Twd_n-1 * a + b。

按图中的情况,假设Twd_n-1 = 10分钟,则 Twd_n = 10 * 0.7 + 20 = 27分钟。可见列车由第n-1站到第n站的过程中,晚点是加剧的趋势。
还有一些额外的事情要注意:
实际算法中另外还要做一些特殊处理,主要是保护正点和预防晚点被放大。比如计算出晚点在5分钟以内认为不晚点;前一站正点时,按早点5分钟(-5分钟)参与计算;计算结果为负数(早点到站)的,按0(准点)处理。
这套自己预测的数据在存储时要加标记加以区分,防止跟其他精确数据混在一起影响其他指标的计算。

虽然这个线性模型拍脑袋的成分很大,但能大致解释清楚两个参数的实际意义,简单可依赖。随机找了几个车近日的正晚点数据进行测试,可以看出它是比较准的。后面还会做模型校准的实验,到时候可以罗列一些数据观察效果。目前“推测正晚点”这个功能已经全流量上线了,每次有新的正晚点数据的抓取成功,都会激活推测计算的模块更新推测数据。
最能给正晚点预测提供强大数据支撑的,还是用户通过手机汇报列车当前实际位置。实际中列车晚点还有非常多的突发情况要考虑,比如其他列车对本次列车的影响(临时待避)、天气因素(大风沙尘)、客流因素(乘降时间过长)等等很多,随机性很大,也很难在模型中一一体现。将这些因素量化并加入模型计算,或许是将来列车晚点时间预测模型的发展方向吧。

参考文献:

好像没翻什么文献,研究工作确实做得太浅……

有关寨厂

真心觉得寨厂好靠谱啊!!!

盛名时刻表iOS App盗用yupiao.info数据,下场很欢乐

今天盛名时刻表因为盗用了yupiao.info的数据而出名了。这事儿说来话长,盛名来抓数据已经有两三个月了。yupiao的数据也是版权归12306所有的,但也不是那么容易就爬来的。首先识别验证码虽然不难,但也有那么个技术门槛;并且从提交请求到识别验证码的过程,要付出数倍于数据量的带宽和CPU资源的代价。而盛名时刻表虽然是免费软件,但它的余票查询功能在app store上以插件的形式单独收费6元,一边哭穷向政府领白给的救济粮,另一边转手去卖钱,不太好吧。
盛名iOS的作者是某公司的码农byte lee,只是个初学iOS开发的小弟,非车迷。跟他打交道有半年了,从多次的交往来看,他的人品似乎可能存在那么一点点瑕疵。

事情的始末是这样的:

  • 去年,12306还没有验证码的时候,我就收到过他的邮件。邮件中问我12306的汉字编码怎么处理,我把我整理过的c#代码发了他一份,他心满意足的走了。
  • 后来,12306有了验证码,yupiao初步搞定了验证码的时候,他又来邮件慰问说,搞的定么,帮你一起搞吧。我说这边我已经搞定了,不用他帮忙……
  • 两个月前,我发现有个境外的vps一直在请求余票查询的api。这个vps的80端口上能看到主机名:vps.bytelee.com。当时他的请求的频率也不高,每天也就几k次。我心说您先用着,合不合作无所谓,就当压力测试了。
  • 上周开始,盛名时刻表的请求越来越多,影响到了yupiao的响应速度。于是,我给余票的api加了个quota限制,于是盛名时刻表就经常查不到数据了。当他意识到自己的IP被限制后,先后启用了6个IP,包括他所在公司的服务器,以及他自己架设blog的服务器。我设的限制是每天每IP400次,显然6个IP也满足不了他饥渴的需求。
  • 三天前,于是他用另一个QQ邮箱联系我,说他有个“自己做的小程序”在用我的数据,“只有自己用”,“公司是固定IP”经常查询受限,问能不能给他放宽一些限制。我说我限制那么宽,你偶尔用用怎么会限制到呢,告诉我你的IP,我给你放宽一些吧。因为他一口咬定,就是“自己玩的小程序”,绝口不提盛名时刻表。我觉得这人毫无诚意,他开任何条件都不会跟他谈合作。我提出:大家应该坦诚相待,你是做什么的我都知道,你这满嘴跑火车的态度让人没法合作。他作出一份很无所谓的样子,说“今天上午已经决定把那个小脚本停掉了。余票功能也没什么意思。话说回来,你这种处世态度挺有意思。别太自以为是,王朔那句话:别太把自己当人了”。
  • 昨晚,虽然他嘴上那么说,我看到那6个IP依然在爬我的API。是有机会让大家欢乐一下了。于是,我取消了对他IP的访问限制,并且集中主力资源向盛名时刻表提供优质数据。于是,就有了附件中那幅图……

后续报道是:

  • 盛名时刻表是作者byte的个人行为,与他所在的某公司无关。
  • 经过这次的事件,某公司顺带发掘到一些他对公司的一些不是那么光明磊落的行为。
  • 愿他能找到下一份工作。

欢迎关注 http://yupiao.info 官方微博 http://weibo.com/yupiaoinfo
相关新闻链接:http://www.gemag.com.cn/html/2012/life_style1_0427/29017.html

这就是考试抄别人考卷顺便抄了考生姓名的下场:

总结一下找工作

快毕业了,回想半年前找工作的经历,很多话想说…………于是只好再发一遍这张图吧。感谢找工作过程中给过我帮助的朋友们,过些天会给大家发明信片~

百度,谷歌,即刻,微软,人人,搜狗,腾讯,有道,高德,小米

百度蜘蛛

ecom在熊掌大厦的5层,5层有一个空中花园。原以为每层都有花园,后来发现只有5层有,好幸运。离BE最近的厕所在BW,上厕所可以经过一个花园,好幸运。花园里面有一大片八宝景天,深秋时节依然开着粉红的小花。

某天,猫在花园里打电话,发现八宝景天从中有一只黄黑色大蜘蛛,趴在一张大网上。那蜘蛛跟家里山楂树上常见的一样,头部到腹部长度估计有2cm。那天真是巧了,旁边有只采蜜的蝴蝶,受到猫的惊吓,撞到了蜘蛛网上。那只蜘蛛跳了过去,喷出蛛丝,三下五除二把蝴蝶缠了个严严实实,大餐了一顿。


猫又发现,八宝景天的花序上经常有肉虫子。可能是吃多了花的缘故,虫也是粉红色的。于是捉了一只丢到蜘蛛网上,它竟然也屁颠屁颠的跑过来,抓住虫子,用蛛丝缠好,注射了毒液,准备当午餐。于是,每次猫上厕所归来,都在景天花丛边上绕一圈,找找有没有肉虫子可以喂蜘蛛。
由于每天都喂,蜘蛛吃腻了虫子,就不搭理这从天而降的食物了。
后来,深秋时节,花谢了抓不到虫子了。
再后来,蜘蛛不在了,应该是去过冬了吧。

经分析CSDN泄露的账号确实是2009年的

听说CSDN的数据库被搞了,第一反应是:还好当年要求8位密码,而我的常用密码是7位,所以用了一个不常用的密码。

于是搜到了一份数据库,找啊找找不到我的账号,奇怪了。网上说,这数据库是09年的,真的么?来验证一下。

写了一个程序统计数据中出现的年号,得到这个数据:


2009之后就一路下跌了。很奇怪这些人账号中为什么会有2009以后的年号……

1987V5!

 

能用来分析的数据还有很多,比如邮箱后缀,热门关键词,具体到日的生日等等。同时邮箱、账号、密码可能带有不同的生成时间,随便挖一挖就能挖出来好玩的东西。

 

校招风向标,BYR论坛Job版数据统计

等offer等的蛋疼,于是做了个统计北邮人Job版词频的小工具。

传送门:http://buyvm.scatwang.com/byrjob.html

 

结构很简单,就三个小程序:

spider.py,爬整个版的帖子,每个article做成一个json,然后丢到sqlite里。

stat.py,按stat.conf中设置的关键字统计每个关键字的热度,逐日的统计数据输出到byrjob.json用来绘图。

byrjob.html,让JQuery把byrjob.json拿下来,调用google的jsapi的Line Chart绘图。

数据文件:

byrjob.json,绘图用的数据文件

byr.db,sqlite数据库

stat.conf,关键字配置文件,每行是一个关键词,两列分别是关键词和对应的regex。

 

话说最近可能还要做一个爬论坛的活儿,这种需求或许有会类似的框架吧。

12306验证码的机器识别

python写了个小东西,基本上搞定识别了。现在整合一下,晚上就能用了。

海驾学车小记(附约车辅助工具)

周末可以去取驾照了~开心~

2010年4月在地大报名,海驾市场部过来报名的,和夫人一起2950报的富康平时个人班。然后法培很快,上车也很快,但是只学了一次就懒的去了。因为从玉泉路过去实在太远了。然后2011年3-4月,夫人甩开了我速度学完了,然后考试顺利通过。于是2011年4月份我也开始学,慢慢吞吞的在6月初也学完了,不是我不想快,是实在约不上车。正好遇上了考试改革,难度加大了不少,但是考试依然也很顺利,略去不表。

各种学车心得网上很多,我就不分享了。有关网上约车,我提供一个自己做的辅助约车小工具,详情如下:

  • 这不是自动约车软件,只是可以自动刷新约车网站。需要人肉监控并操作约车。
  • 操作方法:打开这个网页登陆约车,登录成功后点“自动刷新”,网页会自动20秒刷新一次;当看到“”的时候,果断停止刷新并抢约车。
  • 建议懒得早起,并且整天坐办公室的烟酒僧、机关工作人员等使用。
  • 建议缩小(ctrl+鼠标滚轮)到50%左右,可以省屏幕。

tips:

  • 感觉存在更强大的约车外挂,可以自动输验证码的。因为我这个小工具经常会因为手慢抢不到车,囧。不过我就是靠这个工具把车学完了,应该你也够用了~
  • 有关中文验证码,我已经做了一个自动识别工具。海驾的验证码太弱,识别度能达到95%以上。但因为本文提供的小工具已经足够使用,就没接着做全自动约车外挂。以后写一篇文章介绍机器识别中文验证码的技术流程。