刚刚从Cucumber + Webrat切换到Cucumber + Capybara,我想知道如何将内容发布到Capybara的URL.
在Cucumber + Webrat中我能够迈出一步:
When /^I send "([^\"]*)" to "([^\"]*)"$/ do |file, project|
proj = Project.find(:first, :conditions => "name='#{project}'")
f = File.new(File.join(::Rails.root.to_s, file))
visit "project/" + proj.id.to_s + "/upload",
:post, {:upload_path => File.join(::Rails.root.to_s, file)}
end
Run Code Online (Sandbox Code Playgroud)
但是,Capybara文档提到:
visit方法只接受一个参数,请求方法总是GET.always GET.
如何修改我的步骤以便Cucumber + Capybara对URL进行POST?
当用户单击JFrame的一角以调整大小并拖动鼠标时,JFrame将根据用户拖动时鼠标的当前位置重新绘制.你怎么能听这些事件?
以下是我目前尝试的内容:
public final class TestFrame extends JFrame {
public TestFrame() {
this.addComponentListener(new ComponentAdapter() {
public void componentResized(ComponentEvent e) {
// This is only called when the user releases the mouse button.
System.out.println("componentResized");
}
});
}
// These methods do not appear to be called at all when a JFrame
// is being resized.
@Override
public void setSize(int width, int height) {
System.out.println("setSize");
}
@Override
public void setBounds(Rectangle r) {
System.out.println("setBounds A");
}
@Override
public void setBounds(int x, int y, …Run Code Online (Sandbox Code Playgroud) 所以我使用Capistrano将rails应用程序部署到我的生产服务器(apache + passenger),目前部署通常是这样的:
$cap deploy
$cap deploy:migrations
Run Code Online (Sandbox Code Playgroud)
它让我想知道,让我们说我的db:迁移花了很长时间在生产服务器上执行(db模式的一个重要的重构) - 在这种情况下,Capistrano的最佳实践是什么?如果用户在部署时连接到我的应用程序会发生什么?在更新数据库时,我应该优雅地将用户发送到静态占位符页面吗?Capistrano是否自动处理?我是否需要编写配方来帮助解决这个问题?或者铁路/乘客的内部机制是否意味着我不必担心这个特殊情况?
谢谢.
我想在我的java应用程序中找到内存泄漏,但我不知道如何使用Netbeans profiler来做到这一点.
背景
所以我读到,Swing应用程序中的内存泄漏通常源于各种侦听器(鼠标,键,焦点等)的使用.本质上,因为您将对象注册为侦听器而忘记取消注册该对象,通知程序最终会保留对象的引用,并泄漏一些内存.
我知道我们的应用程序并没有取消注册听众,并对潜在的解决方案进行了一些研究:
我发现处理问题的一种方法是使用WeakReference,可以在这里找到关于swing侦听器的方法的完整细节.
然后,我开始对NetBeans表单编辑器如何在监听器添加到表单后生成代码进行清理并发现NetBeans通过包装对象注册侦听器(即
argTypeComboBox.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
argTypeComboBoxItemStateChanged(evt);
}
});
Run Code Online (Sandbox Code Playgroud)
但生成的代码似乎并没有通过调用来清理removeItemListener.
问题
包装对象是否像弱引用一样?对我来说,它看起来可能会泄漏少量内存(包装对象的大小)?
在处理侦听器时,您是否有其他方法确保在完成侦听后始终收集垃圾?
背景
所以我试图在运行时在Mac OS X 上将jnilib(特别是JOGL)加载到Java中.我一直在关注相关的Stack Overflow问题:
我的最终目标是将特定于平台的JOGL文件打包到JAR中,并将它们解压缩到临时目录中并在启动时加载它们.我回过头来尝试使用硬编码路径加载JOGL:
File f = new File("/var/folders/+n/+nfb8NHsHiSpEh6AHMCyvE+++TI/-Tmp-/libjogl.jnilib");
System.load(f.toString());
f = new File ("/var/folders/+n/+nfb8NHsHiSpEh6AHMCyvE+++TI/-Tmp-/libjogl_awt.jnilib");
System.load(f.toString());
Run Code Online (Sandbox Code Playgroud)
尝试使用JOGL API时出现以下异常:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no jogl in java.library.path
Run Code Online (Sandbox Code Playgroud)
但是当我java.library.path通过添加以下JVM选项指定时:
-Djava.library.path="/var/folders/+n/+nfb8NHsHiSpEh6AHMCyvE+++TI/-Tmp-/"
Run Code Online (Sandbox Code Playgroud)
一切正常.
题
是否可以System.load在Mac OS X上使用(或其他变体)作为在运行时调用的-Djava.library.path的替代?
正如Jeff Atwood提醒我们的那样,开发人员成功的最终指标是我们产品的用户数量.构建人们真正想要使用的软件包括从他们遇到您的品牌的第一分钟到他们关闭的那一刻创造愉快的体验.
让我想知道,在产品开发过程中,小型软件商店可以使用哪些低成本(金钱和时间)的想法/技术/方法来更好地考虑用户体验设计?
该生产开源软件本书是有关启动开源项目一个金矿.然而,我希望从stackoverflow用户的经验中学到更多,并且想知道在开始一个新的开源项目时你犯了什么错误(或者你在尝试为一个新项目做出贡献时遇到的困难),你会怎样避免这些陷阱成为一个成功的项目*?
**成功松散地定义为使用的项目,并吸引活跃的贡献者.*
上下文
目前,我有一个像这样创建的JTextArea:
JTextArea descArea = new JTextArea();
descArea.setFont(style.getFont());
descArea.setLineWrap(true);
descArea.setName("descArea");
descArea.setToolTipText(resourceMap.getString("descArea.toolTipText"));
descArea.setText(model.getName());
JScrollPane descPane = new JScrollPane(descArea,
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
Run Code Online (Sandbox Code Playgroud)
当用户在字段中键入内容时,它确实会换行(按照descArea.setLineWrap(true)),但是通过破坏以下示例中的单词会有点笨拙:
我们软件的用户希望包装更加巧妙,并自动生成更像:

一般的想法是,当他们键入最后一个'th'时,它们一直向下移动到第二行以及插入点,因为它们键入(以类似于几乎所有其他文本编辑器的方式).
问题
我最初的想法是使用Key Listener手动实现这种包装,但我想知道是否有更好的方法/不同的组件可以更容易地实现这个功能?