https://www.gravatar.com/avatar/2a389171c064e3f0739eea781acea0f4?s=240&d=mp

Welcome

Kennwörter in Go verschlüsseln

Go hat von vorne herein bereits viele hilfreiche Pakete. Eines davon ist das Paket bcrypt mit dem sich z.B. Kennwörter sicher verschlüsseln lassen: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 package main import ( "fmt" "golang.org/x/crypto/bcrypt" ) func main() { pw := "SecretPassword" bs, err := bcrypt.GenerateFromPassword([]byte(pw), 2) //let's look at the encrypted password fmt.Printf("encryption result: %s\n", string(bs)) err = bcrypt.

Go routinen und Fehlerbehandlung

Bei einem kleinen Projekt an dem ich gerade arbeite habe ich gerade mit dem Thema Fehlerbeahndlung in Verbindung mit Goroutinen zu tun. Ich habe hier eine Library geschrieben, welche verschiedene Methoden für eine Bestellung anbietet. Natürlich habe ich brav darauf geachtet, dass im Fall der Fälle ein Fehler zurückgegeben wird. Aber wie ist das wenn ich nun eine Methode als Goroutine starte. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 package main import ( "fmt" ) type order struct { id string } func (o *order) create(id string) error { //do something useful with the order if id == "OD-002" { err := fmt.

Reguläre Ausdrücke - Wenn sie nur nicht so praktisch wären

Ich habe lange einen Bogen um reguläre Ausdrücke gemacht. Jedes Mal wenn ich es mit dem Thema zu tun bekam war die instinktive Reaktion die Flucht. Ich habe mich immer mal wieder versucht diesem Thema zu nähern. Die ganzen schlauen Menschen, die reguläre Ausdrücke beherrschen, können ja nicht ganz falsch liegen. Ich habe allen Mut zusammen genommen und mich durchgekämpft. Ich muss ganz ehrlich zugeben ich bin immer noch nicht der allergrößte Fan regulärer Ausdrücke.

Pointer in Go

Ein Pointer in Go, oder auch Zeiger verweist auf die Speicheradresse an der ein Wert gesichert ist. Um die Speicheradresse für eine Variable auszugeben verwendet man das & Zeichen: 1 2 3 4 5 6 7 8 func main() { x := 10 fmt.Println(x) fmt.Println(&x) fmt.Printf("%T\n", x) fmt.Printf("%T\n", &x) } Gibt man Typ der Speicheradresse ausgeben, so ist er *int. Da * ist der Operator für einen Pointer, dass heißt, die Speicheradresse ist ein Pointer zu einem int.

Einmal E-Mail Hölle und zurück

UPDATE August 2020 Der folgende Artikel ist zwar für den einen oder anderen interessant, spiegelt aber mittlerweile nicht mehr meinen aktuellen Ansatz zum Thema E-Mail wieder. Ich habe mich mittlerweile von allen genannten Tools getrennt und habe stattdessen seit Juni einen HEY. Ich werde hierzu noch einen Beitrag schreiben 😊 |||||||||||||||||||||||||| Kennt Ihr das? Ihr bekommt gefühlt tausende Benachrichtigungen, Status Updates, Bestellbestätigungen und vieles mehr? Man bekommt so viel Zeug im Laufe des Tages und das meiste davon ist es einfach nicht wert auch nur geöffnet zu werden.

Datenstrukturen in Go

Ein Struct ist eine Datenstruktur, die es uns erlaubt Werte verschiedener Datentypen zu Feldern zusammenzufassen. Jedes Feld hat eine Bezeichnung und einen Typ. Im Prinzip erstellt man sich mit einem Struct einen eigenen Typ. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 type person struct { vorname string nachname string alter int } func main() { person1 := person{ vorname: "Peter", nachname: "Müller", alter: 28, } person2 := person{ vorname: "Maria", nachname: "Maier", alter: 21, } fmt.