feat: add presentation
18
.drone.yml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
type: exec
|
||||||
|
name: Build and deploy
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Build Presentation
|
||||||
|
commands:
|
||||||
|
- cd presentation
|
||||||
|
- marp presentation.md -o index.html
|
||||||
|
- cp * /home/andr3/services/notes/presentation
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
branch:
|
||||||
|
- main
|
||||||
|
node:
|
||||||
|
lights: builder
|
||||||
|
|
BIN
presentation/atomas.png
Normal file
After Width: | Height: | Size: 478 KiB |
BIN
presentation/first-step.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
presentation/fourth-step.png
Normal file
After Width: | Height: | Size: 106 KiB |
557
presentation/presentation.html
Normal file
102
presentation/presentation.md
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
---
|
||||||
|
style: |
|
||||||
|
img[alt~="center"] {
|
||||||
|
display: block;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
font-size: 1.2em;
|
||||||
|
position: fixed;
|
||||||
|
top: 1em;
|
||||||
|
left: 50%;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
}
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
text-align: center;
|
||||||
|
font-size: 1.2em;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
img[alt~="top-m"] {
|
||||||
|
margin-top: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# A Paxos implementation
|
||||||
|
|
||||||
|
Andre Henriques
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Basis of the implentation
|
||||||
|
|
||||||
|
|
||||||
|
![Structure](./structure.png) ![Steps](./steps.png)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Steps
|
||||||
|
|
||||||
|
```elixir
|
||||||
|
receive do
|
||||||
|
{:leader_elector, proc} -> ...
|
||||||
|
{:propose, inst, value, t, pid_to_inform} -> ...
|
||||||
|
{:prepare, proc, inst, ballot} -> ...
|
||||||
|
{:nack, inst, ballot} -> ...
|
||||||
|
{:prepared, inst, ballot, accepted_ballot, accepted_value} -> ...
|
||||||
|
{:accept, inst, ballot, value} -> ...
|
||||||
|
{:accepted, inst, ballot} -> ...
|
||||||
|
{:decide, inst, value} -> ...
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Step 1 - "Requirements"
|
||||||
|
|
||||||
|
![50% center](./first-step.png)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Step 2 - "Prepare"
|
||||||
|
|
||||||
|
![w:600 center](./second-step.png)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Step 3 - "Accept"
|
||||||
|
|
||||||
|
![w:600 center](./third-step.png)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Step 4 - "Leader Crash"
|
||||||
|
|
||||||
|
![w:600 center](./fourth-step.png)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# Application
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### Atomas
|
||||||
|
|
||||||
|
![w:300 center top-m](./atomas.png)
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Safety
|
||||||
|
- If a game state exists, then it was created by a user
|
||||||
|
- The game state can not divert.
|
||||||
|
|
||||||
|
## Liveness
|
||||||
|
- Eventually all users will have the same game state
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
#### Questions?
|
BIN
presentation/second-step.png
Normal file
After Width: | Height: | Size: 148 KiB |
BIN
presentation/steps.png
Normal file
After Width: | Height: | Size: 42 KiB |
BIN
presentation/structure.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
presentation/third-step.png
Normal file
After Width: | Height: | Size: 187 KiB |