这种语言真是奇怪.我正在尝试执行一个函数并将其结果值用作条件.这是我的代码:
function Get-Platform()
{
# Determine current Windows architecture (32/64 bit)
if ([System.Environment]::GetEnvironmentVariable("ProgramFiles(x86)") -ne $null)
{
echo "x64"
return "x64"
}
else
{
echo "x86"
return "x86"
}
}
if (Get-Platform -eq "x64")
{
echo "64 bit platform"
}
if (Get-Platform -eq "x86")
{
echo "32 bit platform"
}
Run Code Online (Sandbox Code Playgroud)
预期的输出是这样的:
x64
64 bit platform
Run Code Online (Sandbox Code Playgroud)
但实际输出是这样的:
64 bit platform
32 bit platform
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?怎么解决这个问题?我在网上找不到任何在if条件中使用函数的例子.在Powershell中,这有可能吗?我在Windows 7上没有特殊的设置,所以我有任何PS版本附带它.
我正在测量一些系统性能数据以将其存储在数据库中.从这些数据点我随着时间的推移绘制线图.就其性质而言,这些数据点有点嘈杂,即.每个点都偏离本地平均值至少一点.当直线从一个点绘制到下一个点时,它会产生锯齿状图形.在每个像素大于10个数据点的大时间尺度下,这种噪声被压缩成宽的锯齿状线区域,例如,20px高而不是1px,如在较小的比例中.
我已经阅读过有关线条平滑,抗锯齿,简化以及所有这些内容的内容.但我发现的一切似乎都与其他东西有关.
我不需要抗锯齿,.NET在屏幕上绘制线条时已经为我做了这个.
我不想简化.我需要极端值才能保持可见,至少大部分都是如此.
我认为它是在样条曲线的方向,但我找不到很多示例图像来评估所描述的东西是否是我想要的.我确实在谷歌图书上找到了一本高度科学的书,里面装满了半页长的公式,我现在还不喜欢这本书......
举个例子,看看Linux/Gnome的系统监视器应用程序.我使用平滑的线条绘制最近的CPU /内存/网络使用情况.这可能有点过于简单,但我会试一试,看看我是否可以调整它.
我更喜欢C#代码,但其他语言的算法或代码也很好,只要我可以在没有外部引用的情况下将其移植到C#.
我正在编写一个基于PHP的Web应用程序,它应该可以与多个数据库系统一起使用.最重要的是MySQL和SQLite,但PostgreSQL和其他人也会很好.为此,我尝试尽可能使用便携式SQL.如果无法做到这一点,我在查询中定义了一些由我的数据库层处理并转换为特定于平台的SQL命令的元词.
我现在正在尝试添加序列支持.每个DBMS处理不同的序列,没有通用的方法在SQL中编写它们.我已阅读并了解PostgreSQL的工作方式.我找到了一个有趣的MySQL解决方案,它使用MyISAM表来逃避事务的隔离约束.毕竟,序列不会随着它们使用的事务而回滚,这正是我想要的.序列应该是多用户安全的.
现在我还没有找到SQLite的解决方案.它缺乏内置的序列支持.它没有提供在正在运行的事务之外存储数据的方法.我目前的实现是锁定表足够远,以执行SELECT MAX(...)并使用该值.但我想完全摆脱它.在SQLite中,这种方法需要锁定整个数据库!
有没有人知道SQLite的解决方案?
我今天发现的HTML验证器 - http://html5.validator.nu/ - 说我对<noscript>元素的使用是错误的.我的XHTML源代码是这样的:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<body>
<div id="head">
<noscript>
<p>JavaScript is disabled.</p>
</noscript>
...
Run Code Online (Sandbox Code Playgroud)
验证器的错误消息是:
错误:在此上下文中,XHTML元素noscript不允许作为XHTML元素div的子元素.(抑制此子树中的更多错误.)
可以使用元素noscript的上下文:
- 在HTML文档的head元素中,如果没有祖先noscript元素.
- 如果没有祖先的noscript元素,那么在HTML文档中需要使用短语内容.
元素div的内容模型:
- 流量内容.
现在我继续阅读Mozilla文档并尝试理解这意味着什么.我找到了一些关于内容类别,流内容,措辞内容,属于每个类别的元素(无论"属于"意味着什么)以及如何使用<noscript>元素的信息.(https://developer.mozilla.org/en/HTML/Element/noscript)
我现在知道这一点:<div>必须包含流量内容.<noscript>必须出现在措辞内容中.这显然不匹配.我该如何管理?尽管如此,许多元素都在流动和短语中.它们似乎不是分离集,所以有些人无法决定或者我没有得到它.
HTML规范打算如何解决这个怪癖?
我知道有很多关于隐藏或删除WPF窗口左上角图标的问题,这是系统菜单所在的位置.我尝试了很多但没有效果.这是我的要求:
可用的答案基本上使用Windows API函数GetWindowLong,SetWindowLong有时还SetWindowPos添加扩展窗口样式WS_EX_DLGMODALFRAME和调用SWP_FRAMECHANGED.有时,其他样式也会设置或取消设置.
不幸的是,这根本不起作用.我可以没有没有关闭按钮的图标,或者两者都在那里.但同样值得注意的是,所有这些内容都来自2010年或预告片.它似乎是针对早期的.NET或Windows版本而失败了.
我已经将系统对话框(来自资源管理器)和我的WPF窗口的窗口样式与Microsoft Spy ++(包含在Visual Studio中)进行了比较.但我可以尝试将所有标志设置为相同,图标不会消失.就像黑魔法一样,它会推翻所有其他API函数或物理.
有没有人能够在今天和指定环境中使用仍然有效的解决方案?
我现在有以下代码来编写一个包含控制器操作链接的项目的平面列表:
<ul>
@foreach (var item in items)
{
<li>
<a asp-controller="Home" asp-action="Demo" asp-route-itemName="@item.Name">
@item.Name
</a>
</li>
}
</ul>
Run Code Online (Sandbox Code Playgroud)
现在这必须变为递归.项目还可以包含子项目.对于递归,我需要某种功能.我知道我可以@functions在.cshtml文件中使用和定义该函数.不确定是否仍然允许带有标记助手的这种漂亮的内联HTML代码,它似乎不是这样.另一个选项是.cs文件中的HTML帮助程序,这里没有内联HTML.@helper似乎不再可用了.
我还有哪些其他选项来定义函数并保留Razor提供的内联HTML语法?
因此,ASP.NET Core应用程序内置了“依赖关系注入”。借助Entity Framework Core,您可以轻松地从控制器操作方法中获取具有范围的DbContext实例。
但这仅限于控制器动作。如果您需要从某个动作开始长时间运行的后台任务,该动作将通过WebSocket之类的其他方式与浏览器中的视图进行通信,那么您突然一无所有。后台任务无法使用操作的DbContext,因为该操作已在操作返回时进行了范围划分和处置。
一种简单的方法是使用人们所谓的服务定位器。这是某些IServiceProvider的静态副本,用于以后的访问和服务解析。(ASP.NET Core 2.1可能需要使用与我在此注释中阅读的方法不同的方法。)但是,无论我看什么,都将其描述为反模式。它使测试更加困难并且混淆了依赖性。好的。
那么对于这种情况推荐的解决方案是什么?我在茫茫荒野中的某个地方。甚至可以从调度程序而不是控制器操作启动的后台任务。附近没有HTTP请求。DI在这里可以为我做什么?有没有不退后于反模式的解决方案?我确定ASP.NET Core DI的创建者已经想到了这一点。
是否有办法使服务在那里解决,或更改我的体系结构以使后台任务本身以某种方式脱离DI?
更新:通过评论请求,例如:控制器动作启动某件事。就像网络扫描一样,这将需要很长时间。该视图返回类似“尊敬的用户,请稍等,您可以观看此进度条”。工作在后台继续,不断将进度和/或结果发布到浏览器。(浏览器也可能会轮询进度。)后台任务需要访问数据库以存储扫描结果。扫描完成后,浏览器可以通过另一个操作来获取它。因此,如果后台任务仅使用控制器动作的DbContext,则在动作完成后将变得不可用。
另一个示例是与请求完全无关的后台服务。定期检查数据库然后执行某些操作的服务。这也需要一个DbContext,甚至无处尝试窃取它。
我在Visual Studio 2010中单独使用Git作为我的本地软件项目.最近我创建了一个新的分支来对其中一个对话窗口进行更大的重构.我做了以下修改:
我将这个更改检查到了分支,比如表单重构.有趣的是,Git并没有注意到我将文件Form1.cs重命名为Form1a.cs并创建了一个全新的,完全不同的Form1.cs,但它发现了一个新的Form1a.cs文件并发现了它之间的很多差异.以前和新的Form1.cs文件.这当然会导致完全无用的差异,但在这种情况下我不在乎,只要最终正确处理所有文件.
然后我切换回主人做了一些其他的小改动.没有任何冲突.到现在为止,一切正常.
今天,我想切换回我的分支表格 - 重构以继续这项工作.但我得到的是以下信息:
git.exe checkout form-refactoring
Aborting
error: The following untracked working tree files would be overwritten by checkout:
Form1.Designer.cs
Please move or remove them before you can switch branches.
Run Code Online (Sandbox Code Playgroud)
应该是什么?提到的文件不是未跟踪的.既不在主分支中,也不在形式重构分支中.它是两个分支的一部分,但一个不是另一个分支的后代.如果我删除它会发生什么,它会好转吗?如果我现在删除了某些东西,我不相信Git会带回正确的文件.除了我提到的Git操作之外,我根本没有使用任何文件,那么我为什么要玩任何文件来继续使用Git操作呢?Git打破了它,Git现在应该处理它!
现在,我无法继续工作,因为我无法切换分支.有一个简单的解决方案吗?
Git版本是1.7.6,TortoiseGit是1.7.3.
我在C#.NET 4.0中编写网络服务器.有一个网络TCP/IP连接,我可以通过它连接完整的XML元素.他们定期到达,我需要立即处理它们.每个XML元素本身都是一个完整的XML文档,因此它有一个开放元素,几个子节点和一个结束元素.整个流没有单个根元素.所以当我打开连接时,我得到的是这样的:
<status>
<x>123</x>
<y>456</y>
</status>
Run Code Online (Sandbox Code Playgroud)
然后一段时间后它继续:
<status>
<x>234</x>
<y>567</y>
</status>
Run Code Online (Sandbox Code Playgroud)
等等.我需要一种方法来读取完整的XML字符串,直到状态元素完成.我不想用纯文本阅读方法这样做,因为我不知道数据的格式是什么.我无法等到整个流完成,正如其他地方经常描述的那样.我已经尝试使用XmlReader类,但它的文档很奇怪,方法无法解决,第一个元素丢失,在发送第二个元素后,发生XmlException,因为有两个根元素.
Windows 任务计划程序可以创建使用特定用户的帐户运行的任务,而无需存储用户密码。他们称之为“S4U”,即为用户服务。这应该类似于调度程序为当前用户创建这样的令牌,并可以使用它在该用户帐户下运行计划的进程。他们声称无法使用该系统访问网络或加密资源。调度程序本身使用 SYSTEM 帐户运行才能工作。这是一篇描述它的文章。其中的相关引用:
TASK_LOGON_S4U 是另一个提供更安全替代方案的选项。它利用用户 (S4U) 登录服务代表指定用户运行任务,但无需存储密码。由于任务计划程序在本地系统帐户内运行,因此它可以创建 S4U 登录会话并接收令牌,该令牌不仅可用于识别,还可用于在本地计算机上进行模拟。通常,S4U 令牌仅用于识别。
我需要在我的应用程序中使用此身份验证方案,但不能让任务计划程序执行此操作,而是需要自己执行此操作,因为我需要它用于任意数量的帐户。每当用户向我的应用程序注册任务时,任何后续任务都必须在同一用户下运行。但由于它们不能重叠,所以我需要自己进行序列化。
我找不到关于这个“S4U”的任何信息。我如何在我的应用程序中实现它?首选 C#,但 WINAPI 和 C 也可以。
更新:这是我尝试过的,但它不起作用。
// The WindowsIdentity(string) constructor uses the new
// Kerberos S4U extension to get a logon for the user
// without a password.
WindowsIdentity wi = new WindowsIdentity(identity);
WindowsImpersonationContext wic = null;
try
{
wic = wi.Impersonate();
// Code to access network resources goes here.
}
catch()
{
// Ensure that an exception is not propagated higher in the call …Run Code Online (Sandbox Code Playgroud)