kubent
) — инструмент для проверки использования устаревших API в кластере KubernetesОсобенно это актуально сейчас, на фоне распространения Kubernetes 1.16, многие API становятся устаревшими.
kubent
без проблем работает: — с
YAML
или JSON
— с
kubectl
, используется аннотация kubectl.kubernetes.io/last-applied-configuration
— с Helm v3
kubent
:sh -c "$(curl -sSL https://git.io/install-kubent)"
ну или
brew install kubent
-h
, как обычно:./kubent -h
Usage of ./kubent:
-A, --additional-annotation strings additional annotations that should be checked to determine the last applied config
-a, --additional-kind strings additional kinds of resources to report in Kind.version.group.com format
-c, --cluster enable Cluster collector (default true)
-x, --context string kubeconfig context
-e, --exit-error exit with non-zero code when issues are found
-f, --filename strings manifests to check, use - for stdin
--helm3 enable Helm v3 collector (default true)
-k, --kubeconfig string path to the kubeconfig file
-l, --log-level string set log level (trace, debug, info, warn, error, fatal, panic, disabled) (default "info")
-o, --output string output format - [text|json|csv] (default "text")
-O, --output-file string output file, use - for stdout (default "-")
-t, --target-version string target K8s version in SemVer format (autodetected by default)
-v, --version prints the version of kubent and exits
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍4🔥2
Ловите — самые востребованные команды Docker
Освежите эту важную информацию, чтобы она переместилась в долговременную память)
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🔥7❤3
Итак, вот совет, который вначале может показаться контринтуитивным — используйте функцию
Must
для преднамеренной остановки вашей программы.Странно, да? И правда, обычно мы стараемся избегать ситуаций, когда наша программа может запаниковать, но есть исключения, когда использование
Must
сокращает громоздкость. Если вы работали с Go, по-любому вы уже видели эти функции в стандартной библиотеке.
Чуть подробнее: функция
Must
принимает как аргумент другую функцию, и если та вернёт ошибку, то Must
вызывает панику. Must
в основном используются для:Must
также очень полезны в сценариях тестирования, позволяя немедленно прервать тест с помощью t.Fatal
: Функции Must
являются инструментами для инициализации и тестирования, где мы не ожидаем получить ошибку.Итак, функция
Must
упрощает обработку ошибок в определенных контекстах, но следует использовать её осторожно.@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16❤8👎4🔥4
Это простое приложение для обмена сообщениями, созданное с помощью Go и Vue.js.
Пользователи могут создавать чаты-комнаты для общениеи.
Приложение использует WebSockets для общения в режиме реального времени.
▪Github
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19❤4👍2👎2
time.Time
в Go time.Unix()
:package main
import (
"fmt"
"time"
)
func main() {
unixTime := time.Unix(1589570165, 0) // 0 - это число наносекунд
fmt.Println(unixTime)
}
// 2020-05-15 22:16:05 +0300 MSK
time
предусмотрены специальные функции time.UnixMilli
и time.UnixMicro
:package main
import (
"fmt"
"time"
)
func main() {
unixTimeMilli := time.UnixMilli(1589570165123)
unixTimeMicro := time.UnixMicro(1589570165123456)
fmt.Println("millis: ", unixTimeMilli)
fmt.Println("micros: ", unixTimeMicro)
}
// millis: 2020-05-15 19:16:05.123 +0000 UTC
// micros: 2020-05-15 19:16:05.123456 +0000 UTC
Пользуйтесь
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍37❤5🔥2
Здесь описывается абсолютно всё, что поможет подготовиться к собеседованию, и даже больше
Вопросы с собеседований связанные с Golang
├── Общие вопросы
├── Хеш-мапы
├── Интерфейсы
├── Пакеты
├── Типы данных
├── Defer
├── Примитивы синхронизации
├── Планировщик
├── Строки
├── Массивы и слайсы
├── Дженерики
├── Горутины
├── Конструкции
├── Гонка данных
├── Структуры
├── Контекст
├── Ошибки / Panic
└── Указатели
Вопросы с собеседований связанные с Linux
├── Файловая система
└── Сигналы, процессы
Вопросы по инфраструктуре
└── Базы данных (реляционные)
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
👍65❤10🔥7🤔2🤯1
Базовый пакет для работы с тестами — это testing. Два основных типа здесь —
T
для обычных юнит-тестов и B
для нагрузочных тестов. Тесты в Go пишутся в том же пакете, что и основная программа, с добавлением суффикса _test
. Поэтому любые приватные структуры данных, доступные внутри пакета, доступны и внутри тестов (так же верно, что тесты имеют общую глобальную область видимости между собой. При компиляции основной программы тестовые файлы игнорируются.Помимо базового пакета
testing
, существует большое количество сторонних библиотек, помогающих упростить написание тестов либо позволяющих писать в том или ином стиле (даже в стиле BDD. Вот, например, хорошая вводная статья о том, как писать на Go в стиле TDD.На GitHub есть табличка сравнения тестовых библиотек, среди которых есть такие монстры, как goconvey, предоставляющий ещё и веб-интерфейс, и взаимодействие с системой, например уведомления о прохождении тестов. Чтобы не усложнять, для простых проектов можно использовать небольшую библиотеку testify, добавляющую лишь немного примитивов для проверки условий и создания mock-объектов.
@Golang_google
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍24🔥6❤2👎1