Загляните в репозиторий! Это небольшой сборник увлекательных задачек для всех, кто хочет изучать или совершенствовать свои навыки программирования на языке Go.
📂 Как всё устроено?
Каждая задача – это отдельная папка с:
🛠 Что делать?
Please open Telegram to view this post
VIEW IN TELEGRAM
👏17👍4
🎮 DOOM как искусство? Да!
Вы когда-нибудь думали, что DOOM — это не просто игра, а настоящее искусство? Если нет, то "DOOM: The Gallery Experience" вас переубедит.
🖼 Что это?
Это необычная галерея, где уровни культового шутера превращены в экспонаты. Вас ждёт прогулка по знакомым аренам, но теперь вместо демонов — атмосфера спокойствия и эстетики. Звучит абсурдно? Возможно. Но выглядит невероятно!
✨ Чем цепляет?
Ретро-дизайн DOOM сочетается с музейной атмосферой.
Музыка и освещение создают уютное ощущение — никакого стресса, только удовольствие.
Каждый уголок можно рассматривать как арт-объект, а не поле боя.
Вы когда-нибудь думали, что DOOM — это не просто игра, а настоящее искусство? Если нет, то "DOOM: The Gallery Experience" вас переубедит.
🖼 Что это?
Это необычная галерея, где уровни культового шутера превращены в экспонаты. Вас ждёт прогулка по знакомым аренам, но теперь вместо демонов — атмосфера спокойствия и эстетики. Звучит абсурдно? Возможно. Но выглядит невероятно!
Ретро-дизайн DOOM сочетается с музейной атмосферой.
Музыка и освещение создают уютное ощущение — никакого стресса, только удовольствие.
Каждый уголок можно рассматривать как арт-объект, а не поле боя.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6
📦 Пакет embed в Go
Если вы когда-либо работали с Go, то знаете, как важно уметь управлять статическими ресурсами. Пакет embed (представленный в Go 1.16) решает эту задачу элегантно: он позволяет встраивать файлы прямо в исполняемый бинарный файл, что делает приложение автономным и упрощает его развертывание.
💡 Зачем использовать embed?
С помощью директивы //go:embed вы можете встроить файлы (например, HTML, CSS, конфигурационные файлы или изображения) прямо в бинарный файл. Это исключает необходимость поставлять эти файлы отдельно, и ваши приложения становятся более компактными и безопасными.
🛠 Как это работает?
Вы указываете директиву //go:embed перед переменной.
Используете типы данных string для текстовых файлов, []byte для бинарных данных или embed.FS для работы с целыми директориями.
🚀 Пример использования:
В этом примере файл hello.txt встроен в приложение, и его содержимое доступно как строка.
Почему стоит использовать embed?
✅ Удобство развертывания: всё в одном файле — не нужно беспокоиться о поставке отдельных файлов.
✅ Безопасность: встроенные файлы не могут быть изменены после компиляции.
✅ Автономность: ваши приложения не зависят от внешних файлов и легко переносятся между окружениями.
Когда не стоит использовать embed?
❌ Когда нужно работать с динамически изменяющимися файлами (например, конфигурациями, которые могут меняться в процессе работы приложения).
❌ Для очень больших файлов, так как это увеличивает размер бинарника.
Если вы когда-либо работали с Go, то знаете, как важно уметь управлять статическими ресурсами. Пакет embed (представленный в Go 1.16) решает эту задачу элегантно: он позволяет встраивать файлы прямо в исполняемый бинарный файл, что делает приложение автономным и упрощает его развертывание.
С помощью директивы //go:embed вы можете встроить файлы (например, HTML, CSS, конфигурационные файлы или изображения) прямо в бинарный файл. Это исключает необходимость поставлять эти файлы отдельно, и ваши приложения становятся более компактными и безопасными.
🛠 Как это работает?
Вы указываете директиву //go:embed перед переменной.
Используете типы данных string для текстовых файлов, []byte для бинарных данных или embed.FS для работы с целыми директориями.
🚀 Пример использования:
package main
import (
"embed"
"fmt"
)
//go:embed hello.txt
var hello string
func main() {
fmt.Println(hello)
}
В этом примере файл hello.txt встроен в приложение, и его содержимое доступно как строка.
Почему стоит использовать embed?
Когда не стоит использовать embed?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍36👾3
Привет! 👋
Очень интересно: читаете ли вы что-то, кроме технической литературы? И нет, книги по agile не в счёт — это точно не сказки!
👇Пишите свои мнения в комментарии!
#интерактив
Очень интересно: читаете ли вы что-то, кроме технической литературы? И нет, книги по agile не в счёт — это точно не сказки!
👇Пишите свои мнения в комментарии!
#интерактив
Please open Telegram to view this post
VIEW IN TELEGRAM
😁10
То есть, остаются только те элементы, которые следуют друг за другом по возрастанию (или не уменьшаются). Применяя такую сортировку, можно получить на выходе подпоследовательность чисел, которая будет упорядочена, а все «недовольные» (нарушающие порядок) будут удалены.
Как работает «сортировка»?
Please open Telegram to view this post
VIEW IN TELEGRAM
😁52🔥3🤔3👍2❤1
📝 NoCopy Convention в Go: оптимизация работы с памятью
❓ В языке Go копирование данных — это стандартное поведение при передаче значений в функции или присваивании. Однако, для больших структур или объектов, это может быть неэффективно и повлиять на производительность.
↗️ Конвенция NoCopy советует передавать большие структуры или массивы по указателю, а не по значению. Это позволяет работать с данными без их излишнего копирования, экономя память и улучшая производительность.
Например, если у вас есть большая структура, передавайте её как указатель в функцию, чтобы избежать создания копий.
🤩 Этот подход полезен в случае, когда требуется эффективно управлять памятью и ускорить выполнение программы. Но важно помнить о возможных рисках, например, необходимости контроля за нулевыми указателями.
👉 Для более подробного объяснения и примеров, загляните в статью
Например, если у вас есть большая структура, передавайте её как указатель в функцию, чтобы избежать создания копий.
👉 Для более подробного объяснения и примеров, загляните в статью
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱17😢5👾3😁2🤔2
Техника проверки if got != want { t.Errorf(...) } в тестах Go — это простой и эффективный способ проверки значений, который полностью соответствует философии языка. Она не требует сторонних библиотек, остаётся прозрачной и легко читаемой, что особенно важно для минималистичного и понятного кода.
Благодаря своей простоте, этот подход легко масштабируется: от проверки одного значения до сложных сценариев с таблицами тестирования. Кроме того, стандартный вывод ошибок в Go обычно достаточно информативен, чтобы быстро понять, что пошло не так.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18😁12
🔄 Помните сортировку Сталина? Встречайте милосердную версию!
Недавно наткнулись на интересный проект — MercifulStalinSort. Если помните, в сортировке Сталина элементы, нарушающие порядок, безжалостно удаляются. Итог — массив вроде бы отсортирован, но какой ценой?😅
Милосердный Сталин идёт другим путём:
🔸 Забираем из основного массива элементы, которые стоят не по возрастанию
🔸 Затем из дополнительного массива в обратном порядке забираем те элементы, которые стоят не по убыванию
🔸 После чего нужно просто объединить получившиеся массивы. Если остались неотсортированные элементы, то обработать их рекурсивно
Идея проста, но алгоритм получился намного более «сострадательным», сохраняя больше данных. Конечно, это больше про эксперимент и юмор, чем про реальную производительность, но попробовать его в деле — уже весело!
Недавно наткнулись на интересный проект — MercifulStalinSort. Если помните, в сортировке Сталина элементы, нарушающие порядок, безжалостно удаляются. Итог — массив вроде бы отсортирован, но какой ценой?
Милосердный Сталин идёт другим путём:
🔸 Забираем из основного массива элементы, которые стоят не по возрастанию
🔸 Затем из дополнительного массива в обратном порядке забираем те элементы, которые стоят не по убыванию
🔸 После чего нужно просто объединить получившиеся массивы. Если остались неотсортированные элементы, то обработать их рекурсивно
Идея проста, но алгоритм получился намного более «сострадательным», сохраняя больше данных. Конечно, это больше про эксперимент и юмор, чем про реальную производительность, но попробовать его в деле — уже весело!
Please open Telegram to view this post
VIEW IN TELEGRAM
😁10👍5🤔2🌚2❤1
Echo — это высокопроизводительный и простой в использовании веб-фреймворк, созданный для разработки приложений на языке Go. Его минимализм, гибкость и богатый набор функций делают Echo популярным выбором для создания REST API, микросервисов и веб-приложений.
Ключевые особенности Echo:
e.GET("/users/:id", getUser)
e.POST("/users", createUser)
Пример Hello World с использованием Echo:
func main() {
e := echo.New()
e.GET("/", func(c echo.Context) error {
return c.String(http.StatusOK, "Hello, World!")
})
e.Logger.Fatal(e.Start(":8080"))
}
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱32👍15🥰2😁1
🔧✨ Go: Структуры, интерфейсы и внедрение зависимостей – проще, чем кажется!
Если вы разрабатываете на Go и хотите писать гибкий, чистый и тестируемый код, то понимание структур, интерфейсов и внедрения зависимостей станет отличным навыком. Статья подробно объясняет, как использовать эти возможности языка для создания устойчивой архитектуры.
🛠 Что вы узнаете?
🔠 Структуры: как моделировать реальные данные с помощью полей и методов.
🔠 Интерфейсы: как задавать контракты между типами и отделять детали реализации от общей логики.
🔠 Внедрение зависимостей: как сделать ваш код модульным и тестируемым, передавая зависимости через параметры конструктора или функции.
💡 Почему это важно?
➖ Гибкость: интерфейсы позволяют заменить реальные зависимости на моки, что упрощает тестирование.
➖ Удобство изменений: структура кода остаётся простой при добавлении новых функций.
➖ Производительность: Go минималистичен, и внедрение зависимостей здесь проще, чем в других языках.
Если вы разрабатываете на Go и хотите писать гибкий, чистый и тестируемый код, то понимание структур, интерфейсов и внедрения зависимостей станет отличным навыком. Статья подробно объясняет, как использовать эти возможности языка для создания устойчивой архитектуры.
🛠 Что вы узнаете?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤1
🚀 Go 1.24: Главные обновления!
В февральском релизе Go 1.24 разработчики приготовили массу улучшений:
💡 Новое в языке
➖ Generic'и: go теперь поддерживает обобщенные псевдонимы типов: псевдоним типа может быть параметризован так же, как определенный тип
🛠 Инструменты
➖ Директива tool в go.mod: для учёта инструментов без лишнего кода.
➖ Кэширование go run: ускоряет повторные запуски.
➖ JSON-вывод для go build/install.
➖ Поддержка версий модулей в бинарниках.
⚡️ Производительность
➖ Карты (map) с Swiss Tables: до 3% прироста скорости.
🧹 Среда выполнения
➖ Новая финализация: runtime.AddCleanup заменяет SetFinalizer.
📚 Библиотеки
➖ Слабые ссылки: новый пакет weak.
➖ Постквантовая криптография: пакет crypto/mlkem.
➖ Ограничение файловой системы: тип os.Root.
🔍 Инструменты анализа
➖ vet ловит больше ошибок в тестах и printf.
Позже, с выходом полноценного релиза, разберёмся подробнее!
#новость
В февральском релизе Go 1.24 разработчики приготовили массу улучшений:
🛠 Инструменты
⚡️ Производительность
🧹 Среда выполнения
📚 Библиотеки
🔍 Инструменты анализа
Позже, с выходом полноценного релиза, разберёмся подробнее!
#новость
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥36👍23❤7🤔5🥱4
Forwarded from Библиотека пхпшника | PHP, Laravel, Symfony, CodeIgniter
👔💼 Как ответить на собеседовании, почему вы уволились с прошлого места работы: 9 вариантов ответа
А также примеры того, как говорить точно не надо 🌚
👉Читать
А также примеры того, как говорить точно не надо 🌚
👉Читать
🥱6👍1
❗️Typinghackers.com - платформа для тренировки скоростной или слепой печати. Тренируйтесь на стандартных шаблонах кода или известных библиотеках.
Платформа развивается, в будущем ожидается больше упражнений и языков.
👇Давайте померяемся рекордами по Hello World в комментариях!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17🥱7🤔4❤2🎉1
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
Азбука айтишника — здесь мы познаем азы из мира программирования
🤖Про нейросети
Библиотека робототехники и беспилотников | Роботы, ИИ, интернет вещей
Библиотека нейрозвука | Транскрибация, синтез речи, ИИ-музыка
Библиотека нейротекста | ChatGPT, Gemini, Bing
Библиотека нейровидео | Sora AI, Runway ML, дипфейки
Библиотека нейрокартинок | Midjourney, DALL-E, Stable Diffusion
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Книги для джавистов | Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
Библиотека разработчика игр | Gamedev, Unity, Unreal Engine
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
🌚2👍1👏1👾1
Недавно команда Prayershub поделилась своим опытом, как они смогли сократить 335 строк шаблонного, избыточного кода, перейдя на более лёгкий и элегантный инструмент — Podio.
Прежде чем внедрить Podio, команда использовала FFmpeg для обработки аудио. Это привело к следующим проблемам:
Podio — это Go-пакет, созданный специально для работы с аудио. Его ключевая особенность — Fluent API, который делает код минималистичным и читаемым. Вместо громоздких вызовов FFmpeg вы пишете понятные цепочки вызовов методов.
Команда Prayershub поделилась результатами перехода на Podio:
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3😁2🤔2🥱1
В версии Go 1.24, запланированной к выпуску в феврале 2025 года, будет введена полная поддержка обобщённых (generic) псевдонимов типов. Это означает, что теперь псевдонимы типов могут быть параметризованы так же, как и определённые типы, что значительно расширяет возможности для написания более гибкого и повторно используемого кода.
Псевдонимы типов позволяют создавать альтернативные имена для существующих типов без создания новых типов. Это полезно для улучшения читаемости кода и упрощения рефакторинга. До версии Go 1.24 псевдонимы типов не могли быть параметризованы, что ограничивало их применение в обобщённом программировании.
С введением обобщённых псевдонимов типов в Go 1.24 разработчики могут создавать параметризованные псевдонимы, что упрощает рефакторинг и поддержку кода. Например, если у вас есть обобщённый тип в одном пакете, вы можете создать его псевдоним в другом пакете, сохраняя совместимость и улучшая структуру проекта.
Предположим, в пакете oldpkg определён обобщённый тип Pair:
package oldpkg
type Pair[T any] struct {
First T
Second T
}
В Go 1.24 вы можете создать обобщённый псевдоним этого типа в новом пакете newpkg:
package newpkg
import "path/to/oldpkg"
type Pair[T any] = oldpkg.Pair[T]
Теперь newpkg.Pair является псевдонимом для oldpkg.Pair и может использоваться аналогично, что облегчает миграцию и рефакторинг кода.
На момент выпуска Go 1.24 поддержка обобщённых псевдонимов типов может быть отключена с помощью установки переменной окружения GOEXPERIMENT=noaliastypeparams. Однако в версии Go 1.25 эта опция будет удалена, и функция станет стандартной частью языка.
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔18👏7🎉5👍3❤🔥1
Мы ищем участников для интервью на тему «Обучение навыкам в IT»!
Кто нам нужен?
Что вас ждет?
Участие в интервью по Zoom, которое займет не больше 45 минут.
Уникальный шанс пообщаться с нашим CEO!
Как откликнуться?
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
🌟 Привет, Go-сообщество!
Во время кодинга у каждого свой способ оставаться в потоке: кто-то слушает музыку, кто-то смотрит сериалы, а кто-то работает в полной тишине.
👇Что помогает вам? Рекомендуйте свои фавориты в комментариях!
#интерактив
Во время кодинга у каждого свой способ оставаться в потоке: кто-то слушает музыку, кто-то смотрит сериалы, а кто-то работает в полной тишине.
👇Что помогает вам? Рекомендуйте свои фавориты в комментариях!
#интерактив
🥱5👍1👏1