博文

02.Vim.md

02.Vim.md 前言 其实不久之前,我对 Vim 的评价还是花里胡哨的,有这时间学 Vim 不如学点其他的,VSCode 不香吗,就搁着装逼呢? VSCode 香死了,几乎零配置成本,开箱即用,插件多多,然而用了一段时间 Vim 后,我已经被它这种文本编辑模式和高度的可自定义性所吸引,回不去了 :( 可能下面很多东西都花里胡哨的,不过就我来说,我用得很爽 :D ,不服不辨。 本文不讲使用,只介绍。 另外推荐使用版本较新的 Neovim ,相对于原版 Vim 功能更丰富,插件更多。最好不要用 Debian Ubuntu 自带的老版本,部分插件不支持。 原生 Vim Vim学习 网上有很多了,重要的是跟着做,十分推荐用 Neovim 的 Vimtutor,左侧是带批改的。 Vim 的局限 上手难,估计用上几年都能发现新东西 十分十分耗时间,自定义选项特别多(当然也是优势,搞 Vim 就要有养成的觉悟) Vim 额外功能 :term full-program-name 直接在 Vim 里面运行终端程序 <C+v> 矩形选择,对于添加注释有用 自定义 Vim 配置文件 如果使用 Vim, 文件为 .vimrc , 如果使用 Neovim, 文件为 $HOME/.config/nvim/init.vim (要自己新建) 可在 Github 上搜 dotfiles 可参照别人的配置文件进行修改 为 Vim 安装插件 修改 Vim 配置文件,为 Vim 添加各类插件 目前主流的有两个 Vim 插件管理器,一个是 Vim-Plug , 另一个是 dein.vim ,作为两者的区别为 Vim-Plug 老牌,十分易用,而 dein 作为较新(历史不新技术新)的插件管理器会更快,但相对来说易用性差一点(其实在插件少的情况下,感觉没啥区别),更推荐使用 Vim-Plug 插件管理器的安装请参照上方给出的 Repo 说明,主要一点就是要能终端访问 Github ,插件基本都是从 Github 上面下的。 插件推荐 Vim 比 VSCode 相差最大的我觉得就是 Vim 没有一个统一的扩展商店,Vim 插件不好找(而且也不知道有这个需求),很多时候是靠 dotfi

01. Linux 和 命令行.md

01. Linux 和 命令行.md 前言 很早之前就知道有 Missing Semester 这门课程,但一直没花时间学,认为自己折腾的内容其实和所教授的内容差不多,以为自己已经学过了。 但真正学了之后,才知道课程所涉及的广度和深度是自己捣鼓时很难学习到的,讲的很好很细,有基础的也可以看 文字版 学一下。 本系列主要是自己的看法。 内容上尽量避免和原课程内容重复,只作为课程内容的补充 。 原课程讲的很好了,也不知道补充啥好 对课程的一些评价 其实我还没学完,不过也快了,也许有些对该课程的发言权。 若是看视频,隔着屏幕你都能感觉到三位讲师的热情,这是真的热爱,十分佩服。 若是看文字档,真的能感到记录的很详细,讲的也很通俗,能把整个复杂的体系梳理成线性的,基本能 Self-contain 的教程,真的很了不起;对外部链接的扩展也很到位,若是想了解更多也不会没有方向;Exercise 的设置也还可以,网上也有 答案 。 缺点也是有的,首先是视频(也就是课堂上)基本就是不停的演示一连串的命令,可能相对枯燥,而且明显看得出时间卡的很紧,讲的很紧(但也没到快的程度,而且教这些内容确实无法避免枯燥的形式,课程 Note 的补充也弥补了这方面不足)。 其次是其中一位讲师口音有点重,但他出现的视频下都有校对良好的人工字幕,问题也不大。 总的来说,是很好的一门课。 正题 本文包含了以下章节内容 Course overview + the shell 无笔记,十分基础,作为课程入门,吃饭时候看挺下饭的 Shell Tools and Scripting 主要讲了 Shell Script 编程 $hebang (shebang) 的使用 小技巧:通过 Shell 执行命令前,可以先用 echo 打出来检验命令正确性 Command-line Environment 大体讲了 SIGNAL – 为什么 Ctrl+c 能够停止程序,为什么有时候不能,Ctrl+z 又是什么,学会了可以结合 Lecture 2的 Shell 写个脚本,考验你周边只会 Ctrl+c 的朋友 (然后周围没人用 Linux ) 前台运行,后台运行 (bg, fg, nohup, &, jobs) Tmux

Shell Tools and Scripting · the missing semester of your cs education

Shell Tools and Scripting · the missing semester of your cs education Metadata: Link: missing.csail.mit.edu Date: 2022年01月17日 19:26:14 Tags: #Annotation [x] 总结 [[01. Linux 和 命令行]] To assign variables in bash, use the syntax foo=bar and access the value of the variable with $foo . Note that foo = bar will not work since it is interpreted as calling the foo program with arguments = and bar . In general, in shell scripts the space character will perform argument splitting. This behavior can be confusing to use at first, so always check for that. 备注: To assign a variable, use = without space To use a variable, simply add $ before it Strings in bash can be defined with ' and " delimiters, but they are not equivalent. Strings delimited with ' are literal strings and will not substitute variable values whereas " delimited strings will. 备注: ' no variable Here $1 is the first argument to the script/funct

Command-line Environment · the missing semester of your cs education

Command-line Environment · the missing semester of your cs education Metadata: Link: missing.csail.mit.edu Date: 2022年01月20日 09:10:30 Tags: #Annotation [ ] 总结 [[01. Linux 和 命令行]] Your shell is using a UNIX communication mechanism called a signal to communicate information to the process. 备注: In our case, when typing Ctrl-C this prompts the shell to deliver a SIGINT signal to the process. 备注: Signals can do other things beyond killing a process. For instance, SIGSTOP pauses a process. In the terminal, typing Ctrl-Z will prompt the shell to send a SIGTSTP signal, short for Terminal Stop (i.e. the terminal’s version of SIGSTOP ). We can then continue the paused job in the foreground or in the background using fg or bg , respectively. 备注: The jobs command lists the unfinished jobs associated with the current terminal session. 备注: More intuitively, you can also refer to a process using the percent symbol followed

建立国内可访问的 Blogger

建立国内可访问的 Blogger 前言 其实很早之前就已经尝试过使用 Blogger 进行博客建设,但之前只是随意折腾了一下,如今打算正式整体迁移博客到 Blogger 中,主要是以下几点原因。 工作流的转变 不再以 Notion 为中心,目前 Notion 只用于多人协作,看书数据库等内容 开始使用 简悦 作为网页标注工具,同时配合自动化导出 Markdown 作为写文素材 开始使用 Obsidian 作为笔记软件 发现了 Stackedit.io 这个神器,能直接发布 Markdown 到 Blogger 中。配合 Dropbox 的同步,简直完美。 思维的转变 Local First! 云端软件只是获得了使用权,而不是所有权 虽然用的 Blogger,所有文章本地储存+Dropbox 备份 Easy First! 随着学习压力的增大,愈发没有精力折腾各种乱七八糟的事了 Blogger 本身质量过硬 存活时间长 安全性好 访问速度快 它的主题真的超棒,简洁大方(Essential Theme),真的是换用 Blogger 的重要原因之一。 目前有了一个满意的工作流,不出意外应该不会折腾新工具了。 需要注意的是,需要自有域名才能让国内访问。 对比其他博客平台 优点 静态博客 与 Vercel, Github pages 相比,Blogger 访问速度非常快(Google HK||TW Edge Node) 开箱即用,不用装 Go || Nodejs Blogger 主题真的超棒,真的符合审美 Wordpress || Typecho 快 零成本 稳 国内博客平台 无需实名 自定域名 缺点 改模板(会在文末给出 Github 地址直接抄) 显示缩略图 改 js css 改评论 需要 Stackedit 才能支持 Markdown 步骤 1. 添加自定义域名 略,跟着步骤走,添加两个 CNMAE 记录即可,一个作为解析,一个作为认证(解析可以 A 记录到 ghs.google.com 于国内可用的 IP,访问较稳定) 开启 HTTPS 要等十分钟左右,在这之前是不能访问的,除非你关掉重定向,但

gdb 简明使用教程

gdb 简明使用教程 Self-plug && Better rendered blog page 顺便 @“Tover”#37 师兄讲讲 pwndbg 咋用?-.- 前言 gdb 想必大家都听说过,作为最有名气的调试器之一,却由于其在命令行中运行的特点导致了周围用的人并不算多,加之现代编辑器中的调试功能已经成为标配,在很多时候用自带的调试器就能完成调试了。 但我依旧认为 gdb 十分重要,一是因为如果是多文件编程就不能用 VSCode 中自带的调试器(其实也是 gdb ,套了层 gui ,或许改下 json 能用,但是不打算改),二是因为市面上不同编辑器所带的调试功能用法虽然大同,但总是小异。 特别是 SCNU 机房的电脑默认 VSCode 配置无法直接调试,但默认装有 gdb(神奇) ,就不用在期末考试时候换用不熟悉的 VS || DevC++ 了 :) 2022.01.05 update 不用想在机房用 g++ || gdb 了,首先机房各电脑环境不同,必须要新 Win10 系统才能有环境,其次机房的 g++ 环境似乎也有点问题,编译不出可执行文件,很神秘。写半小时代码,花半小时解决怎么运行。幸好考试简单。。 还是学一手 VS 下的 debug 吧。 正文 前期准备 gdb 在启动时会首先弹一个版权信息,很烦,建议在 ~/.zshrc || ~/.bashrc 中添加 alias alias gdb="gdb -q" 或者启动时添加 -q 选项 q for quiet gdb 在退出时会弹一个确认信息,如果你觉得烦,也可以新建文件 ~/.gdbinit 并添加 set confirm off 顺带一提, ~/.gdbinit 文件如其名,是gdb在启动时会运行的命令,借此能够实现对 gdb 的扩展,如 pwndbg 编译时需要添加特殊参数 -g 代表这个程序编译时要留下调试信息 例如: g++ main.cpp -o main -Wall -g P.S. 似乎使用了 -O3 编译参数会对 gdb 产生影响? The  gcc docs  note that the default debug flags are