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:
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 %}