Pull to refresh
0
0
Максим Фениксов @Feniksovich

User

Send message

Зарплатные вилки весной 2023: языки программирования и фреймворки

Reading time15 min
Views140K

Мы на Хабр Карьере регулярно анализируем зарплаты IT-специалистов: по полугодиям, в разрезе специализаций, квалификаций, городов, компаний, языков программирования и т.д. В этом году мы решили попробовать собрать новый срез и посмотреть на зарплатный рынок со стороны работодателя.

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

Читать далее

Погружаемся в тему защиты контейнеризации, или как обучить тому, чему нигде не учат

Level of difficultyMedium
Reading time6 min
Views8.6K

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

Читать далее

Угроза DoS — обсуждаем уязвимости протокола ICMP

Reading time3 min
Views5.6K

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

Читать далее

Отвечаю на вопросы после аварии

Level of difficultyEasy
Reading time10 min
Views35K
image
Мы шутили про эти телефоны, а они пригодились на прошлых выходных. Точнее, пригодилось резервирование телефонии. Не конкретно эти, но похожие)

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

Но давайте обо всём по порядку.

— Сколько клиентов пострадало?

— На три часа и более в одном ЦОДе отключилось 7–10 % из 14 наших, то есть менее 0,5 % от общего числа клиентов хостинга (точнее, хостов). Тем не менее мы очень подробно рассказываем про эту аварию, потому что она вызвала очень много вопросов.
Читать дальше →

Проблемы накапливаются. Софт тормозит. Везде некомпетентность и хаос

Level of difficultyEasy
Reading time6 min
Views54K


Закон Старджона гласит: «Ничто не может всегда идти правильно». Рано или поздно всё ломается.

Это естественная причина, почему софт ухудшается с каждым годом. Иначе и быть не могло. Кодовая база растёт, количество ошибок увеличивается, проекты просто тонут в багах.

Взять недавний случай с багом в Windows Defender, который вызывал тормоза Windows. Крайне показательная история. Да, этот баг обнаружили, но в кодовой базе остались такие же. Мы этого не знаем наверняка, но вполне логично предположить, что количество скрытых багов растёт пропорционально кодовой базе. Поэтому софт всё больше тормозит со временем. Это естественный процесс, почти как закон природы.
Читать дальше →

История одной XSS в Telegram

Level of difficultyEasy
Reading time4 min
Views54K

Здравствуйте, уважаемые читатели Хабра! Сегодня я хочу поделиться с вами информацией о XSS-уязвимости, которую я обнаружил в Telegram около двух недель назад. Также статья коснется некоторых особенностей работы программы поиска уязвимостей от Telegram. Моя цель — не только продемонстрировать вам интересный и относительно простой пример XSS, но и обозначить причины, по которым, возможно, не стоит тратить свои усилия на участие в багбаунти программе Telegram.

Читать далее

26 рекомендаций по использованию типа var в Java

Reading time19 min
Views39K

The Java Local Variable Type Inference (LVTI) или кратко — тип var (идентификатор var — это не ключевое слово, а зарезервированное имя типа) был добавлен в Java 10 с помощью JEP 286: Local-Variable Type Inference. Являясь 100% функцией компилятора, она не влияет на байт-код, время выполнения или производительность. В основном компилятор проверяет правую часть от оператора присваивания и, исходя из нее, определяет конкретный тип переменной, а затем заменяет им var.


Кроме того, это полезно для сокращения многословности шаблонного кода, а так же позволяет ускорить сам процесс программирования. Например, очень удобно писать var evenAndOdd =... вместо Map<Boolean, List<Integer>> evenAndOdd =... .


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


В этой статье мы рассмотрим 26 ситуаций, с примерами того, когда можно использовать var, а когда этого делать не стоит.

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

Когда TCP-сокеты отказываются умирать

Reading time10 min
Views42K

Когда TCP-сокеты отказываются умирать

В поисках причин, почему установленные соединения не разрываются в некоторых случаях, я набрёл на отличную статью в блоге Cloudflare. Которая в итоге помогла найти не только решение моей проблемы, но и помогла лучше понять как работают таймауты TCP соединений в Linux.

Читать далее

Вскрываем средство для DDoS-атак на российскую ИТ-инфраструктуру

Level of difficultyMedium
Reading time33 min
Views25K

Привет, Хабр! В начале апреля 2023 года на одном из хостов был обнаружен подозрительный файл mhddos_proxy_linux_arm64 (MD5: 9e39f69350ad6599420bbd66e2715fcb), загружаемый вместе с определенным Docker-контейнером. По открытым источникам стало понятно, что данный файл представляет из себя свободно распространяемый инструмент для осуществления распределённой атаки на отказ в обслуживании (DDoS), направленный против российской ИТ-инфраструктуры.

После запуска программа получает все необходимые настройки и автоматически
инициирует массированные сетевые подключения к целевым хостам на различных
уровнях TCP/IP для осуществления отказа в обслуживании.

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

Читать далее

Возможности программных и аппаратных файрволов

Reading time12 min
Views55K
Создание защищенной системы — задача комплексная. Одна из мер обеспечения безопасности — использование межсетевых экранов (они же брандмауэры и файрволы). Как все мы знаем, брандмауэры бывают программными и аппаратными. Возможности и первых, и вторых — не безграничны. В этой статье мы попробуем разобраться, что могут брандмауэры обоих типов, а что им не под силу.


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

Три важных качества CTO, о которых я не догадывался, пока был разработчиком

Level of difficultyEasy
Reading time8 min
Views40K

Я начинал карьеру как фронтенд-разработчик и прошел по всем стандартным этапам: от джуниора до сеньора и тимлида, потом стал руководителем отдела. И дальше, конечно, планировал стать CTO — Chief Technical Officer. И только через несколько лет узнал, что мои представления о том, какие навыки нужны на этой должности, были далеки от реальности.

В статье я расскажу о том, как я стал CTO в крупной компании и на своем опыте узнал о законах этого жанра. Если вам интересно, в чем заключается такая работа, или — вдруг — вы тоже готовитесь занять эту роль, добро пожаловать под кат!

Читать далее

Убийство разработки: опыт Selectel

Reading time8 min
Views34K

Итак, я зашел в раздел с постами и там увидел диаграмму (пик рилейтед).

А под ней ссылка на статью «Разработчики - в стойло, менеджеры в - башню из слоновой кости: создаем касту избранных в 4 шага».

Фейл за фейлом

Огонь, вода и всякие трубы: от чего защищает ЦОД система мониторинга

Level of difficultyEasy
Reading time11 min
Views4.3K

Бывали ли вы когда-нибудь внутри настоящего дата-центра? Мы проведем экскурсию и покажем, как устроен ЦОД изнутри.

Также мы поговорим о проблемах, с которыми сталкивается оператор при эксплуатации ЦОД. И как можно от них защититься?

Главный инструмент защиты – грамотная система мониторинга. Мы расскажем, как она облегчает жизнь и экономит деньги.

Интересно? Читайте нашу новую статью.

Читать далее

Настройка и мониторинг Java приложений

Level of difficultyMedium
Reading time18 min
Views9.9K

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

Речь пойдет о бизнес-приложениях с одним сервером Java-приложения и одним сервером базы данных PostgreSQL, в каждом из которых одновременно работают от 500 до 2000 сотрудников компании. Приложения разработаны на базе открытой и бесплатной платформы lsFusion (пример приложения), но все описанные проблемы и настройки не являются специфическими именно для нее.

Читать далее

Самый длинный простой за нашу историю: я обещал рассказать про аварию

Level of difficultyEasy
Reading time9 min
Views57K
Коротко: 17 июня около часа ночи мы потеряли два ввода питания от города из-за аварии на подстанции, затем — один из дизелей, что вызвало «мигание» питания в подземном дата-центре. Итог инцидента — простой около 12 часов примерно 7–10 % машин одного из 14 наших ЦОДов.

Это просто дикая цепочка событий.

image
Это патрубок дизеля, перевязанный бинтом из админской аптечки. Сейчас расскажу, какую роль он тут сыграл.

Итак, мы потеряли оба городских ввода — всё как в худших домах Парижа. Как мы уже потом узнаем, вроде бы авария была на трансформаторе 110 кВт: при перераспределении мощностей с первого произошло замыкание второго. За полтора года это уже третий раз, когда пропадают оба луча, и вот тут я рассказывал, как мы почти сутки стояли на дизеле. Для клиентов это прошло незаметно (кроме той стойки, где при мигании света сгорел ИБП: там был простой на перезагрузку).

Штатно сработали ИБП, автоматически завелись дизель-генераторы, ЦОД продолжил работу. У нас общая энергосеть с соседним ЦОДом всё в том же подземном бомбоубежище. Общее потребление — 0,5 МВт, дизелей — на 1,05 МВт.

Через два часа, около 3:30 ночи, лопнул патрубок дизеля 0,5 МВт, отчего он внезапно перестал работать. Админы убежища переключили мощности на дизели 2 х 100 КВт и 2 х 200 КВт. В момент переключения нагрузка снова легла на ИБП, а за два часа они не успели восстановиться, и часть оборудования выключилась.

Это запустило целую цепочку последствий, потому что при этом выключении погорела одна из плат коммутатора, обеспечивавшего доступ в нашу сеть управления ЦОДом, то есть все удалённые доступы.

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

IP-фабрики — что это такое и как мы к ним пришли. Устройство сетей в облачной платформе

Reading time8 min
Views9.5K

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

В этой статье рассказываем, что такое IP-фабрики и как мы к ним пришли, какие коммутаторы используем и почему. Если интересно, как устроена облачная платформа на OpenStack в Selectel, добро пожаловать под кат!
Читать дальше →

Траблшутинг в K8s — узел не готов к работе

Reading time3 min
Views5.1K

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

Обычными причинами перехода узла K8s в состояние NotReady являются:

Читать далее

Кто и в каких задачах быстрее? Coroutines, RxJava, Executor?

Level of difficultyEasy
Reading time14 min
Views7.8K

Вы когда-нибудь задумывались, какой из фреймворков для многопоточки самый быстрый? Я вроде и знал ответ, но задумывался периодически. В определённый момент сама судьба просто-напросто заставила меня взять и проверить. Так что если вам тоже всегда было это интересно, то я постарался протестировать, сравнить и предоставить результаты для вас. 

Читать далее

Полное руководство по проектированию систем в виде схемы

Level of difficultyEasy
Reading time12 min
Views28K

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

Читать далее

Information

Rating
Does not participate
Registered
Activity

Specialization

Backend Developer
Intern
Git
Nginx
Linux
Docker
Java
High-loaded systems
Redis
MongoDB
RabbitMQ
Java Spring Framework