Interest is the best teacher, HelloGitHub is to help you find interest!

Introduction to the

Share interesting, entry-level open source projects on GitHub.

This is a monthly magazine for people who are new to programming, passionate about programming, and interested in the open source community. The contents of the monthly include: various programming language projects, tools to make life better, books, study notes, tutorials, etc. Most of these open source projects are very easy to use, and very Cool. The main hope is for you to get your hands dirty and join the open source community.

  • Those who can program can contribute code
  • Those who cannot program can report bugs in using these tools
  • Help promote projects that you think are great
  • Star project ⭐ ️

As you browse and participate in these projects, you will learn more about programming, improve your programming skills, and find the fun of programming.

🎉 And the project HelloGitHub was born at 🎉


Below is the content of this issue | the latest issue will be published on the 28th of each month | click to view the content of previous issues

C program

1. Libevent: a lightweight, high-performance event notification library implemented in C language. Event-driven, supports multiple I/O multiplexing technologies such as epoll, Poll, SELECT, and Kqueue. Libevent is a unified package of these system base libraries, providing higher level apis and addressing cross-platform issues

C # project

2, dotnet-docker:.NET Core and Tools for Docker mirroring

Machinelearning: Microsoft open source C# machinelearning framework. Supported machine learning tasks: classification, regression, clustering, tutorials and videos. Sample code:

var dataPath = "sentiment.csv";
var mlContext = new MLContext();
var loader = mlContext.Data.CreateTextLoader(new[]
    {
        new TextLoader.Column("SentimentText", DataKind.String, 1),
        new TextLoader.Column("Label", DataKind.Boolean, 0),
    },
    hasHeader: true,
    separatorChar: ', ');
var data = loader.Load(dataPath);
var learningPipeline = mlContext.Transforms.Text.FeaturizeText("Features"."SentimentText")
        .Append(mlContext.BinaryClassification.Trainers.FastTree());
var model = learningPipeline.Fit(data);

var predictionEngine = mlContext.Model.CreatePredictionEngine<SentimentData, SentimentPrediction>(model);
var prediction = predictionEngine.Predict(new SentimentData
{
    SentimentText = "Today is a great day!"
});
Console.WriteLine("prediction: " + prediction.Prediction);
Copy the code

C + + project

Drogon: a C++ asynchronous non-blocking high-performance Web framework. Powerful and easy to use, it makes it more convenient to use C++ language to build various types of high-performance Web applications. Sample code:

#include <drogon/drogon.h>
using namespace drogon;
int main(a)
{
    app().setLogPath(". /").setLogLevel(trantor::Logger::kWarn)
         .addListener("0.0.0.0".80).setThreadNum(16).enableRunAsDaemon().run(a); }Copy the code

The CSS project

Css-diner: Learn about CSS selectors online through play. Beginners can learn how to screen out the elements of a page through a variety of CSS selector syntax through a simple animation interface, although it is an English site but also easy to understand. Try online

Go project

6. Go-micro: A basic framework for go plug-ins. All I know is that it’s a Go microservices framework that allows you to quickly build microservices. The sample code is shown below

Pgweb: a cross-platform PostgreSQL database management tool based on Go. Solve the cross-platform problem by local service + browser, start command:

Three methods are available: Parameters: pgweb --host localhost --user myuser --db mydb URL: pgWeb -- URL postgres://user:password@host:port/database? Sslmode =[mode] Socket: pgweb --url "postgres: host=/absolute/path/to/unix/socket/dir"Copy the code

Go-admin: Front and back end separated permission management system based on Gin+Vue+Element UI. Complete documentation, video tutorials for beginners to learn, features:

  • Comply with RESTful API design specifications
  • Rich middleware support (user authentication, cross-domain, access logging, tracking ID, etc.) based on Gin Web API framework
  • Support for Swagger documents
  • , etc.

9, Now: Go language time library. The project is simple, the code is easy to understand, and the sample code is rich:

import "github.com/jinzhu/now"

time.Now() / / the 2013-11-18 17:51:49. 123456789 Mon

now.BeginningOfMinute()        // 2013-11-18 17:51:00 Mon
now.BeginningOfHour()          // 2013-11-18 17:00:00 Mon
now.BeginningOfDay()           // 2013-11-18 00:00:00 Mon
now.BeginningOfWeek()          // 2013-11-17 00:00:00 Sun
now.BeginningOfMonth()         // 2013-11-01 00:00:00 Fri
now.BeginningOfQuarter()       // 2013-10-01 00:00:00 Tue
now.BeginningOfYear()          // 2013-01-01 00:00:00 Tue

now.WeekStartDay = time.Monday // Set Monday as first day, default is Sunday
now.BeginningOfWeek()          // 2013-11-18 00:00:00 Mon

now.EndOfMinute()              / / the 2013-11-18 17:51:59. 999999999 Mon
now.EndOfHour()                / / the 2013-11-18 17:59:59. 999999999 Mon
now.EndOfDay()                 / / the 2013-11-18 23:59:59. 999999999 Mon
now.EndOfWeek()                / / the 2013-11-23 23:59:59. 999999999 Sat
now.EndOfMonth()               / / the 2013-11-30 23:59:59. 999999999 Sat
now.EndOfQuarter()             / / the 2013-12-31 23:59:59. 999999999 Tue
now.EndOfYear()                / / the 2013-12-31 23:59:59. 999999999 Tue

now.WeekStartDay = time.Monday // Set Monday as first day, default is Sunday
now.EndOfWeek()                / / the 2013-11-24 23:59:59. 999999999 Sun
Copy the code

Java project

Roncoo-pay: Open source Java Internet business payment system It has an independent account system, user system, payment access system, payment transaction system, reconciliation settlement system, etc. Students who want to learn payment related technology can look at this project. The project structure is as follows:

Roncoo - pay | ├ ─ ─ roncoo - pay - - notify/app/merchants notification module | ├ ─ ─ roncoo - pay - - order - polling/app/order polling module | ├ ─ ─ Roncoo - pay - - reconciliation/app/transaction reconciliation module | ├ ─ ─ roncoo - pay - - settlement/app/transaction settlement module | ├ ─ ─ roncoo - pay - common - core / / common base module, Don't need a separate deployment | ├ ─ ─ roncoo - pay - service / / core business module, Don't need a separate deployment | ├ ─ ─ roncoo - pay - web - boss / / operation backstage module | ├ ─ ─ roncoo - pay - web gateway / / payment gateway module | ├ ─ ─ roncoo - pay - web - break / / merchant backend module | ├ ─ ─ roncoo - pay - web - sample - shop/mall/simulation moduleCopy the code

Screw: easy to use database table structure document generation tool

JavaScript project

Tesseract.js: support a variety of language text recognition JS library, can be convenient, accurate text analysis extracted from the picture (can be copied). Tesseract OCR engine based ON JAVASCRIPT version, convenient front-end realization of text recognition function and direct use in the browser. Try online

13. Mind-elixir-core: a free open source Mind mapping JS library. Try online

14. IconPark: This open source library provides 1200+ high quality ICONS and an interface for customizing ICONS. The most powerful feature is that you can change the attributes of an SVG file to transform multiple themes. Export SVG, PNG, Vue, React icon components, etc. Great convenience for designers and developers, giving them more time to shop around HG

15. Next: an enterprise-level UI solution for the middle and background, which is committed to solving the problems of designers and front end in terms of work collaboration, product experience consistency and development efficiency. Is the designer to modify the color and so on, can generate a NPM theme package, the front end to get this package can directly restore the designer’s design

Kotlin project

DateTimePicker: a simple, beautiful date and time picker. Supports 100% custom UI with built-in date and time pop-ups based on Google BottomSheetDialog

Python project

Real-live: a live streaming aggregator that allows you to watch live video, watch HD TV, listen to radio stations, etc. At present, it supports 30+ live video, 50+ HD TV channels and 70+ radio stations. It is a comprehensive Web project, using the following technology stack:

  • Front-end/client: Qt, Vue, Flutter, etc
  • Backends: MySQL, Redis, Kafka/RabbitMQ, Elasticsearch, etc

Taichi: a high-performance graphics programming framework. It converts Python code you write into efficient assembly code that runs on multiple cpus and Gpus, the equivalent of writing shaders in Python syntax. Taichi solves the problems of difficult graphics configuration environment and poor code portability. Only PIP install Taichi can be installed, and the written program can run on Windows, Linux and OSX, lowering the threshold for beginners to learn graphics. Sample code:

import taichi as ti

ti.init(arch=ti.gpu)  # specifies that the compiled function is executed on the GPU

n = 320
pixels = ti.field(dtype=float, shape=(n * 2, n))  Array storage type and size


@ti.func  This function will be the procedure function to be called
def complex_sqr(z) :
    return ti.Vector([z[0] * *2 - z[1] * *2, z[1] * z[0] * 2])


@ti.kernel  This function will be compiled by Taichi
def paint(t: float) :
    for i, j in pixels:  The outermost loop is automatically parallelized
        c = ti.Vector([-0.8, ti.cos(t) * 0.2])
        z = ti.Vector([i / n - 1, j / n - 0.5]) * 2
        iterations = 0
        while z.norm() < 20 and iterations < 50:  Other syntax is basically the same as native Python
            z = complex_sqr(z) + c
            iterations += 1
        pixels[i, j] = 1 - iterations * 0.02


gui = ti.GUI("Julia Set", res=(n * 2, n))

for i in range(1000000):
    paint(i * 0.03)
    gui.set_image(pixels)
    gui.show()
Copy the code

Readthedocs.org: Open source for readthedocs.org. This site hosts Scrapy, Requests, bootstrap-datepicker, and other popular libraries. I checked that the project was developed based on Django, and the files required patience

20, Learn-python3: a copy of the python3 tutorial. This course is easy to run and read thanks to the notebooks format of Jupyter. It also includes practice questions for beginners. The disadvantage is the English tutorial, but I can understand you can certainly

21. Computer-networking-a-top-down-approach -NOTES: “Computer Networking-Top-down Approach” programming assignment Contains questions and Python code solutions, and Wireshark experiment sections are official documentation translations.

Rust project

22. Rustlings: This project provides beginners with the grammar of Rust through simple practice demos. This project can be installed by simple command, and then modify each small exercise to achieve the compilation pass or the target output, after passing the next level, there is a sense of accomplishment. Operation method:

Installation: Git clone https://github.com/rust-lang/rustlings CD rustlings Git checkout tags/4.0.0 # or whatever the latest version is (find out at https://github.com/rust-lang/rustlings/releases/latest) cargo install --force --path . Once installed, run: Rustlings WatchCopy the code

Swift project

ZLPhotoBrowser: Lightweight photo selection framework. It is easy to use, rich in functions, supporting preview/album photography and video recording, drag and drop/slide selection, editing and cutting pictures/videos and other functions. Sample code:

// Very simple to use
let ac = ZLPhotoPreviewSheet()
ac.selectImageBlock ={[weak self] (images, assets, isOriginal) in
    // your code
}
// Quick selection method
ac.showPreview(animate: true, sender: self)
// Go to the album selection method
ac.showPhotoLibrary(sender: self)
Copy the code

other

24. Halfrost-field: the technical blog of the former Alibaba senior back-end engineer “Frost God”, sharing the technical dry goods of the front and back end. The author’s daily work language is Go, before entering Alibaba, did front-end work for several years. The article content includes: machine learning, Go, JS, iOS, network protocol and other series

Ntfstool: A free tool that supports reading and writing NTFS for Apple computers. It makes it easy to read and write on macs, copy data from Windows usb sticks and portable hard drives. Installation instructions

Hexo-theme – Matery: A Hexo blog theme that uses Material Design and responsive Design. Features:

  • With responsive design, blogging works well on desktop, tablet, mobile and other devices
  • Home page rotation of articles and daily dynamic switch Banner picture
  • Timeline archive pages
  • Word cloud TAB page and radar map classification page
  • Rich about me pages (including about me, article charts, my projects, my skills, albums, etc.)
  • Support article top and article reward
  • , etc.

27, highlight.js: Make the code on the web implement a highlighted JS library, give the code some color to see see. Support a variety of programming languages and styles, easy to use. Sample code:

<link rel="stylesheet" href="/path/to/styles/default.css">
<script src="/path/to/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
<pre><code>.</code></pre>
Copy the code

Lite: a super lightweight text editor written in Lua. Exe file in Windows, although only about 300KB, but the level of appearance, function and speed are not bad, and even support the use of custom plug-ins, color theme and other functions. Small and beautiful text editor

29. L-ink_card: This project contains code and tutorials for making a mini NFC smart card. Wild Iron Man zhihui produced the demo video, he also made a lot of other interesting things, you can go to see very interesting

Open source books

30. Trpl-zh-cn: Rust Programming Language (second edition) Chinese translation Read online

31. Jshistory-cn: Chinese version of JavaScript 20 Years. Read online

Machine learning

32,nsfw-filter: based on tensefow.js implementation of NSFW (nude, violent, etc.) image filtering browser plug-in

33,computervision-recipes: Computer vision system best practices, including various CV sample projects. Examples use PytTorch deep learning library + Jupyter files, covering: image classification, similarity, recognition, tracking and other aspects, suitable for interested partners in image reading and learning

34. Seq2seq-couplet: A couplet project based on deep learning, which automatically generates the couplet when you post the top one. I tried it, and it was good, and it was fun. Try online


The last

If you find something interesting on GitHub, feel free to mention issues at HelloGitHub.

The above is the content of this issue | the latest issue will be published on the 28th of each month | click to view the previous content