An open API service indexing awesome lists of open source software.

https://github.com/babkock/learning

A collection of small programs, to be used as references and learning material. Covers a variety of techniques.
https://github.com/babkock/learning

beginner-friendly bootloader c cpp17 http-server linux-app linux-shell multithreading mutex-lock ncurses pointers socket-io tcp-client tcp-server tutorial tutorials x11 xcb

Last synced: 8 months ago
JSON representation

A collection of small programs, to be used as references and learning material. Covers a variety of techniques.

Awesome Lists containing this project

README

          

#+TITLE: learning
#+AUTHOR: Tanner Babcock
#+EMAIL: babkock@protonmail.com
#+LANGUAGE: en

[[https://gitlab.com/Babkock/learning/-/commits/master][https://gitlab.com/Babkock/learning/badges/master/pipeline.svg]]
[[https://github.com/Babkock/learning/actions/workflows/c-cpp.yml/badge.svg]]
[[https://img.shields.io/badge/License-GPL_v2-blue.svg]]

Very old C and C++ programs, with some new C programs, and some assembly code. Goes over a variety of Unix/Linux programming techniques. Some of these programs require the linking of external libraries. Instructions on how to compile these programs are included in the source code and in the lessons.
Some programs utilize command-line arguments. Remember, if you ever see =int main(int argc, char *argv[])= instead of =int main(void)= , that means the program accepts command-line arguments. Each of these programs are noted in the lessons.

* Lessons

- [[https://github.com/Babkock/learning/tree/master/boot][Bootloader]]
- [[https://github.com/Babkock/learning/tree/master/etc][Curses/Colors/C++ Classes]]
- [[https://github.com/Babkock/learning/tree/master/network][Networking/Communication]]
- [[https://github.com/Babkock/learning/tree/master/point][Pointers]]
- [[https://github.com/Babkock/learning/tree/master/sys][System Calls]]
- [[https://github.com/Babkock/learning/tree/master/thread][Threads]]
- [[https://github.com/Babkock/learning/tree/master/x][X Window System]]

* Examples

- *[[https://github.com/Babkock/learning/blob/master/boot/disk.asm][Bootloader]] and [[https://github.com/Babkock/learning/blob/master/boot/kernel/bootsect.asm][kernel]]* for use with QEMU
- TCP [[https://github.com/Babkock/learning/blob/master/network/client.c][client]] and [[https://github.com/Babkock/learning/blob/master/network/multiserver.c][server]] with multiple requests
- *[[https://github.com/Babkock/learning/blob/master/network/http.c][Working HTTP server]]*
- [[https://github.com/Babkock/learning/blob/master/x/xft.c][XFT font drawing]]
- [[https://github.com/Babkock/learning/blob/master/sys/tick.c][Reading]] and [[https://github.com/Babkock/learning/blob/master/sys/speak.c][writing]] FIFO
- [[https://github.com/Babkock/learning/blob/master/point/linklist.c][Linked list]] with [[https://github.com/Babkock/learning/blob/master/point/linkpush.c][push]] and [[https://github.com/Babkock/learning/blob/master/point/linkpop.c][pop]] functions
- [[https://github.com/Babkock/learning/blob/master/etc/curses.c][Simple Ncurses program]] that writes vertically in the terminal
- [[https://github.com/Babkock/learning/blob/master/thread/threads.c][Threads]] with [[https://github.com/Babkock/learning/blob/master/thread/mutex.c][mutex]]
- [[https://github.com/Babkock/learning/blob/master/point/hashmap.c][Hash map]] and [[https://github.com/Babkock/learning/blob/master/point/hashtable.c][hash table]]
- [[https://github.com/Babkock/learning/blob/master/time.c][Time calculator]]
- [[https://github.com/Babkock/learning/blob/master/sys/shell.c][Simple shell]]
- [[https://github.com/Babkock/learning/blob/master/sys/symlink.c][Symbolic links]]
- [[https://github.com/Babkock/learning/blob/master/bits.c][Bitwise operations]]
- [[https://github.com/Babkock/learning/blob/master/point/bitfield.c][Bit field]]

Thanks for checking these out.