2020 Sep 2020 Sep

Chrome 下 touch 事件 inline 元素监听不生效

昨天对博客首页进行了重新设计,使用原生 Javascript 对文章标题添加 Touch 监听事件时,因为一个疑似 BUG 导致了一系列奇葩的问题。

以下描述发生在 Blink 引擎浏览器内,也就是一般使用的 Chrome, Chromium 浏览器及以其为基础进行开发的其它浏览器;其它浏览器如 Safari, FireFox, iOS 上的 Chrome (webkit 引擎)则不会因为以下指出的不同而差异化表现。

  • 当 a 元素是默认的 inline 样式,且页面仅有 touchstart 或者 touchmove 监听事件,这针对 a 元素的两个事件都不会触发;
  • 当继续添加 touchend 监听事件后, touchstart 监听事件开始触发,但 touchmove 事件依旧不触发;
  • 再次添加 pointerdown 监听事件(应该还有其它事件也能帮助触发), touchmove 监听事件触发。

当把 a 元素样式改成 inline-block 或者 block 后,则一切正常…

/*This is placeholder text. This is placeholder text. This is placeholder text. This is placeholder text. |bitbili.net| This is placeholder text. This is placeholder text. This is placeholder text. This is placeholder text.*/
2020 Sep 2020 Sep

详解 Yubikey 5 NFC 的工作原理(整理)

OpenPGP 是一个用于签名和加密的开放标准。它通过像 PKCS#11 这样的接口,使用存储在智能卡上的私钥来启用 RSA 或 ECC 签名/加密操作。这个应用可以为验证、签名和加密各存一个 PGP 密钥。和 PIV 触摸策略类似, openPGP 应用也可以设置需要接触金属触点来允许一个操作。

  • Yubikey 5 NFC 仅支持 RSA 密钥,不支持 ECC 密钥
  • PGP 不用于 web 验证

支持的算法有:

  • RSA 1024
  • RSA 2048
  • RSA 3072
  • RSA 4096…
/*This is placeholder text. This is placeholder text. This is placeholder text. This is placeholder text. |bitbili.net| This is placeholder text. This is placeholder text. This is placeholder text. This is placeholder text.*/
2020 Aug 2020 Aug

Go 编程语言规范【译】

  • 对应英文原版 为 2020 年 01 月 14 日 版本: golang.org/ref/spec
  • 本文完整翻译了官方英文版,且后续会尽全力同步更新
  • 源代码托管在 我的 Github

这是一篇 Go 编程语言的参考手册。访问 golang.org 以获取更多信息及其它文档。

Go 是一个在设计时便考虑到系统编程的通用语言。它是强类型的、带垃圾回收的且明确支持了并发编程。程序是由包来构建的,包的特性允许对其依赖进行高效管理。

语言语法紧凑且易于解释,便于如集成开发环境(IDE)这样子的自动化工具分析…

/*This is placeholder text. This is placeholder text. This is placeholder text. This is placeholder text. |bitbili.net| This is placeholder text. This is placeholder text. This is placeholder text. This is placeholder text.*/
2017 Jun 2017 Jun

初识 SELinux

这是我第一次写关于 SELinux 的文章, SELinux 是一个比较庞大的强制访问控制方案,单单就控制原理而言是相对简单易懂的,复杂的是各种规则间的联系和束缚,以及如何选择。本文会从我对其理解的角度进行书写,关注点主要是实现和应用。

我是看的 Red Hat 的 SELinux User's and Administrator's Guide 入的门,本文则会使用我自己的话来进行总结和概括,以便于快速入门,看源链接的文档则可以更详细的了解到 SELinux,但有些内容比如各种策略的选择,工具的选择和介绍却是上文所缺乏的,我单独整理的也会在下文描述。

鉴于本文很基础,所以几个基本的名词我都会在文中以适当的形式说明。

注: 关于部分有争议的名词我不准备用中文表示,比如 type,class,subject 等等,被写成中文的均是我力所能及下认为绝对不会有争议或者本身就可以用中文描述的
注: 本文不会涉及到 SELinux 的 MLS 策略

什么是 SELinux 以及如何理解它

安全增强型 Linux( Security-Enhanced Linux …

/*This is placeholder text. This is placeholder text. This is placeholder text. This is placeholder text. |bitbili.net| This is placeholder text. This is placeholder text. This is placeholder text. This is placeholder text.*/
2020 Sep 2020 Sep

Q&A 启用 SELinux 的情况下,在 CentOS 上搭建 NextCloud/ownCloud 服务

本文记录了我在部署 ownCloud/NextCloud 时所遇到的问题,处理思路以及解决方案。

Q: 安装 ownCloud 后不断出现 SELinux 审计拒绝信息

不断出现类似这样子的审计信息:

type=PROCTITLE msg=audit(05/27/2017 00:26:03.559:129906) : proctitle=find /usr/local/bin /usr/bin /bin -name sendmail
type=SYSCALL msg=audit(05/27/2017 00:26:03.559:129906) : arch=x86_64 syscall=newfstatat …
/*This is placeholder text. This is placeholder text. This is placeholder text. This is placeholder text. |bitbili.net| This is placeholder text. This is placeholder text. This is placeholder text. This is placeholder text.*/
2017 Jun 2017 Jun

启用 SELinux 的情况下,在 CentOS 上搭建 NextCloud/ownCloud 服务

因为 AWS 下的服务到期了,速度太慢也不准备继续使用,转而更换到 Google TW 线路。也准备在启用 SELinux 的情况下重新搭一下 ownCloud 服务,之后又经 Kay 推荐换搭了 NextCloud ,两者配置基本相同,少许的我发现的配置差异会在文中说明。

本次搭建同时使用 redis 作为 Transactional Locking 的数据库,并使用 APCu 作为本地 memcache 过程。

因为篇幅问题,所以肯定不可能把所有的都说的很细,主要是重点。

选择 VPS

每次选 VPS 都是一个痛苦的过程,既要保证稳定性,又要求价格合理,到大陆的速度也不能太慢.. 我个人更追求稳定,速度其次。几番比较下来,选择 Google Cloud Platform 的原因在于其家大业大比较放心,操作面板确实非常方便 …

/*This is placeholder text. This is placeholder text. This is placeholder text. This is placeholder text. |bitbili.net| This is placeholder text. This is placeholder text. This is placeholder text. This is placeholder text.*/
2017 Jul 2017 Jul

理解常用网络协议

OSI & TCP/IP 参考模型

理解协议之前先说说两个计算机系统之间通讯的常用概念模型:

OSI
开放系统互联参考模型(Open System Interconnect Reference Model),是用于特征化标准化电信通讯/计算机间通讯(而不需要关心其底层实现和技术细节)而被国际标准化组织定制的,其一共有 7 个抽象层。
TCP/IP 参考模型
同样是一个概念模型,其实它正式的名称应该是 互联网协议套件(Internet protocol suite),因为其原始协议为 TCP 和 IP 协议而被一般称为 TCP/IP 参考模型。它有时也因为其开发受到美国国防部下属机构资助而以 DoD 模型(Department of Defense Model) 被人知晓。
这个套件包含了一系列常用的网络通讯协议,定义了端对端通讯如何打包、确定地址、发送、路由寻址、接收数据 …
/*This is placeholder text. This is placeholder text. This is placeholder text. This is placeholder text. |bitbili.net| This is placeholder text. This is placeholder text. This is placeholder text. This is placeholder text.*/
2017 Feb 2017 Feb

关于 Golang 内存模型

最近开始学习 Go 语言,在看到其 内存模型 的时候一度懵逼了,主要是碰到关于信道的其中两句概念整理以为冲突了,先整理自己的理解如下。

原文

A send on a channel happens before the corresponding receive from that channel completes.

A receive from an unbuffered channel happens before the send on that channel completes.

从字面意思来看:

  1. 发送到信道的动作发生在对应的接收动作完成之前(这个是针对带缓冲区域和不带缓冲区域的)
  2. 针对不带缓冲的信道,从信道接收的动作要发生在发送数据到信道动作完成之前…
/*This is placeholder text. This is placeholder text. This is placeholder text. This is placeholder text. |bitbili.net| This is placeholder text. This is placeholder text. This is placeholder text. This is placeholder text.*/
2016 Aug 2016 Aug

CentOS7 通过源码编译安装 Zabbix 3.0 (PHP + Mysql + Nginx)

开始学习如何使用Zabbix,从最基础的安装做起。CentOS上默认的Zabbix是默认Apache的,且版本较低,我比较追求新版本,明明白白安装软件的感觉,遂自行编译更加合适。

准备工作

  • yum 安装的mysql(mariadb-server),这个不多说。
  • 编译安装的php7.0.10 和 nginx1.10

Q:如何编译安装php7呢?

A:难点在于编译选项和依赖关系,整理步骤如下…

/*This is placeholder text. This is placeholder text. This is placeholder text. This is placeholder text. |bitbili.net| This is placeholder text. This is placeholder text. This is placeholder text. This is placeholder text.*/