Home

[CMU小记]谈谈找工作(全职)

去年(2017年暂且称去年吧,反正2019刚开始)3月份,拿到CMU offer的场景还历历在目,这会儿都已经毕业了,同时也结束了为期4个月(最后一个学期)的找工作经历。短短的四个月,心态起起伏伏,从刚开始的没面试机会,到陆陆续续的机会,到面试机会多的想推掉一些面试,到纠结选offer。有颇多的想法还未来得及记录。趁这段时间记录一下。

植物园赏灯——多图流量预警

本文是流水账。 12月30日晚上,跟几个同学游玩了学校附近的植物园。今晚有两个没想到。 没想到我的学生卡在12月19日过期了,还是能够免费入园参观。 没想到还是有不少老美在晚上十点多还在外面玩的。总以为美国人民的夜生活几乎没有,到了晚上就在家待着了。

一个隐藏在黑客迷雾下的bug——记一次黑客攻防

前言细细回想这几周经历的问题以及过程,还是真是挺有趣的,迫不及待地希望整理一下总结给各位看官。关于文章的标题,如何既能吸引读者,又能避免标题党的嫌疑,着实让我斟酌了一番,后来就定了在坐看到的这个版本,个人觉得没毛病~ 让我们进入正题

记一次kubernetes网络调试

背景过了年leetcode的用户量渐渐起来了,1台服务器已经有点吃力,当高峰的时候经常有些请求超时。而且为了防止服务器的单点问题,需要部署多个replica以保证高可用性。之前的架构已经是在kubernetes集群上了,因此扩容相对而言比较容易。整个webserver的架构如下图所示:

在kubernetes中配置skydns

背景kubernetes中的集群发现有两种方式,一种是环境变量,还有一种就是dns服务。对于环境变量,在使用上有一些限制,它依赖于svc和rc的启动顺序: 如果rc先于svc启动,那么pod里面就没有相关svc的环境变量,这种方式违背了kubernetes的理念,即资源之间是解耦的。推荐的方式是使用dns的服务,这篇文章主要关于部署skydns的过程以及其中遇到的问题和采用的方式。

手动在kubernetes集群中添加minon

背景去年年中我使用ansible给项目部署了一个小型的kubernetes集群,部署源码可以在这里找到:contrib。随着业务的发展,目前的集群规模很有可能在明年迎来瓶颈,因此需要 扩容.当然可以继续通过之前的contrib去部署,不过有几点担忧: 目前的系统稳定地提供着服务,ansible脚本可能会对集群产生不可逆的影响 对于contrib的代码不是特别熟悉,不清楚它具体做了哪些步骤,总体来说还是不放心 同时,作为一个system admin,对于集群必须了如指掌才行。因此,在这里做一次演练,手动为已有集群添加节点,增进了解,也为今年的扩容做好准备工作。

nginx中map模块的使用及性能测试

背景最近我操刀了leetcode的论坛迁移,整个过程持续了几周的时间,总算暂时告了一个段落。常使用leetcode论坛的用户应该已经发现论坛已经大变样了吧~期间遇到了不少坑坑洼洼,将来也还会有好多问题等待去一一解决。关于这个迁移过程中的收货,这篇文章中就不细说了,有时间再另开一篇博文。这篇文章主要关注在url-mapping以及它的性能问题。 问:url-mapping的问题从何而来呢?旧的论坛和新的论坛是两个不同的discuss框架。前者是phpbb,现在是nodebb。两者的 url routing 完全不一样,比如说同一个topic,在原来的url是:http://hostname/discuss/<topic_id>/<topic_name>在新的论坛中是:http://hostname/topic/<topic_id>/<topic_slug>(这里就不讨论两者甚至连topic_id都不一样的问题了)。而在广袤的互联网海洋中,旧论坛的url可能到处都存在。我们不希望在论坛迁移后,用户点那些链接就失效了。我们希望的是用户访问旧的url可以被重定向到新论坛的某个地址。所以就产生了url-mapping的问题。

在linode服务器上安装kubernetes集群

前言这篇文章其实主要是记录我在安装kubernetes集群时遇到的坑,然后是如何解决的。关于kubernetes的概念,以及安装kubernetes的详细流程将不在本文涉及。 问题背景我已经在Digital Ocean成功部署了一个小型的kubernetes集群,包含一个master和一个slave。部署的方式是使用ansible,这里有一个项目可以参考contrib,按照里面的配置配一下,就可以一键部署集群了。 由于linode机器比DO的机器性价比高一点($40/month这一档前者是4核的CPU,后者只有2核),所以想把集群迁移到linode上。然而在使用脚本部署的过程中总是报错,查了一下发现kubernetes的flannel网络层插件始终起不来,查看了systemctl的日志,发现flannel无法初始化vxlan的网络,具体症状可以参考这样一个issue。

算法训练——GCJ-2008-R1A-B-Milkshakes

题目链接: https://code.google.com/codejam/contest/32016/dashboard#s=p1 分析:注意到每个customer最多只能有一种奶昔是”malted”的,这点是解决这题的关键。可以推出以下结论: 如果所有用户至少有两种喜欢的奶昔,那么必然有一种是”unmalted”,那只要保证所有奶昔种类都是”malted”就解决了。 如果有部分用户只喜欢一种奶昔,如果该奶昔是”unmalted”的,那么可以不用管它。 如果有用户喜欢一种奶昔,且”malted”,那么需要处理