《HelloGitHub》第 32 期
HelloGitHub 分享 GitHub 上有趣、入门级的开源项目,每月 28 号更新一期。这里有好玩和入门级的开源项目、开源书籍、实战项目、企业级项目,让你用极短的时间感受到开源的魅力,对开源产生兴趣。
(英文)如何从头开始创建操作系统
轻量、高性能、零依赖,纯 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}
命令行压缩和解压缩工具。终于不用再记
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
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!
该工具通过抓包截取项目中的数据库、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 =======================================================================
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替代。
把命令行的输出 stdout 和 stderr 重定向为一个 websocket 服务的工具。运行步骤如下:
- 安装命令:
brew install websocketd
- 创建 count.sh 内容如下
- 运行 count.sh,命令:
./count.sh
- 启动一个 websocket server,命令:
websocketd --port=8080 ./count.sh
- 创建 html 文件,代码如下
- 点击打开 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>
命令行可联网的斗地主游戏。Ratel 分客户端和服务端,你可以让小伙伴们的客户端都连接你的服务器进行游戏,也可以直接连接作者的公网服务器进行游戏
手机端显示 Android 崩溃日志,示例代码如下:
SpiderMan.init(this) //设置回调异常信息,友盟等第三方崩溃信息收集平台会用到, .setOnCrashListener(new SpiderMan.OnCrashListener() { /** * * @param t * @param ex * @param model 崩溃信息记录,包含设备信息 */ @Override public void onCrash(Thread t, Throwable ex, CrashModel model) { } });
一个 Python3 脚本,它会定时(需设置定时任务)抓取由日本 Himawari 8 气象卫星拍摄的接近实时的地球照片,并将它设置成你的桌面背景
使用无监督学习和监督学习来预测股票,有趣的项目。运行步骤如下:
git clone https://github.com/VivekPa/AlphaAI.git cd AlphaAI pip install -r requirements.txt python run.py
一个精选的机器学习框架、库、软件的集合项目
一个数据分析工作流。能够使用深度神经网络从下一代 DNA 序列数据中调用遗传变异体,联想到了最近的基因编辑人类事件。关于如何工作的技术细节,如下图:
利用当前最好的深度学习算法简化训练神经网络的过程。包含了很多“开箱即用”的工具,支持 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)
程序员应该放到收藏夹的网站。中文版
《开源项目挣钱实用手册》中文版
Java 程序员眼中的 Linux
(英文)这个项目收集了很多 SEO 优化的建议
有关 SDN 的资料和书籍非常丰富,但入门和学习 SDN 依然是非常困难。该项目整理了 SDN 实践中的一些基本理论和实践案例心得,希望大家看完后有所收获
(英文)《Write You a Haskell》
- C 项目
- C# 项目
- C++ 项目
- Go 项目
- Java 项目
- JavaScript 项目
- Objective-C 项目
- Python 项目
- 人工智能
- 其它
- 开源书籍