Обновить
3
0
Олег Бубнов@bubn0ff

Frontend-developer

Отправить сообщение

Хабр без ограничений: Магия «плюса» в адресе почты

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели3.5K

В 20 лет я планово обновил паспорт. Через пару недель мне позвонили мошенники. С самого начала меня начали «обрабатывать» и для укрепления доверия называть мои ПДн. В разгаре беседы «господа из техподдержки компании N» назвали мои новые паспортные данные!

Я страшно удивился скорости утечки нового паспорта и стало интересно: кто же был источником слива? Тогда я нашел лайфхак, который помогает с высокой вероятностью выяснить, откуда произошла утечка (пользуюсь им и по сей день).

Так фича или всё-таки баг?

Как принимать метеорологические спутники, не привлекая внимание санитаров

Уровень сложностиПростой
Время на прочтение13 мин
Охват и читатели11K

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

Читать далее

Личные границы в IT: как перестать быть «всем должен», даже если ты senior или тимлид

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели6.6K

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

Читать далее

__proto__ и prototype

Время на прочтение6 мин
Охват и читатели53K

Часто на собеседовании опытный разработчик может спросить у начинающего: «Что такое __proto__ и prototype, и чем они отличаются?». Обычно этот вопрос либо ставит в тупик, либо на него отвечают заученной мантрой из видео «50 вопросов на собеседовании»: « __proto__ — это ссылка на prototype, а prototype — это собственно свойство». И этот ответ правильный, только большинство недавно пришедших в профессию разработчиков не понимают, что это значит на самом деле. Причина проста — они не встречают в разработке ни __proto__, ни prototype, потому что современные стандарты JS прячут от него работу с этими свойствами за синтаксический сахар. Эта статья для таких, как я — разработчиков, которые столкнулись с JS в то время, когда никаких __proto__ и prototype на поверхности уже нет, а желание понять, как это устроено "под капотом" остается.

Читать далее

«Это база», — сказал тимлид и украл мою идею

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели56K

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

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

Читать далее

Я не выйду к вам на работу, и вот почему

Уровень сложностиПростой
Время на прочтение12 мин
Охват и читатели13K

За годы работы в IT я общался с сотнями специалистов из разных проектов. После десятков историй от коллег и анализа непрекращающегося потока вакансий я собрал настоящую коллекцию хорроров с рынка труда.

Читать далее

JavaScript: управление содержимым веб-страницы с помощью жестов

Время на прочтение19 мин
Охват и читатели11K


Привет, друзья!


Еще недавно управление содержимым веб-страницы с помощью жестов можно было наблюдать разве что в фантастических фильмах. Сегодня все, что для этого требуется — видеокамера и браузер (и библиотека от Google).


В данном туториале мы рассмотрим 5 примеров:


  • получение данных с видеокамеры и их отрисовка на холсте (canvas);
  • обнаружение и отслеживание кисти руки;
  • управление "курсором" с помощью указательного пальца;
  • определение жеста "щипок" (pinch);
  • нажатие кнопки с помощью щипка.

Все примеры будут реализованы на чистом JavaScript.


Источником вдохновения для меня послужила эта замечательная статья.


Для обнаружения и отслеживания руки и жестов будет использоваться MediaPipe. Для работы с зависимостями — Yarn.


Код примеров можно найти в этом репозитории.

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

Рекомендуемые библиотеки для React

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели7.5K



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


React позволяет разработчикам создавать пользовательские интерфейсы (user interfaces, UI) на основе функциональных компонентов. Хотя он предоставляет встроенные решения, такие как хуки (hooks), для управления локальным состоянием, обработки побочных эффектов и оптимизации производительности, в конечном итоге все сводится к работе с функциями — как компонентами, так и хуками — для построения UI.


В этой статье мы рассмотрим основные библиотеки React на 2025 год. Эти библиотеки являются строительными блоками для разработки приложений. Независимо от того, новичок вы или опытный разработчик, эта шпаргалка поможет вам сориентироваться в обширной экосистеме React.


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

Как Linux готовится ко сну

Уровень сложностиСложный
Время на прочтение26 мин
Охват и читатели14K

Статья о том, как Linux переходит в сон, а потом восстанавливает первоначальное состояние. Разбор аспектов перехода системы в гибернацию, расширяющий понимание работы ОС.

Читать далее

Как развернуть свой GitLab с CI/CD, используя IaC

Время на прочтение11 мин
Охват и читатели7.5K

Всем привет! Меня зовут Александр, я обучаюсь в магистратуре СПбПУ. А заодно являюсь младшим разработчиком на C++ и стараюсь использовать и внедрять практики DevOps в мою ежедневную разработку. Недавно я получил зачет за то, что развернул собственный GitLab (именно GitLab, а не аналог) на серверах Selectel с CI/CD и Container Registry. Собственно, об этом и расскажу и в статье.
Читать дальше →

Почему тебя больше не зовут на собесы? Спойлер: ты слишком много работал

Время на прочтение3 мин
Охват и читатели14K

Ну что, друг, как тебе живётся в новом ИТ‑реалистичном мире? Раньше стоило тебе просто обновить резюме, и рекрутеры написывали в личку, словно сотрудники «Кирби». Полгода приходилось отбиваться от предложений, где «интересный проект, дружный коллектив, печеньки, опционально — зарплата».

А теперь? Теперь ты снова открываешь резюме, но мир изменился. LinkedIn молчит. На hh 2–3 просмотра в неделю, а на отклики вал отказов. Рекрутеры больше не бомбят тебя сообщениями.

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

Но есть нюанс. Ты учился не тому.

Пока ты писал код, тянул дедлайны и проект в целом, другие изучали настоящее искусство выживания в ИТ: как писать «правильное» резюме и проходить собеседования.

Ты не прошёл главный курс всего отечественного IT.

Ты не прошёл курс «Как очаровать рекрутера».

Читать далее

Чеклист для tsconfig.json

Уровень сложностиСредний
Время на прочтение15 мин
Охват и читатели6.4K



В этой статье я расскажу о настройках TypeScript, определяемых в файле tsconfig.json, которых я использую в своих проектах.


❯ 1. Возможности, не затрагиваемые в этой статье


В этой статье описывается в основном настройка проектов, в которых все локальные модули являются ESM. Мы почти не будем говорить об импорте CommonJS.


Также мы не будем говорить о следующем:


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

Лучшие бесплатные VPN для ПК и смартфона 2025 (которые работают)

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели89K


Бесплатные VPN.

В последние несколько лет на территории РФ ужесточилась фильтрация интернет-трафика средствами ТСПУ. Сотни сайтов и интернет-сервисов внесены в чёрные списки и заблокированы. Получить доступ к ним можно только через VPN. Однако самые популярные VPN тоже подверглись блокировке.

Ограничения можно обойти через канал на собственном зарубежном сервере, купив там самый дешёвый хостинг за пару долларов или уже готовый VPS с установленным VPN (такие объявления есть на Авито). Если своего сервера нет, то остаётся только прибегнуть к услугам сторонних VPN-сервисов, которые ещё не заблокированы. Лучшие бесплатные VPN из выживших перечислены ниже.

Примечание. Эту статью Хабр наверняка заблокирует для пользователей из РФ, в исполнение запрета Роскомнадзора на информацию об обходе блокировок, так что лучше сразу после публикации сохранить её или подписаться на обновления в тг.
Читать дальше →

Декларативная фильтрация данных на фронте. JS/TS

Время на прочтение7 мин
Охват и читатели10K


Часто ли вам приходилось писать обработчики фильтрации для ваших данных? Это могут быть массивы для отрисовки таблиц, карточек, списков — чего угодно.


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


Как же решить проблему возрастающей сложности?

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

Firewall не спасёт

Уровень сложностиСложный
Время на прочтение15 мин
Охват и читатели16K
Сгенерировано с помощью GIGA-CHAT

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

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

Сложно о простом. Как работает интернет. Часть 1. Что такое коммутатор, маршрутизатор и примеры работы простых сетей

Уровень сложностиПростой
Время на прочтение14 мин
Охват и читатели88K

Приветствую, коллеги! Меня зовут @ProstoKirReal. Мне бы хотелось с вами обсудить как работает интернет от кабелей на витой паре, соединяющие простые локальные сети до подводных коммуникационных кабелей соединяющие между собой континенты и основные операторские сети.

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

Читать далее

Red Team против умного замка: взламываем биометрическую СКУД при помощи скрепки и магнита

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели18K

Один из самых «вкусных» моментов в работе пентестера — red-team тестирование, позволяющее ненадолго ощутить себя эдаким Джейсоном Борном от мира кибербезопасности. Подобно героям боевиков, мы постоянно проникаем на объекты разной степени защищенности: ломаем замки, обходим системы видеонаблюдения. Разве что не спускаемся в серверную на тросе с вертолета.


Поработав на таких проектах, начинаешь смотреть на любую дверь с перспективы потенциального нарушителя и выискивать уязвимости в каждой встречной СКУД. Поэтому первое, что бросилось нам в глаза, когда Бастион переехал в новый офис, — это биометрические терминалы, установленные на дверях нескольких особо важных кабинетов. Словом, пока сисадмины распаковывали сервера и ломали голову над тем, как расставить офисную технику по правилам фэн-шуя, мы решили провести небольшой внутренний пентест…

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

Заметка о Mapped Types и других полезных возможностях современного TypeScript

Время на прочтение9 мин
Охват и читатели25K


Привет, друзья!


Представляю вашему вниманию перевод 2 статей:


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

Оптимизация SQL запросов

Уровень сложностиСредний
Время на прочтение6 мин
Охват и читатели27K

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

Читать про оптимизацию

Performance и оптимизация TypeScript-типов в больших проектах

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели7K

Узнайте, почему большие TypeScript-проекты начинают "захлёбываться" от рекурсивных типов и обилия импортов, и как с помощью правильной структуры монорепы, настройки tsconfig и диагностики ускорить время компиляции и работу IDE. Рассматриваем инструменты, параллельную сборку, оптимизацию рекурсивных типов и прочие техники, которые помогут сохранить ваш проект быстрым и удобным.

Читать далее

Информация

В рейтинге
5 598-й
Откуда
Россия
Зарегистрирован
Активность

Специализация

Фронтенд разработчик, HTML-верстальщик
От 150 000 ₽
HTML
CSS
SCSS
JavaScript
TypeScript
React
Redux
Gulp
Webpack
Jest