Search
Write a publication
Pull to refresh
1
0
Send message

Ужасно подробные ошибки в API: пишем на Go инструмент для работы с ними

Level of difficultyMedium
Reading time14 min
Views3.1K

Привет, Хабр! Меня зовут Александр Лырчиков, я разрабатываю систему хранения данных TATLIN.UNIFIED в YADRO. СХД — сложная система, и, если при работе произошла ошибка, она должна своевременно и понятно сообщать пользователю об этом. В большинстве веб-сервисов для этого используют баннер с надписью «Что-то пошло не так», но такой способ уведомления нам не подходит.

Мы столкнулись с проблемой, когда переданных сообщений и HTTP-кодов уже не хватает. Поэтому разработали собственный инструмент для обработки ошибок Terror (TATLIN + error). В результате работа с кодом стала проще, мы получили красивый API, а пользователи — понятное описание ошибки и локализацию текста на разные языки. В этой статье расскажу, как мы создавали Terror, чтобы вы смогли повторить решение.

Читать статью

Интересный пример кода на Go и зашоренность мышления

Reading time8 min
Views3.9K

История про интересный пример кода на Go и то, что иногда для понимания происходящего в коде полезно смотреть на него под другим углом.

Читать далее

Подготовка к техническому собеседованию Senior/Team Lead backend

Level of difficultyMedium
Reading time3 min
Views25K

Недавно появились мысли походить на собеседования чем я успешно занялся. Если конкретно - смотрел лидовскую/сеньерскую позиции на Python и Golang(но статья может пригодиться backend разработчикам в целом). Не ставлю целью статьи объять все не объятное и дать какие-то гарантии. Я лишь зафиксирую данные для себя на будущее.

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

Сразу сделаю пометку, что некоторые навыки/ресурсы специфичны(по типу нарешивания Leetcode), но отталкиваемся от текущих реалий рынка.

Читать далее

Оптимизация Go: как повысить скорость и эффективность кода

Level of difficultyMedium
Reading time9 min
Views9.5K

Привет, Хабр! Меня зовут Макс, я Go-разработчик в компании SimbirSoft. Язык Go (Golang) стремительно набирает популярность, он всё чаще внедряется в существующие программные решения, а также встречается в стеке новых проектов. Высокая производительность и скорость работы – его главные преимущества, поэтому для реализации бизнес-задач он подходит как нельзя кстати. Go легко поддерживается и отлично годится для создания MVP, из-за чего востребованность в нём растёт.

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

Мы начинаем!

Go ⏩

Как я написал для своей команды бот-напоминалку на Golang и втрое сократил время на ревью задач

Level of difficultyEasy
Reading time9 min
Views6.5K

Привет, Хабр! На связи Кирилл Веркин. Вообще, я занимаю в СберМаркете должность Senior QA, но ради большей производительности команды стал немного кодером.

Эта статья может быть интересна тем, кто замечает, что задачи в команде часто теряются, и хочет автоматизировать процесс напоминалок. Я делюсь кодом, поясняя ключевые моменты для таких же новичков в Go. Мой код написан для сочетания GitLab, Jira и Mattermost (корпоративный мессенджер, которым мы пользуемся в СберМаркете), но подобное решение можно реализовать и с другими сервисами.

Читать далее

Откажитесь уже наконец от gin, echo и <иной ваш фреймворк>

Level of difficultyEasy
Reading time8 min
Views14K

Введение: Пересмотр Традиций в Мире Go

В мире разработки на Go выбор фреймворка часто превращается в лояльность, сопоставимую с выбором между Apple и Android. Фреймворки вроде Gin, Echo и Beego долгие годы были верными спутниками программистов, помогая быстро развертывать проекты и достигать первых успехов. Они предлагали удобные инструменты и привычные шаблоны работы, но со временем становится очевидным, что у каждого свой «язык». Это создаёт трудности при переходе между ними или интеграции с другими системами.

Ну что же, давайте разберемся

Как могли взломать СДЭК. Уроки, которые нужно усвоить каждому

Reading time7 min
Views38K

4 июня СДЭК предварительно подтвердил, что сбой в его работе связан с внешним воздействием. 6 июня совет директоров компании соберется, чтобы обсудить данные внутреннего расследования. 

Желаем ИТ-команде СДЭК скорейшего восстановления работы в полном объеме. 

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

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

Именно этому и посвящен наш текст

AOP в Golang: как рефлексировать, и почему вам не стоит этого делать

Level of difficultyMedium
Reading time6 min
Views4.4K

Я java-программист по профессии и алкоголик go-developer по зову души. И вот в один прекрасный день я подумал о том, что раз уж в Go есть пакет reflect, то должны быть и способы АОП, прямо как в java. Если вкратце, я захотел генерировать обертки для функций в рантайме, позволяя красиво оборачивать логи, мониторинги, трейсинги, и прочие довольно однотипные штуки, по аналогии с тем, как я проделывал это в java.

Если вам стало интересно, что у меня из этого вышло, добро пожаловать под кат!

Читать далее

Можно ли на самом деле выучить английский язык в Chat GPT?

Reading time9 min
Views31K

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

Как вы относитесь к гомеопатии? Стали бы вы с ее помощью лечить опасное заболевание, если есть проверенные годами методы? Хотя можно привести и примеры с ГМО, где есть прослойка населения, опасающаяся использовать «новинку», но здесь у нас хотя бы есть некие исследования о безвредности, а в ChatGPT – нет свидетельств по типу «я использовал только ChatGPT и достиг отличных результатов». Под результатами мы конечно понимаем способность работать за границей, общаться с коллегами или хорошие баллы на экзамене типа IELTS или TOEFL.

 Но это обывательский подход, конечно же, уже проводились некие исследования, задействующие фокус-группы, в ходе которых, например, было выяснено, что «ChatGPT оказывает позитивное воздействие на навыки письма и незначительное – на развитие разговорных и грамматических навыков, словарный запас, мотивирование участников занятия». Упоминается, что «хотя AI-технологии по типу ChatGPT  могут оценивать уровень знания, и проводить инструктаж по обучению языкам, они должны рассматриваться скорее как дополнение, а не как замена людям».

Читать далее

Хорошие программисты совершенствуют навыки, великие — своё мышление

Level of difficultyEasy
Reading time6 min
Views12K

Анализируя свою карьеру и карьеру моих коллег и подопечных, я понял одну вещь: профессиональный рост — всегда трудная задача. Мы снова и снова повторяем цикл формирования навыков. Но если разобраться, что к чему, движение вперёд можно сделать более приятным и менее хаотичным.

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

Читать дальше →

Руководство по написанию промптов

Reading time12 min
Views13K


Написание промптов — это искусство общения с генеративной ИИ-моделью. В этой статье мы расскажем о том, как мы в GitHub подходим к составлению промптов и как можно использовать эти принципы для создания собственного приложения на основе LLM.

В 2011 году в одной своей публикации Марк Андриссен предупредил: «Программы поглощают мир». Спустя более десятка лет мы наблюдаем появление нового типа технологий, которые поглощают мир с ещё большей скоростью: генеративный искусственный интеллект. Этот инновационный искусственный интеллект включает в себя уникальный класс больших языковых моделей (англ. large language models, LLM), созданных в результате десятилетия новаторских исследований, которые способны превзойти человека в решении определённых задач. И вам не нужно иметь докторскую степерь в области машинного обучения, чтобы создавать программы с использованием LLM. Разработчики уже создают программы с LLM, используя базовые HTTP-запросы и промпты на естественном языке.

В этой статье мы расскажем о работе GitHub с LLM, чтобы помочь другим разработчикам узнать, как лучше использовать эту технологию. Статья состоит из двух основных частей: в первой мы высокоуровнево расскажем о том, как функционируют LLM и как создавать приложения на основе LLM. Во второй части мы рассмотрим пример такого приложения: автодополнение кода от GitHub Copilot.
Читать дальше →

Три основных способа оптимизировать ваши запросы в PostgreSQL

Reading time5 min
Views16K

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

Представьте себе, вы приходите домой после долгого рабочего дня, и вас встречает пушистый котик. Вы знаете, что он ждет вас, чтобы вы рассказали ему о своих подвигах на работе. И вот, вы начинаете свой рассказ, а он, этот милый мурлыка, вдруг спрашивает: "А как там у тебя с оптимизацией запросов в PostgreSQL?"

Вы, конечно, удивлены: "Откуда у кота такие знания?" Но котик смотрит на вас с понимающим видом и говорит: "Ведь хороший запрос должен быть как прыжок кошки - быстрым, точным и грациозным..."

Читать далее

Разбираемся в новом роутинге в Go 1.22

Reading time5 min
Views12K

В начале февраля 2024 года вышел Go 1.22. Вот, что нового и интересного принёс новый релиз: сделали более безопасное поведение переменных в циклах, добавили функции-итераторы в качестве rangefunc-эксперимента и улучшили шаблоны роутинга. В этой статье я сфокусируюсь на последнем, самом долгожданном, для многих, обновлении — шаблонах http-роутинга.

Читать дальше →

Вопросы и задачи по SQL на собеседованиях 2024: готовьтесь эффективно

Level of difficultyMedium
Reading time6 min
Views31K

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

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

Читать далее

От и Go: доклады для гоферов про инструменты для фаззинга, kuber-кластер на Go и не только

Reading time3 min
Views2.8K

Бывает, перед инженерами встает выбор: использовать существующее open source-решение задачи или написать свое. И часто, изучив все возможные опции, разработчики предпочитают второй вариант.

Большинство докладов в нашей подборке — инструкции по созданию кастомных решений, которые инженеры и разработчики из YADRO, Avito Tech, Ozon Fintech и других технологических компаний уже опробовали в собственных продуктах. Если вашей команде не хватает инструмента для фаззинга или обработки ошибок на Go — можете сделать их по примерам, которые представили инженеры в выступлениях и презентациях.

Зайти в Go-портал

Оптимизация CROSS JOIN — первые шаги

Level of difficultyEasy
Reading time3 min
Views6.5K

Различные СУБД предлагают широкий набор разновидностей операторов JOIN для таблиц. Если Вам встретилась проблема с производительностью CROSS JOIN, - например, декартово произведение таблицы с миллионом записей самой на себя, - добро пожаловать, в этой статье перечислены простейшие способы избавиться от CROSS JOIN.

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

Примеры в статье рассматриваются на основе CROSS JOIN из ClickHouse. Текущая версия ClickHouse не оптимизирует CROSS JOIN автоматически. Также стоит отметить, что поскольку часто SQL запросы не пишутся вручную, а, например, собираются по частям программно, то перечисленные далее случаи вполне реальны.

Читать далее

Четыре частых вопроса по SQL джуну-аналитику и три задачи на собеседовании. Часть 1

Level of difficultyEasy
Reading time8 min
Views32K

Для аналитиков, владение SQL — это база. И от познаний в SQL зачастую зависит, отправит ли вам компания, где вы собеседуетесь — оффер.

В статье мы обсудим четыре области вопросов, которые могут встретиться на собеседованиях по SQL. А в конце рассмотрим три задачки.

Читать далее

Генерация надёжных псевдослучайных чисел с ChaCha8Rand в Go

Reading time4 min
Views2.9K

В версии Go 1.22 пакет math/rand/v2претерпел значительные изменения, а в частности - переход на ChaCha8Rand. Этот новый генератор представляет собой модификацию широко известного и проверенного временем шифра ChaCha8, который используется в протоколах TLS и SSH.

Читать далее

Популярные ошибки в Golang и как их избежать

Level of difficultyEasy
Reading time15 min
Views15K

Дмитрий Королев расскажет про распространённые ошибки при работе со слайсами, каналами и другими структурами в Go. Научимся предупреждать их и справлять на примерах.

Читать далее

Information

Rating
Does not participate
Registered
Activity