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. Si78c: Space Invaders command line game implemented in C language

2. Rtty: Open source project that enables Web access to Linux terminals. C language implementation, including the dependent library volume is less than 100KB, can be used for embedded Linux devices. With a Web management interface, this project makes it easy to remotely maintain Linux devices

C # project

3, OSU: support multi-platform fan rhythm free open source games. In the game, players click circles on the interface, drag and rotate along with the track according to the rhythm of music. From the original (2007) only support Windows platform, to the current has been extended to support Linux, macOS, iOS, Android and other platforms, and is still in continuous maintenance and development, I tried the next feeling very interesting, quickly download down to play!

4. NopCommerce: Free and open source ASP.NET electronic mall platform. The project started in 2008, developed and maintained by a professional team, a large and complete mall project. Support for Windows, Linux, macOS platforms, and support for Docker deployment out of the box

5. Ryujinx: nintendo Switch simulator written in C# The project is still in the experimental stage, the stability is not good at the same time the configuration of the machine requires more than 8G of memory, adventure partners can try

C + + project

Serial-studio is a desktop data visualization tool written in C++. Supports multiple platforms. The effects and operation procedures are as follows:

JwEngine: a cross-platform, lightweight Web framework that supports C++ and Lua. Support TCP, KCP, WebSocket, HTTP and other protocols, the underlying use of Libuv asynchronous IO to improve concurrency, avoid multithreaded context switching overhead and damage to the code aesthetic sense, the network part and logic part using a main event cycle driver. Support Lua to improve development efficiency, suitable for small game development, sample code:

event_init()

server = NetServer:new()
server.on_accept = function(conn)
end

server.on_close = function(conn)
end

server.on_msg = function(conn, msgtype, pack)
end

server:listen("127.0.0.1".3001.false)

event_run()
Copy the code

Go project

8, DNS: easy to use high-performance Go DNS library. Sample code:

package main

import (
    "github.com/miekg/dns"
    "net"
    "os"
    "log"
    "fmt"
)

func main(a) {
    config, _ := dns.ClientConfigFromFile("/etc/resolv.conf")
    c := new(dns.Client)

    m := new(dns.Msg)
    m.SetQuestion(dns.Fqdn(os.Args[1]), dns.TypeMX)
    m.RecursionDesired = true

    r, _, err := c.Exchange(m, net.JoinHostPort(config.Servers[0], config.Port))
    if r == nil {
        log.Fatalf("*** error: %s\n", err.Error())
    }

    ifr.Rcode ! = dns.RcodeSuccess { log.Fatalf(" *** invalid answer name %s after MX query for %s\n", os.Args[1], os.Args[1])}// Stuff must be in the answer section
    for _, a := range r.Answer {
            fmt.Printf("%v\n", a)
    }
}
Copy the code

Pretty: Go Printf open source tripartite library. Sample code:

package main

import (
	"fmt"

	"github.com/kr/pretty"
)

func main(a) {
	type myType struct {
		a, b int
	}
	var x = []myType{{1.2}, {3.4}, {5.6}}
	fmt.Printf("%# v", pretty.Formatter(x))
}

Output:
[]pretty_test.myType{
    {a:1, b:2},
    {a:3, b:4},
    {a:5, b:6}},Copy the code

Act: This project allows you to debug GitHub Actions scripts locally. GitHub Actions GitHub Actions is a repository automation workflow feature that allows users to easily implement CI/CD with GitHub’s free computer resources and do a lot of fun things with it. However, when writing actions scripts, if you want to debug the scripts or get the results, you can only push them to the remote warehouse and wait for the end of the operation. There is no way to debug and view the results locally. With act, you can easily debug actions locally

Java project

11. QNotified: an open source Xposed module that makes QQ run on Android better. Xposed is a running on the Android operating system Hook framework, can be understood as the Android operating system plug! After installing the tool, you can click QNotified in THE QQ Settings to start the “super” mode. Support:

  • The withdrawal
  • Notification of deleted friends
  • Block @ all members or group red envelope notification
  • Batch recall message
  • , etc.

JavaScript project

MarioHTML: Mario web game written in TypeScript. The online demo

Semaphore: Beautiful Ansible UI project. Fed up with Ansible’s old-fashioned interface? Try this program

ChatUI: An open source UI project focused on conversations. Can help users quickly build experience friendly robot dialogue interface, features:

  • Best practices: Based on the best practices of conversational interaction accumulated and polished by Ali Xiaomi business
  • TypeScript: Develops in TypeScript and provides complete type definition files
  • Responsive: Responsive layout, which can be displayed on both wireless and PC
  • Theme: Support flexible style customization to meet the diverse visual needs of business and brand
  • Internationalization: Support for multiple languages and localization features
import Chat, { Bubble, useMessages } from '@chatui/core';
import '@chatui/core/dist/index.css';

const App = () = > {
  const { messages, appendMsg, setTyping } = useMessages([]);

  function handleSend(type, val) {
    if (type === 'text' && val.trim()) {
      appendMsg({
        type: 'text'.content: { text: val },
        position: 'right'}); setTyping(true);

      setTimeout(() = > {
        appendMsg({
          type: 'text'.content: { text: 'Bala bala'}}); },1000); }}function renderMessageContent(msg) {
    const { content } = msg;
    return <Bubble content={content.text} ></Bubble>;
  }

  return (
    <Chat
      navbar={{ title:'Smart Assistant'}}messages={messages}
      renderMessageContent={renderMessageContent}
      onSend={handleSend}
    ></Chat>
  );
};
Copy the code

Edex-ui: a cross-platform cool terminal tool based on Electron. Hollywood-level terminal experience with beautiful startup animations, flashy sound effects, and intuitive presentation of file directories, system resources, networks, and more

Cool-admin-midway: a background rights management system based on Node.js+midway. It is open source and free not only to quickly develop the needs of adding, deleting, changing and checking, but also support Serverless, Docker and other convenient deployment methods, whether used to learn how to develop and manage the background, or rapid development is a good choice

PHP project

PHPMailer is probably the most popular open source PHP email library. It can be found in many well-known PHP open source projects, such as WordPress and Yii, to support all your email development needs. Take a look at the sample code to see how easy it is to use:


      
//Import PHPMailer classes into the global namespace
//These must be at the top of your script, not inside a function
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

//Load Composer's autoloader
require 'vendor/autoload.php';

//Instantiation and passing `true` enables exceptions
$mail = new PHPMailer(true);

try {
    //Server settings
    $mail->SMTPDebug = SMTP::DEBUG_SERVER;                      //Enable verbose debug output
    $mail->isSMTP();                                            //Send using SMTP
    $mail->Host       = 'smtp.example.com';                     //Set the SMTP server to send through
    $mail->SMTPAuth   = true;                                   //Enable SMTP authentication
    $mail->Username   = '[email protected]';                     //SMTP username
    $mail->Password   = 'secret';                               //SMTP password
    $mail->SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS;         //Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
    $mail->Port       = 587;                                    //TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above

    //Recipients
    $mail->setFrom('[email protected]'.'Mailer');
    $mail->addAddress('[email protected]'.'Joe User');     //Add a recipient
    $mail->addAddress('[email protected]');               //Name is optional
    $mail->addReplyTo('[email protected]'.'Information');
    $mail->addCC('[email protected]');
    $mail->addBCC('[email protected]');

    //Attachments
    $mail->addAttachment('/var/tmp/file.tar.gz');         //Add attachments
    $mail->addAttachment('/tmp/image.jpg'.'new.jpg');    //Optional name

    //Content
    $mail->isHTML(true);                                  //Set email format to HTML
    $mail->Subject = 'Here is the subject';
    $mail->Body    = 'This is the HTML message body in bold! ';
    $mail->AltBody = 'This is the body in plain text for non-HTML mail clients';

    $mail->send();
    echo 'Message has been sent';
} catch (Exception $e) {
    echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}
Copy the code

Dompdf: an HTML to PDF PHP library. Sample code:

// reference the Dompdf namespace
use Dompdf\Dompdf;

// instantiate and use the dompdf class
$dompdf = new Dompdf();
$dompdf->loadHtml('hello world');

// (Optional) Setup the paper size and orientation
$dompdf->setPaper('A4'.'landscape');

// Render the HTML as PDF
$dompdf->render();

// Output the generated PDF to Browser
$dompdf->stream();
Copy the code

Video_spider: video watermarking tool. The principle is very simple according to the input video address, return the original platform without watermark video source address. Currently support 15 video platforms, try online

Python project

ArchiveBox: Python based web archive platform. It is a tool that can automatically turn web pages (HTML, PDF, pictures, etc.) into static pages and download them to local storage and management. Can be used as a mirror station, archives, offline reading, etc

21. Airtest: cross-platform UI automation framework for mobile applications. Based on image recognition and location elements, it might be easy to test an APP or grind a game without even needing a line of code

Lux: An open source Python library for data science. The library is designed for laboratory data analysis. Pandas, with its rich data access methods and data processing capabilities, provides simple data analysis to find the “truth” hidden in data.

23, QuteBrowser: Based on PyQt5 written Vim mode of operation browser. It supports Linux, Windows and macOS operating systems. You can install it first. And then look at the source code and learn how to write a browser in Python

Swift project

24, Flappy -fly-bird: Written by Swift Flappy Bird game

Hue: an all-in-one coloring tool. Very easy to use in iOS development, you can quickly and easily UI color Settings, transparency modification, set gradient color, modify the color of the picture, etc. Hue is simple and easy to use with just one line of code, compared to Swift’s native RGBA color API, which is heavy and complex. Sample code:

// Set the hexadecimal color
let white = UIColor(hex: "#ffffff")
let black = UIColor(hex: "# 000000")

/ / set the alpha
let colorWithAlpha = myColor.alpha(0.75)

// Set the gradient
let gradient = [UIColor.blackColor(), UIColor.orangeColor()].gradient()

let secondGradient = [UIColor.blackColor(), UIColor.orangeColor()].gradient { gradient in
  gradient.locations = [0.25.1.0]
  return gradient
}
Copy the code

other

Azuredatastudio: Microsoft open source database desktop management tool. The tool supports SQL Server, Azure SQL DB, and SQL DW databases. The installation package for Windows is just under 100 MB. It also supports two other operating systems, macOS and Linux. If you use any of the above databases in your development, try this free database desktop management tool

Happens-when: This project explains in detail what happens when you type Google.com into your browser and press Enter. Chinese

Docker-osx: Allows you to run macOS operating system projects with Docker. It only takes 2 commands to get you up to a macOS operating system in minutes. Make up:

Docker sickCodes/docker-OSx :latest # Run docker run-it --device /dev/kvm -p 50922:10022 -v / TMP /.x11-UNIX :/ TMP /.x11-unix \ -e "DISPLAY=${DISPLAY:-:0.0}" \ sickcodes/docker-osx:latestCopy the code

29, the cats – of – jasnah: designed for about 3 years old children do web games. The game is very simple is to look at the picture of how many cats meet the criteria, for example: how many blue cats? The questions are asked by voice, and the correct choice will lead to the next level. Through this project can not only improve children’s color recognition and number recognition ability, but also exercise English listening. The online demo

Joplin: A free, open source note-taking and to-do list app. First, it’s a free Markdown note-taking app that supports Windows, macOS, Linux, Android, iOS and other major operating systems. Plus, it supports custom web sync, which means you can create on these platforms seamlessly, and text encryption is secure. Recommended for those who like writing

Machine learning

Best-of-ml-python: A collection of excellent Open source libraries related to Python machine learning. The project calculates a score based on the metrics of the included open source projects and updates it regularly

Tinygrad: A small open source deep learning framework. Its code is less than 1K lines simple enough to support deep model reasoning and training. Sample code:

from tinygrad.tensor import Tensor
import tinygrad.optim as optim

class TinyBobNet:
  def __init__(self) :
    self.l1 = Tensor.uniform(784.128)
    self.l2 = Tensor.uniform(128.10)

  def forward(self, x) :
    return x.dot(self.l1).relu().dot(self.l2).logsoftmax()

model = TinyBobNet()
optim = optim.SGD([model.l1, model.l2], lr=0.001)

#... and complete like pytorch, with (x,y) data

out = model.forward(x)
loss = out.mul(y).mean()
optim.zero_grad()
loss.backward()
optim.step()
Copy the code

Paddle: Baidu open source deep learning framework. Develop a convenient industry-level deep learning framework to support large-scale training with hundreds of billions of features, trillions of parameters and hundreds of nodes. The official also provides users with free computing power for learning and training, and the active community tutorials are complete and friendly to beginners

34. Fawkes: An open source project to protect personal photo privacy through AI technology. The project initiated by Sand Lab team at the University of Chicago uses AI technology to fine-tune the pixels of images. It is hard for human eyes to see the difference between the pixels before and after modification, but for face recognition system, the difference between the pixels before and after modification is huge, so as to protect the privacy of your photos


The last

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

That’s all for this episode. Did you enjoy it?

Follow the HelloGitHub public account to receive not only the first updates. Click on the menu bar -> Recommendations -> Monthly

To the period of all the contents of a fundus look fun! There are more open source projects and treasure projects waiting to be discovered.