我有一个使用 DynamoDB 的应用程序,我注意到他们刚刚实现了很棒的自动缩放。我喜欢这个概念,我的应用程序的时机非常完美。但是,我仍然遇到一些问题,我想知道我是否无法调整设置以将其删除。
我的应用程序的使用量明显激增,因此我认为这是一个理想的使用方法,但是在启用自动缩放后,我仍然会遇到一些限制。这是我过去 12 小时的阅读图表:
正如您所看到的,当它达到峰值时,使用率设置得很低,所以它会限制一两分钟,直到更新开始,然后才能工作。我想这没关系,而且比不缩放要好,但我希望它根本不节流......
有什么方法可以告诉 DynamoDB 永远不要节流,除非它超过 100(或 200 或我设置的任何上限)?只是如果它出现激增将吞吐量提高 15 分钟或其他什么直到激增结束?
我正在尝试开始使用 Amazon CloudSearch。我的数据位于我想要搜索的 DynamoDB 表中。我能够设置云搜索域,它从表中提取字段并让我设置它们,等等。但是,我上传数据时遇到了一些问题。我告诉它要从中提取 DynamoDB 表,它会提取数据并告诉我它找到了这些项目,我按下了导入按钮,但它给了我关于需要至少一个字段并且需要有一个非空 id 的错误。
我下载了它试图上传的文档列表,并且我看到这个(或类似的)在整个文档中经常重复:
{
"type": "add",
"id": "null",
"fields": {
}
},
{
"type": "add",
"id": "null",
"fields": {
"libraries": "721409e7-5fca-495d-a625-a5bc5f4a0434~d8ccd611-ae75-418b-91a3-13dd57d46934",
"shadecolor": "170-98-104",
"objecttype": "20",
"timestamp": "2017-01-25T22:43:53.672Z"
}
},
Run Code Online (Sandbox Code Playgroud)
显然,我可以看到其中一个文档的 id 为空,根本没有字段,而另一个文档有字段但没有 id,这似乎是问题所在。但是我不知道这些数据来自哪里以及为什么生成它。该 ID 是我的 DynamoDB 哈希键,因此它不能为空,否则 Dynamo 不会接受它。我查看了我的 Dynamo 数据,但找不到任何类似的数据......
有人可以告诉我这里可能发生了什么以及处理它以将我的数据导入 CloudSearch 的最佳方法吗?
好吧,我认为我们有一个在 Forge 中运行的 DA for Revit 应用程序,但下一个问题是如何支持多个 Revit 版本,但我找不到大量相关文档。这是我的理解(或者我认为无论如何)以及我的问题:
每个应用程序包和活动只能定义一个引擎,因此您似乎需要为每个受支持的 Revit 版本创建一个包,并为每个 Revit 版本创建一个相关活动。对此的疑问:
应用程序包通过其 ID 引用。大多数示例将 ID 显示为“DeleteWallsApp”或其他类似内容。但是,如果您确实需要多个 Revit 版本的多个应用程序包,那么您是否真的想要使用“DeleteWallsApp2018”和“DeleteWallsApp2020”等 ID?您不能拥有多个相同的 ID,因此这似乎是最相关的方法。它是否正确?
捆绑包和活动也通过其别名进行引用。如果我理解它们是用于测试与生产代码等的开发/登台/生产别名。如果是这样,是否建议每个包都使用这些别名?
这似乎有很多东西需要上传到很多不同的地方,但我想如果你使系统自动化,这也不算太糟糕。我只是想确保我没有遗漏结构的某些部分。
我的问题与此类似:WPF生成TextBlock内联,但我没有足够的声誉来评论.这是附加的属性类:
public class Attached
{
public static readonly DependencyProperty FormattedTextProperty = DependencyProperty.RegisterAttached(
"FormattedText",
typeof(string),
typeof(TextBlock),
new FrameworkPropertyMetadata(string.Empty, FrameworkPropertyMetadataOptions.AffectsMeasure));
public static void SetFormattedText(DependencyObject textBlock, string value)
{
textBlock.SetValue(FormattedTextProperty, value);
}
public static string GetFormattedText(DependencyObject textBlock)
{
return (string)textBlock.GetValue(FormattedTextProperty);
}
private static void FormattedTextPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
var textBlock = d as TextBlock;
if (textBlock == null)
{
return;
}
var formattedText = (string)e.NewValue ?? string.Empty;
formattedText = string.Format("<Span xml:space=\"preserve\" xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\">{0}</Span>", formattedText);
textBlock.Inlines.Clear();
using (var xmlReader = XmlReader.Create(new StringReader(formattedText))) …
Run Code Online (Sandbox Code Playgroud) 我有一个拥有Windows 10的用户,并且说他们的映射驱动器没有专门出现在一台机器上而且只出现在我的程序中.我使用标准的Microsoft.Win32.OpenFileDialog来允许用户浏览到要打开的文件.在这台机器上,他们给我发了一个屏幕截图,其中有一个Windows资源管理器窗口打开,显示映射的驱动器就好了,然后我的程序中的打开对话框根本没有显示它们(同时).真奇怪的是,他们网络上的其他机器没有相同的问题,他们也在我的程序中显示驱动器.
我不确定从哪里开始这个.我用谷歌搜索了它,但没有发现任何东西; 我也在这里搜索过,但没有找到任何东西.有没有人知道是否有一些模糊的设置或可能导致它不显示映射驱动器的东西?
我在WPF中使用内置的拼写检查程序.它工作得很好,直到我让用户开始升级到Windows 10 ...我认为问题在于它被用于许多小文本框.我的应用程序提供了一个网格(Telerik的TreeListView),其中包含我想要拼写检查的其中一列的文本框.我需要能够为拼写检查器提供自定义词典; 我能够做到这一点的唯一方法是订阅文本框加载的事件并添加路径,如下所示:
TextBox tb = sender as TextBox;
tb.ContextMenu = ctx_Spell;
IList dcts = SpellCheck.GetCustomDictionaries(tb);
dictsList.Add(dcts);
if (KMApplication.Settings.UserDictionary != null)
{ dcts.Add(KMApplication.Settings.UserDictionary); }
foreach (Uri dct in KMApplication.Settings.RevitDictonaries)
{ dcts.Add(dct); }
Run Code Online (Sandbox Code Playgroud)
当然,这称为每个文本框的添加,这看起来非常浪费,但它似乎工作得很好,几乎没有明显的滞后,只有加载.但是现在在Windows 10上似乎是一个荒谬的滞后.在我的Windows 8.1机器上,我加载了几千行的文件,它出现在大约3或4秒内; 在我的Windows 10盒子上,它出现在大约10-15分钟.如果我注释掉上面代码的自定义词典部分,那么它在任一台机器上都会恢复大约3-4秒.
有谁知道更好的方法吗?或者如果在Win10中有某种方法?
好了,所以我一直在阅读了大量和最好的方式工作使用async methods
和task
,等我相信我(主要)了解它,但我要检查,以确保.
我确实开始async wrappers
使用同步任务,Task.Run()
但最近读到,只有拥有一个sync method
并让应用程序确定是否需要通过使用Task.Run()
自身将其推送到另一个线程更好,这是有道理的.但是,我也读过这个例外是自然而然的async functions
.我不知道我完全理解"自然异步",但作为一个基本的了解似乎.NET框架的方法,提供async methods
的naturally async
和WebClient.DownloadFile/DownlodFileAsync
是其中之一.
所以我有两种方法,如果有人愿意提供反馈,我想测试我的理解,并确保这是正确的.
方法一是在本地操作系统上移动一些文件,看起来像这样(伪代码):
Public static void MoveStagingToCache()
{
...do some file move, copy, delete operations...
}
Run Code Online (Sandbox Code Playgroud)
第二个看起来像这样(伪代码):
Public static void DownloadToCache()
{
...do some analysis to get download locations...
using (var wc = new WebClient())
{
wc.DownloadFile(new Uri(content.Url), targetPath);
}
...do other stuff...
}
Run Code Online (Sandbox Code Playgroud)
所以我的理解如下.第一种方法应保持原样,因为没有文件操作方法具有async versions
,因此不太可能async
.调用者只需调用MoveStagingToCache()
运行同步或调用Task.Run(()=>MoveStagingToCache()) …
c# ×3
windows-10 ×2
wpf ×2
.net ×1
async-await ×1
mvvm ×1
textblock ×1
textbox ×1
throughput ×1
webclient ×1
windows ×1
winforms ×1
xaml ×1