我在尝试将嵌套条件映射到直观界面时遇到了麻烦.
例如.你将如何表示((条件1和条件2)或(条件1和条件5))和条件4
有人知道用于控制简单坦克式车辆运动的公式吗?
要"操纵"它,你需要改变施加左右"轮子"的力.例如.两个车轮上的1个单位的力使其前进.两个车轮上的-1个单位的力使其向后移动.对一个轮子施加的力比另一个轮子更大,然后转动.
您如何计算两个车轮所需的力量,以便将油箱转向一定程度的度数?
或者我是以错误的方式思考这个问题?
编辑:威廉凯勒提到我错过了坦克的速度.假设两个车轮上的1个单位的力以每秒1个单位向前移动油箱.
对于任何有兴趣的人,我只是在gamedev.net上找到了这个帖子:http://66.102.9.104/search?q = cache:wSn5t58ACJwJ:www.gamedev.net/community/forum/topic.asp%3Ftopic_id%3D407491+tank +轨道+半径+速度&HL = EN&CT = clnk和CD = 1&GL = ZA&客户=火狐-一个
另一个主题是:http://www.physicsforums.com/showthread.php? t = 220317
事实证明找到公式的关键只是知道正确的术语("滑行转向"):P
我们有一个服务,根据用户名和密码处理授权.我们将其放在SOAP标头中,而不是将用户名和密码作为调用的一部分.
在典型的场景中,Web Service在执行开始时调用Authorization服务以检查是否允许调用者调用它.问题是这些Web服务中的一些相互调用,这意味着在每个子调用中都会检查用户的权限,这可能非常昂贵.
我想做的是让授权服务在第一次调用后返回安全令牌.然后,Web Service可以在本地验证安全标头,而不必每次都调用授权服务.
安全标题看起来像这样(C#代码 - 修剪以说明基本概念):
public sealed class SecurityHeader : SoapHeader
{
public string UserId; // Encrypted
public string Password; // Encrypted; Just realized this field isn't necessary [thanks CJP]
public DateTime TimeStamp; // Used for calculating header Expiry
public string SecurityToken;
}
Run Code Online (Sandbox Code Playgroud)
一般的想法是每次调用都会检查SecurityHeader.如果它存在,但尚未过期,并且SecurityToken有效,则Web方法将正常进行.否则它将返回错误,或者它将尝试重新授权并生成新的SecurityHeader
SecurityToken基于UserId,Password和TimeStamp的盐渍哈希.每天更换盐以防止重放.
我看到的一个问题是用户可能有权访问Web服务A,但不能访问Web服务B.如果他调用A并收到安全令牌,就像现在一样,这意味着如果他使用B将让他通过同样的道理.我必须更改它,以便安全令牌仅在从Web服务到Web服务,而不是用户到Web服务,即.如果用户调用A调用B,则应该没有问题,但如果用户调用服务A然后调用服务D则不行.解决方法是将公共密钥(或一组密钥)分配给逻辑相关的服务.(即如果客户可以做A,那么逻辑上他也可以做B).
或者,我必须将用户的整个权限集编码为安全头的一部分.我将不得不调查开销是多少.
编辑:
有几个人提到了其他安全方案,比如WS-Security和SAML等.我已经有了.事实上,我从WS-Security那里得到了这个想法.问题是其他方案不提供我需要的功能(缓存授权信息并防止在没有中间数据库的情况下重放).如果有人知道一个方案,那么我会用它来替代它.此外,这不是关于身份验证.这是由我无法控制的另一种机制处理的.
如果事实证明无法缓存授权数据,那么这意味着我只需要承担每个级别的授权开销.
我们有一个项目列表及其状态的活动.当用户单击该项目时,将启动另一个活动,用户可以在其中执行更改该项目状态的某些任务.当活动完成并且前一个活动恢复时,将从数据库中查询项目及其状态并列出(查询基本上执行计数(*),因此它应该找到刚刚插入的记录).
问题是有些用户报告有时项目没有更新,所以他们回去再次执行任务导致重复交易,这在正常情况下是不可能的(我们可以从服务器上的数据确认这一点) .
出于某种原因,我根本无法复制行为(在实际的设备和模拟器上).但是我们知道由于用户反馈和我们收到的数据,查询返回旧数据.根据我的估计,它发生在大约3%的时间.
这是否与SQLite设置有关,或者我们的代码中是否有错误?
这基本上是代码的作用:
// Insert new record
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
processContentForDeviceStock(contentValues, object);
db.insert("table", null, contentValues);
db.close();
new AlertDialog.Builder(
CurrentActivity.this)
.setTitle("Success")
.setMessage("Insert succesful")
.setPositiveButton("OK",
new OnClickListener() {
@Override
public void onClick(
DialogInterface dialog,
int which) {
setResult(RESULT_OK);
// We are done, go back to the previous activity
finish();
}
}).create().show();
Run Code Online (Sandbox Code Playgroud)
List活动恢复时:
SQLiteDatabase db = this.getReadableDatabase();
Cursor res = db.rawQuery(listQuery, null);
res.moveToFirst();
while(!res.isAfterLast()) {
// Build our item list
/*
...
*/
res.moveToNext(); …Run Code Online (Sandbox Code Playgroud) 在以下代码的ContainsIngredients方法中,是否可以缓存p.Ingredients值而不是多次显式引用它?这是我刚熟了用于说明目的相当简单的例子,但我工作的引用代码值深处p如.p.InnerObject.ExpensiveMethod().值
编辑:我正在使用来自http://www.albahari.com/nutshell/predicatebuilder.html的PredicateBuilder
public class IngredientBag
{
private readonly Dictionary<string, string> _ingredients = new Dictionary<string, string>();
public void Add(string type, string name)
{
_ingredients.Add(type, name);
}
public string Get(string type)
{
return _ingredients[type];
}
public bool Contains(string type)
{
return _ingredients.ContainsKey(type);
}
}
public class Potion
{
public IngredientBag Ingredients { get; private set;}
public string Name {get; private set;}
public Potion(string name) : this(name, null)
{
}
public Potion(string name, IngredientBag ingredients)
{ …Run Code Online (Sandbox Code Playgroud) 我现在使用的算法很快就会遇到极高的数字.算法中的一步我将x提升到应用于y的totient函数的结果.结果是你可能遇到很大的数字.
例如.当计算10模数53 的乘法顺序时:
10^totient(53) == 10^52 == 1 * 10^52
Run Code Online (Sandbox Code Playgroud)
以下算法在避免大数量方面表现更好,但在10 ^ mOrder大于数据类型容量的情况下仍然失败:
mOrder = 1
while 10^mOrder % 53 != 1
if mOrder >= i
mOrder = 0;
break
else
mOrder = mOrder + 1
Run Code Online (Sandbox Code Playgroud) 我有这两个问题:
SELECT SELECT NamesRecord.NameID, NamesRecord.FulfillmentAddressID NameFulfillmentAddressID, ContractRecord.FulfillmentAddressID, ContractRecord.BillingAddressId
FROM Magnet.dbo.ContractRecord ContractRecord
INNER JOIN Magnet.dbo.NamesRecord NamesRecord
ON NamesRecord.NameId = ContractRecord.DonorId
WHERE NameID > -1
AND (EXISTS (
SELECT 1
FROM Magnet.dbo.AddressRecord AddressRecord
WHERE AddressRecord.AddressId = ContractRecord.FulfillmentAddressId
AND BuildingFloor LIKE 'M%')
OR EXISTS (
SELECT 1
FROM Magnet.dbo.AddressRecord AddressRecord
WHERE AddressRecord.AddressId = ContractRecord.BillingAddressId
AND BuildingFloor LIKE 'M%'))
SELECT SELECT NamesRecord.NameID, NamesRecord.FulfillmentAddressID NameFulfillmentAddressID, ContractRecord.FulfillmentAddressID, ContractRecord.BillingAddressId
FROM Magnet.dbo.ContractRecord ContractRecord
INNER JOIN Magnet.dbo.NamesRecord NamesRecord
ON NamesRecord.NameId = ContractRecord.DonorId
WHERE NameID > -1
AND (EXISTS (SELECT …Run Code Online (Sandbox Code Playgroud) 我想将一个窗口过程分配给一个窗口类结构:
var wndClass : WNDCLASS;
wndClass.lpszClassName = CLASSNAME;
wndClass.lpfnWndProc = WndProc;
wndClass.hInstance = hInstance;
Run Code Online (Sandbox Code Playgroud)
我还不能分配 WndProc,因为它还没有被声明。当我使用前向声明(此处描述)时:
proc WndProc(hWnd: HWND; msg: WINUINT; wParam: WPARAM; lParam: LPARAM) : LRESULT
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
Error: type mismatch: got (None) but expected 'WNDPROC'
Run Code Online (Sandbox Code Playgroud)
我的前向声明是错误的,还是在这种情况下我必须先编写函数?
编辑:
作为参考,以下代码适用于全局范围:
proc Foo : int32;
var bar = Foo();
var baz = Foo;
echo bar;
echo baz();
proc Foo : int32 =
return 4;
Run Code Online (Sandbox Code Playgroud)
WNDCLASS 和 WNDPROC 的定义可以在这里找到:http ://nim-lang.org/windows.html
即使在WCF服务的虚拟目录上启用了匿名访问并且禁用了集成身份验证,我仍然会收到错误:
HTTP请求未经授权,客户端身份验证方案为"匿名".从服务器收到的身份验证标头是"Negotiate,NTLM".
这就是客户端绑定配置的安全性定义如下所示:
<security mode="Transport">
<transport clientCredentialType="None" proxyCredentialType="None" realm="" />
<message clientCredentialType="None" negotiateServiceCredential="false" />
</security>
Run Code Online (Sandbox Code Playgroud)
和端点定义:
<endpoint address="https://url.com/Service.svc"
binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IService"
contract="IService" name="WSHttpBinding_IService">
<identity>
<servicePrincipalName value="spn" />
</identity>
</endpoint>
Run Code Online (Sandbox Code Playgroud)
我已经尝试过添加:
client.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
Run Code Online (Sandbox Code Playgroud)
但它似乎没有任何影响.
我需要更改IIS上的某些内容吗?
[编辑]
服务配置:
<behaviors>
<endpointBehaviors>
<behavior name="defaultBehavior"/>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="metadataSupport">
<serviceMetadata httpsGetEnabled="true" httpsGetUrl=""/>
<useRequestHeadersForMetadataAddress>
<defaultPorts>
<add scheme="https" port="443" />
</defaultPorts>
</useRequestHeadersForMetadataAddress>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="ServiceLibrary.Service"
behaviorConfiguration="metadataSupport">
<endpoint address=""
binding="wsHttpBinding"
bindingConfiguration="wsSecureBinding"
contract="ServiceLibrary.IService"/>
<endpoint address="mex"
binding="wsHttpBinding"
bindingConfiguration="wsSecureBinding"
name="mexHttps"
contract="IMetadataExchange" />
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name="wsSecureBinding"> …Run Code Online (Sandbox Code Playgroud) 如何验证使用Moq调用"CallWithRef"方法?
public interface ITest
{
void CallWithoutRef(string value, List<string> errors);
void CallWithRef(string value, ref List<string> errors);
}
public class Foo
{
private ITest testInterface;
public Foo(ITest testInterface)
{
this.testInterface = testInterface;
}
public void DoStuff(string value)
{
var errorList = new List<string>();
testInterface.CallWithoutRef(value, errorList);
testInterface.CallWithRef(value, ref errorList);
}
}
[TestMethod]
public void VerifyTestInterfaceCalls()
{
var expectedValue = Path.GetRandomFileName();
var mockTestInterface = new Mock<ITest>();
var foo = new Foo(mockTestInterface.Object);
foo.DoStuff(expectedValue);
mockTestInterface.Verify(x => x.CallWithoutRef(expectedValue, It.IsAny<List<string>>()));
// Test fails here:
var errorList = …Run Code Online (Sandbox Code Playgroud)