From 05a62c0fec1c93a0905edeeb51d4a77301348af4 Mon Sep 17 00:00:00 2001 From: Sebastian Harl Date: Sat, 4 Jun 2016 15:04:16 +0200 Subject: [PATCH] Add the presentation slides for the intro and gRPC talks. The slides are in German. --- .gitmodules | 3 + README | 20 +- tex/.gitignore | 9 + tex/LICENSE | 108 ++++++++++ tex/Makefile | 13 ++ tex/go-grpc.tex | 426 +++++++++++++++++++++++++++++++++++++++ tex/go-intro.tex | 493 +++++++++++++++++++++++++++++++++++++++++++++ tex/gopher.png | Bin 0 -> 80124 bytes tex/grpc.pdf | Bin 0 -> 2687 bytes tex/lstlang0.sty | 35 ++++ tex/playground.png | Bin 0 -> 36933 bytes tex/tokkeebeamer | 1 + 12 files changed, 1105 insertions(+), 3 deletions(-) create mode 100644 .gitmodules create mode 100644 tex/.gitignore create mode 100644 tex/LICENSE create mode 100644 tex/Makefile create mode 100644 tex/go-grpc.tex create mode 100644 tex/go-intro.tex create mode 100644 tex/gopher.png create mode 100644 tex/grpc.pdf create mode 100644 tex/lstlang0.sty create mode 100644 tex/playground.png create mode 160000 tex/tokkeebeamer diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..722aed4 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "tex/tokkeebeamer"] + path = tex/tokkeebeamer + url = git://git.tokkee.org/tokkeebeamer.git diff --git a/README b/README index 351ecbc..9cdba6e 100644 --- a/README +++ b/README @@ -1,7 +1,7 @@ - tokkee's Go and gRPC talk - =========================== + tokkee's Go and gRPC talks + ============================ - Supporting material for a talk about Go and gRPC. + Supporting material for tokkee's talks about Go and gRPC. Setup ----- @@ -46,9 +46,23 @@ Rebuilding the generated proto / gRPC code $ protoc src/tokkee.org/go-talk/grpc/proto/backend/backend.proto \ --go_out=plugins=grpc:. +Presentation slides +------------------- + + The 'tex' subdirectory includes the LaTeX code for the presentation slides. + + Generate PDF documents: + + $ cd $GOPATH/src/tokkee.org/go-talk + $ git submodule update --init + $ cd tex; make + Author ------ Sebastian 'tokkee' Harl Licensed under the 2-clause BSD license. See LICENSE for details. + + For license conditions of subpackages, see the respective LICENSE files in + the subdirectories. diff --git a/tex/.gitignore b/tex/.gitignore new file mode 100644 index 0000000..40f229b --- /dev/null +++ b/tex/.gitignore @@ -0,0 +1,9 @@ +*.aux +*.log +*.nav +*.out +*.snm +*.toc +*.vrb +go-intro.pdf +go-grpc.pdf diff --git a/tex/LICENSE b/tex/LICENSE new file mode 100644 index 0000000..9088956 --- /dev/null +++ b/tex/LICENSE @@ -0,0 +1,108 @@ +Copyright (c) 2013-2016 Sebastian 'tokkee' Harl +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR +CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +----------------------------------------------------------------------------- + +The Go gopher (gopher.png) was designed by Renee French. +(http://reneefrench.blogspot.com/) + +The design is licensed under the Creative Commons 3.0 Attributions license. +Read this article for more details: https://blog.golang.org/gopher + +You are free: +* to share – to copy, distribute and transmit the work +* to remix – to adapt the work + +Under the following conditions: +* attribution – You must attribute the work in the manner specified by the + author or licensor (but not in any way that suggests that they endorse you + or your use of the work). +* share alike – If you alter, transform, or build upon this work, you may + distribute the resulting work only under the same or similar license to this + one. + +Source: http://golang.org/doc/gopher/ + +----------------------------------------------------------------------------- + +The gRPC logo (grpc.pdf) is licensed under the 3-clause BSD license: + +Copyright (c) 2015, grpc +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of grpc.github.io nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Source: https://github.com/grpc/grpc.github.io + +----------------------------------------------------------------------------- + +The LaTeX lstlistings language definition for Go (lstlang0.sty) is licensed +under the MIT license: + +The MIT License (MIT) + +Copyright (c) 2016 Uriel Corfa + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +Source: https://github.com/korfuri/golang-latex-listings/ diff --git a/tex/Makefile b/tex/Makefile new file mode 100644 index 0000000..fb8859c --- /dev/null +++ b/tex/Makefile @@ -0,0 +1,13 @@ +TOKKEEBEAMER = tokkeebeamer +include $(TOKKEEBEAMER)/tokkeebeamer.mk + +all: go-intro.pdf go-grpc.pdf + +go-intro.pdf: go-intro.tex tokkeebeamer/*.sty Makefile +go-grpc.pdf: go-grpc.tex tokkeebeamer/*.sty Makefile + +clean: + rm -f *.aux *.log *.nav *.out *.snm *.toc *.vrb + rm -f go-intro.pdf go-grpc.pdf + +.PHONY: all clean diff --git a/tex/go-grpc.tex b/tex/go-grpc.tex new file mode 100644 index 0000000..f97072a --- /dev/null +++ b/tex/go-grpc.tex @@ -0,0 +1,426 @@ +% +% Copyright (C) 2015-2016 Sebastian 'tokkee' Harl +% All rights reserved. +% +% Redistribution and use in source and binary forms, with or without +% modification, are permitted provided that the following conditions +% are met: +% 1. Redistributions of source code must retain the above copyright +% notice, this list of conditions and the following disclaimer. +% 2. Redistributions in binary form must reproduce the above copyright +% notice, this list of conditions and the following disclaimer in the +% documentation and/or other materials provided with the distribution. +% +% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +% ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +% TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +% PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR +% CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +% EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +% PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +% OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +% WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +% OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +% ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +% +\documentclass[presentation]{beamer} +\uselanguage{German} + +\usetheme{tokkee} +\usefonttheme{professionalfonts} + +\setbeamercolor*{block body}{fg=black,bg=white} +\setbeamercolor*{block title}{use=titlelike,fg=titlelike.fg!80!black,bg=black!10} + +\usepackage{fontspec,xunicode,polyglossia} +\setdefaultlanguage[spelling=new]{german} + +\usepackage{graphicx} +\usepackage{xcolor} +\definecolor{darkgreen}{rgb}{0,0.39,0} + +\usepackage{listings} +\lstset{ + basicstyle=\scriptsize, + language=Go, + frame=single, + numbers=left, + keywordstyle=\bfseries\color{darkgreen}, + commentstyle=\itshape\color{blue}, + stringstyle=\color{red}, + showstringspaces=false, + backgroundcolor=\color{lightgray!25}, + literate=% + {Ö}{{\"O}}1 + {Ä}{{\"A}}1 + {Ü}{{\"U}}1 + {ß}{{\ss}}1 + {ü}{{\"u}}1 + {ä}{{\"a}}1 + {ö}{{\"o}}1, +} + +\usepackage[overlay,absolute]{textpos} + +\usepackage{tikz} +\usetikzlibrary{shadows} +\usetikzlibrary{shapes} + +\newcommand{\collectd}{\textsf{\textbf{collect}d}} + +\title{Web-Services mit Go} +\subtitle{Go-Features an Hand von Beispielen} + +\titlegraphic{} + +\copyrightinfo{\copyright{} 2015-2016 Sebastian `tokkee' Harl} + +\author[Sebastian Harl]{Sebastian `tokkee' Harl\\ + $<$sh@tokkee.org$>$} + +\date[2015-2016]{} + +\AtBeginSection[] +{ + \begin{frame} + \begin{center} + \Large + \titlebox{\secname} + \end{center} + \end{frame} +} + +\begin{document} + +\begin{frame}[plain] + \titlepage +\end{frame} + +\begin{frame}{Überblick} + \textbf{Was ist Go?} + + \textit{Go is an open source programming language that makes it easy to + build simple, reliable, and efficient software.}\\[10mm] + + \url{https://golang.org} + + \begin{tikzpicture}[remember picture,overlay] + \node[anchor=north east] at (current page.east) + {\includegraphics[width=.7\textwidth]{gopher}}; + \end{tikzpicture} +\end{frame} + +\begin{frame}{Web-Services} + \begin{itemize} + \item HTTP Frontend + \begin{itemize} + \item Viele parallele Client-Anfragen + \item Eine oder mehrere Verbindungen zu Backends + \end{itemize} + \item Backend ("`Business Logic"') + \begin{itemize} + \item Viele parallele Anfragen vom Frontend + \item Eine oder mehrere Datenbank-Verbindungen oder Interaktion mit + anderen Backends + \end{itemize} + \item Datenbank\\[3mm] + + \item[$\Rightarrow$] skalierbare Micro-Services~/ \textbf{lose + Kopplung}\\[5mm] + \end{itemize} + + \textbf{Auch:} Gleiche Prinzipien bei Integration mit anderen Lösungen +\end{frame} + +\begin{frame}{Einschub: Go Standard Bibliothek} + \url{https://golang.org/pkg/}\\[5mm] + + \begin{itemize} + \item Crypto + \item Datenbanken + \item Go Parser + \item Netzwerk, HTTP, SMTP, etc. + \item Datenstrukturen\\[7mm] + \end{itemize} + + \textbf{Mehr?} $\Rightarrow$ \url{https://godoc.org/} +\end{frame} + +\begin{frame}[fragile]{Ein Webserver} + \begin{lstlisting} +import (...) + +func main() { + http.HandleFunc("/hallo", sageHallo) + log.Fatal(http.ListenAndServe(":9999", nil)) +} + +func sageHallo(w http.ResponseWriter, r *http.Request) { + fmt.Fprintf(w, "Hallo %s", r.RemoteAddr) +} +\end{lstlisting} + + \begin{itemize} + \item \url{https://golang.org/pkg/log/} + \item \url{https://golang.org/pkg/net/http/} + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{Ein Webserver -- Templates} + \begin{lstlisting} +var tmpl = template.Must( + template.New("results").Parse(` + +{{.Title}} + + + +

Hallo {{.Name}}

+ +`)) + \end{lstlisting} + + \begin{itemize} + \item \url{https://golang.org/pkg/html/template/} + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{Ein Webserver -- Templates (2)} + \begin{lstlisting} +func sageHallo(...) { + d := struct { + Title, Name string + }{"Hallo Welt", r.RemoteAddr} + + var buf bytes.Buffer + if err := tmpl.Execute(&buf, d); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + io.Copy(w, &buf) +} + \end{lstlisting} + + \begin{itemize} + \item \url{https://golang.org/pkg/bytes/} + \item \url{https://golang.org/pkg/io/} + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{Einschub: io.Writer} + \begin{itemize} + \item Warum funktioniert fmt.Printf, tmpl.Execute, http.Error, io.Copy + eigentlich mit dem http.ResponseWriter und bytes.Buffer? + \end{itemize} + + \begin{lstlisting} +package io +type Writer interface { + Write(p []byte) (n int, err error) +} + \end{lstlisting} + + \begin{itemize} + \item[$\Rightarrow$] \textbf{Sehr} einfaches Interface + \item[$\Rightarrow$] \texttt{http.ResponseWriter} und + \texttt{bytes.Buffer} implementieren es\\[7mm] + \end{itemize} + + Viele andere Beispiele ... +\end{frame} + +\begin{frame}[fragile]{Viele Backend-Abfragen} + \begin{lstlisting} +func Query(*Request) (*Response, error) { ... } + +func anfrage(w http.ResponseWriter, r *http.Request) { + requests := []*Request{...} + + responses := make([]*Reponse, len(requests)) + errCh := make(chan error, len(requests)) + + for i, req := range requests { + go func(i int, req *Request) { + var err error + responses[i], err = Query(req) + errCh <- err + }(i, req) + } + + // ... + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile]{Viele Backend-Abfragen (2)} + \begin{lstlisting} + ... + timeout := time.After(50*time.Millisecond) + + for range requests { + select { + case err := <-errCh: + if err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + case <-timeout: + http.Error(w, "timeout", http.StatusRequestTimeout) + return + } + } + // Alle Ergebnisse verfügbar. + \end{lstlisting} + + \begin{itemize} + \item Siehe auch \url{https://golang.org/pkg/sync/#WaitGroup} + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{Spezielle Fehlerbehandlung} + \begin{lstlisting} + go func(req *Request) { + var err error + defer func() { + if e := recover(); e != nil { + err = fmt.Errorf("error while querying backend: %v", e) + } + errCh <- err + }() + + responses[i], err = Query(req) + }(req) + \end{lstlisting} +\end{frame} + +\begin{frame}{Backends -- gRPC} + \textbf{Beispiel: Backend Kommunikation~/ API}\\[5mm] + + \textit{A high performance, open source, general RPC framework that puts + mobile and HTTP/2 first.}\\[10mm] + + \url{https://grpc.io}\\ + \hfill\includegraphics[width=.3\textwidth]{grpc} +\end{frame} + +\begin{frame}{gRPC Überblick} + \url{https://github.com/google/protobuf}\\[5mm] + + \begin{itemize} + \item gRPC basiert auf Protocol Buffers + \item Unterstützung diverser Sprachen\newline + C++, Java, Go, Python, \ldots + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{gRPC Beispiel} + \begin{lstlisting}[morekeywords={syntax,service,message}] +syntax "proto3"; + +package mein_service; + +service Backend { + rpc Query(QueryRequest) return (QueryResponse); + + // ... +} + +message QueryRequest { + string query = 1; +} + +message QueryResponse { + string type = 1; + int64 n = 2; +} + \end{lstlisting} +\end{frame} + +\begin{frame}{gRPC mit Go} + \begin{itemize} + \item Die "`protobuf"' Datei muss mittels des Protobuf Compilers und einer + gRPC Compiler-Erweiterung übersetzt werden + \item Der Compiler erzeugt Go Code, welcher Interfaces und generischen + Code erzeugt + \item Das Interface entspricht im Wesentlichen der \texttt{service} + Definition + \item Das Interface muss für den Server implementiert werden + \item Generischer Client-Code sollte ausreichen\newline + $\rightarrow$ API Entwurf!\\[7mm] + \end{itemize} + + \url{https://github.com/grpc/grpc-go}\\ + \url{https://golang.org/x/net/context} +\end{frame} + +\begin{frame}[fragile]{gRPC mit Go: Server} + \begin{lstlisting} +import pb "tokkee.net/mein_service/service_proto" + +type server struct{} + +func (*server) Query(ctx context.Context, + in *pb.QueryRequest) (*pb.QueryResponse, error) { + + n, err := runQuery(in.Query) + if err != nil { + return nil, err + } + return &pb.QueryResponse{ + Type: "irgendwas", + N: n, + }, nil +} + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile]{gRPC mit Go: Server (2)} + \begin{lstlisting} +func main() { + l, err := net.Listen("tcp", port) + if err != nil { + log.Fatal(err) + } + + s := grpc.NewServer() + pb.RegisterBackendServer(s, &server{}) + s.Serve(l) +} + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile]{gRPC mit Go: Client} + \begin{lstlisting} +func main() { + ctx := context.Background() + + conn, err := grpc.Dial("localhost:50051", grpc.WithInsecure()) + if err != nil { + log.Fatal(err) + } + defer conn.Close() + c := pb.NewBackendClient(conn) + + res, err := c.Query(ctx, &pb.QueryRequest{ + Query: "ein query", + }) + if err != nil { + log.Fatal(err) + } + fmt.Printf("Antwort vom Typ %q: %d\n", res.Type, res.N) +} + \end{lstlisting} +\end{frame} + +\begin{frame}{\inserttitle} + \begin{center} + Danke für die Aufmerksamkeit\\[2mm] + {\Large Fragen, Kommentare?}\\[6mm] + + \url{https://golang.org}\quad—\quad + \url{https://github.com/grpc/grpc-go} + \end{center} +\end{frame} + +\end{document} + +% vim: set shiftwidth=2 softtabstop=2 tabstop=8 noexpandtab spelllang=de_de : diff --git a/tex/go-intro.tex b/tex/go-intro.tex new file mode 100644 index 0000000..cb532e4 --- /dev/null +++ b/tex/go-intro.tex @@ -0,0 +1,493 @@ +% +% Copyright (C) 2015-2016 Sebastian 'tokkee' Harl +% All rights reserved. +% +% Redistribution and use in source and binary forms, with or without +% modification, are permitted provided that the following conditions +% are met: +% 1. Redistributions of source code must retain the above copyright +% notice, this list of conditions and the following disclaimer. +% 2. Redistributions in binary form must reproduce the above copyright +% notice, this list of conditions and the following disclaimer in the +% documentation and/or other materials provided with the distribution. +% +% THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +% ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED +% TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +% PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR +% CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, +% EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +% PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +% OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +% WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +% OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +% ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +% +\documentclass[presentation]{beamer} +\uselanguage{German} + +\usetheme{tokkee} +\usefonttheme{professionalfonts} + +\usepackage{xeCJK} +\renewcommand\CJKfamilydefault{\CJKsfdefault} +\setCJKsansfont{WenQuanYi Zen Hei} + +\setbeamercolor*{block body}{fg=black,bg=white} +\setbeamercolor*{block title}{use=titlelike,fg=titlelike.fg!80!black,bg=black!10} + +\usepackage{fontspec,xunicode,polyglossia} +\setdefaultlanguage[spelling=new]{german} + +\usepackage{graphicx} +\usepackage{xcolor} +\definecolor{darkgreen}{rgb}{0,0.39,0} + +\usepackage{listings} +\lstset{ + language=Go, + frame=single, + numbers=left, + keywordstyle=\bfseries\color{darkgreen}, + commentstyle=\itshape\color{blue}, + stringstyle=\color{red}, + showstringspaces=false, + backgroundcolor=\color{lightgray!25}, + literate=% + {Ö}{{\"O}}1 + {Ä}{{\"A}}1 + {Ü}{{\"U}}1 + {ß}{{\ss}}1 + {ü}{{\"u}}1 + {ä}{{\"a}}1 + {ö}{{\"o}}1, +} + +\usepackage[overlay,absolute]{textpos} + +\usepackage{tikz} +\usetikzlibrary{shadows} +\usetikzlibrary{shapes} + +\title[Programmieren mit Go]{Programmieren mit Go} + +\titlegraphic{} + +\copyrightinfo{\copyright{} 2015-2016 Sebastian `tokkee' Harl} + +\author[Sebastian Harl]{Sebastian `tokkee' Harl\\ + $<$sh@tokkee.org$>$} + +\date[2015-2016]{} + +\AtBeginSection[] +{ + \begin{frame} + \begin{center} + \Large + \titlebox{\secname} + \end{center} + \end{frame} +} + +\begin{document} + +\begin{frame}[plain] + \titlepage +\end{frame} + +\begin{frame}{Überblick} + \textbf{Was ist Go?} + + \begin{itemize} + \item \url{https://golang.org/} + \item Open Source Programmiersprache + \item imperativ, Interfaces, Pakete + \item statisch typisiert, kompiliert + \item Nebenläufigkeit + \item Garbage Collection + \end{itemize} + + \begin{tikzpicture}[remember picture,overlay] + \node[anchor=east] at (current page.east) + {\includegraphics[width=.7\textwidth]{gopher}}; + \end{tikzpicture} +\end{frame} + +\begin{frame}[fragile]{Hallo 世界} + \begin{lstlisting} +package main + +import "fmt" + +func main() { + fmt.Println("Hallo 世界") +} + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile]{Programm übersetzen / ausführen} + \begin{lstlisting}[language=bash,numbers=none] +% go build -o hallo hallo.go +% ./hallo +Hallo 世界 + +% go run hallo.go +Hallo 世界 + \end{lstlisting} +\end{frame} + +\begin{frame}{Go Playground} + \begin{center} + \fbox{\includegraphics[width=.9\textwidth]{playground}} + \end{center} +\end{frame} + +\begin{frame}[fragile]{Pakete / Bibliotheken} + \begin{lstlisting} +package zeichenkette + +func Rückwärts(s string) string { + r := []rune(s) + for i := 0; i < len(r)/2; i++ { + j := len(r) - i - 1 + r[j], r[i] = r[i], r[j] + } + return string(r) +} + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile]{Pakete verwenden} + \begin{itemize} + \item \texttt{\$GOPATH/src} ist der Suchpfad für extra Pakete + \item \texttt{import "$<$paketname$>$"} + \end{itemize} + + \begin{lstlisting} +package main + +import ( + "fmt" + + zk "tokkee.org/zeichenkette" +) + +func main() { + fmt.Println(zk.Rückwärts("Hallo 世界")) +} + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile]{Arbeitsumgebung} + \begin{verbatim} +$GOPATH + |\ + | `- bin/ + | \ + | `- hallo + \ + `- src/ + \ + `- hallo/ + \ + `- hallo.go + \end{verbatim} +\end{frame} + +\begin{frame}{Arbeitsumgebung (2)} + \begin{itemize} + \item \lstinline[language=sh]{go build -o hallo_welt hallo} + \item \lstinline[language=sh]{go install hallo} + \item \lstinline[language=sh]{go doc hallo} + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{Fehlerbehandlung} + \begin{lstlisting} +func machEs() (*Object, error) { + var o Object + if err := o.init(); err != nil { + return nil, err + } + return &o, nil +} + +func main() { + o, err := machEs() + if err != nil { + log.Exitf("Fehler: %v\n", err) + } + // ... + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile]{Komplexe Datenstrukturen} + \textbf{Array / Slice} + \begin{lstlisting} +var array [3]string +array[0] = "ein" +array[1] = "String" +fmt.Println(array) + \end{lstlisting} + + \begin{lstlisting} +var slice []string +slice = array[:] +slice = append(slice, "usw", "usf") +slice = []string{"ein", "anderer", "String"} +fmt.Println(slice) + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile]{Komplexe Datenstrukturen (2)} + \textbf{Map} + \begin{lstlisting} +var m map[string]int +m = make(map[string]int) // Map anlegen +m = map[string]int{ // Map initialisieren + "a": 1, + "b": 2, +} +m["c"] = 3 +fmt.Println(m["a"]) + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile]{Komplexe Datenstrukturen (3)} + \textbf{Struct} + \begin{lstlisting} +type Ding struct { + privat float32 + Öffentlich string +} +d := Ding{ + Öffentlich: "Daten für Alle!", + privat: 47.11, +} +d.privat = 3.1415926535 +fmt.Println(d) + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile]{Komplexe Datenstrukturen (4)} + \textbf{Interface / Methoden} + \begin{lstlisting} +type Macher interface { + Mach(int, int) string +} +type MeinMacher struct {} +func (m MeinMacher) Mach(a, b int) string { + return fmt.Sprintf("%d x %d = %d", a, b, a*b) +} + \end{lstlisting} +\end{frame} + +\begin{frame}{Übung: Quadratwurzel} + \url{https://go-tour-de.appspot.com/flowcontrol/8}\\ + \url{https://de.wikipedia.org/wiki/Newton-Verfahren}\\[5mm] + + Berechne die Quadratwurzel (\lstinline{Wurzel(x float64)}) mit Hilfe des + Newton-Verfahren: + + \begin{equation*} + z_{n+1} = z_n - \frac{z_n^2 - x}{2 * z_n} + \end{equation*} + + Erstelle dazu ein eigenes Paket und ein Programm zum testen. Verwende + entweder eine Schleife mit fester Anzahl an Durchläufen oder bis sich das + Ergebnis nicht (kaum) mehr ändert. +\end{frame} + +\begin{frame}{Die Standard-Bibliothek} + \url{https://golang.org/pkg/}\\[5mm] + + \begin{itemize} + \item Crypto + \item Datenbanken + \item Go Parser + \item Netzwerk, HTTP, SMTP, etc. + \item Datenstrukturen + \end{itemize} +\end{frame} + +\begin{frame}{Weitere Bibliotheken} + \url{https://godoc.org/}\\[5mm] + + \begin{itemize} + \item Vielzahl an Open Source Bibliotheken + \item \lstinline[language=sh]{go get github.com/user/pkg} + \item \url{https://gopkg.in} + \begin{itemize} + \item Versionierung von Bibliotheken auf Github + \item \url{v3} zeigt auf Branch/Tag \url{v3}, \url{v3.N} oder + \url{v3.N.M} + \item \url{gopkg.in/pkg.v3} $\rightarrow$ \url{github.com/go-pkg/pkg} + \item \url{gopkg.in/user/pkg.v3} $\rightarrow$ + \url{github.com/user/pkg} + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{Ein Webserver} + \url{https://golang.org/pkg/net/http/} + \begin{lstlisting} +func main() { + http.HandleFunc("/hallo", sageHallo) + log.Fatal(http.ListenAndServe(":9999", nil)) +} + +func sageHallo(w http.ResponseWriter, + r *http.Request) { + + fmt.Fprintf(w, "Hallo %s", r.RemoteAddr) +} + \end{lstlisting} +\end{frame} + +\begin{frame}{Nebenläufigkeit} + \textbf{Alle Anfragen werden nebenläufig behandelt.}\\[5mm] + + \begin{itemize} + \item Goroutinen + \begin{itemize} + \item \texttt{go f(args)} + \item leichtgewichtige Threads + \item hunderte oder tausende werden effizient verwaltet + \end{itemize} + \item Channels + \begin{itemize} + \item Kommunikation zwischen Goroutinen + \end{itemize} + \item \texttt{select} + \begin{itemize} + \item warten auf I/O und Channels + \end{itemize} + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{Goroutinen} + \begin{lstlisting} +errCh := make(chan error, 2) + +go func() { + errCh <- machEs() +}() +go func() { + errCh <- undDas() +}() + +go machEtwasImHintergrund() + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile]{Goroutinen (2)} + \url{https://golang.org/pkg/time/} + \begin{lstlisting} +timeout := time.After(50*time.Millisecond) +for i := 0; i < cap(errCh); i++ { + select { + case err := <- errCh: + if err != nil { + return err + } + case <-timeout: + return fmt.Errorf("timeout(%d)", i) + } +} + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile]{Goroutinen (3)} + \textbf{Synchronisierung}\\ + \url{https://golang.org/pkg/sync/} + \begin{lstlisting} +daten := []Object{...} +var wg sync.WaitGroup +for _, d := range daten { + wg.Add(1) + go func(o Object) { + defer wg.Done() + verarbeite(o) + }(d) // <- !!! +} +wg.Wait() + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile]{Unit Tests} + \url{https://golang.org/pkg/testing/} + \begin{lstlisting} +package zeugs + +// mult multipliziert die beiden +// übergebenen Argumente und gibt +// das Ergebnis zurück. +func mult(a, b int) int { + return a * b +} + \end{lstlisting} +\end{frame} + +\begin{frame}[fragile]{Unit Tests (2)} + \begin{lstlisting} +package zeugs +func TestMult(t *testing.T) { + for _, test := range []struct{ + a, b, want int + }{ + {3, 4, 12}, + {7, 8, 56}, + } { + if r := mult(test.a, test.b); r != test.want { + t.Errorf("mult(%d, %d) = %d; want %d", + test.a, test.b, r, test.want) + } + } +} + \end{lstlisting} +\end{frame} + +\begin{frame}{Übung: Äquivalente Binärbäume} + \url{https://go-tour-de.appspot.com/concurrency/7}\\ + \url{https://godoc.org/golang.org/x/tour/tree}\\ + \url{https://de.wikipedia.org/wiki/Binärbaum}\\[5mm] + + \begin{itemize} + \item Implementiere die \lstinline{Same(t1, t2 *tree.Tree)} Funktion aus + der Online-Übung. + \item Zusätzlich: Erstelle einen Unit-Test für die Funktion. + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{Werkzeuge} + \textbf{Go ist dazu gedacht, in Werkzeugen verwendet zu werden + (\texttt{go/ast}, etc.)}\\[5mm] + + \begin{itemize} + \item gofmt, goimports + \item godoc, \url{https://godoc.org/} + \item IDE und Editor Unterstützung + \end{itemize} + + \textbf{vim:} + \begin{lstlisting}[language=bash,morekeywords={autocmd,let}] +autocmd filetype go + \ autocmd BufWritePre Fmt +let g:gofmt_command = "goimports" + \end{lstlisting} +\end{frame} + +\begin{frame}{\inserttitle} + \begin{center} + Danke für die Aufmerksamkeit\\[2mm] + {\Large Fragen, Kommentare?}\\[6mm] + + \url{https://tour.golang.org}\quad—\quad + \url{https://play.golang.org} + \end{center} +\end{frame} + +\end{document} + +% vim: set shiftwidth=2 softtabstop=2 tabstop=8 noexpandtab spelllang=de_de : diff --git a/tex/gopher.png b/tex/gopher.png new file mode 100644 index 0000000000000000000000000000000000000000..5d701c0a4224f8c5a59ae0290477f11bc67ced0c GIT binary patch literal 80124 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 z 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 +%% Project home: https://bitbucket.org/korfuri/golang-latex-listings + +\ProvidesFile{lstlang0.sty} + [2012/04/13 1.1 listings language file for GoLang] +\lst@definelanguage{Go}{ + % Keywords as defined in the BNF + morekeywords=[1]{break,default,func,interface,% + case,defer,go,map,struct,chan,else,goto,package,% + switch,const,fallthrough,if,range,type,continue,% + for,import,return,var,select}, + % Special identifiers, builtin functions + morekeywords=[2]{make,new,nil,len,cap,copy,complex,% + real,imag,panic,recover,print,println,iota,close,% + closed,_,true,false,append,delete}, + % Basic types + morekeywords=[3]{% + string,int,uint,uintptr,double,float,byte,% + int8,int16,int32,int64,int128,% + uint8,uint16,uint32,uint64,uint128,% + float32,float64,complex64,complex128,% + rune}, + % Strings : "toto", 'toto', `toto` + morestring=[b]{"}, + morestring=[b]{'}, + morestring=[b]{`}, + % Comments : /* comment */ and // comment + comment=[l]{//}, + morecomment=[s]{/*}{*/}, + % Options + sensitive=true +} +\endinput diff --git a/tex/playground.png b/tex/playground.png new file mode 100644 index 0000000000000000000000000000000000000000..354934dd7cd30d549d0c6e90b3d6d46d65c0beba GIT binary patch literal 36933 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