Skip to content

Latest commit

 

History

History
318 lines (234 loc) · 17.1 KB

HelloGitHub32.md

File metadata and controls

318 lines (234 loc) · 17.1 KB

《HelloGitHub》第 32 期

兴趣是最好的老师,HelloGitHub 就是帮你找到兴趣!

简介

分享 GitHub 上有趣、入门级的开源项目。

这是一个面向编程新手热爱编程对开源社区感兴趣 人群的月刊,月刊的内容包括:各种编程语言的项目让生活变得更美好的工具书籍、学习笔记、教程等,这些开源项目大多都是非常容易上手,而且非常 Cool。主要是希望大家能动手用起来,加入到开源社区中。

  • 会编程的可以贡献代码
  • 不会编程的可以反馈使用这些工具中的 Bug
  • 帮着宣传你觉得优秀的项目
  • Star 项目⭐️

在浏览、参与这些项目的过程中,你将学习到更多编程知识提高编程技巧找到编程的乐趣

🎉 最后 HelloGitHub 这个项目就诞生了 🎉

目录

Tips:如果文中的图刷不出来,可以向我们反馈。也可以访问 官网 获取更好的阅读体验。


欢迎关注 HelloGitHub 公众号

内容

以下为本期内容|每个月 28 号发布最新一期

C 项目

1、os-tutorial:(英文)如何从头开始创建操作系统

2、nvtop:NVIDIA GPU 类 (h)top 的任务监控工具,它可以监控多个 GPU 并以熟悉的方式(类 htop 方式)打印有关它们的信息

🔙 返回目录 🔙


C# 项目

3、QuickLook:它允许 Windows 用户只需按空格键即可以快速地查看文件内容(类 macOS 的 Quick Look)

🔙 返回目录 🔙


C++ 项目

4、oatpp:轻量、高性能、零依赖,纯 C++ 实现的 Web 框架。示例代码片段:

ENDPOINT("GET", "demo/api/json", getJson) {
  auto dto = MyDto::createShared();
  dto->statusCode = 200;
  dto->message = "Hello json";
  return createDtoResponse(Status::CODE_200, dto);
}

Output:
{"message": "Hello json", "statusCode": 200}

🔙 返回目录 🔙


Go 项目

5、go-sniffer:该工具通过抓包截取项目中的数据库、redis 请求解析成相应的语句。便于调试,不要修改代码,直接嗅探项目中的数据请求。使用说明如下:

=======================================================================
[使用说明]

    go-sniffer [设备名] [插件名] [插件参数(可选)]

    [例子]
          go-sniffer en0 redis          抓取redis数据包
          go-sniffer en0 mysql -p 3306  抓取mysql数据包,端口3306

    go-sniffer --[命令]
               --help 帮助信息
               --env  环境变量
               --list 插件列表
               --ver  版本信息
               --dev  设备列表
    [例子]
          go-sniffer --list 查看可抓取的协议

=======================================================================
[设备名] : lo0 :   127.0.0.1
[设备名] : en0 : x:x:x:x:x5:x  192.168.1.3
[设备名] : utun2 :   1.1.11.1
=======================================================================

6、dive:用来探索 docker 镜像每一层文件系统,以及发现缩小镜像体积方法的命令行工具。启动命令:dive 镜像名

7、soar:SQL 自动优化和改写的工具。可以自动优化 MySQL 语法族,并且给出为什么要这样优化的理由。功能特点:

  • 跨平台支持
  • 目前只支持 MySQL 语法族协议的 SQL 优化
  • 支持基于启发式算法的语句优化
  • 支持复杂查询的多列索引优化(UPDATE、INSERT、DELETE、SELECT)
  • 等等
echo "select title from sakila.film" | ./soar 
# Query: 25807E6B94BEA72C
★ ★ ★ ★ ☆ 80分
SELECT
  title
FROM
  sakila. film
##  最外层SELECT未指定WHERE条件
* **Item:**  CLA.001
* **Severity:**  L4
* **Content:**  SELECT语句没有WHERE子句,可能检查比预期更多的行(全表扫描)。对于SELECT COUNT(\*)类型的请求如果不要求精度,建议使用SHOW TABLE STATUS或EXPLAIN替代。

8、websocketd:把命令行的输出 stdout 和 stderr 重定向为一个 websocket 服务的工具。运行步骤如下:

  1. 安装命令:brew install websocketd
  2. 创建 count.sh 内容如下
  3. 运行 count.sh,命令:./count.sh
  4. 启动一个 websocket server,命令:websocketd --port=8080 ./count.sh
  5. 创建 html 文件,代码如下
  6. 点击打开 count.html 文件,查看效果
count.sh 文件内容如下

#!/bin/bash
for ((COUNT = 1; COUNT <= 3; COUNT++)); do
  echo $COUNT
  sleep 1
done

count.html 文件内容如下

<!DOCTYPE html>
<pre id="log"></pre>
<script>
  // helper function: log message to screen
  function log(msg) {
    document.getElementById('log').textContent += msg + '\n';
  }

  // setup websocket with callbacks
  var ws = new WebSocket('ws://localhost:8080/');
  ws.onopen = function() {
    log('CONNECT');
  };
  ws.onclose = function() {
    log('DISCONNECT');
  };
  ws.onmessage = function(event) {
    log('MESSAGE: ' + event.data);
  };
</script>

9、athens:Go Modules 下载代理服务,解决国内 Go 装包的痛。妈妈再也不用担心我因为装不上依赖库而不吃饭,使用步骤:

$ export GO111MODULE=on
$ export GOPROXY=http://127.0.0.1:3000
$ git clone https://github.com/athens-artifacts/walkthrough.git
$ cd walkthrough
$ go run .
go: downloading github.com/athens-artifacts/samplelib v1.0.0
The 🦁 says rawr!

10、archiver:命令行压缩和解压缩工具。终于不用再记 tar -czvf 了,使用命令:

# Syntax: arc archive [archive name] [input files...] 压缩

$ arc archive test.tar.gz file1.txt images/file2.jpg folder/subfolder

# Syntax: arc unarchive [archive name] [destination] 解压缩

$ arc unarchive test.tar.gz

🔙 返回目录 🔙


Java 项目

11、ratel:命令行可联网的斗地主游戏。Ratel 分客户端和服务端,你可以让小伙伴们的客户端都连接你的服务器进行游戏,也可以直接连接作者的公网服务器进行游戏

12、SpiderMan:手机端显示 Android 崩溃日志,示例代码如下:

SpiderMan.init(this)
//设置回调异常信息,友盟等第三方崩溃信息收集平台会用到,
.setOnCrashListener(new SpiderMan.OnCrashListener() {
    /**
      *
      * @param t
      * @param ex
      * @param model 崩溃信息记录,包含设备信息
      */
    @Override
    public void onCrash(Thread t, Throwable ex, CrashModel model) {
      
    }
});

🔙 返回目录 🔙


JavaScript 项目

13、three.js:一个知名的 JavaScript 3D 库。随着数据可视化以及 Web AR 的流行,会越来越多使用到 three.js ,尤其是和 Vue/React 前端框架结合使用。官方网站包含丰富的示例和全面的中文文档,赶快去写几个 demo 熟悉下该库吧

14、storybook:UI 组件开发测试的环境。你可以使用 React、React Native、Vue、Angular、Ember 开发你的组件,并且可以使用 storybook 提供的众多插件进行测试以及开发。在线示例

15、hexo:基于 Node.js 快速、简洁且高效的静态博客生成框架。可以使用 hexo 快速生成静态博客,它拥有丰富的插件库主题库。在使用 hexo 的时候也可以自己创建、定制属于自己的主题

16、picojs:200 行实现的面部识别库,在线示例

🔙 返回目录 🔙


Objective-C 项目

17、MacPass:一款 macOS 平台的免费、开源、实用的密码管理工具

🔙 返回目录 🔙


Python 项目

18、himawaripy:一个 Python3 脚本,它会定时(需设置定时任务)抓取由日本 Himawari 8 气象卫星拍摄的接近实时的地球照片,并将它设置成你的桌面背景

🔙 返回目录 🔙


其它

19、search-engine-optimization:(英文)这个项目收集了很多 SEO 优化的建议

20、lemonade-stand:《开源项目挣钱实用手册》中文版

21、ProgrammingFonts:适合程序员的编程字体的集合,现在有 30 多种奇妙的字体

22、Linux-Tutorial:Java 程序员眼中的 Linux

23、Best-websites-a-programmer-should-visit:(英文)一些对程序员有用的网站,网站类别包含:新闻、查问题、学习、教程等

🔙 返回目录 🔙


开源书籍

24、sdn-handbook:有关 SDN 的资料和书籍非常丰富,但入门和学习 SDN 依然是非常困难。该项目整理了 SDN 实践中的一些基本理论和实践案例心得,希望大家看完后有所收获

25、write-you-a-haskell:(英文)《Write You a Haskell》

🔙 返回目录 🔙


机器学习

26、awesome-machine-learning:一个精选的机器学习框架、库、软件的集合项目

27、fastai:利用当前最好的深度学习算法简化训练神经网络的过程。包含了很多“开箱即用”的工具,支持 Vision、Collab 等模型。示例代码:

# here's how to train an MNIST model using resnet18
untar_data(MNIST_PATH)
data = image_data_from_folder(MNIST_PATH)
learn = create_cnn(data, tvm.resnet18, metrics=accuracy)
learn.fit(1)

28、deepvariant:一个数据分析工作流。能够使用深度神经网络从下一代 DNA 序列数据中调用遗传变异体,联想到了最近的基因编辑人类事件。关于如何工作的技术细节,如下图:

29、AIAlpha:使用无监督学习和监督学习来预测股票,有趣的项目。运行步骤如下:

git clone https://github.com/VivekPa/AlphaAI.git
cd AlphaAI
pip install -r requirements.txt
python run.py

30、bert:一种新的语言表征模型,来自 Transformer 的双向编码器表征。目前最强 NLP 预训练模型,横扫 11 项 NLP 任务记录

🔙 返回目录 🔙


『上一期』 | 反馈和建议 | 『下一期』


看完了,还不够?<科技爱好者周刊>。还不过瘾,那就看看 <往期内容>吧。
点击分享发现的有趣项目

声明

知识共享许可协议
本作品采用 署名-非商业性使用-禁止演绎 4.0 国际 进行许可。