Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
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 запрещена на территории РФ
📊 Как себя чувствует IT-рынок в 2025 году?
Друзья, запускаем важное исследование рынка труда в IT!
Нам очень важно понять:
• Как изменились зарплаты
• Что происходит с наймом
• Есть ли сокращения или рост
🔐 Опрос полностью анонимный
⏱️ Займёт всего 3-5 минут
📈 Результаты опубликуем в подробной статье
Ваши ответы помогут составить реальную картину происходящего в индустрии.
👉 Пройти опрос
Друзья, запускаем важное исследование рынка труда в IT!
Нам очень важно понять:
• Как изменились зарплаты
• Что происходит с наймом
• Есть ли сокращения или рост
🔐 Опрос полностью анонимный
⏱️ Займёт всего 3-5 минут
📈 Результаты опубликуем в подробной статье
Ваши ответы помогут составить реальную картину происходящего в индустрии.
👉 Пройти опрос
Компания Dagger решила сделать смелый шаг — полностью заменить фронтенд на React с TypeScript на Go с WebAssembly.
Почему отказались от React
• Две кодовые базы (TypeScript для фронтенда и Go для бекенда) замедляли разработку и усложняли поддержку.
• Несогласованность логики: приходилось дублировать бизнес-логику между Go и TypeScript.
• Зависимость от фронтенд-стека: сложности в поиске разработчиков с опытом React.
Как реализовали новый интерфейс
1. Использовали Go-app — фреймворк для создания PWA на Go.
2. Перенесли бизнес-логику из React в Go, избегая двойного кода.
3. Настроили сборку под WebAssembly для запуска Go-кода прямо в браузере
В результате время выпуска новых фич сократилось на треть.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20⚡5👾4👍3🎉2
😳 Если бы языки программирования были девушками
Выбрать язык — всё равно что найти идеального партнера. Кто-то западает на строгую типизацию, кто-то ищет простоту и гибкость, а некоторые готовы углубиться в самые сложные алгоритмы отношений.
Мы заглянули в Тиндер разработчика и нашли там Go. Как вам? 😏
Еще большепрекрасных дам языков программирования — в нашем канале Библиотека программиста.
Свайпайте и выбирайте свой мэтч ❤️
🐸 Библиотека Go разработчика
Выбрать язык — всё равно что найти идеального партнера. Кто-то западает на строгую типизацию, кто-то ищет простоту и гибкость, а некоторые готовы углубиться в самые сложные алгоритмы отношений.
Мы заглянули в Тиндер разработчика и нашли там Go. Как вам? 😏
Еще больше
Свайпайте и выбирайте свой мэтч ❤️
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10🥱5😢3🥰1
🛠 CQRS и паттерн «Репозиторий»
Перепутанные SQL-запросы, сложный рефакторинг и отсутствие тестируемости — частые проблемы монолитных приложений.
Решить их помогают проверенные архитектурные паттерны: CQRS, который разделяет чтение и запись, и паттерн «Репозиторий», который упрощает работу с базой
➖ Что такое CQRS
CQRS (Command Query Responsibility Segregation) — это архитектурный паттерн, который разделяет операции чтения и записи. Вместо одного интерфейса для всех операций мы получаем две независимые модели.
Пример интерфейсов:
➖ Что такое паттерн «Репозиторий»
Паттерн «Репозиторий» — это слой между бизнес-логикой и источником данных. Он инкапсулирует логику доступа к базе и предоставляет простой интерфейс для работы с данными.
Пример паттерна «Репозиторий»:
Такой интерфейс можно реализовать для разных источников данных — in-memory, MSSQL, PostgreSQL или Redis.
CQRS — это официант, который принимает заказы, а «Репозиторий» — повар. Главное — чтобы заказ не завис на «кухне»... или в deadlock’е.
🖇 Подробнее об этих подходах
🐸 Библиотека Go разработчика
Перепутанные SQL-запросы, сложный рефакторинг и отсутствие тестируемости — частые проблемы монолитных приложений.
Решить их помогают проверенные архитектурные паттерны: CQRS, который разделяет чтение и запись, и паттерн «Репозиторий», который упрощает работу с базой
CQRS (Command Query Responsibility Segregation) — это архитектурный паттерн, который разделяет операции чтения и записи. Вместо одного интерфейса для всех операций мы получаем две независимые модели.
Пример интерфейсов:
// Интерфейс для записи
type UserCommand interface {
Create(user *User) error
Update(user *User) error
Delete(id int) error
}
// Интерфейс для чтения
type UserQuery interface {
GetByID(id int) (*User, error)
ListAll() ([]*User, error)
}
Паттерн «Репозиторий» — это слой между бизнес-логикой и источником данных. Он инкапсулирует логику доступа к базе и предоставляет простой интерфейс для работы с данными.
Пример паттерна «Репозиторий»:
type UserRepository interface {
GetByID(id int) (*User, error)
Create(user *User) error
Update(user *User) error
Delete(id int) error
}
Такой интерфейс можно реализовать для разных источников данных — in-memory, MSSQL, PostgreSQL или Redis.
CQRS — это официант, который принимает заказы, а «Репозиторий» — повар. Главное — чтобы заказ не завис на «кухне»... или в deadlock’е.
🖇 Подробнее об этих подходах
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱16👍10😁2❤1
Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
🐳 Делаем конкурента DeepSeek R1-Zero на домашней пекарне: метод GRPO в Unsloth
Обычно LLM требуют мощных GPU, но теперь даже на видеокарте с ограниченной памятью можно обучать модели логического рассуждения.
💡 Фишка — новый алгоритм GRPO, который позволяет моделям развивать логическое мышление без вмешательства человека.
Подробнее в нашей статье: https://proglib.io/sh/MyBCbq9is5
Обычно LLM требуют мощных GPU, но теперь даже на видеокарте с ограниченной памятью можно обучать модели логического рассуждения.
💡 Фишка — новый алгоритм GRPO, который позволяет моделям развивать логическое мышление без вмешательства человека.
Подробнее в нашей статье: https://proglib.io/sh/MyBCbq9is5
👍4❤2
🌳 Бинарное дерево поиска (BST) в Go
BST — это бинарное дерево, где:
• Значение в левой ветви меньше значения в узле.
• Значение в правой ветви больше значения в узле.
Такое свойство обеспечивает эффективный поиск, вставку и удаление — в среднем за O(log n).
Пример реализации:
Как это работает?
1️⃣ Вставка:
• Если значение меньше текущего узла, идём в левое поддерево.
• Если больше — в правое.
• Если узел пуст, создаём новый.
2️⃣ Поиск:
• Сравниваем искомое значение с текущим.
• Меньше — идём влево, больше — вправо, равное — нашли.
3️⃣ Обход:
• In-order обход (LNR) обходит узлы в отсортированном порядке.
💬 А вы уже реализовали BST? Делитесь опытом и вопросами в комментариях!
🐸 Библиотека Go разработчика
BST — это бинарное дерево, где:
• Значение в левой ветви меньше значения в узле.
• Значение в правой ветви больше значения в узле.
Такое свойство обеспечивает эффективный поиск, вставку и удаление — в среднем за O(log n).
Пример реализации:
// Node — узел бинарного дерева
type Node struct {
Value int
Left *Node
Right *Node
}
// Insert — вставка нового значения в дерево
func (n *Node) Insert(value int) {
if value < n.Value {
if n.Left == nil {
n.Left = &Node{Value: value}
} else {
n.Left.Insert(value)
}
} else if value > n.Value {
if n.Right == nil {
n.Right = &Node{Value: value}
} else {
n.Right.Insert(value)
}
}
}
// Search — поиск значения в дереве
func (n *Node) Search(value int) *Node {
if n == nil {
return nil
}
if n.Value == value {
return n
} else if value < n.Value {
return n.Left.Search(value)
} else {
return n.Right.Search(value)
}
}
// InOrderTraversal — обход дерева в порядке (LNR)
func (n *Node) InOrderTraversal() {
if n == nil {
return
}
n.Left.InOrderTraversal()
fmt.Print(n.Value, " ")
n.Right.InOrderTraversal()
}
Как это работает?
• Если значение меньше текущего узла, идём в левое поддерево.
• Если больше — в правое.
• Если узел пуст, создаём новый.
• Сравниваем искомое значение с текущим.
• Меньше — идём влево, больше — вправо, равное — нашли.
• In-order обход (LNR) обходит узлы в отсортированном порядке.
💬 А вы уже реализовали BST? Делитесь опытом и вопросами в комментариях!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤19👍17🥱4😁2
⚠️ В машинном обучении, как в любви: слишком идеальные предсказания – это подозрительно!
Когда модель слишком прилипчива к тренировочным данным, результат оказывается… ну, как в отношениях, когда всё кажется идеальным, но реальность ломает сердце.
❌ Оверфиттинг (Overfitting) – модель так хорошо запомнила тренировочные данные, что на реальных данных начинает путаться.
💔 В любви: «Я выбрал идеального партнёра по профилю, а в жизни выяснилось, что его «идеальность» – всего лишь иллюзия!»
❌ Андерфиттинг (Underfitting) – модель обучена настолько поверхностно, что предсказывает мэтчи случайным образом.
💔 В любви: «Мне нравятся только люди с именем Александр, а всех остальных я даже не замечаю – бедный фильтр!»
❌ Неправильный выбор фичей (Feature Selection Fail) – если модель опирается на неважные признаки, она предсказывает мэтчи хуже случайности.
💔 В любви: «Ты любишь авокадо? Значит, мы созданы друг для друга!» – а потом оказывается, что это вовсе не про важное.
🎯 На вебинаре мы разобрали, как избежать этих ошибок и создать работающую модель для speed dating, которая на самом деле помогает находить любовь! Вчера мы не просто говорили о любви – мы её предсказывали!
🔥 Спасибо всем, кто был с нами и участвовал!
💘 Как же это было?
Если ты пропустил вебинар или хочешь пересмотреть запись – просто перейди по [ссылке] и получи видео 😉
Когда модель слишком прилипчива к тренировочным данным, результат оказывается… ну, как в отношениях, когда всё кажется идеальным, но реальность ломает сердце.
❌ Оверфиттинг (Overfitting) – модель так хорошо запомнила тренировочные данные, что на реальных данных начинает путаться.
💔 В любви: «Я выбрал идеального партнёра по профилю, а в жизни выяснилось, что его «идеальность» – всего лишь иллюзия!»
❌ Андерфиттинг (Underfitting) – модель обучена настолько поверхностно, что предсказывает мэтчи случайным образом.
💔 В любви: «Мне нравятся только люди с именем Александр, а всех остальных я даже не замечаю – бедный фильтр!»
❌ Неправильный выбор фичей (Feature Selection Fail) – если модель опирается на неважные признаки, она предсказывает мэтчи хуже случайности.
💔 В любви: «Ты любишь авокадо? Значит, мы созданы друг для друга!» – а потом оказывается, что это вовсе не про важное.
🎯 На вебинаре мы разобрали, как избежать этих ошибок и создать работающую модель для speed dating, которая на самом деле помогает находить любовь! Вчера мы не просто говорили о любви – мы её предсказывали!
🔥 Спасибо всем, кто был с нами и участвовал!
💘 Как же это было?
Если ты пропустил вебинар или хочешь пересмотреть запись – просто перейди по [ссылке] и получи видео 😉
🥱4👾4
Forwarded from Библиотека питониста | Python, Django, Flask
📢 Где «выстрелит» твой стартап: 8 площадок для запуска и продвижения IT-проекта
Собрали для тебя проверенные места, где можно бесплатно показать свой продукт первым пользователям и даже найти инвестора. Работает как для зарубежного, так и для российского рынка.
👍 Ссылка на статью: https://proglib.io/sh/LrcFGsnuyU
Собрали для тебя проверенные места, где можно бесплатно показать свой продукт первым пользователям и даже найти инвестора. Работает как для зарубежного, так и для российского рынка.
👍 Ссылка на статью: https://proglib.io/sh/LrcFGsnuyU
👍3
🎧 Подкаст Cup o' Go #100 — вечеринка в честь релиза Go 1.24
Обсудили ключевые изменения в Go 1.24, работу с SQL NULL и компиляцию shell-скриптов в бинарники.
Не обошлось без докладов с GopherCon и новостей об окончании поддержки Go 1.14-1.19.
🖇 Слушать обсуждение новостей
🐸 Библиотека Go разработчика #подкаст
Обсудили ключевые изменения в Go 1.24, работу с SQL NULL и компиляцию shell-скриптов в бинарники.
Не обошлось без докладов с GopherCon и новостей об окончании поддержки Go 1.14-1.19.
🖇 Слушать обсуждение новостей
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Forwarded from Proglib.academy | IT-курсы
Многие говорят о лидерстве, коммуникации и умении презентовать себя. Но будущее требует других навыков. Разбираем неочевидные soft skills, которые помогут прокачаться в IT и за рубежом.
▪️ Эмоциональный интеллект
▪️ Умение упрощать
▪️ Антихрупкость
▪️ Мультикультурность
▪️ Предпринимательское мышление
Эти навыки решают. Кто хочет оставаться в топе — развиваемся уже сейчас.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱5❤2👍2🔥1
🏭 WebAssembly: новые возможности в Go 1.24
Go 1.24 добавляет директиву
Теперь можно создавать WASI-реакторы для многократных вызовов без переинициализации — идеально для долгоживущих WASM-приложений.
➡️ Подробнее на go.dev
🐸 Библиотека Go разработчика
Go 1.24 добавляет директиву
go:wasmexport
, упрощая экспорт функций в WebAssembly и улучшая взаимодействие с WASI. Теперь можно создавать WASI-реакторы для многократных вызовов без переинициализации — идеально для долгоживущих WASM-приложений.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤3
🔠 Погружение в UTF-8
Раньше ASCII поддерживал только 128 символов. UTF-8 решил эту проблему, используя 1–4 байта для кодирования символов Unicode. Go, ориентированный на современные веб-приложения, встроил поддержку UTF-8 на базовом уровне.
➖ Работа с UTF-8 в Go:
В Go строки — это срезы байтов. Это значит, что функция
Результат покажет, что
➖ Ошибки и подводные камни:
Одна из распространённых ошибок — неверное предположение, что каждый символ занимает 1 байт. При обрезке строк или подсчёте символов важно использовать utf8-функции.
Также стоит помнить о валидации. Функция
📎 Подробнее про UTF-8 в Go
🐸 Библиотека Go разработчика
Раньше ASCII поддерживал только 128 символов. UTF-8 решил эту проблему, используя 1–4 байта для кодирования символов Unicode. Go, ориентированный на современные веб-приложения, встроил поддержку UTF-8 на базовом уровне.
В Go строки — это срезы байтов. Это значит, что функция
len()
покажет длину в байтах, а не количество символов. Чтобы правильно работать с UTF-8, Go предоставляет пакет unicode/utf8:import "unicode/utf8"
func main() {
str := "Hello, 世界"
fmt.Println("Bytes:", len(str))
fmt.Println("Runes:", utf8.RuneCountInString(str))
}
Результат покажет, что
len()
выдаст 13 байтов, хотя символов всего 9. Это потому, что 世界 занимает по 3 байта каждый.Одна из распространённых ошибок — неверное предположение, что каждый символ занимает 1 байт. При обрезке строк или подсчёте символов важно использовать utf8-функции.
Также стоит помнить о валидации. Функция
utf8.Valid()
поможет убедиться, что данные корректны:if !utf8.Valid(data) {
log.Fatal("Invalid UTF-8 data")
}
📎 Подробнее про UTF-8 в Go
Please open Telegram to view this post
VIEW IN TELEGRAM
👍26❤3
TCP обеспечивает передачу данных без потерь — идеальный выбор для чата. В Go есть встроенный пакет net, который работает с TCP-соединениями.
Основные шаги:
net.Listen()
для ожидания подключений.TCP-чат на Go — отличный проект, чтобы понять сетевое программирование, горутины и каналы.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🔥7🥱6
Многоточие (
...
) в Go — инструмент, который делает язык более гибким и удобным для работы с функциями, принимающими переменное количество аргументов. Разберемся, как и где его использовать.
Основное применение многоточия в Go — это определение вариативных функций. Такие функции могут принимать любое количество аргументов. Пример:
func example(args ...int) {
for _, arg := range args {
fmt.Println(arg)
}
}
Вызывать эту функцию можно с разным количеством аргументов:
example(1, 2, 3)
example(4, 5, 6, 7, 8)
Многоточие позволяет передавать срезы в вариативные функции. Это удобно, когда у вас уже есть срез, и вы хотите передать его элементы в функцию. Пример:
slice := []int{1, 2, 3}
example(slice...)
В командной строке Go многоточие используется как подстановочный знак, обозначающий "всё в этой директории и всех поддиректориях". Это упрощает выполнение команд для всех файлов в проекте.
Многоточие можно использовать с интерфейсами для создания вариативных интерфейсов, что позволяет функциям принимать аргументы различных типов.
Пример:
func printAll(args ...interface{}) {
for _, arg := range args {
fmt.Println(arg)
}
}
Вызов функции:
printAll(1, "string", 3.14)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥4❤2😁1👾1
🔐 Google OAuth 2.0 в Go и React.js
OAuth 2.0 — популярный протокол аутентификации, который позволяет безопасно работать с аккаунтами Google. Сейчас разберём как настроить проект с его использованием.
➖ Настройка Google Cloud:
Создайте OAuth-клиент в Google Cloud Console. Сохраните client_id и client_secret.
➖ Бэкенд на Go:
Используйте пакет
Настройте маршруты: /login, /callback, /logout.
Храните access_token и refresh_token в httpOnly cookies.
Пример:
➖ Фронтенд на React:
Создайте AuthProvider с контекстом.
Настройте Axios-интерцепторы для обновления токенов:
➖ Ошибки и нюансы:
• Используйте httpOnly cookies для безопасности.
• Не храните client_secret на фронтенде.
• Обновляйте токены до их истечения, чтобы избежать разлогина пользователей.
📎 Подробный гайд с кодом
🐸 Канал Go-разработчика
OAuth 2.0 — популярный протокол аутентификации, который позволяет безопасно работать с аккаунтами Google. Сейчас разберём как настроить проект с его использованием.
Создайте OAuth-клиент в Google Cloud Console. Сохраните client_id и client_secret.
Используйте пакет
golang.org/x/oauth2
.Настройте маршруты: /login, /callback, /logout.
Храните access_token и refresh_token в httpOnly cookies.
Пример:
conf := &oauth2.Config{ClientID: "...", RedirectURL: "..."}
url := conf.AuthCodeURL("state")
Создайте AuthProvider с контекстом.
Настройте Axios-интерцепторы для обновления токенов:
axios.interceptors.response.use(resp => resp, async error => { ... });
• Используйте httpOnly cookies для безопасности.
• Не храните client_secret на фронтенде.
• Обновляйте токены до их истечения, чтобы избежать разлогина пользователей.
📎 Подробный гайд с кодом
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3👏2
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
job.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты
👍4
Starskey – это key-value хранилище, написанное на Go. Оно основано на концепции LSM-дерева (log-structured merge tree).
Преимущества:
Пример:
package main
import (
"fmt"
"log"
"github.com/starskey-io/starskey"
)
func main() {
// Открываем или создаём новую базу
db, err := starskey.Open("data.db", nil)
if err != nil {
log.Fatal(err)
}
defer db.Close()
// Записываем данные
err = db.Put([]byte("username"), []byte("admin"))
if err != nil {
log.Fatal(err)
}
// Читаем данные
value, err := db.Get([]byte("username"))
if err != nil {
log.Fatal(err)
}
fmt.Println("Username:", string(value))
}
Starskey подходит для встроенных решений, кеширования, локального хранения данных и даже небольших NoSQL-баз.
Please open Telegram to view this post
VIEW IN TELEGRAM
👾10👍3
🎮 Minecraft на Go
Мы нашли полноценную игру в стиле Minecraft, написанную на Go с OpenGL.
Этот проект – пример чистого кода и глубокого понимания 3D-графики, физики и генерации мира.
➖ Как запустить
1. Склонируйте репозиторий
2. Запустите
Это не просто игра, а учебный материал для тех, кто хочет изучить разработку 3D-игр без движков.
➡️ Репозиторий проекта на GitHub
🐸 Канал Go-разработчика
Мы нашли полноценную игру в стиле Minecraft, написанную на Go с OpenGL.
Этот проект – пример чистого кода и глубокого понимания 3D-графики, физики и генерации мира.
1. Склонируйте репозиторий
git clone https://github.com/GianlucaP106/minecraft && cd minecraft
2. Запустите
go run .
Это не просто игра, а учебный материал для тех, кто хочет изучить разработку 3D-игр без движков.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👾14👍7
В Go 1.24 map реализован с использованием швейцарской таблицы (Swiss Table). Разберёмся, что это значит для разработчиков и как это влияет на производительность.
Швейцарская таблица – это продвинутый алгоритм хеш-таблиц, разработанный Google для библиотеки Abseil. Она отличается высокой плотностью хранения данных и уменьшенной нагрузкой на кеш процессора.
• Компактное представление — хранит метаданные ключей рядом с хешами, что сокращает использование памяти.
• Эффективное разрешение коллизий — используется пробирование с SIMD: процессор обрабатывает сразу несколько элементов одновременно.
• Быстрое сканирование — поиск ключей стал намного быстрее за счёт оптимизированных операций.
Мапа в Go теперь занимает на 15-25% меньше памяти, а производительность ускорилась на 5-15%. Если в вашем коде активно используется map, он автоматически станет быстрее, потому что внешне ничего не поменялось.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍54🔥12❤3