CS201这门课需要用java,学校发了一个Ubuntu虚拟机给我们用,这样在虚拟机上配置环境就够了不需要在本地乱搞。虽然说这还是比不上INFOSCI102那样用(超级爽的)colab,也不像CS101用jupyter notebook,但是依旧比在本地装一套环境好得多得多。
但是以上论断只有在教程完美、网络正常的情况下才成立。很显然作为一个新生没多久的课程,CS201的教程依旧是不合格的!这篇文章就用来记录一下我,即使已经有了(并不)丰富的环境配置经验与(相对)丰富的Linux知识,依旧在配置过程中踩了多少坑!
工作基本思路
CS201这门课没有使用任何OJ而是采用了Prof Jiang Long自己用python写的SAG (Stage Auto-Grading System)。负责维护SAG的Tutor告诉我,Prof Long自己也承认写的不够Professional,但他自己认为是semi-professional(笑)但是我依旧想不明白在DKU OJ已经那么成熟的情况下要自己造一套轮子……完全想不明白
基本来说,所有的提交都需要用SAG在虚拟机(服务器)内完成,用到他自己写的sag_client
来提交。主要来说,作业以一个.tar.gz
的压缩包下发,里面包括所有题目的文件夹和Makefile文件方便使用指令。不得不说make指令还是很强的,有机会一定要学习一个(
主要来说用到以下几个命令:
make init-pull
用来初始化文件make compile
|javac ${file_name}
用来编译,获得一个.class二进制文件make submit
用来提交代码make status
用来查看提交状态java ${file_name} {argument}
用来执行文件make命令的具体作用可以在
Makefile
文件里面看到。
但是用命令行来写代码,不是不可以,只是太难受(顺便,nano
真好用嘶哈嘶哈)。在Prof Long的提醒下,通过配置VScode使用插件Remote-ssh在远程连接服务器后直接在VScode里面写代码,要比本地写git push到服务器爽的多——后者正是我的博客采用的方式。
这样,VScode里面看起来就是这样的:
这里涉及到的一个关键点是ssh密钥的使用,即通过在远程服务器上保存密钥(公钥?),ssh链接时不必再输入密码。具体使用方法这篇文章写的灰常清楚
配置Command Line
一个正常的command line应该长成这样:
可以看到,这个命令行是有颜色的!怎么设置才能让颜色正确的显示出来?折腾了几个小时之后,我发现只需要在 ~/.bashrc
文件中启用force_color_prompt=yes
功能,就可以让命令行带上颜色。
如果发现保存后没有立即启用,可以source ~/.bashrc
来加载这个文件。背后具体机制还没有搞清楚,但是能用(
学校的VCM
DKU的VCM是与别处不同的,每天早上6点就会自动关机,真的很离谱;我是挺希望它自动关机的,但是我希望能够设置关机时间……
此外,一开始设置虚拟机的时候死活打不开网站。折腾很长时间之后,我貌似用重置DNS缓存的方法解决了这个问题。