小编Oxy*_*ron的帖子

审计日志的数据库设计

每次我需要设计一个新的数据库时,我都会花一些时间考虑如何设置数据库模式来保存更改的审核日志.

这里已经提出了一些问题,但我不同意所有场景都有一个最好的方法:

我还偶然发现了这篇关于维护数据库更改日志的有趣文章,该文章试图列出每种方法的优缺点.它写得很好并且有很多有趣的信息,但它使我的决定更加困难.

我的问题是:是否有一个我可以使用的参考,可能是一本书或类似决策树的东西,我可以参考决定我应该根据一些输入变量去哪种方式,例如:

  • 数据库模式的成熟度
  • 如何查询日志
  • 需要重新创建记录的概率
  • 更重要的是:写或读性能
  • 正在记录的值的性质(字符串,数字,blob)
  • 存储空间可用

我知道的方法是:

1.为创建和修改的日期和用户添加列

表格示例:

  • ID
  • _1
  • _2
  • VALUE_3
  • 创建日期
  • 修改日期
  • 由...制作
  • modified_by

主要缺点:我们失去了修改的历史.提交后无法回滚.

2.仅插入表格

表格示例:

  • ID
  • _1
  • _2
  • VALUE_3
  • 删除(布尔值)
  • 用户

主要缺点:如何保持外键最新?需要巨大的空间

3.为每个表创建单独的历史记录表

历史表示例:

  • ID
  • _1
  • _2
  • VALUE_3
  • VALUE_4
  • 用户
  • 删除(布尔值)
  • 时间戳

主要缺点:需要复制所有审计表.如果架构发生更改,则还需要迁移所有日志.

4.为所有表创建合并历史记录表

历史表示例:

  • TABLE_NAME
  • 领域
  • 用户
  • NEW_VALUE
  • 删除(布尔值)
  • 时间戳

主要缺点:如果需要,我能否轻松重建记录(回滚)?new_value列需要是一个巨大的字符串,因此它可以支持所有不同的列类型.

audit logging database-design

143
推荐指数
4
解决办法
8万
查看次数

System.Net.CertificatePolicy到ServerCertificateValidationCallback接受所有证书策略

我已经下载了一些有点过时的示例代码.它有以下几类:

public class TrustAllCertificatePolicy : System.Net.ICertificatePolicy
{
    public TrustAllCertificatePolicy()
    { }

    public bool CheckValidationResult(ServicePoint sp,
              System.Security.Cryptography.X509Certificates.X509Certificate cert,
              WebRequest req, 
              int problem)
    {
        return true;
    }
}
Run Code Online (Sandbox Code Playgroud)

稍后在代码中调用以下内容:

System.Net.ServicePointManager.CertificatePolicy = new TrustAllCertificatePolicy();
Run Code Online (Sandbox Code Playgroud)

它给出了以下警告:

警告1'System.Net.ServicePointManager.CertificatePolicy'已废弃:'CertificatePolicy已针对此类型废弃,请改用ServerCertificateValidationCallback.http://go.microsoft.com/fwlink/?linkid=14202 '

实现等效功能的当前程序是什么?

我在MSDN上看过一篇文章,但我不确定如何转换?这是一个类库.我道歉,如果我似乎没有研究这个,但是当涉及到ssl证书时,它有点超出了我的境界.任何帮助是极大的赞赏!

.net c# ssl-certificate x509certificate

11
推荐指数
1
解决办法
2万
查看次数

Elixir 脚本未完成

我尝试在 elixir 中实现 FizzBu​​zz。我认为它有效,但我有一些奇怪的行为,这可能是我的环境。我可以.exs使用以下文件运行,elixir fizzbuzz.exs并且在第一次运行时它可以按您的预期工作。即使在第二次运行时,它也会按您的预期工作。但是,如果我等待 7 或 8 秒并再次运行它,它会在 13 秒或 14 秒停止。它甚至可能达到 50 秒。我所经历的真的没有什么太一致的。我在第一次运行时复制了它,我在两次运行之间等待了两秒钟后复制了它。我什至走了几分钟却根本无法重现它。请帮我...

IO.puts "Hello world from Elixir"

defmodule Fizzbuzz do
  def run(max) do
    run(1, max)
  end

  def run(n, max) do
    if rem(n, 3) == 0 do
      IO.puts "FIZZ"
    end

    if rem(n, 5) == 0 do
      IO.puts "BUZZ"
    end

    if rem(n, 3) != 0 && rem(n, 5) != 0 do
      IO.puts n
    end

    if n < max do
      run(n + 1, max) …
Run Code Online (Sandbox Code Playgroud)

erlang elixir erlang-otp

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

Kotlin 暴露 - 没有标识列的表的实体

我可以在 Kotlin 公开库上找到的所有材料都假设该表有一个主标识列,因此在大多数示例中显示的实体继承了IntEntity抽象类。例如:

class UserLocation(id: EntityID<Int>) : IntEntity(id) {
    companion object : IntEntityClass<UserLocation>(UserLocations)

    var userId by UserLocations.userId
    var user by User referencedOn UserLocations.user
    var recordedAt by UserLocations.recordedAt
    var insertedAt by UserLocations.insertedAt
    var point by UserLocations.point
Run Code Online (Sandbox Code Playgroud)

这对应于这个表定义:

object UserLocations : IntIdTable("user_locations") {

    val userId = integer("user_id")
    val user = reference("user_id", Users)
    val recordedAt = datetime("recorded_at").nullable()
    val insertedAt = datetime("inserted_at")
    val point = point("point")
}
Run Code Online (Sandbox Code Playgroud)

问题是,我的表实际上没有标识列。我知道没有主键的表的所有负面影响,但不幸的是我只能读取该表。我无法获得对该表的写访问权以添加主键。

在公开库的 wiki 中,它提到对象表定义可以继承TableIntIdTable不是IntEntity.

我的问题:当表没有 id 列时,我的实体应该继承(而不是 …

sql postgresql primary-key kotlin kotlin-exposed

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

为 csproj 禁用发布配置

为什么我不能更改下图中显示的这些设置? CSProj 属性窗口显示禁用的配置文件

这是一个 clickOnce 应用程序,我的问题是我想通过发布路径、程序集名称、产品名称、安装 URL 进行更改,并根据构建配置执行一些 app.config 翻译。我可以通过像这样手动编辑 csproj 来实现这一点

<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
    <AssemblyName>someApplicationTest</AssemblyName>
    <ProductName>Some Application Test</ProductName>
    <PublishUrl>c:\publish\someApplicationTest\</PublishUrl>
    <InstallUrl>http://sub.example.com/someApplicationTest/</InstallUrl>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
    <AssemblyName>someApplication</AssemblyName>
    <ProductName>Some Application</ProductName>
    <PublishUrl>c:\publish\someApplication\</PublishUrl>
    <InstallUrl>http://sub.example.com/someApplication/</InstallUrl>
</PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

我只是很困惑为什么这些选项在 Visual Studio 中被禁用,以及我是否遗漏了什么。也许我很困惑,这些控件甚至不是为此目的而设计的。

此外,我将在稍后研究Squirrel.Windows作为替代方案,但现在我想了解更多相关信息。

c# clickonce publishing csproj visual-studio-2015

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

首先使用Entity Framework代码获取外键值

我有两个型号,一个用于设备类型,另一个用于设备问题.这里的关系是一个(DeviceType)到很多(DeviceIssues).以下是模型:

public class DeviceType : ModelBase
{
    public string Manufacture { get; set; }
    public DeviceTypes Type { get; set; }
    public string Model { get; set; }

    public virtual ICollection<DeviceIssue> Issues { get; set; }
}

public class DeviceIssue : ModelBase
{
    public string Description { get; set; }
    public decimal RepairCost { get; set; }

    public int DeviceTypeId { get; set; }
    public virtual DeviceType DeviceType { get; set; }
}

public abstract class ModelBase
{
    public int …
Run Code Online (Sandbox Code Playgroud)

c# database entity-framework ef-code-first

3
推荐指数
1
解决办法
7859
查看次数

如何计算googolplex

我很好奇,一个古戈尔普勒克斯是(10^10)^100(更正:10^(10^100))我要计算这个.我怎么能做到这一点?

C#使用以下代码时:

Console.WriteLine(Math.Pow(Math.Pow(10, 10), 100));

特别产生以下结果:

Infinity

在此输入图像描述

是,Math.Pow(Math.Pow(10, 10), 100)还是Math.Pow(10, Math.Pow(10, 100))googolplex?

我知道即使这样的事情可以计算(我确信它不在您的日常计算机上),它很可能需要无限的时间才能完成.

我真的需要更多...

c# math calculator

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

多个Foreach循环通过父母的孩子

处理此方案的最佳方法是什么

        foreach (var level1 in Levels.Where(l => l.PARENTID == 0))
        {
            // Print "LEVEL 1: Title"

            foreach (var level2 in Levels.Where(l => l.PARENTID == level1.ROOTID))
            {
                // Print "Level 2: Sub Title"

                foreach (var level3 in Levels.Where(l => l.PARENTID == level2.ROOTID))
                {
                    // Print "Level 3: Header"

                    ... etc ...
                }
            }
        }
Run Code Online (Sandbox Code Playgroud)

c# foreach parent-child

2
推荐指数
1
解决办法
1444
查看次数

向 C# winforms 控件添加徽章

用 CSS 编写时,我可以添加一类“徽章”并获得我想要的。按钮或选项卡附近的一个小数字,带有一些样式,以表明此控件具有需要审查的待处理信息。

甚至有一个帖子在这里,在有人试图做我想做的iOS上的

我想在 WinForms 上的按钮或选项卡上执行此操作。如果 WPF 中有更简单的解决方案,那么我可能会考虑使用它。

这是一张图像,显示了我想要实现的目标:

带有徽章的按钮和控件

.net c# winforms

2
推荐指数
1
解决办法
4329
查看次数