微软发布 Visual Studio 15.6 第五个预览版
微软发布VisualStudio15.6的第五个预览版,该版本包括PreviewSDKBuild17095新版本值得关注的内容是包含C++/WinRT,有一些注意事项:可能会发生错误:Cannotdeploytoadevice:Whenattemptingtodeploytoamobiledevice,itfailswiththefollowingerror:DEP0001:UnexpectedError:SmartDeviceException–Classnotregistered[0x80131500]解决上述错误的方法是:GotoAdministrativeCommandPromptRunREGSVR32“\ProgramFiles(x86)\WindowsKits\10\bin\10.0.17095.0\x86\SirepClient.dll”该版本不包含如下工具:Filtdump.exeJSConstraintD
张高兴的 Windows 10 IoT 开发笔记:部署 ASP.NET Core 2 应用
今天是大年初二,都去走亲戚了吧,享受一下这难得的能和亲友相聚的时光。而我就不一样了,今天一回到家就又开始瞎折腾了,哈哈哈。问题背景最近花了点时间用ASP.NETCore2写了个个人博客,中间出了好多问题,过程弯弯曲曲的,但好歹最后还是完成部署在阿里云上了。这几天闲的没事看.NETCoreCLI,发现运行时标识符(RuntimeIDentifier)居然有win10-arm,这使我突然萌生了想把我的博客部署在RaspberryPi上。(这就是纯属瞎折腾,部署在WindowsIoT上确实没用,反正玩都玩了,干脆写篇博客吧...)发布(Publish)应用在将应用部署在WindowsIoT上之前,首先是要以某种合适的方法将应用发布到本机。(Windows10IoT只包含运行时)1.更改项目输出类型打开项目“属性”,将“应用程序”选项中的“输出类型”,改为“控制台应用程序”。或者你也可以直接编辑.csproj文件,将的值改为Exe。2.编辑Program.cs和在
Infinispan 的 Hotrod 客户端 C++ 和 C# 8.2.0.Beta1 发布
Infinispan包括C++和C#两种语言版本的Hotrod客户端发布了8.2.0测试版。这次更新做了一些改进和bug修复,具体如下:改进[HRCPP-435]-C++ImproveusabilityforRemotetaskexecutionFeatureRequest[HRCPP-406]-.NETImplementgetAlloperationBug修改[HRCPP-429]-MorerobustAddandRemoveclientlisteneroperation[HRCPP-434]-PassinginvalidclientcertificateresultsinSystem.AccessViolationException[HRCPP-446]-NearCache::getWithVersionmethodproducesracecondition[HRCPP-447]-Separatedatadirectories
使用VS Code开发asp.net core (下)
第一部分:https://www.cnblogs.com/cgzl/p/8450179.html本文是基于Windows10的.Debuggingjavascript打开wwwroot/js/site.js,写一段简单的js代码:(function($){$(document).ready(function(){$('#myButton').on('click',function(){alert('Helloworld!');});});})(jQuery);可以设置断点,但是由于整个项目是用于服务器端的.而js文件是用于客户端开发的,我们需要一种方法来调试js文件.这里我们就需要安装一个扩展:ChromeDebugger.然后打开launch.json,可以直接打开文件,也可以如下图方式打开:点击右下角的AddConfiguration:修改配置的端口和目录:"configurations":[{"type":"chrome","request":"lau
使用VS Code开发asp.net core (上)
本文是基于Windows10的.下载地址:https://code.visualstudio.com/insider版下载地址:https://code.visualstudio.com/insiders/这两个版本可以同时安装在系统中.安装过程就不介绍了.VisualStudioCode简介1.可以点击图标打开vscode2.如果安装的时候勾选了注册到Path,那么可以在命令行输入code来打开vscode.Git集成使用git随便clone一个项目下来,然后用vscode打开项目,随便打开某个文件,添加几行代码:9-11行是我新添加的,左边绿色的竖条(点击就会看到明细)就表示这几行是新添加的.然后修改一下h1的标题:修改的地方左边会出现蓝色的竖条(点击就会看到明细).表示这行发生了变化.这次再删除两行代码:左边会出现一个红色的箭头,鼠标可以放在这个箭头上,然后点击一下查看明细,就可以看到删除的代码行:点击vscode左边的SourceCont
推荐阅读我的十年IT生涯
转眼间,毕业已经十年了,之前在公司面试了一个新的应届毕业生,感触颇多,十年前的这个日子,我离开了学校的实验室,由导师推荐到了一家外资软件公司做开发工作,时间过的真快啊。很清楚的记得,刚参加工作的时候的样子,对这个既熟悉又陌生的行业,心里既有向往,也夹杂的一些恐惧,害怕自己的能力能不能胜任当时的工作,当然,更多的还是好奇,对公司里的一切东西都感到好奇,新的朋友,新的领导,在刚开始的日子里,尽量的去模仿一些老员工的举止和言谈,认为这样,自己能进步的更快,在别人眼里会更加的像一个经验充足的老员工,这种想法,在之后的很长一段时间里都萦绕在我的大脑中。其实,后来想想:那些老员工身上的东西,不是靠模仿就能学来的,从他们的举动里,话语间,哪怕是一个很小的动作,很简单的一两个词语,都渗透着一个我们经常听起,又好像虚无飘渺的东西,那就是自信。记得在公司开始的时候,每天参加公司组织的培训,晚上住在里公司很远的亲戚家,每天晚上既不能太早回去,也不能太晚,因为回去太早了他们会准备饭菜,我当时认为住在那里已经填了很多麻烦了,每天再在家里吃很不自在,回去太晚
携程Apollo(阿波罗)配置中心在.NET Core项目快速集成
.NETCore的支持文档大体上可以参考文档.Net客户端使用指南:https://github.com/ctripcorp/apollo/wiki/.Net%E5%AE%A2%E6%88%B7%E7%AB%AF%E4%BD%BF%E7%94%A8%E6%8C%87%E5%8D%97登录Apollo上新建App和相关的配置项,可以参考如下配置:在Nuget上引入Com.Ctrip.Framework.Apollo.Configuration的依赖,Nuget上面的包在项目上配置上面设置的app.id,注意此时是通过新建appsettings.json文件实现的。{"apollo":{"AppId":"SampleApp","MetaServer":"http://111.230.101.173:8080"}}AppId用来标识应用身份的唯一idApollo客户端针对不同的环境会从不同的服务器获取配置,MetaServer就是客户端获取配置的服务器配置这两个是必须设置的
.NET Core 实现定时抓取博客园首页文章信息并发送到邮箱
.NETCore实现定时抓取博客园首页文章信息并发送到邮箱前言大家好,我是晓晨。许久没有更新博客了,今天给大家带来一篇干货型文章,一个每隔5分钟抓取博客园首页文章信息并在第二天的上午9点发送到你的邮箱的小工具。比如我在2018年2月14日,9点来到公司我就会收到一封邮件,是2018年2月13日的博客园首页的文章信息。写这个小工具的初衷是,一直有看博客的习惯,但是最近由于各种原因吧,可能几天都不会看一下博客,要是中途错过了什么好文可是十分心疼的哈哈。所以做了个工具,每天归档发到邮箱,妈妈再也不会担心我错过好的文章了。为什么只抓取首页?因为博客园首页文章的质量相对来说高一些。准备作为一个持续运行的工具,没有日志记录怎么行,我准备使用的是NLog来记录日志,它有个日志归档功能非常不错。在http请求中,由于网络问题吧可能会出现失败的情况,这里我使用Polly来进行Retry。使用HtmlAgilityPack来解析网页,需要对xpath有一定了解。下面是详细说明:
C# 使用 Lotus notes 公共邮箱发送邮件
公司的邮件系统用的是反人类的Lotusnotes,你敢信?最近要实现一个功能,邮件提醒功能,就是通过自动发送提醒邮件前前后后这个问题搞了2天,由于公司的诸多条件限制,无法直接调用到公司发送邮件的接口,只有通过类似Lotusscript,VBA等其他方式来实现。用VBA代码实现发送邮件,其实我在n年前就实现过了代码如下,网上一搜也一大堆FunctionSendEmailbyNotesWithAttachement_2(Addresses,Attach,cc)strSubject=ThisWorkbook.Sheets("EMAIL").Range("B1")strbody=ThisWorkbook.Sheets("EMAIL").Range("A1")'DeclareVariablesDimsAsObjectDimdbAsObjectDimbodyAsObjectDimbodyChildAsObjectDimheaderAsObjectDimstreamAsObj
.NET Core版本七牛云SDK使用
.NETCore版本七牛云SDK使用一、问题背景公司目前正在将一部分的业务从.NET平台准备迁移到.NETCore上去,同时也准备启用docker进行.NETCore的部署,在项目迁移过程中,不可避免的碰到有些SDK只有在.NETFramework下有,而.NETCore没有的情况,而七牛就是碰到的其中一个,之前在nuget上看到qiniu的官方SDK引用进来后,会提醒你该sdk是基于.NETFramework版本,那如果部署在IIS下是没问题的,但是如果部署在linux下,那就跑不起来了,基于此,也为了以后方便其他项目的迁移,就捣鼓了一个.NETCore版本的七牛SDK,基于官方最新7.3的版本。二、修改说明废话不多说,上代码,啊呸先上链接https://github.com/Hello-Mango/MQiniu.Core,这是我已经编译好的代码,并且已经上传NUGET(搜索MQiniu.Core,不敢用qiniu.core这个名字,觉得最好还是官方可以出一个)修改方案其实是非常简单的,官方的sdk源码语法上跟.N
MyBatis Generator 用法详解
在MBG中,最主要也最重要的就是XML配置文件,因此本文主要就是XML配置这里按照配置的顺序对配置逐个讲解,更细的内容可以配合中文文档参照。1.配置文件头2.根节点
取得資料模型的屬性設定
建立資料模型時,我們可以透過DataAnnotations的方式來設定該資料模型的資料欄位屬性,藉此增加資料欄位的特性,例如使用DisplayAttribute標示該資料欄位要顯示的字樣,在用ASP.NETMVC時常透過這樣的方式來設定資料模型,甚至在EntityFramework中,也會用這樣的方式來設定欄位屬性,但我們怎樣用程式來抓到這屬性的值呢?假設我們建立了一個Student資料模型如下:publicclassStudent{[Display(Name="姓名")]publicstringName{get;set;}[Display(Name="生日")]publicDateTimeBirthday{get;set;}}system.componentmodel.dataannotations這個命名空間提供了很多資料欄位屬性給我們使用,這裡我們透過DisplayAttribute指定各個資料欄位要顯示的名稱,例如Name的顯示名稱為
全面解决.Net与Java互通时的RSA加解密问题,使用PEM格式的密钥文件
作者:zyl910一、缘由RSA是一种常用的非对称加密算法。所以有时需要在不用编程语言中分别使用RSA的加密、解密。例如用Java做后台服务端,用C#开发桌面的客户端软件时。由于.Net、Java的RSA类库存在很多细节区别,尤其是它们支持的密钥格式不同。导致容易出现“我加密的数据对方不能解密,对方加密的数据我不能解密,但是自身是可以正常加密解密”等情况。虽然网上已经有很多文章讨论.Net与Java互通的RSA加解密,但是存在不够全面、需要第三方dll、方案复杂等问题。于是我仔细研究了这一课题,得到了一些稳定可靠的代码。现在将研究成果分享给大家。二、密钥2.1RSA密钥文件格式介绍要保证.Net与Java两端均能正常的加解密,其中的重中之重就是确立一种密钥文件格式,使.Net与Java两端均能正确的加载密钥。.Net与Java内置类库对密钥文件格式的支持情况——.Net:支持xml格式的密钥文件。Java:没有直接提供对密钥文件的支持,仅提供了PKCS#8、X.509等编码的密钥数据的解析
Validate Model State automatically in ASP.NET Core 2.0
if(!ModelState.IsValid){//TODO模型验证失败需要做的事情}上面的代码不管是在传统的ASP.NET还是新一代ASP.NETCore中都是为了验证模型的状态是否合法,如果IsValid属性的值为True,则验证成功。这样的代码一般我们会写在Action方法中的最开始处,如果在每个Action中都写这样的判断就会增加我们的工作量和以及存在重复性,在这篇文章中将讨论如何自动进行模型验证。要实现这个功能首先需要定义一个ActionFilterpublicclassValidateModelStateAttribute:Microsoft.AspNetCore.Mvc.Filters.ActionFilterAttribute{publicoverridevoidOnActionExecuting(ActionExecutingContextcontext){if(!context.ModelState.IsValid){List
图文详解!DevExpress XtraScheduler日程管理控件应用实例(1)-- 基本使用
在一些应用场景中,我们可能需要记录某一天,某个时段的日程安排,那么这个时候就需要引入了DevExpress的日程控件XtraScheduler了,这个控件功能非常强大,提供了很好的界面展现方式,以及很多的事件、属性给我们定制修改,能很好满足我们的日程计划安排的需求,本文全面分析并使用这个控件,希望把其中的经验与大家分享。|立即下载DevExpress安装包,免费体验30天!1、日程控件的表现效果整个日程控件,可以分为日视图、周视图、月视图等等,当然还有一些不常用的时间线、甘特图等,本例我们来关注控件的使用以及这几个视图的处理。先来看看他们的界面效果,如下所示。日视图:在视图里面,默认可以打开响应的日程事件进行编辑的。周视图:月视图:2、日程控件XtraScheduler的使用我们在上面展示了这个控件的几个视图的界面,一般情况下的控件使用还是很方便的,也就是直接拖拉SchedulerControl到Winform界面即可,但是我们为了符合我们的使用需求,还是需要设置不少属性或者事件的处理的。
在.NetCore中使用Myrmec检测文件真实格式
Myrmec是什么?Myrmec是一个用于检测文件格式的库,Myrmec不同于其它库或者手写检测代码,Myrmec不依赖文件扩展名(在实际使用中,你的用户很可能使用虚假的扩展名欺骗你的应用程序),Myrmec会检测文件的二进制头,并在其元数据库中匹配来获得文件的格式。例如Jpg图片的二进制头是"FFD8FFDB"那么Myrmec会匹配到这个文件头,并获得两个结果--"jpg"和"jpeg"。如何使用首先安装nuget包Install-PackageMyrmec或者通过DotnetClidotnetaddpackageMyrmec编写匹配代码1//创建嗅探器2Sniffersniffer=newSniffer();34//使用元数据填充嗅探器5sniffer.Populate(FileTypes.CommonFileTypes);67//获取要匹配文件的文件头,一般20个字节就够了,有的格式可能需要更长8byte[]fileHead=ReadFileHead(
对.Net Core结合Docker和Jexus的实践
本文基于上次尝试之后的进一步尝试,加入Docker容器、编写Dockerfile,并且jexus结合Docker的使用,总结下自己的个人感想。一、环境介绍当前的场景有两种方式将Demo实现运行,一种是我将Asp.NetCore项目通过自侦听方式启动,然后外网正常访问,第二种通过功能强大的jexus作为代理,将项目发布后部署到jexus配置下,通过修改配置文件,通过jexus进行反向代理,此时项目本身可以不需要自侦听方式。当前的场景是直接在主机下进行的,并没有加入到Docker容器中。二、Docker中启动网站(暂未加入Dockerfile)首先,摆在面前的就有一个问题,我是直接根据镜像建立容器,然后在容器中安装Git获取项目、安装jexus部署项目、安装vim修改配置文件,还是直接获取项目后自启动侦听呢。不得不承认这两种情形都是很糟糕的,或许来说功能实现了,但是这个实现的过程是很不值得的,恰巧,我就完完全全走了一遍。^_^1、加入Docker容器,容器中加入jexus通过之前的一篇文章http://www.cnblo
基于Citus和ASP.NET Core开发多租户应用
基于Citus和ASP.NETCore开发多租户应用Citus是基于PsotgreSQL的扩展,用于切分PsotgreSQL的数据,非常简单地实现数据“切片(sharp)”。如果不使用Citus,则需要开发者自己实现分布式数据访问层(DDAL),实现路由和结果汇总等逻辑,借助Citus可简化开发,是开发者把精力集中在具体的业务逻辑上。对于多租户程序来说,Citus可以帮助企业对数据进行切片,相比于传统的数据管理方式,Citus更智能,操作更为简单,运维成本更低廉。下面演示Citus的简单使用。Step01安装docker和docker-compose(以Docker方式部署Citus)curl-sSLhttps://get.docker.com/|shsudousermod-aGdocker$USER&&execsgdockernewgrp`id-gn`sudosystemctlstartdockersudocurl-sSLhttps://github.com/docker/compose/
看不见还能编程吗?
公众账号原文https://mp.weixin.qq.com/s?__biz=MzU4ODM1MTQyOA==&mid=2247483779&idx=1&sn=8da413bc5859b12062829b248fdaadac&chksm=fddf5328caa8da3e4dfcde3c5077122707af07daceb5bff398c166d19ea30cca4dfd1c810ed5#rd
.NET/.NET Core中更清晰的堆栈跟踪
看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!在基于异常的语言中,堆栈跟踪是用于诊断问题最重要的工具之一。在某些情况下,开发人员能得到的仅为一条简短的错误信息以及堆栈跟踪,尤其是当个人可识别信息(PII)约束限制了日志记录的内容时。随着任务并行库(TPL)的出现以及紧随其后的async/await函数,堆栈跟踪变得愈发难以理解。有效信息被隐藏起来的问题并不罕见。事实上,该提升不可小觑。在.NET4.5早期版本以及引入ExceptionDispatchInfo类之前,堆栈跟踪是无法跨越异步边界的,开发人员将不得不深入探究内部异常问题。但所需研究的工作远不止于此。Illyriad游戏开发商BenAdams自行对.NETCore2.1中的堆栈跟踪进行了改进提升。他的工作主要集中在以下这些领域:消除由于async/await报警引入的噪音;显示哪些方法重载是在异步或迭代器上下文中被调用的;同时,AnirudhAgnihotry更新了Dictionary/Con