在要求输入邮箱的文本域,请填写真实的邮件地址。非真实邮件地址,将收不到回复信息。

 分类:代码世界

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...

1个月前 (12-03) 44℃ 0评论 15喜欢

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

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

2个月前 (11-21) 41℃ 0评论 3喜欢

在非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)允许站点管理者控制用户代理能够为指定的页面加载哪些资源。除了少...

3个月前 (10-25) 48℃ 0评论 13喜欢

使用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...

3个月前 (10-05) 25℃ 0评论 14喜欢

.Net Core获取Window系统机器码

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

3个月前 (10-04) 78℃ 0评论 2喜欢

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

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

4个月前 (09-25) 135℃ 6评论 6喜欢

.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自带类库...

4个月前 (09-24) 73℃ 2评论 2喜欢

使用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...

4个月前 (09-05) 59℃ 0评论 9喜欢

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 = "/&...

5个月前 (08-07) 56℃ 0评论 21喜欢

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; 表...

5个月前 (08-05) 115℃ 0评论 2喜欢

.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...

5个月前 (08-01) 109℃ 0评论 3喜欢

解决MYSQL连接异常:SQLSTATE[HY000] [2054]

异常信息 SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client[/app/thinkphp/library/think/db/Connection.php:295] 原因 MySQL8中用户的认证类型(Authentication type)默认为cacheing sha2 password导致的错误,需要修改用户权限认证方式为mysql_native_password。 我这个错误就是因为数据库升级导致的。 解决办法 数据库降级,退回以前版本改为mysql_native_password认证方式 数据库退回以前的版本,这里不进行操作了。下面只针对认证方式改回mysql_native_password的方式。 修...

5个月前 (07-29) 59℃ 0评论 1喜欢

.net core在Linux系统报Gdip异常的问题

背景 .net core 应用中使用了Excel文件导出,发现Excel导出失败,导出的操作出现了异常。看了一下是Gdip的这个异常。这个异曾经见到过,记得也很快解决了,不晓得为什么又会出现呢?仔细看了一下,详细错误还是有点差别。经过确认上一次安装的libc6-dev、libgdiplus是存在的,并没有丢失或者损坏。 根据异常信息,基本可以确定是引用System.Drawing.Common类库引起的问题,经过排查发现引用的Excel组件Magicodes.IE.Excel.Abp包中有使用System.Drawing.Common。前几天还好好的,现在为何System.Drawing.Common不支持非Windows平台呢?只是确定引用的System.Drawing.Common库的版本是6.0,其他的就没有太多线索。 最后又看一遍异常信息,根据异常提示打开所提示...

9个月前 (04-08) 148℃ 0评论 27喜欢

使用sqlserver的排名函数实现积分排名

背景 客户需要针对用户的积分进行排名,按照积分的多少降序进行。为了更快更好的满足客户需求,就采取了SQL Server已有的排名函数RANK或DENSE_RANK来实现 RANK 返回结果集的分区内每行的排名。 行的排名是相关行之前的排名数加一。 ROW_NUMBER 和 RANK 类似。 ROW_NUMBER 按顺序对所有行进行编号(例如: 1、2、3、4、5)。 RANK 为相应关联提供相同的数值(例如: 1、2、2、4、5)。 RANK是运行查询时计算出的临时值 语法 RANK ( ) OVER ( [ partition_by_clause ] order_by_clause ) 如果两个或多个行与一个排名关联,则每个关联行将得到相同的排名 DENSE_RANK 此函数返回结果集分区中每行的排名,排名值没有间断。...

9个月前 (04-06) 78℃ 0评论 3喜欢

C#使用正则表达式移除字串符前后指定的字符串

有时候一些需求,移除字符串前后指定的字符串。其实,如果没有仅移除一次的需求,使用系统自带的方法即可完成,使用Trim、TrimEnd、TrimStart方法也比较快捷。当有一些特殊需求的时候,这些方法就不再方便。所以,就使用正则表达式简单的实现相关需求。 字符串扩展代码实现 public static partial class Extensions { /// <summary> /// 移除字符串前后指定的字符串 /// </summary> /// <param name="value">字符串本身</param> /// <param name="trimContent">将要移除字符前后的指定内容</param> //...

9个月前 (04-04) 254℃ 0评论 1喜欢

移动端页面禁用缩放

背景 在调整一个移动端的页面,测试过程中发现在苹果IOS系统的浏览器中缩放异常,其实页面操作上来讲是不需要当前页面缩放的。所以,就需要禁止当前页面的缩放操作。经过确认,可以使用以下代码实现禁止缩放操作。 <meta name="viewport" content="width=device-width,initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no"> Viewport 属性名取值描述width正整数或device-width定义视口的宽度,单位为像素height正整数或device-height定义视口的高度,单位为像素,一般不用initial-scale[0.0-10.0]定义初始缩放值minimum-scale[0.0-10.0]定义放大...

12个月前 (01-15) 79℃ 0评论 0喜欢

基于dotnet官方的aspnet5的镜像构建安装libgdiplus基础镜像

背景 在.net 5应用中,使用了Excel文件处理,在Docker容器中运行就会出现关于libgdiplus的异常。虽然在Dockerfile中可以使用以下内容解决异常,但是这个速度太慢了。每次构建慢的让人怀疑人生,最重要的是还可能失败。 RUN apt-get update && apt-get install -y libgdiplus libc6-dev && ln -s /usr/lib/libgdiplus.so /usr/lib/gdiplus.dll 为了提高构建速度,所以使用官方的基础镜像再二次构建一个基础镜像,默认安装 libgdiplus ,这样每次构建速度就会提升好多好多。默认安装了libgdiplus等库,以便支持Excel导入导出 构建基础镜像的Dockerfile Dockerfile ...

1年前 (2021-12-18) 162℃ 0评论 61喜欢

.NET 5中使用GB2312编码报错的问题

背景 在使用.net 5构建应用时,在处理某些编码问题使用了GB2312,应用运行后报错。经过确认知道了编码 GB2312 默认不支持。 异常信息 Not Support Encoding’GB2312′ is not a supported encoding name. For information on defining a custom encoding, see the documentation for the Encoding.RegisterProvider method. (Parameter ‘name’)System.Exception: Not Support Encoding’GB2312′ is not a supported encoding name. For inf...

1年前 (2021-12-17) 96℃ 0评论 3喜欢

MySQL存储过程中使用游标

游标 游标的设计是一种数据缓冲区的思想,用来存放SQL语句执行的结果。游标是一种能从包括多条数据记录的结果集中每次提取一条记录的机制。 游标的特性 游标具有以下三个特性: 不敏感(Asensitive)数据库可以选择不复制结果集只读(Read only)不滚动(Nonscrollable)游标只能向一个方向前进,并且不可以跳过任何一行数据 游标的优点 游标是针对行操作的,对从数据库中SELECT查询得到的结果集的每一行可以进行分开的独立的相同或不同的操作,是一种分离的思想。游标是面向集合与面向行的设计思想之间的一种桥梁。 游标的缺点 游标的主要缺点是性能不高。游标的开销与游标中进行的操作相关,如果在游标中进行复杂的操作,开销会非常高。 游标的适用场景 MySQL数据库中,可以在存储过程、函数、触发器、事件中使用游标。 ...

1年前 (2021-08-28) 105℃ 0评论 42喜欢

Mysql脚本实现行转列

背景 某项目数据统计,为了更加直观显示一些数据,刚好有这个行转列的一个需求。行转列的需求其实在平常业务中也是比较常见的,在数据统计中使用的比较频繁。行转列以前也遇到过,之前数据库使用的是Microsoft SQL Server。目前使用的是MySQL数据库,这里也做一下简单的记录。 实现 结构与数据准备 为了更好的理解行转列,这里准备一张结构简单都表以及数据。 DROP TABLE IF EXISTS `project_completion_rate`; CREATE TABLE `project_completion_rate` ( `id` int(8) NOT NULL, `project_user` varchar(20) DEFAULT NULL, `project_content` varchar(20) DEFAULT NULL...

1年前 (2021-08-09) 105℃ 0评论 7喜欢

.Net访问Windows共享目录

背景 无意见又翻到了曾经的一些项目,看到了关于.Net访问Windows共享目录的一些代码。曾经在内网通过共享目录作为服务器文件的存储方式,个人觉得部分的实现代码可以记录下来作为备份。所以,整理了以下代码。 代码实现 公用内容 /// <summary> /// IdentityScope 的摘要说明 /// </summary> public class IdentityScope : IDisposable { // obtains user token [DllImport("advapi32.dll", SetLastError = true)] static extern bool LogonUser(string pszUse...

2年前 (2021-06-29) 115℃ 0评论 11喜欢

System.Data.OracleClient需要Oracle 客户端软件version 8.1.7或更高版本

背景 因业务需求需要进行数据同步,客户又没有提供相关的接口。经过协商,客户提供相关视图直连他们数据库。 数据库:Oracle 11g 问题 使用.net访问Oracle数据出现以下错误: System.Data.OracleClient 需要Oracle 客户端软件 version 8.1.7 或 更高版本 解决 找到Oracle安装文件夹找到oci.dll、oraociei11.dll两个dll文件将以上两个文件放到system32目录下或者程序的bin目录下 下载 Oracle_11g提取码:hrbc 以上下载地址中的文件就是本文中提到的两个DLL文件 转载请注明:清风博客 » System.Data.OracleClient需要Oracle 客户端软件version 8.1.7或更高版本...

2年前 (2021-06-23) 239℃ 0评论 7喜欢

.NET读取Pem证书私钥解密

背景 因业务需求的需要,要与第三方进行相关的数据对接,按照第三方规定需要对其数据通过私钥进行RSA解密。第三方提供了相关的Pem证书文件,但是这种格式的证书文件.NET并不能直接使用,需要进行相关的转换。 pem在转XML时需要依赖一个第三方库BouncyCastle。 下载 BouncyCastle 如果通过官网下载比较慢,可以使用本博以上链接下载。 代码实现 using System; using System.Text; using System.Security.Cryptography; using System.IO; using Org.BouncyCastle.Crypto.Parameters; using Org.BouncyCastle.Security; namespace CommonTool.Share....

2年前 (2021-06-14) 155℃ 0评论 10喜欢

Microsoft SQL Server跨服务器查询

创建链接服务器 sp_addlinkedserver 创建链接服务器。 链接服务器让用户可以对 OLE DB 数据源进行分布式异类查询。 使用 sp_addlinkedserver 创建链接服务器后,可对该服务器运行分布式查询。 如果链接服务器定义为 SQL Server实例,则可执行远程存储过程。 语法 sp_addlinkedserver [ @server= ] 'server' [ , [ @srvproduct= ] 'product_name' ] [ , [ @provider= ] 'provider_name' ] [ , [ @datasrc= ] 'data_source' ] [ , [ @location= ] '...

2年前 (2021-05-23) 117℃ 0评论 5喜欢

docker查看日志

在工作当中有时候需要查看指定容器的日志记录,当日志比较多的时可以通过参数来进一步筛选。 命令格式 Usage: docker logs [OPTIONS] CONTAINER Fetch the logs of a container Options: --details 显示更多的信息 -f, --follow 跟踪实时日志 --since string 显示自某个timestamp之后的日志,或相对时间,如42m(即42分钟) --tail string 从日志末尾显示多少行日志, 默认是all -t, --timestamps 显示时间戳 --until string 显示自某个timestamp之前的日志,或相对时间,如42m(...

2年前 (2021-05-19) 222℃ 0评论 4喜欢