在要求输入邮箱的文本域,请填写真实的邮件地址。非真实邮件地址,将收不到回复信息。
  • 在Docker容器下使用.net 5统计图中文乱码的问题
  • 迁移网站更改域名后一个可以使用的301跳转方案
  • Nginx禁止指定UA、IP或者IP段访问
  • HTML5音频资源加载失败的处理方法
首页轮播缩略图第1篇文章-在Docker容器下使用.net 5统计图中文乱码的问题首页轮播缩略图第2篇文章-迁移网站更改域名后一个可以使用的301跳转方案首页轮播缩略图第3篇文章-Nginx禁止指定UA、IP或者IP段访问首页轮播缩略图第4篇文章-HTML5音频资源加载失败的处理方法
Docker

在Docker容器下使用.net 5统计图中文乱码的问题 24小时内最新

背景 客户新提需求,需要增加一张报表,报表需要增加统计图表。因为客户需要将数据以及统计图表一并导出到word中,所以没有使用前端统计相关的类库,比如:echarts、highcharts等库。虽然可以使用前端相关类库导出word,但是并不能满足现有需求。后台服务使用的是.net 5,统计图完成后发现中文出现乱码。如下图: 问题 出现以上乱码问题,其一可能是统计类库不支持中文导致的,也有可能是docker镜像中缺少相应的中文字体。因为在本地开发环境测试并没有问题,更新到测试环境后才发现以上乱码情况,所以应该是镜像中缺少相关中文字体而导致的。 解决 既然是缺少中文字体,那就安装字体就行了。在Windows系统中复制需要的字体到新建名称为chinese文件夹下,将此文件夹放到与dockerfile同一目录下即可。dockerfile文件中新增内容如...

5分钟前 17℃ 0评论 0喜欢

IT相关

迁移网站更改域名后一个可以使用的301跳转方案

背景 最初,由于购买cc域名不支持备案,所以就使用了阿里云香港云空间。自从2016年网站应用由.net应用BlogEngine.NET改为WordPress至今都使用的阿里云香港云空间。稳定倒是挺稳定的,就是一直感觉访问速度比较慢,本以为是阿里云香港云空间本是这样,就没有研究其慢的真实原因,当然这已经是后话了。 今年云空间快要到期的时候,突然想将网站迁移到国内,为了不在备案期间停止域名访问,就更换了域名。当域名更换完成,空间迁移完毕,貌似一切准备就绪,发现原来空间即将到期,留给301跳转的时间非常不足。本想使用阿里云DNS解析进行301跳转,这个也是最优的解决方案,无奈的是域名必须进行备案且是两个域名都必须备案。如果原来的域名也参与备案的话,网站就需要停止访问了,为了避免这种情况,只能放弃使用此方法。 发现 续费原来空间或者购买腾讯云和百度云等在价格上是不划算的。...

4周前 (08-30) 80℃ 0评论 0喜欢

Nginx

Nginx禁止指定UA、IP或者IP段访问

背景 在管理后台修改一些内容的时候,想到很久之前安装的重定向插件Redirections,随便就看一下。这不看不知道,看到了就差点大声尖叫。没有想到这么多对站点无意义的请求命中之前设置的重定向规则,一眼就可以发现请求UA不正常。例如:Apache-HttpClient、python-requests等 这种是一些非法采集的应用,觉得还是要对这类UA进行一些限制,例如:禁止指定UA访问、拒绝IP或者IP段的访问等。 现在服务已经由原来的Apache迁移到了Nginx服务上运行,所以现在的处置方案针对Nginx的。 Nginx禁止特定UA访问 在Nginx中有一个内置变量$http_user_agent,表示HTTP请求头中的User-Agent字段。使用正则表达式匹配User-Agent字段中是否包含特定的字符串,符合规则的则禁止访问。具体实现如下: ...

2个月前 (07-21) 219℃ 0评论 1喜欢

Web前端

HTML5音频资源加载失败的处理方法

背景 页面加载很多音频标签,音频资源一些加载不成功,音频标签不可用,并且排除以下几种情况: 检查音频的链接是否有效 检查音频格式是否支持 检查网络连接是否通畅 如果确认以上内容没有任何问题,则是页面加载过多的音频资源而导致部分音频资源加载失败。可以使用JavaScript进行资源加载重试,当然重试的策略需要进行限制,避免无限制尝试。 实现方式 以下是使用JavaScript代码实现自动重新加载资源的一个简单的示例,当音频标签加载失败时,它会自动尝试重新加载音频: const audio = document.querySelector('audio'); audio.addEventListener('error', () => { audio.load(); }); 在上面示例中,首先选择了音频标签,并添加了一个...

2个月前 (07-16) 140℃ 0评论 1喜欢

Nginx

WordPress由Apache迁移到Nginx出现404问题的解决方法

背景 虚拟主机即将到期且位置在香港,为了网站更好的访问速度索性就迁回大陆。在好多年前购买的时候只有Apache可选,这次迁回有Nginx可以选择,官方有说这个性能更加的强劲,所以这次就选了Nginx服务。数据以及文件很容易就完成了迁移,本想万事大吉,随便点击了几下测试全是404,其中包括文章、分类、标签、搜索、分页、站点地图、日期等全部404。WordPress后台固定链接设置的是日期和名称,应该就是URL重写的问题了。在使用Apache的虚拟主机的时候是默认的有相关配置的,但是新购的Nginx虚拟主机就没有这种配置了。所以,只有自己来进行URL的重写配置。 Nginx解决方法 Nginx重写URL配置内容如下: location / { if (!-e $request_filename) { rewrite ^/(&#...

3个月前 (06-15) 357℃ 0评论 1喜欢

DotNet

Syncfusion.DocIO.Net.Core操作Word的第三方组件无限制版

背景 一些朋友推荐处理Word可以使用Syncfusion.DocIO,说是API比较好用而且还支持doc格式的文件,因此就了解一下。经过测试确认是比一些开源的处理库好用一点,支持相对来说比较完善,就因为这些所以才会有这篇介绍的内容。 Syncfusion.DocIO.Net.Core Syncfusion.DocIO.Net.Core是Syncfusion的一组.NET组件,用于创建、编辑和转换Microsoft Word文档。它支持多种文件格式,包括.docx、.rtf、.txt等。它提供了一组易于使用的 API,可以帮助开发人员轻松地创建、读取和修改 Word 文档。 主要功能 创建Word文档并添加内容、表格、图片等元素。 编辑Word文档中的文本、表格、图片等内容。 将Word文档转换为其他格式,如PDF、HTML等。 支持批量...

4个月前 (05-16) 417℃ 0评论 2喜欢

软件资源

Guetzli高质量压缩图片算法工具

介绍 Guetzli是一款JPEG编码器,其目标是在高视觉质量下实现卓越的压缩密度。Guetzli生成的图像通常比libjpeg生成的同等质量的图像小20-30%。Guetzli只生成顺序的(非渐进的)JPEG,因为它们提供了更快的解压缩速度。 JPEG 图像的视觉质量与它的多阶段压缩过程有关:色彩空间变换,离散余弦变换,以及量化等等。Guetzli 具体针对量化阶段,图像视觉质量损失越多,输出图像尺寸越小。Guetzli 努力通过一个搜索算法,来克服 JPEG 格式的精神视觉模型与 Guetzli 的精神视觉模型之间的差别,以一种更全面更详细的方式来结合色彩感知和视觉掩蔽,从而在最小化损失和最小化图像尺寸中达到平衡。不过,尽管 Guetzli 可以使图像尺寸更小,但创建压缩图像所花费的时间要与目前的方法更长。 项目地址 guetzli 使用 Gu...

6个月前 (04-06) 476℃ 2评论 0喜欢

IT相关

安全架构设计基本原则

安全原则 在应用系统软件开发设计的过程中,对应用系统的总体设计应当满足如下安全原则 原则说明最小权限原则Least Privilege 应用软件的每个模块如进程、用户只能访问当下所必需的信息或者资源。赋予每一个合法动作最小的权限,以保护数据以及功能避免受到错误或者恶意行为的破坏。权限分离原则Separation of Duties对业务的操作、管理和审计权限应该由软件中的不同角色的用户分别承担;普通用户和管理员用户信息应该存放在不同的数据表中。深度防御原则Defense in Depth在应用程序对业务数据进行处理的每个阶段都要考虑安全性问题,不能仅在某个阶段做安全防御,这样单点防御一旦被突破将造成安全风险。容错保护原则Fail Secure当程序出现故障时或系统异常当系统失败时,可以进入到一个失败保护的状态。如果用户请求失败,系统仍可保...

6个月前 (03-29) 509℃ 0评论 1喜欢

IT相关

使用Fiddler进行移动端(手机)抓包

背景 客户一个定制企业微信相关内容,其中自动登录成功某些功能不正常,手动登录的又未复现问题,程序都是相同的且问题确实存在。准备使用抓包看一下企业微信自动登录与非自动登录的行为区别,抓包工具选用了大名鼎鼎的Fiddler。 Fiddler Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。 Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。 Fiddler 是用C#写出来的,它包含一个简单却功能强大的基于JScript.NET 事件脚本子系统,它的灵活性非常棒,可以支持众多的http调试任务,并且能够使用.net框架语言进行扩展。 操作设置 设置允许远程...

6个月前 (03-14) 578℃ 0评论 1喜欢

IT相关

安全风险状况说明

安全风险状况等级说明 良好状态   信息系统处于良好运行状态,没有发现或只存在零星的低风险安全问题,此时只要保持现有安全策略就满足了本系统的安全等级要求。预警状态信息系统中存在一些漏洞或安全隐患,此时需根据评估中发现的网络、主机、应用和管理等方面的问题对进行有针对性的加固或改进。严重状态信息系统中发现存在严重漏洞或可能严重威胁到系统正常运行的安全问题,此时需要立刻采取措施,例如安装补丁或重新部署安全系统进行防护等等。紧急状态信息系统面临严峻的网络安全态势,对组织的重大经济利益或政治利益可能造成严重损害。此时需要与其他安全部门通力协作采取紧急防御措施。 漏洞等级状况说明 低危漏洞 对系统造成较小的影响,攻击成本高,攻击场景较为苛刻,不会直接影响到系统的正常运行,攻击者可能无法通过该漏洞获得权限。中危漏洞对系统造成一般的影响,攻...

7个月前 (02-24) 410℃ 0评论 0喜欢

Docker

Docker构建VUE项目NPM构建134异常

背景 一个前端的VUE项目,需要打一个Docker的镜像离线包。通过命令行构建镜像,通过等待比较长的时间后,NPM构建抛出异常。 异常内容 以下是关于这次异常的详细信息: => ERROR [build-stage 10/10] RUN npm run build 1222.9s ------ > [build-stage 10/10] RUN npm run build: #18 7.649 #18 7.649 > vue-antd-admin@0.7.4 build /app #18 7.649 > vue-cli-service build #18 7.649 #18 24.59 #18 2...

7个月前 (02-23) 405℃ 0评论 0喜欢

生活随笔

2023过年

时间过得很快,一转眼就到了新的一年。今年公司春节假期放假比往年早很多,2023年1月16号就开始放假了,不晓得是因为疫情原因还是公司提供的福利,不管怎么说感觉很不错的。因为春运的火车票不太好买,所以就多计划了几天,在2013年1月11号就请假回家了。 回到家的第二天就到了医院进行一次检查,针对肺部的检查。由于新冠感染,导致除发烧以外的其他状没有好转,其实也不是没有一点好转,只是一直还是有症状,二十多天咳嗽依然存在。检查结果肺部有两个微小肺结节并且已经钙化,其实我是很担心的 。在新冠之前的一些检查中是没有见过的,我想还是这次新冠感染引起的。医生并没有说太多,只是说还有点炎症,开了一些止咳、镇咳、化痰的药物,并没有关于肺结节相关的药物。经过了解,肺结节是无法逆转的。 在回到老家后2天就先拜访几个长辈,这算是家族中一个规矩吧。在拜访他们之前,我还是确认了自己新冠转阴,否则我还真的担...

8个月前 (01-24) 388℃ 0评论 0喜欢

生活随笔

疑似新冠感染

独白 如标题所示,本博疑似新冠感染,为何说是疑似呢?因为并没有针对性的检查,没有做核酸,也没有做抗原,所以说是疑似。虽然说是疑似,经过几天的煎熬,这大概也就确认了。 在2022-12-20直到晚上回来都没有什么不良症状,看了一会电视剧就躺下休息一会,哪知道就这样睡了。其实睡觉状态其实不太好,感觉又冷又热,但是自己还是没有立刻醒来。直到早上闹钟响起来才起床,感觉有点发热,头有点疼,眼睛也有点不舒服。当时自己猜测可能是发烧了,体温计之前没有买到,所以体温也没有办法的知。想了一下,还是请假吧!万一是新冠岂不是把其他同事给害了?按道理来讲,2022-12-21应该算是第一天,就当作第一天吧! 2022-12-21 今天感觉到好像发热,头有点疼,眼睛有点不舒服。为了避免其他同事被我这疑似新冠感染,就随即申请了居家办公。 为了更好的观测体温,所以还是准备买一直体...

9个月前 (12-24) 523℃ 2评论 3喜欢

Web前端

Chrome浏览器中的XPath

背景 某一个应用自动在网页上获取一些文本内容,本来是通过document.querySelector来找指定节点。经过一段时间网页貌似升级了,一些节点的class属性的值会出现随机的变动,每次class属性的值都会不一样。最初的方式就失去了作用,根据节点内容的分析发现可以通过xpath来获取。曾经在IE浏览器上使用过XPath,并且API相当简单。在非IE浏览器上貌似没有这么好用。以下内容在Chrome浏览器进行尝试,经过测试可以完成自己的预期工作。 浏览器支持 Mozilla是根据DOM标准来实现对XPath的支持的。DOM Level 3附加标准DOM Level 3 XPath定义了用于在DOM中计算XPath表达式的接口。遗憾的是,这个标准要比微软直观的方式复杂得多。虽然有好多与XPath相关的对象,最重要的两个是:XPathEvaluator和XPathRes...

10个月前 (12-03) 479℃ 0评论 16喜欢

JavaScript

Javascript判断当前页面是否处于激活状态

背景 现有一个考试项目,当在浏览器进行考试时需要判断用户是否存在切屏,如果切屏就对当前考试进行自动强制交卷。浏览器中可通过window对象的onblur、onfocus判断,或者document的hidden属性判断。 获取焦点(onfocus)和失去焦点(onblur) 关于是否失焦点,浏览器对象有onfocus 和 onblur事件可以监听。但是触发这两个事件的前提是页面之前是获取焦点的,就是说要是激活的。也就是说页面刚刚渲染完,用户在没有页面上任何操作时,页面是不会正常监听这两个事件的;或者页面在打开状态下,但是触发了onblur之后并无页面操作的情况下也不会正常监听这两个事件。直到,用户操作页面触发focus,之后离开页面才会触发blur,再次点击到当前页面时才会触发focus,如此反复都会触发相应的事件。 onblur 在chrome浏览器下,点击...

10个月前 (11-21) 602℃ 0评论 5喜欢

Web前端

在非HTTPS站点中使用Content Security Policy引发的问题

背景 有一个客户需要对以前老项目部分功能进行升级,需要升级页面按照最新版本的内容进行更新,测试发现页面无法加载。F12使用开发者工具发现所有资源文件异常,所有的资源文件竟然自动将HTTP协议换成 HTTPS 协议。异常信息如下图所示: 项目目前部署是非HTTPS的,很奇怪为什么会自动转换为HTTPS资源。经过排查在异常页面中发现了问题,在head节点下发现以下代码 <meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests"> 以上内容会将HTTP协议自动转换为HTTPS协议。 Content-Security-Policy Content-Security-Policy(CSP)允许站点管理者控制用户代理能够为指定的页面加载哪些资源。除了少...

11个月前 (10-25) 313℃ 0评论 13喜欢

.net core

使用ABP框架UI找不到文件的异常

背景 自己的一个小应用使用了ABP框架最新内容创建了一个项目模板,为了快速的完成第一版就是用来ABP自带的UI框架。在测试项目模板正常与否的时候发现关于UI方面的异常信息,第一次使用ABP官方提供的UI框架,所以先在此做一下记录。 以下是异常信息: AbpException: Could not find the bundle file ‘/libs/abp/core/abp.css’ for the bundle ‘LeptonXLite.Global’! 解决方法 安装 abp cli命令行工具,地址 https://docs.abp.io/zh-Hans/abp/latest/CLI执行 abp install-libs,会自动把本项目最小依赖安装包自动安装到 /wwwroot...

12个月前 (10-05) 273℃ 0评论 14喜欢

.net core

.Net Core获取Window系统机器码

背景 因为朋友想做一个软件认证相关的东西,所以考虑到关于电脑唯一标识机器码的问题。关于机器码之前并没有真正实现过,也只是了解大概的原理。今天就做一下简单记录,以便以后使用。 机器码 机器码指的是软件根据计算机的硬件信息,例如:CPU、内存、主板序列号等,按照一定的算法生成的一串无规律的字符串,并且在不同计算机上生成的机器码是不一样的,因为每台计算机的硬件信息不一样。机器码,也叫序列号、认证码、注册申请码等。 代码实现 using System.Management; using System.Runtime.InteropServices; namespace HonourWorld.Core.Common { public sealed class MachineCode { private read...

12个月前 (10-04) 603℃ 0评论 3喜欢

C#

判断登录的QQ是否已经加入指定的QQ群之二

背景 任何事情都有一个原由,本篇内容也不例外。如标题所示,关于判断登录的QQ是否已经加入指定的QQ群的问题。为什么是之二?因为之前已经写过一次相关内容了。既然曾经已经写过一次为什么还要写第二次?因为今天早上收到了一个邮件通知,这个是博客评论通知,有人评论就以邮件形式告知。评论内容是这样的:c#那个QQ群验证已经无法使用了能更新下吗。如下图所示: 没有错,就如我回复的一样,示例程序的代码的确不可以用了,不过思路依然可以使用。 分析 其实没有什么好分析的,思路与上次一样。只是上次验证的地址(http://qun.qzone.qq.com)无效了,可能是下线了吧!不过QQ也有关于群里管理的网站(https://qun.qq.com/),这个网站依然可以实现这样的操作。实现比较简单,访问网址https://qun.qq.com/member.html并登录,然后通...

1年前 (2022-09-25) 712℃ 6评论 7喜欢

.net core

.NET CORE实现SHA1

背景 因业务需求,需要保存一些指定的字符串,但这些字符串可能相同。为了避免重复存储造成数据大量冗余,所以需要对这些字符串进行一些散列计算。使这一些相同的字符串产生唯一的标识,实现业务上的需求。关于字符串散列算法还是比较多的,例如:MD2、MD4、MD5、Sha1、Sha256、Sha512等等,在结合字符串散列碰撞以及散列最终长度考虑,最后选中Sha1作为此次散列算法。 SHA-1 (英语:Secure Hash Algorithm 1,中文名:安全散列算法1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。 .NET CORE 实现 SHA1 以下是使用.Net Core自带类库...

1年前 (2022-09-24) 474℃ 2评论 2喜欢

其他分享

Visual Studio Code(VS Code)意外放大后恢复设置

背景 使用VS Code的时候,自己没有注意到底操作了什么导致VS Code的字体整个放大了好多。原本以为关闭后重新打开就会恢复,结果还是没有任何效果。效果如下: 经过了解,应该是不小心触碰了缩放的快捷键。 解决办法 恢复的方法也比较简单,以下是第一种方式。 查看外观放大、缩小、重置缩放 嗯!没有错!应该是意外碰到Ctrl+=的快捷键了。 第二种方式,如下图所示: Window:Zoom Level调整窗口的缩放级别。原始大小是 0,每次递增(例如 1)或递减(例如 -1)表示放大或缩小 20%。也可以输入小数以便以更精细的粒度调整缩放级别。 本来是不打算记录的,想了一下最终决定记录一下。俗话说得好:”好记性,不如烂笔头”。 转载请注明:清风亦平凡 »...

1年前 (2022-09-20) 513℃ 0评论 3喜欢

Nginx

使用Nginx配置资源目录达到下载目的

背景 实施人员临时需要在客户服务器上配置一个可下载的目录,为了可以在内网进行交换文件。 Nginx配置 location /resources { #下载的资源目录 绝对路径 最后 "/" 结尾 alias /app/smart/logs/; autoindex on; autoindex_format html; #以html风格将目录展示在浏览器中 autoindex_exact_size off; #切换为 off 后,以可读的方式显示文件大小,单位为 KB、MB 或者 GB autoindex_localtime on; #以服务器的文件时间作为显示的时间 client_max_body_size 4...

1年前 (2022-09-05) 284℃ 0评论 10喜欢

PHP

WordPress自动对没有alt属性的img添加alt属性

背景 使用了微软必应搜索的站长工具,看到必应搜索工具中SEO报告提示错误蛮多。主要有两个错误提示,其中一个是关于页面描述内容长短问题,另外一个就是img标签没有alt属性的问题。页面固定img标签的alt属性比较容易改,而文章内容的img标签的alt属性就没有那么方便了。 博客使用的是wordpress,其实处理起来也没有那么麻烦。一种方法就是使用现成的插件,例如:SEO Friendly Images,另一种就是在使用模板目录下,找到functions.php函数文件添加自定义函数处理。 这里提供自定义函数,内容如下: //Wordpress判断并自动添加图片ALT属性 function image_alt($imgalt) { global $post; $title = $post->post_title; $imgUrl = "/&...

1年前 (2022-08-07) 261℃ 0评论 22喜欢

MySql

MYSQL修改数据库、表、字段字符集

背景 由于mysql低版本暴了漏洞,所以客户就升级了mysql版本。升级到了最新版8.0.30,升级最新版后,应用就再也查不出数据,恢复到最初的版本有可以查到数据。经过确认最初数据库的表字符集为utf8,升级后这些字符集自动修改为utf8mb3。新版本数据库移除了utf8字符集,而应用本身不支持utf8mb3,所以需要修改这些字符集。经过再次确认最新版mysql以及应用都支持utf8mb4,最终决定修改字符集为utf8mb4。 修改字符集 数据库 ALTER DATABASE 数据库名称 DEFAULT CHARACTER SET 编码名称 [COLLATE ...]; 例如: ALTER DATABASE activity CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci; 表...

1年前 (2022-08-05) 370℃ 0评论 2喜欢

.net core

.NET CORE引用Aspose.Words的异常Could not load file or assembly

背景 引用了一个第三方的dll库,编译无任何异常提示,但是运行就报异常。自从有了Nuget基本没有再使用直接引用dll这种方式了。经过确认dll也设置了输出到目录,在 bin目录也的确存在此dll库。 异常信息 Could not load file or assembly ‘Aspose.Words, Version=20.6.0.0, Culture=neutral, PublicKeyToken=716fcc553a201e56’. 系统找不到指定的文件。System.IO.FileNotFoundException: Could not load file or assembly ‘Aspose.Words, Version=20.6.0.0, Culture=neutral, PublicKeyToken=716fcc553...

1年前 (2022-08-01) 315℃ 0评论 3喜欢