Pull to refresh
-2
0
Send message

Дженерики в go

Level of difficultyMedium
Reading time8 min
Views13K

Привет, Хабр!

Дженерики (или generics) существуют во многих языках, таких как Java, C#, и Rust, но для Go это относительно новая фича, введенная в версии 1.18 в 2022 году.

До версии 1.18 Go был известен своим строгим и простым подходом к типизации. Однако, с ростом сообщества стало очевидно, что нужен более гибкий инструмент для работы с различными типами данных. Все вечно сталкивались с проблемами, когда им приходилось писать много шаблонного кода для разных типов данных или использовать интерфейсы и пустые интерфейсы.

Go представила предложение по введению дженериков, которое после долгих обсуждений и тестирований было реализовано в версии 1.18. Это был ответ на просьбу сообщества. + к карме

Дженерики позволяют писать более чистый и понятный код. Вы определяете общую структуру один раз, и затем можете использовать её с любым типом данных.

Читать далее
Total votes 18: ↑11 and ↓7+6
Comments12

Работаете с микросервисами? Идём в сторону Go

Level of difficultyEasy
Reading time4 min
Views6.9K

Разработчики приложений с микросервисной архитектурой обращаются к Golang не только как к основному языку, но и как к вспомогательному — в дополнение к другим, более сложным. А мы решили обратиться к спикеру курса «Golang-разработчик» Виталию Лихачеву, Senior Software Engineer в Avito, чтобы он нам рассказал, почему лично он выбрал бы Go. 

Читать далее
Total votes 18: ↑9 and ↓9+1
Comments5

Основы работы с Neo4j в браузере

Reading time3 min
Views17K

В статье рассматривается как начать работать с графовой СУБД Neo4j, используя Neo4j Browser. Это руководство может быть полезным как дополнение к книге Редмонда и Уилсона "Семь баз данных за семь недель", так как рассматриваемый веб-интерфейс был полностью переработан, а также к книге "Графовые базы данных" (Робинсон, Вебер, Эифрем), так как в ней этот вопрос вообще не рассматривается. Статья рассчитана на приступающих к изучению Neo4j. Те, кто уже знаком с этой СУБД, могут смело её пропустить.


Neo4j Browser: home screen

Читать дальше →
Total votes 12: ↑11 and ↓1+10
Comments3

Многопоточность и параллелизм в Go: Goroutines и каналы

Reading time15 min
Views18K


Язык программирования Go, разработанный с упором на простоту и эффективность, предлагает уникальный подход к реализации параллельных вычислений через Goroutines и каналы.

Goroutines, представляющие собой легковесные потоки выполнения, обеспечивают значительные преимущества по сравнению с традиционными потоками, используемыми во многих других языках программирования. Они позволяют создавать тысячи параллельных процессов без значительной нагрузки на системные ресурсы. Каналы в Go, предоставляя мощный механизм для безопасной коммуникации между Goroutines, дополнительно упрощают управление параллельными задачами и обмен данными.
Читать дальше →
Total votes 26: ↑22 and ↓4+20
Comments12

Два программиста — пара. Теория и практический опыт Сбера в парном программировании

Level of difficultyEasy
Reading time6 min
Views5.3K

Привет, Хабр! Сегодня поговорим о парном программировании, с передачей опыта Сбера — наши разработчики знают о методике парной работы не понаслышке. Команда программистов становится командой только при постоянном взаимодействии. Если один кодит, а другой просто смотрит — это просто наблюдение, а не парное программирование. Как же заниматься этим правильно? Подробности под катом.

Читать далее
Total votes 16: ↑13 and ↓3+20
Comments19

Удалёнка в ИТ-2023: золотая пуля или преграда для карьеры?

Level of difficultyEasy
Reading time11 min
Views20K

В чём хранить деньги, в рублях, твёрдой валюте или золоте? Кто круче, Александр Овечкин или Уэйн Гретцки? Что лучше, удалённая работа, гибрид или офис?

В жизни множество вечных вопросов, попробуем ответить на последний. На эту тему написано уже немало статей, но тема не выглядит закрытой, особенно для финтеха.

Из статьи руководители смогут узнать, как лучше организовать удалённую работу, с какими сложностями придётся столкнуться и какие подводные камни могут быть. Разработчики определятся, что им ближе: гибрид, или полная удалёнка. А может, и вовсе – снова в офис?

Читать далее
Total votes 28: ↑24 and ↓4+22
Comments34

Docker: как создавать образы контейнеров и развертывать приложения

Level of difficultyMedium
Reading time9 min
Views32K

В текущей реальности информационных технологий Docker стал неотъемлемым инструментом, переписывающим правила игры в области разработки и развертывания приложений. Docker — это на сегодняшний день самая популярная у айтишников платформа, используемая, чтобы быстро и эффективно создавать, доставлять и запускать всевозможные контейнированные приложения. Но давайте же разберемся, какова истинная роль Docker в современной парадигме разработки, и почему использование в этой разработке контейнеров стало не просто актуальным, но и важнейшим аспектом для разработчиков.

Читать далее
Total votes 4: ↑2 and ↓20
Comments22

Эффективность на максимум: Микрооптимизации в Golang

Level of difficultyEasy
Reading time9 min
Views6.3K

Привет, Хабр!

Каждая миллисекунда имеет значение, микрооптимизация это must have, особенно на языке Go.

Казалось бы, современные пекарни настолько мощные, что могут простить нам небольшую неэффективность. Однако, когда дело доходит до масштабируемых систем и высоконагруженных приложений, каждая лишняя аллокация памяти и каждый неоптимальный цикл могут привести к значительному снижению производительности. Микрооптимизации позволяют добиться максимальной эффективности и производительности.

Читать далее
Total votes 28: ↑13 and ↓15+3
Comments11

11 ошибок в резюме, из-за которых вас не берут в IT. Рассказываем, на что обратить внимание

Level of difficultyEasy
Reading time6 min
Views34K

И снова привет! Меня зовут Валерия, я старший HR-менеджер веб-студии Пиробайт. Для нас тема откликов очень актуальна, потому что часто ищем новых сотрудников в штат: расширяемся, открываем новые направления, ищем замену. Эти поиски сопровождаются своими нюансами, которые осложняют работу и нам, и кандидатам. И имя этому нюансу — корявое резюме. 

Расскажу, почему кандидат не получает долгожданного оффера и как сделать так, чтобы вас точно заметили (по крайней мере мы)

Читать далее
Total votes 52: ↑15 and ↓37-14
Comments194

Снижаем потребление CPU в VS Code в 5 раз [Кратко]

Level of difficultyEasy
Reading time2 min
Views38K

Всем привет, недавно столкнулся с проблемой — рабочий ноутбук начал непривычно шуметь системой охлаждения. В диспетчере задач наблюдал следующую картину:

Читать далее
Total votes 40: ↑35 and ↓5+37
Comments62

Обзор российских онлайн-досок: что выбрать для бизнеса?

Reading time9 min
Views12K

Подробно рассматриваем 4 российских онлайн-доски, которые могут закрыть потребности бизнеса, если нет возможности оплатить Miro или нужно срочно перейти на российский софт.

Читать далее
Total votes 6: ↑5 and ↓1+8
Comments3

Пишем gRPC сервис на Go — сервис авторизации

Level of difficultyMedium
Reading time63 min
Views57K

Пишем gRPC сервис на Go — сервис авторизации


В этой статье мы научимся писать полноценный gRPC сервис на Go на примере сервера авторизации с полноценной архитектурой, готовой к продакшену. Мы напишем как серверную часть, так и клиентскую. В качестве клиента мы возьмём мой сервис — URL Shortener, о котором у меня также есть статья и видео-гайд на ютубе. Попутно мы познакомимся с базовыми подходами к работе с авторизацией. И в конце настроим автоматический деплой сервиса с помощью GitHub Actions на удалённый сервер.


Видео-версия этого гайда с более подробными объяснениями

Исходный код проекта: https://github.com/GolangLessons/sso


Итого, наш план:


  • Напишем простой, но полноценный gRPC-сервис
  • Разберемся с базовыми принципами работы авторизации — чтобы не было скучно
  • Настроим автоматический деплой в прод — потому что руками деплоить лень
  • Подружим его с уже готовым сервисом URL Shortener — чтобы был практический смысл
  • Напишем полноценные функциональные тесты

На выходе мы получим полноценный рабочий сервис авторизации, который вы сможете по аналогии подключать к своим пет-проектам.


Кратко обо мне: меня зовут Николай Тузов, я много лет занимаюсь разработкой на Go, очень люблю этот язык. Также веду свой YouTube-канал.

Читать дальше →
Total votes 62: ↑60 and ↓2+66
Comments44

Здоровая конкуренция в GO. Главное не перехитрить самого себя

Level of difficultyMedium
Reading time15 min
Views14K

Несколько лет назад я прочитал статью о параллелизации в GO и ничего не понял – я тогда только начинал программировать на этом языке. Но размышления автора мне очень понравились – они подкреплялись бэнчмарками, что было довольно убедительно. Автор игрался c параметром GOMAXPROCS и показал, что увеличение этого параметра не всегда приводит к увеличению производительности. Под конец статьи он подобрал такое значение, которое будет максимально эффективным для его функции, на мое удивление, это значение оказалось равно единице! Т.е. его код работал максимально эффективно, если работал всего на одном ядре процессора! Однако, в одном из комментариев под той статьей я прочел, что все эти изыскания нелепы, поскольку та же самая функция из статьи запущенная всего в один поток оказывается эффективнее любой ее параллельной реализации.


С тех пор я написал уже много кода на GO, и могу поделиться мыслями о шаблонах параллельной обработки с теми, кто находится в том же состоянии, что и я когда то.



Читать дальше →
Total votes 33: ↑31 and ↓2+39
Comments21

Проблемы функции Golang init

Level of difficultyEasy
Reading time3 min
Views8.4K

Прежде чем говорить о функции init в Golang, необходимо понять, что такое пакет в Golang. Программа go организована в пакеты. Пакет собирает несколько исходных файлов в одном каталоге. Он похож на ящик, в котором находятся некоторые инструменты или небольшая машина. Он является отправной точкой для инициализации всего пакета. По-видимому, это соответствует назначению функции init.

Читать далее
Total votes 16: ↑13 and ↓3+17
Comments5

Почему облачные среды разработки до сих пор не завоевали популярность?

Level of difficultyEasy
Reading time4 min
Views17K

Интересная ситуация сложилась с облачными IDE. Они не используются программистами с такой же скоростью как другие облачные технологии. Почему их внедрение и распространение продвигается так медленно?

Сегодня обсудим причины и разберемся в разных точках зрения по этому вопросу.

Читать далее
Total votes 12: ↑8 and ↓4+5
Comments29

Зачем в Go амперсанд и звёздочка (& и *)?

Reading time4 min
Views70K

Если вы хоть раз были сбиты с толку, что означает символ "амперсанд" (&) или "звёздочка" ("знак умножения", *) или запутывались, когда что использовать, то это статья для вас. Авторы Go старались сделать язык знакомым большинству программистов, и многие элементы синтаксиса заимствовали из языка С. Но в 2017м уже сложно понять, большинство программистов владеют С или нет, и смею полагать, что уже нет. Поэтому концепции хорошо знакомые прошлому поколению разработчиков, могут выглядеть совершенной абракадаброй для для нового поколения. Давайте немного копнём историю и расставим все точки над ї в вопросах указателей в Go и использования символов & и *.


Читать дальше →
Total votes 43: ↑37 and ↓6+31
Comments32

Как стабильно расти в IT

Reading time14 min
Views39K

С одной стороны, IT-индустрия постоянно меняется и развивается, требует от специалистов постоянного обучения и расширения навыков. С другой стороны, зачастую сложно определить, какие конкретно навыки и знания нужно развивать, чтобы достичь желаемого уровня в карьере. Не всегда понятно, какие проекты и задачи помогут личностному и профессиональному развитию для достижения поставленных целей. В этом и заключается дилемма роста в IT. 

Вместе с HR BP компании TAGES Маргаритой Рачкулик разбираемся, как двигаться по карьерной лестнице быстро и уверенно, правильно отслеживать и оценивать свой рост, а также выбирать верные шаги для достижения карьерных целей.

Читать далее
Total votes 31: ↑15 and ↓16-1
Comments24

Мутации в микросервисах: применяем Temporal

Level of difficultyMedium
Reading time10 min
Views16K

Всем привет!
В прошлой статье была поставлена задача о надёжных мутациях и транзакциях в архитектуре Профи, в этой статье разберём один из вариантов решения — применить workflow-engine Temporal.

Читать далее
Total votes 13: ↑12 and ↓1+13
Comments16

Бизнес-гибкость через микросервисы

Reading time6 min
Views6.9K

Почему микросервисы помогут вам ускорить поставку бизнес-ценности.

История появления микросервисов

В статье От микросервисного монолита к оркестратору бизнес-сервисов (укороченный вариант в видео) я рассматривал механизм эволюции IT-архитектуры и причины, которые подталкивают к изменениям от одной стадии к другой. Я бы хотел дополнительно погрузить вас в историю того, как и почему мы пришли к микросервисам.

Читать далее
Total votes 11: ↑5 and ↓6-1
Comments39

Белоснежно чистый код

Level of difficultyEasy
Reading time3 min
Views14K

Что такое чистый код? Это то, что все ищут, но никто не может найти. Люди редко могут сойтись на том, что это такое и как это реализовать на практике. Можно найти бесчисленное число статей на эту тему, и эта станет ещё одной. Я попытаюсь разобраться в том, что такое чистый код сам по себе, в отрыве от языков, парадигм и сфер применения. 

Читать далее
Total votes 14: ↑9 and ↓5+4
Comments38

Information

Rating
Does not participate
Registered
Activity