Pull to refresh
-2
0.1
Александр Меньщиков @Blacker

Backend разработчик

Send message

Kafka за 20 минут. Ментальная модель и как с ней работать

Level of difficultyMedium
Reading time19 min
Views105K

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

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

Архитектурные решения для обработки потоковых данных

Reading time22 min
Views7.7K

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

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

С каждым днем интерес к обработке потоковых данных становится все более заметным. зовами, связанными с обработкой данных в высокоскоростных потоках.

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

Что такое фильтр Блума?

Reading time9 min
Views40K

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

Фильтр Блума. Что это?
Total votes 17: ↑16 and ↓1+22
Comments22

Код-ревью: cookbook от Google

Level of difficultyEasy
Reading time16 min
Views12K

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

От автора перевода: в Google вместо PR (Pull Request) принято использовать аббревиатуру CL (ChangeList — список изменений). Остальные термины, на мой взгляд, понятны и без пояснений. Чтобы разбавить кучу текста, в качестве разделителей разделов использованы генерации на тему "код-ревью от разных мультипликаторов" от нейросети Kandinsky.

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

Хэш таблицы в Go. Детали реализации

Reading time8 min
Views99K
image


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

Детали под катом.
Читать дальше →
Total votes 24: ↑20 and ↓4+16
Comments16

300 требований ИБ, или почему энтерпрайз [не] купит ваш продукт

Reading time8 min
Views5.4K

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

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

Что там дальше
Total votes 13: ↑10 and ↓3+9
Comments29

Ультимативный гайд по HTTP. Cookies и CORS

Level of difficultyEasy
Reading time7 min
Views37K

Привет! Меня зовут Ивасюта Алексей, я техлид команды Bricks в Авито в кластере Architecture, а это мой цикл статей о протоколе HTTP. В первой части мы уже познакомились с версией протокола 1.0 и поговорили о структуре ответов и запросов. Теперь пришло время узнать, что такое Cookies и для чего нужен CORS.

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

Девять способов выстрелить себе в ногу с PostgreSQL

Level of difficultyMedium
Reading time8 min
Views25K

Большинство этих проблем связано с масштабируемостью. Это то, что не повлияет на вас, пока база данных мала. Но если когда-нибудь вам захочется, чтобы база данных перестала быть маленькой, о таких вещах стоит подумать заранее. В противном случае они нанесут вам удар исподтишка, возможно, в самый неудобный момент. Плюс во многих случаях работы потребуется меньше, если делать всё правильно с самого начала, чем менять уже работающую систему.
Читать дальше →
Total votes 26: ↑24 and ↓2+26
Comments2

Строим эффективный сетевой обмен в PHP-микросервисах

Reading time13 min
Views21K

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

Я техлид в команде Авито в проекте SLA. Сегодня расскажу, как мы оптимизировали сетевые вызовы, чтобы избежать проблем с сетью при переходе в микросервисный мир. Разговор будет про оптимизацию CURL-запросов, деградацию сервисов и FAIL-FAST-подходы.

Читать далее
Total votes 34: ↑33 and ↓1+41
Comments38

Дешевый, как автобус, удобный, как такси: перспективный вид общественного транспорта для больших и средних городов. Ч.2

Level of difficultyMedium
Reading time58 min
Views6.5K

(Jean-Claude Mézières)

Ссылка на Часть1: «Предварительный анализ» (ру / eng )
Ссылка на Часть2: «Эксперименты на торе» (ру / eng )
Cсылка на «Часть3: Практически значимые решения» (ру / eng )
Cсылка на «Summary» (ру / eng )

Эксперименты на торе


Это вторая часть работы, посвященной исследованию новых схем движения общественного транспорта. В первой мы рассмотрели простейшую беспересадочную, и основанную на ней схему с одной пересадкой, которые могут быть реализованы в клеточном городе на плоскости. В этой части моделью города станет клеточный город на “плоском” торе. У тора, в отличие от прямоугольника, нет края, кроме того, положения всех точек на нем абсолютно равнозначны. Из-за отсутствия края и (транзитивной) симметричности расчёты для тороидального города получаются проще, а численные результаты — почти такими же, как и для прямоугольного города на плоскости. Два этих обстоятельства делают тороидальный клеточный город идеальной испытательной площадкой для новых схем движение пассажирского транспорта. В настоящей статье мы разберем две таких схемы на торе, а в следующей вернемся на плоскость и приспособим полученные здесь результаты для использования в реалистичных условиях прямоугольного города.

Содержание этой работы не является самостоятельным и предполагает знакомство с первой частью статьи. Для понимания главы 2 вам потребуется уровень математики, соответствующий примерно программе первых двух курсов университета, для всего остального — должно хватить и школьной. Во время чтения полезно иметь под рукой карандаш и лист бумаги. Если ваш браузер отображает формулы неправильно, попробуйте несколько раз обновить страницу.
Читать дальше →
Total votes 8: ↑7 and ↓1+10
Comments19

Запуск аналогов ChatGPT на домашнем ПК в пару кликов и с интерфейсом

Level of difficultyEasy
Reading time6 min
Views206K

--- Обновление статьи 9 Августа 2023 ---

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

Основная проблема в том, что всё это требует глубоких технических знаний.

Но в этой статье я расскажу, как запустить добротную нейросеть на домашнем ПК с 16ГБ ОЗУ в несколько кликов. Буквально в несколько кликов - копаться в консоли не придётся.

Читать далее
Total votes 117: ↑116 and ↓1+142
Comments180

Webpack: заменить нельзя оставить

Reading time9 min
Views11K

«Наши инструменты сборки веб-приложений от 10 до 100 раз медленнее, чем они могут быть» – считает Эван Уоллес, сооснователь Figma. По его мнению, прямо сейчас, а не в будущем, можно собирать фронтенд в 10–100 раз быстрее. Рассмотрим, как этого добиться, и причём тут webpack.

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

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

Шпаргалка по структурам данных в Go

Reading time6 min
Views69K

Некоторые компании проводят собеседования с online написанием кода. Требуется решить олимпиадную задачку на скорость. В таких условиях нет времени посмотреть подробности реализации структур данных — нужно сразу реализовать идею. Но курсы по алгоритмам и структурам данных дают примеры или на псевдокоде, или на С++. Ещё эталонные решения задач написаны зачастую на С++. Готовясь к собеседованию, составил шпаргалку библиотек — аналогов контейнеров STL, что бы не тратить драгоценное время на поиск.
Читать дальше →
Total votes 52: ↑47 and ↓5+42
Comments11

18 отборных однострочных команд Linux

Reading time4 min
Views38K

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

Приступим!
Читать дальше →
Total votes 62: ↑42 and ↓20+37
Comments55

Есть ли в вашей IT команде саботажник?

Reading time8 min
Views65K

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

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

Читать далее
Total votes 75: ↑61 and ↓14+66
Comments91

Где именно лежит граница между зарплатными грейдами: как это устроено у нас

Reading time9 min
Views23K


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

В итоге мы сделали опросник из 14 пунктов, по которому за несколько минут можно оценить себя. То же самое делает про вас тимлид, и если оценки совпадают, то всё отлично, есть грейд и зарплата в нём (у нас по три уровня внутри каждого грейда, например, джун-джун, опытный джун и джун 80-го уровня). Если оценки не совпадают — начинается процесс переговоров с приведением примеров для синхронизации по части оценки и ожиданий, чтобы потом на следующей итерации они всё-таки совпали.

Пока мы попробовали этот подход на 120 разработчиках. Выглядит многообещающе. Но я хотел бы показать вам сам опросник, детали системы и обсудить, насколько прозрачной получилась такая система. Дальше в посте — предпосылки её создания, разбор каждого из параметров и ссылка на форму, которая показывает результат по нашей системе грейдов.
Читать дальше →
Total votes 36: ↑31 and ↓5+31
Comments40

Как защититься от dos/ddos, или Как я начал вновь высыпаться по ночам

Reading time16 min
Views27K

Приветствую тебя, дорогой читатель. Скорее всего, если ты это читаешь, то уже очень устал получать кучу алертов о том, что твоя площадка загибается от регулярных набегов печенегов ботов или других нежелательных посетителей контента. Я надеюсь, что эта статья поможет тебе спать спокойно и оградит тебя от недугов, а также внесет больше ясности в твое понимание теории и практики защиты от dos и ddos. Приятного чтения!

Читать далее
Total votes 15: ↑14 and ↓1+15
Comments33

Ограничение скорости обработки запросов в nginx

Reading time8 min
Views62K

Фотография пользователя Wonderlane, Flickr


NGINX великолепен! Вот только его документация по ограничению скорости обработки запросов показалась мне, как бы это сказать, несколько ограниченной. Поэтому я решил написать это руководство по ограничению скорости обработки запросов (rate-liming) и шейпингу трафика (traffic shaping) в NGINX.

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

Как работать с «определенными» токенами

Reading time5 min
Views13K

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

Читать далее
Total votes 15: ↑13 and ↓2+17
Comments29

Как ускорить работу в командной оболочке Bash

Reading time4 min
Views25K

Любому начинающему разработчику необходимо научиться пользоваться командной строкой. При этом для выполнения в ней команд требуется оболочка. В статье речь пойдёт об оболочке Bash, которая популярна в UNIX-подобных системах и в большинстве дистрибутивов Linux используется штатно.
Читать дальше →
Total votes 57: ↑51 and ↓6+65
Comments78
1

Information

Rating
3,050-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity

Specialization

Backend Developer
Lead
PHP
Symfony
PostgreSQL
Nginx
Lua
Development management
Kanban