NOI Linux 2.0 CSP奥赛复赛环境安装使用指南

新人旧人区别

以下是可能导致你在老版 NOI Linux 系统下形成的习惯在新版下翻车的改动。

  • 移除了 GUIDE
  • 从 32bit 变为了 64bit 系统,需要注意指针现在占 8 字节而不是 4 字节
  • 更新了编译器版本
  • 默认情况下右键没了【新建文件】的选项
  • 桌面目录改为中文,可能会导致一些程序无法运行

主要变化

  • 系统基于了 Ubuntu 20.04 (64bit)
  • g++ 升级到了 9.3.0
  • 添加了很多编辑器,例如 Sublime,VSCode,Code::Blocks

安装

和旧版无区别,主要就是官网上说了安装时要断网,可以通过在虚拟机软件安装时把虚拟网卡断开的方式。

Edit:现在已使用了该系统进行了CSP和NOIp,是否联网更新因考场而异,NOI时如何实施尚不清楚。若可以联网更新,强烈推荐使用VSCode并安装C/C++插件进行编程

中文目录

这个系统如果选择中文安装,桌面这个目录会是中文的。

然后这带来了很多问题,一是你在终端里敲很麻烦,二是有些程序可能用不了。

请不要在桌面上建立文件编程,以避免不必要的麻烦,据我测试,已知 Code::Blocks和 Gedit 的编译是会出问题的。

右键菜单新建文件

如果需要的话,可以终端里输入

xdg-user-dirs-update --set TEMPLATES ~/Templates/
touch ~/Templates/newfile

即可。

然后重启文件管理器(可以终端输入 killall nautilus)然后你就会发现右键菜单里【新建文件】回来了。

壁纸

默认壁纸是一张极丑无比的纯黑壁纸?没关系,可以进入【设置——背景】更换。

有趣味壁纸,比如这个:

编辑器

说一句题外话,我很喜欢 GUIDE,很不理解为啥会删掉它,可能它在很多地方令人难受,但是它可以对于每个文件单独设置编译选项,且不需要额外配置,对于我这种对于一个代码经常更换编译选项的选手真的是很好用。

一般上来讲,我认为考场上不应花费超过 5 分钟来配置编辑环境。尤其是像 NOI 这种比赛,开考前不可以动键盘,不可以登录系统,所以任何配置这些东西的时间都会占用你的有效比赛时间,我这里推荐使用一个可以较快速配置完成,且不明显拖累编码效率的即可。所以我这里不介绍需要大量配置的使用方式。

还有我觉得这些编辑器默认字体都挺好看的,如果觉得不好看的可以自行查找一下修改字体的方式。

另外,下列编辑器中有一些打开大文件的时候会卡死,请做好测试,避免在未保存代码时打开过大的样例,以免数据丢失

若真正卡死了,这个版本的 ubuntu 会在足够长的时间后弹出未响应提示,大多数情况应该不用手动 killall 了,当然如果你没有听劝,里面还有未保存的代码,那只能多等个几分钟,看看能不能恢复,然后赶紧保存 ,再不行就彻底寄了。

VSCode

很不幸的是,CCF 提供的 VSCode C/C++ 插件是一个在线安装版本,真实竞赛中完全没法用,所以...听说你想要超好用的 VSCode?没门的啦!

虽然这么说,但没有 Intellisense 和 Debug 的 VSCode 也是可以用的,虽然编译需要手动去命令行里敲,调试也要命令行 gdb,但论语法高亮和自动缩进和括号补全这方面还是可以的。

当然你也可以手写JSON实现一个编译运行指令,具体我就不细说了,还蛮复杂的,网上搜一下即可。

设置里也可以捣鼓一堆东西,比较有用的有自动保存【Auto Save】。

值得一题的是它内置的查找功能挺好用的,在查变量重名的时候很有效。右边三个开关分别代表是否区分大小写,是否强制搜索单词(两边都有空白字符),以及是否启用正则。

基本上常规使用方法就是像这样,用自带的终端编译运行所有文件的样子。

优点

  • 有着简单的语法高亮,编辑体验好
  • 有自带的文件管理器,可以方便的新建文件
  • 几乎不需要设置
  • 自带终端

缺点

  • 不自带编译功能,若实现需要手写JSON
  • 不自带调试功能

Sublime Text

感觉和 VSCode 体验差不多?不过自带一手单文件编译指令。但我没咋用过,所以不多评价。

但感觉真的和 VSCode 差不多啦,要自定义编译也必须手写JSON。

优点

  • 有着简单的语法高亮,编辑体验好
  • 几乎不需要设置

缺点

  • 修改编译选项需要手写JSON
  • 不自带调试功能

Geany

Geany 基本上开箱即用,但有一些我认为很好用的插件可以开。

【工具-插件管理器】里面可以打开插件

一些好用的有:

  • 【Auto-close】括号补全
  • 【Auto-mark】符号高亮

F9 编译 ,F5 运行,运行会弹出一个终端,注意没有编译+运行,需要连按两个。

在 【生成-设置生成命令】里面可以设编译选项。

不过有个比较毒瘤的事情就是这玩意 Warning 和 Error 的显示一样,注意看一看。

然后那个下面那个写着编译器的那一栏的上下箭头是可以点的,点到最下面有个自带终端。也可以把下面那一栏拉长全部显示出来。

优点

  • 有着简单的语法高亮,编辑体验好
  • 几乎不需要设置
  • 自带终端

缺点

  • 不自带调试功能

Code::Blocks

因为这玩意貌似是自带调试的所以重点研究了一下

首先如果打开单文件只有默认编译选项,无法调试,所以不可避免的需要新建一个项目文件。

先选择 【File-New-Project-Console Application】建立一个新项目,然后title选择题目的名称,然后 Folder 选择你这个比赛规定的存放该题的文件夹的父目录,其它的一路默认下去。

然后你就有了一个项目。首先你会发现它给你创建了个 main.cpp,因为 OI 比赛中一般需要一个固定的名字才能正确收上去,所以需要改名字。首先先把这个文件关掉。然后在左边右键这个文件,选择【Rename File...】,改成该题目的名称。

然后,基本的配置就搞好了。

接下来就是如何设置编译选项,这次在左边右键这个项目的图标,然后点【Properties...】。

然后点进【Build Targets】,这个页面里的 【Build options...】点开即可,可以分别为【Debug】和【Release】设置编译选项,而这两个东西可以理解为两个模式,比赛时可以用【Debug】作为开了类似 -g 的选项用于查错的那个,而【Release】开题面所示的编译选项,反应真实效果。(当然也可以根据需求用左边的 【Add】加入更多模式。)

当然那些给出的选项并不一定需要用它,可以用下一栏的【Other Compiler Options】直接写也是可以的。

那么现在已经配置好了,你可以在顶上的选项框里切换编译模式,然后可以按那个黄齿轮绿箭头分别代表编译,运行,编译运行。

然后右边的那个红箭头可以开始调试,调试时可以点调试框右边这个电脑上有个虫子的图标中的【Watches】打开变量查看。注意调试时必须开 -g 编译哦(【Debug】模式编译)

总之具体使用方式还是蛮复杂的,毕竟这是一个庞大的IDE,大家可以自行摸索。

当然,你也可以只拿它调试,就新建一个工程然后就不改其它设置,有需要的时候把代码复制进来调,这也是可以的。总之这似乎是唯一一个可以拿来调试的。

优点

  • 自带调试功能
  • 有着简单的语法高亮,编辑体验还行

缺点

  • 自动缩进可能有点怪(?)
  • 配置麻烦,必须配置一个项目才可以。比较笨重。

其它

Vim 和 gedit(现在就叫文本编辑器)还有 Emacs 还在,喜欢用的继续用就好了,应该没有太多改变。

总结

提供了 VSCode 却不提供可以正常使用的 VSCode C/C++ 插件。

编译器

编译器升级到了 g++ 9.3.0 可以整啥花活呢?

强大的 sanitizer

编译选项加入 -fsanitize=address,undefined 可以体验绝佳的查 RE,查 UB 的体验。

当然如果编译器和链接器分开需要在链接器里加上 -lasan -lubsan 才可以用(指 Code::Blocks)

可以实现:数组越界直接 RE,有符号整数溢出直接 RE,返回值不为 void 的函数不 return 就返回直接 RE...总之就是可以查 RE 和 UB,且能告诉你错在了第几行 。相信我,会上瘾的。

优化

编译器优化更聪明了,虽然可能感知不强

C++14/17

应该以后正式比赛能用上?

Edit:已确认:以后会用C++14

Arbiter

arbiter 好像更新了?让我看看有啥区别。

内存限制最大值从 512MB 变到了 2048MB。不过这个好像似乎已经内部被修改过了(参见之前 NOI 里面都有 1GB 的空间限制)?

好像还改了改图标。

所以似乎并没有区别。

终端命令

基本没变,常用的能用的都用。不能用的也不能用,除了...

ssh

喜闻乐见.jpg

其实 ssh 命令并没有被删,只不过 ssh 服务不开放,也就是你还可以 ssh 其它系统,但这个系统不能被 ssh 到了。

试着给虚拟机和实体机开一个网络测试了一下,不太行。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/46205.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

7.Docker-compose

文章目录 Docker-compose概念Docker-compose部署YAML文件格式和编写注意事项注意数据结构对象映射序列属组布尔值序列的映射映射的映射JSON格式文本换行锚点和引用 Docker compose配置常用字段docker compose常用命令Docker Compose 文件结构docker compose部署apachedocker co…

【图像分割】基于蜣螂优化算法DBO的Otsu(大津法)多阈值电表数字图像分割 电表数字识别【Matlab代码#51】

文章目录 【可更换其他算法,获取资源请见文章第5节:资源获取】1. 原始蜣螂优化算法1.1 滚球行为1.2 跳舞行为1.3 繁殖行为1.4 偷窃行为 2. 多阈值Otsu原理3. 部分代码展示4. 仿真结果展示5. 资源获取说明 【可更换其他算法,获取资源请见文章第…

RTOS 低功耗设计原理及实现

RTOS 低功耗设计原理及实现 文章目录 RTOS 低功耗设计原理及实现👨‍🏫前言👨‍🔬Tickless Idle Mode 的原理及实现👨‍🚀Tickless Idle Mode 的软件设计原理👨‍💻Tickless Idle Mo…

Jmap-JVM(十六)

上篇文章说了ZGC是jdk11加入的,他是未来jvm垃圾收集器的奠定者,满足TB级别内存处理,STW时间保持在10ms以下。 Jmap 我们可以先通过jmap -histo 进程ip 来查看,但是这样看不太清晰,我们可以用这行命令生成一个文件&…

WebDAV之π-Disk派盘+ WinSCP

WinSCP是一个免费的开源文件传输应用程序,它使用文件传输协议,安全外壳文件传输协议和安全复制协议来进行纯文件或安全文件传输。该应用程序旨在与Windows一起使用,并支持常见的Windows桌面功能,例如拖放文件,跳转列表…

设计模式结构型——代理模式

目录 代理模式的用途 代理模式的实现 静态代理 JDK动态代理 CGLIB动态代理 代理模式的特点 与其他模式比较 代理模式(Proxy Pattern)是一种结构型设计模式,它允许通过创建一个代理对象来间接访问原始对象。代理模式的核心思想是将对目…

预科C语言

1.day10 1、perror() 原型:void perror(const char *s); 根据errno呈现错误信息 perror("malloc error"); malloc error: Cannot allocate memory 2、多文件编译 .c ---预处理(.i -E)---汇编(.s -S&#xf…

Visual Studio Code Python 扩展中的包管理

排版:Alan Wang Python 凭借其简单的语法和强大的库,目前已成为最流行的编程语言之一,也是最适合那些刚接触编程的人们的语言。但是,随着项目复杂性和规模的增长,管理依赖项的复杂性也会增加。当新用户不断承接更成熟的…

探秘MySQL底层架构:设计与实现流程

前言 Mysql,作为一款优秀而广泛使用的数据库管理系统,对于众多Java工程师来说,几乎是日常开发中必不可少的一环。无论是存储海量数据,还是高效地检索和管理数据,Mysql都扮演着重要的角色。然而,除了使用My…

《golang设计模式》第一部分·创建型模式-01-单例模式(Singleton)

文章目录 1. 概述1.1 目的1.2 实现方式 2. 代码示例2.1 设计2.2 代码 1. 概述 1.1 目的 保证类只有一个实例有方法能让外部访问到该实例 1.2 实现方式 懒汉式 在第一次调用单例对象时创建该对象,这样可以避免不必要的资源浪费 饿汉式 在程序启动时就创建单例对象…

Spring中事务失效的8中场景

1. 数据库引擎不支持事务 这里以 MySQL为例,MyISAM引擎是不支持事务操作的,一般要支持事务都会使用InnoDB引擎,根据MySQL 的官方文档说明,从MySQL 5.5.5 开始的默认存储引擎是 InnoDB,之前默认的都是 MyISAM&#xff…

数据结构--线性表2-1

目录 一、线性结构的定义 二、线性表的表示 三、顺序表的实现(或操作) 1、修改: 2、插入: 四、顺序表的运算效率分析:时间效率分析: 一、线性结构的定义 若结构时非空有限集,则有且仅有一个…

【MySQL】库和表的操作

目录 一、库的操作 1.1创建数据库 1.2创建数据库案例 1.3字符集和校验规则 (1)查看系统默认字符集以及校验规则 (2)查看数据库支持的字符集 (3)查看数据库支持的字符集校验规则 (4&…

Layui下拉多选框

标题xmSelect插件&#xff1a; xmSelect文档 下载Layui第三方插件 下拉多选框效果&#xff1a; 实现方法(例子)&#xff1a; 将xmSelect插件的xm-select.js文件引入到layui中&#xff1a; <script src"public/js/xm-select/xm-select.js"></script> …

Ubuntu搭建Samba服务-学习记录

文章目录 Ubuntu安装Samba流程Samba配置文件Samba添加账户配置文件修改Samba服务控制设置开机自动启动通过systemctl 启动服务通过 rc.local 启动 Windows访问参考链接 当前文章仅用于记录&#xff0c;在 Ubuntu中安装使用Samba&#xff0c;在Windows访问 系统环境&#xff1a;…

数据库管理-第九十四期 19c OCM之路-第四堂(02)(20230725)

第九十四期 19c OCM之路-第四堂&#xff08;02&#xff09;&#xff08;20230725&#xff09; 第四堂继续&#xff01; 考点3&#xff1a;SQL statement tuning SQL语句调优 收集Schema统计信息 exec dbms_stats.gather_schems_stats(HR);开启制定表索引监控 create index…

Android性能优化之游戏的Theme背景图

近期&#xff0c;对游戏的内存优化&#xff0c;通过内存快照发现&#xff0c;某个Activity的theme背景图 占用3M 多。考虑着手对齐进行优化。 问题 查看游戏中的内存快照&#xff0c;发现有一个图片bitmap 占用3M 多&#xff0c;设置在Activity的背景中&#xff1a; 查看Phon…

scrcpy2.0+实时将手机画面显示在屏幕上并用鼠标模拟点击2023.7.26

想要用AI代打手游&#xff0c;除了模拟器登录&#xff0c;也可以直接使用第三方工具Scrcpy&#xff0c;来自github&#xff0c;它是一个开源的屏幕镜像工具&#xff0c;可以在电脑上显示Android设备的画面&#xff0c;并支持使用鼠标进行交互。 目录 1. 下载安装2. scrcpy的高级…

使用serverless实现从oss下载文件并压缩

公司之前开发一个网盘系统, 可以上传文件, 打包压缩下载文件, 但是在处理大文件的时候, 服务器遇到了性能问题, 主要是这个项目是单机部署.......(离谱), 然后带宽只有100M, 现在用户比之前多很多, 然后所有人的压缩下载请求都给到这一台服务器了, 比如多个人下载的时候带宽问…

python与深度学习(四):ANN和fashion_mnist二

目录 1. 说明2. fashion_mnist的ANN模型测试2.1 导入相关库2.2 加载数据和模型2.3 设置保存图片的路径2.4 加载图片2.5 图片预处理2.6 对图片进行预测2.7 显示图片 3. 完整代码和显示结果4. 多张图片进行测试的完整代码以及结果 1. 说明 本篇文章是对上篇文章训练的模型进行测…