一些个人作品

3D点云的可视化

法国研究生二年级学徒制项目,工期一年,目标是设计一个Web平台来管理和展现不同的点云数据。

项目采用C/S架构,前端使用TypeScript/Vue/Nuxt/three.js和TailwindCSS来实现,后端先使用vert.x和Kotlin实现,后来迁移到Quarkus,并且使用Docker和Kubernetes部署至私有云。

主要使用响应式(异步)编程范式来处理IO密集型的任务,原因在于点云可能会有较大的体积,同时也考虑到多用户同时访问平台下载点云数据可能会对后端造成压力。实际工程里,暴露给前端的REST API根据不同的需求,分别使用了响应式和阻塞式API(由框架转发给worker threads)。

前端网站支持百万级别的点数。支持更多的点(dense mapping)是可能的,但限于时间和优先级没能实现。

项目也接入了完整的AuthN/AuthZ(身份和权限验证)功能。这里使用的OAuth提供商是Keycloak。

得益于vert.x和Quarkus的特性,后端服务的实现相对较为轻量级,通过非阻塞式编程获得了更好的性能,打包出来的Docker镜像也相对较小。

程序截图 1

程序截图 2

组件图

架构设计


Project Simulatte/Shizuku

玩了一段时间Swift Playgrounds后设计的一个「Karel the robot」类型的,目的是帮助学习编程的游戏。

更多细节参见前端后端的GitHub repo。也可以参考wiki

2020-2021年完成后端(小型解释器,和此后的evaluator)和Web前端。另一个Unity前端是学校里的毕设项目。

2022年把前端稍微改造,更新了Ant Design、Umi的版本,把纯JavaScript代码改造为纯TypeScript代码。此后一直postpone。

Web UI

Demo Animation


Hackathon project

一个简单的地图应用,主要功能是搜索、标记和评论。

主要用Flutter实现,也有少数Firebase的后端内容。虽然是一个4人小组的项目,不过主要的代码和决策都是我做的。实现了下图所示的一个小型的带tag的搜索功能。

工期是一周,用了MVVM设计。在此之前我没有接触过Dart/Flutter。

UI


其他

Tiny KTorrent

一个简单的BitTorrent客户端,我的第一个有意义的Kotlin项目。实现了一个完整的Bencode Parser。

项目地址

convert2bnf

一个简单的翻译扩展BNF语法(ANTLR格式)到BNF格式的工具。用Haskell+简单的手写parser combinator实现。

项目地址

数据可视化

一个简单的用Swift Charts组件实现的旭日图,只依赖SwiftUI的原生类库。

用这个图表实现了一个简单的找工进度跟踪软件(使用SwiftUI和SwiftData实现的单机iOS应用)。

项目时间:2023.11 - 2023.12,基本功能大致完成。

项目地址

Blog

也许这个blog也可以算作一个个人项目?因为这个blog不仅是我用来记录自己想法的地方,我也在慢慢地修改blog主题和生成器的源代码。

比如说i18n,虽说Hexo有相关的插件,但是这个插件很久没更新了,功能也不完整。我稍微修改了一下Fluid主题,来实现一个相对完整的i18n支持。

一些更进一步的自定义还在构思中。

我的Blog和修改后的Fluid插件都是使用Git来版本控制的。

不过暂时不考虑在地化了。可能会考虑修改一下网站的UI。


待定 ...

Minecraft

我自己的MC服务器的一些截图。