Nginx日志分析

最近登录服务又看到一大堆nginx的日志,一般每次看到我就less看一下也就删了。但这两天正好有空, 就想能不能用这些日志发现点什么有价值的信息。于是说干就干,马上打包日志下载到本地,然后操起大Python, 开始了一场数据分析之旅……

关系型数据库设计小结

前段时间因为项目需要搭建一个web服务器,后端Web框架我调研了几个,比如Python的Flask,Django, NodeJs的Express,JavaEE的Spring,以及C++的CppCMS, 经过权衡拓展性开发效率,最后选择了Django。 也许Python不是最好的选择,但至少目前来看工作的还挺顺利。

但是当时对于数据库的选择,却走了一点弯路。因为平时对于数据库接触不多,所以一开始选择了MongoDB 作为数据库。这在初期是没啥问题的,但后来随着项目推进,产品经理不断地增加需求(我要…我要…我还要…), 数据库中各个collection的耦合度也越来越高,甚至同一个collection也有大量的冗余数据。虽然也有办法进行优化, 但是我经过查阅资料和进度考量,最后还是决定趁着项目尚未release,将NoSQL替换为关系型的数据库。

软件开发的一些'心法'

从事软件开发也有好几年了,和一开始那个懵懵懂懂的小菜鸟相比,自己也感觉到了 一些变化. 也许是熟能生巧,趟过很多坑,但核心的绝不是这些细节的东西. 打个比方,如果说对某种语言的特性和技巧的掌握属于身法, 那么对应核心的东西, 就叫心法. 没有身法,心法难以实战;但是没有心法,身法再炫也不过是无谓的杂耍而已. 今天,就来讲讲多年浸淫软件开发所感悟的一些"心法".

DNS 学习笔记

在互联网时代中,如果要问哪个应用层协议最重要的话,我想答案无疑是DNS.虽然我们每天都享受着DNS服务带来的便利, 却对它往往知之甚少.因此本文就来介绍一下DNS协议的工作流程,真正认识一下这个支撑着庞大互联网络的基础服务.

非对称加密与OpenSSL

随着个人隐私越来越受重视, HTTPS也渐渐的流行起来, 甚至有许多网站都做到了全站HTTPS, 然而这种加密和信任机制也不断遭遇挑战,比如戴尔根证书携带私钥,Xboxlive证书私钥泻露, 还有前一段时间的沃通错误颁发Github根域名SSL证书事件. 因此本文从非对称加密说起, 介绍了证书的签证流程, 并且通过openssl的命令行工具对这些过程都转化为相对具体的命令, 也算是一个温故知新的简要记录吧.

计算机系统的安全机制

最近宝强同志不幸遭遇了一场事故,可谓是赔了夫人又折兵. 男人们看到这个 新闻,然后转头看看自己的另一半,眼神也不禁若有所思. 遭遇背叛是每个人都不愿遇到的, 那么我们作为目光短浅的凡人,该如何事先做好安全措施呢?看看操作系统实现的安全机制, 也许能给大家一点启发.

和杀毒软件愉快玩耍的日子

在实际的渗透测试中,杀毒软件是个无法忽视的话题;比喻的话,就像谈恋爱最终都要见对方父母一样, 除非你不想把这层关系持续下去. 因此,本篇作文主要研究如何使自己的恶意软件(MalWare) 绕过杀毒软件的识别和查杀.

Unicode,GBK和UTF-8

看到题目,你也许会说,“又是这种月经帖,这问题我早弄清楚了”. 但如果有人问你,“Unicode,GBK和UTF-8有什么区别?”, 你能自信地给他一句简短清晰的回答吗? 如果不能的话, 那还是看一下这篇文章吧.

Linux内核转发技术

什么? linux? 内核?! 也许你会说,“拜托,这种一看就让人头大的字眼, 我真的需要了解吗?” 有句流行语说得好,没有买卖,就没有杀害. 如果在日常中需要和流量打交道,那么为了不让 自己在面对来往的海量数据时手足无措, 最好还是了解一下如何管理,过滤和转发这些数据, 让信息能被传递到该去的地方. 哪怕自己不去亲自参与管理, 也可以通过简单的了解, 让自己在围观时多一份自信,少一点懵逼.

Linux Hook 笔记

相信很多人对"Hook"都不会陌生,其中文翻译为"钩子".在编程中, 钩子表示一个可以允许编程者插入自定义程序的地方,通常是打包好的程序中提供的接口. 比如,我们想要提供一段代码来分析程序中某段逻辑路径被执行的频率,或者想要在其中 插入更多功能时就会用到钩子. 钩子都是以固定的目的提供给用户的,并且一般都有文档说明. 通过Hook,我们可以暂停系统调用,或者通过改变系统调用的参数来改变正常的输出结果, 甚至可以中止一个当前运行中的进程并且将控制权转移到自己手上.