HelloGitHub Vol.89
HelloGitHub shares interesting and beginner-friendly open source projects on GitHub, updated on the 28th of each month. Here you will find fun and beginner-level open source projects, open source books, practical projects, and enterprise-level projects, allowing you to quickly appreciate the charm of open source and develop an interest in it.
Write a Linux Container from Scratch in C. This project relies solely on the fundamental Linux features and implements a Linux container using the C language, which can be used to learn more about the technical details of Linux containers and the kernel.
$ sudo ./bin/barco -u 0 -m / -c /bin/sh -a . [-v] 22:08:41 INFO ./src/barco.c:96: initializing socket pair... 22:08:41 INFO ./src/barco.c:103: setting socket flags... 22:08:41 INFO ./src/barco.c:112: initializing container stack... 22:08:41 INFO ./src/barco.c:120: initializing container... 22:08:41 INFO ./src/barco.c:131: initializing cgroups... 22:08:41 INFO ./src/cgroups.c:73: setting memory.max to 1G... 22:08:41 INFO ./src/cgroups.c:73: setting cpu.weight to 256... 22:08:41 INFO ./src/cgroups.c:73: setting pids.max to 64... 22:08:41 INFO ./src/cgroups.c:73: setting cgroup.procs to 1458... 22:08:41 INFO ./src/barco.c:139: configuring user namespace... 22:08:41 INFO ./src/barco.c:147: waiting for container to exit... 22:08:41 INFO ./src/container.c:43: ### BARCONTAINER STARTING - type 'exit' to quit ### # ls bin home lib32 media root sys vmlinuz boot initrd.img lib64 mnt run tmp vmlinuz.old dev initrd.img.old libx32 opt sbin usr etc lib lost+found proc srv var # echo "i am a container" i am a container
Quake II Official Remastered Source Code. Quake II, released by id Software in 1997, is considered a classic first-person shooter by many players. This project is the official source code of Quake II re-released in 2023.
Command Line Tool for Parsing and Manipulating URLs. This project is a new work by the author of cURL, and can be used to parse URLs, replace/extract/set parameters in the URLs.
Compact Windows Desktop Launcher Tool. This free tool named Geek Desktop features a minimalistic interface and supports full disk file search, one-click activation, custom wallpaper, and scheduled reminders, amongst other functionalities.
An Open Source miHoYo Game Launcher. This is a launcher that supports all miHoYo desktop games, including downloading games, tracking game time, switching accounts, saving gacha records, and offering Mihoyo community tool kits. It can run on Windows 10 and above operating systems.
Real-time Drawing GUI Library. This project is a Dear ImGui drawing library that updates the image in real-time based on user interaction and data updates, supporting GPU acceleration, various drawing types, and mixed drawing capabilities. With just a few lines of code, you can integrate the functionality of real-time data visualization.
int bar_data[11] = ...; float x_data[1000] = ...; float y_data[1000] = ...; ImGui::Begin("My Window"); if (ImPlot::BeginPlot("My Plot")) { ImPlot::PlotBars("My Bar Plot", bar_data, 11); ImPlot::PlotLine("My Line Plot", x_data, y_data, 1000); ... ImPlot::EndPlot(); } ImGui::End();
Tool for Running Linux Graphical Applications on Windows. This project is an open-source tool by Microsoft that supports running Linux GUI applications on the Windows operating system. It offers a native and natural Linux GUI application experience, including functions such as cross-cutting and pasting between Windows and Linux applications. WSLg is built into systems Windows 10 and above, and can be launched directly via the wsl command.
A More User-Friendly Lightweight Go Language XML Library. Although the Go language includes a built-in library for handling XML, it can be cumbersome to define structures according to the nesting levels when using it. This project is inspired by Python's ElementTree library, which allows for flexible reading and generation of XML documents without the need to define structures.
doc := etree.NewDocument() doc.CreateProcInst("xml", `version="1.0" encoding="UTF-8"`) doc.CreateProcInst("xml-stylesheet", `type="text/xsl" href="style.xsl"`) people := doc.CreateElement("People") people.CreateComment("These are all known people") jon := people.CreateElement("Person") jon.CreateAttr("name", "Jon") sally := people.CreateElement("Person") sally.CreateAttr("name", "Sally") doc.Indent(2) doc.WriteTo(os.Stdout)
Go Language Design Pattern Example Code. This project is the author's notes from reading the book 'Grounding Design Patterns', and has implemented the 23 design patterns mentioned in the book using the Go language.
Tool for Checking Directory and File Naming Styles. This is a Lint tool for directories and filenames written in Go. It has few dependencies and is fast, allowing for custom detection rules and ignored directories through a yml configuration file, suitable for various scenarios such as Git Hooks, GitHub Action, and Docker Image.
ls: .js: snake_case .ts: snake_case | camelCase .d.ts: PascalCase .html: regex:[a-z0-9]+ ignore: - node_modules
A Plug-and-Play WebP Server. WebP is an image format developed by Google to improve the speed of image loading. This project is a WebP server written in Go, which can transform images in formats such as JPG, PNG, BMP, SVG, etc., into the WebP format without the need for further development, effectively reducing the file size, saving bandwidth, and improving the speed of image loading.
A Powerful Database Data Extraction Tool. A tool for browsing database subsets and relational data, supporting browsing of databases according to inter-table relationships, and generating DML topological relationships, among other features. It can be used to extract the necessary database tables and data from a production database to support the testing of a complete business line.
A Minimalist Android Accounting App. This is an accounting app for Android that supports custom spending/income categories, timely reminders, budget settings, and expense statistics features.
A Java-based Turn-based War Game. This is a free, open-source war chess game where players can simulate classic battles such as World War II and the Napoleonic Wars within the game, supporting Windows, Linux, and macOS operating systems.
An Open-Source Sandbox MMORPG Game. This is a large-scale multiplayer online role-playing game (MMORPG) developed by the Global Illumination company, which has been acquired by OpenAI. Utilizing technologies such as React, Next.js, TypeScript, and WebAssembly, the game offers players the ability to explore the world, build houses, trade, and socialize within the game world. It is browser-based and requires no download to play.
Out-of-the-Box Documentation Website Generator. This project helps you quickly generate a documentation website that is ready to use without the need for building. You can publish it immediately after writing your documents. It supports full-text search, customizable themes, a rich set of APIs, Emoji, and other practical features.
A Powerful Online Graphic Design Tool. An online poster and graphic design tool developed using Vue3, Vite2, Vuex, and ElementPlus technologies, which can be used to generate e-commerce share images, article long images, video/public account covers, etc.
Engaging JavaScript Programming RPG Game. In this game, you will command the warriors to fight against the enemies and rescue the captives by using JavaScript syntax, step by step moving towards the top of the tower to obtain the legendary JavaScript Sword.
Refreshing WeChat Mini Program Version of a Blog. This project is a WeChat mini program based on the Halo blog backend, which allows you to easily transfer blog content to the WeChat mini program. It supports features such as personal business cards, blog post display, comments, article search, and custom navigation bar.
A Web Automation Tool Similar to Selenium. This is a Python-based web automation tool that supports Chromium-based browsers. It combines the functionalities of controlling the browser and sending/receiving requests into one unified interface with a consistent and concise API.
# 下载星巴克产品图 from DrissionPage import SessionPage from re import search # 以s模式创建页面对象 page = SessionPage() # 访问目标网页 page.get('https://www.starbucks.com.cn/menu/') # 获取所有class属性为preview circle的元素 divs = page.eles('.preview circle') # 遍历这些元素 for div in divs: # 用相对定位获取当前div元素后一个兄弟元素,并获取其文本 name = div.next().text # 在div元素的style属性中提取图片网址并进行拼接 img_url = div.attr('style') img_url = search(r'"(.*)"', img_url).group(1) img_url = f'https://www.starbucks.com.cn{img_url}' # 执行下载 page.download(img_url, r'.\imgs', rename=name)
Build a Database from Scratch Using Python. This project aims to implement a relational database from scratch using Python, providing a better understanding of the internal structure of data. This database is intended for learning and practice, and should not be used in production environments.
NVIDIA GPU Process Monitoring Tool Similar to the 'top' Command. This is a monitoring tool for NVIDIA devices and processes, featuring a colorful interface with real-time updates on processes and device information, supporting process filtering, mouse control, signaling, and other functionalities.
E-Piano Running in the Command Line. This is a small command line application of an electronic piano that is easy to install and convenient to run, supporting both mouse and keyboard operation modes.
Tool to view GitHub Action run status locally. A command-line tool that displays the running status of GitHub Actions for the current branch with just one command.
A Website Teaching You How to Grow Crops. This is a knowledge base about crop cultivation, where you can find steps on how to grow plants like tomatoes, potatoes, strawberries, etc., and all of this is free of charge.
A Miniature JVM Learning Project Written in Rust. This is a hands-on project written in Rust to replicate a JVM7. It has implemented a set of features including Java basic types, exception handling, stack trace, garbage collection, and parsing of .class files.
Lightweight, Super Fast and Good-looking Terminal. This is a terminal written in Rust, with a high level of aesthetics and compatible with various shells. It comes out of the box, customizable with various prompts, and is suitable for Windows, Linux, Android, and macOS systems.
Automated macOS Firmware Downloader. This tool can list all available macOS firmware/installer information, including name, version number, release date, and size.
An Elegant Swift Skeleton Screen Library. A skeleton screen is a technique that displays the approximate structure of a page when the data required has not yet completed loading. This Swift skeleton screen library is easy to get started with, has a user-friendly interface, and supports all UIView, custom animations, and other features.
Meta's Open Source Text-to-Music Library. This project can generate high-quality and high-fidelity audio and music based on text prompts, such as whistling in the wind or a pop dance tune suitable for a beach scene, with a very impressive generation effect.
A Plug-and-Play Image Generation Software. This project incorporates the strengths of Stable Diffusion and Midjourney in its design. It is simple to install and easy to operate, eliminating the need for complex parameter adjustments. Users can generate images comparable to Midjourney by simply entering prompt words. Supports local deployment and offline use, with the minimum configuration requirement being 8GB of memory and a 4GB Nvidia graphics card.
Xu Yida's Machine Learning Course. This project is a collection of open-source lecture notes and video course links on machine learning, probabilistic models, and deep learning provided by Professor Xu Yida from Hong Kong Baptist University (HKBU).
A Portable Linux Computer with a Full Keyboard. This is a board that combines a BlackBerry keyboard, a 400*200 LCD display, and a 2000mAh battery, priced at $79. By plugging in a Raspberry Pi Zero W, it instantly becomes a BlackBerry version of a Linux playground.
Tool for Counting Lines of Code. This is a tool that can count the number of whitespace lines, comments, and lines of code in different programming languages within the source code.
A Linux Server Security Guide. This is a guide focused on securing Linux servers in non-enterprise scenarios. Although not professional, it is sufficient for personal use.
A Practical Linux Tutorial. Unlike comprehensive Linux tutorials, this project focuses on practicality, covering common Linux commands, system maintenance, software maintenance, and frequently used shell scripts.
Independent Developer Product Monetization Weekly. A weekly publication covering subjects related to independent developers and product monetization.
Lean Side Project: How Programmers Can Gracefully Engage in Side Projects. This book expands on the content of 'How Programmers Can Earn Pocket Money Gracefully', introduces the lean startup process, optimizes it specifically for lean side project processes, and adds practical content on independent development monetization and online course monetization.
What Happens When You Run a Program?. This is a mini-book about how a program runs, covering computer basics, operating systems, and how Linux loads executable files.
In-Depth Architecture Principles and Practices. With the rise of cloud computing, the focus of technical architecture has also evolved from cluster availability management to cloud-native and FinOps cost management. The book covers topics such as networking, containers, gateways, microservices and distribution, cloud-native, quality monitoring, and cost management, helping readers quickly grasp the technical architecture system in the cloud era.
Ruan Yifeng's TypeScript Tutorial. This is a beginner-friendly open-source tutorial for TypeScript, covering the basic concepts and usage of TypeScript.
- C
- C#
- C++
- Go
- Java
- JavaScript
- Python
- Ruby
- Rust
- Swift
- AI
- Other
- Book