X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=notes.txt;h=7af3f6e27fce1d08ff7cdf8a72493063b0cb1266;hb=61c219d89d10bf7dd3847232d6eed3e90bddd2fe;hp=6841507d42e97e238098b325112ac66b54b337b0;hpb=7040bda8e2a0f1d9bb072f484f52a6148061777f;p=chaz%2Ftalk-event-driven-programming-in-perl diff --git a/notes.txt b/notes.txt index 6841507..7af3f6e 100644 --- a/notes.txt +++ b/notes.txt @@ -1,40 +1,74 @@ +TODO: +X Get more knowledge about the Reactor front ends. +X Throw up some examples in some slides (#5). +X Add a section at the end to get out of the weeds and put a bit ol' bow on it. + Topics: -Evolution of event-driven programming: -- Wait for a key press or line of text. -- Interrupts (hardware and software). -- Modern event loops +1. Evolution of event-driven programming: +X Wait for a key press or line of text. +X Interrupts (hardware and software). +X Modern event loops -How to write a modern event-loop. -- kernel facilities (poll, select, etc.) +2. Types of events in modern applications: +X IO +X Timer +X User input +X Signal +X Anything that can spontaneously happen in the real world. -Event-drive programming in Perl -- POE -- AnyEvent -- IO::Async +3. How to write a modern event-loop (reactor style). +X kernel facilities (poll, select, etc.) -List of already-built event loops. -- EV -- Glib +4. List of already-built reactors. +X EV +X Glib +X ... -Types of events in modern applications: -- Data available -- Timer -- User input -- Signal -- Anything that can spontaneously happen in the real world. +5. Event-driven programming in Perl +X AnyEvent +X IO::Async +X Mojo::IOLoop +X POE -Exceptions in event-driven code. +6. Special considerations +X Exceptions in event-driven code. +X SIGPIPE, EPIPE - might have more to do with long-lived processes rather than + just event-driven programming, but still something to watch out for... +X You should almost always check the return code of your syscalls to see if they succeeded or not. -Promises: -- Future -- Future::AsyncAwait -- Future::Utils +7. Promises: +X Future +X Future::AsyncAwait +X Future::Utils -Real-world uses for event-driven applications: +8. Real-world uses for event-driven applications: - Webhooks -- WebSockets - PubsubHubbub - msg queue + + + +Other topics: +X What is event-driven programming? +X Reactor: event loop that can receive multiple types of events and + demultiplex them, delivering them to appropriate handlers. +- C10k problem +- EDA (event-driven architecture) +X Benefits of Event-driven +X How to debug event-driven code. + +Traditional programs: +- CGI - web server calls your program, and your program does its thing and + finishes. +X filters - grep, less, sed, etc. Like a function, the program takes its input + and produces some output. + +Perl features: +- first-class subroutines + +- Can mix traditional architecture with event-driven (like docker that + provides both an http and command-line interface. +