• 坏处是电子商务站的证书比较贵..

    https 速度慢是上个世纪的事情了... 你可以在 nginx 或者 apache 随便配一下 (自己生成个证书就行), 然后用 ab 测一下对性能的影响

  • 另外 https cookie 要加两个属性:secure 和 http only

    secure 保证用户在访问 http 同域名其他路径时不会泄露 cookie http only 保证 cookie 不能被各种国产浏览器里悄悄运行的 javascript 访问 ...

  • 有必要,非加密连接可以盗 cookie 的,cookie 被盗后台就完蛋了。

    内网也不保证安全的,只要后台操作人员能打开除了后台意外的网页,就有机会被伪造跨站请求。

    https 完全不慢...

    如果你的网站没有攻击的价值,你就是安全的,但是电子商务网站后台价值你也知道的...

  • 是 bcrypt

  • komodo 有 5 刀一年的

  • 这个很多网站都有...

    任何非 https 的登录都是不安全的。

    在机场咖啡厅之类的地方,开个不加密的热点,然后在网络日志里搜 password 就能搞到各种密码,搜 set-cookie 就能搞到各种 cookie ...

  • 最近不是有统计分析了 3 亿 6 千多万行代码,发现 Java 企业级代码平均 bug 最多,速度几乎最慢么...

    http://arstechnica.com/business/news/2011/12/bad-code-plagues-it-applications-especially-java-ones.ars

  • 不是 11+, 还是没办法 apt-get install redis ..

  • 返回 "\u96a7\u9053\u8f66\u884c" 是正确的,显示和 "隧道车行" 一样。

    如果直接返回 "隧道车行", 在没安装中文字符集的系统或者某些别的语言的库处理时可能会出错。

  • 那些技术名词的读音问题 at 2011年12月10日

    我为 railtie 的读音纠结了一周末,终于在改名字的那人的演讲中听到了:['reiltai]

    http://vimeo.com/22950102 14:22

  • 如何升级 Ruby 项目 at 2011年12月09日

    加上 data-disable-with 就不会暴机了

  • 那些技术名词的读音问题 at 2011年12月09日

    @andor_chen

    lib 就念 [lib], 缩写和全写读音不一样的 ...

    mongoid 好像中国人都念 [moƞgou aidi:] , 但是外国人都念 ['moƞgoid] ... 你们都被 @flyerhzm 骗了!

    intridea 要问 @lgn21st , 他说了好多次读音不一样的我都弄不懂了...

    • 是 hyphen, 连字符 ...
  • 上次被你们弄成台球 Tuesday 了,损失各种惨重:小兰丢了一 iphone,准备的可乐全让可乐哥喝了

  • 可以啊... 连 markdown parser 都改掉了也可以...

  • ack 也有点问题的,它默认不搜索 Gemfile 和 Gemfile.lock, 各种 sass, coffee 也不在搜索列表中,在 ~/.ackrc 里加上 --text 就可以了。

    ack2 以后就默认带 --text 了。

  • 搜出一堆日志中的记录很不爽的

    git grep 忽略不在版本控制中的文件 (如 log) 和 .git 目录中的文件 ackmate 可以用 ackrc 限制搜索的文件类型

  • 鸭眼网的 git pull 使用法 at 2011年12月03日

    大胡子也说过 pull 一定要 rebase...

    如果 merge 没有 no-ff 而且 merge 时没冲突的话,就没有 merge commit 了,github network 上就会把两个分支的标签叠在一起,没有反映平行开发的真实情况 ...

    小心处理的一个好处是清晰的路线图:同样的 commit 不重复出现,merge 可以看到箭头,有箭头的地方一定是 merge.

    另一个好处是 github 的 pull request. pull request 界面中,点 merge 按钮和 merge --no-ff 是等价的,如果本地 merge --no-ff, 也会自动关闭 github 上的 pull request.

    不小心处理的话,可能会发生一些奇怪的事情,例如:

    1. 在路线图中同样的 commit 出现在两个地方,但是 hash 不一样
    2. merge 的时候同一个冲突很奇怪的要解决很多遍
    3. git blame 发现弄坏代码的人是自己,但那段其实是另一个人写的,比窦娥还冤...

    这里面有些和 rebase 的机制有关 (我不敢说全部...). rebase 会将本分支中所有冲突的 commit 都挨个修改一遍,从冲突点开始,本地 commit 的 sha1 hash 都变了。所以只适合在 pull 同一分支时用:这些 commit 只在本地有一份,就不会产生 1 和 3 的情况了。

    git 太多内容了,有时出 rp 问题了还觉得自己完全不懂 git, git 也一直在出新功能,可以一直学下去...

    附带分享一下我的 ~/.gitconfig , git gl 可以在命令行看到路线图

    [alias]
      s = status
      c = commit
      b = branch
      co = checkout
      d = diff
      lg = log -p
      gl = log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr,%an)%Creset' --abbrev-commit --date=relative
      l = shortlog -s --
      merge = merge --no-ff
    

    @Rei 是我没写清楚,这里假设本地修改都 commit 了而且处于 rebase 中途...

  • textmate 对很多强迫症有良好支持:

    ctrl + ' 切换单双引号 ctrl + : 切换字符串和符号 ctrl + [ 切换花括号和 do block opt + cmd + ] 对齐等号 ...

  • 打开 copy-on-write friendly gc 以后,很多 gem 占用的内存其实只有一份

  • 然后再改成

    if current_user.respond_to?(message_type)
      @messages = current_user.send message_type
    else
      redirect_to my_message_inbox_path(:inbox_messages)
    end
    
  • 我的强迫症是看见长的代码就一定要改成短的...

    例如看见 :a => 就一定要改成 a:

    我的 case ... when 一定要这样... :

    @messages =\
      case message_type
      when :inbox_messages     then current_user.inbox_messages
      when :sent_messages      then current_user.sent_messages
      when :archived_messages  then current_user.archived_messages
      when :inbox_proposals    then current_user.inbox_proposals
      when :sent_proposals     then current_user.sent_proposals
      when :archived_proposals then current_user.archived_proposals
      else redirect_to my_message_inbox_path(:inbox_messages)
      end
    
  • git grep

  • 用 compass 不要用 bootstrap, 用 css3PIE 让 ie6-8 支持部分 css3

  • unicorn.rb : 为什么既 listen port 又 listen socket, 其中一个可以去掉吧,和 nginx 的配置对应就可以了

    timeout 设短一点,假如 6 个人同时点了用 google 登录,每个进程都在 wait google response, 就要死 120 秒了

  • 其实 task_id 读写是在 field :task_ids, type: Array ,:default => [] 定义的,这里没必要用 method_missing ...

    其实规则很简单 ... a = x 总是赋值语句而不是方法调用 a.b = x 总是方法调用

  • 不是一定要写 self 的,例如

    task_ids=([1,2,3])
    
  • Rails 怎么排好 HTML 代码 at 2011年11月25日

    slim 自带 vim 和 emacs 插件 https://github.com/stonean/slim/tree/master/extra

    slim 的 textmate bundle 是 Fred Wu 写的

  • 因为每次请求之前把代码都重载了一遍,和 rails 相比,sinatra-reloader 只重载变化的文件就非常快... 有个 gem 可以在请求之前重载代码,可能会快点...

  • query in view 在 asset pipeline 下用户体验很好...