这是一个(n)历史问题,而不是语言之间的比较问题:
这篇2005年的文章谈到了缺乏单一的Python中心框架.对于Ruby,这个框架显然是Rails.从历史上看,为什么这样做会发生在Ruby而不是Python?(或者它确实发生了,那个框架是Django?)
此外,假设性问题:如果Python有一个好的框架,它会更受欢迎吗?如果没有中央框架,Ruby会不那么受欢迎吗?
[请避免讨论Ruby或Python是否更好,这是太开放无法回答.]
编辑:虽然我认为这是显而易见的,但我并不是说Ruby不存在其他框架,而是说流行程度最大的是Rails.另外,我应该提一下,我并不是说Python的框架不如Rails好(或比Rails好).每个框架都有其优点和缺点,但Rails似乎正如Ben Blank在下面的评论中所说的那样,在人气方面超过了Ruby.在Python方面没有这方面的例子.为什么?这就是问题所在.
当对话框本身调整大小时,我很难在自动调整QDialog中获取小部件.
在以下程序中,如果您调整主窗口的大小,textarea会自动调整大小.但是,在调整对话框大小时,对话框中的textarea保持相同的大小.
有没有办法让对话框中的textarea自动调整大小?我尝试过使用setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored)对话框本身和内部的两个小部件,但这似乎没有任何效果.
我在openSuSE 10.2上使用Qt版本3.3.7和PyQt版本3.5.5-29,如果这是相关的.
import sys
from qt import *
# The numbers 1 to 1000 as a string.
NUMBERS = ("%d " * 1000) % (tuple(range(1,1001)))
# Add a textarea containing the numbers 1 to 1000 to the given
# QWidget.
def addTextArea(parent, size):
textbox = QTextEdit(parent)
textbox.setReadOnly(True)
textbox.setMinimumSize(QSize(size, size*0.75))
textbox.setText(NUMBERS)
class TestDialog(QDialog):
def __init__(self,parent=None):
QDialog.__init__(self,parent)
self.setCaption("Dialog")
everything = QVBox(self)
addTextArea(everything, 400)
everything.resize(everything.sizeHint())
class TestMainWindow(QMainWindow):
def __init__(self,parent=None):
QMainWindow.__init__(self,parent)
self.setCaption("Main Window")
everything = QVBox(self)
addTextArea(everything, 800) …Run Code Online (Sandbox Code Playgroud) 我有一个使用WCF服务的应用程序.现在我想将单元测试添加到应用程序中.
在某些情况下,我需要模拟WCF服务,因为从服务中获取所需的行为有时很困难(例如,服务抛出特殊异常).
我可以添加另一个接口到wcf客户端,但这看起来有点傻,因为客户端调用已经在使用接口.
有一种简单的方法来模拟WCF服务吗?比创建另一个接口层并重定向其中的每个WCF调用更容易?
编辑:大多数答案似乎不太了解WCF服务使用,所以一些澄清:
要使用ViewModel的WCF服务,我必须管理这样的连接:
ChannelFactory<IMyWcfService> channelFactory = new ChannelFactory<IMyWcfService>("");
IMyWcfService proxy = channelFactory.CreateChannel();
proxy.CallMyStuff();
proxy.Close();
Run Code Online (Sandbox Code Playgroud)
我不能只将代理的ViewModel传递给WCF,因为需要为每个事务打开和关闭连接.因此,使用RhinoMock/NMock不起作用,因为它们需要一个ViewModel来获取代理作为参数,如果您使用WCF,则不能这样做.
我可能在这里遗漏了一些简单的东西,但我在其他地方找不到答案.我只是想在我的GWT代码中显示一个applet.
操作系统:Windows XP Java:JDK 1.6.0_10其他:GWT,GWT-Ext 2.0.5
这是applet(显然简化了测试):
package foo.applet;
import javax.swing.JApplet;
import java.awt.Graphics;
public class HelloApplet extends JApplet
{
public void paint(Graphics g)
{
g.drawRect(0, 0,
getSize().width - 1,
getSize().height - 1);
g.drawString("Hello world!", 5, 15);
}
}
Run Code Online (Sandbox Code Playgroud)
这是调用它的代码:
package foo.applet;
import com.google.gwt.user.client.ui.HTML;
import com.gwtext.client.widgets.Panel;
public class AppletPanel extends Panel
{
Run Code Online (Sandbox Code Playgroud)
public AppletPanel()
{
HTML applet = new HTML();
applet.setHTML("<applet name=\"HelloApplet\" code=\"HelloApplet.class\" width=\"300\" height=\"300\"" );
this.add(applet);
}
Run Code Online (Sandbox Code Playgroud)
}
当我以托管模式启动应用程序时,jvm崩溃(与Sun提交事件1425130).
当我尝试编译GWT代码以在浏览器中运行时,我得到:
[ERROR] Errors in 'file:/C:/<blah>/applet/HelloApplet.java'
[ERROR] Line 3: The import javax.swing …Run Code Online (Sandbox Code Playgroud) 如何将我的整个PostgreSql数据库放入RAM以便更快地访问?我有8GB内存,我想为数据库专用2 GB.我已经阅读了有关共享缓冲区设置的信息,但它只是缓存了数据库中访问最多的片段.我需要一个解决方案,将整个数据库放入RAM中,任何读操作都会从RAM DB中进行,任何写操作都会首先写入RAM DB,然后写入硬盘驱动器上的DB.(有些像默认的fsync =在postgresql配置设置中使用共享缓冲区).
我有一个Java应用程序,我开始使用它
java -jar myapp.jar
要停止它我使用CTRL + C.
现在我需要将该应用程序转换为我可以开始的东西:
/etc/init.d/myapp start
我可以停下来:
/etc/init.d/myapp停止
问题是关于保存过程的PID,我想我在某处看到了这样做的一个方法,我不记得在哪里,我无法找到它.
我看到有一个名为Java Server Wrapper的项目,但我寻找一些不限制内存使用的免费软件.我认为这项工作可以在一个bash脚本中完成.
我们有一个带有varchar2(100)列的表,偶尔包含回车符和换行符.我们想要删除SQL查询中的那些字符.我们正在使用:
REPLACE( col_name, CHR(10) )
Run Code Online (Sandbox Code Playgroud)
具有没有效果,然而替换"CHR(10)"的更常规的"字母"字符证明REPLACE功能工作否则.我们也发现了
REPLACE( col_name, CHR(10), '_' )
Run Code Online (Sandbox Code Playgroud)
找到换行符的位置,但在其后插入下划线,而不是替换它.
在Oracle8i上运行.升级不是一种选择.
我从各种各样的地方听说全局变量本质上是讨厌和邪恶的,但是当做一些非面向对象的Javascript时,我看不出如何避免它们.假设我有一个使用随机数和东西使用复杂算法生成数字的函数,但我需要在其他函数中继续使用该特定数字,这是一个回调或其他函数,因此不能成为同一函数的一部分.
如果最初生成的数字是局部变量,那么就无法访问它.如果函数是对象方法,我可以将数字作为属性,但它们不是,并且看起来有点过于复杂,以改变整个程序结构来执行此操作.全局变量真的如此糟糕吗?
我们正在寻找一种在构建中自动包含某种构建ID的方法.这需要是可移植的(VC++,Linux和Mac上的g ++)和自动.VC++是最重要的,因为在其他环境中我们使用自定义Python构建脚本,所以我可以做任何我想做的事情.
我们使用SVN,所以我们正在考虑使用svnversion的输出将修订写入标题并包含它.这有问题:如果我们把文件放在SVN中,它每次都会显示为修改,但它会是一个多余的提交,从某种意义上说会产生一个增加修订的无限循环.如果我们不将文件放在SVN中并仅将其创建为预构建步骤,则源将不完整,因为它们需要预构建步骤或Makefile来生成该文件.
我们也可以使用,__DATE__但我们不能保证在__DATE__修改其他文件的情况下编译使用的文件(即将其写入日志文件) - 除非我们"触摸"它,但是我们会导致项目总是过时的.我们可以将它作为预构建步骤触摸,因此只有在项目的其余部分已过时才会触及它,因此不会导致虚假编译,但如果VC++ 在预构建步骤之前计算依赖关系,则不会工作(文件__DATE__不会被编译)
任何有趣的想法?
python ×3
java ×2
.net ×1
applet ×1
c++ ×1
curses ×1
daemon ×1
frameworks ×1
gwt ×1
gwt-ext ×1
history ×1
javascript ×1
mocking ×1
oracle ×1
performance ×1
postgresql ×1
pyqt ×1
qdialog ×1
qt ×1
ram ×1
ruby ×1
service ×1
sql ×1
svn ×1
sysv ×1
unit-testing ×1
visual-c++ ×1
wcf ×1