小编mmr*_*mmr的帖子

Capybara需要睡觉吗?

根据网页更新,显然,sleepwait_until使用最新版本的Capybara无效.

但是,如果我添加sleep(1)对测试的调用,我有一组只能在快速机器上运行的测试.也就是说,测试看起来像:

describe "dosimeters page" do
  before do
    click_link("Dosimeter Read History", :match=>:first)
  end
...
Run Code Online (Sandbox Code Playgroud)

describe "dosimeters page" do
  before do
    unix_wait
    click_link("Dosimeter Read History", :match=>:first)
  end
...
Run Code Online (Sandbox Code Playgroud)

在那里我定义unix_wait为:

def unix_wait
  case RbConfig::CONFIG['host_os']
  when /darwin/
  when /linux-gnu/
    sleep(1)
  end
end
Run Code Online (Sandbox Code Playgroud)

问题是,我有一台旧的Ubuntu 12.04四核笔记本电脑在Jenkins上运行这些测试,一切都运行良好,没有unix_wait电话.测试在运行Ubuntu 13.10和macbook pro笔记本电脑的六核桌面上随机失败,但是如果我添加了unix_wait调用,那么测试就会通过.

测试失败本身表示加载失败(即某些运行中缺少css元素,但其他运行中没有),并且当手动加载站点时,被测试的内容实际上有效.

那么这里适当的行动是什么?显然,sleep测试期间不允许,也不允许wait_until.然而,睡眠是有效的,但它对我来说似乎非常粗糙.我应该看看#synchronized吗?从我从那些博客文章中收集的内容来看,当我打电话时,它已经被调用click_link,并且测试仍然失败.

这里接受的协议是什么?

我应该补充一下,因为我认为这很重要:这些都是javascript测试.我正在使用基于qt4(而不是qt5)的capybara-webkit.我正在考虑切换到poltergeist或其他一些javascript驱动程序作为调试步骤.

javascript sleep ruby-on-rails capybara capybara-webkit

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

我的Windows应用程序真正使用了多少内存?

我有一个长期记忆的实验程序,我想知道它的实际内存占用.任务管理器说(在windows7-64中)该应用程序正在消耗800 MB的内存,但根据任务管理器分配的内存总量为3.7 GB.所有已分配内存的总和不等于3.7gb.如何在运行中确定应用程序实际消耗的内存量.

推论:任务管理器实际报告的内存是什么?它似乎并不是分配给应用程序本身的所有内存.

memory windows taskmanager

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

如何使用完全独立的.NET 4.0安装程序制作WiX 3.5安装程序?

继续我在这里提出的上一个问题,我现在需要转到vs2010.

我已经获得了2010年6月5日版WiX 3.5的最新每周版本.

这是我的安装程序的相关行:

      <ItemGroup>
        <BootstrapperFile Include="Microsoft.Net.Framework.4.0">
          <ProductName>.NET Framework 4.0</ProductName>
        </BootstrapperFile>
        <BootstrapperFile Include="Microsoft.Windows.Installer.4.5">
         <ProductName>Windows Installer 4.5</ProductName>
       </BootstrapperFile>
      </ItemGroup>
Run Code Online (Sandbox Code Playgroud)

<GenerateBootstrapper ApplicationFile="MySetup.msi" ApplicationName="MyProgram" BootstrapperItems="@(BootstrapperFile)" Path="C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\" ComponentsLocation="Relative" OutputPath="$(OutputPath)" Culture="en" />
Run Code Online (Sandbox Code Playgroud)

但是,它只是不起作用.在vs2010中,.NET Framework 4.0和Windows Installer 4.5文件旁边有感叹号,属性页面将它们列为"Unknown BuildAction BootstrapperFile",而构建似乎根本不会安装.NET 4.0.相关警告是:

C:\source\depot\project\vs2010\WiXSetup\WiXSetup.wixproj(68,5): warning MSB3155: Item 'Microsoft.Net.Framework.4.0' could not be located in 'C:\Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\'.
Run Code Online (Sandbox Code Playgroud)

wix .net-4.0 visual-studio-2010

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

如何让WPF的ClipToBounds工作?

我有一个应用程序在WPF中的Image对象内显示一个图像.该图像包含在xaml看起来像的控件中:

<UserControl x:Class="MyProgram.NativeImageDisplay"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Loaded="UserControl_Loaded">
    <Canvas Name="border" Background="Black" >
        <Image Name="image" StretchDirection="Both" Stretch="Uniform" ClipToBounds="True"
                SnapsToDevicePixels="True" RenderOptions.BitmapScalingMode="HighQuality"></Image>
    </Canvas>
</UserControl>
Run Code Online (Sandbox Code Playgroud)

其中两个控件包含在窗口的网格中,如下所示:

    <Grid  Grid.Row="2" Name="DisplayCanvas">
        <Grid.ColumnDefinitions>
            <ColumnDefinition/>
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <l:NativeImageDisplay x:Name="imageDisplay2" Grid.Column="1" ClipToBounds="True"/>
        <l:NativeImageDisplay x:Name="imageDisplay" Grid.Column="0" ClipToBounds="True"/>           
    </Grid>
Run Code Online (Sandbox Code Playgroud)

我在这里一直称裁剪是真的.

用户可以使用鼠标上的滚动按钮放大图像,最终调用图像上的ScaleTransform:

    private void image_MouseWheel(object sender, MouseWheelEventArgs e)
    {
        if (!thumbnail)
        {
            TransformGroup transformGroup = (TransformGroup)border.RenderTransform;
            ScaleTransform transform = (ScaleTransform)transformGroup.Children[0];

            double oldScaleX = transform.ScaleX;
            double oldScaleY = transform.ScaleY;

            double zoom = e.Delta;
            transform.ScaleX += zoom / 10000;
            transform.ScaleY += zoom / 10000;
            if (transform.ScaleX …
Run Code Online (Sandbox Code Playgroud)

wpf cliptobounds

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

.NET C#绘制缓慢

我在.NET中快速绘制一些东西时遇到了问题.我不认为任何特别的东西应该花费很多时间,但是在我试过的每台机器上,我都会遇到严重的问题.这是在vs2008 .NET中实现的,使用C#(在C++中有一些东西,但与绘图无关).

我有三个屏幕,用户应该能够在没有延迟的情况下在它们之间切换.在第一个屏幕上,有四个按钮,八个用户控件,包括两个按钮和每个6个标签,一个文本字段和一个下拉框.我不认为它那么多.

在第二个屏幕上,我有四个标签,六个按钮和两个控件,它们有六个按钮,一个opengl绘图上下文,每个约十个标签.

在第三个屏幕上,我有一个opengl上下文和10个按钮.

从任何屏幕翻转到任何屏幕都需要大约一秒钟.例如,如果我从第二个屏幕翻转到第一个屏幕,则整个应用程序会显示空白,显示背景屏幕,然后绘制第一个屏幕.很多时候,屏幕是零碎的,好像机器是故意在瑞典的一家工厂手工制作精美可口的字母,然后将每一个单独运送到我的屏幕上.我夸大了,我想说清楚,因为我不认为瑞典人和这次重绘一样慢.

第一个和第二个屏幕在内存中绘制,并存储在那里,只有一个'.Hide()'和'.Show()',使它们显示和消失.双缓冲似乎并不重要.每次重新绘制第三个屏幕,并且看起来绘制的时间与第一个和第二个相同.

有什么想法吗?会发生什么事?我该如何追踪它?

谢谢!

编辑:我应该补充说,任何C++处理等都发生在自己的线程中.偶尔会有一个MethodInvoke将操作结果绘制到屏幕上,但是这个问题在没有调用任何函数的情况下发生,只需按下按钮即可从一个屏幕进入下一个屏幕.

.net c# performance drawing

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

加密.Net应用程序和程序集

我有加密/复制保护问题.

我正在为使用加密狗的公司编写应用程序.请不要告诉我软件保护是无用的,或者我应该让它自由地飞到空中,或者我花费这么多时间是浪费; 这不是关于软件保护有效性的哲学问题,更像是如何操作.

据我了解,破解加密狗保护软件的第一步是从代码中删除对加密狗的所有调用(即修补可执行文件).另据我的理解,我可以在.NET中创建"强名称"以保护应用程序和程序集,如本MSDN文章中所述.

强大的命名是否足以确保我的应用程序无法轻松修补?或者我是否需要使用某种加密库?如果我需要使用库,哪一个,或者我在哪里可以获得有关设置的信息?

当然,下一步是将重要的算法放在加密狗上.我意识到这些只是专用饼干的速度颠簸,但随着我们的市场份额的增长,减速带来帮助我们达到不太敏锐地感受到海盗刺激的程度(我希望).

谢谢!

.net encryption dongle

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

如何使用库调用计算C#中的阶乘?

我需要计算高达100左右的阶乘数!为了确定一系列硬币翻转式数据是否是随机的,根据贝叶斯概率的维基百科条目. 正如你在那里看到的那样,必要的公式涉及3个因子计算(但是,有趣的是,这些因子计算中的两个是沿着到第三个计算的方式计算的).

我在这里看到了这个问题,但我认为这个整数很快就会被吹灭.我也可以创建一个更加智能的因子计算功能(即,如果我有11!/(7!3!),根据wiki示例,我可以去(11*10*9*8)/ 3!),但这对我来说过早优化,在某种意义上我希望它能够工作,但我并不关心速度(还).

那么,为了获得这个概率,我可以调用什么样的C#库来计算阶乘?我对可以进入阶乘计算的所有可怕性感兴趣,我只想以一种我可以操纵它的方式得到结果.在Math命名空间中似乎没有因子函数,因此问题.

c# factorial

6
推荐指数
1
解决办法
4万
查看次数

我应该在这个网站应用程序中使用Rails或Ruby吗?怎么样?

我对网络编程很新(或者实际上,它已经很老了,因为我上次与网络混乱是HTML 1.1),但现在需要快速部署Web应用程序.似乎每次我转身时,都会有新的首字母缩略词和技术需要学习(JSON,XMLRPC,GWT,Javascript,Rails等).

这是我的应用必须做的事情:

  1. 给定用户名和密码,进行身份验证(很简单,一切都是这样,显然).
  2. 允许用户上传大量数据以进行处理.
  3. 处理该数据.
  4. 允许用户下载其处理的数据.

我已经有了Java脚本和数据库来处理数据.在一台机器上,我可以运行一系列命令行程序来处理传入的数据块并将结果放回到mysql数据库中.那已经存在并且有效.

我想使用这些现有和经过测试的方法构建此任务的Web前端.我现在倾向于这种方法:

  1. 有两台机器,一台数据库机器和一台Web服务器.如果需要,该方法允许以后的可伸缩性,但也要求我不能假设我用来访问数据并操纵它的程序是本地存储的.
  2. 使用Ruby DRb应用程序创建服务器和客户端.客户端会将数据传递给服务器,服务器又会调用这些应用程序.
  3. 使用其他一些Ruby接口与Web前端的DRb进行交互.

这是我的问题:看起来大多数用于Web的Ruby应用程序都会自动尝试构建某种本地数据库.我发现的所有Rails教程都是从创建自己的数据库并与之交互开始的,这正是我不想做的事情.

Rails是适合我的技术,还是使用Ruby DRb?我应该探索一些其他技术吗?

如果Rails或Ruby是正确的东西,我应该看什么?我已经有了编程Ruby书,并且已经将它用于一些后端内容以及使基本的DRb工作.

ruby ruby-on-rails drb sinatra

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

C#和vs2008中的线程调试

我有一个非常严重的多线程调试问题.在与串行设备交互时我遇到了某种时序问题,我需要跟踪它.我有三个主题:

  1. UI更新的主要线程.用户可以通过选择预设来更改设备的一个参数,或者一次更改多个参数.
  2. 查询以确保设备仍然连接的状态检查线程.如果用户关闭设备或设备本身以有趣的方式与之交互,则状态更改需要反映在UI中.
  3. 读取设备响应的串行端口的线程.

我的问题实际上与调试这种情况有关.看起来我在每个线程中的每一行都必须有一个断点才能进行调试; 如果我在一个线程中断,调试器将不会单步执行该线程.我知道其他线程将继续更新,但是我不应该在调试器中执行正常的线程,即从一行到下一行?然后,我可以使用'threads'选项卡在线程之间切换.

我提到我在WPF,因为我不知道这是否会改变情况; 也许它确实如此,也许它没有.状态检查线程是UI控件的一部分,因为只需在UI启动时检查状态.该控件位于与主应用程序不同的库中.

c# debugging multithreading visual-studio-2008

5
推荐指数
2
解决办法
407
查看次数

如何在capybara和poltergeist中测试CSV下载?

我需要能够测试我的Rails应用程序返回的CSV文件的内容.

在我的控制器中,代码如下所示:

respond_to do |format|
  format.html
  format.js
  format.csv do
    if current_user.has_rights?
      response.headers['Content-Type'] = 'text/csv'
      response.headers['Content-Disposition'] = 'attachment; filename=info.csv'    
      send_data generate_csv_file
    else
      send_data "Access denied"
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

此代码有效 - 如果我访问具有适当权限的URL,则下载CSV文件.但是,我似乎无法与Poltergeist和Capybara进行任何合适的测试.

如果我执行以下操作,请回答此问题:

describe DashboardsController do
  context "when format is csv" do
    render_views
    let(:csv_string)  { get_csv_headers }
    let(:csv_options) { {filename: "report.csv", disposition: 'attachment', type: 'text/csv; charset=utf-8; header=present'} }
    let (:csv_user) {FactoryGirl.create(:csv_user)}
    before do
      sign_in csv_user
    end


    it "should return a csv attachment" do
#      @controller.should_receive(:send_data).with("#{csv_string.join(',')}", csv_options).
#        and_return { @controller.render …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails capybara poltergeist

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