「C++」typeid 介绍
typeid
是 c++ 中的一个关键字,它和 sizeof
类似,它是一个运算符,能获取到 c++ 的类型信息。
typeid
能够对多态对象在运行时获取其真实的类型信息。
typeid
是 c++ 中的一个关键字,它和 sizeof
类似,它是一个运算符,能获取到 c++ 的类型信息。
typeid
能够对多态对象在运行时获取其真实的类型信息。
在批量对一些行做一些简单修改时,使用 normal
命令会很方便。 例如可以通过 %normal A,
在文件所有行的末尾添加一个 ,
字符。 但 normal
命令会频繁地触发 InsertEnter
、InsertLeave
等事件,一些插件例如 airline
会监控这些事件来执行某些操作, 这会导致 normal
命令执行特别慢,处理每一行时都会有一些卡顿。
本文会介绍如何屏蔽已安装插件的影响,能够快速地执行 normal
命令。
现在公司给配置了 iMac 和 Macbook,平时在公司时就用 iMac,在家的时候会用 Macbook,多个终端就涉及到一些数据的同步, 例如一些配置文件、写了一半的 PPT 等。最开始尝试过使用国内的微云等网盘来进行同步,但发现同步速度很慢, 而且经常出现一些莫名其妙的同步错误。后面用过一段时间的 Dropbox,但在家时使用的翻墙工具很不稳定, 经常出现无法连接 Dropbox 的问题,而且 Dropbox 的免费空间也很小,要是同步一些大文件就显的不够用。
因为在公司可以申请一些个人使用的开发容器,磁盘空间有 500GB 左右,就考虑可以自己搭建一个同步网盘, 这样就不会被限速,而且空间也只受硬盘大小的限制;唯一的缺点就是需要连上公司的 VPN 才能使用网盘, 但毕竟也会经常同步一些公司内部的资料,连 VPN 才能使用也是一种安全保险,避免一不小心就 “高压线了”。
我是通过 Vim 写 Markdown 的方式来写博客,这种方式在需要插入剪贴板里的图片时不是很方便。 之前我是通过一些图床工具来实现剪贴板图片插入,但这里会存在两个问题:
鉴于刚才提到的问题,我希望通过如下的方式来插入图片:
下面是 Shell 脚本代码,主要是基于 pngpaste
读取剪贴板里的图片,并按照 md5-timestamp.jpg
文件名保存到特定目录:
IMG_DIR="img/posts" |
把上面的 Shell 脚本保存为 blogimg
并添加可执行权限,然后在 vimrc 里加上如下的配置:
command! -nargs=0 InsertImg :r !blogimg |
后面就可以通过执行 InsertImg
来直接插入剪贴板图片对应的链接:
Fiddler 是 Windows 下很流行的 Http 抓包工具,它可以把抓到的 Http 请求保存为 saz 格式。 在工作中调试后台服务时,同事经常会发过来一个 saz 格式的文件,但我是用的 macOS 系统, 而 Fiddler 没有 macOS 的版本,就没法直接查看 saz 格式文件。
后来通过 Google 发现 Fiddler 其实是一个 zip 包,Http 的请求和回包都保存在特定的文件里:
sessionid#_c.txt
客户端请求sessionid#_s.txt
服务端回包而最新版本的 Vim 是可以直接识别 zip 包并打开对应的文件的,这样我们就可以直接用 Vim 查看 saz 格式的文件了。 先在 vimrc 里加上如下的配置:
autocmd BufReadCmd *.saz call zip#Browse(expand("<amatch>")) |
然后就可以直接用 Vim 打开 saz 文件了:
如果想要可以直接双击打开 saz 文件,可以安装 GUI 版本的 VimR。
前段时间参加公司内部的一个技术比赛:实现一个打印自己 MD5 值的最小 elf64 格式二进制文件。 在这个过程中需要对二进制文件的某些字节进行修改、删除等编辑操作,本文介绍如果通过 Vim 来编辑二进制文件。
前几天看到一篇名为 现代后端开发者必备技能 的博客. 其中有一个条目提到了 GraphQL, 称它为 REST 2.0
, 再加上之前偶然间看到最新版的 Github API 使用了 GraphQL, 便想了解一下它到底是个什么东东.
GraphQL 是 Graph Query Language 的简称, 在 Github 官方文档 中指出了 GraphQL 的几个特点:
A Specification
可以在 API Server 上定义 Schema, 客户端发起的 query 请求会基于 Schema 进行验证;Strongly typed
强类型; 可以在 Schema 中指定某个 field 的类型, 以及不同对象之间的关系;Introspective
客户端可以通过 query 获取详细的 Schema 定义;Hierarchical
API 调用是基于 query 中指定的层级关系及 fields 进行返回的, 不会返回不必要的冗余信息;An application layer
GraphQL 不是一种数据存储模型或者数据库查询语言, 它可以连接不同的数据存储源;我们经常会遇到搭建多节点集群得需求, 例如摩根推出的基于以太坊的区块链 Quorum. 对于这种搭建多借点得需求, 我一般都是先通过 docker-compose 在本地实现多节点, 然后再基于 docker-compose 迁移到 Kubernetes .
这样做是因为基于 docker-compose 来实现要简单很多:
同时, 我们在实现 docker-compose 多节点阶段的很多工作, 如创建 Docker Image 及编写 entrypoint.sh
等, 都可以在往 Kubernetes 上迁移时被复用到. 基于 docker-compose 的多节点环境也能作为开发环境使用.