台湾之行

自从上次去马尔代夫后,因为宝宝出生,所以很久没有进行大的旅行。现在宝宝正好准备两岁,计划了半年多,这次终于去台湾旅行。 台湾1895年中日甲午战争之后成为日本殖民地;1945年二战结束,民国政府接管台湾;内战之后蒋介石退居台湾;朝鲜战争之后美国派军舰驻台;上个世纪八十时代蒋经国进行政治改革,台湾成为亚洲发达经济体,并成为亚洲民主自由社会的标杆。 香港和台湾继承和保留传统的中国文化和习俗,前两次去香港,总觉得香港还是太闹太繁华了,打算去台湾看看,这是驱动我们去台的原因之一。 这两年两岸关系好像变冷,所以去台旅游的人应该少了很多,正好合适。 这次去台湾旅行,从南到北,垦丁和高雄、台中市、台北市(平溪线和九份),整体感觉很不错,希望台湾能保持这种感觉,有机会一定还会来。

June 1, 2018

【转】关于父母和自己的思考

转自水木社区的帖子。 PS:作为一个也是从大山里出来,定居北京的游子,这篇文章道出了我前几年的纠结和现在的心态。其实真的是,只要爸爸妈妈健康快乐就好。 年前我匆匆回了一趟西北老家,因为儿子年幼,不方便在严冬季节从南方带到北方去过年,所以我只能一个人回去。 踏进老屋,看到父亲正蹲在火炉前烤火,手里端着他那杆一尺来长的旱烟斗,一边吧嗒吧嗒地抽烟,一边往炉子里添柴火,有点儿“满面尘灰烟火色,两鬓苍苍十指黑”的感觉,身上的衣服也不干净,脚上还蹬着一双夏天的凉鞋,他把这鞋子当拖鞋穿,冬日里没事不用出门,穿简单的鞋子方便上下炕。母亲穿着臃肿的棉衣,圆得像个棉花球,外面罩着一件穿了很多年的罩衣,裤子比较窄小,上身的大衬托得下身看起来更小,总体看起来很不协调,裤子的两个膝盖处有两大块没有拍干净的黄土,显得邋遢。 这就是我的父亲母亲。十多年来,为了改变他们落后的形象,我费尽心力,衣服买了很多,但他们就独爱那几件旧衣服,新衣服大多压箱底了。他们每次拿到我买的新衣服,都碎碎念着:“浪费了,老了,不需要这么多了。”感觉接受一点儿好的东西就很有心理压力一样。不光穿衣服,生活的方方面面都如此。 他们的这种形象,搁几年前,我会有不悦,甚至会指责他们,但现在我不会了。不仅是因为他们已年近75岁,恐怕更因为我快40岁了。十多年来,我想让他们改变,结果他们没变,我却变了。比如现在看到父亲大冷天还穿着凉鞋,我就想他应该每天上上下下那个一米来高的炕头很多次,这说明身板还硬朗;看到母亲膝盖处两块没拍干净的黄土,我就想她还能跪着烧炕,说明身体还行。看到他们虽然衣着邋遢,但还能行动自如,甚至都还能下地干活,进门干家务,我无限欣慰,二老只要健康着,何必要求他们吃什么穿什么衣服多久洗一次?活到这个份上,外表已经不重要了,我所求的,唯有健康。 回想大学刚毕业那会儿,我内心的责任感何其沉重,我觉得就算我拼尽全力,也要让父母过上更好的生活,让他们早早地退休,不再干繁重的体力劳动,让他们穿着干净的衣服,悠闲地漫步在村里的小路上,就像我家旁边那位退休的小学教师一样。当时我还跟一个生意做得特别好的亲戚说过我的愿望,她说不可能实现。 果然,没有实现。因为没有人能改造得了别人的生活,更不可能改变别人的人生轨迹。每个人都在按照自己的生命历程行走着,他的能力,他的性格,他的情商,他的幸福感,他与伴侣的关系,他与这个世界的相处方式,等等等等,都决定着他的人生。外力,至多在经济层面做些改善,而幸福,却更多地取决于生活的点点滴滴,而这些点点滴滴是每时每刻的活法,只能当事人自己去面对,外人真的无能为力。 记得2010年我回家过年时,看到父母的生活状态,还《一声叹息》(点击阅读)来着,后来逐渐明白,每个人的命运都是自己把握的,正如那篇文章中所言:“你可以改变你能改变的,但是你必须接受你不能改变的,因为生活需要的是妥协,不是执拗。所以,尊重别人的生活,尊重别人生活中的权利,不要自以为是地去改变,也不要因为没有改变而懊悔自责,因为幸福有多种形式,你认为的幸福,未必就是他想要的。” 这不是推卸责任,这是一种成熟。心态上从年轻时候的奋力去改变到中年时期的坦然去适应,代表着你与这个世界的和解,也是个人境界的一种提升:由只从自己的的感受出发到尊重别人的感受。每年春节都会诞生无数乡愁题材的文章,这些文章诉说着游子们心中的无奈,吐露着游子们无法尽孝的愧疚,很多人更是不能承受这份生命之重,悲伤得不能自已。 其实,这又何必。用自己的双肩扛起父母的人生,父母未必幸福,用自己的双脚帮父母走完剩下的路也未必是父母所愿。无论何时,我们必须承认,父母与儿女,大部分时间里只能各自在自己的生活里遥望彼此,然后各自走着自己的路,谁都不能代替谁去生活,就像我在去年的一篇文章里说的:《父母与儿女,也是一段浅浅的缘分》。 常常,子女总自以为是地认为,给父母物质上最好的,让他们住洋楼,穿洋衣,吃洋餐,周游世界,才是幸福的,而完全忘记了父母内心的需求,忽视了父母内心被几十年的生活所锻造出来的幸福观,把自己认为的幸福生硬地套在父母的身上。做到了,沾沾自喜,做不到,耿耿于怀。 其实,不打断父母正常的生活恐怕才是最好的。这就犹如一颗大树,你觉得它长在贫瘠的地方受苦了,所以你想把它挪到自认为肥沃的土地上,为了成功挪走,你不惜砍掉它的枝枝蔓蔓,让他脱离曾经生长的环境,孤独地伫立在城市的钢筋水泥中间。你心安了,可树呢? 所以,过年回家,无需太多乡愁,不要有无力感,也不要悲伤,高高兴兴地回,然后开开心心地走,只要父母还能自由行动健康生活,就无需太牵挂,其实他们也很幸福。

May 4, 2018

成为深度学习专家的七个步骤

1、对机器学习有基本的理解,最好的材料是Andrew Ng在coursera上的公开课程,看过教程能让你对机器学习有基本的认识,完成课程中的任务会让你对机器学习有更深入的理解; 2、接下来需要培养对神经网络的感觉,实现一个神经网络,并利用它做点事情; 3、理解神经网络的原理很重要,但简单的神经网络并不足以解决最有趣的问题。神经网络的变体-卷积神经网络(CNN)非常适合于图像识别类的任务,斯坦福大学的有关资料如下:CS231n 用于图像识别的卷积神经网络(笔记)和课件。另外两个参考资料如下CNN 参考资料1和CNN 参考资料1。 4、接下来需要在自己的电脑上运行CNN; step1:买一块GPU,安装CUDA开发工具包 step2:安装Caffe和GUI包Digit step3:安装Boinc,这个工具对你理解深度学习并没有帮助,但能够让其他研究人员在闲暇时间利用你的GPU做科研 5、Digit提供了少量算法,比如用于字符识别的lenet算法和用于图像分类的Googlenet算法。要想运行这些算法,需要下载相应的数据集lenet数据集和Googlenet数据集。你也可以修改算法来执行其他的图像识别任务,比如我们的工作; 6、对于自然语言处理任务,递归神经网络RNN更适合。学习RNN最好的材料是斯坦福的讲座及笔记,也可以下载Tensorflow来构建RNN; 7、现在你可以尝试用深度学习来解决各种各样的难题了,比如面部识别、语音识别和自动驾驶等; 如果你认真完成以上步骤,那么祝贺你,可以去Google、Baidu、Microsoft, Facebook或Amazon申请职位。

December 10, 2017

我们萌生Migration的念头了

女儿出生之后,我思考了很多关于未来的事情,这一年来读了不少政治哲学方面的图书,对自己的价值体系进行重构。今年起我陆陆续续有migration的念头,最大的驱动是三个:1、子女的教育和未来(我们不是京户,虽然这个问题可以取道天津,但总觉得心里不舒服;而如果走国际校,成本先不说,最终子女还是要往外走);2、这两年帝都的雾霾(准确的说是整个国内的雾霾)让人窒息;3、对每天地铁以及所从事的工作开始有些厌烦,当然也是中年危机之前想给自己找点事情做。 想migrate第一步肯定是先考英语,而我已经10年不学了。我选择PTE考试,因为估计雅思4个7我是绝对过不了。考试今天是我第一次参加PTE考试(相当于雅思),听5.5,说5,读6,写 6,总 6,这个成绩离4个7好遥远….但是既然决定了,真的考不过就当学英语吧,未来一年好好学习英语。

August 31, 2017

深度学习随感

“深度学习是一个激情澎湃却又相对单一的领域。有一些深刻的想法,一些主要的学术会议,其中若干会议之间也存在着很多重叠。然后,一篇篇的论文在不断地提升和完善同样的一些基本想法:使用SGD(或者类似的变体)来优化一个代价函数。这些想法非常成功。但是我们现在还没有看到这个领域的健康发展,每个人在研究自己的深刻想法,将深度学习推向很多的方向。所以,根据社会复杂性度量,忽略文字游戏,深度学习仍然是一个相当粗浅的领域。现在还是可以完全地掌握该领域大多数的深刻想法的。” via:Michael Nielsen 上世纪50、60年代神经网络曾经非常火爆,局限于计算能力和算法束缚,没有获得商用,迅速进入寒冬,但Hinton和Yann Lecun坚持做了二十多年,去年以来媒体对AI大肆渲染,而这两位深度学习的领袖却保持很理性的认识。下面是Yann Lecun在facebook的声明:AlphaGo战胜李世石后,Slashdot上有帖子帖子宣称:“我们现在知道,我们不需要任何大的新的突破,以获得真正的AI”。 这是完全,完全,可笑的错误。 正如我在前面的陈述中所说的:大多数人类和动物学习是无监督的学习。 如果智力是一个蛋糕,无监督学习将是蛋糕,监督学习将是蛋糕上的糖霜,强化学习将是蛋糕上的樱桃。 我们知道如何做结冰和樱桃,但我们不知道如何做蛋糕。在我们想获得真正的AI之前,需要先解决无监督的学习问题。 这只是我们知道的一个障碍。还有大量的我们不知道的障碍。 最近几年deep learning使得机器对图像,语音,人类语言的认知能力获得了质的飞跃,在图像识别方面甚至已经超越人类,出现了很多看起来是黑科技并且非常实用的技术,比如人脸识别,图片自动标注描述,机器翻译,无人车等等。但不应该去夸大AI,媒体的大肆宣传,会让大家都以为实现科幻电影里出现的强AI,这样只会换来失望,从而导致AI的下一个寒冬。当然,乐观的来讲,深度学习对于弱AI的发展起到了非常大的作用,而且也有理由相信未来(我觉得还需要近上百年的发展)肯定会诞生强AI。

June 4, 2017

深度学习猜想

推荐所有立志从事机器学习特别是深度神经网络学习算法的人认真研读这本书。书评:作者从最根本最朴素的思想开始,结合实践进入深度神经网络,这本书堪称神经网络的几何原本。另外,第二章有非常多的多元微积分公式和证明,作者说可以跳过,但建议数学系毕业的人认真研读并完成证明,因为只有了解这些才可能进行算法的创新。 如果拉马努金在世,他应该能从上帝那里拿来神奇的公式,让深度学习的算法更优。另外,我猜想基于欧拉公式设计逻辑神经元的算法,或许会彻底改变神经网络算法—因为现在的S型神经元只包含自然对数e,英应该要加入pi,i,0和-1才是优美的。哦,这只是天马行空的猜想。

May 4, 2017

写在女儿出生之后

2016年6月初,女儿出生了,我当爸爸了,非常兴奋和开心。看到女儿出生的那一刹那,我感受到生命的奇迹,更感受到爱人的艰辛——那一刹那脑袋里就想着不能让她再生第二个了。从买房、装修、结婚、度假、出生,似乎一切都在计划之中,但生活确实发生翻天覆地的变化,我从刚开始不知所措、谨小慎微,到慢慢地与女儿、爱人磨合,经过近半年的时间才慢慢达成一家三口的一点默契。记得修完陪产假,在家待了一个月后,上班第一天发现原来上班才是休假啊!!! 我们是完全自己带小孩,这期间的辛苦只有我们自己知道。举个最简单的例子,最近进电影院,都是把女儿弄进去睡着了,两个人才出门,每次都想电影情节一样,好几次电影开始前10分钟进入地库…都说爸爸爱女儿,这个是只有当你有一个女儿了之后才深深感受到。所以我舍不得宝宝,6个月前都是抱睡居多,前阵子开始锻炼宝宝自己在小床入睡,虽然会有反复但已经初有成效,其实应该在三个月后就让宝宝自己入睡。值得欣慰的是,女儿出生回家后都是睡小床,满月后夜里最多醒两次,挺多时候能晚八点到早上五点,这些都是爱人坚定的育儿观念换来的结果。 希望女儿健康快乐长大,希望爱人能尽快走出产后不良情绪…

December 31, 2016

CentOS6 yum 安装memcached,CentOS6 安装Memcached PHP安装Memcache扩展

############# centos 6 第一二步省略,直接yum安装 1. 安装第三方软件库 wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.5.2-2.rf.src.rpm rpm -ivh rpmforge-release-0.5.2-2.rf.src.rpm 2. 查找Memcached yum search memcached 3. 安装Memcached yum -y install memcached 4. 验证安装 memcached -h 应该会输出一些帮助信息 5. 将memcache加入启动列表 chkconfig –level 2345 memcached on 6. 配置Memcache vi /etc/sysconfig/memcached 文件中内容如下 PORT=”11211″ 端口 USER=”root” 使用的用户名 MAXCONN=”1024″ 同时最大连接数 CACHESIZE=”64″ 使用的内存大小 OPTIONS=”" 附加参数 7. 查看memcache状态 memcached-tool [Memcache Server IP]:[Memcache Server Port] stats 如:memcached-tool 127.0.0.1:11211 stats =====至此,我们将Memcache服务配置完毕,接着我们配置PHP的扩展,以便在程序中来调用===== PHP共有2种Memcache扩展,一个叫Memcache(2002年发布),另一个叫Memcached(2008年发布) Memcached比较新,它依赖于limemcached库才能运行,不过它能完成基于Memcache服务的几乎所有功能,比如:Memcached::getResultCode ,它能返回上一次操作Memcache的结果,而Memcache则没有这个功能 Memcache(没有d)不依赖任何库就能运行,安装相对简单,同时也能完成Memcache服务的大部分主要功能。 下面分别介绍2者的安装方式。 8. 安装PHP的Memcache扩展(yum安装php已安装此扩展) wget http://pecl.php.net/get/memcache-2.2.6.tgz wget http://pecl.php.net/get/memcache-3.0.6.tgz tar vxzf memcache-2.2.6.tgz cd memcache-2.2.6 /usr/bin/phpize (如果不知道phpize在什么位置,可以用find / -name phpize查找) ./configure –enable-memcache –with-php-config=/usr/bin/php-config –with-zlib-dir make make install 记录下安装成功后的提示,类似于: Installing shared extensions: /usr/lib/php/modules/ 把这个地址记录下来 ...

December 3, 2015

互联网架构启示:一根网线引发的“血案”

互联网架构启示:一根网线引发的“血案” 引言:当一个网站做大的时候,无论是研发还是运维,每一个细节都至关重要,网站的任何一个小的瑕疵都会被无限放大。 公司有一个基于微信公共服务器号开发的产品,主要为微信用户提供在线交流、互动、阅读和科研分析等功能。前阵子升级了支付接口,运营人员开始用红包推广,并且把原来微信服务号的积累的用户引流到服务号本身的网站服务,网站堵塞时秒并发连接数峰值达到1k,数据库瞬间批处理数也达到了2k+,这个量其实不算什么,但因为运维架构的一个疏忽,导致网站2次宕机。这里先说明两点:运维属于公司另外一个部门,当然大家还是相互协作还算比较好;我们的服务器都是32G内存,4核2GHz的CPU的品牌服务器。 第一次宕机:抢红包导致宕机3小时。 我们发布完毕2.0版本之后,运营很开心,打算搞一次庆祝活动:只要来关注公共号,进入首页就可以另一个1块钱红包,任何人都可以。发红包当天,我没有接到通知,到家收到微信的提醒,过了差不多1小时,运营电话过来说网站慢了,而此时我连服务器都很难连接不上,运维的说50兆的带宽只用了8兆(这里有一个细节他没有告诉我:网络是一条几乎是直线在运行),再过来半小时,网站几乎打不开了。过了一阵子我登录终于能登录服务器了,但还是很卡,看了服务器的指标,我关注了io、cpu和内存,发现全部正常,idle很高,几乎都是80%,不过没有注意网络。接着两个多小时,直到红包抢完,网站才开始能正常访问。第二天,运维与我们完成了负载均衡的搭建,4台web,1台专用db,cache不变,与架构变化之前一样,只做了web服务器级别的cache,我个人判断这样的量还不需要加memcached和读写分离。后面两次发红包量没有那么大,服务器都正常,但我观察了服务器,发现一个现象:当并发数比较多的时候,db服务器指标还是正常,但总有点卡顿,这次我观察到有时候内外的网络会瞬间冲到98MB,咨询运维的同事说这个正常我们内网有千兆网卡呢,而且现在外网的流量不到占用不到10%。 第二次宕机:活动导入流量导致宕机1小时。 这一次宕机,我觉得不可能发生的。当天傍晚,运营的人一下子给微信十万级别的用户发消息,把他们引流进入网站,过了1小时网站又宕机了,一直过了高峰才恢复,那天只有运维的人在跟服务器情况。第二天,运维的跟我说是我们数据库有问题,他们的理由是:外网流量还是一条7MB直线,所有服务器的指标都正常,但是一拔数据库的网线整个网际通了,所以是db处理不过来那么多请求、或者代码有问题。我当时有点懵了,因为看了流量,那天2个小时的pv达到了10w,鉴于这个产品我们使用了比较新的开发框架,我开始怀疑代码问题、数据库连接问题等等。然后先把所有能优化的都优化,包括动态的内容等也加cache,上了1台memcached服务器。我们还把用户行为用消息队列进行异步处理。改完之后开始google,研究程序架构支撑情况、数据库并发数等等,结论是感觉昨晚的量在昨晚这种条件下网站不应该宕机的,我甚至都怀疑是不是服务器采购的时候被动手脚了-_- 过了一周运营再次搞活动,活动之前我还发现一个问题:个别图书封面居然有5mb的图片,原来产品经理为了让用户看清楚图书封面要求用原图,我赶紧让工程师改成压缩图片。晚上刚到家不久,运营电话又过来了,说虽然没有宕机,内容也能看,但还是有点慢。我接到电话觉得很不可思议,心里想怎么流量那么高。登录服务器之后,发现流量也就是和上次一样,症状和上次也是一样,和运维的沟通,说他连不上服务器(网络是正常的),我特地看了db的连接也只有2位数,虽然偶尔会突然到2k多,但我知道这是因为网络堵住连接不到memcached。当天晚上就咨询以前的认识的运维大拿们,他们也觉得很不可思议,但我们判断肯定是硬件架构哪里出了问题,我把服务器的指标等都截图保留。公司运维的哥们这时候说怀疑是内外网公用网卡的原因,不过这种做法也不是不可以,因为内网有千兆网卡。第二天,又咨询了很多人,大家的结论是:网络有问题。问了好几次公司运维,都说:交换机是千兆的、防火墙是千兆的、网卡是千兆的,后来我以前的同事乌咔咔大拿注意到我截图里面显示网卡只有100MB,我赶紧检查所有的服务器,发现:内外网公用一个只有100MB的网卡!!!问了运维,他说网卡肯定是千兆,我说是不是被自适应了,他楞了一下,说不是自适应,是网线可能是百兆的,去机房确认了一下,发现服务器用的全是5类网线,而且是自己做的……运维也知道是啥原因了,走了特批买了超6类的网线换上。 目前网站一切正常,未来如果突破一定的用户量,肯定要做db的读写分离、cdn等。回过头来看,第一次宕机的可能性很多种,网线问题、web服务器超并发问题、db和web在同一台问题等;第二次宕机的原因应该是:这根网线引发,内网网络瞬间被挤爆,所有内部通信在等待、数据库连接超时,我的理由是这一天的秒连接数也只有几百,数据库连接也就1k多;第三次虽然没有宕机,但网站有些慢,依然是因为这根网线的原因。 这就是一根网线引发的“血案”的案例,希望对看到的工程师们有所帮助。我本人一直做开发,也自认为自己开发能力、软件系统架构能力很强,但之前确实忽略了硬件方面的知识,这一次是彻彻底底、从头到尾上了一个课。

August 13, 2015

[转]MySQL性能优化的简单说明

原文链接 http://teddysun.com/424.html MySQL 作为 LAMP 组件中的重要一环,在网站架构中担当关于数据处理的重任。作为目前流行最为广泛的开源数据库,网络上已经有相当多的各种优化教程。本文将试着从改善 MySQL 配置入手,进一步提升 MySQL 的性能。 关于如何优化数据库结构及 SQL 语句不在本次讨论范围之内。 MySQL 性能优化我打算分为三个部分,一是物理硬件的优化,二是 MySQL 安装时的编译优化,三是 MySQL 的配置文件 my.cnf 的优化。 一、物理硬件的优化 磁盘 I/O 是制约 MySQL 性能的最大因素之一。 采用 SSD 的服务器肯定会比普通 HDD 硬盘性能要好;采用 RAID10 的肯定要比单盘的性能要好。 所谓物理硬件的优化,其实也就是服务器(VPS)硬件的堆砌。更多的内存,更快的磁盘,更强的 CPU 无疑就是最佳的。 二、MySQL 安装时的编译优化 一般情况下不建议直接 yum 安装 MySQL ,一来不能定制功能,二来版本比较老。所以我一般会采取编译安装的方式。 源码编译安装的前提条件(依赖包): 1、CMake。官网:http://www.cmake.org/ 2、GCC,A working ANSI C++ compiler. GCC 4.2.1 or later。官网:http://www.gnu.org/software/gcc/ 3、bison,2.1 or newer。官网:http://www.gnu.org/software/bison/ 4、m4。官网:http://www.gnu.org/software/m4/ 5、tar。官网:http://www.gnu.org/software/tar/ 编译参数: MySQL 5.5.x http://dev.mysql.com/doc/refman/5.5/en/source-configuration-options.html MySQL 5.6.x http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html LAMP 一键安装脚本里对 MySQL 编译的参数如下: -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_UNIX_ADDR=/tmp/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_EXTRA_CHARSETS=complex -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DWITH_PARTITION_STORAGE_ENGINE=1 -DWITH_FEDERATED_STORAGE_ENGINE=1 -DWITH_BLACKHOLE_STORAGE_ENGINE=1 -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_EMBEDDED_SERVER=1 ...

July 16, 2015