问题列表 - 第5078页

Rails 2.2中可重用辅助方法的最佳位置

我计划创建一种方法,以特定方式格式化时间(俄语专用格式).

我想在多个模型,控制器和可能的视图中重用这个辅助方法.另外我想在Time类的实例上调用这个helper方法,如下所示:

t=Time.now
t.my_super_shiny_helper
Run Code Online (Sandbox Code Playgroud)

问题:我应该在哪里实施这个助手?(模块或类,在应用程序目录结构中的位置?).创建之后,我应该怎么称呼它?

我是ruby/rails的新手,并努力以正确的方式工作.

谢谢.

ruby ruby-on-rails

3
推荐指数
1
解决办法
326
查看次数

我如何等待java声音片段完成播放?

我使用以下代码使用java声音API播放声音文件.

    Clip clip = AudioSystem.getClip();
    AudioInputStream inputStream = AudioSystem.getAudioInputStream(stream);
    clip.open(inputStream);
    clip.start();
Run Code Online (Sandbox Code Playgroud)

调用Clip.start()方法的方法立即返回,系统在后台线程中播放声音文件.我希望我的方法暂停,直到播放完成.

有没有好办法呢?

编辑:对于对我的最终解决方案感兴趣的每个人,根据Uri的答案,我使用下面的代码:

private final BlockingQueue<URL> queue = new ArrayBlockingQueue<URL>(1);

public void playSoundStream(InputStream stream) {
    Clip clip = AudioSystem.getClip();
    AudioInputStream inputStream = AudioSystem.getAudioInputStream(stream);
    clip.open(inputStream);
    clip.start();
    LineListener listener = new LineListener() {
        public void update(LineEvent event) {
                if (event.getType() != Type.STOP) {
                    return;
                }

                try {
                    queue.take();
                } catch (InterruptedException e) {
                    //ignore this
                }
        }
    };
clip.addLineListener(listener );
}
Run Code Online (Sandbox Code Playgroud)

java javasound

7
推荐指数
3
解决办法
1万
查看次数

为什么构建交叉编译器比构建常规编译器更难?

我读过的所有内容似乎都暗示构建交叉编译器比构建针对其运行的平台的编译器要困难得多.这是真的?如果是这样,为什么?似乎为任意平台生成汇编代码和系统调用不应该比为编译器运行的平台生成这样的代码和系统调用更难,但也许我只是天真.

compiler-construction cross-platform cross-compiling

5
推荐指数
1
解决办法
638
查看次数

每次出现新邮件时,都希望procmail运行自定义python脚本

我对procmail有一个非常常见的要求,但我无法以某种方式获得结果.我有这个内容的procmailrc文件:

:0
* ^To.*@myhost
| /usr/bin/python /work/scripts/privilege_emails_forward.py
Run Code Online (Sandbox Code Playgroud)

其中我的自定义python脚本(privilege_emails_forward.py)将扫描当前收到的电子邮件,并对邮件内容进行一些操作.但是我无法在第一次拍摄时执行脚本(更不用说扫描邮件内容了).

  • 这是一个新邮件到达时调用外部程序(python)的正确方法吗?
  • 我的python程序(privilege_emails_forward.py)将如何接收邮件作为输入?我的意思是作为sys.argv或stdin ????

python email procmail

10
推荐指数
2
解决办法
2万
查看次数

数学问题:循环或递归

我试图以一种方式将数字分解为数组(在php中),例如:

  • 25变成(16,8,1)
  • 8成为(8)
  • 11变为(8,2,1)

我不知道正确的用语是什么,但我认为这个想法很明确.

我的循环解决方案非常简单:

   $number = rand(0, 128);    
   $number_array_loop = array();

   $temp_number = $number;
   while ($temp_number > 0) {
       $found_number = pow(2, floor(log($temp_number, 2)));
       $temp_number -= $found_number;

       $number_array_loop[] = $found_number;
   }
Run Code Online (Sandbox Code Playgroud)

我也有一个递归的解决方案,但是我不能在不使用全局变量的情况下工作(不想这样),以下内容接近但会导致数组中的数组:

   function get_numbers($rest_number) {

       $found_number = pow(2, floor(log($rest_number, 2)));

       if ($found_number > 0) {
           $temp_array[] = get_numbers($rest_number - $found_number);
           $temp_array[] = $found_number;
       }

       return $temp_array;
   }

   $number_array_recursive = array();
   $number_array_recursive = get_numbers($number);
Run Code Online (Sandbox Code Playgroud)

然而,使用诸如pow(floor(log())之类的东西似乎对于像这样的简单问题有点多.

在我看来,问题需要一个非常简单的数学递归解决方案,但我只是没有看到它.

任何帮助都会被贬低.

编辑:二进制是关键,非常感谢!

php math recursion loops

1
推荐指数
1
解决办法
943
查看次数

使用IComparer进行随机播放

首先,我确实知道Fisher-Yates shuffle.但为了论证,我想允许用户从下拉列表中选择一个排序选项.该列表将包括"随机"选项.根据他们的选择结果,我只想在IComparer实例中替换我的排序.IComparer会是什么样子?

谷歌提出了大量有缺陷的结果,所有结果都采取以下形式:

public class NaiveRandomizer<T> : IComparer<T>
{
    private static Random rand = new Random();

    public int Compare(T x, T y)
    {
        return (x.Equals(y))?0:rand.Next(-1, 2);
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,该实现是有偏见的,甚至会在某些情况下抛出异常.可以使用以下代码演示偏差:

void Test()
{
    Console.WriteLine("NaiveRandomizer Test:");
    var data = new List<int>() {1,2,3};
    var sortCounts = new Dictionary<string, int>(6);
    var randomly = new NaiveRandomizer<int>();

    for (int i=0;i<10000;i++)
    {   //always start with same list, in _the same order_.
        var dataCopy = new List<int>(data); 
        dataCopy.Sort(randomly);

        var key = WriteList(dataCopy);
        if (sortCounts.ContainsKey(key))
            sortCounts[key]++;
        else
            sortCounts.Add(key, 1); …
Run Code Online (Sandbox Code Playgroud)

.net c# shuffle icomparer

11
推荐指数
2
解决办法
3808
查看次数

超时后是否需要调用EndInvoke?

在网页上,我正在呼叫第三方,它不允许我以编程方式设置超时.我调用BeginInvoke并使用AsyncWaitHandle.WaitOne等待指定的时间.

如果呼叫超时,我继续前进,忘记我开始的线程呼叫.我的问题是,在超时情况下,我是否还要以某种方式调用EndInvoke?这个MSDN页面上的"注意"注释让我想知道我是否应该:http://msdn.microsoft.com/en-us/library/2e08f6yc(VS.71).aspx

如果您认为我应该,那么接下来的问题是,如果我的网页已经完成处理并在第三方回来之前返回到客户端,那么回调方法是否会在那里听取运行代码?一旦我的请求/响应完成,服务器是否停止寻找活动?

这是我正在使用的代码:

public class RemotePaymentProcessor
{
    private delegate string SendProcessPaymentDelegate(string creditCardNumber);

    private string SendProcessPayment(string creditCardNumber)
    {
        string response = string.Empty;
        // call web service
        SlowResponseService.SlowResponseService srs = new WebServiceTimeout.SlowResponseService.SlowResponseService();
        response = srs.GetSlowResponse(creditCardNumber);
        return response;
    }

    public string ProcessPayment(string creditCardNumber, int timeoutMilliseconds)
    {
        string response = string.Empty;

        SendProcessPaymentDelegate sppd = new SendProcessPaymentDelegate(SendProcessPayment);
        IAsyncResult ar = sppd.BeginInvoke(creditCardNumber, null, new object());
        if (!ar.AsyncWaitHandle.WaitOne(timeoutMilliseconds, false))
        {
            // Async call did not return before timeout
            response = "TIMEOUT";
        }
        else …
Run Code Online (Sandbox Code Playgroud)

timeout begininvoke

9
推荐指数
1
解决办法
4894
查看次数

调试Web应用程序

多年来,我已经习惯于逐步调试调试器,无论是在构建器中,还是在Eclipse中使用pydev调试器.

目前,我正在使用Python制作并在Google App Engine上运行它,我应该补充一点,我对开发任何真正的Web应用程序都很陌生; 除了编辑HTML代码之外,我从未真正做过多少工作.

所以,我正在运行Google的dev_appserver并在http:// localhost,dig,现在查看我的工作,我用来识别问题的唯一工具是PMD(穷人的调试器)..基本上把东西写到html页面来查看局部变量的值.

有没有更好的技术来处理这个?

python eclipse debugging google-app-engine

8
推荐指数
1
解决办法
1656
查看次数

最容易学习和使用.NET ORM框架?

注意:现在有人提出这个问题,请注意日期.这个问题已接近4年,而且信息相对过时.根据我的经验,NHibernate现在相对容易使用(使用流畅的界面),Entity Framework是一个合法的竞争者,而像Dapper和Massive这样的MicroORMS正变得非常流行.


我们正在重写我们的核心Web应用程序之一,我终于从管理层清楚地了解了用ORM框架替换可怕的存储过程纠结以实现我们的数据访问层.

万岁,对我而言.现在我必须选择一个.

以下我玩了一下

现在我知道NHibernate是真正的Alt.Netty选择,但问题是我和承包商合作,据我所知,他们从来没有听说过,NHibernate在相当的学习曲线上享有盛誉.在此期间,亚音速似乎是一种更为直接的方法.我也了解实体框架,但我对它的'meh'招待和Linq对Oracle持谨慎态度,但我很担心我几乎没有听到任何关于它的事实.

所以问题是:

  1. 还有我应该考虑的框架吗?
  2. 你对我的情况推荐哪一个?

更多考虑因素:

  • 当我说我对这些框架玩了一些时,我的意思是.我已经配置了它们并使用它们来提取一些数据以确保它一切正常.这就是它的程度.
  • 这是一个Oracle数据库(正如您可能已经从包含Linq2Oracle中猜到的那样)
  • 由于这是重写,因此数据库已经存在且具有稳定的模式
  • 我并不太担心表现.我们的申请通常一次最多为几个人服务.
  • 你们是那些必须回答我将要遇到的大量问题的人

我倾向于亚力士,但我很好奇人们可能会说些什么.

.net orm

11
推荐指数
1
解决办法
4870
查看次数

将JSP输出流传递给方法

我已经创建了一个类MyClass,它打算向JSP输出大量文本.我认为MyClass对象使用页面的输出流更好.这是一个好/可能的想法吗?

在测试可能的方法来做到这一点......

这些输出文本,但它显示在页面正文之前:

response.getWriter().append("test1");
response.getWriter().println("test2");
response.getWriter().write("test3");
Run Code Online (Sandbox Code Playgroud)

这个错误告诉我输出流已经得到了:

response.getOutputStream().println("test4");
Run Code Online (Sandbox Code Playgroud)

java jsp

3
推荐指数
1
解决办法
5973
查看次数