HelloGitHub Vol.33
HelloGitHub shares interesting, beginner-friendly open-source projects from GitHub, updated every month on the 28th. Discover fun beginner projects, open-source books, practical tutorials, and enterprise-grade projects, helping you quickly experience and become interested in the charm of open source.
由Milo Yip发起的用 C 从零开始编写 JSON 库教程。大纲:
- 启程:编译环境、JSON 简介、测试驱动、解析器主要函数及各数据结构。
- 解析数字:JSON number 的语法
- 解析字符串:使用 union 存储 variant、自动扩展的堆栈、JSON string 的语法、valgrind
- Unicode:Unicode 和 UTF-8 的基本知识、JSON string 的 unicode 处理
- 解析数组:JSON array 的语法
- 解析对象:JSON object 的语法、重构 string 解析函数
- 生成器:JSON 生成过程、注意事项。练习完成 JSON 生成器
- 访问与其他功能:JSON array/object 的访问及修改
用动画的形式呈现解 LeetCode 题目的思路
仅 395 字节的响应式 CSS 框架
Golang tldr 客户端。对比之前推荐过的 Python 版本客户端,Golang 版本速度更快、交互友好、且支持选择搜索结果的展示样式。每当你想要用 tar 解压缩,但是记不住具体参数的时候,tldr 可以拯救世界

一个轻量级的开源 Android 图片水印框架,支持文字水印和图像水印,以及不同的水印样式、位置等。同时可以支持 LSB 空间域隐形数字水印的加载和频域数字水印的加载和检测,适合客户端图片水印添加,移动端图像处理等

简单、美观、强大、可扩展的 Android 和 Java 日志库,可同时在多个通道打印日志,如 Logcat、Console 和文件。功能:
- 全局配置(TAG,各种格式化器...)或基于单条日志的配置
- 支持打印任意对象以及可自定义的对象格式化器
- 支持打印无限长的日志(没有 4K 字符的限制)
- XML 和 JSON 格式化输出
- 等等

用于检查中文 markdown 编写格式规范的命令行工具。方便集成 CI,支持 API 方法调用。对于矫正 markdown 编写格式来说是一个很好的检查工具,基于 AST 的格式规范检测的代码也可以借鉴和学习

几乎实现了当前所有主流 APP 的分类切换控制效果的库。效果丰富、配置简单,优点:
- 使用协议封装指示器逻辑,可以为所欲为的自定义指示器效果
- 提供更加全面丰富、高度自定义的效果
- 使用子类化管理 cell 样式,逻辑更清晰,扩展更简单

写 Objective-C 的程序员肯定对冗长的描述性命名风格爱的深切。所以 Cocoa 框架里最长的方法或在常量名有哪些?该项目就是告诉你这些冗长名字都有那些
基于 UITextView 书写风格类似于 masonry 的 iOS 端富文本控件。它采用声明式(链式)方法定义富文本控件,与编程式的相比它所需的代码量更短、更直观和易用。示例代码:
#import "NudeIn.h" /// 声明控件为你的成员变量 @property (nonatomic,strong) NudeIn *attrLabel; /// Do it yourself _attrLabel = [NudeIn make:^(NUDTextMaker *make) { make.text(@"this is a ").font(14).color([UIColor blackColor]).attach(); make.text(@"BlueLink").font(17).color([UIColor blueColor]).link(self,@selector(linkHandler:)).attach(); make.text(@", and this is a ").font(14).color([UIColor blackColor]).attach(); make.text(@"RedLink").font(17).color([UIColor redColor]).link(self,@selector(linkHandler:)).attach(); }]; /// 对声明了 link 属性的部分定义回调 (void)linkHandler:(NUDAction *)action { if ([action isKindOfClass:[NUDLinkAction class]]) { NUDLinkAction *linkAction = (NUDLinkAction *)action; UIAlertController *alertController = [UIAlertController alertControllerWithTitle:linkAction.string message:nil preferredStyle:UIAlertControllerStyleAlert]; [alertController addAction:[UIAlertAction actionWithTitle:@"OK" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) { }]]; [self presentViewController:alertController animated:YES completion:nil]; } }
用 Python 写一个简单的解释器系列教程
用 Python 开发的快速、简单的静态网站生成器,主要是为了构建项目的文档。文档源是 markdown 文件,用法和 Hexo 差不多,可通过一个 YAML 文件进行配置

主要内容是 CV 领域里一些论文的翻译,包括分类、检测、OCR和模型轻量化。不喜欢看英文原版论文的,可以关注该项目
人脸检测领域经典之作,出自 2016 年 ECCV 一篇论文。目前在工业应用中落地比较成功,很多公司检测模块运用 MTCNN 或者其加速版,MTCNN 将人脸检测和关键点检测通过一个模型作为 MultiTasks 的方式进行训练,inference 时候可同时得到人脸框信息和关键点信息

该项目是论文 S3FD:Single Shot Scale-invariant Face Detector 的 pytorch 复现版本。S3FD 目前在 FDDB 的评测中排在前几位,属于精度较高的人脸检测方法。论文主要解决人脸尺度问题,进一步提升对小脸的检测

该项目是 ICCV2017 论文 SSH:Single Stage Headless Face Detector 作者自己开源的项目,算是官方开源项目,具有一定的权威性。SSH 也算是人脸检测中一个经典的方法,具有较高的精度和较快的速度。项目实现了论文中的很多细节,对复现过程也有详细的讲解,容易实现。美中不足的是论文中的 Pyramid 方式,该项目没有实现

《后端开发面试题》中文
变量命名工具。计算机科学里两件最难的事:缓存失效和命名。该工具支持直接搜索中文,当你查中文的时候,Codelf 会直接查好单词和单词的近义词给你。然后再搜索 Github、Bitbucket、Google Code 等上的开源项目的源码匹配出与这些词汇相关的变量名和函数名。在线尝试
一个终端模拟器,模仿了老式阴极管屏幕的外观和视觉感觉,养眼、轻量且外观可调,支持 Linux、macOS。搭配上 Vim 或 Emacs,即刻获得与上个世纪 hackers 相同的编程体验

在线生成 Nginx 配置文件网站,在线尝试
One-page Command Line Quick Reference Guidebook. This project is a summary of some command line usage skills discovered by the author when working on the Linux system. Some skills are very basic, while others are quite complex and even difficult to understand. This article is not long, but when you can master all the skills listed here proficiently, you will learn a lot about the command line. They will improve your flexibility and efficiency when programming.
- C
- C++
- CSS
- Go
- Java
- JavaScript
- Objective-C
- PHP
- Python
- AI
- Other
- Book