GT

如何使用Serilog.AspNetCore记录ASP.NET Core3.0的MVC属性

你说的曾经没有我的故事 提交于 2021-02-19 03:23:27
https://www.cnblogs.com/yilezhu/p/12243984.html 这是Serilog系列的第三篇文章。 第1部分-使用Serilog RequestLogging减少日志详细程度 第2部分-使用Serilog记录所选的终结点属性 第3部分-使用Serilog.AspNetCore记录MVC属性(本文) 第4部分-从Serilog请求记录中排除运行状况检查端点 作者:依乐祝 译文地址: https://www.cnblogs.com/yilezhu/p/12243984.html 原文地址: https://andrewlock.net/using-serilog-aspnetcore-in-asp-net-core-3-logging-mvc-propertis-with-serilog/ 在我 上篇文章 中,我描述了如何配置Serilog的RequestLogging中间件以向Serilog的请求日志摘要中添加其他属性(例如请求主机名或选定的端点名称)。这些属性都在 HttpContext 中可用,因此可以由中间件本身直接添加。 其他属性,例如MVC特定的功能,像操作方法ID,RazorPages处理程序名称或ModelValidationState, 仅 在MVC上下文中可用,因此Serilog的中间件不能直接访问。 在本文中,我将展示如何创建

Shell 基本运算符

纵饮孤独 提交于 2021-02-19 01:40:30
Shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。 expr 是一款表达式计算工具,使用它能完成表达式的求值操作。 例如,两个数相加(注意使用的是反引号 ` 而不是单引号 '): #!/bin/bash val=`expr 2 + 2` echo "两数之和为 : $val" 两点注意: 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。 完整的表达式要被 ` ` 包含,注意这个字符不是常用的单引号,在 Esc 键下边。 算术运算符 下表列出了常用的算术运算符,假定变量 a 为 10,变量 b 为 20: 运算符 说明 举例 + 加法 `expr $a + $b` 结果为 30。 - 减法 `expr $a - $b` 结果为 -10。 * 乘法 `expr $a \* $b` 结果为 200。 / 除法 `expr $b / $a` 结果为 2。 % 取余 `expr $b % $a` 结果为 0。 = 赋值 a=$b 将把变量 b 的值赋给 a。 == 相等。用于比较两个数字,相同则返回 true。 [ $a == $b ] 返回 false

Shell编程(三) : shell基本运算符

戏子无情 提交于 2021-02-18 23:22:42
shell 基本运算符 shell 和其他编程语言一样,支持多种运算符,包括: 算数运算符 关系运算符 布尔运算符 字符串运算符 文件测试运算符 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用。 expr 是一款表达式计算工具,使用它能完成表达式的求值操作。 实例 例如,两个数组相加(注意使用的是反引号 而不是单引号 ) #!/bin/bash val=`expr 2 + 2` echo "两数之和为 : $val" 两点注意: 表达式和运算符之间要有空格,例如 2+2 是不对的,必须写成 2 + 2,这与我们熟悉的大多数编程语言不一样。 完整的表达式要被 包含,注意这个字符不是常用的单引号,在 Esc 键下边。 算数运算符 运算符 说明 举例 + 加法 expr $a + $b 结果为 30。 - 减法 expr $a - $b 结果为 -10。 * 乘法 expr $a \* $b 结果为 200。 / 除法 expr $b / $a 结果为 2。 % 取余 expr $b % $a 结果为 0。 = 赋值 a=$b 将把变量 b 的值赋给 a。 == 相等 [ $a == $b ] 返回 false。 = 不相等 [ $a != $b ] 返回 true。 注意:条件表达式要放在方括号之间,并且要有空格,例如: [

Django Haystack 全文检索与关键词高亮

点点圈 提交于 2021-02-18 01:54:30
https://juejin.im/post/5e453da151882549431fe2ab 作者: HelloGitHub-追梦人物 文中所涉及的示例代码,已同步更新到 HelloGitHub-Team 仓库 博客提供 RSS 订阅应该是标配,这样读者就可以通过一些聚合阅读工具订阅你的博客,时时查看是否有文章更新,而不必每次都跳转到博客上来查看。现在我们就来为博客添加 RSS 订阅功能。 在此之前我们使用了 Django 内置的一些方法实现了一个简单的搜索功能。但这个搜索功能实在过于简单,没有多大的实用性。对于一个搜索引擎来说,至少应该能够根据用户的搜索关键词对搜索结果进行排序以及高亮关键字。现在我们就来使用 django-haystack 实现这些特性。 Django Haystack 简介 django-haystack 是一个专门提供搜索功能的 django 第三方应用,它支持 Solr、Elasticsearch、Whoosh、Xapian 等多种搜索引擎,上一版本的教程中我们使用 Whoosh 加 jieba 中文分词的方案,原因是为了简单,无需安装外部服务。但现在有了 docker,安装一个外部服务就是轻而易举的事情,所以这次我们采用更为强大的 elasticsearch 作为我们博客的搜索引擎,同时使用 elasticsearch 的中文分词插件 ik

如何在 Linux 中编辑字幕

拥有回忆 提交于 2021-02-17 04:10:34
https://linux.cn/article-11946-1.html 我作为一位世界电影和地区电影爱好者已经几十年了。这期间字幕是一个必不可少的工具,它可以使我享受来自不同国家不同语言的优秀电影。 如果你喜欢观看带有字幕的电影,你可能会注意到有时字幕并不同步或者说并不正确。 你知道你可以自己编写字幕并使得它们更完美吗?让我们向你展示一些 Linux 中的基本字幕编辑吧。 从闭路字幕数据中提取字幕 大概在 2012、2013 年我开始了解到有一款叫做 CCEextractor 的工具。随着时间的推移,它已经成为我必不可少的工具之一,尤其是当我偶然发现一份内含有字幕的媒体文件。 CCExtractor 负责解析视频文件以及从闭路字幕closed captions数据中产生独立的字幕文件。 CCExtractor 是一个跨平台的、自由开源工具。自它形成的那年起该工具已经成熟了不少而如今已成为 GSOC 和谷歌编码输入的一部分。 简单来说,这个工具基本上是一系列脚本,这些脚本以一种顺序方式一个接着一个地给你提供提取到的字幕。 你可以按照 本页 的 CCExtractor 安装指南进行操作。 若安装后你想从媒体文件中提取字幕,请按以下步骤操作: ccextractor <path_to_video_file> 该命令将会输出以下内容: $ ccextractor $something

APT 分析及 TTPs 提取

百般思念 提交于 2021-02-14 09:32:33
https://paper.seebug.org/1132/ 作者:PIanet 招高级安全分析 反APT研究 威胁情报 hongyu1@360.cn 原文链接: https://projectsharp.org/2020/02/23/APT%20%E5%88%86%E6%9E%90%E5%8F%8A%20TTPs%20%E6%8F%90%E5%8F%96/?from=groupmessage&isappinstalled=0 Abstract 本文对 APT 分析及 TTPs 提取进行讨论,总结出一套适用于安全分析、安全研究及企业应急响应人员的分析方法。 文章由六部分组成,引用了杀伤链模型,钻石分析模型,ATT&CK 等内容,介绍了攻击事件、APT 攻击的一些概念,简单概括了 “通过攻击者能力切入” 和 “通过基础设施切入” 的两种 APT 事件分析的方法。着重探讨了 TTP 的提取、使用、应用、落地及归因判断。提出了 “特征矩阵” 和 “事件链图”,设计了描述模型,同时进行了简单的可行性论证。 内容适用于具有一定经验的安全分析师,病毒分析师,威胁情报分析师等安全人员。 0x00 攻击事件 什么是攻击事件? 个人理解,攻击事件是在未授权情况下,对计算机系统或计算机资源进行访问、使用、更改、破坏的活动。根据事件烈度和影响范围,可以分为以下几类: 常规攻击 Botnet 恶意软件

洛谷 P1015 回文数

China☆狼群 提交于 2021-02-13 02:51:45
https://www.cnblogs.com/Hisami/p/12350530.html 题目描述 若一个数(首位不为零)从左向右读与从右向左读都一样,我们就将其称之为回文数。 例如:给定一个十进制数56,将56加65(即把56从右向左读),得到121是一个回文数。 又如:对于十进制数87: STEP1:87+78 = 165 STEP2:165+561 = 726 STEP3:726+627 = 1353 STEP4:1353+3531 = 4884 在这里的一步是指进行了一次N进制的加法,上例最少用了4步得到回文数4884。 写一个程序,给定一个N(2 ≤ N ≤ 10,N=16)进制数M(100位之内),求最少经过几步可以得到回文数。如果在30步以内(包含30步)不可能得到回文数,则输出Impossible! 输入格式 两行,分别是N,M. 输出格式 STEP=ans 样例输入输出 输入 10 87 输出 STEP= 4 思路 ① 考虑到题目可能使用16进制输入,因此使用 字符数组 s 存储输入。 ② 由于需要进行加法运算,因此将字符数组转换为整型数组;C++的STL(标准模板库)中有 reverse()函数可以反转数组 ,因此使用vector<int>类型来定义转换后的 整型数组aInt 。 ③ 转换过程中,要注意对16进制中的字母作特殊处理: 非字母转换成数字: if

DuReader数据集之数据预处理代码解析

荒凉一梦 提交于 2021-02-13 02:36:49
https://zhuanlan.zhihu.com/p/75509030 上一篇我们介绍DuReader数据集的基本情况,见 刘聪NLP:机器阅读理解之DuReader数据集描述 。 这一篇我们介绍一下DuReader数据集是如何进行数据预处理的,我们要比较一下原始数据和预处理后数据的区别: 原始数据结构: { 'documents': [{ 'is_selected': True or Flase, 'title': ' String', 'paragraphs':[ ' String', ' String', ' String' ] }, { 'is_selected': True or Flase, 'title': ' String', 'paragraphs':[ ' String', ' String', ' String' ] } ], 'answers': [' String', ' String', ' String' ], 'question’: ‘String', 'question_type': DESCRIPTION or ENTITY or YESNO, 'fact_or_opinion': FACT or OPINION, 'question_id': 191572 } 预处理后的数据结构: { 'documents': [{ 'is

DuReader数据集之数据预处理代码解析

我怕爱的太早我们不能终老 提交于 2021-02-12 12:54:52
https://zhuanlan.zhihu.com/p/75509030 上一篇我们介绍DuReader数据集的基本情况,见 刘聪NLP:机器阅读理解之DuReader数据集描述 。 这一篇我们介绍一下DuReader数据集是如何进行数据预处理的,我们要比较一下原始数据和预处理后数据的区别: 原始数据结构: { 'documents': [{ 'is_selected': True or Flase, 'title': ' String', 'paragraphs':[ ' String', ' String', ' String' ] }, { 'is_selected': True or Flase, 'title': ' String', 'paragraphs':[ ' String', ' String', ' String' ] } ], 'answers': [' String', ' String', ' String' ], 'question’: ‘String', 'question_type': DESCRIPTION or ENTITY or YESNO, 'fact_or_opinion': FACT or OPINION, 'question_id': 191572 } 预处理后的数据结构: { 'documents': [{ 'is

TS(JS)与 Go

こ雲淡風輕ζ 提交于 2021-02-12 09:09:07
https://juejin.im/post/5e3a02336fb9a07caa26f7d5 编译原理 JavaScript 是一门解释型语言或即时编译型语言,在运行时通过编译生成二进制机器码,它的运行大致经过以下几个阶段(以 V8 引擎为例): 如果使用了 TypeScript,则在运行之前 TypeScript 将会编译成 JavaScript 代码。 v8 引擎首先会解析源码,生成抽象语法树(AST),基于 AST,解释器便可以开始工作生成字节码,经过编译器后生成可以运行的机器码。 Go 是一门编译型语言,在代码***运行之前***需要通过编译器生成二进制机器码。它的编译过程大致如下: 代码首先会被扫描(词法分析)生成 token,后经过 Parser(语法分析) 生成 AST,接着会有一个类型检查的阶段,通常叫做语义分析,生成中间代码,后经过优化处理后最终生成目标机器码。 静态类型 TypeScript 和 Go 都是静态类型语言。 对于 TypeScript,笔者时常看到有关于它的各种「骚操作」,比如从 A | B 得到 A & B : type UnionToIntersection<U> = ( U extends any ? ( k: U ) => void : never ) extends ( ( k: infer I ) => void ) ? I :