刷题与前后端学习
虽然很想搞科研,我还是把一部分精力放在刷题、学习前后端上面。原因之一是我对自己的科研之路比较悲观。上一个二作项目正在rebuttal,能不能录尚未可知,手头的工作也不是很有信心。这学期别人问我以后有何打算,我都会说:如果能发一篇文章就去读博,否则就去工作,美国找不到就回中国。另一方面,相比科研,刷题、写小项目的反馈周期很短,也都有标准答案/成熟解决方案,比较容易形成正反馈。
个人主页与博客
刚来美国那一段,主要在鼓捣简历和个人主页。个人主页选择了Minimal Light,用Minimal Mistakes写博客,都是用github pages部署。选这两个主题并没有特别的原因,应该是minimal吸引了我?但有个问题,他们都是用Jekyll做的,想在本地构建需要ruby的运行时。而我的笔记本环境搞得很乱,ruby我又一窍不通,只能通过github action去build。改改配置文件、上传文章还好,完全无法进行个性化。不过我除了23年总结也没啥想写的,这事就搁置了一学期。7月份我从国内回来,换成了Hugo的PaperMod(go我相对熟悉),买了个域名hesicheng.net,部署在netlify上。事情总算告一段落,就是我产出内容的速度有些跟不上。等我有了paper(但愿)可以增加research页,projects页也可以考虑重构。
刷题
来美国之前就听说这边工作实习特别难找,所以我一到美国就开始闷头刷题。当然,一开始还没找到实验室,也没有别的事情可做。刷了半个学期,一共做到350题(目前有400+了),还参加了几次周赛。我主要是用C++,因为455也用了一段Java。CLion用起来也很顺手,和VS各有千秋。刷题的过程中,我把一些经典的算法和helper functions整理成一个库。后来我在GPT的帮助下生成注释与unit test,还用sphinx搞了个文档。这也让我找回了一些大二队式时期对C++的热情,我又把Qt下回来,还研究MuJoCo的C API,写一个很简单的simulator(后面鸽掉了)。
从四月份开始逐渐失去刷题的热情。首先是到了瓶颈期,medium基本都能做出来,绝大多数hard又毫无头绪,题解也看不懂。停留在舒适区挑medium做不再带来成就感,挑战hard却屡屡碰壁。更重要的是,重复的刷题中我怀疑这一切的意义。我对我的做题蛆生涯做出过反思,但高考再与现实严重脱节,大学录取只看高考成绩(当然也可以靠竞赛)。而做算法题对拿到offer的贡献值得怀疑。我唯一一次实习面试,宇昕主要问我在港科做sparsification的细节,只在最后问了个three sum。我当时想用Rust装一把,最后一个点还没过,有些尴尬。首先要过简历关,其次要有相关的经验/项目,进而语言表达,behavioral questions这些,把所有精力都用来刷题是不明智的。带着这样的认知,我后来把重心放在了前后端上面。
前后端学习
入门前后端的想法由来已久。作为电子系转码的野生程序员,Python炼丹自不必说,写过qt,用过Unity,却一直没接触过Web stack。去年春天在Moka实习的时候,我就学了一点go和React。但那段时间比较忙,我的目标也订得太大太空泛了,最后以失败而告终。相比去年,我有了更深的基础,时间也宽裕些,卷土重来。这次我吸取之前的经验教训,不纠结什么best practice,从最简单的来。
去年用go的gin,这次本想捡起来。但我在知乎刷到很多黑go的回答,根据之前的经验,我也觉得按大小写区分公私有、引用包未使用强制报错太傻逼了,于是没有选它。还考虑过Rust,但它太难了,也没有选。我对Python比较熟悉,最开始用flask,照着它的官方教程去写一个简单的博客程序。但跟下来之后感觉“太抽象了“,向一位科班的同学吐槽,得到的回答是:”如果连flask都觉得抽象,那还是用fastapi吧“。就这样,fastapi成为了我掌握的第一个框架。
当我掌握fastapi后十分兴奋,让GPT帮我写前端,做了个十分简单的todo list。这算是我的第一个web project,当时十分兴奋,到处转给别人看,现在想来有点傻逼。
初步掌握fastapi后,我就想做个纯前端项目作为练习。当时玩一个小游戏消磨时间,一个活动界面是2048。这就让我想起,大二时用PyQt做的第一个图形界面程序也是2048,要不还是它吧。除了React,我还赶时髦用了tailwindcss,现在看来,有些大炮打蚊子的感觉。难点在于实现分数和滑块的动画效果,而这两者用不用框架区别不大。写这个项目是四月末,之后我出现了一些心理问题,期末好了一些后还有投稿的ddl要赶,又把前后端给搁置了。
暑假回国待了大半个月,走亲访友,心情好了不少。项目网站是纯静态页面,样式用Bulma写的,比tailwind css简单了不少。受此启发,我就想用Jinja2模板做一个静态页面的项目。想来想去,可以仿照笔趣阁做个网络小说阅读网站。最核心的部分一周就做出来了,剩下的时间都花在优化前端上。后面为了和笔趣阁尽可能像,还是写了很多css,bulma也没怎么用上。这个项目的完成度还算比较高,我也积累了一些经验。就是技术栈比较古老hhh。以后如果想练习React,还是多写写纯前端的小项目(或者tauri启动)。