• 都来聊聊人生污点吧 at 2013年01月07日

    两个数据库刚设置为远程相互同步,结果发现有一边的数据库少了一些东西,然后打算把这个不全的数据库删了,用 rake 重新 load 生成一个。结果是两边的数据库都被删了,当时就蒙了。。。。。还好,发现导数据的时候还有个备份

  • #37 楼 @zeeler 这个是个好注意,tanks

  • #30 楼 @zeeler 你的意思是吧 views 分离出来吗?有没有什么开源的代码,供学习下,谢谢

  • #34 楼 @jjym 延迟我我指的是任务加入队列到取出来执行这段时间,因为要跟前端交互,所以我希望这段时间尽量短。

  • #31 楼 @jjym resque 会有延迟,除非你能保证里面的任务一创建出来就立即执行

  • #27 楼 @reus 嗯,好的,谢谢啊

  • #23 楼 @reus #24 楼 @saiga 网上是这么说的,ruby 解释器一退出,就会杀死所有的线程,不管它们的死活。如果采用任务队列的话,那么会存在延时,也就是说这个任务可能会等待几秒中然后才会执行。

    我目前的使用场景是,前端发来一个请求,我要马上返回,让它把页面渲染出来,同时有线程在后面获取数据,时间有时会很长,10s 以上,如果顺序执行,那么在最糟糕的情况下,这个页面渲染出来需要很长时间;如果等页面渲染完在发请求来获取数据,这样又慢了一段时间! 目前我使用 ruby 的 drb 库来实现,在后台启动一个 drb server,在 action 中发一个请求给 drb server,创建线程的事情就交给它了,action 也可以马上返回。这样的缺点是如果并发大的话,创建的线程就会很多

    不知到你们有没有好的方法,或者能够保证队列中的任务立马运行

  • #21 楼 @luikore 嗯,谢谢你的回答。之前在 rails 中怎么试都不行,换了个环境又可以了,很奇怪

  • #18 楼 @luikore 你可能没明白我的意思,在 rails 中,前端发来一个请求,我在 action 中创建出一个线程,此时我需要马上给前端返回,创建出来的线程在后台运行,如果用 jion,那么我需要等待到所有线程运行完,这样才能返回给前端,我需要马上返回

  • #13 楼 @luikore 可能是我表达的不太清楚,写了个 java 版本的(见原帖更新),想实现一样的功能

  • #14 楼 @lyfi2003 喔,对啊

  • #12 楼 @reus

    public class TestThread {
    
        public static void main(String[] args) {
          TestThread ts = new TestThread();
          Thread myThread = ts.new MyThead(100);
    
          myThread.start();
          System.out.println("main");
    
        }
    
        public class MyThead extends Thread {
            private long sleepTime;
            public MyThead (long sleepTime) {
              this.sleepTime = sleepTime;
    
            }
    
            public void run() {
              for (int i = 0 ; i < 10; i++) {
                  System.out.println(this.getName() + "\t----- " + i + " -----");
                  try {
                    Thread.sleep(sleepTime);
                  } catch (InterruptedException e) {
                    e.printStackTrace();
                  }
                }
              }
            }
    
          }
    
    运行结果:
    main
    Thread-0    ----- 0 -----
    Thread-0    ----- 1 -----
    Thread-0    ----- 2 -----
    Thread-0    ----- 3 -----
    Thread-0    ----- 4 -----
    Thread-0    ----- 5 -----
    Thread-0    ----- 6 -----
    Thread-0    ----- 7 -----
    Thread-0    ----- 8 -----
    Thread-0    ----- 9 -----
    

    这是 java 中的实现

  • #8 楼 @saiga 在 rail 中使用多进程,这样不好,管理起来比较费事,而且会互相影响,比如它们都是共享同一个数据库 thread pool,一个进程的结束,会导致另一个进程的数据库连接失败

  • #9 楼 @reus 谢谢答复,我需要的是 thread,不是 process。ruby 的 drb 库创建出来的线程都能独立运行,就不知到怎么实现的

  • #6 楼 @saiga 对啊,我就想实现主线程退出,守护线程还在运行的功能。好像 java 中很容易实现这样的功能

  • #1 楼 @saiga 在一个函数内创建一个线程,这个函数结束了,创建出来的线程还能继续运行

  • #2 楼 @sevk 我是想实现这两个线程独立运行,互不影响,hello 可以马上结束,但是它创建出来的线程还能继续运行

  • #1 楼 @saiga 目的是不需要等待,两个线程互不关联,独立运行

  • 像 The Little Schemer 这本书一样,从 ruby 代码中来讲解和运用基础知识

  • #12 楼 @zw963 除非学好 Ruby, 否则不要用 Rails。想知道一下为什么?楼主遇到了哪些困难和问题?我的背景是 C、C++,接触 ruby on rails 半年左右。

  • #23 楼 @knwang 所以“学习 Rails " 本身从来不是 大多数人 的目的,成为厉害的 web developer 才是。想请教下 knwang,成为厉害的 web developer 需要哪些知识,重点讲下后端技术,谢谢

  • uploadify 和 Rails 交互问题 at 2012年11月16日

    不稳定的话可以用下面方法解决,就是把 session 加载进来

    prepend_before_filter :load_session, only: :flash_upload
    
    def load_session
       unless session.loaded?
         se = Marshal.load(ActiveSupport::Base64.decode64(params["_dituhui_session"]))
         logger.info("\n--------session is: #{se.inspect}-----------\n")
         request.session.update(se)
       end
     end
    

    其实就是在 authenticate_user! 前,执行 load_session

  • #11 楼 @zw963 递归程序很不容易写对,以前也写过一些递归的算法,但时间长了,感觉又忘记了!我遇到最多的麻烦就是递归终止条件的判断,很容易出错。

  • #3 楼 @knwang 的却开发效率和完成项目很重要,很赞同你讲的!但很多新的技术的出现,使得我们总在后面追赶,刚学会一样东西,又要学另外一样东西,而且新技术的出现,总会出现一些新的术语和新的描绘,本来有些说的就是同一个东西,也花费了很多时间去想去理解它到底是说回什么事,总体来说就是会,但是运用不那么自如,要跟得上时代,我觉得要脱离那种总是处在学习的阶段,而后才会有所作为。不知楼主在学习和掌握一门新的技术时,有什么心得体会?

  • #4 楼 @Rei 嗯,下面有连接!但只是一个连接的话,总感觉缺少点什么,呵呵

  • 对简单的东西多加思考,取其精髓,很受启发

  • #19 楼 @zhangyuan rails2 和 rails3 中实现方法稍有差别,但他们都重写了 inspect 方法

  • 收藏,可能以后会遇到这样的问题

  • SQL 有必要学么? at 2012年09月08日

    #1 楼 @Rei 想问下在开发的过程中,除了前端页面显示美化,哪一部分占用你时间和精力最多?数据库的操作比重算多吗?

  • 感觉怎么样?