Ruby China
  • 社区
  • 招聘
  • Wiki
  • 酷站
  • Gems
  • 注册
  • 登录
saiga
@saiga
会员
第 4375 位会员 / 2012-11-05

[email protected]
深圳
19 篇帖子 / 701 条回帖
14 关注者
1 正在关注
63 收藏
请认准唯一指定邮箱:aiasfina#hotmail.com
GitHub Public Repos
More on GitHub
  • 概况
  • 话题
  • 回帖
  • 收藏
  • 正在关注
  • 关注者
  • 有哪些关于闭包的经典用法? at 2014年03月10日

    currying:

    var add = function(a) {
      return function(b) {
        return a + b;
      }
    }
    
    a(1)(2);
    
  • Rails 死活连不上 Postgresql at 2014年03月07日

    #4 楼 @ericguo 重新刷了一次 cubian 就可以了,我怀疑是 linux 网络配置被我玩坏了

  • Rails 死活连不上 Postgresql at 2014年03月06日

    #4 楼 @ericguo 一开始也以为这样,不过端口一直是空闲的。我 PC 用的 mint 自己编译的 9.3 一切正常,cb 无论是 apt 还是 编译都会有这问题 ORZ 现在打算换成 fedora 看看..

  • Rails 死活连不上 Postgresql at 2014年03月06日

    #1 楼 @ericguo 奇怪的是,如果 listen_address 注释掉的话(默认注释),pg 会启动不了,日志里显示错误:could not create any TCP/IP sockets。 而 PC 上不会有这个问题

  • 求教一个问题:" <<-" at 2014年03月04日

    Here document

  • 纸房子个人博客改版,已开源,希望得到大家指点~~ at 2014年03月04日

    #54 楼 @cod7ce 谢谢 XD 我去了解一下,可以的话就立即入手一个最屌丝的玩玩

  • 纸房子个人博客改版,已开源,希望得到大家指点~~ at 2014年03月04日

    话说阿里云备案麻烦吗?最近辞职了,闲着没事想把之前写的东西放上去....

  • 关于 UIkit tooltip 的使用 at 2014年03月04日

    刷新可以运行,点击后不行很有可能是 turbolinks 带来的问题,不过我看代码是用 on 来委托事件,一般不存在这样的问题。tooltip 是自己写的触发事件么?

  • 纸房子个人博客改版,已开源,希望得到大家指点~~ at 2014年03月04日

    #42 楼 @cod7ce :)
    另外,在这几个地方可以优化一下,首页速度应该会有很大提升的。

    • js/css 前后公用,jq-ui 都进来了,js 接近 1M,这个分离一下
    • 首页速度除了 180k 的背景,还有 1m 的和 2M 各一张的项目预览图,即使使用 display:none浏览器还是会下载的。可以考虑使用 lazy load,动态创建 Image 对象)
  • 纸房子个人博客改版,已开源,希望得到大家指点~~ at 2014年03月04日

  • 纸房子个人博客改版,已开源,希望得到大家指点~~ at 2014年03月04日

    #45 楼 @cod7ce 从首页点进文章,然后在文章正文,列表,代码这几个地方来回切换 4,5 次,内存从 5M 飙到 26M。具体哪里的问题还不清楚,不过建议先将 assets 前后端分离。

  • 纸房子个人博客改版,已开源,希望得到大家指点~~ at 2014年03月03日

    #36 楼 @small_fish__ http://www.w3school.com.cn/css/pr_pseudo_first-letter.asp

  • 纸房子个人博客改版,已开源,希望得到大家指点~~ at 2014年03月03日

    检查一下代码,前端内存泄露了

  • 你觉得它会输出什么? at 2014年03月01日

    声明提升。跟变量声明一样。另外函数声明和变量声明这俩同时出现也会有化学反应的

    function a() {}
    var a;
    
    function b() {}
    var b = 1;
    
  • 在 Sinatra 里用 ActiveRecord 经常遇到数据库连接超时? at 2014年02月27日

    设置一下 pool 看看:

    ActiveRecord::Base.establish_connection(
        :adapter  => 'mysql2',
        :database => 'mandb',   #oracle service name
        :username => 'root',
        :password => '',
        :pool => 5
    )
    
  • 通过父类找出所有子类的问题,在一张表中,谢谢! at 2014年02月26日

    可以用 预排序遍历树算法 :)

    自己实现的,有些地方不怎么样,轻喷

    class Category < ActiveRecord::Base
      include Concerns::RecursionTree
    
      # 先序遍历, 拿到 [depth, name]
      # 注意:由于 Rails 将不存在的列名过滤,此处只能使用 lft 来存储深度!!
      scope :get_sorted_array, -> do
        Category
        .joins('AS node, categories AS parent')
        .select('node.id, node.name, node.slug, node.model_id, (COUNT(parent.slug)) - 1 AS lft')
        .where('node.lft BETWEEN parent.lft AND parent.rgt')
        .group('node.parent_id, node.slug')
        .order('node.lft')
      end
    end
    
    #
    # 预排序遍历树算法(modified preorder tree traversal algorithm)
    # 来存储无限分级的树结构,以改进查询的时空复杂度。render 需要实现 get_sorted_array
    #
    module Concerns
      module RecursionTree
        extend ActiveSupport::Concern
    
        included do
          attr_accessor :children, :depth
        end
    
        # 同级插入
        def place_with(id)
          klass = self.class
          if new_record?
            klass.transaction do
              brother = klass.select(:lft, :rgt, :parent_id).find(id)
              raise AlertError.new('不能用虚拟的根节点作为兄弟节点') if brother.lft == 0
              parent, right = brother.parent_id, brother.rgt
              klass.where('rgt > ?', right).update_all('rgt = rgt + 2')
              klass.where('lft > ?', right).update_all('lft = lft + 2')
              self.parent_id = parent
              self.lft = right + 1
              self.rgt = right + 2
              self.save!
            end
          end
        end
    
    
        # 节点追加
        def append_to(id)
          klass = self.class
          if new_record?
            klass.transaction do
              left = klass.select(:lft).find(id).lft
              klass.where('rgt > ?', left).update_all('rgt = rgt + 2')
              klass.where('lft > ?', left).update_all('lft = lft + 2')
              self.parent_id = id
              self.lft = left + 1
              self.rgt = left + 2
              self.save!
            end
          end
        end
    
        # 删除节点
        def remove
          klass = self.class
          klass.transaction do
            left, right = self.lft, self.rgt
            distance = (right - left - 1) / 2
            klass.where('lft BETWEEN ? AND ?', left, right).delete_all
            klass.where('rgt > ?', right).update_all(['rgt = rgt - ?', distance])
            klass.where('lft > ?', right).update_all(['lft = lft - ?', distance])
          end
        end
    
        module ClassMethods
          # 采用迭代和栈替代递归,避免递归带来的内存问题
          def render
            @nodes = get_sorted_array
            root = @nodes.shift # 出队无意义的根节点
            current_depth = -1
            item_path = [root]
            @nodes.each do |item|
              depth = item.depth = item.lft # 留意 get_sorted_array 方法的注释
              if depth > current_depth
                (item_path[-1].children ||= []) << item
                item_path << item
              elsif depth == current_depth
                item_path[-1] = item
                item_path[-2].children << item
              else
                until item_path.pop.lft == depth; end
                item_path[-1].children << item
                item_path << item
              end
              current_depth = depth
            end
            root
          end
        end
      end
    end
    
  • 问个 Ember 问题,不用 Ember Data,怎么写 model? at 2014年02月25日

    没用过 ember,不过找到这个:https://github.com/ebryn/ember-model

  • RAILS_ENV 写在命令前后有什么区别呢? at 2014年02月24日

    #4 楼 @zgm 受教了 😄

  • RAILS_ENV 写在命令前后有什么区别呢? at 2014年02月24日

    在 https://github.com/rails/rails/blob/master/railties/lib/rails/commands/commands_tasks.rb#L5 这里提到某些命令需要参数前置,而 https://github.com/rails/rails/blob/master/railties/lib/rails/commands/commands_tasks.rb#L62 明确表示 console 命令需要在运行之前加载 config/application,参数必需要写在前面。

    也就是说运行 rails c 时,首先启动的就是 rails app,而 rails app 需要 RAILS_ENV,所以只能前置。

    而后置的是 rake 的写法,运行顺序应该是 rake -> rails app,也就是说 RAILS_ENV 这个变量其实是传递给 rake 再转交到 rails 的。

    以上仅供参考,不知道对不对。

    理解错误,看4楼

  • 有没有在 Linux 环境下支持 Excel 2007 版本的 gem? at 2014年02月12日

    看看这个?https://github.com/randym/axlsx

  • 运行 rake assets:precompile 时总是出现编码问题,但是并没有写错啊 at 2014年02月12日

    http://ruby-china.org/topics/14379

  • js 在 node 和 window 中的全局对象 at 2014年02月11日

    #3 楼 @u1378130755 JS 在 window 下用 var 声明的变量会赋到 window 对象上,所以 那题 var a = 1 的声明被提前,"a" in window 永远为 true。

    并不是 this 永远指向 true。但是你必须清楚 JS 的 this 很没节操,谁来调的函数就是谁。

    fn1 = object.getNameFunc(); // getNameFunc 由 object 调用,所以 this 指向 object;
    fn1();  // 等价 fn.call(this); 此时 this 指向 window
    
    
  • js 在 node 和 window 中的全局对象 at 2014年02月11日

    在浏览器 global context 中 var name = "The Window"; 与 this.name = "The Window" 等价。

    if (!("a" in window)) {
        var a = 1;
    }
    alert(a);
    

    你看看这题,alert 弹出的是啥?

    而 nodejs 虽然有一个跟 window 类似的 global,但是每个文件(模块)都有自己的执行上下文,所以 var name = "The Window" 在 nodejs 中是以局部变量存在。

  • JavaScript 的对象本质 (更适合有 java、c++、c# 等背景的) at 2014年02月11日

    内容还没看,吐嘈一下排版可以吗

  • settingslogic 在 application.rb 中配置全局变量会报错 at 2014年02月11日

    拿不到是肯定的.. FILE=Settings.fles 才在第二步,这时候 Rails 核心还没启动完成,ENV 都没加载。你的代码肯定也还没加载进来。

  • `["1", "2", "3"].map (parseInt) at 2014年02月10日

    #9 楼 @u1378130755 radix: 可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。 如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以“0x”或“0X”开头,将以 16 为基数。 如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。

    你在 console 里面试试 parseInt('1', 1) 看看

  • `["1", "2", "3"].map (parseInt) at 2014年02月10日

    #5 楼 @u1378130755

    翻译起来就是这样:

    ["1", "2", "3"].map(function(i, indx, array) {
        parseInt(i, indx);  // indx 当作 radix 传进 parseInt 了
    });
    

    parseInt 的 radix 可以参考这里: http://www.w3school.com.cn/js/jsref_parseInt.asp

  • whenever 似乎存在默认上下午问题 (找到原因,是使用 chronic 解析时间导致的) at 2014年02月10日

    https://github.com/mojombo/chronic/blob/master/lib/chronic/parser.rb#L12 默认用了 十二小时制 =, = 这样就可以了

    Chronic.parse('3:00', hours24: true)
    

    或者把 3:00 换成 3:00 am

  • whenever 似乎存在默认上下午问题 (找到原因,是使用 chronic 解析时间导致的) at 2014年02月10日

    chronic 的问题。whenever 用了 chronic 解析: https://github.com/javan/whenever/blob/master/lib/whenever/cron.rb#L15

    我在命令行试了一下,一样的问题:

    irb(main):001:0> require 'chronic'
    => true
    irb(main):002:0> Chronic.parse('3:00')
    => 2014-02-10 15:00:00 +0800
    irb(main):003:0> 
    
    
  • js 面向栈的问题 at 2014年02月10日

    看看这里或许有帮助:http://davidshariff.com/blog/what-is-the-execution-context-in-javascript/

  • 上一页
  • 1
  • 2
  • …
  • 16
  • 17
  • 18
  • 19
  • 20
  • …
  • 22
  • 23
  • 下一页
关于 / RubyConf / Ruby 镜像 / RubyGems 镜像 / 活跃会员 / 组织 / API / 贡献者
由众多爱好者共同维护的 Ruby 中文社区,本站使用 Homeland 构建,并采用 Docker 部署。
服务器由 赞助 CDN 由 赞助
iOS 客户端 / Android 客户端 简体中文 / English