像这些选项:
Usage is: mono [options] program [program-options]
Development:
--aot Compiles the assembly to native code
--debug[=] Enable debugging support, use --help-debug for details
--profile[=profiler] Runs in profiling mode with the specified profiler module
--trace[=EXPR] Enable tracing, use --help-trace for details
--help-devel Shows more options available to developers
Runtime:
--config FILE Loads FILE as the Mono config
--verbose, -v Increases the verbosity level
--help, -h Show usage information
--version, -V Show version information
--runtime=VERSION Use the VERSION runtime, instead of autodetecting … 如果我有一个程序创建并尝试使用mkfifo打开命名管道,如何打开管道进行读取或写入而不阻塞?
具体来说,我正在编写一个可以使用或不使用gui(用Java编写)运行的C程序.
在C程序中,我使用mkfifo成功创建了命名管道,但是当我这样做时
FILE* in = fopen(PIPE_IN, "r"); /* Where PIPE_IN is the filename*/
Run Code Online (Sandbox Code Playgroud)
在GUI打开该管道进行写入之前,fopen不会返回.我想做的是让管道准备好被读取一次(如果)GUI决定写入它 - 我将把文件描述符放在select()调用中.期望java GUI可能永远不会真正启动是合理的,所以我不能依赖它在任何特定点甚至根本不能打开管道的另一端.
我还将打开第二个管道进行写作,我想我会遇到同样的问题.此外,我不能在没有读卡器的输出管道上设置O_NONBLOCK.
有什么建议?
(这是在linux系统上运行的)
我有一个表单,用户可以在其中输入他们在电话帐单上花费的金额,然后告诉他们如果他们切换到vonage,skype等可以节省多少钱.
我在网址中传递值"$ monthlybill",然后对其进行一些数学计算.问题是,如果用户在表单中写入"$ 5"而不是"5",则会中断并且不会将其识别为数字.如何从价值中剥离美元符号?
我在VB6程序中使用ssTab控件(这可能是我的整个问题),我正在将数据绘制到位于选项卡0上的Picturebox中.当我重绘图形时(例如,在窗口调整大小之后),第一个我做的是清除方框:
Picture2.Line (0, 0)-(Picture2.Width, Picture2.Height), RGB(255, 255, 255), BF
Run Code Online (Sandbox Code Playgroud)
当Tab 0可见时,该工作正常,但如果在显示不同的选项卡时调用此代码,则整个可见选项卡(以及选项卡0)的背景将变为白色.不仅仅是Picture2的区域,而是两个标签的整个可见区域.除0以外的选项卡和当前选定的选项卡不受影响.
我第一次粗略地解决这个问题的方法是在上面的Line命令之前将标签更改回标签0:
SSTab1.Tab = 0 ' Select tab containing PictureBox2
DoEvents
Run Code Online (Sandbox Code Playgroud)
但是得到了相同的结果 - 原始标签和0标签现在都是白色的(尽管它确实将可见标签更改回标签0).
我注意到,当发生wallpainting时,Picture2.Width的值比它应该的大.如果Tab 0可见,当我调整窗口大小时,Picture2.Width在7180和21225 Twips之间变化.当我选择Tab 1并调整大小时,Picture2.Width大约为82180(高度保持在应有的位置).
我知道SStab有点儿马车,但有没有人知道任何工作方式?我可以将修复(在重绘后重新绘制两个选项卡上的灰色背景)整合在一起,但我想了解为什么Picture2.Width失去理智......
在我的Apache 2配置中,我有一个VirtualHost看起来像这样的东西:
<VirtualHost *:80>
ServerName sub.domain.com
# username:password sent on to endpoint
RequestHeader set Authorization "Basic dXNlcm5hbWU6cGFzc3dvcmQ=="
ProxyPass /xyz http://192.168.1.253:8080/endpoint
ProxyPassReverse /xyz http://192.168.1.253:8080/endpoint
<Location /xyz>
# This needs to let users through under the following circumstances
# * They are in 192.168.1.0/24
# * They have a valid user in a htpasswd file
# So what goes here?
</Location>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我正在使用虚拟主机作为网络上另一台服务器(我称之为端点)的反向代理.
我试图找出一种配置,允许网络内部的用户sub.domain.com自动为端点提供服务.但是,应提示网络外的用户提供凭据
端点需要一个我使用RequestHeader(我想要的)隐藏的密码.外部用户的密码应该是不同的,需要是BasicAuth,从htpasswd文件中获取用户列表.
我写了一个简单的物理建模器,它允许我在屏幕周围弹跳球.您可以单击并拖动以启动球,或者您可以一次生成数百个球并观察它们彼此交互.
alt text http://i41.tinypic.com/2zr0oic.png
[链接到更大的版本]
这是一个很有趣的小程序,如果可以的话,我想进一步研究它.我知道他们说早熟优化是所有邪恶的根源,但我开始遇到实际的性能障碍,我想知道是否有任何有游戏/模拟器开发经验的人可以帮助我.
问题:
现在,如果你添加太多球(我的机器上似乎无法处理超过800个),我的程序就会窒息.如果这样做,模拟不再现实,并且所有球在底部彼此重叠.
问题在于碰撞检测.在最天真的情况下,碰撞检测是O(N ^ 2)问题.每个球都会检查每一个球.这很快就会导致性能下降(即使在100个球之后,你也会在每个循环周期进行10k次碰撞检查).
如果你看这里,你可以看到我添加了几百个球的截图.模拟器无法跟上,它们开始相互重叠.
alt text http://i41.tinypic.com/2nsnuqd.png
[链接到更大的版本]
目前,我通过寻找重叠球来检测碰撞.如果我找到两个重叠的球,我将它们按最小平移距离(MTD)分开,或将它们分开.然后,我使用一个简单的物理方程来调整它们的脉冲矢量,然后在碰撞后它们向不同的方向移动.
它的效果很好,除非有太多的球,最小的平移距离变得明显.它们开始大量重叠并且不断地在底部互相挤压.我越是"增加"引力就越糟糕.它们上的压力增加,它们被压缩/相互重叠的量增加.
再说一次,我没有问题,直到我击中了相当数量的N球.
当前优化方法:
碰撞检测 -
扫描和修剪 - (又称排序和扫描)
我在我的球上使用插入排序,每个循环沿x轴循环.由于插入排序的性质,我可以利用我的模拟器的时间一致性.框架到框架,球的位置只是稍微改变,因此排序没有太多工作要做.这使得线性分类分摊运行时间为O(N)或线性而不是其平均运行时间O(N ^ 2).
由于球是排序的,我在检查碰撞之前在第二个循环中做了几次预检查.现在我只需要检查彼此附近的球(因为它们沿着x轴排序),并且当我检查球与另一个球的xmin大于当前球的xmax时,我会突破第二个循环.所以它跳过了成千上万的支票.
当我实现这一点时,它带来了巨大的速度提升.但是,我仍然希望能够处理超过600-800个球.我已经阅读过物理引擎,可以轻松地同时处理10k个物体之间的碰撞检测,所以我想我可以通过一点点工作达到1-2k.
在运行了一个分析器之后,碰巧检测器占用了大约55%的时间,而渲染器占用了大约45%.所以,这是我最昂贵的两个成本.
题:
你能想到任何更好的算法或技术,让我的模拟器能够处理更多的球吗?
相关守则:
整个项目:
svn checkout http://simucal-projects.googlecode.com/svn/ballbounce/trunk/
或者,单击此处在浏览器中手动浏览文件.
感兴趣的部分:
我正在努力建立一个Java B2B网络服务的客户端,我想我已经确定了我们已经存在一段时间的问题的原因.不幸的是我无法发布WSDL.
显然,我的自动生成的代理代码(通过wsdl.exe:由于WCF不支持密码摘要而必须使用WSE 3.0)无法处理具有多个具有相同复杂返回类型的Web方法的Web服务的WSDL.
举例来说 - 一个定义以下方法的Web服务:
Public ComplexTypeX Blah();
Public ComplexTypeX Blue();
Public ComplexTypeX Foo();
Public ComplexTypeY Bar();
Run Code Online (Sandbox Code Playgroud)
在我的Reference.cs文件中,如果我注释掉调用Blah(),Blue()或Foo()中任意两个的所有代码,那么剩余的未注释方法可以被调用没有问题.但是,如果我没有注释掉这三种方法中的一种(比如Blah()和Foo()),那么在实例化 Web服务客户端代码时我会收到以下错误消息:
"Blah方法无法反映出来." "命名空间' http://some.url '中的XML元素'ComplexTypeX' 引用方法和类型.使用WebMethodAttribute更改方法的消息名称,或使用XmlRootAttribute更改类型的根元素."
现在,肯定没有任何ComplexTypeX方法被定义为Web服务的一部分,所以我只能假设.NET(或至少wsdl.exe)不允许您使用返回复杂(用户定义)的Web服务多种方法中相同类型的类型......对吗?
我今天遇到了这个Perl构造:
@foo = split("\n", $bar);
Run Code Online (Sandbox Code Playgroud)
这适用于将大型字符串拆分为UNIX类型行结尾的行数组,但为Windows留下了尾随\ r \n.所以我改成了:
@foo = split("\r?\n", $bar);
Run Code Online (Sandbox Code Playgroud)
其中逐行拆分字符串并且不留下尾随\ r \n(在ActivePerl 5.8下测试).然后有人向我指出,这应该是:
@foo = split(/\r?\n/, $bar);
Run Code Online (Sandbox Code Playgroud)
那么为什么第二种变体会起作用呢?双引号意味着评估内容,这就是为什么\ r和\n实际上被视为CR和LF,但是?被视为正则表达式元字符而不是文字问号.
正则表达式周围的斜杠是split()的可选项吗?是否假设函数的第一个参数是正则表达式?
我想使用.NET WebBrowser控件设置TextArea的值.
我已经能够使用以下代码设置文本框的值(将"username"替换为texbox的名称):
webBrowser1.Document.All.GetElementsByName("username")[0].SetAttribute("Value", "SomeUser");
Run Code Online (Sandbox Code Playgroud)
我尝试在TextArea上使用类似的代码(使用GetElementById)并且无法记住TextArea输入类型不包含"Value"属性.我还尝试设置TextArea的InnerHtml和InnerText,但在尝试设置TextArea输入的值时,编译器继续抛出空引用异常错误或索引超出范围错误.
有没有人知道如何使用WebBrowser控件在TextArea中设置文本?任何建议将不胜感激!
我有一组多态对象,都来自我的Animal类:Cat,Dog和MonkeyFish.
我通常的操作模式是将这些对象存储在Animal指针的向量中,如下所示:
std :: vector <Animal*> my_vector;
my_vector.push_back( new Animal_Cat() ); my_vector.push_back( new Animal_Dog() ); my_vector.push_back( new Animal_MonkeyFish() );
生活很美好......或者是它?
我最近被告知我应该尽量避免以这种方式分配内存,因为它使内存管理成为一件苦差事.当我需要销毁my_vector时,我必须遍历所有元素并删除所有内容.
我不认为我可以存储引用的向量(我可能错了),所以看起来存储Animal对象的向量是我唯一的选择.
我什么时候应该选择使用指针向量与对象向量?一般来说,哪种方法更可取?(我想尽可能减少对象复制.)