⚒️ sync.Map в Go: правильный инструмент для правильной работы
Оказывается,
Читайте продолжение серии статей Phuong Le про сложные аспекты Go на простых иллюстрациях👇
👉 Читать
👉 Другие статьи в серии:
• Go sync.Mutex: нормальный/starvation режим
• Go sync.WaitGroup и проблема выравнивания
• Go sync.Pool и механика, стоящая за ним
• Go sync.Cond, самый недооцененный механизм синхронизации
• Пакет singleflight
Оказывается,
sync․Map
под капотом поддерживает две мапы, что может быть неидеально, если вы часто добавляете или удаляете ключи.Читайте продолжение серии статей Phuong Le про сложные аспекты Go на простых иллюстрациях👇
👉 Читать
👉 Другие статьи в серии:
• Go sync.Mutex: нормальный/starvation режим
• Go sync.WaitGroup и проблема выравнивания
• Go sync.Pool и механика, стоящая за ним
• Go sync.Cond, самый недооцененный механизм синхронизации
• Пакет singleflight
👍7🥰2
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
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 запрещена на территории РФ
👍5👏2
Спикер: Иван Потапов – Staff Machine Learning Engineer at ShareChat. Руководит командой, отвечающей за качество рекомендаций, и имеет 8-летний опыт в сфере машинного обучения.
– Теорию вероятностей: случайные величины, математическое ожидание и дисперсию.
– Линейную алгебру: векторы, матрицы, собственные векторы и собственные значения.
– Математический анализ: производные и разложение функций в ряд Тейлора.
Понимание математических основ помогает глубже разобраться в работающих под капотом алгоритмах ML/DL и эффективно применять их на практике.
Присоединяйтесь к нам и совершенствуйте свои навыки в машинном обучении!
📌 Регистрация по ссылке: https://proglib.io/w/a5eddd40
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Я рад, что сделал это на Go
— Thorsten Ball, автор книги Writing An Interpreter In Go, размышляет о том, что восемь лет спустя Go оказался подходящим языком для книги.
Just as impressive, I think: the code in the books has barely changed since then. I had to fix some typos and bugs over the years, but really the only change I had to do in order to keep the code up to date was to drop a three line go.mod in there, so that users with G 1.13 or later don’t have to use the GO111MODULE=off environment variable. I added the go.mod in 2020, four years ago and four years after the original release.
Thorstenball
Glad I did it in Go
Go, the greatest teaching language?
👍19
This media is not supported in your browser
VIEW IN TELEGRAM
⚒️ go-pretty — Go-инструмент для улучшения отображения таблиц, списков, индикаторов выполнения, текста и т. д. в CLI-приложениях. Главная фича — упор на кастомизацию.
👉 GitHub
👉 GitHub
❤16👍6
🔐 Защита gRPC-сервисов с помощью JWT-аутентификации на Go
gRPC является популярным выбором для создания веб-API благодаря своей эффективности и независимости от языка. Однако защита gRPC-сервисов так же важна, как и защита любой другой распределённой системы.
gRPC предоставляет несколько механизмов для повышения безопасности. В гайде Matt Boyle разбирает пример реализации аутентификации в gRPC с упором на interceptors, metadata и JWT в качестве механизма аутентификации.
👉 Читать
gRPC является популярным выбором для создания веб-API благодаря своей эффективности и независимости от языка. Однако защита gRPC-сервисов так же важна, как и защита любой другой распределённой системы.
gRPC предоставляет несколько механизмов для повышения безопасности. В гайде Matt Boyle разбирает пример реализации аутентификации в gRPC с упором на interceptors, metadata и JWT в качестве механизма аутентификации.
👉 Читать
🔥15❤1👍1🎉1
🛠️ Go Blueprint — инструмент для создания новых Go-проектов с определенной структурой
Это один из растущего числа инструментов (еще один GoForge) для запуска нового Go-проекта с предопределенной структурой файлов и некоторой генерацией кода.
Он позволяет вам запустить приложение на основе Chi, Gin, Fiber или других фреймворков, с поддержкой баз данных и дополнительных инструментов вроде HTMX и Tailwind CSS.
👉 GitHub & Документация
Это один из растущего числа инструментов (еще один GoForge) для запуска нового Go-проекта с предопределенной структурой файлов и некоторой генерацией кода.
Он позволяет вам запустить приложение на основе Chi, Gin, Fiber или других фреймворков, с поддержкой баз данных и дополнительных инструментов вроде HTMX и Tailwind CSS.
👉 GitHub & Документация
👏22👍6🥰2
📹 Секреты внутреннего устройства аллокатора Go: видеогайд от Владимира Балуна
⏱️ Таймкоды:
00:00 Введение
01:49 Концепция аллокатора
06:09 Линейный аллокатор
11:22 Блочный аллокатор
16:21 Стековый аллокатор
20:18 Устройство malloc
25:01 Недостатки malloc
26:55 Устройство tcmalloc
28:28 Устройство аллокатора Go
32:55 Предсказуемая фрагментация памяти
40:33 Где аллоцируются объекты в Go
51:11 Почему аллокация на стеке работает быстрее, чем в куче
52:35 Расширение и уменьшение стека в Go
58:12 Зачем это все нужно знать (практические примеры)
01:03:37 Пулы объектов (sync.Pool)
01:06:57 Арены (memory arenas)
01:14:30 Аллокатор ОС
▶️ YouTube | Rutube | VK
⏱️ Таймкоды:
00:00 Введение
01:49 Концепция аллокатора
06:09 Линейный аллокатор
11:22 Блочный аллокатор
16:21 Стековый аллокатор
20:18 Устройство malloc
25:01 Недостатки malloc
26:55 Устройство tcmalloc
28:28 Устройство аллокатора Go
32:55 Предсказуемая фрагментация памяти
40:33 Где аллоцируются объекты в Go
51:11 Почему аллокация на стеке работает быстрее, чем в куче
52:35 Расширение и уменьшение стека в Go
58:12 Зачем это все нужно знать (практические примеры)
01:03:37 Пулы объектов (sync.Pool)
01:06:57 Арены (memory arenas)
01:14:30 Аллокатор ОС
▶️ YouTube | Rutube | VK
👍25🔥4
🔥 Разработка circuit breaker на Go: гайд для начинающих
В распределенных системах "breaking the circuit" означает остановку повторяющейся операции с высокой частотой отказов, такой как отправка запросов в другой сервис, когда этот сервис перегружен.
Circuit breaker уменьшает или блокирует дальнейшие запросы до тех пор, пока частота отказов снова не упадет ниже определенного уровня. Под катом — гайд по разработке библиотеки на Go с нуля.
👉 Читать
В распределенных системах "breaking the circuit" означает остановку повторяющейся операции с высокой частотой отказов, такой как отправка запросов в другой сервис, когда этот сервис перегружен.
Circuit breaker уменьшает или блокирует дальнейшие запросы до тех пор, пока частота отказов снова не упадет ниже определенного уровня. Под катом — гайд по разработке библиотеки на Go с нуля.
👉 Читать
❤7👍2
🤯 Ситуация:
Вам поступает задача, вы на глаз оцениваете ее в две недели и получаете одобрение по срокам. Сначала все идет хорошо, пилите проект и ничто не предвещает беды.
Со временем задача усложняется, потому что данные приходят с задержками и вразнобой. Вы не делитесь с руководителем своими трудностями, потому что тогда это можно посчитать за некомпетентность.
А когда приходит время сдачи работы, выясняется, что большинство работы сделано неправильно.
💬 Как думаете, как стоило поступить исполнителю?
Вам поступает задача, вы на глаз оцениваете ее в две недели и получаете одобрение по срокам. Сначала все идет хорошо, пилите проект и ничто не предвещает беды.
Со временем задача усложняется, потому что данные приходят с задержками и вразнобой. Вы не делитесь с руководителем своими трудностями, потому что тогда это можно посчитать за некомпетентность.
А когда приходит время сдачи работы, выясняется, что большинство работы сделано неправильно.
💬 Как думаете, как стоило поступить исполнителю?
😁18🤔1
🛠️ GoToSocial 0.17.0 — сервер ActivityPub на базе Go
ActivityPub — это стандарт, лежащий в основе открытых федеративных соцсетей вроде Mastodon. Это не Mastodon, но он предлагает некоторую совместимость с его API, поэтому вы можете использовать с ним клиентские приложения Mastodon.
👉 GitHub
ActivityPub — это стандарт, лежащий в основе открытых федеративных соцсетей вроде Mastodon. Это не Mastodon, но он предлагает некоторую совместимость с его API, поэтому вы можете использовать с ним клиентские приложения Mastodon.
👉 GitHub
👍8👾1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
📨 Как работают очереди и брокеры сообщений
Очередь сообщений — структура данных, которая хранит сообщения в порядке FIFO. Представьте, что вашему приложению нужно обрабатывать файлы, которые загружают пользователи. Очередь сообщений в этом случае может выступать как очередь задач, обрабатывающая задания асинхронно:
1️⃣ Пользователь загружает большой файл для обработки.
2️⃣ Веб-сервер принимает файл и создает задание.
3️⃣ Задание добавляется в очередь задач, а файл загружается в объектное хранилище.
4️⃣ Позже рабочий процесс забирает задания из очереди одно за другим и обрабатывает их, получая файл из хранилища.
Это самый простой пример. Очереди сообщений можно использовать для:
✔️ Планирования и управления фоновыми задачами.
✔️ Распределения задач между несколькими рабочими процессами.
✔️ Управления сервисами подписки и уведомлений.
✔️ Буферизации данных.
✔️ Повторных попыток обработки платежей и многого другого.
Подробнее читайте в нашем гайде 👇
🔗 Читать статью
🔗 Зеркало
Очередь сообщений — структура данных, которая хранит сообщения в порядке FIFO. Представьте, что вашему приложению нужно обрабатывать файлы, которые загружают пользователи. Очередь сообщений в этом случае может выступать как очередь задач, обрабатывающая задания асинхронно:
1️⃣ Пользователь загружает большой файл для обработки.
2️⃣ Веб-сервер принимает файл и создает задание.
3️⃣ Задание добавляется в очередь задач, а файл загружается в объектное хранилище.
4️⃣ Позже рабочий процесс забирает задания из очереди одно за другим и обрабатывает их, получая файл из хранилища.
Это самый простой пример. Очереди сообщений можно использовать для:
✔️ Планирования и управления фоновыми задачами.
✔️ Распределения задач между несколькими рабочими процессами.
✔️ Управления сервисами подписки и уведомлений.
✔️ Буферизации данных.
✔️ Повторных попыток обработки платежей и многого другого.
Подробнее читайте в нашем гайде 👇
🔗 Читать статью
🔗 Зеркало
❤4👍1
❗Вакансии «Библиотеки программиста» — ждем вас в команде!
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
👉Переводчик и автор оригинальных статей
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
Мы постоянно растем и развиваемся, поэтому создали отдельную страницу, на которой будут размещены наши актуальные вакансии. Сейчас мы ищем:
👉контент-менеджеров для ведения телеграм-каналов
👉Переводчик и автор оригинальных статей
Подробности тут
Мы предлагаем частичную занятость и полностью удаленный формат работы — можно совмещать с основной и находиться в любом месте🌴
Ждем ваших откликов 👾
job.proglib.io
Вакансии в медиа «Библиотека программиста»
Количество проектов в редакции постоянно растет, так что нам всегда нужны специалисты
🥰2👍1
🔄 Переход на Go глазами PHP-разработчика: 5 подводных камней
Костя Козин (старший PHP-разработчик в Lamoda Tech) делится подводными камнями, которые могут возникнуть при переходе с одного языка на другой, и с которыми сталкивался он сам и его коллеги. Если знать о них заранее, то смена стека может пройти не так болезненно, а знакомство с Go станет более предсказуемым.
1️⃣ «В Go так принято»
2️⃣ Специфичность языка и маркетинг
3️⃣ Go не снизит количество багов
4️⃣ На старте вас может тошнить от собственного кода, и это нормально
5️⃣ Низкое качество кода сразу после перехода
👉 Читать статью полностью
Костя Козин (старший PHP-разработчик в Lamoda Tech) делится подводными камнями, которые могут возникнуть при переходе с одного языка на другой, и с которыми сталкивался он сам и его коллеги. Если знать о них заранее, то смена стека может пройти не так болезненно, а знакомство с Go станет более предсказуемым.
1️⃣ «В Go так принято»
2️⃣ Специфичность языка и маркетинг
3️⃣ Go не снизит количество багов
4️⃣ На старте вас может тошнить от собственного кода, и это нормально
5️⃣ Низкое качество кода сразу после перехода
👉 Читать статью полностью
❤8🌚5👍4
🔥 Фундаментальное и практическое руководство по эффективному изучению и постепенному созданию блокчейна с нуля на Go + gRPC
Любите вы блокчейн или ненавидите, ваша точка зрения остается мнением до тех пор, пока вы не узнаете, как он работает.
И как только вы получите эти знания (например, с помощью этого руководства), ваша точка зрения, вероятно, отойдет от любви или ненависти и остановится где-то посередине.
Потому что блокчейны — это нечто большее, чем просто платформы для финансовых пирамид и розыгрышей, но они также далеки от того, чтобы быть панацеей.
👉 GitHub
Любите вы блокчейн или ненавидите, ваша точка зрения остается мнением до тех пор, пока вы не узнаете, как он работает.
И как только вы получите эти знания (например, с помощью этого руководства), ваша точка зрения, вероятно, отойдет от любви или ненависти и остановится где-то посередине.
Потому что блокчейны — это нечто большее, чем просто платформы для финансовых пирамид и розыгрышей, но они также далеки от того, чтобы быть панацеей.
👉 GitHub
❤21👍14