我正在用c ++和python制作一个游戏引擎.我正在使用OGRE进行3D渲染,OpenAL用于声音,ODE用于物理,OIS用于输入,HawkNL用于网络,boost.python用于嵌入式python解释器.每个子系统(库)都由一个类 - 管理器包装,每个管理器都是单例.现在,我有一个类 - 对象 - 这可能是游戏世界中的每个可见对象.这是某种混合,对象具有图形表示(实体)和物理模拟器中的表示(实体).这两个在这里最重要.Class Object只是纯粹的抽象基类 - 接口.我决定在客户端实现Object作为ObjectClientSide - 这个实现有实体,在服务器端有ObjectServerSide - 这个实现有实体.物理模拟器仅在服务器上运行,当然,渲染只在客户端完成.只有当两个实现一起工作时,该对象才能存在.每个对象都有唯一的id,客户端和服务器端的同一对象的两个实例都具有相同的id.
所以,在这短暂的背景之后,我的第一个问题是:这个设计好吗?我怎样才能让它变得更好?主要问题是:我应该如何同步这些对象?
接下来,两个实现都具有相同的接口,但其中一部分在服务器端实现,部分在客户端实现.因此,例如,如果玩家想要向前移动他的角色,他应该向服务器上的对象发送请求.然后,服务器对模拟进行更改,并将更新的位置发送给客户端.出于这个原因,我创建了小消息框架.从Rule继承的Message类,路由器,规则和规则.当消息到达时,路由器会根据规则对其进行检查并将其发送到目的地.因此,当我调用myObjectInstanceOnClientSide-> setPosition(x,y,z)时,此对象创建Message,其内容是函数,参数和destination是服务器上具有相同id的对象.当服务器端具有相同id的对象获得此消息时,它将使用给定的参数调用此函数.所以,当一个功能可以' 在一方面实现它创建一条消息并将其发送到另一方的对象.我认为这在脚本中非常有用.脚本可以非常干净,如果脚本需要例如在客户端上打开动画,我只需要在服务器的本地对象上调用此函数 - 其余部分在后台.
那么,这样可以吗?我错了吗?这个常见的解决方案?
我目前正在尝试使用urllib2和urllib2_file库启动文件上传.这是我的代码:
import sys
import urllib2_file
import urllib2
URL='http://aquate.us/upload.php'
d = [('uploaded', open(sys.argv[1:]))]
req = urllib2.Request(URL, d)
u = urllib2.urlopen(req)
print u.read()
Run Code Online (Sandbox Code Playgroud)
我已将此.py文件放在我的"我的文档"目录中,并在"发送到"文件夹中放置了一个快捷方式(快捷方式URL为).
当我右键单击一个文件时,选择Send To,然后选择Aquate(我的python),它会打开命令提示符一瞬间然后关闭它.什么都没上传.
我知道可能发生了错误,因此我逐行将代码输入到CL python中.当我跑u=urllib2.urlopen(req)线时,我没有得到错误;
替代文字http://www.aquate.us/u/55245858877937182052.jpg
相反,光标只是在该行下方的新行上开始闪烁.我等了几分钟,看看是否会发生什么事,但它就像那样.为了让它停止,我不得不按ctrl + break.
这个脚本有什么用?
提前致谢!
[编辑]忘了提 - 当我在没有请求数据(文件)的情况下运行脚本时,它就像魅力一样运行.这是urllib2_file的问题吗?
[编辑2]:
import MultipartPostHandler, urllib2, cookielib,sys
import win32clipboard as w
cookies = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookies),MultipartPostHandler.MultipartPostHandler)
params = {"uploaded" : open("c:/cfoot.js") }
a=opener.open("http://www.aquate.us/upload.php", params)
text = a.read()
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardText(text)
w.CloseClipboard()
Run Code Online (Sandbox Code Playgroud)
如果您通过命令行运行它,该代码就像一个魅力.
以下面的示例类为例.我想在表单上显示客户和两个地址(来自LIST).MVC beta中的模型绑定器是支持这个还是我必须编写自己的自定义绑定器?
public class Customer
{
public string FirstName { get; set; }
public string LastName { get; set; }
public List<Address> Addresses { get; set; }
public Customer()
{
Addresses = new List<Address>();
}
}
public class Address
{
public int Line1 { get; set; }
public int Line2 { get; set; }
public int City { get; set; }
public int State { get; set; }
public int Zip { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
你会如何编码字段?像这样?
<!-- some HTML …Run Code Online (Sandbox Code Playgroud) 我看起来很熟悉GWT,并且喜欢我可以用Java开发并将应用程序编译成HTML和JavaScript的想法.GWT和AWT和Swing背后的概念是相同还是不同?
我最近在" 你更有争议的编程意见是什么 "中发布了我最喜欢的采访白板编码问题之一,即编写一个使用Leibniz公式计算Pi的函数.
它可以通过多种不同的方式进行处理,退出条件需要一些思考,所以我认为它可能会成为一个有趣的代码高尔夫问题.最短的代码获胜!
假设Pi可以使用函数4*(1 - 1/3 + 1/5 - 1/7 + ...)估算,更多项更精确,可以编写一个函数来计算Pi到0.00001以内.
编辑:2008年1月3日
正如评论中所建议的那样,我将退出条件更改为0.00001,因为这就是我的真实含义(由于四舍五入,精确度小数点后五位更难,所以我不想在面试中问这个,而在0.00001以内是更容易理解和实现退出条件).
另外,为了回答评论,我想我的意图是解决方案应该计算迭代次数,或检查它何时做得足够多,但没有什么可以阻止你预先计算迭代次数并使用该数字.我真的有兴趣问这个问题,看看人们会想出什么.
我想使用MS Visual C#Express构建的应用程序(如果需要,我愿意升级到标准版)需要数据库.
我对SQL Server Compact感到很兴奋 - 因为我不希望那些将在他们的计算机上安装我的应用程序的人必须安装整个SQL Server或类似的东西.我希望这对最终用户来说尽可能简单.
所以我很兴奋,直到看起来我的表格中的列可以做什么有限.我创建了一个新的数据库,创建一个表,当我去创建列似乎没有一个"文本"数据类型 - 只是一些所谓的"NTEXT"似乎被限制为255个字符."int"似乎限于4(我想要11).并且似乎没有"auto_increment"功能.
这些是我必须忍受的真正限制吗?(或者是因为我使用的是"Express"而不是"Standard").如果这些是真正的限制,那么我的其他数据库选项满足我的要求是什么?(用户是biggie的简易安装 - 我假设我的最终用户只是计算机的普通用户,如果它很复杂会让我的应用程序感到沮丧)
-Adeena
PS:我还希望将我的数据库数据加密到最终用户.我不希望他们能够直接访问数据库表.
PPS.我读过:http: //www.microsoft.com/Sqlserver/2005/en/us/compact.aspx 并没有看到关于这些特殊限制的讨论
在我的bash脚本中,我有一个外部(从用户接收)字符串,我应该在sed模式中使用它.
REPLACE="<funny characters here>"
sed "s/KEYWORD/$REPLACE/g"
Run Code Online (Sandbox Code Playgroud)
如何逃避$REPLACE字符串,以便sed作为文字替代品安全地接受?
注意:这KEYWORD是一个没有匹配等的哑子串.它不是由用户提供的.
在Oracle SQL Developer中,查看表时可以使用“数据”选项卡列出表中的数据。还有一个“排序...”按钮,用于设置您正在查看的数据的排序顺序。这对于即时查看某些数据非常方便。
问题:我设置了查看特定表的排序顺序,该表不支持该表的索引。当您查看数据时,SQL Developer似乎会即时进行排序。起初,延迟还算不错。但是桌子已经扩大了,现在需要永远。除强制退出SQL Developer并丢失所有未保存的内容外,没有其他方法可以停止它。(如果您知道另一种停止这种排序的方法,请告诉我!)因此,我应该将查看排序顺序更改为其他排序方式,但是您只能在查看数据时访问“排序...”按钮。
除了查看数据之外,还有其他方法可以删除查看排序顺序吗?
SQL Developer在哪里存储此信息?
在等待数据出现时单击“数据”选项卡后,有什么方法可以停止对数据进行排序?
我有一个PHP应用程序,在客户端广泛使用Javascript.我在PHP方面有一个简单的系统,为翻译人员提供了一种提供新语言的简便方法.但是有些情况下javascript需要向用户显示语言元素(可能是OK或取消按钮或"加载"等).
使用PHP,我只有一个缓存在服务器端的文本文件,其中一面包含短语代码,另一面包含翻译.翻译者只需要用他们自己的语言替换英语,并将我翻译的翻译版本发送给应用程序.
我想在客户端做类似的事情.我想到有一个javascript包含只是一组已翻译的常量但随后每个页面加载都会下载一个可能很大的文件,其中大部分都是不必要的.
有没有人不得不处理这个?如果是这样,你的解决方案是什么?
编辑:要清楚,我不是指这里的"即时"翻译.翻译已经准备好并准备好了,我只需要以有效的方式向客户提供这些翻译.
python ×2
asp.net-mvc ×1
awt ×1
c++ ×1
code-golf ×1
database ×1
datepicker ×1
escaping ×1
gwt ×1
iphone ×1
java ×1
javascript ×1
modelbinder ×1
oop ×1
oracle ×1
post ×1
sed ×1
sql-server ×1
string ×1
swing ×1
translation ×1
upload ×1
urllib2 ×1