GithubHelp home page GithubHelp logo

tml / lpthw-study-projects Goto Github PK

View Code? Open in Web Editor NEW

This project forked from dragon1st/lpthw-study-projects

0.0 3.0 0.0 80 KB

A collection of small study projects for after LPTHW which teaches basic systems coding in Python.

lpthw-study-projects's Introduction

Learn Python The Hard Way Study Projects

The LPTHW Study Projects are a set of problems to teach new programmers (or experienced ones) basic systems programming. It does this by presenting a set of problems that you solve before looking at the solution I've written. By solving all of these problems you'll improve your Python skills, get better at building software from nothing, and learn more about how the operating system works.

The projects are designed to teach you something about the operating systems you use everyday through Python's APIs and implementing small versions of tools you use. Each project has a catchy title for what it teaches, and a name of the tool it's based on. The problem will then be described in terms of this problem, what you'll learn, and what this tool does.

The Projects

The projects are broken down into categories of things you will learn and are meant to be done in order, although you can pick and choose if you are already familiar with other subjects.

Filesystem

  • find: The file system is a dictionary not a tree.
  • grep: Regex are not scary, scary regex are.
  • cp: Copying files fast and slow.
  • mv: A move is a rename in the filesystem dictionary.
  • rm: A remove deletes from the dictionary.
  • tail: A file is like a tape drive.
  • diff: A delta is a glorious thing.

Daemons

  • config: Don't invent your own config file format.
  • logging: You don't need syslog.
  • syslog: You should centralize logs with syslog.
  • fork: Daemons are your friends.
  • chroot: Daemons need cages.
  • droppriv: Daemons can't be trusted.
  • signals: Daemons can be poked.
  • pidfiles: Daemons can bet lost.
  • monit: Daemons need a nanny.
  • watcher: A Daemon that's a tattle tail.

Network

  • mail: Sending email is easy.
  • sendmail: Sometimes email should dump to your screen.
  • curl: Getting things from the web.
  • webserver: Everyone can make a web framework!
  • ssh: Logging into servers is best securely.
  • scp: Copying to another machine (even slower).
  • s3: Copying to the cloud.
  • named pipe: Everything is a file (except when it's not).
  • sockets: A socket is a file (except when it's not).
  • gevent: Sockets do a lot of nothing most of the time.

Security

  • iptables: Blocking ninja network haxors.
  • blocker: Daemons can do the blocking.
  • nmap: Scanning ports is easy and fun.
  • honeypot: Scanning should not be easy.

System Info

  • /proc: Daemons watching proc watching daemons.
  • login: Watching logins and failures.
  • /etc/passwd: Getting the dirt on users.
  • stats: Good stats made easy with one file.
  • nagios: Watching what is going on everywhere.

Extras

  • cron: Time events are a queue.
  • curses: Adding a fancy progress bar to scp.

The Solutions

Each project includes the solutions in a separate directory so you can compare your solution to mine and see how I'd have done it. This also lets you study on your own since, if you get stuck, you can cheat real quick and get back on track.

The Template

Every problem is written out in a consistent way with the following information:

  • Title: Synopsis of the project and what it teaches you.
  • Setup: Required setup to complete the project including required reading and what the student needs to install to complete the project successfully.
  • Problem: Complete description of the problem to solve.
  • Requirements: Required elements to the solution to meet the learning objectives.
  • Hints: Any small hints or clues that tell them how to spot if they're doing it wrong.
  • Assessment: Tests and extra checks to confirm they did it right.
  • Deep Dive: A list of code files in projects they should read to understand what is going on. No more assuming it works until they know it works.

Other Languages

I will be writing a Ruby version of this project to mirror the same programs and will license this project so that other languages can redo it in their language.

lpthw-study-projects's People

Contributors

zedshaw avatar

Watchers

Joey Smith avatar James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.