疫情期间的学习

2003年,非典开始,而我恰好刚从前东家辞职,于是我待业在家将近一年的时间。直到2003年11月份,才机缘巧合得加入到了微软。在那一年的时间内,我的主要时间都在用来学习Microsoft .NET平台技术,可能也正因如此,才加入到了微软。

2020年,新冠肺炎又开始蔓延了,年少时一直希望可以天天放假,或者Work from home,但当梦想走进现实,我相信很多人和我一样,又开始怀念在公司工作的日子,毕竟都到了上有老下有小的时候,在家永远无法专心的工作学习。

疫情期间,工作不像之前那样饱和,所以开始折腾起了源代码编译OpenWr,先是编译了X86-64版本的,在VMWare Fusion虚机里面运行,搞懂了一些基本编译步骤以及使用技巧,但发现使用一台PC来做旁路由成本太高,正好手上有一个树莓派一代(Raspberry 1b),于是又编译了树莓派版本的并且成功运行,将其配置为小米路由器R3P的旁路由,但实际运行后,发现速度超慢,毕竟第一代的树莓派各方面的配置太差。

有一台闲置的小米Mini路由器,原来刷的是Padavan,感觉速度越来越慢,又正好刷了不死Breed,所以就编译了小米Mini版的Openwrt,运行起来非常正常,但家里面是300M宽带,小米Mini只有100M的LAN/WAN口,感觉不爽,继续折腾。

于是我瞄上了小米路由器Pro,来吧,折腾。编译完成后,按照网上搜来的教程进行刷机,第一次刷失败,直接将原系统删掉了,导致红灯一直闪烁,直接全身冒冷汗,以为是彻底刷成砖了。后来在网上查了一下,只要一个U盘就可以恢复官方固件。在恢复后继续冒险尝试,最终成功。

现在一切正常了,可以继续漫游在国际互联网之上,而且速度不错。

但接下来要折腾啥呢?

初识Kubernetes on AWS

最开始玩博客的时候是2002年左右,把Scott的dotText进行了汉化,找了一哥们的家用电脑做了服务器,就正式对外提供服务了,那时候也没有备案之类的事情。虽然简陋,但作为国内最早提供博客托管服务的网站,还是吸引了不少志同道合的朋友。随着我后来加入了微软,博客堂在微软技术圈越来越知名,而后博客园以及CSDN也对外进行服务。

后来我进入了新公司,而新公司从事的技术与微软完全不同,所以对于博客堂也没有精力维护,使其日见荒芜,而写博客的朋友们也开始转向了微信公众号等战场,在不同的领域散发光热,正所谓沉舟侧畔千帆过。不过博客堂的文字毕竟是这么多朋友的青春时光,所以我一直还是将相关内容进行了备份。由于.NET/C#技术栈对于我渐行渐远,所以博客堂也不再使用WISE(Windows/IIS/SQL Server/Expression),而转向了Wordpress。

改到Wordpress之后,可以选择的Hosting服务也变得宽广起来,这些年来,出于省钱的目的,先后试用了Digital Ocean、Linode以及Vultr等托管服务,最后搬到了搬瓦工。Wordpress也由刚开始自己在VPS上安装,也逐渐改到了Docker compose上。

两周前,突然对于Kubernetes产生了兴趣,于是利用业余时间,在自己的Mac上搭建了Kubernetes集群进行了学习,逐步掌握了Kubernetes的基础知识,然后上周开始在搬瓦工的主机上将博客堂迁移到了Kubernetes上,由于搬瓦工主机就是一个年费99美金的单VPS,所以只能构建一个Master Node,存储也只是采用了Local的方式,且由于跑了Gitea、Pypi、Jupyter Notebook(Tensorflow version)等众多服务,所以资源总是捉襟见肘,经常见到Pod会被Evicted的情况,使得博客堂服务经常性中断,真是苦不堪言呀。 从周六开始,启用了AWS,阅读了大量AWS的文档,决定采用的架构是AWS EKS,带了两个work nodes(两个t2.medium类型的EC2实例),另起一个EC2,挂载了EBS硬盘,作为NFS Server,而周日一天都在解决NFS connection time out的问题,终于今天彻底解决(原来是security group权限配置的问题)。 Ingress方案采用了Traefik,其整合了Let’s Encrypt的SSL证书自动续签服务,比较符合我的要求。MySQL目前还是使用docker版的MariaDB,但后期准备迁移到AWS RDS上,数据库也准备改用我近一年来用的Postgres上。

目前运转一切正常,以此为记。

机器学习学习笔记(2)

学习始终是一件让人疲惫的事情,而我个人又特别钟爱发散性学习,所以虽然这几天如饥似渴的学习了很多新内容,但学习笔记却一拖再拖,始终没有落笔。

简单的来说,这几天除了观看了吴恩达的视频之外,还开始根据其中提到的术语,通过搜索引擎以及维基百科,不断拓展学习的外延,先后了解了DNN/CNN/RNN等术语,然后又查看了TensorFlow/Caffee等框架,由于个人目前比较钟爱Swift语言,所以又通过Apple Developer网站阅读了部分Core ML以及Vision的文档。但这些知识直到目前为止,尚未真正落实到纸面上。所以随着看到的资料越多,疑惑也越来越大。最终决定,还是需要收收心,先从基础入手。

什么是机器学习

维基百科上关于机器学习是这样介绍的:

机器学习有下面几种定义:

  • 机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特 别是如何在经验学习中改善具体算法的性能。
  • 机器学习是对能通过经验自动改进的计算机算法的研究。
  • 机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。

一种经常引用的英文定义是:A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P, if its performance at tasks in T, as measured by P, improves with experience E.

这个定义似乎把“机器学习”说明白了,但似乎又云里雾里,并不是特别让人能够记忆深刻。作为一个曾经的开发者,我准备把这个定义简单化,机器学习就是让电脑从一堆杂乱无章的数据中,自行找到规律,并且形成算法的科学。

在以前写代码的过程中,算法总是由程序员根据需求固化好的,然后将用户的输入,比如鼠标、触控、键盘输入等,根据一定的规律,转化为屏幕上的文字、动画或者语音给输出。但在面临一些特别复杂问题时,比如语音、图像识别、无人驾驶等,可能无能为力。而这些领域,恰恰是机器学习可以发挥特长的领域。

机器学习的分类

机器学习主要划分为监督式学习以及非监督式学习。其主要区别在于训练集是否有人对元素进行标注。

监督式学习

维基百科上的定义如下:

监督学习从给定的训练数据集中学习出一个函数,当新的数据到来时,可以根据这个函数预测结果。监督学习的训练集要求是包括输入和输出,也可以说是特征和目标。训练集中的目标是由人标注的。常见的监督学习算法包括回归分析和统计分类。

在监督式学习中,我们有一些现有的数据,并且这些数据是现实中客观存在的”right answer”。而且这些数据有着各种各样的标签。

回归分析

吴恩达的视频当中,给出了两个示例,第一个是关于房价的,我们搜集了一些房价数据,这个房价数据主要与房屋面积相关。将房屋面积作为横坐标,房价作为纵坐标,我们可以这些训练集标注在二维坐标系中,如果仔细观察,这其中会有一定的规律,基本上可以达到当有人告诉你一个房屋面积时,你可以告诉他房价大体的价格。而这个规律,其实就是一个线性函数。类似于下图。

回归分析

统计分类

关于统计分类,吴恩达给出了一个关于癌细胞的示例,比如根据过往的记录,我们有了一系列的实测到的细胞标本,这些标本中有些是癌细胞,有些是良性肿廇,每个细胞的大小都不一样。所以当我们拿到一个新检测到的细胞时,根据其大小,可以基本推测其是恶性或者是良性的。

非监督式学习

维基百科上的定义如下:

无监督学习与监督学习相比,训练集没有人为标注的结果。常见的无监督学习算法有聚类。

我们得到了一系数据,这些数据并没有准确的标签,不存在任何给定的标签。但这些数据总是会扎堆出现,所以当出现一个新数据时,如何给它找到一个合适的“堆”,是我们需要解决的问题。

举例来说,现在的搜索引擎都有类似于“相关新闻”的内容,同样一件新闻,在不同的媒体平台(CNN/凤凰卫视/BBC/CCTV)都有报道,如何将所有不同媒体平台对于同一个新闻的报道给“堆”在一起,这就是无监督式学习所要解决的。

总结

纸上得来终觉浅,作为刚刚了解了机器学习定义以及分类的入门者来说,还有很多知识要学。不过能够学习新知识总是很兴奋的。我已经在我的Mac电脑上使用Docker安装了TensorFlow,准备再利用一周的时间了解一下基础知识,届时再来给大家汇报。

假如真有时间机器…

不知不觉之间,博客堂已经整整十六年了。有时候在上下班路上,翻看着过去写的旧文章,竟然一时恍惚,甚至根本不记得自己曾经写过这篇文章。比如下面这篇:移动互联网要来了,Are you ready?

会场内外的所有气氛都让我回想起了1999年,在那时候,无论是餐厅,咖啡馆,甚至是坐着公车拿着刚上市的手机,大声喧哗的都是互联网相关的话题。大家脸上的那个兴奋劲呀,似乎金山就摆在面前,如果你不伸手,简直比傻子的IQ低。

而此时此刻,似乎时代又在循环,在炒作了互联网以及移动互联网之后,当前最热的热点似乎就是比特币了。微博、朋友圈、知乎,都在充斥着与比特币相关的文字:区块链、去中心化、匿名货币等。而在这背后都是一夜暴富的心态。

有时候我在想,假设真有时间机器,如果能够助我回到十年之前,我应该可以如何暴富呢?是去找张小龙聊天,卖给他一个微信的创意?还是在各大城市疯狂购房?或者不声不响,偷偷用私房钱买几个比特币呢?

假设真有时间机器,我更愿意用它飞到十年之后,看看未来的一切。毕竟只有未来才有无限可能。在十年之前,我从来没有想像到今天的移动互联网时代,会带来如此多的生活便利:移动支付、电子商务、共享单车等等。原来以为只是别人用来忽悠热钱的投资梦想,而今一一成为现实。

或者十年之后,比特币也会成为一种真正的货币?

移动互联网要来了,Are you ready?

两天前,去听了CSDN组织的2010中国移动开发者大会。会场内外的所有气氛都让我回想起了1999年,在那时候,无论是餐厅,咖啡馆,甚至是坐着公车拿着刚上市的手机,大声喧哗的都是互联网相关的话题。大家脸上的那个兴奋劲呀,似乎金山就摆在面前,如果你不伸手,简直比傻子的IQ低。

而今,这种气氛越来越浓烈,我这段时间也经常钻咖啡馆,无论是热闹的还是幽静的。只要旁边桌子上有年轻人在,基本上都在讨论App Store、Mobile Device相关的话题,似乎那个“金山”时代真的回归了。在2010年中国移动开发者大会上,李开复也像列宁同志一样,向年轻人宣告移动互联网浪潮将在三年内爆发(难道现在还不叫爆发吗?)。我想起了那句话:此地人傻钱多,速来。

10年前那次风暴真的是中国互联网浪潮的起始点,现如今的腾讯、百度、新浪都是在那一波风暴中开始创业的。而如今,这些企业都是如日中天,甚至有些有了中小型企业的拦路虎,挡路石。可是在初创阶段,他们也曾经多次羡慕嫉妒恨过其它大企业,拷贝雅虎,拷贝ICQ,拷贝谷歌等等,把所有的一切都拷贝回中国。只不过时代不同了,现在“爷是上等人了,你们得换个称呼了”,所以才有了“狗日的”XX,那些来自于挣扎在创业边缘的人员的呼喊。

所以10年前的那次风暴就是一个风暴,虽数活下来的活得非常不错,锦衣玉食,但仔细想想,在风暴过后的寒冬中死去的何止千万?那些无数曾经在咖啡馆坐在我邻桌的,充满伟大志向的年轻人们,你们现在还好吗?那些在媒体上创造了无数关于“领先国际平均水平五十年的创新”、“中国的微软”、“中国的比尔盖茨” 话题的人们,你们在新的风暴前,还有雄心壮志吗?

新的风暴又要来了,我们需要做些什么?另外,我们需要做好防冬的准备吗?

移动互联网要来了, Am I ready???

怀念Ray Ozzie君

我在大学里面学的是物理教育专业,但竟然也会有计算机课专门教授Lotus 1-2-3。那时候的课程很闷,教授们只是按照教材中的相关章节,一个功能一个功能的介绍,所以学了一个学期,我都没有搞明白Lotus 1-2-3是干什么的,操作系统?编程语言?后来用到Excel才知道,噢,原来如此。

如今,大学毕业很多年了,这段历史突然重新映上我的心头,只是因为Ray Ozzie已经下台鞠躬,挥挥衣袖,不带走一片云彩。

我加入微软比Ray Ozzie君稍早那么一点点。终于实现了小时候的梦想,在这家伟大的公司里面工作,虽然离比尔盖茨很多层次,但一想到这是我偶像的公司,就激动不已,甚至每天上班都感觉很有朝气,真正的“您的潜力,我们的动力”。再后来,盖茨在公司内部完成了禅让。虽然公司内部没有任何言论,但能够感觉到,每个同事都在心里面咯噔了一下。虽然过后微笑还是继续,激情还在燃烧,但明显的感觉,有些失落。

盖茨选择了Ray Ozzie,成为了首席架构师,在新闻媒体中,一直被渲染为“盖茨接班人”。关于Ray Ozzie君的资料,我还是从新闻报道中看到。Ray Ozzie,满头白发,风度翩翩,从外表上非常让人敬重的一位绅士,甚至感觉从盖茨还魅力十足。第一次在公司总部听他演讲,总感觉他提不起精神来,也没有任何技巧,非常紧张,那时候恨不得跳上台去,帮他讲。于是乎,对此君充满了失望。好象在第二年,又在一个场合,听到Ray Ozzie君的演讲,突然发现他有如神助,非常自信,非常有魅力的完成了演讲。后来在网上看了一些他的访谈,他的邮件。突然我发现,在我心目中,他开始慢慢走上盖茨走后空缺的偶像宝座。

今天早上,不知道为什么提前醒了过来,看到了邮件,知道了他要走的消息。他的走,让我想起了Windows Vista的负责人,Jim Allchin,他也是微软高层中充满人格魅力的一位。但因为Windows Vista的失利,他已经走人,去办乐队去了。也不知道他的乐队办得如何了。从照片上来看,他很满意现在的生活。有兴趣的可以去看看他的个人网站:http://www.jimallchin.com/ (如果你是开发人员,肯定非常好奇他网站的架构)。

Ray Ozzie的走我并不是特别吃惊,因为从三月份开始,他就非常少出席公司重要会议了。很多Business的整合也缺少了他的声音,所以那时候我就在新浪微博上提出自己的质疑。而如今,当预言成真,我只有感觉更加失落。

Ozzie,走好。

博客堂要移民了

为了给大家提供更好的服务,也为了域名安全以及其它事项,博客堂准备移民到美国Godaddy服务商,包括域名以及空间。

在未来一周的域名注册商更新期间,访问博客堂将会出现一些不正常现象,这可能是在迁移期间的正常现象,请大家谅解。

另外,提请所有的博主注意,我们将会以WXR(WordPress eXtend RSS)文件格式为大家提供数据备份服务,包括大家所有的历史数据:随笔、标签、文章中图片等。如果大家愿意跟随我们一起移民,不需要任何动作。如果不希望移民,而想转去其它博客提供商,并且希望索取备份文件,烦请与我邮件联系,非常感谢。

谢谢大家的关爱。

SharePoint Server 2007 的一个问题

在用 Deep Zoom Composer 生成内容后,传到 SharePoint Server 2007 中后,发现不能浏览,仔细检查发现 Deep Zoom Composer 生成的很多以 _files 的目录,传到 SharePoint Server 2007 中后,目录被改了名字,自动在最后加了下划线 “_”,导致不能正常访问。

此处详细介绍了此问题。

 

在微软创新日北京站ASP.NET MVC部分的Video

这段时间正在全国各地跑,在微软创新日上讲ASP.NET MVC相关的内容,以下Video是在北京场录制的视频内容。如果大家感兴趣,可以直接观看.课程内容非常简单,适合于ASP.NET MVC初学者或者ASP/JSP/PHP开发人员。

Special thanks to Sandro Nigris. 🙂

ASP.NET MVC课程第一部分

ASP.NET MVC课程第二部分

本视频上所使用的Demo非常简单,就不再放Demo Code了,Slides可以从下面下载:

观止之读后感

新闻报导总是喜欢一些比较吸引眼球的话题,所以最近N年以来,我看到了太多的报道来渲染事实。报道IT人物时会将其打造成“中国的比尔 盖茨”,而介绍IT公司时则会同等思路的介绍“中国的微软或者IBM”。很好很强大!可惜就像我在八几年看到的一篇关于前苏联要建造人造月亮的文章一样,从小学开始让我激动了二十余年。但我现在大学毕业了,天上还是只有一轮明月。

我们从来不否认梦想的魅力。正如央视的某广告语:心有多大,舞台就有多大。但如果光做梦,不干活,那就成了白日梦了。即使你每天可以睡十二个小时,估计这个梦想也永远无法实现。那么“起来挑战微软”的那个人也就只是梦想家,而非实干家了(看到现在方兴东已经开始使用IT评论家的Title了,不再做其博客网的实际工作了)。

很多人可能看过了N多关于微软/比尔盖茨的传记,从企业文化等角度对于微软进行了方方面面的介绍,包括狗食文化(Dog food)、三权分立等等。不可否认的是,这些文章或多或少的对于一些历史事实有一些主观美化的臆测,毕竟里面的大部分人物是现实中的人物。某些决策失误该忽略就忽略,所以从这些书籍里面,我们看到的微软的成功是必然的。

而《观止-微软创建NT和未来的夺命狂奔》则尽可能得再现了微软的一段真实历史。这本书没有从微软的企业文化角度着手,也没有从行业历史着眼。只是介绍NT产品组以及卡特勒个人在创建Windows NT的历史,某种程度上,甚至有些平铺直叙。但在这些平铺直叙当中,你仍然会感觉到很多“刀光剑影”。如果当年没有卡特勒,如果当年卡特勒拒绝加入微软,如果微软与IBM继续OS/2,如果NT开发到一半被取消,如果NT开发再延期三年,那么,一切都不可想像。

在看此书的过程当中,我使用公司内部的Exchange Server查找了这些历史人物,发现大部分人现在还在微软,比如主人公卡特勒现在是微软资深技术院士(SR. Technical Fellow),而Jim Allchin在完成了Windows Vista之后离开了微软等等。我很敬佩作者这种不为尊者讳的写作态度,让我们可以更加真切的去读这段历史。从中感觉到微软的成功是建立在无数的偶然过程,而这些偶然的背后也有着一些必然,比如盖茨的宽松以及宽容等。

读此书我仅用了一周时间,在临睡着阅读一小时。阅读时我也遇到了一些困难,从小到大,我无数次拿起了《红楼梦》想看一遍,但都是受束于其错综复杂的人物关系而从来没有完成过。同样,《观止》这本书的人物也受多,每当引入一个新人物的时候,都会把其祖宗三代介绍一遍,也让我烦恼不已。

不过,我仍然强烈推荐大家去读一下这本书,如果你还有“起来,挑战微软”的梦想的话…