问题
我在尝试将其发送到解析器之前__attribute__从我的C代码中删除.有没有办法使用-D参数定义类似函数的宏?
解决方案使用头文件
#define __attribute__(x)
Run Code Online (Sandbox Code Playgroud)
试图解决方案
gcc -E -D__attribute__(x)= testfile.c
gcc -E -D__attribute__(x) testfile.c
Run Code Online (Sandbox Code Playgroud) 我正在使用域驱动设计原则重写我的ASP.NET MVC应用程序.我正在尝试验证我的用户实体.到目前为止,我能够验证基本规则(例如用户名和密码是非null /空格字符串).但是其中一条规则,我需要确保用户名是唯一的.但是我需要访问数据库才能执行此操作,这意味着我必须将IUserRepository注入我的User实体中.
public class User
{
private readonly IUserRepository _userRepository;
public User(IUserRepository repo)
{
_userRepository = repo;
}
public override void Validate()
{
//Basic validation code
if (string.IsNullOrEmpty(Username))
throw new ValidationException("Username can not be a null or whitespace characters");
if (string.IsNullOrEmpty(Password))
throw new ValidationException("Password can not be a null or whitespace characters");
//Complex validation code
var user = _userRepository.GetUserByUsername(Username);
if (user != null && user.id != id)
throw new ValidationException("Username must be unique")
}
}
Run Code Online (Sandbox Code Playgroud)
然而,这似乎......错了.让我的实体依赖于我的存储库似乎是一个坏主意(如果我错了,请纠正我).但是在实体中使用验证代码是有道理的.放置复杂验证码的最佳位置在哪里?
我正在使用AntiForgeryToken帮助方法.根据我对AntiForgeryToken的理解,它是会话库,因此每个用户都有相同的令牌,但另一个用户将拥有不同的令牌(前提是您对所有表单使用相同的盐).我的"问题"是AntiForgeryToken为具有相同盐的同一用户生成不同的令牌.例如 ...
位指示
public ActionResult Test()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
视图
@using (Html.BeginForm())
{
@Html.AntiForgeryToken("Salty!")
}
Run Code Online (Sandbox Code Playgroud)
输出请求#1
<input name="__RequestVerificationToken" type="hidden" value="K1sijFuYvyGUJjGg33OnLjJaU3tFpGFDutRt9TOFSkZ6FcrhJMMQPnOqjIHuTwBXs/sPBXEiE+1qyV9l63nnSO161b+OtLbaBoPC7K3/7wxtnuSY+N0o/fqBgVoDyac4dNVp+OvanKBSrHINKfc3WEg9269BHOJNzFowC6Aeac/afAGTGrBypxUHfqrKVowD" />
Run Code Online (Sandbox Code Playgroud)
输出请求#2
<input name="__RequestVerificationToken" type="hidden" value="mOpP6LMQXnCmjr5/Wdtnhguh3PyZxWj7GWf8LYzZXPKcJBBT+DbAHvynquSD65O0DBw1RKR7DxCNg372ukftCOWms+o75CraMyFMnvjGk7RU+znIQm05eRQvr5H6d/MDyn+0DWm3jLnMBM9GplsgMRqbdAHzSe69/cS2x9A4X/9jFTZQHUWXXHUr0xewF8Rk" />
Run Code Online (Sandbox Code Playgroud)
对于具有相同盐的相同会话,键是不同的.我对CRSF保护有根本的误解吗?或者这是一个新功能?
在Android中处理方向更改的正确方法是什么?当我研究这个问题时,出现了两种方法.
第一种方法
使用这些方法,onSaveInstanceState(Bundle savedInstanceState)并onRestoreInstanceState(Bundle savedInstanceState)在方向更改后被Android操作系统杀死后存储和恢复您的活动.
第二种方法
添加android:configChanges="orientation|keyboardHidden"到AndroidManifest.xml中,以便在更改方向时不会销毁Activity.
我已经尝试了两种方法,但它们都有效,但是第一种方法需要花费更长的时间来实现.虽然我确实看到有关第二种方法的帖子,但我想知道这是否是一种"接受"和"正确"处理方向更改的方式.每种方法的优点和缺点是什么?谢谢!
我希望有人可以解释如何使用BLOB.我看到BLOB可用于存储视频文件.我的问题是为什么一个人将视频文件存储在SQL数据库的BLOB中?与将指针存储到视频文件的位置相比有哪些优缺点?
我正在使用openpyxl从 Excel 电子表格中读取单元格值。其中一个单元格的值由换行符分隔。我想使用换行符作为分隔符来分割字符串。然而,似乎openpyxl是将回车序列化为非标准格式。看看下面的例子。
代码
import openpyxl
# Open the worksheet
wb = openpyxl.load_workbook(wb_path)
ws = wb.get_sheet_by_name("testing")
# Get the string value
tests_str = ws.cell(row = row, column = column).value
# Split text on newlines and add them to the list
tests = []
for test in tests_str.splitlines():
tests.append(test)
Run Code Online (Sandbox Code Playgroud)
输出
>>> tests_str
u'Test1_x000D_\nTest2_x000D_\nTest3_x000D_'
>>> tests
[u'Test1_x000D_', u'Test2_x000D_', u'Test3_x000D_']
Run Code Online (Sandbox Code Playgroud)
openpyxl似乎正在将\r字符序列化,_x000D_这就是为什么splitlines()不将其作为换行符删除的原因。有这样的openpyxl行为的原因吗?难道我做错了什么?
我有一个数据库,其中用户可以属于多个角色,角色可以有多个权限.这两种关系都很多.我想要查询并生成用户具有的重新发送列表.我试图通过查询Roles表来查看用户所属的角色,然后我想查询并查看每个角色包含的不同权限.但是我似乎无法让LINQ正确.
var permissions = RoleRepository.Get()
.Where(x => x.Users.Contains(user))
.Select(x => x.Permissions);
Run Code Online (Sandbox Code Playgroud)
上面的代码给了我一个权限列表列表,我只想要一个权限列表.无论如何(在LINQ中)采用所有这些列表的联合?或者有更好的方法来实现这一目标吗?
我正在创建我的AccountEditViewModel(用于编辑用户的视图模型)和我的User(表示数据库中的用户的数据模型)之间的Automapper映射.如果填写了密码字段,我想加密该密码并存储它,但如果它在我想要保留旧密码时为空.我已经尝试过下面的代码但是它错了,model.Ignore()不返回字符串值.解决这个问题的最佳方式是什么?我可以使用该ForMember()方法完成此操作还是需要自定义解析程序?
Mapper.CreateMap<AccountEditViewModel, User>()
.ForMember(model => model.Password, model => model.MapFrom(user => user.Password != null ? EncryptPassword(user.Password) : model.Ignore()));
Run Code Online (Sandbox Code Playgroud) 我将从实体框架转到NHibernate.在查看如何创建我的域实体时,我注意到在某些示例中,它们不包含外键关系的列.由于Session该类包含一个Load()方法,因此可以在不使用数据库而不是主键的情况下使用对象.这是NHibernate中构造实体模型时的常规做法.
示例实体
public class BlogPost : Entity
{
public virtual string Name { get; set; }
//Should this be here
public virtual int AuthorID { get; set; }
public virtual Author Author { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
创建实体
BlogPost post = new BlogPost
{
Name = "My first post",
Author = session.Load<Author>(1) //Avoids hitting the database
};
session.Save(post);
Run Code Online (Sandbox Code Playgroud)
- 要么 - -
BlogPost post = new BlogPost
{
Name = "My first post",
AuthorID = 1 …Run Code Online (Sandbox Code Playgroud) 我想限制由导航属性返回的模型.例如,我使用AuditInfo模型来记录模型的活动.删除模型后DeletedBy,Deleted将设置和属性.但是,由于数据库中没有任何内容真正"删除",因此这些模型仍将填充在其他模型引用的导航属性中.
AuditInfo类
public class AuditInfo
{
[Key]
public int AuditInfoID { get; set; }
//Other attributes
public string DeletedBy { get; set; }
public DateTime? Deleted { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
具有导航属性的类
public class BlogPost
{
//Other attributes
//Only return Comment where Comment.AuditInfo.Deleted is NULL
public virtual IList<Comment> Comments { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
正在审核的类
public class Comment
{
//Other attributes
public int AuditInfoID { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如何设置约束,以便只从BlogPost.Comments中删除未删除的注释(Comment.AuditInfo.Deleted为NULL)?
c# ×6
.net ×4
asp.net-mvc ×3
sql ×2
sql-server ×2
android ×1
automapper ×1
blob ×1
c ×1
csrf ×1
gcc ×1
java ×1
macros ×1
many-to-many ×1
nhibernate ×1
openpyxl ×1
oracle ×1
orientation ×1
python ×1
security ×1
unicode ×1
validation ×1