• 图灵的秘密-随笔

    | /

    初衷

    读完《编码:隐匿在计算机软硬件背后的语言》的时候,我就深深折服于Charles Petzold大叔化繁为简的能力和穿针引线的技巧。几年前听说他又出了本有关图灵的新书《图灵的秘密:他的生平、思想及论文解读》,第一时间就找来原版拜读,可惜英文水平有限,囫囵吞枣之后感觉意犹未尽。

    幸好最近得闲,又找来中文版细细品味。不禁感叹,酒香不怕巷子深,图灵还是你祖师爷。

    遂留下此文,方便日后再品。

  • 群晖NAS经验谈-3: 搭建家庭数据中心(应用篇)

    | /

    前言

    如果群晖NAS仅仅止步于系列上一篇教程中介绍的基本功-文件备份,断不至于拥有那么多粉丝。即开即用并且适配全平台(Web+APP)的各种实用软件才是其称雄市场的制胜法宝。

    使用这些现成的应用,你不但可以快速搭建自己的影音中心,甚至还能立即获得提供邮件/类似Microsoft Office 365的办公协作/CRM/WIKI/电子商务/项目管理等服务的能力,满足各类商务需求。

    本篇教程从个人使用角度出发,列出我心目中的群晖应用之五虎上将和一些使用心得,建议各位新入坑的同学一定要把他们都招入麾下,物尽其用。

  • 深入理解Linux内核-章节笔记

    | /

    我心中的《深入理解Linux内核》

    《深入理解Linux内核》毋庸置疑是一本阐述Linux内核各个模块的经典之作,它不是一本教授如何使用系统调用,进而实现用户进程功能的最佳实践,而是以数据结构为切入点,通过解释各个子系统的实现原理来帮助读者提升内功。

    这么好的一本书,也还是有一些缺憾:

    • 占位符太多
      虽然作者已经根据知识的推进过程合理地对各个章节进行了布局,但是无奈知识点太多,且呈网状分布,文章中还是存在不少类似”某某内容留在某某章节详细讨论”的占位符,如果阅读过程中不来回参考,容易顾此失彼。

    • 缺少子系统间的架构图
      本书在每个章节间都有一些配图说明复杂的数据结构和内容,但是子系统之间却缺少一些架构图来帮助读者抓住它们之间的一些要害,容易让读者陷入细节,一叶障目。

    • 缺少每章总结
      本书每章都配有引导词,简单介绍本章内容的布局。但是末尾却缺少相应的总结,无法做到提纲挈领。这也是我写这篇总结的主要原因。

    本篇文章是我间隔五年第二遍阅读本书之后所作的个人梳理,会不断更新和勘误(解答自己遗留下来的问题),也欢迎大家留言一起讨论指正。

  • 群晖NAS经验谈-2: 搭建家庭数据中心(备份篇)

    | /

    前言

    上一篇教程为大家介绍了如何选购一台适合你的群晖NAS,接下来我会分三篇,从以下几个方面入手介绍如何通过群晖DSM内置的应用快速搭建一个适用于家庭场景的数据中心:

    • 基础:账户和共享文件夹
    • 备份:个人电脑数据
    • 应用:文件同步
    • 应用:相片同步
    • 应用:视听中心
    • 应用:下载中心

    让我们马上开始吧!本篇先看看如何搞定备份!

  • 群晖NAS经验谈-1: 功能及选购

    | /

    前言

    超过2年的NAS使用经验让我对于家有NAS带来的便利深有体会,这不前阵子趁着618大促把自己的DS216J升级成了DS918+(现在官方已经升级到了DS920)。

    兴奋之余,发现身边也有越来越多的朋友开始关注起NAS这种原本小众的设备,于是乎心血来潮,准备写一组系列教程文章分享一些使用NAS的个人心得,希望对大家有所帮助。

    作为系列的第一篇,先为大家简单介绍下什么是NAS以及它能解决你哪些问题。

  • glibc源码分析-1:构建过程

    | /

    简介

    glibc(GNU C Library)是Linux采用的C语言运行库,它提供了ISO C11/POSIX.1-2008等标准定义的一系列API,几乎被所有应用所引用。阅读其源码能够提升对计算机底层组件的认知层次,修炼内功。

    不同于python这类解释型语言可以直接在解释器中运行程序,C作为编译型语言需要将源码编译链接成机器码后才能执行(关于编译链接的具体机制可以参看我之前写的介绍文章:理解C语言-3:编译链接)。在glibc这样的超大型项目中,编译过程尤为复杂:不仅需要考虑不同平台间的不同配置项,还需要通过awk/sed等文本处理程序生成各种项目依赖文件。如果贸然扎进源码分析某个模块,很容易陷入不知道某个具体符号来自哪里的困境,铩羽而归。

    GNU Make负责完成如此负责的编译,本文就通过分析Make的调试信息,解析编译glibc的具体过程,引出glibc源代码的目录结构,为后续分析glibc中的具体模块打下基础。