MSRA面试总结

注:以下内容纯凭记忆,由于已经过去一个多月,不保证准确性。由于面试前没有签保密协议,本文透露了比较多的细节,如果有不合适的内容,请联系 bojieli AT gmail.com。

本来是想稳稳地保研,在创业团队好好干的,没想去 MSRA……因此直到申请截止前几天,我才从班主任那里知道这个消息,班主任说有个“微软小学者”奖,5000块钱呢,我想这么多奖学金肯定要啊,就用一天晚上用 MS Word 赶写了两页 Resume,第二天去教学秘书处开成绩单,比 deadline 晚一天提交了申请。后来才知道这个“微软小学者”跟“实验班”在某种程度上是绑在一起的,不过那个奖学金目前还没有得到任何消息。

根据邮件收件人列表,大概有67人报名微软实验班。面试时间是下午。面试前一个星期左右,西区的一位老师联系我,说有一位叫马毅的研究员,很牛,做图像的,想从少院招一个学生。他说我的项目经历和动手能力不错,但数学成绩不好,担心我能不能做得来,可以给我一个单独面试的机会。他说不 care 你的 overall GPA,比较 care 的是数学课程和专业课程的成绩。他让我看马毅博士的一篇代表作,不仅要看懂,还要理解其精髓。我回来一看,是把一个矩阵分解成一个稀疏矩阵和一个低秩矩阵之和的通用算法,可以用于图像去噪、视频监控等。就只看懂这么多,中间那些矩阵的复杂推导是一点也看不懂。我就觉得这个机会还是留给数学专业的同学吧。

继续阅读“MSRA面试总结”

多线接入主机上的诡异NAT

昨天,mirrors.ustc.edu.cn 遇到了一件诡异的事情。mirrors 有三条接入线路,IP分别是 202.38.95.110,202.141.160.110,202.141.176.110。mirrors-lab 是 mirrors 上的一台 LXC 虚拟机,有三个IP:10.8.95.2,10.8.140.2,10.8.10.2。

在 mirrors 主机上,配置了 iptables 将主机上的 50000~51000 端口直接映射到虚拟机内:

-A PREROUTING -p tcp -d 202.38.95.110 -m multiport --dports 50000:50100 -j DNAT --to 10.8.95.2
-A PREROUTING -p tcp -d 202.141.160.110 -m multiport --dports 50000:50100 -j DNAT --to 10.8.10.2
-A PREROUTING -p tcp -d 202.141.176.110 -m multiport --dports 50000:50100 -j DNAT --to 10.8.140.2

在虚拟机的 50000 端口运行了 rsync daemon,但只有 rsync://202.38.95.110:50000 能够访问,另外两个IP都是超时。诡异的是,我们在 mirrors 虚拟机和主机上用 tcpdump 抓包,看起来 SYN 已经收到,ACK 包也已经送出。tcpdump 抓入站包是在 netfilter 之前,我们抓的是物理网卡 eth0,入站包在被抓到时应该还没到 iptables,出站包在被抓到时已经通过了 iptables。更诡异的是,在与 mirrors 同属于一个网段的 blog 服务器上,三个IP访问都是正常的。为什么回复包发不出局域网呢?
继续阅读“多线接入主机上的诡异NAT”

关于开源软件镜像联盟(技术篇)

请先阅读:关于开源软件镜像联盟(非技术篇),谢谢

一、DNS or 301?

Update: 之前我对DNS的CNAME理解错误,现在更正。参考文献:https://tools.ietf.org/html/rfc3568

DNS方案(如果说得不对欢迎拍砖):

  1. 每个镜像分配一个二级域名,以便分别调度;NS记录设置为主站
  2. 用户从运营商DNS查询IP
  3. 主站根据来源IP(运营商DNS的IP)返回一个或多个镜像节点的IP地址
  4. 运营商DNS把这个IP返回给用户,同时缓存一定期限
  5. 用户与镜像节点建立连接,进行下载

301方案:

  1. 域名A记录解析到主站
  2. 用户与主站建立连接,发起HTTP请求
  3. 主站根据用户来源IP返回HTTP 301状态,跳转到一个镜像节点
  4. 用户与这个镜像节点建立连接,进行下载

继续阅读“关于开源软件镜像联盟(技术篇)”

关于开源软件镜像联盟(非技术篇)

Terminology: (好蛋疼啊,感觉挺别扭的)

  • 镜像:Ubuntu, CPAN, PyPi之类的
  • 镜像站:一个高校的开源镜像站,每个镜像站做了若干镜像
  • (镜像)节点:同时做了一个镜像的各镜像站

镜像联盟维护者:

仿照Debian的开发模式,镜像联盟维护者可以分为Mirrors Maintainer和Mirrors Developer。Mirrors Developer是拥有镜像联盟主站维护权限和决策投票权的核心开发人员;参与镜像联盟开发、镜像维护的均可申请成为Mirrors Maintainer。

继续阅读“关于开源软件镜像联盟(非技术篇)”