Shell's Home

Sep 25, 2014 - 1 minute read - Comments

bash严重漏洞

今天估计各大消息都在报这个漏洞,可能有些人看到有修复就放松了。目前来看,事情没那么简单。 CVE-2014-6271 第一个漏洞,编号为CVE-2014-6271。相应的dsa和usn。 具体的文章可以看这里。 简单来说,当bash执行时看到有变量定义了一个函数,函数尾部又剩余了部分代码。会直接把剩余代码执行了。导致简单的变量定义动作有机会执行任意代码。 对于未修补的系统,执行以下代码出现以下提示: $ env x='() { :;}; echo vulnerable' bash -c "echo this is a test" vulnerable this is a test 注意echo vulnerable应当不被执行的。 修复的系统则是以下表现: $ env x='() { :;}; echo vulnerable' bash -c "echo this is a test" bash: warning: x: ignoring function definition attempt bash: error importing function definition for `x' this is a test CVE-2014-7169 第二个漏洞,编号为CVE-2014-7169。 这个漏洞是第一个漏洞没有修复完全导致的,最麻烦的是,这个漏洞没有修复,细节却满天飞了。 表现如下: $ env X='() { (a)=>\' sh -c "echo date"; cat echo sh: X: line 1: syntax error near unexpected token `=' sh: X: line 1: `' sh: error importing function definition for `X' Wed Sep 24 23:25:58 PDT 2014 结论和建议 尽量不要暴露bash,能关就关,不行的自求多福吧。

Sep 4, 2014 - 1 minute read - Comments

送书

最近清理家中藏书,打算送掉一部分纸质书。于是顺手列了一批自己需要,但是可以外借的书。 送人的部分,如果你需要,两个月内联系我,自己想办法拿走(例如H4,或者直接上门)。逾期我就直接送去资源回收了。借阅的部分,记得好好保管图书,不管借阅多久,记得回头还我。 送人 delphi 5.0 开发多媒体应用 ISBN 7-5084-0470-X C++语言程序设计 ISBN 7-302-03926-7 计算机绘图 ISBN 7-313-01482-1/TP.273 borland C++ windows程序设计 ISBN 7-115-05265-4/TP.117 最新C++语言精华 ISBN 7-5053-3975-3/TP.1731 C++语言程序设计 ISBN 7-302-04504-6 C++使用手册 ISBN 7-5053-2890-5/TP.959 microsoft visual C++ .net技术内幕 ISBN 7-302-08931-0 操作系统教程 ISBN 7-04-012664-8 借阅 模式识别 ISBN 7-121-02647-3 深入解析Windows操作系统 ISBN 978-7-121-03969-0 计算机网络 ISBN 7-302-08977-9 深入浅出MFC ISBN 7-900614-93-1 Python源码解析 ISBN 978-7-121-06874-4 数据结构与算法(Java语言版) ISBN 7-111-11902-9 网络渗透技术 ISBN 7-121-01035-6 密码编码学与网络安全 ISBN 7-5053-9395-2 人工智能及其应用 ISBN 7-302-02127-9 神经网络原理 ISBN 7-111-12759-5

Aug 19, 2014 - 1 minute read - Comments

如何分辨网站真假

老婆想去新疆玩,结果她居然从百度上搜了一下新疆国旅就联系开了。我一直不知道,直到她和我说,对方要求缴500元到一个支付宝帐号里。我立刻要求她不要付钱,然后开始查证真假。 第一家网站 她开始给我的是这家:http://www.17xjly.net/。 老规矩,先whois,再dig,再whois。 whois域名的结果是没有任何信息?! dig后的IP是113.10.247.20。再whois一遍,发现服务器在香港。此外也没有任何信息。 ICP是新疆的,查全国ICP登记无信息。 开始想不通,这家伙在新疆背景这么深厚?突然醒悟过来。这家伙是个.net域名,注册地不在中国,服务器不在中国,凭什么要人家ICP备案啊。就因为号称是新疆的网站? CAO,这种网站给的支付宝,鬼知道打进去会发生什么。。。 第二家网站 百度上排名很高的是这家http://www.yuyutrip.net/和这家http://www.yoyotrip.net/。两家的页面很像,但是又明显有区别,不知道是竞争对手还是什么。 老规矩。 whois域名的结果是这个: Registrant State/Province:Shanghai Registrant Name:shxg shxg 注册地上海? dig了更好玩。这两个域名的IP指向是同一个。121.52.217.137。再whois发现是这个: netname: TopnewNET descr: Beijing Topnew Info&Tech co., LTD. 没听说过。 ICP倒是有: 北京博通天下网络技术有限公司 U旅商旅网 2013-06-09 咳咳,漏底了吧。虽然号称国旅,但是是一家北京公司在上海注册的域名。 好玩的是,这家网站上面给出的地址,是真的(具体后面会说)。但是电话却不对。 真的国旅 google出手,马上就有。结果是这个http://www.cits.com.cn。 老规矩。 whois域名可以看到这个: Registrant: 中国国际旅行社总社有限公司 注册者看着就很NB。 dig一下,发现IP是这个,219.143.192.35。这个IP可牛逼了。whois一下: inetnum: 219.143.192.0 - 219.143.192.255 netname: CITS 我擦,专属C类IP段! ICP查询后结果是这样的: 中国国际旅行社总社有限公司 国旅在线 www.cits.com.cn 2014-07-23 www.cits.net 2012-11-29 这个网站上有400电话,打过去说新疆只有团体游。不过人家给了正确的地址和电话,和第二家网站的地址一致,电话却不一样。 事情到这里,我的基本判断是。和第二家网站做生意还是有点谱的,ICP是真的,地址国旅也认。最低限度,他至少是一家合法的旅行社——虽然不保证是国旅下属。第一家么,谁爱信谁信。 上海国旅 后面有点更好玩的事情。国旅在线上有上海,而google查询结果上也有不少上海国旅。那么谁是真的呢? 上海国旅1 例如这家http://www.scits.com/。

Aug 14, 2014 - 2 minute read - Comments

服务器操作系统的选择

今天被LTN问了一下怎么看一个知乎问题: 服务器操作系统应该选择 Debian/Ubuntu 还是CentOS? 其实我觉得他的大部分说法都没有错。如果你需要装一个服务器,确实首选是RH系的。 但是。。。 选用RH系的主要理由 其实你把回复从头看到尾,主要论点就一点: 哪个发行版,可以在长达7-10年的时间里,始终保持硬件稳定性的同时,又持续的升级补丁? 结论当然是RH!这是RH的主要卖点。 我们真的需要长达7年的硬件稳定性支持? 咳咳,今年上半年,蔽厂的运维碰到了这么一件尴尬事。 他们进货,去机房装系统,配置网络结构,加入运维管理系统,添加监控,交付。除去采购外,整个一套流程大概是一周。 我们在机房里面原本大约有10个机柜,那么一般扩充的时候,一次扩充一个机柜。 结果今年上半年的某一段时间,一周一个机柜的事情持续了两个月。运维同学辛辛苦苦装好一个机柜,周末打算轻松一下。被老大通知,又来客户了,机柜又不够用了,下周继续。 是的,我们现在20个机柜不止。机房有多少机柜我不知道,不过照这个趋势来看,我们快把机房包下来了。现在我们的带宽已经没有限制了,每个月月底按照合同秋后算账。 我们有一些有三年历史的服务器,台数不多。现在来看,性能已经远远不够。CPU不够快,也没有SSD,硬盘读写次数也太多。这些机器的下场,多数会被换下来折旧卖掉,或者作为测试服务器,搬去测试机房。而现在机房里面大半机器,都是两年以下历史的。而且至少一半服务器历史不超过半年(。。。)。从现状上看,把老服务器留在机房,其性价比并不合算。因为机房有机架密度问题,限制着我们的单机房极限,这相当于变相的租金。 如果考虑到这点,我们的线上服务器生命周期大概也就三年。最多。很多时候甚至还不到。 比我们更极端的是页游。他们的一组服务器生命周期一般是半年。半年内,要赚钱的也赚完了,不赚钱的也死完了。所以他们甚至不会新采购硬件服务器,而是直接使用虚拟机。 当然,虚拟机内的系统,支持时间是一年还是十年,对他们一点意义都没有。 为什么我们不喜欢三年以上的系统? RH系的提供10年级别的维护性,我换个说法,也就是最近的软件在RH的官方库里面找不到。当然,装最新的RH是有的,但是在安装了三年的一个系统上?肯定没戏。 怎么办?编译呗。 这大概就是国内谈到RH必编译的由来。 可是,我引用文内的一段话。 如果我今天告诉大家,我要做一个 http 的服务器,我不用 apache 不用 nginx, 为了性能我要用 xxx 为基础重写一套出来。我相信绝大多数人会问同样的问题, “你觉得你写的能比 ng 好么?” 再回头看看那时候你们自己吧。 同样,自己编译的软件,补丁维护速度,能和新系统比么?而且我们还得扔一个人下去搞补丁维护。 所以,正解是什么? 装一套新的,把数据导过去用呗。 我们的”数据“,都是装载在磁盘上的。而换”系统“并不需要更新这些数据,只要把系统盘擦掉重部署一遍,然后配置好deploy系统就OK。在开发之初,”环境“,”程序“和”数据“分离,就是一项基本原则。而且即使是”数据“,丢掉一台机器上的所有”数据“也不会构成问题。这应当是运维基础中的基础。只有少数几台服务器,既不能直接更换也不能停机。这些机器我们做特别的管理。 为什么蔽厂使用Ubuntu? 很简单。因为最初的开发希望在Linux上进行。直接在Linux上开发和测试,对于startup的快速开发是非常重要的。而开发用什么版本,服务器跟什么版本,这是最省事和好办的。如果你硬要和我争,说开发在Mac上,跑在Linux上一点事都没有。或者说开发一个发行,服务器一个发行也OK。 我至少得说这对于golang和python都不是事实。除非不用cgo,也不用python的C扩展。 先不提Mac下和Linux下的差异。我们今年在升14.04的时候就发现,12.04和14.04的编译互不通行。所以现在12.04的编译可以程序员自己编译了本地测,14.04的就必须在测试环境里干。一帮程序员远程tcpdump出结果,拷回本地wireshark一把。。。 看看就蛋疼。 当然,这也有个问题。就是上面”我们不喜欢三年以上的系统“。所以呢。明年我们的系统大概会轮换重装,14.04。。。 也很蛋疼。 Debian系的补丁不靠谱么? 那要看和谁比。这里有HeartBleed事件的统计。虽然不普遍,但是我觉得这种大漏洞比较有代表性。 CVE-2014-0160 - OpenSSL安全漏洞的非技術事件 我引用他的重点整理: RedHat 修復的速度比 OpenSSL 官方還快。 RedHat 派系的修復時間,除了 RedHat 外都算慢,如 Fedora 及 CentOS、Scentific, 他們都比 RedHat 慢 16 小時以上。 Debian 派系的修復時間,如 Debian 及 Ubuntu,都比 RedHat 慢上至少 12 小時以上。 Scentific 是列表中修復最慢的。 若以資安黃金 6 小時來說,Fedora、CentOS、OpenSUSE、Gentoo 及 Scentific 都不及格。 如果和RH比,Debian的修复速度是不及格,但是和CentOS比。。。怎么说呢?6个小时对10个小时,有种五十步笑百步的味道?

Aug 13, 2014 - 1 minute read - Comments

架构师

一个好的架构师至少要做到四点: 识别甚至提前预测到程序不同阶段的性能瓶颈,并以合理的代价消除。 识别束缚程序员生产力发展的瓶颈,并合理的消除。 解决组里面的尖端问题。 成为组员的精神支柱和旗帜。 他不应该: 总结需求。这是产品经理的事,除非他兼任。 评估工作时间,并保证工作进度。这是项目经理的事,除非他兼任。 召集,协调工作细节。这个随企业有不同划分,理论上是行政领导干的。有的企业是技术系的来做行政领导,有的是PM。 亲自写程序。除了初创,架构师亲自冲上去写大段大段的程序是找死的先兆。 预测技术的发展方向,并做出技术决策。您让CTO干什么去? 政治斗争。架构师也来搞这个,要么被搞死,要么根本没心思做事。 但是架构师应该理解办公室政治,并且能够基本掌握情况。一点办公室政治都不懂的架构师肯定被搞死。

Jul 30, 2014 - 1 minute read - Comments

14年7月,无甚大事

这个月比较忙,啥都没说。堆月底做个总结吧。 空难 一个月三起,马航又来一次。我都不知道该说什么了。也许今年就应该避开马航,马英九。 马航空难就是一场悲剧,不仅对所有在空难中身亡的人而言。看到现在基本也看出来了,乌克兰政府,反抗武装,俄罗斯三个当事主体互相扯皮。调查人员进场缓慢(不知道是不是受到阻拦),现场破坏严重。将来就算调查出了结果,也完全可以抗辩说调查结果没有任何公信力。看来这个案子只能等待某国档案解密之时才能确认了——虽然我们都应当在心里确认了真相。 话说回来,确认了又能如何呢?美国不想陷的太深,欧洲有心无力,马来西亚?丫管个P事。也许今年马来西亚请巫师过来是对的,只是不应当找人,而是应当给他们自己的政府和航空去去祟。 另外两起空难暂时没啥想说的,等调查报告吧。 向所有在空难中死亡的人表达哀悼,祝他们在天国(具体地点视个人信仰)中安好。 显示器 又败家了。买了台显示器,型号VG2233-LED。优派的,22寸。最大特点是800元价位上内置了屏幕旋转,可以把屏幕转成垂直的(是的,就是一大长条)。程序员都理解这样做的价值。就算不是程序员,用来看看网页什么的,尤其是超长网页,也非常爽。 下面说说问题和需要注意的点。首先,这块屏幕是TN的(废话,这个价位难道还想用IPS么),这就造成垂直视角非常有限。而转起来后,很不幸的,就变成了左右视角。于是当你偏一点头去看的时候,会发现色彩亮度都不对了。 不过幸好,对程序员而言,这个问题并不致命。程序员既不会用这块屏去欣赏某些视频,也不会在写程序的时候左摇右晃,甚至跳一曲小苹果。 另一个细节是,你先看自己的显卡和window manager是否具备旋转屏幕的功能。虽然大多数显卡都有,但是少数(尤其是集成显卡)在旋转屏幕后性能很差。我在旋转屏幕都打开屏保,能明显看到卡顿。幸好,写程序也是没影响的。至于window manager,其实包括整个系统。我在用lxde的时候发现一个细节问题——lxpanel会把panel横跨整个虚屏幕。在旋转屏幕的情况下,另一块屏幕无法显示panel。而如果把另一块屏幕对准下沿,应用程序的title就会显示不出来。于是我只能强制panel的长度来避免这个问题。 汕头 今年去汕头玩了,具体就不写游记了,因为写不出来。如果我把游记详细的写出来的话,你们一定会以为是美食流水帐,并且质疑我报复社会。 所以我就数一下我吃的美食吧。 牛肉丸:当地特产。据说要人工用大锤子把牛肉打成酱来做。机器打出来的会发硬,不好吃。所以这算是在地(因为要离养殖地近)食品加工业,而且是劳动力密集行业。我问了问能不能带点回来送人,他们说只能抽真空。要买抽真空产品还不如直接在淘宝上买呢,还不算我们回程的携带重量。 鱼丸 鼠壳粿,厚粿:很当地特色,鼠壳粿甜的,厚粿似乎是放了某种海鲜。 广场豆花:他们的豆花是一整块一整块的,放很多红糖。很好吃。当地朋友说,每天就卖两桶,卖光就没了。我们吃的接近第二桶底。 水果冰:3-5元,现榨。比起上海来简直是白送一样的价钱。 牛肉火锅:当地牛肉很多,而且很好,所以很多人喜欢吃牛肉火锅。把牛肉放在网勺里面,在锅里面涮到半熟就捞起来吃。基本和北京涮羊肉一个思路,就是猛火滚汤快下快上。味道非常赞。当地对牛肉不同部位非常讲究,讲究到我根本认不出这些部位在哪里。反正去的话一定要吃啦。 炒冰:很有创意的想法。把现榨水果汁,放在一个制冷盘子上。随着下面大机器的高速制冷,整个水果汁就会变成一块块薄的冰片。拿一个小铲子铲啊铲的,确实很像炒菜。这样可以自己随意调和水果汁,做出不同口味的炒冰来。 总体来说,潮汕还是非常好玩的。对一个吃货而言,如果去不了台湾,就去潮汕。

Jul 2, 2014 - 1 minute read - Comments

又是性能问题?扯淡

http://www.donews.com/net/201406/2812175.shtm 为啥TMD说扯淡?扔掉支付宝,用户直接跑上来就能支撑的住了?多少用户就有多少量,不会随着用不用第三方平台减少的——除非这帮人不用电子支付改成线下付费。 如果说定时查询造成的问题。合作都合作了,查询量大不会改成回调么?查询是几次,回调是几次?这点技术上是个事么?早干嘛去了? 明显付费通就不想带支付宝玩了,以为这么搞能抢到用户。结果支付宝淡淡的来一句,没事,哥已经直接接到大部分商户上去了,用不着付费通。只有几家搞不定,哥不要了。祝你一路顺风,早死早投胎。 对了,补充一点。如果是正常公司,我觉得第一反应是限制调用速度。你丫调用过快要死死自己去。就算你拿着证据说我限制,我也可以说我们对每个商家的调用速度是有限制的没有错,你有什么问题么?——这是正常流氓。 所谓连脸皮都不要的流氓,就是不管你限不限制调用速度,我都不让你用了。非但不让你用,而且还声明,这是你的责任。 不要把TM政治问题扔到码农身上。谢绝扯淡,谢谢。

Jul 1, 2014 - 1 minute read - Comments

狗肉节

吃没吃过狗肉 吃过,还不止一次,不过自己没点过。没特别觉得好吃,也没觉得难吃——我始终觉得我的味觉不算很灵敏。有次吃河豚也是完全没吃出来,一直以为是别的。别人告诉我了,我还奇怪这东西为什么被称作天下至鲜。 如果是我点菜我会选择鸡,味道好又没有什么奇奇怪怪的麻烦。不过已经点了狗肉拿上来了,我也不会有特别的避讳。大部分的食物,只要没有违法,对健康无害,我都没什么忌讳。反倒是猪脑什么的不大敢吃——神经节太密集了往往会想到朊病毒,心理有障碍。 我觉得都已经做成食物了,就别矫情了。浪费了才是不好的事。 不吃狗肉的理由 说不吃狗肉的,往往是几个理由。 萌。 屠宰方法太残忍。 狂犬病问题。 当然,不吃猫肉的理由也大同小异。 我们首先说狂犬病。狂犬病毒加热后会迅速死亡。别说煮熟,就是加热到90度,基本也会全部失活。吃狗肉会感染狂犬病毒唯一地点,就是在狗贩子身上。可身为一个狗贩子连狂犬疫苗都不打,这纯属no zuo no die。以危害狗贩子的安全制止吃狗肉不合理。后面会说有一种和狂犬病有关的理由,阻止随意购买狗肉是合理的——当然不是吃狗肉本身。 其次是屠宰方法太残忍。那后面问一句,如果我们用一些比较文明的屠宰方式。例如单独带到隔间,一板砖拍晕,然后再下手,行不行?爱狗人士又往往会摇头,不行不行,太不文明了。我了个去,菜市场当街杀鸡杀了多少年,也没见谁有意见,轮到狗身上就太残忍? 其实说穿到底一句话,萌才是一切的根源。 狗是否特殊 我认为即使是人都不特殊。人是万物之灵这种话,基本就是骗骗自己满足人类自己的自大心理的。 之所以我拒绝认为人是一种食物,主要是出于伦理考虑——如果人可以作为食物,那么人和人相残的世界未免太残酷了。 所以你问我,狗作为一种经常和人类相伴的生物。让孩子知道狗也会被端上餐桌是否太残酷了?我觉得你说的有道理。 但是。 你可以请求别人不吃狗,但是你不能强迫别人不吃狗 关于不吃某种东西,我觉得这应当成为一个最简单的共识。我不吃/别让我吃/别让我看到你吃,这没问题。你告诉我,我也会配合你尽力避免。你要吃,我不强迫,这是底线。在此基础上,你可以劝说。对食品的偏好是每个人的事情,只要不吃人都好商量。更没必要为了这种事情,弄出种种奇怪(甚至违法)的手段来。甚至有时候,吃不吃没什么,手法惹人厌。 当然,最后我得说。这种奇奇怪怪的爱狗人士是少数。谢天谢地。多数的人只是在网络上声讨“狗狗那么可爱你还要吃它,有没有天理良心啊”。现实中他们既不吃素,也不一定会跑去做什么实际性的事情。只是简单的在网络上抒发自己的观点而已。如果我要表达一下自己的观点,告诉她我觉得牛和羊很萌能不能请你不要吃牛羊肉了—— ——你神经病吧。 虐狗逼迫爱狗者买下的事,你怎么看? 很明显,那不是吃狗肉的人干的事,这是狗贩子干的,而且很下三烂。也只有买卖狗肉不当回事的人,才能想出这种抬价的办法。 那反对吃狗肉的也许说了,没吃狗肉的人,也就没有这种事了。问题是这个逻辑,没有爱狗的人好像也成立。 至于有人说这是爱狗者找托来做秀,我只能说,没看到只能当没有。 我始终反对拿着钱来做出一些开外挂一样的解决方法——千年之前就有子贡赎人的故事了。国宝回归如此,吃狗肉也如此。他们知道有你们这群冤大头,东西就会越卖越贵了。你要是觉得,贵就可以阻止人吃狗肉了。呵呵,别忘了贵了偷狗的生意也会好。 吃狗肉和虐狗是两码事 不只是狗,包括牛羊,猪鸡。我都觉得,吃是一回事,虐待是另一回。我吃猪肉,但是如果说养猪的每天都对着猪一通抽——我觉得这个叫虐待。很奇怪对吧。宰都宰了,吃都吃了,还觉得抽一顿是虐待。 关于虐待,有一个很重要的区别是——不杀不食,不造成不必要的痛苦。我们感谢所有为了我们口腹之欲牺牲的生物,但是还是会毫不犹豫的吃掉他们。我觉得仅此而已的话,不算虐待。 农业虐心的地方在于,你对你的产品有感情,而生产他的目地就是牺牲。你养了一头可爱的小羊,每天照顾,很有感情。过了两年,一刀杀了吃肉。虐不虐心? 但这是必要的。农业中很多行为,都是很残忍但是必须的。包括阉割,密集养殖,屠宰。在整个过程中,我们提倡尽量简单无痛。但除此之外,我真的没法赞同把屠宰作为一种虐待的看法。更无法赞同的是,认为屠宰是一种虐待的同时,还在吃肉。 如果你认为,屠宰本身就是一种无法容忍的暴行,而非仅仅对狗成立。那么最起码的,请素食。 是否赞同动物保护立法 我很同意针对动物保护立法,尤其关于吃狗肉这块。主要目标到不是狗很萌——而是是否能有效控制狂犬病。 流动的狗贩,往往会偷狗,随意捕捉,野蛮宰杀。中间还有狗丢了之类的事情,往往会引起疫情转移,对于狂犬病控制不利。即使是街头上的野狗,如果做过防疫措施,能够增加免疫基数,也不应当被捕杀。为了控制这点,就不能随意在狗贩子那里购买食用狗肉。而理所当然,在街头购买饲养用犬也应当受到控制——原因相同。但是动物管理单位的捕捉甚至捕杀,应当受到保护,而不是阻挠。而城市中饲养大型犬,那是另外一个话题,此处不展开。 相比个人喜好,狂犬病控制是更加关系到民众生命和每个人的税收使用的事情。为这样的事情立法配合,我觉得是值得的。但是我想这样的说法,对爱狗者来说未必能完全赞同吧——不能随意买狗,要上牌照,动物管理单位还是能够捕杀,而且还可能有人合法的养肉用狗。如果你对这些事情感到不快,不妨反思一下。困扰你的,究竟是“只是我个人想轻松的爱狗而已”,还是“为了能让狗狗和大多数人相处的更自在”。 当然,就我个人的了解。这样的理论在农村地区是很难得到实现的。因为农村地区人多,狗也多。要捕捉-免疫-放回,没钱。控制狗贩子,没动力。所以往往是考虑的很好的动物保护立法,到了农村以后立刻变了味。往往就容易变成抓到狗贩子-罚款的生财之道。至于提供捕捉-免疫的事情,就当没听过。 让爱狗人士去农村免疫-放生?后面又会被捕捉。实话说我一直很困扰,爱狗者拦下来的贩卖狗肉的卡车,上面的狗都怎么处理了?都被领养消化掉了?还是放生了?放生后有没有再被抓? 归根到底,狗狗的问题不仅仅是狗自己而已。 不负责的养狗人比狗贩子更可恶 不服来辩。

Jun 30, 2014 - 1 minute read - Comments

docker的原理和类比

从虚拟化的种类和层级说起 cpu虚拟化:可以模拟不同CPU,例如bochs 完全虚拟化:只能模拟同样CPU,但是可以执行不同系统,例如vmware 半虚拟化:guest必须打补丁,例如Xen 硬件虚拟化:可以当作获得硬件加速的完全虚拟化 系统虚拟化:host和guest共享一样的内核,例如Openvz 语言沙盒:只能在语言的范围内使用 虚拟化的级别越偏底层,速度越慢,用户越难察觉到虚拟化的存在。 虚拟化的级别越偏上层,速度越快,用户越容易感知。 cpu虚拟化和完全虚拟化时,用户几乎可以不察觉到虚拟化的存在 半虚拟化时,guest内核必须存在补丁 系统虚拟化时,用户不能控制自己的内核 语言沙盒时,用户没有使用api的自由 docker的实现结构 docker lxc namespace: 仅沙盒隔离,不限制资源。 cgroup: 仅限制资源,不沙盒隔离。 aufs image管理 当然,还有很多细节的东西,里面就不一一列举了。例如veth。 docker不是虚拟机 docker不是虚拟机,因为lxc已经是虚拟机。如果两者功能一样,那么docker就没有存在的必要。 你可以把docker当虚拟机用,但是当虚拟机用的话,他的完备程度远远不及现在的种种虚拟机。相比之下,就会觉得很不好用。这不是docker的错,只能说被不正确的使用了。 docker是什么 docker就是环境。 docker实际上只做了一件事情——镜像管理。负责将可执行的镜像导入导出,在不同设备上迁移。 原本我们发布软件有两种方法,源码发布和二进制发布。二进制发布又有两种方案,静态链接和动态链接。最早的时候,我们发布软件都喜欢动态链接,因为小。但是随着网络和存储的升级,软件越来越喜欢静态链接,或者把动态库打包到发布里。因为系统情况越来越复杂,依赖关系一旦出错,系统就无法启动。 将这个思路推到极限,就是虚拟机发布。早些年有人发过一些Oracle的linux安装镜像,算的上是先驱。因为Oracle早些年的安装程序很难用,对系统的依赖复杂。公司做测试用装一套Oracle还不够麻烦的。相比起来,下载一个虚拟机直接跑起来就可以用就方便了很多。即使性能差一些,测试而已也不是特别在意。 docker再进了一步。不但提供一个镜像,可以在系统间方便的迁移。而且连镜像的升级都能做掉。更爽的是,升级只用传输差量数据。当然,有好处就有牺牲。 docker的镜像是只读的 其实不是,docker的镜像当然可以写入。但是写的时候有几个问题。 如果对镜像进行写入,aufs会将原始文件复制一次,再进行写入。这样性能比较低。 更直接的问题是,一旦对镜像做了写入,就无法从docker这里获得更新支持——docker不能将你的写入和上游的更新合并。因此,整个系统就退化成了一个完全的虚拟机。 所以,我个人认为,docker的镜像本身应当是只读的——如同EC2里面一样。数据的写入应当通过远程文件系统或者数据库服务来解决。 vagrant 提到镜像管理,我们可以提一下同样属于镜像管理的一个软件——vagrant。 可以将vbox的镜像打包导入导出 提供了一个cloud,允许镜像的分享/更新 为什么vagrant不如docker出名 快,系统级虚拟化使得docker的虚拟化开销降低到百分级别以下。 可以在虚拟机内使用的虚拟机,例如云主机内。 资源调度灵活,不需要将资源预先划定给不同的实例,在不同资源的机器上也不用调整参数。 成功案例 编译系统/打包系统/集成测试环境 典型的搭建一次,执行一次,销毁一次。不需要对image做更改(准确说的需要做更改,但是不需要保存)。 公司内部应用 在IaaS的比拼中,以Openvz为代表的系统化虚拟化方案几乎完败于完全虚拟化/半虚拟化系列技术。就我和朋友的讨论,这里面最主要的因素在于。完全虚拟化技术可以比较好的隔离实例和实例间的资源使用,而系统虚拟化技术更偏向于将资源充分利用。这使得系统虚拟化更容易超售。 然而,在公司内部应用中,这一缺陷就变成了优势。企业的诸多系统,只要在同一个优先级,其可用性应当是一致的。几个联动系统中,一个资源不足陷于濒死的情况下,保持其他几个系统资源充足并无意义。而且总资源是否足够应当是得到充分保证的事情,企业自己“超售”自己的资源,使得业务系统陷入运行缓慢的境地一点意义都没有。 因此,系统虚拟化可以为企业级云计算提供可以灵活调度的资源,和非常低的额外开销。 当然,云计算在企业化中原本就面临一些问题。原本提供软-硬件统一解决方案的集成商,需要如何重新组织解决方案。如何协调节约资源和高性能,高可用。云计算在企业级应用中还有很长的路要走。 短板 太新。目前成功案例还是不足,而且围绕docker的工具链还不完备。 适用范围比较窄。需求需要集中在“环境迁移”领域,而且image本身不应被写入。 生不逢时。rvm和virtualenv已经在前面了。

Jun 26, 2014 - 1 minute read - Comments

核聚变?

最近看到一篇文章極限DIY之核融合反應爐。昨天和朋友吐了不少槽,我总结一下。 真实性 首先,我不会质疑这篇文章的真实性。因为如果要评价一个实验的话,最基础的,这个实验的基础原理必须公开以供复现。他的基础原理是什么?聚变反应方程是什么?是否能够复现?文章本身,一点细节都没说,发布者也不是什么国际知名单位。这种情况下,质疑这篇文章的真实性是徒劳的——因为你都不知道从哪里入手。 先说明一点。我对核物理完全一窍不通。如果以下有错误,请指出。 按照原料为重水,没有提到氚,我推测聚变是D-D反应。D-D是经典的聚变方程,但是其反应式有两个,产物分别是32He + 10n和31H + 11p,分别放出质子和中子。但是两者的反应条件,质量损失均有不同。 由于不知道聚变原理(作者说是电场陷阱,但是不知道如何产生的,强度多大),所以这个系统的基本特性无法评价——就算不要求输出大于输入,最起码输出/输入比,反应速率是必须的。而且正常来说,做了实验,最起码测试一下质子和中子强度。对比装置对质子和中子的吸收水平,推断原本的辐射强度,倒过来计算两个反应的反应速率。这应当是一个完整实验必须做的。 有了放射强度的测定(完善的还得计算测定精度),计算出来的反应速率,就可以推算出理论输出值。配合上输入值(这个计算需要了解作者的电场陷阱原理),大概就能推算出理论输入/输出比。然后对比实际的输入/输出比,能够对装置运作的基本情况给出一个评价。 是否因为知识产权保护所以封闭细节 他又没做到输出大于输入,有什么知识产权保护的必要呢?写成paper发才是正常的做法吧。 为什么这么罗嗦 因为科学的基础必须是严谨,可复现。 很多人以为万有引力就是牛顿头上砸了一个苹果,然后感慨自己为啥没这个运气。当然有不少人脑子还比较清楚,小时候脑袋上砸了不少东西也没想出什么来,改为感慨自己为啥没这个天分。其实苹果的故事最多只能作为传说而已。 万有引力的基石,是第谷(1546-1601)的海量天文学观测数据。有了这些观测数据,开普勒(1571-1630)的行星运动定律才站的住脚。有了开普勒的行星运动定律,万有引力(牛顿,1643-1727)才能作为一种学说被提出来,并且有机会得到验证。否则要凭借想象想到,物质间实际上是具有非常微弱但是强大的引力的——对人类的想像力实在是太大的挑战了。即便有人能想到,也绝无可能说服大多数的人。甚至有机会进入实证。 当然,万有引力最具说服力的支持,是卡文迪什(1731-1810)的引力常数测试实验。卡文迪什以那个年代近乎艺术性的测量精度,将这一量精确的测定了出来——顺带一提,即便在现代,万有引力常数的精确度依然是所有物理常数里面最差的。 所以呢?我想说什么? 高精度的定量测量,才是物理学的生命。物理学家毕竟不是在玩弄数学技巧,整出一个漂亮好看的方程,就完事了。 我在感慨什么 我不知道作者是天才还是民科。但是我看到无数人在那里叫好——你在叫好之前,难道就不知道简单看一下作者讲的细节么?他又不是没贴。 如果看了一下仍然叫好,我觉得纯属一点科学精神都没有了。上来就酸“怎么可能”,“你算老几”我觉得到也不必——毕竟作者也没有公布细节,就凭作者个人能力否定成果未免鲁莽。但是我绝对不认同,仅仅因为“精神可嘉”,就无视物理学基本精神,在没有技术支持和复现前,对一项实验大加赞赏。 我也顺带吐槽一下作者的文,说这是实验文不如说这是软文。通篇到头就在讲装置怎么难做,自己怎么困难。一没说基本原理,二没计算过程,三没测试数据,四没装置的设计制造图。说国外看到类似的设计,可是reference完全看不到。这些都算了——连装置的设计目的和输入输出功率都没有。你真的是在说技术么? 下面会发生什么 如果是正常情况,大概会有同行复现。能复现的发文说OK我复现了,不能的就开始联系和质疑。 以作者的名望,大概不会有学者认真的想去复现。不知道作者有没有意思主动联系同行做复现。如果有的话,同行复现一下结果就出来。如果没有的话,大概会变成主流学界不搭理,作者感慨自己受到冷遇,然后网友们就是就是两句——这样子。 参考 核聚变 第谷·布拉赫 约翰内斯·开普勒 亨利·卡文迪什 艾萨克·牛顿