pentaradio-historic-shownotes/out/shownotes-historic-2015-06.txt

224 lines
8.0 KiB
Plaintext

## Juni 2015
Ankündigung:
Das 21. Jahrhundert liefert neue Herausforderungen für Programmierer:
Multicore-Prozessoren, immer komplexer werdende Software, verteilte
Systeme.
Die Entwickler der Programmiersprache Go verfolgen den Ansatz, es
einfach zu machen, sichere und effiziente Software zu schreiben. In
dieser Sendung wollen wir euch die Programmiersprache näher
vorstellen.
Shownotes:
Drogenkartell benutzt 39 Straßenkameras
<http://fusion.net/story/139838/this-drug-cartel-used-39-street-cameras-to-spy-on-everyone/>
Avast gibt Nutzungsdaten an Analysefimren
<http://www.heise.de/newsticker/meldung/Avast-gibt-Nutzungsdaten-an-Analysefirma-weiter-2677838.html>
UN-Beauftragter wirbt für Verschlüsselung
<http://www.heise.de/newsticker/meldung/UN-Beauftragter-wirbt-fuer-Verschluesselung-und-Anonymitaet-2672561.html>
<http://www.heise.de/-2678065>
SSH-Keys auf Github ausgewertet
<http://www.golem.de/news/ssh-sechs-jahre-alter-bug-bedroht-github-repositories-1506-114449.html>
Trojaner-Angriff auf den Bundestag
<http://www.heise.de/newsticker/meldung/Nach-Trojaner-Angriff-Bundestag-soll-neues-Computer-Netzwerk-benoetigen-2687521.html>
Edward Snowden Platz in Dresden <http://edward-snowden-platz.de/>
200. Datenbankstammtisch:
<https://www.htw-dresden.de/index.php?id=23853&vid=240>
Bibliotheken in Go: <http://awesome-go.com/>
Gopher Team bei Google <http://www.wired.com/2013/07/gopher/>
Go-Race Detector: <http://blog.golang.org/race-detector>
Go 1.5: Go in Go geschrieben
<http://talks.golang.org/2015/gogo.slide#2>
Projekte in Go: <http://blog.golang.org/4years>
News
<http://fusion.net/story/139838/this-drug-cartel-used-39-street-cameras-to-spy-on-everyone/>
<http://www.heise.de/newsticker/meldung/Avast-gibt-Nutzungsdaten-an-Analysefirma-weiter-2677838.html>
<http://www.heise.de/newsticker/meldung/Britische-Polizei-ersucht-alle-zwei-Minuten-um-gespeicherte-Vorratsdaten-2677844.html>
<http://www.heise.de/newsticker/meldung/UN-Beauftragter-wirbt-fuer-Verschluesselung-und-Anonymitaet-2672561.html>
<http://www.heise.de/-2678065>
<http://www.heise.de/newsticker/meldung/Computex-Smarte-Windel-DiaperPie-2678100.html>
<http://www.golem.de/news/ssh-sechs-jahre-alter-bug-bedroht-github-repositories-1506-114449.html>
<http://www.heise.de/newsticker/meldung/Nach-Trojaner-Angriff-Bundestag-soll-neues-Computer-Netzwerk-benoetigen-2687521.html>
(BSI) sei zu dem Ergebnis gekommen, dass das Netz nicht mehr gegen den
Angriff verteidigt werden könne und aufgegeben werden müsse.
<http://www.heise.de/newsticker/meldung/Buchhandel-Jugendgefaehrdende-E-Books-duerfen-nur-nachts-verkauft-werden-2717530.html>
2015-06-30T23:59:60
\* am 17.06. war 200. Datenbankstammtisch, vorgestellt wurden
Datenbankerweiterungen in ad-hoc vernetzter Hardware. Künftig werden
Datenbank also nicht nur schon im Hauptspeicher residieren, sondern
auch schneller rechnen
\* <http://edward-snowden-platz.de/> Edward Snowden Platz in Dresden,
auch mit Freifunk
### Go
- 2007 by Robert Griesemer (V8 Code generation, Java Hotspot),
Rob Pike (UTF-8, Unix, Plan 9, Limbo), and Ken Thompson (B, Regular
Expression, ed, UTF-8 encoding, Plan 9) in Google
-\> generft von C++ (Systemsprache bei Google)
- Kompilierte, Statisch typisierte Programmiersprache
-\> statisch gelinkt, keine Libc-Abhängigkeit, nur Syscalls
- Garbage Collection (parallel/stop the world, mark-and-sweep)
- Typinterference -\> foo := "string";
- Objektorientierung durch Interfaces (virtual inheritance) und Types
- Typen können Methoden haben:
type ip4addr uint32
func (ip4addr a) String() {
....
}
- Mixins -\> Objektorientierung?
- Interface conversions and type assertions (Reflexion)
type Stringer interface { String() string }
var value interface{} // Value provided by caller.
switch str := value.(type) {
case string:
return str
case Stringer:
return str.String()
}
- Lambdas
- Error as Value -\> Methoden mit mehreren Rückgabewerten
- Slices, Maps
- string === UTF-8 Strings (Rob Pike hat UTF-8 mit geprägt)
- binary data? -\> \[\]byte
- explizite Typenkonvertierung (int32 -\> int)
- Goroutinen (Greenthreads)
- Channels -\> Warteschlange
kanal := make(chan string)
go func{ fmt.Print(\<-kanal) }
kanal \<- "Hallo"
- Share by communicating
- Defer
- Modulekonzept -\> package main
Methoden/Variablen mit beginnt Großbuchstaben -\> nach außen
sichtbare Methode
- Eingebauter C-Compiler -\> Einbinden in C-Header Files + Linker Flags
in
Go-Kommentar
// \#include \<stdio.h\>
...
C.printf
- Plattformabhängiger Code in eignen Dateien -\> (keine \#ifdef Hölle)
// +build linux,386 darwin,!cgo
\<name\>\[\_GOOS\]\[\_GOARCH\].go -\> taskbar_windows.go
#### Packetmanagement
export GOPATH=\~/go
\~/go
├── bin
│ ├── gore
├── pkg
│ └── linux_amd64
│ └── github.com
│ ├── Mic92
│ │ └── lock
│ │ ├── filter.a
│ │ └── flag.a
└── src
├── github.com
│ ├── Mic92
│ │ ├── lock
go get github.com/\<User\>/\<Project -\> import
"github.com.\<User\>.\<Projekt\>
### Coole Bibliotheken
- Batteries included:
-\> Webserver, json, xml, template engine, ssl, kompression,
http/smtp/json rpc
-\> testing, syscalls, bildformate
- Standartbibliothek gut lesbar (kurze Methoden, wenige
Verschachtelungen, verlinkt von der Dokumentation) \<-\> glibc
- häufig reine Go-Biblioteken (keine C-Wrapper) -\> tls
- Seit 1.5: Go in Go (<http://talks.golang.org/2015/gogo.slide#2)>
-\> C verbannt
- webanwendungen? -\> Ähnlich Express.js/sinatra/Flask, kleine Modulare
Frameworks
#### Triva
- Gopher Team bei Google <http://www.wired.com/2013/07/gopher/>
- Subject von \#go auf freenode.net: Go, the game (not the silly
language) -\> \#go-nuts
- golang als Stichwort in Suchmaschinen
- keine Stackoverflows -\> continous/resizeable stack
Tooling:
AST-Parser in stdlib + einfache Syntax -\>
eingebaut:
- gofmt -\> Codeformatierung
- pprof -\> profiler mit Webansicht (CPU, Speicher, Goroutinen Locks
(- gofix -\> Apirefactoring)
- gdb -\> debugger
- godoc -\> Dokumentationsserver, Dokumentation in Kommentaren
- go test
- go generate:
//go:generate stringer -type=Pill
- go race detector: <http://blog.golang.org/race-detector>
(Speicherzugriffe)
- gocode -\> Codevervollständigung
- go oracle
- vet/lint -\> Statische Codeanalyse
- gorename -\> Refactoring
- goxc -\> Cross-Compiler + statische gelinkte Standartbibliothek
-\> einfaches Deployen auf mehreren Plattformen
- vim-go
Projekte in Go:
- play.golang.org - Ausführbare Codesnippets
- <http://blog.golang.org/4years>
- <https://code.google.com/p/go-wiki/wiki/Projects>
- <http://imposm.org/>
- CloudFlare built their distributed DNS service entirely with Go
- gern für Kommandozeilenprogramme (heroku, hub, direnv) -\> schneller
Start/wenig Laufzeitabhängigkeiten
- für Serveranwendungen (Backend) -\> einfach zu Deployen
- SoundCloud is an audio distribution service that has "dozens of
systems in Go
- docker
- The raft package provides an implementation of the Raft distributed
consensus protocol. It is the basis of Go projects like etcd and
SkyDNS.
- Packer is a tool for automating the creation of machine images for
deployment to virtual machines or cloud services.
- Bitly's NSQ is a realtime distributed messaging platform designed
for fault-tolerance and high-availability, and is used in production
at bitly and a bunch of other companies.
- Canonical's JuJu infrastructure automation system was rewritten in
Go.
unterstützte Plattformen:
Linux, Mac OS X, FreeBSD, NetBSD, OpenBSD, Plan 9, and Microsoft
Windows
Architekturen:
i386, amd64, ARM and IBM POWER
(android und ios)
### Termine
Krypto-Gewinnspiel mit PGP für Anfänger
<https://wiki.fsfw-dresden.de/doku.php?id=doku:pm_gewinnspiel2015>
MORGEN
- Kryptoparty an der TU Dresden, in der Fakultät für Informatik - mehr
auf ifsr.de -\> <https://www.ifsr.de/fsr:news:cryptoparty_am_24._juni>
- Orga-Meeting Datenspuren
26-28. Jardin Entropique in Rennes
03.07. Lange Nacht der Wissenschaften
10.07. Staat 2.0 an der TU Leipzig: Interdisziplinäres Gespräch: Der
Staat und seine Bürger im digitalen Zeitalter