Shengyu Zhang
Contents
Shengyu Zhang#
| (+86)176******** | silverrainz.me
Educational Background#
- South China Agricultural University
Software Engineering, Spet 2013 - May 2017
- Zao Xing Shi Yan Shi
Classical sketches, Jule 2020 - Jule 2021
Work Experience#
- Free Software Foundation & Google Inc
GSoC Student, GNU Hurd Developer, 2016
- Beijing Chaitin Future Technology Co.,Ltd
Software development intern, 2016
- Beijing Chaitin Future Technology Co.,Ltd
Senior software engineer, 2017 - 2020
Focus on#
Distributed systems| Stream processing | Free software | Operating system kernel
Skills#
- Programming Languages
- Be proficient in C, Golang, Python有 x86 汇编, Java, C++, Lua, Rust, Pascal, Ruby 的小型项目编写经验对 Scheme, Haskell 有一定了解
- Tools
- 熟悉现代 Linux 发行版(尤其是 Arch Linux)的操作, 了解其工作原理熟悉 Makefile, Meson 构建系统, 有 AutoTools, CMake, Bazel 的使用经验熟悉以 Git 作为 CVS 的协作开发流程熟练使用 Sphinx 文档生成工具, 熟悉 Sphinx 扩展开发对 C/C++ 程序的逆向分析有一定了解, 能使用 OllyDBG, IDA 等工具
- Others
- 熟悉 GLib/GTK 函数库熟悉开源社区工作流程拥有中小型项目长期维护经验能适应阅读, 编写英文技术文档
Projects#
The OS67 Kernel 1#
- Period
Oct 2014 - Oct 2015
- Kind
Personal Project
- Role
Author
- Skills
C, 汇编, 操作系统
类 Unix 的玩具操作系统内核, 基本上是 MIT 6.628 的劣化版, 功能如下:
基础设备(VGA, PS/2 键盘, IDE 磁盘)的驱动
栈式物理内存管理和虚拟内存映射
Minix v1 file system
fork/exec based multi-process
20+ system calls
类 UNIX 的文件描述符实现 IO 重定向
简单的管道
Srain IRC Client 2#
- Period
Jan 2016 - Now
- Kind
Personal Project
- Role
Author, Maintainer
- Skills
C, GTK, Linux Desktop
IRC 是一种古老的, 基于文本的聊天协议, 在开源社区中广泛使用。 Srain 尝试为古老的 IRC 协议套上了「现代」的外壳
XATTR Support for GNU/Hurd 4#
- Period
2016 年 5 月 – 2016 年 9 月
- Kind
社区开源项目
- Skills
C, Hurd, 文件系统
- Role
Intern developer
This is one of proposal of Google Summber of Code 2016, 为 GNU/Hurd 的 ext2 文件系统增加扩展文件属性(Extended File Attribute)的特性。 我作为 GSoC Student 顺利地完成了该项目, 相关的代码 5 已并入上游。
This essay 6 describes 详述了我所做的工作。
High-performance traffic forwarding server: SN*****r#
- Period
2016 年
- Kind
商业项目
- Skills
C, Linux, 高并发
- Role
Intern developer
该项目采用了类似 Nginx 的 Master/Slave/Monitor 多进程模型和类似的 Nginx 的模块组织方式。
我作为实习生在其中负责了一些统计功能的开发。后基于 MQ_OVERVIEW(7) 开发了一个进程间消息队列模块, 并在此基础上实现了 so library 的 hot reloading。
分布式结构化日志统计平台 Ma**o#
- Period
2017 年 – 2020 年
- Kind
商业项目
- Skills
Golang, 高吞吐, 分布式
- Role
开发者, Maintainer
该项目是 Golang 在公司产品中的第一次尝试, 从依赖管理, 依赖选型, 代码组织, 文档维护都经过了多次的试错和修正, 成为公司内部 Golang 项目的首选模板。
该项目依托于 Golang 的 Frist-Class Coroutine 支持, 实现了高吞吐的日志处理。 大部分代码为业务逻辑, 不便展开。
Lua Plugin Platform: L*g#
- Period
2017 年 – 2020 年
- Kind
商业项目
- Skills
Golang, Lua
- Role
早期开发者, Maintainer
社区没有一个好用的 LuaJIT go binding, 唯一能用的 ⛺aarzilli/golua 的Author对 Lua 缺乏足够的了解, 为了避免受限于开源库, 也为了更好的和公司产品集成, 我们发起了这个项目。
本质上这依然是一个 LuaJIT 的 go binding, 但有如下特性:
提供了更多的操作 Lua stack 和数据的 helper
允许细粒度地控制 Lua 标准库的加载
支持用 Go 实现 Lua module
深度集成了 Lua coroutine 和 Goroutine , 最大化利用了 CPU 时间
Distributed Real-time Stream Processing Framework: P****er#
- Period
2018 - 2020
- Kind
商业项目
- Skills
Golang, 分布式, 流处理, SQL, 编译器前端
- Role
Author, Maintainer
一个轻量(< 30,000 loc)的, 非侵入式的分布式实时流处理框架, 不少设计思路源自 Flink 和 TiDB, 但因使用场景不同又有所区别。
文档覆盖率 100%
完全非侵入式的设计, 纯 Golang 实现, 不依赖外部服务
完全模块化的实现, 各模块之间层次清晰, 组织良好
在多个层次(数据Kind, 表达式, SQL Scalar 函数, 聚合函数, 窗口函数, 算子)上均保持了扩展性
支持服务发现, 支持动态增删节点, 允许任意节点下线, 支持脑裂自动恢复(有数据丢失)
支持滑动, 滚动时间窗口, 支持超大滑动时间窗口
支持类似 Flink Streaming SQL 的 SQL 语法, 支持 JSON Kind, 实验性支持 JOIN 和子查询
支持任务管理, 支持调试用途的任务可视化
Sphinx Notes 7#
- Period
2020 年 5 月 – Now
- Kind
Personal Project
- Skills
Python, restructuredText, Sphinx, LilyPond, Jinja2, NLP
- Role
Author, Maintainer
Sphinx 被我来建立我的个人信息管理系统(Personal Information Management System), 因此为了满足我的需求, 我建立了 Sphinx Notes 组织并编写了如下项目:
- sphinxnotes-pages 8
构建 Sphinx 文档并 push 到 gitpages 的 GitHub Action
- sphinxnotes-lilypond 9
The extension allows LilyPond music notes to be included in Sphinx-generated documents inline and outline.
- sphinxnotes-any 10
The extension provides a domain which allows user creates directive and roles to descibe, reference and index arbitrary object in documentation by writing reStructuredText templates. It is a bit like
sphinx.application.Sphinx.add_object_type()
, but more powerful.- sphinxnotes-strike 11
Sphinx extension for HTML strikethrough text support
- sphinxnotes-snippet 12
Non-intrusive snippet manager for Sphinx documentation. 非侵入式的文档片段管理工具, 通过一些简单的策略对判断建立索引, 允许用户通过
fzf/fzy/skim 等filter 快速筛选出想要的信息
- sphinxnotes-isso 13
Sphinx extension for embeding Isso comments in documents
Opensource Experience#
Linux#
IRC#
- Srain IRC Client
作为Author和Maintainer, 从 2016 年至 2021 年, 一直持续开发和维护项目, 截至 2021-02-25, 五年间:
新增代码 153,355 行, 删除代码 117,419 行, 当前仓库代码约 20,000 loc
发布了 23 个版本
建立了 163 个 Issue
合并了来自 19 个社区开发者的 144 个 Pull Request
被 AUR, AOSC, DragonFly BSD, Fedora, FreeBSD, Flatpak, Guix, Gentoo overlay GURU, OpenBSD, OpenMandriva, openSUSE, NetBSD, Void Linux 共计被 13 个 *nix 发行版的软件仓库收录
- Bug fixes
Golang#
Others#
Other#
Essays#
Patents#
Footnotes#
- 1
- 2
- 3
https://doc.srain.im/en/latest/faq.html#what-is-relay-message-transform
- 4
https://summerofcode.withgoogle.com/archive/2016/projects/5786848613892096
- 5
https://git.sceen.net/hurd/hurd.git/commit/?id=6ebebc80de3dfc7ada3a69d609f00088c2143be3
- 6
https://silverrainz.gitee.io//blog/gsoc-2016-sum-up.html#id12
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
https://lug.ustc.edu.cn/news/2018/09/lug-logo-collect-result/
- 28
- 29
- 30
- 31
https://silverrainz.gitee.io/blog/practical-makefile-for-packaging.html
- 32
https://silverrainz.gitee.io/blog/2015-huashangctf-re300.html
- 33
- 34
- 35
CN109889530B
- 36
CN111158683A
- 37
CN110334117A
如果你有任何意见,请在此评论。 如果你留下了电子邮箱,我可能会通过 回复你。