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 🎉

content

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, TMUX: a terminal reuse tool, can greatly improve work efficiency.

  • Provides a robust, easy-to-use command line interface
  • Windows can be split horizontally and vertically
  • Panes can be moved and resized freely, or directly utilize one of the four preset layouts
  • Copy and paste across multiple buffers
  • Windows, sessions, and clients can be selected from the interactive menu
  • , etc.

C # project

BenchmarkDotNet: a powerful.NET library for benchmarking

C + + project

CppNet: A Proactor multi-thread network library wrapped over Tcp. Including OS interface call, callback processing, timer, cache management, etc., there are all network details from the operating system to the application layer, easy for beginners to learn and practice.

  • Simple: Only a minimal number of interfaces are exported and declared like the system Socket API. For the client, only one buffer type has been added
  • Fast: using the best performance of epoll and IOCP as event driven, alarm processing by the kernel. Each connection has its own memory pool, and memory requested from the pool is managed by smart Pointers
  • Clear: The structure is divided into event-driven, session management, interface three layers, through the callback up notification. There is a clear division of responsibilities between modules, with the largest class having no more than 500 lines of code

4. Dbg-macro: logging is an essential way to debug C++ development. Dbg-macro is inspired by the DBG in rust-lang and provides better macro functions than printf and STD ::cout. The main features are as follows:

  • Beautiful color output (color is automatically disabled when the output is not an interactive terminal)
  • Compatible with C++11 and header-only
  • Supports output of base and STL container types
  • In addition to basic information, variable names and types are printed
  • Enable DBG_MACRO_DISABLE to generate releases
#include <vector>
#include <dbg.h>

// You can use "dbg(..) " in expressions:
int factorial(int n) {
  if (dbg(n <= 1)) {
    return dbg(1);
  } else {
    return dbg(n * factorial(n - 1)); }}int main(a) {
  std: :string message = "hello";
  dbg(message);  // [example.cpp:15 (main)] message = "hello" (std::string)
  const int a = 2;
  const int b = dbg(3 * a) + 1;  // [example.cpp:18 (main)] 3 * a = 6 (int)
  std: :vector<int> numbers{b, 13.42};
  dbg(numbers);  // [example.cpp:21 (main)] numbers = {7, 13, 42} (size: 3) (std::vector<int>)
  dbg("this line is executed");  // [example.cpp:23 (main)] this line is executed
  factorial(4);
  return 0;
}
Copy the code

CppCon2019: a collection of slides and related materials for the C++ 2019 conference

Go project

6. RedisShake: Alibaba open source data synchronization tool for Redis. The schematic diagram is as follows:

Bigcache: A high-performance large cache library based on the Go language. I7-6700k CPU @ 4.00ghz with 32GB of RAM on Ubuntu 18.04 LTS

Go Version Go Version go1.13 Linux/AMD64cd caches_bench; go test-bench=. -benchmem -benchtime=4s ./... -timeout 30m goos: linux goarch: amd64 pkg: github.com/allegro/bigcache/v2/caches_bench BenchmarkMapSet-8 12999889 376 ns/op 199 B/op 3 allocs/op BenchmarkConcurrentMapSet-8 4355726 1275 ns/op 337 B/op 8 allocs/op BenchmarkFreeCacheSet-8 11068976 703 ns/op 328 B/op 2 allocs/op BenchmarkBigCacheSet-8 10183717 478 ns/op 304 B/op 2 allocs/op BenchmarkMapGet-8 16536015 324 ns/op 23 B/op 1 allocs/op BenchmarkConcurrentMapGet-8 13165708 401 ns/op 24 B/op 2 allocs/op BenchmarkFreeCacheGet-8 10137682 690 ns/op 136 B/op 2 allocs/op BenchmarkBigCacheGet-8 11423854 450 ns/op 152 B/op 4 allocs/op BenchmarkBigCacheSetParallel-8  34233472 148 ns/op 317 B/op 3 allocs/op BenchmarkFreeCacheSetParallel-8 34222654 268 ns/op 350 B/op 3 allocs/op BenchmarkConcurrentMapSetParallel - 8 19635688 240 ns/op 200 B / 6 allocs op/op BenchmarkBigCacheGetParallel - 8-86.1 60547064  ns/op 152 B/op 4 allocs/op BenchmarkFreeCacheGetParallel-8 50701280 147 ns/op 136 B/op 3 allocs/op BenchmarkConcurrentMapGetParallel-8 27353288 175 ns/op 24 B/op 2 allocs/op PASS ok Github.com/allegro/bigcache/v2/caches_bench 256.257 sCopy the code

8. Pacgo: Terminal Pac-Man game based on Go

9. Go-admin: Data visualization and management platform based on Golang language Features are as follows:

  • 🚀 High productivity: do a good looking management background in 10 minutes
  • 🎨 theme: adminlte by default, more beautiful theme is in the making, welcome to leave us a message
  • 🔢 plug-in: provide plug-in use, the real implementation of a plug-in can not solve the problem, that is two
  • ✅ Authentication: RBAC authentication system out of the box
  • ⚙️ framework support: support most framework access, so that you can easily get started and expand

Zerolog: a fast library dedicated to jSON-formatted logs. Still having trouble parsing irregular logs? With Zerolog you can jump! Of course, it also has an inefficient but beautiful log output mode on the console, so give it a try. Sample code:

ackage main

import (
    "github.com/rs/zerolog"
    "github.com/rs/zerolog/log"
)

func main(a) {
    zerolog.TimeFieldFormat = zerolog.TimeFormatUnix

    log.Info().Msg("hello world")}// Output: {"time":1516134303,"level":"info","message":"hello world"}
Copy the code

Java project

11, AutoUpdateProject: a simple and easy to use, easy access, UI diversity in Android to achieve online update library. Sample code:

// Update the library configuration
UpdateConfig updateConfig = new UpdateConfig()
        .setDebug(true)// Whether it is Debug mode
        .setBaseUrl("http://www.cretinzp.com/system/versioninfo")// When dataSourceType is DATA_SOURCE_TYPE_URL, this interface is used to obtain update information
        .setMethodType(TypeConfig.METHOD_GET)// If dataSourceType is DATA_SOURCE_TYPE_URL, set the request method
        .setDataSourceType(TypeConfig.DATA_SOURCE_TYPE_URL)// Set the method for getting updated information
        .setShowNotification(true)// Whether to display the progress in the notification bar during the configuration update
        .setNotificationIconRes(R.mipmap.download_icon)// Configure the icon displayed in the notification bar
        .setUiThemeType(TypeConfig.UI_THEME_AUTO)// Configure UI styles. There are 12 styles to choose from
        .setRequestHeaders(null)// If dataSourceType is DATA_SOURCE_TYPE_URL, set the request header for the request
        .setRequestParams(null)// If dataSourceType is DATA_SOURCE_TYPE_URL, set the request parameters
        .setCustomActivityClass(CustomActivity.class)UI_THEME_CUSTOM if you choose the UI style TypeConfig.UI_THEME_CUSTOM, then you need to customize an Activity inheriting RootActivity and following the demo implementation, fill in the custom Activity class here
        .setModelClass(new UpdateModel());
AppUpdateUtils.init(this, updateConfig);
Copy the code

12, Spring-analysis: Spring framework source code explanation. Including: spring-core, spring-AOP, spring-context, spring-Taskspring-MVC and so on

13. Eladmin: A back-end management system based on Spring Boot 2.1.0 and Vue for the separation of front and back ends, supporting data dictionary and data permission management, one-click generation of front and back end codes, front-end menu dynamic routing, etc. Based on Spring Boot2.1.0 framework, technology stacks involved: non-relational database Redis, interface testing tool Swagger, Druid data source driver, mail dependency (Javax.mail), third-party payment and cloud storage SDK, page template engine Freemarker. Rich technology stack, beginners can learn and use as a practical project

JavaScript project

14. NZH: JS library for mutual conversion of Arabic numerals and Chinese numerals. Example code is as follows:

var nzhcn = Nzh.cn;                 // Use simplified Chinese, plus nzH.hk -- traditional Chinese
nzhcn.encodeS(100111);              >> 1010,111
nzhcn.encodeB(100111);              One hundred and one hundred and eleven
nzhcn.encodeS("1.23456789 e+21");    // Scientific notation string >> 123,456,78,990,000 trillion
nzhcn.toMoney("100111.11");         // Transfer amount in Chinese >> RMB one hundred thousand one hundred and eleven One hundred and ten cents
Copy the code

15, Request: JavaScript simple, easy to use HTTP request client. Sample code:

const request = require('request');
request('https://hellogithub.com'.function (error, response, body) {
  console.error('error:', error); // The request will be printed if an error occurs
  console.log('statusCode:', response && response.statusCode); // Outputs the returned status code
  console.log('body:', body); // Outputs the returned HTML
});
Copy the code

SandDance: Microsoft open source data visualization library. Use cell visualization to map rows in the database one-to-one to the screen. In data interaction, the view can be seamless and smooth transition, showing cool effects

Chart-race-react: a simple and easy-to-use Bar chart race react component. Sample code:

import ReactDOM from 'react-dom';
import BarChart from 'chart-race-react';

ReactDOM.render(<BarChart ></BarChart>.document.getElementById('root'));
Copy the code

18, Fiora: a rich and versatile online chat room. It has a small, clean interface and supports basic chat functions as well as a fun message reading function. The project is based on TypeScript + React 16.9 code with clear logic and perfect annotation, which is suitable for learning Node. js, TypeScript, React and other technologies

Python project

Tagui-python: a library for Python automation. For example: automatically open a web page and screenshot, example code:

t.init()
t.url('https://www.google.com')
t.type('q'.'decentralization[enter]')
t.snap('page'.'results.png')
t.close()
Copy the code

Ruby project

Shift: An online MySQL database migration tool written in Ruby

Swift project

Percent: Let Swift support the percentage type to eliminate the lack of precision. Sample code:

import Percent

10% + 5.5%
/ / = > 15.5%
-10% / 2
/ / = > 5%
Copy the code

other

22, Curl Converter: curl command to curl code in Python, JavaScript, PHP, R, Go, etc. Online experience

23. Hub: Operate GitHub through the command line, supporting most operations. For example: create remote warehouse, delete remote warehouse, submit PR, manage issue, etc. Common operations:

  • Create a remote repository: hub create github-repository
  • Delete remote repository: hub delete github-repository
  • Fork project: Hub fork

24, Cascadia-code: Microsoft open source set of uniform width fonts, interesting to combine characters to create new glyphs. The combined effect is as follows:

More information is available at provincial, prefecture-level, county-level, township and village level

26. Vim-airline: a plugin that has a nice status line at the bottom of every Vim window. The display information and effect are shown as follows:

Open source books

27, python_ebook: Python programming related ebook resource collection project

Cosmic Python is a book on how to manage the complexity of Pythonic application structures

The tutorial

29. Bigdata-notes: introduction to BigData tutorial, which introduces the basic and core knowledge of the common technology stack of BigData. Contents include Hadoop, Spark, Storm, HBase, Hive, ZooKeeper, and Kafka

Machine learning

30, Ultra-light-fast-generic-face-detector -1MB: 1MB lightweight Face detection model. This model is designed and implemented for edge computing devices based on libFaceDetection to replace compressed networks

Dimensionality_reduction_alo_codes: This project uses Python to implement 11 classic data extraction (data dimensionality reduction) algorithms. At the same time, with relevant information, display effect, suitable for machine learning beginners and just into the pit data mining partners


“Finished, not enough? “Past content > | don’t satisfy, then look at the front end of the updated daily journal < front > today”

If you find interesting and meaningful open source projects click here to share the ones you find interesting.

The last

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