身份认证的几种方式
身份认证的目的是确认当前所声称为某种身份的用户,确实是所声称的用户。简单来说,就是为了确认你是你。
身份认证大致可分为三种:基于生物学特征的身份认证、基于共享密钥的身份认证以及基于公钥加密算法的身份认证,以下分别说明:
正则表达式小记
正则表达式,即Regular Expression,直译为描述某种规则的表达式,通常被简写为regex或RE,是指使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。
基本语法
?
:匹配前一个字符0次或1次+
:匹配前一个字符1次或多次*
:匹配前一个字符0次、1次或多次|
:代表选择(即或集),具有最低优先级()
:用来定义操作符的范围和优先级[abc]
:匹配任何一个列在方括号中的字符,在这个例子中,要么匹配一个a,要么匹配一个b,要么匹配一个c[0-9]
:如果在方括号中使用短划线分隔两个字符,表示所有在这两个字符范围内的都可以匹配,在这个例子中,表示匹配所有0到9的数字^
:匹配行的开头,如^abc
表示匹配以abc开始的一行
编写规范的 README 文档
代码不仅是写给计算机的,也是写给人的,一篇文档的好坏直接影响着使用此代码的人的心情,针对小的项目,一般使用 README 文件来做整体描述,README 这个名字也极好的反映了此文件的目的,即“读我”。有趣的是,README 这 6 个字母通常都是大写的,这是因为在 Linux 中大写的文件名往往意味着醒目和值得注意。实际上,并没有任何人规定 README 文档应该写成什么样子,但在本文中,我将介绍一些被公认的所谓优秀的 README 文档应该是什么样子的。
开源协议漫谈
开源协议(Open Source License)往往又被称为开源许可证,世界上的开源协议大约有上百种,但最常见的也无非6种而已,即GPL、LGPL、Mozilla、Apache、BSD和MIT,下文将逐个介绍,此外,本文还介绍了CC BY-NC-SA协议。
如何比较两个文件之间的差异
Windows
在Windows下,可以使用系统自带的fc
命令(即file compare的缩写),比如fc game_old.js game_new.js
,结果如下:
1 | 正在比较文件 game_old.js 和 GAME_NEW.JS |
可见,fc
命令会把两个文件中不同的片段显示出来,并分别标注属于哪个文件。输入fc /?
可以查看fc
命令的更多参数。
RSA 加密算法
RSA 加密算法中的 3 个字母分别是由此算法的 3 位发明者:Ron Rivest,Adi Shamir,Leonard Adleman 的姓氏首字母组成的,RSA 加密算法可以说是现代密码学中非对称加密的一个典型,所谓非对称加密其实就是公钥用于加密,私钥用于解密而已。
在介绍 RSA 之前,先要理解一个基本常识,就是几乎所有的现代密码学算法背后都是基于因数分解难题发明的,所谓因数分解难题就是指目前没有一个快速的计算机算法可以对极大整数做因数分解。
代理链工具:proxychains
proxychains ,顾名思义,是一种代理链工具,它可以强制任何 Linux 下的命令行应用使用其提供的代理连接到网络。Linux 中有的应用本身并不支持代理,这时便可以使用 proxychains 强制其使用代理。
盘点那些互联网公司的学生优惠
JetBrains
JetBrains是捷克的一家软件公司,该公司专业生产各种编程语言的IDE,其中包括Java的IDE —— Intellij IDEA,Python的IDE —— PyCharm,JavaScript的IDE —— WebStorm,C/C++的IDE —— CLion等等。JetBrains系列的IDE一直以强大易用著称,甚至有人说,一个优秀的程序员应该使用JetBrains全家桶。
JetBrains的大多数IDE都是收费的,有的分为社区版(Community Edition)和专业版(Professional Edition)两种,专业版相比社区版有更多的功能,但也会收取相应的费用,然而,JetBrains对学生提供免费授权计划,学生只要验证学生身份即可免费使用JetBrains的所有IDE。
Jupyter Notebook 常用扩展
扩展机制
在介绍常用扩展之前,有必要先来介绍一下 Jupyter Notebook 的扩展机制:本质上来说,所有的 Jupyter Notebook 扩展都是一个个的 Python 包,所以大部分可以通过 pip
快速安装,另外,Jupyter Notebook 是一个典型的 B/S 架构的应用,用户通过访问浏览器来使用 Jupyter Notebook,因此,Jupyter Notebook 的扩展可以只针对服务器端,也可以针对前端资源页面,而如果一个扩展增强了 Jupyter Notebook 的前端资源页面,则它还必须使用如下命令安装资源:
1 | jupyter nbextension install helpful_package --py # or --sys-prefix if using virtualenv or conda |
安装完资源后,如果这个资源需要在每次 Jupyter Notebook 启动后被加载,则还应使用如下命令启用资源:
1 | jupyter nbextension enable helpful_package --py # or --sys-prefix if using virtualenv or conda |
jupyter_contrib_nbextensions
与其说这是一个扩展,倒不如说这是一群扩展,该扩展集合了大多数的 Jupyter Notebook 常用扩展。
使用 pip install jupyter_contrib_nbextensions
命令即可安装,安装完成后使用 jupyter contrib nbextension install --user
命令进行些许配置,参数 --user
指定安装到当前用户家目录下的 .jupyter
文件夹下。
等到安装并配置完成后,打开 Jupyter Notebook 网页,会出现 Nbextensions
选项卡,点击进入此选项卡中,可以启用或禁用相应的扩展。
RISE
该扩展可以将 Jupyter Notebook 中的一个个单元格转换为一张张的幻灯片。
使用 pip install RISE
命令即可安装,安装完成后使用 jupyter-nbextension install rise --py --sys-prefix
命令安装前端资源,接着使用 jupyter-nbextension enable rise --py --sys-prefix
命令启用前端资源。