Other articles


  1. 关于base64的一点理解

    以前只知道base64是一种编码字节串的算法,但对于它的原理实际并没有多少认识。 前段时间由于一个相关bug,重新深入地了解了下,发现其实非常简单,也很好理解。

    如果让我想一种此类的编码算法,第一时间想到的大概就是十六进制表示了,姑且在本文中称作十六进制编码吧。

    举个例子,假设一个二进制文件只包含3个字节,都是非打印字符:

    char bytes[] = {1, 133, 254};
    

    其十六进制编码表示 …

    read more
  2. 如何检查字节串内容?

    最近碰到一个字节串被截断bug:base64解码之后的字节串, 以C字符串的方式进行处理,导致当字节串中包含0x00时被截断了, 费了不少精力才定位出来,主要原因在于没能及时地检查出串的实际内容。

    这里字节串指其中每一个字节的可能值是[0x00, 0xff],不一定是可打印的ASCII字符, 在C中一般定义为unsigned char数组。

    下面总结下如何检查一块内存。

    GDB

    如果环境允许,首选GDB进行调试 …

    read more
  3. Couresra课程《HTML, CSS, and Javascript for Web Developers》学习小结

    虽然我是后端开发,但工作中也接触过一些前端开发技术, 也看过一两本前端书籍,但是总感觉知识点很零散,缺少实践, 写起代码来效率比较低下,需要频繁地查文档。

    于是,决定在Coursera上找个在线课程,结合书籍进行学习, 最终选择了 《HTML, CSS, and Javascript for Web Developers》 这门课程。

    此课程是全栈系列课程中的一部分 …

    read more
  4. 看mockeagain库如何模拟龟速网络

    出于测试网络程序的稳定性,或者复现bug的需要, 开发软件过程中不时地有模拟特定网络环境的需要, 以提高程序健壮型或者提高定位问题的速度等。

    StackOverflow上就有不少关于如何模拟龟速网络的提问:

    既然是模拟网络环境,很容易想到的一种方法是通过专门的软件组建网络, 然后通过配置软件的不同参数达到模拟特定网络的目的。

    网络模拟软件 …

    read more
  5. Vagrant使用入门

    如果你还在手动创建大量的虚拟机然后安装系统, 或者经常出现开发环境不一致引发的问题("works on my machine" bugs), 那么你应该试下Vagrant[1]这个工具。

    Vagrant是一个利用虚拟化技术提供的API(如VirtualBox),来部署易用的、一致性的开发环境的工具。 同时,Vagrant提供的box仓库使得部署一些环境变得极为便利,因为我们可以直接复用别人提供的通用box。

    官网About页是这么说的:

    Vagrant is …

    read more
  6. epoll及Linux IO多路复用机制的对比

    epoll概念

    • epoll实例(epoll instance)

      epoll_create创建出来的,也是一个文件句柄,可以添加到其他epoll实例的集合中。

    • epoll集合(epoll set)

      当前epoll实例管理的句柄集合。

    • 触发模式

      有两种触发模式,边缘触发(edge triggered,ET)和水平触发 …

    read more
  7. GCC如何在编译错误中包含宏的值?

    引子

    曾经排查过一个由于编译环境差异出现的CPU使用率持续100%的BUG, 而差异就是select(2)的文件描述符操作宏所依赖的FD_SETSIZE太小了, 导致每次事件循环select都立马返回,但是FD_ISSET判断又没有可处理的句柄, 最终出现死循环。

    那么,为了避免后续再出现同样的问题,有必要在预处理阶段判断FD_SETSIZE与期望值是否相符, 不相符就给出编译错误提示 …

    read more
  8. redis入门之retwis

    retwis是redis之父antirez在项目初期, 为了推广redis而写的一个迷你版twitter,同时还为此写了一个教程 介绍redis的数据类型以及如何使用它们构建一个高性能的web app。

    这里对retwis学习做个小结。

    redis数据类型

    redis支持5种数据类型:string,list,set,ordered set和hash, 另外还支持Bitmap和HyperLogLog两种类型(暂未了解), 具体见文档

    • string …

    read more
  9. SELinux问题排查

    SELinux的权限检查在传统的UNIX文件权限rwx检查(DAC)之后,如果DAC的权限检查已经不通过了,就不会检查SELinux权限。

    本文使用CentOS环境进行验证。

    日志文件及分析

    Linux系统中有两个日志文件:/var/log/audit/audit.log/var/log/message,根据启用服务的不同,SELinux记录日志文件也不同。

    • 启用了auditd服务 …
    read more
  10. rinetd源码笔记

    rinetd简介

    rinetd是一个TCP端口转发服务,在应用层实现端口映射功能, 由Thomas Boutell写的,以GPL开源。 官网对rinetd的介绍是:

    This program is used to efficiently redirect connections from one IP address …

    read more
  11. Medoo源码笔记

    Medoo为何物

    Medoo是一个使用PHP实现的轻量级数据库封装库,支持常见的数据库,包括:MySQL,MariaDB,PostgreSQL,Sybase,Oracle,SQLite,SQL Server。 此库基于PDO实现,基于PDO的抽象接口以及在此基础之上细微的调整,实现了对各大数据库的支持。

    根据官网介绍,Medoo的存在是为了提高数据库应用的开发效率 …

    read more
  12. 解决问题小记:XP开机后网卡图标很久才出现

    问题描述

    XP系统开机进入桌面之后,需要等5分钟左右,无线网卡的图标才会显示在右下角。在此之前无法上网,比如打开谷歌浏览器,浏览器窗口一直不会出现,直到无线网卡的图标出现。

    这样的问题让人很烦躁,有时亟需开机做事时,却只能眼巴巴地在那里等上5分钟。

    解决过程

    问题该如何解决呢?这里记录下自己解决的过程,因为在问题解决之前,自己上网搜索(包括中英文),并没有找到答案,因此记录下来可能还是有那么一点价值。

    1. ROUND …

    read more
  13. IRC使用小记

    IRC客户端

    • HexChat

      跨平台支持,目前正在Windows上使用,暂无不满意的地方

    • polari

      支持的命令太少了,功能有限。

    • Empathy

      重量级,支持各种消息协议

    • weechat/irssi

      命令行界面,其中weechat架构是可扩展的,并且支持当前流行的脚本语言,如python, perl, ruby; 同时高度可配置 …

    read more
  14. 读书笔记:《解读基金》

    《解读基金——我的投资观与实践》是天文学博士季凯帆根据自己多年在美国和国内的基金投资经历,总结记录在博客中,然后整理成书的。

    此书主要讲的是如何利用闲置资金进行长期(15-20年)的开放式的证券投资基金投资。

    全书共六章,大致分为三大部分:

    1. 投资的准备

    2. 投资三部曲

      • 投资目标的确定
      • 基金品种的选择
      • 操作方法的实施
    3. 投资实践及博客日志节选

    虽然此书的目录结构这样组织,但是感觉在阅读过程中这种整体结构不是很明显 …

    read more
  15. Hello World

    Published: Sun 24 May 2015
    Updated: Sun 21 February 2016
    By whatacold

    In Misc.

    首次开通个人博客,希望能够达到如下目的:

    • 督促自己形成思考、总结的习惯;
    • 养成专注和坚持做一件事的习惯;
    • 个人观点受时间、空间等因素制约,难免会有局限性;

    发表出来可能有如下好处:

    1. 倾听别人的意见、看法,启发自己;
    2. 可能对别人会有帮助;

    UPDATE

    2016-02-21 九个月已经过去,没写几篇博客,接下来要加油了。

    read more

social