我的组织目前主要基于SQL Server 2005/2008后端,Java模型/控制器框架和基于ColdFusion的视图提供Web应用程序.我们决定转换到一个更新的框架,在内部探索和迷你项目缩小了Python和C#/ .NET之间的选择之后.
首先我要说的是,我意识到这两种技术都会很有效,并且正在寻找关键的差异化因素(以及相关的优缺点) 这些语言有很多共同之处,而且很多都没有 - 我正在寻找你的需求关于他们的关键差异.
示例权衡/差异化我正在寻找:
虽然看起来你可以用更少的代码完成更多的工作,并且在Python中更具创造性,但由于.NET结构更加结构化,因此接管其他人所写的代码可能更容易理解和修改.
一些可能有用的额外信息:
我们的工程团队大约有20个,我们在5-7个小团队中工作,我们经常轮流进出人员.我们处理代码,其他人写的代码和编写新代码一样多.
使用python,我们将使用Django路由,使用.NET,我们将使用MVC2.我们的服务器是运行IIS的Windows服务器.
我们喜欢ColdFusion的一些内容包括它非常容易使用查询,我们可以"修改"热修复到我们的Web服务器,而无需重新启动或中断任何人.
我已经阅读了涉及这两种语言的其他一些X和Y线程并发现它们非常有用,但是想直接将Python与.Net直接对抗.在此先感谢您让我体验这个难题!
gcc 4.4.4 c89
将字符串转换为整数值更好.
我尝试了两种不同的方法atoi和sscanf.两者都按预期工作.
char digits[3] = "34";
int device_num = 0;
if(sscanf(digits, "%d", &device_num) == EOF) {
fprintf(stderr, "WARNING: Incorrect value for device\n");
return FALSE;
}
Run Code Online (Sandbox Code Playgroud)
或使用atoi
device_num = atoi(digits);
Run Code Online (Sandbox Code Playgroud)
我认为sscanf会更好,因为你可以检查错误.但是,atoi没有做任何检查.
使用ASP.net MVC v2.0,有什么方法可以更改__RequestVerificationTokencookie 的名称?为了隐藏我们的底层技术堆栈,我想将cookie重命名为无法追溯到ASP.Net MVC的东西.
有关Steve Sanderson博客的更多信息.
我正在尝试向Solr查询在字段中具有特定值或该字段没有值的条目.否定字段值在单独使用时有效,但会导致查询在与其他任何内容组合时不返回任何结果.下面是启用debugQuery的响应.我使用的配置文件可以在这里找到.
<?xml version="1.0"?>
<response>
<responseHeader>
<status>0</status>
<QTime>3</QTime>
<lst name="params">
<str name="facet">true</str>
<str name="sort">sort_title asc</str>
<str name="fl">id,nid,url,uid</str>
<str name="debugQuery">true</str>
<str name="facet.mincount">1</str>
<str name="facet.sort">true</str>
<str name="start">0</str>
<str name="bf">recip(rord(created),4.000000,239,239)^200.000000</str>
<arr name="fq">
<str>NOT type:article</str>
<str>NOT type:insect</str>
<str>NOT type:news</str>
<str>NOT type:plant</str>
<str>im_cck_field_affected_plants:(20 OR -[* TO *])</str>
<str>entity:node</str>
</arr>
<str name="version">1.2</str>
<str name="rows">16</str>
</lst>
</responseHeader>
<result name="response" numFound="0" start="0"/>
<lst name="facet_counts">
<lst name="facet_queries"/>
<lst name="facet_fields"/>
<lst name="facet_dates"/>
</lst>
<lst name="debug">
<null name="rawquerystring"/>
<null name="querystring"/>
<str name="parsedquery">+MatchAllDocsQuery(*:*) FunctionQuery((239.0/(4.0*float(top(rord(created)))+239.0))^200.0)</str>
<str name="parsedquery_toString">+*:* (239.0/(4.0*float(top(rord(created)))+239.0))^200.0</str>
<lst name="explain"/>
<str name="QParser">DisMaxQParser</str> …Run Code Online (Sandbox Code Playgroud) 目前我正在开发一个使用物理引擎的简单游戏(Farseer for XNA).
我想问一下如何制作这个角色让他可以在地面上行走,在平台上跳跃而不会自行旋转.
因为我需要更新身体位置和旋转,因为它是一个物理对象,所以它会像通常那样自行旋转.
任何人都知道如何解决它?
我开始利用.Net 4.0中的可选参数
我遇到的问题是当我尝试声明System.Drawing.Color的可选参数时:
public myObject(int foo, string bar, Color rgb = Color.Transparent)
{
// ....
}
Run Code Online (Sandbox Code Playgroud)
我希望Color.Transparent是rgb参数的默认值.问题是,我一直得到这个编译错误:
'rgb'的默认参数值必须是编译时常量
如果我只能将原始类型用于可选参数,那么它真的会杀死我的计划.
在Rails 3中使用Monkey Patch的首选方法是什么?
我只想在String类中添加一个方法.我更关注文件的放置位置.
我有一个无环有向图。我想为每个顶点分配级别,以确保如果边(v1,v2)在图中,则level(v1)> level(v2)。每当(v1,v2)和(v3,v2)在图中时,如果level(v1)= level(v3),我也希望它。同样,可能的级别是离散的(也可以将它们取为自然数)。理想的情况是,每当(v1,v2)在图中并且没有从v1到v2的其他路径时,level(v1)= level(v2)+1,但是有时在其他约束条件下是不可能的-例如,考虑在五个顶点为边(a,b)(b,d)(d,e)(a,c)(c,e)的图中。
有谁知道一个体面的算法来解决这个问题?我的图很小(| V | <= 25左右),所以我不需要快速进行操作-简单性更为重要。
到目前为止,我的想法是只找到一个最小元素,将其分配为0级,找到所有父级,将它们分配为1级,并通过在适当的顶点上添加+0.5来解决矛盾,但这似乎很糟糕。
另外,我感觉删除所有“隐式”边缘可能会有所帮助(即,如果图形同时包含(v1,v2)和(v2,v3),则删除(v1,v3)。
如果我走
variable1 =+ variable2
variable1 += variable2
Run Code Online (Sandbox Code Playgroud)
我得到了与variable1相同的结果.
那有什么区别吗?
这个问题一直困扰着我一段时间.我对其中一些模式仍然很新,所以如果我错误地使用任何一个术语,你将不得不原谅我(并纠正我).
我的方法论
我创建了一个游戏引擎.我的游戏引擎中的所有对象都使用控制反转来获取依赖关系.这些依赖项都实现了协议,除了在引导阶段之外,永远不会直接在项目中访问.为了获得这些对象,我有一个服务定位器的概念.服务定位器的工作是找到符合特定协议的对象并将其返回.它很像工厂,但它也应该处理依赖关系.
为了向服务定位器提供服务,我有所谓的服务说明符.服务定位器知道项目中的所有服务说明符,并且在请求对象时,尝试从每个服务中获取符合所提供协议的对象实例.然后将此对象返回给调用者.这个设置的好处是服务说明符也知道服务定位器,所以如果它有任何依赖关系,它只是向服务定位器询问这些特定的依赖关系.
举个例子,我有一个名为HighScoreManager的对象.HighScoreManager实现了PHighScoreManager协议.在任何时候如果需要PHighScoreManager的实例,可以通过调用以下方法检索它:
id<PHighScoreManager> highScoreManager = [ServiceLocator resolve: @protocol(PHighScoreManager)];
Run Code Online (Sandbox Code Playgroud)
因此,控制倒置.但是,大多数情况下甚至不需要这样做,因为大多数类都位于服务说明符中,如果需要PHighScoreManager作为依赖项,则通过服务定位器检索它.因此,我有一个很好的平面控制反转方法.
我的问题
因为我希望共享我的游戏引擎中的代码,所以我将它编译为静态库.这对其他一切都很棒,但似乎对服务定位器有点棘手.问题是一些服务在游戏到游戏的基础上发生了变化.在我上面的例子中,一个游戏中的得分可能是一个时间,而另一个游戏中的得分可能是积分.因此,HighScoreManager依赖于PHighScoreCreator的一个实例,它告诉它如何创建PScore目标.
为了向HighScoreManager提供PHighScoreCreator,我需要为我的游戏提供服务说明符.我能想到的唯一方法是使用Cocoa版本的反射.在挖掘之后,我发现通过NSBundle可以发现类,但似乎没有办法获得当前的包.因此,如果我想能够搜索我的服务说明符,我将必须将我的游戏逻辑编译到它自己的包中,然后让引擎搜索这个包并加载它.为了做到这一点,我必须创建第三个项目来容纳引擎代码和游戏逻辑包,实际上我想要一个使用引擎静态库的游戏项目.
我的真实问题
毕竟,我的问题是
感谢您的帮助并花时间阅读问题.
-helixed
cocoa objective-c inversion-of-control service-locator nsbundle