0%

epub 是什么

epub 是一种主流书本阅读格式,很多排版好的书本格式都是 epub。
epub 是一个压缩包,是类 html 文件、css 文件、配置文件以及字体图片等文件的集合。

为什么使用多看的 Dobby

有很多软件可以制作 epub 电子书,比如常见的 sigil。dobby 是基于 sigil 开发的,预先设置了一些样式,比如可以制作多看特有的弹注、全屏封面以及一些文字样式与区域样式。
优点是操作简单,可以比较容易排版出一个比较精美的电子书,不涉及 html 代码的操作。
缺点是不能操作源代码,无法自定义样式,要实现使用这些功能,需要使用其它软件,如 sigil。
简单来说,就是简单。

准备

以凉宫系列的第一卷《凉宫春日的忧郁》为例。此处下载下面所需的文件:https://wwa.lanzous.com/b0cqcwbsh 密码:gatu

  1. 电子书的 txt 文件
  2. 书自带的插图
  3. 要制作的书的 pdf 或 epub 文件,方便对照。
  4. Dobby 软件
    蓝奏云链接:https://wwa.lanzous.com/b0cqcw9da 密码:3dfi
    github release:https://github.com/jinl1874/e-book/releases/tag/1.0
    下载压缩包后,解压到一个英文目录里,打开里面的DobbyGUI.exe即可使用。

创建项目

  1. 打开 dooby -> 文件 -> 新建 -> 选择小说模板 -> 填写项目名称 -> 点击确定,然后就会跳转到 dobby 首页。
    Image

  2. 创建好的项目里面会有一些排版好 xhtml 文件,可以去熟悉一下样式的效果。

排版章节

  1. 先把除了copyright.xhmlchapter.xhtml的文件全删掉。
  2. 双击chapter.xhml文件,把凉宫的“序曲”文本粘贴上去,然后全选文本,在右边的段落样式里选择“正文宋体”。
    Image
  3. 把光标移动到章节名(这里即序曲)那里,在右边选择标题样式,觉得哪个顺眼就选哪个。
    Image
  4. 检查一下整个章节,如有特殊的文本需要特殊的处理。比如:
    • 如果有注释的话,在右边的插件工具里找到多看注释,然后把光标移动要注释的词上,填上注释文本,再点击插入即可,记得把原来的注释文本删去;
    • 若有一些信件、电报或者报纸之类的文本,可以选择把段落样式改为引文;
    • 如果存在副章节点的话,可以将其放在章节名下一行,段落样式选择“扉章文字偏右”;
    • 在后记里可以选择使用“引文楷体”。
  5. 在左边的“图书浏览器”里右键chapter.xhtml文件,选择新建空白章节,项目会根据右键的文件名,来自动命名递增数字的文件名。比如这样项目就会创建一个chapter1.xhtml文件,如果是在chapter1.xhtml新建,那么创建的文件名就是chapter2.xhtml
  6. 在新建的chapter1.xhtml文件粘贴上下一章的文本,再根据上面的流程走。
  7. 直到把所有的章节都排版完成。

记得每做好一个后要(ctrl+s)保存,不然崩溃的时候……

图片

  1. 添加图片:在左边的图片目录上右键,再点击添加已有文件,把下载好的图片全选上。
  2. 设置全屏封面:在文本目录上右键 -> 新增全屏插图页 -> 选择图片 -> 确定。
    Image
    再把这个文件放在顶部位置,并改名cover.xhtml
    Image
  3. 彩页:新建一个文件,命名为inset_0.xhtml,在右边的插件工具里选择浮层图(可以点开查看大图),样式选择“无”。
    Image
    对照着本书的 epub 文件,按照顺序一个个添加,如果添加不了,就再新建一个文件添加。
    彩页的位置是在copyright.xhtml文件下面。
  4. 插图:同样是对照 epub 文件,按“ctrl+F”调出搜索框,然后搜索插附近的文字,找到插图所在的位置。选择“插件工具”的“随文图”,选择图片插入。
    Image
    一般来说,一章只有一张插图,不过也有特殊的。相继把所有的插图都插入后,就可以进行下一环节————填写版权信息了。

版权信息

  1. copyright.xhtml文件写上本书的版权信息,包括但不限于作者、书名、译者、ISBN、校对、制作等信息,如果准备的 epub 文件里有,那就直接照抄;如果没有,最好上豆瓣查找,那里的信息比较全。
  2. 还可以加上一些免责任声明,比如“仅供个人学习交流,禁止商业用途。下载后请在 24 小时内删除,制作者不负任何责任。转载时,请注明以上信息,尊重翻译者的辛勤劳动。”这一类文本。
  3. 段落样式选择“版权信息正文”
    Image

目录

点击左下角的编辑目录,再选择“从标题生成目录”,一般这样就足够了。
Image
如果有需要添加或者编辑的目录,可以在目录条目那里右键,可选编辑/添加条目。

元数据编辑

  1. 菜单栏 -> 导出 -> 编辑元数据 -> 填上对应的信息(版权信息有相应的信息)。
    Image
  2. 添加基本:可以添加 ISBN、出版日期、简介等信息。
    Image
  3. 设置封面:一般是第一张全屏插画图。
    Image
  4. 完成后点击“OK”。

发布

  1. 到了这里,就可以发布 epub 电子书了。
  2. 菜单栏 -> 导出 -> 发布电子书。

阅读器

要想获得最好的阅读体验,推荐下载“多看阅读”。

以上就是制作 epub 电子书的流程,里面还有更多的功能,可以慢慢去挖掘。

欢迎访问个人博客

平衡退化

1. 定义

  1. 定义:网站的访问者有可能使用不支持 js 的浏览器(虽说现在应该没有了),又或者是禁止网页使用 js(因为弹窗广告),所以需要在浏览器不支持 js 的情况下浏览网站,这就是平稳退化(graceful degradation)。

  2. 例子:新窗口打开一个链接,许多电子商务网站的结算页面都有指向服务条款的链接,与其让用户手动点击打开,不如自动打开一个新窗口来显示相关信息。
    js 使用 window 对象的open()方法来创建新的浏览器窗口。使用:

    1
    2
    // url 表示要打开的链接,name 表示是新窗口的名字,方便js调用,features 表示的是新窗口的属性。
    window.open(url, name, features);
  3. 具体应用:

    1
    2
    3
    function pop_up(url) {
    window.open(url, "pop_up", "weight=300, height=400");
    }

    函数不会对网页的访问有任何影响,影响到网页的只有:如何使用此函数。可以使用伪协议(pseudo-protocol)。

2. 伪协议

  1. 真协议用来在计算机之间传输数据包,如 HTTP 协议。伪协议使用非标准化协议,可以通过一个链接来调用 js 函数。

  2. 具体应用:

    1
    2
    3
    <a href="#" onclick="pop_up('https://zhihu.com'); return false;">
    知乎网
    </a>
  3. 上述代码同样无法平稳退化。要使得平稳退化,须得在 a 标签的 href 属性加上 url 链接。具体如下:

    1
    2
    3
    4
    5
    6
    <a
    href="https://zhihu.com"
    onclick="pop_up('https://zhihu.com'); return false;"
    >
    知乎网
    </a>

    简化一下:

    1
    2
    3
    4
    5
    6
    <a
    href="https://zhihu.com"
    onclick="pop_up(this.getAttribute('href')); return false;"
    >
    知乎网
    </a>

    更简明的引用方法————this.href

    1
    2
    3
    <a href="https://zhihu.com" onclick="pop_up(this.href); return false;">
    知乎网
    </a>

分离 JavaScript

1. 分离

  1. 使用类似于 CSS 的方法,比如使用下面这个语句来表明“当这个链接点击时,也可以调用pop_up函数”。

    1
    <a href="https://zhihu.com" class="pop_up">知乎网</a>

    js 语言不强制事件必须在 HTML 文档上处理,因此可以在外部把事件添加到某个元素上。

    1
    element.event = action;

    可以使用 id 或者 className 或者 TagName 来确定元素,比如:

    1
    getElementById(id).event = action;

    涉及多个元素时,可以用getElementByTagName以及getAttribute把事件添加到特定属性的元素上。
    具体操作为:

    • 先用使用getElementByTagName获取元素数组。
    • 遍历数组。
    • 再根据属性值class==pop_up筛选出那个元素。
    • 把这个链接的href属性值传递给pop_up()函数。
    • 取消这个链接的默认行为。

    具体代码为:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    var links = document.getElementsByTagName("a");
    for (var i = 0; i < links.length; i++) {
    if (links[i].getAttribute("class") === "pop_up") {
    links[i].onclick = function () {
    pop_up(this.getAttribute("href"));
    return false;
    };
    }
    }

    只要把上述代码存入一个外部 js 文件,就等于把这些操作从 html 分离出来了。

  2. 上述代码存入外部文件后,会无法正常运行。
    因为这个语句的第一语使用了 document 这个对象,js 文件加载的时候文档可能会不完整。所以要等文档全部加载后才能运行,这时可以使用 window.onload 函数,当触发这个函数时,document 对象已经存在。
    所以最终代码为:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    window.onload = prepareLinks;
    function prepareLinks() {
    var links = document.getElementsByTagName("a");
    for (var i = 0; i < links.length; i++) {
    if (links[i].getAttribute("class") === "pop_up") {
    links[i].onclick = function () {
    pop_up(this.getAttribute("href"));
    return false;
    };
    }
    }
    }

向后兼容

某些支持js脚本的古老浏览器,也不一定能正常工作。

1. 对象检测(object detection)

  1. js 万物皆是对象,所以只要判断是否有对应的对象存在即可。

  2. 根据条件表达的求值结果,使用if语句来决定应该执行什么操作。

    1
    2
    3
    if (method) {
    statements;
    }

    例如,有一个使用了getElementById()方法的函数,就可以在调用前检查浏览器是否支持这个函数。使用对象检测时,要删掉方法名后面的括号,如果不删掉,测试的是方法的结果,无论方法存不存在。

    1
    2
    3
    4
    5
    function(){
    if(document.getElementById){
    statements using getElementById;
    }
    }

    如果浏览器不支持方法的话,那么将永远无法调用。

  3. 上面使用的方法有一个不足之处是,会增加花括号,多了以后会导致代码阅读困难。
    改进方法是换一种方式。改为“当不支持这个方法是,就结束”。具体代码为:

    1
    2
    3
    if (!getElementById) {
    return false;
    }
  4. 所以在把 onclick 事件加到链接时,可以加一 if 语来判断浏览器是否支持。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    window.onload = prepareLinks;
    function prepareLinks() {
    if (!document.getElementsByTagName) return false;
    var links = document.getElementsByTagName("a");
    for (var i = 0; i < links.length; i++) {
    if (links[i].getAttribute("class") === "pop_up") {
    links[i].onclick = function () {
    pop_up(this.getAttribute("href"));
    return false;
    };
    }
    }
    }

2. 嗅探技术

  1. 定义:指通过提取浏览器供应商提供的信息来解决向后兼容的问题。
  2. 理论上可行,不过随着浏览器的发展,这种技术已经被淘汰了。

性能考虑

1. 少访问 DOM 和减少标记

  1. 以下面的代码为例

    1
    2
    3
    4
    5
    6
    if(document.getElementsByTagName("a")){
    var links = document.getElementsByTagName("a");
    for (var i=0; i <links.length; i++){
    statements......
    }
    }

    上面的代码可以运行,但相同的操作重复了两次,浪费了性能,所以可以进行优化一下。

    1
    2
    3
    4
    5
    6
    links = document.getElementsByTagName("a");
    if (links.length > 0){
    for (var i=0; i<links.length; i++){
    statements......
    }
    }

2. 合并和放置脚本

  1. 包含脚本的方式是使用外部文件,而不是包在<script>里。并且可以把 funtionA.js、funtionB.js 和 futntionC.js 合并到同一个文件,这样就可以减少加载页面时发送的请求。
  2. 把脚本放在<head>标签会有一个问题,位于<head>块中的脚本会导致浏览器无法并行加载其它文件(如图像和其它脚本)。
  3. <script>标签都放在文档的末尾,</body>的标记之前,可以使页面变得更快。

3. 压缩脚本

  1. 定义:把脚本中不必要的字节,如空格和注释,统统删除,从而达到压缩文件的目的。有的甚至会重写部分代码,使用更短的变量名等。
  2. 精简后的代码很难看懂,却能减少文件大小,很多情况下,应该有两版本,一个是工作副本,可以修改并添加注释,一个是精简副本,用于放在站点上。为了区分,一般会在精简版本的文件名上加上 min 字符。
  3. 代码压缩工具:

几个 DOM 脚本编辑工作相关的概念和实践:

  • 平稳退化
  • 分离 Javascript
  • 向后兼容
  • 性能考虑

欢迎访问我的个人博客

1. 为什么要使用图片库

可以把所有的图片都放到一个网页里,不过当图片过多时,会导致网页体积过大。
因此,为每张图片分别创建一个网页的解决方案。
使用 js 来伊娃衅片是最佳选择:把整个图片库的浏览链接集中在图片库主页里,当用户点击了这个主页里的某个 图片链接时,才把相应的图片传送过去。

2. 准备

  1. 文件:准备几张图片,放在一个 images 的目录里,再创建一个gallery.html文件,与 images 同目录。
  2. 标记:使用无序列表<ul>来标记图片链接,
    标记清单:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Image Gallery</title>
</head>

<body>
<h1>Snapshots</h1>
<ul>
<li>
<a href="images/dog.jpg" title="a dog east something"> dog </a>
</li>
<li>
<a href="images/follower.jpg" title="a follower ">follower</a>
</li>
<li>
<a href="images/part.jpg" title="a part here">part</a>
</li>
<li>
<a href="images/sea.jpg" title="the sea ">sea</a>
</li>
<li>
<a href="images/star.jpg" title="water star">star</a>
</li>
</ul>
</body>
</html>

3. 改进

点击某个链接后可以留在当前页面;
点击链接后可以看到图片以及可以看到图片清单。

方法:
增加一个占位符图片,当没有点时,显示一个默认图片,当点击图片的链接时,拦截网页的默认行为,将图片显示为所点击链接的图片。
<img id="default" src="images/default.jpg" alt="My image gallery">;插入无序列表后。新建一个名为default的 id 样式表,样式可自定义。
显示结果:
Image

4. 实现

  1. 代码:要修改占位符的显示,只需将占位符的src属性修改为相对应的图片属性即可,需要使用的 js 方法有getAttribute()setAttribute()
    具体代码:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    // whic_pic 是元素结点
    function show_pic(whic_pic) {
    // 获取href属性
    var source = whic_pic.getAttribute("href");
    // 获取默认结点
    var placeholder = document.getElementById("default");
    // 设置属性
    placeholder.setAttribute("src", source);
    }

    其它方法:

    1
    2
    // 设置属性
    placeholder.src = source;
  2. 使用:

    • 在同目录下创建一个名为show_pic.js的文件,将上述代码放进去,再在gallery.html<head>标签里写入<script src="show_pic.js"></script>
    • 要点击某个链接触发事件时,需要使用onclick事件处理函数。添加事件处理函数的语法是event="javaScript Statement(s),所以调用show_pic的方法是:
    1
    onclick = "show_pic(this)";
    • 拦截网页默认操作:当某个元素添加了事件处理函数后,如果那段 js 代码返回的值是 true,那么 onclick 事件处理函数就认为这个链接被点击了;如果返回的的 false,那么就认为没有被点击。例如onclick="return false"这个事件处理函数就会被浏览器认为没有点击,那么也不会调用默认的函数了。所以具体的代码为:
    1
    onclick = "show_pic(this); return false";

    详细代码为:
    // 目前只有手动添加

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <li>
    <a
    onclick="show_pic(this); return false;"
    href="images/dog.jpg"
    title="a dog east something"
    >
    dog
    </a>
    </li>
    <li>
    <a
    onclick="show_pic(this); return false;"
    href="images/follower.jpg"
    title="a follower "
    >follower</a
    >
    </li>
    <li>
    <a
    onclick="show_pic(this); return false;"
    href="images/part.jpg"
    title="a part here"
    >part</a
    >
    </li>
    <li>
    <a
    onclick="show_pic(this); return false;"
    href="images/sea.jpg"
    title="the sea "
    >sea</a
    >
    </li>
    <li>
    <a
    onclick="show_pic(this); return false;"
    href="images/star.jpg"
    title="water star"
    >star</a
    >
    </li>

    现在已经完成了图片库,无论点击哪个都不会跳转了。
    Image

5. 扩展

添加切换图片时可以显示不同的文本功能。之前在每个 a 属性里都设置了 title 属性,只要用getAttribute函数就可以将其提取出来,然后可以插入到 HTML 文档中。
为此需要学习几个新的 Dom 属性。

  1. childNodes 属性:在节点树上,这个属性可以获取元素所有的子元素,是一个数组。使用方法:var children = element.childNodes,例子:

    1
    2
    3
    4
    // 获取body节点,因为一个文档只有一个body标签,所以只需取第一个元素即可
    var body_element = document.getElementsByTagName("body")[0];
    // 获取子元素
    var body_children = body_element.childNodes;

    实测:将以下代码放进show_pic.js

    1
    2
    3
    4
    5
    function count_body() {
    var body_element = document.getElementsByTagName("body")[0];
    var num = body_element.childNodes.length;
    alert(num);
    }

    为了使文档加载时使用,再添加window.onload = count_body;到 js 文件里,接着打开文档,弹出计算的所有的 body 子元素属性了。

  2. nodeType 属性
    body 应该只有 3 个子元素,但是显示的数字却比 3 大,只为文档树的节点类型并非只有元素节点一种。文档里几乎每一样东西都是一个节点,甚至连空格和换行符都是。
    第一个节点都有 nodeType 属性,nodeType 的值并不是英文,元素节点的 nodeType 是 1,属性节点的值是 2,文本节点的是 3。
    比如body_elemnt.nodeType的值是 1.

  3. 标记添加描述
    <img>下添加<p id="description">Choose an image</p>这一段文本节点。

  4. 获取该结点

    1
    2
    3
    4
    // 获取title属性
    var title = whic_pic.getAttribute("title");
    // 获取p结点
    var p_element = document.getElementById("description");
  5. 实现文本切换
    使用 DOM 提供的nodeValue属性,它可以得到和设置节点的值。
    <p>元素本身是nodeValue是一个空值,需要的是<p>子元素包含的值。
    因此使用方法为:

    1
    p_element.childNodes[0].nodeValue;
  6. firstChild 和 lastChild 属性
    firstChild 是获取节点的第一个元素,lastChild 是获取最后一个元素。
    node.childNodes[0] === node.firstChild
    使用这两个元素更简洁了。

  7. 利用 nodeValue 刷新

    1
    2
    // 将p元素赋值给nodeValue
    p_element.firstChild.nodeValue = title;

    最终代码为:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    // whic_pic 是元素结点
    function show_pic(whic_pic) {
    // 获取href属性
    var source = whic_pic.getAttribute("href");
    // 获取默认结点
    var placeholder = document.getElementById("default");
    // 设置属性
    placeholder.setAttribute("src", source);
    // 获取title属性
    var title = whic_pic.getAttribute("title");
    // 获取p结点
    var p_element = document.getElementById("description");
    // 将p元素赋值给nodeValue
    p_element.firstChild.nodeValue = title;
    }

几个新 DOM 属性:

  • childNodes
  • nodeType
  • firstChild
  • lastChild

欢迎访问我的个人博客

1. DOM

  1. DOM 的 D 指的是Document(文档),O 指的Object(对象),M 指的是Model(模型)。

  2. JS 的对象包括三种,分别是:

    • 用户定义对象,不过在这里很少用。
    • 内建对象,包括 Math、Array 等内建对象。
    • 宿主对象,由浏览器提供的对象。
  3. 模型,即将文档用“树”图表示出来,如例图所示:
    Image
    根元素是 html,有两个子分支 head 与 body,它们处于同一层次,属于兄弟关系,他们也分别有不同的子元素。

2. 节点node

节点包括元素节点、文本节点和属性结点。

  1. 元素节点:标签的名字即元素的名字,如文本段落元素的名字是“p”,列表项元素的名字是“li”。
  2. 文本节点:

    元素包含文本,它是一个文本节点。大多文本节点被包括在元素节点的内部。并非所有的元素节点都包含有文本节点,如<ul><li>Test</li></ul>中的<ul>没有直接包含文本节点,包括其它元素节点,后者即<li>包含文本节点。

  3. 属性节点:用来对元素做出更具体的描述。例如几乎所有的元素都有一个 title 属性,可以利用这个属性对包含在元素里的东西做出准确详细的描述:
    1
    <p title="test">此处应有文本</p>
    里面的title="test"是属性节点。

3. CSS

CSS 即层叠样式表,可以告诉浏览器该如何显示文档内容。

  1. 样式的声明可放在文档中的<head>里,亦可另起一文件。
  2. 语法:
    1
    2
    3
    selector {
    property: value;
    }
    例子:
    1
    2
    3
    4
    p {
    color: red;
    font-size: 18px;
    }
    这个会自动应用于文档里所有的 p 元素。
  3. id 属性:独一无二的标识符,只可用于一处。
    1
    2
    3
    #id {
    font-style: italic;
    }
    使用:
    1
    <p id="id">Test</p>
  4. class 属性:可应用于所有元素中。
    1
    2
    3
    .class {
    font-style: italic;
    }
    使用:
    1
    <p class="class">Test</p>

4. 获取节点

  1. getElementById,获取具体某个 id 的节点。
    使用方法:
    1
    var id_element = document.getElementById(id_name);
  2. getElementsByClassName,获取所有使用该 class 的节点,返回的是一个数组。注意getElementsByClassName中间的 elements有加s
    1
    var class_element = document.getElementsByClassName(class_name);
  3. getElementsByTagName,获取所有名为该 TagName 的节点,返回的是一个数组。注意getElementsByTagName中间的 elements有加s
    1
    var tag_element = document.getElementsByTagName(tag_name);

5. 获取和设置属性

  1. 获取属性:getAttribute,获取想要查询的属性值,参数为查询属性的名字。
    getAttribute不能通过document节点调用,只用被元素节点调用。
    使用方法:

    1
    2
    3
    4
    5
    6
    // 先得到节点值
    var lis = document.getElementsByTagName("li");
    // 再获取其中的属性值
    for (var i = 0; i < lis.length; i++) {
    alert(lis[i].getAttribute("title"));
    }
  2. 设置属性:setAttribute,设置具体的属性值,参数为属性名字和属性值。同样只用被元素节点调用。
    使用方法:

    1
    2
    3
    4
    5
    6
    7
    8
    // 先得到节点值
    var lis = document.getElementsByTagName("li");
    // 再修改其中的属性值
    for (var i = 0; i < lis.length; i++) {
    alert(lis[i].getAttribute("title"));
    lis[i].setAttribute("title", "li_tag");
    alert(lis[i].getAttribute("title"));
    }

欢迎访问我的个人博客

以下这些都是可以提升电脑使用体验的 10 款软件。

1. 截图软件:Snipaste

曾经我是个手机拍屏党,后来被诸多表情大师教会截图后,毅然地转到截图派。
Image

一开始使用的是 QQ 截图以及微信截图,但是这两个截图方式都要事先打开这俩软件,并且也不够专业/好用,最后找到了这个截图软件——Snipaste。
这个号称最好用的的截图软件,目前已经有 win 版、mac beta 版。

它好用在哪里呢?
第一,软件轻量,并且无广告。这个软件有免费版和专业版,免费版没有任何广告,提供的功能也足够个人用户使用;
第二,功能强:

自动检测界面元素区域

像素级的鼠标移动控制、截图范围控制

取色器 (试试 F1, C, F3)

历史记录回放 (,/.)

支持多屏

支持高分屏

第三,无与伦与的贴图功能。当你写文档需要查资料时,把相关截图贴上屏幕后,体验瞬间上一档次;

Image

第四,更强的图像标注功能,基本一个常见图片编辑器有的,这个都有;

第五,可自定义截图的分辨率。

更多的功能可以去看官方文档
官网下载地址

2. 文件查找——Everything

Image

一个轻量级的查找文件的软件,当做好索引后,查找文件的速度是秒计的。
不过这个是实在找不到文件时才用的,平时做好文件的分类索引后,就很少有它的用武之地。

下载地址

3. 解压缩软件——7z

Image

解压缩软件是电脑里必备的软件之一了。
常见的解压缩软件有——winrar、360 压缩、bendzip 等。

7Z 的优点是开源、免费、轻量(安装包仅 1.3Mb),压缩比也高,并且压缩软件该有的功能一个不少。缺点就是颜值一般般,追求这方面的话,推荐另一款同样优秀的压缩软件——Bendzip。

官网下载地址

4. 阅读 PDF 文件——sumatra

Image
说是阅读 PDF 软件,其实还支持 epub、mobi、CHM 等文件的阅读。

Sumatra PDF is a PDF, ePub, MOBI, CHM, XPS, DjVu, CBZ, CBR reader for Windows.

优点是轻量、占用内存小、简洁、开源。

官网下载地址

5. 下载软件——IDM

Image

一个使用多线程的下载软件,可以接管浏览器里的下载,下载速度非常快。不仅如此,该软件还可以几乎所有网站上的视频,还可以下载百度网盘的文件不过需要一点配置。

曾经写过一篇 IDM 下载的配置,里面有 IDM 的下载链接,地址

6. 视频软件——PotPlayer

Image
大概是最优秀的视频播放器了,界面简洁美观,没有流氓软件有的一切行为,比如突然修改你的默认播放软件等。
功能多,录屏、截 gif 之类的不在话下,支持逐帧跳转,截图非常方便。总之一般视频播放软件有的,它也有;其它播放软件没有的,它也有,比如可以收看电视信号,看直播等,可以去网上搜一下教程。

官网下载链接

7. 记事本替代——notepad3

Image

相信大家在写一些事情或者打开文本文件的时候经常会用到记事本,但是记事本的功能界面实在是太简陋了,比如常见的代码高亮、正则表达式、更改主题等全都没有。
然后就找到了这一款软件——notepad3,安装会自动替代系统的 notepad 软件,也就是说你打开 notepad 即是打开 notepad3。基本的使用方式是和 notepad 是一样的,但多了很多配置功能。

下载链接

8. window 任务栏透明小软件——TranslucentTB

任务栏默认是黑色的,有的会随主题颜色改变而改变,不过都不是透明的,并且有点显丑。

TranslucentTB,可以使任务栏改变状态。一般有两种
模糊
Image
清晰
Image

github 地址

该软件已上架微软商店,可以去该处下载安装。

9. 浏览器——Firefox

火狐浏览器一款开源浏览器,可能是仅存的非 chomium 内核浏览器。
对比 chrome 的优点是,上扩展商店以及同步数据的时候不用特别的上网方式。

注意下载浏览器的时候不要下载到国内特供版,看准网址,如果域名是(firefox.com.cn)的话,那就是国内特供的了,认准域名(mozilla.org)。国内特供版的数据无法与非国内版的同步,曾经我就是被这个坑过。

下载地址

10. 安全软件——火绒

一个没有任何流氓行为的安全软件,不过我也就是用它来管管弹窗,以及开机自启动软件的,一般的安全问题有 window defense 就够了。
如果你的电脑安装有其它国产免费安全软件的话,早卸早安全。