过去的 2017

现在已经是 2018 年的 3 月份了,按照以往的惯例,每年到年终的时候都会更新一下博客,总结一下过去一年的学习与生活,由于去年比较懒,这篇文章迟迟没有写,一直推到了现在。过去的一年经历了太多的事情,从学生到职场人的角色转变,从重庆到北京。一路走来,很艰辛也很快乐。

2017 的上半年大部分时间都在小米实习,直到五一节后回到学校,重修之前大三挂掉的专业课,同时忙着做毕业设计,写水论文,然后就是和同学们开黑玩游戏、踢球。这段时间的日子可以说是非常的充实了。后面放弃参加毕业典礼来了一场说走就走的毕业旅行,从此告别了雾都到霾都正式入职。可能是之前在公司实习了太久(2016.6-2017.5)的原因,回到公司后感觉和之前的状态没有太多改变。同时身边的朋友有些已经离开了公司,有的创业有的回到了自己的城市。突然想到在豆瓣上看到的文章,问一个刚毕业的人为什么要选择来北京,她的回答是:我来北京的目的是为了离开北京。

awk 入坑指北

awk(/ɔːk/) 是 *nix 下一种强大的文本处理工具,其名称取自三位作者 Alfred Aho,Peter Jay Weinberger,Brian Wilson Kernighan。awk 提供的功能包括不仅限于正则匹配、流控制、算术运算、甚至于函数等编程语言具备的一些特性。它发行于 1977 年,已经超过了 40 岁堪称古董级软件。为了更让人能直接明白它的用途,我把它称为是命令行下的 Excel,其中的一些概念和 Excel 有很多相似之处。

TR;DR

  • awk 是一种高效的文本处理工具。
  • awk 脚本的基本结构 BEGIN -> BODY -> END。
  • 基本语法,awk 脚本语法和 C 语言很很多相似之处。
  • awk 脚本编程实践以及需要注意的地方。
关于自由软件与开源协议

在 GitHub 上浏览一些开源软件时,我们经常会看到 README.md 文件下会有一个关于 License 的声明,或者有一个单独的 LICENSE 文件来说明该软件或者类库是基于什么协议开源的,你能拿他做什么不能做什么。或许是因为习惯了在 Google 或者 Stackoverflow 上找到一份代码就开始使用的缘故,很多人不会留意这些软件是基于什么开源协议开源的。比如广泛使用的 jQuery,大家都在用,也没有任何人说直接复制了或者更改了 jQuery 源码产生衍生软件会有什么问题。但是在开发商业软件的过程中如果需要用到开源软件,它使用的何种开源协议对你的软件有直接或者致命的影响。

CPU 挖矿-利用 VPS 挖莱特币

前段时间疯狂的WannaCry蠕虫病毒再一次将比特币带入大众视野,导致最近挖矿的人越来越多,AMD 显卡甚至都脱销还出现了专门的矿机。之前也还没有写过关于区块链技术的博客,后面打算有时间写两篇文章来介绍一下我对区块链技术的认识以及与比特币相关的一些东西。本文主要介绍了挖矿的概念,以及如何利用普通服务器的 CPU 来实现莱特币挖矿。

什么是挖矿

这里的挖矿不是挖煤,最早的 P2P 货币挖矿当然是出现在比特币中,如果还不知道什么是比特币的可以先看看这里。比特币包括其他山寨币的产生主要就是通过挖矿,对比特币有基础了解的都应该知道比特币的数量是有限的。其固定的总和不会超过 2100 万个,其实最开始在比特币网络中的比特币只有少数的,就是通过不断的挖矿来产生这些币,也就是说挖矿说得更加 official 的一种称法是“比特币的一次发行”。

See U 2016

这篇文章可能不完整

2016 年,自己的改变很大,上半年在重庆上学,现在在北京实习。

年初回到学校发现已经是大三下了,也没有很多课,之前寒假在家更多的时候在看一些书,也是那个时候开始喜欢上了阅读。在 3 月份之前还是以前的状态,每天看下书,逃点课,撸点代码,日常去 CFC 待着,晚上 9 点固定去跑 5km,周末和室友玩下游戏看下球赛。后面开始准备找实习面试什么的中间穿插着一个 CTF 的比赛,有时候从 CFC 回来晚了路过镜湖会拍一张照,不同日期,不同时间点,这段时间更多的是学习吧,自从到了大三基本不主动的参加一些项目开发,对奖学金、学校的一些比赛也基本没有兴趣,我一心只有学习…从大一到大三接触的东西其实挺多的,当时看到 js 社区圈非常活跃和新的 es 标准出来 nodejs 的广泛应用,相对 php 和 android 自己更加熟悉,现在才感觉进入了 fe 大坑。

Redux 中间件与异步 Action

在之前的浅谈 Flux 架构及 Redux 实践一文中我们初步的谈及了 Redux 的数据流思想,并做了一个简单的加减器。但是还没有接触到 Redux 更多常用的场景,异步操作、API 调用,如何连接到 UI 层等,Redux 可以与很多框架搭配包括 Vue、React 甚至是纯 JavaScript。后面我们会用一个实例–通过 github API 获取个人信息,来将 Redux middleware、async action、连接到 React 贯穿其中。先看看我们最后写的 demo 的样子。

/images/redux-demo.png

浅谈 Flux 架构及 Redux 实践

Flux 概述

Flux 是 Facebook 用来构建用户端的 Web 应用程序的体系架构,与其它形式化的框架相比,它更像是一个架构思想,用于管理和控制应用中数据的流向。这里应用中的数据指包括但不限于来自服务端的数据页面中 view 的一些状态(如一个面板是展开还是关闭),临时存储在本地需要持久化到服务端的数据等。

好了,说了这么多好像还是一脸懵逼,不慌,接下来看看展开式。

实现一个简单的 HTTP Client

httpclient-cli

Linux 下用 C 语言实现发送 HTTP 请求并获取 html 文档内容的 CLI 程序

理论基础

HTTP 请求报文格式

一个 HTTP 请求报文由请求行(request line)、请求头部(header)、空行和请求数据 4 个部分组成,下图给出了请求报文的一般格式。