写点什么

PDF 处理还收费?不可能!

作者:Jackpop
  • 2022 年 7 月 24 日
  • 本文字数:3046 字

    阅读完需:约 10 分钟

DevWeekly 收集整理每周优质开发者内容,包括开源项目工具资源技术文章等方面,每周五首发于DevWeekly,欢迎大家 Star 并收藏!

原文链接:DevWeekly | 第2期:重构代码的10个最佳实践

DevWeekly每周五首发于 Github,欢迎大家 Star 并收藏!


DevWeekly 收集整理每周优质开发者内容,包括开源项目资源工具技术文章等方面。


欢迎大家投稿,提交issue,推荐或者自荐开源项目/资源/工具/文章~


订阅方式


  1. Star 并收藏项目DevWeekly

  2. 关注 知乎:Jackpop

开源项目

1. dot

Python Star:2.6k


dot(Deepfake Offensive Toolkit)是一款将 deepfakes 实时的、可控制的应用于在线视频的工具。


那么,deepfakes 是什么?


简单的翻译过来就是深度伪造,换句话说,它是通过人工智能技术,能够将目标对象的面部特征嫁接到被模仿的对象上,给目标对象进行换脸。

2. codecat

Python Star:241



CodeCat 是一款可以帮助你使用静态代码分析功能找到/追踪用户输入和安全漏洞的开源工具,这对于代码开发中的安全控制非常有价值。


目前它适用于 C、C++、GO、Python、javascript、Swift、PHP、Ruby、ASP、Kotlin、Dart 和 Java。


总结一下,它具有如下特性:


  • 按照 Regex 的自定义规则进行递归代码搜索

  • 代码视图中的语法高亮

  • 管理规则的系统

  • 控制用户的资源

  • 按照 IP 地址的允许列表控制 HTTP 访问的资源

  • 遵循 OWASP 安全实践的应用

3. OCRmyPDF

Python Star:6.8k


PDF 有很多不同类型,直接通过 word 等格式转换的可以直接复制粘贴,操作比较简单。但是,扫描版的 PDF 则比较麻烦。


OCRmyPDF 为扫描的 PDF 文件添加 OCR 文本层,使其能够被搜索或复制粘贴。


它具有如下特性:


  • 基于普通的 PDF 生成一个可搜索的 PDF/A 文件

  • 将 OCR 文本准确地放在图像下面,以方便复制/粘贴

  • 保持原始嵌入图像的准确分辨率

  • 优化 PDF 图像,生成的文件通常比输入文件小

  • 使用 Tesseract OCR 引擎,支持识别 100 多种语言

  • 能处理数千页的文件

4. data-diff

Python Star:1.3k


data-diff 是一个命令行工具和 Python 库,能够用于对比两个不同数据库的差异。


目前,它已经在多种不同类型的数据库上进行过验证,而且对于对比结果可以通过 CLI/API 的形式来创建监控和告警,能够兼容不同的字段类型。速度也非常快,10s 内能够验证 25M+行数据。


data-diff 将表分割成更小的片段,然后在两个数据库中对每个片段进行校验。当一个段的校验和不相等时,它将进一步把这个段分成更小的段,对这些段进行校验,直到它得到不同的行。

5. cfg4j

Java Star:541


现代配置库,用于用 Java 编写的分布式应用。


cfg4j,也就是 configuration for Java,一种开源的配置库,可以用于 Java 开发的分布式应用。


它具有如下特性:


  • 自动重新加载配置

  • 强大的配置机制(接口绑定,多源支持与回退策略,合并等等)。

  • 分布式环境友好(缓存,支持多种环境[测试,预开发,生产],......)

  • 读取配置:Consul、Git repos(YAML 和/或属性)、文件、Classpath, ...

  • 与 DI 容器无缝集成:Spring、Guice 等

  • 与 Metrics 库的集成来展示性能指标

  • 经过大量的测试(99%的代码覆盖率)

  • 完善的文档

6. Decompiler

Kotlin Star:58



一款开源免费的 Java 反编译 GUI 工具。


顾名思义,通过这款工具,我们可以对已经编译的 Java jar 包,可以反编译复杂的 Java applets 和二进制文件,产生准确的源代码。

7. scrutiny

Go Star:1.5k



用于智能 S.M.A.R.T 监控的 WebUI。


如果你运行的服务器有几个硬盘,你可能已经熟悉 S.M.A.R.T 和 smartd 守护程序。


smartd 是一个监控许多 ATA、IDE 和 SCSI-3 硬盘中内置的自我监测、分析和报告技术(SMART)系统的守护进程。


SMART 的目的是监测硬盘的可靠性和预测硬盘故障,并进行不同类型的硬盘自我测试。


Scrutiny 是一个简单而集中的应用,有几个核心功能:


  • Web UI 仪表板

  • smartd 集成

  • 自动侦测所有连接的硬盘 历史趋势的 S.M.A.R.T 指标跟踪

  • 利用现实故障率定制阈值

  • 温度跟踪

8. sake

Go Star:435


sake 是一个用于本地和远程主机的命令运行工具。


你在 sake.yaml 配置文件中定义服务器和任务,然后在服务器上就可以运行任务。


sake 有大量的功能:


  • 任务、服务器和标签的自动完成

  • 通过 SSH 进入服务器或 docker 容器

  • 通过 sake list servers|tasks 列出服务器/任务

  • 以表格格式展示任务输出 sake run <task> 结果

9. codewarrior

C Star:170


一款开源的代码搜索工具和静态代码分析工具,它具有如下功能:


  • 通过重合码模式搜索代码

  • 自定义规则

  • 带有网络套接字资源的 HTTPd 视图

  • 递归扫描

  • 通过编程语言突出显示语法

  • 通过允许列表控制 IP 地址访问的资源

10. wayfire

C++ Star:1.5k


Wayfire 是一个 3D Wayland 合成器,灵感来自于 Compiz 并基于 wlroots。


它旨在创建一个可定制的、可扩展的和轻量级的环境,而不用以牺牲外观作为代价。

资源工具

1. Pomsky

Pomsky 是一种可以编译成正则表达式的语言,它目前处于 alpha 阶段。


Pomsky 可以通过 CLI 或 Rust 宏来使用。


一些例子:


# String'hello world'                 # hello world
# Greedy repetition'hello'{1,5} # (?:hello){1,5}'hello'* # (?:hello)*'hello'+ # (?:hello)+
# Lazy repetition'hello'{1,5} lazy # (?:hello){1,5}?'hello'* lazy # (?:hello)*?'hello'+ lazy # (?:hello)+?
# Alternation'hello' | 'world' # hello|world
复制代码

2. GameShell

一个学习如何使用 Unix shell 命令的游戏.


学习 Unix shell 是有一定成本的,GameShell 被设计成一种工具,帮助学生接触到 shell,通过游戏的方式在鼓励学习的同时也能获得乐趣。


3. Commands.dev

每个工程师都有过忘记终端命令的时候,因为它很少被使用,或者有难以理解的复杂参数。


当这种情况发生时,不得不在他们的终端命令历史中进行搜索,或者打开浏览器进行搜索。


Commands.dev 就是要解决这个问题。


Commands.dev 是一个开源的、可搜索的、从整个互联网上收集的流行终端命令的集合。你可以按类别(git、android、docker)查找命令,每个命令都会告诉你需要插入哪些参数。


4. PyScript


PyScript 是一种可以在浏览器中运行的 Python。


它是一个框架,允许用户使用 HTML 的界面和 Pyodide、WASM 等,在浏览器中创建丰富的 Python 应用程序。


PyScript 框架为各种经验水平的用户提供了一种具有无数应用的、易于学习的编程语言。

5. Hedy


学习编程可能很困难,不是说编程本身很难,而是有很多规则你需要记住,就像你开始学习英语时一样。


同样地,你也需要大量的练习来学习编程。


Hedy 则是一款渐进式的编程语言。这意味着,你不必一次就学会所有的规则,最初的几个级别没有那么多规则,所以你可以轻松地适应编程。


在每个级别中,都会增加新的规则,增加命令的数量,循序渐进的进行学习。

技术文章

1. 用Java和Python进行数据统计和分析

提起数据统计与分析,很多同学第一印象想到的就是 Python 或者 R。


其实,Java 也是一款在数据领域应用非常广泛的编程语言,例如,Flink、hive 等都对 Java 有很好的支持。


在这篇文章中,重点研究如何使用 Java 和 Python 对大量的表格数据进行简单的数据分析并计算一些统计数据。


在这里,可以看到如何在每个平台上进行数据分析的不同技术,比较它们如何扩展,以及应用并行计算来提高其性能的可能性。

2. 重构代码的10个最佳实践

编写代码并不仅仅为了它能够正常执行并输出结果,还要考虑它的设计模式、扩展线、可读性等。


重构是在不改变其功能的情况下改进现有代码的设计的过程。


作为软件开发者,我们不断面临着改进和优化代码的需要。


无论是为了性能、可读性还是可维护性,重构代码都是一项基本技能。


在重构代码时,有许多不同的技术可以使用。


在这篇文章中,就给大家介绍了重构代码的 10 个最佳实践。

发布于: 刚刚阅读数: 5
用户头像

Jackpop

关注

还未添加个人签名 2020.09.16 加入

公众号:平凡而诗意,微信:code_7steps,全网粉丝超20万,技术进阶、优质资源、实用工具,欢迎关注!

评论

发布
暂无评论
PDF处理还收费?不可能!_Jackpop_InfoQ写作社区