Aiur

zellux 的博客

本地 Markdown 预览工具

Permalink

最近一直用 iA Writer 做笔记,用不同的文件保存不同的主题,由于 iA Writer 并没有很好的管理和浏览功能,于是就想做个 Web 工具方便浏览和管理。

markdown-wiki 是我用 Sinatra 做的一个简单的预览工具,它可以把某个目录下的 Markdown 文件以 Wiki 的形式呈现出来。界面上借用了 Ghost 的 CSS,可以在 http://markdown-wiki-demo.herokuapp.com/ 预览(因为是非本地的内容,上方的 Edit 按钮没有作用)。

Markdown 语法方面,由于用了 redcarpet 所以有不少语法扩展,包括代码块、删除线、下划线、上标等,另外包含了 Wiki 内部链接支持。

用外接 PC 键盘控制 Mac 音量

Permalink

写了个 Alfred 插件,用于外接 PC 键盘控制 Mac 的系统音量。快捷键为 Alt + F10/F11/F12,分别和 MacBook Pro 键盘的 F10/F11/F12 功能对应:

  • Alt + F10 切换静音模式
  • Alt + F11 减少 10% 音量
  • Alt + F12 增加 10% 音量

音量调整后会播放 /System/Library/Sounds/Frog.aiff,这个声音和默认的调整提示音比较像。(有谁知道默认的音量调整提示音用的是哪个文件吗?)

另外如果在 Alfred 里把中间的 Run NSAppleScript 和右边的 Push Notification 一一连起来,就能在修改音量后看到当前音量的提示,不过我觉得没啥用所以默认取消了。

插件下载

Ruby 命令行中快速查看函数源码

Permalink

如果要查看 ActiveRecord 的 update_attribute 函数的源代码,一个比较常见的方法是直接在 Rails 源码中搜索 def update_attribute。博客 The Pragmatic Studio 介绍了一个更方便的技巧,在 Ruby 命令行中就能启动编辑器直接访问。

通过 Object#method 方法可以获得 update_attribute 方法的对象,而 Method#source_location 则返回这个方法定义的文件和位置。有了这个信息后,就能启动编辑器查看源代码了:

清除 zsh steeef 主题的未追踪标记

Permalink

我用的 zsh 提示符是 oh-my-zsh 自带的 steeef。最近发现用这个主题时,有些 Rails 项目即使把所有改动都提交后,还是会有红色标记表示存在未追踪文件:

使用 git statusgit diff,都看不到任何未提交的改动。一开始我以为是 zsh 或者 git 的 bug,把它们的版本都更新到最新版后还是有这个问题。于是看 steeef 主题的源码,发现了红色标记的判断依据:

为 Emacs cscope 加入 Java 支持

Permalink

Emacs 的 xcscope 插件默认不会扫描 Java 文件,另外 Android 源码里有不少 .aidl 的文件,默认也不包含在 xcscope 的扫描范围里。解决这个问题的一个方法是在项目根目录下手动创建 cscope 索引:

1
2
3
$ find . -name "*.java" -or -name "*.aidl" -or -name "*.cpp" > cscope.files

$ cscope -b

关于 respond_to 不同格式的顺序

Permalink

以前没注意过 Rails controller 中 respond_to 的格式顺序,后来碰到了一个诡异的 bug,才发现这里的顺序对程序行为是有影响的。bug 的现象是用某个应用商店桌面端浏览网站时,会出现返回 JSON 而不是网页的情况。由于当时报告错误的用户给出的 bug 描述是「点击链接后出现乱码」,导致 debug 一开始没找对方向,废了不少功夫才解决这个问题。

问题就出在不同格式的声明先后上,有问题的代码是:

1
2
3
4
respond_to do |format|
  format.json { render json: @items }
  format.html
end

为 Octopress 添加多个 Atom 地址

Permalink

博客最早用的是 wordpress,首页上提供的 Atom 源是 /feed/。迁移到 Octopress 后,Atom 源地址变成了 /atom.xml。在 Google Reader 里看到订阅 /feed/ 的读者还是有不少的,用默认的地址这些读者就收不到博客更新了。

一个方法是改服务器的配置文件,以我之前使用的 nginx 为例,在相应站点的配置中增加一项 /feed/,把所有对它的访问重定向到 /atom.xml 即可:

1
2
3
location = /feed/ {
    rewrite ^(.*)$ http://blog.yxwang.me/atom.xml;
}

北美求职记(三):Hulu & Twitter

Permalink

北美求职记系列文章

Hulu

Hulu 是这几个公司里唯一一个我没有找人内推而拿到面试机会的,也是面试体验最好的一个公司。Hulu 和 Twitter、Zynga、Foursquare 等公司一样,用了 jobvite 接受和追踪职位申请。因为是申请的第一家公司,我在申请 Hulu 时的 cover letter 写得很详细,针对职位需求上的每一条都写了我的相关工作经验,这也许是最后能拿到面试机会的原因吧。其他公司的 cover letter 都写得很简单,短短两段就结束了。

Hulu 的第一轮电面和其他公司的有些不同。45 分钟里要做四个题。面试官提前十分钟发了一封邮件给我,上面有两段代码。第一段代码是一个检查两个字符串是否是 anagram 的程序,写得很绕而且性能很差。面试官先问我这段代码的用途,然后问有什么方法优化,并要求我把代码写在 titanpad 上。接着他问了我第二段代码是做什么的。第二段代码也写得有点复杂,不过可以看出是一个检查有向图里面是否存在环的程序。