diff --git a/README.md b/README.md deleted file mode 100644 index 9c91375..0000000 --- a/README.md +++ /dev/null @@ -1,9 +0,0 @@ -# Eólas - -> Eólas is Irish for knowledge or information, especially knowledge gained by -> experience or practice - -This repository contains notes from my autodidactic study of software -engineering and computer science. - - diff --git a/_img/1.4-Input-Process-Output.png b/_img/1.4-Input-Process-Output.png deleted file mode 100644 index 9f804e1..0000000 Binary files a/_img/1.4-Input-Process-Output.png and /dev/null differ diff --git a/_img/3-bit-adder-diagram.png b/_img/3-bit-adder-diagram.png deleted file mode 100644 index 7d993e7..0000000 Binary files a/_img/3-bit-adder-diagram.png and /dev/null differ diff --git a/_img/74181aluschematic.png b/_img/74181aluschematic.png deleted file mode 100644 index 161699e..0000000 Binary files a/_img/74181aluschematic.png and /dev/null differ diff --git a/_img/DMUX.png b/_img/DMUX.png deleted file mode 100644 index 02f118d..0000000 Binary files a/_img/DMUX.png and /dev/null differ diff --git a/_img/FL-Databases-1.5_terminology.gif b/_img/FL-Databases-1.5_terminology.gif deleted file mode 100644 index 1040c3d..0000000 Binary files a/_img/FL-Databases-1.5_terminology.gif and /dev/null differ diff --git a/_img/LMC_5.gif b/_img/LMC_5.gif deleted file mode 100644 index 3399182..0000000 Binary files a/_img/LMC_5.gif and /dev/null differ diff --git a/_img/MUX.png b/_img/MUX.png deleted file mode 100644 index ca8b128..0000000 Binary files a/_img/MUX.png and /dev/null differ diff --git a/_img/Memory-Hierarchy.jpg b/_img/Memory-Hierarchy.jpg deleted file mode 100644 index 4c9bba8..0000000 Binary files a/_img/Memory-Hierarchy.jpg and /dev/null differ diff --git a/_img/ORelim1.png b/_img/ORelim1.png deleted file mode 100644 index 75731b0..0000000 Binary files a/_img/ORelim1.png and /dev/null differ diff --git a/_img/ORelim2.png b/_img/ORelim2.png deleted file mode 100644 index 3bb7113..0000000 Binary files a/_img/ORelim2.png and /dev/null differ diff --git a/_img/Pasted_image_20220319135558.png b/_img/Pasted_image_20220319135558.png deleted file mode 100644 index 6298a65..0000000 Binary files a/_img/Pasted_image_20220319135558.png and /dev/null differ diff --git a/_img/Pasted_image_20220319135805.png b/_img/Pasted_image_20220319135805.png deleted file mode 100644 index 37109dd..0000000 Binary files a/_img/Pasted_image_20220319135805.png and /dev/null differ diff --git a/_img/Pasted_image_20220319135823.png b/_img/Pasted_image_20220319135823.png deleted file mode 100644 index 2b5fd00..0000000 Binary files a/_img/Pasted_image_20220319135823.png and /dev/null differ diff --git a/_img/Pasted_image_20220411082627.png b/_img/Pasted_image_20220411082627.png deleted file mode 100644 index 82fd434..0000000 Binary files a/_img/Pasted_image_20220411082627.png and /dev/null differ diff --git a/_img/REST_request-load.png b/_img/REST_request-load.png deleted file mode 100644 index 74792c2..0000000 Binary files a/_img/REST_request-load.png and /dev/null differ diff --git a/_img/Screenshot_2020-08-09_at_21.34.48.png b/_img/Screenshot_2020-08-09_at_21.34.48.png deleted file mode 100644 index bbbb066..0000000 Binary files a/_img/Screenshot_2020-08-09_at_21.34.48.png and /dev/null differ diff --git a/_img/Screenshot_2021-05-11_at_18.51.02.png b/_img/Screenshot_2021-05-11_at_18.51.02.png deleted file mode 100644 index 15ee66a..0000000 Binary files a/_img/Screenshot_2021-05-11_at_18.51.02.png and /dev/null differ diff --git a/_img/Screenshot_2021-05-11_at_18.55.23.png b/_img/Screenshot_2021-05-11_at_18.55.23.png deleted file mode 100644 index 1da93a9..0000000 Binary files a/_img/Screenshot_2021-05-11_at_18.55.23.png and /dev/null differ diff --git a/_img/Turing_machines_01.gif b/_img/Turing_machines_01.gif deleted file mode 100644 index 974e3b3..0000000 Binary files a/_img/Turing_machines_01.gif and /dev/null differ diff --git a/_img/access-key-aws.png b/_img/access-key-aws.png deleted file mode 100644 index d6ce20f..0000000 Binary files a/_img/access-key-aws.png and /dev/null differ diff --git a/_img/analog-digital.svg b/_img/analog-digital.svg deleted file mode 100644 index 35f441a..0000000 --- a/_img/analog-digital.svg +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - 12 - 82 - 78 - 63 - 39 - 70 - 44 - 9 - -36 - -69 - -80 - -59 - -14 - 42 - Analog - Digital - - \ No newline at end of file diff --git a/_img/and-gate-new-2.png b/_img/and-gate-new-2.png deleted file mode 100644 index 58eab1d..0000000 Binary files a/_img/and-gate-new-2.png and /dev/null differ diff --git a/_img/and-transistor.png b/_img/and-transistor.png deleted file mode 100644 index a18d128..0000000 Binary files a/_img/and-transistor.png and /dev/null differ diff --git a/_img/api-gateway-trigger.png b/_img/api-gateway-trigger.png deleted file mode 100644 index 7ab0e1a..0000000 Binary files a/_img/api-gateway-trigger.png and /dev/null differ diff --git a/_img/apollo-explorer.png b/_img/apollo-explorer.png deleted file mode 100644 index 4725eeb..0000000 Binary files a/_img/apollo-explorer.png and /dev/null differ diff --git a/_img/async.svg b/_img/async.svg deleted file mode 100644 index fd85032..0000000 --- a/_img/async.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
asynchronous
asynchronous
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_img/atom-diagram.svg b/_img/atom-diagram.svg deleted file mode 100644 index bde130b..0000000 --- a/_img/atom-diagram.svg +++ /dev/null @@ -1 +0,0 @@ -Zeichenfläche 1 \ No newline at end of file diff --git a/_img/awk-outline.png b/_img/awk-outline.png deleted file mode 100644 index 9ff7848..0000000 Binary files a/_img/awk-outline.png and /dev/null differ diff --git a/_img/basic-circuit.png b/_img/basic-circuit.png deleted file mode 100644 index f72f364..0000000 Binary files a/_img/basic-circuit.png and /dev/null differ diff --git a/_img/bi-intro.png b/_img/bi-intro.png deleted file mode 100644 index 23a0572..0000000 Binary files a/_img/bi-intro.png and /dev/null differ diff --git a/_img/biconditional-elim.png b/_img/biconditional-elim.png deleted file mode 100644 index c34918b..0000000 Binary files a/_img/biconditional-elim.png and /dev/null differ diff --git a/_img/breadboard-DIP.jpg b/_img/breadboard-DIP.jpg deleted file mode 100644 index 4e54dec..0000000 Binary files a/_img/breadboard-DIP.jpg and /dev/null differ diff --git a/_img/breakdown.svg b/_img/breakdown.svg deleted file mode 100644 index 3258648..0000000 --- a/_img/breakdown.svg +++ /dev/null @@ -1,39 +0,0 @@ - - - Artboard - - - - - - - - - - - - - - O(1) - - - - - - O(n) - - - - - - O(1) - - - - - - O(1) - - - - \ No newline at end of file diff --git a/_img/cell-comparison.svg b/_img/cell-comparison.svg deleted file mode 100644 index 65a4a4f..0000000 --- a/_img/cell-comparison.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
Current
Current
Sum of all cells
Sum of all cells
Series-Parallel
Series-Parallel
Series
Series
Parallel
Parallel
Same for all cells
Same for all cells
Sum of all cells
Sum of all cells
Voltage
Voltage
Sum of all cells
Sum of all cells
Same for all cells
Same for all cells
Sum of all cells
Sum of all cells
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_img/charge-cylinder.svg b/_img/charge-cylinder.svg deleted file mode 100644 index 6325077..0000000 --- a/_img/charge-cylinder.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/_img/cherry-pick.svg b/_img/cherry-pick.svg deleted file mode 100644 index f351da4..0000000 --- a/_img/cherry-pick.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
main
main
feature
featu...
cherry-pick
cherr...
xyz
xyz
pqr
pqr
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_img/circ-batt-final.svg b/_img/circ-batt-final.svg deleted file mode 100644 index 1d2a2ae..0000000 --- a/_img/circ-batt-final.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
1.5 V
1.5 V
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_img/clock_pulses.png b/_img/clock_pulses.png deleted file mode 100644 index 7e69aaa..0000000 Binary files a/_img/clock_pulses.png and /dev/null differ diff --git a/_img/cloud-formation-stack.png b/_img/cloud-formation-stack.png deleted file mode 100644 index fc65b7a..0000000 Binary files a/_img/cloud-formation-stack.png and /dev/null differ diff --git a/_img/cloudwatch-logs.png b/_img/cloudwatch-logs.png deleted file mode 100644 index e73c386..0000000 Binary files a/_img/cloudwatch-logs.png and /dev/null differ diff --git a/_img/combined-merge-hist.svg b/_img/combined-merge-hist.svg deleted file mode 100644 index 30e5259..0000000 --- a/_img/combined-merge-hist.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/_img/complex-tree.svg b/_img/complex-tree.svg deleted file mode 100644 index 9cbba30..0000000 --- a/_img/complex-tree.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
C
C
7~~D
7~~D
5
5
~C
~C
SM
SM
1
1
2 ~vD
2 ~vD
4
4
~(C v A)
~(C v A)
SM
SM
2
2
A (B & ~C)
A ⊃ (B & ~C)
C ≡ ~A
C ≡ ~A
SM
SM
3
3
~C
~C
~A
~A
~~A
~~A
~A
~A
4
4
6
6
7
7
A
A
5
5
2 ~vD
2 ~vD
3≡D
3≡D
3≡D
3≡D
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/_img/cond-elim.png b/_img/cond-elim.png deleted file mode 100644 index 993a336..0000000 Binary files a/_img/cond-elim.png and /dev/null differ diff --git a/_img/cond-intro.png b/_img/cond-intro.png deleted file mode 100644 index 5287392..0000000 Binary files a/_img/cond-intro.png and /dev/null differ diff --git a/_img/conditional-decomposition-rule.svg b/_img/conditional-decomposition-rule.svg deleted file mode 100644 index a400a50..0000000 --- a/_img/conditional-decomposition-rule.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
~P
~P
Q
Q
 Q
P ⊃ Q
1
1
2
2
SM
SM
1⊃D
1⊃D
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/_img/conjunc-elim.png b/_img/conjunc-elim.png deleted file mode 100644 index fd66290..0000000 Binary files a/_img/conjunc-elim.png and /dev/null differ diff --git a/_img/conjunc-intro.png b/_img/conjunc-intro.png deleted file mode 100644 index 3a8d642..0000000 Binary files a/_img/conjunc-intro.png and /dev/null differ diff --git a/_img/conjunction-decomposition-rule.svg b/_img/conjunction-decomposition-rule.svg deleted file mode 100644 index 5abcbd2..0000000 --- a/_img/conjunction-decomposition-rule.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
P & Q
P & Q
1
1
2
2
3
3
Q
Q
SM
SM
1&D
1&D
1&D
1&D
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/_img/container-lifecycle.png b/_img/container-lifecycle.png deleted file mode 100644 index c3f98e0..0000000 Binary files a/_img/container-lifecycle.png and /dev/null differ diff --git a/_img/container-versus-vm.png b/_img/container-versus-vm.png deleted file mode 100644 index b30fe6b..0000000 Binary files a/_img/container-versus-vm.png and /dev/null differ diff --git a/_img/containers-in-userspace.png b/_img/containers-in-userspace.png deleted file mode 100644 index 04705fc..0000000 Binary files a/_img/containers-in-userspace.png and /dev/null differ diff --git a/_img/derivation_from_contradiction.png b/_img/derivation_from_contradiction.png deleted file mode 100644 index 2c81072..0000000 Binary files a/_img/derivation_from_contradiction.png and /dev/null differ diff --git a/_img/diode-led.png b/_img/diode-led.png deleted file mode 100644 index 00c3334..0000000 Binary files a/_img/diode-led.png and /dev/null differ diff --git a/_img/diode.png b/_img/diode.png deleted file mode 100644 index fddfca4..0000000 Binary files a/_img/diode.png and /dev/null differ diff --git a/_img/dipole-again.svg b/_img/dipole-again.svg deleted file mode 100644 index 13cac44..0000000 --- a/_img/dipole-again.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
E
E
North
North
E
E
South
South
Spin
Spin
Spin
Spin
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_img/disjunc-elim.png b/_img/disjunc-elim.png deleted file mode 100644 index 0127c59..0000000 Binary files a/_img/disjunc-elim.png and /dev/null differ diff --git a/_img/disjunc-intro.png b/_img/disjunc-intro.png deleted file mode 100644 index 6047493..0000000 Binary files a/_img/disjunc-intro.png and /dev/null differ diff --git a/_img/disjunction-decomposition-rule.svg b/_img/disjunction-decomposition-rule.svg deleted file mode 100644 index 144b2e8..0000000 --- a/_img/disjunction-decomposition-rule.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
P
P
Q
Q
P v Q
P v Q
1
1
2
2
SM
SM
1vD
1vD
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/_img/dock-architecture.png b/_img/dock-architecture.png deleted file mode 100644 index 84e6b6c..0000000 Binary files a/_img/dock-architecture.png and /dev/null differ diff --git a/_img/draw.io-Page-8.drawio.png b/_img/draw.io-Page-8.drawio.png deleted file mode 100644 index 8c111e9..0000000 Binary files a/_img/draw.io-Page-8.drawio.png and /dev/null differ diff --git a/_img/draw.io-Page-9.drawio.png b/_img/draw.io-Page-9.drawio.png deleted file mode 100644 index 9614777..0000000 Binary files a/_img/draw.io-Page-9.drawio.png and /dev/null differ diff --git a/_img/drawio-Page-7.drawio.png b/_img/drawio-Page-7.drawio.png deleted file mode 100644 index e86a851..0000000 Binary files a/_img/drawio-Page-7.drawio.png and /dev/null differ diff --git a/_img/dsfdsfsdfwe.png b/_img/dsfdsfsdfwe.png deleted file mode 100644 index 207ba84..0000000 Binary files a/_img/dsfdsfsdfwe.png and /dev/null differ diff --git a/_img/em-spectrum.jpg b/_img/em-spectrum.jpg deleted file mode 100644 index 46a2191..0000000 Binary files a/_img/em-spectrum.jpg and /dev/null differ diff --git a/_img/em-wave.gif b/_img/em-wave.gif deleted file mode 100644 index 8faba2c..0000000 Binary files a/_img/em-wave.gif and /dev/null differ diff --git a/_img/equiv-fractions.png b/_img/equiv-fractions.png deleted file mode 100644 index ddd0dbd..0000000 Binary files a/_img/equiv-fractions.png and /dev/null differ diff --git a/_img/full-adder-new.png b/_img/full-adder-new.png deleted file mode 100644 index 8eb9df0..0000000 Binary files a/_img/full-adder-new.png and /dev/null differ diff --git a/_img/gateway-services.png b/_img/gateway-services.png deleted file mode 100644 index cd11117..0000000 Binary files a/_img/gateway-services.png and /dev/null differ diff --git a/_img/gateway-trigger.png b/_img/gateway-trigger.png deleted file mode 100644 index d43fe05..0000000 Binary files a/_img/gateway-trigger.png and /dev/null differ diff --git a/_img/git-bisect.svg b/_img/git-bisect.svg deleted file mode 100644 index 200a9c4..0000000 --- a/_img/git-bisect.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
good
good
bad
bad
bisect
bisect
good
good
bisect
bisect
bad
bad
'bisect' above becomes 'good' below
'bisect' above become...
first stage
first stage
second
 stage
second...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_img/git-interactive-mode-2.png b/_img/git-interactive-mode-2.png deleted file mode 100644 index 7e69265..0000000 Binary files a/_img/git-interactive-mode-2.png and /dev/null differ diff --git a/_img/git-interactive-rebase.png b/_img/git-interactive-rebase.png deleted file mode 100644 index 99ce73c..0000000 Binary files a/_img/git-interactive-rebase.png and /dev/null differ diff --git a/_img/git-manual-hunk.png b/_img/git-manual-hunk.png deleted file mode 100644 index c3a8dbd..0000000 Binary files a/_img/git-manual-hunk.png and /dev/null differ diff --git a/_img/git-patch-mode.png b/_img/git-patch-mode.png deleted file mode 100644 index 2b448ee..0000000 Binary files a/_img/git-patch-mode.png and /dev/null differ diff --git a/_img/graphQL_request_load.png b/_img/graphQL_request_load.png deleted file mode 100644 index df97e79..0000000 Binary files a/_img/graphQL_request_load.png and /dev/null differ diff --git a/_img/graphql-architecture.png b/_img/graphql-architecture.png deleted file mode 100644 index b56b208..0000000 Binary files a/_img/graphql-architecture.png and /dev/null differ diff --git a/_img/graphql-journey-two.svg b/_img/graphql-journey-two.svg deleted file mode 100644 index 949cd30..0000000 --- a/_img/graphql-journey-two.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
CLIENT
CLIENT
SERVER
SERVER
convert query to string 
and send to
server as POST or
GET request
convert query to string...
Parse string and 
convert to an Abstract Syntax Tree
Parse string and...
Using the AST, validate the query against the types and fields of the GraphQL schema
Using the AST, validate...
Yes
Yes
No
No
Error?
Error?
field
field
resolver
resolver
Convert to JSON object
matching shape of client query
Convert to JSON object...
Assign object to `data` key in HTTP response body
Assign object to `data` key in HTTP...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_img/graphql_multiple_resources.png b/_img/graphql_multiple_resources.png deleted file mode 100644 index 3b526da..0000000 Binary files a/_img/graphql_multiple_resources.png and /dev/null differ diff --git a/_img/greyscale-encoding.svg b/_img/greyscale-encoding.svg deleted file mode 100644 index 4a72d8e..0000000 --- a/_img/greyscale-encoding.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
Binary
Binary
Hex
Hex
Decimal
Decimal
0b00000000
0b00000000
0x00
0x00
0
0
0b01010101
0b01010101
0x55
0x55
85
85
0b10101010
0b10101010
0xAA
0xAA
170
170
0b11111111
0b11111111
0xFF
0xFF
255
255
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_img/ground-symbol.png b/_img/ground-symbol.png deleted file mode 100644 index 7c7be5d..0000000 Binary files a/_img/ground-symbol.png and /dev/null differ diff --git a/_img/grub.jpg b/_img/grub.jpg deleted file mode 100644 index 58cb270..0000000 Binary files a/_img/grub.jpg and /dev/null differ diff --git a/_img/half-adder-gates-three.png b/_img/half-adder-gates-three.png deleted file mode 100644 index 0469bc3..0000000 Binary files a/_img/half-adder-gates-three.png and /dev/null differ diff --git a/_img/half-adder-new.png b/_img/half-adder-new.png deleted file mode 100644 index 45dc092..0000000 Binary files a/_img/half-adder-new.png and /dev/null differ diff --git a/_img/harddisk.png b/_img/harddisk.png deleted file mode 100644 index 5f5ee0d..0000000 Binary files a/_img/harddisk.png and /dev/null differ diff --git a/_img/hardware-abstraction-hierarchy.png b/_img/hardware-abstraction-hierarchy.png deleted file mode 100644 index 7251df8..0000000 Binary files a/_img/hardware-abstraction-hierarchy.png and /dev/null differ diff --git a/_img/hardware-sim-basic.png b/_img/hardware-sim-basic.png deleted file mode 100644 index 52a0049..0000000 Binary files a/_img/hardware-sim-basic.png and /dev/null differ diff --git a/_img/hd-sim-test.png b/_img/hd-sim-test.png deleted file mode 100644 index f6775dd..0000000 Binary files a/_img/hd-sim-test.png and /dev/null differ diff --git a/_img/hertz_wave_freq.gif b/_img/hertz_wave_freq.gif deleted file mode 100644 index 0fd7c0f..0000000 Binary files a/_img/hertz_wave_freq.gif and /dev/null differ diff --git a/_img/hexadecimal-to-bytes.svg b/_img/hexadecimal-to-bytes.svg deleted file mode 100644 index 99cfb98..0000000 --- a/_img/hexadecimal-to-bytes.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
8 A 5 2 F F 0 0
8 A 5 2 F F 0...
1000
1000
1010
1010
0101
0101
0010
0010
1111
1111
1111
1111
0000
0000
0000
0000
1 byte (8-bits)
1 byte (8-bits)
2 bytes (16-bits)
2 bytes (16-bits)
4 bytes (32-bits)
4 bytes (32-bits)
8
8
7
7
6
6
5
5
4
4
3
3
2
2
1
1
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_img/htop.png b/_img/htop.png deleted file mode 100644 index a97cd4b..0000000 Binary files a/_img/htop.png and /dev/null differ diff --git a/_img/integrated-circuit.jpeg b/_img/integrated-circuit.jpeg deleted file mode 100644 index 71b6598..0000000 Binary files a/_img/integrated-circuit.jpeg and /dev/null differ diff --git a/_img/javascript-recursion.png b/_img/javascript-recursion.png deleted file mode 100644 index b232421..0000000 Binary files a/_img/javascript-recursion.png and /dev/null differ diff --git a/_img/jk-flip-flops.png b/_img/jk-flip-flops.png deleted file mode 100644 index f83dcdc..0000000 Binary files a/_img/jk-flip-flops.png and /dev/null differ diff --git a/_img/journald.png b/_img/journald.png deleted file mode 100644 index 2781425..0000000 Binary files a/_img/journald.png and /dev/null differ diff --git a/_img/kernel-cpu-interaction.svg b/_img/kernel-cpu-interaction.svg deleted file mode 100644 index 0706e8c..0000000 --- a/_img/kernel-cpu-interaction.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
Locate kernel (OS)
Locate kernel (OS)

Disk
Disk
Load kernel 
Load kernel 
Boot
Boot
Memory
Memory
Kernel
Kernel
Relay instructions
Relay instructions
CPU
CPU
USER SPACE
USER SPACE
Toggle
control
Toggle...
Fetch,
decode,
execute
Fetch,...
Shutdown
Shutdown
Shell
Shell
GUI
GUI
Schematic of role and lifecycle of the kernel
relative to the processor
and user space 
Schematic of role and lifecycle of the kernel...
 same entity/ location
same entity/ loc...
interaction between different entities
interaction between different enti...
CPU and kernel presented as logically distinct althought kernel is a running CPU process
CPU and kernel presente...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_img/lambda-cloudwatch.png b/_img/lambda-cloudwatch.png deleted file mode 100644 index 4bf29ff..0000000 Binary files a/_img/lambda-cloudwatch.png and /dev/null differ diff --git a/_img/lambda-func-three.png b/_img/lambda-func-three.png deleted file mode 100644 index a6fb7ea..0000000 Binary files a/_img/lambda-func-three.png and /dev/null differ diff --git a/_img/lambda-func-two.png b/_img/lambda-func-two.png deleted file mode 100644 index d57af7f..0000000 Binary files a/_img/lambda-func-two.png and /dev/null differ diff --git a/_img/lambda-overview.png b/_img/lambda-overview.png deleted file mode 100644 index 8a522ca..0000000 Binary files a/_img/lambda-overview.png and /dev/null differ diff --git a/_img/lambda_func_one.png b/_img/lambda_func_one.png deleted file mode 100644 index 11353a7..0000000 Binary files a/_img/lambda_func_one.png and /dev/null differ diff --git a/_img/lin.svg b/_img/lin.svg deleted file mode 100644 index f207dd0..0000000 --- a/_img/lin.svg +++ /dev/null @@ -1 +0,0 @@ -01234567RUNTIMEn \ No newline at end of file diff --git a/_img/local-sam-docker.png b/_img/local-sam-docker.png deleted file mode 100644 index 9f964fa..0000000 Binary files a/_img/local-sam-docker.png and /dev/null differ diff --git a/_img/logical-equivalence-tree.svg b/_img/logical-equivalence-tree.svg deleted file mode 100644 index bb78612..0000000 --- a/_img/logical-equivalence-tree.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
P ⊃ Q
P ⊃ Q
5
5
~P v Q
~P v Q
SM
SM
1
1
1 ~D
1 ~≡D
4
4
2
2
(P Q)  (~P v Q)
(P ⊃ Q)  ≡ (~P v Q)
3
3
P
P
4
4
7
7
3~⊃D
3~⊃D
~(P ⊃ Q)
~(P ⊃ Q)
~(~P v ~Q)
~(~P v ~Q)
6
6
1 ~D
1 ~≡D
~Q
~Q
3~⊃D
3~⊃D
P
P
~Q
~Q
5
5
~~P
~~P
~Q
~Q
P
P
~P
~P
Q
Q
9
9
8
8
8
8
9
9
10
10
2~⊃D
2~⊃D
3vD
3vD
2~vD
2~vD
2~vD
2~vD
7~~vD
7~~vD
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/_img/logical-falsity-tree.svg b/_img/logical-falsity-tree.svg deleted file mode 100644 index 4e0c22c..0000000 --- a/_img/logical-falsity-tree.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
~P
~P
~Q
~Q
SM
SM
1
1
2&D
2&D
4
4
P & Q
P & Q
1&D
1&D
2
2
(P & Q) & ~(P & Q)
(P & Q) & ~(P & Q)
~(P & Q)
~(P & Q)
1&D
1&D
3
3
P
P
4
4
3&~D
3&~D
2&D
2&D
5
5
Q
Q
5
5
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/_img/lsof.png b/_img/lsof.png deleted file mode 100644 index 8a8b5d5..0000000 Binary files a/_img/lsof.png and /dev/null differ diff --git a/_img/magnetic_field.png b/_img/magnetic_field.png deleted file mode 100644 index e82e190..0000000 Binary files a/_img/magnetic_field.png and /dev/null differ diff --git a/_img/memory-flow.svg b/_img/memory-flow.svg deleted file mode 100644 index ab78d87..0000000 --- a/_img/memory-flow.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
CPU
CPU
L1 
CACHE
L1...
L2 CACHE
L2 CACHE
ADDRESS BUS
ADDRESS BUS
DATA BUS
DATA BUS
DRAM
DRAM
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_img/mongo-collection.png b/_img/mongo-collection.png deleted file mode 100644 index 227ae90..0000000 Binary files a/_img/mongo-collection.png and /dev/null differ diff --git a/_img/mongo-compass.png b/_img/mongo-compass.png deleted file mode 100644 index 8ecbab2..0000000 Binary files a/_img/mongo-compass.png and /dev/null differ diff --git a/_img/mongo-db-structure.svg b/_img/mongo-db-structure.svg deleted file mode 100644 index 6b1e2fb..0000000 --- a/_img/mongo-db-structure.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
Collection
Collection
Database
Database
Collection
Collection
Document
Document
Document
Document
Document
Document
Document
Document

Mongo database structure

Mongo database structure
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_img/mongo-doc-added.png b/_img/mongo-doc-added.png deleted file mode 100644 index a45847f..0000000 Binary files a/_img/mongo-doc-added.png and /dev/null differ diff --git a/_img/mongoose-hierarchy.svg b/_img/mongoose-hierarchy.svg deleted file mode 100644 index 15091f1..0000000 --- a/_img/mongoose-hierarchy.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
Schema
Schema
Model 
Model 
Object instance
Object instance
Schema
const personSchema = new
   mongoose.Schema({
name: String,
age: Number
   })
const personSchema = new...
Model
const Person = mongoose.model
("Person", personSchema)
const Person = mongoose.model...
Object


const thomas = new Person({
   name: 'Thomas Bishop',
   age: 34
})
const thomas = new Person({...

Mongoose data hierarchy

Mongoose data hierarchy
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_img/motherboard-pi.jpg b/_img/motherboard-pi.jpg deleted file mode 100644 index 07c8c91..0000000 Binary files a/_img/motherboard-pi.jpg and /dev/null differ diff --git a/_img/mount-directory.png b/_img/mount-directory.png deleted file mode 100644 index c522d2d..0000000 Binary files a/_img/mount-directory.png and /dev/null differ diff --git a/_img/multi_on_off.gif b/_img/multi_on_off.gif deleted file mode 100644 index f7c90ea..0000000 Binary files a/_img/multi_on_off.gif and /dev/null differ diff --git a/_img/multiple_circuits.gif b/_img/multiple_circuits.gif deleted file mode 100644 index c298651..0000000 Binary files a/_img/multiple_circuits.gif and /dev/null differ diff --git a/_img/nand-gate-new.png b/_img/nand-gate-new.png deleted file mode 100644 index ca27c16..0000000 Binary files a/_img/nand-gate-new.png and /dev/null differ diff --git a/_img/nand-mem-demonstrated.gif b/_img/nand-mem-demonstrated.gif deleted file mode 100644 index c8af9a7..0000000 Binary files a/_img/nand-mem-demonstrated.gif and /dev/null differ diff --git a/_img/nand-mem-first.gif b/_img/nand-mem-first.gif deleted file mode 100644 index 927aa81..0000000 Binary files a/_img/nand-mem-first.gif and /dev/null differ diff --git a/_img/nand-mem-second.gif b/_img/nand-mem-second.gif deleted file mode 100644 index 035f4e6..0000000 Binary files a/_img/nand-mem-second.gif and /dev/null differ diff --git a/_img/nand_latch_logic_circuit.png b/_img/nand_latch_logic_circuit.png deleted file mode 100644 index 631f722..0000000 Binary files a/_img/nand_latch_logic_circuit.png and /dev/null differ diff --git a/_img/negate-elim.png b/_img/negate-elim.png deleted file mode 100644 index 043992c..0000000 Binary files a/_img/negate-elim.png and /dev/null differ diff --git a/_img/negate-intro.png b/_img/negate-intro.png deleted file mode 100644 index 0c2e920..0000000 Binary files a/_img/negate-intro.png and /dev/null differ diff --git a/_img/negated-biconditional-decomposition-rule.drawio.svg b/_img/negated-biconditional-decomposition-rule.drawio.svg deleted file mode 100644 index 38228e9..0000000 --- a/_img/negated-biconditional-decomposition-rule.drawio.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
P
P
Q
Q
~(P ≡ Q)
~(P ≡ Q)
1
1
2
2
SM
SM
~1≡D
~1≡D
~P
~P
~Q
~Q
3
3
~1≡D
~1≡D
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/_img/negated-conditional-decomposition-rule.svg b/_img/negated-conditional-decomposition-rule.svg deleted file mode 100644 index bc8e052..0000000 --- a/_img/negated-conditional-decomposition-rule.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
~(P  Q)
~(P ⊃ Q)
1
1
2
2
3
3
~Q
~Q
SM
SM
1~D
1~⊃D
1~D
1~⊃D
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/_img/negated-conjunction-decomposition-rule.svg b/_img/negated-conjunction-decomposition-rule.svg deleted file mode 100644 index 0a7a24c..0000000 --- a/_img/negated-conjunction-decomposition-rule.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
~P
~P
~Q
~Q
~(P & Q)
~(P & Q)
1
1
2
2
SM
SM
~&D
~&D
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/_img/negated-disjunction-decomposition-rule.svg b/_img/negated-disjunction-decomposition-rule.svg deleted file mode 100644 index 21b10e1..0000000 --- a/_img/negated-disjunction-decomposition-rule.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
~(P v Q)
~(P v Q)
1
1
2
2
3
3
~P 
~P 
~Q
~Q
SM
SM
1&~vD
1&~vD
1~vD
1~vD
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/_img/node-event-loop.svg b/_img/node-event-loop.svg deleted file mode 100644 index a87e2d3..0000000 --- a/_img/node-event-loop.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
index.js
index.js
call stack
call stack
Timers
Timers
I/O callbacks
I/O callbacks
Close events
Close events
I/O polling
I/O polling
setImmediate
callbacks
setImmediate...
Idle, preparation
Idle, preparation
PROCESS
PROCESS
THREAD
THREAD
TICK
TICK
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_img/nor-gate-new.png b/_img/nor-gate-new.png deleted file mode 100644 index d97578f..0000000 Binary files a/_img/nor-gate-new.png and /dev/null differ diff --git a/_img/normal-merge-again.svg b/_img/normal-merge-again.svg deleted file mode 100644 index 273eeb4..0000000 --- a/_img/normal-merge-again.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
A
A
B
B
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_img/one-eighth-a.png b/_img/one-eighth-a.png deleted file mode 100644 index a39820d..0000000 Binary files a/_img/one-eighth-a.png and /dev/null differ diff --git a/_img/opensearch-architecture.drawio.svg b/_img/opensearch-architecture.drawio.svg deleted file mode 100644 index 7696016..0000000 --- a/_img/opensearch-architecture.drawio.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
cluster
cluster
node
node
node
node
node
node
cluster
cluster
node
node
node
node
node
node
domain
domain
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_img/or-gate-new.png b/_img/or-gate-new.png deleted file mode 100644 index 2d97429..0000000 Binary files a/_img/or-gate-new.png and /dev/null differ diff --git a/_img/or-transistor.svg b/_img/or-transistor.svg deleted file mode 100644 index b691723..0000000 --- a/_img/or-transistor.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
V-A
V-A
V-B
V-B
V-out
V-out
V-cc
V-cc
Trans
Trans
Trans
Trans
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_img/parallel-battery-diagram.svg b/_img/parallel-battery-diagram.svg deleted file mode 100644 index e8df3d3..0000000 --- a/_img/parallel-battery-diagram.svg +++ /dev/null @@ -1,689 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - 1.5 V - + - - - - - - - - 1.5 V - 1.5 V - - - - - - - - - - - - - - 1.5 V - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - - + - + - - - - diff --git a/_img/parallel-transmission.jpg b/_img/parallel-transmission.jpg deleted file mode 100644 index e7f69b1..0000000 Binary files a/_img/parallel-transmission.jpg and /dev/null differ diff --git a/_img/postman-aws-output.png b/_img/postman-aws-output.png deleted file mode 100644 index 7ce61fb..0000000 Binary files a/_img/postman-aws-output.png and /dev/null differ diff --git a/_img/postman-lambda.png b/_img/postman-lambda.png deleted file mode 100644 index 5afc07e..0000000 Binary files a/_img/postman-lambda.png and /dev/null differ diff --git a/_img/proof.png b/_img/proof.png deleted file mode 100644 index bf3831f..0000000 Binary files a/_img/proof.png and /dev/null differ diff --git a/_img/proofs-drawio-Page-5.drawio.png b/_img/proofs-drawio-Page-5.drawio.png deleted file mode 100644 index 8f59d18..0000000 Binary files a/_img/proofs-drawio-Page-5.drawio.png and /dev/null differ diff --git a/_img/proofs-drawio-Page-5.drawio_2.png b/_img/proofs-drawio-Page-5.drawio_2.png deleted file mode 100644 index b83b8a9..0000000 Binary files a/_img/proofs-drawio-Page-5.drawio_2.png and /dev/null differ diff --git a/_img/proofs-drawio-Page-6.drawio.png b/_img/proofs-drawio-Page-6.drawio.png deleted file mode 100644 index ba492af..0000000 Binary files a/_img/proofs-drawio-Page-6.drawio.png and /dev/null differ diff --git a/_img/python-exception-hierarchy.png b/_img/python-exception-hierarchy.png deleted file mode 100644 index 085758a..0000000 Binary files a/_img/python-exception-hierarchy.png and /dev/null differ diff --git a/_img/queue.svg b/_img/queue.svg deleted file mode 100644 index d6720d7..0000000 --- a/_img/queue.svg +++ /dev/null @@ -1,20 +0,0 @@ - - - Artboard - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/_img/react-lifecycle.png b/_img/react-lifecycle.png deleted file mode 100644 index eee57bd..0000000 Binary files a/_img/react-lifecycle.png and /dev/null differ diff --git a/_img/rebase-tip-chage.svg b/_img/rebase-tip-chage.svg deleted file mode 100644 index 94769c3..0000000 --- a/_img/rebase-tip-chage.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/_img/red-encoding.svg b/_img/red-encoding.svg deleted file mode 100644 index f9b5752..0000000 --- a/_img/red-encoding.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
11111111
11111111
00000000
00000000
00000000
00000000
Red
Red
Blue
Blue
Green
Green
=
=
0xFF0000
0xFF0000
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_img/reiteration.png b/_img/reiteration.png deleted file mode 100644 index 6aee327..0000000 Binary files a/_img/reiteration.png and /dev/null differ diff --git a/_img/s3-package-again.svg b/_img/s3-package-again.svg deleted file mode 100644 index 61aa822..0000000 --- a/_img/s3-package-again.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
Create sam.yml
Create sam.yml
Upload zipped artefacts to S3
Upload zipped artefa...
Create CloudFormation template with address of artefacts
Create CloudFormation template...
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_img/sam-build.png b/_img/sam-build.png deleted file mode 100644 index 18fea88..0000000 Binary files a/_img/sam-build.png and /dev/null differ diff --git a/_img/sam-directory.png b/_img/sam-directory.png deleted file mode 100644 index 182ee2b..0000000 Binary files a/_img/sam-directory.png and /dev/null differ diff --git a/_img/sam-template-yaml.png b/_img/sam-template-yaml.png deleted file mode 100644 index c394ea5..0000000 Binary files a/_img/sam-template-yaml.png and /dev/null differ diff --git a/_img/serial-transmission.jpg b/_img/serial-transmission.jpg deleted file mode 100644 index efd2c19..0000000 Binary files a/_img/serial-transmission.jpg and /dev/null differ diff --git a/_img/series-battcircuit.svg b/_img/series-battcircuit.svg deleted file mode 100644 index de63e18..0000000 --- a/_img/series-battcircuit.svg +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - +1.5V - - - - - +1.5V - - - - - +1.5V - - - - - - - +4.5V - - \ No newline at end of file diff --git a/_img/series-battery-diagram.svg b/_img/series-battery-diagram.svg deleted file mode 100644 index 838766a..0000000 --- a/_img/series-battery-diagram.svg +++ /dev/null @@ -1,245 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - 1.5 V - 4.5 V - - - - - 1.5 V - - - - - 1.5 V - - - - - - - diff --git a/_img/server-listening.png b/_img/server-listening.png deleted file mode 100644 index eb38b2d..0000000 Binary files a/_img/server-listening.png and /dev/null differ diff --git a/_img/signed-conversion.png b/_img/signed-conversion.png deleted file mode 100644 index 8208d10..0000000 Binary files a/_img/signed-conversion.png and /dev/null differ diff --git a/_img/signed-to-unsigned.png b/_img/signed-to-unsigned.png deleted file mode 100644 index ac7ba0a..0000000 Binary files a/_img/signed-to-unsigned.png and /dev/null differ diff --git a/_img/single-git-history-rebase.svg b/_img/single-git-history-rebase.svg deleted file mode 100644 index eadbe25..0000000 --- a/_img/single-git-history-rebase.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/_img/sql-full-outer-join.png b/_img/sql-full-outer-join.png deleted file mode 100644 index 9f44f41..0000000 Binary files a/_img/sql-full-outer-join.png and /dev/null differ diff --git a/_img/sql-inner-join.png b/_img/sql-inner-join.png deleted file mode 100644 index b71eb33..0000000 Binary files a/_img/sql-inner-join.png and /dev/null differ diff --git a/_img/sql-left-outer-join.png b/_img/sql-left-outer-join.png deleted file mode 100644 index e27388b..0000000 Binary files a/_img/sql-left-outer-join.png and /dev/null differ diff --git a/_img/sql-right-outer-join.png b/_img/sql-right-outer-join.png deleted file mode 100644 index 2115475..0000000 Binary files a/_img/sql-right-outer-join.png and /dev/null differ diff --git a/_img/square.svg b/_img/square.svg deleted file mode 100644 index b305e27..0000000 --- a/_img/square.svg +++ /dev/null @@ -1 +0,0 @@ -0100200300400500600700051015202530RUNTIMEn \ No newline at end of file diff --git a/_img/sr_latch_diagram.png b/_img/sr_latch_diagram.png deleted file mode 100644 index 41c51f6..0000000 Binary files a/_img/sr_latch_diagram.png and /dev/null differ diff --git a/_img/sr_latch_logic_circuit.png b/_img/sr_latch_logic_circuit.png deleted file mode 100644 index f3a2702..0000000 Binary files a/_img/sr_latch_logic_circuit.png and /dev/null differ diff --git a/_img/stack1.svg b/_img/stack1.svg deleted file mode 100644 index 897bf39..0000000 --- a/_img/stack1.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - Artboard - - - - - - - - - - - - - - \ No newline at end of file diff --git a/_img/stack2.svg b/_img/stack2.svg deleted file mode 100644 index f2d1752..0000000 --- a/_img/stack2.svg +++ /dev/null @@ -1,17 +0,0 @@ - - - Artboard - - - - - - - - - - - - - - \ No newline at end of file diff --git a/_img/standard-userspace.png b/_img/standard-userspace.png deleted file mode 100644 index 3d8ff3a..0000000 Binary files a/_img/standard-userspace.png and /dev/null differ diff --git a/_img/state-machine-definition.png b/_img/state-machine-definition.png deleted file mode 100644 index 19c39bd..0000000 Binary files a/_img/state-machine-definition.png and /dev/null differ diff --git a/_img/state-machine-execution.png b/_img/state-machine-execution.png deleted file mode 100644 index be95d42..0000000 Binary files a/_img/state-machine-execution.png and /dev/null differ diff --git a/_img/step1.png b/_img/step1.png deleted file mode 100644 index e9dee56..0000000 Binary files a/_img/step1.png and /dev/null differ diff --git a/_img/step2.png b/_img/step2.png deleted file mode 100644 index 674fc62..0000000 Binary files a/_img/step2.png and /dev/null differ diff --git a/_img/step3.png b/_img/step3.png deleted file mode 100644 index 7331da7..0000000 Binary files a/_img/step3.png and /dev/null differ diff --git a/_img/step4.png b/_img/step4.png deleted file mode 100644 index 12a57b9..0000000 Binary files a/_img/step4.png and /dev/null differ diff --git a/_img/switch-and-gate.png b/_img/switch-and-gate.png deleted file mode 100644 index aae726a..0000000 Binary files a/_img/switch-and-gate.png and /dev/null differ diff --git a/_img/switch-or-gate.png b/_img/switch-or-gate.png deleted file mode 100644 index d621991..0000000 Binary files a/_img/switch-or-gate.png and /dev/null differ diff --git a/_img/sync-thread.svg b/_img/sync-thread.svg deleted file mode 100644 index f3a6eb0..0000000 --- a/_img/sync-thread.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
synchronous, single thread of control
synchronous, single thread of control
synchronous, 2+ threads of control
synchronous, 2+ threads of control
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_img/systemd-global-files.png b/_img/systemd-global-files.png deleted file mode 100644 index 700600b..0000000 Binary files a/_img/systemd-global-files.png and /dev/null differ diff --git a/_img/systemd-local-files.png b/_img/systemd-local-files.png deleted file mode 100644 index b443998..0000000 Binary files a/_img/systemd-local-files.png and /dev/null differ diff --git a/_img/t-flip-flops.png b/_img/t-flip-flops.png deleted file mode 100644 index 208deea..0000000 Binary files a/_img/t-flip-flops.png and /dev/null differ diff --git a/_img/terminal_colours.png b/_img/terminal_colours.png deleted file mode 100644 index 801f439..0000000 Binary files a/_img/terminal_colours.png and /dev/null differ diff --git a/_img/theoremproof.png b/_img/theoremproof.png deleted file mode 100644 index 6c4b549..0000000 Binary files a/_img/theoremproof.png and /dev/null differ diff --git a/_img/transistor-off.png b/_img/transistor-off.png deleted file mode 100644 index 0d24182..0000000 Binary files a/_img/transistor-off.png and /dev/null differ diff --git a/_img/transistor-on.png b/_img/transistor-on.png deleted file mode 100644 index 4cc1441..0000000 Binary files a/_img/transistor-on.png and /dev/null differ diff --git a/_img/trigger-info.png b/_img/trigger-info.png deleted file mode 100644 index b478497..0000000 Binary files a/_img/trigger-info.png and /dev/null differ diff --git a/_img/unsigned-to-signed.png b/_img/unsigned-to-signed.png deleted file mode 100644 index 0168aed..0000000 Binary files a/_img/unsigned-to-signed.png and /dev/null differ diff --git a/_img/valence-shell.svg b/_img/valence-shell.svg deleted file mode 100644 index f086c05..0000000 --- a/_img/valence-shell.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
K
K
L
L
M
M
N
N
O
O
P
P
Q
Q
2
2
12
12
18
18
32
32
18
18
8
8
2
2
Valence shell
Valence shell
Designation
Designation
Max electrons
Max electrons
Text is not SVG - cannot display
\ No newline at end of file diff --git a/_img/vertical-circuit.png b/_img/vertical-circuit.png deleted file mode 100644 index 940bbb5..0000000 Binary files a/_img/vertical-circuit.png and /dev/null differ diff --git a/_img/virtual-memory-diagram.jpg b/_img/virtual-memory-diagram.jpg deleted file mode 100644 index b65f527..0000000 Binary files a/_img/virtual-memory-diagram.jpg and /dev/null differ diff --git a/_img/voltage-drop.png b/_img/voltage-drop.png deleted file mode 100644 index c7f1bad..0000000 Binary files a/_img/voltage-drop.png and /dev/null differ diff --git a/_img/von_neumann_architecture.jpeg b/_img/von_neumann_architecture.jpeg deleted file mode 100644 index 3d168a4..0000000 Binary files a/_img/von_neumann_architecture.jpeg and /dev/null differ diff --git a/_img/xor-addition-four.png b/_img/xor-addition-four.png deleted file mode 100644 index ea5ae5b..0000000 Binary files a/_img/xor-addition-four.png and /dev/null differ diff --git a/_img/xor-gate-new.png b/_img/xor-gate-new.png deleted file mode 100644 index 9961f48..0000000 Binary files a/_img/xor-gate-new.png and /dev/null differ diff --git a/_img/xor-hdl.png b/_img/xor-hdl.png deleted file mode 100644 index 56dba50..0000000 Binary files a/_img/xor-hdl.png and /dev/null differ diff --git a/_img/yellow-encoding.svg b/_img/yellow-encoding.svg deleted file mode 100644 index 3a12161..0000000 --- a/_img/yellow-encoding.svg +++ /dev/null @@ -1,4 +0,0 @@ - - - -
11111111
11111111
11111111
11111111
00000000
00000000
Red
Red
Blue
Blue
Green
Green
=
=
0xFFFF00
0xFFFF00
Text is not SVG - cannot display
\ No newline at end of file diff --git a/scripts/convert_link_format.sh b/scripts/convert_link_format.sh index a16ffda..38bb115 100755 --- a/scripts/convert_link_format.sh +++ b/scripts/convert_link_format.sh @@ -1,8 +1,7 @@ #!/bin/bash -find /home/thomas/repos/eolas/zk/ -type f -name "*.md" | while -read file; do - sed -r 's/\[([^\]]+)\]\(\/[^)]+\)/[[\1]]/g' +find /home/thomas/repos/eolas/zk/ -type f -name "*.md" | while read file; do + sed -i -r 's/\[([^\]]+)\]\(\/[^)]+\)/[[\1]]/g' "$file" done diff --git a/scripts/rename-links.py b/scripts/rename-links.py new file mode 100644 index 0000000..01eaaed --- /dev/null +++ b/scripts/rename-links.py @@ -0,0 +1,33 @@ +import os +import re + + +def trim_markdown_links(filepath): + with open(filepath, "r") as file: + content = file.read() + + # Regular expression to match Markdown links + pattern = r"\[([^\]]+)\]\(([^)]+)\)" + links = re.findall(pattern, content) + + # For each link, extract the filename and replace the link + for text, link in links: + link_filename = os.path.basename(link) + content = content.replace(f"[{text}]({link})", f"[{text}]({link_filename})") + + # Write the modified content back to the file + with open(filepath, "w") as file: + file.write(content) + + +def process_directory(directory): + for filename in os.listdir(directory): + if filename.endswith(".md"): + trim_markdown_links(os.path.join(directory, filename)) + + +# Usage +# process_directory('/path/to/your/directory') + +# Usage +process_directory("/home/thomas/repos/eolas/zk") diff --git a/zk/0_Introduction.md b/zk/0_Introduction.md index c26d0ea..ebfb8f2 100644 --- a/zk/0_Introduction.md +++ b/zk/0_Introduction.md @@ -7,12 +7,12 @@ tags: [backend, node-js, REST, APIs] # Creating a RESTful API: Introduction We are going to use Express to create a -[RESTful API](/Databases/RESTful_APIs.md) in Node.js. +[RESTful API](RESTful_APIs.md) in Node.js. ## Request types Express provides us with methods corresponding to each of the -[HTTP request types](/Databases/HTTP_request_types.md): +[HTTP request types](HTTP_request_types.md): - `.get()` - `.post()` @@ -25,7 +25,7 @@ Express provides us with methods corresponding to each of the > from a database. For simplicity we are just going simulate this with a simple > data array so that we can focus on the Express syntax rather than database > handling. Later we will integrate this with a -> [MongoDB database](/Programming_Languages/NodeJS/REST_APIs/05_%20Integrating_the_database.md). +> [MongoDB database](05_%20Integrating_the_database.md). We will mainly work with the following array of objects: @@ -51,7 +51,7 @@ const courses = [ We first create an instance of Express within `index.js`. This will be the main coordinating file and we will aim to minimise the amount of business logic we have in this file. It should really just be for initialization and managing -[middleware](/Programming_Languages/NodeJS/Architecture/Middleware.md). +[middleware](Middleware.md). ```js const express = require("express"); @@ -103,10 +103,10 @@ app.listen(3000, () => console.log("Listening on port 30000...")); We can now proceed to set up our RESTful endpoints: -[GET requests](/Programming_Languages/NodeJS/REST_APIs/1_GET.md) +[GET requests](1_GET.md) -[POST requests](/Programming_Languages/NodeJS/REST_APIs/2_POST.md) +[POST requests](2_POST.md) -[PUT requests](/Programming_Languages/NodeJS/REST_APIs/3_PUT.md) +[PUT requests](3_PUT.md) -[DELETE requests](/Programming_Languages/NodeJS/REST_APIs/4_DELETE.md) +[DELETE requests](4_DELETE.md) diff --git a/zk/2_POST.md b/zk/2_POST.md index eaec619..23335e4 100644 --- a/zk/2_POST.md +++ b/zk/2_POST.md @@ -61,7 +61,7 @@ client. We should accept alterations to the database that are not first validated. We can use the -[Joi validator](/Programming_Languages/NodeJS/REST_APIs/Validation.md) to vet +[Joi validator](Validation.md) to vet the request: ```js diff --git a/zk/5__Integrating_the_database.md b/zk/5__Integrating_the_database.md index 6896330..28b7712 100644 --- a/zk/5__Integrating_the_database.md +++ b/zk/5__Integrating_the_database.md @@ -15,10 +15,10 @@ the array. ## Set-up We will follow the routine for establishing a MongoDB instance as detailed in -[my notes](/Databases/MongoDB/Connect_to_database.md) on Mongo: +[my notes](Connect_to_database.md) on Mongo: -- [Create MongoDB database](/Databases/MongoDB/Create_database.md) -- [Connect to MongoDB database](/Databases/MongoDB/Connect_to_database.md) +- [Create MongoDB database](Create_database.md) +- [Connect to MongoDB database](Connect_to_database.md) Our `index.js` now looks like the following: @@ -122,8 +122,8 @@ const Course = mongoose.model( Now we need to rewrite our RESTful request handlers so that the data is sourced from and added to the database. We will mainly be using the Mongo syntax defined -at [Querying a collection](/Databases/MongoDB/Querying_a_collection.md) and -[Adding documents to a collection](/Databases/MongoDB/Adding_documents_to_a_collection.md). +at [Querying a collection](Querying_a_collection.md) and +[Adding documents to a collection](Adding_documents_to_a_collection.md). We will also keep API validation within the `/model/` file. ### GET @@ -174,7 +174,7 @@ router.post("/", async (req, res) => { ### PUT When updating a value in the database we are going to use the -[query-first](/Databases/MongoDB/Update_document.md#query-first-document-update) +[query-first](Update_document.md#query-first-document-update) approach to updating a Mongo document. ```jsconst courseSchema = new mongoose.Schema({ diff --git a/zk/API_Gateway.md b/zk/API_Gateway.md index f77b992..5095522 100644 --- a/zk/API_Gateway.md +++ b/zk/API_Gateway.md @@ -8,13 +8,13 @@ tags: [AWS, APIs] # AWS API Gateway We can use Gateway as the front-door to our application. It will create an -[HTTP](/Databases/REST/HTTP_request_types.md) endpoint that you can call from a +[HTTP](HTTP_request_types.md) endpoint that you can call from a client. In response to a client request you can then call a -[lambda function](/DevOps/AWS/AWS_Lambda/Lambda_handler_function.md) that +[lambda function](Lambda_handler_function.md) that executes a backend process. ![](/img/gateway-services.png) See -[using API Gateway as Lambda trigger](/DevOps/AWS/AWS_Lambda/Practical_walkthrough_Lambda_creation_within_AWS.md) +[using API Gateway as Lambda trigger](Practical_walkthrough_Lambda_creation_within_AWS.md) for a basic example of usage. diff --git a/zk/Accessing_secrets_from_a_Lambda.md b/zk/Accessing_secrets_from_a_Lambda.md index 7605511..3f79052 100644 --- a/zk/Accessing_secrets_from_a_Lambda.md +++ b/zk/Accessing_secrets_from_a_Lambda.md @@ -46,5 +46,5 @@ Here is an example of a resource permission giving access to a Lambda: ``` See -[Fetch from Secrets Manager](/DevOps/AWS/AWS_Lambda/Code_examples/Fetch_from_Secrets_Manager.md) +[Fetch from Secrets Manager](Fetch_from_Secrets_Manager.md) for a code example of retrieving a value from Secrets Manager. diff --git a/zk/Add_Subtract_Fractions.md b/zk/Add_Subtract_Fractions.md index 5c898ed..ae367a4 100644 --- a/zk/Add_Subtract_Fractions.md +++ b/zk/Add_Subtract_Fractions.md @@ -39,7 +39,7 @@ $$ ### Lowest common denominator and lowest common multiple Given the symmetry between -[factors and divisors](/Mathematics/Prealgebra/Factors_and_divisors.md) these +[factors and divisors](Factors_and_divisors.md) these properties are related. Note however that the LCM is more generic: it applies to any set of numbers not just fractions. Whereas the LCD is explicitly to do with fractions (hence 'denominator'). diff --git a/zk/Algorithmic_complexity.md b/zk/Algorithmic_complexity.md index 451c5d3..85d7dcd 100644 --- a/zk/Algorithmic_complexity.md +++ b/zk/Algorithmic_complexity.md @@ -2,7 +2,7 @@ tags: [algorithms] --- -![Screenshot_2021-05-11_at_18.55.23.png](../img/Screenshot_2021-05-11_at_18.55.23.png) +![Screenshot_2021-05-11_at_18.55.23.png](Screenshot_2021-05-11_at_18.55.23.png) _Summary of the main classes of algorithmic complexity_ ## Distinguish algorithms from programs @@ -117,7 +117,7 @@ following data set: | 5 | 5 | If we plotted this as a graph it is clear that this is equivalent to a linear -distribution:![lin.svg](../img/lin.svg) +distribution:![lin.svg](lin.svg) Algorithms which display this distribution are therefore called **linear algorithms**. @@ -240,7 +240,7 @@ factor of it. Therefore the runtime is not growing proportional to the size of the input, it is growing proportional to the size of the input squared. Graphically this is represented with a curving lines as follows: -![square.svg](../img/square.svg) +![square.svg](square.svg) We can clearly see that as n grows, the runtime gets steeper and more pronounced, @@ -289,7 +289,7 @@ Back to algorithms: $O(\log n)$ is a really good complexity to have. It is close to O(1) and in between O(1) and O(n). Represented graphically, it starts of with a slight increase in runtime but then quickly levels off: -![Screenshot_2021-05-11_at_18.51.02.png](../img/Screenshot_2021-05-11_at_18.51.02.png) +![Screenshot_2021-05-11_at_18.51.02.png](Screenshot_2021-05-11_at_18.51.02.png) Many sorting algorithms run in log n time, as does recursion. @@ -354,7 +354,7 @@ we should keep in mind the following shorthands: With this in mind we can break down the `findSum` function like so: -![breakdown.svg](../img/breakdown.svg) +![breakdown.svg](breakdown.svg) This gives us: diff --git a/zk/Analogue_and_digital.md b/zk/Analogue_and_digital.md index 9926a72..5eaaee2 100644 --- a/zk/Analogue_and_digital.md +++ b/zk/Analogue_and_digital.md @@ -72,7 +72,7 @@ one of a limited set of values. Computers only use two symbols for each value: 0 and 1. Although a digital system could use more than two symbols, adding more would -[increase the complexity](/Electronics_and_Hardware/Binary/Why_computers_use_binary.md#from-circuits-to-programs) +[increase the complexity](Why_computers_use_binary.md#from-circuits-to-programs) and cost of the system. A set of only two symbols allows for simplified hardware and improved reliability. diff --git a/zk/Apollo_Client.md b/zk/Apollo_Client.md index e245235..6bb17d2 100644 --- a/zk/Apollo_Client.md +++ b/zk/Apollo_Client.md @@ -8,12 +8,12 @@ tags: [graphql] # Apollo Client Apollo Client is the client-side counterpart to -[Apollo Server](/Databases/GraphQL/Apollo/Apollo_Server.md). We use it for +[Apollo Server](Apollo_Server.md). We use it for managing queries and mutations from the frontend to our Apollo GraphQL server. It is specifically designed to work with React. > We will be working with the -> [schema](/Databases/GraphQL/Apollo/Apollo_Server.md#example-schema) we defined +> [schema](Apollo_Server.md#example-schema) we defined > when working on the server ## Initializing the client @@ -58,7 +58,7 @@ between the frontend and the backend, it is not itself executable code. Therefore, for each query in the schema we must write a frontend implementation. We do this with **query constants**. The frontend implementation has a backend analogue: the -[resolver](/Databases/GraphQL/Apollo/Apollo_Server.md#implementing-resolvers) +[resolver](Apollo_Server.md#implementing-resolvers) that is invoked when the frontend issues a query. The schema standardises this relationship so that every query on the client must have a corresponding resolver on the backend. diff --git a/zk/Apollo_Server.md b/zk/Apollo_Server.md index d842b28..3cfd31a 100644 --- a/zk/Apollo_Server.md +++ b/zk/Apollo_Server.md @@ -55,7 +55,7 @@ type Author { We instantiate an `ApolloServer` instance and pass our schema to it. We then subscribe to it with a -[listener](/Programming_Languages/Node/Modules/Core/Node_JS_events_module.md#extending-the-eventemitter-class). +[listener](Node_JS_events_module.md#extending-the-eventemitter-class). ```js // index.js @@ -121,12 +121,12 @@ const server = new ApolloServer({ typeDefs, mocks }); ``` We can now -[run queries](/Databases/GraphQL/Apollo/Apollo_Client.md#running-a-query) +[run queries](Apollo_Client.md#running-a-query) against our server. ## Implementing resolvers -A resolver is a [function](/Trash/Creating_a_GraphQL_server.md#resolvers) that +A resolver is a [function](Creating_a_GraphQL_server.md#resolvers) that populates data for a given query. It should have **the same name as the field for the query**. So far we have one query in our schema: `tracksForHome` which returns the tracks to be listed on the home page. We must therefore also name @@ -136,7 +136,7 @@ It can fetch data from a single data source or multiple data sources (other servers, databases, REST APIs) and present this as a single integrated resource to the client, matching the shape requested. -As per the [generic example](/Trash/Creating_a_GraphQL_server.md#resolvers), you +As per the [generic example](Creating_a_GraphQL_server.md#resolvers), you write write your resolvers as keys on a `resolvers` object, e.g: ```js @@ -162,7 +162,7 @@ implementing the resolution: `resolverFunction(parent, args, context, info)`. - `parent` - Used with - [resolver chains](/Databases/GraphQL/Apollo/Using_arguments_with_Apollo_Client.md#resolver-chains) + [resolver chains](Using_arguments_with_Apollo_Client.md#resolver-chains) ---add example - `args` - an object comprising arguments provided for the given field by the client. @@ -296,7 +296,7 @@ const resolvers = { `ApolloServer` instance. * This time we utilise the `args` parameter in the resolver since an `id` will be provided as a client-side - [argument](/Databases/GraphQL/Apollo/Using_arguments_with_Apollo_Client.md) to + [argument](Using_arguments_with_Apollo_Client.md) to return a specific author. ## The `useMutation` hook @@ -304,4 +304,4 @@ const resolvers = { We invoke the `useMutation` hook to issue mutations from the client-side. As with queries and -[query constants](/Databases/GraphQL/Apollo/Apollo_Client.md#query-constants) +[query constants](Apollo_Client.md#query-constants) diff --git a/zk/Application_state_management.md b/zk/Application_state_management.md index 1100810..46a0046 100644 --- a/zk/Application_state_management.md +++ b/zk/Application_state_management.md @@ -9,7 +9,7 @@ tags: # Application state management -Although [useReducer](./useReducer.md) and [useContext](./useContext.md) have +Although [useReducer](useReducer.md) and [useContext](useContext.md) have many sound use cases by themselves, when they are combined they offer a way to acheive a system of global state management, without utilising third-party libraries like Redux. @@ -50,7 +50,7 @@ export const CounterContext = React.createContext({}); Now we need a reducer that will handle the state updates. We will just use the same setup as we used in the example of -[useReducer](./useReducer.md#refining-the-syntax): +[useReducer](useReducer.md#refining-the-syntax): ```js function reducer(state, action) { diff --git a/zk/Application_structure.md b/zk/Application_structure.md index ca18416..9f21409 100644 --- a/zk/Application_structure.md +++ b/zk/Application_structure.md @@ -44,7 +44,7 @@ src/ - The `App` component is your parent component and the container for your app. It is where you will import your sub-components. - If you are using React Router `App` becomes the index for the different page - components. See [Routing](./Routing.md) for more detail. + components. See [Routing](Routing.md) for more detail. ## `build` diff --git a/zk/Arithmetic_Logic_Unit.md b/zk/Arithmetic_Logic_Unit.md index 406d9e8..417ee06 100644 --- a/zk/Arithmetic_Logic_Unit.md +++ b/zk/Arithmetic_Logic_Unit.md @@ -7,23 +7,23 @@ tags: [CPU] # Arithmetic Logic Unit (ALU) The ALU is the centerpiece or core of the -[CPU](/Computer_Architecture/CPU/CPU_architecture.md) architecture, where the +[CPU](CPU_architecture.md) architecture, where the binary calculations occur. All the other components on the CPU chip are appendanges to the execution that occurs within the ALU. The ALU comprises -[logic gates](/Electronics_and_Hardware/Digital_circuits/Logic_gates.md) that +[logic gates](Logic_gates.md) that execute the instructions passed from memory and where the data stored by the registers is acted upon. A processor's ALU is just a complex combinatorial logic circuit. It executes arithmetic and logical operations on binary numbers and where you will find operations conducted by -[full-adders and half adders](/Electronics_and_Hardware/Digital_circuits/Half_adder_and_full_adder.md) +[full-adders and half adders](Half_adder_and_full_adder.md) etc. More specifically, the ALU is responsible for the _execute_ phase of the -[fetch, decode, execute cycle](/Computer_Architecture/CPU/Fetch_decode_execute.md). +[fetch, decode, execute cycle](Fetch_decode_execute.md). ## ALU execution lifecycle diff --git a/zk/Axioms_of_set_theory.md b/zk/Axioms_of_set_theory.md index 5049613..e0b5fee 100644 --- a/zk/Axioms_of_set_theory.md +++ b/zk/Axioms_of_set_theory.md @@ -20,4 +20,4 @@ Sets which contain the same members are the same set. If sets A and B contain the same elements then A = B. $$\forall a \forall b [\forall x (x \in a \longleftrightarrow x \in b) \rightarrow a =b]$$ -[link to test](/testFolder/beta.md) +[link to test](beta.md) diff --git a/zk/Basic_properties_of_sets.md b/zk/Basic_properties_of_sets.md index be42c7f..0e35ce7 100644 --- a/zk/Basic_properties_of_sets.md +++ b/zk/Basic_properties_of_sets.md @@ -126,4 +126,4 @@ This asserts that B is not a superset of A. ## Resources -[Set symbols](https://www.mathsisfun.com/sets/symbols.html) +[Set symbols](symbols.html) diff --git a/zk/Basics_of_web_components.md b/zk/Basics_of_web_components.md index 49b60b5..ef1ecd4 100644 --- a/zk/Basics_of_web_components.md +++ b/zk/Basics_of_web_components.md @@ -39,4 +39,4 @@ customElements.define("my-component", MyComponent); ## Resources -[A complete introdution to Web Components](https://kinsta.com/blog/web-components/) +[A complete introdution to Web Components]() diff --git a/zk/Binary_colour_encoding.md b/zk/Binary_colour_encoding.md index 3b80366..33cbfb0 100644 --- a/zk/Binary_colour_encoding.md +++ b/zk/Binary_colour_encoding.md @@ -8,7 +8,7 @@ tags: [binary, binary-encoding] The approach to encoding binary representations of colour is very similar to the approach we explored when looking at the encoding of -[alphanumeric values](/Electronics_and_Hardware/Binary/Text_encoding.md). +[alphanumeric values](Text_encoding.md). We begin by determining the total number of colours and colour shades we want to represent. With this value established we then decide on the bit-length required diff --git a/zk/Binary_encoding_of_text.md b/zk/Binary_encoding_of_text.md index 8cc7e83..b686423 100644 --- a/zk/Binary_encoding_of_text.md +++ b/zk/Binary_encoding_of_text.md @@ -8,7 +8,7 @@ tags: [binary, binary-encoding] # Text encoding Text encoding is an applied instance of -[binary encoding](/Electronics_and_Hardware/Binary/Binary_encoding.md). +[binary encoding](Binary_encoding.md). ## ASCII diff --git a/zk/Binary_number_system.md b/zk/Binary_number_system.md index 8b0d641..1ac1bb6 100644 --- a/zk/Binary_number_system.md +++ b/zk/Binary_number_system.md @@ -88,7 +88,7 @@ Counting in binary: ## Binary prefix To distinguish numbers in binary from decimal or -[hexadecimal](/Electronics_and_Hardware/Binary/Hexadecimal_number_system.md) +[hexadecimal](Hexadecimal_number_system.md) numbers, it is common to use the prefix `0b`. Thus, e.g, `0b110` for decimal `6`. diff --git a/zk/Binary_units_of_measurement.md b/zk/Binary_units_of_measurement.md index a6d8a88..1dbe88d 100644 --- a/zk/Binary_units_of_measurement.md +++ b/zk/Binary_units_of_measurement.md @@ -13,7 +13,7 @@ the number 343 is a number containing three digits. A digit can be any one of the ten numerals through 0-9. The equivalent entity in the -[binary number system](/Electronics_and_Hardware/Binary/Binary_number_system.md) +[binary number system](Binary_number_system.md) is the **bit**. For example the binary number 110 has three bits. A bit can only have one of two values in contrast to a digit which can have one of ten values. These values are 0 and 1. @@ -57,7 +57,7 @@ A byte allows for a complexity of up to 256 possible states: $2^{8} = 256$ Having established that the core quantity of information is the byte, the convention is to apply the -[standard metric prefixes](/Electronics_and_Hardware/Prefixes_for_units_of_electrical_measurement.md) +[standard metric prefixes](Prefixes_for_units_of_electrical_measurement.md) to the byte to establish units: | Prefix | Symbol | Expression as base ten exponent | Value | English word | diff --git a/zk/Boolean_algebra.md b/zk/Boolean_algebra.md index a95536c..b9fb2b6 100644 --- a/zk/Boolean_algebra.md +++ b/zk/Boolean_algebra.md @@ -24,7 +24,7 @@ $$ $$ Compare the -[Commutative Law](/Mathematics/Prealgebra/Whole_numbers.md#the-commutative-property) +[Commutative Law](Whole_numbers.md#the-commutative-property) in the context of arithmetic. ### The Associative Law @@ -38,7 +38,7 @@ $$ $$ Compare the -[Associative Law](/Mathematics/Prealgebra/Whole_numbers.md#the-associative-property) +[Associative Law](Whole_numbers.md#the-associative-property) in the context of arithmetic. ### The Distributive Law @@ -52,7 +52,7 @@ $$ $$ Compare how the -[Distributive Law applies in the case of algebra based on arithmetic](/Mathematics/Prealgebra/Distributivity.md): +[Distributive Law applies in the case of algebra based on arithmetic](Distributivity.md): $$ a \cdot (b + c) = a \cdot b + a \cdot c @@ -77,7 +77,7 @@ $$ ### DeMorgan's Laws In addition we have -[DeMorgan's Laws](/Logic/Laws_and_theorems.md/DeMorgan's_Laws.md) which express +[DeMorgan's Laws](DeMorgan's_Laws.md) which express the relationship that obtains between the negations of conjunctive and disjunctive expressions: @@ -158,8 +158,8 @@ with a truth table: The fact that we can take a complex Boolean function and reduce it to a simpler formulation has great significance for the development of computer architectures, specifically -[logic gates](/Electronics_and_Hardware/Digital_circuits/Logic_gates.md). It +[logic gates](Logic_gates.md). It would be rather resource intensive and inefficient to create a gate that is representative of the complex function. Whereas the simplified version only requires a single -[OR gate](/Electronics_and_Hardware/Digital_circuits/Logic_gates.md#or-gate). +[OR gate](Logic_gates.md#or-gate). diff --git a/zk/Boolean_function_synthesis.md b/zk/Boolean_function_synthesis.md index a2a6cae..448c732 100644 --- a/zk/Boolean_function_synthesis.md +++ b/zk/Boolean_function_synthesis.md @@ -8,17 +8,17 @@ tags: [propositional-logic, nand-to-tetris] # Boolean function synthesis When we looked at -[boolean functions](/Logic/Propositional_logic/Boolean_functions.md) we were +[boolean functions](Boolean_functions.md) we were working in a particular direction: from a function to a truth table. When we do Boolean function synthesis we work in the opposite direction: from a truth table to a function. This is an important skill that we will use when constructing -[logic circuits](/Electronics_and_Hardware/Digital_circuits/Digital_circuits.md). +[logic circuits](Digital_circuits.md). We will go from truth conditions (i.e. what we want the circuit to do and when we want it to do it) to a function expression which is then reduced to its simplest form and implemented with -[logic gates](/Electronics_and_Hardware/Digital_circuits/Logic_gates.md). +[logic gates](Logic_gates.md). Specifically, NAND gates. We will show here that a complex logical expression can be reduced to an @@ -88,7 +88,7 @@ $$ $$ Notice that $\lnot(z)$ is repeated so we can remove the repetition through -[idempotence](/Logic/Propositional_logic/Boolean_algebra.md#idempotent-law): +[idempotence](Boolean_algebra.md#idempotent-law): $$ \lnot z \land (\lnot(x) \lor \lnot(y)) @@ -121,7 +121,7 @@ $$ Finally, we can simplify even further by doing away with AND and NOT and using a single -[NAND gate](/Electronics_and_Hardware/Digital_circuits/Logic_gates.md#nand-gate) +[NAND gate](Logic_gates.md#nand-gate) which embodies the logic of both, being true in all instances where AND would be false: $\lnot (x \land y)$. diff --git a/zk/Boolean_functions.md b/zk/Boolean_functions.md index c1156ff..f88e950 100644 --- a/zk/Boolean_functions.md +++ b/zk/Boolean_functions.md @@ -22,7 +22,7 @@ Here is a work through where $f(1, 0, 1)$: and both of its disjuncts are false We can compute all possible outputs of the function by constructing a -[trkjuth table](/Logic/Propositional_logic/Truth-tables.md) with each possible +[trkjuth table](Truth-tables.md) with each possible variable as the truth conditions and the output of the function as the truth value: diff --git a/zk/Boot_process.md b/zk/Boot_process.md index 4f806eb..c0c3ee7 100644 --- a/zk/Boot_process.md +++ b/zk/Boot_process.md @@ -11,7 +11,7 @@ tags: The primary or boot [partition](Disks.md#primary-extended-and-logical-partitions) of a harddisk contains a bootloader. It is the job of the bootloader to locate the -[kernel](/Operating_Systems/The_Kernel.md) on the harddrive and inject it into +[kernel](The_Kernel.md) on the harddrive and inject it into memory so that they operating system can start. This is the boot process. ## Boot loaders @@ -82,7 +82,7 @@ would with any other filesystem, allowing for advanced configuration. 3. The kernel initializes the devices and its drivers. 4. The kernel mounts the root filesystem. 5. The kernel starts a program called **init**. It has a - [process id](/Programming_Languages/Shell_Scripting/Processes.md#processes-ps) + [process id](Processes.md#processes-ps) of 1. This is the point at which [user space](User_Space.md) starts. 6. Init sets the rest of the system processes in motion. 7. At the end of the boot process, init starts a process allowing you to log in. diff --git a/zk/Bus.md b/zk/Bus.md index 65aa6a1..6353da1 100644 --- a/zk/Bus.md +++ b/zk/Bus.md @@ -23,11 +23,11 @@ can mean: | Bus type | Description | | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| System bus | The primary pathway between the CPU and [memory](/Computer_Architecture/Memory/Memory.md). It comprises the **data bus** that transfers data from the memory to the CPU and the **address bus** which transmits requests from the CPU to memory. | +| System bus | The primary pathway between the CPU and [memory](Memory.md). It comprises the **data bus** that transfers data from the memory to the CPU and the **address bus** which transmits requests from the CPU to memory. | | Internal bus | Connects local devices for example the harddisk to the CPU. | -| External bus | Connects peripheral devices such as disks and printers to the [motherboard](/Electronics_and_Hardware/Motherboard.md) | +| External bus | Connects peripheral devices such as disks and printers to the [motherboard](Motherboard.md) | | Expansion bus | Allows expansion boards to access the CPU and memory. | -| Frontside bus | Main computer bus that determines data transfer rate speed and is the primary data transfer path between the CPU, RAM and other [motherboard](/Electronics_and_Hardware/Motherboard.md) devices. | +| Frontside bus | Main computer bus that determines data transfer rate speed and is the primary data transfer path between the CPU, RAM and other [motherboard](Motherboard.md) devices. | | Backside bus | Transfers secondary cache (L2 cache) data at faster speeds, allowing more efficient CPU operations | ## Bus standards @@ -48,7 +48,7 @@ transmit each bit of data simultaneously. - Serial buses are cheaper to implement than parallel buses - Serial buses operate at greater - [latency](/Computer_Architecture/Bus.md#latency) than parallel buses + [latency](Bus.md#latency) than parallel buses ## Latency diff --git a/zk/CPU_architecture.md b/zk/CPU_architecture.md index 63011c9..482cdb1 100644 --- a/zk/CPU_architecture.md +++ b/zk/CPU_architecture.md @@ -8,8 +8,8 @@ tags: [CPU, electromagnetism, clock] At the core of a computer sits the Central Processing Unit. This is the assembly of chips that execute all computation. Instructions are passed to the CPU along -the data bus part of the [system bus](/Computer_Architecture/Bus.md) from the -memory. The [kernel](/Operating_Systems/The_Kernel.md), also residing in memory, +the data bus part of the [system bus](Bus.md) from the +memory. The [kernel](The_Kernel.md), also residing in memory, sequences and schedules the sending of data to the CPU and manages requests from the CPU for data in memory. @@ -29,13 +29,13 @@ The CPU comprises three core components: ## Registers This is the part of the CPU that stores data. The memory cells that comprise it -do not have [capacitors](/Computer_Architecture/Memory/Memory.md) (unlike RAM) +do not have [capacitors](Memory.md) (unlike RAM) so they cannot store very much data but they work faster, which is what is important. Because their memory capacity is so small, we measure the size of registers in bits rather than bytes. In terms of speed, registers sit at the top part of the overall -[memory hierarchy](/Computer_Architecture/Memory/Memory.md#the-memory-hierarchy). +[memory hierarchy](Memory.md#the-memory-hierarchy). There are five main types of register in the CPU: @@ -49,11 +49,11 @@ There are five main types of register in the CPU: ## Arithmetic Logic Unit -See [Arithmetic Logic Unit](/Computer_Architecture/CPU/Arithmetic_Logic_Unit.md) +See [Arithmetic Logic Unit](Arithmetic_Logic_Unit.md) ## Control Unit -The CPU's [controller](/Computer_Architecture/Chipset_and_controllers.md). It +The CPU's [controller](Chipset_and_controllers.md). It takes the instructions in binary form from RAM memory (separate from the CPU, but connected) and then signals to the to ALU and memory registers what it is supposed to do to execute the instructions. Think of it as the overseer that @@ -73,11 +73,11 @@ cycle_. The clock's circuitry is based on a quartz crystal system like that used in watches. At precisely timed intervals, the clock sends out pulses of electricity that cause bits to move from place to place within -[logic gates](/Electronics_and_Hardware/Digital_circuits/Logic_gates.md) or +[logic gates](Logic_gates.md) or between logic gates and -[registers](/Computer_Architecture/CPU/CPU_architecture.md#registers). This is +[registers](CPU_architecture.md#registers). This is covered in greater detail in the discussion of -[clock signals in digital circuits](/Electronics_and_Hardware/Digital_circuits/Clock_signals.md). +[clock signals in digital circuits](Clock_signals.md). Simple instructions such as add can often be executed in just one clock cycle, whilst complex operations such as divide will require a number of smaller steps, @@ -95,14 +95,14 @@ Hz a processor possesses. ## Processing cycles Each "cycle" is the execution of a process that commences once the -[kernel](/Operating_Systems/The_Kernel.md) hands control to the CPU. Each cycle +[kernel](The_Kernel.md) hands control to the CPU. Each cycle follows a sequence of events known as -[fetch, decode, and execute](/Computer_Architecture/CPU/Fetch_decode_execute.md). +[fetch, decode, and execute](Fetch_decode_execute.md). ## Electromagnetism: broader scientific context Hertz was the scientist who detected -[electromagentic waves](/Electronics_and_Hardware/Physics_of_electricity/Electromagnetism.md). +[electromagentic waves](Electromagnetism.md). We use Hertz as a measure of the frequency of electromatic wave cycles in a signal. diff --git a/zk/Call_stack.md b/zk/Call_stack.md index dd77e60..0fd1975 100644 --- a/zk/Call_stack.md +++ b/zk/Call_stack.md @@ -6,7 +6,7 @@ tags: [] # The call-stack -A [stack](/Data_Structures/Stacks.md) data structure that holds the information +A [stack](Stacks.md) data structure that holds the information of the functions called within a program that allows transfer of the application control from these functions to the main process after code inside the functions has been executed. diff --git a/zk/Capturing_user_input_in_Bash.md b/zk/Capturing_user_input_in_Bash.md index ed0a9f2..be0da12 100644 --- a/zk/Capturing_user_input_in_Bash.md +++ b/zk/Capturing_user_input_in_Bash.md @@ -7,7 +7,7 @@ tags: # Capturing user input in Bash -We use [read](/Programming_Languages/Shell/Read.md) to gather user input. +We use [read](Read.md) to gather user input. ## Capturing raw inputs @@ -91,7 +91,7 @@ echo "$fave was selected" ### Check right number of arguments supplied Here we test that the right number of -[arguments](/Programming_Languages/Shell/Passing_arguments_and_options_to_Bash_scripts.md) +[arguments](Passing_arguments_and_options_to_Bash_scripts.md) have been passed to the script: ```sh diff --git a/zk/Cells_and_batteries.md b/zk/Cells_and_batteries.md index ed5ea3b..9f6039f 100644 --- a/zk/Cells_and_batteries.md +++ b/zk/Cells_and_batteries.md @@ -7,7 +7,7 @@ tags: [physics, electricity] # Cells and batteries Cells are a -[voltage source](/Electronics_and_Hardware/Analogue_circuits/Voltage.md) that +[voltage source](Voltage.md) that generate a difference of potential via a positive and negative electrode separated by an electrolytic solution. The electrolytes pull free electrons from one of the materials which creates a positive charge. The other material gains @@ -48,7 +48,7 @@ line. In this configuration the same current flows through all the cells; it is not cumulative. We represent this as follow> However the voltage is cumulative: it is the _sum_ of the individual cell voltages, represented below as -[electrical field](/Electronics_and_Hardware/Analogue_circuits/Voltage.md#distinguishing-voltage-from-electric-field): +[electrical field](Voltage.md#distinguishing-voltage-from-electric-field): $$ E_{T} = E_{1} + E_{2} + E_{3} \\ diff --git a/zk/Cherry_picking.md b/zk/Cherry_picking.md index 21205da..95f2305 100644 --- a/zk/Cherry_picking.md +++ b/zk/Cherry_picking.md @@ -57,7 +57,7 @@ git cherry-pick abcdefg hijklmn opqrst ## Limitations - You don't have to just cherry-pick locally, you can also cherry-pick from a - [remote tracking branch](/DevOps/Git/Remote_tracking_branches.md). + [remote tracking branch](Remote_tracking_branches.md). - You cannot cherry-pick merge commits since these commits do not implement a set of changes, they are connecting commits. diff --git a/zk/Chipset_and_controllers.md b/zk/Chipset_and_controllers.md index cc22c2e..c75b03f 100644 --- a/zk/Chipset_and_controllers.md +++ b/zk/Chipset_and_controllers.md @@ -11,13 +11,13 @@ A **controller** is simply a circuit that controls a process. The **chipset** is a combination of controllers placed on the same piece of silicon. The chipset manages the data flow between the different components that comprise -the [motherboard](/Electronics_and_Hardware/Motherboard.md): processor, -[memory](/Computer_Architecture/Memory/Memory.md), -[harddisk](/Operating_Systems/Disks/What_are_disks.md) and peripherals. +the [motherboard](Motherboard.md): processor, +[memory](Memory.md), +[harddisk](What_are_disks.md) and peripherals. Buses run in and out of the chipset into these key motherboard components. The main chipset is a kind of junction that sits between the memory and CPU through -which the [system bus](/Computer_Architecture/Bus.md) passes. +which the [system bus](Bus.md) passes. The chipset is sometimes called the "glue" or "traffic controller" of the motherboard or _an intelligent intersection of buses_. diff --git a/zk/Circuits.md b/zk/Circuits.md index 4644ef7..fdf9090 100644 --- a/zk/Circuits.md +++ b/zk/Circuits.md @@ -11,11 +11,11 @@ that current flows in a loop from a voltage source, through the circuit elements and back to the voltage source. Below is a basic circuit representing a 9-volt -[battery](/Electronics_and_Hardware/Analogue_circuits/Cells_and_batteries.md#cells-and-batteries) +[battery](Cells_and_batteries.md#cells-and-batteries) with a 10,000$\Omega$ -[resistor](/Electronics_and_Hardware/Analogue_circuits/Resistance.md) attached +[resistor](Resistance.md) attached accross its terminals. Through the application of -[Ohm's Law](/Electronics_and_Hardware/Physics_of_electricity/Ohms_Law.md) we can +[Ohm's Law](Ohms_Law.md) we can determine that the maximum current will be 0.9 miliamps. ![](/img/basic-circuit.png) diff --git a/zk/Classes.md b/zk/Classes.md index fe91df9..c2e7b33 100644 --- a/zk/Classes.md +++ b/zk/Classes.md @@ -243,7 +243,7 @@ constructor with `super`. You shouldn't confuse `implements` with `extends`. `implements` just checks the class as an interface in accordance with the principles of -[duck typing](/Programming_Languages/TypeScript/Custom_types.md#duck-typing): +[duck typing](Custom_types.md#duck-typing): i.e the implementing class should have the same properties and methods. It doesn't affect anything internal to the methods or properties. So e.g, if you typed a method parameter as `string` in the base class, this would still default diff --git a/zk/Classes_in_Python.md b/zk/Classes_in_Python.md index 80e64a4..6357bd5 100644 --- a/zk/Classes_in_Python.md +++ b/zk/Classes_in_Python.md @@ -85,7 +85,7 @@ class Person: ## Object references When you log a class you get a reference to its hexadecimal -[memory](/Computer_Architecture/Memory/Memory.md) reference. +[memory](Memory.md) reference. ```py p1 = Person('John', 36) @@ -112,7 +112,7 @@ print(id(p2)) ## Copying objects The same principle that applies to -[copying functions](/Programming_Languages/Python/Syntax/Functions_in_Python.md) +[copying functions](Functions_in_Python.md) applies to copying objects created through classes: redeclaration results in a duplicate entity. Thus changes to the duplicate will affect the original. diff --git a/zk/Clock_signals.md b/zk/Clock_signals.md index a7f9764..d6cd974 100644 --- a/zk/Clock_signals.md +++ b/zk/Clock_signals.md @@ -9,8 +9,8 @@ tags: [binary, memory, clock, electromagnetism] # Clock signals In the examples of digital circuits so far (i.e -[adders](/Electronics_and_Hardware/Digital_circuits/Half_adder_and_full_adder.md) -and [latches](/Electronics_and_Hardware/Digital_circuits/Latches.md)) everything +[adders](Half_adder_and_full_adder.md) +and [latches](Latches.md)) everything happens in a single instant or over several repeated instances. This is because of how simple the circuits are. In the case of latches only a single bit is updated. And even with rippled adders they are just a series of 1-bit updaters @@ -22,7 +22,7 @@ We do this by sequencing the execution with the pulses of the system clock. A single iteration of the volatage rising and falling is a **pulse**. A complete oscillation from low to high and back to low is a **cycle**. As with all -[electromagnetic](/Electronics_and_Hardware/Physics_of_electricity/Electromagnetism.md) +[electromagnetic](Electromagnetism.md) signals we measure the frequency of the wave in Hertz: cylcles per second. We also further distinguish the rising and falling edge of a pulse. Rising represents the signal passing from ground to its maximum voltage and falling is @@ -44,6 +44,6 @@ The diagram below shows a pulse cycle of 2Hz. edge-triggered** The role of the clock is essential in the functioning of the -[CPU](/Computer_Architecture/CPU/CPU_architecture.md#the-system-clock). It is +[CPU](CPU_architecture.md#the-system-clock). It is the system clock that gives CPUs their performance rating: how many processes can execute within a given clock cycle. diff --git a/zk/Components.md b/zk/Components.md index 3f64d93..d2dee60 100644 --- a/zk/Components.md +++ b/zk/Components.md @@ -9,7 +9,7 @@ tags: # Components We write functional components in the manner of a normal -[function](/Programming_Languages/React/React_Typescript/Functions.md) that take +[function](Functions.md) that take a props argument and return a JSX element. ```jsx diff --git a/zk/Components_props_hooks.md b/zk/Components_props_hooks.md index 092653f..07a0610 100644 --- a/zk/Components_props_hooks.md +++ b/zk/Components_props_hooks.md @@ -70,4 +70,4 @@ function components. We change components by using state, not by mutating props. This is consistent with React's -[principle of the immutability of elements](https://www.notion.so/Elements-992594b9cd2e483c85cddddffeb16f11). +[principle of the immutability of elements](Elements-992594b9cd2e483c85cddddffeb16f11). diff --git a/zk/Connecting_a_frontend_to_a_Docker_backend.md b/zk/Connecting_a_frontend_to_a_Docker_backend.md index 02beb2d..e4e2cca 100644 --- a/zk/Connecting_a_frontend_to_a_Docker_backend.md +++ b/zk/Connecting_a_frontend_to_a_Docker_backend.md @@ -8,9 +8,9 @@ tags: [docker, SQL, node-js] # Connecting a frontend to a Docker backend Building on from -[NodeJS backend with MySQL database](/DevOps/Docker/Docker_Examples/Node_and_MySQL_db.md) +[NodeJS backend with MySQL database](Node_and_MySQL_db.md) we can add a frontend by adapting the existing -[Docker Compose](/DevOps/Docker/Docker_Compose.md) files (one for each +[Docker Compose](Docker_Compose.md) files (one for each environment) to accept an additional dependency. We won't create a container for the frontend as this is not necessary. diff --git a/zk/Containerization.md b/zk/Containerization.md index ad2eb05..4d3bb81 100644 --- a/zk/Containerization.md +++ b/zk/Containerization.md @@ -33,7 +33,7 @@ increased the speed of transport. particular implementation of containerization that simplifies the process and bases it on a standardised specification. -- Containers are native to the Linux [kernal](/Operating_Systems/The_Kernel.md) +- Containers are native to the Linux [kernal](The_Kernel.md) and are key part of how it works. Thus when you run containers on Linux, you are using native capability. When you use containers on Windows or Mac you have to run a virtual version of Linux in order to exploit the capabilities of @@ -53,7 +53,7 @@ groups). example a container is ignorant of the underlying operating system and network, by default. -In ordinary [user space](/Operating_Systems/User_Space.md) applications share +In ordinary [user space](User_Space.md) applications share the _same_ processor, memory and file system resources. This increases the likelihood of resourcing challenges, dependency conflicts and security threats. Without modularisation and the titration of resources, you are opened up to much diff --git a/zk/Create_an_SQL_table.md b/zk/Create_an_SQL_table.md index 6470587..b92821a 100644 --- a/zk/Create_an_SQL_table.md +++ b/zk/Create_an_SQL_table.md @@ -11,7 +11,7 @@ We create tables in an SQL database with the `CREATE` command. Below is an example of this in practice. Each field corresponds to a column. We specify the name of the field and its corresponding -[data type](/Databases/SQL/Data_types_in_MySQL.md). Every table must have a +[data type](Data_types_in_MySQL.md). Every table must have a **primary key**. In the example, `employee_id` is the primary key. ```sql diff --git a/zk/Creating_a_schema_and_model.md b/zk/Creating_a_schema_and_model.md index dda8182..ccc25d0 100644 --- a/zk/Creating_a_schema_and_model.md +++ b/zk/Creating_a_schema_and_model.md @@ -9,7 +9,7 @@ tags: [mongo-db, node-js, mongoose] ## Schema In order start adding -[collections and documents](/Databases/MongoDB/Introduction.md) to our database, +[collections and documents](Introduction.md) to our database, we use Mongoose's **schema** structure. (This is specific to Mongoose and is not a structure that is a part of Mongo in general.) @@ -45,7 +45,7 @@ The following data types are available: > Note that we set our validation criteria as the second property for each > schema value. There is more info info on validation in a -> [separate entry](/Databases/MongoDB/Validating_Mongoose_schemas.md); +> [separate entry](Validating_Mongoose_schemas.md); ## Models diff --git a/zk/Creating_memory_with_NAND.md b/zk/Creating_memory_with_NAND.md index b25c35c..f337e1d 100644 --- a/zk/Creating_memory_with_NAND.md +++ b/zk/Creating_memory_with_NAND.md @@ -10,9 +10,9 @@ tags: [logic-gates, binary, memory] # Creating memory with NAND gates The -[logic circuit](/Electronics_and_Hardware/Digital_circuits/Digital_circuits.md) +[logic circuit](Digital_circuits.md) below demonstrates how memory can be created using -[NAND](/Electronics_and_Hardware/Digital_circuits/Logic_gates.md#nand-gate) +[NAND](Logic_gates.md#nand-gate) gates. A single bit is stored in memory. ![](/img/nand_latch_logic_circuit.png) Interactive version of circuit: diff --git a/zk/Current.md b/zk/Current.md index 0845c6d..477ac88 100644 --- a/zk/Current.md +++ b/zk/Current.md @@ -17,12 +17,12 @@ So current is the flow of electrons. Charge is the quantity that flows. ## Why current exists Current exists because of the -[first law of electrostatics](/Electronics_and_Hardware/Physics_of_electricity/Coulombs_Laws.md). +[first law of electrostatics](Coulombs_Laws.md). When there is an excess of electrons at one terminal (i.e. negatively charged atoms) and a deficiency of electrons at the other terminal (i.e. positively charged atoms), a -[_difference of potential_](/Electronics_and_Hardware/Analogue_circuits/Voltage.md) +[_difference of potential_](Voltage.md) exists between the two terminals. When the terminals are connected to each other via a conductor (e.g. copper diff --git a/zk/Custom_types.md b/zk/Custom_types.md index 34342ac..db7838b 100644 --- a/zk/Custom_types.md +++ b/zk/Custom_types.md @@ -7,7 +7,7 @@ tags: # Custom types -Objects and [classes](./Classes.md) are where TypeScript becomes most useful and +Objects and [classes](Classes.md) are where TypeScript becomes most useful and powerful. In TypeScript, objects and classes are by definition custom types. When typing objects, you do not write the types alongside the actual data as you diff --git a/zk/DeMorgan's_Laws.md b/zk/DeMorgan's_Laws.md index c393c79..e179560 100644 --- a/zk/DeMorgan's_Laws.md +++ b/zk/DeMorgan's_Laws.md @@ -8,7 +8,7 @@ tags: [] DeMorgan's laws express some fundamental equivalences that obtain between the Boolean -[connectives](/Logic/Propositional_logic/Truth-functional_connectives.md). +[connectives](Truth-functional_connectives.md). ## First Law diff --git a/zk/Defining_a_computer.md b/zk/Defining_a_computer.md index c4809be..9963bee 100644 --- a/zk/Defining_a_computer.md +++ b/zk/Defining_a_computer.md @@ -17,7 +17,7 @@ single set of tasks according to prewritten instructions. We’ll take the term _computer_ to mean general purpose computer. Simplified model of what a computer is: -![1.4-Input-Process-Output.png](../img/1.4-Input-Process-Output.png) +![1.4-Input-Process-Output.png](1.4-Input-Process-Output.png) Although the input, output and storage parts of a computer are very important, they will not be the focus of this course. Instead we are going to learn all @@ -28,7 +28,7 @@ instructions to make calculations. ### Early computing (_Crash Course Computer Science)_ -[Early Computing: Crash Course Computer Science #1](https://www.youtube.com/watch?v=O5nskjZ_GoI) +[Early Computing: Crash Course Computer Science #1](watch?v=O5nskjZ_GoI) - The abacus was created because the scale of society had become greater than what a single person could create and manipulate in their mind. @@ -57,9 +57,9 @@ instructions to make calculations. wind, drift, slope and elevation. These were used well into WW2 but they were limited to the particular type of cannon or shell -![Screenshot_2020-08-09_at_21.32.54 1.png](../img/Screenshot_2020-08-09_at_21.32.54%201.png) +![Screenshot_2020-08-09_at_21.32.54 1.png](Screenshot_2020-08-09_at_21.32.54%201.png) -![Screenshot_2020-08-09_at_21.34.48.png](../img/Screenshot_2020-08-09_at_21.34.48.png) +![Screenshot_2020-08-09_at_21.34.48.png](Screenshot_2020-08-09_at_21.34.48.png) > Before the invention of actual computers, 'computer' was a job-title denoting > people who were employed to conduct complex calculations, sometimes with the diff --git a/zk/Devices.md b/zk/Devices.md index e0af567..fee6394 100644 --- a/zk/Devices.md +++ b/zk/Devices.md @@ -9,7 +9,7 @@ tags: Devices are hardware that require access to the CPU in order to function. Devices can either be external and plugged-in or internal to the motherboard. -The most common type of device that you will work with are [disks](./Disks.md). +The most common type of device that you will work with are [disks](Disks.md). Devices are files but they have some different capabilities than ordinaryq files. There are two types: **block** and **stream**. Device files reside in the @@ -45,7 +45,7 @@ brw-rw---- 1 root disk 259, 3 Jun 4 11:00 nvme0n1p3 > programs like `ls` and `cat`. The -[mode](/Programming_Languages/Shell_Scripting/File_permissions_and_execution.md#what-the-output-means) +[mode](File_permissions_and_execution.md#what-the-output-means) is different from ordinary files. Each device file is prepended with `b, p, c, s` before the standard permissions. These stand for the major types of devices: _block, character, pipe_ and _socket_. @@ -65,7 +65,7 @@ devices: _block, character, pipe_ and _socket_. `/dev/null` is a virtual device: it doesn't actually exist as a piece of hardware on the system. It can be useful when -[bash scripting](/Programming_Languages/Shell/Redirect_to_dev_null.md) as a +[bash scripting](Redirect_to_dev_null.md) as a place to direct output that you don't care about, for example errors or verbose program read-outs. diff --git a/zk/Digital_circuits.md b/zk/Digital_circuits.md index 2862d5b..fe705be 100644 --- a/zk/Digital_circuits.md +++ b/zk/Digital_circuits.md @@ -7,10 +7,10 @@ tags: [circuits] # Digital circuits Ultimately every process in a computer is the product of a digital -[circuit](/Electronics_and_Hardware/Analogue_circuits/Circuits.md) that is +[circuit](Circuits.md) that is working on binary values. In contrast to electrical circuits, digital circuits are not represented in an -[analogue](/Electronics_and_Hardware/Analogue_and_digital.md) fashion. +[analogue](Analogue_and_digital.md) fashion. Analogue circuits work on the basis of real continuous phenomena in the world: charges and currents. As a result, the key properties of a circuit - voltage, @@ -21,7 +21,7 @@ natural flow of current and ensure that it only runs within desired parameters. In a standard electrical circuit, voltage, current and resistance can vary over a wide range of values however in the binary context we want to deal with discrete values (zeros and ones) which can be fed into the various -[logic gates](/Electronics_and_Hardware/Digital_circuits/Logic_gates.md). +[logic gates](Logic_gates.md). We therefore need a way to represent 'on' and 'off' as single quantities. We do this by stipulating that a given voltage corresponds to 'on' (high) and another @@ -31,6 +31,6 @@ voltage is inherently analogue but we basically binary-encode them. Formally be within 2-5V depending on the circuit design and anything between 0 - 0.8V is considered off. -The [transistor](/Electronics_and_Hardware/Digital_circuits/Transistors.md) is +The [transistor](Transistors.md) is the electrical component that enables us to represent given voltage ranges as being 'on' or 'off'. diff --git a/zk/Dividing_fractions.md b/zk/Dividing_fractions.md index 817cd7a..925d2ca 100644 --- a/zk/Dividing_fractions.md +++ b/zk/Dividing_fractions.md @@ -10,16 +10,16 @@ tags: Suppose you have the following shape: -![draw.io-Page-9.drawio 1.png](../../img/draw.io-Page-9.drawio.png) +![draw.io-Page-9.drawio 1.png](draw.io-Page-9.drawio.png) One part is shaded. This represents one-eighth of the original shape. -![one-eighth-a.png](../../img/one-eighth-a.png) +![one-eighth-a.png](one-eighth-a.png) Now imagine there are four instances of the shape and one-eighth remains shaded. How man one-eighths are there in four? -![draw.io-Page-9.drawio 2.png](../../img/draw.io-Page-9.drawio.png) +![draw.io-Page-9.drawio 2.png](draw.io-Page-9.drawio.png) The shaded proportion represents $\frac{1}{8}$ of the shape. Imagine four of these shapes, how many eighths are there? diff --git a/zk/Docker_Compose.md b/zk/Docker_Compose.md index d8264c2..ef85182 100644 --- a/zk/Docker_Compose.md +++ b/zk/Docker_Compose.md @@ -93,4 +93,4 @@ services: ## See also -[NodeJS and MySQL Docker backend](/DevOps/Docker/Docker_Examples/Node_and_MySQL_db.md) +[NodeJS and MySQL Docker backend](Node_and_MySQL_db.md) diff --git a/zk/Docker_architecture.md b/zk/Docker_architecture.md index a3df1b0..e44cbaa 100644 --- a/zk/Docker_architecture.md +++ b/zk/Docker_architecture.md @@ -11,7 +11,7 @@ tags: [docker, containerization] ![](/img/dock-architecture.png) - The Docker Client is a thin API for making - [REST API](/Databases/REST/RESTful_APIs.md) to the Docker Server. Any CLI + [REST API](RESTful_APIs.md) to the Docker Server. Any CLI command beginning `docker...` is an API request to the server. - The internal process name for the server is `dockerd`. - On `docker run...`, `dockerd` calls `containerd`. This process starts the diff --git a/zk/Docker_general_overview.md b/zk/Docker_general_overview.md index 6f99f1d..e932c53 100644 --- a/zk/Docker_general_overview.md +++ b/zk/Docker_general_overview.md @@ -62,4 +62,4 @@ containers can be launched from the same, single image. ## Docker architectural overview -See [Docker architecture](/DevOps/Docker/Docker_architecture.md). +See [Docker architecture](Docker_architecture.md). diff --git a/zk/Electromagnetism.md b/zk/Electromagnetism.md index fb1bcd4..14426fa 100644 --- a/zk/Electromagnetism.md +++ b/zk/Electromagnetism.md @@ -30,7 +30,7 @@ currents. > Magnetism is a physical property produced by the _motion_ of electric charge, > which of course, is the same thing as -> [electric current](/Electronics_and_Hardware/Analogue_circuits/Current.md) +> [electric current](Current.md) A **magnet** is a material or object that produces a magnetic field. This field is invisible but visible by its effects: pulling on other magnetic materials diff --git a/zk/Environmental_and_shell_variables.md b/zk/Environmental_and_shell_variables.md index eeec74f..92d8a29 100644 --- a/zk/Environmental_and_shell_variables.md +++ b/zk/Environmental_and_shell_variables.md @@ -46,7 +46,7 @@ spawned instances? Is this even possible or do they die on `exit` . session. It contains variables that define system properties. - Every time a - [shell session](https://www.notion.so/Shell-sessions-e6dd743dec1d4fe3b1ee672c8f9731f6) + [shell session](Shell-sessions-e6dd743dec1d4fe3b1ee672c8f9731f6) spawns, a process takes place to gather and compile information that should be available to the shell process and its child processes. It obtains the data for these settings from a variety of different files and settings on the @@ -155,7 +155,7 @@ variables use `set` . You can also add variables to config files that run on login such as your user `.bashrc` / `.zshrc` . This is obviously best for when you want the variables to persist and be accessible within every -[shell session](https://www.notion.so/Shell-sessions-e6dd743dec1d4fe3b1ee672c8f9731f6). +[shell session](Shell-sessions-e6dd743dec1d4fe3b1ee672c8f9731f6). ## Important environmental and shell variables diff --git a/zk/Equivalent_fractions.md b/zk/Equivalent_fractions.md index 2eeffb8..2470a4d 100644 --- a/zk/Equivalent_fractions.md +++ b/zk/Equivalent_fractions.md @@ -9,7 +9,7 @@ tags: Two fractions are equivalent if they represent the same value. To begin with we can represent this visually: -![equiv-fractions.png](../../img/equiv-fractions.png) +![equiv-fractions.png](equiv-fractions.png) _Each shaded area is taking up the same proportion of the whole._ diff --git a/zk/Errors.md b/zk/Errors.md index 8b2af33..21ef94f 100644 --- a/zk/Errors.md +++ b/zk/Errors.md @@ -20,4 +20,4 @@ Once the data is returned, React tries to update the state but the component is unmounted. As the warning suggests, this can be resolved using the cleanup parameter within -[useEffect](../../Programming_Languages/React/Hooks/useEffect.md#cleanup-functions). +[useEffect](useEffect.md#cleanup-functions). diff --git a/zk/Event_loop.md b/zk/Event_loop.md index c0e0360..9045ca5 100644 --- a/zk/Event_loop.md +++ b/zk/Event_loop.md @@ -28,7 +28,7 @@ If there was only one thread, this would be inefficient and unworkable. Therefore the framework will be multi-threaded: multiple request-response cycles can be executed at once by different threads. -![sync-thread.svg](/img/sync-thread.svg) +![sync-thread.svg](sync-thread.svg) To accomodate the ability to increase the scale of synchronous applications you need to be able to spawn more threads commensurate to increased demand. This @@ -46,7 +46,7 @@ dispatching them asynchronously. When a request is made it sends it off and continues with its execution and handling new requests. Once these resolve, the data is returned to the main thread. -![async.svg](/img/async.svg) +![async.svg](async.svg) ## The Event Loop @@ -61,7 +61,7 @@ Node is continually monitoring the Event Loop in the background. A running Node application is a single running process. Like everything that happens within the OS, a process is managed by the -[kernel](/Operating_Systems/The_Kernel.md) that dispatches operations to the CPU +[kernel](The_Kernel.md) that dispatches operations to the CPU in a clock cycle. A thread is a sequence of code that resides within the process and utilises its memory pool (the amount of memory assigned by the kernel to the Node process). The Event Loop runs on CPU ticks: a tick is a single run of the @@ -75,7 +75,7 @@ These six phases create one cycle, or loop, equal to one **tick**. A Node.js process exits when there is no more pending work in the Event Loop, or when `process.exit()` is called manually. A program only runs for as long as there are tasks queued in the Event Loop, or present on the -[call stack](/Software_Engineering/Call_stack.md). +[call stack](Call_stack.md). ![](/img/node-event-loop.svg) @@ -93,7 +93,7 @@ The phases are as follows: are currently set. The Event Loop takes the timer with the shortest wait time and compares it with the Event Loop's current time. If the wait time has elapsed, then the timer's callback is queued to be called once the - [call stack](/Software_Engineering/Call_stack.md) is empty. + [call stack](Call_stack.md) is empty. 2. **I/O Callbacks** - Once timers have been checked and scheduled, Node jumps to I/O operations. - Node implements a non-blocking input/output interface. This is to say, diff --git a/zk/Events.md b/zk/Events.md index 00372ef..19b3e31 100644 --- a/zk/Events.md +++ b/zk/Events.md @@ -70,7 +70,7 @@ return ( ``` This follows standard practise for -[controlled-components](/Programming_Languages/React/Hooks/Forms.md). The TS +[controlled-components](Forms.md). The TS specific additions: - We define the change event as being of the type `React.ChangeEvent` and state diff --git a/zk/Expansions_and_substitutions.md b/zk/Expansions_and_substitutions.md index cd36429..56580ff 100644 --- a/zk/Expansions_and_substitutions.md +++ b/zk/Expansions_and_substitutions.md @@ -81,7 +81,7 @@ the second list against them. ## Parameter expansion: `${...}` We use most frequently for returning the value of stored -[variables](/Programming_Languages/Shell/Variables_and_data_types.md). +[variables](Variables_and_data_types.md). Techically we do not have to use the braces, we can retrieve with just `$var` however it's better to use them to minimise interpretation fuck-ups which happen a lot. @@ -93,7 +93,7 @@ returned such as only returning from the 6th character: `${var:6}`. Command substitution (circle-brackets) allows us to put the output of one command inside another. Bash runs the bracketed command in a -[sub-shell](/Programming_Languages/Shell/Shell_sessions.md) and then returns it +[sub-shell](Shell_sessions.md) and then returns it to the main user shell. For example: @@ -107,5 +107,5 @@ echo "The current directory is $(pwd)." We use arithmetic expansion when we want to calculate numerical values See -[Working with numbers in Bash](/Programming_Languages/Shell/Working_with_numbers_in_Bash.md) +[Working with numbers in Bash](Working_with_numbers_in_Bash.md) for more. diff --git a/zk/Fetch_decode_execute.md b/zk/Fetch_decode_execute.md index 6390639..8b117da 100644 --- a/zk/Fetch_decode_execute.md +++ b/zk/Fetch_decode_execute.md @@ -8,7 +8,7 @@ tags: [CPU] _Fetch, decode, execute_ is the operating cycle of the CPU. We will run through how this works with reference to the -[CPU architecture](/Computer_Architecture/CPU/CPU_architecture.md). +[CPU architecture](CPU_architecture.md). ## Fetch @@ -59,9 +59,9 @@ to determine which of its circuits should be used for processing. Now the command will be executed. The operand is copied to the Memory Address Register and then passed to the Memory Data Register and the command is carried out by the ALU. The activities of ALU are covered in -[CPU Architecture](/Computer_Architecture/CPU/CPU_architecture.md#arithmetic-logic-unit) +[CPU Architecture](CPU_architecture.md#arithmetic-logic-unit) and the notes on -[Logic Gates](/Electronics_and_Hardware/Digital_circuits/Logic_gates.md). +[Logic Gates](Logic_gates.md). ## Store @@ -76,7 +76,7 @@ specify where to store the result. - If the instruction is iterative (e.g. adding two numbers and then multiplying by another number), the instruction will tell the CPU to store the interim first value in the CPU's - [registers](/Computer_Architecture/CPU/CPU_architecture.md#registers). As + [registers](CPU_architecture.md#registers). As these are part of the CPU, the data can be retrieved more readily. If the value is not expected to be used again immediately, it goes to the DRAM or harddisk. diff --git a/zk/File_descriptors.md b/zk/File_descriptors.md index 36e85a0..fdcfb2b 100644 --- a/zk/File_descriptors.md +++ b/zk/File_descriptors.md @@ -16,7 +16,7 @@ File descriptors are shorthand for `stdin`, `stdout` and `stderr`: | 2 | Standard error | `stderr` | They are typically used when you want to -[redirect](/Programming_Languages/Shell/Redirection.md) the output of the +[redirect](Redirection.md) the output of the standard/input /output/error somewhere, e.g a file or as input to another program. A classic case is `[some_command] > /dev/null 2>&1` @@ -24,7 +24,7 @@ They are all technically "files" which are open and which append themselves to every process that can run in the shell. For any command or program that you run, you will be able to access `0`, `1` and `2` for them. In this way they are similar to variables like -[`$0`](/Programming_Languages/Shell/Passing_arguments_and_options_to_Bash_scripts.md#passing-arguments) +[`$0`](Passing_arguments_and_options_to_Bash_scripts.md#passing-arguments) and -[`$@`](/Programming_Languages/Shell/Passing_arguments_and_options_to_Bash_scripts.md#passing-arguments). +[`$@`](Passing_arguments_and_options_to_Bash_scripts.md#passing-arguments). They have a universal meaning within the context of the shell runtime. diff --git a/zk/File_permissions_and_execution.md b/zk/File_permissions_and_execution.md index 756a1b6..d44843f 100644 --- a/zk/File_permissions_and_execution.md +++ b/zk/File_permissions_and_execution.md @@ -64,7 +64,7 @@ is: If you are working solo and not with group access to files, you can disregard assigning the other numerals, by putting zeros in as placeholders. -[Permission codes](https://www.notion.so/685254916b2642f189e6316b876e09c9) +[Permission codes](685254916b2642f189e6316b876e09c9) ### Example diff --git a/zk/Filesystems.md b/zk/Filesystems.md index 0832a35..b34ba39 100644 --- a/zk/Filesystems.md +++ b/zk/Filesystems.md @@ -11,7 +11,7 @@ tags: We cannot yet mount or interact with the partitions we have created. This is because we have not added a filesystem to each partition. -> A filesytem is a form of [database](/Databases/Basic_database_concepts.md); it +> A filesytem is a form of [database](Basic_database_concepts.md); it > supplies the structure to transform a simple block device into the > sophisticated hierarchy of files and subdirectories that users can understand. @@ -89,7 +89,7 @@ UUID=c53577b5-92ef-4a0a-9a19-e488bfdfa39c /home ext4 rw,relatime 0 2 ``` It shows my root and home filesystems and my -[swap](/Operating_Systems/Disks/Swap_space.md) file. Note that we use the UUID +[swap](Swap_space.md) file. Note that we use the UUID to name the partition rather than its name in `/dev/`. The order of the parameters is as follows: diff --git a/zk/Flip_flops.md b/zk/Flip_flops.md index dc7493a..70ab689 100644 --- a/zk/Flip_flops.md +++ b/zk/Flip_flops.md @@ -8,8 +8,8 @@ tags: [logic-gates, binary, memory, clock] # Flip-Flops A flip-flop is a type of -[latch](/Electronics_and_Hardware/Digital_circuits/Latches.md) that is connected -to a [clock signal](/Electronics_and_Hardware/Digital_circuits/Clock_signals.md) +[latch](Latches.md) that is connected +to a [clock signal](Clock_signals.md) and which executes in time with the clock's pulse. (Sometimes "latch" and "flip-flop" are used interchangeably but technically a latch is flip-flop without a clock connection.) diff --git a/zk/Foreign_keys_in_SQL.md b/zk/Foreign_keys_in_SQL.md index 19c5c62..e1d2531 100644 --- a/zk/Foreign_keys_in_SQL.md +++ b/zk/Foreign_keys_in_SQL.md @@ -8,7 +8,7 @@ tags: [SQL, relational-databases] # Creating views with foreign keys We utilise **foreign** and -[primary keys](/Databases/Relational_Databases/Primary_key.md) to create +[primary keys](Primary_key.md) to create relationships between tables in SQL. Foreign keys link data in one table to the data in another table and are how we cross-reference data in SQL. diff --git a/zk/Formal_proofs_in_propositional_logic.md b/zk/Formal_proofs_in_propositional_logic.md index e136e6b..f9489e1 100644 --- a/zk/Formal_proofs_in_propositional_logic.md +++ b/zk/Formal_proofs_in_propositional_logic.md @@ -71,7 +71,7 @@ only its result. ## Derivation rules Derivation rules are -[syntactic](/Logic/Propositional_logic/Syntax_of_sentential_logic.md) rather +[syntactic](Syntax_of_sentential_logic.md) rather than semantic. They are applied on the basis of their form rather than on the basis of the truth conditions of the sentences they are applied to. @@ -86,13 +86,13 @@ connective and one for its elimination. The main derivation rules: -- [Negation Introduction](/Logic/Proofs/Negation_Introduction.md) -- [Negation Elimination](/Logic/Proofs/Negation_Elimination.md) -- [Conjunction Introduction](/Logic/Proofs/Conjunction_Introduction.md) -- [Conjunction Elimination](/Logic/Proofs/Conditional_Elimination.md) -- [Disjunction Introduction](/Logic/Proofs/Disjunction_Introduction.md) -- [Disjunction Elimination](/Logic/Proofs/Disjunction_Elimination.md) -- [Conditional Introduction](/Logic/Proofs/Conditional_Introduction.md) -- [Disjunction Elimination](/Logic/Proofs/Disjunction_Elimination.md) -- [Biconditional Introduction](/Logic/Proofs/Biconditional_Introduction.md) -- [Biconditional Elimination](/Logic/Proofs/Biconditional_Elimination.md) +- [Negation Introduction](Negation_Introduction.md) +- [Negation Elimination](Negation_Elimination.md) +- [Conjunction Introduction](Conjunction_Introduction.md) +- [Conjunction Elimination](Conditional_Elimination.md) +- [Disjunction Introduction](Disjunction_Introduction.md) +- [Disjunction Elimination](Disjunction_Elimination.md) +- [Conditional Introduction](Conditional_Introduction.md) +- [Disjunction Elimination](Disjunction_Elimination.md) +- [Biconditional Introduction](Biconditional_Introduction.md) +- [Biconditional Elimination](Biconditional_Elimination.md) diff --git a/zk/Forms.md b/zk/Forms.md index a8e5863..7fc7dd8 100644 --- a/zk/Forms.md +++ b/zk/Forms.md @@ -10,7 +10,7 @@ tags: # Forms using hooks With hooks, form processing is exactly the same as -[classes](/Programming_Languages/React/Classes/Forms.md) in terms of the overall +[classes](Forms.md) in terms of the overall methodology, but the syntax is slightly different as a result of the `useState` hook. @@ -157,7 +157,7 @@ export default FormHookAbstracted; Note that instead of individual variables `email` , `phone`, `age` , this approach returns a single object `formValues` . We could therefore access the -individual values with e.g `[formValues.email](http://formvalues.email)` . +individual values with e.g `[formValues.email](formvalues.email)` . As it is an object, it makes resetting to the original state very easy, viz: diff --git a/zk/Four_bit_adder.md b/zk/Four_bit_adder.md index 8d626b6..b19067d 100644 --- a/zk/Four_bit_adder.md +++ b/zk/Four_bit_adder.md @@ -8,9 +8,9 @@ tags: [logic-gates, binary] # Four-bit adder A single -[half adder](/Electronics_and_Hardware/Digital_circuits/Half_adder_and_full_adder.md#half-adder) +[half adder](Half_adder_and_full_adder.md#half-adder) and -[full adder](/Electronics_and_Hardware/Digital_circuits/Half_adder_and_full_adder.md#fufll-adder) +[full adder](Half_adder_and_full_adder.md#fufll-adder) allows us to calculate the sum of two 1-bit numbers, but this is not much use in practice. To approximate what is really happening at the circuit level in computers we need to be able to add bigger binary numbers. We will demonstrate diff --git a/zk/Functions_in_Bash.md b/zk/Functions_in_Bash.md index c79f03e..4a85968 100644 --- a/zk/Functions_in_Bash.md +++ b/zk/Functions_in_Bash.md @@ -32,7 +32,7 @@ echo $expandedRange We can access all the arguments passed to a function using the `$@` syntax we encountered before when -[passing arguments to scripts](/Programming_Languages/Shell/Passing_arguments_to_Bash_scripts.md). +[passing arguments to scripts](Passing_arguments_to_Bash_scripts.md). (Here a function is a kind of script in miniature so the process is the same.) ```sh diff --git a/zk/Half_adder_and_full_adder.md b/zk/Half_adder_and_full_adder.md index ebfdb28..50be40c 100644 --- a/zk/Half_adder_and_full_adder.md +++ b/zk/Half_adder_and_full_adder.md @@ -12,7 +12,7 @@ tags: [logic-gates, binary] The half adder and full adder are components of digital circuits that enable us to carry out binary addition. Using adders and half adders we can add two binary numbers together. Adders are a type of [integrated circuit]() comprising certain -[logic gates](/Hardware/Digital_circuits/Logic_gates.md) where the arrangement +[logic gates](Logic_gates.md) where the arrangement allows for the representation of the addition of bits. ### Example addition @@ -90,7 +90,7 @@ We can represent this with a simple truth-table: | 1 | 1 | 0 | 1 | We can see that the sum bit column replicates the truth-conditions of -[XOR](/Electronics_and_Hardware/Digital_circuits/Logic_gates.md#xor-gate): +[XOR](Logic_gates.md#xor-gate): | P | Q | P V Q | | --- | --- | ----- | @@ -100,7 +100,7 @@ We can see that the sum bit column replicates the truth-conditions of | F | F | F | And the carry-out bit replicates the truth conditions of -[AND](/Electronics_and_Hardware/Digital_circuits/Logic_gates.md#and-gate): +[AND](Logic_gates.md#and-gate): | P | Q | P & Q | | --- | --- | ----- | diff --git a/zk/Hardware_Description_Language.md b/zk/Hardware_Description_Language.md index b21c1ea..70a4992 100644 --- a/zk/Hardware_Description_Language.md +++ b/zk/Hardware_Description_Language.md @@ -9,12 +9,12 @@ tags: [nand-to-tetris] An HDL is a declarative programming language used to describe the behaviour or structure of -[digital circuits](/Electronics_and_Hardware/Digital_circuits/Integrated_circuits.md). +[digital circuits](Integrated_circuits.md). They are used to simulate the circuit and check its response. The hardware designer specifies a chip's logic by writing an HDL program which is then rigorously tested. At this stage, a -[hardware simulator](/Computer_Architecture/Hardware_simulation.md) takes the +[hardware simulator](Hardware_simulation.md) takes the HDL program as input and creates a software representation of the chip logic. The designer can instruct the simulator to test the virtual chip on various sets of inputs. This is done to check the chip's functionality but also to benchmark @@ -76,7 +76,7 @@ circuit diagram #### Pins In an HDL program we distinguish internal pins along with the standard -[input and output pins](/Electronics_and_Hardware/Digital_circuits/Integrated_circuits.md). +[input and output pins](Integrated_circuits.md). At the level of the interface, we are concerned only with input and output pins (in the example program these are `a`, `b` and `out`). It is at the level of the implementation that internal pins are encountered. In the example these are the @@ -91,7 +91,7 @@ a NOT. `out` is the value that is computed based on the input pins of `a` and Along with the HDL file we also create a test file. This runs the chip against the inputs we supply, these will typically be equivalent to the (left-hand) truth-values column in a truth table which is the same as the parameters passed -to a [Boolean function](/Logic/Propositional_logic/Boolean_functions.md), for +to a [Boolean function](Boolean_functions.md), for example: ```vhdl diff --git a/zk/Hardware_simulation.md b/zk/Hardware_simulation.md index 10849be..b3c5bbf 100644 --- a/zk/Hardware_simulation.md +++ b/zk/Hardware_simulation.md @@ -8,7 +8,7 @@ tags: [nand-to-tetris] # Hardware simulation In order to test our -[HDL](/Computer_Architecture/Hardware_Description_Language.md) files we load +[HDL](Hardware_Description_Language.md) files we load them into the hardware simulator program. We will demonstrate this with the following XOR implementation: diff --git a/zk/Hexadecimal_number_system.md b/zk/Hexadecimal_number_system.md index f36168b..52f3c68 100644 --- a/zk/Hexadecimal_number_system.md +++ b/zk/Hexadecimal_number_system.md @@ -10,7 +10,7 @@ tags: [number-systems] Hexadecimal is the other main number system used in computing. It works in tandem with the -[binary number system](/Electronics_and_Hardware/Binary/Binary_number_system.md) +[binary number system](Binary_number_system.md) and provides an easier and more accessible means of working with long sequences of binary numbers. diff --git a/zk/IO_in_Python.md b/zk/IO_in_Python.md index 83a180a..d65e954 100644 --- a/zk/IO_in_Python.md +++ b/zk/IO_in_Python.md @@ -133,9 +133,9 @@ file.close() Obviously file access can raise errors - typically when the file you want to access does not exist (i.e. a `FileNotFoundError` -[exception](/Programming_Languages/Python/Syntax/Error_handling_in_Python.md)). +[exception](Error_handling_in_Python.md)). We can manage this scenario with -[exception handlers](/Programming_Languages/Python/Syntax/Error_handling_in_Python.md): +[exception handlers](Error_handling_in_Python.md): ```py try: diff --git a/zk/Instruction_set_architectures.md b/zk/Instruction_set_architectures.md index 7a6225a..65b21dd 100644 --- a/zk/Instruction_set_architectures.md +++ b/zk/Instruction_set_architectures.md @@ -6,9 +6,9 @@ tags: [CPU] # instruction set architectures -We know that the [ALU](/Computer_Architecture/CPU/Arithmetic_Logic_Unit.md) is +We know that the [ALU](Arithmetic_Logic_Unit.md) is responsible for the "execute" stage of the -[fetch, decode, execute](/Computer_Architecture/CPU/Fetch_decode_execute.md) +[fetch, decode, execute](Fetch_decode_execute.md) cycle, implementing the most basic binary operations such as adding two numbers. Accross different machines and CPU types there can be differences in how the @@ -39,7 +39,7 @@ Over time, new instructions have been added to the x86 architecture but they all maintain backwards compatibility with preceding generations. There have been different, successive generations of x86 corresponding to their -[word-size](/Electronics_and_Hardware/Binary/Signed_and_unsigned_numbers.md): +[word-size](Signed_and_unsigned_numbers.md): 16-bit, 32-bit, 64-bit. Word size here just means how many bits the processor can work with at a time. diff --git a/zk/Integrated_circuits.md b/zk/Integrated_circuits.md index c8f168e..8e50dc5 100644 --- a/zk/Integrated_circuits.md +++ b/zk/Integrated_circuits.md @@ -10,7 +10,7 @@ tags: [logic-gates] An integrated circuit (IC) is a single unit that comprises several logic gates designed for the easy construction of -[digital circuits](/Electronics_and_Hardware/Digital_circuits/Digital_circuits.md). +[digital circuits](Digital_circuits.md). The terms "integrated circuit" and "chip" are often used interchangeably. An IC puts the gates on a single piece of silicon that has electrical contact diff --git a/zk/Introduction.md b/zk/Introduction.md index b645080..83727e2 100644 --- a/zk/Introduction.md +++ b/zk/Introduction.md @@ -20,9 +20,9 @@ them as JSON. Although Mongo is not a relational database it has a structure that we can understand in relation to that paradigm. A **database** is obviously the overall structure. It comprises **collections** which are organised sets of data that -are analagous to [tables](/Databases/Relational_database_architecture.md#table) +are analagous to [tables](Relational_database_architecture.md#table) in RDBs. Within each collection are a series of **documents** which we can think -of as being equivalent to [rows](/Databases/Relational_database_architecture.md) +of as being equivalent to [rows](Relational_database_architecture.md) in RDB table: units that comprise the collection. A document is a container comprising key-value pairs in the manner of an object. diff --git a/zk/Iterating_through_complex_data_structures_in_Python.md b/zk/Iterating_through_complex_data_structures_in_Python.md index 6a38dab..1943f53 100644 --- a/zk/Iterating_through_complex_data_structures_in_Python.md +++ b/zk/Iterating_through_complex_data_structures_in_Python.md @@ -53,9 +53,9 @@ In Python there are two common ways to handle similar data structures: ### Sorting by common property Assuming the sub-lists have an identical structure, you can -[sort](/Programming_Languages/Python/Syntax/Sorting_lists_in_Python.md) them by +[sort](Sorting_lists_in_Python.md) them by a common property by passing a -[lambda function](/Programming_Languages/Python/Syntax/Lambdas_in_Python.md) to +[lambda function](Lambdas_in_Python.md) to the `key` value of `sorted()` and `.sort()`. For example, to sort the following list of lists by the second `age` property: @@ -108,8 +108,8 @@ data = [ ``` Below we use -[map](/Programming_Languages/Python/Syntax/Map_and_filter_in_Python.md) and a -[lambda function](/Programming_Languages/Python/Syntax/Lambdas_in_Python.md) to +[map](Map_and_filter_in_Python.md) and a +[lambda function](Lambdas_in_Python.md) to convert the first element of each iner list from a Unix timestamp to a readable string: @@ -118,7 +118,7 @@ string: ``` We could also use -[list comprehension](/Programming_Languages/Python/Syntax/List_comprehension_etc.md) +[list comprehension](List_comprehension_etc.md) to achieve the same outcome: ```py @@ -195,7 +195,7 @@ will simply overwrite the old value for that key. Accordingly, we create a dictionary which uses the unique key in each list as the key of each dictionary entry via -[dictionary comprehension](/Programming_Languages/Python/Syntax/List_comprehension_etc.md#dictionary-comprehension) +[dictionary comprehension](List_comprehension_etc.md#dictionary-comprehension) that loops through each value in the inner lists of the multidimensional array. We then parse the values of the dictionary into a list. diff --git a/zk/Joins_in_SQL.md b/zk/Joins_in_SQL.md index 3f7112b..74ce729 100644 --- a/zk/Joins_in_SQL.md +++ b/zk/Joins_in_SQL.md @@ -16,7 +16,7 @@ that share the same fields**. The output will be represented as a table but it is virtual, not an actual table. (If you wish to actually create a table or a view off the back of a join operation you should combine the join with the -[`CREATE TABLE`](/Databases/SQL/Create_an_SQL_table.md) command etc.) +[`CREATE TABLE`](Create_an_SQL_table.md) command etc.) ## Inner joins diff --git a/zk/Key_characteristics_of_GraphQL.md b/zk/Key_characteristics_of_GraphQL.md index 9b747eb..25aaae9 100644 --- a/zk/Key_characteristics_of_GraphQL.md +++ b/zk/Key_characteristics_of_GraphQL.md @@ -34,7 +34,7 @@ tags: [graphql, APIs] > The best way to think of GraphQL architecturally is to think of it as a > different technique for instantiating the _uniform interface_, _client/server > decoupling_, and _layered-system architecture_ contraints of traditional -> [REST APIs](/Databases/REST/RESTful_APIs.md#rest). However, instead of making +> [REST APIs](RESTful_APIs.md#rest). However, instead of making > GET or POST requests to a REST endpoint URL and passing parameters, you send a > structured query object. diff --git a/zk/LEDs.md b/zk/LEDs.md index ac573a5..e7cc444 100644 --- a/zk/LEDs.md +++ b/zk/LEDs.md @@ -21,6 +21,6 @@ generic diode circuit symbol: An LED diode lights up when the right amount of current flows through it. A standard LED has a maximum current of 20mA. An appropriate -[resistor](/Electronics_and_Hardware/Analogue_circuits/Resistance.md#resistors) +[resistor](Resistance.md#resistors) must therefore be added to the circuit to ensure the current doesn't exeedd this amount. diff --git a/zk/Lambda_programming_model.md b/zk/Lambda_programming_model.md index a139356..108a99a 100644 --- a/zk/Lambda_programming_model.md +++ b/zk/Lambda_programming_model.md @@ -14,12 +14,12 @@ The overall architecure consists in the following three processes: ## Triggers -See [AWS Lambda triggers](/DevOps/AWS/AWS_Lambda/Lambda_triggers.md) +See [AWS Lambda triggers](Lambda_triggers.md) ## Handler function See -[AWS Lambda handler function](/DevOps/AWS/AWS_Lambda/Lambda_handler_function.md) +[AWS Lambda handler function](Lambda_handler_function.md) ## Code diff --git a/zk/Lambda_triggers.md b/zk/Lambda_triggers.md index faecefe..cf0d87b 100644 --- a/zk/Lambda_triggers.md +++ b/zk/Lambda_triggers.md @@ -26,6 +26,6 @@ Here are some common trigger patterns ### SQS trigger -- a new message is added to an [SQS](/DevOps/AWS/AWS_Messaging_services.md#sqs) +- a new message is added to an [SQS](AWS_Messaging_services.md#sqs) queue - SQS triggers a Lambda function to execute diff --git a/zk/Lambdas_in_Python.md b/zk/Lambdas_in_Python.md index 1afc3f3..8b8660f 100644 --- a/zk/Lambdas_in_Python.md +++ b/zk/Lambdas_in_Python.md @@ -13,7 +13,7 @@ Whilst they are unnamed, just like JS, the value they return can be stored in a variable. They do not require the `return` keyword. They are most often used unnamed with the functional methods -[map, filter](/Programming_Languages/Python/Syntax/Map_and_filter_in_Python.md) +[map, filter](Map_and_filter_in_Python.md) and reduce. Here is the two syntaxes side by side: diff --git a/zk/Latches.md b/zk/Latches.md index 893b766..188412a 100644 --- a/zk/Latches.md +++ b/zk/Latches.md @@ -11,7 +11,7 @@ tags: [logic-gates, binary, memory] The **combinatorial digital circuits** we have looked at so far have been non-sequential. The outcome is a function of its immediate set of inputs and everything happens at once: there is no means of storing state for future use. -In other words there is no _[memory](/Computer_Architecture/Memory/Memory.md)_. +In other words there is no _[memory](Memory.md)_. In contrast, the output of a **sequential digital circuit** depends not only on its present set of inputs but also on past inputs to the circuit. It has some @@ -54,7 +54,7 @@ _The representation of an SR Latch in a digital circuit diagram_: The circuit diagram latch symbol obviously encapsulates more complex functionality that occurs at the sub-circuit level. We will demonstrate how this functionality can be achieved with two -[NOR](/Electronics_and_Hardware/Digital_circuits/Logic_gates.md#nor-gate) gates. +[NOR](Logic_gates.md#nor-gate) gates. The two gates are in a **cross-coupled configuration**. This basically means that the wires are crossed back on themselves such that the output of one is diff --git a/zk/Lifecycle_methods.md b/zk/Lifecycle_methods.md index 45d1bfa..2e3cdf9 100644 --- a/zk/Lifecycle_methods.md +++ b/zk/Lifecycle_methods.md @@ -45,7 +45,7 @@ The final phase is unmounting: when the component is removed from the DOM: 6. `componentWillUnmount()` -![React component lifecycle](../../../img/react-lifecycle.png) +![React component lifecycle](react-lifecycle.png) ## Side-effects: why lifecycle phases matter diff --git a/zk/List_comprehension_etc.md b/zk/List_comprehension_etc.md index 2d79b5b..717e011 100644 --- a/zk/List_comprehension_etc.md +++ b/zk/List_comprehension_etc.md @@ -11,8 +11,8 @@ element in a list without explicitly using loop syntax. Since its introduction to the language, the same functionality has become achievable by using functional methods like -[`map` and `filter`](/Programming_Languages/Python/Syntax/Map_and_filter_in_Python.md), -utilising [lambdas](/Programming_Languages/Python/Syntax/Lambdas_in_Python.md) +[`map` and `filter`](Map_and_filter_in_Python.md), +utilising [lambdas](Lambdas_in_Python.md) however list comprehension is often more straightforward and easier to read. ## Syntax diff --git a/zk/Lists_and_arrays.md b/zk/Lists_and_arrays.md index c737e79..0690f51 100644 --- a/zk/Lists_and_arrays.md +++ b/zk/Lists_and_arrays.md @@ -88,7 +88,7 @@ fi ``` Here we pass all the elements of the array to a -[test](/Programming_Languages/Shell/Test_values_in_Bash.md) condition which +[test](Test_values_in_Bash.md) condition which tests for an empty string. > NB: This will not immediately work in the context of a function. See below. @@ -96,7 +96,7 @@ tests for an empty string. ## Weirdness with functions When you pass an array as an argument to a -[function](/Programming_Languages/Shell/Functions_in_Bash.md) it will not +[function](Functions_in_Bash.md) it will not immediately be understood to be an array. When we use `$1` to individuate the first function argument this is read as @@ -163,4 +163,4 @@ done ``` We are leveraging this aspect of Bash when we -[loop through each character in a string](/Programming_Languages/Shell/Strings_in_bash.md#loop-through-each-character-in-a-string). +[loop through each character in a string](Strings_in_bash.md#loop-through-each-character-in-a-string). diff --git a/zk/Lists_in_Python.md b/zk/Lists_in_Python.md index d7bb52b..bac3af5 100644 --- a/zk/Lists_in_Python.md +++ b/zk/Lists_in_Python.md @@ -190,4 +190,4 @@ print(merged_list) # Output: [1, 2, 3, 4, 5, 6] ## See also -[Sorting lists in Python](/Programming_Languages/Python/Syntax/Sorting_lists_in_Python.md) +[Sorting lists in Python](Sorting_lists_in_Python.md) diff --git a/zk/Logic_gates.md b/zk/Logic_gates.md index e092ac8..c49ded5 100644 --- a/zk/Logic_gates.md +++ b/zk/Logic_gates.md @@ -19,19 +19,19 @@ tags: [logic-gates, binary] Logic gates are the basic building blocks of digital computing. **A logic gate is an electrical circuit that has one or more than one input and only one output.** The input and output points of the gate are -[pins](/Electronics_and_Hardware/Digital_circuits/Integrated_circuits.md) The +[pins](Integrated_circuits.md) The input controls the output and the logic determining which types of input (on/off) lead to specific outputs (on/off) is isomorphic with the truth-conditions of the -[Boolean connectives](/Logic/Truth-functional_connectives.md) specifiable in -terms of [truth tables](/Logic/Truth-tables.md). +[Boolean connectives](Truth-functional_connectives.md) specifiable in +terms of [truth tables](Truth-tables.md). Physically, what 'travels through' the gates is electrical current and what constitutes the 'gate' is a -[transistor](/Electronics_and_Hardware/Digital_circuits/Transistors.md) +[transistor](Transistors.md) responding to the current. Going up a level of abstraction, the current/ charge is identified with a -[bit](/Electronics_and_Hardware/Binary/Binary_units_of_measurement.md#binary-units-of-measurement). +[bit](Binary_units_of_measurement.md#binary-units-of-measurement). It is bits that go into the gate and bits which come out: binary information that may be either 1 or 0. @@ -45,10 +45,10 @@ one elemen>tary gate and/or other composite gates. An example of a composite gate would be a three-way AND. An AND with three inputs rather than the standard two that furnish the elementary AND gate. This gate would output 1 when all three gates have the value 1 and 0 otherwise. -[Adders](/Electronics_and_Hardware/Digital_circuits/Half_adder_and_full_adder.md) -and [latche>s](/Electronics_and_Hardware/Digital_circuits/Latches.md) whilst +[Adders](Half_adder_and_full_adder.md) +and [latche>s](Latches.md) whilst being -[integrated circuits](/Electronics_and_Hardware/Digital_circuits/Integrated_circuits.md) +[integrated circuits](Integrated_circuits.md) are also, technically speaking, composite gates. ## Gate interface / gate implementation @@ -73,7 +73,7 @@ represented in the interface diagram. > is a one-to-many relationship at work here. From the point of view of the user > interface these differences should not be detectable. This is another example > of -> [hardware abstraction](/Computer_Architecture/Hardware_abstraction_and_modularity.md) +> [hardware abstraction](Hardware_abstraction_and_modularity.md) ## NOT gate @@ -138,7 +138,7 @@ NANDs alone. ## OR gate > The OR gate represents the truth conditions of the -> [disjunction](/Logic/Truth-functional_connectives### Truth +> [disjunction](Truth-functional_connectives### Truth > conditions.md#disjunction) truth functional connective ### Symbol diff --git a/zk/Logical_consistency.md b/zk/Logical_consistency.md index 1434008..c5d4002 100644 --- a/zk/Logical_consistency.md +++ b/zk/Logical_consistency.md @@ -68,7 +68,7 @@ In other terms, if you can derive a contradiction from the set, the set is logically inconsistent. A -[contradiction](/Logic/General_concepts/Logical_truth_and_falsity.md#logical-falsity) +[contradiction](Logical_truth_and_falsity.md#logical-falsity) has very important consequences for reasoning because if a set of propositions is inconsistent, any other proposition is derivable from it. @@ -79,7 +79,7 @@ sequence of reasoning._ Here we want to derive some proposition $Q$. If we can derive a contradiction from its negation as an assumption then, by the -[negation elimination](/Logic/Proofs/Negation_Elimination.md)) rule, we can +[negation elimination](Negation_Elimination.md)) rule, we can assert $Q$. This is why contradictions should be avoided in arguments, they 'prove' everything which, by association, undermines any particular premise you are trying to assert. diff --git a/zk/Logical_equivalence.md b/zk/Logical_equivalence.md index 03ee328..6e23674 100644 --- a/zk/Logical_equivalence.md +++ b/zk/Logical_equivalence.md @@ -39,6 +39,6 @@ $$ Note that the property of equivalence stated in terms of derivablity above is identical to the derivation rule for the -[material biconditional](/Logic/Proofs/Biconditional_Introduction.md): +[material biconditional](Biconditional_Introduction.md): -![bi-intro.png](/img/bi-intro.png) +![bi-intro.png](bi-intro.png) diff --git a/zk/Logical_indeterminacy.md b/zk/Logical_indeterminacy.md index d4d4a7e..e0e8371 100644 --- a/zk/Logical_indeterminacy.md +++ b/zk/Logical_indeterminacy.md @@ -8,9 +8,9 @@ tags: [propositional-logic] The vast majority of propositions in natural and formal logical languages are **neither -[logically true](/Logic/General_concepts/Logical_truth_and_falsity.md#logical-truth) +[logically true](Logical_truth_and_falsity.md#logical-truth) or -[logically false](/Logic/General_concepts/Logical_truth_and_falsity.md#logical-falsity)**. +[logically false](Logical_truth_and_falsity.md#logical-falsity)**. This makes sense because propositions of this form are all either tautologies or contradictions and as such do not express information about the state of events in the world. We call propositions that are neither logically true or logically diff --git a/zk/Logical_possibility_and_necessity.md b/zk/Logical_possibility_and_necessity.md index 4074ac2..6753d34 100644 --- a/zk/Logical_possibility_and_necessity.md +++ b/zk/Logical_possibility_and_necessity.md @@ -9,8 +9,8 @@ tags: [propositional-logic] ## Logical possibility In distinguishing the properties of -[logical consistency](/Logic/General_concepts/Logical_consistency.md) and -[validity](/Logic/General_concepts/Validity_and_entailment.md) we make tacit use +[logical consistency](Logical_consistency.md) and +[validity](Validity_and_entailment.md) we make tacit use of the notion of **possibility**. This is because when we consider the validity of an argument we are assessing truth-conditions and this consists in asking ourselves what could or could not be the case: were it such that _P_, then it @@ -60,7 +60,7 @@ From this we can derive the following property of logical possibility: A proposition is _logically necessary_ if it is true in every logically possible circumstance which is to say: true on every possible truth functional assignment. Necessity and -[logical truth](/Logic/General_concepts/Logical_truth_and_falsity.md#logical-truth) +[logical truth](Logical_truth_and_falsity.md#logical-truth) are therefore synonyms: anything that is logically true (a tautology) is true by necessity (could not be otherwise.) diff --git a/zk/Logical_truth_and_falsity.md b/zk/Logical_truth_and_falsity.md index 1ad422a..78a77cf 100644 --- a/zk/Logical_truth_and_falsity.md +++ b/zk/Logical_truth_and_falsity.md @@ -25,7 +25,7 @@ Apples are fruits and apples are not fruits Neither proposition can be true because the truth of the first clause is contradicted by the second. By the principle of -[consistency](/Logic/General_concepts/Logical_consistency.md), it is not +[consistency](Logical_consistency.md), it is not possible for both clauses to be true at once therefore the proposition, overall has the truth value of false. @@ -96,7 +96,7 @@ technicalities that have philosophically interesting consequences. - If an argument contains premises which are logically false than this argument will perforce be valid. This is because one cannot consistently assert the premises and deny the conclusion which is the definition of - [validity](/Logic/General_concepts/Validity_and_entailment.md). However the + [validity](Validity_and_entailment.md). However the _reason_ why one cannot consistently assert the premises and deny the conclusions is because one cannot consistently assert the premises - they conflict with each other. Furthermore as the argument contains false premises, diff --git a/zk/Managing_environments.md b/zk/Managing_environments.md index 9a071a1..86714ec 100644 --- a/zk/Managing_environments.md +++ b/zk/Managing_environments.md @@ -18,7 +18,7 @@ With a full-scale Node application you will typically run three environments: To determine the current environment we can use the variable **`process.env.NODE_ENV`** from the -[global process object](/Programming_Languages/Node/Architecture/Process_object.md). +[global process object](Process_object.md). This works universally regardless of the kind of Node app we are building. If you have not manually set up your environments, **`process.env.NODE_ENV`** @@ -29,7 +29,7 @@ will return `undefined`. #### For the session `NODE_ENV` is a bash -[environment variable](/Programming_Languages/Shell_Scripting/Environmental_and_shell_variables.md) +[environment variable](Environmental_and_shell_variables.md) like any other. So we can set it in the normal way: ```bash @@ -45,7 +45,7 @@ In Express, there is a built in method for retrieving the current envrionment: ## Configuring environments -We use the third-party [Config](https://github.com/node-config/node-config) +We use the third-party [Config](node-config) package to manage different configurations based on the environment. Once installed we set up a dedicated config directory with a structure as @@ -85,7 +85,7 @@ for our application. We obviously shouldn't store this data openly in our config files since it would be made public. We can do so securely by utilising -[environmental variables](../Shell_Scripting/Environmental_and_shell_variables.md) +[environmental variables](Environmental_and_shell_variables.md) alongside the config pacakage. We create a file called `custom-environment-variables` (must be called this) and diff --git a/zk/Memoization.md b/zk/Memoization.md index a4e3e31..b8d6673 100644 --- a/zk/Memoization.md +++ b/zk/Memoization.md @@ -71,7 +71,7 @@ const handleSubmit = useCallback( ); ``` -Note that the syntax is similar to [useEffect](./useEffect.md): there is a +Note that the syntax is similar to [useEffect](useEffect.md): there is a dependency array. The effect is the same: the function contained within `useCallback` will only re-rendered if one of these dependencies changes. However (see next section) the function will run in its memoized form on every diff --git a/zk/Memory.md b/zk/Memory.md index c8e1a0b..15a7d9a 100644 --- a/zk/Memory.md +++ b/zk/Memory.md @@ -12,7 +12,7 @@ tags: [memory, motherboard] > A CPU is just an operator on memory. It reads its instructions and data from > the memory and writes back out to the memory. (Ward 2021) -When a [CPU](/Computer_Architecture/CPU/CPU_architecture.md) executes a program, +When a [CPU](CPU_architecture.md) executes a program, it needs a place to store the program's **instructions** and **related data**. This is the role of memory. @@ -43,11 +43,11 @@ DRAM uses capacitors to create the memory cell: In a DRAM cell, each bit of data is stored as a charge in a capacitor. The presence of charge represents a '1' bit and the absence of charge represents a '0' bit. Each of these cells is paired with a -[transistor](/Electronics_and_Hardware/Digital_circuits/Transistors.md) that +[transistor](Transistors.md) that controls the reading and writing of data. However capacitors lose -[charge](/Electronics_and_Hardware/Analogue_circuits/Current.md) over time due +[charge](Current.md) over time due to leaks. As a result DRAM is memory that needs to be refreshed (recharged) frequently. For this reason and because it only uses one transistor and capacitor per bit, DRAM is the less expensive form of volatile memory. @@ -59,7 +59,7 @@ implementation is different. Unlike DRAM it doesn't use capacitors. Consequently the transistors do not leak or need to be refreshed, hence why SRAM is _static_ and DRAM is _dynamic_. -SRAM uses [flip flops](/Electronics_and_Hardware/Digital_circuits/Flip_flops.md) +SRAM uses [flip flops](Flip_flops.md) to store the bits. It also uses multiple transistors per bit. This makes it faster than DRAM but more expensive. DRAM is at least ten times slower than SRAM. @@ -68,18 +68,18 @@ SRAM. The following steps outline the way in which memory interacts with the processor during computational cycles, once the -[bootstrapping](/Operating_Systems/Boot_process.md) process has completed and +[bootstrapping](Boot_process.md) process has completed and the OS kernel is itself loaded into memory. 1. A file is loaded from the harddisk into memory. 2. The instruction at the first address is sent to the CPU, travelling accross - the data bus part of the [system bus](/Computer_Architecture/Bus.md). + the data bus part of the [system bus](Bus.md). 3. The CPU processes this instruction and then sends a request accross the address bus part of the system bus for the next instruction to the memory controller within the - [chipset](/Computer_Architecture/Chipset_and_controllers.md). + [chipset](Chipset_and_controllers.md). 4. The chipset finds where this instruction is stored within the - [DRAM](/Computer_Architecture/Memory/Memory.md#dram) and issues a request to + [DRAM](Memory.md#dram) and issues a request to have it read out and send to the CPU over the data bus. > This is a simplified account; it is not the case that only single requests are @@ -177,7 +177,7 @@ is the number of bits. We need to reverse this formula to find out how many bits we need to represent a given number of addresses. We can do this with a -[logarithm](/Mathematics/Algebra/Logarithms.md). +[logarithm](Logarithms.md). We can reverse the formula as follows: number of bits = $\log_2$(number of addresses). @@ -195,7 +195,7 @@ Using memory addresses we end up with tables like the following: | 0000000000000010 | 0010001001001010 | This is hard to parse so we can instead use -[hexadecimal numbers](/Electronics_and_Hardware/Binary/Hexadecimal_number_system.md) +[hexadecimal numbers](Hexadecimal_number_system.md) to represent the addresses: | Memory address (as hex) | Data (as binary) | @@ -205,7 +205,7 @@ to represent the addresses: | 0x0002 | 0010001001001010 | By itself, the the data is meaningless but we know from -[binary encoding](/Electronics_and_Hardware/Binary/Binary_encoding.md) that the +[binary encoding](Binary_encoding.md) that the binary data will correspond to some meaningful data, such as a character or a colour, depending on the encoding scheme used. The above table could correspond to the characters for 'A', 'B' and 'C' in the ASCII encoding scheme: diff --git a/zk/Messaging_services.md b/zk/Messaging_services.md index 9f3ded9..03cff4d 100644 --- a/zk/Messaging_services.md +++ b/zk/Messaging_services.md @@ -15,7 +15,7 @@ apps and software components built in AWS, with automatic encryption. It helps with decoupling and scaling. As the name indicates, its operating mode is that of a -[queue](/Data_Structures/Queue.md) data structure offering first-in, first-out +[queue](Queue.md) data structure offering first-in, first-out and other queue implementations. An example application of this would be to set up an SQS queue that receives diff --git a/zk/Middleware.md b/zk/Middleware.md index e78cc83..5eadbb8 100644 --- a/zk/Middleware.md +++ b/zk/Middleware.md @@ -73,10 +73,10 @@ It would make more sense to run this only in development. ### Accessing current Node environment We can control which middleware we run via the Node envrionment variables: -`process.env` (see for instance [ports](./Ports.md)). +`process.env` (see for instance [ports](Ports.md)). We could set -[Morgan](/Programming_Languages/NodeJS/Modules/Third_party/Morgan.md) to run +[Morgan](Morgan.md) to run only in development with: ```js diff --git a/zk/Mixed_and_improper_fractions.md b/zk/Mixed_and_improper_fractions.md index 21abd78..dc52f2a 100644 --- a/zk/Mixed_and_improper_fractions.md +++ b/zk/Mixed_and_improper_fractions.md @@ -39,7 +39,7 @@ $$ $$ But we know that when we -[add fractions with a common denominator](./Add_Subtract_Fractions.md#adding-subracting-fractions-with-common-denominators), +[add fractions with a common denominator](Add_Subtract_Fractions.md#adding-subracting-fractions-with-common-denominators), we only add the numerators, not the denominators. Thus the calculation would actually be: @@ -108,7 +108,7 @@ $$ $$ 2. Then carry out the multiplication - [using factorization](./Multiplying_fractions.md#prime-factorisation-in-place): + [using factorization](Multiplying_fractions.md#prime-factorisation-in-place): $$ \begin{split} @@ -137,7 +137,7 @@ $$ Again we convert the mixed fraction into an improper fraction and then follow the requisite rule, in the case of division this is to -[invert and multiply]('./../Dividing_fractions.md#formal-specification-of-how-to-divide-fractions'). +[invert and multiply](Dividing_fractions.md#formal-specification-of-how-to-divide-fractions'). Calculate $-4 \frac{4}{5} \div 5 \frac{3}{5}$. diff --git a/zk/Modelling_relationships.md b/zk/Modelling_relationships.md index 6ff0a2b..e116a0a 100644 --- a/zk/Modelling_relationships.md +++ b/zk/Modelling_relationships.md @@ -12,7 +12,7 @@ a collection with the proprties `age` and `publications` and the author name, say `Tosh Gnomay` was a document in this collection? This means we would have an interaction between two collections. In this entry we will look at how to work with interrelated collections. This is equivalent to establishing -[joins](/Databases/SQL/10_Joins.md) in a relational database. +[joins](10_Joins.md) in a relational database. There are two main approaches to modelling relationships between data: **normalisation** and **denormalisation**. diff --git a/zk/Monitoring_processes_and_resources.md b/zk/Monitoring_processes_and_resources.md index ac46659..bf0539d 100644 --- a/zk/Monitoring_processes_and_resources.md +++ b/zk/Monitoring_processes_and_resources.md @@ -10,7 +10,7 @@ tags: [systems-programming] ### `top`/`htop` -We can use [ps](/Programming_Languages/Shell_Scripting/Processes.md) to list the +We can use [ps](Processes.md) to list the currently running processes but it does not provide much information about the resource metrics or how the process changes over time. We can use `top` to get more information. @@ -60,7 +60,7 @@ _Here I have pressed `u` to show only the processes associated with my user:_ ``` - `VIRT` - The total amount of - [virtual memory](/Operating_Systems/Virtual_memory_and_the_MMU.md) used by + [virtual memory](Virtual_memory_and_the_MMU.md) used by the process including: program code, data, shared libraries, pages that have been swapped, pages that have been mapped but not used. - `RES` @@ -68,7 +68,7 @@ _Here I have pressed `u` to show only the processes associated with my user:_ - The non swapped _physical_ memory the process has used - `SHR` - The size of the process's - [shared pages](/Operating_Systems/Virtual_memory_and_the_MMU.md#shared-pages) + [shared pages](Virtual_memory_and_the_MMU.md#shared-pages) - `S` - Status: - S for sleeping (idle) @@ -104,13 +104,13 @@ procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- - Total kbs swapped to disk - Total kbs free - Total kbs currently in - [buffer](/Hardware/Memory/Role_of_memory_in_computation.md#relation-between-cache-and-buffers) + [buffer](Role_of_memory_in_computation.md#relation-between-cache-and-buffers) and not written - Total amount of virtual memory in the - [cache](/Hardware/Memory/Role_of_memory_in_computation.md#relation-between-cache-and-buffers) + [cache](Role_of_memory_in_computation.md#relation-between-cache-and-buffers) - `swap` - Distinguishes amount of memory - [swapped](/Operating_Systems/Disks/Swap_space.md) in (`si`) to memory and + [swapped](Swap_space.md) in (`si`) to memory and swapped out (`so`) to disk - `io` - Disk actions @@ -135,7 +135,7 @@ gives me some useful info about which files VS Code is using: ## System calls: `strace` A system call is when a process requests a service from the -[kernel](/Operating_Systems/The_Kernel.md), for instance an I/O operation to +[kernel](The_Kernel.md), for instance an I/O operation to memory. We can trace these system calls with `strace`. ## CPU performance @@ -167,7 +167,7 @@ $ uptime We know that processes primarily interact with virtual memory in the form of pages which are then translated to physical blocks by the kernel via the -[MMU](/Operating_Systems/Virtual_memory_and_the_MMU.md). There are several tools +[MMU](Virtual_memory_and_the_MMU.md). There are several tools which provide windows onto this process. ### System page size @@ -186,7 +186,7 @@ This will typically be the same for all Linux systems. `free` displays the total amount of free and¬used physical and swap memory in the system, as well as the -[buffers and caches](/Hardware/Memory/Role_of_memory_in_computation.md#relation-between-cache-and-buffers) +[buffers and caches](Role_of_memory_in_computation.md#relation-between-cache-and-buffers) used by the kernel. ```bash diff --git a/zk/Motherboard.md b/zk/Motherboard.md index 46b766d..2191aab 100644 --- a/zk/Motherboard.md +++ b/zk/Motherboard.md @@ -11,9 +11,9 @@ tags: [motherboard] The motherboard is the foundation of a computer. It allocates power and allows communication to and between the -[CPU](/Computer_Architecture/CPU/CPU_architecture.md), -[RAM](/Computer_Architecture/Memory/Memory.md), -[harddisk](/Operating_Systems/Disks/What_are_disks.md) and all other hardware +[CPU](CPU_architecture.md), +[RAM](Memory.md), +[harddisk](What_are_disks.md) and all other hardware components. It is a printed circuit board and is always the largest board within the diff --git a/zk/Multiplying_fractions.md b/zk/Multiplying_fractions.md index 0f984ee..b45e673 100644 --- a/zk/Multiplying_fractions.md +++ b/zk/Multiplying_fractions.md @@ -31,7 +31,7 @@ $$ It would be laborious to reduce such a large product using factor trees or the repeated application of divisors, as defined in -[reducing fractions](./Reducing_fractions.md). We can use a more efficient +[reducing fractions](Reducing_fractions.md). We can use a more efficient method. This method can be applied at the point at which we conduct the multiplication rather than afterwards once we have the product. We express the the initial multiplicands as prime factors: diff --git a/zk/Mutations_with_Apollo_Client.md b/zk/Mutations_with_Apollo_Client.md index 7d0b49f..91c7beb 100644 --- a/zk/Mutations_with_Apollo_Client.md +++ b/zk/Mutations_with_Apollo_Client.md @@ -150,7 +150,7 @@ const resolvers = { We invoke the `useMutation` hook to issue mutations from the client-side. As with queries and -[query constants](/Databases/GraphQL/Apollo/Apollo_Client.md#query-constants) we +[query constants](Apollo_Client.md#query-constants) we wrap our mutation in a `gql` template string: ```js diff --git a/zk/Negation_Elimination.md b/zk/Negation_Elimination.md index 2fe5405..ffa21ce 100644 --- a/zk/Negation_Elimination.md +++ b/zk/Negation_Elimination.md @@ -6,7 +6,7 @@ tags: [] # Negation Elimination -Like the [introduction](/Logic/Proofs/Negation_Introduction.md) rule for +Like the [introduction](Negation_Introduction.md) rule for negation, the elimination rule also works by deriving a contradiction. It is basically _Negation Introduction_ in reverse. Instead of starting the sub-proof with a true proposition from which you derive a contradiction, you start with diff --git a/zk/Network_requests_in_Python.md b/zk/Network_requests_in_Python.md index 4a7e31b..33502d1 100644 --- a/zk/Network_requests_in_Python.md +++ b/zk/Network_requests_in_Python.md @@ -7,7 +7,7 @@ tags: [python, APIs] # Making network requests in Python We can use the `requests` package to make API requests to -[RESTful](/Databases/REST/RESTful_APIs.md) resources and handle the data as +[RESTful](RESTful_APIs.md) resources and handle the data as JSON. ```sh @@ -68,7 +68,7 @@ Running `main` returns: ``` This is JSON but in Python is a -[dictionary](/Programming_Languages/Python/Syntax/Dictionaries_in_Python.md) +[dictionary](Dictionaries_in_Python.md) We can use standard dictionary methods to handle the data. For example, we'll add to the existing `try` block: diff --git a/zk/Node_and_MySQL_db.md b/zk/Node_and_MySQL_db.md index 9acdac1..81938d1 100644 --- a/zk/Node_and_MySQL_db.md +++ b/zk/Node_and_MySQL_db.md @@ -7,7 +7,7 @@ tags: [docker, SQL, node-js] # Docker example: NodeJS backend with MySQL database -We will utilise [Docker Compose](/DevOps/Docker/Docker_Compose.md) to combine +We will utilise [Docker Compose](Docker_Compose.md) to combine two containers: - A container for the NodeJS backend @@ -19,7 +19,7 @@ configuration. Each of the files listed below would be saved to the same source directory which would then form the basis of the -[build context](/DevOps/Docker/Creating_a_Docker_image.md#creating-a-docker-image). +[build context](Creating_a_Docker_image.md#creating-a-docker-image). ## Docker Compose file @@ -136,7 +136,7 @@ docker-compose -up In the example, the database connection information in the Node source is coming from the -[`process.env`](/Programming_Languages/NodeJS/Architecture/Managing_environments.md) +[`process.env`](Managing_environments.md) object, which itself is sourcing the values `MYSQL_HOST`, `MYSQL_PASSWORD` etc from the Docker compose file. Therefore these values are hardcoded there. diff --git a/zk/Non_null_assertion.md b/zk/Non_null_assertion.md index a0ff720..aa124f3 100644 --- a/zk/Non_null_assertion.md +++ b/zk/Non_null_assertion.md @@ -36,5 +36,5 @@ However it should be used carefully and sparingly because you are obviously turning off core type-checking and overuse nullifies the purpose of TypeScript. One way to get around it is to use better -[type-guarding](./Type_guarding_and_narrowing.md) and conditionality and to +[type-guarding](Type_guarding_and_narrowing.md) and conditionality and to cover cases where the value may be undefined. diff --git a/zk/Ohms_Law.md b/zk/Ohms_Law.md index b2b5f4a..3b313fc 100644 --- a/zk/Ohms_Law.md +++ b/zk/Ohms_Law.md @@ -8,9 +8,9 @@ tags: [physics, electricity] # Ohm's Law The relationship between -[current](/Electronics_and_Hardware/Analogue_circuits/Current.md), -[voltage](/Electronics_and_Hardware/Analogue_circuits/Voltage.md), and -[resistance](/Electronics_and_Hardware/Analogue_circuits/Resistance.md) is +[current](Current.md), +[voltage](Voltage.md), and +[resistance](Resistance.md) is defined by Ohm's Law: > The current flowing from one point to another is equal to the voltage accross diff --git a/zk/Package_management.md b/zk/Package_management.md index 1a68e7a..cde59a9 100644 --- a/zk/Package_management.md +++ b/zk/Package_management.md @@ -32,7 +32,7 @@ We can pinpoint specific dependencies in the `package.json`, e.g. See whether your dependency version is out of date use `npm outdated`. This gives us a table, for example: -![Pasted image 20220411082627.png](/img/Pasted_image_20220411082627.png) +![Pasted image 20220411082627.png](Pasted_image_20220411082627.png) - _Latest_ tells us the latest release available from the developers - _Wanted_ tells us the version that our `package.json` rules target. To take @@ -48,4 +48,4 @@ gives us a table, for example: `npm update` only updates from _current_ to _wanted_. In other words it only updates in accordance with your caret and tilde rules applied to -[semantic versioning](/Software_Engineering/Semantic_versioning.md). +[semantic versioning](Semantic_versioning.md). diff --git a/zk/Partitions.md b/zk/Partitions.md index a3bbbdc..3e9a0f9 100644 --- a/zk/Partitions.md +++ b/zk/Partitions.md @@ -9,9 +9,9 @@ tags: # Disk partitions -A disk is divided up into [partitions](/Operating_Systems/Disks/Partitions.md) +A disk is divided up into [partitions](Partitions.md) which are subsections of the overall disk. The kernel presents each partition as -a [block device](/Operating_Systems/Devices.md#Devices) as it would with an +a [block device](Devices.md#Devices) as it would with an entire disk. The disk dedicates a small part of its contents to a **partition table**: this @@ -81,7 +81,7 @@ The two tools disclose that the main harddrive is `/dev/nvme0n1` (equivalent to the BIOS. In Linux this will be GRUB. - Root dir (`/dev/nvme0n1p2`) - This is the domain of the - [superuser](/Operating_Systems/User_Space.md#root-user-superuser). The part + [superuser](User_Space.md#root-user-superuser). The part of the filesystem that you need sudo priveleges to access and where you manage users - Home dir (`/dev/nvme0n1p3`) @@ -101,7 +101,7 @@ Most standard partition tables allow for primary, extended and logical partitions. The primary partition is the part of the harddisk that contains the operating system and is thus described as 'bootable' and may be called the 'boot partition'. During the bootstrapping process this is injected into memory as the -[kernel](/Operating_Systems/The_Kernel.md). +[kernel](The_Kernel.md). The extended partition is basically everything other than the primary partition. This is typically subdivided into other partitions that are called _logical_ diff --git a/zk/Passing_arguments_and_options_to_Bash_scripts.md b/zk/Passing_arguments_and_options_to_Bash_scripts.md index 49957a3..99cbc12 100644 --- a/zk/Passing_arguments_and_options_to_Bash_scripts.md +++ b/zk/Passing_arguments_and_options_to_Bash_scripts.md @@ -16,7 +16,7 @@ must run `chmod` to make them executable. When we issue a command like When we run a program like `cd` or `npm` we don’t have to type `./cd.sh` or `./npm.sh`. This is because a reference to the program file is already in our -[`$PATH`](/Programming_Languages/Shell/The_PATH.md). +[`$PATH`](The_PATH.md). In the case of `cd`, this is an in-built program and as such it will be sourced from a binary and we have a reference to the binary in path. In the case of diff --git a/zk/Practical_walkthrough_Lambda_creation_within_AWS.md b/zk/Practical_walkthrough_Lambda_creation_within_AWS.md index c199488..a4a2b68 100644 --- a/zk/Practical_walkthrough_Lambda_creation_within_AWS.md +++ b/zk/Practical_walkthrough_Lambda_creation_within_AWS.md @@ -25,10 +25,10 @@ boilerplate: ## Adding a trigger -Next we need to add a [trigger](/DevOps/AWS/AWS_Lambda/Lambda_triggers.md) that +Next we need to add a [trigger](Lambda_triggers.md) that execute the handler. -We will do this using [AWS API Gateway](/DevOps/AWS/AWS_API_Gateway.md). We +We will do this using [AWS API Gateway](AWS_API_Gateway.md). We select "Add trigger" from the dashboard view and input basic settings: ![](/img/api-gateway-trigger.png) diff --git a/zk/Prefixes_for_units_of_electrical_measurement.md b/zk/Prefixes_for_units_of_electrical_measurement.md index a597171..46c2bc6 100644 --- a/zk/Prefixes_for_units_of_electrical_measurement.md +++ b/zk/Prefixes_for_units_of_electrical_measurement.md @@ -7,7 +7,7 @@ tags: [physics, electricity, exponents] # Prefixes for unit of electrical measurement In electronics we are often dealing with units that are very large or very -small, thus we rely on [exponents](/Mathematics/Algebra/Exponents.md) for formal +small, thus we rely on [exponents](Exponents.md) for formal expression. | Prefix | Symbol | Expression as exponent | Expression as decimal value | English word | diff --git a/zk/Prime_factorization.md b/zk/Prime_factorization.md index b72e97c..ec084b4 100644 --- a/zk/Prime_factorization.md +++ b/zk/Prime_factorization.md @@ -19,11 +19,11 @@ main approaches to this: > $n$. We then repeat this process with the resulting factors working > recursively until the numbers we are left with are primes. -![Untitled Diagram-Page-1.drawio.png](../../img/Untitled%20Diagram-Page-1.drawio.png) +![Untitled Diagram-Page-1.drawio.png](Untitled%20Diagram-Page-1.drawio.png) _The prime factors of 27 are 2, 3, 3_ it doesn't matter which products we choose as the interim factors, we should always reach the same outcome: -![Untitled Diagram-Page-3.drawio 1.png](../../img/Untitled%20Diagram-Page-3.drawio%201.png) +![Untitled Diagram-Page-3.drawio 1.png](Untitled%20Diagram-Page-3.drawio%201.png) -![Untitled Diagram-Page-2.drawio.png](../../img/Untitled%20Diagram-Page-2.drawio.png) +![Untitled Diagram-Page-2.drawio.png](Untitled%20Diagram-Page-2.drawio.png) diff --git a/zk/Primitive_types.md b/zk/Primitive_types.md index 94581f9..17721e4 100644 --- a/zk/Primitive_types.md +++ b/zk/Primitive_types.md @@ -40,11 +40,11 @@ const store: string[] = []; // Empty array ## Object `Object` is a valid type declaration in TS but it is not particularly helpful -since it becomes similar to using [any](./Any.md) given that most primitive +since it becomes similar to using [any](Any.md) given that most primitive types in JavaScripts prototypically inherit from an Object. Generally, when you use objects in TypeScript you type them as -[custom types](./Custom_types.md). +[custom types](Custom_types.md). ## Array of (untyped) objects diff --git a/zk/Processes.md b/zk/Processes.md index de05c15..c73747c 100644 --- a/zk/Processes.md +++ b/zk/Processes.md @@ -7,7 +7,7 @@ tags: # Processes (`ps`) -`ps` allows us to control [user processes](/Operating_Systems/The_Kernel.md) +`ps` allows us to control [user processes](The_Kernel.md) from the shell. The command in its most minimal application returns the following diff --git a/zk/Python_data_types.md b/zk/Python_data_types.md index 5122583..36ac03a 100644 --- a/zk/Python_data_types.md +++ b/zk/Python_data_types.md @@ -16,7 +16,7 @@ tags: [python, data-types] The core data-types are as follows: -- [str](/Programming_Languages/Python/Syntax/Strings_in_Python.md) +- [str](Strings_in_Python.md) - bool - float - double diff --git a/zk/Python_interpreter.md b/zk/Python_interpreter.md index 4272eec..7977546 100644 --- a/zk/Python_interpreter.md +++ b/zk/Python_interpreter.md @@ -32,7 +32,7 @@ In the standard implementation, the language which interprets Python code is C. When Python runs in this implementation, code written in C converts it to bytecode (so-called because each instruction is -[8-bits long](/Hardware/Binary/Binary_units_of_measurement.md)). This is a +[8-bits long](Binary_units_of_measurement.md)). This is a lower-level transliteration of Python is not meant to be understood by the CPU (since it is not binary) but rather to be run in the Python virtual machine which is equipped to understand bytecode. The Python Virtual Machine is diff --git a/zk/Querying_a_collection.md b/zk/Querying_a_collection.md index ccc2c5f..e4ed5c0 100644 --- a/zk/Querying_a_collection.md +++ b/zk/Querying_a_collection.md @@ -33,7 +33,7 @@ We now have the following entries in our `courses` collection: Now we will query the collection. This capability is provided via the Mongoose schema class we used to create the `Course` -[model](/Databases/MongoDB/Create_collections_and_documents_with_Mongoose.md#models). +[model](Create_collections_and_documents_with_Mongoose.md#models). We have the following methods available to use from the schema: - `find` @@ -168,7 +168,7 @@ When we apply logical operators, we do not apply the query within the main predicate. For example to query by logical -[OR](/Logic/Truth-functional_connectives.md#disjunction): +[OR](Truth-functional_connectives.md#disjunction): ```js async function getCourses() { diff --git a/zk/Queue.md b/zk/Queue.md index c4e1b53..488789d 100644 --- a/zk/Queue.md +++ b/zk/Queue.md @@ -9,7 +9,7 @@ tags: _Visualization of the queue data structure_ -![queue.svg](../img/queue.svg) +![queue.svg](queue.svg) ## A queue is a sequential data structure and most similar to a stack diff --git a/zk/RESTful_APIs.md b/zk/RESTful_APIs.md index 28a3042..b73e20b 100644 --- a/zk/RESTful_APIs.md +++ b/zk/RESTful_APIs.md @@ -61,7 +61,7 @@ In order to qualify as RESTful, an API must meet the following constraints: ## Example A basic example of a REST API would be a series of methods corresponding to the -main [HTTP request types](/Databases/HTTP_request_types.md). +main [HTTP request types](HTTP_request_types.md). | HTTP request type | URI | Action | Body ? | | ----------------- | ------------------- | --------------------------- | ------------------------ | diff --git a/zk/Read.md b/zk/Read.md index 36104ba..3d8a007 100644 --- a/zk/Read.md +++ b/zk/Read.md @@ -13,7 +13,7 @@ piped to it. In each case, what is read is stored as a variable. `read` will parse line by line using a space (`\n`) as the default delimiter. You can use IFS to parse by other characters and/or -[split the contents into an array](/Programming_Languages/Shell/Split_into_array.md). +[split the contents into an array](Split_into_array.md). ## Example of capturing user input @@ -36,7 +36,7 @@ read ## Example of piping to read -Here we use [find](/Programming_Languages/Shell/Find.md) to collate the files in +Here we use [find](Find.md) to collate the files in the current directory and then pipe them to read. ```bash diff --git a/zk/Rebasing.md b/zk/Rebasing.md index 642ed42..5387c31 100644 --- a/zk/Rebasing.md +++ b/zk/Rebasing.md @@ -129,7 +129,7 @@ request. ## Difference from cherry-picking The main difference between the two approaches is that -[cherry-picking](/DevOps/Git/Cherry_picking_a_branch.md) is a more selective +[cherry-picking](Cherry_picking_a_branch.md) is a more selective process, where you can pick and choose specific commits that you want to include in another branch. This can be useful when you only want to apply specific changes or fixes from one branch to another, without including all the changes diff --git a/zk/Recursion.md b/zk/Recursion.md index a6ceaf4..b0cb6b9 100644 --- a/zk/Recursion.md +++ b/zk/Recursion.md @@ -17,7 +17,7 @@ another example. Also fractals display recursive properties. ## Schema The general structure of a recursive function is as follows: -![javascript-recursion.png](../img/javascript-recursion.png) +![javascript-recursion.png](javascript-recursion.png) ## Why use recursive functions? @@ -131,4 +131,4 @@ if (num > 0) { } ``` -![javascript-factorial 1.png](../img/javascript-factorial%201.png) +![javascript-factorial 1.png](javascript-factorial%201.png) diff --git a/zk/Redirect_to_dev_null.md b/zk/Redirect_to_dev_null.md index 1e90675..b938ab2 100644 --- a/zk/Redirect_to_dev_null.md +++ b/zk/Redirect_to_dev_null.md @@ -19,7 +19,7 @@ because you don't want it to be output to `stdout`. The `2>&1` argument is the content: any errors that the program may generate and try to show in stout. Notice we are using the -[file descriptors](/Programming_Languages/Shell/File_descriptors_and_redirection.md) +[file descriptors](File_descriptors_and_redirection.md) `1` and `2`. If you just want the errors regardless of whether they appear in `stdout` you diff --git a/zk/Redirection.md b/zk/Redirection.md index dff0924..b0da787 100644 --- a/zk/Redirection.md +++ b/zk/Redirection.md @@ -20,9 +20,9 @@ ls | grep d* > result.txt ### Combining redirection with file escriptors It is common practice to combine redirection with the -[file descriptors](/Programming_Languages/Shell/File_descriptors.md) to redirect +[file descriptors](File_descriptors.md) to redirect the output of `stdout` and `stderr`. A common case is to -[redirect error output to `/dev/null`](/Programming_Languages/Shell/Redirect_to_dev_null.md). +[redirect error output to `/dev/null`](Redirect_to_dev_null.md). Redirection defaults to interpreting `>` as the redirection of `stdout` (`1`); diff --git a/zk/Reducing_fractions.md b/zk/Reducing_fractions.md index 5fd8725..23e16d0 100644 --- a/zk/Reducing_fractions.md +++ b/zk/Reducing_fractions.md @@ -93,7 +93,7 @@ A better method is to utilise [prime factorization](Prime%20factorization.md) combined with the canceling technique. First we find the prime factors of both the numerator and denominator: -![drawio-Page-7.drawio.png](../../img/drawio-Page-7.drawio.png) +![drawio-Page-7.drawio.png](drawio-Page-7.drawio.png) This gives us: @@ -163,7 +163,7 @@ _Reduce the following fraction to its lowest terms: $$\frac{14y^5}{-35y^3}$$_ - Apply [Prime factorization](Prime%20factorization.md): - ![draw.io-Page-8.drawio.png](../../img/draw.io-Page-8.drawio.png) + ![draw.io-Page-8.drawio.png](draw.io-Page-8.drawio.png) - Cancel the coefficients and variable parts @@ -179,7 +179,7 @@ $$\frac{- 12xy^2}{ - 18xy^2}$$_ - Apply [Prime factorization](Prime%20factorization.md): -![draw.io-Page-8.drawio 1.png](../../img/draw.io-Page-8.drawio%201.png) +![draw.io-Page-8.drawio 1.png](draw.io-Page-8.drawio%201.png) - Cancel the coefficients and variable parts diff --git a/zk/Relation_between_kernel_and_CPU.md b/zk/Relation_between_kernel_and_CPU.md index d19a046..a7d8edc 100644 --- a/zk/Relation_between_kernel_and_CPU.md +++ b/zk/Relation_between_kernel_and_CPU.md @@ -17,7 +17,7 @@ above' the actions of the CPU. This is wrong and if you think about it, how could this be since any process, kernel included, requires the processor? The kernel is executed by and loaded into the CPU just like any other instruction in the -[fetch, decode, execute cycle](/Computer_Architecture/CPU/Fetch_decode_execute.md) +[fetch, decode, execute cycle](Fetch_decode_execute.md) of the CPU. However as a process, the kernel is the 'first amongst equals' given that it is @@ -40,7 +40,7 @@ the CPU take place independently of the kernel. > points the program counter back into kernel code. That’s basically what the > CPU will be doing from boot up to shut down; switching between executing > kernel code and executing userspace code -> ([Reddit](https://www.reddit.com/r/osdev/comments/wdskj5/how_does_kernel_decide_if_use_cpu_or_gpu_after/)) +> ([Reddit]()) This is because of [context switching](), when the CPU is running its cycle, the kernel is idle waiting for it to complete. Once control switches back to the diff --git a/zk/Resistance.md b/zk/Resistance.md index 43531d0..83e51f8 100644 --- a/zk/Resistance.md +++ b/zk/Resistance.md @@ -38,9 +38,9 @@ used to _control_ the flow of current in a circuit. > One ohm is the resistance of a circuit or circuit element that permits a > steady current flow of one -> [amp](/Electronics_and_Hardware/Analogue_circuits/Current.md#formal-expression) +> [amp](Current.md#formal-expression) > (one coulomb/second) when one -> [volt](/Electronics_and_Hardware/Analogue_circuits/Voltage.md#voltage) is +> [volt](Voltage.md#voltage) is > applied to the circuit. ### Conductance @@ -56,7 +56,7 @@ used to _control_ the flow of current in a circuit. ## Ohm's Law The relationship between current, resistance and voltage is expressed in -[Ohm's Law](/Electronics_and_Hardware/Physics_of_electricity/Ohms_Law.md). +[Ohm's Law](Ohms_Law.md). ## Resistors diff --git a/zk/Restructure_URLs.md b/zk/Restructure_URLs.md index ce6a7f0..bdd3a7c 100644 --- a/zk/Restructure_URLs.md +++ b/zk/Restructure_URLs.md @@ -29,7 +29,7 @@ exports.handler = (event, context, callback) => { Let's walk through the above example making reference to the general structure of the -[AWS Lambda handler function](/DevOps/AWS/AWS_Lambda/Lambda_handler_function.md): +[AWS Lambda handler function](Lambda_handler_function.md): 1. The `event` parameter is invoked to gain access to the event that triggered the function. This is a CloudFront request event which is targetted with diff --git a/zk/Role_of_unique_key_in_relational_databases.md b/zk/Role_of_unique_key_in_relational_databases.md index a33acc5..bb1043c 100644 --- a/zk/Role_of_unique_key_in_relational_databases.md +++ b/zk/Role_of_unique_key_in_relational_databases.md @@ -11,7 +11,7 @@ tags: [relational-databases] This is essential for carrying out operations across database tables and for creating and deleting database entires in accordance with the -[ACID principle](/Databases/ACID_principle.md). It is also a safeguard: it means +[ACID principle](ACID_principle.md). It is also a safeguard: it means you can always identify a record by itself and don't have to rely on generic queries to identify it. diff --git a/zk/Shell_sessions.md b/zk/Shell_sessions.md index e6ab5e8..9c7751e 100644 --- a/zk/Shell_sessions.md +++ b/zk/Shell_sessions.md @@ -27,7 +27,7 @@ shell**. If you run a script from the command line you will be in a ## Shell sessions and access The type of shell session that you are currently in affects the -[environmental and shell variables](https://www.notion.so/Environmental-and-shell-variables-04d5ec7e8e2b486a93f002bf686e4bbb) +[environmental and shell variables](Environmental-and-shell-variables-04d5ec7e8e2b486a93f002bf686e4bbb) that you can access. This is because the order in which configuration files are read on initialisation differs depending on the type of shell. diff --git a/zk/Signed_and_unsigned_numbers.md b/zk/Signed_and_unsigned_numbers.md index a5aecf3..6385366 100644 --- a/zk/Signed_and_unsigned_numbers.md +++ b/zk/Signed_and_unsigned_numbers.md @@ -12,7 +12,7 @@ represented. **Unsigned binary** is standard binary without negative integers. In order to represent negative integers alonside positive integers a natural approach is to divide the available -[encoding space / word length](/Electronics_and_Hardware/Binary/Binary_encoding.md) +[encoding space / word length](Binary_encoding.md) into two subsets: one for representing non-negative integers and one for representing negative integers. @@ -86,7 +86,7 @@ The chief advantage of the two's complement technique of signing numbers is that its circuit implementation is no different from the adding of two unsigned numbers. Once the signing algorithm is applied the addition can be passed through an -[adder](/Electronics_and_Hardware/Digital_circuits/Half_adder_and_full_adder.md) +[adder](Half_adder_and_full_adder.md) component without any special handling or additional hardware. Let's demonstrate this with the following addition: @@ -121,7 +121,7 @@ The ease by which we conduct signed arithmetic with standard hardware contrasts with alternative approaches to signing numbers. An example of another approach is **signed magnitude representation**. A basic implemetation of this would be to say that for a given bit-length (6, 16, 32...) if the -[most significant bit](/Electronics_and_Hardware/Digital_circuits/Half_adder_and_full_adder.md#binary-arithmetic) +[most significant bit](Half_adder_and_full_adder.md#binary-arithmetic) is a 0 then the number is positive. If it is 1 then it is negative. This works but it requires extra complexity to in a system's design to account diff --git a/zk/Solving_equations.md b/zk/Solving_equations.md index 3597653..63e6d71 100644 --- a/zk/Solving_equations.md +++ b/zk/Solving_equations.md @@ -7,7 +7,7 @@ tags: [algebra] ## Use inversion of operators When solving equations we frequently make use of the -[ operator inversion rules](../Prealgebra/Inversion%20of%20operators.md) to find +[ operator inversion rules](Inversion%20of%20operators.md) to find the solutions. ### Example: inversion of addition diff --git a/zk/Soundness.md b/zk/Soundness.md index fb5c51e..8e760f0 100644 --- a/zk/Soundness.md +++ b/zk/Soundness.md @@ -7,7 +7,7 @@ tags: [propositional-logic] # Soundness Recall that in the definition of -[deductive validity](/Logic/General_concepts/Validity_and_entailment.md#validity) +[deductive validity](Validity_and_entailment.md#validity) we do not say: an argument is valid iff if the premises _are true_ and the conclusion _is true_. We say _if it is possible for the premises to be true_. This is important: we are not interested in the actual truth of the premises or diff --git a/zk/Stacks.md b/zk/Stacks.md index ca13d86..51ee3a0 100644 --- a/zk/Stacks.md +++ b/zk/Stacks.md @@ -5,9 +5,9 @@ tags: - data-structures --- -_A stack visualised vertically_ ![stack2.svg](../img/stack2.svg) +_A stack visualised vertically_ ![stack2.svg](stack2.svg) -_A stack visualised horizontally_ ![stack1.svg](../img/stack1.svg) +_A stack visualised horizontally_ ![stack1.svg](stack1.svg) ## A stack is a linear data structure that observes LIFO diff --git a/zk/Stale_branches_and_pruning.md b/zk/Stale_branches_and_pruning.md index 1583e7c..b20e3d5 100644 --- a/zk/Stale_branches_and_pruning.md +++ b/zk/Stale_branches_and_pruning.md @@ -7,7 +7,7 @@ tags: [git] # Stale branches and pruning A **stale branch** is a -[remote tracking branch](/DevOps/Git/Remote_tracking_branches.md) that **no +[remote tracking branch](Remote_tracking_branches.md) that **no longer tracks anything** because the actual branch on the remote has been deleted. diff --git a/zk/Step_functions_and_state_machines.md b/zk/Step_functions_and_state_machines.md index 4e1b801..b9bda3f 100644 --- a/zk/Step_functions_and_state_machines.md +++ b/zk/Step_functions_and_state_machines.md @@ -22,8 +22,8 @@ transitions between them. It also includes error catchers and retry logic. At the beginning you define a `StartAt` state which is the entrypoint of the state machine. This can be manually triggered, or more likely, triggered by another AWS service such as a -[Lambda](/DevOps/AWS/AWS_Lambda/Lambda_programming_model.md), an -[API Gateway](/DevOps/AWS/AWS_API_Gateway.md) request or a messaging/queue +[Lambda](Lambda_programming_model.md), an +[API Gateway](AWS_API_Gateway.md) request or a messaging/queue event. The state machine ultimately ends at an end state. In between are various diff --git a/zk/Strategies_for_constructing_proofs.md b/zk/Strategies_for_constructing_proofs.md index ad9996c..86193ca 100644 --- a/zk/Strategies_for_constructing_proofs.md +++ b/zk/Strategies_for_constructing_proofs.md @@ -20,17 +20,17 @@ not always work and there will be cases where the route to the desired derivation is more circuitous. In these instances it is to best to combine this general top level strategy with goal analysis. -Goal analysis is a [recursive](/Data_Structures/Recursion.md) strategy which +Goal analysis is a [recursive](Recursion.md) strategy which proceeds by using a 'goal' proposition to guide the construction of intermediary derivations. Assume that we want to show that an argument is -[valid](/Logic/General_concepts/Validity_and_entailment.md#validity). Then our +[valid](Validity_and_entailment.md#validity). Then our ultimate goal is to derive the conclusion from the premises we are given. We first ask ourselves: _which propositions if we could derive them, would allow us to easily derive the conclusion_? (For example, these propositions might be two simple propositions that when combined with -[Conjunction Introduction](/Logic/Proofs/Conjunction_Introduction.md) give us +[Conjunction Introduction](Conjunction_Introduction.md) give us the conclusion.) Deriving these propositions then becomes the new intermediate goal. @@ -48,7 +48,7 @@ and $((\lnot N \rightarrow L) \land (D \leftrightarrow \lnot N))$. First, we consider what is the easiest possible way of achieving the proposition $(L \lor A) \land D$. Clearly it is to separately derive each disjunct ($L \lor A$ and $D$) and then combine them with -[Conjunction Introduction](/Logic/Proofs/Conditional_Introduction.md). This +[Conjunction Introduction](Conditional_Introduction.md). This provides us with our first goal: to derive each of the separate conjuncts. Let's start with $D$: where does it occur in the assumptions? It occurs in the @@ -63,7 +63,7 @@ So far we have: Now we just need to get $D$ from the proposition at line 3. This is easy since we already have access to the consequent of the biconditional at line 1. Therefore we can apply -[Biconditional Elimination](/Logic/Proofs/Biconditional_Elimination.md)) at line +[Biconditional Elimination](Biconditional_Elimination.md)) at line 3 to get $D$. We are now halfway there: ![](/img/step2.png) @@ -71,20 +71,20 @@ Therefore we can apply Next we need to turn our attention to deriving $L \lor A$. How can we obtain $L$ ? Well it is contained within the first conjunct of the assumption on line 2. Again, we can get this through the application of -[Conjunction Elimination](/Logic/Proofs/Conjunction_Elimination.md). Now, how do +[Conjunction Elimination](Conjunction_Elimination.md). Now, how do we get $L$ from $(\lnot N \rightarrow L)$? Well, we already have the antecedent $\lnot N$ as an assumption on the first line, so we can use -[Conditional Elimination](/Logic/Proofs/Conditional_Elimination.md) to derive +[Conditional Elimination](Conditional_Elimination.md) to derive $L$. These two steps give us: ![](/img/step3.png) Now we need to get from $L$ to $L \lor A$. This is really straightforward because by using -[Disjunction Introduction](/Logic/Proofs/Disjunction_Introduction.md)) we can +[Disjunction Introduction](Disjunction_Introduction.md)) we can get from any sentence to a disjunction. Finally, having assembled all the constituent parts of the conjunction that is the conclusion, we can combine them -with [Conjunction Introduction](/Logic/Proofs/Conjunction_Introduction.md) as we +with [Conjunction Introduction](Conjunction_Introduction.md) as we had planned at the outset. ![](/img/step4.png) @@ -100,21 +100,21 @@ $$ The requirements here could easily mislead us. We see that the target proposition is a conjunction so we might think that the best strategy is to seek to derive each conjunct and then combine them via -[Conjunction Introduction](/Logic/Proofs/Conjunction_Introduction.md)). +[Conjunction Introduction](Conjunction_Introduction.md)). Actually, if we look more closely, there is a better approach. The target proposition is contained in the first premise as the consequent to the biconditional ($\lnot L \leftrightarrow [X \land (\lnot S \lor B)]$). A better approach is therefore to seek to derive the antecedent ($\lnot L$) and then use -[Biconditional Elimination](/Logic/Proofs/Biconditional_Elimination.md) to +[Biconditional Elimination](Biconditional_Elimination.md) to extract the target sentence which is the consequent. -![proof.png](/img/proof.png) +![proof.png](proof.png) ## Proving theorems When we are proving -[theorems](/Logic/Laws_and_theorems.md/Theorems_and_empty_sets.md#theorems-and-empty-sets) +[theorems](Theorems_and_empty_sets.md#theorems-and-empty-sets) we do not have a set of assumptions to work from when constructing the proof. We must derive the target sentence from the 'empty set' which is the target sentence itself. It is therefore like a process of reverse engineering. @@ -143,7 +143,7 @@ _Prove_ $\vdash (\lnot A \lor \lnot B) \leftrightarrow \lnot(A \land B)$ $\lnot (A \lor B) \rightarrow \lnot (A \land B)$. - Our starting assumption is to a disjunction. Thus we can apply - [Disjunction Elimination](/Logic/Proofs/Disjunction_Elimination.md) to show + [Disjunction Elimination](Disjunction_Elimination.md) to show that our goal sentence $\lnot(A \land B)$ follows from each of the disjuncts ($\lnot A$ and $\lnot B$) in dedicated sub-proofs. If we can do this, we have the right to derive $\lnot (A \land B)$. @@ -154,7 +154,7 @@ _Prove_ $\vdash (\lnot A \lor \lnot B) \leftrightarrow \lnot(A \land B)$ $A \land B$ so that we can negate it as $\lnot (A \land B)$. - Having done this, we can discharge the - [Disjunction Elimination](/Logic/Proofs/Disjunction_Elimination.md) sub-proofs + [Disjunction Elimination](Disjunction_Elimination.md) sub-proofs and derive $\lnot (A \land B)$ from $\lnot A \lor \lnot B$ **Lines 13-26** @@ -165,9 +165,9 @@ _Prove_ $\vdash (\lnot A \lor \lnot B) \leftrightarrow \lnot(A \land B)$ anymore, we have a negated conjunction. - We will do this by assuming the negation of what we want to prove ($\lnot (\lnot A \lor \lnot B)$) and then apply - [Negation Elimination](/Logic/Proofs/Negation_Elimination.md) to get + [Negation Elimination](Negation_Elimination.md) to get $\lnot A \lor \lnot B$. - This requires us to derive a contradiction. We get this on lines 23 and 24. This requires as previous steps that we have two sub-proofs that use - [Negation Elimination](/Logic/Proofs/Negation_Elimination.md) to release $A$ + [Negation Elimination](Negation_Elimination.md) to release $A$ and $B$ diff --git a/zk/Streams.md b/zk/Streams.md index 0bfcc8f..11951c3 100644 --- a/zk/Streams.md +++ b/zk/Streams.md @@ -9,10 +9,10 @@ tags: # Handling streams with fs When reading from a file, the -[`fs.readFile()`](/Programming_Languages/NodeJS/Modules/Core/fs.md) method waits +[`fs.readFile()`](fs.md) method waits until the entire file has been read before executing the callback. It's obvious why this might not be ideal in certain cases. If the file is very large you are -utilising a lot of [memory](/Computer_Architecture/Memory/Memory.md) for a +utilising a lot of [memory](Memory.md) for a single process. Additionally, the data you need might appear early in the file, in which case, once you find the data you want, there is no need to read to the end of the file. diff --git a/zk/Strings_in_Python.md b/zk/Strings_in_Python.md index 07c4ce8..f190203 100644 --- a/zk/Strings_in_Python.md +++ b/zk/Strings_in_Python.md @@ -82,7 +82,7 @@ print(f'You are {user_age}') The `split()` function in Python is used to divide a string into multiple parts at the occurrence of a given separator. This function returns a -[list](/Programming_Languages/Python/Syntax/Lists_in_Python.md) of substrings. +[list](Lists_in_Python.md) of substrings. ### General syntax diff --git a/zk/Swap_space.md b/zk/Swap_space.md index 68c9c29..c734ab7 100644 --- a/zk/Swap_space.md +++ b/zk/Swap_space.md @@ -34,12 +34,12 @@ Swap: 3145724 0 3145724 To use an existing disk partition as a swap you can run the command `mkswap [device]` and then `swapon [device]` to register the space with the -[kernel](/Operating_Systems/The_Kernel.md). +[kernel](The_Kernel.md). ### Add to `fstab` You will want the swap to be activated every time the OS boots so add the -following line to the [fstab](/Operating_Systems/Disks/Filesystems.md#fstab), +following line to the [fstab](Filesystems.md#fstab), where `/sda3` is used as the example partition: ```bash diff --git a/zk/Syllogism.md b/zk/Syllogism.md index 781a02e..ab07f16 100644 --- a/zk/Syllogism.md +++ b/zk/Syllogism.md @@ -7,7 +7,7 @@ tags: [propositional-logic] # Syllogism In order to make assertions about the relative -[consistency](/Logic/General_concepts/Logical_consistency.md) or inconsistency +[consistency](Logical_consistency.md) or inconsistency of a set of propositions we advance arguments. Consider everyday life: if we are having an argument with someone, we believe that they are wrong. A more logical way to say this is that we believe that their beliefs are inconsistent. In order diff --git a/zk/Syntax_of_propositional_logic.md b/zk/Syntax_of_propositional_logic.md index 2f97108..70be7a4 100644 --- a/zk/Syntax_of_propositional_logic.md +++ b/zk/Syntax_of_propositional_logic.md @@ -61,7 +61,7 @@ We also distinguish: - **atomic components** These definitions provide a formal specification of the concepts of -[atomic and molecular propositions](/Logic/Propositional_logic/Atomic_and_molecular_propositions.md) +[atomic and molecular propositions](Atomic_and_molecular_propositions.md) introduced previously. 1. If $P$ is an atomic proposition, $P$ contains no connectives and hence does diff --git a/zk/Test_values_in_Bash.md b/zk/Test_values_in_Bash.md index 68fb8c3..cd5a28f 100644 --- a/zk/Test_values_in_Bash.md +++ b/zk/Test_values_in_Bash.md @@ -119,4 +119,4 @@ fi ``` > Note: this syntax can also be used to test if a given element exists in an -> [array](/Programming_Languages/Shell/Lists_and_arrays.md). +> [array](Lists_and_arrays.md). diff --git a/zk/Testing_Python_code.md b/zk/Testing_Python_code.md index 4fc1655..c33ce58 100644 --- a/zk/Testing_Python_code.md +++ b/zk/Testing_Python_code.md @@ -10,7 +10,7 @@ tags: [python, testing] Pytest is the most popular testing library for Python. It is not included with the Python standard library so it must be installed with -[pip](/Programming_Languages/Python/Concepts/Python_package_management.md). +[pip](Python_package_management.md). While it does not include a declaration library, it is robust enough to handle most scenarios having a rich and expressive set of constructs and decorators that let you declare what your tests should do, under what conditions they diff --git a/zk/The_Kernel.md b/zk/The_Kernel.md index 151a441..4c3e04d 100644 --- a/zk/The_Kernel.md +++ b/zk/The_Kernel.md @@ -7,7 +7,7 @@ tags: [systems-programming, memory] # The Kernel The kernel acts as the primary mediator between the hardware (CPU, memory) and -user [processes](../Programming_Languages/Shell_Scripting/Processes.md). Let's +user [processes](Processes.md). Let's look at each of its responsibilities in greater depth: - process management @@ -63,7 +63,7 @@ It has the following jobs to manage: - Allowing for the use of disk space as auxiliary memory > Modern CPUs include a -> [memory management unit](/Operating_Systems/Virtual_memory_and_the_MMU.md#the-memory-management-unit-mmu) +> [memory management unit](Virtual_memory_and_the_MMU.md#the-memory-management-unit-mmu) > which provides the kernel with **virtual** memory. In this scenario, memory > isn't directly accessed by the process instead it works on the assumption that > is has access to the entire memory of the machine and this is then translated @@ -100,4 +100,4 @@ Example with a terminal program like `ls`: ## Controlling processes In Linux we can view, kill, pause and resume processes using -[ps](../Programming_Languages/Shell_Scripting/Processes.md). +[ps](Processes.md). diff --git a/zk/The_Little_Man_computer.md b/zk/The_Little_Man_computer.md index 8c44ab6..40508b3 100644 --- a/zk/The_Little_Man_computer.md +++ b/zk/The_Little_Man_computer.md @@ -6,12 +6,12 @@ tags: [CPU] ## The Little Man Computer -The [Little Man Computer](https://peterhigginson.co.uk/lmc/) is a simplified +The [Little Man Computer]() is a simplified computer that works on Von Neuman principles. It has all the CPU components we have detailed above. It is programmed in machine code but for simplicity it uses the denary rather than the binary number system. -![LMC_5.gif](/img/LMC_5.gif) +![LMC_5.gif](LMC_5.gif) On the left is the instruction set. Each number constitutes and execution routine and the `xx` stand for the address in RAM that the execution will work diff --git a/zk/The_PATH.md b/zk/The_PATH.md index c8c143a..0e084ca 100644 --- a/zk/The_PATH.md +++ b/zk/The_PATH.md @@ -8,7 +8,7 @@ tags: # The `$PATH` We know that `$PATH` is an -[environment variable](/Programming_Languages/Shell/Environmental_and_shell_variables.md). +[environment variable](Environmental_and_shell_variables.md). This variable keeps track of directories **where executables are found**. Whenever any command is run, the shell looks up the directories contained in the diff --git a/zk/Theorems_and_empty_sets.md b/zk/Theorems_and_empty_sets.md index 6b05a04..ea1409e 100644 --- a/zk/Theorems_and_empty_sets.md +++ b/zk/Theorems_and_empty_sets.md @@ -5,7 +5,7 @@ tags: [propositional-logic] --- We know that when we construct a -[derivation](/Logic/Proofs/Formal_proofs_in_propositional_logic.md#derivation-rules) +[derivation](Formal_proofs_in_propositional_logic.md#derivation-rules) we start from a set of assumptions and then attempt to reach a proposition that is a consequence of the starting assumptions. However it does not always have to be the case that the starting set contains members. The set can in fact be diff --git a/zk/Three_bit_counter.md b/zk/Three_bit_counter.md index f90867d..4fab175 100644 --- a/zk/Three_bit_counter.md +++ b/zk/Three_bit_counter.md @@ -8,7 +8,7 @@ tags: [logic-gates, binary, memory, clock] # 3-bit Counter To demonstrate the use of -[Flip-Flops](/Electronics_and_Hardware/Digital_circuits/Flip_flops.md) we will +[Flip-Flops](Flip_flops.md) we will create the circuit for a 3-bit counter. This simply counts up from 0 to 7 because 7 is the maximum decimal number we can create with three bits ($2^3$): @@ -25,7 +25,7 @@ because 7 is the maximum decimal number we can create with three bits ($2^3$): The circuit will have three memory components, each representing one bit of the 3-bit number. When the -[clock pulses](/Electronics_and_Hardware/Digital_circuits/Clock_signals.md), the +[clock pulses](Clock_signals.md), the 3-bit number increments by one. We need to synchronise the operation with a clock because each bit by itself is meaningless, it only gains meaning by the relation it sustains to the other two bits hence it must be kept in sync with @@ -53,7 +53,7 @@ If we look at the pattern of each flip-flops' output we notice the following: This means that to construct a circuit that displays this behaviour we just have to use a -[T flip-flop](/Electronics_and_Hardware/Digital_circuits/Flip_flops.md#t-flip-flops) +[T flip-flop](Flip_flops.md#t-flip-flops) since the only state change we need is a single bit toggle three times that retains its value. diff --git a/zk/Transistors.md b/zk/Transistors.md index 5ff154c..0e375a8 100644 --- a/zk/Transistors.md +++ b/zk/Transistors.md @@ -9,7 +9,7 @@ tags: [logic-gates, binary] # Transistors In the discussion of -[digital circuits](/Electronics_and_Hardware/Digital_circuits/Digital_circuits.md) +[digital circuits](Digital_circuits.md) we noted that a digital circuit requires that electrical phenomena be treated as discrete rather than continuous values. Although a given voltage at a point in the circuit can vary widely, in order to represent the binary states of 'on' and @@ -47,7 +47,7 @@ needs to be fed into another and there is no way to do this with switches. Thus instead of switches, modern digital circuits use transistors, a special electrical component that controls the flow of current in the manner of a switch where the 'off' and 'on' states are represented by -[voltage](/Electronics_and_Hardware/Analogue_circuits/Voltage.md) values within +[voltage](Voltage.md) values within set parameters. There are different types of transistors but the simplest for the purposes of @@ -93,7 +93,7 @@ where the logical function is represented by the characteristic input and output voltages. For example to create an -[AND](/Electronics_and_Hardware/Digital_circuits/Logic_gates.md#and-gate) gate +[AND](Logic_gates.md#and-gate) gate we would have two voltage inputs going into two transistors that are connected in sequence. The two transistors create a continuous line going from the collector of one to the emitter of the other. If either voltage input is low @@ -103,7 +103,7 @@ broken) and there is no current flowing. ![](/img/and-transistor.png) Below, an -[OR](/Electronics_and_Hardware/Digital_circuits/Logic_gates.md#or-gate) has been +[OR](Logic_gates.md#or-gate) has been constructed with transistors. If a voltage is applied to the base of either transistor, the current reaches the V-out terminal. diff --git a/zk/Truth-functional_connectives.md b/zk/Truth-functional_connectives.md index 778962b..f4ac834 100644 --- a/zk/Truth-functional_connectives.md +++ b/zk/Truth-functional_connectives.md @@ -8,10 +8,10 @@ tags: [propositional-logic] Propositions generated from other (simple) propositions by means of propositional connectives are -[compound propositions](/Logic/Propositional_logic/Atomic_and_molecular_propositions.md). +[compound propositions](Atomic_and_molecular_propositions.md). We know that -[logically determinant](/Logic/General_concepts/Logical_indeterminacy.md) +[logically determinant](Logical_indeterminacy.md) propositions express a truth value. When simple propositions are joined with a connective to make a compound proposition they also have a truth value. This is determined by the nature of the connective and the truth value of the diff --git a/zk/Truth-trees.md b/zk/Truth-trees.md index 4be0ff3..d1bfa03 100644 --- a/zk/Truth-trees.md +++ b/zk/Truth-trees.md @@ -116,7 +116,7 @@ inconsistency in terms of truth trees: The following is a truth tree for the set ${P \lor Q, \sim P }$: -![basic-open-tree 1.svg](../img/basic-open-tree%201.svg) +![basic-open-tree 1.svg](basic-open-tree%201.svg) ### Interpretation @@ -161,7 +161,7 @@ not the right hand side. The following is a truth tree for the set ${A & \sim B, C, \sim A \lor \sim B }$. -![basic-closed-tree 1.svg](../img/basic-closed-tree%201.svg) +![basic-closed-tree 1.svg](basic-closed-tree%201.svg) ### Interpretation @@ -201,19 +201,19 @@ of each of the main connectives and these rules rely on logical equivalences ### Negated negation decomposition: `~~D` -![negated-negation-decomposition-rule 2.svg](../img/negated-negation-decomposition-rule%202.svg) +![negated-negation-decomposition-rule 2.svg](negated-negation-decomposition-rule%202.svg) Truth passes only if $P$ is true ### Conjunction decomposition: `&D` -![conjunction-decomposition-rule.svg](../img/conjunction-decomposition-rule.svg) +![conjunction-decomposition-rule.svg](conjunction-decomposition-rule.svg) Truth passes only $P$ and $Q$ are both true. ### Negated Conjunction decomposition: `~&D` -![negated-conjunction-decomposition-rule.svg](../img/negated-conjunction-decomposition-rule.svg) +![negated-conjunction-decomposition-rule.svg](negated-conjunction-decomposition-rule.svg) Truth passes if either $\sim P$ or $\sim Q$ is true. This rule is a consequence of the equivalence between $\sim (P & Q)$ and $\sim P \lor \sim Q$ , the first @@ -221,13 +221,13 @@ of DeMorgan’s Laws. ### Disjunction decomposition: `vD` -![disjunction-decomposition-rule.svg](../img/disjunction-decomposition-rule.svg) +![disjunction-decomposition-rule.svg](disjunction-decomposition-rule.svg) Truth passes if either $P$or $Q$ are true. ### Negated Disjunction decomposition: `~vD` -![negated-disjunction-decomposition-rule.svg](../img/negated-disjunction-decomposition-rule.svg) +![negated-disjunction-decomposition-rule.svg](negated-disjunction-decomposition-rule.svg) Truth passes if both $P$ and $Q$ are false. This rule is a consequence of the equivalence between $\sim (P \lor Q)$ and $\sim P & \sim Q$, the second of @@ -235,7 +235,7 @@ DeMorgan’s Laws. ### Conditional decomposition: `⊃D` -![conditional-decomposition-rule.svg](../img/conditional-decomposition-rule.svg) +![conditional-decomposition-rule.svg](conditional-decomposition-rule.svg) Truth passes if either $\sim P$ or $Q$ are true. This rule is a consequence of the equivalence between $P \supset Q$ and $\sim P \lor Q$ therefore this branch @@ -246,11 +246,11 @@ has the shape of a disjunction with $\sim P$ , $Q$ as its disjuncts. Truth passes if both $P$ and $\sim Q$ are true. This is a consequence of the equivalence between $\sim (P \supset Q)$ and $P & \sim Q$. -![negated-conditional-decomposition-rule.svg](../img/negated-conditional-decomposition-rule.svg) +![negated-conditional-decomposition-rule.svg](negated-conditional-decomposition-rule.svg) ### Biconditional decomposition: `≡D` -![biconditional-decomposition-rule.drawio(1).svg](../img/biconditional-decomposition-rule.drawio%281%29.svg) +![biconditional-decomposition-rule.drawio(1).svg](biconditional-decomposition-rule.drawio%281%29.svg) Truth passes if either $P$ and $Q$ are true or $\sim P & \sim Q$ are true. This is an interesting rule because it combines the disjunction and conjunction tree @@ -258,7 +258,7 @@ shapes. ### Negated biconditional decomposition: `~≡D` -![negated-biconditional-decomposition-rule.drawio.svg](../img/negated-biconditional-decomposition-rule.drawio.svg) +![negated-biconditional-decomposition-rule.drawio.svg](negated-biconditional-decomposition-rule.drawio.svg) Truth passes if either $P$ and $\sim Q$ is true or if $\sim P$ and $Q$ is true. @@ -279,7 +279,7 @@ following heuristic techniques followed in order, facilitate this: Here are some examples of these rules applied: -![complex-tree.svg](../img/complex-tree.svg) +![complex-tree.svg](complex-tree.svg) Observe that here we don’t bother to decompose the sentence on line 1. This is because, having decomposed the sentences on lines 2 and 3 we have arrived at a @@ -318,7 +318,7 @@ A logically false sentence cannot be true on any assignment. This is the same thing as an inconsistent set. Thus it will be represented in a truth tree as inconsistency which is disclosed via a closed tree. -![logical-falsity-tree.svg](../img/logical-falsity-tree.svg) +![logical-falsity-tree.svg](logical-falsity-tree.svg) ### Logical truth @@ -367,7 +367,7 @@ equivalent. > Sentences $P$ and $Q$ are truth-functionally equivalent if and only if the set > $\sim (P \equiv Q)$ has a closed tree -![logical-equivalence-tree.svg](../img/logical-equivalence-tree.svg) +![logical-equivalence-tree.svg](logical-equivalence-tree.svg) ### Logical entailment and validity diff --git a/zk/Turing_machines.md b/zk/Turing_machines.md index f3921cd..666e147 100644 --- a/zk/Turing_machines.md +++ b/zk/Turing_machines.md @@ -13,7 +13,7 @@ cell of the tape is a head, which can either move left or right, and can read the symbols written in the cells. The head is also capable of erasing symbols and writing new symbols into the cells. -![Turing_machines_01.gif](../img/Turing_machines_01.gif) The direction that the +![Turing_machines_01.gif](Turing_machines_01.gif) The direction that the head moves, which values it erases, and which values it writes in, are dependent on a set of instructions provided to the machine.0 diff --git a/zk/Type_guarding_narrowing.md b/zk/Type_guarding_narrowing.md index fd4f6b2..61a2ebf 100644 --- a/zk/Type_guarding_narrowing.md +++ b/zk/Type_guarding_narrowing.md @@ -8,7 +8,7 @@ tags: # Type narrowing and guarding Type narrowing is the process of working out from a supertype like -[any](./Any.md) or [unknown](./Unknown.md) whic type the value should be in the +[any](Any.md) or [unknown](Unknown.md) whic type the value should be in the x course of your code. This is necessary since a process will not necessarily always return or involve homogenous types. diff --git a/zk/Update_document.md b/zk/Update_document.md index 72ec4f3..7549a23 100644 --- a/zk/Update_document.md +++ b/zk/Update_document.md @@ -14,7 +14,7 @@ There are two methods for updating a document ## Query first document update With this approach we first execute a -[query](/Databases/MongoDB/Querying_a_collection.md) to retrieve the document we +[query](Querying_a_collection.md) to retrieve the document we want to edit and then make the change. We use the `findById` method to identify the document by its UUID and then `set` to update specified properties on the document. The `set` method is one of many operators that can be used to update diff --git a/zk/Using_GraphQL_with_Node.md b/zk/Using_GraphQL_with_Node.md index f3b9375..856b3af 100644 --- a/zk/Using_GraphQL_with_Node.md +++ b/zk/Using_GraphQL_with_Node.md @@ -26,7 +26,7 @@ app.listen(8080, () => ## Add GraphQL as middlewear Next we introduce GraphQL as a piece of Node.js -[middlewear](/Programming_Languages/Node/Architecture/Middleware.md), with the +[middlewear](Middleware.md), with the `app.use()` method. ```js diff --git a/zk/Using_arguments_with_Apollo_Client.md b/zk/Using_arguments_with_Apollo_Client.md index 7249180..2707177 100644 --- a/zk/Using_arguments_with_Apollo_Client.md +++ b/zk/Using_arguments_with_Apollo_Client.md @@ -21,7 +21,7 @@ tags: [graphql] ## Updated schema In order to demonstrate arguments we need to expand the -[original schema](/Databases/GraphQL/Apollo/Apollo_Server.md#example-schema). +[original schema](Apollo_Server.md#example-schema). Remember a Track is a group of modules that teaches about a specific topic. We are going to add: @@ -82,7 +82,7 @@ If we have more than one argument we can separate them with commas. ## Create resolver for new query Now we have to create a resolver for our new `track` query. We will quickly run -through the [server-side process](/Databases/GraphQL/Apollo/Apollo_Server.md). +through the [server-side process](Apollo_Server.md). ### Update our `RESTDataSource` @@ -266,7 +266,7 @@ return a specific track. ## Send query with arguments using Apollo `useQuery` We can now write a proper query using the -[useQuery hook](/Databases/GraphQL/Apollo/Apollo_Client.md#usequery-hook) from +[useQuery hook](Apollo_Client.md#usequery-hook) from Apollo Client, with variables. First define our query constant: @@ -304,6 +304,6 @@ const { loading, error, data } = useQuery(GET_TRACK, { ``` Note that in contrast to the -[simple example](/Databases/GraphQL/Apollo/Apollo_Client.md#query-constants) +[simple example](Apollo_Client.md#query-constants) because we are using variables, we have to pass-in an additional options object with the query constant that specifies our variables. diff --git a/zk/Validating_Mongoose_schemas.md b/zk/Validating_Mongoose_schemas.md index 9608816..8fdb2ac 100644 --- a/zk/Validating_Mongoose_schemas.md +++ b/zk/Validating_Mongoose_schemas.md @@ -29,7 +29,7 @@ the property of `required` for a cell in the table. If we didn't set any validation via Mongoose, Mongo would accept whatever we sent to it. What is the relationship between this Mongoose validation and the -[Joi](/Programming_Languages/NodeJS/REST_APIs/Validation.md) validation that we +[Joi](Validation.md) validation that we use when validating API requests in Node/Express? They complement each other. We use Joi to validate the client request to the API. If this is valid, the process would then move onto the next stage which would be transforming the data from a diff --git a/zk/Validation.md b/zk/Validation.md index f5a06f1..d158f65 100644 --- a/zk/Validation.md +++ b/zk/Validation.md @@ -13,7 +13,7 @@ validate the data that we receive from any HTTP requests where the client sends a body to the endpoint. One of the most popular schema validators for NodeJS is -[joi](https://www.npmjs.com/package/joi). +[joi](joi). ## Demonstration diff --git a/zk/Virtual_memory_and_the_MMU.md b/zk/Virtual_memory_and_the_MMU.md index 2840dcc..310a477 100644 --- a/zk/Virtual_memory_and_the_MMU.md +++ b/zk/Virtual_memory_and_the_MMU.md @@ -72,4 +72,4 @@ processes on hold. ## Resources -[Virtual memory](https://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/9_VirtualMemory.html#:~:text=Virtual%20memory%20also%20allows%20the,to%20more%20than%20one%20process) +[Virtual memory](9_VirtualMemory.html#:~:text=Virtual%20memory%20also%20allows%20the,to%20more%20than%20one%20process) diff --git a/zk/Voltage.md b/zk/Voltage.md index fdfcc30..9a98570 100644 --- a/zk/Voltage.md +++ b/zk/Voltage.md @@ -8,7 +8,7 @@ tags: [physics, electricity] ## Difference of potential and the tranfer of energy We noted in the discussion of -[current](/Electronics_and_Hardware/Analogue_circuits/Current.md) that current +[current](Current.md) that current flows when there is a difference of potential between two points with negatively charged atoms at one point and positively charged atoms at the other. @@ -21,7 +21,7 @@ current, energy must be imparted to the electrons so that they all flow in the same direction. Voltage is the application of this energy. Any -[form of energy](/Electronics_and_Hardware/Analogue_circuits/Voltage_sources.md) +[form of energy](Voltage_sources.md) that dislodges electrons from atoms can be used to produce current. Thus: > Voltage is the work required per coulomb to move a charge from one point to @@ -31,7 +31,7 @@ that dislodges electrons from atoms can be used to produce current. Thus: Given that voltage is the force that generates current, it would be natural to think that voltage only exists when a voltage source (such as a -[battery](/Electronics_and_Hardware/Analogue_circuits/Cells_and_batteries.md)) +[battery](Cells_and_batteries.md)) is connected to a circuit. This however is not the case. Even if a 9V battery isn't connected to anything it still has a difference of potential of 9-volts accross its terminals. Remember voltage is _potential energy_ not just the @@ -98,7 +98,7 @@ obvious enough: they are at the beginning and end of the loop so are equal to the maximal voltage rise and minimal voltage drop, respectively. We can work out the voltage of the remaining voltage points by inverting -[Ohm's Law](/Electronics_and_Hardware/Physics_of_electricity/Ohms_Law.md): +[Ohm's Law](Ohms_Law.md): $V = I \times R$: For the voltage at $V^{B}$: diff --git a/zk/Voltage_sources.md b/zk/Voltage_sources.md index a2eea52..1686cda 100644 --- a/zk/Voltage_sources.md +++ b/zk/Voltage_sources.md @@ -45,7 +45,7 @@ or **alternating current** (AC): ### Chemicals (cells and batteries) The chemical creation of current is the physics behind -[batteries](/Electronics_and_Hardware/Analogue_circuits/Cells_and_batteries.md). +[batteries](Cells_and_batteries.md). Chemical current production produces currents on a smaller and less industrial scale than generators. diff --git a/zk/What_are_disks.md b/zk/What_are_disks.md index e631d64..f737f52 100644 --- a/zk/What_are_disks.md +++ b/zk/What_are_disks.md @@ -8,7 +8,7 @@ tags: # What are disks? -A disk is a mass storage [block_device](/Operating_Systems/Devices.md) which we +A disk is a mass storage [block_device](Devices.md) which we can write to and read from. ## SCSI @@ -24,12 +24,12 @@ The following diagram represents the basic anatomy of a disk device. ![](/img/harddisk.png) -- A disk is divided up into [partitions](/Operating_Systems/Disks/Partitions.md) +- A disk is divided up into [partitions](Partitions.md) which are subsections of the overall disk. The kernel presents each partition - as a [block device](/Operating_Systems/Devices.md) as it would with an entire + as a [block device](Devices.md) as it would with an entire disk. - The disk dedicates a small part of its contents to a **partition table**: this defines the different partitions that comprise the total disk space. - The **filesystem** is a database of files and directories: this comprises the bulk of the partition and is what you interact with in - [user space](/Operating_Systems/User_Space.md) when reading and writing data. + [user space](User_Space.md) when reading and writing data. diff --git a/zk/Whole_numbers.md b/zk/Whole_numbers.md index b790446..a7376fd 100644 --- a/zk/Whole_numbers.md +++ b/zk/Whole_numbers.md @@ -30,9 +30,9 @@ $$ a + b = b + a $$ ### Multiplication When **multiplying** whole numbers the placement of the -[multiplicands](https://www.notion.so/Symbols-and-formal-conventions-80aeaf1872f94a0d97a2e8d07e3855bd) +[multiplicands](Symbols-and-formal-conventions-80aeaf1872f94a0d97a2e8d07e3855bd) does not affect the -[product](https://www.notion.so/Symbols-and-formal-conventions-80aeaf1872f94a0d97a2e8d07e3855bd). +[product](Symbols-and-formal-conventions-80aeaf1872f94a0d97a2e8d07e3855bd). Let **a, b** represent whole numbers, then: diff --git a/zk/Why_computers_use_binary.md b/zk/Why_computers_use_binary.md index b3f5370..cf46c74 100644 --- a/zk/Why_computers_use_binary.md +++ b/zk/Why_computers_use_binary.md @@ -17,7 +17,7 @@ to represent two states: on (1) and off (0) which corresponds to the switch on an electrical circuit. A single circuit representing the binary values of 1 and 0: -![multi_on_off 1.gif](../../img/multi_on_off.gif) +![multi_on_off 1.gif](multi_on_off.gif) It would be much more complicated to have to represent ten different states under the decimal number system, although denary computers do exist. @@ -27,7 +27,7 @@ represent as large a binary number as we need. We just need one switch for every digit we want to represent. The switches used in modern computers are so cheap and so small that billions can be fitted on a single circuit board. -![multiple_circuits.gif](../../img/multiple_circuits.gif) +![multiple_circuits.gif](multiple_circuits.gif) When we use the term 'switch' we actually mean the transistor components of a circuit. We don't need to know the physical details at this level but we can say diff --git a/zk/Working_with_numbers_in_Bash.md b/zk/Working_with_numbers_in_Bash.md index 0d3d6dd..a4b26ca 100644 --- a/zk/Working_with_numbers_in_Bash.md +++ b/zk/Working_with_numbers_in_Bash.md @@ -28,7 +28,7 @@ echo $a > Note: we do not use a dollar-sign when referring to variables within > arithmetic evaluation, there is no need. If we do, we get an error. This is > because we are using an -> [expansion](/Programming_Languages/Shell/Expansions_and_substitutions.md), +> [expansion](Expansions_and_substitutions.md), > therefore the variables are already being interpreted as variables. ## Declaring variables as integers diff --git a/zk/events.md b/zk/events.md index c0184fa..86cc136 100644 --- a/zk/events.md +++ b/zk/events.md @@ -18,7 +18,7 @@ event. At bottom everything in Node is an event with a callback, created via event emitters. Because Node's runtime is -[event-driven](/Programming_Languages/NodeJS/Architecture/Event_loop.md), it is +[event-driven](Event_loop.md), it is event-emitter cycles that are being processed by the Event Loop, although you may know them as `fs` or `http` (etc) events. The call stack that the Event Loop works through is just a series of event emissions and their associated diff --git a/zk/fs.md b/zk/fs.md index 9a8c9b7..05fb40f 100644 --- a/zk/fs.md +++ b/zk/fs.md @@ -13,7 +13,7 @@ methods for working with files and directories. Every method associated with `fs` has a _blocking_ and _asynchronous_ implementation. The former obviously blocks the -[event queue](/Programming_Languages/NodeJS/Architecture/Event_loop.md), the +[event queue](Event_loop.md), the latter does not. The synchronous methods are useful to have in some contexts but in general and @@ -100,4 +100,4 @@ fs.rmSync("/dir", { recursive: true, force: true }); ## Streams -See [Handling streams with fs](/Programming_Languages/NodeJS/Streams.md) +See [Handling streams with fs](Streams.md) diff --git a/zk/http.md b/zk/http.md index 455f7da..8378373 100644 --- a/zk/http.md +++ b/zk/http.md @@ -15,7 +15,7 @@ JavaScript. ## Creating a server An HTTP server is another instance of an -[event emitter](/Programming_Languages/NodeJS/Modules/Core/events.md)). It +[event emitter](events.md)). It therefore has all the same methods as the `EventEmitter` class: `on`, `emit`, `addListener` etc. This demonstrates again how much of Node's core functionality is based on event emitters. diff --git a/zk/journald.md b/zk/journald.md index 2668dc9..27ea364 100644 --- a/zk/journald.md +++ b/zk/journald.md @@ -6,9 +6,9 @@ tags: [systems-programming] # `journald` -`journald` is a program that comes as default with [systemd](/Linux/systemd.md). +`journald` is a program that comes as default with [systemd](systemd.md). It is a service fror collecting and storing system-level log data. I keeps a -track of all [kernel](/Operating_Systems/The_Kernel.md) processes. It is +track of all [kernel](The_Kernel.md) processes. It is invaluable when tracing the source of problems and errors that may arise on the system level. It keeps a track of all kernal processes. diff --git a/zk/process.md b/zk/process.md index ce275ad..78fdb9d 100644 --- a/zk/process.md +++ b/zk/process.md @@ -19,7 +19,7 @@ the terminal and exit the current process. ## Managing runtime environments See -[Managing Environments](/Programming_Languages/NodeJS/Architecture/Managing_environments.md). +[Managing Environments](Managing_environments.md). ## Accessing arguments: `process.argv` @@ -101,7 +101,7 @@ Hello from file Typically we want to write and read data that the user provides. To do this we need to wait on that event. So we use Node's asynchonous -[event listeners](/Programming_Languages/NodeJS/Modules/Core/events.md). We wait +[event listeners](events.md). We wait on the `data` event: ```js diff --git a/zk/systemd.md b/zk/systemd.md index e6ee7d6..b53fd6a 100644 --- a/zk/systemd.md +++ b/zk/systemd.md @@ -6,10 +6,10 @@ tags: [systems-programming] # systemd -Once the [boot process](/Operating_Systems/Boot_process.md) has completed and +Once the [boot process](Boot_process.md) has completed and the bootloader has located the kernel and injected it into memory the first user space program runs: `init` (for _initialisation_). `init` is a -[daemon](/Operating_Systems/Daemons.md) process that continues running until +[daemon](Daemons.md) process that continues running until shutdown and is responsible for starting all the processes that are prerequisites for user space. For example: network connections, disk access, user logins etc. diff --git a/zk/useContext.md b/zk/useContext.md index 51e8cf2..e4412f8 100644 --- a/zk/useContext.md +++ b/zk/useContext.md @@ -126,4 +126,4 @@ Then, in our code we just insert the `Context` component: In the examples above we have only been consuming state that is owned by the provider however in most scenarios you will also want to update the state from a consumer. This is best achieved by combining `useContext` with a reducer and is -detailed in [Application state management](./Application_state_management.md). +detailed in [Application state management](Application_state_management.md). diff --git a/zk/useEffect.md b/zk/useEffect.md index f648d1b..acc3642 100644 --- a/zk/useEffect.md +++ b/zk/useEffect.md @@ -15,7 +15,7 @@ would be dispatching a request to an API to retrieve data to display in a component's initial render. `useEffect` enshrines but also simplifies the -[lifecyle methods](./../Classes/Lifecycle_methods.md) that are used with +[lifecyle methods](Lifecycle_methods.md) that are used with class-based React components. ## Demonstration @@ -78,12 +78,12 @@ Note the array that is the second argument to `useEffect`. This is the The syntax of the `useEffect` hook also allows you to handle cleanup: something you want to do when the component unmounts (another example of how this hook -recasts the traditional [lifecycle methods](./../Classes/Lifecycle_methods.md)) +recasts the traditional [lifecycle methods](Lifecycle_methods.md)) . In addition to running on unmount, the cleanup function will run before the effect runs again (i.e. when it runs in response to a change in one of the elements of the dependency araray). This is chiefly used to prevent -[memory leaks](../../../Software_Engineering/Memory_leaks.md) and the -['update on unmounted component error'](../Errors.md#state-update-on-unmounted-component). +[memory leaks](Memory_leaks.md) and the +['update on unmounted component error'](Errors.md#state-update-on-unmounted-component). You do this by having a `return` clause after the main effect. Schematically: @@ -114,4 +114,4 @@ useEffect(() => { ## Resources -[Understanding the React useEffect cleanup function](https://blog.logrocket.com/understanding-react-useeffect-cleanup-function/) +[Understanding the React useEffect cleanup function]()