DevWeekly/weekly/2022-07-22-weekly.md

268 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

> **高考志愿**、**考研保研**、**副业赚钱**、**职业规划**、**简历优化**,微信欢迎加入[《猴哥成长营》](https://www.yuque.com/jackpop/ulig5a/srnochggbsa2eltw?singleDoc#)
<p align="center">
<img src="https://s11.ax1x.com/2023/12/23/pi7qxU0.md.jpg" height="400"></img>
</p>
**DevWeekly**收集整理每周优质开发者内容,包括**开源项目**、**资源工具**、**技术文章**等方面。
每周五定期发布,同步更新到<a href="https://www.zhihu.com/people/sharetechlee/activities">
知乎Jackpop</a><a href="https://mp.weixin.qq.com/s/hTZAGgkiMS0XPZ9OHQxFJg" rel="nofollow">公众号:平凡而诗意</a>
欢迎大家投稿,**[提交issue](https://github.com/Jackpopc/DevWeekly/issues)**,推荐或者自荐开源项目/资源/工具/文章~
**订阅方式**
1. **Star**并收藏项目[DevWeekly](https://github.com/Jackpopc/DevWeekly)
2. 关注<a href="https://www.zhihu.com/people/sharetechlee/activities">
知乎Jackpop</a>
3. 关注并星标<a href="https://mp.weixin.qq.com/s/hTZAGgkiMS0XPZ9OHQxFJg" rel="nofollow">公众号:平凡而诗意</a>
进阶技术,优质资源,实用工具,欢迎关注公众号**平凡而诗意**
<p align="center">
<img src="https://s1.ax1x.com/2022/07/10/jsCAdH.jpg" width="260" height="260"></img>
</p>
## 开源项目
#### 1. [dot](https://github.com/sensity-ai/dot)
` Python` `Star:2.6k`
dotDeepfake Offensive Toolkit是一款将deepfakes实时的、可控制的应用于在线视频的工具。
那么deepfakes是什么
简单的翻译过来就是深度伪造,换句话说,它是通过人工智能技术,能够将目标对象的面部特征嫁接到被模仿的对象上,给目标对象进行换脸。
#### 2. [codecat](https://github.com/CoolerVoid/codecat)
` Python` `Star:241`
![e9bCX.png](https://pic1.zhimg.com/80/v2-369270f258a3f7b53aafaa54a3ccf2ed_720w.png)
CodeCat是一款可以帮助你使用静态代码分析功能找到/追踪用户输入和安全漏洞的开源工具,这对于代码开发中的安全控制非常有价值。
目前它适用于C、C++、GO、Python、javascript、Swift、PHP、Ruby、ASP、Kotlin、Dart和Java。
总结一下,它具有如下特性:
- 按照Regex的自定义规则进行递归代码搜索
- 代码视图中的语法高亮
- 管理规则的系统
- 控制用户的资源
- 按照IP地址的允许列表控制HTTP访问的资源
- 遵循OWASP安全实践的应用
#### 3. [OCRmyPDF](https://github.com/ocrmypdf/OCRmyPDF)
` Python` `Star:6.8k`
PDF有很多不同类型直接通过word等格式转换的可以直接复制粘贴操作比较简单。但是扫描版的PDF则比较麻烦。
OCRmyPDF为扫描的PDF文件添加OCR文本层使其能够被搜索或复制粘贴。
它具有如下特性:
- 基于普通的PDF生成一个可搜索的PDF/A文件
- 将OCR文本准确地放在图像下面以方便复制/粘贴
- 保持原始嵌入图像的准确分辨率
- 优化PDF图像生成的文件通常比输入文件小
- 使用Tesseract OCR引擎支持识别100多种语言
- 能处理数千页的文件
#### 4. [data-diff](https://github.com/datafold/data-diff)
` Python` `Star:1.3k`
data-diff是一个命令行工具和Python库能够用于对比两个不同数据库的差异。
目前它已经在多种不同类型的数据库上进行过验证而且对于对比结果可以通过CLI/API的形式来创建监控和告警能够兼容不同的字段类型。速度也非常快10s内能够验证25M+行数据。
data-diff将表分割成更小的片段然后在两个数据库中对每个片段进行校验。当一个段的校验和不相等时它将进一步把这个段分成更小的段对这些段进行校验直到它得到不同的行。
#### 5. [cfg4j](https://github.com/cfg4j/cfg4j)
` Java` `Star:541`
现代配置库用于用Java编写的分布式应用。
cfg4j也就是configuration for Java一种开源的配置库可以用于Java开发的分布式应用。
它具有如下特性:
- 自动重新加载配置
- 强大的配置机制(接口绑定,多源支持与回退策略,合并等等)。
- 分布式环境友好(缓存,支持多种环境[测试,预开发,生产]......)
- 读取配置Consul、Git reposYAML和/或属性、文件、Classpath ...
- 与DI容器无缝集成Spring、Guice等
- 与Metrics库的集成来展示性能指标
- 经过大量的测试99%的代码覆盖率)
- 完善的文档
#### 6. [Decompiler](https://github.com/shotav/Decompiler)
` Kotlin` `Star:58`
![e91YY.png](https://pic1.zhimg.com/80/v2-3b7877d5fd09a9f594e528b26ea751a6_720w.png)
一款开源免费的Java反编译GUI工具。
顾名思义通过这款工具我们可以对已经编译的Java jar包可以反编译复杂的Java applets和二进制文件产生准确的源代码。
#### 7. [scrutiny](https://github.com/AnalogJ/scrutiny)
` Go` `Star:1.5k`
![e9y81.png](https://pic1.zhimg.com/80/v2-0f0e22c90fbc6da4df25e697b9148c4d_720w.png)
用于智能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](https://github.com/alajmo/sake)
` Go` `Star:435`
sake是一个用于本地和远程主机的命令运行工具。
你在 sake.yaml 配置文件中定义服务器和任务,然后在服务器上就可以运行任务。
sake有大量的功能
- 任务、服务器和标签的自动完成
- 通过SSH进入服务器或docker容器
- 通过 sake list servers|tasks 列出服务器/任务
- 以表格格式展示任务输出 sake run <task> 结果
#### 9. [codewarrior](https://github.com/CoolerVoid/codewarrior)
` C` `Star:170`
一款开源的代码搜索工具和静态代码分析工具,它具有如下功能:
- 通过重合码模式搜索代码
- 自定义规则
- 带有网络套接字资源的HTTPd视图
- 递归扫描
- 通过编程语言突出显示语法
- 通过允许列表控制IP地址访问的资源
#### 10. [wayfire](https://github.com/WayfireWM/wayfire)
` C++` `Star:1.5k`
Wayfire是一个3D Wayland合成器灵感来自于Compiz并基于wlroots。
它旨在创建一个可定制的、可扩展的和轻量级的环境,而不用以牺牲外观作为代价。
## 资源工具
#### 1. [Pomsky](https://pomsky-lang.org/)
Pomsky是一种可以编译成正则表达式的语言它目前处于alpha阶段。
Pomsky可以通过CLI或Rust宏来使用。
一些例子:
```regexp
# 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](https://github.com/phyver/GameShell)
一个学习如何使用Unix shell命令的游戏.
学习Unix shell是有一定成本的GameShell被设计成一种工具帮助学生接触到shell通过游戏的方式在鼓励学习的同时也能获得乐趣。
![e9ppD.gif](https://pic4.zhimg.com/80/v2-72a96c217de5e9ba0abba41480e6dfa6_720w.gif)
#### 3. [Commands.dev](https://www.commands.dev/)
每个工程师都有过忘记终端命令的时候,因为它很少被使用,或者有难以理解的复杂参数。
当这种情况发生时,不得不在他们的终端命令历史中进行搜索,或者打开浏览器进行搜索。
Commands.dev就是要解决这个问题。
Commands.dev是一个开源的、可搜索的、从整个互联网上收集的流行终端命令的集合。你可以按类别git、android、docker查找命令每个命令都会告诉你需要插入哪些参数。
![e9JfF.png](https://pic1.zhimg.com/80/v2-bd4a6538feadbb897600f22fa51f0c03_720w.png)
#### 4. [PyScript](https://pyscript.net/)
![e9R56.png](https://pic2.zhimg.com/80/v2-f881f25e1f56435dc0cfabac16e49b24_720w.png)
PyScript是一种可以在浏览器中运行的Python。
它是一个框架允许用户使用HTML的界面和Pyodide、WASM等在浏览器中创建丰富的Python应用程序。
PyScript框架为各种经验水平的用户提供了一种具有无数应用的、易于学习的编程语言。
#### 5. [Hedy](https://hedycode.com/hedy#story)
![e9tKP.png](https://pic3.zhimg.com/80/v2-2fd40aab22e8e9621da79c302cf05d1b_720w.png)
学习编程可能很困难,不是说编程本身很难,而是有很多规则你需要记住,就像你开始学习英语时一样。
同样地,你也需要大量的练习来学习编程。
Hedy则是一款渐进式的编程语言。这意味着你不必一次就学会所有的规则最初的几个级别没有那么多规则所以你可以轻松地适应编程。
在每个级别中,都会增加新的规则,增加命令的数量,循序渐进的进行学习。
## 技术文章
#### 1. [用Java和Python进行数据统计和分析](https://dzone.com/articles/data-statistics-and-analysis-with-java-and-python)
提起数据统计与分析很多同学第一印象想到的就是Python或者R。
其实Java也是一款在数据领域应用非常广泛的编程语言例如Flink、hive等都对Java有很好的支持。
在这篇文章中重点研究如何使用Java和Python对大量的表格数据进行简单的数据分析并计算一些统计数据。
在这里,可以看到如何在每个平台上进行数据分析的不同技术,比较它们如何扩展,以及应用并行计算来提高其性能的可能性。
#### 2. [重构代码的10个最佳实践](https://blog.thecode.xyz/10-best-practices-for-refactoring-code)
编写代码并不仅仅为了它能够正常执行并输出结果,还要考虑它的设计模式、扩展线、可读性等。
重构是在不改变其功能的情况下改进现有代码的设计的过程。
作为软件开发者,我们不断面临着改进和优化代码的需要。
无论是为了性能、可读性还是可维护性,重构代码都是一项基本技能。
在重构代码时,有许多不同的技术可以使用。
在这篇文章中就给大家介绍了重构代码的10个最佳实践。