Рубрика «golang» - 3

Дисклеймер.

Статья написана исключительно в развлекательных целях.

Как все начиналось

Любой администратор любой информационной системе знает, что мест для автоматизации в его работе бесконечное множество. Какая огромная ниша для автоматизации прячется в задачах обработки логов, сбора статистики, реакции на события систем.

Читать полностью »

Начнем с написания простого веб-сервера.

package main

import (
	"fmt"
	"net/http"
)

func main() {
	http.HandleFunc("/", wsHandler)
	http.ListenAndServe(":8000", nil)
}

func wsHandler(w http.ResponseWriter, r *http.Request) {
	fmt.Println(r.Header)
	fmt.Fprintln(w, "Hello, World!")
}

Благодаря стандартной библиотеке написать многопоточный веб-сервер на Go проще чем на любом другом языке.

Для тех, кто незнаком с Go
NNHelper – пакет на языке Go для создания и использования нейронной сети - 1

Краткое содержание

Данная статья описывает работу пакета nnhelper, предназначенного для создания и использования нейронных сетей в программах на языке Go.

Читать полностью »

Я так давно пользуюсь услугами Github, что уже начал забывать, как это страшно потерять код, который целый день сочинял и отлаживал. Раньше для сохранения кода я использовал дискетки, потом cd-rom и переносной жесткий диск, потом пришли флешки. Все это для того, чтобы перенести код с рабочего компьютера на домашний и не потерять. И все эти
устройства постоянно ломались, терялись, у них заканчивался срок службы и т.п.

Читать полностью »

Привет! Эта статья - начало цикла статей на то, как сейчас проходят интервью на golang разработчика (без привязки к грейду).

Цикл будет в себя включать как теоретические вопросы (с примерами и кодом исходников языка), так и реальные практические задачи, которые спрашивают при устройстве на позиции go разработчика.

Оглавление

  1. Предыстория

  2. ООП в Golang

  3. Области видимости в Golang

  4. Операторы в Golang

  5. Strings в Golang

  6. Int в Golang

  7. Const в Golang

  8. Читать полностью »

Golang-дайджест № 14 (1 – 28 февраля  2022) - 1

Свежая подборка новостей и материалов

Интересное в этом выпуске

  • Выпущены Go 1.17.7 и 1.16.14

  • Go 1.18 Release Candidate 1: Заметки 

  • Самомодифицирующийся исполняемый файл на Go 

  • Go Workspaces в Go 1.18

  • Gambit - шахматы в терминале

  • Подкаст - обсуждаем дженерики от Go Get Podcast

  • FQ - Инструмент для работы с бинарными данными

Приятного чтения!

Читать полностью »

Скоро выходит версия Go 1.18, и в массовом сознании она, скорее всего, будет ассоциироваться с Generic-ами. Но помимо них туда попадает еще несколько вкусных фичей. Например, Go Workspaces.

Беглый взгляд на Go Workspaces в Go 1.18 - 1

Что даёт Go Workspaces?

Читать полностью »

Скоро выйдет релиз 1.18 в котором появятся долгожданные дженерики. Они позволят сделать универсальные методы. Я написал пару примеров для себя. Может быть они будут интересны кому-нибудь ещё.

Интерфейсы any, comparable, constraints. и ~

Появились новые ключевые слова

any - аналог interface{}. Это ключевое слово можно использовать в любом месте. Например при определении типа переменной или при опрредении типа поля в структуре. Вот такой код ошибок не вызовет:

func TestDo(v any) any {
	var k any

	k = 10

	return k
}

type Test interface {
	Some() any
}

comparableЧитать полностью »

Сегодня мы будем анализировать бинарники на пару с CPU профилями, чтобы создать на их основе расширенные профили исполнения. Эти дополненные профили мы сможем использовать для оценки времени, которое программа тратит на проверки выхода за границу массивов и слайсов.

Анализируем bound checks в Go по CPU профилю - 1

Читать полностью »

Старайтесь всегда использовать многоэтапную сборку, для создания более компактных Docker образов. Давайте, рассмотрим на примере, как многоэтапная сборка позволяет значительно уменьшить размер Docker образа. В качестве примера, мы будем использовать простое веб-приложение на Golang:

package main

import (
	"fmt"
	"log"
	"net/http"
)

func main() {
	http.HandleFunc("/", HelloServer)
	fmt.Printf("Starting server at port 8080n")
	if err := http.ListenAndServe(":8080", nil); err != nil {
		log.Fatal(err)
	}
}

func HelloServer(w http.ResponseWriter, r *http.Request) {
	fmt.Fprint(w, "Hello world")
}

Сначала, соберем Docker образ в один этап:

Читать полностью »

https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js