Category Archives: 随笔

如何长时间保存重要数据?

我大学毕业时把所有资料刻录成几张 dvd,才几年就发现读取不了了,而我老爸读大学时候的笔记本,几十年后仍保存完好。我前几年保存在移动硬盘里的照片,因为搬家时摔了一次,完全毁坏了,但是我家里小时候的相册却能几十年没有事情。 所以今天数据存储固然比过去更加方便,但是可靠性却大为降低。硬件坏了你还可以花钱再买,数据丢了,你就再也无力回天了。数据对我来讲是最宝贵的东西,无数血与泪的教训后,让我开始深入思考,怎么样才能让我的数据长期安全的保存几十年甚至终身? 可以用光碟么? 光碟是最廉价最受欢迎的介质,他们本来设计寿命是 10-20 年的,而一般情况你不要指望你光盘上的东西五年后还能正常读出来。即便一些号称长期保存百年以上的光盘,寿命也会由于我们各种不当行为大大降低,比如,没法按要求的条件保存(放桌面上被阳光暴晒变形),不小心刮花光盘,在盘面上留下指纹或者手上的油脂,这些都会促进光盘表面化学成分变质,最终导致你的数据损坏。 可以用机械硬盘么? 这两年 HDD/SSD 技术进步很快,成本越来越低。8T 的 HDD 差不多只 1000 元人名币的成本,1T 的 SSD 也从过去的好几千元降价到 600 多了。HDD/SSD 都能组成阵列,用虚拟逻辑卷的形式跨越物理大小的限制,为你提供超大规模的连续存储空间。 然而当你想要维护更大规模的盘阵时,你基础硬件设施的成本会大幅上升,4路阵列和8路16路的成本完全不一样。同时更新换代快,我过去保存的几块 IDE/SATA 接口的硬盘,今天我已经没有任何可用的设备来读取他们了。 遗憾的是,不管是 HDD 还是 SSD 他们都不能长期可靠的保存数据,每年有 1% 的概率由于磁场变化造成 HDD 数据损坏,这个损坏率会随着硬盘寿命逐年变大。而 SSD 的寿命比 HDD 更短,同时他们还会受到温度的影响,如果长期处在40度以上的工作温度,二者的寿命都会减半。

Loading

Posted in 随笔 | Tagged | 23 Comments

用 Vim/VsCode 来写 WordPress 博客

试用过一段时间各种静态页面博客系统,Hugo 这些,虽然发展的不错,但是比起 WordPress 来还是太弱了。WordPress 毕竟是发展了 15 年的东西各种功能和插件都比较完善。 所以这次回过头来重新使用 WordPress,顺便做了升级,速度更快了(升级 PHP7,引入页面缓存等),代码高亮等各种小功能也调优了一下,又加了一些类似热门文章和访问计数等小功能。 然后我写了一个命令行工具,可以让我在喜欢的文本编辑器里用 MarkDown 写博客,然后命令行发布到 WordPress,具体见 markpress 相关文档。 下面是一些调优后的效果,首先 Markdown 的代码块,使用 highlight.js 以后好看很多: #include <stdio.h> int main(void) { printf(“Hello, World !!\n”); return 0; } 这个插件支持 185 种语言(包括 Vim)的高亮,可以选择 89 种主题,是目前最强的代码高亮解决方案。 MarkPress 页面生成基本尊崇 … Continue reading

Loading

Posted in 随笔 | Tagged | 4 Comments

别让 cd 浪费你的时间

终端下工作最烦躁的就是路径切换,没有自动路径切换的帮助,就像在泥里走路,于是有了各种 autojump / z / fasd 等工具来提升路径切换的效率,今天向大家介绍一个更好用的工具:z.lua,用熟练了以后就像终端里溜冰,路劲切换从此指哪打哪。 z.lua 是一个会学习你使用习惯的 cd 命令,它会跟踪你在 shell 下访问过的路径,通过一套称为 Frecent 的机制(源自 Mozilla),经过一段简短的学习之后,z.lua 会帮你跳转到所有匹配正则关键字的路径里 Frecent 值最高的那条路径去。 正则将按顺序进行匹配,”z foo bar” 可以匹配到 /foo/bar ,但是不能匹配 /bar/foo。 特性说明: 性能比 z.sh 快三倍,比 fasd / autojump 快十倍以上。 支持 Posix Shell:bash, zsh, dash, sh, ash, busybox 等等。 支持 Fish Shell,Power … Continue reading

Loading

Posted in 随笔 | Tagged | 4 Comments

千万别混淆 Bash/Zsh 的四种运行模式

Bash/Zsh 有四种不同运行模式,你的 bash 配置写错地方的话,不但会拖慢 bash 的速度,还会发生明明写了登陆配置但是就是没生效的情况。 第一个维度:interactive mode / non-interactive mode Bash 的 交互模式(interactive mode) 是指你直接输入: bash 以后 bash 出现一个 “$>” 的 PROMPT,等待用户不断的输入指令,输入 “exit” 或者按了 CTRL+D 才会结束。你 ssh 登陆到一台电脑,或者命令行下面打 bash ,后面没有参数的话,进入的都是交互模式。 而 非交互模式(non-interactive mode) 是指你用 bash 运行一个命令或者脚本,运行完 bash 就退出那种: bash … Continue reading

Loading

Posted in 随笔 | Tagged , | Leave a comment

自带语法高亮的 cat – ccat

cat 源代码时如果带上语法高亮,会不会让工作效率更高一些呢?我们来做一个吧: function ccat() { local style=”monokai” if [ $# -eq 0 ]; then pygmentize -P style=$style -P tabsize=4 -f terminal256 -g else for NAME in $@; do pygmentize -P style=$style -P tabsize=4 -f terminal256 -g “$NAME” done fi } … Continue reading

Loading

Posted in 随笔 | Tagged , | Leave a comment

Nano 编辑器可以做些什么?

终端下如果你不喜欢 Vim/Emacs 的话,Nano 是一个不错的选择,它是一个真正意义上的跨平台编辑器,基本上在所有 Linux 发行版上都默认自带 Nano,并且有 Windows 版本。 不少初学 Linux 都很喜欢用 Nano,但是我发现他们很多都是在裸用,既没配置,也一直在用一些比较低效的操作方法。 Q:下面的帮助占三行,很碍眼,能否隐藏? 可以在编辑时使用 ALT+x 就可以切换下面的帮助信息,或者在你的 ~/.nanorc 里面加一行: set nohelp 效果如下图: 恩,那两行恶心的帮助已经被我们去掉了,需要时还可以用 ALT+x 把它切换回来。 Q:如何打开语法高亮? 有的 Linux 发行版自带了 /etc/nanorc 文件,里面定义了语法高亮,而另外一些系统可能没有这个定义,你需要在 ~/.nanorc 中加一行: include “/usr/share/nano/*.nanorc” 各种语言的语法文件一般位于:/usr/share/nano/ 下面,设置前先确认一下。 Q:怎么编辑 ~/.nanorc,常用设置有哪些? 常见的 … Continue reading

Loading

Posted in 随笔 | Tagged , | Leave a comment

为什么希特勒要反犹太人?

因为希特勒需要一个假想敌,这个假想敌一方面能给国内的飞涨的物价、大规模的失业、饥荒还有战争背锅。另一方面可以吓唬德国人民,让他们认为只有服从纳粹,才能对抗可怕的敌人。 所有这些战争都是在德国媒体疯狂的鼓动下进行的,尽管现实中的假想敌可能没做什么,却也会被媒体描述成歇斯底里的存在,他们马上就会到来,破坏你的土地家园,奴役你的妻儿。因此对付这个假想敌的重要性超越了:公共权力,社会福利,医疗,住房等一切现实问题。 所有事情都要为其开道,一切问题的对错都以是否有利于实现目标进行判断,一切德国法律也需为它做出修改,一切妨碍实现最高目标的人员都应即时调整,一切社会资源都应该向其集中,这样才能凝聚内部最大的力量抵抗外敌。 希特勒让犹太人对德国国内所有社会弊病背锅。 kim家族猛烈的抨击美国和西方资本主义,认为他们应该为朝鲜所发生的一切负责 pakistan 军zf总是鼓动大家,同印度的异教徒做斗争。 以上

Loading

Posted in 随笔 | Tagged | Leave a comment

VimScript 五分钟入门(翻译)

译注:折腾 Vim 当然要能看懂和改写相关脚本,而中文资料匮乏,缺一个提纲挈领的教程。本文翻译自 Andrew Scala 的 《Five Minute Vimscript》,立足于让你用最短的时间掌握 VimScript 的基础和要点,你可以把它看成一份语言速查表。 Vim有着丰富的内建文档系统,使用 :h <关键词> 就可以阅读,如果你想在方便的尝试各种 vimscript ,你可以通过 NORMAL 模式下使用 gQ 命令进入 VimScript 的交互式环境调试命令。 注意:下面的例子中会包含一些形如 <符号> 的符号,意味着正式使用时应该被完全替换成真实的东西,包括左右两边的尖括号。而单独的 < 和 > 在 VimScript 中被用作比较符号。 变量 let 命令用来对变量进行初始化或者赋值。 unlet 命令用来删除一个变量。 unlet! 命令同样可以用来删除变量,但是会忽略诸如变量不存在的错误提示。 默认情况下,如果一个变量在函数体以外初始化的,那么它的作用域是全局变量;而如果它是在函数体以内初始化的,那它的作用于是局部变量。同时你可以通过变量名称前加冒号前缀明确的指明变量的作用域: … Continue reading

Loading

Posted in 随笔 | Tagged | 1 Comment