Shell's Home

Jun 25, 2013 - 1 minute read - Comments

效率,慈善和歧视

这个话题的最初,是因为和同事讨论到就业中的禁止歧视条款而起的。我们当时讨论到,很多行业中明文或者潜规则的禁止招收女员工,是否合理?偏向不招收生理残缺的人呢? 市场自然抉择 这个问题的第一直觉和最基础原则,就是市场自然选择机制。自然机制而言,市场会自然选择合适的人,以保持最大的竞争力。企业不愿意招收女员工,或者生理残缺的人,自然是有其理由的。 女员工这个问题,我想让不止一个企业吃过亏了,尤其是略微大一点,还讲那么点规矩的企业。在经济危及来临的时候,女性员工害怕裁员,所以抢先怀孕。按照国家规定,你非但不能裁她,还得保证她的生理和心理健康。一个企业就那么点人,你非但不能裁那个干的不好又没有劳动力的,相反还得裁掉一个正常员工来保证她的岗位。我想是个老板都不说有多呕了。 至于生理残疾,也是很麻烦的。软件这个行业的门槛还比较低一些。普通的办公室文员,你是打算招个看不见的呢?还是听不见的? 所以,老板喜欢高学历的,你不能说这是歧视没有学历吧。那老板喜欢男性(汗。。。),为什么就一定是性别歧视呢? 适任原则 自然,上述言论听起来很刺耳,很冷冰冰。为了保证竞争,难道孕妇,女性,残疾人必然要成为牺牲品么? 其实孕妇和生理残缺,并不一定和生产效率有关。例如生理残缺,我最近就碰到了一回。有个朋友来投简历,自称是听力残疾,有残疾人证明的。我问他是否能够正常进行日常对话。他回答说,在听力辅助设备的支持下没问题。我说,那么就和普通人没有区别。我接受的了方言,接受的了客户,我想我就能接受你。 以前说过的乙肝也是一例。只要员工都做过乙肝接种,我觉得也没道理不接受乙肝患者,尤其是小三阳患者。至于大三阳,还有某些对生理卫生要求比较严格的岗位,例如食品卫生,那就是另一回事了。 同样,我也不介意性别,学历,种族,国籍。我在意的事情只有,你是否能完成工作,你的成本有多少。大家知道某些民族和国籍的员工招进来特别麻烦,这非我力所能及,我就不展开阐述了。 当然,作为软件公司,限制很小。有些地方就不行了。男性澡堂里给人搓澡的,招一女的算怎么回事,是吧? 没有理由的歧视 所以,我反对任何没有理由的歧视。例如女性不适合做计算机?这是什么道理?有多少程序员因为这种莫名其妙的歧视,被迫走上了断背山之路。 同样,要求司机必须是男性的,我觉得这个才是不合理要求。从生理上说,男性司机久坐对健康不利。如果说大货司机,经常要参与装卸货物,一路上风吹日晒,路段还可能不太平。要求必须是男性还有点道理。那普通商务车辆司机必须是男性的理由我实在是想不到了,你不觉得一个美女给你开车比男的更加赏心悦目么? 当然,不同的人对歧视的判断是不同的。我个人并不认为女性不适合做计算机,但是很多老板这么认为。我个人认为女性可以做司机,但是很多老板不这么认为。但是没关系,只要歧视原因和劳动力之间确实是无关的,我相信总有老板会赏识你的。 禁止歧视限制 当然,为了一些我们都想的到的理由,政府也会立法禁止一些有理由的歧视。例如刚刚的不得歧视女性员工和保护怀孕就是一例。如果企业都因为适任而不愿意让员工怀孕,那么谁还去怀孕生子呢?国家将来的人口(尤其是主流族群人口)肯定会锐减,这和国家的利益相违背。 当然,为了做到这点,毫无疑问的,就违背了市场机制。立法保护孕妇权益,就迫使企业歧视女性(尤其是未生育女性,幸好在中国还有计划生育这种东西)。立法不得歧视女性,那又容易和适任原则打架。到最后,还是市场机制和扶助孕妇打架。 类似的打架还出现在欧洲的另一个领域——雇佣。据欧洲的一些朋友说,欧洲的法律相当重视保护雇员权利,重视到了简直歧视雇主的地步。有个欧洲的愤青就写过一篇长文,为什么我让你喝西北风。大意是,如果我多雇两个人,我得保证他们一直有事情做,雇主没事做导致的雇员空闲还是要付薪水。而且还要缴纳高昂的社会保证金,又不能随便裁员。成本核算下来,现阶段每增加一个雇员,利润居然是递减的。多雇两个人,还不如老板解散了公司吃低保呢。 当然,那文章里的数据什么的都不能当真算的,一认真就满地窟窿(哪篇具体研究文章都是这个样子,光一个物价水平核算就够吵半天了)。但是本质问题却说的没错。如果国家不保护雇员,要国家何用?毕竟大部分人都是雇员而非老板。如果国家保护雇员,把老板搞跑了。那国家的经济增长哪里来?税收哪里来? 党员算不算歧视 原文请看这里。我只说一句简单的。人以类聚,物以群分。想想这哥们曾经想(可能现在还是想)加入一群什么人做什么事。再想想他现在想加入你们。。。

Jun 13, 2013 - 1 minute read - Comments

用户友好的密码

用户友好的密码 何谓用户友好的密码?我是指在密码中尽量不给自己找麻烦,又能正常使用。 不包含空白字符。否则你会烦恼有哪个空白字符,有几个的问题。 不包含特殊字符。否则会烦恼怎么输入。 不使用容易混淆的字母。不容易输入错误。 方便手机输入。 尽量少包含大写字母。 只包含容易在手机上输入的符号,或者不输入。 手机上容易输入的符号 在android上,以下符号可以在google输入法中直接输入。 @*+-=/#()'":?!~ 总计15个。估计加上iphone后会更少。如果要用符号,建议从这些里面取,会减少你很多密码输入的烦恼。 容易混淆的字母 Il1 0O 连续的mn 连续的wv 强度规范 我把密码管理规范里面的结论总结一下,略去推导,凑凑数,把密码级别排列成以下几个: 弱密码:不希望别人看到,然而别人看到并没有直接损失的内容。熵应当在20bit以上,五年修改一次。 中密码:不希望别人看到,别人看到会对你产生损失的内容。熵应当在33bit以上,两年修改一次。 强密码:有价内容。熵应当在45bit以上,一年修改一次。同时作为弱本地密码规范, 本地密码:熵应当在58bit以上。 每个级别之间大约差12bit的熵。初始熵强度至少20bit,低于这个水平就很难说这是一个密码了。 强度估计 以最容易使用的密码计算,符号应当最多包含26个字母+10个数字,排除l10这3个。每一位有33种可能,熵大约是5多一点。 弱密码:至少4位。 中密码:至少7位。 强密码:至少9位。 本地密码:至少12位。 更强一些的密码可以用52个大小写字幕+10个数字,排除Il10O这5个。每一位有57种可能,熵大约是5.8。 弱密码:至少4位。 中密码:至少6位。 强密码:至少8位。 本地密码:至少10位。 建议 网络: 弱密码:4位小写字母+数字,5年修改一次。 中密码:7位小写字母+数字,2年修改一次。用于保护大部分内容。 强密码:8位大小写字母+数字,1年修改一次。保护重要内容。 本地: 低:8位大小写字母+数字。 高:10位大小写字母+数字。 注意避开Il1O0,以及其他可能的混淆方式。

Jun 8, 2013 - 1 minute read - Comments

nagios配置

nagios的结构 nagios的结构其实很简单,一个监视系统,一个web展现系统,一个remote服务器,没了。 监视系统是根本,在debian中,需要安装的包是nagios3。在安装这个包之后,会启动一个监视进程,负责检查所有的服务是否OK。不OK就触发事件。 检查的时候,nagios会去调一些“插件”。这些插件其实都在/etc/nagios-plugins/config下面注册过的。每个插件配置都是name!v1!v2…的格式。在注册里面,可以看到这个command_name,对应一个command_line。你很容易看到这就将一个定义转换为了一个命令行。 直接执行这个命令行,你可以看到一个标准输出。nagios就是解析这个标准输出,得到值是否在一个合法的范围内的。所以从原理上说,你可以自己写插件,对任何事情做nagios的监控。 对于某些远程可以获得的信息,目标设备上可以什么都不动,例如ping连通性,或者是端口连通性等。而对于其他信息,例如磁盘空间剩余值,靠远程可能没法获得,就需要在目标设备上装nrpe,Nagios Remote Plugin Executor Server。在debian中,就是nagios-nrpe-server这个包。如果获得本地信息,不需要这个包。 最后,cgi会将本地的信息暴露给web查询,这就构成了完整的nagios体系。在debian中,这是nagios3-cgi这个包。 nagios页面在nginx上的配置 这个过程比较繁琐,因为apache会自动配置,而nginx没有宿主进程,也没有cgi。因此实际上需要运行两个宿主进程。 首先,你需要安装php-fpm宿主进程,这个是nginx搭配php执行的最佳宿主。在nagios中有用到php,所以你需要php执行能力。 其次,安装fcgiwrap这个包。这是cgi执行宿主,以fastcgi协议暴露。这里需要注意。如果你的nginx和nagios的宿主不在同一个设备上(例如像贝壳这样执行了虚拟化的),那么实际上只要在nagios的宿主上执行fcgiwrap即可。php-fpm和nginx可以执行在其他不同设备上,没有关系。只是前者必须有nagios的cgi代码,后两者必须有nagios的网页和php代码。而这三者又都在nagios3-cgi包里面。因此几台机器都需要安装nagios3-cgi包。 最后,配置nginx。 location /nagios3 { index index.html index.htm index.php; } location /nagios3/stylesheets { root /etc; } 第一个映射是nagios的基础目录,在根目录中,我其实配置了nagios3 -> /usr/share/nagios3/htdocs/(debian中的链接位置)。第二个映射是样式表配置,我用系统缺省的。 location ~ ^/nagios3/.*.php$ { include fastcgi_params; fastcgi_pass unix:/var/run/php5-fpm.sock; } 这个是nagios的php解析代码。我的php-fpm执行在同一台机器上,因此直接如此配置即可。 location /cgi-bin/nagios3 { root /usr/lib; include fastcgi_params; fastcgi_param REMOTE_USER $remote_user; fastcgi_pass dev:port; } 最后是cgi暴露的配置。由于我的nagios宿主并不在web服务器上,因此fastcgi是个远程地址。而且注意REMOTE_USER,传递这个才能让远程认到你的用户basic auth。由于nagios的cgi通过这个工作,因此没有这个会直接导致对方始终认为你是无权限用户。 nagios的简单配置 我们首先认清一点,nagios并不负责管理机器的维护。他的设计目标是“可用性”。因此目标是否可达,服务是否可用,是nagios的关心重点。至于磁盘,负载,只是顺便监控而已。所以你可以看到,nagios并没有直接的插件来监控CPU或者内存。他只有snmp插件可以查询到这些数据。 所以,我们开心一点。最低限度,我们将所有需要监控的设备和服务端口加入列表。当这些设备不可达时,nagios会发出告警(有邮件)。而如果运气好,我们是可以监控到这台机器是否有apt包需要升级,磁盘空间是否够的。作为建议,其实你只需要监控load和磁盘空间利用率就够了。其余的东西一般不大需要。当内存或者CPU发生问题的时候,你的query其实也拿不到返回。相对的,目标端口很快失去响应进而引发告警才是我们的预期。 OK,在这个基础之上,让我们看看有什么可以配置的。 服务器添加 首先,你可以定义一些机器。localhost_nagios2.cfg里面有例子,大致是这个样子。 define host{ use generic-host ; Name of host template to use host_name host alias host address IP } 我建议你专门弄个文件来管理这些自己的设备,例如我这里叫hosts.

Jun 6, 2013 - 1 minute read - Comments

外行逼死内行

昨天和一个朋友讨论点医学问题,他说,现在医生最怕的就是你这种病人。依从度最差,而且还容易闹出纠纷来。我说哪儿的话啊,我要质疑医生,除非是另一个医生对同一病例做出了不同判断。我自己的话最多问问。毕竟有点医学常识,知道自己的斤两。要糊弄外行还行,和专业医生比是没得比的。他说每天病人那么多,鬼才有空给你慢慢解释呢。 回去想想,外行逼死内行的事情其实不限于医生。做程序员也是如此。现在弄QQ,用wps和office,我已经弄不过老婆了。电脑杀毒也很久没做了,幸好她一直用360。流氓是流氓了点,反正弄不到我头上就行。有的时候她感慨,真不知道你是不是做程序员的,要用的时候什么忙都帮不上。幸好,关于最后这点,在她写论文的时候,我花半个小时帮她写了一套数据和模拟计算程序,证明了自己的清白。 有的时候,一个朋友知道我在做程序员,于是打电话过来,咨询一些问题或者请我帮忙做点事情。当然,他们本身可能出于好意,同时也可以解决他们自己的问题。但是往往这些问题就让我哭笑不得。QQ被盗了怎么寻回啊。有人给他们发消息说网银被盗请赶紧往安全账号里汇款啊。做一个网站要多少时间多少钱啊。别人帮我们做了网站现在这人跑了怎么办啊。我这里有很多数据打算做大数据分析啊。诸如此类。 当然,里面有很多问题其实也是比较靠谱的。网银被盗那个,其实当事人也知道多半假的。但是不找个专家问问就是不安心。可是您不能直接问银行么? 问QQ被盗就不是很靠谱了。QQ被盗肯定是找腾讯啊,我长的很像企鹅还是怎么着?还有什么台式机坏掉的,支付宝可以登录但不能付钱的。谁给你提供服务你找谁,我不是他们的客服。你的问题就算到我这里,我还得找他们的客服。目前为止,网站什么的有问题,找我找对了的,就那么一例。因为那个问题是找不到网站客服。剩下统统是回掉问题,或者回不掉就帮他们打对方客服。 至于做网站的,倒是还对路。虽然我不完全是做网站的,不过网站至少还会做。不过你至少和我说一下,这个网站大概什么目标,要做多少规模。我大概给你估一下要多少人,大概多久,会花多少钱,什么一个章程。你光冲上来和我说,要做个网站,把上家的货卖给下家,大概要多少?我哪里知道啊。更神奇的是,居然还有人能根据他这样子的描述写成了,而且那人应该还是个新手。我大概看了一下,处理和钱有关的问题居然用的是myIASM。想想还是别说了,人家本来就对我不是很满意。罗嗦个一堆,事情还没给办成。 至于大数据分析就更搞笑了。一个学校的后辈跑过来说,我这里数据挺多,打算做大数据分析。我说多少。1000多W条呢。数据大小呢。好几十个G呢。我算了算预计计算时间,16小时。行了,您有空跑我这里讲需求,回去把电脑开着,一天就出来了。 偏偏就这个样子,还是有人当我专家,然后跑过来问各种各样问题。其实了解的越多,心里越有数。自己算哪门子的专家呢?反正首先肯定不是修电脑专家——偏偏还是修电脑的问题最多。其次,要说低成本程序开发,自己也算不上——我写程序的成本可不低。对大多数人来说,我唯一能做的是在特定领域里面帮你解决新手解决不了的问题——这里面大多数问题是外行无法理解,甚至都没听说过的。所以这注定了你找我唯一正确的理由是让我帮你介绍个合适的圈内人。 即便如此,在面对新手的时候,往往也底气不是很足。某朋友曾经show过一行代码,说是公司里设计师教的。我看了,确实也不知道可以这么写。有的时候新手兴冲冲的上来问个问题,顿时我就茫然了。或者皱皱眉头,好大的一坨东西。然后新手不管三七二十一就写。后面多半没了声音。但是也经常有就写成了的。看看实现,问题一大堆。但是能工作,确实能工作。透过时光,仿佛看到10多年前的自己写的代码。罗嗦,冗长,但是却实实在在的在工作,让我兴奋不已,并且把我带进了电脑的世界。 也许这堆新人里,有人可以也坚持个10年,并且成为其他人眼里的专家。然后苦恼于后浪追前浪的问题上吧。

May 31, 2013 - 1 minute read - Comments

语音能力对比

对比了一下google voice和科大讯飞的识别能力。google voice手里没货,用的是youtube上的第三方测试视频。例子也是抄的。 +----------+-------------+----------+ | |google voice |讯飞 | +----------+-------------+----------+ |提醒 |Y |Y | +----------+-------------+----------+ |定时 |Y |N | +----------+-------------+----------+ |播放歌曲 |Y |Y | +----------+-------------+----------+ |关闭无线 |Y |N | +----------+-------------+----------+ |天气 |Y |Y | +----------+-------------+----------+ |静音模式 |Y |N | +----------+-------------+----------+ |搜索地图 |Y |Y | +----------+-------------+----------+ |搜索路径 |Y |Y | +----------+-------------+----------+ |搜索商家 |Y |弱 | +----------+-------------+----------+ |时间搜索 |Y |弱 | +----------+-------------+----------+ |时区查询 |Y |N | +----------+-------------+----------+ |节日查询 |Y |Y | +----------+-------------+----------+ |汇率 |Y |Y | +----------+-------------+----------+ |汇率换算 |Y |Y | +----------+-------------+----------+ |进制转换 |Y |N | +----------+-------------+----------+ |单位换算 |Y |N | +----------+-------------+----------+ |数字计算 |Y |N | +----------+-------------+----------+ |航班查询 |Y |Y | +----------+-------------+----------+ |火车查询 |Y |Y | +----------+-------------+----------+ |股票查询 |Y |Y | +----------+-------------+----------+ |定义查询 |Y |Y | +----------+-------------+----------+ |区号 |Y |N | +----------+-------------+----------+ |商家号码 |Y |Y | +----------+-------------+----------+ |打电话 |Y |Y | +----------+-------------+----------+

May 27, 2013 - 1 minute read - Comments

比特币的汇率问题

一个有趣的问题 如果股票可以用来交易,我们会使用股票么? 我是指,如果股票的流通合法,手段合理,出门刷股票就像刷卡一样。我们是否有机会使用股票作为货币? 我觉得没有可能。 使用股票作为货币,有一个实际的难题,就是定价问题。我们想象这么一个例子。假定某种股票A价格是10元一股,而楼下食堂的午餐套餐A也是10元一份。因此,他们可以把套餐A的定价写为A股1股一份。 中国的A股市场最大单日涨跌幅度是10%,如果是美股幅度还要大,但是我们先不考虑。在极端情况下,例如连续五日跌停。股价就会从10跌到大约6的样子。 如果此时,A套餐还维持一股的价格,收入绝对会跌穿成本的。因此,A套餐必须变更价格。事实上,当股价跌到80%的时候,就已经需要变更价格了。因此,A套餐在一周之内需要变更两次价格。 如果说变更价格还可以忍受,那么汇入汇出时差,还有周转周期就根本无法忍受。大部分银行汇入都是有时差的。当餐厅收入股票,他需要时间将这些收入和银行结算。这个时间大约是一天。而如果餐厅真的把股票当作货币,而不是周转手段用(说的更通俗一些,就是一收到股票就抛出换货币存入账户),那么他必须坚持使用股票去购入原材料和支付工资。这个周期至少是半个月。在这个期间内,如果股价持续下跌(半个月内跌20%不是很罕见的),那么造成的损失只有餐厅自己去承担。 关于这点,做外贸生意的同学们应当深有体会。 因此,使用股票而不是货币作为流通手段是有额外风险的。如果没有额外的利益,为什么要承担这一风险呢?外贸是因为种种理由(主要就是相对生产效率),交易可以创造利益。因此人们才愿意承担风险。 为什么不将货币统一 反过来的一个问题就是。为什么我们不干脆统一货币,这样任何国家和任何国家的外贸都不存在额外风险了。 这也是不可能的。人们曾经以为这并不困难,因此出现了欧盟。欧盟统一了货币,但是却出现种种问题。从根本上说,这是因为政治机制做造成的。人类一定会有一些人生产力高一些,一些人生产力低一些。因此我们一定有人穷有人富。如果维持理性人假设,穷人一定趋向于增发货币,因为这可以促进经济,增加就业率和工资。而富人一定会趋向于不增发货币,因为他们的财富会贬值。 我们缩小一点打个比方。如果你和你的兄弟吃住在一起,钱一起花。当你们都赚1000的时候,问题并不严重。当你赚10000,其他人赚1000的时候。其他人总是倾向于更多的使用公共利益开销。例如他们可能会要求给父母翻修房子,买下更多的土地——反正钱是“大家”出。如果你鉴于兄弟情谊,认为这是合理的,那么你们还能过下去。如果你认为他们太贪婪而他们认为钱一起用是天经地义的时候,分裂就在所难免了。 如果我们在同一个货币区域内,那么关于是否增加货币总量这个问题就有两种态度。两种利益的代表一定会发生争执。如果这个货币区域是一个国家,那么统治系统会受到两种利益集团不同程度的驱使,宛如精神分裂一样。如果这个货币区域是多个国家,而其中有的穷有的富有,那么情况就会更糟。富有的国家会试图迫使穷国做一些事情,否则就将他们踢出联盟,再否则,就是他们自己退出联盟。这就如同欧盟中西班牙和希腊的遭遇一样。即使在一个国家中,如果不能平衡两方面力量,那么这个国家出现分裂是早晚的事情。 因此,要将全球货币统一,这基本就是不可能。 我在说什么? 应该已经有人听明白了,我在说股票么?不,我在说比特币。 比特币比股票的动荡幅度更大,就我刚刚查询到的信息,比特币对人民币汇率在一个月的波动幅度最大的时候,在10天内下跌了75%。当然,与此对应的是。如果运气好,在10天内上涨超过300%也是可能的。 这种情况下,要当货币用?难了点吧。据说网络上有人支持用比特币买房子,我很好奇他的价格是怎么定的,每天一个价么?等值美元换算?还是干脆定一个死价? 而接受这么大一个风险,我们得到的是什么呢?使用比特币交易会为我带来更多的订单和利润么?比特币用起来比刷卡更加方便么? 谁会为了比特币接受这么大的风险?思考一下,只有那些在普通监管金融体系下无法交易的人才欢迎这样的系统。包括军火,毒品,走私,钻石交易。相对于这些行业的暴利来说,价格波动风险的问题也不是那么大了。 所以我还是坚持我自己的观点。要是你弄一点来玩玩,那没问题。但是要作为替代货币去用,基本不可能。 为什么还会有人弄点玩玩 我靠。就算是游戏机房的代币,都有人弄回家玩玩。你还奇怪这个?代币可是没任何保证的,既不能花在别处也不能交易,机房关门那东西就不值钱了。玩么,还在乎这个。 为什么比特币持续在上涨 比特币现在还可以持续挖矿,相当于货币一直在增发。在增发的前提下,货币价格还持续上扬,这只能说明在这种货币实体内涌入了大量的货物支持。当然,如上文所说,毒品,军火,都有可能。但是无法排除,比特币的无法管理特性注定了这东西还有一种玩法——当股票玩。而比特币目前只有融资没有融券,这才是比特比持续上涨的最大理由。 为什么没有融券就持续上涨?这个问题其实应该问中国股市,尤其是2000年前后的中国股市。当有融券时,我们可以先卖出,然后买入远期股票,从而在下跌的市场里赚钱。而当没有融券时,要赚钱就必须让股票上涨。交易所希望股票涨,股民系统股票涨,上市公司也希望股票涨。股市里的大家,除了刚刚卖掉的人,都希望股票涨。然而大家心里有数,股票是不可能无限上涨的。股票的长期收益,是能够持续的获得分红。如果上涨和分红不能支持当前价格的时间成本(就是利息),那下跌是个必然的事情。于是中国早年的股市就变成了击鼓传花,大家都吹着市场,希望自己不是最后一棒。 在比特币上,情况更特殊一些。现在固然是有炒家的功劳,但是将来是否下跌还得看非管制交易的规模。如果将来有大量的人使用比特币进行非管制交易,那么比特币就获得了实际货物的支持,从而不会下跌。如果没有,那就是新的一轮击鼓传花。

May 24, 2013 - 1 minute read - Comments

lxc路由模式

为什么使用路由模式 lxc默认使用的是桥模式,这也是我在家里和公司里部署的模式。在这种模式下,lxc虚拟机可以直接和真实网络中的机器互相访问,就如同一台真的机器一样。路由模式则没有这个便利性。 但是桥模式有个缺陷,必须能够做出桥来。我们有做不出桥来的时候么?有,如果你用笔记本,大部分AP会拒绝第二个MAC地址的包。导致网桥可以组建,却永远无法正常使用。 第一种路由模式,双重NAT简版 双重NAT可以用于几乎所有场景,并且不会带来后遗症。然而,双重NAT的问题在于,物理网络不能直接访问虚拟机。对于很多设备来说,这就失去了价值。另外说一点,之所以叫做双重NAT,是因为多数时候物理网络接到外网还需要一次NAT。 lxc的双重NAT可以视为两步,建立NAT连接的虚拟网络,将lxc连接到虚拟网络。 第一步比较复杂,我们先从br0的建立开始说起。首先,你需要为虚拟网络分配一个不同的保留内网网段。如果使用同样的内网网段,在ARP查询的时候会从一个端口发出超过一个的MAC回应,这就退回了桥模式。 然后我们需要建立一个br0网桥作为配置的起点,对这个网桥赋予IP,配置路由和防火墙,并启动dnsmasq以便于dhcp和dns。这个模式之所以叫做简版,是因为我们先不讨论dnsmasq。 假如你的lxc内网网段是192.168.66.0/24,那么你大致可以如下配置: brctl addbr br0 ifconfig br0 192.168.66.1 route add -net 192.168.66.0/24 dev br0 iptables -A INPUT -s 192.168.66.0/24 -j ACCEPT iptables -t nat -A POSTROUTING -s 192.168.66.0/24 -j MASQUERADE 实际上,对于任何一种网口设备,将其配置为NAT的过程都是一样的。 第二步非常容易,在lxc的config文件内,指定网桥为br0就OK了。当然,作为略去dnsmasq的代价,你需要手工配置每台机器的IP地址和DNS服务器。 第二种路由模式,双重NAT 双重NAT的完整版需要在内网网口上启动dns,作为dns缓存代理和dhcp服务器。其余和第一种模式没有区别,只是你不需要手工指定IP和DNS服务器了。 当然,其实任何一种网口的NAT配置都是一样的。 第三种路由模式,双边交互路由 第三种路由模式的效果最好,虚拟机和真实机可以互相访问。但是这种模式需要能够修改物理网络网关的路由表。这种模式使用主机作为路由器,中转真实网络和虚拟网络。 我略去如何创造br以及如何将lxc连接到上面,这些前面有叙述。下面我简述一下双边路由最关键的几点。 最重要的重点,就是在真实网络的网关上,将你的真实物理机在外网的IP,配置为虚拟网络的下一跳网关。例如,对于上面的例子,我们应当在网关上如此配置。 route add -net 192.168.66.0/24 gw 192.168.1.4 如果不进行如此配置,物理网络所发出的包在到达网关后就不知道应当如何转发了。 在物理机上允许双边网络的所有包透过。你的包当然不能被防火墙挡掉。 虚拟网络的dhcp是不会传递到外网的,因此如果打算使用dhcp,还是需要开dnsmasq。

May 8, 2013 - 1 minute read - Comments

一次订错机票

我碰到的问题 我的错。在订机票的时候,把虹桥T2看成了浦东T2。短信发来后又没有认真复核,导致跑到浦东才发现不对。此时离飞机起飞还有80分钟,要跑到虹桥铁定是来不及了。我查找了机票信息,这张票是可以退改签的。所以我打算改签到一个合适的时间,或者重新订一张浦东的机票。 操作流程 首先我拨打了短信上的退改签电话。根据提示音,这个电话属于去哪儿网,而不是代理商。电话接入后,有提示退票和改签,很不错。于是我选择了改签。提示音提示我,目前一名乘客,XXX,是我本人,是否确认。我当然确认。 然后?就是见证奇迹的时刻了。电话提示我,刚刚进行了改签动作,将我自己的机票改签给了我自己。 我擦,我是有多脑残才会想要把自己的机票改签给自己!选择其他航班的机会呢?改签不是应该改时间么?怎么直接给我改了登机人?而且还是改给自己??? 更奇葩的是,在这步操作后,我试图进行退票,提示我“您的机票正在进行退改签中”。嘿,还不能操作了。此时,离飞机起飞还有70分钟。 怎么办? 那么看来只有人工处理咯。我在去哪儿的电话系统里面转了一圈,花了20分钟,浪费了4元长途费(顺便一提,去哪儿的电话是北京电话,不是400,因此用户付费——长途费)后,发现唯一的人工干预界面是投诉。。。 你是有多不信任你的代理商。。。 好吧,投诉也比没有好。打电话过去,果然,没有上班。目前是七点三刻,确实有点强人所难。 然后我去去哪儿的android应用里面,查看这张机票。果然也有,一样是退改签中,不能操作。不过幸好,机票上面有代理商电话。我点上去,出现提示,是否要拨打电话。确定。 。。。 什么都没有发生。 再来一次。 。。。 什么都没有发生。 我擦你丫以为这是开宝箱阿。不会堂堂一个去哪儿的应用连拨打电话都有bug吧。。。 怎么办? 首先,冷静,认真你就输了。 其次,打给携程,订一张新的机票。总之不能把出差搞黄,出差搞黄就把小问题变成大问题了。 再次,打给老婆,让她给我退票。能退多少是多少,不能退就当交学费了。 最后,发微薄骂人。 结果 很快,大约飞机起飞前20分钟,老婆给了我回复,她直接拨打代理商电话是OK的。代理商执行了退票,剩余费用会在2-15个工作日内回到账上。 飞机起飞后10分钟,微薄有了回复,但是完全没看懂我说的是什么。我骂的问题是: 我擦去哪儿的产品经理是猪脑子么?我打过去退改签,什么操作都没做呢,系统直接把我的机票改为我自己的,然后就再也不能退票了。 丫回复我说: 退改签是航空公司根据该机票的仓位和折扣具体规定的,去哪儿网会监督代理商按照航空公司的规定执行,您可查看订单中的退改签说明或致电航空公司核实。有问题也可将订单号私信给我们,为您转交工作人员核实处理。 平心而论,这个回复倒是沾边。对于用户来说,真的要退票的到也能退掉了。但是。 飞机都起飞了,再退票价格完全不是一个概念阿。微薄平时玩玩就罢了,这种涉及相当金额的事情还是电话靠谱。 一字没提电话系统改签里面的问题。您就准备把这个问题放着给下一个人中招? 结论 去哪儿网的票价是否便宜不说,服务太不靠谱了。机票定错是我自己的问题。但是电话改签功能非但不能正常工作,还把退票的功能给关了。处理紧急问题的时候没有400电话,也没有紧急事件接听机制。从微薄的回复时间(8点半)来看,工作人员都是定时上下班的,没有值勤机制。 大概廉价比价网站就只能做到这样了,以后对于公司业务还是用携程吧。

Apr 28, 2013 - 1 minute read - Comments

git log的一个吐血问题

刚刚在公司里查了半个多小时,记一下笔记。 不知道你们有没有这种吐血经历。在git上有两个分支,莫名其妙合并到一起了。这可能是某个人的误操作。你检查log的时候,只看到他不停的把主分支merge到支线上去,却从没有把支线合并到主线上去。但是最终两个线却合并了,主线指向了支线。这是为什么? 要理解这个问题,我们要搞明白,merge在git里是怎么工作的。当两个分支,来自同一个祖先,但是提交了不同修改,又要合并的时候,就需要进行merge。能够自动merge的,多一个merge commit,被合并分支的HEAD不变,合并入的分支的HEAD加一,指向merge commit。不能够自动merge的,手工处理冲突,其余和自动相同。 注意这点,“被合并分支的HEAD不变,合并入的分支的HEAD加一”。由于两者在不同的点上,因此修改和提交会形成不同的分支。合并后的两个分支不会发生交汇。 如果在一次正向的merge后,立刻进行了一次反向merge呢?事情就麻烦了。两个branch的HEAD指向了同一个commit。因此你可以认为支线分支合并到了主线,却没有merge记录。这是当然,因为这只是指针移动,属于fast forward。没有commit,没有log。 不幸的是,这种操作还经常发生。当我们把支线向主线合并的时候,合并难度可能非常大。此时我们可以将主线向支线合并,然后反向合并。这样的合并难度就小很多了。然而这会使得合并记录不可查。 所以,当碰到类似问题的时候,考虑两次合并的可能性。

Apr 22, 2013 - 1 minute read - Comments

关于雅安

雅安地震好几天了。之所以今天才写,是因为我不大愿意消费雅安。再晚几天,大概也没人愿意看了。所以,大概就这几天。 看我的博客的人,相信都看到了我前面几篇的四川行。我贴的有点晚,不过时间是今年过年前,地点在本次地震所在地雅安向西50公里的位置,泸定下方的海螺沟。我们在来回路上还经过了雅安,在那里吃了顿饭。因此有人一说雅安地震,我当时就一惊。 当死亡突然发生在身边的时候,是非常惊悚和震撼的。如果我们早就知道,我们就不会流泪了。像我在某部纪录片里面,看到的一位植物人家属。当人走的时候,家属都很平静,近乎麻木。他们说,我们的泪都流干了。但是如果你认识的某人,在壮年突然去世。你才会悚然一惊。原来生命这么脆弱,原来死亡离我们只有一线之隔。 是的。我之所以要说这个,是因为我忍不住的想。如果我们晚去半年,或者地震早发半年。我们是不是也要砸里面?好像很有可能。我看到很多旅行者砸在了那里。 大概在三年前,我得了一次急性牙髓炎。医生没查出原因,患处也不疼痛,所以我居然一直不知道,以为是三叉神经痛。那一阵子真是痛的死去活来阿。在牙齿拔神经后,感觉顿时轻松了很多,觉得好像重生一样。由此我也悟到了一件事情,及时行乐。我们总是为一些奇怪的理由,阻止自己做一些真正让自己快乐的事情。今天拖明天,明天复明天。拖到事情黄掉,或者在某个时刻戛然而止。这是何苦来哉。 所以,如果你有什么想做的事情的话,还是快点吧。 另外一个关于雅安的话题,就是我们能做什么。我首先声明一点。我不信任中国红十字会。 当然,这不代表我赞成直接捐助。相信经过这么多次网络直接捐助事件,大家都应该领悟到,直接捐助给对象,会有很多问题。对方是不是真的需要帮助,有没有人比对方更需要帮助,对方的钱是不是花的到位。这些问题都非常专业。帮助别人,不是把钱随随便便的一丢就结束的。这是一个非常专业的问题。丢下钱就什么都不管的行为并不是帮助,而是打发乞丐和满足自己的虚荣心——当然,如果那就是你的目的,我也没什么好说。 作为一个解决方案,有一些专业的机构,会帮助我们来捐助和慈善。就像我们需要买啤酒,于是有了酒厂和超市。我们需要买鸡蛋,于是有了养鸡场和菜场一样。我们希望在慈善方面有专业机构,解决上面说的一些问题。是不是值得,是不是需要帮助,需要何种类型援助,应当如何处理,等等等等。我们提供帮助,物质上的,金钱上的,精神上的。他们解决问题。 当然,既然是专业机构,自然需要开销。酒厂,超市,养鸡场和菜场都不是免费的,为什么慈善机构一定是免费的呢?很多人在公司里常说的一句话是,既然如此我也没有办法,公司不是慈善机构。其实他们错了,慈善机构也不是免费的冤大头。做好事也要钱呐。 现在问题来了。即使我相信慈善机构可以判断哪些人更需要援助。但是慈善机构本身也需要钱运转,而帮助对象也需要钱。在这两者的竞争上,我还没有天真到相信人性的光辉可以照耀每个角落。如何保证某笔钱是被慈善机构是合理的运用了?如何保证他们不会倾向于更多的花费在一些无聊的地方,例如职员(姑且叫做职员吧)的生活改善。修建更漂亮的大楼,并解释说这是为了吸引更多的捐款者? 作为一个必备条件,捐款公示和账目公示是必须的。作为捐款者,我们可以核对我们的捐助是否被统计了。作为受惠者,自然不会承认没有得到的帮助。由这两点限制,我们就可以清楚慈善事业的运转是否有问题。如果我觉得有问题,我可以用脚投票,再也不给他们捐钱。 呐,现在问题更大了。中国红十字会名义上是国际红十字会的下属机构,但是却不受其直接领导。而中国红十字会的资金是不公开的。 好。你说你是一个专业机构,我信你。你说你可以解决我在救助中解决不了的问题,我信你。结果你告诉我,你连账目都处理不了。你让我如何相信你可以公平的分辨谁需要帮助,协调社会力量救人于水火?就像一个瘫痪的人说,我可以飞。谁信。 和直接捐助比起来,我觉得这种自相矛盾更加不可信。所以我不相信中国红十字会。 但是更大的问题是,在中国,面向非特定对象的募集在理论上是违法的。直接在街头弄个箱子写个捐助,在某些地方被认为是不可信的,而在中国就直接被定义为非法。与此同时,非慈善类NGO很少,很难注册。这使得中国慈善里面充满了各种公司法人。真的想做事,但是却搞不定NGO注册的,只能注册公司,同时开增值税发票交税。这很讽刺,因为你交了个人所得税后的收入,要进行慈善竟然还需要缴税。而在某些国家,慈善NGO开的发票是可以抵税的。因为社会救助是政府的任务之一,而税收是为了使得政府可以执行任务。既然你为政府的任务目标做出了贡献,自然应当少缴纳对应数额的税收。就如同你上缴了税收,然后被再分配到了慈善机构一样。只是你自己拥有选择的权力。 与此同时,也不排除很多人,注册了公司外壳来做一些手脚。大家知道慈善机构是组织性组织。他们不会自己生产帐篷,自己培训医生,自己教育小孩。他们需要在社会系统中兑换相应的资源。这给了一些人机会,将低价资源高价卖出,这是最常见的,甲方腐败。另一种常见的情况是,某些人拥有广告资源。从市场运转角度说,投入广告可以获得收益的行为,和普通市场营销没有任何区别。于是在集资问题上,又可以将渠道卖给广告商,从中获得回扣。这是不怎么常见的,乙方腐败。如果是盈利型公司,公司的所有者或者理事会自然会检查这种问题。但是对于一个不透明的非盈利机构,谁来担这个责任呢? 甚至,从行政和金融工程的角度来说,可以将行使慈善的权力拍卖(NGO许可证),或者是利用慈善价格随事件大幅波动的特性进行杠杆套利。当然,这个套利很难,而且杠杆化更难,所以这也是今天我还没听说这种事情的原因。但是如果我们放任情况失控的话,慈善企业上市,乃至慈善期货进入期货市场这种荒谬的事情都将不会让我觉得惊讶。 所以说到我们可以做什么,我觉得很悲伤。我们捐给红十字,有问题。直接捐助,也有问题。我们不去了解灾区,麻木。我们希望了解灾区,使得记者一拥而上,消费。我们不能不做什么,却又做什么都错。 最后,关于去四川和西藏旅游。我得说,前方高能,快去快回。。。