Linux下安装ocrmypdf工具
1. 简介
OCRmyPDF 工具通过 OCR 技术扫描出 PDF 文件中的文字部分,可将不可复制的 PDF 文件(扫描版)转换为可复制的 PDF 文件(文字版)。除此之外,OCRmyPDF 还有诸如 PDF 渲染、优化等功能。最重要的是,OCRmyPDF 是开源免费的。
2. 安装
OCRmyPDF 工具在 Windows 和 Linux 上都可以安装使用,详细参见 OCRmyPDF 官方手册。
3. 使用
示例:
将扫描版 inputfile.pdf 转为可复制的文字版 outputfile.pdf
1ocrmypdf inputfile.pdf outputfile.pdf
Linux与Windows双系统时间错乱问题
1. 原因
Windows 系统把硬件时间当作本地时间,Windows 系统显示的时间就是硬件时间,和 BIOS 中显示的时间一致。
Linux/Unix/Mac 系统把硬件时间当作 UTC 时间,系统显示的时间是通过硬件时间换算而来。
2. 解决
可以通过以下任意一种方案解决。
2.1 更改 Windows 时间设定(推荐)
更改 Windows 对硬件时间的解释方式。以管理员身份打开 CMD,运行以下命令:
1Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1
若想更改回去,只需如下设置:
1Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 0
2.2 更改 Linux 时间设定
更改 Linux 对硬件时间的解释方式。
12timedatectl se ...
Deepin15.11下安装CodeBlocks17.12
1. 下载软件包
到 CodeBlocks 官网下载对应安装包codeblocks_17.12-1_amd64_stable.tar.xz,解压后进入解压目录。
2. 安装软件包
在解压目录中有许多.deb软件包,依次按如下顺序安装即可:
12345678910sudo dpkg -i wx*.debsudo dpkg -i lib*.debsudo dpkg -i codeblocks-libwxcontrib0_17.12-1_amd64.debsudo dpkg -i codeblocks-w*.debsudo dpkg -i codeblocks-headers_17.12-1_all.debsudo dpkg -i codeblocks-dev_17.12-1_amd64.debsudo dpkg -i codeblocks-common_17.12-1_all.debsudo dpkg -i codeblocks_17.12-1_amd64.debsudo dpkg -i codeblocks-contrib-common_17.12-1_all.debsudo dpkg ...
Windows下Git配置ssh-key
1. 简介
Git 配置 ssh-key 是为了识别并区分不同的主机,所以一台主机要使用 Git 进行远程仓库托管代码,首先要在本机生成 ssh-key,并配置到对应远程仓库网站(Github、Gitee 等)。
2. 生成 ssh-key
在 Git 终端输入:
1ssh-keygen -t rsa -C "youremail"
然后 Git 终端会询问保存路径(建议直接 enter,按默认路径保存;否则可能会出现 Permission denied 问题,此解决办法见下文),以及密码设置(可设可不设)。
3. 配置远程仓库网站
在 Github 或 Gitee 上找到添加 ssh 公匙选项,到刚才保存的 ssh-key 的路径下找到对应的 .pub 文件(此为公匙可外传,另一个为私匙不可外传),打开后将内容粘贴到 Github 或 Gitee 网站添加 ssh 公匙栏中。
4. 测试连接远程仓库网站
在 Git 终端输入:
12ssh -T git@github.com # github 网站 ssh -T git@gitee.com # git ...
Go语言代码风格
Go 语言对代码风格进行了强制性统一,其代码风格要求如下:
1. Public 变量/函数必须以大写字母开头,Private 变量/函数必须以小写字母开头
Private 函数只能在本包中使用,Public 函数可以被其他包调用。
2. { } 书写应遵循 K&R 风格
譬如以下风格是正确的:
123if expression { ...}
而以下风格是错误的:
1234if expression { ...}
原因可参见第 4 点。
3. 不得包含在源代码文件中没有用到的包或声明在源代码文件中未使用的变量
4. 不需要在语句或声明末尾添加分号,除非一行上有多条语句
实际上,编译器会主动把特定符号后的换行副转换为分号,因此换行符添加的位置会影响 Go 代码的解析。
比如行末是标识符、整数、浮点数、虚数、字符或字符串文字、关键字 break、continue、fallthrough、return 中的一个、运算符和分隔符 ++、--、)、]、} 中的一个。
这也是为什么 Go 语言中 { } 需要遵循 K& ...
Go语言常用命令
1. 构建项目
在 $GOPATH/bin 目录下构建 $GOPATH/src 目录下的 XXX 文件夹所包含的项目:
1go build XXX
构建项目成功会在 $GOPATH/bin 目录下生成 XXX 可执行文件。
2. 运行项目
在终端编译运行 $GOPATH/src 目录下的 XXX 文件夹所包含的项目:
1go run XXX
3. 测试项目
如果项目有提供 test 测试文件在 $GOPATH/src 目录下的 YYY 文件夹中,则可以在终端测试对应文件功能是否符合预期:
123go test YYY # 默认启用了缓存机制go test -count=1 YYY # 禁用缓存机制go test -v -count=1 YYY # -v 选项指定输出详细信息
对于已经缓存了 test 信息,可以手动清除:
1go clean -testcache
Go语言常用环境变量
1. GOPATH
GOPATH 环境变量用来指定开发项目所在地址。
2. GOROOT
GOROOT 用来指定 go 的安装路径。
3. GO111MODULE
GO111MODULE 环境变量用于开启或关闭 Go 语言中的模块支持,它有 off、on、auto 三个可选值,默认为 auto。
3.1 GO111MODULE=off
无模块支持,go 会从 $GOPATH 文件夹和 vendor 目录中寻找依赖项。
3.2 GO111MODULE=on
模块支持,go 忽略 $GOPATH 文件夹,只根据 go.mod 下载依赖。
3.3 GO111MODULE=auto
在 $GOPATH/src 外层且根目录有 go.mod 文件时,开启模块支持;否者无模块支持。
Go语言流程控制
程序设计语言的流程控制语句用于设定计算执行的次序,建立程序的逻辑结构。流程控制语句主要有三个作用:
选择:根据条件跳转到不同的执行序列
循环:根据条件反复执行某段语句序列
跳转:根据条件跳转到某执行序列
Go 语言支持以下几种流程控制语句:
条件语句:对应关键字为 if、else、else if
选择语句:对应关键字为 switch、case、select
循环语句:对应关键字为 for、range
跳转语句:对应关键字为 goto
1. 条件语句
123456a := 4if b := 1; a < 5 { a = a + b} else { a = a -b}
条件语句不需要使用圆括号 ( ) 将条件包含起来
无论语句体包含几条语句,花括号 { } 必须存在,且遵守 go 语言代码风格
在 if 之后条件语句之前,可以添加变量初始化语句,用 ; 分隔开
在有返回值的函数中,不允许将最终的 return 语句包含在 if … else … 结构中
2. 选择语句
1234567891011121314switch ...
Mint19.1配置VSCode的Go环境
1. 下载软件包
到 Go 语言官网地址下载 tar.gz 软件包,本人下载的软件包版本是 go1.14.2.linux-amd64.tar.gz 。
2. 解压软件包
将软件包解压到合适位置,本人解压到路径 /usr/local 目录下:
1sudo tar -C /usr/local -xzf go1.14.2.linux-amd64.tar.gz
3. 添加环境变量
3.1 导入软件包路径
若配置该 Go 开发环境是针对整个系统的,则修改 /etc/profile 文件,在文件尾部添加以下代码,使之前下载的软件包解压路径添加到环境变量 $PATH 中;若配置该 Go 开发环境是针对当前用户的,则修改 $HOME/.bashrc 文件,在文件尾部添加以下代码,使之前下载的软件包解压路径添加到环境变量 $PATH 中;此外还需追加个人项目路径到环境变量 $GOPATH 中(用于后续进行 go 语言开发)。
12export PATH=/usr/local/go/bin:$PATH # 该路径用于指明 go 编译器程序位置export GOPATH=$HOME/go:$GOPATH ...
规范化、归一化、标准化、中心化
符号说明:本文中 XXX 表示原数据,X~\tilde{X}X~ 表示处理后的数据,μ,σ2\mu, \sigma^2μ,σ2 分别表示 XXX 的均值和方差。
1. 规范化、归一化
规范化(Normalization)是指将不同变化范围的值映射到固定范围中,常见的是 [0,1][0, 1][0,1],此时也称为归一化。规范化将数据从有量纲变为无量纲,方便不同单位和量级之间的数据进行处理。
因此,在一般的表述中,规范化和归一化是等价的(且往往都是指 Min-max 规范化),英文统一用 Normalization(然而深度学习中的 Batch Normalization 似乎也用错术语了,应该用 Batch Standardization)。
1.1 Min-max 规范化
X~=X−XminXmax−Xmin(1)\begin{align*}
\tilde{X} = {X - X_{\min} \over X_{\max} - X_{\min}} \tag{1}
\end{align*}
X~=Xmax−XminX−Xmin(1)
1.2 Mean 规范化
X ...
Atom搭建MarkDown环境
1. 简介
Atom 是 Github 专门为程序员推出的一款开源跨平台文本编辑器,基于 web 技术构建,支持多种语言开发,原生支持 git 以及 MarkDown 基础语法书写和预览。
2. 常用快捷键
Ctrl+Shift+P :打开搜索面板
Ctrl+Shift+M :打开 MarkDown 实时预览(安装 markdown-preview、markdown-preview-plus 或 markdown-preview-enhanced 插件)
Ctrl+Shift+F :全局查找和替换(默认不区分大小写,Ctrl+Shift+C 可以切换是否区分)
Ctrl+F :文件内查找和替换(默认不区分大小写,Ctrl+Shift+C 可以切换是否区分)
Ctrl+G :文件内跳转到指定行
Ctrl+T :模糊搜索工作目录下的文件
Ctrl+N :新建文件
Ctrl+O :打开文件
Ctrl+Shift+O :打开文件夹
Ctrl+S :保存文件
Ctrl+Shift+S :文件另存为
Ctrl+Z :撤销
Ctrl+Y :重做
Ctrl+A :全选
Ctrl+W :关闭当前文件
...
VSCode搭建MarkDown环境
VSCode 原生就支持 Markdown 语言编写,但功能比较基础。为了满足 Markdown 更多的日常使用功能,以下推荐几款非常有用的插件:
1. Markdown Preview Enhanced(MPE)
该插件包含许多 MarkDown 语法功能,能满足书写 MarkDown 的大部分日常需求。
实时滚动预览(Ctrl+Shift+V)
LaTex数学公式
表格
Code Chunk
Pandoc
Toc
mermaid 流程图、时序图等(初始载入 MPE 时渲染 mermaid 可能会出现黑色图块,需要到 MPE 设置中的 mermaid theme 中修改下默认主题就可以了)
嵌入 LaTex 渲染 TikZ、Chemfig 等
脚注
注释(Ctrl+K+C 添加注释、Ctrl+K+U 取消注释)
【注】更多详细功能及使用操作请参阅 MPE 的官方文档。
2. Markdown Paste
该插件主要提供 .md 文本文本内的图片剪切板快捷粘贴功能。安装该插件后,将截图复制到剪切板,然后使用快捷键 Ctrl+Alt+V ,就会弹出图片便捷插入栏,输入文件名后,就会在 ...