• man 3 readline, 可以把配置写在 ~/.inputrc 里。这样所有使用 readline 的 repl 都可以享受之。

    我只写了很少的配置,重点还是为了启用 edit-mode vi: https://github.com/5long/dotfiles/blob/master/inputrc

  • #8 楼 @lgn21st

    row, col, val = 8, 8, 0
    Array.new(row * col){val}.each_slice(col).to_a
    

    免去变量助记,也是一行。

  • require 'matrix'
    m = Matrix.zero(8).to_a
    

    之前的 Matrix.build 在 1.8 还没有。

  • require 'matrix'
    m = Matrix.build(8, 8){0}.to_a
    
  • 求助一下 at 2012年09月19日

    完整看了一下 pull request 的讨论,对方的意思是说:测试与文档是被 merge 的必要条件,而非充分条件。目前看来恐怕连提议被采纳的机会都不大,因为提倡的用法是 Rails.env.test?... 所以在确认可能 merge 之前连文档都懒得写。- -

  • 文档里有这个:http://guides.rubyonrails.org/active_record_validations_callbacks.html#using-a-symbol-with-if-and-unless

    不过这个业务逻辑看上去有些奇怪,确定不是陷入了这种境地么:http://mywiki.wooledge.org/XyProblem

  • String#match 也可以接受 block 参数。http://ruby-doc.org/core-1.9.3/String.html#method-i-match

  • #16 楼 @zw963

    Archlinux 对 32bit/64bit 库并存的支持还不错,我直接启用 Arch 官方的 multilib repo, 装上 Skype 就能用。

    至于 ~/.xinitrc~/.profile: 有些登录管理器 (GDM) 会去读 ~/.profile, 但 Slim 目前不会,需要你显式地去 source 加载。

  • 我不是很确定这个问题跟我遇到的是否一样... 我之前在 Skype 里没法启动输入法,后来发现是因为 Skype 没法从拿到输入法配置 (亦即,不知道 ibus 的存在)

    这些环境变量要在登录到 X 环境的主进程设置~ 我用的 X 登录管理器是 [Slim], 登录时默认会执行 ~/.xinitrc, 然后在 ~/.xinitrc 的开头要把环境变量设定好,再启动 window manager 就好。~/.xinitrc 的简单结构如下:

    # 先设置环境变量
    export GTK_IM_MODULE=ibus
    export QT_IM_MODULE=ibus # Skype 是个 qt app.
    export XMODIFIER="@im=ibus"
    
    ibus-daemon -xrRd # 启动输入法框架的 daemon
    # 顺便启动其它需要在登录时启动的应用, 比如 xcompmgr
    openbox-session # 真正启动 wm/de
    

    接下来再启动的进程都会从 openbox-session 进程继承环境变量,就能读到这个配置了。

    放在 ~/.bashrc 里是不行的。尽管 ~/.xinitrc 是 bash 脚本,但这个文件被登录管理器执行时并不是交互式地启动 bash, 那么 bash 就不会加载这个文件。所以在 ~/.bashrc 里设置的环境变量就只对桌面环境里启动的 terminal 有效,也就需要在 terminal 里再启动 Skype 才能读到 ~/.bashrc 里设置的环境变量。

    供参考。

    [slim]: https://wiki.archlinux.org/index.php/Slim

  • 先说无关于项目的:

    • 一个 Terminal 只开 tmux, 这个 terminal 用 WinKey + ` 可以随时呼出
      • SSH 进 Vagrant 搭建的开发环境
        • SSH 进去之后也是一个 tmux...
      • weechat
      • 按需增减 tmux window.
    • 聊天工具,团队沟通用~ {4}
    • Thunderbird {5}
    • 1-3 个浏览器用来刷页面测试,~按业务需要来开。优先级是:
      • Chromium {3}
      • Chrome {2}
      • Firefox {1}
    • 若干 Windoz 虚拟机用来测浏览器兼容性...... {7}{8}{9}

    前面的 {n} 表示应用所处虚拟桌面的位置,WinKey + 1-9 用来切换虚拟桌面~ 每个虚拟桌面上放固定的应用,完成固定的任务,这样也就可以养成习惯了。

    注意 5 和 6 比较难按到,所以 5 放 email client, 自然抑制拖延症; 6 不放东西 (因为最难按...)

    呼出 terminal 时处于"写代码模式", 隐藏时处于"其他模式". 嗯我是典型的 Vim 中毒。

    进入写代码模式就依赖 tmux 在应用间切换,属于项目特有的应用都在虚拟机的 tmux 里。按照 window 顺序:

    • 垂直分割的 Vim
      • 需要用 Git 等工具的时候 Ctrl-Z, 严肃地考虑装 fugitive.vim
    • 一个 tmux window 也是垂直分割
      • 一个用来重启服务之类的
      • 一个专门看服务器日志
    • 然后按需增减 tmux window

    大致这样。其实也很复杂,只比 lz 的少了两类切换:

    • 开 3 个浏览器,所以 Ctrl + 1-9 肯定够用
    • 不需要考虑在同个桌面内切换多个应用 -- 因为一个桌面只有一个...
    • tmux 切换 window 相当于 lz 的 iTerm 切换 tab, 扯平。

    最近有在考虑尝试 tmuxinator, 而不是总要"按需增减 window"

    EDIT: 修正嵌套列表层级~

  • #14 楼 @zw963 awesome 是个完整的 tiling wm 而不是你期望的独立于 wm 的小工具。

    http://dwm.suckless.org/ 这个应该是依赖最少的 tiling wm 了吧...

  • Archlinux 用户一枚~

  • 其实我真心希望支持 mac 的同学能列出类似这种贴近主题 (亦即 Ruby / Rails) 的例子来:

    http://yehudakatz.com/2012/06/05/tokaido-status-update-implementation-details/
    http://railsinstaller.org/

  • RubyConfChina 2012 预热帖 at 2012年09月01日

    拜托一定要录视频 - -

  • 犯懒了没去 - - 只能自己默默喝啤酒了。

    话说上次聚会最后的喝酒合影还没拿到。

  • 关于 sinatra 路由问题 at 2012年08月23日
  • 多台服务器同步配置文件 at 2012年08月21日

    这个领域叫配置管理,专门做运维的会比较熟悉。

    CFEngine, Puppet 和 Chef 是比较流行的选择。不过这些工具都要求自己搭建中央服务器,然后所有受控的机器主动去 pull。不符合 lz 期望的 push 架构 (如果我对 通过ssh同步 的揣测正确的话)。

    Puppet 和 Chef 也可以不用这种架构 (puppet applychef-solo),不过看上去似乎不是"地道"的用法。

    当然现在市面上也有 push 架构的 CM 工具出现:http://palletops.com/ http://www.nico.schottelius.org/software/cdist/

  • 谁说 Ubuntu 好用? at 2012年08月20日

    实在没时间就别折腾了。回到 windows/mac 下面用这个吧:http://railsinstaller.org/

  • 请问 jekyll 服务器搭建 at 2012年08月19日

    --auto 是自动的没错。但 jekyll --server 估计不是为生产环境所设计的。不然应该不会写死使用 WEBrick.

    lz 想达到的目的是不是"本地只看 markdown 语法正确,不预览 html, rsync到服务器之后让服务器生成 html"? 简单的方案是每次更新之后临时 ssh 上去跑一下 jekyll --no-server --no-auto 就好。

    稍微复杂一点的话,在服务器端也用 git clone 拿到一份代码,然后编辑服务器端仓库里的 .git/config 文件,按照 git help config 里的说明改一下 receive.denyCurrentBranch 配置,允许你从本地 push 到这个 remote 用来部署。然后再写个 git post-update hook 去跑 jekyll. 这样用起来就类似 github pages 了。

    EDIT: 调整用词

  • 如果你需要实现的功能大致等同于"ssh 到机器上执行事先定义好的常见的任务", 那么不妨看看 Capistrano: https://github.com/capistrano/capistrano

    假如只是自己做着练手,无所谓适合与否,慢慢折腾就是了。

  • 居然掉到第 3 页了... 我不是很确定在这个社区对“纯顶”的态度如何,不过这种实效性太强,对社区又太重要的帖子是不是有必要固定放到稍微显眼的位置上 (现有的右侧那个置顶就算了...)

  • 报名。

  • Rails.vim 高效使用指南 at 2012年07月22日

    以前没觉得 rails.vim 有什么大用,浏览文件一路 Command-T 了事 - - 经历了大一点的项目之后感觉还是有必要准备一些特定于 framework 的技巧。很感谢 LZ 按照使用经验挑常用的介绍~

    注释/反注释代码我用的是 tComment. 它提供的gcgC 命令支持用 motion 来指定需要处理的文本范围。跟内置的 d 命令等用起来一个感觉。不妨试试。当然如果你习惯先进入 Visual Mode 选取代码然后再下命令,tComment 也是支持的。

    再 nitpick 一个:C 命令的作用相当于 D 然后再按 A. 文中所描述的行为应该是 cc 或者 S.

  • Rails.vim 高效使用指南 at 2012年07月22日

    把标识标题的 #### 后面加个空格吧 - - 有些 Markdown Parser 比较宽松所以有时依然能正常显示。

  • 我来稍微解释一下 Vagrant 方案吧。[是 Vagrant 不是 vargrant]

    简单说 Vagrant 是个 VirtualBox CLI Wrapper. 它负责导入 Virtualbox 镜像 (需要符合 Vagrant 的基本要求,包括装好 Puppet & Chef 等,称之为 Basebox), 然后驱动 Puppet/Chef/Shell 来在虚拟机里搭建环境。这里所使用的 Puppet/Chef 代码可以跟生产环境所使用的代码复用,在生产环境是不用这个东西的。@huacnlee

    这里实际搭建环境的工作还是由 Puppet/Chef 来完成,属于偏运维的知识,学学无妨。

    @Peter Basebox 的系统可以自己构建时任意选择,也可以拿社区提供的来用: http://www.vagrantbox.es/ 你看到的 Ubuntu 10.04 应该是官方文档的范例,实际具体支持的系统可以看这里: https://github.com/mitchellh/vagrant/tree/1-0-stable/lib/vagrant/guest

    如果不是资源实在紧张,虚拟机可以避免维护者去趟"抹平若干系统不一致"这趟混水。缺点就是要下载的东西实在有点多,照顾入门新手的话可能人家很快就没耐性了。