适用于Windows和MSVC的ccls编译简明指南

cclsMaskRay编写的一款适用于C/C++/OC的LSP实现。在此基础上,他还针对VSCode编写了对应的插件,用以为这些语言提供编辑器的自动完成、语法提示和错误检查功能。在这篇帖子中,我打算简要总结一下如何在Windows下编译ccls。毕竟这也是各位在VSCode中使用ccls插件的第一步。 Continue reading “适用于Windows和MSVC的ccls编译简明指南”

在部分受信任程序集中,所有的代码都是安全透明的

所以在这个程序集里,即使你给你自己的Exception派生类的GetObjectData重写应用了SecurityCriticalAttribute,这个函数实际上还是安全透明(Security Transparent)的。(可以用反射获知。)但Exception.GetObjectData是安全关键(Security Critical)的,所以在沙盒程序集中以部分信任的方式加载引发TypeLoadException也算是在情理之中吧。比如 Continue reading “在部分受信任程序集中,所有的代码都是安全透明的”

尝试了一下Bot Framework

方才刷了一波MS信仰。明天可以看看自然语言处理工具包。

GitHub:https://github.com/CXuesong/HalfMoon.Endpoint

试用体验:https://github.com/CXuesong/HalfMoon.Endpoint/wiki/%E8%AF%95%E7%94%A8%E4%BD%93%E9%AA%8C

另外,由于目前BotBuilder暂时仅支持.NET Framework 4.6,因此无法将其配合.NET Core使用,也就无法在除Windows以外的系统上运行了。不过,根据#2346的情况,说不定过几天我们就可以将机器人移植到ASP.NET Core上了。 Continue reading “尝试了一下Bot Framework”

AsyncEnumerable 随笔

AsyncEnumerable 主要是伴随着对异步迭代器的需求而产生的。之前在编写WikiClientLibrary的时候,遇到了一个和分页相关的问题。比如我们要从维基服务器获取所有页面的列表。一个最简单、使用异步的想法如下所示

public async Task<IEnumerable<Page>> FetchAllPagesAsync(Site site)
{
    JToken json = await site.SendReuestAsync(/* ... */);    // 向服务器请求所有页面
    IList<Page> result = PagesFromJson();                   // 将获取到的JSON转换为页面列表
    return result;
}

这样,客户程序可以使用循环或者LINQ来使用这些条目序列。

但情况没有这么简单。服务器在一次请求中最多只能返回500条结果,那么对于大部分的维基而言,我们可能需要多次请求才能获取到所有的结果。那么,我们要怎么处理这种情况呢?

Continue reading “AsyncEnumerable 随笔”

写了一个MediaWiki客户端库

基于.NET PCL的一个异步访问的MediaWiki客户端库,支持.NET Framework 4.5、ASP.NET Core 1.0、Xamarin.iOS和Xamarin.Android,MediaWiki API最低尝试过MediaWiki 1.19 (Wikia)。欢迎前来围观!

坑址:https://github.com/CXuesong/WikiClientLibrary

其他MediaWiki客户端库:https://www.mediawiki.org/wiki/API:Client_code

宣传一下:好像还没想好可以怎么宣传。总之,支持大部分常见的增删查改API,支持生成器,支持文件上传,查询结果无痛分页(使用IAsyncEnumerable)。

Continue reading “写了一个MediaWiki客户端库”

Content is available under CC BY-SA 3.0 unless otherwise noted.