Aiursoft Intern Project
Aiursoft Intern Project,指的是面向中国大陆范围内的学生开放的,关于Aiursoft的一些开放性问题的解决方案征集。
Aiursoft Intern Project 是完全由个人的兴趣爱好驱动,以无回报、提升个人知识水平能力和贡献社区为目标、并且能够接触到实际生产的真实业务需求的机会。
奖励
参加 Aiursoft Intern Project 将有机会获得:
- Aiursoft Intern Project 参与证书
- 至少价值 500 元的 Steam\Battle.net\Origin\Uplay\XBox 平台游戏
- Microsoft Office 365 开发者版(含2TB OneDrive)
- Aiursoft 文化衫和周边
- GitLab 组织成员权限
另外,Aiursoft 允许并鼓励你将 Aiursoft Intern Project 作为你的社区实习、课题设计、毕业设计题目,并愿意为你提供支持材料。
要求
参加人
- 参加者必须是位于中国大陆的或国籍为中华人民共和国的学生。
- 参加者必须同意 Aiursoft 许可协议。
- 单一题目的完成期限不可超过四个月。
报名方式
发送 Email 至:officials@aiursoft.com。
Email 中请注明:
- 你的 GitLab 用户名
- 你的 Aiursoft 账户名
- 你选择的题目
- 计划起止时间
- 你的学校和预计毕业时间
题目列表
1. 用户可能想访问
Aiursoft 的业务系统中有大量名词,例如:Developer
, AiurDrive
, Wiki
等。用户在输入这些名词的时候极可能会打错。例如将Developer
打成:Developers
、dev
或devloper
等。你需要开发一个组件,其输入一个词汇,输出其是否是Aiursoft的业务系统名词和是否输入精准。这个组件能够容忍常见错误,并且正确匹配到真正的名词上。Aiursoft的业务系统名词可能会变更,但是不会太频繁。
- 你的组件必须基于 .NET Core 构建。
- 你的方案提供的组件,在判定时不得使用IO操作(例如调用第三方API)。并且它必须在10ms内返回。
- 你的方案提供的组件可以额外提供'训练'方法或需要定时执行的方法,以更新索引、词库或执行其它你自定义的行为。
Aiursoft 将提供样例数据。
2. 可能认识的人
Kahla 是 Aiursoft 的业务系统之一。它的数据库中,存储了一些用户和一些会话。会话中有若干个参与的用户(2-无穷个)。换句话说,每一个用户,都有一个包含自己的会话列表。同时,Aiursoft 能够取得每个会话内每个人的发言次数和时间。(无法取得发言内容) 我们需要构建一个解决方案,考虑使用机器学习技术,能够针对特定用户,尽可能精准的求出他最可能认识的人,以作为好友推荐数据。
- 上述数据均存储在SQL Server中。
- 你必须提供一个服务,其输入值为当前用户ID,返回值为一个集合,按照他最可能认识的人排序。
- 针对样例数据,必须能够在双核2GB的Linux服务器上1秒内返回。
Aiursoft 将提供样例数据。
3. Call on Web
Kahla 是 Aiursoft 的业务系统之一。它的前端由Angular构建,而面向了桌面 (Electron) 和PWA平台。它的后端是由C# + ASP.NET Core构建。而你需要将其整合 Web-rtc 技术,构建一个解决方案,允许2个或N个用户建立实时的语音通话,以实现多人语音会议。
- 你需要构建一个 Demo 项目,并将其部署到你自己的服务器上。
- 你的Demo项目必须包含 Angular 开发的前端和 ASP.NET Core 开发的后端。
- 你的Demo项目必须能够完成一次至少2人的实时语音通话演示,且接入者存在于NAT设备之后。
4. Microservices to K8S
Infrastructures 是 Aiursoft 的底层基础结构系统。它由 ASP.NET Core 构建,并且本身的设计中已经被拆分成了数个小服务,它们互相通过 HTTP 调用、组合来形成对外的整体服务。我们分别验证了几乎任何一个小服务都可以面向容器。但是,我们期待能够更多的享受微服务和容器带来的便利。
- 你必须开发脚本或配置文件,能够在不与 Aiursoft 任何现有服务通信的情况下,快速搭建 Aiursoft Infrastructures。
- 你的脚本或配置文件必须能够将 Aiursoft Infrastructures 的所有服务都安装在一个特定的 Kubernetes 集群中
- 你的方案必须尽可能廉价的解决自动化 HTTPS 证书续期问题。(搭建后,在云计算上最低花费不超过 150 USD/月)
- 你的方案必须解决 SQL Server 持久化和 Probe 的文件系统持久化。
- 你的方案必须解决自动化部署、健康监视和横向扩展。
5. Event collection syncer
系统 K 使用了 WebSocket 将事件由服务器发送至客户端。每次有新事件时,客户端都会收到而将其快速展示。这些事件能够形成一个集合:“事件集”。我们期待在服务器和客户端,事件集应当尽可能相同。但是,遗憾的是:在客户端网络不稳定的情况下,WebSocket有一定几率会丢失消息。那么客户端应当在它自己网络联通后,尽快拉取到它丢失的消息并解决合并冲突,以实现集合变更的完全同步。同时,客户端可能会向事件集中增加消息。这会向服务器发送HTTP Post请求。即使服务器没有得到响应,客户端也需要将其插入到本地的事件集中暂存,以实现离线可用。在网络联通后,尽快与服务器的集合保持同步并解决合并冲突。
- 集合可能非常庞大,以至于全部在客户端本地存储整个集合不可行,而只能按需的加载部分内容
- 你必须开发基于 ASP.NET Core 的服务器端事件集同步SDK
- 你必须开发基于 Angular 的客户端事件集同步SDK
- 你必须构建一个 Demo,满足上述场景,并且尽可能节省流量