都是口水话,未整理,未整理,未整理,未整理,未整理。。。

都是口水话,未整理,未整理,未整理,未整理,未整理。。。

联系方式

QQ & 邮箱 [img height=16]http://ww2.sinaimg.cn/large/73740544jw1eoy8aomnq3j203c00gq2p.jpg[/img]

技术博客:[url]http://andrewyang.cn/[/url] GITHUB:[url]https://github.com/yangyuan[/url] 领英:[url]http://www.linkedin.com/pub/yuan-yang/86/56/5b4[/url]

主要技能

特色

● [b]大数据:[/b]有多年大数据相关从业经验,熟悉 OpenStack、云存储、虚拟化等云计算相关技术。 ● [b]深入底层:[/b]对操作系统底层比较熟悉,尤其是 Windows 操作系统,熟练使用 Windows SDK。 ● [b]天生码农:[/b]爱研究,爱创造。研究问题,尤其复杂的技术问题,非常有耐心,也多少有一点经验直觉。 ● [b]大量经验:[/b]拥有大量编程项目经验,在团队中充当过各类角色,有效代码量足超 25 万;拥有快速定位问题、快速系统架构的能力。

基础

● [b]编程基础:[/b]熟练使用基本算法和数据结构,熟练使用 C/C++、C#、PHP,对 Python、Java、JavaScript 等语言也比较常用。 ● [b]网页设计:[/b]有八年规范网页制作经验,跨浏览器兼容,可脱离 IDE 开发。 ● [b]数据库:[/b]熟练使用数据库 SQL,并且了解数据库性能的常见关键点。 ● [b]攻防安全:[/b]拥有计算机攻防基础知识,有一定攻防基础和实践经验。 ● [b]运维实践:[/b]熟练使用服务器操作系统(Windows、Linux)、数据库(SQL Server、MySQL)和常用服务端软件(如 Nginx、PHP-FPM)。

其他技能和实践

● 曾做过 iOS、Andriod、WinPhone 平台手机 APP,以及 Adobe Flex 应用。 ● 无障碍使用 Linux 操作系统。 ● 辅助过一些学术成功的编程实现。 ● 曾自学和研究多个加密技术和哈希算法。 ● 研究过 P2P 网络技术、3D 编程(包括 OpenGL、WebGL、D3D、Unity3D)、2D 动画(WPF、Cocoa2D)。 ● 有一定设计能力,为项目做过一些海报、LOGO。

教育背景

● 2013年 [b]硕士[/b]毕业于[b]北京理工大学 计算机学院[/b] ● 2010年 [b]学士[/b]毕业于[b]北京理工大学 计算机学院 计算机科学与技术专业[/b]

工作经验

[b]2015年05月 - 今:[/b]微软 [b]2013年03月 - 2015年04月:[/b]中国科学院计算机网络信息中心 科学数据中心,任大数据研发工程师。 ■ 研究、优化和扩充 OpenStack,前期主要维护 Nova、虚拟化 相关模块,后期也涉及 网络、存储、部署 等模块。 [b]2011年01月 - 2012年03月:[/b]北京九星时代科技有限公司技术合伙人,全职任技术总监。 ■ 带队完成全公司的产品项目和外包软件项目,并主笔了数十个 .NET、J2EE 项目。 ■ 当时作为在读研究生,的确是压力非常大,但见识、经验,尤其是团队经验,迅速提升。 [b]2010年06月 - 2010年10月:[/b]IBM 中国开发中心,兼职任实习软件工程师。 ■ 参与了内部工具 TSC 1.0 和 2.0 的开发维护,使用 Dojo 和 J2EE,个人主要参与了前端部分模块的开发实现。

典型项目

我的特点就是做过的项目又多又杂,涉及各个方面。更多项目请参考:[url]http://www.yangyuan.info/page.php?id=1031[/url]

ZESTACK (ECCP)

■ 在中科院网络中心期间的主要项目,ZeStack 是一个 OpenStack 早期版本的 Mod,针对科学院个院所特有的需求进行二次开发。 ● 前期负责维护和二次开发一个早期版本的 Nova,为 Nova 集成了 Baremetal(官方后来使用 Ironic)、ISO 挂载、Docker 集成、其他虚拟化技术集成等工作。因团队变化和开发需要,后期工作扩展至整个项目,为 ZeStack 开发了 Navigator(端口转发)、Spanner(集群部署)、“可视化部署”、“Windows 监控 Agent” 等工具模块,也参与了计算方案、存储方案、容器技术等调研测试工作。 ● 利用业余时间关注 OpenStack 以及整个云计算发展,仔细分析和对比了 OSLO 以及 OpenStack 各个模块的发展进度趋势,发布了 Prototype 等项目代码。

CSHARP2STL

■ 外包与西门子的项目,利用 C# 进行西门子 STL 语言编程(STL 是一种汇编语言,用于西门子工控 CPU,跟 MSIL 有极大相似性)。整个项目根据对方的需求,第一期是使用 C# 编译 EXE,从 EXE 解析出 MSIL,再把 MSIL 转化为 STL。第二期将使用自己实现的 C# 编译器。 ● 我负责第一期最有挑战的部分:不使用反射,使用纯 C++ 从 EXE 反编译出 MSIL。当时已有的逆向方案依赖 C# 的自身反射,微软自己的反编译程序也未开源。我不得不从 PE 结构开始分析,解析出每张 Assembly 表,利用自己对 Assembly 的理解,把 Assembly 转存为自己的数据结构,再输出成跟官方一致的 MSIL,仅用一个月就完成了核心逆向代码。 ● 当时存在的另一个挑战是资料不全,当时能找到的资料(包括一本微软员工所著)大多是针对 2.0 版本的 .NET。利用过时的数据,加上自己逆向分析和猜测,最终实现了支持 .NET 2 到 3.5 的完整逆向。

一体化电子展示(阅报)栏

■ 合作创业阶段的主笔项目,利用实现了可视化编辑器、原形预览、自动部署(更新)、监控管理等一体化展示需求,最终生成标准数据格式。配合经过美化的皮肤,客户可以使用客户端像装饰 QQ 空间一样定制电子展示(阅报)栏。 ● 由于人员紧缺,我独自完成了除皮肤以外的整个项目。 ● 利用 WTF 实现了编辑器、原形预览,其使用方式接近 PowerPoint,选取模板之后,可以随意选取添加按钮、图片、视频,定义预设动画。 ● 利用自己实现的文本数据库实现的安全更新,确保在下载正确的情况下,原子更新操作,只要操作系统正常,任何错误只要开机就可以恢复更新操作。 ● 利用自己编写的 VNC 服务端和客户端实现了监控管理,更改了 VNC 协议,使用了更专用的传输和操作方式,甚至可以批量进行鼠标、键盘操作。

内部项目管理系统

■ 为合作创业公司量身定制,用于技术研发部内部管理的管理系统。实现了类似 GITHUB 的项目管理、人员管理、工作分配、认领、记录、聊天等。能够为每个项目执行独立的 Hyper-V 虚拟机、Discuz 论坛板块、Samba 共享地址、Subversion 仓库。 ● 我利用业余时间完成整个项目,包括美工,并贡献给公司。 ● 整个系统使用 ASP.NET 作为主要后端,利用 PowerShell 和第三方接口访问管理 Hyper-V、Samba 服务、Subversion。 ● 分析 Discuz 操作数据库的源码,实现了 Discuz 操作。 ● 利用 Ajax 实现在线 IM,其界面接近手机 QQ,无 HTML5 依赖,不会因延时出现消息混乱。

多个 J2EE 项目

■ 合作创业阶段,由于公司生存需要,接了大量 J2EE 网站的项目和触摸屏展示项目。 ● 如国国家图书馆读者问询系统、中国国家图书馆政府信息公开平台、民政部内网平台、中国国家图书馆古籍保护网、中国国家图书馆立法决策触屏系统。 ● 我主要主笔后端和网页部分,一般使用 J2EE 配合 SQL Server。

课余项目

■ 如 MEOW 输入法、BINPLAYER 播放器、SHARPTERMINAL SSH 客户端,HEARTHROCK 炉石机器人等。 ● 我有按耐不住的创造欲,我业余时间大部分在尝试创造一些东西(或者 HACK 一些东西),大多数被丢弃了。 ● 从 2014 年夏起,我开设了自己的 GITHUB 和博客,记录了我的各种业余研究和创造成果。 ● 但这些项目大多属于半成品,因为我会忍不住去创造新的东西。


其他

学校生活

● [b]考研成绩:[/b]在计算机专业考研中,总分和专业课均为全校第一(全国统考,380分)。 ● [b]社团生活:[/b]是学校计算机创新基地、信息安全协会的第一届成员。

业余兴趣

● [b]正则表达式:[/b]觉得很实用,属于另一种维度的编程。 ● [b]加密算法、密码学和哈希算法:[/b]觉得很有趣,很有研究点。 ● [b]操作系统:[/b]觉得很实用,主要兴趣在文件系统细节、驱动实现、虚拟化实现、网络管理方面,对系统设计非常有启发性。 ● [b]游戏开发:[/b]额。。。一直在尝试入门。

我的技能特点之一是 “万金油”,涉及面广但并不深入,因此很多经验不合适写在简历里面,所以在这里罗列。

语言和技术

网页设计(FROM 2006,精通)

从高中开始自学网页设计,业余时间会做一些东西,所以一直没怎么忘。 我做的网页一般属于规整型的,不华丽,但会严格控制每个元素的细节,不走样。 我会谨慎地选择第三方库,尤其是界面库,我也没有跟进学习一些热门库。 我的经典方案是 HTML(XHTML、HTML5)、CSS(2、3)、JavaScript(JQUERY)。 在 IE6 占有主要市场的时期,我也能熟练使用多个 IE6HACK 来保持网页的跨浏览器兼容。 但:不要找我做网页,外行会觉得不值那个钱。

J2EE、J2SE(FROM 2007,基本不记得了)

2008-2012 这四年,我做了大量 J2EE 项目。我上学期间的 25 万代码量,大概一半是在 J2EE 私活项目上,但之后就不写了。 主要是使用经典的 STRUTS2 和 HIBERNATE3。 这段时间的经历,让我对 MVC (以及后来的 MVP、MVVM)的优势和劣势有着比较独立的思考。

WIN32(FROM 2008,熟练,零散使用)

WIN32 是指 WINDOWS API 编程,连 MFC 甚至 ATL 都不会使用。 起初我学习 WIN32,只是想希望程序小,兼容性强。实际在 WIN32 编程的过程中,WINDOWS API 的很多接口设计对我有启发作用,学到的东西简直太多了,没法列举,从 “操作系统设计”,到 “C++各种技巧”,再到 “如何设计出可扩展的 API”,帮助巨大。 做了很多东西,有校园内部的实用软件,也有在公网公开的视频播放器。 WIN32 技能本身也有很大帮助,鉴于大多数我们这代的程序员不具备操作系统 API 编程的技能,WIN32 基础让我能够在团队里起到意想不到的填充作用。 我的 WIN32 基础知识也让我顺利拿到了微软的职位,还算幸运。

.NET(CONSOLE,WPF)(FROM 2008,熟练,零散使用)

C# 是我写程序最顺手的语言,可以把精力充分放在编程的创造过程中,而且可读性非常高。在 “HACK”,“数据处理” 这样的任务中大量使用。 WPF 虽然不是被广泛看好,但我认为在目前的各种客户端 UI 方案中,WPF 这种设计是趋于完美的。

PHP(FROM 2010,熟练)

2010 年之后,凡事我能够决定进行技术选型的 WEB 项目,都会优先选择 PHP。 实际的情况也是这样,大部分项目都简单到不需要什么框架,PHP 写顶多十几个页面就足以了,性能可控,修改方便。 一些小工具小脚本我也会使用 PHP(而不是 Python)。

Python(FROM 2013,能用)

2013-2015 年期间,两年的 OpenStack 二次开发,不可避免的大量使用 Python。 但除非需要写一些在 Linux 下的工具(那种不需要安装的),否则我不会使用 Python。

其他

其他尝试的东西也很多,比如曾经红极一时的 Delphi ,比如 Ruby、Lua 、Perl 云云。大多仅限于试着写一点东西。。。忘得贼快。

语言和技术

研究生 IBM 实习:J2EE + JS

AJAX 的概念在当时红的发紫,进 IBM 便是使用 dojo 库进行编程。由于前后端通吃,我便被安排去写人员较少的前端。被 JS 的闭包搞晕之后意识到,其实我还是很弱的。

研究生西门子项目:用纯 C++ 解析 .NET Assembly

当时导师接了个项目,利用 C# 进行西门子 STL 语言编程。STL 类似汇编,跟 MSIL 有极大相似性。整个项目是 C# 编译 EXE,从 EXE 解析出 MSIL,再把 MSIL 转化为 STL。 我负责最坑爹的部分:从 EXE 解析 MSIL。当时的各种逆向方案,大多是调用 C# 的自身反射实现的,微软自己的方法也未开源。而这个应用要求使用纯 C++ 实现,我不得不从 PE 结构开始分析,解析出每张表,再输出成跟官方一致的 MSIL。好在有本书介绍了 .NET Assembly 的一些技术细节,所以我的破解不是很多,大部分是解析,憋了一个月,终于写出来了 .NET 2 到 3.5 的逆向程序。

研究生技术加盟创业:J2EE + Adobe Flex + WPF

研究生中有一年半以技术合伙的方式加盟一个创业公司,全职做“技术总监”。虽然我名片上印的是技术总监,但工作更像核心程序员或者架构师,主笔了十来个那种速上线项目,大部分是普通的 J2EE 和 WPF 项目。加盟时公司承诺的股份和解决户口一直停留在口头上,走的时候也没见着,导致现在谁再跟我说期权我都是“呵呵”。

研究生期间:iOS 开发 + 各种小项目

研究生的剩余时间,基本都是在想方设法赚点钱。 iOS 做 APP 基本没赚到钱,甚至我对花 10 美刀买我 APP 的几个财主表示深深歉意。 不过却有学校老师联系我让我帮他们做东西,学校里项目多,前前后后也赚了不少钱。 也有成功破解了几个服务,但修复的快,怕惹事没有继续。

中科院网络中心:ZeStack (ECCP)

全称是,中国科学院计算机网络信息中心,属于科研事业单位,不是那种收网费插网线的。 毕业之后拿 Offer 还算顺利,最后挑了个离家近的,不加班的。上班主要是跟虚拟化打交道,包括 OpenStack、QEMU 之类的,语言主要是 Python。大部分时间并不是在写 Python 代码,而是在研究各种技术方案。从存储方案,到内存分配预留方式,到监控客户端实现,设计、对比、讨论、实现。比较分散,但也算是从多方面了解了操作系统、虚拟化和 OpenStack,学到东西挺多。 因为不加班,比较宅的我利用业余时间各种玩新东西,从开始的 D3D 和 OpenGL,到后来顺利攻破 B、X、T 的部分服务,再到现在做的几个东西。

项目列表(以后再整理)

待完成个人业余项目

meow:TSF 输入法 terminal-sharp:SSH 客户端 rabbit:桌面行为脚本(类似按键精灵)

完成的个人业余项目(Windows 桌面)

BINPLAYER 播放器(本科时期) KOYOU 上网客户端(本科时期)

完成的个人业余项目(iOS App)

Balanced(未续费开发账号已下架) iExplorer(被驳回) Shooter(被驳回)

完成的项目(WEB)

多了去了。。。

都是从各个时期简历里弄出来的,待整理

ZeStack、ECCP 负责工作有:Nova 改进,包括 BareMetal 驱动改良;辅助独立模块 Navigator;批量部署个管理工具 Spanner。 后期涉及面较多,从安装脚本维护、到包依赖管理、到监控客户端、到存储优化,真心杂。

  1. C#2STL语言转换、反编译器(4人,6个月,C#、C++) 设计此软件把C#语言转变成西门子STL、三星STL的转换器,以方便开发人员编写STL代码。整体软件分为3部分:IDE、EXE反编译器、STL翻译器,IDE调用C#编译器生成exe,再调用反编译器生成中间代码,最终生成STL代码。外包于西门子公司,个人担任了exe反编译器的设计和编码工作以及软件的集成工作。
  2. TSC自动软件测试平台2.0(8人,5个月,J2EE、JavaScript) 在IBM实习期间参与的项目,是一款调用其他自动测试软件的测试平台。担任页面设计、美工、前后台集成、联合调试等工作。同时担任软件宣传网页和海报的设计与美工。

  3. 内部项目管理系统(1人,6个月,ASP.NET、SQL Server) 为公司量身定制的,用于技术研发部内部管理的管理系统。整个系统使用ASP.NET作为主要技术,实现了集成人员管理、项目管理、HyperV管理、Discuz论坛管理、Samba服务管理、Subversion管理,全体员工使用该系统分配和记录工作,个人担任整个系统的设计、构架和实现,包括美工工作。

各种J2EE相关

  1. 中国国家图书馆读者问询系统(6人,12个月,Flex、J2EE、Hibernate、Struts) 为中国国家图书馆参考咨询部定制的一套软件系统,包括触摸屏终端、一个常见问题FAQ网站、一套后台管理系统。个人参与了系统的构架、FAQ网站和后台的实现,以及系统的集成。
  2. 中国国家图书馆政府信息公开平台(3人,4个月,WPF、Flex、SQLServer、TRS数据库) 为中国国家图书馆数字资源部定制的一套和“政府信息公开计划”配合的展示系统,包括了政府机构的展示、政府公报和信息的管理。个人参与项目的二期设计工作和一期的数据采集工作。
  3. 民政部内网平台(3人,4个月,J2EE、Hibernate、Struts) 由中国国家图书馆立法决策部和民政部联合开发的一套系统,用户展示和管理立法决策部和民政部的公共信息,个人参与了一期维护工作和二期的设计工作。
  4. 中国国家图书馆古籍保护网(3人,3个月,J2EE、Hibernate) 由中国国家图书馆古籍馆定制的展示古籍保护相关信息的网站,该网站包含了一个使用J2EE制作的前台和后台,以及一个C#制作的页面静态化工具,能够把网站整个静态化成纯HTML网站安全部署。在项目中担任了一期的维护工作、以及静态化设计编码工作、二期设计工作。
  5. 中国国家图书馆立法决策触屏系统(3人,6个月,WPF、Flex、SQLServer) 一个用于在两会期间做展示用的定制系统,展示内容主要为两会相关的报道、新闻等。系统支持多级部署、多级编辑同步。个人担任了系统的设计构架和数据分布式部署实现。

其他杂七杂八项目

这些项目大多不值一提,列出来主要是因为。。。版面又不要钱。。。 项目类型有:个人(没事做的玩的)、社会(私活)、单位(公司、导师的项目)。

  1. SCHMO学院管理平台. (社会项目) J2EE, SQL Server 2000 (struts 2, hibernate 3) 在项目中担任UI设计和实现.
  2. 鹤壁煤矿风险评估系统. (社会项目) J2EE, MySQL (struts 2, hibernate 3) 承担了全部的UI设计以及美化工作, 以及部分的模块集成工作.
  3. Extra系统使用辅助系统. (竞赛项目) J2SE, C++ (JNI) 在项目中担任系统设计师, 构架师, 项目管理, 以及主要的底层编码实现工作.
  4. 六字棋AI. (竞赛项目) C++ 在项目担任部分组件的设计和编码实现工作.
  5. BinPlayer小型播放器. (个人项目) C++ (Windows API, GDI+, DirectShow, MSXML) 支持语言切换, 支持皮肤, 播放列表, 语言切换和皮肤切换都使用了自己设计的实现方案.
  6. FileX32文件管理器. (课程项目) C++ (Windows API, WinINet) 个人完成, 类似与FlashFxp, 支持无差异的文件系统和FTP直接的交互.
  7. BinX小型HTTP服务软件. (课程项目) C++ (Windows API, WinSock2) 个人完成, 实现简易的多站多线程HTTP 1.0协议服务.
  8. Java语言词法分析器. (课程作业) C++ 个人完成, 提供Java语言的词法分析, 并且按照规定的格式输出词法分析结果.
  9. MTD多功能下载软件. (课程项目) C++ (Windows API), C (GTK) 主要担任了设计, 构架, 和大部分编码工作.
  10. 九星电子报. (社会项目) C# 担任部分报纸信息的抓取器设计和编码工作.
  11. BinSite 博客系统. (个人项目) PHP, MySQL 个人完成, 用于个人博客, 相比其他博客程序, 特点是采用了UBB作为编辑编码, 并且为程序代码(source code)的显示做适当优化, 并且适合智能手机浏览.
  12. BinShow 相册系统. (社会项目) PHP, MySQL 个人完成, 单文件的基于目录读取的相册.
  13. Robust论坛系统. (个人项目) PHP, MySQL 个人完成, 基本的论坛系统.
  14. 中医处方管理系统. (社会项目) C#, .NET 3.5 个人完成, 提供基于本地文件数据库的中医处方管理, 并提供维护, 生成打印文档等功能.
  15. 基于Web的LDAP数据库管理系统的设计与实现. (毕业设计) PHP, CentOS-DS 正在进行, 提供基于LDAP数据库的全校师生信息的集中管理.

  16. 电子阅报栏(3人,4个月,WPF、Flex) 公司主打产品,实现了完全的Flex展示软件界面自定义功能,设计了一款所见即所得IDE,此外还拥有远程屏幕监视、远程鼠标键盘控制、软件自动更新等功能。软件的构架、IDE的设计以及终端控制设计和编码、自动更新设计和编码。
  17. KOYOU上网客户端(1人,1个月,C++、Windows API、WinSock、MSXML) 自主开发,替代北京理工大学官方上网客户端,界面更加友好、功能更人性化,完善多线程处理实现永不假死、支持多语言。

  18. Crystal语法高亮编辑器。(1人,1个月,C++、Windows API) 一款灵活的语法高亮编辑器,使用正则表达式作为高亮引擎,实现完全的自定义语法高亮。并内置了Java语言的词法分析器的高亮编辑。
  19. 某表单业务管理系统(2人,3个月,Python、Django) (涉密项目)。
  20. 其他小型软件和项目(1-2人,1个月以内,PHP、SQLite、Objective-C) 为一些公司和团体设计和制作介绍性质的网站、iOS手机应用,或者公益性质的网站和iOS手机应用。

还有其他一些琪奇奇怪怪的东西

干过的奇葩事情

学术性探讨

• 使用 GDI 实现了一套皮肤库(只能通过Windows API使用),通过配置文件实现定制皮肤,其理念接近于后来的WPF。于是后来使用 WPF 实现了上述皮肤库的可视化编辑。别跟我要,谢谢西数硬盘,全没了。 • 纯 C++ 生写出了一个EXE转MSIL的工具。也别跟我要,谢谢西数硬盘,不过学校老师应该有备份,不好意思去要。。。 • 研究和逆向出了常见网盘产品的HASH方式。

攻防

• 发现了迅雷、百度在部分产品上的验证漏洞。(即无身份验证直接使用服务) • 发现了迅雷、腾讯在部分产品上的信息泄漏漏洞。(即泄漏个人信息) • 爆了几个交友软件的库。

• 经常写脚本抓各种东西,如:QQ音乐、魔兽拍卖行、日本爱情动作片、英雄联盟战斗记录。 • 写过游戏插件和外挂脚本,如:QQ农场、魔兽世界、炉石传说。

一些写了一半没有继续的奇怪东西

• BT、ED2K、迅雷、百度云,P2P 互通工具。(采集了几个月的数据,本以为可以先上线再收集数据,发现坑太深) • 网页版仿炉石传说小游戏。(后来不迷恋炉石了) • 纯 C# 的 SSH 客户端。(界面没有去完善,不过反正也没有人会去用) • 使用 TSF 技术的中文输入法。(官方资料太少,调试也非常不方便,需要慢慢试)

假装文艺小青年

• 给别人做过一些LOGO。 • 素描过一些海报。 • 喜欢学猫叫,常年假装是逗比。 • 这个博客。。。