sbw Blog
  • 来源: sbw Blog | 浏览: 52 | 评论: 0 | 时间: 2019-06-14
    在第二面之后的三周,终于收到拒信了2333。不过还是复盘并记录一下这次的面试经历,为以后跑路做准备。从面试的结果来说,至少是和我的准备情况想匹配的吧,匆忙上阵还是有点乱阵脚,所以最近准备先刷刷题再找机会了。整体来说,面试的感觉还是不错的。个人目前对字节跳动的整体印象也挺好(除了他们的工作时间)。算是挺技术向,而且感觉人都挺有激情的吧。
  • 来源: sbw Blog | 浏览: 497 | 评论: 2 | 时间: 2019-06-07
    最近又有一大波 vps 遭殃了,和以前的某个端口被干扰不同,这次被 gfw 盯上的主机算是完全的“失联”了,以至于像 ssh、ping 这样的数据包都完全被阻断。而一旦你的 ip 被像这样阻断后,这个 ip 在一个无法预估的时间内都无法正常使用,因此很多服务商也会拒绝换 ip、换数据中心这样的操作。那么只好利用 CloudFlare 这样的 CDN 服务做跳板,配合 simple-obfs 或 V2Ray 这样的流量混淆服务来拯救了。
  • 来源: sbw Blog | 浏览: 178 | 评论: 6 | 时间: 2019-05-26
    虽然我已经决定在老家混日子养老了,但最近还是被一个老同学“忽悠”着内推了字节跳动。被同学一教育,搞得我也确实想再去大城市拼搏一把了。到目前已经面试了两轮了,不得不说长时间不做题,有好些东西都忘了。在这里也算复盘一下,巩固一下基础吧。
  • 来源: sbw Blog | 浏览: 104 | 评论: 1 | 时间: 2019-05-13
    之前在网上看一个教程视频,里面的小伙在使用一个独立的repo仓库管理自己所有的配置文件,这样所有的配置文件就可以在不同电脑上“同步”了。感觉这种方式挺好用的,再加上最近GitHub可以免费创建Private Repo了,于是也把自己的配置文件收集了一下,统一放在仓库进行管理。
  • 来源: sbw Blog | 浏览: 191 | 评论: 0 | 时间: 2019-04-13
    了解过 C 语言的应该都知道,在 C 标准库中的 rand 函数实际上是一种伪随机数生成算法。它使用“线性同余”算法进行一个迭代计算,这样计算的结果虽然分布上是满足随机分布的,但在得知具体算法及观察了当前数据之后,后续的随机数是可“预测”出来的。为了尽可能得到更“随机”的随机数,有很多种办法,而使用 CPU 内置的硬件随机数生成指令就是其中一种。
  • 来源: sbw Blog | 浏览: 214 | 评论: 0 | 时间: 2019-04-02
    vsftpd 是 Unix 环境下一款功能强大的 ftp 服务器程序,它是Very Secure FTP Daemon的简写。虽然 ftp 协议已经很古老,不经常使用了,但是在同步大量文件的时候,ftp 还是要比 scp 等文件传输方式来的方便的多。由于默认的 ftp 是明文传输,为了安全,一般要配合 SSL 加密同时使用。
  • 来源: 石博文博客 | 浏览: 181 | 评论: 0 | 时间: 2019-04-01
    平时在家用的笔记本由于从来没移动过位置,为了网络稳定就直接插上有线使用了。由于无线网络开着会一直扫描 WiFi 热点,也会占用一些资源,于是我就把无线开关直接关掉了。但是偶尔笔记本也要带出去或者在其它地方用一下,这时候拔掉网线后又要去打开无线网络的开关,就很烦。于是索性直接利用 NetworkMangaer 的 dispatcher 功能:实现了在有线插入时,自动关掉无线;有线网络拔出时,自动打开无线这个功能。
  • 来源: 石博文博客 | 浏览: 222 | 评论: 0 | 时间: 2019-03-31
    最近把自己的博客网站使用 Rust 语言重写了,利用的是 actix-web 这个框架。然后就一直想实现文章评论的回复邮件提醒这个功能,由于是自己写的网站,而且 actix-web 也没有提供像 wordpress 那样丰富强大的插件系统,所以这个需求就只能自己实现了。查了一圈之后,发现 lettre 这个库的 API、doc 什么的都比较完善,甚至直接提供了一个发邮件的 example,于是就准备利用这个库来实现一个发邮件的功能。
  • 来源: 石博文博客 | 浏览: 207 | 评论: 0 | 时间: 2019-03-29
    上一篇已经成功深入到指令层面了,这一篇就开始使用 IRBuilder 对函数流程进行修改,使得“不安全”版本的除法函数也增加对除数的零检查。因为除法指令分为整数除法、浮点数除法等等,而例如整数除法又可以细分为有符号数除法、无符号数除法,同时每种除法又根据类型不同分为32位除法、64位除法....。这里为了演示效果,我们只实现了32位的有符号除法。仅仅满足了测试代码的要求,如果要真的在生产中实现这个功能,细节上的很多问题还是要仔细分类处理的。
  • 来源: 石博文博客 | 浏览: 193 | 评论: 0 | 时间: 2019-03-29
    上一篇中实现了一个简单的编译器插件,它的作用仅仅是在编译过程中输出所有函数的名称。那么这一篇就更深入一步来观察LLVM的中间代码及指令生成部分,从而确定应该如何修改并添加程序逻辑,以实现我们最初的“除法保护”的功能。本篇主要介绍了LLVM编译系统的一些特点及典型用法,包括LLVM的模块划分,IR中的SSA(静态单赋值)概念与 PHI 节点的概念,以及如何使用 LLVM 的 IR Builder 在编译过程修改或插入一些逻辑代码。
  • 来源: 石博文博客 | 浏览: 233 | 评论: 0 | 时间: 2019-03-28
    在上一篇中介绍了LLVM/Clang的编译器插件可以用来进行一些简单的编译器功能扩展,从这篇开始就一步步来实现这个编译器插件。本篇主要介绍了如何建立LLVM/Clang编译器插件的开发环境及开发目录配置,如何使用CMake编译系统组织起整个工程项目来,以及使用最基本的LLVM趟管理器遍历输出函数信息等。
  • 来源: 石博文博客 | 浏览: 209 | 评论: 0 | 时间: 2019-03-27
    LLVM/Clang 提供了编译器插件机制可供扩展编译器的功能,实际上 LLVM/Clang 本身的很多功能也是以插件方式注册到编译器系统中进行实现的。在一些对安全要求极端苛刻的环境下,或是一些特殊的硬件平台中,总有一些奇怪的需求,而这些定制化的功能如果不是很复杂,就没有必要大动干戈去修改编译器,可以使用编译器插件来完成。这个系列文章设想一种需要进行除法保护的应用场景,需要在编译层面对除法进行强制检查,以杜绝除零异常的发生。
  • 来源: 石博文博客 | 浏览: 338 | 评论: 0 | 时间: 2019-03-25
    Let's Encrypt 现在已经支持免费的泛域名证书了。之前为 u.sbw.so 及 blog.sbw.so 等申请了好几个证书,由于申请时间不同,所以续期的时间也不同步,这样管理起来比较费事,所以最近索性全部换成了同一个泛解析的证书。过程中发现 Let's Encrypt 的文档还是介绍的不够清楚,操作起来比较费事,尤其是 DNS 验证这里,只是在 Certbot 这个软件中有一些提示,具体的用法在官网上也没有例子,查了好多文档摸索了半天终于弄好了,在此分享一下。