读书笔记
文章平均质量分 82
ball球
这个作者很懒,什么都没留下…
展开
-
PDF Explained(翻译)第七章 文档元数据和导航
本文是对PDF Explained(by John Whitington)第七章《 Document Metadata and Navigation》的摘要式翻译,并加入了一些自己的理解。本章我们讨论四个辅助数据,这些数据并不影响PDF的显示。定位(Destinations):定义文件中位置的数据结构。它们可用于指定书签或超链接指向的位置。书签就是文档的目录。XML元数据: 流数据,包含了特定格式的XML文件,一些与文档信息字典相同的元数据,以及其他字段。文件附件:允许像电子邮件附件那将将整个文件原创 2021-08-17 17:20:46 · 679 阅读 · 0 评论 -
PDF Explained(翻译)第四章 文档结构
本文是对PDF Explained(by John Whitington)第四章《Document Structure》的摘要式翻译。本章我们来看PDF的逻辑结构,涉及trailer字典,文档目录(document catalog)和页面树以及PDF中两种常见结构:文本字符串和日期。一个典型的PDF文档逻辑结构如下图所示:Trailer字典这份字典位于文件尾部而不是文件的主体中,如果程序想要读取PDF文档,首先要做的就是处理trailer字典。字典中的重要条目如下表所示,*表示必选条目。原创 2021-07-21 16:58:10 · 387 阅读 · 1 评论 -
PDF Explained(翻译)第三章 文件结构
本文是对PDF Explained(by John Whitington)第三章《File Structure》的摘要式翻译。文件布局一个简单全法的PDF文件按顺序可分为如下四部分:header,给出了PDF版本号body,包含了页面,图形内容,和许多辅助信息,它们都编码为一系列对象。交叉引用表,列出了每个对象在文档中的位置,便于随机访问。trailer,包含一个字典,用于定位文件中的各个部分,同时列出了可以在不处理整个文件的情况下读取的各种元数据。再来看下第二章中“Hello World原创 2021-07-14 16:53:38 · 557 阅读 · 0 评论 -
PDF Explained(翻译)第二章 构建一个简单的PDF
本文是对PDF Explained(by John Whitington)第二章《Building a Simple PDF》的摘要式翻译。本章我们将使用文本编辑器手动构建PDF内容。然后我们将使用 pdftk将其转换为有效的PDF文件,并在PDF查看器中进行查看。关于PDFTK(THE PDF TOOLKIT)pdftk是一个开源的命令行程序,它的功能有:合并分割PDF文档旋转PDF页面加解密填充PDF表单加水印和图章打印和修改PDF元数据(metadata)添加附加基本的PDF原创 2021-07-09 17:21:01 · 498 阅读 · 1 评论 -
PDF Explained(翻译)第一章 简介
本文是对PDF Explained(by John Whitington)的摘要式翻译。一点历史PDF的发展PDF起初是Adobe的一个内部项目,其目标是创建一种平台无关的文档交换方式。当时PostScript已经在印刷界非常流行,但在当时的电脑屏幕显示上还不是很实用–特别是随机访问方面(如果需要渲染一个PostScript文档的第50页,就必须先处理好前49页)。项目的想法是使用PostScript图片语言的子集加上一些辅助数据来创建一种结构化的语言,可以用于在任何计算机上查看(或打印)文档。P原创 2021-07-08 16:36:38 · 428 阅读 · 1 评论 -
《架构简洁之道》思维导图及目录导航
1. 全书思维导图部分结构按笔者理解做了调整2. 目录导航第1部分 概述第2部分 从基础构件开始:编程范式第3部分 设计原则第4部分 组件构建原则第5部分 软件架构第6部分 实现细节原创 2021-06-23 16:31:39 · 512 阅读 · 2 评论 -
架构整洁之道 30~34章读书笔记
第6部分 实现细节第30章 数据库只是实现细节如果就数据库与整个系统架构的关系打个比方,它们之间就好比是门把手和整个房屋架构的关系。一个优秀的架构师是不会让实现细节污染整个系统架构的。关系型数据库数据按行组织成表结构本身并没有什么系统架构意义上的重要性。应用程序的用例不应该知道,也不应该关心这么低层次的实现细节,需要了解数据表结构的代码应该被局限在系统架构的最外圈、最低层的工具函数中。很多数据访问框架允许将数据行和数据表以对象的形式在系统内部传递。这么做在系统架构上来说是完全错误的,这会导致程序原创 2021-06-21 14:37:31 · 210 阅读 · 1 评论 -
架构整洁之道 15~29章读书笔记
第5部分 软件架构第15章 什么是软件架构软件架构师自身需要是程序员,并且必须一直坚持做一线程序员,绝对不要听从那些说应该让软件架构师从代码中解放出来以专心解决高阶问题的伪建议。也许软件架构师生产的代码量不是最多的,但是他们必须不停地承接编程任务。如果不亲身承受因系统设计而带来的麻烦,就体会不到设计不佳所带来的痛苦,接着就会逐渐迷失正确的设计方向。设计软件架构的目的,就是为了在工作中更好地对这些组件进行研发、部署、运行以及维护。如果想设计一个便于推进各项工作的系统,其策略就是要在设计中尽可能长时间原创 2021-06-18 16:10:01 · 985 阅读 · 2 评论 -
架构整洁之道 12~14章读书笔记
第4部分 组件构建原则如果说SOLID原则是用于指导我们如何将砖块砌成墙与房间的,那么组件构建原则就是用来指导我们如何将这些房间组合成房子的。第12章 组件组件是软件的部署单元,是整个软件系统在部署过程中可以独立完成部署的最小实体。在编译运行语言中,组件是一组二进制文件的集合。而在解释运行语言中,组件则是一组源代码文件的集合。无论采用什么编程语言来开发软件,组件都是该软件在部署过程中的最小单元。但无论采用哪种部署形式,设计良好的组件都应该永远保持可被独立部署的特性,这同时也意味着这些组件应该可以被原创 2021-06-10 17:14:09 · 1214 阅读 · 8 评论 -
架构整洁之道 7~11章读书笔记
第3部分 设计原则如果建筑的架构设计不佳,那么其所用的砖头质量再好也没有用。这就是SOLID设计原则所要解决的问题。SOLID原则的主要作用就是告诉我们如何将数据和函数组织成为类,以及如何将这些类链接起来成为程序。我们为软件构建中层结构的主要目标如下:使软件可容忍被改动。使软件更容易被理解。构建可在多个软件系统中复用的组件。SOLID原则应该直接紧贴于具体的代码逻辑之上,这些原则是用来帮助我们定义软件架构中的组件和模块的。SRP:单一职责原则一个软件系统的最佳结构高度依赖于开发这个系统原创 2021-06-09 17:32:15 · 1002 阅读 · 16 评论 -
架构整洁之道 3~6章读书笔记
第2部分 从基础构件开始:编程范式第3章 编程范式总览三个编程范式包括:结构化编程(structured programming)、面向对象编程(object-oriented programming)以及函数式编程(functional programming)。结构化编程结构化编程对程序控制权的直接转移进行了限制和规范。面向对象编程面向对象编程对程序控制权的间接转移进行了限制和规范。函数式编程函数式编程对程序中的赋值进行了限制和规范。仅供思考没有一个范式是增加新能力的。也就是说,每个原创 2021-06-08 11:00:25 · 340 阅读 · 8 评论 -
架构整洁之道 1~2章读书笔记
第1部分 概述第1章 设计与架构究竟是什么设计(Design)与架构(Architecture)二者没有任何区别。一丁点区别都没有!“架构”这个词往往使用于“高层级”的讨论中。这类讨论一般都把“底层”的实现细节排除在外。而“设计”一词,往往用来指代具体的系统底层组织结构和实现的细节。但是,从一个真正的系统架构师的日常工作来看,这样的区分是根本不成立的。目标是什么软件架构的终极目标是,用最小的人力成本来满足构建和维护该系统的需求。一个软件架构的优劣,可以用它满足用户需求所需要的成本来衡量。龟兔赛原创 2021-06-04 16:30:40 · 321 阅读 · 11 评论 -
《go in action》第5章(Go语言的类型系统)读书笔记
5.1 用户定义的类型不使用字段名创建结构类型的值,这咱形式下值的顺序很重要。type user struct { name string age int email string}lisa := user{"Lisa", 20, "lisa@email.com"}两种不同类型的值即便相互兼容,也不能互相赋值。编译器不会对不同类型的值做隐式转换。type Duration int64func main() { var dur Duration dur = int64(10原创 2021-02-07 17:01:49 · 182 阅读 · 0 评论 -
《代码之外的功夫:程序员精进之路》读书笔记
第1章 善用设计原型,探索项目创意本章背景:你是能力很强的程序员,并且正在发挥技术特长,运用速成原型法帮助人们探索新的产品创意。尽早生成可工作的软件,可以令产品设计变成交互式协作过程。高效的反馈环有利于快速识别潜在的不良设计,并对此提出解决方案,以免日后在更关键的阶段浪费大量时间和精力。1.2 利用线框图表达功能需求不要花费过长时间去讨论子系统(书中实际例子为推荐系统)的完美实现方式,而应该先集中精力寻找“最简单可行的方法”。1.3 编程之初立即搭建测试系统第一次发布的真正目的是创建一个可用的系原创 2020-12-14 10:02:48 · 410 阅读 · 1 评论