Please open Telegram to view this post
VIEW IN TELEGRAM
😁51
Forwarded from Библиотека Go для собеса | вопросы с собеседований
Это структура, определённая как
Зачем она нужна
• Неэкспортируемую пустую структуру часто используют, чтобы обозначить, что тип
• Так как struct{} занимает
set := map[string]struct{}{}
set["apple"] = struct{}{}• Пустая структура идеальна для
done := make(chan struct{})
go func() {
// работа
done <- struct{}{}
}()
<-done• Если структура неэкспортируема, она не видна за пределами пакета — удобно для
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤4🥱1
🧠 Готовишься к собесам, а ноутбук еле тянет IDE?
Самое время прокачать скиллы и апгрейднуть железо!
Proglib Academy разыгрывает MacBook Pro 14 (M3 Pro, 36 GB, 1 TB SSD) 💻
Купи любой наш курс до 15 ноября → пройди 2 недели обучения → напиши куратору #розыгрыш. Всё, ты в игре!
📚 Среди курсов:
▫️ Алгоритмы и структуры данных — топ для подготовки к собесам в Яндекс и FAANG.
▫️ Архитектуры и шаблоны проектирования — чтобы думать как senior.
▫️ Python, математика для DS, основы IT и другие направления.
👉 Принять участие
Самое время прокачать скиллы и апгрейднуть железо!
Proglib Academy разыгрывает MacBook Pro 14 (M3 Pro, 36 GB, 1 TB SSD) 💻
Купи любой наш курс до 15 ноября → пройди 2 недели обучения → напиши куратору #розыгрыш. Всё, ты в игре!
📚 Среди курсов:
▫️ Алгоритмы и структуры данных — топ для подготовки к собесам в Яндекс и FAANG.
▫️ Архитектуры и шаблоны проектирования — чтобы думать как senior.
▫️ Python, математика для DS, основы IT и другие направления.
👉 Принять участие
🥱6❤1
Между «накинуть Nginx с парой строк конфига» и «развернуть HAProxy с мониторингом» есть промежуточный вариант. Traffic Balancer — это Go-библиотека с балансировкой, health checks и защитой от перегрузов.
Библиотека предлагает четыре стратегии распределения запросов:
• least-time — анализирует среднюю задержку каждого сервера и отправляет запрос туда, где она ниже. Полезно, когда у серверов разная производительность.
• weighted-round-robin — распределяет нагрузку по весам. Задаёте в конфиге weight: 0.1 и 0.9, и более мощный сервер получит в 9 раз больше запросов.
• connection-per-time — следит за количеством соединений на каждом сервере. Если за минуту превышен лимит из конфига, сервер временно выключается из ротации.
• round-robin — классика. Запросы идут по очереди: первый на сервер А, второй на Б, третий снова на А.
Пример конфига:
# least-time
# weighted-round-robin
# connection-per-time
# round-robin
algorithm: "weighted-round-robin" # Algorithm to be used
port: 3030 # Port that the reverse proxy will run on
strict: true # Strict mode for black-listing IPs
log: true # Save logs to file in log folder
access-control-allow-origin: "*" # CORS HEADERS
max-body-size: 1024 # Maximum body size!
xss-protection: true # In default true it will add xss protection header to the requested sent from load balancer to the server.
servers: #List of servers.
-
host: "http://localhost:9876"
weight: 0.1
connections: 1
-
host: "http://localhost"
weight: 0.9
connections: 100
Запуск:
go build
./traffic-balancer
Всё. Балансировщик поднимается на указанном порту и начинает работу.
#GoToProduction
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7
🧑💻 Подготовка к 6-дневке: инструкция для взрослых
Шаг 1: Осознать, что выбора нет
Шаг 2: Смириться
Шаг 3: ???
Шаг 4: PROFIT
💬 А вы готовы? Как проходит второй понедельник? Или у вас будет две пятницы?
🐸 Библиотека Go-разработчика
#GoTalk
Шаг 1: Осознать, что выбора нет
Шаг 2: Смириться
Шаг 3: ???
Шаг 4: PROFIT
#GoTalk
Please open Telegram to view this post
VIEW IN TELEGRAM
😁5❤2
Одна из классических ошибок начинающих Go-разработчиков — определять интерфейсы слишком рано и слишком широко. Интерфейс должен описывать поведение, которое вам нужно, а не всё, что умеет делать структура.
Плохо:
type Database interface {
Create()
Read()
Update()
Delete()
}Здесь мы создали толстый интерфейс со всеми возможными операциями. Но что если вашему коду нужно только читать данные?
Хорошо:
type Reader interface {
Read() ([]byte, error)
}Узкий интерфейс, описывающий ровно то, что нужно конкретному потребителю.
Думайте как потребитель: «Что мне нужно от этой зависимости?» — и определяйте интерфейс исходя из ответа. Это чистый YAGNI для интерфейсов — не определяй методы, пока они не нужны.
#GoDeep
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17
Media is too big
VIEW IN TELEGRAM
Не пропусти МТС True Tech Champ — масштабный фестиваль 21 ноября для тех, кто живет технологиями 🔥
Тебя ждут:
▫️ Захватывающая сюжетная линия. Тебя ждет уникальная кибервселенная с возможностью влиять на ход происходящего.
▫️ Конференция с международными спикерами. Эксперты расскажут о трендах в ИИ и инновациях в индустрии.
▫️ ИТ-качалка. Наращивай экспертизу на воркшопах.
▫️ Шоу-финал ИТ-чемпионата. Более 250 талантов со всей России сразятся в лайв-кодинге и программировании роботов на скоростное прохождение лабиринтов со спецэффектами. Выбирай и болей за фаворитов.
▫️ Айтивности. Тебя ждут бои роботов, кодерские челленджи, пайка плат и не только. Заработай True Coins и обменяй их на стильный мерч.
▫️ HR-Hub. Команда МТС расскажет о возможностях для развития в компании и поможет перезагрузить карьерный трек.
▫️ Афтепати со звездными хэдлайнерами. Зажги под популярные хиты.
Когда: 21 ноября, МТС Live Холл в Москве и онлайн.
Регистрируйся на сайте. Участие бесплатно, количество мест ограничено.
Тебя ждут:
▫️ Захватывающая сюжетная линия. Тебя ждет уникальная кибервселенная с возможностью влиять на ход происходящего.
▫️ Конференция с международными спикерами. Эксперты расскажут о трендах в ИИ и инновациях в индустрии.
▫️ ИТ-качалка. Наращивай экспертизу на воркшопах.
▫️ Шоу-финал ИТ-чемпионата. Более 250 талантов со всей России сразятся в лайв-кодинге и программировании роботов на скоростное прохождение лабиринтов со спецэффектами. Выбирай и болей за фаворитов.
▫️ Айтивности. Тебя ждут бои роботов, кодерские челленджи, пайка плат и не только. Заработай True Coins и обменяй их на стильный мерч.
▫️ HR-Hub. Команда МТС расскажет о возможностях для развития в компании и поможет перезагрузить карьерный трек.
▫️ Афтепати со звездными хэдлайнерами. Зажги под популярные хиты.
Когда: 21 ноября, МТС Live Холл в Москве и онлайн.
Регистрируйся на сайте. Участие бесплатно, количество мест ограничено.
❤1🤔1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁26🔥3
🎁 Конкурс от Proglib Academy!
Кстати, если кто-то ещё не в курсе — у нас тут раздают MacBook Pro 14.
Да-да, не шутка, настоящий, железный, с M3 Pro
Но! Чтобы успеть пройти 2 недели обучения к 15 ноября, курс нужно взять до конца октября — и сейчас на всё скидка 40%.
Чтобы поучаствовать, нужно:
1️⃣ Покупаешь любой курс до конца октября;
2️⃣ Проходишь 2 недели обучения к 15 ноября;
3️⃣ Написать куратору в чат #розыгрыш.
До 15 ноября, потом всё — поезд (и макбук) уйдёт.
👉 Участвовать в розыгрыше
Кстати, если кто-то ещё не в курсе — у нас тут раздают MacBook Pro 14.
Да-да, не шутка, настоящий, железный, с M3 Pro
Но! Чтобы успеть пройти 2 недели обучения к 15 ноября, курс нужно взять до конца октября — и сейчас на всё скидка 40%.
Чтобы поучаствовать, нужно:
1️⃣ Покупаешь любой курс до конца октября;
2️⃣ Проходишь 2 недели обучения к 15 ноября;
3️⃣ Написать куратору в чат #розыгрыш.
До 15 ноября, потом всё — поезд (и макбук) уйдёт.
👉 Участвовать в розыгрыше
Сегодня в ежедневной задаче на литкоде попалась интересная штука — нужно найти наименьшее число, которое не меньше заданного N и состоит только из единиц в двоичной записи.
Вам дают число, например, 10 (в двоичной системе это 1010). Нужно найти ближайшее число >= 10, где все биты — единицы. В данном случае это 15 (двоичная 1111).
Первое решение, которое приходит в голову. Можно просто пройтись по всем битам исходного числа и установить каждый в 1:
func smallestNumber(n int) int {
result := 0
bitPosition := 0
for n > 0 {
result |= (1 << bitPosition) // устанавливаем бит
bitPosition++
n >>= 1 // сдвигаем к следующему биту
}
return result
}Работает, но есть способ элегантнее. Решение в одну строчку:
Вспомните, как выглядят числа-степени двойки минус один:
2¹ - 1 = 1 (двоичная: 1)
2² - 1 = 3 (двоичная: 11)
2³ - 1 = 7 (двоичная: 111)
2⁴ - 1 = 15 (двоичная: 1111)
Видите паттерн? Нам нужно найти самый старший бит в исходном числе и взять следующую степень двойки минус один.
Для числа 10 (двоичная 1010) старший бит на позиции 3. Значит, берём 2⁴ - 1 = 15.
func smallestNumber(n int) int {
x := 1
for x - 1 < n {
x <<= 1 // умножаем на 2
}
return x - 1
}Или через битовые операции с помощью
bits.Len:import "math/bits"
func smallestNumber(n int) int {
bitLength := bits.Len(uint(n)) // находим количество бит
return (1 << bitLength) - 1
}
Число с N единицами подряд — это всегда 2^N - 1. Мы находим, сколько битов нужно, чтобы вместить наше число, и берём число с таким количеством единиц.
Чтобы щёлкать такие задачи не нужно знать, всё, хватит базы. Подтянуть такую базу поможет наш курс по алгоритмам. До конца октября скидка 40%
#ReadySetGo
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤5⚡3👏2
🚀 Хотите прокачать навыки DevSecOps и безопасно управлять инфраструктурой и кодом? Приглашаем на два открытых вебинара в рамках курса «Внедрение и работа в DevSecOps»!
🗓 13 ноября, 20:00 - «Безопасность k8s: актёры и роли»:
- Разбираем RBAC в Kubernetes: субъекты, роли и биндинги
- Принцип наименьших привилегий и проектирование минимальных разрешений
- Примеры настройки ролей для команд и сервис-аккаунтов
🎯 Для DevOps, SRE, администраторов Kubernetes и ИБ-инженеров.
🗓 20 ноября, 20:00 - «SAST, их много, почему столько, а сколько нужно нам? А главное, какие?»:
- Чем различаются инструменты SAST и для каких кейсов подходят
- Как выбрать подходящие инструменты и комбинировать их без лишних накладных расходов
- Что делать с негативными особенностями работы SAST
🎯 Для архитекторов, разработчиков, DevOps, DevSecOps и AppSec-специалистов.
⚡️ Не упустите шанс бесплатно ознакомиться с практикой DevSecOps! Регистрация открыта: https://clc.to/r-2I0g
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🗓 13 ноября, 20:00 - «Безопасность k8s: актёры и роли»:
- Разбираем RBAC в Kubernetes: субъекты, роли и биндинги
- Принцип наименьших привилегий и проектирование минимальных разрешений
- Примеры настройки ролей для команд и сервис-аккаунтов
🎯 Для DevOps, SRE, администраторов Kubernetes и ИБ-инженеров.
🗓 20 ноября, 20:00 - «SAST, их много, почему столько, а сколько нужно нам? А главное, какие?»:
- Чем различаются инструменты SAST и для каких кейсов подходят
- Как выбрать подходящие инструменты и комбинировать их без лишних накладных расходов
- Что делать с негативными особенностями работы SAST
🎯 Для архитекторов, разработчиков, DevOps, DevSecOps и AppSec-специалистов.
⚡️ Не упустите шанс бесплатно ознакомиться с практикой DevSecOps! Регистрация открыта: https://clc.to/r-2I0g
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Вакансий для программистов стало на 17% меньше, резюме — на 25% больше. Рынок изменился: теперь это не «рынок кандидата», а «рынок работодателя».
В статье про то, что происходит с зарплатами, какие специалисты сейчас наиболее востребованы и почему одного знания языка уже недостаточно
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱2😁1
