Forwarded from Библиотека задач по Go | тесты, код, задания
👻 — int
🌚 — float32
⚡️ — float64
🎉 — double
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡215🌚15😁9🎉3👾3
🔑 Меньше запросов, больше скорости
Когда клиент запрашивает данные, сервер обычно играет роль посредника, проверяя права доступа и передавая данные. Но как можно ускорить этот процесс и разгрузить сервер.
➖ Valet Key Pattern
1️⃣ Клиент запрашивает доступ к ресурсу.
2️⃣ Сервер выдает временный токен («valet key») с ограниченными правами.
3️⃣ Клиент напрямую использует этот токен для доступа к данным
❓ Где используется
• Доступ к объектному хранилищу (AWS S3 Pre-Signed URLs, Azure SAS Tokens)
• Ограниченный доступ к API без полной аутентификации
• Стриминг медиафайлов с временными ссылками
➡️ Подробности про паттерн
🐸 Библиотека Go разработчика #буст
Когда клиент запрашивает данные, сервер обычно играет роль посредника, проверяя права доступа и передавая данные. Но как можно ускорить этот процесс и разгрузить сервер.
❓ Где используется
• Доступ к объектному хранилищу (AWS S3 Pre-Signed URLs, Azure SAS Tokens)
• Ограниченный доступ к API без полной аутентификации
• Стриминг медиафайлов с временными ссылками
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12
🐧 Пингвин, покоривший мир: история взлета Linux – ОС, управляющей 96% серверов
В 1991 году на компьютере с 4 мегабайтами памяти родилась программа, которая сегодня управляет большей частью интернета, смартфонами и даже космическими аппаратами. Это история Linux, рассказанная одним из первых свидетелей.
➡️ Читать статью
➡️ Зеркало
В 1991 году на компьютере с 4 мегабайтами памяти родилась программа, которая сегодня управляет большей частью интернета, смартфонами и даже космическими аппаратами. Это история Linux, рассказанная одним из первых свидетелей.
➡️ Читать статью
➡️ Зеркало
👍15❤3😁3
Media is too big
VIEW IN TELEGRAM
Proglib рассказывает базу в формате рилса
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱24👍8
📝 Интерактивная шпаргалка по GoLand
Все важные сочетания, которые помогут вам ускорить работу в IDE и сделать процесс разработки максимально комфортным.
Никаких сложных настроек — просто посмотрите, выберите нужные сочетания и используйте их в своей работе.
➡️ Изучить хоткеи
🐸 Библиотека Go разработчика #буст
Все важные сочетания, которые помогут вам ускорить работу в IDE и сделать процесс разработки максимально комфортным.
Никаких сложных настроек — просто посмотрите, выберите нужные сочетания и используйте их в своей работе.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱16👍3
Please open Telegram to view this post
VIEW IN TELEGRAM
😁21👏9👍4🥱2💯2
В нашем чате работает бот Shieldy — он защищает от спама, запрашивая у новых участников решение простой капчи.
⚠️ Проблема, с которой сталкиваются многие: вы нажимаете под постом «Прокомментировать», пишете что-то, а потом получаете бан и не можете писать комментарии.
❓Почему так: Shieldy отправляет капчу в сам чат, а не в комментарии под конкретный пост. Из-за этого капчу можно не увидеть, не отправить ответ на нее, и бот автоматически заблокирует вас.
— Зайдите в описание канала с телефона и нажмите кнопку Discuss / Чат
— Нажмите Join / Присоединиться
— Сразу обратите внимание на сообщение от бота Shieldy
— Решите простой пример и отправьте ответ в чат
После этого бот отправит приветственное сообщение и вы сможете оставлять комментарии. Эту проверку нужно пройти только один раз при вступлении в чат.
❗️ Если вас все-таки забанили
— Это временная блокировка на несколько минут
— Подождите и попробуйте зайти позже, бот снова отправит вам капчу
Админы канала никак не могут ускорить процесс, бот автоматически снимает с вас блокировку через пару минут. Мы понимаем, что эта система неидеальна, и ищем более удобное решение.
👾 Спасибо, что активно участвуете в обсуждении наших постов!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4😁1
⚙️ Как сделать select с таймаутом
Чтобы не ждать данные в select бесконечно нужно реализовать таймаут. В Go сделать это можно несколькими способами:
1️⃣ Использование
Подходит для простых случаев, но создает новую time.After при каждом вызове.
2️⃣ Использование
3️⃣ Использование
В отличие от time.After, NewTimer можно сбрасывать timer.Reset(duration), если нужно обновить таймаут.
4️⃣ Использование
Подходит для ожидания с периодической проверкой состояния.
5️⃣ Принудительное завершение через
Полезно, когда нужно дождаться завершения другой горутины, но не бесконечно.
Каждый из этих вариантов хорош в своей ситуации. Какой из них вам больше подходит?💬
🐸 Библиотека Go разработчика #буст
Чтобы не ждать данные в select бесконечно нужно реализовать таймаут. В Go сделать это можно несколькими способами:
time.After
Подходит для простых случаев, но создает новую time.After при каждом вызове.
select {
case msg := <-ch:
fmt.Println("Получено:", msg)
case <-time.After(2 * time.Second):
fmt.Println("Таймаут!")
}
context.WithTimeout
Можно передавать ctx в функции, что удобно для управления таймаутами в API-запросах или базах данных.ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)
defer cancel()
select {
case msg := <-ch:
fmt.Println("Получено:", msg)
case <-ctx.Done():
fmt.Println("Таймаут:", ctx.Err())
}
time.NewTimer
В отличие от time.After, NewTimer можно сбрасывать timer.Reset(duration), если нужно обновить таймаут.
timer := time.NewTimer(2 * time.Second)
defer timer.Stop()
select {
case msg := <-ch:
fmt.Println("Получено:", msg)
case <-timer.C:
fmt.Println("Таймаут!")
}
ticker
для периодического опроса с таймаутомПодходит для ожидания с периодической проверкой состояния.
ticker := time.NewTicker(500 * time.Millisecond)
defer ticker.Stop()
timeout := time.After(2 * time.Second)
for {
select {
case msg := <-ch:
fmt.Println("Получено:", msg)
return
case <-ticker.C:
fmt.Println("Ожидание...")
case <-timeout:
fmt.Println("Таймаут!")
return
}
}
select
с done
каналомПолезно, когда нужно дождаться завершения другой горутины, но не бесконечно.
done := make(chan struct{})
go func() {
time.Sleep(3 * time.Second)
close(done)
}()
select {
case msg := <-ch:
fmt.Println("Получено:", msg)
case <-done:
fmt.Println("Горутина завершена, но данных нет.")
case <-time.After(2 * time.Second):
fmt.Println("Таймаут!")
}
Каждый из этих вариантов хорош в своей ситуации. Какой из них вам больше подходит?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥28⚡3👍3😁2
Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate
🧩💊 Алгоритмическая самоуспокоенность: как мы разучились думать своей головой
Каждый день мы сталкиваемся с бесконечным потоком информации, которая не просто наполняет наш день, а управляет нашими мыслями. Социальные сети, алгоритмы и вечная гонка за вниманием приводят к тому, что мы забываем, как думать собственной головой.
Это не просто влияет на настроение, но и на способность анализировать информацию, принимать решения и, главное, не становиться частью системы манипуляций.
Если вы хотите вернуться к осознанному подходу в восприятии мира и научиться фильтровать контент, то эта тема точно для вас.
🔗 Подробнее в статье
🐸 Библиотека джависта
Каждый день мы сталкиваемся с бесконечным потоком информации, которая не просто наполняет наш день, а управляет нашими мыслями. Социальные сети, алгоритмы и вечная гонка за вниманием приводят к тому, что мы забываем, как думать собственной головой.
Это не просто влияет на настроение, но и на способность анализировать информацию, принимать решения и, главное, не становиться частью системы манипуляций.
Если вы хотите вернуться к осознанному подходу в восприятии мира и научиться фильтровать контент, то эта тема точно для вас.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1😁1
📔 Промт дня: компилятор с объяснениями
Вы когда-нибудь задумывались, что делает Go-компилятор с вашим кодом на самом деле? Этот промт детально разберёт процесс компиляции, покажет шаги оптимизации и объяснит, почему финальный бинарник получился таким, а не иначе:
Какими промтами пользуетесь вы? Делитесь в комментариях👇
🐸 Библиотека Go разработчика #буст
Вы когда-нибудь задумывались, что делает Go-компилятор с вашим кодом на самом деле? Этот промт детально разберёт процесс компиляции, покажет шаги оптимизации и объяснит, почему финальный бинарник получился таким, а не иначе:
You are an expert Go compiler, known for your deep understanding of the Go programming language and your ability to efficiently compile Go code. Your goal is to take a given Go program and compile it, optimizing the output for performance and efficiency.
Here is the format you will use to compile the Go code and provide recommendations:
---
## Compilation Process
Describe the steps you would take to compile the provided Go code, including any optimizations or techniques you would use.
## Compiled Output
Provide the compiled output of the Go code, including any relevant information such as file size, execution time, or memory usage.
---
Какими промтами пользуетесь вы? Делитесь в комментариях👇
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🌚2
🚧 Неочевидные грабли в Go – когда всё кажется простым
Go прославился своей лаконичностью, прямолинейностью и минимализмом. Вы пишете код, компилируете – и вроде бы всё отлично. Но как часто случалось, что в простом коде прятались ловушки, которые потом отомстили в самый неподходящий момент?
Делитесь в комментариях своими историями о том, как вы наступали на неочевидные грабли в Go:
— Когда код, казалось бы, логичен и чист, вдруг начал вести себя странно.
— Ситуации, когда гонки данных или неправильное использование горутин приводили к неожиданным результатам.
— Казалось бы, безопасный map вдруг решил устроить вечеринку из-за отсутствия синхронизации.
Начнём с нашего админа:
🐸 Библиотека Go разработчика #междусобойчик
Go прославился своей лаконичностью, прямолинейностью и минимализмом. Вы пишете код, компилируете – и вроде бы всё отлично. Но как часто случалось, что в простом коде прятались ловушки, которые потом отомстили в самый неподходящий момент?
Делитесь в комментариях своими историями о том, как вы наступали на неочевидные грабли в Go:
— Когда код, казалось бы, логичен и чист, вдруг начал вести себя странно.
— Ситуации, когда гонки данных или неправильное использование горутин приводили к неожиданным результатам.
— Казалось бы, безопасный map вдруг решил устроить вечеринку из-за отсутствия синхронизации.
Начнём с нашего админа:
Завернул обработку запросов в горутину, тесты проходят, ошибок нет. Выкатываем в прод – а часть запросов просто исчезает. Долго разбирался, пока не осознал: главная функция завершалась раньше, чем отрабатывали горутины, и они просто не успевали исполниться.
Теперь всегда использую sync.WaitGroup
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13😁5
Чтобы наслаждаться отчётом о покрытии тестами, сделайте три простых шага:
1. Устанавливаем gocov и gocov-html:
go install github.com/axw/gocov/gocov@latest
go install github.com/matm/gocov-html@latest
2. Генерируем покрытие тестами:
go test -coverprofile=coverage.out ./...
3. Преобразуем в красивый отчёт:
gocov convert coverage.out | gocov-html > coverage.html
Теперь открываем coverage.html в браузере —
и видим, что покрыто, а что — нет.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥4❤1
Forwarded from Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
📉🤦 152 000 уволенных в IT за год: кому это помогло?
Корпоративная бензопила снова в деле: каждый месяц 2 миллиона американцев теряют работу из-за сокращений. Но действительно ли это помогает компаниям?
🔗 Читать статью
Корпоративная бензопила снова в деле: каждый месяц 2 миллиона американцев теряют работу из-за сокращений. Но действительно ли это помогает компаниям?
🔗 Читать статью
😁4❤1👍1😢1🥱1
Please open Telegram to view this post
VIEW IN TELEGRAM
😁18🤔3❤🔥2👍1
👀 Тест на внимательность
Задача простая — слова зашифрованы по горизонтали. Не все из них относятся к Go, но каждое точно знакомо настоящему программисту
💬 Пишите в комментариях, сколько слов удалось найти, и делитесь своим списком под спойлером
🐸 Библиотека Go разработчика #междусобойчик
Задача простая — слова зашифрованы по горизонтали. Не все из них относятся к Go, но каждое точно знакомо настоящему программисту
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱20👍4🌚4👾1
📰 Дайджест новостей за неделю
Собрали всё важное, чтобы вы могли пропустить. Без
🔄 Go-сервис для GitHub-данных
Простой пример, как на Go сделать REST-сервис, который тянет данные из GitHub. Под капотом: чистая архитектура, PostgreSQL, docker-compose.
🆕 Git 2.49.0
Новые фичи, чистка кода и подготовка к Git 3.0.
📙 Книга про управление в IT
Как стать техлидом без «начальства», влиять на стратегию и архитектуру, поднимать команду и при этом самому расти в глубину
👈 Ловим сравнение указателей
В Go легко случайно сравнить указатели на строки
🐸 Библиотека Go разработчика #свежак
Собрали всё важное, чтобы вы могли пропустить. Без
nil
, без panic()
, только конкретика — строго по gofmt'у
.🔄 Go-сервис для GitHub-данных
Простой пример, как на Go сделать REST-сервис, который тянет данные из GitHub. Под капотом: чистая архитектура, PostgreSQL, docker-compose.
🆕 Git 2.49.0
Новые фичи, чистка кода и подготовка к Git 3.0.
📙 Книга про управление в IT
Как стать техлидом без «начальства», влиять на стратегию и архитектуру, поднимать команду и при этом самому расти в глубину
👈 Ловим сравнение указателей
В Go легко случайно сравнить указатели на строки
(*a == *b)
вместо самих строк. Такая ошибка не упадёт, но может привести к тихим багам.Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥2😁2❤1
Forwarded from Библиотека Go для собеса | вопросы с собеседований
В Go планирование горутин
В Go есть три
M
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🌚3❤2
🧐 Обратная связь после собеседования
Наш подписчик рассказал любопытную историю:
📊 Давайте устроим небольшой опрос: нужна вам обратная связь после собеса? И если да — какая именно? Пишите в комментарии👇
Напоминаем, вы можете спросить сообщество библиотеки Go и не только! Самые интересные вопросы обязательно опубликуем.
🐸 Библиотека Go разработчика #междусобойчик
Наш подписчик рассказал любопытную историю:
У нас стало заметно больше кандидатов, которые просят расширенную обратную связь после собеседований. Некоторые чуть ли не претензии высказывают в ответ на отказ, а один даже собирался идти в суд — мол, прошёл пару туров, значит должен был получить оффер. Эйчары в шоке.
📊 Давайте устроим небольшой опрос: нужна вам обратная связь после собеса? И если да — какая именно? Пишите в комментарии👇
Напоминаем, вы можете спросить сообщество библиотеки Go и не только! Самые интересные вопросы обязательно опубликуем.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Forwarded from Библиотека шарписта | C#, F#, .NET, ASP.NET
💾 Как выбрать стратегию кэширования: разбор 7 популярных алгоритмов
Кешировать нужно с умом. И нет, LRU — не серебряная пуля.
В статье вас ждёт разбор алгоритмов: LRU, LFU, FIFO, ARC и другие
– Примеры, где каждый работает лучше
– Плюсы и минусы подходов
– Практические советы по выбору стратегии
Если проектируете систему с большими нагрузками или оптимизируете производительность — материал будет как раз.
➡️ Читать статью
🐸 Библиотека шарписта
Кешировать нужно с умом. И нет, LRU — не серебряная пуля.
В статье вас ждёт разбор алгоритмов: LRU, LFU, FIFO, ARC и другие
– Примеры, где каждый работает лучше
– Плюсы и минусы подходов
– Практические советы по выбору стратегии
Если проектируете систему с большими нагрузками или оптимизируете производительность — материал будет как раз.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🤔2😢2
🛠 Event-Driven архитектура в Go
EDA (Event-Driven Architecture) — это когда каждый компонент системы живёт своей жизнью и просто «подслушивает» интересные ему события. Если сервисы общаются через REST и вы уже устали от retry-логики, timeouts и других прелестей — добро пожаловать в мир событий.
➖ Как это сделать
Самый простой метод всего в три шага — это использовать NATS:
1. Установка NATS (через Docker)
2. Подписка на событие
3. Публикация события
Событийно-ориентированная архитектура — это не модный хайп, а здравый подход для гибких систем.
➡️ Подробнее про реализацию
🐸 Библиотека Go разработчика #буст
EDA (Event-Driven Architecture) — это когда каждый компонент системы живёт своей жизнью и просто «подслушивает» интересные ему события. Если сервисы общаются через REST и вы уже устали от retry-логики, timeouts и других прелестей — добро пожаловать в мир событий.
Самый простой метод всего в три шага — это использовать NATS:
1. Установка NATS (через Docker)
docker run -d --name nats -p 4222:4222 nats:latest
2. Подписка на событие
nc, _ := nats.Connect(nats.DefaultURL)
nc.Subscribe("user.created", func(m *nats.Msg) {
fmt.Printf("Новое событие: %s\n", string(m.Data))
})
select {} // держим соединение открытым
3. Публикация события
nc, _ := nats.Connect(nats.DefaultURL)
nc.Publish("user.created", []byte("Пользователь создан: ID=123"))
Событийно-ориентированная архитектура — это не модный хайп, а здравый подход для гибких систем.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🥱7🔥5❤3