Forwarded from Библиотека программиста | программирование, кодинг, разработка
🗺️ Дорожная карта по проектированию API
Пошаговое руководство, которое поможет вам научиться проектировать и создавать надежные API.
👉 Скачать оригинал (PDF-файл в комментариях)
Пошаговое руководство, которое поможет вам научиться проектировать и создавать надежные API.
👉 Скачать оригинал (PDF-файл в комментариях)
🔥14❤2
Здесь, увы, нет Go, но есть аккуратная демонстрация того, как не так уж сложно придать вашему GitHub-профилю дополнительную изюминку, добавив сообщения в блоге или другую информацию.
👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉9🥱9👍4👏2😁1
Там мы будем рассказывать про все существующие нейросети, которые генерируют музыку и голос — с пошаговыми инструкциями, инструментами и лайфхаками.
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱6🔥2
🤠 Анализ Go-бинарей с использованием gftrace: райтап одной из машин с известной площадки Hack The Box
Вы научитесь работать с инструментом gftrace, который позволяет отслеживать вызовы системных функций и их параметры в Windows. Автор показывает, как с помощью gftrace можно анализировать поведение бинарного файла, отслеживая такие операции, как создание файлов, чтение данных, создание сокетов и выполнение процессов.
👉 Читать
Вы научитесь работать с инструментом gftrace, который позволяет отслеживать вызовы системных функций и их параметры в Windows. Автор показывает, как с помощью gftrace можно анализировать поведение бинарного файла, отслеживая такие операции, как создание файлов, чтение данных, создание сокетов и выполнение процессов.
👉 Читать
👍7
💬 А как в вашем проекте накатываются изменения в основную ветку?
👍 — создаю pull request и жду его одобрения перед мержем
🔥 — мержу изменения напрямую в основную ветку
❤️ — прохожу через код-ревью перед мержем
🤔 — использую автоматическую систему CI/CD для мержа после прохождения всех тестов
👾 — свой вариант (напишу в комментариях)
#холивар
👍 — создаю pull request и жду его одобрения перед мержем
🔥 — мержу изменения напрямую в основную ветку
❤️ — прохожу через код-ревью перед мержем
🤔 — использую автоматическую систему CI/CD для мержа после прохождения всех тестов
👾 — свой вариант (напишу в комментариях)
#холивар
👍79❤43🤔17🔥16😁2
Автор затронул тему маппинга коллекций (множеств, последовательностей) элементов. Маппинг — это процесс, который приводит к новой коллекции элементов, где каждый элемент является результатом вызова некоторой функции
f()
с соответствующим элементом из исходной коллекции.👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
sergey.kamardin.org
Generic Concurrency in Go
Generics and goroutines are great tools we can leverage to have reusable general purpose concurrent processing in our programs.
🔥16👏5👍1
Попытка написать «умный» код всегда оборачивается проблемами, когда другим разработчикам приходится его поддерживать (где «другие» включают вас самих через четыре недели).
Точечный импорт позволяет импортировать пакет и использовать его экспортируемые идентификаторы без префикса имени пакета.
Например, если вы импортируете
fmt
через .
, вы можете вызвать Println()
и другие функции без префикса fmt.
.Почему это антипаттерн?
Экспортируемые идентификаторы из этого пакета выглядят так, как будто они определены в текущем пакете. Это плохо по двум причинам:
1. Это запутывает, когда ищешь определение идентификатора в текущем пакете.
2. Некоторые пакеты имеют заменители, которые экспортируют те же идентификаторы. Если эти пакеты импортируются через точечный импорт, можно подумать, что идентификаторы принадлежат оригинальному пакету, хотя на самом деле они принадлежат заменителю.
Если метод обновляет свой ресивер и ничего не может пойти не так при этом обновлении, метод не должен ничего возвращать. Несколько таких методов можно вызывать один за другим (пример #2).
Для объединения методов в цепочку нужно, чтобы каждый метод возвращал свой ресивер. Тогда мы можем вызывать второй метод, как в 3-м примере.
Ура, мы сэкономили одну строку!
Почему это антипаттерн
Три причины:
1. Мы ничего не приобрели. Цепочки методов не дают нам ничего, чего у нас уже нет.
2. Методы в цепочке не могут возвращать ошибки. Если есть ошибки, нужно вернуться к обычному паттерну. Теперь у вас в коде два разных стиля: цепочки и обычный.
3. Код на Go предпочитает, чтобы чтение кода фокусировалось на левой стороне. Это означает короткие строки и мало уровней вложенности (в идеале только один). Цепочки методов могут легко пересекать весь экран и даже вызвать разрыв строки, что делает код трудночитаемым и некрасивым.
👇 Продолжение 👇
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤5🤔2🔥1
В 4-м примере
main
вызывает mysteriousDefer()
как отложенную функцию, поэтому все, что напечатает mysteriousDefer()
, должно быть напечатано после того, как main
выполнит свои выводы.Однако если вы запустите этот код, вы получите следующий вывод:
f runs
main runs
func returned by f runs
Почему это антипаттерн
Этот «хитрый трюк» позволяет объединить инициализацию и очистку в одной функции.
Вы заметили двойные скобки в вызове
defer
?
defer mysteriousDefer()()
Обычно вы бы вызвали отложенную функцию так:
defer mysteriousDefer()
Вторые скобки вызывают
mysteriousDefer()
перед тем, как она будет оценена директивой defer
. Затем mysteriousDefer()
печатает свое сообщение и возвращает другую функцию, которая является фактической функцией, отложенной defer
.Этот запутанный набор трудно понять, а двойная пара скобок легко может быть пропущена при беглом ревью кода.
Что плохого в написании функции инициализации и функции очистки отдельно?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤3
🧬 Мысли об использовании Go для биоинформатики
Биоинформатик и инженер по обработке данных размышляет об использовании различных языков для научной работы, уделяя особое внимание Go и Rust, Python, Crystal, Julia и Zig.
У Go много плюсов, но, по его мнению, он не прорвался в биоинформатику в крупных масштабах, хотя за пределами этой области у него был феноменальный рост?
Любопытно, что автор оценивает количество строк для работы с файлами и вообще сложность этой операции с точки зрения среднестатистического программиста. На основании этого делает выводы, сравнивая с языком D и его четырьмя строками.
💬 Как вам такой подход?
Биоинформатик и инженер по обработке данных размышляет об использовании различных языков для научной работы, уделяя особое внимание Go и Rust, Python, Crystal, Julia и Zig.
У Go много плюсов, но, по его мнению, он не прорвался в биоинформатику в крупных масштабах, хотя за пределами этой области у него был феноменальный рост?
Любопытно, что автор оценивает количество строк для работы с файлами и вообще сложность этой операции с точки зрения среднестатистического программиста. На основании этого делает выводы, сравнивая с языком D и его четырьмя строками.
💬 Как вам такой подход?
😁21👍5🥱1🌚1👾1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
This media is not supported in your browser
VIEW IN TELEGRAM
🕹️🔥 Интерактивное исследование распространенных стратегий организации очередей
Перед вами мини-исследование, в котором изучается организация очередей в контексте HTTP-запросов. Автор начинает с простых концепций и постепенно разбирается с более сложными очередями.
📌 Под катом:
☑️ Чем полезны очереди
☑️ 3 разных типа очереди
☑️ Как эти 3 очереди сравниваются друг с другом
☑️ 1 дополнительная стратегия организации очередей, которую вы можете применить к очередям любого типа, чтобы не отбрасывать приоритетные запросы
Перед вами мини-исследование, в котором изучается организация очередей в контексте HTTP-запросов. Автор начинает с простых концепций и постепенно разбирается с более сложными очередями.
📌 Под катом:
☑️ Чем полезны очереди
☑️ 3 разных типа очереди
☑️ Как эти 3 очереди сравниваются друг с другом
☑️ 1 дополнительная стратегия организации очередей, которую вы можете применить к очередям любого типа, чтобы не отбрасывать приоритетные запросы
🥰11👍5⚡1
Go известен своей лаконичностью и простотой синтаксиса, но даже в нём есть множество подводных камней, с которыми можно столкнуться в работе. Дмитрий Королёв, бэкенд-разработчик в Авито, разбирает распространённые ошибки с примерами и рассказывает, как их можно избежать.
👉 Читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17🤔5❤2
Доклады были опубликованы уже месяц назад, но лучше поздно, чем никогда 👇
🌐 Как стать сеньором / Василий Романов (VK, Облако Mail ru)
🌐 Domain Driven Design в Go — это не больно (почти) / Илья Сергунин (Авито)
🌐 Go в Domain Driven Design / Дмитрий Анисов (GS Labs)
🌐 Как научить сервис сообщать об ошибке, чтобы это было понятно пользователям, машинам / Александр Лырчиков (YADRO)
🌐 Работа с аренами — почти избавляемся от GC / Максим Горозий (Тинькофф)
🌐 Собеседования на senior-разработчика: проверяем soft skills вопросами на hard skills / Иван Матвеев
🌐 Потоки данных, графы, стейт-машина — строим бизнес-логику в Go-микросервисах / Апрес Антонян
🌐 Выжимаем из Go максимум производительности / Никита Галушко (VK, ВКонтакте)
👉 Весь плейлист
#чтопроисходит
👉 Весь плейлист
#чтопроисходит
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16