Skip to main content

配置容器用于远程开发

· 6 min read

相信有很多有远程开发需求的同学,想用本地的IDE,但运行环境在远程。 例如,最近我需要在英伟达 GPU 上面写程序,需要 ssh 连接到实验室远程的一台机器上。 但这台机器为了满足不同用户的需求,没有在宿主主机上安装 CUDA 运行环境,大家都在这台机器上的 docker 的容器里面跑程序。

苦于在容器里面,没有直接的 IDE 来写代码,这篇文章主要介绍下如何配置我本地的 Mac 电脑,可以用我本地的 VS-Code 和 Jetbrains CLion 这两款编辑器/IDE连接到远程机器里面的容器,进行远程开发。

最终配置完成的效果就是:启动我 Mac 本地的IDE,就可在远程的容器里面进行开发、调试、运行:

| 我的本地系统上的 IDE | --ssh--> | 远程 Linux 机器(宿主) | --docker--> | docker 容器 |

Step0: 前提条件

  • 远程的Linux 宿主主机需要安装好 dockerd (docker 守护进程)。
  • 远程 Linux 宿主主机支持 ssh 连接,并且有一个可用的用户。

用 Markdown 写毕业论文

· 11 min read
genshen
student in CS

最近因为要写博士毕业论文了,由于研究生院也没有非常严格限制毕业论文的格式。于是想着有没有一种便携的方式来撰写毕业论文。

为什么不用 Microsoft word ?

  • word 排版没有 LaTeX 的漂亮。
  • word 内置的公式功能对于公式排版及其编号、引用不够方便。要解决这个问题,得借助 mathtype 等第三方工具。(题外话:最新版的 office 365 可以通过 LaTeX 插入一些简单公式)。
  • 图片、表格、章节的交叉引用操作不方便,感觉每引用一次都得点好多下。
  • 大型文档使用体验差。主要是几百页的好几万的文档,保存速度慢,甚至会崩。特别是审阅模式下,编辑时可能会有卡顿的情况。
  • 文献引用不方便。word 内置的交叉引用感觉基本不好用,和文献管理器(如 endnote、zotero)没打通。 不过,似乎这个额问题可以通过文件管理器解决。例如,我用的是 zotero,它有个word 插件,可以进行参考文件的插入和最后的汇总。

为什么不直接用 LaTeX ?

因为导师看毕业论文需要用 word 格式(无奈)。 LaTeX 偶尔也还是需要调整格式问题(如图片大小和子图;表格的排版相对 markdown 要麻烦一些。当然 markdown 不支持复杂的表格形式。)。

一些有用的工具

· 3 min read

命令行

  1. fish 一款 shell,自带了路径补全、强大的命令补全及建议。
    内置了历史命令补全(输入命令的一部分,会从历史纪录里面提示相匹配的命令,按上下键进行建议的命令的切换。)
    默认支持 git 的分支显示。

  2. exa 一款 ls 命令的替代品。支持丰富的颜色显示(例如文本文件、图片、压缩包等用不同颜色区分;文件的权限(wrx)也用不同颜色区分)。 默认显示容易阅读的形式(例如文件大小默认显示传统 ls -h 的形式)。 支持 git 文件的显示,标记文件的修改、暂存状态。 默认支持 tree 形式显示(类似 tree 命令)。 支持文件图标显示。 支持排序和筛选。 更多特性可查看:https://the.exa.website/features

  3. zellij 一款终端复用的工具。

  4. tokei 一块强大的代码行数统计与分析工具。支持按目录、语言等方式分类显示。支持排序、排除等操作。

  5. hexyl 一款二进制显示工具,拥有丰富的色彩显示。 另外,也推荐 vscode 的 Hex Editor 插件,图形化界面可能更方便。

  6. helix, 用 rust 开发的命令行的vim-like编辑器。

    • 熟悉 vim 的上手会比较快;
    • 开箱即用的 file-picker ,buffer-picker;
    • 支持 LSP(这样就可以实现代码补全、代码错误检查了)、支持 Multiple selections;
    • Space 模式和选项窗口提示很方便(各种按键导航和提示),用户体验不错。
  7. zellij,基于 rust 实现的终端复用工具(类似tmux)。

    • 导航和操作提示,注重用户体验。