我们正在研究Terraform作为管理基础设施的一种方式,它看起来非常有趣.
但是,目前我们的公司代理/防火墙terraform apply
由于安全限制而导致失败.
在我们等待解决这些网络问题的同时,有什么方法可以在本地试验Terraform而无需连接到Azure或AWS?也许有Virtual Box?
我希望能够从F#中使用C#库.大多数情况下,这非常简单.但是,如果我尝试调用返回的函数,则Task<T>
无法获取返回值.
所以,我有C#方法,其定义如下:
public async Task<TEvent> ReadEventAsync<TEvent>(string streamName, int position) where TEvent: class
Run Code Online (Sandbox Code Playgroud)
我试图从F#中使用此方法,如下所示:
let readEventFromEventStore<'a when 'a : not struct> (eventStore:IEventStoreRepository) (streamName:string) (position:int) =
async {
return eventStore.ReadEventAsync(streamName, position)
|> Async.AwaitTask
}
Run Code Online (Sandbox Code Playgroud)
我部分地应用此函数与an的实例IEventStoreRepository
和我希望从以下位置检索事件的流名称:
let readEvent = readEventFromEventStore eventStore streamName
Run Code Online (Sandbox Code Playgroud)
然后,最后,我应用剩余的参数:
let event = readEvent StreamPosition.Start
Run Code Online (Sandbox Code Playgroud)
当我得到的值event
是一个FSharpAsync<object>
,而不是T
从Task<T>
我的预期.
调用async
C#编写的方法的F#中的正确方法是什么,返回类型为?Task<T>
并且访问T
?的值?
我第一次开始使用Entity Framework Code First,并且我们围绕域构建我们的绿地应用程序而不是关系数据库表(这是我多年来的工作方式)给我留下了深刻的印象.
因此,我们正在构建C#中的实体,每次我们进行新的迁移时都会反映在数据库中.
我的问题是:这些相同的实体(即设计时考虑到实体框架)是否应该与域驱动设计中的实体扮演相同的角色(即代表域的核心)?
我目前正试图通过将C#转换为MSIL命令来自学MSIL.
然而,在我认为我偶然发现的情况下,假设"推测值"被推送然后弹出并存储在局部变量列表中的"评估堆栈"只是引用分配给线程的堆栈的另一种方式在运行时.
阅读Eric Lippert 关于评估堆栈目的的回答清楚地表明它们不是同一个东西:
我假设您的意思是MSIL语言的评估堆栈,而不是运行时的实际每线程堆栈.
我的问题是:这两个堆栈之间的确切区别是什么?它们如何相关?
我已经开始考虑在 EventStore 中使用 Reactive Extensions。作为概念证明,我想看看我是否可以让 Rx 使用事件流并输出按类型分组的事件计数一秒钟的窗口。
因此,假设我正在使用名为“orders”的流,我希望在控制台中看到如下所示的内容:
OrderCreated 201
OrderUpdated 111
Run Code Online (Sandbox Code Playgroud)
(一秒钟过去了..)
OrderCreated 123
OrderUpdated 132
Run Code Online (Sandbox Code Playgroud)
等等。
到目前为止,我已经能够获得每秒所有事件计数的输出。但似乎无法按事件类型对它们进行分组。
我使用的代码基于James Nugent 的一个要点:
internal class EventStoreRxSubscription
{
public Subject<ResolvedEvent> ResolvedEvents { get; }
public Subject<SubscriptionDropReason> DroppedReasons { get; }
public EventStoreSubscription Subscription { get; }
public EventStoreRxSubscription(EventStoreSubscription subscription, Subject<ResolvedEvent> resolvedEvent, Subject<SubscriptionDropReason> droppedReasons)
{
Subscription = subscription;
ResolvedEvents = resolvedEvent;
DroppedReasons = droppedReasons;
}
}
static class EventStoreConnectionExtensions
{
public static Task<EventStoreRxSubscription> SubscribeTo(this IEventStoreConnection connection, string streamName, bool …
Run Code Online (Sandbox Code Playgroud) 在存储库中,由于自动对AssemblyInfo文件进行构建工具更新而导致大量提交(该项目位于C#中)。这些提交都具有“ Dev BuildAgent”作为作者。
有什么方法可以将存储库中的所有提交从特定作者压缩到另一个作者的第一个子文件夹中?
当然,一种可能性是git rebase --interactive
使用根提交的SHA 运行并手动浏览提交列表,并将squash命令手动应用于适当的提交。但是,记住存在大量提交,知道是否有一个更快的选择将很有用。
我使用 Bash 来处理 Git,并且使用 Git 和 Bash 别名的组合,能够为 git 状态执行诸如“g s”之类的命令。
安装 cmder 后,我可以为 git 设置别名。但是,我无法使用“g”别名执行 git 命令 - 我只是获得了 git 使用页面。我可以运行“git s”(所以它使用我的全局 gitconfig 文件作为 git 别名)。因此,通过 cmder 我可以访问它的别名以及 git 别名,但我似乎无法将它们一起使用。
使用 bash 我似乎没有问题。
我一直在F#*中尝试欧拉,目前我已经在#5了.我的问题是使用一个在管道操作中需要多个参数的函数.
此函数正确返回第一个参数是否可被第二个参数的数组的每个成员整除:
let isDivisibleBy seq n =
seq
|> Seq.forall (fun x -> n % x = 0)
isDivisibleBy [|1 .. 10|] 2520 //true
Run Code Online (Sandbox Code Playgroud)
但是,以下声明不起作用:
Seq.initInfinite
|> Seq.find isDivisibleBy [|1 .. 10|]
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
错误FS0001:类型'((int - >'c) - > seq <'c>) - >'d'与'seq <'a>'类型不兼容
*"2520是可以除以1到10之间的每个数字的最小数字,没有任何余数.可以被1到20的所有数字整除的最小正数是多少?"
能够在单个Terraform文件中捕获基础结构具有明显的好处。但是,我不清楚(例如,一旦创建了虚拟机)如何处理后续更新。
因此,提供了一个特定的方案。假设使用Terraform我们使用SQL Server 2014设置了一个Azure vm。然后,一个月后,我们决定我们要使用刚刚发布的SQL Server 2014的最新Service Pack更新该vm。
建议的做法是我们更新Terraform配置文件并重新应用它吗?
我有一个 .NET Windows 服务,用于将 SQL Server 数据库与 Oracle (11g) 数据库同步(这是手动完成的,因为第 3 方 Oracle 数据库中没有主键,并且我们无法使用 SQL Server 复制)。
我使用每行的 MD5 哈希来检查发布者和订阅者之间的差异,并尝试确保 SQL Server 和 Oracle 数据库的 MD5 函数的输入具有相同的格式,以便进行同类比较。因此,对于NUMBER
列(SQL Server 表中相应列中的“FLOAT”),我将值格式化如下:
甲骨文
select to_char(13.9, '000000000.00000000000000000000')
from dual;
Run Code Online (Sandbox Code Playgroud)
SQL服务器
select FORMAT(13.9, '000000000.00000000000000000000')
Run Code Online (Sandbox Code Playgroud)
这在大多数情况下都可以正常工作,但似乎在 Oracleto_char
函数的情况下,当列的值NUMBER
达到 10 位数字时,例如 1000000000(而不是 999999999),然后to_char
输出一串哈希符号:
###############################
这意味着对于某些值,Oracle 和 SQL Server 之间 MD5 函数的输入有所不同。
我可以做些什么来to_char
纠正这个问题吗?
c# ×2
f# ×2
git ×2
terraform ×2
.net ×1
architecture ×1
async-await ×1
asynchronous ×1
azure ×1
bash ×1
cil ×1
clr ×1
cmder ×1
entities ×1
eventstoredb ×1
oracle ×1
oracle11g ×1
rx.net ×1
sql ×1