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 ⭐ ️

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

Tic-80: Retro game engine simulator. The TIC-80 works on major platforms like Windows, Linux, and Mac, so you can run a variety of retro mini-games. It can not only play but also make games, supports multiple programming languages, has maps, sound editor and more, is a “magic mini computer” that goes back in time.

2. Project-based-in-c: a collection of tutorials on toys or projects written in C. Tutorials are divided into game development, operating system, computer network and other categories, including text, video, code and other materials

C # project

Tilt – Brush: Google’s open source VR drawing tool. It can be used to create a variety of works in virtual THREE-DIMENSIONAL space, supporting mainstream VR devices

C + + project

Winmerge: a Windows comparison and merge tool written in C++. It can compare files and folders, showing the differences between the two or all three in an intuitive visual format, and is easy to use

Go project

5, BILD: pure Go implementation of a variety of image processing algorithm library. Sample code:

package main

import (
    "github.com/anthonynsimon/bild/effect"
    "github.com/anthonynsimon/bild/imgio"
    "github.com/anthonynsimon/bild/transform"
)

func main(a) {
    img, err := imgio.Open("input.jpg")
    iferr ! =nil {
        fmt.Println(err)
        return
    }

    inverted := effect.Invert(img)
    resized := transform.Resize(inverted, 800.800, transform.Linear)
    rotated := transform.Rotate(resized, 45.nil)

    if err := imgio.Save("output.png", rotated, imgio.PNGEncoder()); err ! =nil {
        fmt.Println(err)
        return}}Copy the code

Gin – VUE-admin: a background management system based on GIN + VUE implementation. Look at the name of the project to see why it was born! The author of the project has also made a supporting free educational video, students looking for Go practical project can learn

Pyroscope: Open-source real-time performance analysis platform based on Go. By simply adding a few lines of code to your source code, Pyroscope can help you find performance problems in your code, reasons for excessive CPU usage, and rich charts and call trees. Support Go, Python, Ruby programming languages, Chinese description

8, MacDriver: package Apple/Mac interface Go library. Use it to write a macOS menu bar “Tomato Clock” application in just 80 lines of code. Check the source code

Java project

Recaf: Java bytecode editor. Let you write Java bytecode like normal code, if you do not know the knowledge of this area, do not make a move, you can go to see the bytecode data and then come back to play this project

Jsoup: Java library for fetching and parsing HTML. Many of you probably know this library, so I won’t say much more. Want to know how fast you can pick it up? Look at the sample code and you’ll be able to use it

Document doc = Jsoup.connect("https://en.wikipedia.org/").get();
log(doc.title());
Elements newsHeadlines = doc.select("#mp-itn b a");
for (Element headline : newsHeadlines) {
  log("%s\n\t%s", 
    headline.attr("title"), headline.absUrl("href"));
}
Copy the code

Dbeaver: desktop management tool that supports mainstream databases. A database management tool written in Java, as long as JDBC support database it all support. There is a free community edition and a paid enterprise edition, but the free features are enough

Fizz-gateway-community: a Java microservice gateway. Supports hot service orchestration, automatic authorization selection, online testing, monitoring, and management background functions, helping enterprise governance API services reduce the input of duplicate codes and improve service stability

Sa-token: a lightweight Java permission authentication framework. It is simple to use and easy to expand, and can quickly solve a series of permission related problems such as login authentication, permission authentication and Session Session. Sample code:

// Write the account ID of the current session at login
StpUtil.setLoginId(10001);	

// Then call the following API at any point where the login needs to be verified: if the current session is not logged in
// This code throws a NotLoginException exception
StpUtil.checkLogin();	

// There are also the following functions
StpUtil.logoutByLoginId(10001);     // Log out of the session with account 10001
StpUtil.hasRole("super-admin");     // Checks whether the current account contains the specified role id. Returns true or false
StpUtil.setLoginId(10001."PC");        // Specify device id to log in
StpUtil.logoutByLoginId(10001."PC");   // Specify device id to forcibly log out (different ends are not affected)
StpUtil.switchTo(10044);                // Temporarily switch the current session id to another account
Copy the code

JavaScript project

Mitojs: a lightweight front-end library that collects user behavior and error information on a page. I asked the project maintainer that the information display platform and back-end service are not open source yet, and we still need to wait for the company to sign the open source agreement. Let’s take a look at the features of the front end:

  • Request error and code error upload
  • Collect user click and jump behaviors
  • Supports React, Vue, and wechat applets

Node-jvm: a project that implements the JVM in Node.js. The code is simple and easy to understand, and the examples directory contains examples of running Java code and the required files

Majestic: Beautiful and convenient graphical interface tool for JavaScript testing framework Jest. Following the principle that “a project that doesn’t write tests is not a good project”, tests must be written. Having a nice interface to run your tests should make writing unit tests a little less painful

Instant. Page: a JavaScript library that improves the speed of web page loading through preloading. It works on both mobile and PC, reducing the load time of clicked pages by preloading them as soon as the mouse hovers over them on PC and as soon as they become visible on mobile. Copy the HTML snippet and add it to the web page

<script src=". / / instant page / 5.1.0" type="module" integrity="sha384-by67kQnR+pyfy8yWP4kPO12fHKRLHZPfEsiSXR8u2IKcTdxD805MGUXBzVPnkLHw"></script>
Copy the code

Folio-2019: An open source 3D blog project. I was amazed when I clicked on this blog, which allows users to choose which articles to read by controlling a car, with the sound of cars and the effect of bricks colliding in the process. Go and experience it! Click on the try

PHP project

Actionview: a jIRa-like open source problem demand tracking platform. React+Redux is used as the front end and Laravel is used as the back end

Python project

Vcrpy: Intercepts HTTP requests and returns locally prepared data libraries. Just like “insert cards,” functions decorated with decorators are intercepted and return data directly from the file in the specified local path, improving test execution speed and certainty

@vcr.use_cassette('fixtures/vcr_cassettes/synopsis.yaml')
def test_iana() :
    response = urllib2.urlopen('http://www.iana.org/domains/reserved').read()
    assert 'Example domains' in response
Copy the code

Caches-html: a handy Python HTML parsing library. Any crawler has experienced the agony of parsing HTML with BeautifulSoup, LXML, and Scrapy’s selector. Today you have the new options-HTML with support for XPath, CSS selectors, dynamic pages, filtering specified content, and more. Getting started was so easy and fast that I used it in my crawler project Hydra, which made parsing HTML a lot easier. Here are some examples of functions that I find useful:

Find all links under the element
about.absolute_links
{'http://brochure.getpython.info/'.'https://www.python.org/about/quotes/'.'https://www.python.org/about/help/'}
# Match content
>>> r.html.search('Python is a {} language') [0]
programming
Extract the value of the attribute directly
>>> about.attrs
{'id': 'about'.'class': ('tier-1'.'element-1'), 'aria-haspopup': 'true'}
Render dynamic content after loading JS
r.html.render()
Copy the code

22, alive-progress: New! Python cool progress bar project. Example code for supporting PYTHon2.7-3.8:

PIP install alive-progress
from alive_progress import alive_bar

with alive_bar(total) as bar:  # declare your expected total
    for item in items:         # iterate as usual over your items.# process each item
        bar()                  # call after consuming one item
Copy the code

Blind_watermark: Python library for blind_watermark. Blind watermarking refers to the fact that there is a watermark on a picture but it cannot be seen by human eyes, so the watermark can be extracted through a program, which is equivalent to an invisible “seal”. It can be used in data leakage tracing, copyright protection and other scenes. The database comes from Alibaba’s security team, which has the following strengths:

  • The original image is not required when parsing watermark images
  • Clipping and rotation of watermark image will not destroy blind watermark in the image
  • Support password encryption
from blind_watermark import WaterMark

bwm_obj = WaterMark(password_wm=1, password_img=1)
# artwork
bwm_obj.read_img('PIC/artwork. JPG')
# watermark figure
bwm_obj.read_wm('PIC/watermark. PNG')
# Watermarked image
bwm_obj.embed('the output/results. PNG')
Note that the length and width of the watermark need to be set to WM_shape
bwm_objextract(filename='the output/results. PNG', wm_shape=(120.120), out_wm_name='output/ extracted watermarking. PNG '.)Copy the code

PyG2Plot: Python3 visual library based on G2Plot encapsulation. G2Plot is ant group’s open source visual analysis chart library based on chart taxonomy, built in 25+ common chart types. This library is Python’s encapsulation of G2Plot and is a good experience, right out of the box

from pyg2plot import Plot

line = Plot("Line")

line.set_options({
  "height": 400.# set a default height in jupyter preview
  "data": [{"year": "1991"."value": 3 },
    { "year": "1992"."value": 4 },
    { "year": "1993"."value": 3.5 },
    { "year": "1994"."value": 5 },
    { "year": "1995"."value": 4.9 },
    { "year": "1996"."value": 6 },
    { "year": "1997"."value": 7 },
    { "year": "1998"."value": 9 },
    { "year": "1999"."value": 13},]."xField": "year"."yField": "value",
})

line.render_notebook()
Copy the code

Swift project

Maccy: Lightweight clipboard management tool for macOS. You can copy content history, search quickly, and select shortcut keys

26, SQlite. swift: a lightweight SQLite3 database framework implemented by pure Swift. The use of chain programming writing, so that the management of the database becomes elegant. The code is easy to understand, even if you don’t know SQL statements, you can easily query the database

import SQLite

let db = try Connection("path/to/db.sqlite3")

let users = Table("users")
let id = Expression<Int64> ("id")
let name = Expression<String? > ("name")
let email = Expression<String> ("email")

try db.run(users.create { t in
    t.column(id, primaryKey: true)
    t.column(name)
    t.column(email, unique: true)})// CREATE TABLE "users" (
// "id" INTEGER PRIMARY KEY NOT NULL,
// "name" TEXT,
// "email" TEXT NOT NULL UNIQUE
// )
Copy the code

other

27. Data-engineer-roadmap: Learning roadmap for data engineers

28. Github1s: Quick reading of GitHub project Code with VS Code online. If you are worried about GitHub access speed and project clone speed, add 1s after the project address GitHub, you can read the code online without waiting

Docker-curriculum: A curriculum designed for beginners in Docker. Read online

30, Computer-Science: Open source community university, a repository of free materials for self-learning in computer science. The program includes not only learning videos, but also learning plans and schedules, and most of the courses are from internationally renowned universities. The only disadvantage is that all the materials are in English. I have thought about it for a while and decided to recommend it to everyone. After all, learning English well is the only way to program

Awesome-macos-command-line: a collection of shell commands that do “cool” things for the MacOS system. Some problems that can be solved by a single command need not be searched and searched

Coding-fonts: simple programming fonts for introducing and displaying websites. Try online

33. AndroidSDK: Docker image containing the complete AndroidSDK operating environment. It is suitable for various Android continuous integration scenarios, including emulator running applications, interface automated testing, as well as connecting to the cloud for automated testing. Android built one of the container image solution (does not violate the license agreement of the solution), and in Docker official DockerCon EU 2017 was advertised

34, QWERTY-learner: An online website that uses interesting typing to remember words. Many people intuitively think that people who can dunk are good basketball players, and people who type fast are good programmers. In this case, using this item can not only help you memorize words, but also help improve your programming ability

Machine learning

35. Avatarify: Live face change tool for video conferencing. Using machine learning training model, the real-time face changing effect can be achieved by capturing face movements and combining them with pictures for real-time rendering. Support OBS, Zoom, Skype, Teams, Slack and other live and meeting software

The last

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

Still not good enough?

Follow the HelloGitHub public account to receive not only the first updates. Click the menu bar -> Recommendation -> monthly, to the monthly all the content of a fundus look fun! There are more open source projects and treasure projects waiting to be discovered.