玩物丧志 类目

分享优秀的软件和硬件产品,以及可以提升日常效率的好工具

新版 Firefox 试玩

记不清楚从什么时候开始使用 Firefox 的,用的第一个版本应该是 v3.6,当时觉得 Firefox 可定制性很强,可以按照自己的喜好折腾主题、样式、功能,也就逐渐迷上了火狐浏览器。也是大概在那期间(11年),自己开始业余时间学习 JavaScript,动手写一些 Greasemonkey 的脚本拓展网站功能。不过很遗憾,因为觉得 Firefox 的扩展入门比较难(后来开发 Chrome 扩展就发现非常容易),也就一直没有机会折腾一个扩展玩玩。

每一个曾经的 “Firefox” 粉应该都折腾过用户样式(Stylish)、油猴脚本(GreaseMonkey)、手势操作(FireGestures)、拖拽( Drag to go?)、下载以及标签定制这些扩展吧,这些也是当时 Firefox 受到大家追捧的很重要一个原因,几乎整个界面和功能都可以定制。当时甚至一度沉迷 Vimperator(以及Pentadactyl),打算不用鼠标,全键盘操作浏览器。

不过后来 Google Chrome 出现了,因为它非常简单、好用、启动快,而且自己也越来越不喜欢折腾,就叛变了,一直到换成 Mac 系统。现在主力是默认的浏览器 Safari,iMac、MacBook、iPhone、iPad 多个设备上基本可以保持一致的体验,开箱即用,Safari 我基本也没安装扩展,甚至广告过滤的扩展也没安装。

继续阅读

我的 VIM 配置

昨天给博客新建了一个我的装备分类,主要是想在这个类目下,分享一些我自己在用并且觉得值得推荐的软件(APP)或者硬件外设等等。相比之下,最值得推荐的应该是 Vim,一个古老而又强大的编辑器软件。

我从大二开始接触 Linux 就开始使用 Vim,至今也差不多有六、七年了。不过只有在最开始的一段时间,疯狂地在网上找自定义配置、找插件,之后就几乎没折腾过了。我的入门教程是大家來學 Vim 一個歷久彌新的編輯器A Byte of Vim。啃了这两份手册之后,基本上也就没继续再深入了解了。掌握了一些日常使用的技巧与方法,足以应付大量的编程任务了。我在入手 Macbook Air 之后,曾经尝试过 Sublime Text,也是一个很值得推荐的编辑器,无奈实在是精力有限,没去折腾,长草后就卸载了。我现在在 Mac 下面一直使用 MacVim

我目前的 Vim 工作环境截图:

my-vim

继续阅读

KeyRemap4MacBook: Mac 上的改键神器

Apple Keyboard 是和 Magic Mouse 同时买的,我挑的是一件老款有线鼠标 MAC G6。但是到手后才发现是英版键盘,英版同标准版有几个键位的位置不一样,比如~键的位置是§,而前者跑到了Z键的边上,这就导致我经常按错键。无奈只能上网找一个可以改键的 APP,通过 Google 搜索到小众软件的一篇文章推荐 KeyRemap4MacBook 应用,试用一把,果然不错,神器一枚。

KeyRemap4MacBook 是日本人 Takayama Fumihiko 开发的免费改键(键盘映射)应用,功能非常强大。它内置了很多种常见的键盘映射方案,并且提供 Vim 模式,可以像 Vim 一样的操作浏览器(Firefox 不可以)、邮件等常规程序。映射方案可以限定在一种或者多种应用之内,或者排除某些应用,你也可以通过 Private.xml 文件扩展自己的自定义映射方案。

KeyRemap4MacBook 安装之后需要重启,在通知栏上会出现一个方块形状的图标,点击后可以在菜单中打开设置界面,见下图:

default-keyremap-settings

继续阅读

mark-directory: 快速目录切换工具

今天早上看到@程序员的那些事转的一条微博《使用命令行快速操控文件系统》,文中作者介绍了他提升工作效率的一个命令行小工具,可以快速切换工作目录,我觉得蛮有意思的,小小研究了下。在原工具的基础上,我在 Github fork了一个改进的版本 —— mark-directory,具体可以看文章最后。

工作原理

这个小工具的工作原理非常简单,相信大家扫过一遍原文就可以明白,它创建了一个隐藏目录(例如~/.marks),目录里面存放的文件都是常用目录的软链接。我们可以将这个软链接看作一个书签,通过访问这个书签我们可以方便地跳转到相应的目录。

具体实现

这个小工具也提供了相应的命令来管理这些软链接文件,当前支持的是jump, mark, unmark和marks。

以上4个操作命令的实现代码如下所示,非常简单:

export MARKPATH=$HOME/.marks
function jump { 
    cd -P "$MARKPATH/$1" 2>/dev/null || echo "No such mark: $1"
}
function mark { 
    mkdir -p "$MARKPATH"; ln -s "$(pwd)" "$MARKPATH/$1"
}
function unmark { 
    rm -i "$MARKPATH/$1"
}
function marks {
    ls -l "$MARKPATH" | sed 's/  / /g' | cut -d' ' -f9- | sed 's/ -/\t-/g' && echo
}

将这段代码放到~/.bashrc 文件中。接下来我们来尝试使用这个小工具。

继续阅读

Backup Mediawiki 站点

去年,我使用 Mediawiki 搭建了一个 wiki 站点,用于团队知识积累。短短半年,已经有不少的沉淀,随着 wiki 越来越重要,它的数据安全性也必须考虑起来,因此我们准备把 wiki 迁移到 VM 上,并且考虑做好备份。迁移之前,数据备份的操作是件体力活,不过好在网上有不少的文章介绍如何操作, Mediawiki 官方也有专门的文章来介绍具体的操作过程以及需要注意的地方,详见Backing up a wiki

文章的最后还引用了一系列的备份脚本,这是我等懒人最喜欢的方法,越简单粗暴越好。看了其中的一个脚本(Backing up a wiki/Duesentrieb's backup script - MediaWiki),脚本的内容很简单,不过要想 run 起来,首先还得改动开头的几处配置,比较麻烦。

所以我自己 fork 了一个新的版本,通过命令行参数的形式提供配置,并且修复了脚本的几处 Bug,例如备份目录没有创建、输出信息中的转义字符串没有显示等等。

继续阅读

Chrome 扩展打包工具 buildcrx.sh

Chrome.exe本身就可以用来打包crx文件,但是用起来不是很方便,比如我将代码托管在Github上,在源代码目录下面会有许多目录不需要打包到crx文件中,例如.git目录,这个功能目前来说chrome.exe无法做到。幸运地是,网上有很多人写了各种版本的打包工具,有人还在一个网站上专门收集了这些打包脚本,传送门

从中我选择了crxmake.sh作为打包的基础脚本,然后再此基本上做了些定制改进,除了最基本的打包功能外,它能够做到:

  • 使用grep命令的扩展正则表达式ERE语法来排除文件;
  • 查找manifest.json文件中的update和version信息,自动生成更新后的updates.xml

下载地址:dangoakachan/buildcrx · GitHub

继续阅读