• Happycasts: git reset 技巧点滴 at September 12, 2012

    #21 楼 @happypeter 谢谢反馈意见。我想是因为页面布局没有做好,我们开始的时候想试试 Liquid Layout 但感觉并不是很理想,准备换成 Responsive 的。看起来页面就没那么空了。

  • #12 楼 @rockylaw 我就在用 Herman Miller 的 Aeron. 以前坐久了总是腰酸背痛,现在已经没什么感觉了。椅子看起来很结实感觉能用 20 年。绝对是很好的投资。

  • #8 楼 @ashchan 这个真是不错。谢了!

  • Happycasts: git reset 技巧点滴 at September 12, 2012

    #19 楼 @happypeter 欢迎欢迎!

    你的付费已经处理好了。我们的付费过程用的是 Stripe, 我认为是所有现在 payment gateway 里面做的最好的。有什么觉得不太对的么?

    还有,确认 email 收到了吧?

  • Happycasts: git reset 技巧点滴 at September 12, 2012

    #17 楼 @happypeter 太客气了,我也是想认识些国内的同行,有机会合作就最好了,可以多交流。认识国内作开发的不多,以前在北京见过几个做 Ruby 的,但好像都不在这儿。

  • 怎么是亲和力?这个是给机器读得,不是给人读得

  • 不玩大菠萝 省下的钱可以直接买 iMac 了!省下的时间可以 xxx 了!

    话说我也是大菠萝上线第一天就买的,然后一下冲到了 Inferno。钱倒是小事,回头想想这时间还真不如做别的事情了

  • 正在打算做一个能站着工作的桌子 社区里有人做过么

  • Happycasts: git reset 技巧点滴 at September 11, 2012

    #5 楼 @happypeter

    感谢分享,加油!

  • 说来有趣,说到融合进一些函数式的东西来做 Ruby,今天就有人博客了这个

    http://weblog.therealadam.com/2012/09/10/designing-for-concurrency/

  • #16 楼 @zhenjunluo

    首先要看你学技术的动机是什么?是从学习中本身得到快乐,还是技术只是你能进行创造的手段?你是对成为顶级程序员/技术高手无比向往,还是希望来学会技术作项目,创业?

    如果你对技术本身非常热爱,那么建议好好搭好基础,多读一些经典的文献。很多看上去是新的技术,其实都早就存在了。大的看比如 Erlang, Prolog 这些早就出现了,Lisp 更是历史久远的不行,只是近期 Internet,并行计算和 big data 兴起让 Erlang, Prolog 这些技术再次受关注。小的看 Web 和 Rails 社区近期的变化 - 客户端到服务器到客户端,J2EE 到 Rails 的精简框架到 Object Design 再次受关注,都已经在软件历史上来来回回几次了。如果你去读些老文献,会发现我们只不过在从新解决前人解决过的问题而已

    如果你的目的是创找和创业,那么答案更简单,立刻开始搭建你的产品。精通 能让你快速开发的工具,速度决定一切因为你的前十个产品估计九个或更多会失败的。迅速找到有前景的项目压倒一切。一旦市场被证明而你的应用开始成长,你自然会面对一个一个的技术挑战,那时候在有的放矢会提升更快,或者扔钱砸向技术狂。硅谷的互联网小公司里面十有八九个是 Ruby/Rails, 就是这个原因。

  • #11 楼 @zw963

    递归的高效是对程序员脑的高效 而除非是非常独特的项目,针对人脑的优化》针对系统的优化

    系统资源不够了可以向云扔钱 程序员不够了或者做不下去了。。看看论坛里的招人贴就知道了

  • #9 楼 @zw963

    Gem 不需要用太多。很多的 Gem 写出来后作者会考虑照顾到各种各样的 use case 导致 Gem 本身复杂庞大,对于自己的应用很多都还不如自己写

  • 这里有多少人用机械键盘? at September 10, 2012

    #59 楼 @poshboytl 这个用的怎么样

  • #5 楼 @jjym

    不矛盾。编程模式比语言重要。我不一定要改变语言来改变编程模式,Ruby, C, Java 甚至 BASIC 都可以做函数式的编程,只是越新的语言越是鼓励这一点。

    作者确实说的很好,语言是很重要。但是开发效率,工具,生态系统,平台完备,团队技能等等都很重要,开发一个项目的时候多要考虑。比如 Web 项目的开发,Ruby 系统有很大的优势,而我完全可以在实现上放弃面向对象而用函数式的开发模式来实现 immutability 和复杂的数据类型来鼓励行为至上。

    软件工程的一个重要原则是推迟大风险的决定,所以在实践项目中非主流语言的引入很少出现在项目初期 -非主流数据库的选择也往往是这样。

  • #1 楼 @zhenjunluo

    讲的很好,但是感觉过于学术些。真正做起项目来开发的效率是非常重要的,而这里语言,框架以及其周边的生态系统是非常重要的考虑。

    比如,做 Web 相关的项目,Rails 就是非常好的 DSL 而且有成熟的生态系统。函数式的 Clojure 也可以做而且有很多强大的功能,但是成熟性相对差些。Haskell 就更是这样。可以用 Rails 迅速 build prototypes 并加功能。而当项目趋向成熟的时候可以考虑加入其他语言为特定的功能服务。

    还有,与其纠结与语言,其实更重要的是编程的模式。面向对象,函数式这些并不是语言的特性,而是编程的模式。最近的多模式编程语言比如 Clojure, Scala 的兴起就是这个的体现。Ruby 也可以用做函数式语言来用,只是没有 Ocaml 那么自如和方便

  • #2 楼 @huacnlee 就是调了这个后 terminal vim 感觉也是比 MacVim 慢

  • FactoryGirl 粗浅介绍 at September 09, 2012

    #11 楼 @lilu

    +1 Fabrication, 开发 Fabrication 的也是个帅小伙儿啊

    为什么 hate thoughtbot?

  • sudo !!

  • 如果用 bundler 而且本地有 paperclip

    bundle outdated

  • 机械键盘 HKKB Pro 2 vs Others? at September 04, 2012

    我也正在要买

    有人用过 Matias Tactile Pro 么

  • #16 楼 @rainight

    >小程序员

    四个字就知道你们的企业文化了

  • 这个顶下

  • MailsViewer - Mail Preview Engine at September 04, 2012

    或者打开 Mail::Message,自己做一个过滤器

    class Mail::Message
      def deliver_with_filtering
        unless Rails.env.production?
          self.to = scrub_emails(to)
          self.cc = scrub_emails(cc)
          self.bcc = scrub_emails(bcc)
        end 
    
        deliver_without_filtering if deliverable?
      end 
    
      alias_method_chain :deliver, :filtering
    
      private
    
      def deliverable?
        to.present? || cc.present? || bcc.present?
      end 
    
      def scrub_emails(emails)
        Array.wrap(emails).select { |email| email[/pragmatic.ly|[email protected]/] }
      end 
    end
    
  • MailsViewer - Mail Preview Engine at September 03, 2012
  • 什么时候需要增加测试 at August 31, 2012

    #18 楼 @zlx_star

    》》我的意思是:找出几种特殊的情况下,我们明确表示需要添加测试。

    假设你现在你系统没有明显的错误和漏洞 - 如果有就没什么说的先堵漏洞 - 那么增加测试的过程就是减少风险的过程,所以要看系统里面哪些地方需要防范风险,或者风险较大。减少风险的结果就是象@fsword 说的,对系统的质量放心。

    一些我能想到的供你参考,重要性按顺序

    1. 涉及到付费的 - 有钱出现的地方不仅要测试而且要大量测试。从 Unit 到 Functional 到 端到端 的 Integration。不仅要保证正面情况的工作性,而且要对所有可能发生的错误情形进行合适处理;能想到的边角情况都要测试。

    2. 核心业务逻辑 - 这些的变化往往会波及系统的多个部分。一定要用测试包裹,来及早应对处理

    3. 和第三方集成的 - 主要目的是回归,因为你无法控制别人接口的可能变化

    4. 系统里面容易变化的地方 - 你们应该有感觉哪些部分的代码相对稳定,哪些部分总需要改变。对变化大的地方及其周边加强测试

    5. 系统里有多个 object 协作的地方 - objects 状态的变化很容易在这地方造成出错。当然,这些地方也是你最需要重构的地方。

    6. 代码晦涩,难以理解,没人敢碰的地方 - 晦涩的代码往往因为程序员经验不足没有选择正确的 abstraction. 增加测试是重构这些地方的第一步

    7. 很多 conditional 的地方 - 很多的 if, case, 等等;这是复杂逻辑的体现

    8. 多行连续的地方 - 如果有 conditional, 往往表明需要进一步得掰开;即使已有测试也往往覆盖不足

    在增加测试的过程中,你往往会发现测试会给你明确的重构信号,有了测试覆盖后就大胆出手把。

    最后,新写的代码会象@xds2000 说的测试先行对吧

    Enjoy.

  • 现在用 Ruby Motion 主要是可以用 Ruby 的语法来写一些 Object C 的东西,但还是要用到 Cocoa Touch 的东西。Ruby Motion 作者的计划是通过写 wrapper 来逐渐把 Coca 推向地层,来实现完全的 Ruby 开发经历。很看好。

  • #15 楼 @tumayun

    如果要写一般的 Null Object 是要用 method_missing 的,因为需要对任何的 call 返回 self

    http://en.wikipedia.org/wiki/Null_Object_pattern http://devblog.avdi.org/2011/05/30/null-objects-and-falsiness/