sbw Blog
  • 来源: sbw Blog | 浏览: 29 | 评论: 0 | 时间: 2019-04-13
    了解过 C 语言的应该都知道,在 C 标准库中的 rand 函数实际上是一种伪随机数生成算法。它使用“线性同余”算法进行一个迭代计算,这样计算的结果虽然分布上是满足随机分布的,但在得知具体算法及观察了当前数据之后,后续的随机数是可“预测”出来的。为了尽可能得到更“随机”的随机数,有很多种办法,而使用 CPU 内置的硬件随机数生成指令就是其中一种。
  • 来源: sbw Blog | 浏览: 77 | 评论: 0 | 时间: 2019-04-02
    vsftpd 是 Unix 环境下一款功能强大的 ftp 服务器程序,它是Very Secure FTP Daemon的简写。虽然 ftp 协议已经很古老,不经常使用了,但是在同步大量文件的时候,ftp 还是要比 scp 等文件传输方式来的方便的多。由于默认的 ftp 是明文传输,为了安全,一般要配合 SSL 加密同时使用。
  • 来源: 石博文博客 | 浏览: 64 | 评论: 0 | 时间: 2019-04-01
    平时在家用的笔记本由于从来没移动过位置,为了网络稳定就直接插上有线使用了。由于无线网络开着会一直扫描 WiFi 热点,也会占用一些资源,于是我就把无线开关直接关掉了。但是偶尔笔记本也要带出去或者在其它地方用一下,这时候拔掉网线后又要去打开无线网络的开关,就很烦。于是索性直接利用 NetworkMangaer 的 dispatcher 功能:实现了在有线插入时,自动关掉无线;有线网络拔出时,自动打开无线这个功能。
  • 来源: 石博文博客 | 浏览: 80 | 评论: 0 | 时间: 2019-03-31
    最近把自己的博客网站使用 Rust 语言重写了,利用的是 actix-web 这个框架。然后就一直想实现文章评论的回复邮件提醒这个功能,由于是自己写的网站,而且 actix-web 也没有提供像 wordpress 那样丰富强大的插件系统,所以这个需求就只能自己实现了。查了一圈之后,发现 lettre 这个库的 API、doc 什么的都比较完善,甚至直接提供了一个发邮件的 example,于是就准备利用这个库来实现一个发邮件的功能。
  • 来源: 石博文博客 | 浏览: 66 | 评论: 0 | 时间: 2019-03-29
    上一篇已经成功深入到指令层面了,这一篇就开始使用 IRBuilder 对函数流程进行修改,使得“不安全”版本的除法函数也增加对除数的零检查。因为除法指令分为整数除法、浮点数除法等等,而例如整数除法又可以细分为有符号数除法、无符号数除法,同时每种除法又根据类型不同分为32位除法、64位除法....。这里为了演示效果,我们只实现了32位的有符号除法。仅仅满足了测试代码的要求,如果要真的在生产中实现这个功能,细节上的很多问题还是要仔细分类处理的。
  • 来源: 石博文博客 | 浏览: 64 | 评论: 0 | 时间: 2019-03-29
    上一篇中实现了一个简单的编译器插件,它的作用仅仅是在编译过程中输出所有函数的名称。那么这一篇就更深入一步来观察LLVM的中间代码及指令生成部分,从而确定应该如何修改并添加程序逻辑,以实现我们最初的“除法保护”的功能。本篇主要介绍了LLVM编译系统的一些特点及典型用法,包括LLVM的模块划分,IR中的SSA(静态单赋值)概念与 PHI 节点的概念,以及如何使用 LLVM 的 IR Builder 在编译过程修改或插入一些逻辑代码。
  • 来源: 石博文博客 | 浏览: 80 | 评论: 0 | 时间: 2019-03-28
    在上一篇中介绍了LLVM/Clang的编译器插件可以用来进行一些简单的编译器功能扩展,从这篇开始就一步步来实现这个编译器插件。本篇主要介绍了如何建立LLVM/Clang编译器插件的开发环境及开发目录配置,如何使用CMake编译系统组织起整个工程项目来,以及使用最基本的LLVM趟管理器遍历输出函数信息等。
  • 来源: 石博文博客 | 浏览: 75 | 评论: 0 | 时间: 2019-03-27
    LLVM/Clang 提供了编译器插件机制可供扩展编译器的功能,实际上 LLVM/Clang 本身的很多功能也是以插件方式注册到编译器系统中进行实现的。在一些对安全要求极端苛刻的环境下,或是一些特殊的硬件平台中,总有一些奇怪的需求,而这些定制化的功能如果不是很复杂,就没有必要大动干戈去修改编译器,可以使用编译器插件来完成。这个系列文章设想一种需要进行除法保护的应用场景,需要在编译层面对除法进行强制检查,以杜绝除零异常的发生。
  • 来源: 石博文博客 | 浏览: 109 | 评论: 0 | 时间: 2019-03-25
    Let's Encrypt 现在已经支持免费的泛域名证书了。之前为 u.sbw.so 及 blog.sbw.so 等申请了好几个证书,由于申请时间不同,所以续期的时间也不同步,这样管理起来比较费事,所以最近索性全部换成了同一个泛解析的证书。过程中发现 Let's Encrypt 的文档还是介绍的不够清楚,操作起来比较费事,尤其是 DNS 验证这里,只是在 Certbot 这个软件中有一些提示,具体的用法在官网上也没有例子,查了好多文档摸索了半天终于弄好了,在此分享一下。
  • 来源: 石博文博客 | 浏览: 82 | 评论: 0 | 时间: 2019-03-24
    POJ 1007 这个题是一个难度一般的算法题,核心是要计算每一个字符串的权值然后累加并排序。在本题中,这个权值是指为字符串中的每一个字母计算它后面有多个个字母比它小,即发生了多个次“反转”。从这个描述的一般认识来看,这是个 N^2 复杂度的模拟问题,核心在于算法优化及找模型。但由于题目的测试数据比较简单,使用 N^2 复杂度的简单方法也可以很容易通过。这就导致了这个题目的实际比赛难度其实很低。这里从解题思路及推导过程给大家做一个线性复杂度,O(N) 解题方法的分享。
  • 来源: 石博文博客 | 浏览: 105 | 评论: 0 | 时间: 2019-03-22
    SSH 为 Linux 环境下最常用的远程连接协议,它是 SecureShell 的简写。SSH 除了可以用作安全的远程 shell 来对主机进行管理外,其套件中还包括 scp 等文件传输工具,方便本地与远程主机的文件传输。通过配置 ssh 的信任公钥证书,可以实现无密码的登陆,这在经常需要远程登陆服务器,或是一些自动化脚本,不方便写明密码的场景中非常实用。
  • 来源: 石博文博客 | 浏览: 89 | 评论: 0 | 时间: 2019-03-21
    Nginx的访问日志access.log中记录了所有的访问历史及相关信息。对这个记录文件进行分析,可以有助于站长对网站的受众群体,流量状况等进行分析。这里为大家介绍一个专门用于日志分析的工具:GoAccess。
  • 来源: 石博文博客 | 浏览: 102 | 评论: 0 | 时间: 2019-03-21
    POJ 1005,船屋。这是一道比较简单的几何相关的计算题,只需要推导出公式即可轻松解决。不过这个题的英文描述理解起来挺抽象,大概意思是:从坐标(0, 0)开始,有一个圆形的区域,第1年的时候,这个圆形的面积为0。这个圆形每年扩大,每年扩大的面积是50,问给定一个坐标(x, y),这个圆形多久能覆盖到这个坐标。