Search
Write a publication
Pull to refresh
12
0
Денис @dali

Software Engineer

Send message

Как законы механики и математики помогли нам с балансировкой нагрузки в 300K RPS

Reading time11 min
Views5.2K

Всем привет! Меня зовут Никита Звонарёв, я работаю в команде Яндекс 360 и занимаюсь разработкой бэкенда Яндекс Мессенджера. В статье я расскажу о том, как устроен наш ключевой сервис Fanout, через который проходят все запросы чатов, и как наша команда шаг за шагом дорабатывала алгоритмы балансировки, чтобы выдерживать сотни тысяч RPS без сбоев и утренних страданий дежурного инженера.

Fanout можно считать сердцем Мессенджера: он отвечает за такие запросы, как «выдать историю сообщений чата», «обработать отправленные сообщения», «посчитать количество непрочитанных сообщений» и тому подобное. Fanout держит большую нагрузку — несколько десятков машин обрабатывают более 300 тысяч RPS. Сервис написан на C++, а его особенность в наличии собственной системы балансировки нагрузки. Долгое время она работала хорошо, но в какой‑то момент команда столкнулась с трудностями — расскажу о том, как мы их разруливали.

Читать далее

Георгий Герганов, автор llama.cpp и звукового кейлогера

Reading time6 min
Views14K

Многие пользуются YouTube, Netflix, но не подозревают о ключевых опенсорсных программах типа ffmpeg, которые работают на бэкенде этих сервисов. Похожая ситуация с нейронками, где многие знают программу Ollama для локального запуска моделей на CPU. Но мало кто понимает, что это всего лишь простенькая оболочка вокруг опенсорсной библиотеки llama.cpp на С, которая и делает инференс. Автор этой библиотеки, талантливый разработчик Георгий Герганов, мало известен широкой публике.

Читать далее

Артефакты с балкона: о чём говорят забытые вещи

Level of difficultyEasy
Reading time20 min
Views5.5K

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

Мои родители — советские люди старой закалки. Уже давно не времена дефицита, но они всё ещё хранят старые сервизы, коллекционируют книги (при этом на чтение нет времени) и держат вещи, которые вроде и не нужны, но выкидывать жалко. Отчасти эта черта перешла и ко мне. Детство давно прошло, но многие вещи так и не выкинул. Что-то оставил на балконе, что-то — в дальних уголках старой и громоздкой стенки.

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

Не плачу, просто ностальгия в глаз попала

Полный гид по 50 идеям, которые формируют современное мышление: от А до Я

Level of difficultyEasy
Reading time32 min
Views25K

Привет, Хабр! Представьте, что ваш мозг — это IDE, в которой 95% крутых плагинов попросту спят. Мы часто слышим об «Антихрупкости» или «FOMO», но сейчас этого стало настолько много, что я решил аггрегировать всё в одну статью, с примерами, чтобы всем было понятно.

В этой статье я собрал 50 самых насущных концепций из психологии, нейронауки и философии — от «синдрома утёнка» до «нейроэстетики».

Читать далее

Как в 19 лет я начал путь разработчика встраиваемого ПО

Reading time4 min
Views19K

Привет, Хабр! Меня зовут Данила, мне 21 год, и за последние 2,5 года я успел поработать в роли разработчика программного обеспечения для встраиваемых систем — в основном на базе STM32. В этой статье я хочу поделиться тем, как я вообще пришёл в эту сферу, с чего начинал, какие грабли собрал и какие выводы сделал по пути.

Читать далее

Мой идеальный компьютер

Reading time7 min
Views35K

Я сижу под Linux, но иногда нужна винда. До недавнего времени у меня был обычный dual boot, но сейчас я реализовал свой идеальный сетап:

- основная система - Linux

- Windows - на выделенной SSD

- на нее можно загрузиться как из груба, так и из виртуалки

- с пробросом второго GPU (дисплей на отдельный физический выход)

- с качественным удаленным подключением (как RDP, но быстрое) - можно играть в игры

Ниже опишу что и как сделал.

Читать далее

Изучаем Kafka — Уровень 1

Level of difficultyEasy
Reading time15 min
Views36K

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

Если у тебя уже есть практический опыт работы с Kafka — первый уровень, скорее всего, не для тебя. Он предназначен для новичков, которые хотят понять, зачем вообще нужен Kafka и где он используется. На втором уровне ты углубишься в технологию — и этого уже будет достаточно, чтобы уверенно использовать Kafka в профессиональной работе. Третий уровень — это джедайский уровень. Не обязателен, но если ты его освоишь — будет круто. Серьёзно.

Читать далее

Сказ о том, как один программист себе мебель из ДСП на PHP программировал

Level of difficultyMedium
Reading time19 min
Views23K


Тут немного о том, как я сделал библиотеку для проектировки простой мебели из ДСП не визуальным методом, а в виде PHP-скрипта.
Вперед, в мир безумия!

«Кем Вы видите себя через 5 лет», или HRско-русский разговорник

Level of difficultyEasy
Reading time8 min
Views76K

Вас спрашивали «Кем Вы видите себя через 5 лет»? Меня тоже. За двадцать пять лет в IT я понял, зачем они так делают. Понял – это значит, что я «привык и научился пользоваться» (С). Но «неприятно удивлять» они меня не перестали.

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

Дисклеймер:

Я не призываю врать или «играть по правилам» HR. Я делюсь практической схемой подачи опыта и скиллов, чтобы минимизировать отказы «по софтам». В моем случае она работает.

Читать далее

Как за один вечер создать репутацию вашего стартапа в поисковой выдаче: 20 бесплатных площадок для быстрого буста

Level of difficultyEasy
Reading time10 min
Views18K

Итак, вы наконец-то выкатили в мир свой стартап или микросервис. Поздравляю — это не просто шаг, это рывок. А дальше начинается самый интересный этап: выстраивание доверия. Потому что, как бы ни был хорош ваш продукт, первый пользователь, первый партнер и первый инвестор пойдут не на лендинг, а в Google или Яндекс.

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

Читать далее

Как отключить слежку на умном ТВ

Reading time4 min
Views22K


Смарт ТВ нового поколения становятся ещё умнее, и одна из главных проблем для приватности пользователей — функция автоматического распознавания контента (automatic content recognition, ACR).

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

Апскейл видео из SD (DVD) в FullHD/4K современными нейросетями

Level of difficultyMedium
Reading time13 min
Views3.8K

Меня давно интересовала тема апскейла изображений, отдельно - апскейла старых видео. Одно из первых решений, которое попалось в руки несколько лет назад - waifu2x (https://github.com/nagadomi/waifu2x). Но эта нейронка больше подходила для апскейла аниме (насколько я помню на них она и тренировалась). То есть, waifu2x подходила для довольно простых изображений без избытка деталей и сложности текстур.

Затем я поизучал ESRGAN (https://github.com/xinntao/ESRGAN) и Real-ESRGAN (https://github.com/xinntao/Real-ESRGAN). Довольно неплохие модельки, вполне годятся для апскейла изображений, но очень часто заметна синтетичность, особенно в сложных сценах, например когда на изображении есть деревья. Я даже попробовал дотренировать Real-ESRGAN, к слову это делать не сложно, на их гитхабе есть скрипты и инструкции (https://github.com/xinntao/Real-ESRGAN/blob/master/docs/Training.md), но пока дособирал свой датасет для тренировки на глаза попалась другая модель - SwinIR (https://github.com/JingyunLiang/SwinIR), потестировав которую понял - она покрывает мои текущие потребности, если не полностью, то по меньшей мере процентов на 80%. А потребности были - заапскейлить несколько старых фильмов, и чтобы после апскейла фильм смотрелся как фильм, а не как пластилиновый театр. В целом все получилось. Именно об этом эта статья.

Апскейлить будем фильм "Пираты Силиконовой долины" (1999г, США, DVD5). Он повествует о появлении домашнего ПК и становлении компаний Apple и Microsoft. Довольно интересный фильм с бунтарским духом той эпохи. Главные герои - молодые Стив Джобс, Стив Возняк, Билл Гейтс и другие участники "революции домашних ПК". Кстати, апскейлить фильм будем конечно же на домашнем ПК.

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

Минимум книг, которые нужно прочитать начинающему или продолжающему свою кривую обучения программисту

Level of difficultyEasy
Reading time3 min
Views72K

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

Читать далее

Что помогает разработчику писать безопасный код: обзор инструментов

Reading time10 min
Views5.8K

Современное производство программного обеспечения — сложный процесс, от разработчика требуется не только писать код, но и справляться с целым комплексом сопутствующих задач: отслеживать изменения, проводить тестирование, соблюдать стилистические правила и внутренние стандарты, учитывать безопасность и применять best practices по обеспечению ИБ уже во время написания кода.

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

Читать

Планировщик Go — самый подробный гайд простым языком

Level of difficultyMedium
Reading time27 min
Views52K

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

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

Приступить к проектированию

Что вам надо знать в 2025 году про контейнеры, чтобы не пропустить важное

Reading time12 min
Views19K
image

Контейнер — это типа виртуальной машины, только меньше и другое. Несколько контейнеров запускаются внутри одной машины и разделяются друг от друга.

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

В контейнерной упаковке огромное количество софта, в том числе очень много опенсорса. Можно поднять готовый контейнер с сервисом из хаба без проблем вообще. И это не создаёт сложных взаимозависимостей. Нужен PostgreSQL? Docker pull postgres — и он у вас.

К контейнерам монтируются свои ресурсы — диски, сети, конфиги и секреты.

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

Рои контейнеров могут масштабировать крупные корпоративные проекты, про это ниже.

И, наконец, никакой современный CI/CD почти не делается без контейнеров. Системным администраторам, DevOps-инженерам, разработчикам и СТО критически важно разобраться в контейнеризации.

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

System Design Interview. Шаблон прохождения собеседования этого этапа

Level of difficultyEasy
Reading time3 min
Views2.1K

Недавно я собеседовался в Амазон и Майкрософт в офисы в Испании (так как я тут живу). Пока готовился много что понял, сейчас поделюсь.

Собеседование на проектирование систем.

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

Читать далее

Практическое руководство по настройке CI/CD для PHP проектов

Level of difficultyMedium
Reading time31 min
Views9K

В этом лонгриде я расскажу немного теории о CI/CD, но в основном это будут практические примеры и советы, в первую очередь полезные для PHP backend разработчиков, однако некоторые инструменты подходят и для других языков, и вы можете уловить общую идею, как писать пайплайны

Читать далее

Запилил 100 проектов на Go и вот что скажу

Level of difficultyMedium
Reading time4 min
Views23K

Когда начинаешь новый проект, то надо какое то время потратить чтобы подобрать подходящие библиотеки, подготовить структуру проекта, связать все воедино. Это занимает прилично времени. Целый день вполне может уйти. А экономить на этом шаге не стоит. Это ведь как фундамент. И вот, 5 лет назад я опубликовал каркас, который собрал для себя, чтобы делать с ним проекты на Go.

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

DI

По теме DI ко мне в чаще всего обращались с критикой, в том числе и коллеги. Поэтому с этого и начнем. В основном предлагали 2 идеи

Читать далее

«Postgres. Первое знакомство» (11-е издание) надёжный проводник в мир PostgreSQL

Level of difficultyEasy
Reading time4 min
Views5.3K

Занимаемся не только разработкой, но и помогаем освоиться в мире PostgreSQL новичкам. Обновлённая книга для тех, кто только начинает изучение темы СУБД, уже доступна для свободной загрузки. Кому и как поможет «Postgres. Первое знакомство», расскажем подробнее.

Прочитать обзор книги
1
23 ...

Information

Rating
Does not participate
Location
Varna, Varna, Болгария
Registered
Activity