finished third course

This commit is contained in:
khannurien
2026-02-19 20:41:46 +00:00
parent b77c0d47b7
commit f7a7dca41e
34 changed files with 1954 additions and 154 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

BIN
img/bug.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

BIN
img/carte-bleue.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
img/cors-example.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

BIN
img/dom-model.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

BIN
img/dto-fowler.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

BIN
img/eniac.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 257 KiB

BIN
img/first-computer-bug.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 143 KiB

BIN
img/http-cat.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

BIN
img/jwt-decoded.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 KiB

BIN
img/log-level.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

BIN
img/nginx.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

BIN
img/password-123.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

BIN
img/proxy-forward.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

BIN
img/proxy-reverse.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

BIN
img/react-devtools.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

BIN
img/react-router.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

BIN
img/react.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

BIN
img/rolldown.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
img/tls-self-signed.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

BIN
img/tls-univ-brest.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

BIN
img/vite.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

BIN
img/websocket-tp.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

BIN
img/websocket.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
img/yubikey.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

132
res/authentication.drawio Normal file
View File

@@ -0,0 +1,132 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/28.2.5 Chrome/138.0.7204.251 Electron/37.6.1 Safari/537.36" version="28.2.5" pages="2">
<diagram name="Stateful" id="2CEUOh8hhNnnwGxCOcMt">
<mxGraphModel dx="1426" dy="963" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="9g35GHuaYEsMOrcFAuSK-0" />
<mxCell id="9g35GHuaYEsMOrcFAuSK-1" parent="9g35GHuaYEsMOrcFAuSK-0" />
<mxCell id="9g35GHuaYEsMOrcFAuSK-2" value="" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;curved&quot;:0,&quot;rounded&quot;:0};participant=umlActor;fontFamily=Lucida Console;" vertex="1" parent="9g35GHuaYEsMOrcFAuSK-1">
<mxGeometry x="400" y="340" width="20" height="340" as="geometry" />
</mxCell>
<mxCell id="9g35GHuaYEsMOrcFAuSK-3" value="Serveur" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;curved&quot;:0,&quot;rounded&quot;:0};fontFamily=Lucida Console;" vertex="1" parent="9g35GHuaYEsMOrcFAuSK-1">
<mxGeometry x="560" y="340" width="100" height="340" as="geometry" />
</mxCell>
<mxCell id="9g35GHuaYEsMOrcFAuSK-4" value="HTTP GET /routeRestreinte" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;fontFamily=Lucida Console;" edge="1" parent="9g35GHuaYEsMOrcFAuSK-1" target="9g35GHuaYEsMOrcFAuSK-3">
<mxGeometry width="80" relative="1" as="geometry">
<mxPoint x="410" y="440" as="sourcePoint" />
<mxPoint x="490" y="440" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="9g35GHuaYEsMOrcFAuSK-5" value="HTTP 401 Unauthorized" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;curved=0;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#B85450;fontFamily=Lucida Console;" edge="1" parent="9g35GHuaYEsMOrcFAuSK-1" target="9g35GHuaYEsMOrcFAuSK-2">
<mxGeometry relative="1" as="geometry">
<mxPoint x="610" y="480" as="sourcePoint" />
<mxPoint x="530" y="480" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="9g35GHuaYEsMOrcFAuSK-6" value="HTTP POST /login&lt;div&gt;{ username, password }&lt;/div&gt;" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;fontFamily=Lucida Console;" edge="1" parent="9g35GHuaYEsMOrcFAuSK-1">
<mxGeometry width="80" relative="1" as="geometry">
<mxPoint x="410" y="520" as="sourcePoint" />
<mxPoint x="610" y="520" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="9g35GHuaYEsMOrcFAuSK-7" value="HTTP 200 OK&lt;div&gt;{ cookie&amp;nbsp;}&lt;/div&gt;" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;curved=0;rounded=0;fontColor=#000000;fontFamily=Lucida Console;" edge="1" parent="9g35GHuaYEsMOrcFAuSK-1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="610" y="560" as="sourcePoint" />
<mxPoint x="410" y="560" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="9g35GHuaYEsMOrcFAuSK-8" value="HTTP GET /routeRestreinte&lt;div&gt;{ cookie&amp;nbsp;}&lt;/div&gt;" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;fontFamily=Lucida Console;" edge="1" parent="9g35GHuaYEsMOrcFAuSK-1">
<mxGeometry width="80" relative="1" as="geometry">
<mxPoint x="410" y="600" as="sourcePoint" />
<mxPoint x="610" y="600" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="9g35GHuaYEsMOrcFAuSK-9" value="HTTP 200 OK" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;curved=0;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#82B366;fontFamily=Lucida Console;" edge="1" parent="9g35GHuaYEsMOrcFAuSK-1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="610" y="640" as="sourcePoint" />
<mxPoint x="410" y="640" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="3aiV0IpNb-s9C5pguoUn-2" value="Session en cours ?" style="curved=1;endArrow=classic;html=1;rounded=0;fontFamily=Lucida Console;" edge="1" parent="9g35GHuaYEsMOrcFAuSK-1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="640" y="600" as="sourcePoint" />
<mxPoint x="649" y="622" as="targetPoint" />
<Array as="points">
<mxPoint x="670" y="580" />
<mxPoint x="680" y="630" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="3aiV0IpNb-s9C5pguoUn-3" value="Session en cours ?" style="curved=1;endArrow=classic;html=1;rounded=0;fontFamily=Lucida Console;" edge="1" parent="9g35GHuaYEsMOrcFAuSK-1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="640" y="440" as="sourcePoint" />
<mxPoint x="649" y="462" as="targetPoint" />
<Array as="points">
<mxPoint x="670" y="420" />
<mxPoint x="680" y="470" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="3aiV0IpNb-s9C5pguoUn-4" value="Stocke une session" style="curved=1;endArrow=classic;html=1;rounded=0;fontFamily=Lucida Console;" edge="1" parent="9g35GHuaYEsMOrcFAuSK-1">
<mxGeometry width="50" height="50" relative="1" as="geometry">
<mxPoint x="640" y="520" as="sourcePoint" />
<mxPoint x="649" y="542" as="targetPoint" />
<Array as="points">
<mxPoint x="670" y="500" />
<mxPoint x="680" y="550" />
</Array>
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
<diagram name="Stateless" id="RY9LXfIQCegcqG30vLet">
<mxGraphModel dx="1426" dy="963" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="Jnp_DY50OwIwXnVebXD0-2" value="" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;curved&quot;:0,&quot;rounded&quot;:0};participant=umlActor;fontFamily=Lucida Console;" parent="1" vertex="1">
<mxGeometry x="400" y="340" width="20" height="340" as="geometry" />
</mxCell>
<mxCell id="Jnp_DY50OwIwXnVebXD0-3" value="Serveur" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;curved&quot;:0,&quot;rounded&quot;:0};fontFamily=Lucida Console;" parent="1" vertex="1">
<mxGeometry x="560" y="340" width="100" height="340" as="geometry" />
</mxCell>
<mxCell id="Jnp_DY50OwIwXnVebXD0-4" value="HTTP GET /routeRestreinte" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;fontFamily=Lucida Console;" parent="1" target="Jnp_DY50OwIwXnVebXD0-3" edge="1">
<mxGeometry width="80" relative="1" as="geometry">
<mxPoint x="410" y="440" as="sourcePoint" />
<mxPoint x="490" y="440" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="Jnp_DY50OwIwXnVebXD0-5" value="HTTP 401 Unauthorized" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;curved=0;rounded=0;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#B85450;fontFamily=Lucida Console;" parent="1" target="Jnp_DY50OwIwXnVebXD0-2" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="610" y="480" as="sourcePoint" />
<mxPoint x="530" y="480" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="Jnp_DY50OwIwXnVebXD0-6" value="HTTP POST /login&lt;div&gt;{ username, password }&lt;/div&gt;" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;fontFamily=Lucida Console;" parent="1" edge="1">
<mxGeometry width="80" relative="1" as="geometry">
<mxPoint x="410" y="520" as="sourcePoint" />
<mxPoint x="610" y="520" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="Jnp_DY50OwIwXnVebXD0-7" value="HTTP 200 OK&lt;div&gt;{ User, token }&lt;/div&gt;" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;curved=0;rounded=0;fontColor=#000000;fontFamily=Lucida Console;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="610" y="560" as="sourcePoint" />
<mxPoint x="410" y="560" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="Jnp_DY50OwIwXnVebXD0-8" value="HTTP GET /routeRestreinte&lt;div&gt;{ token }&lt;/div&gt;" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;fontFamily=Lucida Console;" parent="1" edge="1">
<mxGeometry width="80" relative="1" as="geometry">
<mxPoint x="410" y="600" as="sourcePoint" />
<mxPoint x="610" y="600" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="Jnp_DY50OwIwXnVebXD0-9" value="HTTP 200 OK" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;curved=0;rounded=0;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#82B366;fontFamily=Lucida Console;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="610" y="640" as="sourcePoint" />
<mxPoint x="410" y="640" as="targetPoint" />
</mxGeometry>
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

241
res/proxy.drawio Normal file
View File

@@ -0,0 +1,241 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/28.2.5 Chrome/138.0.7204.251 Electron/37.6.1 Safari/537.36" version="28.2.5" pages="3">
<diagram name="Comparaison" id="9MqvtewQID66-vZ2UXqX">
<mxGraphModel dx="2066" dy="1203" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-1" value="LAN" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;fontFamily=Lucida Console;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="120" y="320" width="240" height="270" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="LKEV81Y3gZv3WaOGvJ7U-2" target="LKEV81Y3gZv3WaOGvJ7U-7">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="160" y="530" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-2" value="Utilisateur&lt;div&gt;1&lt;/div&gt;" style="shape=umlActor;verticalLabelPosition=top;verticalAlign=bottom;html=1;outlineConnect=0;fontFamily=Lucida Console;fontSize=10;labelPosition=center;align=center;" vertex="1" parent="1">
<mxGeometry x="147" y="390" width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-13" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="LKEV81Y3gZv3WaOGvJ7U-3" target="LKEV81Y3gZv3WaOGvJ7U-7">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-3" value="Utilisateur&lt;div&gt;2&lt;/div&gt;" style="shape=umlActor;verticalLabelPosition=top;verticalAlign=bottom;html=1;outlineConnect=0;fontFamily=Lucida Console;fontSize=10;labelPosition=center;align=center;" vertex="1" parent="1">
<mxGeometry x="225.53" y="390" width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-14" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="LKEV81Y3gZv3WaOGvJ7U-4" target="LKEV81Y3gZv3WaOGvJ7U-7">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="316" y="530" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-4" value="Utilisateur&lt;div&gt;3&lt;/div&gt;" style="shape=umlActor;verticalLabelPosition=top;verticalAlign=bottom;html=1;outlineConnect=0;fontFamily=Lucida Console;fontSize=10;labelPosition=center;align=center;" vertex="1" parent="1">
<mxGeometry x="300.53" y="390" width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-15" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.482;entryY=0;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="LKEV81Y3gZv3WaOGvJ7U-7" target="LKEV81Y3gZv3WaOGvJ7U-8">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-7" value="Proxy" style="image;points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image=img/lib/allied_telesis/computer_and_terminals/Server_Desktop.svg;fontFamily=Lucida Console;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;labelBackgroundColor=default;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="218.7" y="510" width="42.599999999999994" height="54" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-16" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="LKEV81Y3gZv3WaOGvJ7U-8" target="LKEV81Y3gZv3WaOGvJ7U-9">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="LKEV81Y3gZv3WaOGvJ7U-8" target="LKEV81Y3gZv3WaOGvJ7U-10">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="301" y="658" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-8" value="Internet" style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#3B8DF1;verticalAlign=top;labelPosition=center;verticalLabelPosition=bottom;shape=mxgraph.gcp2.globe_world;fontFamily=Lucida Console;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="212.11" y="630" width="57.89" height="55" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-9" value="Serveur web 1" style="image;points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image=img/lib/allied_telesis/storage/Datacenter_Server_Half_Rack_ToR.svg;fontFamily=Lucida Console;" vertex="1" parent="1">
<mxGeometry x="146.47" y="750" width="65.11" height="84.6" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-10" value="Serveur web 2" style="image;points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image=img/lib/allied_telesis/storage/Datacenter_Server_Half_Rack_ToR.svg;fontFamily=Lucida Console;" vertex="1" parent="1">
<mxGeometry x="268.41999999999996" y="750" width="65.11" height="84.6" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-32" value="" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;fontFamily=Lucida Console;fontStyle=1;labelBackgroundColor=default;" vertex="1" parent="1">
<mxGeometry x="460.53" y="610" width="240" height="270" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-53" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="LKEV81Y3gZv3WaOGvJ7U-43" target="LKEV81Y3gZv3WaOGvJ7U-40">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-34" value="Utilisateur&lt;div&gt;1&lt;/div&gt;" style="shape=umlActor;verticalLabelPosition=top;verticalAlign=bottom;html=1;outlineConnect=0;fontFamily=Lucida Console;fontSize=10;labelPosition=center;align=center;" vertex="1" parent="1">
<mxGeometry x="487" y="390" width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-36" value="Utilisateur&lt;div&gt;2&lt;/div&gt;" style="shape=umlActor;verticalLabelPosition=top;verticalAlign=bottom;html=1;outlineConnect=0;fontFamily=Lucida Console;fontSize=10;labelPosition=center;align=center;" vertex="1" parent="1">
<mxGeometry x="565.53" y="390" width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-38" value="Utilisateur&lt;div&gt;3&lt;/div&gt;" style="shape=umlActor;verticalLabelPosition=top;verticalAlign=bottom;html=1;outlineConnect=0;fontFamily=Lucida Console;fontSize=10;labelPosition=center;align=center;" vertex="1" parent="1">
<mxGeometry x="640.53" y="390" width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-46" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="LKEV81Y3gZv3WaOGvJ7U-40" target="LKEV81Y3gZv3WaOGvJ7U-44">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-47" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="1" source="LKEV81Y3gZv3WaOGvJ7U-40" target="LKEV81Y3gZv3WaOGvJ7U-45">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-40" value="Proxy" style="image;points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image=img/lib/allied_telesis/computer_and_terminals/Server_Desktop.svg;fontFamily=Lucida Console;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;labelBackgroundColor=default;fontStyle=1" vertex="1" parent="1">
<mxGeometry x="559.22" y="650" width="42.599999999999994" height="54" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-43" value="Internet" style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#3B8DF1;verticalAlign=top;labelPosition=center;verticalLabelPosition=bottom;shape=mxgraph.gcp2.globe_world;fontFamily=Lucida Console;fontStyle=1;labelBackgroundColor=default;" vertex="1" parent="1">
<mxGeometry x="551.58" y="500" width="57.89" height="55" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-44" value="Serveur web 1" style="image;points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image=img/lib/allied_telesis/storage/Datacenter_Server_Half_Rack_ToR.svg;fontFamily=Lucida Console;" vertex="1" parent="1">
<mxGeometry x="486.47" y="750" width="65.11" height="84.6" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-45" value="Serveur web 2" style="image;points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image=img/lib/allied_telesis/storage/Datacenter_Server_Half_Rack_ToR.svg;fontFamily=Lucida Console;" vertex="1" parent="1">
<mxGeometry x="608.42" y="750" width="65.11" height="84.6" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-50" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.01;entryY=0.436;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="LKEV81Y3gZv3WaOGvJ7U-34" target="LKEV81Y3gZv3WaOGvJ7U-43">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="502" y="524" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-51" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.491;entryY=-0.036;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="LKEV81Y3gZv3WaOGvJ7U-36" target="LKEV81Y3gZv3WaOGvJ7U-43">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-52" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=1.044;entryY=0.418;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="1" source="LKEV81Y3gZv3WaOGvJ7U-38" target="LKEV81Y3gZv3WaOGvJ7U-43">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="656" y="523" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-54" value="&lt;div&gt;Serveur mandataire&lt;/div&gt;(&lt;i&gt;Forward Proxy&lt;/i&gt;)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Lucida Console;fontSize=14;" vertex="1" parent="1">
<mxGeometry x="131.85000000000002" y="260" width="218.42" height="30" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-55" value="&lt;div&gt;Serveur mandataire inverse&lt;/div&gt;(&lt;i&gt;Reverse&amp;nbsp;Proxy&lt;/i&gt;)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Lucida Console;fontSize=14;" vertex="1" parent="1">
<mxGeometry x="466.19" y="260" width="228.69" height="30" as="geometry" />
</mxCell>
<mxCell id="LKEV81Y3gZv3WaOGvJ7U-56" value="&lt;span style=&quot;color: rgb(0, 0, 0); font-family: &amp;quot;Lucida Console&amp;quot;; font-size: 12px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 700; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; white-space: normal; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial; float: none; display: inline !important;&quot;&gt;LAN&lt;/span&gt;" style="text;whiteSpace=wrap;html=1;align=center;labelBackgroundColor=default;" vertex="1" parent="1">
<mxGeometry x="565.53" y="610" width="30" height="30" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
<diagram name="Proxy" id="fnspbOYHK2aOWM9K-dQL">
<mxGraphModel dx="689" dy="401" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="zMQIjzfL4_ej9GQfYpPx-0" />
<mxCell id="zMQIjzfL4_ej9GQfYpPx-1" parent="zMQIjzfL4_ej9GQfYpPx-0" />
<mxCell id="zMQIjzfL4_ej9GQfYpPx-2" value="LAN" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;fontFamily=Lucida Console;fontStyle=1" vertex="1" parent="zMQIjzfL4_ej9GQfYpPx-1">
<mxGeometry x="90" y="320" width="330" height="270" as="geometry" />
</mxCell>
<mxCell id="zMQIjzfL4_ej9GQfYpPx-10" value="Proxy" style="image;points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image=img/lib/allied_telesis/computer_and_terminals/Server_Desktop.svg;fontFamily=Lucida Console;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;labelBackgroundColor=default;fontStyle=1" vertex="1" parent="zMQIjzfL4_ej9GQfYpPx-1">
<mxGeometry x="350.27" y="428" width="42.599999999999994" height="54" as="geometry" />
</mxCell>
<mxCell id="zMQIjzfL4_ej9GQfYpPx-11" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontFamily=Lucida Console;" edge="1" parent="zMQIjzfL4_ej9GQfYpPx-1" source="zMQIjzfL4_ej9GQfYpPx-13" target="zMQIjzfL4_ej9GQfYpPx-14">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="550" y="456" />
<mxPoint x="550" y="375" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="zMQIjzfL4_ej9GQfYpPx-12" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontFamily=Lucida Console;" edge="1" parent="zMQIjzfL4_ej9GQfYpPx-1" source="zMQIjzfL4_ej9GQfYpPx-13" target="zMQIjzfL4_ej9GQfYpPx-15">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="550" y="456" />
<mxPoint x="550" y="535" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="zMQIjzfL4_ej9GQfYpPx-13" value="Internet" style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#3B8DF1;verticalAlign=top;labelPosition=center;verticalLabelPosition=bottom;shape=mxgraph.gcp2.globe_world;fontFamily=Lucida Console;fontStyle=1" vertex="1" parent="zMQIjzfL4_ej9GQfYpPx-1">
<mxGeometry x="470" y="428" width="57.89" height="55" as="geometry" />
</mxCell>
<mxCell id="zMQIjzfL4_ej9GQfYpPx-14" value="Serveur web 1" style="image;points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image=img/lib/allied_telesis/storage/Datacenter_Server_Half_Rack_ToR.svg;fontFamily=Lucida Console;" vertex="1" parent="zMQIjzfL4_ej9GQfYpPx-1">
<mxGeometry x="580" y="332.3" width="65.11" height="84.6" as="geometry" />
</mxCell>
<mxCell id="zMQIjzfL4_ej9GQfYpPx-15" value="Serveur web 2" style="image;points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image=img/lib/allied_telesis/storage/Datacenter_Server_Half_Rack_ToR.svg;fontFamily=Lucida Console;labelPosition=center;verticalLabelPosition=top;verticalAlign=bottom;" vertex="1" parent="zMQIjzfL4_ej9GQfYpPx-1">
<mxGeometry x="580" y="493.09999999999997" width="65.11" height="84.6" as="geometry" />
</mxCell>
<mxCell id="zMQIjzfL4_ej9GQfYpPx-30" value="&lt;div&gt;Serveur mandataire&lt;/div&gt;(&lt;i&gt;Forward Proxy&lt;/i&gt;)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Lucida Console;fontSize=14;" vertex="1" parent="zMQIjzfL4_ej9GQfYpPx-1">
<mxGeometry x="140.93" y="260" width="228.15" height="30" as="geometry" />
</mxCell>
<mxCell id="uFl9XqG_kx5OHAVWHw2u-0" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.491;entryDx=0;entryDy=0;entryPerimeter=0;fontFamily=Lucida Console;" edge="1" parent="zMQIjzfL4_ej9GQfYpPx-1" source="zMQIjzfL4_ej9GQfYpPx-10" target="zMQIjzfL4_ej9GQfYpPx-13">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="uFl9XqG_kx5OHAVWHw2u-1" value="Utilisateur 1" style="shape=umlActor;verticalLabelPosition=middle;verticalAlign=middle;html=1;outlineConnect=0;labelPosition=left;align=right;fontFamily=Lucida Console;" vertex="1" parent="zMQIjzfL4_ej9GQfYpPx-1">
<mxGeometry x="200" y="344.6" width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="uFl9XqG_kx5OHAVWHw2u-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontFamily=Lucida Console;" edge="1" parent="zMQIjzfL4_ej9GQfYpPx-1" source="uFl9XqG_kx5OHAVWHw2u-2">
<mxGeometry relative="1" as="geometry">
<mxPoint x="350" y="455" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="uFl9XqG_kx5OHAVWHw2u-2" value="Utilisateur 2" style="shape=umlActor;verticalLabelPosition=middle;verticalAlign=middle;html=1;outlineConnect=0;labelPosition=left;align=right;fontFamily=Lucida Console;" vertex="1" parent="zMQIjzfL4_ej9GQfYpPx-1">
<mxGeometry x="200" y="425" width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="uFl9XqG_kx5OHAVWHw2u-3" value="Utilisateur 3" style="shape=umlActor;verticalLabelPosition=middle;verticalAlign=middle;html=1;outlineConnect=0;labelPosition=left;align=right;fontFamily=Lucida Console;" vertex="1" parent="zMQIjzfL4_ej9GQfYpPx-1">
<mxGeometry x="200" y="505.4" width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="uFl9XqG_kx5OHAVWHw2u-6" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.006;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;fontFamily=Lucida Console;" edge="1" parent="zMQIjzfL4_ej9GQfYpPx-1" source="uFl9XqG_kx5OHAVWHw2u-3" target="zMQIjzfL4_ej9GQfYpPx-10">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="uFl9XqG_kx5OHAVWHw2u-8" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.006;entryY=0.5;entryDx=0;entryDy=0;entryPerimeter=0;fontFamily=Lucida Console;" edge="1" parent="zMQIjzfL4_ej9GQfYpPx-1" source="uFl9XqG_kx5OHAVWHw2u-1" target="zMQIjzfL4_ej9GQfYpPx-10">
<mxGeometry relative="1" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
<diagram name="Reverse Proxy" id="S54jXCwPrSGSSp_h8u8Y">
<mxGraphModel dx="231" dy="134" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="qddYBRGU7_8blzgXnBcd-0" />
<mxCell id="qddYBRGU7_8blzgXnBcd-1" parent="qddYBRGU7_8blzgXnBcd-0" />
<mxCell id="eIXzMXpVGuXuhmyBGTdY-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" edge="1" parent="qddYBRGU7_8blzgXnBcd-1" source="qddYBRGU7_8blzgXnBcd-14" target="qddYBRGU7_8blzgXnBcd-6">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="qddYBRGU7_8blzgXnBcd-2" value="LAN" style="rounded=1;whiteSpace=wrap;html=1;verticalAlign=top;fontFamily=Lucida Console;fontStyle=1" vertex="1" parent="qddYBRGU7_8blzgXnBcd-1">
<mxGeometry x="380" y="320.5" width="330" height="270" as="geometry" />
</mxCell>
<mxCell id="qddYBRGU7_8blzgXnBcd-3" value="Proxy" style="image;points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image=img/lib/allied_telesis/computer_and_terminals/Server_Desktop.svg;fontFamily=Lucida Console;labelPosition=center;verticalLabelPosition=bottom;verticalAlign=top;labelBackgroundColor=default;fontStyle=1" vertex="1" parent="qddYBRGU7_8blzgXnBcd-1">
<mxGeometry x="440" y="428" width="42.599999999999994" height="54" as="geometry" />
</mxCell>
<mxCell id="qddYBRGU7_8blzgXnBcd-6" value="Internet" style="sketch=0;html=1;aspect=fixed;strokeColor=none;shadow=0;fillColor=#3B8DF1;verticalAlign=top;labelPosition=center;verticalLabelPosition=bottom;shape=mxgraph.gcp2.globe_world;fontFamily=Lucida Console;fontStyle=1;labelBackgroundColor=default;" vertex="1" parent="qddYBRGU7_8blzgXnBcd-1">
<mxGeometry x="280" y="428" width="57.89" height="55" as="geometry" />
</mxCell>
<mxCell id="qddYBRGU7_8blzgXnBcd-7" value="Serveur web 1" style="image;points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image=img/lib/allied_telesis/storage/Datacenter_Server_Half_Rack_ToR.svg;fontFamily=Lucida Console;" vertex="1" parent="qddYBRGU7_8blzgXnBcd-1">
<mxGeometry x="580" y="332.3" width="65.11" height="84.6" as="geometry" />
</mxCell>
<mxCell id="qddYBRGU7_8blzgXnBcd-8" value="Serveur web 2" style="image;points=[];aspect=fixed;html=1;align=center;shadow=0;dashed=0;image=img/lib/allied_telesis/storage/Datacenter_Server_Half_Rack_ToR.svg;fontFamily=Lucida Console;labelPosition=center;verticalLabelPosition=top;verticalAlign=bottom;" vertex="1" parent="qddYBRGU7_8blzgXnBcd-1">
<mxGeometry x="580" y="493.09999999999997" width="65.11" height="84.6" as="geometry" />
</mxCell>
<mxCell id="qddYBRGU7_8blzgXnBcd-9" value="&lt;div&gt;Serveur mandataire inverse&lt;/div&gt;(&lt;i&gt;Reverse Proxy&lt;/i&gt;)" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Lucida Console;fontSize=14;" vertex="1" parent="qddYBRGU7_8blzgXnBcd-1">
<mxGeometry x="430.93" y="260" width="228.15" height="30" as="geometry" />
</mxCell>
<mxCell id="qddYBRGU7_8blzgXnBcd-11" value="Utilisateur 1" style="shape=umlActor;verticalLabelPosition=middle;verticalAlign=middle;html=1;outlineConnect=0;labelPosition=left;align=right;fontFamily=Lucida Console;" vertex="1" parent="qddYBRGU7_8blzgXnBcd-1">
<mxGeometry x="200" y="344.6" width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="qddYBRGU7_8blzgXnBcd-13" value="Utilisateur 2" style="shape=umlActor;verticalLabelPosition=middle;verticalAlign=middle;html=1;outlineConnect=0;labelPosition=left;align=right;fontFamily=Lucida Console;" vertex="1" parent="qddYBRGU7_8blzgXnBcd-1">
<mxGeometry x="200" y="425" width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="qddYBRGU7_8blzgXnBcd-14" value="Utilisateur 3" style="shape=umlActor;verticalLabelPosition=middle;verticalAlign=middle;html=1;outlineConnect=0;labelPosition=left;align=right;fontFamily=Lucida Console;" vertex="1" parent="qddYBRGU7_8blzgXnBcd-1">
<mxGeometry x="200" y="505.4" width="30" height="60" as="geometry" />
</mxCell>
<mxCell id="eIXzMXpVGuXuhmyBGTdY-0" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.481;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="qddYBRGU7_8blzgXnBcd-1" source="qddYBRGU7_8blzgXnBcd-3" target="qddYBRGU7_8blzgXnBcd-7">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="eIXzMXpVGuXuhmyBGTdY-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.015;entryY=0.483;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="qddYBRGU7_8blzgXnBcd-1" source="qddYBRGU7_8blzgXnBcd-3" target="qddYBRGU7_8blzgXnBcd-8">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="eIXzMXpVGuXuhmyBGTdY-2" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0;entryY=0.491;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="qddYBRGU7_8blzgXnBcd-1" source="qddYBRGU7_8blzgXnBcd-13" target="qddYBRGU7_8blzgXnBcd-6">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="eIXzMXpVGuXuhmyBGTdY-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=0.484;entryY=-0.055;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="qddYBRGU7_8blzgXnBcd-1" source="qddYBRGU7_8blzgXnBcd-11" target="qddYBRGU7_8blzgXnBcd-6">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="eIXzMXpVGuXuhmyBGTdY-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;entryX=-0.07;entryY=0.519;entryDx=0;entryDy=0;entryPerimeter=0;" edge="1" parent="qddYBRGU7_8blzgXnBcd-1" source="qddYBRGU7_8blzgXnBcd-6" target="qddYBRGU7_8blzgXnBcd-3">
<mxGeometry relative="1" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@@ -0,0 +1,196 @@
<mxfile host="Electron" agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/29.3.6 Chrome/140.0.7339.249 Electron/38.8.0 Safari/537.36" version="29.3.6">
<diagram id="4Y_KsI118iPX1C1HI_qV" name="Page-1">
<mxGraphModel dx="2066" dy="1249" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1100" pageHeight="850" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="peq8d5gX8DXLt__JmTx_-2" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#B3B3B3;fontColor=#333333;" value="" vertex="1">
<mxGeometry height="269" width="192" x="210" y="131" as="geometry" />
</mxCell>
<mxCell id="peq8d5gX8DXLt__JmTx_-3" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" value="&lt;font style=&quot;font-size: 18px&quot; face=&quot;Verdana&quot;&gt;Mounting&lt;/font&gt;" vertex="1">
<mxGeometry height="20" width="38" x="282" y="141" as="geometry" />
</mxCell>
<mxCell id="peq8d5gX8DXLt__JmTx_-4" edge="1" parent="1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="272" y="301" />
<mxPoint x="272" y="301" />
</Array>
<mxPoint x="272" y="208" as="sourcePoint" />
<mxPoint x="272" y="321" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="peq8d5gX8DXLt__JmTx_-5" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;gradientColor=#E8F1FF;" value="&lt;h3 id=&quot;static-getderivedstatefromprops&quot;&gt;&lt;code style=&quot;font-weight: normal&quot;&gt;&lt;font style=&quot;font-size: 14px&quot;&gt;function () {}&lt;/font&gt;&lt;/code&gt;&lt;/h3&gt;" vertex="1">
<mxGeometry height="30" width="140" x="242" y="178" as="geometry" />
</mxCell>
<mxCell id="peq8d5gX8DXLt__JmTx_-7" parent="1" style="text;html=1;resizable=0;points=[];autosize=1;align=left;verticalAlign=top;spacingTop=-4;" value="&lt;font style=&quot;font-size: 13px&quot; face=&quot;Verdana&quot;&gt;&lt;b&gt;&quot;Render phase&quot;&lt;br&gt;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;Pure and has no side&lt;br&gt;effects. May be paused,&lt;br&gt;aborted or restarted by&lt;br&gt;React." vertex="1">
<mxGeometry height="90" width="140" x="40" y="191" as="geometry" />
</mxCell>
<mxCell id="peq8d5gX8DXLt__JmTx_-8" parent="1" style="text;html=1;resizable=0;points=[];autosize=1;align=left;verticalAlign=top;spacingTop=-4;" value="&lt;font style=&quot;font-size: 14px&quot;&gt;&lt;b&gt;&quot;Commit phase&quot;&lt;br&gt;&lt;/b&gt;&lt;br&gt;&lt;/font&gt;Can work with DOM,&lt;br&gt;run side effects,&lt;br&gt;schedule updates.&lt;br&gt;" vertex="1">
<mxGeometry height="70" width="130" x="40" y="471" as="geometry" />
</mxCell>
<mxCell id="peq8d5gX8DXLt__JmTx_-12" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;strokeColor=#B3B3B3;fontColor=#333333;" value="" vertex="1">
<mxGeometry height="269" width="452" x="450" y="131" as="geometry" />
</mxCell>
<mxCell id="peq8d5gX8DXLt__JmTx_-13" parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" value="&lt;font style=&quot;font-size: 18px&quot; face=&quot;Verdana&quot;&gt;Updating&lt;/font&gt;" vertex="1">
<mxGeometry height="20" width="75.91564927857935" x="632.0037624861264" y="141" as="geometry" />
</mxCell>
<UserObject label="New props" id="peq8d5gX8DXLt__JmTx_-15">
<mxCell parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;gradientColor=#E8F1FF;" vertex="1">
<mxGeometry height="30" width="92" x="468" y="179" as="geometry" />
</mxCell>
</UserObject>
<mxCell id="peq8d5gX8DXLt__JmTx_-16" parent="1" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#f5f5f5;fontColor=#333333;strokeColor=#B3B3B3;" value="" vertex="1">
<mxGeometry height="320" width="692" x="210" y="430" as="geometry" />
</mxCell>
<mxCell id="peq8d5gX8DXLt__JmTx_-17" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#E8F1FF;strokeColor=#6c8ebf;" value="&lt;h3 id=&quot;static-getderivedstatefromprops&quot;&gt;&lt;code&gt;&lt;font style=&quot;font-weight: normal ; font-size: 14px&quot;&gt;return ()&lt;/font&gt;&lt;/code&gt;&lt;/h3&gt;" vertex="1">
<mxGeometry height="30" width="140" x="242" y="321" as="geometry" />
</mxCell>
<mxCell id="bXESYanQTJGo6Cj8_ghC-12" edge="1" parent="1" source="peq8d5gX8DXLt__JmTx_-18" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;fontFamily=Helvetica;fontSize=12;" target="bXESYanQTJGo6Cj8_ghC-10">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="peq8d5gX8DXLt__JmTx_-18" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;gradientColor=#C8E8C5;" value="" vertex="1">
<mxGeometry height="50" width="630" x="242" y="553" as="geometry" />
</mxCell>
<UserObject label="&lt;h3 id=&quot;static-getderivedstatefromprops&quot;&gt;&lt;code&gt;&lt;font style=&quot;font-size: 14px&quot;&gt;&lt;a href=&quot;https://reactjs.org/docs/hooks-reference.html#usememo&quot;&gt;useMemo()&lt;/a&gt;&lt;/font&gt;&lt;/code&gt;&lt;/h3&gt;" tooltip="https://reactjs.org/docs/hooks-reference.html#usememo" id="peq8d5gX8DXLt__JmTx_-26">
<mxCell parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;dashed=1;gradientColor=#E8F1FF;" vertex="1">
<mxGeometry height="30" width="90" x="292" y="236" as="geometry" />
</mxCell>
</UserObject>
<mxCell id="peq8d5gX8DXLt__JmTx_-31" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#fff2cc;strokeColor=#d6b656;gradientColor=#FFF1B8;" value="&lt;h3 id=&quot;static-getderivedstatefromprops&quot;&gt;&lt;code style=&quot;font-weight: normal&quot;&gt;React updates DOM and refs&lt;/code&gt;&lt;/h3&gt;" vertex="1">
<mxGeometry height="50" width="632" x="240" y="461" as="geometry" />
</mxCell>
<mxCell id="yjP6mhXBnPZrxiyDEznI-19" edge="1" parent="1" source="peq8d5gX8DXLt__JmTx_-32" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;fontColor=#007FFF;" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="770" y="330" />
<mxPoint x="671" y="330" />
</Array>
<mxPoint x="671" y="350" as="targetPoint" />
</mxGeometry>
</mxCell>
<UserObject label="&lt;h3 id=&quot;static-getderivedstatefromprops&quot;&gt;&lt;code&gt;&lt;font style=&quot;font-size: 14px&quot;&gt;&lt;a href=&quot;https://reactjs.org/docs/hooks-reference.html#usecallback&quot;&gt;useCallback()&lt;/a&gt;&lt;/font&gt;&lt;/code&gt;&lt;/h3&gt;" tooltip="https://reactjs.org/docs/hooks-reference.html#usecallback" id="peq8d5gX8DXLt__JmTx_-32">
<mxCell parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;dashed=1;gradientColor=#E8F1FF;" vertex="1">
<mxGeometry height="30" width="124" x="707.92" y="266" as="geometry" />
</mxCell>
</UserObject>
<mxCell id="peq8d5gX8DXLt__JmTx_-33" edge="1" parent="1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;" value="">
<mxGeometry relative="1" as="geometry">
<mxPoint x="339" y="209" as="sourcePoint" />
<mxPoint x="339" y="236" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="peq8d5gX8DXLt__JmTx_-34" edge="1" parent="1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;dashed=1;" value="">
<mxGeometry relative="1" as="geometry">
<mxPoint x="341" y="265" as="sourcePoint" />
<mxPoint x="341" y="321" as="targetPoint" />
</mxGeometry>
</mxCell>
<UserObject label="&lt;h3 id=&quot;static-getderivedstatefromprops&quot;&gt;&lt;code style=&quot;font-size: 14px&quot;&gt;&lt;font style=&quot;font-size: 14px&quot;&gt;&lt;a href=&quot;https://reactjs.org/docs/hooks-reference.html#useeffect&quot;&gt;useEffect()&lt;/a&gt;&amp;nbsp;&lt;/font&gt;&lt;/code&gt;&lt;/h3&gt;" tooltip="https://reactjs.org/docs/hooks-reference.html#useeffect" id="peq8d5gX8DXLt__JmTx_-42">
<mxCell parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1">
<mxGeometry height="20" width="40" x="299" y="567" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;h3 id=&quot;static-getderivedstatefromprops&quot;&gt;&lt;code style=&quot;font-size: 14px&quot;&gt;&lt;a href=&quot;https://reactjs.org/docs/hooks-reference.html#useeffect&quot;&gt;useLayoutEffect()&lt;/a&gt;&amp;nbsp;&lt;/code&gt;&lt;/h3&gt;&lt;h3 id=&quot;static-getderivedstatefromprops&quot;&gt;&lt;code&gt;&lt;font size=&quot;1&quot;&gt;&lt;a href=&quot;https://reactjs.org/docs/hooks-reference.html#uselayouteffect&quot;&gt;&lt;/a&gt;&lt;/font&gt;&lt;/code&gt;&lt;/h3&gt;" tooltip="https://reactjs.org/docs/hooks-reference.html#uselayouteffect" link="https://reactjs.org/docs/hooks-reference.html#uselayouteffect" linkTarget="_blank" id="peq8d5gX8DXLt__JmTx_-43">
<mxCell parent="1" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1">
<mxGeometry height="20" width="40" x="435" y="567" as="geometry" />
</mxCell>
</UserObject>
<mxCell id="yjP6mhXBnPZrxiyDEznI-13" edge="1" parent="1" source="yjP6mhXBnPZrxiyDEznI-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.68;entryY=-0.02;entryDx=0;entryDy=0;entryPerimeter=0;fontColor=#007FFF;" target="peq8d5gX8DXLt__JmTx_-31">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="yjP6mhXBnPZrxiyDEznI-10" parent="1" style="rhombus;whiteSpace=wrap;html=1;labelBackgroundColor=none;fontColor=#007FFF;fillColor=none;aspect=fixed;" value="" vertex="1">
<mxGeometry height="20" width="20" x="660" y="210" as="geometry" />
</mxCell>
<mxCell id="Qn97D7aN3kyVjcPedb_y-5" connectable="0" parent="1" style="group;spacing=2;" value="" vertex="1">
<mxGeometry height="30" width="404" x="534" y="179" as="geometry" />
</mxCell>
<UserObject label="" id="Qn97D7aN3kyVjcPedb_y-1">
<mxCell parent="Qn97D7aN3kyVjcPedb_y-5" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#dae8fc;strokeColor=#6c8ebf;gradientColor=#E8F1FF;" vertex="1">
<mxGeometry height="30" width="332" x="20" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;h3 id=&quot;static-getderivedstatefromprops&quot;&gt;&lt;code&gt;&lt;font color=&quot;#3399ff&quot; style=&quot;font-size: 14px&quot;&gt;&lt;a href=&quot;https://reactjs.org/docs/hooks-reference.html#usestate&quot;&gt;useState()&lt;/a&gt;&lt;/font&gt;&lt;/code&gt;&lt;/h3&gt;" tooltip="https://reactjs.org/docs/hooks-reference.html#usestate" id="peq8d5gX8DXLt__JmTx_-39">
<mxCell parent="Qn97D7aN3kyVjcPedb_y-5" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1">
<mxGeometry height="20" width="40" x="58" y="5" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;h3 id=&quot;static-getderivedstatefromprops&quot;&gt;&lt;code&gt;&lt;font color=&quot;#3399ff&quot; style=&quot;font-size: 14px&quot;&gt;&lt;a href=&quot;https://reactjs.org/docs/hooks-reference.html#usereducer&quot;&gt;useReducer()&lt;/a&gt;&lt;/font&gt;&lt;/code&gt;&lt;/h3&gt;" tooltip="https://reactjs.org/docs/hooks-reference.html#usereducer" id="peq8d5gX8DXLt__JmTx_-40">
<mxCell parent="Qn97D7aN3kyVjcPedb_y-5" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1">
<mxGeometry height="20" width="40" x="162" y="5" as="geometry" />
</mxCell>
</UserObject>
<UserObject label="&lt;h3 id=&quot;static-getderivedstatefromprops&quot;&gt;&lt;code&gt;&lt;font color=&quot;#3399ff&quot; style=&quot;font-size: 14px&quot;&gt;&lt;a href=&quot;https://reactjs.org/docs/hooks-reference.html#usecontext&quot; style=&quot;line-height: 1&quot;&gt;useContext()&lt;/a&gt;&lt;/font&gt;&lt;/code&gt;&lt;/h3&gt;" tooltip="https://reactjs.org/docs/hooks-reference.html#usecontext" id="peq8d5gX8DXLt__JmTx_-41">
<mxCell parent="Qn97D7aN3kyVjcPedb_y-5" style="text;html=1;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;" vertex="1">
<mxGeometry height="20" width="40" x="275.5" y="5" as="geometry" />
</mxCell>
</UserObject>
<mxCell id="Qn97D7aN3kyVjcPedb_y-7" parent="1" style="text;whiteSpace=wrap;html=1;fillColor=none;align=left;" value="&lt;h3 id=&quot;static-getderivedstatefromprops&quot; style=&quot;color: rgb(0 , 0 , 0) ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; word-spacing: 0px&quot;&gt;&lt;span style=&quot;font-weight: 400&quot;&gt;&lt;font style=&quot;font-size: 12px&quot;&gt;&lt;i&gt;These hooks support cleanup (inside their return function)&lt;/i&gt;&lt;/font&gt;&lt;/span&gt;&lt;/h3&gt;" vertex="1">
<mxGeometry height="60" width="160" x="582" y="541" as="geometry" />
</mxCell>
<mxCell id="bXESYanQTJGo6Cj8_ghC-6" parent="1" style="text;html=1;resizable=0;points=[];autosize=1;align=left;verticalAlign=top;spacingTop=-4;" value="&lt;font style=&quot;font-size: 13px&quot; face=&quot;Verdana&quot;&gt;&lt;b&gt;&quot;Cleanup phase&quot;&lt;br&gt;&lt;/b&gt;&lt;/font&gt;&lt;br&gt;Runs before a&lt;br&gt;component is removed.&lt;br&gt;Prevents memory leaks." vertex="1">
<mxGeometry height="71" width="139" x="42" y="640" as="geometry" />
</mxCell>
<mxCell id="bXESYanQTJGo6Cj8_ghC-17" edge="1" parent="1" source="bXESYanQTJGo6Cj8_ghC-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;fontFamily=Helvetica;fontSize=12;" target="peq8d5gX8DXLt__JmTx_-18">
<mxGeometry relative="1" as="geometry" />
</mxCell>
<mxCell id="bXESYanQTJGo6Cj8_ghC-10" parent="1" style="rounded=1;whiteSpace=wrap;html=1;fillColor=#f8cecc;strokeColor=#b85450;" value="&lt;h3 id=&quot;static-getderivedstatefromprops&quot;&gt;&lt;code style=&quot;font-weight: normal&quot;&gt;React cleans up effects&lt;/code&gt;&lt;/h3&gt;" vertex="1">
<mxGeometry height="50" width="631" x="241" y="670" as="geometry" />
</mxCell>
<mxCell id="bXESYanQTJGo6Cj8_ghC-15" edge="1" parent="1" style="endArrow=classic;html=1;strokeColor=#000000;entryX=0.377;entryY=-0.02;entryDx=0;entryDy=0;entryPerimeter=0;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="557.29" y="511" as="sourcePoint" />
<mxPoint x="557.29" y="552" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="peq8d5gX8DXLt__JmTx_-11" edge="1" parent="1" source="peq8d5gX8DXLt__JmTx_-17" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;" value="">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="310" y="401" />
<mxPoint x="310" y="401" />
</Array>
<mxPoint x="310" y="461" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="peq8d5gX8DXLt__JmTx_-25" edge="1" parent="1" style="endArrow=none;dashed=1;html=1;fontFamily=Lucida Console;fontSize=12;fontColor=#000000;strokeColor=#B3B3B3;" value="">
<mxGeometry height="50" relative="1" width="50" as="geometry">
<mxPoint x="212" y="770" as="sourcePoint" />
<mxPoint x="900" y="770" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="bXESYanQTJGo6Cj8_ghC-23" parent="1" style="text;whiteSpace=wrap;html=1;fillColor=none;align=left;" value="&lt;h3 id=&quot;static-getderivedstatefromprops&quot; style=&quot;color: rgb(0 , 0 , 0) ; letter-spacing: normal ; text-indent: 0px ; text-transform: none ; word-spacing: 0px&quot;&gt;&lt;span style=&quot;font-size: 12px ; font-weight: 400&quot;&gt;&lt;i&gt;React will clean up&lt;br&gt;before the effects&#39; next run&lt;/i&gt;&lt;/span&gt;&lt;/h3&gt;" vertex="1">
<mxGeometry height="60" width="170" x="582" y="599" as="geometry" />
</mxCell>
<mxCell id="bXESYanQTJGo6Cj8_ghC-22" connectable="0" parent="1" style="group" value="" vertex="1">
<mxGeometry height="27" width="237.5" x="210" y="785.2" as="geometry" />
</mxCell>
<mxCell id="peq8d5gX8DXLt__JmTx_-24" parent="bXESYanQTJGo6Cj8_ghC-22" style="text;html=1;resizable=0;points=[];autosize=1;align=left;verticalAlign=top;spacingTop=-4;fontSize=12;fontColor=#000000;" value="&lt;a href=&quot;https://github.com/Wavez/react-hooks-lifecycle&quot; style=&quot;font-size: 12px&quot;&gt;&lt;font color=&quot;#007fff&quot; style=&quot;font-size: 12px&quot; face=&quot;Lucida Console&quot;&gt;Wavez/react-hooks-lifecycle&lt;/font&gt;&lt;/a&gt;" vertex="1">
<mxGeometry height="15" width="205" x="32.5" y="5" as="geometry" />
</mxCell>
<mxCell id="peq8d5gX8DXLt__JmTx_-23" parent="bXESYanQTJGo6Cj8_ghC-22" style="shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;gradientColor=#ffffff;fontSize=18;fontColor=#000000;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDMyLjYgMzEuOCIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgMzIuNiAzMS44OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+JiN4YTs8c3R5bGUgdHlwZT0idGV4dC9jc3MiPiYjeGE7CS5zdDB7ZmlsbC1ydWxlOmV2ZW5vZGQ7Y2xpcC1ydWxlOmV2ZW5vZGQ7ZmlsbDojMTgxNjE2O30mI3hhOzwvc3R5bGU+JiN4YTs8cGF0aCBjbGFzcz0ic3QwIiBkPSJNMTYuMywwQzcuMywwLDAsNy4zLDAsMTYuM2MwLDcuMiw0LjcsMTMuMywxMS4xLDE1LjVjMC44LDAuMSwxLjEtMC40LDEuMS0wLjhjMC0wLjQsMC0xLjQsMC0yLjggIGMtNC41LDEtNS41LTIuMi01LjUtMi4yYy0wLjctMS45LTEuOC0yLjQtMS44LTIuNGMtMS41LTEsMC4xLTEsMC4xLTFjMS42LDAuMSwyLjUsMS43LDIuNSwxLjdjMS41LDIuNSwzLjgsMS44LDQuNywxLjQgIGMwLjEtMS4xLDAuNi0xLjgsMS0yLjJjLTMuNi0wLjQtNy40LTEuOC03LjQtOC4xYzAtMS44LDAuNi0zLjIsMS43LTQuNEM3LjQsMTAuNyw2LjgsOSw3LjcsNi44YzAsMCwxLjQtMC40LDQuNSwxLjcgIGMxLjMtMC40LDIuNy0wLjUsNC4xLTAuNWMxLjQsMCwyLjgsMC4yLDQuMSwwLjVjMy4xLTIuMSw0LjUtMS43LDQuNS0xLjdjMC45LDIuMiwwLjMsMy45LDAuMiw0LjNjMSwxLjEsMS43LDIuNiwxLjcsNC40ICBjMCw2LjMtMy44LDcuNi03LjQsOGMwLjYsMC41LDEuMSwxLjUsMS4xLDNjMCwyLjIsMCwzLjksMCw0LjVjMCwwLjQsMC4zLDAuOSwxLjEsMC44YzYuNS0yLjIsMTEuMS04LjMsMTEuMS0xNS41ICBDMzIuNiw3LjMsMjUuMywwLDE2LjMsMHoiLz4mI3hhOzwvc3ZnPg==;" value="" vertex="1">
<mxGeometry height="27" width="27.675" as="geometry" />
</mxCell>
<mxCell id="AQQmuxFUS888oZAzTY0o-6" parent="1" style="shape=image;imageAspect=0;aspect=fixed;verticalLabelPosition=bottom;verticalAlign=top;image=https://www.svgrepo.com/show/167751/refresh.svg;" value="" vertex="1">
<mxGeometry height="20" width="20" x="547" y="626" as="geometry" />
</mxCell>
<mxCell id="peq8d5gX8DXLt__JmTx_-9" parent="1" style="text;html=1;resizable=0;points=[];autosize=1;align=left;verticalAlign=top;spacingTop=-4;fontFamily=Verdana;fontStyle=1" value="&lt;font style=&quot;font-size: 26px&quot; color=&quot;#232f3e&quot;&gt;React Hooks Lifecycle&lt;/font&gt;" vertex="1">
<mxGeometry height="20" width="330" x="294" y="52" as="geometry" />
</mxCell>
<mxCell id="dHOrFxX_HmPoJwZjWr78-1" connectable="0" parent="1" style="group" value="" vertex="1">
<mxGeometry height="59" width="62" x="218" y="34" as="geometry" />
</mxCell>
<mxCell id="peq8d5gX8DXLt__JmTx_-19" parent="dHOrFxX_HmPoJwZjWr78-1" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;imageAspect=0;image=https://upload.wikimedia.org/wikipedia/commons/a/a7/React-icon.svg;" value="" vertex="1">
<mxGeometry height="47" width="50" x="12" y="12" as="geometry" />
</mxCell>
<mxCell id="uvFVxUhtjcqsa5vKmOB1-4" parent="dHOrFxX_HmPoJwZjWr78-1" style="shape=image;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;aspect=fixed;imageAspect=0;image=data:image/svg+xml,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB2ZXJzaW9uPSIxLjEiIGlkPSJMYXllcl8xIiB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0MC43IDMzNC42IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCAxNDAuNyAzMzQuNjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPiYjeGE7PHN0eWxlIHR5cGU9InRleHQvY3NzIj4mI3hhOwkuc3Qwe2ZpbGw6IzZFQ0ZGMDt9JiN4YTs8L3N0eWxlPiYjeGE7PGc+JiN4YTsJPGc+JiN4YTsJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zLjUsNTAuM2wzMS42LDYuMWMxLjMsMC4zLDIuNy0wLjYsMi45LTJsMC4zLTEuN2MwLjMtMS4zLTAuNi0yLjctMi0yLjlMNC44LDQzLjdjLTEuMy0wLjMtMi43LDAuNi0yLjksMiAgICBsLTAuMywxLjdDMS4zLDQ4LjcsMi4xLDUwLDMuNSw1MC4zeiIvPiYjeGE7CTwvZz4mI3hhOwk8Zz4mI3hhOwkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTMuNSw2Mi44bDMxLjYsNi4xYzEuMywwLjMsMi43LTAuNiwyLjktMmwwLjMtMS43YzAuMy0xLjMtMC42LTIuNy0yLTIuOUw0LjgsNTYuMmMtMS4zLTAuMy0yLjcsMC42LTIuOSwyICAgIGwtMC4zLDEuN0MxLjMsNjEuMiwyLjEsNjIuNSwzLjUsNjIuOHoiLz4mI3hhOwk8L2c+JiN4YTsJPGc+JiN4YTsJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zLjUsNzUuM2wzMS42LDYuMWMxLjMsMC4zLDIuNy0wLjYsMi45LTJsMC4zLTEuN2MwLjMtMS4zLTAuNi0yLjctMi0yLjlMNC44LDY4LjdjLTEuMy0wLjMtMi43LDAuNi0yLjksMiAgICBsLTAuMywxLjdDMS4zLDczLjcsMi4xLDc1LDMuNSw3NS4zeiIvPiYjeGE7CTwvZz4mI3hhOwk8Zz4mI3hhOwkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTMuNSw4Ny44bDMxLjYsNi4xYzEuMywwLjMsMi43LTAuNiwyLjktMmwwLjMtMS43YzAuMy0xLjMtMC42LTIuNy0yLTIuOUw0LjgsODEuMmMtMS4zLTAuMy0yLjcsMC42LTIuOSwyICAgIGwtMC4zLDEuN0MxLjMsODYuMiwyLjEsODcuNSwzLjUsODcuOHoiLz4mI3hhOwk8L2c+JiN4YTsJPGc+JiN4YTsJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0zLjUsMTAwLjNsMzEuNiw2LjFjMS4zLDAuMywyLjctMC42LDIuOS0ybDAuMy0xLjdjMC4zLTEuMy0wLjYtMi43LTItMi45TDQuOCw5My43Yy0xLjMtMC4zLTIuNywwLjYtMi45LDIgICAgbC0wLjMsMS43QzEuMyw5OC43LDIuMSwxMDAsMy41LDEwMC4zeiIvPiYjeGE7CTwvZz4mI3hhOwk8Zz4mI3hhOwkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTMuNSwxMTIuOGwzMS42LDYuMWMxLjMsMC4zLDIuNy0wLjYsMi45LTJsMC4zLTEuN2MwLjMtMS4zLTAuNi0yLjctMi0yLjlsLTMxLjYtNi4xYy0xLjMtMC4zLTIuNywwLjYtMi45LDIgICAgbC0wLjMsMS43QzEuMywxMTEuMiwyLjEsMTEyLjUsMy41LDExMi44eiIvPiYjeGE7CTwvZz4mI3hhOwk8Zz4mI3hhOwkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTMuNSwxMjUuM2wzMS42LDYuMWMxLjMsMC4zLDIuNy0wLjYsMi45LTJsMC4zLTEuN2MwLjMtMS4zLTAuNi0yLjctMi0yLjlsLTMxLjYtNi4xYy0xLjMtMC4zLTIuNywwLjYtMi45LDIgICAgbC0wLjMsMS43QzEuMywxMjMuNywyLjEsMTI1LDMuNSwxMjUuM3oiLz4mI3hhOwk8L2c+JiN4YTsJPGc+JiN4YTsJCTxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xNS40LDM5LjN2MTAuMmg5LjFWMzkuM2M4LjgtMi4xLDE1LjQtMTAsMTUuNC0xOS40QzM5LjgsOC45LDMwLjksMCwxOS45LDBDOC45LDAsMCw4LjksMCwxOS45ICAgIEMwLDI5LjQsNi42LDM3LjMsMTUuNCwzOS4zeiBNNCwxOS45QzQsMTEuMSwxMS4xLDQsMTkuOSw0YzguOCwwLDE1LjksNy4xLDE1LjksMTUuOWMwLDguOC03LjEsMTUuOS0xNS45LDE1LjkgICAgQzExLjEsMzUuOSw0LDI4LjcsNCwxOS45eiIvPiYjeGE7CTwvZz4mI3hhOwk8Zz4mI3hhOwkJPHBhdGggY2xhc3M9InN0MCIgZD0iTTE1LjIsMTM1LjRWMTI1aDkuMXYxMC40YzAuMywwLjEsMC4zLTAuNCwwLjEtMC41bDAsMTExLjFjLTAuNSwxNS40LDQuNCwzMC4yLDEyLjQsNDMuM3MyMCwyMy44LDMzLjksMzAuMyAgICBjMTIuMSw1LjcsMjYuOCw4LDM4LjcsMmM5LjgtNSwxNi4zLTE1LDE5LjUtMjUuNWMzLjItMTAuNSwzLjUtMjEuNywzLjgtMzIuN2MtNS40LDUuNy0xMC4zLDExLTE1LjcsMTYuN2MwLjEtMC4zLDAuNC0wLjUsMC43LTAuNSAgICBjOC45LTE0LjksMTAuNy0zMy4xLDUuMS00OS41YzE2LjcsMTkuMiwyMi42LDQ2LjgsMTQsNzAuN2MtNS4yLDE0LjYtMTYuMSwyNy45LTMxLDMyLjNjLTEzLjgsNC4xLTI4LjktMC4xLTQxLjUtNy4xICAgIGMtMTguMi0xMC4xLTMzLTI2LjEtNDEuNi00NWMtOC43LTE4LjktNy02MC45LTctNjAuOUwxNS4yLDEzNS40eiIvPiYjeGE7CTwvZz4mI3hhOzwvZz4mI3hhOzwvc3ZnPg==;sketch=0;imageBorder=none;" value="" vertex="1">
<mxGeometry height="49" width="21" as="geometry" />
</mxCell>
<UserObject label="&lt;font color=&quot;#007fff&quot; face=&quot;Lucida Console&quot;&gt;Gal Margalit&lt;/font&gt;" link="https://twitter.com/MargalitGal" linkTarget="_blank" id="yjP6mhXBnPZrxiyDEznI-31">
<mxCell parent="1" style="text;html=1;resizable=0;points=[];autosize=1;align=left;verticalAlign=top;spacingTop=-4;fontSize=12;fontColor=#000000;fontStyle=4" vertex="1">
<mxGeometry height="20" width="80" x="836" y="791.12" as="geometry" />
</mxCell>
</UserObject>
</root>
</mxGraphModel>
</diagram>
</mxfile>

131
res/websocket.drawio Normal file
View File

@@ -0,0 +1,131 @@
<mxfile host="Electron" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/28.2.5 Chrome/138.0.7204.251 Electron/37.6.1 Safari/537.36" version="28.2.5" pages="2">
<diagram name="CM" id="cFCSzedRB310UoekGWDV">
<mxGraphModel dx="1426" dy="963" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="Chr8h4oqNThsC-i0qC5y-2" value="Serveur HTTP" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};fontFamily=Lucida Console;" parent="1" vertex="1">
<mxGeometry x="420" y="340" width="100" height="250" as="geometry" />
</mxCell>
<mxCell id="Chr8h4oqNThsC-i0qC5y-3" value="" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;curved&quot;:0,&quot;rounded&quot;:0};participant=umlActor;fontFamily=Lucida Console;" parent="1" vertex="1">
<mxGeometry x="260" y="340" width="20" height="250" as="geometry" />
</mxCell>
<mxCell id="Chr8h4oqNThsC-i0qC5y-4" value="HTTP Upgrade request" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;fontFamily=Lucida Console;" parent="1" target="Chr8h4oqNThsC-i0qC5y-2" edge="1">
<mxGeometry width="80" relative="1" as="geometry">
<mxPoint x="270" y="430" as="sourcePoint" />
<mxPoint x="350" y="430" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="Chr8h4oqNThsC-i0qC5y-5" value="HTTP 101" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;curved=0;rounded=0;fontFamily=Lucida Console;" parent="1" edge="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="469.74" y="480" as="sourcePoint" />
<mxPoint x="270.2638095238095" y="480" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="Chr8h4oqNThsC-i0qC5y-9" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=none;endFill=0;fontFamily=Lucida Console;" parent="1" source="Chr8h4oqNThsC-i0qC5y-6" target="Chr8h4oqNThsC-i0qC5y-7" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="320" y="520" />
<mxPoint x="320" y="520" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="Chr8h4oqNThsC-i0qC5y-10" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;endArrow=none;endFill=0;fontFamily=Lucida Console;" parent="1" source="Chr8h4oqNThsC-i0qC5y-6" target="Chr8h4oqNThsC-i0qC5y-7" edge="1">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="370" y="550" />
<mxPoint x="370" y="550" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="Chr8h4oqNThsC-i0qC5y-6" value="" style="ellipse;whiteSpace=wrap;html=1;fontFamily=Lucida Console;" parent="1" vertex="1">
<mxGeometry x="265" y="520" width="10" height="30" as="geometry" />
</mxCell>
<mxCell id="Chr8h4oqNThsC-i0qC5y-7" value="" style="ellipse;whiteSpace=wrap;html=1;fontFamily=Lucida Console;" parent="1" vertex="1">
<mxGeometry x="465" y="520" width="10" height="30" as="geometry" />
</mxCell>
<mxCell id="Chr8h4oqNThsC-i0qC5y-11" value="WebSocket&lt;div&gt;(canal bidirectionnel)&lt;/div&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Lucida Console;" parent="1" vertex="1">
<mxGeometry x="280" y="520" width="180" height="30" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
<diagram id="55hSsf7dZ4O9BhhBfXZT" name="TP">
<mxGraphModel dx="983" dy="664" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="827" pageHeight="1169" math="0" shadow="0">
<root>
<mxCell id="0" />
<mxCell id="1" parent="0" />
<mxCell id="V0LY4LNaFKX1vN2Ljjwc-1" value="Serveur HTTP" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;edgeStyle&quot;:&quot;elbowEdgeStyle&quot;,&quot;elbow&quot;:&quot;vertical&quot;,&quot;curved&quot;:0,&quot;rounded&quot;:0};fontFamily=Lucida Console;" vertex="1" parent="1">
<mxGeometry x="480" y="450" width="100" height="420" as="geometry" />
</mxCell>
<mxCell id="V0LY4LNaFKX1vN2Ljjwc-2" value="" style="shape=umlLifeline;perimeter=lifelinePerimeter;whiteSpace=wrap;html=1;container=1;dropTarget=0;collapsible=0;recursiveResize=0;outlineConnect=0;portConstraint=eastwest;newEdgeStyle={&quot;curved&quot;:0,&quot;rounded&quot;:0};participant=umlActor;fontFamily=Lucida Console;" vertex="1" parent="1">
<mxGeometry x="320" y="450" width="20" height="420" as="geometry" />
</mxCell>
<mxCell id="V0LY4LNaFKX1vN2Ljjwc-3" value="HTTP Upgrade request" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;fontFamily=Lucida Console;" edge="1" parent="1" target="V0LY4LNaFKX1vN2Ljjwc-1">
<mxGeometry width="80" relative="1" as="geometry">
<mxPoint x="330" y="540" as="sourcePoint" />
<mxPoint x="410" y="540" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V0LY4LNaFKX1vN2Ljjwc-4" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;endArrow=none;endFill=0;fontFamily=Lucida Console;" edge="1" parent="1" source="V0LY4LNaFKX1vN2Ljjwc-6" target="V0LY4LNaFKX1vN2Ljjwc-7">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="380" y="650" />
<mxPoint x="380" y="650" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="V0LY4LNaFKX1vN2Ljjwc-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;endArrow=none;endFill=0;fontFamily=Lucida Console;" edge="1" parent="1" source="V0LY4LNaFKX1vN2Ljjwc-6" target="V0LY4LNaFKX1vN2Ljjwc-7">
<mxGeometry relative="1" as="geometry">
<Array as="points">
<mxPoint x="440" y="830" />
<mxPoint x="440" y="830" />
</Array>
</mxGeometry>
</mxCell>
<mxCell id="V0LY4LNaFKX1vN2Ljjwc-6" value="" style="ellipse;whiteSpace=wrap;html=1;fontFamily=Lucida Console;" vertex="1" parent="1">
<mxGeometry x="325" y="650" width="10" height="180" as="geometry" />
</mxCell>
<mxCell id="V0LY4LNaFKX1vN2Ljjwc-7" value="" style="ellipse;whiteSpace=wrap;html=1;fontFamily=Lucida Console;" vertex="1" parent="1">
<mxGeometry x="525" y="650" width="10" height="180" as="geometry" />
</mxCell>
<mxCell id="V0LY4LNaFKX1vN2Ljjwc-8" value="WebSocket&lt;div&gt;(canal bidirectionnel)&lt;/div&gt;" style="text;html=1;align=center;verticalAlign=middle;whiteSpace=wrap;rounded=0;fontFamily=Lucida Console;" vertex="1" parent="1">
<mxGeometry x="340" y="650" width="180" height="40" as="geometry" />
</mxCell>
<mxCell id="V0LY4LNaFKX1vN2Ljjwc-9" value="HTTP 101" style="html=1;verticalAlign=bottom;endArrow=open;dashed=1;endSize=8;curved=0;rounded=0;fontFamily=Lucida Console;" edge="1" parent="1">
<mxGeometry relative="1" as="geometry">
<mxPoint x="530" y="600" as="sourcePoint" />
<mxPoint x="330" y="600" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V0LY4LNaFKX1vN2Ljjwc-10" value="&quot;vote_cast&quot;" style="html=1;verticalAlign=bottom;endArrow=block;curved=0;rounded=0;fontFamily=Lucida Console;" edge="1" parent="1">
<mxGeometry width="80" relative="1" as="geometry">
<mxPoint x="342.5" y="720" as="sourcePoint" />
<mxPoint x="517.5" y="720" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V0LY4LNaFKX1vN2Ljjwc-11" value="&quot;vote_ack&quot;" style="html=1;verticalAlign=bottom;endArrow=none;curved=0;rounded=0;fontFamily=Lucida Console;startArrow=classic;startFill=1;endFill=0;" edge="1" parent="1">
<mxGeometry width="80" relative="1" as="geometry">
<mxPoint x="342.5" y="760" as="sourcePoint" />
<mxPoint x="517.5" y="760" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="V0LY4LNaFKX1vN2Ljjwc-12" value="&quot;votes_update&quot;" style="html=1;verticalAlign=bottom;endArrow=none;curved=0;rounded=0;fontFamily=Lucida Console;startArrow=classic;startFill=1;endFill=0;" edge="1" parent="1">
<mxGeometry width="80" relative="1" as="geometry">
<mxPoint x="342.5" y="800" as="sourcePoint" />
<mxPoint x="517.5" y="800" as="targetPoint" />
</mxGeometry>
</mxCell>
<mxCell id="BeVJJFJbtEI7Vtz0KRrA-2" value="1" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fontFamily=Lucida Console;fillColor=#000000;fontColor=#FFFFFF;fontSize=13;" vertex="1" parent="1">
<mxGeometry x="343" y="700" width="15" height="15" as="geometry" />
</mxCell>
<mxCell id="BeVJJFJbtEI7Vtz0KRrA-3" value="2" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fontFamily=Lucida Console;fillColor=#000000;fontColor=#FFFFFF;fontSize=13;" vertex="1" parent="1">
<mxGeometry x="502" y="740" width="15" height="15" as="geometry" />
</mxCell>
<mxCell id="BeVJJFJbtEI7Vtz0KRrA-5" value="3" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fontFamily=Lucida Console;fillColor=#000000;fontColor=#FFFFFF;fontSize=13;" vertex="1" parent="1">
<mxGeometry x="502" y="780" width="15" height="15" as="geometry" />
</mxCell>
</root>
</mxGraphModel>
</diagram>
</mxfile>

View File

@@ -38,6 +38,26 @@
urldate = {2026-01-19} urldate = {2026-01-19}
} }
@book{fowlerPatterns2012,
title={Patterns of enterprise application architecture},
author={Fowler, Martin},
year={2012},
publisher={Addison-Wesley}
}
@inbook{Lannurien2023,
title = {{Serverless Cloud Computing: State of the Art and Challenges}},
author = {Lannurien, Vincent and D'Orazio, Laurent and Barais, Olivier and Boukhobza, Jalil},
year = 2023,
booktitle = {Serverless Computing: Principles and Paradigms},
publisher = {Springer International Publishing},
address = {Cham},
pages = {275--316},
doi = {10.1007/978-3-031-26633-1_11},
isbn = {978-3-031-26633-1},
editor = {Krishnamurthi, Rajalakshmi and Kumar, Adarsh and Gill, Sukhpal Singh and Buyya, Rajkumar},
}
@misc{ParseDontValidate2019, @misc{ParseDontValidate2019,
author = {King, Alexis}, author = {King, Alexis},
title = {Parse, Dont Validate}, title = {Parse, Dont Validate},

View File

@@ -50,21 +50,6 @@
{\thefield{entrytype}}} {\thefield{entrytype}}}
{\multicitedelim} {\multicitedelim}
{\usebibmacro{postnote}} {\usebibmacro{postnote}}
% blank footnotes using \footnote[]{}
\let\svthefootnote\thefootnote
\textheight 1in
\newcommand\blankfootnote[1]{%
\let\thefootnote\relax\footnotetext{#1}%
\let\thefootnote\svthefootnote%
}
\let\svfootnote\footnote
\renewcommand\footnote[2][?]{%
\if\relax#1\relax%
\blankfootnote{#2}%
\else%
\if?#1\svfootnote{#2}\else\svfootnote[#1]{#2}\fi%
\fi
}
% captions % captions
\RequirePackage{caption} \RequirePackage{caption}
@@ -105,6 +90,10 @@
\molochset{subsectionpage=progressbar} \molochset{subsectionpage=progressbar}
% table of contents % table of contents
\setbeamertemplate{section in toc}[sections numbered] \setbeamertemplate{section in toc}[sections numbered]
\makeatletter
\patchcmd{\beamer@sectionintoc}{\vskip1.5em}{\vskip0.3em}{}{}
\patchcmd{\beamer@subsectionintoc}{\vskip0.75em}{\vskip0.15em}{}{}
\makeatother
% smaller first-level bullet points % smaller first-level bullet points
\setbeamertemplate{itemize item}{\textbullet} \setbeamertemplate{itemize item}{\textbullet}
% smaller bibliography entries % smaller bibliography entries
@@ -123,15 +112,18 @@
} }
% fonts and symbols % fonts and symbols
\RequirePackage{pifont}
\newcommand{\cmark}{\color{YellowGreen}\ding{51}}
\newcommand{\xmark}{\color{BrickRed}\ding{55}}
\RequirePackage{textcomp} \RequirePackage{textcomp}
\RequirePackage{emoji} \RequirePackage{emoji}
% markers % circles
\RequirePackage{circledsteps} \RequirePackage{circledsteps}
\pgfkeys{/csteps/inner color=white} \pgfkeys{/csteps/inner color=white}
\pgfkeys{/csteps/fill color=black} \pgfkeys{/csteps/fill color=black}
% markers
\RequirePackage{pifont}
\newcommand{\cmark}{{\color{YellowGreen}\ding{51}}}
\newcommand{\xmark}{{\color{BrickRed}\ding{55}}}
\newcommand{\imark}{{\color{Orange}\ding{109}}}
% pills
\newcommand{\DONE}{% \newcommand{\DONE}{%
\CircledParamOpts{inner color=black, outer color=LimeGreen, fill color=LimeGreen}{1}{\textbf{DONE}} % \CircledParamOpts{inner color=black, outer color=LimeGreen, fill color=LimeGreen}{1}{\textbf{DONE}} %
} }

Binary file not shown.

1294
slides.tex

File diff suppressed because it is too large Load Diff