🗝️ 40 незаменимых API для разработчиков
Разработчики постоянно ищут способы оптимизировать свою работу. Мы собрали 40 API, которые помогут вам сэкономить время, повысить эффективность и добавить новые функции в ваши проекты.
🔗 Читать статью
🔗 Зеркало
Разработчики постоянно ищут способы оптимизировать свою работу. Мы собрали 40 API, которые помогут вам сэкономить время, повысить эффективность и добавить новые функции в ваши проекты.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🥱3
Осторожно: автор делится опытом работы с Go, полученным при работе техлидом в Утконос Онлайн. Его мнение не является истиной в последней инстанции.
✅ Что не стоит брать в проект.
✅ Saga — быстрое внедрение. Один из способов реализации в микросервисной архитектуре.
✅ DDD — о чем молчат.
✅ Дженерики, когда они так нужны.
✅ Мониторинг.
✅ Как переписали микросервисы и сделали стандарт внутри компании.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23🤔4🥱3😁2👾1
🤔 Именованием ok считается вредным?
«Как существует неписаное правило, что каждая переменная ошибки в Go должна называться
👉 Читать
«Как существует неписаное правило, что каждая переменная ошибки в Go должна называться
err
, так и существует неписаное правило, что каждая переменная существования в мапе должна называться ok
». Но Zach Musgrave из команды DoltHub считает, что мы можем и должны стремиться к лучшему.👉 Читать
🥱34❤3👍1🔥1🤔1
Разработка CI-системы на Go
Автор по шагам пишет CI-систему с нуля и планирует расширить функционал в следующих публикациях. Следите за обновлениями👇
🔹 Часть 1
«Какой системой CI вы пользуетесь?» — «Своей собственной»
Автор по шагам пишет CI-систему с нуля и планирует расширить функционал в следующих публикациях. Следите за обновлениями👇
🔹 Часть 1
👍31🎉5🥱1
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