Posts tagged 程序员日记

境外DNS解析缓慢

在阿里云部署了自己的服务器,一直使用Linode做DNS解析。当初使用Linode的原因是不想去做备案,不过最近遇到了新的问题。 原本Linode的DNS解析速度还是很快的,从没想过访问服务速度缓慢是名称解析的问题。最近两天访问自己的开发服务器以及git服务器非常缓慢,ping值破千ms,在服务器上top看下来,也找不到任何性能问题,满头疑惑。 后来测试支付宝接口的时候,发现原本可以走通的支付宝接口,在成功支付的情况下,支付宝服务器没有给我们调用回调函数,反复查找原因都没有找到。 多种异状结合在一起,终于开始想到,会不会是名称解析的问题。果然,测试代码改用IP而不是域名作为接口后,速度大大加快,支付宝的回调也成功接收到了。更为可观的是,由于测试用例中大量使用域名作为数据库地址,原本10分钟才能跑完的测试用例,现在仅需几秒钟就能完成。 这才意识到名称解析对于提高服务性能的重要性,开始考虑切换到使用国内名称解析了。不想做免费广告,就不提目前试用的是哪家的服务了。总之先试一试,看一看服务的情况如何,再做进一步的考虑。

痴汉人生

一转眼发现已经快半年没有写博客了,上一篇bo还是去年10月份的。 自我安慰一下,这一段时间倒没有虚度,还是读了不少书,见了不少世面的。对人生的看法也慢慢有了新的理解。最近读了一本书,《醉汉的脚步》,我非常喜欢。这是一本讲概率的书,我本是因为,对于“随机性”这个问题,其真实的含义到底是什么,没有足够的认识,正好在网上看到这本书的风评很好,就买来读读。没想到这居然成了一本洗刷我的三观的书。 随机这个东西,究竟是什么意思,一直找不到最好的方式去理解。当然并不是说数学课讲的期望啊方差啊这些东西没学会。不是的。问题是这些都只是从一个侧面去描写一种随机分布的指标,却仍然不能知道随机事件发生时,到底是什么样子的。比如抛一枚硬币,1/2概率是正面,1/2概率是反面。这个1/2究竟是什么意思呢?并不是说,每抛两次硬币就会出一次正面。说抛100次硬币,出现50次正面的概率最大,这种说法似乎是对的。但假如前99次中出现50次反面,49次正面,也不意味下一次抛硬币出现正面的概率会更大。事实上,假设前99次连续抛出反面,下一次抛硬币,出现反面和出现正面的概率还是一样。理论上会计算概率,并不表示直观上理解了概率到底是什么意思。 读《醉汉的脚步》这本书,让我收获颇丰。其第一点,就是告诉我,概率是用来分析那些人类理解不了的事物的。文中提到,人类会习惯性的寻找规律,其中的例子很有趣,给被实验者观察一串连续的颜色变化,红绿红红绿红红红绿……实际上,红色和绿色出现毫无规律,完全随机,只是红色出现的概率是2/3,绿色出现的概率是1/3。但是受试者会情不自禁地分析这段颜色出现的规律,例如上面一段,可能会分析出下一组应当是红红红红绿。因此如果让受试者去猜下一个颜色是什么,很可能会猜错。而同样的实验受试者换成老鼠,它猜测下一个永远会猜红色,因为红色的几率高嘛。结果老鼠的得分反而比人类的得分高。 这一下就解决了我自认“理解不了概率”这个问题。我所说的“理解不了概率”其大概的意思,或许是说,即使知道了概率,也还是不明白按这样的概率运行的事物(无论是抛硬币、股市、足球的胜负还是人生的浮沉、世界的治乱),其运行的规律究竟如何。而这一解释是自明的,正是因为无法明了其运行的规律,才不得不用概率去归纳。概率是无需“理解”的,只需“知道”即可。如果硬要“理解”,就像上述实验中的人类受试者一样,硬要从一堆随机的信号中寻求规律,结果反倒输给老鼠。 这本书给我的另一个收获,是“贵在坚持”的另外一种解释。概率,是要通过统计,得出的。而概率影响的范围之广,上至全球金融、政治,下至日常生活,黄油面包,无处不在。连续抛3次硬币,都出现正面,并不能就此确信,这个硬币不平衡。连续3次猜拳输给对手,并不能认为对手一定有超能力。然而,连续3年业绩低迷的基金经理人会被开除,连续3次点球罚失的球星会坐冷板凳,或许连续3次失恋的少男少女也会对生活失去希望。而岂不知人生处处都有随机性存在,而区区3次失败,并不具备任何统计意义上的证据可以说明被观察的对象本身品质有严重缺陷。可惜的是人生短暂,往往等不及几十次上百次的测试,再去挑选那个千锤百炼的好手。俗语说,事不过三,往往以三次为界。这也是无可奈何的事情。只是作为审查者,不应只根据业绩、成绩,去评价一个人,而更多从多方综合因素去冷静分析评估;作为被审查者,即使遭遇连续的挫折,假定相信自己的路是有道理的,就不应仅因为业绩、成绩,就放弃自己的路。当然这是万难的。这也是因为,人类习惯性的从现象中试图分析出规律,而往往许多事情,股票的走势、考生的成绩、足球的比分,其实没有什么办法可以准确预测的。当你看到连续的下跌,或许这仅仅是一个波动。 这让我想起庄子的话,“朝菌不知晦宿,蟪蛄不知春秋”,“小智不及大智,小年不及大年”。人生短暂,像是用放大镜去观察印象派油画的一角,看到的仅仅是斑斑驳驳的色点,可谓瞎子摸象,管中窥豹。当然,这是人类固有的局限性,不可能就此超越。但知道自己具有这样的局限性,“认识你自己”,总比认识不到自己的局限性要略好一些吧。犹如五十步笑百步,如能知道自己是五十步,而能不笑百步,就可以说是巨大的进步了。 当然这本书内容很丰富,绝不仅这一点营养。只是拿出我最受震动的部分记录一下而已。也是因为自己荒废博客许久,作为给自己的一个小小的交代吧。接下来的时间里,还是要不停地学习不停地进步。争取博客也不要荒废,更多地记录自己的见闻吧。

EFI/GPT上的Windows – Linux双系统

很长一段时间都没有鼓捣重装系统了。前些日子旧笔记本坏了,买不起MBP的咱只好入手了一台惠普的win8系统的本本。 近来需要一个linux环境进行线下测试,这台本本就成了实验对象。本以为装个linux还不简单么,装个ubuntu分分钟搞定的事情,没想到居然屡遭挫折。最简单的方法就是通过easybcd软件进行硬盘安装了。然后遇到的第一个难题就是怎么重启机器。win8新的电源管理模式,所谓关机其实只是打瞌睡。网上查到在控制面板-电源管理中可以关闭这个功能。OK,重启。进入引导界面却引导失败,提示找不到文件。这个问题纠结了很久,我以为是自己填写的磁盘号错了,通过存储管理可以看到除了系统可见的C盘D盘E盘外,还有好几个分区,此时我还没了解到这是GPT分区表的特征,从(hd0,0)到(hd0,5)试了个遍,通通无效。 经过这么多纠结我终于决定放弃硬盘安装,转而采取刻录光盘安装,还好新本本光驱还没坏(不得不吐槽下本本光驱的脆弱身板。。)。结果再次挫折。。光驱引导界面进去之后无法进入到liveCD的试用模式,也无法直接安装,于是使用检测光盘那个选项吧,统统黑屏,进去光盘也不转。试用模式的最后会输出两行字,说是无法从cd0的某扇区读取数据。莫非是烧CD烧坏了?于是再烧一张,并且烧写结束的检测光盘步骤也检测正确了,ubuntu的iso检测checksum也检测正确了,应该没问题了吧,用新盘重试,还是一样的问题,甚至提示错误的扇区编号都是一样的,我看着状况应该不是烧写的问题。 只好再度重启去BIOS看看了(其实应当是叫做EFI,这个时候我还没意识到这个问题)。发现boot option中有一个选项是开启legacy support模式。注解中说这个模式用于引导win7及以前版本,推荐不要开启可能会导致(win8)系统无法引导。我晕,估计问题就出在这了。首先先不管一层层的警告先把这个选项开了,然后我也注意到这说明这台机器的引导方式已经与以往不同了,以往的引导方式已经是legacy了。。 重启之后还有提示,说有延迟的修改,不顾各种警告允许修改生效,再次通过liveCD引导,终于可以进入熟悉的ubuntu试用界面了。不管那么多进入安装。根据ubuntu以往的尿性,应该是对windows超级友好兼容,不用担心引导项问题的(我还是没意识到EFI这个问题的严重性)。结果装好发现就是败在这个疏忽上了,grub没有正确地安装,还是直接进入到windows引导界面了。 不过这时候已经知道病因了,那么在网上求医问药就比较顺当,找到了许多文章,介绍了许多不同的解决办法。我采取的是这篇文章中介绍的办法,通过liveCD进入ubuntu后,挂载sda2,这是gpt的引导分区。其文件夹结构为 <DIR> Boot <DIR> HP <DIR> Microsoft <DIR> Ubuntu 其中Boot文件夹中有Bootx64.efi文件,Microsoft/Boot文件夹下有Bootmgfw.efi文件,Ubuntu文件夹下有grubx64.efi文件。可以看出Ubuntu安装程序已经安装了Ubuntu的引导文件,可是EFI系统没有识别出新的引导项,依旧直接启动了windows的引导文件。由于对EFI也是昨天折腾这个事才刚从网上了解,我还说不出所以然,为什么Ubuntu的安装程序无法正确替换windows引导文件,并且事实上ubuntu自动生成的windows引导项也是错的无法启动windows。应该说是新设备加上新系统吧,兼容工作不可能那么快跟得上。 网上提供的另一种解决方案是将linux引导信息写到U盘,通过U盘启动linux,这样做就避免修改windows的引导文件,应该说是方便企业级客户吧。这个方案来自linuxsir.org。可是对我来说太麻烦,不想采用。于是还是使用了上面引用的方案,将Ubuntu引导文件强行替换windows的引导文件,并将ubuntu的grub中增加一个项目,指向原来的windows引导文件(备份更名),从而解决问题。不得不佩服下这个方案的作者,这样强行替换引导文件确实是需要足够的知识和勇气的。。。 这里说明一下,我的系统引导文件分区与文章中一样是sda2,但可能不同系统不同,可以分别挂载查看一下目录结构就能确定具体是哪个。 好吧,长篇的唠叨说完,总结一下要点: windows 8 电源管理关闭快速启动策略 EFI(BIOS)设置中启用boot options/legacy support(网上说法还需关闭secure boot,我是后来才看到,没有采用) 完成ubuntu安装后用ubuntu的grubx64.efi文件替换windows的bootmgfw.efi文件(注意备份) 在ubuntu的grub配置中增加指向原bootmgfw.efi的条目 当前版本的easybcd暂不支持efi/gpt引导方式(我使用的是2.0.2,文章中称2.2也不支持) 后记 总结完才意识到可能由于我没有关闭secure boot才导致ubuntu引导项安装失败以及easybcd设置启动项失败。由于昨天经历漫长的战役已经重启笔记本30次以上消耗了一整天的时间,暂时没有心情去继续研究了。附上似乎是比较官方的介绍easybcd双启动linux和win8的文章供参考。 how to dual boot windows 8 and linux 最后是参考来源: 关于Windows Boot Manager、Bootmgfw.efi、Bootx64.efi、bcdboot.exe 的详解 全局唯一标识分区表 UEFI模式+GPT硬盘实现Windows 8与Ubuntu双系统启动 在EFI/GPT硬盘上利用grub2实现Ubuntu/Win7等多重启动 Ubuntu官方文档:UEFIBooting – Booting Linux natively […]

恭喜银桑成功升级为银他妈~~

前两天银桑闹腾得特别厉害,到周二晚上周三凌晨,那一宿就没让我睡,拼命想叼着我的手拉我到他躲着的墙角里去。。 一开始搞不明白什么意思,到了凌晨三四点钟终于悟了,估计是快要生了(对了,之前没搞清银桑的性别就给他起名字了,实际人家是姐姐。。才不是大叔呢) 正好最近买了笼子要带他搬家,就奉献了自己的枕巾跟毛巾被,把笼子里面垫好外面包好,给他一个谁也看不见的封闭空间。一弄好都不用我招呼他自己就钻进去了,也不像之前一样哀嚎折腾我了。我也是一宿没睡就死猪一样瘫床上睡过去了。没想到到了早晨八点钟被闹钟闹醒一看,银桑已经生完了!直接升级为银他妈!想想猫咪也真是厉害,都是自己给自己助产的。淌了一阳台的血(羊水?)。。我趴下去往里一瞧,四只小家伙都挤在银他妈怀里吃奶呢,还不会喵叫,发出像家禽一样细声细气的叫声,萌萌的。 当了妈的银桑比以前老实多了,不再到处乱跑,这两天也不在夜间折腾我了。对啊人家要照顾孩子啊。好几次跑到我身边像往常一样撒娇,还没蹭两下就赶紧跑回去招呼孩子们了。 嘿嘿,不知为啥,看着这样的一家子有一种安心的感觉。莫名的“幸福”感吧。希望能把这一家子养活~等小猫三个月大了可以送人~~

学着自己长大

昨日5+跟我提到,我博客links里面许多大学同学的博客链接都坏链了, 要么就是已经年久失修,要么就是博客主题也早已大不相同, 我一看5+你小子自己的live space域名也坏了啊。 今天一边敲着代码一边听歌恰好播到了《爱的代价》这一首,喟然叹息。 那时候,我们都还在学校,大家所思所想都还那么简单、那么相同。 而如今初涉世,已是如此沧海桑田。 曾经相同的我们,已经走上了各自的路, 有了各自的幸福、各自的追求,也有了各自的烦恼。 还记得年少时的梦吗 像朵永远不调零的花 陪我经过那风吹雨打 看世事无常 看沧桑变化 那些为爱所付出的代价 是永远都难忘的啊 所有真心的痴心的话 永在我心中虽然已没有他 走吧 走吧 人总要学着自己长大 走吧 走吧 人生难免经历苦痛挣扎 走吧 走吧 为自己的心找一个家 也曾伤心流泪 也曾黯然心碎 这是爱的代价

承认错误—三门问题强力纠错

中午跟基友讨论的三门问题,我一直坚持“1/2”观点还写了很长的博客去分析。 掷骰子的上帝-冷眼看三门问题 到了傍晚,终于被基友说通了,恍然大悟自己的错误。。立刻补博客谢罪。。 基友是个不擅言辞的人,言语上一直没有说出能说服我的道理。但是他的一句话忽然点醒我,说让我写程序试试。虽然我认为写程序测试没有必要,但尝试从程序的角度思考的话,的确,一开始就选定一扇门,并且无论看到什么都坚持不换,那测试100次,这样选中的概率,跟3选1选中的概率当然是没有区别的。只能是1/3。那么跟这个策略相反的,坚持换选另一扇门的策略,一定能把剩下2/3的情况都吃光。 如果这点不够显然的话,可以假设有兄弟二人一起去参与这个活动,每次都是弟弟坚持不换哥哥坚持换。这俩人一定能包揽所有的汽车,并且弟弟获得汽车的概率肯定是1/3,跟3选1的概率相同。则推出哥哥选到汽车的概率应当是2/3。 我尝试用一个比较显然的方法说服自己,感觉应该是这样。一开始选择了一扇门,这个动作本身将三扇门分为了两份,“我选择了的门”和“我没有选择的门”。主持人在你没有选择的门里面开一扇,说这扇后面是羊。然后问你,你选“我选择了的门”,还是选“我没有选择的门”里面,除了打开不是羊的那扇门之外,剩下的一扇。 如果这样说还不够明白,进一步构造的话。一开始选择了一扇门,这个动作本身将三扇门分为了两份,“我选择了的门”和“我没有选择的门”。主持人不开任何门,直接问你,你选“我选择了的门”还是“我没有选择的门”。一个只有一扇门,一个有两扇门,当然选“我没有选择的门”啦!重新选择了“我没有选择的门”之后,主持人再从那里面找一个是羊的门,打开。这个情况跟先打开再换选,实际是完全等价的。因此换选这个策略能达到2/3的概率,就显而易见了,一个是选了一扇门,一个是选了两扇嘛。 呜,之前的博客中还有对“果壳死理性小组”不屑言论,深表惭愧及歉意。特保持原博客原状,作为对自己错误的惩罚。

程序员日记-银桑

仲春的午后,打开窗户,让温暖的阳光洒进小屋,和煦的春风轻轻抚着泥草香潜入室内,是一种美妙的惬意。 在这惬意之中,伴随着清脆的雀鸣,打开广播听着怀旧的音乐,品一杯香茗,一只小白猫悄然走上我的窗台,没什么比这更让人感到幸福的了。 我称呼他银桑,跟他初次见面至今也有几个月了。不知是野猫还是隔壁邻居养的,总归经常来玩。我也很乐意奉献些自煮的牛肉汤、鲫鱼汤与他。慢慢跟他熟络起来,如今只要做了饭,在阳台打开窗户,没一会他就会翩翩而至。 猫的性格,可谓谨慎之至。我喂给他吃的,只要是之前尚未接触过的新鲜品种,总要怀疑我是不是害他:我若是怀着期待的眼神盯着他看,他必一副高贵态对香喷喷的牛肉块视若无睹;倘我转过身去,装作对他不在意,却私下里偷眼看他,准看到他急不可待地把鼻子凑过去,三口两口便把肉块吞下。 我在一边慢慢吃饭,他便站在窗台上一副高瞻远瞩的表情,藐视万物。忽然一阵风吹草动,只听咻的一声,以及“咣”的回声许久的金属窗框的哀鸣,待我急忙回头望去,银桑早已在五米开外的草地里了。其多疑与身手敏捷如是。 能在紧张的连续疲劳作战中偶尔有这样一只洁白的小猫陪伴,可谓人生幸事。可惜自己没有时间精力养他,只能尽量惯着他的野性,让他能凭自力在这凄楚的世界中生存。在这一点上,相对于他,我并没有太多优势来着,哈哈。 与一只猫有这一番淡如水的君子之交,若何~

除草

好久没写博客了,最近发现博客访问超级慢,过来除除草。 chrome的开发者工具—network帮了大忙了,很容易就分析出加载慢的原因。原来是坑爹的gplus插件已经被墙了。加上friend connect也没什么人用,也很影响速度,干脆删除掉了。另外就是首页加载时,去年放上去的好几张很大幅的照片超级影响性能,放到more分割线后面去了。 奇怪之前hostmonster的国内访问速度一直挺靠谱的,不知最近怎么变得这么糟了。不过处理了几刀子之后总算可以访问了。 简单写两笔,也算除除草吧。新年新气象,要多钻研技术多写博客,继续精进才行啊!自勉。

北京堵车考

荒废好久的博客。。俺回来鸟。 又是出差北京,体验北方冬天的干冷。 在出租车上堵得无聊,就跟师傅闲扯。我很呆地问:“这五环上又没有红绿灯十字路口,所有的车都往前开,照理说车再多也不可能堵车啊。” 师傅回答:“人多事儿多呗。抽口烟,喝口水,旁边撞车了踩脚刹车看看撞得咋样儿。可不就堵了么。” “哦。” 原来高速路上也能堵车,是这么个理儿。 果然磨磨蹭蹭挪了20多分钟,前面有个撞车的。过了那辆车,前面一大段路都是一路畅通了。真的很有意思,因为没有岔路,主干线上仅仅一处事故就能引发整条高速路的拥堵。由于人多车多,这偌大的五环上只要有那么三五处事故,就能全天二十四小时不间断堵车了。 如果真是这么有趣的原因导致堵车,那么解决方案似乎也很简单啊。最极端的方案就是全面实施自动驾驶。上高速路不算,进了路,速度平稳之后,必须切换到自动驾驶。这自动驾驶首先不会出事故,更不会因为旁边有事故现场就减速看热闹。这么一来五环的运力就可以用一个简单公式计算:车速×车道 / 车距。根本不可能堵车嘛。 当然短期内还不可能全面实施自动驾驶,那么稍微简单点的办法就是通过广大司机们的自觉。说劣根性那是没办法,但矫正总还是有机会的。哪个北京司机不骂北京交通的,哪个司机不想早那么一点到目的地的。如果大家都知道,就因为自己多踩一脚刹车,晚起步半秒,导致的蝴蝶效应正好绕五环一周,叠加在自己的堵车时间上,那么为了快每个人在五环上就更冷血点,更严肃点,更快更少小动作点,事情不就解决了嘛。 这跟市内交通还不一样。毕竟在五环上,没有十字路口没有红绿灯,大家都往一个方向走,并且除了特别的时间段,通常来讲上五环和下五环的车数是相等的(除非有车想赖在五环上就不下来了)。所以只要大家都快起来,五环自然就不会再堵了。 另外可以提建议的,就是不如砸点钱搞几架直升飞机支持高速路上的事故处理。你派拖车过去把事故车再运走,一天时间都没了,可能保险公司来调查的人还堵在半路呢。直接直升飞机把该来的各方面人员都带过来,一股脑解决,把事故车吊走,至少吊离现场把,运到附近公路上再慢慢等拖车呗,能解决多少运力问题。那烧在路上的时间,分分钟都是钱啊,光节约的油钱就够多少架直升机了。

生如编程

周末跟5+聊了一回。 讨论到交通灯不科学的问题,我说:其实设计交通灯跟编程一样,都是很复杂的事情。 5+:编程有很复杂吗? 我: 看你编什么咯。 停下来想想,其实难点并不在于编程,而在于需要解决的问题。交通灯其实就是一个问题,可以用编程来解决罢了。至于说解决的是什么问题呢,其实无非都是一个生存的问题。 或者说,其实编程就像是活着,活着就像是在编程。