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

  • 操作温度: 0 °C - 40 °C
  • 存储温度: -20 °C - 85 °C

USB 接口

USB 2.0 接口,当连接计算机时,它会把自己表现为除了其它单独 USB 接口外额外的一个 USB 综合设备。其 USB PID 和 iProduct 字符串会根据配置的 USB 接口类型改变,如下表。 Vendor ID 是 0x1050

USB Interface PID iProduct String
OTP 0x0401 YubiKey OTP
FIDO 0x0402 YubiKey FIDO
CCID 0x0404 …

如何应对失眠

你说你一直失眠,我曾经失眠也非常厉害,现在有了好转,不过在我整理完这些内容后,我给自己判断也依旧有存在慢性失眠。所以让我们一起来看一下该如何面对这个症状。

我搜了一下排名考前的文章来整理,前面会做摘录和添上自己的情况,最后会写上自己对整个整理内容的判断。

来自早安健康

以下来自 https://www.everydayhealth.com.tw/article/18982

負面的睡眠思維會讓短期失眠惡化為長期失眠。它會讓對睡眠的不正確想法,變成一種自我應驗預言。如果你相信這樣的思維,就會因為壓力增加而更難入睡。負面的睡眠思維將導致消極的情緒(比如憤怒),以及所有與憤怒相關的生理化學變化,這些變化都會產生刺激作用而非鎮靜作用。 我在整理完了后来看,上面这段话有很大的比重,一定要在意下

半夜醒來失眠? 这是我现在遇到的问题

糾正你的錯誤思維,並且用正確的資訊來取代它們。例如,如果你在半夜醒來,不妨嘗試用下列方法來解釋你的失眠:

  • 我可能會再次睡著或睡不著。不論是哪種結果,都不會是世界末日。
  • 沒什麼大不了的,至少我沒有失去核心睡眠。 这是我的自我暗示
  • 如果今天晚上我睡不好,明天晚上我就會睡得非常好。 这也是我的自我暗示,还会告诉自己明天白天一定不能睡

這種方法會讓你感到自相矛盾,卻會幫助你重新入睡。透過採用合理的睡眠思維 …

Go 编程语言规范【译】

  • 英文原版 为 2018 年 11 月 16 日 版本: golang.org/ref/spec
  • 翻译中针对可能有歧义/不明确/翻译后不易于理解的单词将直接使用原词汇
  • 为了行文工整,代码块内可能使用英文表述
  • 因为学习语言需要,所以翻译
  • 有些翻译可能比较迷糊,我会在进一步学习后完善它们
  • 文中实参仅代表 argument;参数仅代表 parameter,有时候也会译为形参

介绍

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

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

语言语法是紧凑且常规的,便于如集成开发环境(IDE)这样子的自动化工具所分析。

标记法

标记法语法指定使用扩展巴科斯-瑙尔范式(EBNF):

Production  = production_name …

初识 SELinux

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

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

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

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

什么是 SELinux 以及如何理解它

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

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 …

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

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

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

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

选择 VPS

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

理解常用网络协议

OSI & TCP/IP 参考模型

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

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

关于 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. 针对不带缓冲的信道,从信道接收的动作要发生在发送数据到信道动作完成之前。

一开始怎么也无法理解,然后查到 邮件列表的讨论 ,特别注意到了 completes 这个词。 这篇对话很长,英语渣实在看不下去了 …

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

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

准备工作

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

Q:如何编译安装php7呢?

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

  1. 下载 PHP源码包 /usr/local/src 目录下,解压后进入安装目录。(sha256sum:348476ff7ba8d95a1e28e1059430c10470c5f8110f6d9133d30153dda4cdf56a)
  2. 使用yum安装epel-release
  3. 编译安装我写了一个脚本如下(php-fpm):
#!/bin/bash
#

CONF="--prefix=/usr/local/php/ \
  --enable-fpm \
  --with-config-file-path=/usr/local/php/etc \
  --with-fpm-user …

Windows10下的UEFI引导流程解析和引导修复说明

Windows10下EFI分区文件结构(仅说明3个必要文件):

(EFI分区)..................此分区必须为Fat32格式,不然UEFI固件将无法识别
|
+--EFI
  |--Microsoft
  |  +--Boot
  |     |--bootmgfw.efi...一个针对Windows的efi应用,使Boot Menu界面上的Windows Boot Manager可以工作
  |     +--BCD............启动配置文件,用户编辑启动菜单以及默认的启动顺序等
  |--Boot
      +--bootx64.efi.......一个针对UEFI的统一efi应用,可以针对所有的系统。如果是32位系统,则是boota32.ef

引导流程

                                     计算机加电
                                        |
                                      BIOS自检
                                        |
                                    UEFI固件启动
                                        |
                        根据NVRAM下的BootOrder顺序加载启动设备
                                        |
              获取对应启动设备下第一个存有正确efi应用的Fat32格式分区并加载
                                        |
                            读取efi应用信息,加载到BCD文件
                                        |
读取BCD文件下的记录以加载系统,默认Windows10系统是加载C:\Windows\System32\winload.efi应用
                                        |
                  接下来就交给系统服务了。这样子就完成了系统的启动过程

说明一下:

  • 什么叫做根据NVRAM下的BootOrder顺序加载启动设备,这个里面有几个知识点
    1. NVRAM(非易失性存储器) 是BIOS用于存储本计算机启动设备信息的载体,可以通过 bcdedit …