Обновить
1
0
Константин@ConstOrVar

Разработчик мобильных приложений

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

Многие сложные задачи на LeetCode — это простые задачи на ограничения

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

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

Разбираем, как привычные «найди максимум при таких-то условиях» превращаются в компактные декларативные модели, зачем вообще нужны такие упражнения, что они говорят о собеседованиях и о нашем отношении к алгоритмам — и где у подхода с MiniZinc/constraint solving проходят естественные границы.

Смотреть подход

Как системщику остаться в живых: харденинг, который не убьет ваш перфоманс

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

Здравствуйте, меня зовут Анна Мелехова. Я старший архитектор в отделе развития архитектуры KasperskyOS. В статье я хочу поделиться практическим опытом системной разработки, которой я занималась сначала в проекте по виртуализации, а теперь в «Лаборатории Касперского», где мы делаем микроядерную операционную систему с повышенными требованиями к безопасности – KasperskyOS. Когда вы работаете в такой среде, быстро понимаете: харденинг – это не красивые галочки в чек-листе, а набор очень конкретных, очень практических решений, которые должны и защищать, и минимально снижать производительность. О них я и расскажу, а в конце дам личный топ самых полезных харденингов, которые бустят security и не снижают performance.

Читать далее

Основы безопасности веб-приложений: краткий «курс» по выявлению уязвимостей

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

Как выглядит веб-приложение с точки зрения злоумышленника?

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

Вы можете развернуть учебную среду на своей машине, повторять команды и проверять результаты их выполнения на вашем экземпляре приложения. Для демонстрации техник разведки и инструментов я использую общеизвестные уязвимые ресурсы: demo.testfire и testphp.vulnweb. Их URL я положил в workshop/urls.txt в репозитории проекта.

Дисклеймер: статья носит ознакомительный характер, и любые попытки злоупотребления данной информацией незаконны и могут повлечь за собой уголовное преследование в соответствии со статьями 272 и 273 УК РФ.

Читать далее

Live Updates на Android: где макеты врут, a SDK ставит границы

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

Весной 2025 года Google представила Live Updates, аналог Live Activity в iOS. Мы быстро запушили продактов — «нам такое надо!» — и потащили фичу в Android-приложение Додо Пиццы.

Но всё оказалось не так просто — мы столкнулись с неполной документацией, расхождениями представлений дизайнеров Google и разработчиков этого SDK, и не только. В общем, запасайтесь попкорном. Сегодня расскажем обо всех нюансах в реализации и тестировании Live Updates.

Читать далее

Как забытый API-ключ открыл нам мир мошенников

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

Сегодня история на грани техники, психологии и детектива. Расскажу о том, как мы (я и мой коллега) попали во внутренние чаты мошенников и что из этого вышло.

Читать далее

Лучшие практики в Sequence-диаграммах для системных аналитиков

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

В данной статье я хочу поделиться опытом и рассказать о том, как системным аналитикам улучшить Sequence-диаграммы (диаграммы последовательностей) с помощью лучших практик.

Я покажу, как некоторые подходы из мира программирования (те самые best practices и идеи из Clean Code) помогают рисовать sequence-диаграммы чище и понятнее. 

Читать далее

Мобильная разработка за неделю #611 (17 — 23 ноября)

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

В новом дайджесте вопрос с собеседования, на котором сыпятся даже Senior-ы, стабильный Navigation 3 и нестабильная ViewModel, кросс-компиляция, 100 уроков развития проекта, открывашка из трубки домофона и многое другое. Заходите!

Читать далее

Математика равновесия: как уравнение Ляпунова держит весь мир в узде

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

Это пре-релиз статьи для русской Википедии.

Я выкладываю материал на суд сообщества Хабра. Я хочу, чтобы мы вместе сделали лучший материал по этой теме в рунете.

Моя просьба к вам:

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

Забирайте код. Он рабочий, его можно использовать для своих лаб или проектов.

Поддержите пост. Если вам нравится идея качественного научпопа — ставьте лайк и стрелку вверх. Чем больше людей увидит, тем качественнее станет статья.

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

Читать далее

ProSTQB — бесплатная платформа, которая выводит подготовку к ISTQB на новый уровень

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

Подготовка к ISTQB давно стала своеобразным «обрядом посвящения» для тестировщиков.

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

Но есть проблема, о которой вслух говорят редко: готовиться к ISTQB всё ещё неудобно.

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

Именно поэтому я решил сделать тот тренажёр, который мне самому хотелось бы использовать. Так появилась платформа ProSTQB — бесплатный удобный инструмент для подготовки ко всем уровням ISTQB, без рекламы, без paywall’ов и без боли.

Сегодня ProSTQB доступен сразу в трёх форматах: веб-версия, приложение для iOS и приложение для Android, что делает его одной из самых доступных платформ на рынке.

Читать далее

Часы, минуты и секунды: как люди нарезали сутки с древности до наших дней?

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

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

Читать далее

Интернет бесподобен! Спасибо, TCP

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

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

Интернет — невероятное изобретение. Людей от него за уши не оттащишь. Вот только есть у этого изобретения проблемы с надёжностью — пакеты теряются, каналы перегружаются, биты путаются, а данные повреждаются. Ох, какой же опасный мир! (Буду писать в духе Крамера).

Хорошо, почему же тогда наши приложения вот так просто работают? Если вы выводили своё приложение в сеть, то процесс вам знаком: socket()/bind() здесь, accept() там, возможно, connect() вон там и, вуаля — данные надёжно текут в обе стороны упорядоченным и целостным потоком.

Сайты (HTTP), сервисы e-mail (SMTP) или удалённый доступ (SSH) — всё это построено на основе TCP и просто работает.

Читать далее

Как тимлиду перестать жить в режиме «вечной спешки» и научиться управлять задачами

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

Привет, Хабр! На связи Лера, технический писатель в Авито. В своих статьях продолжаю делиться кратким содержанием книг, связанными с продуктивностью и работой мозга. Сегодня поговорим про книгу Дэвида Аллена — Getting Things Done (или «Как привести дела в порядок»).

Читать далее

Код-гольф в Яндексе: как нерды развлекаются

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

Что такое код-гольф? Это соревнование, в котором надо решить задачу по программированию (как правило, несложную), используя наименьшее количество символов. Соревнование довольно известное. Можно поиграть, например, на одноимённом сайте, есть целая секция на CodinGame, иногда такие соревнования публикует kaggle, была такая секция на HackerRank (сейчас её я не нашёл).

В чём особенность таких задач? Низкий порог входа: решение можно написать с мобильника и оно будет занимать 10 строк. Но при этом есть большая сложность: чтобы избавиться от какого-то символа, в этом соревновании приходится идти на такие ухищрения, что мама не горюй. Некоторые конструкции очень неочевидные.

Временами мы развлекаемся таким форматом. В какой-то момент на внутренних ивентах подняли свою платформу для соревнований, а потом она протекла и на внешние конференции.

Эта статья — смесь разбора задач и истории появления соревнования по код-гольфу на конференциях Яндекса.

Про нас и кодгольф

Как фильтры Блума в 16 раз ускорили API

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

Этот пост станет глубоким разбором того, как мы снизили задержки P95 конечной точки API с 5 до 0,3 секунды при помощи нишевого трюка computer science под названием «фильтр Блума».

Мы расскажем о том, почему конечная точка была медленной, о решениях, которые мы рассматривали для повышения её скорости, и о критериях выбора между ними. Также мы объясним, как всё это устроено внутри.

Читать далее

Docker для начинающих: что это такое и как пользоваться

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

Статей про Docker много не бывает.

В этом материале мы разберём базу: что такое Docker, как он работает и зачем нужен, а затем пошагово пройдём путь от установки до запуска первого контейнера.

Освоить рабочую базу Docker →

Что такое преобразование Фурье?

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

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

Математики лишь в 19 веке смогли освоить этот же расчёт.

В начале 19 века французский математик Жан-Батист Жозеф Фурье открыл способ разложения любой функции на набор основных волн, или частот. Сложив эти составляющие частоты, вы получите исходную функцию. Эта техника, сегодня называемая преобразованием Фурье, позволила математику, ранее бывшему ярым сторонником Французской революции, инициировать свою собственную, математическую революцию.

Читать далее

Типичные проблемы с Docker и как их решать

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

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

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

Читать далее

Разбираемся с фильтрами в TShark, чтобы анализировать сетевой трафик прямо в консоли

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

Всем привет! На связи Сергей Баширов, ведущий разработчик из R&D-команды Cloud.ru. Сегодня поговорим о фильтрах чтения и отображения в TShark. Поделюсь лайфхаком: как быстро и просто посмотреть доступные поля для любого протокола без AI-ассистентов и поиска. Но сначала пара слов о том, как я докатился до такой жизни.

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

Поехали

Открывашка из трубки домофона

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

Всем привет! Я Андрей, в Яндексе работаю над IoT‑железками в Городских сервисах. Но сегодня речь пойдёт не о них. Эта история началась с неожиданной находки в новой квартире — с обычной, на первый взгляд, трубки домофона. Кажется: ну трубка и трубка. Но вот что бросилось в глаза: она была подключена по Ethernet. А если есть Ethernet, значит, внутри что‑то с TCP/IP, то есть уже маленький компьютер.

Любопытство победило, и я решил разобраться, как же устроена эта железка и что она умеет. Провёл небольшое техническое расследование: от осмотра корпуса до анализа сетевых пакетов и выяснения, какие протоколы вообще использует домофон.

Я давно увлекаюсь железками и автоматизацией дома — эдакий «полу‑умный» дом, который вроде бы и работает сам, но иногда всё же требует вмешательства человека. Поэтому, обнаружив Ethernet‑домофон, я и решил разобраться в нём. 

Основная цель эксперимента — научить трубку открывать дверь по решению автоматизации в Home Assistant. Побочная — внести вклад в сообщество и, возможно, помочь самому вендору, если в процессе вскроются любопытные особенности или проблемы. 

Открыть дверь

Что происходит, когда вы добавляете строку в PostgreSQL

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

Привет, Хабр! Меня зовут Александр Гришин, я руководитель по развитию продуктов хранения данных в Selectel. Сегодня я предлагаю продолжить разбираться с PostgreSQL и заглянуть еще глубже в эту кроличью нору. Посмотрим, что происходит под капотом СУБД во время записи строк, поверхностно разберем, как устроены страницы памяти, что такое tuple, tuple chain, fillfactor, VM и FSM. Эти знания помогут разработчикам не только понимать, как работает база данных, но и эффективно управлять ее производительностью в продакшене.

Если вы начинающий DBA, разработчик, инженер или архитектор облачной инфраструктуры, эта статья для вас. Погнали?

Погнали!

Информация

В рейтинге
Не участвует
Откуда
Россия
Дата рождения
Зарегистрирован
Активность