lectures.alex.balgavy.eu

Lecture notes from university.
git clone git://git.alex.balgavy.eu/lectures.alex.balgavy.eu.git
Log | Files | Refs | Submodules

commit 6504fcbd2a58307ea90494226a6d63dbdc91fd75
parent e7f0736dbdf201aba0d2e7304290d554b9bc64ed
Author: Alex Balgavy <alex@balgavy.eu>
Date:   Sun, 26 Sep 2021 00:22:47 +0200

It's now a PWA and installable offline

Diffstat:
Astatic/images/icons-192.png | 0
Astatic/images/icons-512.png | 0
Astatic/manifest.json | 21+++++++++++++++++++++
Astatic/sw.js | 436+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Mtemplates/base.html | 15+++++++++++++++
5 files changed, 472 insertions(+), 0 deletions(-)

diff --git a/static/images/icons-192.png b/static/images/icons-192.png Binary files differ. diff --git a/static/images/icons-512.png b/static/images/icons-512.png Binary files differ. diff --git a/static/manifest.json b/static/manifest.json @@ -0,0 +1,21 @@ +{ + "short_name": "Lecture Notes", + "name": "Lecture Notes", + "icons": [ + { + "src": "/images/icons-192.png", + "type": "image/png", + "sizes": "192x192" + }, + { + "src": "/images/icons-512.png", + "type": "image/png", + "sizes": "512x512" + } + ], + "start_url": "/", + "scope": "/", + "background_color": "#3367D6", + "display": "standalone", + "prefer_related_applications": true +} diff --git a/static/sw.js b/static/sw.js @@ -0,0 +1,436 @@ +var tocache = [ +"https://lectures.alex.balgavy.eu/", +"https://lectures.alex.balgavy.eu/aos-notes/", +"https://lectures.alex.balgavy.eu/aos-notes/booting-x86-64/", +"https://lectures.alex.balgavy.eu/aos-notes/managing-physical-memory/", +"https://lectures.alex.balgavy.eu/aos-notes/page-tables/", +"https://lectures.alex.balgavy.eu/aos-notes/user-mode/", +"https://lectures.alex.balgavy.eu/ap-notes/", +"https://lectures.alex.balgavy.eu/ap-notes/classes-and-instantiation/", +"https://lectures.alex.balgavy.eu/ap-notes/encapsulation/", +"https://lectures.alex.balgavy.eu/automata-complexity-notes/", +"https://lectures.alex.balgavy.eu/automata-complexity-notes/lecture-1/", +"https://lectures.alex.balgavy.eu/automata-complexity-notes/lecture-10/", +"https://lectures.alex.balgavy.eu/automata-complexity-notes/lecture-11/", +"https://lectures.alex.balgavy.eu/automata-complexity-notes/lecture-2/", +"https://lectures.alex.balgavy.eu/automata-complexity-notes/lecture-3/", +"https://lectures.alex.balgavy.eu/automata-complexity-notes/lecture-4/", +"https://lectures.alex.balgavy.eu/automata-complexity-notes/lecture-5/", +"https://lectures.alex.balgavy.eu/automata-complexity-notes/lecture-6/", +"https://lectures.alex.balgavy.eu/automata-complexity-notes/lecture-7/", +"https://lectures.alex.balgavy.eu/automata-complexity-notes/lecture-8/", +"https://lectures.alex.balgavy.eu/automata-complexity-notes/lecture-9/", +"https://lectures.alex.balgavy.eu/binary-malware-analysis-notes/", +"https://lectures.alex.balgavy.eu/binary-malware-analysis-notes/anti-analysis/", +"https://lectures.alex.balgavy.eu/binary-malware-analysis-notes/assembly/", +"https://lectures.alex.balgavy.eu/binary-malware-analysis-notes/disassembly-tools/", +"https://lectures.alex.balgavy.eu/binary-malware-analysis-notes/dynamic-binary-instrumentation-and-intel-pin/", +"https://lectures.alex.balgavy.eu/binary-malware-analysis-notes/dynamic-data-excavation/", +"https://lectures.alex.balgavy.eu/binary-malware-analysis-notes/dynamic-taint-analysis/", +"https://lectures.alex.balgavy.eu/binary-malware-analysis-notes/gdb/", +"https://lectures.alex.balgavy.eu/binary-malware-analysis-notes/introduction/", +"https://lectures.alex.balgavy.eu/binary-malware-analysis-notes/mitigating-code-reuse-attacks/", +"https://lectures.alex.balgavy.eu/binary-malware-analysis-notes/packers/", +"https://lectures.alex.balgavy.eu/binary-malware-analysis-notes/parser-identification/", +"https://lectures.alex.balgavy.eu/binary-malware-analysis-notes/symbolic-execution/", +"https://lectures.alex.balgavy.eu/binary-malware-analysis-notes/taint-analysis-in-practice/", +"https://lectures.alex.balgavy.eu/binary-malware-analysis-notes/tracking-control-flow/", +"https://lectures.alex.balgavy.eu/binary-malware-analysis-notes/what-happens-before-main/", +"https://lectures.alex.balgavy.eu/coding-and-cryptography/", +"https://lectures.alex.balgavy.eu/coding-and-cryptography/bch-codes/", +"https://lectures.alex.balgavy.eu/coding-and-cryptography/cyclic-linear-codes/", +"https://lectures.alex.balgavy.eu/coding-and-cryptography/euclidian-algorithm/", +"https://lectures.alex.balgavy.eu/coding-and-cryptography/introduction-basic-concepts/", +"https://lectures.alex.balgavy.eu/coding-and-cryptography/linear-codes/", +"https://lectures.alex.balgavy.eu/coding-and-cryptography/perfect-related-codes/", +"https://lectures.alex.balgavy.eu/coding-and-cryptography/reed-solomon-codes/", +"https://lectures.alex.balgavy.eu/compnet-notes/", +"https://lectures.alex.balgavy.eu/compnet-notes/application/", +"https://lectures.alex.balgavy.eu/compnet-notes/data-link-error-detection-correction/", +"https://lectures.alex.balgavy.eu/compnet-notes/data-link-overview-framing/", +"https://lectures.alex.balgavy.eu/compnet-notes/data-link-protocols/", +"https://lectures.alex.balgavy.eu/compnet-notes/examples-of-networks/", +"https://lectures.alex.balgavy.eu/compnet-notes/mac-overview-allocation-methods/", +"https://lectures.alex.balgavy.eu/compnet-notes/mac-protocols/", +"https://lectures.alex.balgavy.eu/compnet-notes/mac-use-in-bluetooth-rfid/", +"https://lectures.alex.balgavy.eu/compnet-notes/mac-use-in-ethernet/", +"https://lectures.alex.balgavy.eu/compnet-notes/mac-use-in-wifi-broadband/", +"https://lectures.alex.balgavy.eu/compnet-notes/network-internet-protocols/", +"https://lectures.alex.balgavy.eu/compnet-notes/network-overview/", +"https://lectures.alex.balgavy.eu/compnet-notes/network-providing-service/", +"https://lectures.alex.balgavy.eu/compnet-notes/network-routing/", +"https://lectures.alex.balgavy.eu/compnet-notes/overview/", +"https://lectures.alex.balgavy.eu/compnet-notes/physical-basis-for-data-communication/", +"https://lectures.alex.balgavy.eu/compnet-notes/physical-modulation-multiplexing/", +"https://lectures.alex.balgavy.eu/compnet-notes/physical-transmission-media/", +"https://lectures.alex.balgavy.eu/compnet-notes/shit-i-don-t-remember-and-need-to-remember/", +"https://lectures.alex.balgavy.eu/compnet-notes/transport-elements-of-transport-protocols/", +"https://lectures.alex.balgavy.eu/compnet-notes/transport-internet-transport-protocols/", +"https://lectures.alex.balgavy.eu/compnet-notes/transport-overview/", +"https://lectures.alex.balgavy.eu/compthink-notes/", +"https://lectures.alex.balgavy.eu/compthink-notes/algorithms/", +"https://lectures.alex.balgavy.eu/compthink-notes/big-o-notation/", +"https://lectures.alex.balgavy.eu/compthink-notes/binary-search/", +"https://lectures.alex.balgavy.eu/compthink-notes/bubble-sort/", +"https://lectures.alex.balgavy.eu/compthink-notes/dijkstra-s-algorithm/", +"https://lectures.alex.balgavy.eu/compthink-notes/graphs/", +"https://lectures.alex.balgavy.eu/compthink-notes/greedy-technique/", +"https://lectures.alex.balgavy.eu/compthink-notes/kruskal-s-algorithm/", +"https://lectures.alex.balgavy.eu/compthink-notes/linear-search/", +"https://lectures.alex.balgavy.eu/compthink-notes/merge-sort/", +"https://lectures.alex.balgavy.eu/compthink-notes/paths/", +"https://lectures.alex.balgavy.eu/compthink-notes/prim-s-algorithm/", +"https://lectures.alex.balgavy.eu/compthink-notes/quicksort/", +"https://lectures.alex.balgavy.eu/compthink-notes/search-algorithms/", +"https://lectures.alex.balgavy.eu/compthink-notes/sorting-algorithms/", +"https://lectures.alex.balgavy.eu/compthink-notes/symbols-of-a-flowchart/", +"https://lectures.alex.balgavy.eu/compthink-notes/types-of-graphs/", +"https://lectures.alex.balgavy.eu/computer-network-security/", +"https://lectures.alex.balgavy.eu/computer-network-security/lecture-1-intro-history/", +"https://lectures.alex.balgavy.eu/computer-network-security/lecture-10-web-attacks/", +"https://lectures.alex.balgavy.eu/computer-network-security/lecture-11-web-attacks-on-user/", +"https://lectures.alex.balgavy.eu/computer-network-security/lecture-12-advanced-exploitation/", +"https://lectures.alex.balgavy.eu/computer-network-security/lecture-13-advanced-exploitation-2/", +"https://lectures.alex.balgavy.eu/computer-network-security/lecture-14-intrusion-detection-systems-ids/", +"https://lectures.alex.balgavy.eu/computer-network-security/lecture-15-cryptography/", +"https://lectures.alex.balgavy.eu/computer-network-security/lecture-2-network-security-1/", +"https://lectures.alex.balgavy.eu/computer-network-security/lecture-3-tcp/", +"https://lectures.alex.balgavy.eu/computer-network-security/lecture-4-dos/", +"https://lectures.alex.balgavy.eu/computer-network-security/lecture-5-application-security-simple-attacks/", +"https://lectures.alex.balgavy.eu/computer-network-security/lecture-6-assembly-shellcode-exploits/", +"https://lectures.alex.balgavy.eu/computer-network-security/lecture-7-exploitation-techniques/", +"https://lectures.alex.balgavy.eu/computer-network-security/lecture-8-defenses/", +"https://lectures.alex.balgavy.eu/computer-network-security/lecture-9-web-security/", +"https://lectures.alex.balgavy.eu/cpp-notes/", +"https://lectures.alex.balgavy.eu/cpp-notes/abstraction/", +"https://lectures.alex.balgavy.eu/cpp-notes/advice-for-programming-in-c/", +"https://lectures.alex.balgavy.eu/cpp-notes/basic-architecture-making-a-program/", +"https://lectures.alex.balgavy.eu/cpp-notes/basic-functionality/", +"https://lectures.alex.balgavy.eu/cpp-notes/constants-in-c/", +"https://lectures.alex.balgavy.eu/cpp-notes/declarations-definitions-init/", +"https://lectures.alex.balgavy.eu/cpp-notes/enumerations/", +"https://lectures.alex.balgavy.eu/cpp-notes/functions/", +"https://lectures.alex.balgavy.eu/cpp-notes/glossary/", +"https://lectures.alex.balgavy.eu/cpp-notes/grammars/", +"https://lectures.alex.balgavy.eu/cpp-notes/header-files/", +"https://lectures.alex.balgavy.eu/cpp-notes/modular-programming/", +"https://lectures.alex.balgavy.eu/cpp-notes/namespaces/", +"https://lectures.alex.balgavy.eu/cpp-notes/operator-overloading/", +"https://lectures.alex.balgavy.eu/cpp-notes/randomness/", +"https://lectures.alex.balgavy.eu/cpp-notes/recursion/", +"https://lectures.alex.balgavy.eu/cpp-notes/scope/", +"https://lectures.alex.balgavy.eu/cpp-notes/separate-compilation/", +"https://lectures.alex.balgavy.eu/cpp-notes/the-standard-library/", +"https://lectures.alex.balgavy.eu/cpp-notes/tokens/", +"https://lectures.alex.balgavy.eu/cpp-notes/types/", +"https://lectures.alex.balgavy.eu/cpp-notes/variable-types-their-operators/", +"https://lectures.alex.balgavy.eu/databases-notes/", +"https://lectures.alex.balgavy.eu/databases-notes/aggregations/", +"https://lectures.alex.balgavy.eu/databases-notes/conceptual-to-relational-models/", +"https://lectures.alex.balgavy.eu/databases-notes/database-application-programming/", +"https://lectures.alex.balgavy.eu/databases-notes/database-design-conceptual-models/", +"https://lectures.alex.balgavy.eu/databases-notes/introduction/", +"https://lectures.alex.balgavy.eu/databases-notes/joins/", +"https://lectures.alex.balgavy.eu/databases-notes/kind-of-a-syllabus/", +"https://lectures.alex.balgavy.eu/databases-notes/order-by/", +"https://lectures.alex.balgavy.eu/databases-notes/relational-normal-forms/", +"https://lectures.alex.balgavy.eu/databases-notes/sql-overview/", +"https://lectures.alex.balgavy.eu/databases-notes/the-relational-model/", +"https://lectures.alex.balgavy.eu/databases-notes/transactions/", +"https://lectures.alex.balgavy.eu/databases-notes/union-conditionals/", +"https://lectures.alex.balgavy.eu/distributed-algorithms-notes/", +"https://lectures.alex.balgavy.eu/distributed-algorithms-notes/anonymous-networks/", +"https://lectures.alex.balgavy.eu/distributed-algorithms-notes/election-algorithms/", +"https://lectures.alex.balgavy.eu/distributed-algorithms-notes/fault-tolerance/", +"https://lectures.alex.balgavy.eu/distributed-algorithms-notes/introduction/", +"https://lectures.alex.balgavy.eu/distributed-algorithms-notes/routing/", +"https://lectures.alex.balgavy.eu/distributed-algorithms-notes/termination-detection-garbage-collection/", +"https://lectures.alex.balgavy.eu/distributed-algorithms-notes/waves-deadlock-detection/", +"https://lectures.alex.balgavy.eu/dsa-notes/", +"https://lectures.alex.balgavy.eu/dsa-notes/activity-selection/", +"https://lectures.alex.balgavy.eu/dsa-notes/algorithms-general/", +"https://lectures.alex.balgavy.eu/dsa-notes/binary-search-avl-trees/", +"https://lectures.alex.balgavy.eu/dsa-notes/course-information/", +"https://lectures.alex.balgavy.eu/dsa-notes/dijkstra-s-algorithm/", +"https://lectures.alex.balgavy.eu/dsa-notes/dynamic-programming/", +"https://lectures.alex.balgavy.eu/dsa-notes/fibonacci-numbers/", +"https://lectures.alex.balgavy.eu/dsa-notes/fractional-knapsack/", +"https://lectures.alex.balgavy.eu/dsa-notes/greedy-algorithms/", +"https://lectures.alex.balgavy.eu/dsa-notes/hashing/", +"https://lectures.alex.balgavy.eu/dsa-notes/heapsort/", +"https://lectures.alex.balgavy.eu/dsa-notes/huffman-codes/", +"https://lectures.alex.balgavy.eu/dsa-notes/insertion-sort/", +"https://lectures.alex.balgavy.eu/dsa-notes/knapsack01/", +"https://lectures.alex.balgavy.eu/dsa-notes/linear-time-algorithms/", +"https://lectures.alex.balgavy.eu/dsa-notes/linked-list/", +"https://lectures.alex.balgavy.eu/dsa-notes/longest-common-subsequence/", +"https://lectures.alex.balgavy.eu/dsa-notes/max-subarray/", +"https://lectures.alex.balgavy.eu/dsa-notes/merge-sort/", +"https://lectures.alex.balgavy.eu/dsa-notes/queue/", +"https://lectures.alex.balgavy.eu/dsa-notes/quicksort/", +"https://lectures.alex.balgavy.eu/dsa-notes/rod-cutting/", +"https://lectures.alex.balgavy.eu/dsa-notes/shit-i-don-t-remember-but-should-midterm-edition/", +"https://lectures.alex.balgavy.eu/dsa-notes/sorting-algorithms/", +"https://lectures.alex.balgavy.eu/dsa-notes/stack/", +"https://lectures.alex.balgavy.eu/equational-notes/", +"https://lectures.alex.balgavy.eu/equational-notes/booleans-as-lambda-terms/", +"https://lectures.alex.balgavy.eu/equational-notes/famous-lambda-calculus-terms/", +"https://lectures.alex.balgavy.eu/equational-notes/fixed-point-combinators/", +"https://lectures.alex.balgavy.eu/equational-notes/functional-programming/", +"https://lectures.alex.balgavy.eu/equational-notes/haskell/", +"https://lectures.alex.balgavy.eu/equational-notes/keywords/", +"https://lectures.alex.balgavy.eu/equational-notes/lambda-terms/", +"https://lectures.alex.balgavy.eu/equational-notes/list/", +"https://lectures.alex.balgavy.eu/equational-notes/natural-numbers-as-lambda-terms/", +"https://lectures.alex.balgavy.eu/equational-notes/normal-form/", +"https://lectures.alex.balgavy.eu/equational-notes/pair/", +"https://lectures.alex.balgavy.eu/equational-notes/recursion/", +"https://lectures.alex.balgavy.eu/equational-notes/strategies/", +"https://lectures.alex.balgavy.eu/equational-notes/weak-head-normal-form/", +"https://lectures.alex.balgavy.eu/hci-notes/", +"https://lectures.alex.balgavy.eu/hci-notes/designing-for-differences/", +"https://lectures.alex.balgavy.eu/hci-notes/normans-design-principles/", +"https://lectures.alex.balgavy.eu/hci-notes/personas-scenarios-and-use-cases/", +"https://lectures.alex.balgavy.eu/hci-notes/prototypes/", +"https://lectures.alex.balgavy.eu/hci-notes/usability-principles/", +"https://lectures.alex.balgavy.eu/hci-notes/user-experience-elements/", +"https://lectures.alex.balgavy.eu/hci-notes/webpage-design/", +"https://lectures.alex.balgavy.eu/history-science-notes/", +"https://lectures.alex.balgavy.eu/history-science-notes/key-concepts-summary/", +"https://lectures.alex.balgavy.eu/history-science-notes/lecture-1-prehistory-of-computing/", +"https://lectures.alex.balgavy.eu/history-science-notes/lecture-2/", +"https://lectures.alex.balgavy.eu/history-science-notes/lecture-3/", +"https://lectures.alex.balgavy.eu/history-science-notes/lecture-4/", +"https://lectures.alex.balgavy.eu/history-science-notes/lecture-5/", +"https://lectures.alex.balgavy.eu/history-science-notes/lecture-6/", +"https://lectures.alex.balgavy.eu/history-science-notes/lecture-7/", +"https://lectures.alex.balgavy.eu/is-notes/", +"https://lectures.alex.balgavy.eu/is-notes/assessment-info/", +"https://lectures.alex.balgavy.eu/is-notes/ethics/", +"https://lectures.alex.balgavy.eu/is-notes/logical-agents/", +"https://lectures.alex.balgavy.eu/is-notes/machine-learning/", +"https://lectures.alex.balgavy.eu/is-notes/philosophy/", +"https://lectures.alex.balgavy.eu/is-notes/probability-uncertainty/", +"https://lectures.alex.balgavy.eu/is-notes/rational-agents/", +"https://lectures.alex.balgavy.eu/is-notes/state-space-repr-intro/", +"https://lectures.alex.balgavy.eu/is-notes/state-space-search/", +"https://lectures.alex.balgavy.eu/lin-algebra-notes/", +"https://lectures.alex.balgavy.eu/lin-algebra-notes/applications-to-computer-graphics/", +"https://lectures.alex.balgavy.eu/lin-algebra-notes/eigenvectors-eigenvalues/", +"https://lectures.alex.balgavy.eu/lin-algebra-notes/introduction/", +"https://lectures.alex.balgavy.eu/lin-algebra-notes/linear-transformations/", +"https://lectures.alex.balgavy.eu/lin-algebra-notes/matrix-operations/", +"https://lectures.alex.balgavy.eu/lin-algebra-notes/orthogonality-least-squares/", +"https://lectures.alex.balgavy.eu/lin-algebra-notes/solution-sets-of-linear-systems/", +"https://lectures.alex.balgavy.eu/lin-algebra-notes/symmetric-matrices/", +"https://lectures.alex.balgavy.eu/lin-algebra-notes/vector-spaces/", +"https://lectures.alex.balgavy.eu/logic-modelling-notes/", +"https://lectures.alex.balgavy.eu/logic-modelling-notes/decidability-and-undecidability/", +"https://lectures.alex.balgavy.eu/logic-modelling-notes/definability-and-undefinability-results/", +"https://lectures.alex.balgavy.eu/logic-modelling-notes/first-order-logic/", +"https://lectures.alex.balgavy.eu/logic-modelling-notes/incompleteness-theorem/", +"https://lectures.alex.balgavy.eu/logic-modelling-notes/meta-theorems-of-predicate-logic/", +"https://lectures.alex.balgavy.eu/logic-modelling-notes/modal-logic/", +"https://lectures.alex.balgavy.eu/logic-modelling-notes/propositional-logic/", +"https://lectures.alex.balgavy.eu/logic-modelling-notes/sets/", +"https://lectures.alex.balgavy.eu/logic-modelling-notes/the-one-page-cheat-sheet/", +"https://lectures.alex.balgavy.eu/logical-verification/", +"https://lectures.alex.balgavy.eu/logical-verification/backward-proofs/", +"https://lectures.alex.balgavy.eu/logical-verification/basic-mathematical-structures/", +"https://lectures.alex.balgavy.eu/logical-verification/basics/", +"https://lectures.alex.balgavy.eu/logical-verification/denotational-semantics/", +"https://lectures.alex.balgavy.eu/logical-verification/formalizing-the-p-adic-numbers/", +"https://lectures.alex.balgavy.eu/logical-verification/forward-proofs/", +"https://lectures.alex.balgavy.eu/logical-verification/functional-programming/", +"https://lectures.alex.balgavy.eu/logical-verification/hoare-logic/", +"https://lectures.alex.balgavy.eu/logical-verification/inductive-predicates/", +"https://lectures.alex.balgavy.eu/logical-verification/logical-foundations-of-mathematics/", +"https://lectures.alex.balgavy.eu/logical-verification/metaprogramming/", +"https://lectures.alex.balgavy.eu/logical-verification/monads/", +"https://lectures.alex.balgavy.eu/logical-verification/operational-semantics/", +"https://lectures.alex.balgavy.eu/logical-verification/rational-and-real-numbers/", +"https://lectures.alex.balgavy.eu/logicsets-notes/", +"https://lectures.alex.balgavy.eu/logicsets-notes/adequate-systems-of-connectives/", +"https://lectures.alex.balgavy.eu/logicsets-notes/binary-decision-trees/", +"https://lectures.alex.balgavy.eu/logicsets-notes/cardinality/", +"https://lectures.alex.balgavy.eu/logicsets-notes/equivalence-classes/", +"https://lectures.alex.balgavy.eu/logicsets-notes/equivalence-relations-classes/", +"https://lectures.alex.balgavy.eu/logicsets-notes/functional-completeness/", +"https://lectures.alex.balgavy.eu/logicsets-notes/functions/", +"https://lectures.alex.balgavy.eu/logicsets-notes/logic-circuits/", +"https://lectures.alex.balgavy.eu/logicsets-notes/partial-orders/", +"https://lectures.alex.balgavy.eu/logicsets-notes/predicate-logic/", +"https://lectures.alex.balgavy.eu/logicsets-notes/propositional-logic/", +"https://lectures.alex.balgavy.eu/logicsets-notes/relations/", +"https://lectures.alex.balgavy.eu/logicsets-notes/semantic-entailment/", +"https://lectures.alex.balgavy.eu/logicsets-notes/universal-existential-quantification/", +"https://lectures.alex.balgavy.eu/ml-notes/", +"https://lectures.alex.balgavy.eu/ml-notes/deep-learning/", +"https://lectures.alex.balgavy.eu/ml-notes/introduction/", +"https://lectures.alex.balgavy.eu/ml-notes/linear-models/", +"https://lectures.alex.balgavy.eu/ml-notes/matrix-models/", +"https://lectures.alex.balgavy.eu/ml-notes/methodology/", +"https://lectures.alex.balgavy.eu/ml-notes/models-for-sequential-data/", +"https://lectures.alex.balgavy.eu/ml-notes/probability/", +"https://lectures.alex.balgavy.eu/ml-notes/programming-reference/", +"https://lectures.alex.balgavy.eu/ml-notes/reinforcement-learning/", +"https://lectures.alex.balgavy.eu/ml-notes/tree-models-and-ensembles/", +"https://lectures.alex.balgavy.eu/ml4qs-notes/", +"https://lectures.alex.balgavy.eu/ml4qs-notes/clustering/", +"https://lectures.alex.balgavy.eu/ml4qs-notes/feature-engineering/", +"https://lectures.alex.balgavy.eu/ml4qs-notes/handling-sensory-noise/", +"https://lectures.alex.balgavy.eu/ml4qs-notes/introduction-basics-of-sensory-data/", +"https://lectures.alex.balgavy.eu/ml4qs-notes/supervised-learning/", +"https://lectures.alex.balgavy.eu/networksgraphs-notes/", +"https://lectures.alex.balgavy.eu/networksgraphs-notes/cheat-sheet-of-stuff-i-always-forget/", +"https://lectures.alex.balgavy.eu/networksgraphs-notes/colourings/", +"https://lectures.alex.balgavy.eu/networksgraphs-notes/communities/", +"https://lectures.alex.balgavy.eu/networksgraphs-notes/connectivity/", +"https://lectures.alex.balgavy.eu/networksgraphs-notes/digraphs-orientations/", +"https://lectures.alex.balgavy.eu/networksgraphs-notes/drawing-graphs/", +"https://lectures.alex.balgavy.eu/networksgraphs-notes/euler-edges-matter/", +"https://lectures.alex.balgavy.eu/networksgraphs-notes/fundamentals/", +"https://lectures.alex.balgavy.eu/networksgraphs-notes/graph-representations-morphisms/", +"https://lectures.alex.balgavy.eu/networksgraphs-notes/hamilton-vertices-matter/", +"https://lectures.alex.balgavy.eu/networksgraphs-notes/network-analysis/", +"https://lectures.alex.balgavy.eu/networksgraphs-notes/random-graphs/", +"https://lectures.alex.balgavy.eu/networksgraphs-notes/shortest-path-algorithms/", +"https://lectures.alex.balgavy.eu/networksgraphs-notes/the-web-pagerank/", +"https://lectures.alex.balgavy.eu/networksgraphs-notes/trees/", +"https://lectures.alex.balgavy.eu/networksgraphs-notes/what-to-learn/", +"https://lectures.alex.balgavy.eu/os-notes/", +"https://lectures.alex.balgavy.eu/os-notes/a2-allocator/", +"https://lectures.alex.balgavy.eu/os-notes/basics-of-memory-no-abstraction/", +"https://lectures.alex.balgavy.eu/os-notes/deadlocks/", +"https://lectures.alex.balgavy.eu/os-notes/design-issues/", +"https://lectures.alex.balgavy.eu/os-notes/devices/", +"https://lectures.alex.balgavy.eu/os-notes/file-system-layout/", +"https://lectures.alex.balgavy.eu/os-notes/files-highlevel/", +"https://lectures.alex.balgavy.eu/os-notes/files/", +"https://lectures.alex.balgavy.eu/os-notes/interrupt-handling-scheduling/", +"https://lectures.alex.balgavy.eu/os-notes/kernels/", +"https://lectures.alex.balgavy.eu/os-notes/principles-of-io-hardware/", +"https://lectures.alex.balgavy.eu/os-notes/principles-of-io-software/", +"https://lectures.alex.balgavy.eu/os-notes/process-management/", +"https://lectures.alex.balgavy.eu/os-notes/process-model/", +"https://lectures.alex.balgavy.eu/os-notes/race-conditions-mutual-exclusion/", +"https://lectures.alex.balgavy.eu/os-notes/reliability-performance/", +"https://lectures.alex.balgavy.eu/os-notes/scheduling/", +"https://lectures.alex.balgavy.eu/os-notes/signal-handling/", +"https://lectures.alex.balgavy.eu/os-notes/system-calls/", +"https://lectures.alex.balgavy.eu/os-notes/the-memory-address-space/", +"https://lectures.alex.balgavy.eu/os-notes/threads/", +"https://lectures.alex.balgavy.eu/os-notes/virtual-memory/", +"https://lectures.alex.balgavy.eu/os-notes/what-is-an-os/", +"https://lectures.alex.balgavy.eu/philosophy-notes/", +"https://lectures.alex.balgavy.eu/philosophy-notes/lecture-1-subjectivism-objectivism/", +"https://lectures.alex.balgavy.eu/philosophy-notes/lecture-2-egoism-contractualism/", +"https://lectures.alex.balgavy.eu/philosophy-notes/lecture-3-theories-of-well-being/", +"https://lectures.alex.balgavy.eu/philosophy-notes/lecture-4-utilitarianism/", +"https://lectures.alex.balgavy.eu/philosophy-notes/lecture-5-kantian-ethics/", +"https://lectures.alex.balgavy.eu/physcomp-notes/", +"https://lectures.alex.balgavy.eu/physcomp-notes/audio-signals/", +"https://lectures.alex.balgavy.eu/physcomp-notes/classification-2/", +"https://lectures.alex.balgavy.eu/physcomp-notes/classification/", +"https://lectures.alex.balgavy.eu/physcomp-notes/control-systems/", +"https://lectures.alex.balgavy.eu/physcomp-notes/image-processing/", +"https://lectures.alex.balgavy.eu/physcomp-notes/images/", +"https://lectures.alex.balgavy.eu/physcomp-notes/morphological-operations/", +"https://lectures.alex.balgavy.eu/physcomp-notes/neighborhood-processing/", +"https://lectures.alex.balgavy.eu/physcomp-notes/pervasive-computing-system/", +"https://lectures.alex.balgavy.eu/physcomp-notes/point-processing/", +"https://lectures.alex.balgavy.eu/physcomp-notes/sound-processing/", +"https://lectures.alex.balgavy.eu/physcomp-notes/systems-engineering/", +"https://lectures.alex.balgavy.eu/programming-multi-core-and-many-core-systems/", +"https://lectures.alex.balgavy.eu/programming-multi-core-and-many-core-systems/exam-review-notes/", +"https://lectures.alex.balgavy.eu/programming-multi-core-and-many-core-systems/lecture-1/", +"https://lectures.alex.balgavy.eu/programming-multi-core-and-many-core-systems/lecture-2/", +"https://lectures.alex.balgavy.eu/programming-multi-core-and-many-core-systems/lecture-3/", +"https://lectures.alex.balgavy.eu/programming-multi-core-and-many-core-systems/lecture-4/", +"https://lectures.alex.balgavy.eu/programming-multi-core-and-many-core-systems/lecture-5/", +"https://lectures.alex.balgavy.eu/programming-multi-core-and-many-core-systems/lectures-gpu/", +"https://lectures.alex.balgavy.eu/softsec-notes/", +"https://lectures.alex.balgavy.eu/softsec-notes/buffer-overflow/", +"https://lectures.alex.balgavy.eu/softsec-notes/intro/", +"https://lectures.alex.balgavy.eu/softsec-notes/local-privilege-escalation/", +"https://lectures.alex.balgavy.eu/softsec-notes/shellcode/", +"https://lectures.alex.balgavy.eu/softsec-notes/simple-attacks/", +"https://lectures.alex.balgavy.eu/software-architecture/", +"https://lectures.alex.balgavy.eu/software-architecture/architecture-design/", +"https://lectures.alex.balgavy.eu/software-architecture/architecture-quality/", +"https://lectures.alex.balgavy.eu/software-architecture/architecture-representation/", +"https://lectures.alex.balgavy.eu/software-architecture/case-study/", +"https://lectures.alex.balgavy.eu/software-architecture/introduction/", +"https://lectures.alex.balgavy.eu/software-architecture/requirements/", +"https://lectures.alex.balgavy.eu/stats-notes/", +"https://lectures.alex.balgavy.eu/stats-notes/continuous-probability-distribution/", +"https://lectures.alex.balgavy.eu/stats-notes/discrete-probability-distributions/", +"https://lectures.alex.balgavy.eu/stats-notes/hypothesis-testing/", +"https://lectures.alex.balgavy.eu/stats-notes/introduction-data/", +"https://lectures.alex.balgavy.eu/stats-notes/probability-intro/", +"https://lectures.alex.balgavy.eu/stats-notes/relationships-between-variables/", +"https://lectures.alex.balgavy.eu/stats-notes/sampling-distributions-estimators/", +"https://lectures.alex.balgavy.eu/stats-notes/summarising-data/", +"https://lectures.alex.balgavy.eu/stats-notes/testing-characteristics-of-samples/", +"https://lectures.alex.balgavy.eu/webtech-notes/", +"https://lectures.alex.balgavy.eu/webtech-notes/accessibility/", +"https://lectures.alex.balgavy.eu/webtech-notes/architecture-of-the-web/", +"https://lectures.alex.balgavy.eu/webtech-notes/client-side-javascript/", +"https://lectures.alex.balgavy.eu/webtech-notes/evaluation-of-websites/", +"https://lectures.alex.balgavy.eu/webtech-notes/html5-w3c/", +"https://lectures.alex.balgavy.eu/webtech-notes/http/", +"https://lectures.alex.balgavy.eu/webtech-notes/internet-history-overview/", +"https://lectures.alex.balgavy.eu/webtech-notes/internet-protocols/", +"https://lectures.alex.balgavy.eu/webtech-notes/responsive-web-design/", +"https://lectures.alex.balgavy.eu/webtech-notes/searching-search-engines/", +"https://lectures.alex.balgavy.eu/webtech-notes/server-side/" +] + +self.addEventListener("install", function(event) { + event.waitUntil(preLoad()); +}); + +var preLoad = function(){ + return caches.open("offline").then(function(cache) { + return cache.addAll(tocache); + }); +}; + +self.addEventListener("fetch", function(event) { + event.respondWith(checkResponse(event.request).catch(function() { + return returnFromCache(event.request); + })); + event.waitUntil(addToCache(event.request)); +}); + +var checkResponse = function(request){ + return new Promise(function(fulfill, reject) { + fetch(request).then(function(response){ + if(response.status !== 404) { + fulfill(response); + } else { + reject(); + } + }, reject); + }); +}; + +var addToCache = function(request){ + return caches.open("offline").then(function (cache) { + return fetch(request).then(function (response) { + return cache.put(request, response); + }); + }); +}; + +var returnFromCache = function(request){ + return caches.open("offline").then(function (cache) { + return cache.match(request).then(function (matching) { + if(!matching || matching.status == 404) { + return cache.match("offline.html"); + } else { + return matching; + } + }); + }); +}; diff --git a/templates/base.html b/templates/base.html @@ -22,6 +22,21 @@ <link rel="stylesheet" type="text/css" href="/dark.css" media="(prefers-color-scheme: dark)"> <link rel="stylesheet" type="text/css" href="/light.css" media="(prefers-color-scheme: light)"> {% block scripts %}{% endblock scripts %} + + <!-- PWA stuff --> + <link rel="manifest" href="/manifest.json"> + <script src="/sw.js"></script> + <script> + if ('serviceWorker' in navigator) { + navigator.serviceWorker.register('/sw.js') + .then(function(registration) { + console.log('Registration successful, scope is:', registration.scope); + }) + .catch(function(error) { + console.log('Service worker registration failed, error:', error); + }); + } + </script> </head> <body> {% if config.extra.debug %}