详解 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 服务,之后又经 KayMW 推荐换搭了 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 这个词。 这篇对话很长,英语渣实在看不下去了 …

给路由器设置 IPv6 地址以访问 Google 服务(主要针对中国大陆地区)

这篇文章要说的,是通过路由器设置 IPv6 地址来访问 IPv4 所无法访问的网站(主要是记录一下本次折腾过程以后可能有用,其实这个方法应该很早以前就可以使用了,不过无所谓啦)。目前 GFW 是没有针对 IPv6 有很好的限制手段(以后的话以后再说吧),只是针对 IPv6 的 DNS 解析污染是很严重的( IPv4 的 DNS 污染更严重,不过就算没污染也无法访问就不去考虑啦)。

两个前提条件

  • 一个公网的 IPv4 地址(无所谓动态还是静态)
  • 一台支持刷第三方固件的路由器,我用的是 OpenWRT ,所以别的也就不清楚啦(如果就单单一台电脑需要上网,那就更简单了,就不多说明了,只在下面提一下)

准备好路由器

我的路由器是 网件的 R6250 和 华硕的 AC55U (掩面,都是渣渣,不过能用)。 R6250 是用于做外网网关的 …

CentOS7通过源码编译安装Zabbix3.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 …

通过travis自动转换markdown格式为html/pdf格式

[2017年6月9号标记:迁移到了新的博客,这套方案就不再使用了]

本文是关于通过pandoc转换markdown格式为html和pdf的,并由 travis-ci.org 自动编译转换生成到Github上。目的是因为我的主页目前没有富文本编辑器,使用markdown写文章是一个不错的选择,转换后再把html代码通过后台发布即可。因为都没有接触过类似的转换,所以花了很多时间,感觉必须要整理一下的。

必要的几个条件

  • 符合规则的 markdown 文件
  • pandoc (提供基本转换环境)
  • texlive & texlive-xetex & texlive-xetex-extra(转换为pdf)
  • 中文字体
  • 创建Makefile文件以实现批量转换
  • travis-ci.org的帮助(提供了Ubuntu12.04.5LTS的虚拟化编译平台)

安装基本的转换工具

针对Ubuntu12.04,5下安装pandoc如果使用cabal处理依赖关系总是出现版本不符合的问题,不知道如何解决,反而直接下载 deb包 来安装却非常简单,适合travis-ci虚拟机环境:

wget https://github.com/jgm/pandoc/releases/download/1.17 …

重新安装Gentoo Linux

可能是因为运行了某A开头VPN的Linux客户端安装脚本,加上@world更新以及内核重新配置,导致系统彻底崩溃,试了很多方法无果,干脆重新安装,也好重新整理。

写在前面

Gentoo和一般的Linux的发行版的对比就是Gentoo从一开始安装到最后的完善都需要自己慢慢配置,所有的内容都可以很方便地定制与个性化(从内核到桌面以及各种管理软件)。刚刚安装好的Gentoo占用的容量在900M左右,是一个非常非常低的占用量(当然也是因为没有庞大的桌面环境造成的,但是这对于需要轻量级窗口管理器Awesome的我来说再适合不过了)。 About Gentoo

本文主旨在于为自己整理一下以备不时之需,同时也希望有网友可以用于参考(但是要装Gentoo的大部分都会自己去看 官方的wiki 吧=。=)。文档会尽量详细,但是也不会显得很傻冒。

安装顺序是怎样的呢?Gentoo Wiki原文翻译

Gentoo的安装可以被看作是10个步骤,我会下后文一一说明,每一步骤完成后都有对应的一个状态:

步骤    完成状态

  1   我们进入了一个可以安装Gentoo的工作环境(livecd)
  2   Live CD 环境已经可以链接互联网络
  3     准备好了对应的磁盘空间用于存放系统文件(分区、格式化)
  4     一个最初的Gentoo系统环境已经出现,我们可以使用chroot命令进入这个环境做后续的配置
  5     完成了Gentoo基本系统的配置
  6     配置并安装好了Linux内核 …