☑️ Как структурирован срез
☑️ Как растет срез
☑️ Как распределяется срез и многое другое
👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9😁2
🏃 Самоучитель по Go для начинающих. Часть 16. Тестирование кода и его виды. Table-driven подход. Параллельные тесты
В статье познакомимся с концепцией тестирования кода и её основными видами, изучим инструменты стандартного пакета testing, научимся запускать и визуализировать тесты. В качестве практического задания напишем и протестируем алгоритм «Решето Эратосфена».
👉 Читать гайд
📌 Остальные части в серии:
1. Особенности и сфера применения Go, установка, настройка
2. Ресурсы для изучения Go с нуля
3. Организация кода. Пакеты, импорты, модули. Ввод-вывод текста.
4. Переменные. Типы данных и их преобразования. Основные операторы
5. Условные конструкции if-else и switch-case. Цикл for. Вложенные и бесконечные циклы
6. Функции и аргументы. Области видимости. Рекурсия. Defer
7. Массивы и слайсы. Append и сopy. Пакет slices
8. Строки, руны, байты. Пакет strings. Хеш-таблица (map)
9. Структуры и методы. Интерфейсы. Указатели. Основы ООП
10. Введение в ООП. Наследование, абстракция, полиморфизм, инкапсуляция
11. Обработка ошибок. Паника. Восстановление. Логирование
12. Обобщенное программирование. Дженерики
13. Работа с датой и временем. Пакет time
14. Интерфейсы ввода-вывода. Буферизация. Работа с файлами. Пакеты io, bufio, os
15. Конкурентность. Горутины. Каналы
В статье познакомимся с концепцией тестирования кода и её основными видами, изучим инструменты стандартного пакета testing, научимся запускать и визуализировать тесты. В качестве практического задания напишем и протестируем алгоритм «Решето Эратосфена».
👉 Читать гайд
📌 Остальные части в серии:
1. Особенности и сфера применения Go, установка, настройка
2. Ресурсы для изучения Go с нуля
3. Организация кода. Пакеты, импорты, модули. Ввод-вывод текста.
4. Переменные. Типы данных и их преобразования. Основные операторы
5. Условные конструкции if-else и switch-case. Цикл for. Вложенные и бесконечные циклы
6. Функции и аргументы. Области видимости. Рекурсия. Defer
7. Массивы и слайсы. Append и сopy. Пакет slices
8. Строки, руны, байты. Пакет strings. Хеш-таблица (map)
9. Структуры и методы. Интерфейсы. Указатели. Основы ООП
10. Введение в ООП. Наследование, абстракция, полиморфизм, инкапсуляция
11. Обработка ошибок. Паника. Восстановление. Логирование
12. Обобщенное программирование. Дженерики
13. Работа с датой и временем. Пакет time
14. Интерфейсы ввода-вывода. Буферизация. Работа с файлами. Пакеты io, bufio, os
15. Конкурентность. Горутины. Каналы
👍9🔥3
Привет, друзья! 👋
Мы готовим статью о самых странных и уникальных дистрибутивах Linux, и нам нужно ваше мнение! 🤔💬
1️⃣ Какой самый необычный дистрибутив Linux вы когда-либо пробовали? Почему он вас удивил?
2️⃣ Есть ли у вас советы для новичков, которые только начинают работать с Linux? 🐧✨
Поделитесь своими идеями в комментариях! Самые интересные идеи и предложения мы обязательно включим в нашу статью. Спасибо за участие! 🙌
Мы готовим статью о самых странных и уникальных дистрибутивах Linux, и нам нужно ваше мнение! 🤔💬
1️⃣ Какой самый необычный дистрибутив Linux вы когда-либо пробовали? Почему он вас удивил?
2️⃣ Есть ли у вас советы для новичков, которые только начинают работать с Linux? 🐧✨
Поделитесь своими идеями в комментариях! Самые интересные идеи и предложения мы обязательно включим в нашу статью. Спасибо за участие! 🙌
👍6🥱5
Интересно даже не то, как работает sync.WaitGroup, а то, как менялась его структура на протяжении многих версий.
👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10👏4
🍉 Подборка лучших статей «Библиотеки программиста» за август: сохраняй в заметки, чтобы не пропустить #самыйсок
🍇 18 основных паттернов микросервисной архитектуры
🦄 5 мифов о работе в IT, которые мешают начать карьеру программиста
😨 Страх ошибок: как он мешает вам писать код
🌐 9 основных паттернов для проектирования распределенных систем
🐘🔮 Иллюзия согласованности в PostgreSQL: как избежать неприятных сюрпризов
💪🛠 Прокачай свой бэкенд: 9 инструментов, которые стоит знать
🏗 Структуры данных для разработчиков: 10 самых важных
😡👨💼 ТОП-7 самых раздражающих вопросов от эйчаров
📶 Паттерны коммуникации в распределенных системах
🧠⬇️ Есть мнение: уровень знаний айтишников снизился
💻 15 продвинутых лайфхаков для работы в терминале Linux
🔧 Компилятор своими руками: краткий гид для начинающих
🚀 Ускорьте свою базу данных: 7 проверенных методов масштабирования и оптимизации
🐘🧠 Оптимизация использования памяти в PostgreSQL: секреты профессионалов
🏃 Самоучитель по Go для начинающих. Часть 15. Конкурентность. Горутины. Каналы
🍇 18 основных паттернов микросервисной архитектуры
🦄 5 мифов о работе в IT, которые мешают начать карьеру программиста
😨 Страх ошибок: как он мешает вам писать код
🌐 9 основных паттернов для проектирования распределенных систем
🐘🔮 Иллюзия согласованности в PostgreSQL: как избежать неприятных сюрпризов
💪🛠 Прокачай свой бэкенд: 9 инструментов, которые стоит знать
🏗 Структуры данных для разработчиков: 10 самых важных
😡👨💼 ТОП-7 самых раздражающих вопросов от эйчаров
📶 Паттерны коммуникации в распределенных системах
🧠⬇️ Есть мнение: уровень знаний айтишников снизился
💻 15 продвинутых лайфхаков для работы в терминале Linux
🔧 Компилятор своими руками: краткий гид для начинающих
🚀 Ускорьте свою базу данных: 7 проверенных методов масштабирования и оптимизации
🐘🧠 Оптимизация использования памяти в PostgreSQL: секреты профессионалов
🏃 Самоучитель по Go для начинающих. Часть 15. Конкурентность. Горутины. Каналы
🎉5
🔄 wp2hugo — инструмент для миграции блогов с WordPress на Hugo, написанный на Go
Hugo — популярный генератор статических сайтов на базе Go, и этот инструмент позволяет легко конвертировать в него блоги на базе WordPress, включая множество особых случаев, в которых WordPress REST API не помогает.
👉 GitHub
Hugo — популярный генератор статических сайтов на базе Go, и этот инструмент позволяет легко конвертировать в него блоги на базе WordPress, включая множество особых случаев, в которых WordPress REST API не помогает.
👉 GitHub
👍6🔥6🤔2
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🛠 Сага: эффективный шаблон микросервисной архитектуры
Полную бизнес-транзакцию, как правило, очень сложно описать с помощью одной транзакции в базе данных. Возьмем, к примеру, процесс покупки в онлайн-магазине — с момента нажатия кнопки «Купить» до момента доставки заказа к вашей двери происходит серия шагов:
🔸 Размещение заказа. Пользователь выбирает нужные товары, добавляет их в корзину и начинает процесс оформления заказа. Система сохраняет информацию о видах товаров, их количестве, имени заказчика, адресе и способе доставки.
🔸 Создание счета-фактуры. После размещения заказа создается счет-фактура, который служит основной записью о транзакции и используется для выставления счета и учета.
🔸 Обработка платежа. Инициируется процесс оплаты, пользователь предоставляет данные банковской карты или электронного кошелька. Оплата безопасно обрабатывается, и после успешного завершения заказ подтверждается.
🔸 Отправка товара. После обработки платежа заказ готовится к отправке: создается информация для отслеживания, система уведомляет пользователя об ориентировочной дате доставки.
Каждый из этих шагов включает взаимодействие с различными микросервисами — сервисов заказов, платежным сервисом и сервисом доставки. Для успешного и последовательного выполнения бизнес-транзакции важна безупречная координация всех частей системы. Эта задача кажется очень сложной, но к счастью, есть универсальный и надежный паттерн, который помогает выстроить взаимодействие микросервисов самым оптимальным образом — Сага. О нем и пойдет речь в статье.
Полную бизнес-транзакцию, как правило, очень сложно описать с помощью одной транзакции в базе данных. Возьмем, к примеру, процесс покупки в онлайн-магазине — с момента нажатия кнопки «Купить» до момента доставки заказа к вашей двери происходит серия шагов:
🔸 Размещение заказа. Пользователь выбирает нужные товары, добавляет их в корзину и начинает процесс оформления заказа. Система сохраняет информацию о видах товаров, их количестве, имени заказчика, адресе и способе доставки.
🔸 Создание счета-фактуры. После размещения заказа создается счет-фактура, который служит основной записью о транзакции и используется для выставления счета и учета.
🔸 Обработка платежа. Инициируется процесс оплаты, пользователь предоставляет данные банковской карты или электронного кошелька. Оплата безопасно обрабатывается, и после успешного завершения заказ подтверждается.
🔸 Отправка товара. После обработки платежа заказ готовится к отправке: создается информация для отслеживания, система уведомляет пользователя об ориентировочной дате доставки.
Каждый из этих шагов включает взаимодействие с различными микросервисами — сервисов заказов, платежным сервисом и сервисом доставки. Для успешного и последовательного выполнения бизнес-транзакции важна безупречная координация всех частей системы. Эта задача кажется очень сложной, но к счастью, есть универсальный и надежный паттерн, который помогает выстроить взаимодействие микросервисов самым оптимальным образом — Сага. О нем и пойдет речь в статье.
👍12❤2😁2
📹 Все о массивах и слайсах в Go: видеогайд от Владимира Балуна
⏱️ Таймкоды:
00:00 Введение
00:47 Устройство массивов в Go
01:40 Работа с массивами в Go
10:00 Перемещение массива в стеке
11:29 Итерация по массивам в Go
15:11 Где аллоцируются массивы в Go
17:22 Педедача массива в функцию
18:16 Слайсы в Go
21:34 Реаллокация слайса в Go
24:45 Резервирование памяти под слайс
25:44 Создание слайса без инициализации
27:38 Модификация строк в Go
28:35 Приведение слайсов в строки и обратно без копирования
30:13 Передача слайса в функцию
31:12 Итерация по слайсам в Go
33:55 Оптимизация итерации по слайсам в Go
35:42 Получение слайсов в Go
42:40 Получение слайса из массива в Go
43:15 Конвертация слайса в массив в Go
44:15 Конвертация слайса в указатель на массив в Go
45:02 Указатель на нулевой массив в Go
46:18 Удаление из конца слайса в Go
46:51 Удаление из начала слайса в Go
49:02 Реализация стека и очереди в Go
50:00 Как увеличить размер слайса в Go
50:48 Как уменьшить емкость слайса в Go
54:05 Где аллоцируются слайсы в Go
59:12 Как очистить слайс в Go
01:01:51 В чем разница пустых и нулевых слайсов в Go
01:05:17 Как сравнивать слайсы в Go
01:07:53 Как скопировать данные слайса в Go
01:09:47 Почему функция appeng возвращает слайсв в Go
01:12:39 Потенциальные проблемы с функцией append в Go
01:14:10 Реализация функции append в Go
01:15:32 Утечки памяти при работе со слайсами в Go
📺 YouTube | VK Видео | Дзен | Rutube
⏱️ Таймкоды:
00:00 Введение
00:47 Устройство массивов в Go
01:40 Работа с массивами в Go
10:00 Перемещение массива в стеке
11:29 Итерация по массивам в Go
15:11 Где аллоцируются массивы в Go
17:22 Педедача массива в функцию
18:16 Слайсы в Go
21:34 Реаллокация слайса в Go
24:45 Резервирование памяти под слайс
25:44 Создание слайса без инициализации
27:38 Модификация строк в Go
28:35 Приведение слайсов в строки и обратно без копирования
30:13 Передача слайса в функцию
31:12 Итерация по слайсам в Go
33:55 Оптимизация итерации по слайсам в Go
35:42 Получение слайсов в Go
42:40 Получение слайса из массива в Go
43:15 Конвертация слайса в массив в Go
44:15 Конвертация слайса в указатель на массив в Go
45:02 Указатель на нулевой массив в Go
46:18 Удаление из конца слайса в Go
46:51 Удаление из начала слайса в Go
49:02 Реализация стека и очереди в Go
50:00 Как увеличить размер слайса в Go
50:48 Как уменьшить емкость слайса в Go
54:05 Где аллоцируются слайсы в Go
59:12 Как очистить слайс в Go
01:01:51 В чем разница пустых и нулевых слайсов в Go
01:05:17 Как сравнивать слайсы в Go
01:07:53 Как скопировать данные слайса в Go
01:09:47 Почему функция appeng возвращает слайсв в Go
01:12:39 Потенциальные проблемы с функцией append в Go
01:14:10 Реализация функции append в Go
01:15:32 Утечки памяти при работе со слайсами в Go
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍8👏2
⚒ GoForge — CLI-инструмент для оптимизации инициализации Go-проекта
Вместо ручного создания файлов и директорий для настройки структуры проекта, GoForge предоставляет альтернативу в одну строку:
Вместо ручного создания файлов и директорий для настройки структуры проекта, GoForge предоставляет альтернативу в одну строку:
go install github.com/tz3/goforge@latest
goforge create
или
goforge create --title my-project --framework standard-library
GitHub
GitHub - tz3/goforge: GoForge is a command-line interface (CLI) tool designed to streamline the setup of new API projects for Go…
GoForge is a command-line interface (CLI) tool designed to streamline the setup of new API projects for Go developers. With GoForge, you can quickly generate a well-structured project skeleton, all...
👍8🥱4🥰1
🛠️ Транзакции с базами данных в Go с многоуровневой архитектурой
Транзакции — это мьютексы в мире баз данных. Хотя ваше приложение может выполнять запись в базу данных строго последовательным образом, помните, что другие процессы могут одновременно выполнять запись в ту же таблицу. Транзакции блокируют записи для обновления.
Как и в случае с мьютексами, транзакции могут выполнять блокировку, поэтому тщательно выбирайте стратегию транзакций. И да, присоединяйтесь к Miłosz Smółka в разработке Transaction Route 101.
Транзакции — это мьютексы в мире баз данных. Хотя ваше приложение может выполнять запись в базу данных строго последовательным образом, помните, что другие процессы могут одновременно выполнять запись в ту же таблицу. Транзакции блокируют записи для обновления.
Как и в случае с мьютексами, транзакции могут выполнять блокировку, поэтому тщательно выбирайте стратегию транзакций. И да, присоединяйтесь к Miłosz Smółka в разработке Transaction Route 101.
👍14
Привет, друзья! 👋
Мы готовим статью о будущем AI и его влиянии на разработку. Нам важно ваше мнение! ✨
1️⃣ Как вы думаете, AI действительно изменит мир разработки? 🤖
2️⃣ Какие плюсы и минусы использования AI в разработке вы видите? 💡
3️⃣ Есть ли у вас примеры успешного применения AI в ваших проектах? 🛠️
Поделитесь своими идеями в комментариях! Самые интересные идеи и предложения мы обязательно включим в нашу статью. Спасибо за участие! 🙌
Мы готовим статью о будущем AI и его влиянии на разработку. Нам важно ваше мнение! ✨
1️⃣ Как вы думаете, AI действительно изменит мир разработки? 🤖
2️⃣ Какие плюсы и минусы использования AI в разработке вы видите? 💡
3️⃣ Есть ли у вас примеры успешного применения AI в ваших проектах? 🛠️
Поделитесь своими идеями в комментариях! Самые интересные идеи и предложения мы обязательно включим в нашу статью. Спасибо за участие! 🙌
👍1👾1
В предверии дня программиста проводим конкурс: решите нашу задачу на тему программирования — рандомно выберем победителя
Подробные условия:
Курсы на выбор:
Таймлайн:
11-12 сентября — принимаем ответы
⬇️
13 сентября — подводим итоги
Please open Telegram to view this post
VIEW IN TELEGRAM
❤🔥2👏2🔥1💯1
Условие:
Даны две строки s и f (начальная и конечная) и словарь D (набор слов).
Нужно определить, можно ли преобразовать s в f, используя только слова из словаря D. При этом каждое преобразование должно менять только один символ, а длина слова должна оставаться неизменной. Если преобразование возможно, нужно найти кратчайшую последовательность таких преобразований и вернуть ее длину. Если преобразование невозможно, вернуть "Преобразование невозможно".
Пример ввода 1:
D = ["cat", "cot", "dot", "dog", "bat", "dag"]
s = "cat"
t = "dog"
Вывод:
Минимальное количество шагов для преобразования 'cat' в 'dog': 3
Пример ввода 2:
D = ["cat", "cot", "bat"]
s = "cat"
t = "dog"
Вывод:
Минимальное количество шагов для преобразования 'cat' в 'dog': Преобразование невозможно
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔9🔥2❤1
Краткий обзор механизмов компоновки Go, сравнивающих различия в подходе между статическими и динамическими зависимостями и внутренними/внешними компоновщиками.
👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11😁3
Александр Иванов, Go-разработчик в YADRO, делится опытом уменьшения влияния GC на выполнение программы и показывает бенчмарки для разных memory pools.
Вы узнаете, какая из реализаций подойдет вашему проекту, а когда лучше не использовать memory pools и полагаться на встроенные механизмы рантайм-окружения Go.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10🥱2