Как стать автором
Обновить
16
Карма
0
Рейтинг

Разработчик

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

IT-эмиграция

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

Читать далее
Всего голосов 34: ↑29 и ↓5 +24
Просмотры 12K
Комментарии 26

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

Open source *Программирование *C *Хранение данных *

image


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


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

Читать дальше →
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 1.5K
Комментарии 0

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

Open source *Программирование *C++ *C *

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

Читать дальше →
Всего голосов 7: ↑6 и ↓1 +5
Просмотры 2.8K
Комментарии 14

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

Open source *Программирование *C++ *C *
Компания, в которой я работаю, пишет свою собственную систему фильтрации трафика и защищает с помощью нее бизнес от DDoS-атак, ботов, парсеров, а также многого другого. В основе продукта лежит такой процесс, как реверсивное проксирование, с помощью которого мы в реальном времени анализируем большие объемы трафика и, в конце концов, пропускаем только легитимные пользовательские запросы, отсеивая все вредоносные.

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

Информация

В рейтинге
Не участвует
Откуда
London, England - London, Великобритания
Дата рождения
Зарегистрирован
Активность