分享 一个生物实验汪的编程学习经历和开源项目总结

2023-10-28 20:56:17 +08:00
 kuingsmile

首先介绍下背景,op 主业是搞癌症诊疗的,实验方向,之前只在本科的时候学过一点最基础的 C 语言。我的一些个人地址如下:

博客: https://www.horosama.com Github: https://github.com/Kuingsmile 知乎: https://www.zhihu.com/people/kuingcry

编程学习经历

去年的时候,公司项目需要接触了一些数据分析和机器学习的东西,感觉编程还挺有意思,就从 python 开始学习起了 coding 。这一年半多点的时间,学习过的语言有 Python 、R 、shell 脚本、js/ts 、Go 、Dart ,正在学习 C++。

截止目前的 github 活跃度如下~~

一开始的时候,我是看菜鸟教程这类的网站,但这些教程里每节都是独立的例子,而且日常的工作中也没有应用场景,学习效率很低。业余时间看了一个月,Python 水平还是处在知识点都见过,想写个小脚本就无从下手的程度。当时还去刷了刷 leetcode 之类的,但感觉也没啥进展。

后来感觉学习方式有问题,我又不靠编程吃饭,学这些科班应试的东西干啥,于是决定从实际需求和项目上手,正好这时公司有个项目中需要做机器学习和建模,有大量的数据可用,于是就基于这些数据,直接上手自己去做数据清洗,特征工程,建模和验证的整个过程。虽然当时基础的 Python 语法都记不住,但边写边查,Pandas 、numpy 、scikit-learn 、matplotlib 等库直接用起来,不到半个月的时间,Python 的各种语法就已经搞的比较明白了。而且这个过程中还简单学了下各种机器学习、深度学习的底层原理。

到了去年 9 月,第一次接触了云的概念,在腾讯云上买了自己的第一个轻量服务器和域名,然后学着搭建了自己的个人博客萌萌哒赫萝的小站 - 爱生活 爱分享,后续学习使用 nginx ,mysql 和 docker 等都是在这台服务器上,可以说是花的最值的一笔钱。

后面学习其它语言的时候,也都是采用直接上手写项目的方式,边学边写,所以这部分经历就合并到下面的开源项目总结里了。

开源项目总结

目前,我在 github 上的自己写的几个比较主要的开源项目如下:

项目名 github 地址 开始时间 star 数 简介
PicList https://github.com/Kuingsmile/PicList 2023 年 2 月 996 pc 图床工具
PicHoro https://github.com/Kuingsmile/PicHoro 2022 年 10 月 483 手机图床工具
word-GPT-Plus https://github.com/Kuingsmile/word-gpt-plus 2023 年 4 月 357 word 中的 GPT 插件

在开源项目的参与上,目前我给多个项目都提过 PR 并被接受,比如 Alist 、pot 等,Alist 的 epub 预览功能最早也是我给出的解决方案~贡献者列表里有我的项目如下:

PicHoro

PicHoro 是我的第一个开源项目,起初是去年十一的时候,想满足自己从手机端快速拍照上传到自建兰空图床上的需求,于是零背景开始现学了 Flutter 和 Dart ,光是 set up 一个开发环境就花了一上午,最终在十一假期里写出了 1.0.0 版本并发布,现在回头看第一板,十分的简陋,但学到了非常多的东西,算是开发的起点。后续这个项目慢慢的扩充功能,现在已经支持了十几种不同类型图床的上传,而且还能直接管理这些图床。下图是第一板和当前版本的界面对比,可以看到差距巨大~

PicList

PicList 项目是我投入时间最多和学到的东西最多的项目,这个项目起初来自于我在用 PicGo 的时候,发现有时候会有删除远程图片和直接管理对象存储的需要,但 PicGo 除了少数几个插件外并不支持,而且作者也不打算添加类似的功能,于是就动了自己魔改的念头。于是春节放假的时候,我从零开始学了 js/ts ,node ,html+css 和 electron 平台相关的知识,同时完整的分析了一遍 PicGo+PicGo-core 的源代码,最终在 2 月中旬的时候发布了第一个版本。

从这个项目开始,我才算是了解了前后端、REST API 等概念,也知道了自己当时写 PicHoro 的时候有多幼稚。比如我在 PicHoro 的早期版本里,设计了用户登录系统,但在客户端里是通过直接发送 sql 命令的方式来操作数据库的。。完全没意识到要后端设计一个 API 系统,导致后面很难做版本兼容和改动。另外,还学习了解了 git 的一些基本用法,比如 pr 、action 、分支切换和 merge 等。

到写这篇文章为止,PicList 已经有了 996 个 star ,还差 28 个 star 就满 1k 了,而且目前 Typora 1.6 以上的版本也内置了对 PicList 的支持,Obsidian 的上传插件也支持了 PicList 的删除功能,可以说是已经超出我写这个项目之前的预期了~

以 PicList 为核心,我还学习写了第一个 vscode 的插件 vs-PicList ,第一个 npm 包 piclist-core ,整个过程中自己的代码水平算是有了一个比较大的进步。

word GPT Plus

word GPT Plus 这个项目,是趁着 GPT 的热度开发的,当时 Microsoft 365 copilot 还没有上线,但手头有需要投稿的文章要修改,于是就写了一各插件来调用 GPT 的接口在 word 内修改文章,由于 word 插件是基于 web 技术的,所以这个项目就直接用 Vue 进行了开发,大概几天就写好了,没啥难度。

其它项目

除了上面几个主要项目之外,还用 php 写了一个简单的随机图片接口网站,用 docify 做了 PicHoro 的文档网站,用 Vitepress 做了 PicList 的官网,更重要的是为老婆做了我们结婚的请柬网站,老婆非常满意,哈哈哈~

总结

编程对我来说其实就像是一个大的开放世界游戏,总会遇到新的好玩的东西,也会遇到奇奇怪怪的问题,整个过程非常有乐趣。后面应该也会随着自己遇到的实际问题和需求去学习,最近可能打算多学习些 Bioinformatics 的东西来辅助自己的工作,然后学些计算机底层的知识。学,学无止境,哈哈哈~

2564 次点击
所在节点    程序员
11 条回复
cgcs
2023-10-28 21:16:22 +08:00
难得有个科班的生物狗~~~

北大的功底还是深厚啊
enchilada2020
2023-10-28 21:25:38 +08:00
好家伙。。
monkeyWie
2023-10-28 23:30:58 +08:00
开源还是快乐啊
Xusually
2023-10-28 23:32:37 +08:00
可以的!
kuingsmile
2023-10-28 23:36:57 +08:00
@monkeyWie 是的 灰常快乐 总有新东西可以搞
rimworld
2023-10-28 23:54:55 +08:00
太强了! dddd !
lekai63
2023-10-28 23:58:30 +08:00
OP 学习能力特别强,也能很快应用。666
Shiaqiang
2023-10-29 08:09:59 +08:00
op 这水平可以考虑一下生信了👍
ncepuzs
2023-10-29 08:34:45 +08:00
@Shiaqiang 人家都已经博士毕业了
yang2yang
2023-10-29 09:04:22 +08:00
工作 5 、6 年后的人表示已经找不到编程的乐趣了。。。
kuingsmile
2023-10-29 15:52:33 +08:00
@yang2yang 毕竟一旦兴趣爱好成了工作就有点最喜欢的歌当闹钟的感觉了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/986312

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX