小编Nei*_*own的帖子

在Visual Studio社区2015中进行性能分析测试

网上的帖子建议你可以通过右键单击并选择"Profile Test"来在Visual Studio中分析测试:http://adamprescott.net/2012/12/12/performance-profiling-for-unit-tests/ 但是我我的NUnit测试只看"运行测试"和"调试测试",xUnit.NET也是如此.为了描述测试,我缺少什么?这是否在社区版中不受支持,或者我缺少某些配置或组件?

(如果社区中不支持可执行文件,那么它似乎很奇怪,因为我可以在社区中分析可执行文件,因此可以通过创建运行测试的可执行文件以及配置文件来解决这个问题.为什么支持分析可执行文件而不是分析测试? )

重现NUnit的步骤:在Visual Studio Community 2015中创建新的C#库项目,将http://nunit.org/index.php?p=quickStartSource&r=2.6.4的内容粘贴到新文件中,安装NuGet包如下:

<packages>
  <package id="NUnit" version="2.6.4" targetFramework="net452" />
  <package id="NUnit.Runners" version="2.6.4" targetFramework="net452" />
  <package id="NUnitTestAdapter" version="2.0.0" targetFramework="net452" />
</packages>
Run Code Online (Sandbox Code Playgroud)

甚至重新启动Visual Studio.测试显示在测试资源管理器中,可以运行,但右键单击菜单上没有"配置文件测试"选项.还尝试了xUnit.net的等效步骤,但没有快乐.

unit-testing visual-studio visual-studio-2015 vs-community-edition

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

为Haskell GADT定义Eq实例

我有一个很像这样的GADT:

data In a where
  M :: MVar a -> In a
  T :: TVar a -> In a
  F :: (a -> b) -> In a -> In b
Run Code Online (Sandbox Code Playgroud)

它包装了各种输入原语,但最后一个构造函数也允许一个Functor实例:

instance Functor In where
  fmap f (F g v) = F (f . g) v
  fmap f x = F f x
Run Code Online (Sandbox Code Playgroud)

这种类型的重点是BTW,它支持:

read :: In a -> IO a
read (M v) = takeMVar v
read (T v) = atomically (readTVar v)
read (F f v) = f …
Run Code Online (Sandbox Code Playgroud)

haskell gadt

15
推荐指数
2
解决办法
2852
查看次数

Rails日志转换是保持旧日志打开并填满它

我帮助维护一个Rails网站.它在Solaris Sparc机器上运行JRuby 1.5.5,Rails 2.3.10.我有一个与日志有关的问题.

为了阻止我们的日志文件变得过大并填满磁盘,我们正在使用内置于Logger类的日志转换.在config/environments/production.rb中,我们有:

config.logger = Logger.new(config.log_path, 10, 100.megabyte)
Run Code Online (Sandbox Code Playgroud)

哪个应该在日志文件达到100兆字节时旋转它们,并且只保留10个文件.

问题是双重的:Rails没有正确地旋转日志,并且它保持打开旧的日志文件以写入它 - 但它写的只是一些请求的重复内容.所以,如果我这样做,ls -l log我会看到这样的事情:

-rw-r--r-- 83040892 Oct  4 15:07 production.log
-rw-r--r-- 3303158664 Oct  4 15:07 production.log.0
-rw-r--r-- 104857616 Oct  2 23:13 production.log.1
-rw-r--r-- 104857618 Oct  1 17:12 production.log.2
Run Code Online (Sandbox Code Playgroud)

注意最近循环的日志如何仍然打开并仍然被写入(运行pfiles确认Rails服务器仍然有三个文件句柄到日志).另请注意,它在两天内达到了3千兆字节,通常我们每天可以达到100千兆字节.这是因为它充满了重复的请求.我不能轻易地将它粘贴在这里,但是日志充满了10月3日18:50(相信是日志旋转点)的相同1000行请求,一遍又一遍地打印.根据过去的经验,日志文件将继续填充此重复内容,直到磁盘填满.

日志转移/ Rails日志记录是否明显破坏?(我们的日志文件用法并不奇怪:我们不做任何直接日志记录,它只是来自Rails框架.)明显的下一步是尝试像logrotate,但如果Rails拒绝关闭旧的日志文件和我永远在给他们写垃圾,我怀疑它不会解决我的问题(因为日志永远不会被关闭,因此磁盘空间永远不会恢复).

logging ruby-on-rails jrubyonrails

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

为什么Java依赖于常量会导致重新编译?

我有几个简单的类:

// src/Consts.java
public class Consts
{
    public static final int A = 100;
    public static final int B = 101;
}
Run Code Online (Sandbox Code Playgroud)

和:

// src/Print.java
public class Print
{
    public static void main(String[] args)
    {
        System.out.println("A: " + Consts.A + " B: " + Consts.B);
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一个简单的ant构建文件:

<project name="Test" default="compile" basedir=".">
  <!-- set global properties for this build -->
  <property name="src" location="src"/>
  <property name="build" location="build"/>

  <target name="compile">
    <mkdir dir="${build}"/>
    <!-- Compile the java code from ${src} into ${build} --> …
Run Code Online (Sandbox Code Playgroud)

java ant

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

从Haskell向量包安全并行使用MVector/IOVector

我可以安全地从多个并行线程分配IOVector的非重叠索引(来自Haskell向量包),还是需要额外的互斥锁?

背景:我想并行运行IO计算的集合,然后记录所有结果.我开始将结果返回到列表中,但这似乎是错误的数据结构.所以我希望使用vector包中的IOVector来存储结果.

我的问题是,我可以这样写:

runPar :: [IO a] -> IO (IOVector a)
runPar tasks = do
  v <- new (length tasks)
  mapM forkIO [task >>= write v i | (i, task) <- zip [0..] tasks]
  -- Wait for all tasks to complete
  return v
Run Code Online (Sandbox Code Playgroud)

这保证是安全的吗?或者我是否需要具有类似互斥锁的控件(例如,将v保持在一个中MVar)以确保一次只进行一次写操作?

haskell

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

如何在子项之间拖动后停止JavaFX父节点的单击

我有一种情况,我在JavaFX中有一个容器节点(HBox)和两个子节点.当我从左边的子节点向右拖动时,我向左边节点发送了很多拖动事件,最后当我将鼠标放在右边节点上时,我在父节点上得到了一个click事件.下面是一些复制这种情况的代码.

我想知道的是:如何阻止父级接收此点击事件?我已经在使用事件的左右节点上尝试了各种事件过滤器和事件处理程序,但我似乎无法找到正确的事件来阻止将click事件发送给父事件.有任何想法吗?

package test;

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.Background;
import javafx.scene.layout.BackgroundFill;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;

public class TestDrag extends Application
{

    @Override
    public void start(Stage primaryStage) throws Exception
    {
        String leftHead = "Start dragging from me\n";
        String dragStarted = "Drag begun; staying simple\n";
        Label left = new Label(leftHead);

        left.setOnDragDetected(e -> {
            left.setText(leftHead + dragStarted);
            e.consume();
        });

        left.setOnMouseDragged(e -> {
            left.setText(leftHead + dragStarted + "Mouse dragged to: " + e.getSceneX() + ", " + e.getSceneY());
            e.consume(); …
Run Code Online (Sandbox Code Playgroud)

javafx javafx-8

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

从 Unicorn 配置文件中引用 Rails

我正在尝试按照这三个链接建议的行更改我的 Unicorn 配置文件,以更改 Unicorn 日志记录:

它们都遵循相同的模式(我正在尝试第一个),但是当我将它们添加到我的配置中时,我得到了 Unicorn 一遍又一遍地重复相同的消息:

ERROR -- : uninitialized constant Unicorn::Configurator::Rails (NameError)
Run Code Online (Sandbox Code Playgroud)

堆栈跟踪指向 Unicorn 日志文件中第一次使用 Rails。我做错了什么,或者我需要改变什么才能让这些片段工作?

我正在使用 Rails 3.2.14,并使用以下方法调用我的服务器:

bundle exec unicorn -c config/unicorn.rb
Run Code Online (Sandbox Code Playgroud)

使用unicorn_rails而不是unicorn没有区别(相同的错误)。我的配置是这样的:

worker_processes 20
listen ".../unicorn.socket", :backlog => 64
timeout 30
pid ...
stderr_path ...
stdout_path ...
GC.respond_to?(:copy_on_write_friendly=) and
  GC.copy_on_write_friendly = true
check_client_connection false
before_fork do |server, worker|
  # No code
end

after_fork do |server, worker|
  defined?(ActiveRecord::Base) and
    ActiveRecord::Base.establish_connection

  # Snippet from …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails unicorn ruby-on-rails-3

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