Pull to refresh
1
0
Андрей Овчинников @a_ovchinnikov

Backend developer

Send message

Golang — архитектурный линтер

Level of difficultyEasy
Reading time5 min
Views7.8K

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

В данной статье расскажу про свой бесплатный, open-source, линтер под MIT лицензией и чем он может быть полезен.

Читать далее
Total votes 17: ↑16 and ↓1+20
Comments1

Cohesion и Coupling: отличия

Reading time6 min
Views67K

Эта статья является переводом материала «Cohesion and Coupling: the difference». 

Возможно, вы слышали рекомендацию, в которой говорится, что мы должны стремиться к достижению low coupling (низкой связанности) и high cohesion (высокого сцепления) при работе над кодовой базой. В этой статье хотелось бы обсудить, что на самом деле означает эта рекомендация, и взглянуть на некоторые примеры кода, иллюстрирующие ее. И также хочется провести границу между этими двумя идеями и показать различия в них.

Читать далее
Total votes 19: ↑19 and ↓0+19
Comments3

Table bloat? Не, не слышал…

Reading time3 min
Views53K


Думаю многим известна особенность PostgreSQL, которая приводит к эффекту раздувания таблиц, или table bloat. Известно что она проявляет себя в случаях интенсивного обновления данных, как при частых UPDATE так и при INSERT/DELETE операциях. В результате такого раздувания снижается производительность. Рассмотрим почему это происходит и как с этим можно бороться.
что?
Total votes 59: ↑58 and ↓1+57
Comments25

Коллеги, вы меня огорчаете

Reading time12 min
Views183K
В июле и августе 2020 года я, с подачи Григория Петрова, проводил для компании Evrone технические интервью на позицию Senior Golang Backend developer. И, видимо, буду вынужден продолжать проводить, о чём ниже.

Задача формулировалась как «найти человека, который сможет задать и поддерживать высокий уровень профессионализма в применении языка Go». То есть, сформулирована она была по-человечески, перевод на канцелярит — мой. Под эту задачу я сформировал новый опросник вместо того, которым пользовался несколько лет — старый был с жестким закосом под DevOps. Методику, которой я пользуюсь для создания опросников и количественной оценки соответствия кандидатов, я излагал в своем докладе «Техническое интервью как инженерная задача» на конференции Saint TeamLead 2019.

И вот что я хочу сказать вам, коллеги: вы меня огорчаете.


Читать дальше →
Total votes 145: ↑101 and ↓44+93
Comments1153

Вкатываемся в Machine Learning с нуля за ноль рублей: что, где, в какой последовательности изучить

Level of difficultyEasy
Reading time26 min
Views231K

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

Читать далее
Total votes 129: ↑127 and ↓2+155
Comments52

Архетипы программных архитекторов. Часть 1

Level of difficultyEasy
Reading time13 min
Views10K

Что такое архетип? Это — образец набора вариантов поведения или поведенческих сценариев, типичных для определённой роли. Уилл Ларсон, который сейчас занимает должность главного технического директора в Carta, определил четыре архетипа для должности «ведущий инженер‑программист» (Staff Engineer). Это — «техлид» (Tech Lead), «архитектор» (Architect), «решатель задач» (Solver) и «незаменимый помощник» (Right Hand).

Я работаю над новой книгой, которую планируется опубликовать этой осенью. Она называется «The Software Engineerʼs Guidebook». Когда я писал в ней об архитектуре ПО, меня зацепила идея существования «архетипов» программных архитекторов, которые могут сочетаться друг с другом либо хорошо, либо плохо. Речь идёт о людях, работающих бок о бок друг с другом, вклад каждого из которых в общее дело отличается чем-то особенным. Разбираться с тем, какие архетипы лучше всего описывают коллег — это интересное занятие, которое может привести к ценным открытиям. И вполне возможно, что вы, задумываясь об этом, поймёте, какой из архетипов лучше всего описывает вас самих.

Читать далее
Total votes 13: ↑11 and ↓2+16
Comments8

Как работает компьютер: глубокое погружение (на примере Linux)

Level of difficultyHard
Reading time48 min
Views160K



Введение


Я делала много вещей с компьютерами, но в моих знаниях всегда был пробел: что конкретно происходит при запуске программы на компьютере? Я думала об этом пробеле — у меня было много низкоуровневых знаний, но не было цельной картины. Программы действительно выполняются прямо в центральном процессоре (central processing unit, CPU)? Я использовала системные вызовы (syscalls), но как они работают? Чем они являются на самом деле? Как несколько программ выполняются одновременно?


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


И, как говорится, ты по-настоящему знаешь что-то, только если можешь объяснить это другому.


Более удобный формат статьи.

Читать дальше →
Total votes 151: ↑151 and ↓0+151
Comments36

Идеальная архитектура

Reading time4 min
Views59K
Существует много разных взглядов на разработку архитектуры и дизайна современных приложений. Некоторые архитекторы стремятся продумать все до мелочей, разрисовать use case-ы всех классов и модулей, проанализировать миллион возможных способов их использования, все их обязательно задокументировать и уже потом приступить к этапу кодирования.

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

Читать дальше →
Total votes 61: ↑50 and ↓11+39
Comments22

Как мы узнаём, какая музыка играет в кино

Reading time9 min
Views7.8K

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

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

Меня зовут Алексей Царёв, я занимаюсь развитием технологий в развлекательных сервисах Яндекс. И моя задача в том, чтобы из какой-то отдельно взятой технологии создавать рабочие продукты для конечного пользователя. Именно об этом, на примере распознавания музыки в фильмах, и будет этот пост.

Читать далее
Total votes 35: ↑35 and ↓0+35
Comments5

На наших глазах ИИ убивает старый интернет. Но новый обещает быть хуже

Reading time12 min
Views69K

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

Google хочет убить свои стандартные 10 синих ссылок (заменив их выдачей данных из чатбота Bard). Твиттер умирает под давлением ботов и синих галочек. Amazon захламляется ИИ-книгами, которые сейчас доминируют в списке бестселлеров, а также фальшивыми отзывами и прочим мусором. Большие проблемы с контентом и рекламодателями испытывает TikTok.

Массовые увольнения захватывают интернет-СМИ. В вакансии от «ИИ-редактора» ожидается «выпуск от 200 до 250 статей в неделю». ChatGPT используется для создания целых сотен спам-сайтов, на которых, ничего не подозревая, через Google Ads рекламируются бренды. Etsy наводнен «мусором, созданным искусственным интеллектом».

Чатботы цитируют друг друга в каком-то дезинформационном уроборосе. LinkedIn использует искусственный интеллект для симуляции сообщений рекрутеров (чтобы создать персонализированное сообщение теперь не нужно тратить ни секунды времени — привет, официально одобренный спам!). Но и это ещё не предел. Snapchat и Instagram рассчитывают, что боты скоро будут разговаривать с вами, когда этого не делают ваши друзья. Реддиторы устраивают забастовки. Бастуют моды Stack Overflow. Интернет-архив борется со считывателями данных, выдающих десятки тысяч запросов в секунду. А еще «ИИ разрывает Википедию на части».

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

Читать далее
Total votes 122: ↑116 and ↓6+145
Comments717

Масштабирование базы данных через шардирование и партиционирование

Reading time11 min
Views164K


Масштабирование базы данных через шардирование и партиционирование


Денис Иванов (2ГИС)


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

Немного расскажу о себе — я работаю в команде WebAPI в компании 2GIS, мы предоставляем API для организаций, у нас очень много разных данных, 8 стран, в которых мы работаем, 250 крупных городов, 50 тыс. населенных пунктов. У нас достаточно большая нагрузка — 25 млн. активных пользователей в месяц, и в среднем нагрузка около 2000 RPS идет на API. Все это располагается в трех датацентрах.

Перейдем к проблемам, которые мы с вами сегодня будем решать. Одна из проблем — это большое количество данных. Когда вы разрабатываете тот или иной проект, у вас в любой момент времени может случиться так, что данных становится очень много. Если бизнес работает, он приносит деньги. Соответственно, данных больше, денег больше, и с этими данными что-то нужно делать, потому что эти запросы очень долго начинают выполняться, и у нас сервер начинает не вывозить. Одно из решений, что с этими данными делать — это масштабирование базы данных.
Читать дальше →
Total votes 37: ↑34 and ↓3+31
Comments17

Партиционирование в PostgreSQL – Что? Зачем? Как?

Reading time23 min
Views192K
Функцией партиционирования таблиц в PostgreSQL, к сожалению, активно пользуются пока не многие. На мой взгляд, очень достойно о ней рассказывает в своей работе Hubert Lubaczewski (depesz.com). Предлагаю вам еще один перевод его статьи!

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

Так что я постараюсь объяснить в меру своих знаний и возможностей, что это такое, зачем его стоит использовать и как это сделать.
Читать дальше →
Total votes 34: ↑33 and ↓1+32
Comments26

Как искать уязвимости в проекте на Go: обзор популярных анализаторов кода и их возможностей

Reading time8 min
Views9.8K

Статья заряжена на повышение безопасности вашего кода :) Расскажем о трёх популярных анализаторах, какие типы уязвимостей они способны обнаружить и покажем результаты проверки реальных проектов.

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

Путь инженера: как эффективно пройти его от джуна до сеньора

Reading time10 min
Views7.4K

Мы все пришли в IT разными путями. Кто-то шёл по этому пути с самого детства, другие начали свой путь с выбора института и computer science в качестве основной дисциплины. Есть и те, кто свернул на эту дорогу, уже имея другую профессию и опыт работы совсем в другой сфере.

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

Читать далее
Total votes 9: ↑6 and ↓3+4
Comments5

Разработка — всё? Действительно ли нас всех заменят роботы

Level of difficultyEasy
Reading time12 min
Views11K

Александр Пряхин, руководитель разработки юнита в Авито Работа, рассказал, так ли мрачно выглядит будущее для разработчиков «из плоти и крови» на фоне активного развития No Code, Low Code и нейросетей.

Читать далее
Total votes 17: ↑14 and ↓3+11
Comments24

Неправильный путь в backend driven UI. Доклад Яндекса

Reading time8 min
Views5.6K
Архитектура современных приложений часто позволяет передавать логику между клиентом и бэкендом. Главное — не зайти в этих экспериментах слишком далеко. Разработчик iOS-приложения Авто.ру Сергей Сергеев объяснил, как его команда пришла к backend driven UI не самым легким способом.

— Всем привет. Я iOS-разработчик, но история будет кроссплатформенная.
Читать дальше →
Total votes 5: ↑2 and ↓3+1
Comments3

Как мы научили Алису реагировать на быстрые команды

Reading time9 min
Views19K

Голосовые ассистенты активируются «по имени» — это всем привычно. Но как быть, если нужно несколько раз повторять команду из одного слова? Например, чтобы настроить музыку, говорить каждый раз «Алиса, громче» и «Алиса, дальше» утомляет. Кроме того, в некоторых сценариях важна скорость выполнения действия: например, когда нужно включить свет в комнате. 

Для таких случаев мы научили Алису распознавать быстрые команды — то есть те, для которых её не нужно звать по имени. Достаточно просто сказать «громче», «дальше» или «включи свет». И в этой статье я расскажу, что из себя представляет новая функция, как мы её разрабатывали, с какими сложностями столкнулись. А ещё немного поговорим про распознавание и свёрточные модели.

Дальше!
Total votes 31: ↑31 and ↓0+31
Comments51

Встречаем ТВ Станции — новые устройства, которые объединяют технологии телевизоров и умных колонок

Reading time13 min
Views24K

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

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

Поехали!
Total votes 37: ↑32 and ↓5+37
Comments92

Сравниваем скорость и оверхеды библиотек Deep Copy для Go

Reading time8 min
Views6.5K

Егор Гартман, бэкендер Авито, рассказал, как протестировал несколько библиотек Deep Copy, а потом сделал свою — быстрее и эффективнее.

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

Information

Rating
Does not participate
Location
Йошкар-Ола, Марий Эл, Россия
Date of birth
Registered
Activity