Sascha Schulz
2023-01-31 86d082d477c55e50dd8723339802afeaa083b595
index.html
@@ -8,16 +8,403 @@
      <link rel="stylesheet" href="dist/reset.css">
      <link rel="stylesheet" href="dist/reveal.css">
      <link rel="stylesheet" href="dist/theme/black.css">
      <link rel="stylesheet" href="dist/theme/night-custom.css">
      <!-- Theme used for syntax highlighted code -->
      <link rel="stylesheet" href="plugin/highlight/monokai.css">
      <link rel="stylesheet" href="./node_modules/highlight.js/styles/atom-one-dark-reasonable.css">
   </head>
   <body>
      <div class="reveal">
         <div class="slides">
            <section>Slide 1</section>
            <section>Slide 2</section>
            <section>
               <h2>Web-Entwicklung</h2>
            </section>
            <section>
               <section>
                  <h2>Agenda</h2>
               </section>
               <section>
                  <h3>Grundlagen</h3>
                  <ul>
                     <li>HTML/CSS/JS</li>
                     <li>JSON</li>
                     <li>HTTP-Protokoll</li>
                     <li>Debugger</li>
                  </ul>
               </section>
               <section>
                  <h3>Fortgeschrittenes</h3>
                  <ul>
                     <li>NodeJS</li>
                     <li>Responsive Design</li>
                     <li>CSS-Animationen</li>
                     <li>WebComponents / lit</li>
                     <li>Canvas-Element</li>
                     <li>Datenbank</li>
                  </ul>
               </section>
               <section>
                  <h3>Architektur & Paradigmen</h3>
                  <ul>
                     <li>Funktionale Programmierung</li>
                     <li>Objektorientierte Programmierung</li>
                     <li>Entwurfsmuster (Singleton, Factory, Builder...)</li>
                     <li>SOLID-Prinzipien</li>
                     <li>Dependency Injection</li>
                     <li>MVC</li>
                     <li>Redux</li>
                  </ul>
               </section>
               <section>
                  <h3>Interessante Technologien</h3>
                  <ul>
                     <li>WebSockets</li>
                     <li>WebWorker</li>
                     <li>ServiceWorker</li>
                     <li>WebRTC</li>
                     <li>WebGL</li>
                     <li>Progressive Web Application</li>
                     <li>CEF / Electron</li>
                     <li>WebAssembly</li>
                  </ul>
               </section>
               <section>
                  <h3>Betrieb</h3>
                  <ul>
                     <li>Server einrichten</li>
                     <li>SSL- / TLS-Zertifikate</li>
                  </ul>
               </section>
               <section>
                  <h3>Workflows</h3>
                  <ul>
                     <li>Git</li>
                     <li>Test Driven Development</li>
                     <li>Continuous Integration / Continuous Delivery</li>
                  </ul>
               </section>
            </section>
            <section>
               <section>
                  <h2>HTML</h2>
               </section>
               <section>
                  <ul>
                     <li>HyperText Markup Language</li>
                     <li>Erste Version 1993 von Tim Berners-Lee</li>
                     <li>Dokumentationsmedium</li>
                     <li>Ursprünglich rein akademische Verwendung</li>
                     <li>Verlinkungen der Dokumente macht sie "hyper"</li>
                  </ul>
               </section>
               <section>
                  <table>
                     <tr><th>Version</th><th>Erscheinung</th><th>Elemente ca.</th></tr>
                     <tr><td>HTML 1.0</td><td>1993</td><td>20</td></tr>
                     <tr><td>HTML 2.0</td><td>1995</td><td>50</td></tr>
                     <tr><td>HTML 3.2</td><td>1997</td><td>70</td></tr>
                     <tr><td>HTML 4.01</td><td>1999</td><td>90</td></tr>
                     <tr><td>HTML 5.0</td><td>2014</td><td>110</td></tr>
                  </table>
               </section>
               <section>
                  <ul>
                     <li>Heute ein "lebender Standard" (Living Standard)</li>
                     <li>Stetige inkrementelle Erweiterung</li>
                  </ul>
               </section>
               <section>
                  <h3>Grundgerüst</h3>
                  <pre>
                     <code class="html" data-trim data-line-numbers>
                        <script type="text/template">
                           <!DOCTYPE html>
                           <html lang="de">
                              <head>
                                 <meta charset="UTF-8">
                              </head>
                              <body>
                              </body>
                           </html>
                        </script>
                     </code>
                  </pre>
               </section>
               <section>
                  <h3>Beispiel</h3>
                  <pre>
                     <code class="html" data-trim data-line-numbers>
                        <script type="text/template">
                           <!DOCTYPE html>
                           <html lang="en">
                              <head>
                                 <meta charset="UTF-8">
                                 <title>Title</title>
                              </head>
                              <body>
                                 <h1>Lorem Ipsum</h1>
                                 <div>
                                    <p>Lorem ipsum dolor sit amet, consectetuer adipiscing</p>
                                    <a href="/assets/html/simple2.html">Weitere Infos</a>
                                 </div>
                              </body>
                           </html>
                        </script>
                     </code>
                  </pre>
               </section>
               <section>
                  <h3>Beispiel</h3>
                  <iframe data-src="/assets/html/simple.html"></iframe>
               </section>
               <section>
                  <h3>Aufbau eines Elements</h3>
                  <pre>
                     <code class="html" data-trim>
                        <script type="text/template">
                           <span id="my-id" class="super important">Inhalt</span>
                        </script>
                     </code>
                  </pre>
                  <pre>
                     <code class="html" data-trim>
                        <script type="text/template">
                           <!-- HTML 4.01 -->
                           <input id="input" class="super important" disabled="disabled" />
                        </script>
                     </code>
                  </pre>
                  <pre>
                     <code class="html" data-trim>
                        <script type="text/template">
                           <!-- HTML 5 -->
                           <input id="input2" class="super important" disabled>
                        </script>
                     </code>
                  </pre>
               </section>
            </section>
            <section>
               <section>
                  <h2>CSS</h2>
               </section>
               <section>
                  <ul>
                     <li>Cascading Style Sheet</li>
                     <li>Nach größerer Verbreitung von HTML</li>
                     <li>Webseiten ansprechend gestalten</li>
                  </ul>
               </section>
               <section>
                  <img data-src="/assets/images/css-sucks.png">
               </section>
               <section>
                  <h3>Beispiel</h3>
                  <pre>
                     <code class="css" data-trim data-line-numbers>
                        selector [, selector, selector, ...] {
                           property: value;
                        }
                     </code>
                  </pre>
               </section>
               <section>
                  <h3>Beispiel</h3>
                  <pre>
                     <code class="css" data-trim data-line-numbers>
                        html {
                           background-color: red;
                           font-size: 30px;
                        }
                     </code>
                  </pre>
               </section>
               <section>
                  <h3>Beispiel</h3>
                  <pre>
                     <code class="html" data-trim data-line-numbers>
                        <script type="text/template">
                           <html lang="en">
                              <head>
                                 ...
                                 <style>
                                    html {
                                       background-color: red;
                                       font-size: 30px;
                                    }
                                 </style>
                              </head>
                              <body>
                                 ...
                              </body>
                           </html>
                        </script>
                     </code>
                  </pre>
               </section>
               <section>
                  <h3>Beispielhafte CSS-Eigenschaften</h3>
                  <ul>
                     <li>background-color: red</li>
                     <li>font-family: Georgia, serif, Arial</li>
                     <li>text-decoration: line-through underline</li>
                  </ul>
               </section>
               <section>
                  <h3>Selektoren</h3>
                  <ul>
                     <li>Umfangreiche Element-Selektoren zur Anwendung der Styles</li>
                     <li>Kinder, Enkel...</li>
                     <li>Geschwister, direkte Nachfolger</li>
                     <li>Attribute</li>
                     <li>Pseudoklassen</li>
                  </ul>
               </section>
               <section>
                  <h3>Selektoren</h3>
                  <pre>
                     <code class="css" data-trim data-line-numbers>
                        #my-id /* ID */
                        html, body /* Mehrfachselektion */
                        div > p /* p die direkt unterhalb eines div sind */
                        a:visited /* besuchte Links */
                        span.important /* span mit der Klasse "important" */
                     </code>
                  </pre>
               </section>
               <section>
                  <h3>Layout</h3>
                  <p>Es gibt zwei grundlegende Blocktypen:</p>
                  <p><code>block</code></p>
                  <p><code>inline</code></p>
               </section>
               <section>
                  <h3>Block</h3>
                  <p>Beansprucht eine ganze Zeile und verursacht Zeilenumbrüche</p>
                  <pre>
                     <code class="css" data-trim data-line-numbers>
                        display: block;
                     </code>
                  </pre>
               </section>
               <section>
                  <p>Kann Breite und Höhe haben</p>
                  <pre>
                     <code class="css" data-trim data-line-numbers>
                        display: block;
                        width: 20px;
                        height: 20px;
                     </code>
                  </pre>
               </section>
               <section>
                  <h3>Inline</h3>
                  <p>Wie einfacher Text, der mit anderen in der gleichen Zeile stehen kann</p>
                  <pre>
                     <code class="css" data-trim data-line-numbers>
                        display: inline;
                     </code>
                  </pre>
               </section>
               <section>
                  <p>Festlegen von Breite und Höhe sind wirkungslos</p>
                  <pre>
                     <code class="css" data-trim data-line-numbers>
                        display: inline;
                        width: 20px; /* kein Effekt */
                        height: 20px; /* kein Effekt */
                     </code>
                  </pre>
               </section>
               <section>
                  <h3>Inline-Block</h3>
                  <p>Mischform von <code>inline</code> und <code>block</code></p>
                  <pre>
                     <code class="css" data-trim data-line-numbers>
                        display: inline-block;
                        width: 20px;
                        height: 20px;
                     </code>
                  </pre>
               </section>
               <section>
                  <h3>Box Model</h3>
                  <p>Es gibt zwei Varianten des Modells:</p>
                  <p><code>content-box</code> (default)</p>
                  <p>border-box</p>
                  <pre>
                     <code class="css" data-trim data-line-numbers>
                        box-sizing: content-box;
                        box-sizing: border-box;
                     </code>
                  </pre>
               </section>
               <section>
                  <img data-src="/assets/images/css-box-model.png">
               </section>
               <section>
                  <h3>Beispiel</h3>
                  <pre>
                     <code class="css" data-trim data-line-numbers>
                        div {
                           border: 3px solid red;
                           padding: 10px;
                           width: 100px;
                        }
                        .border-box {
                           box-sizing: border-box;
                        }
                        .content-box {
                           box-sizing: content-box;
                        }
                     </code>
                  </pre>
                  <pre>
                     <code class="html" data-trim data-line-numbers>
                        <script type="text/template">
                           <div class="content-box">content-box</div>
                           <div class="border-box">border-box</div>
                        </script>
                     </code>
                  </pre>
               </section>
               <section>
                  <h3>Beispiel</h3>
                  <iframe data-src="/assets/html/box-sizing.html"></iframe>
               </section>
               <section>
                  <h3>Positioning</h3>
                  <pre>
                     <code class="css" data-trim data-line-numbers>
                        /* default, da wo es in der Seite steht */
                        position: static;
                        /* relativ zu seiner eigentlichen Position */
                        position: relative;
                        /* relativ zu seinem nächsten non-static parent o. window */
                        position: absolute;
                     </code>
                  </pre>
               </section>
               <section>
                  <pre>
                     <code class="css" data-trim data-line-numbers>
                        position: relative;
                        position: absolute;
                     </code>
                  </pre>
                  <p>erlauben Verschiebung mittels</p>
                  <pre>
                     <code class="css" data-trim data-line-numbers>
                        top: 10px;
                        left: 10px;
                        right: 10px;
                        bottom: 10px;
                     </code>
                  </pre>
               </section>
            </section>
         </div>
      </div>
@@ -31,6 +418,8 @@
         // - https://revealjs.com/config/
         Reveal.initialize({
            hash: true,
            slideNumber: "c/t",
            transition: "fade",
            // Learn about plugins: https://revealjs.com/plugins/
            plugins: [ RevealMarkdown, RevealHighlight, RevealNotes ]