我最近了解了List的.ConvertAll扩展.我今天在代码中使用它几次,将我的对象的大型列表转换为其他对象的列表.它似乎工作得很好.但是,我不确定这与仅迭代列表和转换对象相比有多快或多快..ConvertAll是否会使用任何特殊的东西来加速转换过程,或者它只是一种简单的转换列表而无需设置循环的方法?
以下是计算预发布的最新版本,它利用新的资源组方式来控制访问: https: //www.nuget.org/packages/Microsoft.Azure.Management.Compute/13.0.4-prerelease
这是最新版本的 Sql 预发行版,它还利用新的资源组方式来控制访问: https: //www.nuget.org/packages/Microsoft.Azure.Management.Sql/0.46.0-prerelease
对于 Compute dll,所有构造函数都需要“ServiceClientCredentials”,因此建议您使用带有 subcriptionId 和访问令牌参数的 TokenCredentials 类。
对于 Sql dll,所有构造函数都需要“SubscriptionCloudCredentials”,因此建议您使用带有 subcriptionId 和访问令牌参数的 TokenCloudCredentials 类。
在我看来,TokenCredentials 和 TokenCloudCredentials 是同一件事,但继承有所调整。那么拥有两个有什么意义呢?他们是否正在从一个更改为另一个,而我只需要坚持让他们清理这一点,或者我是否必须在代码中管理两个不同的令牌实体?
假设我要定义一个包含函数的新类型:
newtype Test m a = Test(m -> (a, m))
Run Code Online (Sandbox Code Playgroud)
这可以用来容纳某种状态。
现在让我们说我想为这个新类型实现fmap。
instance Functor (Test m) where
--fmap :: (a -> b) -> Test m a -> Test m a -> b
fmap f (Test f1) (Test f2) = ?
Run Code Online (Sandbox Code Playgroud)
由于新类型房屋具有功能,因此无法使用模式匹配将f1和f2分开。
例如,我最初认为我可以将f2的输入值传递给调用f1以产生一个(a,m)元组,但是我认为您不能做到这一点。
即
tup = f1 (get input of f2)
Run Code Online (Sandbox Code Playgroud)
有人能为我提供处理这种情况时我所缺少的概念吗?或者这不可能吗?
谢谢
更新
非常感谢Redu和Willem Van Onsem。
似乎我对如何使用合成运算符(。)缺乏了解。
基本上,这里的关键是使用(。)来获取元组的第一个元素,然后执行一堆局部函数定义以进入fmap所需的状态。这是我的fmap实现,没有使用库函数。故意冗长以帮助理解。
alterParamStateHelper :: (a -> b) -> (m -> a) -> m -> (b, m)
alterParamStateHelper f1 f2 m = (b, m)
where …Run Code Online (Sandbox Code Playgroud) 我一直在使用 C# 的 SharpZip 库(版本 0.86.0)。我基本上用它来将许多文件打包到一个干净的 zip 文件中。这是我的函数生成 zip 文件的字节数组的方式:
public static byte[] CompressToZip(List<Tuple<byte[], string>> fileItemList, int zipLevel = 3)
{
MemoryStream zipMemoryStream = new MemoryStream();
ZipOutputStream zOutput = new ZipOutputStream(zipMemoryStream);
zOutput.SetLevel(zipLevel);
ICSharpCode.SharpZipLib.Checksums.Crc32 crc = new ICSharpCode.SharpZipLib.Checksums.Crc32();
foreach (var file in fileItemList)
{
ZipEntry entry = new ZipEntry(file.Item2);
entry.DateTime = DateTime.Now;
entry.Size = file.Item1.Length;
crc.Reset();
crc.Update(file.Item1);
entry.Crc = crc.Value;
zOutput.PutNextEntry(entry);
zOutput.Write(file.Item1, 0, file.Item1.Length);
}
zOutput.IsStreamOwner = false;
zOutput.Finish();
zOutput.Close();
zipMemoryStream.Position = 0;
byte[] zipedFile = zipMemoryStream.ToArray();
return zipedFile;
}
Run Code Online (Sandbox Code Playgroud)
该函数对于其中包含一项的文件效果很好。但由于某种原因,当我有两个或更多时,当我提取/打开它时,我会遇到错误。 …
我的公司正在研究Azure的报告.我们只希望我们的客户向我们提供只读凭证供我们使用.我做了一些研究,看起来Azure Active Directory就是这样做的.所以我希望使用只读Azure目录应用程序进行身份验证.
为了让我开始,我正在关注此博客,介绍如何通过Azure Active Directory使用Management API.
https://msdn.microsoft.com/en-us/library/azure/dn722415.aspx
除了显示非常不友好的方法,它不起作用=(
以全局管理员身份登录后出现此错误:
"AADSTS90014:请求正文必须包含以下参数:'client_secret或client_assertion'."
做了一些研究,发现这种身份验证风格适用于原生应用而非网络应用(尽管博客文章说其他明智的......).所以我做了一个调整.我的GetAuthorizationHeader现在看起来像这样:
private static string GetAuthorizationHeader()
{
AuthenticationResult result = null;
var context = new AuthenticationContext("https://login.windows.net/" + ConfigurationManager.AppSettings["tenantId"]);
string clientId = ConfigurationManager.AppSettings["clientId"];
string clientSecret = ConfigurationManager.AppSettings["clientSecret"];
ClientCredential clientCred = new ClientCredential(clientId, clientSecret);
var thread = new Thread(() =>
{
result = context.AcquireToken(
"https://management.core.windows.net/",
clientCred);
});
thread.SetApartmentState(ApartmentState.STA);
thread.Name = "AquireTokenThread";
thread.Start();
thread.Join();
if (result == null)
{
throw new InvalidOperationException("Failed to obtain the JWT token");
}
string token = result.AccessToken;
return …Run Code Online (Sandbox Code Playgroud) c# authentication azure azure-sdk-.net azure-active-directory
c# ×4
azure ×2
api ×1
convertall ×1
functor ×1
haskell ×1
list ×1
newtype ×1
performance ×1
sql ×1