Ruby 1.9+ 的字符编码
从 1.9 开始,Ruby 增加了对字符编码的支持。这篇文章基本上是看了 Ruby 2.0 镐头书第 17 章 Character Encoding做的笔记,并补充了一些自己通过实验得到的结论。Ruby 代码文件的编码Ruby 源文件的默认编码:你需要告诉 Ruby 你的 Ruby 代码文件使用的是什么编码,因为 Ruby 中的字符串字面量、Symbol...
View ArticleRuby 正则表达式的 o 选项
如果在正则表达式中指定了 o选项,那么这个此表达式中的任意 #{...}替换仅在第一次求解它的时候执行替换;否则,替换在每次字面量生成 Regexp 对象时执行:3.times {|i| p /#{i}/} # 输出: /0/ /1/ /2/ 3.times {|i| p /#{i}/o} # 输出: /0/ /0/ /0/
View Article递归的 Ruby 正则表达式
在 Ruby 1.9+ 中可以使用 \g<xxxx>这个语法来表示递归的正则表达式,其中 xxxx既可以是命令分组的分组名称也可以是普通分组的分组序号。例如,需要要匹配任意的加减乘除四则混合运算表达式(使用圆括号强调运算优先级),可以使用如下的正则表达式:/^(\((\g<1>|[-+*\/\d])*\))$/
View Articleack 中不能使用最小可能匹配长度为0的正则表达式
ack是一个使用 Perl 编写的类似于 grep 的文本过滤工具,可以使用 Perl 5 正则表达式。在使用 ack 的过程中,发现一个值得注意的问题,即:使用最小可能匹配长度为0的正则表达式,可能会使 ack 陷入死循环。例如:echo hello world | ack '.*' 将使 ack 陷入死循环。注意匹配长度为0的匹配和不匹配的区别:echo hello world | ack...
View Article正则表达式中的 MULTILINE 和 DOTALL 标识
1. MULTILINE标识在 Perl 5 正则中,用于表示字符串开头和字符串结尾的两个表示边界的元字符 ^和 &, 默认分别只匹配整个字符串的开头和结尾。举例来说,对于字符字符串 hello\nwordl\n来说,虽然整个字符串实际上包含了两行文本,但是使用正则 /^./g只会匹配到字符 h,而不会匹配到第二行开头的字符: w。在 Perl 5 正则中,若要使 ^和...
View Article在 OS X 中设置时区环境变量
在 Linux 和 OS X 中,为进程设置不同的时区都可以通过修改 TZ这个环境变量来实现,在 OS X 上使用这样的方法来为进程设置不同的时区:export TZ=Asia/Shanghai ruby -e 'puts Time.now' # => 显示上海时间 export TZ=Asia/Tokyo ruby -e 'puts Time.now' # => 显示东京时间...
View Article使用 mitmproxy 监控 HTTP 请求
Web 开发者经常需要通过查看页面被打开之后所发送的请求来调试自己开发的程序,现代浏览器,包括 Firefox, Chrome, Safari 都自带了开发工具,可以帮助开发者监控 HTTP 请求。但是有时候这些工具仍不能满足我们的需求,例如在做某些古老的浏览器(IE)上的兼容性调试时,就需要一个专门用于监控 HTTP 请求的工具才行。最近发现了一个强大的 HTTP 请求监控工具 ————...
View ArticleProxy Switcher —— 快速切换 Mac OS X 代理开关状态的 Alfred workflow 插件
Github: https://github.com/lululau/proxyswitcher/An Alfred.app workflow for switching proxy states of Mac OS X.With this workflow, you will need not dive deepl into system preferences panel for...
View ArticleFront Most Alfred Workflow
Github: https://github.com/lululau/front-most-alfred-workflowReveal the file open by the front most window in AlfredPress ⌘ + y or type fm keyword in Alfred.app to reveal the file open by the front...
View Articlezsh 你不知道那些事儿-001-HIST_VERIFY
bash 和 zsh 都有一套命令历史机制,历史替换(History Expansion)是其中的一部分, 例如: 执行上一条命令:!! 执行上上一条命令:!-2 将上一条命令中的 foo 替换成 bar,然后再执行:^foo^bar 在 bash 中,当你在 command line 中键入 !!,!-2,^foo^bar这些命令然后回车的时候,对应的命令便会立即执行,zsh...
View Articlezsh 你不知道那些事儿-002-INTERACTIVE_COMMENTS
在使用 bash 或 zsh 编写脚本的时候,可以使用 #注释掉一行代码,在交互式的 shell command line 中我也习惯使用 #来注释掉一条暂时不需要执行,但是接下来很可能会再次用到的命令(这样做的目的是当再次需要使用这条命令的时候,在命令历史中不用向上翻阅太多行记录)。在交互式的 zsh 中,默认是不能用 #来注释一行命令的。解决方法是:打开...
View Articlezsh 你不知道那些事儿-003-NULLCMD
几乎每一本 Linux / Shell 入门的书中都会讲到如何新建一个空文件,那就是 touch命令:touch file_name 实际上在 bash 中有更高效的方法(其实就是少敲 4 个字符,😄):> file_name 但是,如果在 zsh 中尝试执行以上命令,会发现 zsh 陷入到一个进程中不会退出,直到按 Ctrl-d为止。这是因为在 zsh...
View Article使用 ⌘+数字键切换 Safari 标签页
首先需要一个能够将快捷键绑定到一个 AppleScript 脚本的工具,这里以 Better Touch Tool为例:1. 打开 Script Editor.app,新建一个文稿,在新建的文稿中输入:tell front window of application "Safari" to set current tab to tab 1 将新建的文稿存储到某个固定的位置,如...
View ArticleElixir Getting Started Guides.docset
将 elixir-lang.org 上的 Getting Started Guides 下载下来,制作成了 docset bundle,方便导入 Dash.app 查阅,下载地址:http://pan.baidu.com/s/1bn3xVGV
View Article
More Pages to Explore .....