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 个部分组成,下图给出了请求报文的一般格式。

js4agls | 数据结构 JavaScript 描述 - 队列篇

队列(Queue)是一种先进先出(First-In-First-Out, FIFO)的数据结构,与栈不同的是,它操作的元素是在两端,而且进行的是不一样的操作。向队列的队尾加入一个元素叫做入队列(enQueue)**,向队列的队首删除一个元素叫做出队列(delQueue)**.

XSS 持久型攻击实例--向学校图书馆网站页面注入 JS

XSS 攻击是 Web 中很常见的攻击,其原理有点类似与 SQL 注入,改变了原来的执行逻辑。之前了解过一些 XSS,但是没有去具体实现,刚刚拿学校的网站做了下 XSS 攻击,成功的给图书馆网站下了毒+_+…

XSS 攻击大概可以分为两种,一种是非持久型攻击,这一般只会影响个体用户,不会造成长期的影响,另一种为持久型攻击,也就是我们要讲的这种,将我们的代码注入到目标服务器页面上,所有访问这个页面的用户都会被攻击。其实之前没有去具体实现因为比较“出名”的网站一般在防 XSS 上做的比较完善,不好去找漏洞,所以才拿学校网站做测试(以前经常这样干抓数据什么的。。。),在最后我们实现的是向页面中注入自己的 js 代码,并将访问该页面用户的 cookie 信息传到我自己的服务器上。