• 从零开始 Ruby on PHP at 2016年06月11日

    城会玩 :doge:

  • 用事务会有用事务的问题。 比如用事务的话数据是跨连接隔离的,也就是说做集成测试的时候可能会遇到没有办法测试实际写入的数据的问题。 所以改用 database_cleaner,实际地写入数据,测试完毕以后再 truncate 掉数据表,不容易遇到坑。

  • #14 楼 @zhang_soledad 其实主要是楼主帖子里的代码 TL;DR 了所以……

  • #6 楼 @classicalliu proxy_pass 后面的和 upstream 的名字要相同,并且绝对不能和 server_name 相同。

  • #7 楼 @rikiwong @popmonker

    result = lists.group_by(&:name).map do |name, models|
      [name, models.group_by(&:model).map do |model, dates|
        [model, dates.map(&:date).join(' ')]
      end.to_h]
    end.to_h
    

    这样可能更简单一些?

  • #4 楼 @classicalliu 显然是不能这么改的。

  • upstream server_name proxy_pass 三项改成了域名地址

    What??

  • Python 的精髓就是 Explicit 优于 Implicit。

  • 这不能算是「问题」吧。Grape 本来设计理念就和 Rails 不同,加上你主动选择了多线程的服务器方案,那你就得自己解决线程安全性问题了。

  • Terminal + Screen + ... at 2016年06月02日

    输入byobu命令:

    you@yourLinuxServer: byobu
    

    当然,可能你需要一个窗口实时看服务器 log,然后一个窗口操作数据库,然后一个窗口写代码,或许还要一个窗口敲 git 等其他命令行。

    这样至少需要 3-4 个窗口,这时,你可以按 F2 键,这将会为你新建一个新的 session。重复这个动作,直到你创建了足够的窗口 (sessions),在这里算上敲命令行的窗口一起是 4 个。

    如果你只是照做的话,现在你正处在 session 3 或 session 4。为了统一场景,我们在接下去的下文中都假设你是启用了 4 个 session。

    不过这时候,你看不到你的 session 所处的位置,因为他们都在背后运行。不过暂时继续跟着我做下一步,晚点再告诉你如何查看你的当前 session 位置。

    怎么会看不到你的 session 所处的位置呢?他们就在最下方的状态栏里了。

    按 F8,这时你会在底部看到一行文字,仅仅照做吧。对的,它是让你给当前的 session 起一个 title,作为练习,我们这里统一起 qux(聪明的人应该会知道我为什么在这里输入的是 qux,而不是 foo 了?)。输入完 qux 之后,接着按 return 键。

    接下去我们继续为其他的 session 起名字。按 F4,这时候你进入了 session 0。然后按照上面的教程,你继续给它起 title,这时候应该是起 foo 了 (当然,这不是强制的,你现在当然可以自己想怎么起就怎么起)。重复这个动作,给 session 1, session 2, session 3 都起好名字。当然,别忘了,F3 向左切换,F4 向右切换。而且就算你不起名字,byobu 也会智能地把你运行的程序名字填在里面,哪需要这么麻烦手动改名。

    这个时候,我想听点音乐。没关系,我只是按一下F2新建一个 session,然后输入 cmus 打开我的播放器,选择 bon jovi 的 keep the faith 按 return 就开始听音乐了。然后继续切回到我工作的 session 去。

    继续告诉你一个小技巧,试试看按 + x。天啦,我还可以创建一个密码,锁定我的 sessions。这对于我工作区域的保护及隐私而言真是太棒了!

    要保护工作区域和隐私,请善用操作系统自己的锁定。

    当然还可以用 F6,让 byobu 运行在后台。比如:对于 project 1 我使用了 byobu 来协助我管理 sessions,对于 project 2 我也用 byobu 协助。然后从 project 1 到 project 2,就通过F6 然后再运行 byobu来前后切换。至于怎么创建一个新的窗口组?byobu new

    至于回滚历史记录,请用 F7 然后就可以PgUp/PgDn/g/G/h/j/k/l/q了,还可以用/?来搜索。

    谢谢,希望对你有些许帮助。

    Demo 分屏功能

    $ cat .byobu/keybindings.tmux 
    unbind-key -n C-a
    set -g prefix ^A
    set -g prefix2 ^A
    bind a send-prefix
    bind-key -n F10 display-panes \; split-window -h
    bind-key -n F11 display-panes \; select-pane -t :.-
    bind-key -n F12 display-panes \; select-pane -t :.+
    
  • Terminal + Screen + ... at 2016年06月02日

    #12 楼 @1272729223 比如你这堆 session,要用 Ctrl-A 快捷键搞半天,开 byobu 的话直接绑定在 Fx 快捷键上,F2 F3 F4 直接就可以切换。 我这边另外绑定了切分窗口的快捷键,用 F10 F11 F12 切换。 Ctrl-Z+BG/FG 就更诡异了,软件自己的 detach/attach 不用去用 jobs 何必呢。 byobu 里 F6 就可以断开一组窗口,然后马上就可以 attach 到另一组窗口了。 至于查阅历史记录,byobu 里 F7 就可以进入 copy mode。screen 也有自己的 copy mode,快捷键我就不帮你查了。

    所以我一开始就说了,为什么不用个好点的工具而要逼着自己去用困难模式的 screen。

  • Terminal + Screen + ... at 2016年06月01日

    #8 楼 @1272729223 tmux 或者直接上 byobu。 上文提到的 Tmuxinator 也不错,不过和 byobu 用途有点不太一样。

  • Terminal + Screen + ... at 2016年05月30日

    为什么不用更好的,而要坚持用 screen 呢?

  • 最后总结下来其实就是工程师值钱还是服务器值钱的问题了。 服务器永远会越来越便宜,工程师永远会越来越贵。

    工程师的单点效率也会越来越贵。

  • 其实楼主如果没有读过《提问的智慧》的话,推荐先读一下。

  • #2 楼 @calebx 简直不能更便宜了。 我们州立大学的专业课,1 学分大概$800,这两节课加一起最起码$4800。

  • 如何提高自己的技术 at 2016年05月21日

    #6 楼 @beiwang SeiYuNaLa 拼错了。

  • 怪异的跨域 Ajax 请求 at 2016年05月16日

    (瞎猜的)去掉空格试试?

  • 噫,真会玩…… 不如改成后缀可配置,回头把 Nginx 的标签改成 IIS,然后路由后缀改成 asp,顿时就高大上了。

  • [杭州] App 招聘开发人员 at 2016年05月09日

    #33 楼 @zoker 对于非 IT 相关人员来说(特别是文科女生),基本不可能实装。

  • [杭州] App 招聘开发人员 at 2016年05月09日

    #30 楼 @zlx_star 别的组不知道但是我们组的确是有试过用 Git 的。 结果如何呢?大部分人不知道怎么用,即使是用了可视化工具以后。 你要教会他们什么叫 Stage,什么叫 Commit,什么是 Local Repo,什么是 Remote Repo,什么是 Push 什么是 Sync。 要改个内容,先要 Pull,出冲突了还要 Resolve,出分支了还要 Merge。 翻译天天忙着填坑挖坑还来不及呢,有空来听你讲课吗? 别说字幕组的人了。我们公司半个团队的开发,我教了半年了到现在还没搞懂要怎么把 Git History 弄得人能看。

    再说我组的情况。 因为是双语字幕,所以都是用 Excel 表格把双语左右分列在一起,先校对原文,再校对译稿,最后再送轴。 XLSX 文件你怎么用 Git?

    至于协作平台,我们已经在试用 Teambition 了,用了一季感觉还不错。 但是说白了,还是 QQ 群交流最直白,别的工具,一个组里上百人你慢慢教吧。

  • [杭州] App 招聘开发人员 at 2016年05月07日

    能把一个字幕组玩成这个规模也是蛮拼的。

  • 这字体丑的我想哭 at 2016年05月03日

    Windows 上显示的好好的难道只有我一个?

  • 通过 Nginx 启用 HTTP/2 at 2016年04月30日

    #1 楼 @ibachue 然而总比全部功能都没办法用到要好。 至少你有脑袋压缩功能了。

  • Web 服务,能用 API 走 Web 调用的服务就叫 Web 服务。 话说 SOA 和 SOAP 是两个东西哦,一个是 Service-Oriented Architecture 一个是 Simple Object Access Protocol。 以前用 SOAP 是因为 XML 那时候非常火热,啥都要往那个上面靠一下。 现在则普遍认为 XML 对于小型应用来说太重了,徒增代码量,相当于更轻量级的实现(例如 Restful)来说没有很大的提升,所以就渐渐少用了。

  • 如何实现抢购功能 at 2016年04月28日

    偷懒可以用摇奖的方法,比如 1000 台机器,允许有超过 1000 个人买,然后进入摇奖系统,摇到的才给付钱。

  • #24 楼 @debugtalk 是挺值得的。

    只是并没有什么卯月。Python 提倡的很多理念和有些东西格格不入,所以……

  • #11 楼 @mrpasserby 帮助企业建立私有云测试环境,也就是把企业内部管理系统的 Windows 服务器镜像打包 P2V 放进虚拟机里。

  • select 用来筛选出返回的字段,最后得到的仍然是对象。 pluck 用来直接返回某个字段本身的值。比如 pluck(:id) 就返回一个整数数组。