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
Sharding — это стратегия горизонтального масштабирования, которая разбивает данные на сегменты («шарды») таким образом, чтобы каждая часть хранилась отдельно и обрабатывалась независимо.
В контексте распределённого кэша, шардинг используется для разделения данных между несколькими узлами с целью:
При шардинге каждый ключ привязывается к определённому узлу на основе функции хэширования. Алгоритм хэширования принимает ключ (например, строку) и возвращает число, которое определяет, на какой узел будут записаны или считаны данные.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🥱1
Этот Gron — инструмент командной строки, который превращает JSON в плоский, читаемый формат, удобный для поиска и фильтрации
Пример JSON:
{
"user": {
"name": "Alice",
"languages": ["Go", "Python"]
}
}
После обработки Gron:
json = {};
json.user = {};
json.user.name = "Alice";
json.user.languages = [];
json.user.languages[0] = "Go";
json.user.languages[1] = "Python";
Теперь легко искать данные через grep, например:
gron data.json | grep "languages"
Где применить: анализ API-ответов, работа с JSON-файлами в терминале.
Второй Gron — это библиотека для написания и запуска cron job-ов в Go с минималистичным интерфейсом. Она предлагает простой и гибкий API для задания расписаний, управления задачами и настройки пользовательских типов заданий.
Основные возможности:
Простое создание периодических расписаний (Every).
Поддержка расписаний на уровне дня, недели, месяца.
Определение задач через интерфейс gron.Job.
Возможность выполнения задач асинхронно.
Настройка времени запуска через метод .At(hh:mm).
Возможность использовать кастомные расписания.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🥱6
Причины случайного порядка в map:
Go использует хэш-таблицу для хранения данных в map. Элементы сохраняются по хэшированным ключам, и их порядок в памяти зависит от того, как хэш-функция распределяет данные. Это позволяет обеспечить:
Оптимальное использование памяти.
Защита от зависимости от порядка
Если бы порядок был фиксированным, программисты могли бы начать на него полагаться, что привело бы к сложным багам при изменении реализации map. Случайность в порядке обхода вынуждает писать код, который явно не зависит от этого порядка.
Go намеренно перемешивает порядок элементов в map между запусками программы. Это делает сложнее предсказать хэш-функцию и эксплуатировать уязвимости, связанные с предсказуемым порядком.
Гарантированный порядок потребовал бы дополнительной логики в реализации map, что увеличило бы сложность кода рантайма и ухудшило производительность.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22❤4👏1
🛠🐹 Что такое линтеры в Go и зачем они нужны
Если вы пишете код на Go, наверняка хотите, чтобы он был качественным, понятным и поддерживаемым. Здесь на помощь приходят линтеры — инструменты, которые анализируют ваш код и подсказывают, как его улучшить.
Что делает линтер?
Линтер проверяет код на:
✅ Ошибки стиля (например, неправильные имена переменных).
✅ Потенциальные баги (неиспользуемые переменные, забытые defer).
✅ Неоптимальный код (лишние вычисления, неэффективные алгоритмы).
✅ Соответствие стандартам (следование Go Code Review Comments).
Популярные линтеры для Go:
➖ golint — проверяет стиль кода, соответствие рекомендациям Go (устарел, но до сих пор используется).
➖ staticcheck — мощный инструмент для обнаружения багов и улучшения кода.
➖ golangci-lint — удобный инструмент, объединяющий несколько линтеров. Поддерживает кастомизацию и интеграцию с CI.
➖ errcheck — проверяет, обрабатываете ли вы ошибки из функций.
➖ gosec — находит уязвимости в коде (например, небезопасные вызовы).
➖ revive — современный, быстрый линтер, который заменяет golint.
🐸 Библиотека Go разработчика
Если вы пишете код на Go, наверняка хотите, чтобы он был качественным, понятным и поддерживаемым. Здесь на помощь приходят линтеры — инструменты, которые анализируют ваш код и подсказывают, как его улучшить.
Что делает линтер?
Линтер проверяет код на:
Популярные линтеры для Go:
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9🥱5❤2👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5
Если вы пишете на Go, скорее всего, вы знакомы с его минималистичным, но мощным подходом. Goroutines, каналы, лаконичный синтаксис – это то, что делает язык незаменимым для высоконагруженных систем и микросервисов. Но вот вы заходите на LeetCode и сталкиваетесь с задачей: «Найти k-й по величине элемент в массиве».
Давайте разберемся, так ли нужна вам такая головоломка.
❓Почему стоит попробовать?
Go абстрагирует многие низкоуровневые детали, но это не значит, что они не важны. Решение задач заставляет углубляться в такие детали. Вы не просто пишете код – вы понимаете, что стоит за ним.
В реальных задачах вы часто сталкиваетесь с багами из-за некорректной работы с горутинами. Задачи, связанные с многопоточностью, дают шанс разобраться, как правильно использовать каналы и синхронизацию данных.
На собеседованиях вас почти наверняка попросят решить пару задач на алгоритмы. LeetCode – отличный тренажер, чтобы не ударить в грязь лицом.
➖Go – это не академия алгоритмов
Если вы работаете над реальным продуктом, вам не нужно каждый день искать минимальное остовное дерево или реализовывать сложные структуры данных. Вместо того чтобы писать свой бинарный поиск, вы просто используете sort.Search.
➖Реальная разработка – это не про задачи
Go-разработчику лучше сосредоточиться на проектировании микросервисов, оптимизации REST API или настройке CI/CD. Это то, что реально поможет вам стать ценным сотрудником.
➖Потенциальная ловушка перфекционизма
Вы пытаетесь улучшить время работы своей программы, хотя это не имеет значения в реальных условиях. В реальных проектах важнее качество кода и его читабельность, а не сокращение выполнения алгоритма с O(n²) до O(n log n).
Please open Telegram to view this post
VIEW IN TELEGRAM
💯24👍9👏6🌚3😢1
Компания JetBrains объявила о запуске программы раннего доступа (EAP) для GoLand. В этом выпуске основное внимание уделяется следующим улучшениям:
Первую сборку EAP можно загрузить через Toolbox App, с официального сайта или в виде snap-пакета для Ubuntu. Также доступно обновление из самой GoLand через настройки обновлений.
Please open Telegram to view this post
VIEW IN TELEGRAM
😁12👍5❤3🥱3
Структуры данных без блокировок
Lock-Free структуры данных — это конструкции, обеспечивающие многопоточный доступ к данным без использования блокировок (мьютексов). Вместо этого они используют атомарные операции, такие как Compare-And-Swap (CAS). Это позволяет минимизировать задержки, устранить deadlock и повысить производительность в конкурентной среде.
Зачем они нужны?
➡️ Высокая производительность: нет затрат на ожидание блокировок.
➡️ Отсутствие deadlock: исключение взаимоблокировок.
➡️ Скалируемость: отлично работают при высокой конкуренции потоков.
Основные инструменты в Go
➖ Пакет sync/atomic:
Атомарные операции для целых чисел, указателей и других типов.
Пример:
➖ CAS (Compare-And-Swap):
Обновляет значение только если текущее равно ожидаемому. Это основа большинства Lock-Free алгоритмов.
🐸 Библиотека Go разработчика
Lock-Free структуры данных — это конструкции, обеспечивающие многопоточный доступ к данным без использования блокировок (мьютексов). Вместо этого они используют атомарные операции, такие как Compare-And-Swap (CAS). Это позволяет минимизировать задержки, устранить deadlock и повысить производительность в конкурентной среде.
Зачем они нужны?
Основные инструменты в Go
Атомарные операции для целых чисел, указателей и других типов.
Пример:
atomic.AddInt32(&counter, 1)
// Увеличение
atomic.CompareAndSwapInt32(&counter, old, new)
// Сравнить и заменить
Обновляет значение только если текущее равно ожидаемому. Это основа большинства Lock-Free алгоритмов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🎉1