小编Ste*_*aly的帖子

GCC使用-D参数定义类似函数的宏

问题

我在尝试将其发送到解析器之前__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)

c macros gcc command-line-arguments c-preprocessor

10
推荐指数
1
解决办法
2548
查看次数

DDD域模型复杂验证

我正在使用域驱动设计原则重写我的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)

然而,这似乎......错了.让我的实体依赖于我的存储库似乎是一个坏主意(如果我错了,请纠正我).但是在实体中使用验证代码是有道理的.放置复杂验证码的最佳位置在哪里?

c# validation asp.net-mvc domain-driven-design

9
推荐指数
3
解决办法
4098
查看次数

每个请求都有AntiForgeryToken更改

我正在使用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保护有根本的误解吗?或者这是一个新功能?

.net c# security asp.net-mvc csrf

8
推荐指数
1
解决办法
6487
查看次数

在Android中处理方向变化的正确方法

在Android中处理方向更改的正确方法是什么?当我研究这个问题时,出现了两种方法.

第一种方法 使用这些方法,onSaveInstanceState(Bundle savedInstanceState)onRestoreInstanceState(Bundle savedInstanceState)在方向更改后被Android操作系统杀死后存储和恢复您的活动.

第二种方法 添加android:configChanges="orientation|keyboardHidden"到AndroidManifest.xml中,以便在更改方向时不会销毁Activity.

我已经尝试了两种方法,但它们都有效,但是第一种方法需要花费更长的时间来实现.虽然我确实看到有关第二种方法的帖子,但我想知道这是否是一种"接受"和"正确"处理方向更改的方式.每种方法的优点和缺点是什么?谢谢!

java user-interface android orientation

7
推荐指数
1
解决办法
512
查看次数

存储视频文件的SQL中的BLOB

我希望有人可以解释如何使用BLOB.我看到BLOB可用于存储视频文件.我的问题是为什么一个人将视频文件存储在SQL数据库的BLOB中?与将指针存储到视频文件的位置相比有哪些优缺点?

sql oracle blob

7
推荐指数
1
解决办法
2443
查看次数

Openpyxl Unicode 值

我正在使用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行为的原因吗?难道我做错了什么?

python unicode openpyxl

7
推荐指数
2
解决办法
4758
查看次数

实体框架查询多对多关系

我有一个数据库,其中用户可以属于多个角色,角色可以有多个权限.这两种关系都很多.我想要查询并生成用户具有的重新发送列表.我试图通过查询Roles表来查看用户所属的角色,然后我想查询并查看每个角色包含的不同权限.但是我似乎无法让LINQ正确.

var permissions = RoleRepository.Get()
    .Where(x => x.Users.Contains(user))
    .Select(x => x.Permissions);
Run Code Online (Sandbox Code Playgroud)

上面的代码给了我一个权限列表列表,我只想要一个权限列表.无论如何(在LINQ中)采用所有这些列表的联合?或者有更好的方法来实现这一目标吗?

.net c# sql-server many-to-many entity-framework

6
推荐指数
1
解决办法
2087
查看次数

C#Automapper忽略属性时为空

我正在创建我的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)

.net c# asp.net-mvc automapper

5
推荐指数
1
解决办法
4349
查看次数

我的实体模型中是否应该有外键列?

我将从实体框架转到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)

c# nhibernate fluent-nhibernate

5
推荐指数
1
解决办法
995
查看次数

实体框架约束导航属性

我想限制由导航属性返回的模型.例如,我使用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)?

.net c# sql sql-server entity-framework

4
推荐指数
1
解决办法
1805
查看次数