gdb基础 Debug是啥? Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序 Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用 本地运行没问题,更换服务器就跑不起来 这个问题就是Debug版本带了一… ...更多
shell常用知识 shell基础 记录一些用到的shell知识 常用的cli的快捷键 ALT-? list complete ALT-* insert complete C-x * glob-expand-word M-# insert-comment (M-#) M-g glob-com… ...更多
有栈vs无栈协程 ...更多
flatbuffers ...更多
stdcall和cdecl 概念
stdcall调用 stdcall是Pascal程序的缺省调用方式,参数采用从右到左的压栈方式,由调用者完成压栈操作,被调函数自身在返回前清空堆栈。 WIN32 Api都采用_stdcall调用方式,这样的宏定义说明了问题: WINAPI _stdcall … ...更多
go certificate signed报错 CA证书 数字证书主要用来做签名认证,保证了信息和数据的完整性和安全性 但是在开发过程中经常发生内网环境的证书过期,导致依赖文件无法访问,编译报错 这里记录一下直接用http不加密的方式下载依赖文件 go 主要有几个环境变量, 这样访问这些网址时就会用… ...更多
哪些场景应该用emplace_back emplace的插入原理 当调用push或insert成员函数时,我们将元素类型的对象传递给它们,这些对象被拷贝到容器中。而当我们调用一个emplace成员函数时,则是将参数传递给元素类型的构造函数。emplace成员使用这些参数在容器管理的内存空间中直接构造… ...更多
零宽断言 正则表达式通常被用来检索、替换那些符合某个模式(规则)的文本。 零宽断言用于查找在某些内容(但并不包括这些内容)之前或之后的东西,它们像 \b ^ $ < > 这样的锚定作用,用于指定一个位置,这个位置应该满足一定的条件(即断言),因此它们也被称为零宽断言。 断言用来声明一个应… ...更多
markdown-preview emacs markdown preview 直接上插件 grip-mode插件依赖grip python3 -m pip install grip
之后使用use-package安装grip-mode, 这样在编辑markdown文件是就自动用浏览器打开预览了 … ...更多
karabiner-elements 使用命令行/vim/emacs等键盘操作比较多的用户,有一点感触就是:小拇指很容易累。本人起初不喜欢修改键盘映射,主要原因是定制化比较多的系统,在团队合作时互相操作会不方便,无论是自己偶尔在别人电脑上使用或者别人在自己的电脑上使用,都会不习惯。ORZ最后因为vi… ...更多
一致性哈希 一致性hash // http://walkerdu.com/2020/01/02/consistent_hash/ /*
- map
- 对于map的底层原理,是通过红黑树(一种非…
cxx抛异常 C++程序抛出异常后执行顺序 析构函数中是否可以抛出异常 首先我们看一个常见的问题,析构函数中是否可以抛出异常。答案是C++标准指明析构函数不能、也不应该抛出异常! C++异常处理模型是为C++语言量身设计的,更进一步的说,它实际上也是为C++语言中面向对象而服务的。C++异常处理… ...更多
Hexo and gitalk Welcome to Hexo! This is very first post. Check documentation for more info. If get any problems when using Hexo, can find the answer … ...更多
Vim 使用系统剪切板
Vim 是运行在 Terminal 里的 Shell 程序,所以要把内容拷贝出来可以通过 Terminal,也可以通过 Vim 自己。不配置 Vim 剪切板时只能通过 Shell 来拷贝粘贴:
- 通过 Shell 拷贝(比如在 iTerm 里按住 Alt 选取内容)会有问题:比如会包含 Vim 左侧行号、折行变成了换行。
- 通过 Shell 粘贴有类似的问题:相比于
p命令,在插入模式下 Ctrl+V 时 Vim 会把内容当作字符键入,触发 Vim 的所有处理键入的插件,比如自动补全、语法检查等。不仅会很慢,而且可能会破坏你的内容(比如粘贴一对括号,可能 Vim 会再帮你自动补全一个多余的右括号)。
所以完美的拷贝粘贴一定要通过 Vim 本身。Vim 中 p(paste)、d(delete)、y(yank)等拷贝粘贴操作使用的是 匿名寄存器 ""(unnamed register),本文就来解释怎么在 Mac/Windows/Linux 上把 Vim 的 匿名寄存器 映射到操作系统的剪切板。
TL; DR
- 确保你的 vim 支持剪切板,通过
vim --version | grep clipboard检查。 - 确定你的剪切板寄存器是
"+(XA_SECONDARY)还是"*(XA_PRIMARY)。 - 同步剪切板和匿名寄存器,在
~/.vimrc添加配置比如set clipboard=unnamed。
4K 设备配置指南
只要 4K 显示器就能拥有 4K 体验吗?这篇文章写在 4K 出现 六年之后的今天,再来重新审视这个问题,以及如何正确地配备显示器、片源、网络和视频线缆。
七月 04, 2020 #网络 #视频 #HDMI
Bash 转义和引号的使用
字面量、转义和引号是任何编程语言的基础,但却少有人认真地学习 Bash 中的转义和 引号。 好消息是 Bash 引号的语义非常简单,这篇文章就可以完全描述。 TL;DR:
- 反斜线用来转义除换行之外的所有字符,反斜线加换行为连行;
- 单引号用来直出字面量,其内容部分不允许转义,包括单引号转义也不允许;
- 双引号内允许 命令替换 和对特定几个字符转义,双引号内的反斜线对其他字符没有特殊含义,会被当作字面量处理。
对 tail -f 使用管道
最近发现 tail -f 时管道后面的程序都会被卡住,才发现 grep,sed,awk 不直接输出到 TTY 时都是带缓冲的。平时跟在 cat 后使用没问题是因为输入管道关闭触发了 flush。本文详细解释其中的坑,以及怎么让 sed, awk, grep 立即 flush。
TL;DR:grep 添加 --line-buffered,sed 添加 -u,awk 调 fflush()。
从当前位置打开 Terminal
我们有很多工作区时,每次打开一个 Terminal 都需要先 cd 到和上一个 Terminal 一样的位置再开始工作。 这个过程既然是固定的,那就一定能自动化。
Harttle 遇到的具体场景是,i3wm 有 workspace(工作区)的概念,每个工作区可以打开任意多个 Terminal。 我希望同一个工作区的 Terminal 打开时都有一样的 CWD(Current Working Directory), 不同的工作区有不同的 CWD。即:打开 Terminal 时,自动 cd 到当前工作区其他 Terminal 所在的位置。
本文基于 Reddit 上的一个小脚本展开,这一思路适用所有 Terminal Emulator 和 Desktop Environment(尽管我只有 Window Manager 也是适用的)。
十二月 26, 2019 #Terminal #Shell #i3wm
X11 多显示器配置:玩转 XRandR
RandR(Resize and Rotate)协议是基于 X Window 系统的一个扩展,它可以直接操作显示器模式、刷新率,属于 DDX 组件。 xrandr 是官方的 RandR 配置工具,比老的 Xinerama 机制更容易测试和配置。 本文在没有桌面环境的情况下直接对底层软件进行配置,如果有安装某种 DE 可以在其控制面板中找到对应的配置。
十二月 24, 2019 #Mac #X11 #XRandR #HDMI
VT 下的键盘映射设置
最近遇到在 X11 下切换到 TTY 可以用 Ctrl+LeftAlt+Fn 或 Ctrl+RightAlt+Fn,但从 TTY 切换回 X11 只能使用 Ctrl+LeftAlt+Fn 的问题。 为了手感比较一致今晚解决了这个问题并记录在这里,希望能帮助遇到同样问题的人。
具体原因是 X11 下的键盘映射由 xkbmap 来管理,它默认提供了比较复杂的配置;但 VT 直接运行在内核上没有经过 X11 它的配置更直接和简单。
这两份配置的不同导致了在 VT 下 RightAlt 不能正确映射。
这里我们关心的是 keycode 到 keysym 的映射关系,
更过关于 scancode, keycode, keysym 的概念解释可以先参考
ArchLinux 键盘映射 的第一小节。
这个 keycode 到 keysym 的映射关系就是我们常说的 keymap,
就是装各种系统时要选的键盘布局。
所有的 keymap 都存在 /usr/share/dbd/keymaps 中:
find /usr/share/kbd/keymaps/ -type f
关键在于 X11 和 VT 中如何选择这些文件,其中每个 .map.gz 文件解压后得到的 .map 文件即为键盘布局文件。文件中的数字表示 keycode,Alt、Control 这样的词即为 keysym。
十二月 07, 2019 #ArchLinux #keycode #TTY #X11 #vconsole