Search
Write a publication
Pull to refresh
2
0
Константин @ConstOrVar

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

Send message

Сбой с вероятностью один раз в 20 лет: о мартовском инциденте в дата-центре

Level of difficultyMedium
Reading time13 min
Views46K

30 марта сервисы, размещённые в одном из наших основных дата‑центров, оказались недоступны. К инциденту привела авария на опорной подстанции, которая спровоцировала отказ сразу двух вводов питания и последующий каскадный сбой оборудования.

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

Читать далее

Почему нельзя использовать RecyclerView в NestedScrollView и как это исправить?

Level of difficultyEasy
Reading time7 min
Views703

Почему нельзя использовать NestedScrollView вместе с RecyclerView? Я попробую ответить на этот вопрос, и покажу как надо делать

Читать далее

Вызовы функций, стек, куча и продолжения. Часть 2

Level of difficultyHard
Reading time13 min
Views4K

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

Читать далее

Мобильная разработка за неделю #582 (31 марта — 6 апреля)

Reading time5 min
Views1.3K
В этом выпуске конкатенация против интерполяции, дизайн-система для мобильных устройств и TV, применение zero/empty объектов, игра на LUA для часов Xiaomi Redmi Watch 4, уродливые пейволы, навыки флирта с ИИ-персонажами и многое другое. Заходите!

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

Гипотеза Пуанкаре простыми словами — простой взгляд на сложную гипотезу

Level of difficultyEasy
Reading time3 min
Views28K

Представьте себе мир геометрии, но немного странный – мир из пластилина или резины.

Резиновая геометрия (Топология): Представьте, что фигуры можно как угодно мять, растягивать, сжимать, но нельзя рвать или склеивать. В таком мире, например, бублик и кружка с ручкой – это одно и то же! Почему? Потому что из пластилинового бублика можно вылепить кружку, не разрывая его (дырка бублика станет дыркой в ручке). А вот бублик и шар – это разные вещи, потому что чтобы из шара сделать бублик, нужно проделать дырку (то есть "порвать"). Эта "резиновая геометрия" называется топологией. Она изучает самые основные свойства фигур, которые не меняются при таких деформациях.

Читать далее

Выбор индексов в базах данных для highload-систем

Level of difficultyHard
Reading time27 min
Views14K

Индексы – это «ускорители» доступа к данным в базах данных. Правильно выбранные индексы могут многократно ускорить запросы, что особенно критично в highload-системах с большими объёмами данных и большим числом запросов. Однако за ускорение чтения приходится платить усложнением записи и дополнительным расходом памяти. В этой статье мы подробно рассмотрим, как работают разные типы индексов в реляционных СУБД, как выбирать индекс под конкретный запрос, обсудим подводные камни (например, блоат, переиндексация, избыточные индексы) и затронем индексацию в NoSQL (MongoDB, Cassandra). Завершим чеклистом, который поможет выбрать оптимальный индекс под вашу задачу.

Читать далее

Как один разработчик предотвратил крупнейшую кибератаку: история взлома XZ Utils

Level of difficultyMedium
Reading time14 min
Views5.7K

Прошел ровно год с момента, когда мир с открытым ртом следил за расследованием одного из самых изощрённых бэкдоров в истории Linux. История с библиотекой xz Utils напоминала триллер: внедрение под реальным именем, доверие сообщества, закладки в коде — и случайное обнаружение в самый обычный рабочий день.

29 марта 2024 года программист Андрес Фройнд проснулся, как обычно, рано. На кухне уже фыркала кофемашина, а ноутбук мигал знакомым индикатором обновлений. Андрес любил утренние часы: пока город только-только просыпался, он уже погружался в привычную рутину — тесты, логи, графики загрузки процессора.

Утром он запустил стандартный набор тестов. Всё выглядело штатно: графики ровные, CPU не перегружен, багов не видно. И вдруг — странность. Незначительная ошибка, но не из тех, что просто игнорируешь. Андрес нахмурился. «Что это было?» — пробормотал он. Он подключился по SSH к серверу, чтобы проверить детали, и заметил ещё одно отклонение: задержка отклика в 500 миллисекунд. Полсекунды. Для большинства — ерунда. Но для Андреса — первый тревожный звонок. Он начал копать глубже.

Читать далее

Мониторим потребление памяти в Linux-системе

Level of difficultyMedium
Reading time13 min
Views11K

Сколько себя помню, меня всегда привлекали счётчики памяти в Linux: смотришь в условный htop – в плане потребления CPU вроде всё +/- понятно, а вот память всегда считалась как-то не так, как ты это на первый взгляд ожидаешь, и долгое время у меня было довольно наивное и ошибочное представление о механизмах её работы.

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

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

Читать далее

Электроника в вопросах и ответах 2

Level of difficultyHard
Reading time26 min
Views12K

Так как предыдущая статья‑эксперимент по задаванию вопросов коллегам была воспринята сообществом Хабра достаточно позитивно и участники были не прочь повторить, то новое мероприятие не спеша достигло ленты статей Хабра :)

Всё просто: 10 участников написали 20 вопросов и дали на них 182 ответа. Авторство вопросов и ответов анонимно, а ответы свёрнуты под спойлеры, чтобы читатели могли поотвечать на вопросы без подсказок.

Ответить на вопросы смежников

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

Level of difficultyEasy
Reading time10 min
Views13K

Ваш дом полон шпионов, и это не сценарий бондианы. Когда мы покупаем умный робот-пылесос или принтер с Wi-Fi, мы думаем о комфорте. Но что если ночью, пока вы спите, эти IoT-устройства начинают работать против вас? Стиральная машина майнит криптовалюту, принтер тайно перегружает сеть, а пылесос картографирует квартиру и передает планы незнакомцам. Звучит как сюжет дешевого сериала, но это реальные кейсы, с которыми столкнулись пользователи по всему миру.

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

Вызовы функций, стек, куча и продолжения. Часть 1

Level of difficultyMedium
Reading time5 min
Views4.7K

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

Читать далее

Что будет, если не использовать TCP или UDP?

Level of difficultyMedium
Reading time16 min
Views52K

Однажды мне стало интересно: а что будет, если отправить пакет с несуществующим транспортным протоколом? Не TCP, не UDP, не ICMP — вообще что-то выдуманное. Пропустит ли его ОС? Дойдет ли он хотя бы до сетевого интерфейса? Не зарежет ли его какой-нибудь промежуточный маршрутизатор? А вдруг он еще и быстрее обычного дойдет, потому что никто не знает, что с ним делать?

Ответа у меня не было. Так что я решил проверить.

Эксперимент и его результаты

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

Level of difficultyMedium
Reading time12 min
Views2.4K

Всем привет! Меня зовут Макс, и уже 14 лет как я вошел в ИТ и пока не планирую отсюда выходить. Последние 7 лет я не только сам пишу код, но и занимаюсь «выпасом котов». К написанию статьи меня побудила моя любовь к ссылкам на методы и желание поделится «кастомными» способами их использовать вне базовых классов java. Если вы задумывались об усилении гибкости приложения и преимуществах AOP, но вас отпугивают его недостатки, в статье предлагаю рассмотреть вариант получения тех же (ну или почти тех же преимуществ), но без раздражающих (по крайней мере меня) недостатков. Для использования идей из статьи не требуется каких‑то особых магических знаний, достаточно знать, что такое функциональный интерфейс.

Читать далее

Топ-7 платформ для проведения IT-соревнований

Reading time10 min
Views2K


Говорят, что спортивное программирование — совсем другая область, которая сильно отличается от рабочих задач. Пусть так. Но опыт показывает, что умный и талантливый человек проявит себя в обеих сферах. Если он стал чемпионом по спортивному программированию, в ML-соревновании или CTF — то и спрос на такой талант больше обычного. А сколько отличных проектов создано на хакатонах! Вспомнить хотя бы приложение MSQRD, которое написали на хакатоне за 48 часов, а потом продали Фейсбуку за десятки миллионов долларов.

Здесь мы собрали семь лучших платформ для проведения IT-соревнований. Для участников это состязательные платформы, а организаторам они помогут автоматизировать рутину и сконцентрироваться только на качестве мероприятия. Из обзора вы узнаете:

  1. Где самое активное ML-комьюнити в России.
  2. Какая платформа предлагает самый большой функционал для проведения соревнований.
  3. Чем отличаются различные платформы для соревнований по спортивному программированию.
  4. Как провести любое IT-мероприятие на одной платформе.
  5. Что делать, если нужно локальное решение для IT-соревнования.

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

SQL HowTo: немного двоичной логики (Advent of Code 2024, Day 24: Crossed Wires)

Level of difficultyEasy
Reading time13 min
Views902

В этой челлендж-серии статей попробуем использовать PostgreSQL как среду для решения задач Advent of Code 2024.

Возможно, SQL не самый подходящий для этого язык, зато мы рассмотрим его различные возможности, о которых вы могли и не подозревать.

Рекурсивно вычисляем логические выражения и разбираем устройство двоичного сумматора.

Читать далее

Безопасность AI-агентов в Web3. Часть 1: архитектура, уязвимости и старые добрые джейлбрейки

Level of difficultyMedium
Reading time18 min
Views2.3K

В последние годы мы наблюдаем активный рост популярности LLM-моделей и интереса к их интеграции в Web3-приложения, такие как DAO и dApp-боты или автоматические трейдеры. Представьте: смарт-контракт управляет финансами, а подключённая языковая модель принимает решения, основываясь на анализе новостей или команд пользователей. Ещё недавно такая идея казалась футуристичной, однако сегодня, в 2025 году, web3 AI-агенты, взаимодействующие с блокчейном и децентрализованными системами, стали реальностью.

Многие уже слышали истории о том, как пользователи вынуждают LLM-модели отвечать на неэтичные вопросы, сочинять матерные стихи и совершать другие «шалости». Однако в контексте web3 подобные нестандартные поведения моделей могут привести к реальным и ощутимым финансовым последствиям. В этой статье мы рассмотрим устройство web3 AI-агентов, проанализируем возможные векторы атак, обсудим актуальные jailbreak-методы и разберём несколько конкурсных задач на примерах из личного опыта.

Читать далее

Сохранится всё: как возник Internet Archive и какова его дальнейшая судьба

Level of difficultyEasy
Reading time2 min
Views3.3K

Internet Archive или Архив интернета занимается поиском и хранением накопленной информации: будь то книги, видео или программное обеспечение. В 2024 году сервис подвергся хакерской атаке, что привело к утечке данных 31 млн пользователей. Также на организацию неоднократно подавали в суд из-за нарушений в сфере интеллектуальной собственности. Рассказываем в нашей статье историю взлетов и падений Архива.

Читать далее

Как мы сделали битву разработчиков

Reading time9 min
Views3.7K
image
Вот тут два игрока соревнуются, кто быстрее решит задачу

Вообще-то мы ничего специально не придумывали, как-то всё само получилось с Code Battle. Взяли простую задачу по информатике, добавили мультиплеер, чтобы два разработчика видели код друг друга, и предложили приз тому, кто пройдёт тесты быстрее.

И что-то всем внезапно понравилось. Причём так, что в итоге этим сервисом пользуются даже в Яндексе и других крупных компаниях на мероприятиях для разработчиков, а также в эпическом соревновании разных вузов.

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

Можно использовать любой язык из 16 доступных, гуглить в процессе — пожалуйста (если успеете), тырить чужой код и отлаживать у себя быстрее, чем это сделает оппонент, — тоже не проблема.

В итоге получились очень забавные соревнования.
Читать дальше →

Этот мир — асинхронный, и что вы ему сделаете

Level of difficultyMedium
Reading time7 min
Views3.9K

Все современные средства разработки — практически без исключения — наделены двумя родовыми травмами. Они не дают доступа к чуть более низкому софтверному уровню (синтаксическому дереву) без помощи сторонних хаков и ориентированы на синхронное исполнение.

Прежде, чем продолжить, я сразу оговорюсь: я не имею в виду узкоспециализированные задачи, типа написания драйверов, программирования контроллеров и прочей околожелезной разработки; там другие правила. Я говорю про мир приложений: от инди-игр до энтерпрайза. Языки высокого уровня, на которых сегодня ведется более (оценка навскидку) 98% всей разработки продуктов для конечного пользователя, лишены примитивов представления AST и параллельного (не путать с асинхронным) исполнения.

Но мир ничего не знает о наших абстракциях

Модель C4, DFD и диаграмма Ганта на PlantUML

Level of difficultyEasy
Reading time6 min
Views4.5K

Привет Хабр! Меня зовут Татьяна Ошуркова, я системный аналитик и разработчик. В прошлом году у меня вышла статья Не UML-диаграммы на PlantUML. Обзор с примерами, где я рассмотрела различные диаграммы не в нотации UML, которые можно построить с использованием возможностей PlantUML. В этой статье я хочу разобрать построение и других диаграмм, которые использует системный аналитик в своей работе.

Читать далее

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity