Pull to refresh
18
0

Разработчик

Send message

Как я переехал жить и работать в Лондон

Reading time12 min
Views14K

История началась в конце 2019 года... На тот момент я уже работал ведущим разработчиком в хайлоад стартапе в Москве в технически сильной команде, которая прошла школу топовых интернет компаний России. Такого буста я не получал давно, хотя всегда был разносторонним и находил, чем занять себя помимо рутинной работы в офисе над одним и тем же проектом. Были у меня и свои активно развивающиеся идеи, и аутсорсинг - все параллельно. Но пришло время менять место. Так я и попал (далее со слов CEO) в динамично развивающуюся компанию, готовую покорить не только локальный, но и зарубежный рынки. Спустя год мне была предложена возможность переехать в Англию, а именно самому получить Tier-1 Exceptional Talent визу и помочь компании закрепиться в Европе. Ну такая себе возможность, подумал я... Слишком сложная, целиком и полностью от меня зависящая. Да и не понятно кто на кого больше пашет в данной истории. Я выделил полгода своего времени на поиск и наработку пруфов, подготовку пакета документов, подачу заявления и разовую апелляцию. При этом пожертвовал хорошими офферами в компании - конкуренты и, положа руку на сердце, не самым удачным оффером в Яндекс. И хотя передо мной таким образом все же успело переехать несколько человек, закончилось все вполне себе ожидаемо.

Читать далее
Total votes 34: ↑29 and ↓5+24
Comments26

Пишем свой capped expirationd модуль для tarantool

Reading time8 min
Views1.9K

image


Какое-то время назад перед нами встала проблема чистки кортежей в спейсах tarantool. Чистку нужно было запускать не тогда, когда у tarantool уже заканчивалась память, а заранее и с определенной периодичностью. Для этой задачи в tarantool есть модуль, написанный на Lua, под названием expirationd. После непродолжительного использования этого модуля мы поняли, что нам он не подходит: на постоянных чистках больших объемов данных Lua висел в GC. Поэтому мы задумались о разработке своего capped expirationd модуля, надеясь, что код, написанный на нативном языке программирования, решит наши задачи наилучшим образом.


Хорошим примером нам послужил модуль tarantool под названием memcached. Используемый в нем подход основывается на том, что в спейсе заводится отдельное поле, в котором указывается время жизни кортежа, иными словами, ttl. Модуль в фоне сканирует спейс, сравнивает ttl с текущим временем и принимает решение о том, удалять кортеж или нет. Код модуля memcached простой и элегантный, но слишком общий. Во-первых, он не учитывает тип индекса, по которому осуществляется обход и удаление. Во-вторых, на каждом проходе сканируются все кортежи, количество которых может быть довольно большим. И если в модуле expirationd первая проблема была решена (tree-индекс выделен в отдельный класс), то второй все так же не уделено никакого внимания. Это предопределило выбор в пользу написания своего кода.

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

Определение неиспользуемых настроек в библиотеке libconfig

Reading time5 min
Views3.1K

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

Читать дальше →
Total votes 7: ↑6 and ↓1+5
Comments14

Проблема частого создания и удаления объектов в C++

Reading time11 min
Views9.7K
Компания, в которой я работаю, пишет свою собственную систему фильтрации трафика и защищает с помощью нее бизнес от DDoS-атак, ботов, парсеров, а также многого другого. В основе продукта лежит такой процесс, как реверсивное проксирование, с помощью которого мы в реальном времени анализируем большие объемы трафика и, в конце концов, пропускаем только легитимные пользовательские запросы, отсеивая все вредоносные.

Основной особенностью является то, что наши сервисы работают с нелимитированным входящим трафиком, поэтому очень важно использовать все ресурсы рабочих станций максимально эффективно. В этом нам помогает большой опыт разработки на современном C++, включая последние стандарты и набор библиотек под названием Boost.
Читать дальше →
Total votes 21: ↑18 and ↓3+15
Comments11

Information

Rating
Does not participate
Location
London, England - London, Великобритания
Date of birth
Registered
Activity