Trii Hsia 发布的文章


悲情似乎总会与希望并行,希望的终点又会是什么呢?尽管如此,英杰们依旧会去守护。过去的一切仿佛就在眼前,唯有不变的,也许只是那希望永恒。

《塞尔达传说:荒野之息》中的四首英杰曲,听了很有感觉,分享一下。

原文出自《木屐声声》
作者为张梅

读后颇有感想,分享一下。

《写给未来的你》

孩子,

我希望你自始至终都是一个理想主义者。

你可以是农民,

可以是工程师,

可以是演员,

可以是流浪汉,

但你必须是个理想主义者。

童年,

我们讲英雄故事给你听,

并不是一定要你成为英雄,

而是希望你具有纯正的品格。

少年,

我们让你接触诗歌、绘画、音乐,

是为了让你的心灵填满高尚的情趣。

这些高尚的情趣会支撑你的一生,

使你在最严酷的冬天也不会忘记玫瑰的芳香。

理想会使人出众。

孩子,不要为自己的外形担忧。

理想纯洁你的气质,

而最美貌的女人也会因为庸俗而令人生厌。

通向理想的途径往往不尽如人意,

而你亦会为此受尽磨难。

但是,孩子,

你尽管去争取,

理想主义者的结局悲壮而绝不可怜。

在貌似坎坷的人生里,

你会结识许多智者和君子,

你会见到许多旁人无法遇到的风景和奇迹。

选择平庸虽然稳妥,但绝无色彩。

不要为蝇头小利放弃自己的理想,

不要为某种潮流而改换自己的信念。

物质世界的外表太过复杂,

你要懂得如何去拒绝虚荣的诱惑。

理想不是实惠的东西,

它往往不能带给你尘世的享受。

因此你必须习惯无人欣赏,

学会精神享受,学会与他人不同。

其次,孩子,

我希望你是个踏实的人。

人生太过短促,

而虚的东西又太多,

你很容易眼花缭乱,最终一事无成。

如果你是个美貌的女孩,

年轻的时候会有许多男性宠你,

你得到的东西太过容易,

这会使你流于浅薄和虚浮;

如果你是个极聪明的男孩,

又会以为自己能够成就许多大事而流于轻佻。

记住,每个人的能力有限,

我们活在世上能做好一件事足矣。

写好一本书,做好一个主妇。

不要轻视平凡的人,不要投机取巧,

不要攻击自己做不到的事。

你长大后会知道,做好一件事太难,

但绝不要放弃。

你要懂得和珍惜感情。

不管男人女人,

不管墙内墙外,相交一场实在不易。

交友的过程会有误会和摩擦,

但想一想,

诺大世界,有缘结伴而行的能有几人?

你要明白朋友终会离去,

生活中能有人伴在身边,

听你倾谈,倾谈给你听,就应该感激。

要爱自己和爱他人,

要懂自己和懂他人。

你的心要如溪水般柔软,

你的眼波要像春天般明媚。

你要会流泪,

会孤身一人坐在黑暗中听伤感的音乐。

你要懂得欣赏悲剧,

悲剧能丰富你的心灵。

希望你不要媚俗。

你是个独立的人,

无人能抹杀你的独立性,

除非你向世俗妥协。

要学会欣赏真,

要在重重面具下看到真。

世上圆滑标准的人很多,

但出类拔萃的人极少。

而往往出类拔萃又隐藏在卑琐狂荡之下。

在形式上我们无法与既定的世俗争斗,

而在内心我们都是自己的国王。

如果你的脸上出现谄媚的笑容,

我将会羞愧地掩面而去。

世俗的许多东西虽耀眼却无价值,

不要把自己置于大众的天平上,

不然你会因此无所适从,人云亦云。

在具体的做人上,

我希望你不要打断别人的谈话,

不要娇气十足。

你每天至少要拿出两小时来读书,

要回信写信给你的朋友。

不要老是想着别人应该为你做些什么,

而要想着怎么去帮助他人。

借他人的东西要还,

不要随便接受别人的恩惠。

要记住,别人的东西,再好也是别人的;

自己的东西,再差也是自己的。

孩子,还有一件事,

虽然做起来很难,但相当重要,

这就是要有勇气正视自己的缺点。

你会一年年地长大,

会渐渐遇到比你强、比你优秀的人,

会发现自己身上有许多你所厌恶的缺点。

这会使你沮丧和自卑。

但你一定要正视它,

不要躲避,要一点点地加以改正。

战胜自己比征服他人还要艰巨和有意义。

不管世界潮流如何变化,

但人的优秀品质却是永恒的:

正直、勇敢、独立。

我希望你是一个优秀的人。

花火被捧上夜空,
如梦如幻般,
朦胧中,
绽放,盛开。
人们在夜空下欢呼,
花火在夜空中彷徨。
寂静不再,
唯有声响在四处逃串。
眼前,
只是一间房,一张椅,一个人,
只是窗中他的身影,
与那绚烂的花火。

准备

安装 MinGw-w64

具体说明细节和安装体验可以在《⑨也懂系列:MinGW-w64安装教程》这里查看。这里只记录一下安装设置和变量设置。

如果刚 Next 就出现 Cannot download reposytory.txt[0] 错误,可以尝试关闭杀毒软件(包括 Windows Defender),并以管理员方式运行。

安装设置说明

  • Version:GCC 版本,若无特殊需求优选最高
  • Architecture:系统架构,64 位系统选 x86_64,32 位选 i686
  • Threads:操作系统 API,开发 Windows 程序选 win32,开发 Linux、Unix、Mac OS 等其他 posix 协议的操作系统程序选 posix
  • Exception:异常处理模型

    • 64 位系统
    • seh:性能优化好,优选
    • sjlj:稳定性好
    • 32 位系统
    • dwarf:性能优化好
    • sjlj:稳定性好
  • Build revision:修订版本,保持默认即可

环境变量添加

打开 此电脑-属性-高级系统设置-高级-环境变量,在 系统变量-Path 编辑并新建添加你 MinGw-w64 安装目录下的 bin 文件夹路径,例如 C:\Program Files\mingw-w64\x86_64-8.1.0-win32-seh-rt_v6-rev0\mingw64\bin。保存即可。

Snipaste1

可以在 cmdpowershell 中运行 gcc --version 判断是否安装正确。(安装正确会输出版本号)

重启 VS Code

VS Code

这里需要先注意的是,这里的所有配置都是基于一个工作区(文件夹)的(因为编辑器编译调试需要配置文件),当然你也可以直接打开文件夹。但若要直接编译 .c&.cpp 文件,可以直接执行 ~gcc {.c} , ~g++ {.cpp} 进行编译。

先新建并打开你的工作(代码运行)区。

这里还需要注意的是,添加好环境变量后一定要重启 VS Code。必须退出后重新启动,否则编辑器无法识别编译指令。

C/C++ 拓展

Snipaste4

C/C++ 拓展供了针对 C/C++ 的 IntelliSense 与调试等功能,搜索「C/C++」即可直接安装。

Ctrl+Shift+P 打开命令面板,运行 C/Cpp: Edit configurations,插件会在当前目录下创建 .vscode/c_cpp_properties.json 配置文件,只针对本次的项目。

若你系统已安装 Visual Studio,它会自动将编译器等设置链接过去,但我们这不需要它。可以参考以下配置:

{
    "configurations": [
        {
            "name": "MinGW",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "compilerPath": "{your_mingw-w64_bin_gcc.exe_path}",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "gcc-x64"
        }
    ],
    "version": 4
}

上面的 {your_mingw-w64_bin_gcc.exe_path} 替换成你需要的编译器路径。例如:

  • gcc:C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/gcc.exe
  • g++:C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/g++.exe
  • /, \\ 都是可行的)

关于库文件设置,C/C++ 扩展已经可以通过 compilerPath 自动推断头文件以及库文件所在的目录,所以无需手动配置。

编译与调试

配置好上述文件后,可以先写一段 C/C++ 代码,测试编译并调试一下。(以下所有展示的配置只适用于单文件的编译并调试

#include <stdio.h>
int main() {
    printf("hello world");
    
    return 0;
}
编译设置:tasks.json

编译之前,需要先创建 .vscode/tasks.json(无需手动创建)。这个配置文件提供命令行构建配置,让编译器调用然后终端执行。

Ctrl+Shift+P 打开命令面板,运行 Tasks: Configure Task,选择 使用模板创建 tasks.json 文件,选择 Others 运行任意外部命令的示例。至此,编辑器会生成 .vscode/tasks.json 文件。编辑文件,例如:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            // 任务标签名
            "label": "compile",
            // 任务类型
            "type": "shell",
            // 编译器选择
            "command": "gcc",
            // 编译预执行的命令集
            "args": [
                "-g",
                "\"${file}\"",
                "-o",
                "\"${fileDirname}\\${fileBasenameNoExtension}\""
            ],
            // 任务输出配置
            "presentation": {
                "reveal": "always",
                "panel": "shared",
                "focus": false,
                "echo": true
            },
            // 任务所属组名
            "group": {
                "kind": "build",
                "isDefault": true
            },
            // 编译问题输出匹配配置
            "problemMatcher": {
                "owner": "cpp",
                "fileLocation": "absolute",
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            }
        }
    ]
}

简单地注释了一下每一个配置的目的,具体可以在 Tasks in Visual Studio Code 查看。

以上是 gcc 编译器配置,若要编译 C++ ,将 command 改为 g++ 即可。

至此,编辑器的编译设置已经完成了。可以在 Ctrl+Shift+P 中输入 Tasks: Run Build Task 进行编译,但只会生成 exe 文件,并不会启动调试。

调试设置:launch.json

光编译在有些时候肯定是不够的,那就需要调试功能了。就是所谓的 Debug 。

Ctrl+Shift+P 打开命令面板,输入 Debug: Open launch.json,选择 C++ (GDB/LLDB),编辑器会创建调试配置文件 .vscode/launch.json。但需要稍加修改,例如(基于 MinGW-w64 的 GDB):

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            // 调试名
            "name": "debug",
            // 调试器类型
            "type": "cppdbg",
            // 请求类型
            "request": "launch",
            // 调试的可执行文件(tasks.json 中配置的编译输出的文件)
            "program": "${fileDirname}/${fileBasenameNoExtension}.exe",
            // 调试参数
            "args": [],
            "stopAtEntry": false,
            // 当前工作区
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "{your_mingw-w64_bin_gdb.exe_path}",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            // 调试前启动的任务
            // 要与 tasks.json 中配置的 label 一致
            // 总是要先编译再调试的嘛
            "preLaunchTask": "compile",
        }
    ]
}

上面的 {your_mingw-w64_bin_gdb.exe_path} 替换成你 MinGW-w64-GDB 路径。例如:

  • C:/Program Files/mingw-w64/x86_64-8.1.0-win32-seh-rt_v6-rev0/mingw64/bin/gdb.exe

简单注释了一下,更多可以在 Debugging in Visual Studio Code 查看。

测试代码

至此,基本配置已全部完成。可以按 F5 开始调试代码。或者也可以在 VS Code 的调试界面点击左上角按钮进行调试。

Snipaste2

另外

Code Runner 拓展

Snipaste5

另外,毕竟都用 VS Code 这类轻量编辑器写代码了嘛,那就推荐一款超好用的代码调试工具:Code Runner

它可以让我们直接在 VS Code 运行各种语言代码,缺点就是,它很轻量,不支持复杂工程编译。 搜索「Code Runner」即可直接安装。接下来,我们需要设置一下 Code Runner 。

进入 VS Code 设置,右上角坐起第二个按钮(打开设置),在右栏中输入相关设置的 json 即可直接进行设置替换。

// 在终端中运行编译命令,否则我们无法与程序通过标准输入交互
"code-runner.runInTerminal": true,
// 如果你全局设置中的默认终端是 WSL 之类的,那么可以在工作区设置中改回 PowerShell
"terminal.integrated.shell.windows": "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
// 运行代码之前清除之前的输出
"code-runner.clearPreviousOutput": true,
// 开启这个后在运行编译命令之前会自动 cd 至文件所在目录
"code-runner.fileDirectoryAsCwd": true,
// 因为上面那个选项会自动 cd,所以我删除了默认编译命令中的 cd 语句
// 这里只保留了 C 和 C++ 的编译命令,有需要其他语言的请自行添加
"code-runner.executorMap": {
    "c": "gcc $fileName -o $fileNameWithoutExt && .\\$fileNameWithoutExt",
    "cpp": "g++ $fileName -o $fileNameWithoutExt && .\\$fileNameWithoutExt",
},
// 运行代码后切换焦点至终端,方便直接输入测试数据
"code-runner.preserveFocus": false,
// 在运行代码之前保存文件
"code-runner.saveFileBeforeRun": true,

如果没有特殊要求,编辑保存即可。

然后我们就可以直接在代码界面按下 Ctrl+Alt+N 即可进行编译调试输出,或者也可以直接 右键-Run Code。

Snipaste3

后日谈

为什么要配置 Windows VS Code 的 C/C++ 开发环境呢,总的来说还是想要轻量。也是刚刚上大学,目前为止的 C 程序完全用不着 VS 这么庞大的 IDE 写,刷刷 ACM 题也只需要轻量的 VS Code 就够了。

总的体验下来还不错,毕竟需求小嘛。其实之前一直用 macOS 写代码,最近想想还有台 Windows 笔记本不用白不用嘛,就开始配置开发环境了。不得不说,macOS 环境配置真的舒服和方便。

参考

配置文件代码来自 https://blessing.studio/

最近,
我的窗外一直有雨下着,
小小的,轻轻地。
即便有风儿吹,
它们也始终无法进到屋里。
我只是看着,听着,然后数着。
一点,二点,三点......
它们在我眼前出现,
又从我眼中消失,
然后又不停地,
重复着。
重复着这雨,
重复着数着。