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. Ucore: Tsinghua University operating system courses, supporting experimental projects. It is recommended for students who are familiar with computer structure principles, C and assembly, data structure foundation and interested in operating system. The project includes teaching videos, exercises, experiment instructions and so on

C # project

RevokeMsgPatcher: Anti-withdrawal tool for Windows computer version of wechat and QQ

ContextMenuManager: A pure Windows right-click menu manager. Function:

  • Enable or disable right-click menu items such as files, folders, New, Send to, and Open mode
  • Right-click menu items to modify the name, modify icon, navigation registry location, permanent deletion and other operations
  • Right-click menu custom add items, custom menu commands

C + + project

Spdlog: a fast and easy C++ log library. Sample code:

#include "spdlog/spdlog.h"

int main(a) 
{
    spdlog::info("Welcome to spdlog!");
    spdlog::error("Some error message with arg: {}".1);
    
    spdlog::warn("Easy padding in numbers like {:08d}".12);
    spdlog::critical("Support for int: {0:d}; hex: {0:x}; oct: {0:o}; bin: {0:b}".42);
    spdlog::info("Support for floats {: 03.2 f}".1.23456);
    spdlog::info("Positional args are {1} {0}.."."too"."supported");
    spdlog::info("{: < 30}"."left aligned");
    
    spdlog::set_level(spdlog::level::debug); // Set global log level to debug
    spdlog::debug("This message should be displayed..");    
    
    // change log pattern
    spdlog::set_pattern("[%H:%M:%S %z] [%n] [%^---%L---%$] [thread %t] %v");
    
    // Compile time log levels
    // define SPDLOG_ACTIVE_LEVEL to desired level
    SPDLOG_TRACE("Some trace message with param {}".42);
    SPDLOG_DEBUG("Some debug message");
}
Copy the code

SRPC: sogou is a high-performance RPC framework based on C++ Workflow. It is compatible with the thrift/ BRPC protocol and supports one-key migration of protobuf/thrift IDL, with only 1w lines of core code. Sample code:

class ExampleServiceImpl : public Example::Service
{
public:
    void Echo(EchoRequest *request, EchoResponse *response, RPCContext *ctx) override
    {
        response->set_message("Hi, " + request->name()); }};int main(a)
{
    SRPCHttpServer server;
    ExampleServiceImpl impl;
    server.add_service(&impl);
    server.start(1412);
    pause(a); server.stop(a);return 0; } access: curl127.0. 01.:1412/Example/Echo -H 'Content-Type: application/json' -d '{message:"from curl",name:"CURL"}'
Copy the code

The CSS project

Tailwindcss: a CSS framework based on the idea of utility-first, smaller and more flexible than components. The idea is simply to use classes to ensure flexibility and ease of customizing components, rather than personalization on top of them. The framework has received mixed reviews online, but I thought it was good and wanted to learn

Go project

7. Inlets: A free Intranet penetration service based on Go, which exposes local services to the public network. If you find the Intranet penetration tool difficult to use or expensive, you can try this project and use the instructions

Syncthing: a free, cross-platform file synchronization tool written in Go. It does not need to be installed, only need to download the corresponding system compression package decompression can be directly run and use. It can be used to set up a private Web disk, and supports multiple operating modes including the command line, Web, and desktop programs and file synchronization between the Intranet and Internet. Another alternative to paid web disk, if you consider the high bandwidth costs. Syncthing can be used as an open source solution for sharing files with phones, TVS, and computers over the LOCAL area network

Lazykube: a command line tool that supports mouse operation and management of K8s. Contrast k9S command line tools, can not remember so many shortcut keys, direct mouse operation. Solve the scenario where the company does not use Rancher and Dashboard to manage K8s and can only be accessed through the Fortress. All you need to use this tool is a terminal and a mouse, although you still need a keyboard 😂 for search

Go-zero: A reliable Web and RPC framework for go. Even Go novices can quickly write high-performance, extensible microservices based on the framework. Sample code:

func main(a) {
  flag.Parse()

  var c config.Config
  conf.MustLoad(*configFile, &c)

  ctx := svc.NewServiceContext(c)
  server := rest.MustNewServer(c.RestConf)
  defer server.Stop()

  handler.RegisterHandlers(server, ctx)

  server.Start()
}
Copy the code

Java project

Mindustry: A free sandbox tower defense game written in Java. Supports multiple platforms: Windows, Linux, macOS, and Android

Fiction_house: an online reading site for novels and comics based on SpringBoot. The website is full of functions and rich in resources, and supports Web, Android and wechat small programs on multiple platforms. The server is divided into website and management background, using SpringBoot, MyBatis, MySQL, Redis and other technologies to achieve, can be used as Java novice actual combat project learning

JavaScript project

AdminLTE: back-end management front-end template based on Bootstarp 4.5 and jQuery

14. Blockly: Web editor that can write code without programming and automatically generate code by dragging and dropping modules. Google open source a visual programming front end project, support automatic generation: Python, JavaScript, PHP and other programming language code, online try address network is not good, you can use and learn through NPM install blockly after installation

Screenity: a powerful Chrome plugin for screen recording and labeling. Features:

  • 🎥 can record content from any app, including “hue head”
  • ✏️ Anywhere on the screen, add text and comments like arrows
  • 👀 Highlight your click action, cursor
  • 💾 Can be exported to common formats such as MP4 and GIF
  • ✂️ Clip or delete the video

Vue-luck-draw: a vUe-based big wheel/nine grid lottery plugin. Online try, features:

  • Free configuration of prizes, probability of winning, etc
  • Support synchronous and asynchronous lottery
  • Adaptive mobile terminal
  • , etc.

17. Piano: A piano app based on Omi and Omi Snippets. You don’t need any knowledge of music theory, just use the keyboard to play simple and familiar music, thanks for the music and programming company of this project! Music has never failed anyone. As Leehom Wang sings, “If the world is too dangerous, only music is safe. Take me to my dreams and make the lyrics come true!” The above paragraph is a recommendation written by the author. I wanted to praise the project from the perspective of the project, but I gave up. Although the piano project I recommended before is better than this one, I prefer this one. Because I feel a lot of respect and “love” from his project, salute every struggling “coder”, HG love you. Sample code for online attempts:

playSong(song) {
  this.setSong([...song])
  let offset = 0
  let time = 0
  let playSong = async() = > {// The right-hand side breaks the recursion from the outside
    if (offset < song.length && this.store.data.song.length > 0) {
      switch (typeof song[offset]) {
        ++12345--6. Simple melodies
        case 'string':
          let letters = song[offset].match(/[0-9]/g)
          switch (letters.length) {
            case 1:
              time = this.handleString(song, offset)
              break
            default:
              time = this.handleStrings(song, offset)
              break
          }
          break
        // Simple notation 1 plays according to CDEFGAB, complex melodic situations, such as chords
        case 'object':
          console.log(song[offset]['note'])
          time = song[offset]['time'];
          this.playNote(song[offset]['note'])
          break;
        case 'number':
          / / rests.
          switch (song[offset]) {
            case 0:
              time = 1000
              break
          }
          break
      }
      await new Promise((resolve) = > {
        let timer = setTimeout(() = > {
          clearInterval(timer)
          resolve()
        }, time)
      })
      offset++
      // Custom event, with the bottom note automatically beat in combination
      this.add()
      playSong()
    } else {
      // Pause the playback
      clearTimeout(this.timer)
      this.store.data.song = []
      this.store.data.count = 0
      return
    }
  }
  playSong()
}
Copy the code

Objective – C project

Sloth: a tool for displaying open files, sockets, and pipes in macOS. Like the desktop version of LSOF, come and try it

PHP project

Freenom: Automatically renew freenom free domain names. Freenom is a provider of free top-level domains, but those that apply must be renewed annually or they will be reclaimed. With this project, the White PIao top-level domain is that simple

Python project

Running_page: A Python project that displays a personal running page. Features:

  • GitHub Actions Management automatically synchronizes running processes and automatically generates new pages
  • Gatsby generated static web pages, fast
  • Mapbox displays maps
  • Support data from Nike, Runtastic, Garmin and Keep
  • Automatic backup of GPX data, easy backup and upload to other software

21. Gopup: A Python library that collects authoritative public data. Sample code:

# Install: PIP isntall Gopup

import gopup as gp
covid_baidu_df = gp.covid_baidu(indicator="Hot Search rumors Crushed.")
print(covid_baidu_df)
Copy the code

Flask-state: a portable flask state monitoring plugin. Sample code:

flask_state.init_app(app)
// npm
import 'echarts';
import 'flask-state/flask-state.min.css';
import {init} from 'flask-state';
// Create a DOM node with ID 'test'. After init() binds the node, click to open the listening window
init({dom:document.getElementById('test')});
Copy the code

Python-cheatsheet: A comprehensive and useful Python memo. For example, I can’t remember how to write regs in Python, I can’t remember library names and basic usage for a progress bar, and I can’t remember method parameters for processing data in PANDAS. I found this project just when I thought I needed to “go back to the drawing board,” and I found snippets of code that worked with all of its problems. I’m the happy Pythoneer again.

# $ pip3 install tqdm
>>> from tqdm import tqdm
>>> from time import sleep
>>> for el in tqdm([1.2.3], desc='Processing') :.    sleep(1)
Processing: 100% | █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ █ |3/3 [00: 03 <00:00.1.00s/it]
Copy the code

Swift project

Eul: a minimalist free macOS status monitoring tool. I’m using it. I highly recommend it

other

Winapps: a program that lets you use Windows Office software on Linux (Ubuntu/Fedora) systems. Supports Microsoft Excel, Word, PowerPoint, and Adobe Photoshop

26. Front-end-interview-notebook: A non-patchwork, good front-end Interview review note. To ask questions, and give the author’s answer, the content covers: HTML, CSS, JS, algorithms, computer networks and so on. The author got a lot of offers from big factories, and then summarized these things and sent them to the front-end partners who were preparing for the interview and changing jobs

27. Pi-hole: A free open source DNS Sinkhole project with easy deployment. It doesn’t matter, I don’t know what DNS Sinkhole is, but I know it can be used to implement the router layer to block advertising function. You need to install this project on raspberry PI first, and then with a router that supports custom DNS, you can implement automatic blocking of all devices under the network. The detailed steps

CopyTranslator: a cross-word translation tool for web pages and PDFS. With it can solve the problem of garbled, newline and inaccurate translation when reading PDF files to translate large sections of content

Styleguide: Google’s code styleguide. Every large project has its own code style, which is easier to understand when the code has a uniform style. This project is Google project code style description, including: C++, C#, Swift, Python, Java and other languages

30. Upptime: a free open source website uptime monitoring service. It doesn’t cost anything because it’s entirely based on GitHub’s free services, such as using GitHub actions to visit a target site every 5 minutes to get the latest status. Then record and report exceptions through GitHub Issues, and finally display the running status of the website visually on GitHub Pages. It is very “green pollution-free”, I particularly like

Machine learning

Examples: A collection of PyTorch examples for vision, text, etc. Including: Image classification using Convnets (MNIST), generative adversarial network (DCGAN), etc

EasyOCR: Ready-to-use Python OCR library that supports multiple languages, including Chinese, Japanese, Korean, etc. Sample code:

import easyocr
reader = easyocr.Reader(['ch_sim'.'en']) # need to run only once to load model into memory
result = reader.readtext('chinese.jpg')
# output
[([[189.75], [469.75], [469.165], [189.165]], 'Yuyuan Road'.0.3754989504814148),
 ([[86.80], [134.80], [134.128], [86.128]], 'the west'.0.40452659130096436),
 ([[517.81], [565.81], [565.123], [517.123]], 'the east'.0.9989598989486694),
 ([[78.126], [136.126], [136.156], [78.156]], '315'.0.8125889301300049),
 ([[514.126], [574.126], [574.156], [514.156]], '309'.0.4971577227115631),
 ([[226.170], [414.170], [414.220], [226.220]], 'Yuyuan Rd.'.0.8261902332305908),
 ([[79.173], [125.173], [125.213], [79.213]], 'W'.0.9848111271858215),
 ([[529.173], [569.173], [569.213], [529.213]], 'E'.0.8405593633651733)]
Copy the code

33, DeepLearningProject: Harvard University open source deep learning tutorial


The last

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